Module:CombatAreas/AreaTables: Difference between revisions

removed aurora related functions
m (added option to getDungeonDRTable to disable agility (should default to false))
(removed aurora related functions)
Line 165: Line 165:
result = result..'\r\n|}'
result = result..'\r\n|}'
return result
return result
end
function p._getDungeonDRTable(dung, mode, doStuns, disableAgilityObstacles)
local AutoEatVals = {T1 = 0.2, T2 = 0.3, T3 = 0.4, T3W = 0.45}
if disableAgilityObstacles ~= nil then
AutoEatVals = {T1 = 0.2, T2 = 0.3, T3 = 0.4}
else
end
--NOTE: Due to Agility Obstacles, this value is a tad arbitrary
local MaxViableHP = 1120
--This is the highest DR to list as possible. Value might be slightly off right now, currently just setting up value for testing
local MaxViableDR = 81
--This is the highest DR row shown. This should be higher than MaxViableDR
local MaxVisibleDR = 85
if doStuns == nil then
doStuns = true
elseif type(doStuns) == 'string' then
doStuns = string.upper(doStuns) == 'TRUE'
end
--First, figure out what our max hit for each style is
local MaxHits = { Melee = 0, Ranged = 0, Magic = 0 }
for i, monsterID in Shared.skpairs(dung.monsters) do
local monster = Monsters.getMonsterByID(monsterID)
local styleName = Constants.getCombatStyleName(monster.attackType)
local maxHit = Monsters._getMonsterMaxHit(monster, doStuns)
if maxHit > MaxHits[styleName] then
MaxHits[styleName] = maxHit
end
end
--Then, figure out the DR row to start with
--This is the DR that is one lower than the lowest possible DR for the best style
local StyleArray = {"Melee", "Ranged", "Magic"}
local EatThreshold = math.floor(MaxViableHP * AutoEatVals.T3W)
local minDR = 100
for i, playerStyle in Shared.skpairs(StyleArray) do
local maxStyleDR = 0
for enemyStyle, styleHit in Shared.skpairs(MaxHits) do
if styleHit > 0 and styleHit > EatThreshold then
local styleDR = math.ceil((1 - (EatThreshold / styleHit)) * 100)
styleDR = math.ceil(styleDR / Constants.getTriangleDRModifier(playerStyle, enemyStyle, mode))
maxStyleDR = math.max(maxStyleDR, styleDR)
end
end
minDR = math.min(minDR, maxStyleDR)
end
minDR = minDR - 1
--Finally, build the table using those starting points
local StyleHeader = "Melee!!Ranged!!Magic"
StyleHeader = StyleHeader..'!!'..StyleHeader..'!!'..StyleHeader..'!!'..StyleHeader
local result = '{| class="wikitable stickyHeader"'
result = result..'\r\n|-class="headerRow-0"'
result = result..'\r\n!Pre-Triangle DR!!colspan=3|AE T3 + Wasteful!!colspan=3|Auto Eat Tier 3!!colspan=3|Auto Eat Tier 2!!colspan=3|Auto Eat Tier 1'
result = result..'\r\n|-class="headerRow-0"'
result = result..'\r\n!DR %!!'..StyleHeader
local getHpForStyle = function(playerStyle, autoEat, playerDR)
return nil
end
for dr = minDR, MaxVisibleDR, 1 do
end
result = result..'\r\n|}'
return result
end
function p.getDungeonDRTable(frame)
local dungName = frame.args ~= nil and frame.args[1] or frame[1]
local mode = frame.args ~= nil and frame.args[2] or frame[2]
local doStuns = frame.args ~= nil and frame.args[3] or frame[3]
local disableAgilityObstacles = frame.args ~= nil and frame.args[4] or frame[4]
local dung = CombatAreas.getArea(dungName)
if dung == nil then
return 'ERROR: Invalid dungeon name'
end
return p._getDungeonDRTable(dung, mode, doStuns, disableAgilityObstacles)
end
end


return p
return p
892

edits