More tweaks and fixes
- Added required level on hover to points display - Various minor fixes to calcs
This commit is contained in:
@@ -45,13 +45,7 @@ function BuildListClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function BuildListClass:Draw(viewPort)
|
||||
|
||||
@@ -15,10 +15,7 @@ function ButtonClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return false
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds()
|
||||
end
|
||||
|
||||
function ButtonClass:Draw()
|
||||
|
||||
@@ -23,13 +23,7 @@ function CalcBreakdownClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function CalcBreakdownClass:SetBreakdownData(displayData, pinned)
|
||||
@@ -354,6 +348,8 @@ function CalcBreakdownClass:FormatModValue(value, modType)
|
||||
else
|
||||
return -value.."% less"
|
||||
end
|
||||
elseif modType == "FLAG" then
|
||||
return value and "True" or "False"
|
||||
else
|
||||
return value
|
||||
end
|
||||
|
||||
@@ -50,11 +50,9 @@ function CalcSectionClass:IsMouseOver()
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
local mOver = cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
local mOver = self:IsMouseInBounds()
|
||||
if mOver and not self.collapsed and self.enabled then
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
for _, data in ipairs(self.data) do
|
||||
if data.enabled then
|
||||
for _, colData in ipairs(data) do
|
||||
|
||||
@@ -15,10 +15,7 @@ function CheckBoxClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return false
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds()
|
||||
end
|
||||
|
||||
function CheckBoxClass:Draw(viewPort)
|
||||
|
||||
@@ -85,6 +85,13 @@ function ControlClass:IsEnabled()
|
||||
return self:GetProperty("enabled")
|
||||
end
|
||||
|
||||
function ControlClass:IsMouseInBounds()
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
end
|
||||
|
||||
function ControlClass:SetFocus(focus)
|
||||
if focus ~= self.hasFocus then
|
||||
if focus and self.OnFocusGained then
|
||||
|
||||
@@ -49,13 +49,7 @@ function EditClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return false
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function EditClass:SelectAll()
|
||||
|
||||
@@ -164,13 +164,7 @@ function ItemDBClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function ItemDBClass:Draw(viewPort)
|
||||
|
||||
@@ -32,13 +32,7 @@ function ItemListClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function ItemListClass:Draw(viewPort)
|
||||
|
||||
@@ -172,4 +172,3 @@ function ModListClass:Print()
|
||||
ConPrintf("%s|%s", modLib.formatMod(mod), mod.source or "?")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -59,13 +59,14 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents)
|
||||
local spec = build.spec
|
||||
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
local mOver = cursorX >= viewPort.x and cursorX < viewPort.x + viewPort.width and cursorY >= viewPort.y and cursorY < viewPort.y + viewPort.height
|
||||
|
||||
-- Process input events
|
||||
local treeClick
|
||||
for id, event in ipairs(inputEvents) do
|
||||
if event.type == "KeyDown" then
|
||||
if event.key == "LEFTBUTTON" then
|
||||
if cursorX >= viewPort.x and cursorX < viewPort.x + viewPort.width and cursorY >= viewPort.y and cursorY < viewPort.y + viewPort.height then
|
||||
if mOver then
|
||||
-- Record starting coords of mouse drag
|
||||
-- Dragging won't actually commence unless the cursor moves far enough
|
||||
self.dragX, self.dragY = cursorX, cursorY
|
||||
@@ -79,13 +80,15 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents)
|
||||
-- Mouse button went down, but didn't move far enough to trigger drag, so register a normal click
|
||||
treeClick = "LEFT"
|
||||
end
|
||||
elseif event.key == "RIGHTBUTTON" then
|
||||
treeClick = "RIGHT"
|
||||
elseif event.key == "WHEELUP" then
|
||||
self:Zoom(IsKeyDown("SHIFT") and 3 or 1, viewPort)
|
||||
elseif event.key == "WHEELDOWN" then
|
||||
self:Zoom(IsKeyDown("SHIFT") and -3 or -1, viewPort)
|
||||
end
|
||||
elseif mOver then
|
||||
if event.key == "RIGHTBUTTON" then
|
||||
treeClick = "RIGHT"
|
||||
elseif event.key == "WHEELUP" then
|
||||
self:Zoom(IsKeyDown("SHIFT") and 3 or 1, viewPort)
|
||||
elseif event.key == "WHEELDOWN" then
|
||||
self:Zoom(IsKeyDown("SHIFT") and -3 or -1, viewPort)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -130,7 +133,7 @@ function PassiveTreeViewClass:Draw(build, viewPort, inputEvents)
|
||||
end
|
||||
|
||||
local hoverNode
|
||||
if cursorX >= viewPort.x and cursorX < viewPort.x + viewPort.width and cursorY >= viewPort.y and cursorY < viewPort.y + viewPort.height then
|
||||
if mOver then
|
||||
-- Cursor is over the tree, check if it is over a node
|
||||
local curTreeX, curTreeY = screenToTree(cursorX, cursorY)
|
||||
for nodeId, node in pairs(spec.nodes) do
|
||||
|
||||
@@ -51,13 +51,7 @@ function SkillListClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function SkillListClass:Draw(viewPort)
|
||||
|
||||
@@ -21,13 +21,7 @@ function TextListClass:IsMouseOver()
|
||||
if not self:IsShown() then
|
||||
return
|
||||
end
|
||||
if self:GetMouseOverControl() then
|
||||
return true
|
||||
end
|
||||
local x, y = self:GetPos()
|
||||
local width, height = self:GetSize()
|
||||
local cursorX, cursorY = GetCursorPos()
|
||||
return cursorX >= x and cursorY >= y and cursorX < x + width and cursorY < y + height
|
||||
return self:IsMouseInBounds() or self:GetMouseOverControl()
|
||||
end
|
||||
|
||||
function TextListClass:Draw(viewPort)
|
||||
|
||||
@@ -3218,7 +3218,11 @@ gems["Righteous Fire"] = {
|
||||
area = true,
|
||||
fire = true,
|
||||
setupFunc = function(env, output)
|
||||
env.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5
|
||||
if env.mainSkill.skillFlags.totem then
|
||||
env.mainSkill.skillData.FireDot = output.TotemLife * 0.5
|
||||
else
|
||||
env.mainSkill.skillData.FireDot = (output.Life + output.EnergyShield) * 0.5
|
||||
end
|
||||
end,
|
||||
color = 3,
|
||||
baseFlags = {
|
||||
|
||||
@@ -9,6 +9,7 @@ local pairs = pairs
|
||||
local ipairs = ipairs
|
||||
local t_insert = table.insert
|
||||
local m_min = math.min
|
||||
local m_max = math.max
|
||||
|
||||
local buildMode = common.New("ControlHost")
|
||||
|
||||
@@ -83,6 +84,12 @@ function buildMode:Init(dbFileName, buildName)
|
||||
DrawImage(nil, x + 1, y + 1, strW, 18)
|
||||
SetDrawColor(1, 1, 1)
|
||||
DrawString(x + 4, y + 2, "LEFT", 16, "FIXED", str)
|
||||
if control:IsMouseInBounds() then
|
||||
SetDrawLayer(nil, 10)
|
||||
main:AddTooltipLine(16, "Required level: "..m_max(1, (100 + used - usedMax)))
|
||||
main:DrawTooltip(x, y, control.width, control.height, main.viewPort)
|
||||
SetDrawLayer(nil, 0)
|
||||
end
|
||||
end
|
||||
self.controls.characterLevel = common.New("EditControl", {"LEFT",self.anchorTopBarRight,"RIGHT"}, 0, 0, 106, 20, "", "Level", "[%d]", 3, function(buf)
|
||||
self.characterLevel = tonumber(buf) or 1
|
||||
|
||||
@@ -280,7 +280,7 @@ return {
|
||||
{ label = "Total Increased", { format = "{0:mod:1}%", { modName = { "Evasion", "ArmourAndEvasion", "Defences" }, modType = "INC" }, }, },
|
||||
{ label = "Total More", { format = "{0:mod:1}%", { modName = { "Evasion", "ArmourAndEvasion", "Defences" }, modType = "MORE" }, }, },
|
||||
{ label = "Total", { format = "{0:output:Evasion}", { breakdown = "Evasion" }, }, },
|
||||
{ label = "Evade Chance", { format = "{0:output:EvadeChance}%", { breakdown = "EvadeChance" }, { label = "Enemy Accuracy modifiers", modName = "Accuracy", enemy = true }, }, },
|
||||
{ label = "Evade Chance", { format = "{0:output:EvadeChance}%", { breakdown = "EvadeChance" }, { modName = { "CannotEvade" } }, { label = "Enemy Accuracy modifiers", modName = "Accuracy", enemy = true }, }, },
|
||||
} },
|
||||
{ 1, "Resist", 3, "Resists", data.colorCodes.DEFENCE, {
|
||||
extra = data.colorCodes.FIRE.."{0:output:FireResist}+{0:output:FireResistOverCap}^7/"..data.colorCodes.COLD.."{0:output:ColdResist}+{0:output:ColdResistOverCap}^7/"..data.colorCodes.LIGHTNING.."{0:output:LightningResist}+{0:output:LightningResistOverCap}",
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
-- Module: Calcs
|
||||
-- Performs all the offense and defense calculations.
|
||||
-- Here be dragons!
|
||||
-- This file is 2500 lines long, over half of which is in one function...
|
||||
-- This file is 2400 lines long, over half of which is in one function...
|
||||
--
|
||||
|
||||
local pairs = pairs
|
||||
@@ -916,7 +916,7 @@ local function mergeMainMods(env, repSlotName, repItem)
|
||||
end
|
||||
|
||||
-- Finalise environment and perform the calculations
|
||||
-- This function is 1400 lines long. Enjoy!
|
||||
-- This function is 1300 lines long. Enjoy!
|
||||
local function performCalcs(env)
|
||||
local modDB = env.modDB
|
||||
local enemyDB = env.enemyDB
|
||||
@@ -1036,7 +1036,7 @@ local function performCalcs(env)
|
||||
|
||||
-- Merge auxillary modifiers
|
||||
if env.mode_buffs then
|
||||
if activeSkill.buffModList then
|
||||
if activeSkill.buffModList and not activeSkill.skillFlags.totem then
|
||||
if activeSkill.activeGem.data.golem and modDB:Sum("FLAG", skillCfg, "LiegeOfThePrimordial") and (activeSkill.activeGem.data.fire or activeSkill.activeGem.data.cold or activeSkill.activeGem.data.lightning) then
|
||||
modDB:ScaleAddList(activeSkill.buffModList, 2)
|
||||
else
|
||||
@@ -1167,9 +1167,9 @@ local function performCalcs(env)
|
||||
if inc ~= 0 or more ~= 1 or (base ~= 0 and extraBase ~= 0) then
|
||||
local out = { }
|
||||
if base ~= 0 and extraBase ~= 0 then
|
||||
out[1] = "("..round(extraBase, 2).." + "..round(base, 2)..") ^8(base)"
|
||||
out[1] = s_format("(%g + %g) ^8(base)", extraBase, base)
|
||||
else
|
||||
out[1] = round(base + extraBase, 2).." ^8(base)"
|
||||
out[1] = s_format("%g ^8(base)", base + extraBase)
|
||||
end
|
||||
if inc ~= 0 then
|
||||
t_insert(out, s_format("x %.2f", 1 + inc/100).." ^8(increased/reduced)")
|
||||
@@ -1177,7 +1177,7 @@ local function performCalcs(env)
|
||||
if more ~= 1 then
|
||||
t_insert(out, s_format("x %.2f", more).." ^8(more/less)")
|
||||
end
|
||||
t_insert(out, "= "..output[...])
|
||||
t_insert(out, s_format("= %g", output[...]))
|
||||
breakdown[...] = out
|
||||
end
|
||||
end
|
||||
@@ -1210,18 +1210,18 @@ local function performCalcs(env)
|
||||
local out = { }
|
||||
local resistForm = (damageType == "Physical") and "physical damage reduction" or "resistance"
|
||||
if resist ~= 0 then
|
||||
t_insert(out, "Enemy "..resistForm..": "..resist.."%")
|
||||
t_insert(out, s_format("Enemy %s: %d%%", resistForm, resist))
|
||||
end
|
||||
if pen ~= 0 then
|
||||
t_insert(out, "Effective resistance:")
|
||||
t_insert(out, resist.."% ^8(resistance)")
|
||||
t_insert(out, "- "..pen.."% ^8(penetration)")
|
||||
t_insert(out, "= "..(resist-pen).."%")
|
||||
t_insert(out, s_format("%d%% ^8(resistance)", resist))
|
||||
t_insert(out, s_format("- %d%% ^8(penetration)", pen))
|
||||
t_insert(out, s_format("= %d%%", resist - pen))
|
||||
end
|
||||
if (resist - pen) ~= 0 and taken ~= 0 then
|
||||
t_insert(out, "Effective DPS modifier:")
|
||||
t_insert(out, (1 - (resist - pen) / 100).." ^8("..resistForm..")")
|
||||
t_insert(out, "x "..(1 + taken / 100).." ^8(increased/reduced damage taken)")
|
||||
t_insert(out, s_format("%.2f ^8(%s)", 1 - (resist - pen) / 100, resistForm))
|
||||
t_insert(out, s_format("x %.2f ^8(increased/reduced damage taken)", 1 + taken / 100))
|
||||
t_insert(out, s_format("= %.3f", mult))
|
||||
end
|
||||
return out
|
||||
@@ -1251,7 +1251,7 @@ local function performCalcs(env)
|
||||
|
||||
-- Add attribute bonuses
|
||||
modDB:NewMod("Life", "BASE", m_floor(output.Str / 2), "Strength")
|
||||
local strDmgBonus = round((output.Str + modDB:Sum("BASE", nil, "DexIntToMeleeBonus", 0)) / 5)
|
||||
local strDmgBonus = round((output.Str + modDB:Sum("BASE", nil, "DexIntToMeleeBonus")) / 5)
|
||||
modDB:NewMod("PhysicalDamage", "INC", strDmgBonus, "Strength", ModFlag.Melee)
|
||||
modDB:NewMod("Accuracy", "BASE", output.Dex * 2, "Dexterity")
|
||||
if not modDB:Sum("FLAG", nil, "IronReflexes") then
|
||||
@@ -1414,9 +1414,9 @@ local function performCalcs(env)
|
||||
output.EvadeChance = 100 - calcHitChance(output.Evasion, enemyAccuracy)
|
||||
if breakdown then
|
||||
breakdown.EvadeChance = {
|
||||
"Enemy level: "..env.enemyLevel..(env.configInput.enemyLevel and " ^8(overridden from the Configuration tab" or " ^8(can be overridden in the Configuration tab)"),
|
||||
"Average enemy accuracy: "..enemyAccuracy,
|
||||
"Approximate evade chance: "..output.EvadeChance.."%",
|
||||
s_format("Enemy level: %d ^8(%s the Configuration tab)", env.enemyLevel, env.configInput.enemyLevel and "overridden from" or "can be overridden in"),
|
||||
s_format("Average enemy accuracy: %d", enemyAccuracy),
|
||||
s_format("Approximate evade chance: %d%%", output.EvadeChance),
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -1806,9 +1806,9 @@ local function performCalcs(env)
|
||||
local convMult = env.conversionTable[damageType].mult
|
||||
if breakdown then
|
||||
t_insert(breakdown[damageType], "Hit damage:")
|
||||
t_insert(breakdown[damageType], ""..min.." to "..max.." ^8(total damage)")
|
||||
t_insert(breakdown[damageType], s_format("%d to %d ^8(total damage)", min, max))
|
||||
if convMult ~= 1 then
|
||||
t_insert(breakdown[damageType], "x "..convMult.." ^8("..((1-convMult)*100).."% converted to other damage types)")
|
||||
t_insert(breakdown[damageType], s_format("x %g ^8(%g%% converted to other damage types)", convMult, (1-convMult)*100))
|
||||
end
|
||||
end
|
||||
min = min * convMult
|
||||
@@ -1843,7 +1843,7 @@ local function performCalcs(env)
|
||||
end
|
||||
end
|
||||
if breakdown then
|
||||
t_insert(breakdown[damageType], "= "..round(min).." to "..round(max))
|
||||
t_insert(breakdown[damageType], s_format("= %d to %d", min, max))
|
||||
end
|
||||
else
|
||||
min, max = 0, 0
|
||||
@@ -1910,28 +1910,29 @@ local function performCalcs(env)
|
||||
do
|
||||
local more = m_floor(modDB:Sum("MORE", skillCfg, "ManaCost") * 100 + 0.0001) / 100
|
||||
local inc = modDB:Sum("INC", skillCfg, "ManaCost")
|
||||
output.ManaCost = m_floor(m_max(0, (skillData.manaCost or 0) * more * (1 + inc / 100) - modDB:Sum("BASE", skillCfg, "ManaCost")))
|
||||
local base = modDB:Sum("BASE", skillCfg, "ManaCost")
|
||||
output.ManaCost = m_floor(m_max(0, (skillData.manaCost or 0) * more * (1 + inc / 100) - base))
|
||||
if breakdown and output.ManaCost ~= (skillData.manaCost or 0) then
|
||||
breakdown.ManaCost = {
|
||||
(skillData.manaCost or 0).." ^8(base mana cost)",
|
||||
s_format("%d ^8(base mana cost)", skillData.manaCost or 0)
|
||||
}
|
||||
if more ~= 1 then
|
||||
t_insert(breakdown.ManaCost, "x "..more.." ^8(mana cost multiplier)")
|
||||
t_insert(breakdown.ManaCost, s_format("x %.2f ^8(mana cost multiplier)", more))
|
||||
end
|
||||
if inc ~= 0 then
|
||||
t_insert(breakdown.ManaCost, "x "..(1 + inc/100).." ^8(increased/reduced mana cost)")
|
||||
end
|
||||
local base = modDB:Sum("BASE", skillCfg, "ManaCost")
|
||||
t_insert(breakdown.ManaCost, s_format("x %.2f ^8(increased/reduced mana cost)", 1 + inc/100))
|
||||
end
|
||||
if base ~= 0 then
|
||||
t_insert(breakdown.ManaCost, "- "..base.." ^8(- mana cost)")
|
||||
t_insert(breakdown.ManaCost, s_format("- %d ^8(- mana cost)", base))
|
||||
end
|
||||
t_insert(breakdown.ManaCost, "= " .. output.ManaCost)
|
||||
t_insert(breakdown.ManaCost, s_format("= %d", output.ManaCost))
|
||||
end
|
||||
end
|
||||
|
||||
-- Calculate skill DOT components
|
||||
local dotCfg = {
|
||||
skillName = skillCfg.skillName,
|
||||
slotName = skillCfg.slotName,
|
||||
flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0),
|
||||
keywordFlags = skillCfg.keywordFlags
|
||||
}
|
||||
@@ -1966,13 +1967,14 @@ local function performCalcs(env)
|
||||
end
|
||||
local inc = modDB:Sum("INC", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil)
|
||||
local more = round(modDB:Sum("MORE", dotCfg, "Damage", damageType.."Damage", isElemental[damageType] and "ElementalDamage" or nil), 2)
|
||||
output[damageType.."Dot"] = baseVal * (1 + inc/100) * more * effMult
|
||||
local total = baseVal * (1 + inc/100) * more * effMult
|
||||
output[damageType.."Dot"] = total
|
||||
output.TotalDot = output.TotalDot + total
|
||||
if breakdown then
|
||||
breakdown[damageType.."Dot"] = { }
|
||||
dotBreakdown(breakdown[damageType.."Dot"], baseVal, inc, more, effMult, output[damageType.."Dot"])
|
||||
dotBreakdown(breakdown[damageType.."Dot"], baseVal, inc, more, effMult, total)
|
||||
end
|
||||
end
|
||||
output.TotalDot = output.TotalDot + (output[damageType.."Dot"] or 0)
|
||||
end
|
||||
|
||||
-- Calculate bleeding chance and damage
|
||||
@@ -1982,6 +1984,7 @@ local function performCalcs(env)
|
||||
skillFlags.bleed = true
|
||||
skillFlags.duration = true
|
||||
local dotCfg = {
|
||||
slotName = skillCfg.slotName,
|
||||
flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0),
|
||||
keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Bleed)
|
||||
}
|
||||
@@ -2035,6 +2038,7 @@ local function performCalcs(env)
|
||||
skillFlags.poison = true
|
||||
skillFlags.duration = true
|
||||
local dotCfg = {
|
||||
slotName = skillCfg.slotName,
|
||||
flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0),
|
||||
keywordFlags = bor(skillCfg.keywordFlags, KeywordFlag.Poison)
|
||||
}
|
||||
@@ -2109,6 +2113,7 @@ local function performCalcs(env)
|
||||
if canDeal.Fire and output.IgniteChance > 0 and sourceDmg > 0 then
|
||||
skillFlags.ignite = true
|
||||
local dotCfg = {
|
||||
slotName = skillCfg.slotName,
|
||||
flags = bor(band(skillCfg.flags, ModFlag.SourceMask), ModFlag.Dot, skillData.dotIsSpell and ModFlag.Spell or 0),
|
||||
keywordFlags = skillCfg.keywordFlags,
|
||||
}
|
||||
@@ -2373,7 +2378,7 @@ function calcs.buildOutput(build, mode)
|
||||
end
|
||||
elseif mode == "CALCS" then
|
||||
-- Calculate XP modifier
|
||||
--[[ FIXME
|
||||
--[[ FIXME?
|
||||
if input.monster_level and input.monster_level > 0 then
|
||||
local playerLevel = build.characterLevel
|
||||
local diff = m_abs(playerLevel - input.monster_level) - 3 - m_floor(playerLevel / 16)
|
||||
|
||||
@@ -49,7 +49,7 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases)
|
||||

|
||||
|
||||
## Changelog
|
||||
### 1.2.0 - 2016/11/01
|
||||
### 1.2.0 - 2016/11/02
|
||||
With this update, the program's internal modifier system has been completely overhauled.
|
||||
On its own this overhaul doesn't change much from the user's perspective, but it has opened the way for some
|
||||
significant upgrades:
|
||||
@@ -82,6 +82,7 @@ Other changes:
|
||||
* Some options now have tooltips that explain aspects of their function
|
||||
* The new class background artworks have been added to the passive skill tree
|
||||
* Unsupported modifiers are now shown in red instead of white to help convey the fact that they won't work
|
||||
* The required level for a build's passive tree is now shown when hovering over the points display
|
||||
* Support gem compatability is now determined using the same data the game itself uses, and should now be 100% accurate
|
||||
|
||||
### 1.1.11 - 2016/10/25
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
VERSION[1.2.0][2016/11/01]
|
||||
VERSION[1.2.0][2016/11/02]
|
||||
With this update, the program's internal modifier system has been completely overhauled.
|
||||
On its own this overhaul doesn't change much from the user's perspective, but it has opened the way for some
|
||||
significant upgrades:
|
||||
@@ -31,6 +31,7 @@ Other changes:
|
||||
* Some options now have tooltips that explain aspects of their function
|
||||
* The new class background artworks have been added to the passive skill tree
|
||||
* Unsupported modifiers are now shown in red instead of white to help convey the fact that they won't work
|
||||
* The required level for a build's passive tree is now shown when hovering over the points display
|
||||
* Support gem compatability is now determined using the same data the game itself uses, and should now be 100% accurate
|
||||
VERSION[1.1.11][2016/10/25]
|
||||
* Added flat mana to ES armour rare templates
|
||||
|
||||
36
manifest.xml
36
manifest.xml
@@ -7,44 +7,44 @@
|
||||
<File sha1="6bb074e0d3a4043f0e5dcbd25c33f8e5e1f5cfe0" name="Launch.lua" part="program"/>
|
||||
<File sha1="93e19c2a160eb49993d50d9e2b47ea79962373d9" name="UpdateCheck.lua" part="program"/>
|
||||
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
|
||||
<File sha1="58cdc6d82a5f5fac055f048d6b48ea2fba323276" name="changelog.txt" part="program"/>
|
||||
<File sha1="aef7145f378d0a1d5dc6f5f2d3c08d2a1b6ef264" name="Classes/BuildListControl.lua" part="program"/>
|
||||
<File sha1="f41793d6cbf037cddab2079bf9445cf096e295cf" name="Classes/ButtonControl.lua" part="program"/>
|
||||
<File sha1="4f43a9507cf7e18f07d2f19fda9f83e12558c407" name="Classes/CalcBreakdownControl.lua" part="program"/>
|
||||
<File sha1="5bb6ef0eb3a0fa5f7ef88fecffadddd95013cd2a" name="Classes/CalcSectionControl.lua" part="program"/>
|
||||
<File sha1="00fd324c3bd6292e6bcf50eb237846d8504ee0ae" name="changelog.txt" part="program"/>
|
||||
<File sha1="ea886e9e8ce013ed7d8805174d43becdca1f533e" name="Classes/BuildListControl.lua" part="program"/>
|
||||
<File sha1="e42437dd7e1b5a1032f1be9852ede4399a003826" name="Classes/ButtonControl.lua" part="program"/>
|
||||
<File sha1="9b458889148f4cf0e521e2d1090213da84bf3176" name="Classes/CalcBreakdownControl.lua" part="program"/>
|
||||
<File sha1="7584ee2977e9e4d1351fdc80caa700301d422e7b" name="Classes/CalcSectionControl.lua" part="program"/>
|
||||
<File sha1="dd707e5d9fefe00cbbbd51cefa94b6de04347b65" name="Classes/CalcsTab.lua" part="program"/>
|
||||
<File sha1="c8c603b9cae464de06f04dd6ab2e0530dc897bbc" name="Classes/CheckBoxControl.lua" part="program"/>
|
||||
<File sha1="690f0d9d9ba0cd8092eb660d5d83bb0b9ad9f37d" name="Classes/CheckBoxControl.lua" part="program"/>
|
||||
<File sha1="130c54c6f5ea929d90128fbd576191833b995dab" name="Classes/ConfigTab.lua" part="program"/>
|
||||
<File sha1="e71f8367d62de41b0b80b764ddced8fb80f50ce7" name="Classes/Control.lua" part="program"/>
|
||||
<File sha1="bbb08f183746d6ec023e2bd08fb7a89d365381da" name="Classes/Control.lua" part="program"/>
|
||||
<File sha1="ae55fe1093e727872bc01cc94fa987395f944313" name="Classes/ControlHost.lua" part="program"/>
|
||||
<File sha1="8305ea8d306a13160c369c474d19b05024a1f5ef" name="Classes/DropDownControl.lua" part="program"/>
|
||||
<File sha1="db813fd5ec47e0fb8378962e219d9d86e9e11915" name="Classes/EditControl.lua" part="program"/>
|
||||
<File sha1="83b030df704dc509cba978298526e03699d8ee3b" name="Classes/EditControl.lua" part="program"/>
|
||||
<File sha1="dca9446ea1a4846f6de2147b25df7818826f9942" name="Classes/GemSelectControl.lua" part="program"/>
|
||||
<File sha1="7a1150c0605ff912d8466e8c03fd242fd8140cfd" name="Classes/ImportTab.lua" part="program"/>
|
||||
<File sha1="5f382e77c5f2321cfae45494f19f75445c92a06f" name="Classes/ItemDBControl.lua" part="program"/>
|
||||
<File sha1="84ddcc1358c4c6a9c7f047cc882031d0696533d7" name="Classes/ItemListControl.lua" part="program"/>
|
||||
<File sha1="3b66dcf4b639a99692463ed28a8ba4dc31b332fa" name="Classes/ItemDBControl.lua" part="program"/>
|
||||
<File sha1="1d35b4c7c20bb6380c8b739658101fb1bf37cc3c" name="Classes/ItemListControl.lua" part="program"/>
|
||||
<File sha1="b547357491a4faec1d007ae44604b75e05a2613c" name="Classes/ItemSlotControl.lua" part="program"/>
|
||||
<File sha1="e470dc81148fc9079a0a31ea3b24f5f04754c331" name="Classes/ItemsTab.lua" part="program"/>
|
||||
<File sha1="e577edeea7685cb2b0cd0d00b901a458ae45add0" name="Classes/LabelControl.lua" part="program"/>
|
||||
<File sha1="a26d1a34424222856ad018ac43e3c7895d7f05b5" name="Classes/ModDB.lua" part="program"/>
|
||||
<File sha1="5d8eda690e99ec64bda7379d3d4f8952a21b361a" name="Classes/ModList.lua" part="program"/>
|
||||
<File sha1="a3ed881ebe1ed7c8931675937b4661d77decc316" name="Classes/ModList.lua" part="program"/>
|
||||
<File sha1="6f8f98d6ee505af53441c1fe9ad74fbff86d56ad" name="Classes/PassiveSpec.lua" part="program"/>
|
||||
<File sha1="9a6bce38a62d9c07851cdd095e91f088e37cea4e" name="Classes/PassiveTree.lua" part="program"/>
|
||||
<File sha1="98496bc834a2a7e46210f7ad8f3e7b3954ae2582" name="Classes/PassiveTreeView.lua" part="program"/>
|
||||
<File sha1="93dbcaa94237666391a2259a18834b7c479d14bb" name="Classes/PassiveTreeView.lua" part="program"/>
|
||||
<File sha1="b5d4e4e7cedcabefa029cdefc74db5ac0a82d87f" name="Classes/PopupDialog.lua" part="program"/>
|
||||
<File sha1="86fee3127d9520144fc741f6fccc3c1d9f1aa532" name="Classes/ScrollBarControl.lua" part="program"/>
|
||||
<File sha1="261dcf54a4542e6160fd7024d8edf4fc095d9c71" name="Classes/SectionControl.lua" part="program"/>
|
||||
<File sha1="e42ef80c046adbb0aa0c193f7849fe18f172fdc1" name="Classes/SkillListControl.lua" part="program"/>
|
||||
<File sha1="ae0f25f993f6f5950469c34e4e2b9b441b5ad5f5" name="Classes/SkillListControl.lua" part="program"/>
|
||||
<File sha1="272f67304f7f41b6335e19b14479e131c54766fe" name="Classes/SkillsTab.lua" part="program"/>
|
||||
<File sha1="6317bd9ba391832dccafcb62409a5ce2988d1928" name="Classes/SliderControl.lua" part="program"/>
|
||||
<File sha1="80527e0e05c986355ce7af2ba026538aec99a63a" name="Classes/SlotSelectControl.lua" part="program"/>
|
||||
<File sha1="844b8915ca0f2e6af82f2d15978af131a33ad50e" name="Classes/TextListControl.lua" part="program"/>
|
||||
<File sha1="a4f9cc96ba474d0a75c768a0eabec92837e027cf" name="Classes/TextListControl.lua" part="program"/>
|
||||
<File sha1="8b8fbea27b00c702ea7bcffa6945cc814cc2fa41" name="Classes/TreeTab.lua" part="program"/>
|
||||
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
|
||||
<File sha1="11f9b77ce58cd280d93aacbebda6441d4252a965" name="Modules/Build.lua" part="program"/>
|
||||
<File sha1="360f76ab20204acf85b000c68c981d96132d7c8c" name="Modules/Build.lua" part="program"/>
|
||||
<File sha1="c03a7796aea3e9aa832fbb92c1f674ef5af690ca" name="Modules/BuildList.lua" part="program"/>
|
||||
<File sha1="ff32e69e1dc620b91c25579a762a21cebe0fd1df" name="Modules/Calcs.lua" part="program"/>
|
||||
<File sha1="c975dd78022d928b44d2b5647382b15e60bea100" name="Modules/CalcSections.lua" part="program"/>
|
||||
<File sha1="a3530c34fe9c7e21992cf4e3b6d52cdc3aaf39a8" name="Modules/Calcs.lua" part="program"/>
|
||||
<File sha1="99148774ffc1c326f3a50e7d8b3f7a68fe1ede57" name="Modules/CalcSections.lua" part="program"/>
|
||||
<File sha1="f207df4010cb3c7bc6cce98be2529a3b8a708b8f" name="Modules/Common.lua" part="program"/>
|
||||
<File sha1="132f51b4be7890360f478df52bc6c77772db75cc" name="Modules/Data.lua" part="program"/>
|
||||
<File sha1="5ddfa4a5904cefbf2755c231797175c8ae24ac49" name="Modules/ItemTools.lua" part="program"/>
|
||||
@@ -56,7 +56,7 @@
|
||||
<File sha1="698c46ec242133014f6904d276b27106580ea392" name="Data/New.lua" part="program"/>
|
||||
<File sha1="4bda866bb45169b51bd193039a87d7bcc6cbacaa" name="Data/Rares.lua" part="program"/>
|
||||
<File sha1="48ae2fa7c8fb4de252e264431eb5d80bf835d566" name="Data/Gems/act_dex.lua" part="program"/>
|
||||
<File sha1="24e96dbdd899bb6a550bbc9735b0598b440c510a" name="Data/Gems/act_int.lua" part="program"/>
|
||||
<File sha1="74e0fa3fc4d905a5621f45192438aee722146e3e" name="Data/Gems/act_int.lua" part="program"/>
|
||||
<File sha1="bec392131a513e81be5119805a94ef362bcf56ce" name="Data/Gems/act_str.lua" part="program"/>
|
||||
<File sha1="f6d7bc0e523b7d97fd3f2a8d2f09476716757ce1" name="Data/Gems/other.lua" part="program"/>
|
||||
<File sha1="5b3d32761bd9ca5acf06aeecdc86d1cb01182c0f" name="Data/Gems/sup_dex.lua" part="program"/>
|
||||
|
||||
Reference in New Issue
Block a user