diff --git a/Classes/PassiveSpec.lua b/Classes/PassiveSpec.lua index 6038a63c..19465b6f 100644 --- a/Classes/PassiveSpec.lua +++ b/Classes/PassiveSpec.lua @@ -112,7 +112,7 @@ end function SpecClass:SelectAscendClass(ascendClassId) self.curAscendClassId = ascendClassId - local ascendClass = self.tree.classes[self.curClassId].classes[tostring(ascendClassId)] or { name = "" } + local ascendClass = self.tree.classes[self.curClassId].classes[ascendClassId] or { name = "" } self.curAscendClassName = ascendClass.name for id, node in pairs(self.allocNodes) do if node.ascendancyName and node.ascendancyName ~= ascendClass.name then diff --git a/Classes/PassiveTree.lua b/Classes/PassiveTree.lua index 2bafb65d..2abec866 100644 --- a/Classes/PassiveTree.lua +++ b/Classes/PassiveTree.lua @@ -16,13 +16,17 @@ local m_tan = math.tan local m_sqrt = math.sqrt local t_insert = table.insert +local function jsonToLua(json) + return "return "..json:gsub("%[","{"):gsub("%]","}"):gsub('"(%d[%d%.]*)":','[%1]='):gsub('"([^"]+)":','["%1"]='):gsub("\\/","/") +end + local TreeClass = common.NewClass("PassiveTree", function(self) MakeDir("TreeData") ConPrintf("Loading JSON...") local treeText, classText - local treeFile = io.open("TreeData/tree.json", "r") - local classFile = io.open("TreeData/classes.json", "r") + local treeFile = io.open("TreeData/tree.lua", "r") + local classFile = io.open("TreeData/classes.lua", "r") if treeFile and classFile then treeText = treeFile:read("*a") treeFile:close() @@ -44,22 +48,21 @@ local TreeClass = common.NewClass("PassiveTree", function(self) end) easy:perform() easy:close() - treeText = page:match("var passiveSkillTreeData = (%b{})") - treeFile = io.open("TreeData/tree.json", "w") + treeText = jsonToLua(page:match("var passiveSkillTreeData = (%b{})")) + treeFile = io.open("TreeData/tree.lua", "w") treeFile:write(treeText) treeFile:close() - classText = page:match("ascClasses: (%b{})") - classFile = io.open("TreeData/classes.json", "w") + classText = jsonToLua(page:match("ascClasses: (%b{})")) + classFile = io.open("TreeData/classes.lua", "w") classFile:write(classText) classFile:close() end - for k, v in pairs(common.json.decode(treeText)) do + for k, v in pairs(assert(loadstring(treeText))()) do self[k] = v end - self.classes = { } - for id, data in pairs(common.json.decode(classText)) do - self.classes[tonumber(id)] = data - data.classes["0"] = { name = "None" } + self.classes = assert(loadstring(classText))() + for classId, class in pairs(self.classes) do + class.classes[0] = { name = "None" } end self.size = m_min(self.max_x - self.min_x, self.max_y - self.min_y) * 1.1 @@ -141,7 +144,7 @@ local TreeClass = common.NewClass("PassiveTree", function(self) local nodeMap = { } local orbitMult = { [0] = 0, m_pi / 3, m_pi / 6, m_pi / 6, m_pi / 20 } local orbitDist = { [0] = 0, 82, 162, 335, 493 } - for _, node in ipairs(self.nodes) do + for _, node in pairs(self.nodes) do nodeMap[node.id] = node if node.spc[1] then node.type = "class" @@ -162,7 +165,7 @@ local TreeClass = common.NewClass("PassiveTree", function(self) node.overlay = nodeOverlay[node.type] node.linkedId = { } - local group = self.groups[tostring(node.g)] + local group = self.groups[node.g] group.ascendancyName = node.ascendancyName if node.isAscendancyStart then group.isAscendancyStart = true @@ -229,7 +232,7 @@ local TreeClass = common.NewClass("PassiveTree", function(self) for ascendClassId, ascendClass in pairs(class.classes) do self.ascendNameMap[ascendClass.name] = { classId = classId, - ascendClassId = tonumber(ascendClassId) + ascendClassId = ascendClassId } end end diff --git a/Classes/PassiveTreeView.lua b/Classes/PassiveTreeView.lua index fb8b270e..5b5cf63c 100644 --- a/Classes/PassiveTreeView.lua +++ b/Classes/PassiveTreeView.lua @@ -250,11 +250,11 @@ function TreeViewClass:DrawTree(build, viewPort, inputEvents) self:DrawAsset(tree.assets["Classes"..group.ascendancyName], scrX, scrY, scale) SetDrawColor(1, 1, 1) end - elseif group.oo["3"] then + elseif group.oo[3] then self:DrawAsset(tree.assets.PSGroupBackground3, scrX, scrY, scale, true) - elseif group.oo["2"] then + elseif group.oo[2] then self:DrawAsset(tree.assets.PSGroupBackground2, scrX, scrY, scale) - elseif group.oo["1"] then + elseif group.oo[1] then self:DrawAsset(tree.assets.PSGroupBackground1, scrX, scrY, scale) end end diff --git a/Gems/act_dex.lua b/Gems/act_dex.lua index 51c75b33..5d886448 100644 --- a/Gems/act_dex.lua +++ b/Gems/act_dex.lua @@ -59,7 +59,7 @@ gems["Bear Trap"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 2, + skill_damageEffectiveness = 2, skill_critChanceBase = 5, }, quality = { @@ -105,7 +105,7 @@ gems["Blade Vortex"] = { showAverage = true, base = { skill_castTime = 0.5, - skill_damageEff = 0.3, + skill_damageEffectiveness = 0.3, skill_critChanceBase = 6, skill_durationBase = 5, }, @@ -150,7 +150,7 @@ gems["Bladefall"] = { aoe = true, base = { skill_castTime = 0.8, - skill_damageEff = 0.9, + skill_damageEffectiveness = 0.9, skill_critChanceBase = 5, }, quality = { @@ -531,7 +531,7 @@ gems["Elemental Hit"] = { igniteChance = 10, }, quality = { - elemInc = 1, + elementalInc = 1, }, levels = { [1] = { skill_manaCostBase = 6, part1_attack_fireMin = 4, part1_attack_fireMax = 8, part2_attack_coldMin = 3, part2_attack_coldMax = 6, part3_attack_lightningMin = 1, part3_attack_lightningMax = 13, }, @@ -571,7 +571,7 @@ gems["Ethereal Knives"] = { projectile = true, base = { skill_castTime = 0.6, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 6, }, quality = { @@ -679,7 +679,7 @@ gems["Fire Trap"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 6, skill_durationBase = 8, }, @@ -730,7 +730,7 @@ gems["Freeze Mine"] = { showAverage = true, base = { skill_castTime = 0.5, - skill_damageEff = 0.5, + skill_damageEffectiveness = 0.5, }, quality = { aoeRadiusInc = 0.5, @@ -1007,7 +1007,7 @@ gems["Herald of Ice"] = { cold = true, base = { skill_manaReservedPercent = 25, - skill_damageEff = 0.8, + skill_damageEffectiveness = 0.8, }, quality = { buff_coldInc = 0.75, @@ -1111,7 +1111,7 @@ gems["Ice Trap"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 1.1, + skill_damageEffectiveness = 1.1, skill_critChanceBase = 5, }, quality = { @@ -1328,36 +1328,36 @@ gems["Purity of Ice"] = { auraRadiusInc = 1, }, levels = { - [1] = { auraRadiusInc = 0, coldResistBase = 22, coldResistMaxBase = 0, }, - [2] = { auraRadiusInc = 3, coldResistBase = 23, coldResistMaxBase = 0, }, - [3] = { auraRadiusInc = 6, coldResistBase = 24, coldResistMaxBase = 0, }, - [4] = { auraRadiusInc = 9, coldResistBase = 25, coldResistMaxBase = 0, }, - [5] = { auraRadiusInc = 12, coldResistBase = 26, coldResistMaxBase = 1, }, - [6] = { auraRadiusInc = 15, coldResistBase = 27, coldResistMaxBase = 1, }, - [7] = { auraRadiusInc = 18, coldResistBase = 28, coldResistMaxBase = 1, }, - [8] = { auraRadiusInc = 21, coldResistBase = 29, coldResistMaxBase = 1, }, - [9] = { auraRadiusInc = 23, coldResistBase = 30, coldResistMaxBase = 1, }, - [10] = { auraRadiusInc = 25, coldResistBase = 31, coldResistMaxBase = 1, }, - [11] = { auraRadiusInc = 27, coldResistBase = 32, coldResistMaxBase = 2, }, - [12] = { auraRadiusInc = 29, coldResistBase = 33, coldResistMaxBase = 2, }, - [13] = { auraRadiusInc = 31, coldResistBase = 34, coldResistMaxBase = 2, }, - [14] = { auraRadiusInc = 33, coldResistBase = 35, coldResistMaxBase = 2, }, - [15] = { auraRadiusInc = 35, coldResistBase = 36, coldResistMaxBase = 2, }, - [16] = { auraRadiusInc = 36, coldResistBase = 37, coldResistMaxBase = 2, }, - [17] = { auraRadiusInc = 37, coldResistBase = 38, coldResistMaxBase = 3, }, - [18] = { auraRadiusInc = 38, coldResistBase = 39, coldResistMaxBase = 3, }, - [19] = { auraRadiusInc = 39, coldResistBase = 40, coldResistMaxBase = 3, }, - [20] = { auraRadiusInc = 40, coldResistBase = 41, coldResistMaxBase = 4, }, - [21] = { auraRadiusInc = 41, coldResistBase = 42, coldResistMaxBase = 4, }, - [22] = { auraRadiusInc = 42, coldResistBase = 43, coldResistMaxBase = 4, }, - [23] = { auraRadiusInc = 43, coldResistBase = 44, coldResistMaxBase = 5, }, - [24] = { auraRadiusInc = 44, coldResistBase = 45, coldResistMaxBase = 5, }, - [25] = { auraRadiusInc = 45, coldResistBase = 46, coldResistMaxBase = 5, }, - [26] = { auraRadiusInc = 46, coldResistBase = 47, coldResistMaxBase = 5, }, - [27] = { auraRadiusInc = 47, coldResistBase = 48, coldResistMaxBase = 5, }, - [28] = { auraRadiusInc = 48, coldResistBase = 49, coldResistMaxBase = 5, }, - [29] = { auraRadiusInc = 49, coldResistBase = 50, coldResistMaxBase = 5, }, - [30] = { auraRadiusInc = 50, coldResistBase = 51, coldResistMaxBase = 5, }, + [1] = { auraRadiusInc = 0, coldResist = 22, coldResistMax = 0, }, + [2] = { auraRadiusInc = 3, coldResist = 23, coldResistMax = 0, }, + [3] = { auraRadiusInc = 6, coldResist = 24, coldResistMax = 0, }, + [4] = { auraRadiusInc = 9, coldResist = 25, coldResistMax = 0, }, + [5] = { auraRadiusInc = 12, coldResist = 26, coldResistMax = 1, }, + [6] = { auraRadiusInc = 15, coldResist = 27, coldResistMax = 1, }, + [7] = { auraRadiusInc = 18, coldResist = 28, coldResistMax = 1, }, + [8] = { auraRadiusInc = 21, coldResist = 29, coldResistMax = 1, }, + [9] = { auraRadiusInc = 23, coldResist = 30, coldResistMax = 1, }, + [10] = { auraRadiusInc = 25, coldResist = 31, coldResistMax = 1, }, + [11] = { auraRadiusInc = 27, coldResist = 32, coldResistMax = 2, }, + [12] = { auraRadiusInc = 29, coldResist = 33, coldResistMax = 2, }, + [13] = { auraRadiusInc = 31, coldResist = 34, coldResistMax = 2, }, + [14] = { auraRadiusInc = 33, coldResist = 35, coldResistMax = 2, }, + [15] = { auraRadiusInc = 35, coldResist = 36, coldResistMax = 2, }, + [16] = { auraRadiusInc = 36, coldResist = 37, coldResistMax = 2, }, + [17] = { auraRadiusInc = 37, coldResist = 38, coldResistMax = 3, }, + [18] = { auraRadiusInc = 38, coldResist = 39, coldResistMax = 3, }, + [19] = { auraRadiusInc = 39, coldResist = 40, coldResistMax = 3, }, + [20] = { auraRadiusInc = 40, coldResist = 41, coldResistMax = 4, }, + [21] = { auraRadiusInc = 41, coldResist = 42, coldResistMax = 4, }, + [22] = { auraRadiusInc = 42, coldResist = 43, coldResistMax = 4, }, + [23] = { auraRadiusInc = 43, coldResist = 44, coldResistMax = 5, }, + [24] = { auraRadiusInc = 44, coldResist = 45, coldResistMax = 5, }, + [25] = { auraRadiusInc = 45, coldResist = 46, coldResistMax = 5, }, + [26] = { auraRadiusInc = 46, coldResist = 47, coldResistMax = 5, }, + [27] = { auraRadiusInc = 47, coldResist = 48, coldResistMax = 5, }, + [28] = { auraRadiusInc = 48, coldResist = 49, coldResistMax = 5, }, + [29] = { auraRadiusInc = 49, coldResist = 50, coldResistMax = 5, }, + [30] = { auraRadiusInc = 50, coldResist = 51, coldResistMax = 5, }, } } gems["Rain of Arrows"] = { @@ -1835,7 +1835,7 @@ gems["Wild Strike"] = { part6_physicalGainAscold = 60, }, quality = { - elemInc = 1, + elementalInc = 1, }, levels = { [1] = { attack_damageMore = 1.2, }, diff --git a/Gems/act_int.lua b/Gems/act_int.lua index b5ec632b..26d3377f 100644 --- a/Gems/act_int.lua +++ b/Gems/act_int.lua @@ -10,7 +10,7 @@ gems["Arc"] = { lightning = true, base = { skill_castTime = 0.8, - skill_damageEff = 0.7, + skill_damageEffectiveness = 0.7, skill_critChanceBase = 5, shockChance = 10, }, @@ -58,7 +58,7 @@ gems["Arctic Breath"] = { cold = true, base = { skill_castTime = 0.8, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 5, }, quality = { @@ -112,7 +112,7 @@ gems["Ball Lightning"] = { }, base = { skill_castTime = 0.8, - skill_damageEff = 0.2, + skill_damageEffectiveness = 0.2, skill_critChanceBase = 5, }, quality = { @@ -202,7 +202,7 @@ gems["Cold Snap"] = { cold = true, base = { skill_castTime = 0.85, - skill_damageEff = 1.2, + skill_damageEffectiveness = 1.2, skill_critChanceBase = 5, freezeChance = 30, freeze_durationInc = 30, @@ -308,7 +308,7 @@ gems["Discharge"] = { base = { skill_castTime = 1, skill_critChanceBase = 7, - skill_damageEff = 1.5, + skill_damageEffectiveness = 1.5, }, quality = { aoeRadiusInc = 0.5, @@ -402,7 +402,7 @@ gems["Essence Drain"] = { chaos = true, base = { skill_critChanceBase = 5, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_castTime = 0.75, skill_dotIsSpell = true, skill_durationBase = 3.8, @@ -450,7 +450,7 @@ gems["Fire Nova Mine"] = { fire = true, base = { skill_castTime = 1, - skill_damageEff = 0.3, + skill_damageEffectiveness = 0.3, skill_critChanceBase = 5, }, quality = { @@ -496,7 +496,7 @@ gems["Fireball"] = { fire = true, base = { skill_castTime = 0.85, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 6, }, quality = { @@ -542,7 +542,7 @@ gems["Firestorm"] = { fire = true, base = { skill_castTime = 0.9, - skill_damageEff = 0.3, + skill_damageEffectiveness = 0.3, skill_critChanceBase = 6, skill_durationBase = 2, }, @@ -589,7 +589,7 @@ gems["Flame Dash"] = { duration = true, base = { skill_castTime = 0.75, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 6, skill_durationBase = 4, }, @@ -635,7 +635,7 @@ gems["Flame Surge"] = { fire = true, base = { skill_castTime = 0.5, - skill_damageEff = 1, + skill_damageEffectiveness = 1, skill_critChanceBase = 6, condMod_EnemyBurning_damageMore = 1.5, }, @@ -689,7 +689,7 @@ gems["Flameblast"] = { }, base = { skill_castTime = 0.2, - skill_damageEff = 0.5, + skill_damageEffectiveness = 0.5, skill_critChanceBase = 5, part2_spell_damageMore = 12, part2_castSpeedMore = 0.1, @@ -742,7 +742,7 @@ gems["Freezing Pulse"] = { spell = true, base = { skill_castTime = 0.65, - skill_damageEff = 1.25, + skill_damageEffectiveness = 1.25, skill_critChanceBase = 6, pierceChance = 100, freezeChance = 25, @@ -798,7 +798,7 @@ gems["Glacial Cascade"] = { cold = true, base = { skill_castTime = 0.8, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_critChanceBase = 5, }, quality = { @@ -888,7 +888,7 @@ gems["Ice Nova"] = { cold = true, base = { skill_castTime = 0.9, - skill_damageEff = 0.7, + skill_damageEffectiveness = 0.7, skill_critChanceBase = 6, }, quality = { @@ -941,7 +941,7 @@ gems["Ice Spear"] = { }, base = { skill_castTime = 0.85, - skill_damageEff = 0.8, + skill_damageEffectiveness = 0.8, skill_critChanceBase = 7, part1_pierceChance = 100, part2_critChanceInc = 600, @@ -996,7 +996,7 @@ gems["Incinerate"] = { }, base = { skill_castTime = 0.2, - skill_damageEff = 0.3, + skill_damageEffectiveness = 0.3, skill_baseCrit = 0, pierceChance = 100, part2_spell_damageMore = 2.5, @@ -1095,7 +1095,7 @@ gems["Lightning Tendrils"] = { lightning = true, base = { skill_castTime = 0.8, - skill_damageEff = 0.35, + skill_damageEffectiveness = 0.35, skill_critChanceBase = 6, }, quality = { @@ -1141,7 +1141,7 @@ gems["Lightning Trap"] = { lightning = true, base = { skill_castTime = 1, - skill_damageEff = 0.9, + skill_damageEffectiveness = 0.9, skill_critChanceBase = 5, }, quality = { @@ -1189,7 +1189,7 @@ gems["Lightning Warp"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_critChanceBase = 5, }, quality = { @@ -1235,7 +1235,7 @@ gems["Magma Orb"] = { fire = true, base = { skill_castTime = 0.7, - skill_damageEff = 1.25, + skill_damageEffectiveness = 1.25, skill_critChanceBase = 5, }, quality = { @@ -1329,36 +1329,36 @@ gems["Purity of Elements"] = { auraRadiusInc = 1, }, levels = { - [1] = { auraRadiusInc = 0, elemResistBase = 12, }, - [2] = { auraRadiusInc = 3, elemResistBase = 13, }, - [3] = { auraRadiusInc = 6, elemResistBase = 14, }, - [4] = { auraRadiusInc = 9, elemResistBase = 15, }, - [5] = { auraRadiusInc = 12, elemResistBase = 15, }, - [6] = { auraRadiusInc = 15, elemResistBase = 16, }, - [7] = { auraRadiusInc = 18, elemResistBase = 17, }, - [8] = { auraRadiusInc = 21, elemResistBase = 18, }, - [9] = { auraRadiusInc = 23, elemResistBase = 19, }, - [10] = { auraRadiusInc = 25, elemResistBase = 20, }, - [11] = { auraRadiusInc = 27, elemResistBase = 20, }, - [12] = { auraRadiusInc = 29, elemResistBase = 21, }, - [13] = { auraRadiusInc = 31, elemResistBase = 22, }, - [14] = { auraRadiusInc = 33, elemResistBase = 23, }, - [15] = { auraRadiusInc = 35, elemResistBase = 24, }, - [16] = { auraRadiusInc = 36, elemResistBase = 25, }, - [17] = { auraRadiusInc = 37, elemResistBase = 25, }, - [18] = { auraRadiusInc = 38, elemResistBase = 26, }, - [19] = { auraRadiusInc = 39, elemResistBase = 27, }, - [20] = { auraRadiusInc = 40, elemResistBase = 27, }, - [21] = { auraRadiusInc = 41, elemResistBase = 28, }, - [22] = { auraRadiusInc = 42, elemResistBase = 29, }, - [23] = { auraRadiusInc = 43, elemResistBase = 29, }, - [24] = { auraRadiusInc = 44, elemResistBase = 30, }, - [25] = { auraRadiusInc = 45, elemResistBase = 31, }, - [26] = { auraRadiusInc = 46, elemResistBase = 31, }, - [27] = { auraRadiusInc = 47, elemResistBase = 32, }, - [28] = { auraRadiusInc = 48, elemResistBase = 33, }, - [29] = { auraRadiusInc = 49, elemResistBase = 33, }, - [30] = { auraRadiusInc = 50, elemResistBase = 34, }, + [1] = { auraRadiusInc = 0, elementalResist = 12, }, + [2] = { auraRadiusInc = 3, elementalResist = 13, }, + [3] = { auraRadiusInc = 6, elementalResist = 14, }, + [4] = { auraRadiusInc = 9, elementalResist = 15, }, + [5] = { auraRadiusInc = 12, elementalResist = 15, }, + [6] = { auraRadiusInc = 15, elementalResist = 16, }, + [7] = { auraRadiusInc = 18, elementalResist = 17, }, + [8] = { auraRadiusInc = 21, elementalResist = 18, }, + [9] = { auraRadiusInc = 23, elementalResist = 19, }, + [10] = { auraRadiusInc = 25, elementalResist = 20, }, + [11] = { auraRadiusInc = 27, elementalResist = 20, }, + [12] = { auraRadiusInc = 29, elementalResist = 21, }, + [13] = { auraRadiusInc = 31, elementalResist = 22, }, + [14] = { auraRadiusInc = 33, elementalResist = 23, }, + [15] = { auraRadiusInc = 35, elementalResist = 24, }, + [16] = { auraRadiusInc = 36, elementalResist = 25, }, + [17] = { auraRadiusInc = 37, elementalResist = 25, }, + [18] = { auraRadiusInc = 38, elementalResist = 26, }, + [19] = { auraRadiusInc = 39, elementalResist = 27, }, + [20] = { auraRadiusInc = 40, elementalResist = 27, }, + [21] = { auraRadiusInc = 41, elementalResist = 28, }, + [22] = { auraRadiusInc = 42, elementalResist = 29, }, + [23] = { auraRadiusInc = 43, elementalResist = 29, }, + [24] = { auraRadiusInc = 44, elementalResist = 30, }, + [25] = { auraRadiusInc = 45, elementalResist = 31, }, + [26] = { auraRadiusInc = 46, elementalResist = 31, }, + [27] = { auraRadiusInc = 47, elementalResist = 32, }, + [28] = { auraRadiusInc = 48, elementalResist = 33, }, + [29] = { auraRadiusInc = 49, elementalResist = 33, }, + [30] = { auraRadiusInc = 50, elementalResist = 34, }, } } gems["Purity of Lightning"] = { @@ -1373,36 +1373,36 @@ gems["Purity of Lightning"] = { auraRadiusInc = 1, }, levels = { - [1] = { auraRadiusInc = 0, lightningResistBase = 22, lightningResistMaxBase = 0, }, - [2] = { auraRadiusInc = 3, lightningResistBase = 23, lightningResistMaxBase = 0, }, - [3] = { auraRadiusInc = 6, lightningResistBase = 24, lightningResistMaxBase = 0, }, - [4] = { auraRadiusInc = 9, lightningResistBase = 25, lightningResistMaxBase = 0, }, - [5] = { auraRadiusInc = 12, lightningResistBase = 26, lightningResistMaxBase = 1, }, - [6] = { auraRadiusInc = 15, lightningResistBase = 27, lightningResistMaxBase = 1, }, - [7] = { auraRadiusInc = 18, lightningResistBase = 28, lightningResistMaxBase = 1, }, - [8] = { auraRadiusInc = 21, lightningResistBase = 29, lightningResistMaxBase = 1, }, - [9] = { auraRadiusInc = 23, lightningResistBase = 30, lightningResistMaxBase = 1, }, - [10] = { auraRadiusInc = 25, lightningResistBase = 31, lightningResistMaxBase = 1, }, - [11] = { auraRadiusInc = 27, lightningResistBase = 32, lightningResistMaxBase = 2, }, - [12] = { auraRadiusInc = 29, lightningResistBase = 33, lightningResistMaxBase = 2, }, - [13] = { auraRadiusInc = 31, lightningResistBase = 34, lightningResistMaxBase = 2, }, - [14] = { auraRadiusInc = 33, lightningResistBase = 35, lightningResistMaxBase = 2, }, - [15] = { auraRadiusInc = 35, lightningResistBase = 36, lightningResistMaxBase = 2, }, - [16] = { auraRadiusInc = 36, lightningResistBase = 37, lightningResistMaxBase = 2, }, - [17] = { auraRadiusInc = 37, lightningResistBase = 38, lightningResistMaxBase = 3, }, - [18] = { auraRadiusInc = 38, lightningResistBase = 39, lightningResistMaxBase = 3, }, - [19] = { auraRadiusInc = 39, lightningResistBase = 40, lightningResistMaxBase = 3, }, - [20] = { auraRadiusInc = 40, lightningResistBase = 41, lightningResistMaxBase = 4, }, - [21] = { auraRadiusInc = 41, lightningResistBase = 42, lightningResistMaxBase = 4, }, - [22] = { auraRadiusInc = 42, lightningResistBase = 43, lightningResistMaxBase = 4, }, - [23] = { auraRadiusInc = 43, lightningResistBase = 44, lightningResistMaxBase = 5, }, - [24] = { auraRadiusInc = 44, lightningResistBase = 45, lightningResistMaxBase = 5, }, - [25] = { auraRadiusInc = 45, lightningResistBase = 46, lightningResistMaxBase = 5, }, - [26] = { auraRadiusInc = 46, lightningResistBase = 47, lightningResistMaxBase = 5, }, - [27] = { auraRadiusInc = 47, lightningResistBase = 48, lightningResistMaxBase = 5, }, - [28] = { auraRadiusInc = 48, lightningResistBase = 49, lightningResistMaxBase = 5, }, - [29] = { auraRadiusInc = 49, lightningResistBase = 50, lightningResistMaxBase = 5, }, - [30] = { auraRadiusInc = 50, lightningResistBase = 51, lightningResistMaxBase = 5, }, + [1] = { auraRadiusInc = 0, lightningResist = 22, lightningResistMax = 0, }, + [2] = { auraRadiusInc = 3, lightningResist = 23, lightningResistMax = 0, }, + [3] = { auraRadiusInc = 6, lightningResist = 24, lightningResistMax = 0, }, + [4] = { auraRadiusInc = 9, lightningResist = 25, lightningResistMax = 0, }, + [5] = { auraRadiusInc = 12, lightningResist = 26, lightningResistMax = 1, }, + [6] = { auraRadiusInc = 15, lightningResist = 27, lightningResistMax = 1, }, + [7] = { auraRadiusInc = 18, lightningResist = 28, lightningResistMax = 1, }, + [8] = { auraRadiusInc = 21, lightningResist = 29, lightningResistMax = 1, }, + [9] = { auraRadiusInc = 23, lightningResist = 30, lightningResistMax = 1, }, + [10] = { auraRadiusInc = 25, lightningResist = 31, lightningResistMax = 1, }, + [11] = { auraRadiusInc = 27, lightningResist = 32, lightningResistMax = 2, }, + [12] = { auraRadiusInc = 29, lightningResist = 33, lightningResistMax = 2, }, + [13] = { auraRadiusInc = 31, lightningResist = 34, lightningResistMax = 2, }, + [14] = { auraRadiusInc = 33, lightningResist = 35, lightningResistMax = 2, }, + [15] = { auraRadiusInc = 35, lightningResist = 36, lightningResistMax = 2, }, + [16] = { auraRadiusInc = 36, lightningResist = 37, lightningResistMax = 2, }, + [17] = { auraRadiusInc = 37, lightningResist = 38, lightningResistMax = 3, }, + [18] = { auraRadiusInc = 38, lightningResist = 39, lightningResistMax = 3, }, + [19] = { auraRadiusInc = 39, lightningResist = 40, lightningResistMax = 3, }, + [20] = { auraRadiusInc = 40, lightningResist = 41, lightningResistMax = 4, }, + [21] = { auraRadiusInc = 41, lightningResist = 42, lightningResistMax = 4, }, + [22] = { auraRadiusInc = 42, lightningResist = 43, lightningResistMax = 4, }, + [23] = { auraRadiusInc = 43, lightningResist = 44, lightningResistMax = 5, }, + [24] = { auraRadiusInc = 44, lightningResist = 45, lightningResistMax = 5, }, + [25] = { auraRadiusInc = 45, lightningResist = 46, lightningResistMax = 5, }, + [26] = { auraRadiusInc = 46, lightningResist = 47, lightningResistMax = 5, }, + [27] = { auraRadiusInc = 47, lightningResist = 48, lightningResistMax = 5, }, + [28] = { auraRadiusInc = 48, lightningResist = 49, lightningResistMax = 5, }, + [29] = { auraRadiusInc = 49, lightningResist = 50, lightningResistMax = 5, }, + [30] = { auraRadiusInc = 50, lightningResist = 51, lightningResistMax = 5, }, } } gems["Raise Spectre"] = { @@ -1471,7 +1471,7 @@ gems["Shock Nova"] = { }, base = { skill_castTime = 0.75, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_critChanceBase = 6, part1_spell_damageMore = 0.5, shockChance = 20, @@ -1519,7 +1519,7 @@ gems["Spark"] = { lightning = true, base = { skill_castTime = 0.65, - skill_damageEff = 0.7, + skill_damageEffectiveness = 0.7, skill_critChanceBase = 6, skill_baseDur = 1.5, }, @@ -1566,7 +1566,7 @@ gems["Storm Call"] = { lightning = true, base = { skill_castTime = 0.5, - skill_damageEff = 0.8, + skill_damageEffectiveness = 0.8, skill_critChanceBase = 6, skill_durationBase = 1.5, }, diff --git a/Gems/act_str.lua b/Gems/act_str.lua index 879cca1b..c60d866c 100644 --- a/Gems/act_str.lua +++ b/Gems/act_str.lua @@ -217,7 +217,7 @@ gems["Flame Totem"] = { fire = true, base = { skill_castTime = 0.25, - skill_damageEff = 0.25, + skill_damageEffectiveness = 0.25, skill_critChanceBase = 5, skill_durationBase = 8, }, @@ -592,7 +592,7 @@ gems["Molten Shell"] = { showAverage = true, base = { skill_castTime = 0.5, - skill_damageEff = 2, + skill_damageEffectiveness = 2, skill_critChanceBase = 5, skill_durationBase = 10, }, @@ -708,36 +708,36 @@ gems["Purity of Fire"] = { auraRadiusInc = 1, }, levels = { - [1] = { auraRadiusInc = 0, fireResistBase = 22, fireResistMaxBase = 0, }, - [2] = { auraRadiusInc = 3, fireResistBase = 23, fireResistMaxBase = 0, }, - [3] = { auraRadiusInc = 6, fireResistBase = 24, fireResistMaxBase = 0, }, - [4] = { auraRadiusInc = 9, fireResistBase = 25, fireResistMaxBase = 0, }, - [5] = { auraRadiusInc = 12, fireResistBase = 26, fireResistMaxBase = 1, }, - [6] = { auraRadiusInc = 15, fireResistBase = 27, fireResistMaxBase = 1, }, - [7] = { auraRadiusInc = 18, fireResistBase = 28, fireResistMaxBase = 1, }, - [8] = { auraRadiusInc = 21, fireResistBase = 29, fireResistMaxBase = 1, }, - [9] = { auraRadiusInc = 23, fireResistBase = 30, fireResistMaxBase = 1, }, - [10] = { auraRadiusInc = 25, fireResistBase = 31, fireResistMaxBase = 1, }, - [11] = { auraRadiusInc = 27, fireResistBase = 32, fireResistMaxBase = 2, }, - [12] = { auraRadiusInc = 29, fireResistBase = 33, fireResistMaxBase = 2, }, - [13] = { auraRadiusInc = 31, fireResistBase = 34, fireResistMaxBase = 2, }, - [14] = { auraRadiusInc = 33, fireResistBase = 35, fireResistMaxBase = 2, }, - [15] = { auraRadiusInc = 35, fireResistBase = 36, fireResistMaxBase = 2, }, - [16] = { auraRadiusInc = 36, fireResistBase = 37, fireResistMaxBase = 2, }, - [17] = { auraRadiusInc = 37, fireResistBase = 38, fireResistMaxBase = 3, }, - [18] = { auraRadiusInc = 38, fireResistBase = 39, fireResistMaxBase = 3, }, - [19] = { auraRadiusInc = 39, fireResistBase = 40, fireResistMaxBase = 3, }, - [20] = { auraRadiusInc = 40, fireResistBase = 41, fireResistMaxBase = 4, }, - [21] = { auraRadiusInc = 41, fireResistBase = 42, fireResistMaxBase = 4, }, - [22] = { auraRadiusInc = 42, fireResistBase = 43, fireResistMaxBase = 4, }, - [23] = { auraRadiusInc = 43, fireResistBase = 44, fireResistMaxBase = 5, }, - [24] = { auraRadiusInc = 44, fireResistBase = 45, fireResistMaxBase = 5, }, - [25] = { auraRadiusInc = 45, fireResistBase = 46, fireResistMaxBase = 5, }, - [26] = { auraRadiusInc = 46, fireResistBase = 47, fireResistMaxBase = 5, }, - [27] = { auraRadiusInc = 47, fireResistBase = 48, fireResistMaxBase = 5, }, - [28] = { auraRadiusInc = 48, fireResistBase = 49, fireResistMaxBase = 5, }, - [29] = { auraRadiusInc = 49, fireResistBase = 50, fireResistMaxBase = 5, }, - [30] = { auraRadiusInc = 50, fireResistBase = 51, fireResistMaxBase = 5, }, + [1] = { auraRadiusInc = 0, fireResist = 22, fireResistMax = 0, }, + [2] = { auraRadiusInc = 3, fireResist = 23, fireResistMax = 0, }, + [3] = { auraRadiusInc = 6, fireResist = 24, fireResistMax = 0, }, + [4] = { auraRadiusInc = 9, fireResist = 25, fireResistMax = 0, }, + [5] = { auraRadiusInc = 12, fireResist = 26, fireResistMax = 1, }, + [6] = { auraRadiusInc = 15, fireResist = 27, fireResistMax = 1, }, + [7] = { auraRadiusInc = 18, fireResist = 28, fireResistMax = 1, }, + [8] = { auraRadiusInc = 21, fireResist = 29, fireResistMax = 1, }, + [9] = { auraRadiusInc = 23, fireResist = 30, fireResistMax = 1, }, + [10] = { auraRadiusInc = 25, fireResist = 31, fireResistMax = 1, }, + [11] = { auraRadiusInc = 27, fireResist = 32, fireResistMax = 2, }, + [12] = { auraRadiusInc = 29, fireResist = 33, fireResistMax = 2, }, + [13] = { auraRadiusInc = 31, fireResist = 34, fireResistMax = 2, }, + [14] = { auraRadiusInc = 33, fireResist = 35, fireResistMax = 2, }, + [15] = { auraRadiusInc = 35, fireResist = 36, fireResistMax = 2, }, + [16] = { auraRadiusInc = 36, fireResist = 37, fireResistMax = 2, }, + [17] = { auraRadiusInc = 37, fireResist = 38, fireResistMax = 3, }, + [18] = { auraRadiusInc = 38, fireResist = 39, fireResistMax = 3, }, + [19] = { auraRadiusInc = 39, fireResist = 40, fireResistMax = 3, }, + [20] = { auraRadiusInc = 40, fireResist = 41, fireResistMax = 4, }, + [21] = { auraRadiusInc = 41, fireResist = 42, fireResistMax = 4, }, + [22] = { auraRadiusInc = 42, fireResist = 43, fireResistMax = 4, }, + [23] = { auraRadiusInc = 43, fireResist = 44, fireResistMax = 5, }, + [24] = { auraRadiusInc = 44, fireResist = 45, fireResistMax = 5, }, + [25] = { auraRadiusInc = 45, fireResist = 46, fireResistMax = 5, }, + [26] = { auraRadiusInc = 46, fireResist = 47, fireResistMax = 5, }, + [27] = { auraRadiusInc = 47, fireResist = 48, fireResistMax = 5, }, + [28] = { auraRadiusInc = 48, fireResist = 49, fireResistMax = 5, }, + [29] = { auraRadiusInc = 49, fireResist = 50, fireResistMax = 5, }, + [30] = { auraRadiusInc = 50, fireResist = 51, fireResistMax = 5, }, } } gems["Rallying Cry"] = { @@ -845,7 +845,7 @@ gems["Shockwave Totem"] = { duration = true, base = { skill_castTime = 0.6, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_critChanceBase = 5, skill_durationBase = 8, }, diff --git a/Gems/other.lua b/Gems/other.lua index 26de835b..8a67990b 100644 --- a/Gems/other.lua +++ b/Gems/other.lua @@ -67,7 +67,7 @@ gems["Vaal Arc"] = { showAverage = true, base = { skill_castTime = 0.8, - skill_damageEff = 0.8, + skill_damageEffectiveness = 0.8, skill_critChanceBase = 5, shockChance = 100, }, @@ -210,7 +210,7 @@ gems["Vaal Cold Snap"] = { showAverage = true, base = { skill_castTime = 0.85, - skill_damageEff = 1.4, + skill_damageEffectiveness = 1.4, skill_critChanceBase = 5, skill_durationBase = 10, }, @@ -398,7 +398,7 @@ gems["Vaal Fireball"] = { showAverage = true, base = { skill_castTime = 0.85, - skill_damageEff = 1.25, + skill_damageEffectiveness = 1.25, skill_critChanceBase = 6, aoeRadiusInc = 50, }, @@ -446,7 +446,7 @@ gems["Vaal Flameblast"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 0.6, + skill_damageEffectiveness = 0.6, skill_critChanceBase = 5, spell_damageMore = 12, }, @@ -680,7 +680,7 @@ gems["Vaal Ice Nova"] = { showAverage = true, base = { skill_castTime = 0.9, - skill_damageEff = 0.7, + skill_damageEffectiveness = 0.7, skill_critChanceBase = 6, }, quality = { @@ -787,7 +787,7 @@ gems["Vaal Lightning Trap"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 0.9, + skill_damageEffectiveness = 0.9, skill_critChanceBase = 5, skill_durationBase = 4, pierceChance = 100, @@ -837,7 +837,7 @@ gems["Vaal Lightning Warp"] = { showAverage = true, base = { skill_castTime = 1, - skill_damageEff = 0.5, + skill_damageEffectiveness = 0.5, skill_critChanceBase = 5, }, quality = { @@ -885,7 +885,7 @@ gems["Vaal Molten Shell"] = { showAverage = true, base = { skill_castTime = 0.5, - skill_damageEff = 2, + skill_damageEffectiveness = 2, skill_critChanceBase = 5, skill_durationBase = 10, }, @@ -1117,7 +1117,7 @@ gems["Vaal Spark"] = { showAverage = true, base = { skill_castTime = 0.65, - skill_damageEff = 0.4, + skill_damageEffectiveness = 0.4, skill_critChanceBase = 5, skill_durationBase = 2, }, @@ -1209,7 +1209,7 @@ gems["Vaal Storm Call"] = { showAverage = true, base = { skill_castTime = 0.5, - skill_damageEff = 0.8, + skill_damageEffectiveness = 0.8, skill_critChanceBase = 6, skill_durationBase = 3, }, diff --git a/Gems/sup_dex.lua b/Gems/sup_dex.lua index 2482b344..bfa2d87c 100644 --- a/Gems/sup_dex.lua +++ b/Gems/sup_dex.lua @@ -1134,7 +1134,7 @@ gems["Void Manipulation"] = { chaos = true, base = { manaCostMore = 1.2, - elemInc = -25, + elementalInc = -25, }, quality = { chaosInc = 0.5, diff --git a/Gems/sup_int.lua b/Gems/sup_int.lua index e8046ee3..185ee9dc 100644 --- a/Gems/sup_int.lua +++ b/Gems/sup_int.lua @@ -232,39 +232,39 @@ gems["Elemental Focus"] = { manaCostMore = 1.3, }, quality = { - elemInc = 0.5, + elementalInc = 0.5, }, levels = { - [1] = { elemMore = 1.3, }, - [2] = { elemMore = 1.31, }, - [3] = { elemMore = 1.32, }, - [4] = { elemMore = 1.33, }, - [5] = { elemMore = 1.34, }, - [6] = { elemMore = 1.35, }, - [7] = { elemMore = 1.36, }, - [8] = { elemMore = 1.37, }, - [9] = { elemMore = 1.38, }, - [10] = { elemMore = 1.39, }, - [11] = { elemMore = 1.4, }, - [12] = { elemMore = 1.41, }, - [13] = { elemMore = 1.42, }, - [14] = { elemMore = 1.43, }, - [15] = { elemMore = 1.44, }, - [16] = { elemMore = 1.45, }, - [17] = { elemMore = 1.46, }, - [18] = { elemMore = 1.47, }, - [19] = { elemMore = 1.48, }, - [20] = { elemMore = 1.49, }, - [21] = { elemMore = 1.5, }, - [22] = { elemMore = 1.51, }, - [23] = { elemMore = 1.52, }, - [24] = { elemMore = 1.53, }, - [25] = { elemMore = 1.54, }, - [26] = { elemMore = 1.55, }, - [27] = { elemMore = 1.56, }, - [28] = { elemMore = 1.57, }, - [29] = { elemMore = 1.58, }, - [30] = { elemMore = 1.59, }, + [1] = { elementalMore = 1.3, }, + [2] = { elementalMore = 1.31, }, + [3] = { elementalMore = 1.32, }, + [4] = { elementalMore = 1.33, }, + [5] = { elementalMore = 1.34, }, + [6] = { elementalMore = 1.35, }, + [7] = { elementalMore = 1.36, }, + [8] = { elementalMore = 1.37, }, + [9] = { elementalMore = 1.38, }, + [10] = { elementalMore = 1.39, }, + [11] = { elementalMore = 1.4, }, + [12] = { elementalMore = 1.41, }, + [13] = { elementalMore = 1.42, }, + [14] = { elementalMore = 1.43, }, + [15] = { elementalMore = 1.44, }, + [16] = { elementalMore = 1.45, }, + [17] = { elementalMore = 1.46, }, + [18] = { elementalMore = 1.47, }, + [19] = { elementalMore = 1.48, }, + [20] = { elementalMore = 1.49, }, + [21] = { elementalMore = 1.5, }, + [22] = { elementalMore = 1.51, }, + [23] = { elementalMore = 1.52, }, + [24] = { elementalMore = 1.53, }, + [25] = { elementalMore = 1.54, }, + [26] = { elementalMore = 1.55, }, + [27] = { elementalMore = 1.56, }, + [28] = { elementalMore = 1.57, }, + [29] = { elementalMore = 1.58, }, + [30] = { elementalMore = 1.59, }, } } gems["Elemental Proliferation"] = { diff --git a/Gems/sup_str.lua b/Gems/sup_str.lua index 4e591d91..aa969e0a 100644 --- a/Gems/sup_str.lua +++ b/Gems/sup_str.lua @@ -1017,38 +1017,38 @@ gems["Weapon Elemental Damage"] = { manaCostMore = 1.4, }, quality = { - weapon_elemInc = 0.5, + weapon_elementalInc = 0.5, }, levels = { - [1] = { weapon_elemMore = 1.4, }, - [2] = { weapon_elemMore = 1.41, }, - [3] = { weapon_elemMore = 1.42, }, - [4] = { weapon_elemMore = 1.43, }, - [5] = { weapon_elemMore = 1.44, }, - [6] = { weapon_elemMore = 1.45, }, - [7] = { weapon_elemMore = 1.46, }, - [8] = { weapon_elemMore = 1.47, }, - [9] = { weapon_elemMore = 1.48, }, - [10] = { weapon_elemMore = 1.49, }, - [11] = { weapon_elemMore = 1.5, }, - [12] = { weapon_elemMore = 1.51, }, - [13] = { weapon_elemMore = 1.52, }, - [14] = { weapon_elemMore = 1.53, }, - [15] = { weapon_elemMore = 1.54, }, - [16] = { weapon_elemMore = 1.55, }, - [17] = { weapon_elemMore = 1.56, }, - [18] = { weapon_elemMore = 1.57, }, - [19] = { weapon_elemMore = 1.58, }, - [20] = { weapon_elemMore = 1.59, }, - [21] = { weapon_elemMore = 1.6, }, - [22] = { weapon_elemMore = 1.61, }, - [23] = { weapon_elemMore = 1.62, }, - [24] = { weapon_elemMore = 1.63, }, - [25] = { weapon_elemMore = 1.64, }, - [26] = { weapon_elemMore = 1.65, }, - [27] = { weapon_elemMore = 1.66, }, - [28] = { weapon_elemMore = 1.67, }, - [29] = { weapon_elemMore = 1.68, }, - [30] = { weapon_elemMore = 1.69, }, + [1] = { weapon_elementalMore = 1.4, }, + [2] = { weapon_elementalMore = 1.41, }, + [3] = { weapon_elementalMore = 1.42, }, + [4] = { weapon_elementalMore = 1.43, }, + [5] = { weapon_elementalMore = 1.44, }, + [6] = { weapon_elementalMore = 1.45, }, + [7] = { weapon_elementalMore = 1.46, }, + [8] = { weapon_elementalMore = 1.47, }, + [9] = { weapon_elementalMore = 1.48, }, + [10] = { weapon_elementalMore = 1.49, }, + [11] = { weapon_elementalMore = 1.5, }, + [12] = { weapon_elementalMore = 1.51, }, + [13] = { weapon_elementalMore = 1.52, }, + [14] = { weapon_elementalMore = 1.53, }, + [15] = { weapon_elementalMore = 1.54, }, + [16] = { weapon_elementalMore = 1.55, }, + [17] = { weapon_elementalMore = 1.56, }, + [18] = { weapon_elementalMore = 1.57, }, + [19] = { weapon_elementalMore = 1.58, }, + [20] = { weapon_elementalMore = 1.59, }, + [21] = { weapon_elementalMore = 1.6, }, + [22] = { weapon_elementalMore = 1.61, }, + [23] = { weapon_elementalMore = 1.62, }, + [24] = { weapon_elementalMore = 1.63, }, + [25] = { weapon_elementalMore = 1.64, }, + [26] = { weapon_elementalMore = 1.65, }, + [27] = { weapon_elementalMore = 1.66, }, + [28] = { weapon_elementalMore = 1.67, }, + [29] = { weapon_elementalMore = 1.68, }, + [30] = { weapon_elementalMore = 1.69, }, } } \ No newline at end of file diff --git a/Modules/Calcs.lua b/Modules/Calcs.lua index 43b8b5e4..eabd030f 100644 --- a/Modules/Calcs.lua +++ b/Modules/Calcs.lua @@ -62,7 +62,7 @@ end function calcs:Save(xml) self.modFlag = false for k, v in pairs(self.input) do - local child = {elem = "Input", attrib = {name = k}} + local child = { elem = "Input", attrib = {name = k} } if type(v) == "number" then child.attrib.number = tostring(v) elseif type(v) == "boolean" then diff --git a/Modules/CalcsControl.lua b/Modules/CalcsControl.lua index 49e8e615..7f0845eb 100644 --- a/Modules/CalcsControl.lua +++ b/Modules/CalcsControl.lua @@ -286,26 +286,30 @@ local function endWatch(env, key) end end --- Calculate damage for the given damage type at the given limit ('Min'/'Max') -local function calcDamage(env, output, damageType, limit, ...) +-- Calculate min/max damage of a hit for the given damage type +local function calcHitDamage(env, output, damageType, ...) local modDB = env.modDB local isAttack = (env.mode == "ATTACK") - local damageTypeLimit = damageType..limit + local damageTypeMin = damageType.."Min" + local damageTypeMax = damageType.."Max" - -- Calculate base value - local baseVal + -- Calculate base values + local baseMin, baseMax if isAttack then - baseVal = getMiscVal(modDB, "weapon1", damageTypeLimit, 0) + sumMods(modDB, false, damageTypeLimit) + baseMin = getMiscVal(modDB, "weapon1", damageTypeMin, 0) + sumMods(modDB, false, damageTypeMin) + baseMax = getMiscVal(modDB, "weapon1", damageTypeMax, 0) + sumMods(modDB, false, damageTypeMax) else - baseVal = getMiscVal(modDB, "skill", damageTypeLimit, 0) + sumMods(modDB, false, damageTypeLimit) * getMiscVal(modDB, "skill", "damageEff", 1) + local damageEffectiveness = getMiscVal(modDB, "skill", "damageEffectiveness", 1) + baseMin = getMiscVal(modDB, "skill", damageTypeMin, 0) + sumMods(modDB, false, damageTypeMin) * damageEffectiveness + baseMax = getMiscVal(modDB, "skill", damageTypeMax, 0) + sumMods(modDB, false, damageTypeMax) * damageEffectiveness end -- Build lists of applicable modifier names local addElemental = isElemental[damageType] local inc = { damageType.."Inc", "damageInc" } local more = { damageType.."More", "damageMore" } - local damageTypeStr = "total_"..damageTypeLimit + local damageTypeStr = "total_"..damageType for i = 1, select('#', ...) do local dstElem = select(i, ...) damageTypeStr = damageTypeStr..dstElem @@ -316,8 +320,8 @@ local function calcDamage(env, output, damageType, limit, ...) end if addElemental then -- Damage is elemental or is being converted to elemental damage, add global elemental modifiers - t_insert(inc, "elemInc") - t_insert(more, "elemMore") + t_insert(inc, "elementalInc") + t_insert(more, "elementalMore") end -- Combine modifiers @@ -331,22 +335,24 @@ local function calcDamage(env, output, damageType, limit, ...) output[damageTypeStrMore] = sumMods(modDB, true, unpack(more)) endWatch(env, damageTypeStrMore) end + local modMult = (1 + output[damageTypeStrInc] / 100) * output[damageTypeStrMore] - -- Apply modifiers - local val = baseVal * (1 + output[damageTypeStrInc] / 100) * output[damageTypeStrMore] - - -- Apply conversions + -- Calculate conversions if startWatch(env, damageTypeStr.."Conv") then - local add = 0 + local addMin, addMax = 0, 0 local mult = 1 for _, otherType in pairs(dmgTypeList) do if otherType ~= damageType then - -- Damage added or converted from the other damage type - local gain = sumMods(modDB, false, otherType.."GainAs"..damageType, otherType.."ConvertTo"..damageType) / 100 - if gain > 0 then - add = add + calcDamage(env, output, otherType, limit, damageType, ...) * gain + if damageType ~= "physical" then + -- Damage added or converted from the other damage type + local gain = sumMods(modDB, false, otherType.."GainAs"..damageType, otherType.."ConvertTo"..damageType) / 100 + if gain > 0 then + local min, max = calcHitDamage(env, output, otherType, damageType, ...) + addMin = addMin + min * gain + addMax = addMax + max * gain + end end - if not (...) then + if damageType ~= "chaos" and not (...) then -- Some of this damage type is being converted to the other type -- Not applied to damage being calculated for conversion local convTo = sumMods(modDB, false, damageType.."ConvertTo"..otherType) / 100 @@ -356,7 +362,8 @@ local function calcDamage(env, output, damageType, limit, ...) end end end - output[damageTypeStr.."ConvAdd"] = add + output[damageTypeStr.."ConvAddMin"] = addMin + output[damageTypeStr.."ConvAddMax"] = addMax output[damageTypeStr.."ConvMult"] = mult endWatch(env, damageTypeStr.."Conv") end @@ -364,14 +371,16 @@ local function calcDamage(env, output, damageType, limit, ...) -- Apply resistances if not (...) and startWatch(env, damageTypeStr.."Resist") then if addElemental and env.mode_effective then - output[damageTypeStr.."EffMult"] = 1 - m_min(getMiscVal(modDB, "effective", "elemResist", 0), 75) / 100 + sumMods(modDB, false, damageType.."Pen", "elemPen") / 100 + output[damageTypeStr.."EffMult"] = 1 - m_min(getMiscVal(modDB, "effective", "elementalResist", 0), 75) / 100 + sumMods(modDB, false, damageType.."Pen", "elementalPen") / 100 else output[damageTypeStr.."EffMult"] = 1 end endWatch(env, damageTypeStr.."Resist") end - return (val + output[damageTypeStr.."ConvAdd"]) * output[damageTypeStr.."ConvMult"] * ((...) and 1 or sumMods(modDB, true, damageType.."FinalMore") * output[damageTypeStr.."EffMult"]) + local finalMult = (...) and 1 or (output[damageTypeStr.."ConvMult"] * sumMods(modDB, true, damageType.."FinalMore") * output[damageTypeStr.."EffMult"]) + return (baseMin * modMult + output[damageTypeStr.."ConvAddMin"]) * finalMult, + (baseMax * modMult + output[damageTypeStr.."ConvAddMax"]) * finalMult end -- Initialise environment with skill, input and spec data @@ -512,7 +521,7 @@ local function initEnv(input, build) local modDB = { } env.modDB = modDB env.classId = build.spec.curClassId - local classStats = build.tree.characterData[tostring(env.classId)] + local classStats = build.tree.characterData[env.classId] for _, stat in pairs({"str","dex","int"}) do mod_dbMerge(modDB, "", stat.."Base", classStats["base_"..stat]) end @@ -521,6 +530,10 @@ local function initEnv(input, build) mod_dbMerge(modDB, "", "manaBase", 34 + level * 6) mod_dbMerge(modDB, "", "evasionBase", 53 + level * 3) mod_dbMerge(modDB, "", "accuracyBase", (level - 1) * 2) + mod_dbMerge(modDB, "", "fireResistMax", 75) + mod_dbMerge(modDB, "", "coldResistMax", 75) + mod_dbMerge(modDB, "", "lightningResistMax", 75) + mod_dbMerge(modDB, "", "chaosResistMax", 75) mod_dbMerge(modDB, "", "blockChanceMax", 75) mod_dbMerge(modDB, "", "powerMax", 3) mod_dbMerge(modDB, "power", "critChanceInc", 50) @@ -959,13 +972,16 @@ local function calcPrimary(env, output) endWatch(env, "otherDef") end if startWatch(env, "resist") then - output.total_fireResist = sumMods(modDB, false, "fireResist", "elemResist") - 60 - output.total_coldResist = sumMods(modDB, false, "coldResist", "elemResist") - 60 - output.total_lightningResist = sumMods(modDB, false, "lightningResist", "elemResist") - 60 + for _, elem in pairs({"fire", "cold", "lightning"}) do + output["total_"..elem.."Resist"] = sumMods(modDB, false, elem.."Resist", "elementalResist") - 60 + output["total_"..elem.."ResistMax"] = sumMods(modDB, false, elem.."ResistMax") + end if getMiscVal(modDB, nil, "chaosInoculation", false) then output.total_chaosResist = 100 + output.total_chaosResistMax = 100 else output.total_chaosResist = sumMods(modDB, false, "chaosResist") - 60 + output.total_chaosResistMax = sumMods(modDB, false, "chaosResistMax") - 60 end endWatch(env, "resist") end @@ -997,8 +1013,7 @@ local function calcPrimary(env, output) for _, damageType in pairs(dmgTypeList) do local min, max if startWatch(env, damageType) then - min = calcDamage(env, output, damageType, "Min") - max = calcDamage(env, output, damageType, "Max") + min, max = calcHitDamage(env, output, damageType) output["total_"..damageType.."Min"] = min output["total_"..damageType.."Max"] = max output["total_"..damageType.."Avg"] = (min + max) / 2 @@ -1132,7 +1147,7 @@ local function calcPrimary(env, output) trap = env.skillSpaceFlags.trap, mine = env.skillSpaceFlags.mine, }) - output["total_"..damageType.."Dot"] = baseVal * (1 + sumMods(modDB, false, "damageInc", damageType.."Inc", isElemental[damageType] and "elemInc" or nil) / 100) * sumMods(modDB, true, "damageMore", damageType.."More", isElemental[damageType] and "elemMore" or nil) + output["total_"..damageType.."Dot"] = baseVal * (1 + sumMods(modDB, false, "damageInc", damageType.."Inc", isElemental[damageType] and "elementalInc" or nil) / 100) * sumMods(modDB, true, "damageMore", damageType.."More", isElemental[damageType] and "elementalMore" or nil) end endWatch(env, damageType.."Dot") end @@ -1204,7 +1219,7 @@ local function calcPrimary(env, output) mine = env.skillSpaceFlags.mine, }) local baseVal = output.total_fireAvg * output.total_critEffect * 0.2 - output.ignite_dps = baseVal * (1 + sumMods(modDB, false, "damageInc", "fireInc", "elemInc") / 100) * sumMods(modDB, true, "damageMore", "fireMore", "elemMore") + output.ignite_dps = baseVal * (1 + sumMods(modDB, false, "damageInc", "fireInc", "elementalInc") / 100) * sumMods(modDB, true, "damageMore", "fireMore", "elementalMore") output.ignite_duration = 4 * (1 + getMiscVal(modDB, "ignite", "durationInc", 0) / 100) end endWatch(env, "ignite") @@ -1409,7 +1424,7 @@ function control.buildOutput(input, output, build) local weaponDPS = (getMiscVal(env.modDB, weapon, damageType.."Min", 0) + getMiscVal(env.modDB, weapon, damageType.."Max", 0)) / 2 * getMiscVal(env.modDB, weapon, "attackRate", 1) output[weapon.."_damageDPS"] = (output[weapon.."damageDPS"] or 0) + weaponDPS if isElemental[damageType] then - output[weapon.."_elemDPS"] = (output[weapon.."_elemDPS"] or 0) + weaponDPS + output[weapon.."_elementalDPS"] = (output[weapon.."_elementalDPS"] or 0) + weaponDPS end output[weapon.."_"..damageType.."DPS"] = weaponDPS end diff --git a/Modules/CalcsView.lua b/Modules/CalcsView.lua index ea3affcf..631cfdec 100644 --- a/Modules/CalcsView.lua +++ b/Modules/CalcsView.lua @@ -5,121 +5,6 @@ -- local grid = ... -local s_format = string.format -local m_abs = math.abs -local m_floor = math.floor -local m_min = math.min -local m_max = math.max -local pairs = pairs -local ipairs = ipairs - -function formatNumSep(val, dec) - dec = dec or 0 - val = val or 0 - local neg = val < 0 - val = m_floor(m_abs(val * 10 ^ dec)) - local str = string.reverse(s_format("%.0f", val)) - if #str < (dec + 1) then - str = str .. string.rep("0", dec + 1 - #str) - end - local ret = "" - local pDec, pThou = dec, 3 - for ci = 1, #str do - local c = str:sub(ci, ci) - ret = c .. ret - if pDec > 0 then - pDec = pDec - 1 - if pDec == 0 then - ret = "." .. ret - end - else - pThou = pThou - 1 - if pThou == 0 and ci < #str then - ret = "," .. ret - pThou = 3 - end - end - end - return (neg and "-" or "") .. ret -end -function getFormatNumSep(dec) - return function(val) - return formatNumSep(val, dec) - end -end - -function formatRound(val, dec) - dec = dec or 0 - return m_floor(val * 10 ^ dec + 0.5) / 10 ^ dec -end -function getFormatRound(dec) - return function(val) - return formatRound(val, dec) - end -end - -function formatPercent(val, dec) - dec = dec or 0 - return m_floor((val or 0) * 100 * 10 ^ dec) / 10 ^ dec .. "%" -end -function getFormatPercent(dec) - return function(val) - return formatPercent(val, dec) - end -end - -function formatSec(val) - if val == 0 then - return "0s" - else - return s_format("%.2fs", val) - end -end - -local function mkField(x, y, fieldType, name, format, width, list) - local isFunc = type(format) == "function" - grid:SetElem(x, y, { - type = fieldType, - name = name, - format = (isFunc or not format) and "number" or format, - formatFunc = isFunc and format, - align = (format == "string" or format == "choice") and "LEFT" or "RIGHT", - width = width, - list = list, - }) -end -local function mkFieldWithLabel(x, y, fieldType, label, name, format, width, list) - grid:SetElem(x, y, { - type = "label", - text = label, - align = "RIGHT" - }) - if type(name) == "table" then - for i, n in ipairs(name) do - if n then - mkField(x + i, y, fieldType, n, format) - end - end - else - mkField(x + 1, y, fieldType, name, format, width, list) - end -end -local function mkFieldTable(x, y, tbl) - for i, v in ipairs(tbl) do - if #v == 1 then - if type(v[1]) == "table" then - for c, l in ipairs(v[1]) do - grid:SetElem(x + c - 1, y + i - 1, { type = "label", text = l, align = c == 1 and "RIGHT" or "CENTER" }) - end - else - grid:SetElem(x, y + i - 1, { type = "label", text = v[1], align = "RIGHT" }) - end - elseif #v > 1 then - mkFieldWithLabel(x, y + i - 1, unpack(v)) - end - end -end - local function fieldNames(pre, suf, spec) return { spec:match("p") and (pre.."_physical"..suf) or false, @@ -128,7 +13,7 @@ local function fieldNames(pre, suf, spec) spec:match("f") and (pre.."_fire"..suf) or false, spec:match("h") and (pre.."_chaos"..suf) or false, spec:match("a") and (pre.."_damage"..suf) or false, - spec:match("e") and (pre.."_elem"..suf) or false + spec:match("e") and (pre.."_elemental"..suf) or false } end @@ -201,7 +86,7 @@ columns[3] = { { "output", "Gear %:", "gear_energyShieldInc" }, { "output", "Total:", "total_energyShield", formatRound }, { "output", "Recharge rate:", "total_energyShieldRecharge", getFormatRound(1) }, - { "output", "Recharge delay:", "total_energyShieldRechargeDelay", formatSec }, + { "output", "Recharge delay:", "total_energyShieldRechargeDelay", getFormatSec(2) }, { "output", "Regen:", "total_energyShieldRegen", getFormatRound(1) }, { }, { "Evasion:" }, @@ -261,7 +146,7 @@ columns[5] = { { "input", "Enemy is Chilled?", "condEff_EnemyChilled", "check" }, { "input", "Enemy is Frozen?", "condEff_EnemyFrozen", "check" }, { "input", "Enemy is Shocked?", "condEff_EnemyShocked", "check" }, - { "input", "Enemy Elem. Resist:", "effective_elemResist" }, + { "input", "Enemy Elem. Resist:", "effective_elementalResist" }, { }, { "Crit Chance:" }, }, { @@ -321,9 +206,9 @@ columns[5] = { }, { { }, { "Stun:" }, - { "output", "Stun Duration on You:", "stun_duration", formatSec }, - { "output", "Block Duration on You:", "stun_blockDuration", formatSec }, - { "output", "Duration on Enemies:", "stun_enemyDuration", formatSec }, + { "output", "Stun Duration on You:", "stun_duration", getFormatSec(2) }, + { "output", "Block Duration on You:", "stun_blockDuration", getFormatSec(2) }, + { "output", "Duration on Enemies:", "stun_enemyDuration", getFormatSec(2) }, { "output", "Enemy Threshold Mod:", "stun_enemyThresholdMod", formatPercent }, } } @@ -355,7 +240,7 @@ columns[7] = { { "output", "Weapon Min:", fieldNames("gear_weapon2", "Min", "plcfh") }, { "output", "Weapon Max:", fieldNames("gear_weapon2", "Max", "plcfh") }, { "output", "Weapon APS:", "gear_weapon2_attackRate" }, - { "output", "Weapon DPS:", fieldNames("weaponon2", "DPS", "plcfhae"), getFormatRound(2) }, + { "output", "Weapon DPS:", fieldNames("weapon2", "DPS", "plcfhae"), getFormatRound(2) }, }, { flag = "attack", { "output", "Spec Attack Dmg %:", fieldNames("spec_attack", "Inc", "pa") }, @@ -406,7 +291,7 @@ columns[7] = { { "output", "Attack Damage:", fieldNames("total", "", "plcfha") }, { "output", "Average Damage:", "total_avg", getFormatRound(1) }, { "output", "Attack Speed:", "total_speed", getFormatRound(2) }, - { "output", "Attack Time:", "total_time", getFormatRound(2) }, + { "output", "Attack Time:", "total_time", getFormatSec(2) }, { "output", "Attack DPS:", "total_dps", getFormatRound(1) }, }, { flag = "spell", @@ -417,7 +302,7 @@ columns[7] = { { "output", "Spell Damage:", fieldNames("total", "", "plcfha") }, { "output", "Average Damage:", "total_avg", getFormatRound(1) }, { "output", "Cast Rate:", "total_speed", getFormatRound(2) }, - { "output", "Cast Time:", "total_time", getFormatRound(2) }, + { "output", "Cast Time:", "total_time", getFormatSec(2) }, { "output", "Spell DPS:", "total_dps", getFormatRound(1) }, }, { flag = "cast", @@ -438,10 +323,10 @@ columns[7] = { flag = "duration", { "output", "Spec Duration %:", "spec_durationInc" }, { "output", "Skill Duration Mod:", "total_durationMod", formatPercent }, - { "output", "Skill Duration:", "total_duration", formatSec }, + { "output", "Skill Duration:", "total_duration", getFormatSec(2) }, }, { flag = "trap", - { "output", "Trap Cooldown:", "total_trapCooldown", formatSec }, + { "output", "Trap Cooldown:", "total_trapCooldown", getFormatSec(2) }, }, { flag = "dot", { "output", "Spec DoT Dmg %:", fieldNames("spec_dot", "Inc", "pfa") }, @@ -453,7 +338,7 @@ columns[7] = { { "output", "Gear Bleed Chance %:", "gear_bleedChance" }, { "output", "Bleed Chance:", "bleed_chance", formatPercent }, { "output", "Bleed DPS:", "bleed_dps", getFormatRound(1) }, - { "output", "Bleed Duration:", "bleed_duration", formatSec }, + { "output", "Bleed Duration:", "bleed_duration", getFormatSec(2) }, }, { flag = "poison", { "output", "Spec Poison Chance %:", "spec_poisonChance" }, @@ -461,14 +346,14 @@ columns[7] = { { "output", "Spec Poison Dmg %:", "spec_poison_damageInc" }, { "output", "Poison Chance:", "poison_chance", formatPercent }, { "output", "Poison DPS:", "poison_dps", getFormatRound(1) }, - { "output", "Poison Duration:", "poison_duration", formatSec }, + { "output", "Poison Duration:", "poison_duration", getFormatSec(2) }, }, { flag = "ignite", { "output", "Spec Ignite Chance %:", "spec_igniteChance" }, { "output", "Gear Ignite Chance %:", "gear_igniteChance" }, { "output", "Ignite Chance:", "ignite_chance", formatPercent }, { "output", "Ignite DPS:", "ignite_dps", getFormatRound(1) }, - { "output", "Ignite Duration:", "ignite_duration", formatSec }, + { "output", "Ignite Duration:", "ignite_duration", getFormatSec(2) }, }, { flag = "shock", { "output", "Spec Shock Chance %:", "spec_shockChance" }, @@ -484,6 +369,52 @@ columns[7] = { } } +local function mkField(x, y, fieldType, name, format, width, list) + local isFunc = type(format) == "function" + grid:SetElem(x, y, { + type = fieldType, + name = name, + format = (isFunc or not format) and "number" or format, + formatFunc = isFunc and format, + align = (format == "string" or format == "choice") and "LEFT" or "RIGHT", + width = width, + list = list, + }) +end + +local function mkFieldWithLabel(x, y, fieldType, label, name, format, width, list) + grid:SetElem(x, y, { + type = "label", + text = label, + align = "RIGHT" + }) + if type(name) == "table" then + for i, n in ipairs(name) do + if n then + mkField(x + i, y, fieldType, n, format) + end + end + else + mkField(x + 1, y, fieldType, name, format, width, list) + end +end + +local function mkFieldTable(x, y, tbl) + for i, v in ipairs(tbl) do + if #v == 1 then + if type(v[1]) == "table" then + for c, l in ipairs(v[1]) do + grid:SetElem(x + c - 1, y + i - 1, { type = "label", text = l, align = c == 1 and "RIGHT" or "CENTER" }) + end + else + grid:SetElem(x, y + i - 1, { type = "label", text = v[1], align = "RIGHT" }) + end + elseif #v > 1 then + mkFieldWithLabel(x, y + i - 1, unpack(v)) + end + end +end + local curFlags return function(newFlags) diff --git a/Modules/Common.lua b/Modules/Common.lua index 8bba098a..253d37a9 100644 --- a/Modules/Common.lua +++ b/Modules/Common.lua @@ -4,12 +4,19 @@ -- Libaries, functions and classes used by various modules. -- +local s_format = string.format +local m_abs = math.abs +local m_floor = math.floor +local m_min = math.min +local m_max = math.max +local pairs = pairs +local ipairs = ipairs + common = { } -- External libraries common.curl = require("lcurl") common.xml = require("xml") -common.json = require("dkjson") common.base64 = require("base64") common.newEditField = require("simplegraphic/editfield") @@ -185,3 +192,77 @@ function isValueInArray(tbl, val) end end end + +-- Formats 1234.56 -> "1,234.5" [dec=1] +function formatNumSep(val, dec) + dec = dec or 0 + val = val or 0 + local neg = val < 0 + val = m_floor(m_abs(val * 10 ^ dec)) + local str = string.reverse(s_format("%.0f", val)) + if #str < (dec + 1) then + str = str .. string.rep("0", dec + 1 - #str) + end + local ret = "" + local pDec, pThou = dec, 3 + for ci = 1, #str do + local c = str:sub(ci, ci) + ret = c .. ret + if pDec > 0 then + pDec = pDec - 1 + if pDec == 0 then + ret = "." .. ret + end + else + pThou = pThou - 1 + if pThou == 0 and ci < #str then + ret = "," .. ret + pThou = 3 + end + end + end + return (neg and "-" or "") .. ret +end +function getFormatNumSep(dec) + return function(val) + return formatNumSep(val, dec) + end +end + +-- Formats 1234.56 -> "1234.6" [dec=1] +function formatRound(val, dec) + dec = dec or 0 + return m_floor(val * 10 ^ dec + 0.5) / 10 ^ dec +end +function getFormatRound(dec) + return function(val) + return formatRound(val, dec) + end +end + +-- Formats 12.3456 -> "1234.5%" [dec=1] +function formatPercent(val, dec) + dec = dec or 0 + return m_floor((val or 0) * 100 * 10 ^ dec) / 10 ^ dec .. "%" +end +function getFormatPercent(dec) + return function(val) + return formatPercent(val, dec) + end +end + +-- Formats 1234.56 -> "1234.5s" [dec=1] +function formatSec(val, dec) + dec = dec or 0 + if val == 0 then + return "0s" + else + return s_format("%."..dec.."fs", val) + end +end +function getFormatSec(dec) + return function(val) + return formatSec(val, dec) + end +end + diff --git a/Modules/ModParser.lua b/Modules/ModParser.lua index 010429da..b7261bc5 100644 --- a/Modules/ModParser.lua +++ b/Modules/ModParser.lua @@ -69,8 +69,8 @@ local modNameList = { ["fire and cold resistances"] = { "fireResist", "coldResist" }, ["fire and lightning resistances"] = { "fireResist", "lightningResist" }, ["cold and lightning resistances"] = { "coldResist", "lightningResist" }, - ["elemental resistances"] = "elemResist", - ["all elemental resistances"] = "elemResist", + ["elemental resistances"] = "elementalResist", + ["all elemental resistances"] = "elementalResist", ["all maximum resistances"] = { "fireResistMax", "coldResistMax", "lightningResistMax", "chaosResistMax" }, ["chaos resistance"] = "chaosResist", -- Other defences @@ -150,7 +150,7 @@ local modNameList = { ["cold damage"] = "cold{suf}", ["fire damage"] = "fire{suf}", ["chaos damage"] = "chaos{suf}", - ["elemental damage"] = "elem{suf}", + ["elemental damage"] = "elemental{suf}", -- Other damage forms ["attack damage"] = "attack_damage{suf}", ["physical attack damage"] = "attack_physical{suf}", @@ -369,8 +369,8 @@ local penTypes = { ["lightning resistance"] = "lightningPen", ["cold resistance"] = "coldPen", ["fire resistance"] = "firePen", - ["elemental resistance"] = "elemPen", - ["elemental resistances"] = "elemPen", + ["elemental resistance"] = "elementalPen", + ["elemental resistances"] = "elementalPen", } local regenTypes = { ["life"] = "lifeRegen{suf}", diff --git a/manifest.xml b/manifest.xml index 8af8a17e..bcb09417 100644 --- a/manifest.xml +++ b/manifest.xml @@ -1,6 +1,6 @@ - + @@ -10,20 +10,20 @@ - - - - + + + + - - - - - - + + + + + + - - + + @@ -39,13 +39,13 @@ - - - - - - - + + + + + + + @@ -84,7 +84,6 @@ - diff --git a/runtime-win32.zip b/runtime-win32.zip index baee2029..63ede6c2 100644 Binary files a/runtime-win32.zip and b/runtime-win32.zip differ