Release 1.2.41

- Show save prompt before updating
- Add options for Enemy is Blinded, Dealt Non-Crit Recently, Ignited/Frozen an Enemy Recently
- Reworked node stat difference to avoid issue with certain radius jewels
This commit is contained in:
Openarl
2017-02-13 00:09:27 +10:00
parent b1c9eb5cb6
commit fc2586c7e1
15 changed files with 331 additions and 181 deletions

View File

@@ -450,45 +450,41 @@ function itemLib.buildItemModListForSlotNum(item, baseList, slotNum)
local durationInc = sumLocal(modList, "Duration", "INC", 0)
if item.base.flask.life or item.base.flask.mana then
-- Recovery flask
flaskData.instantPerc = sumLocal(modList, "FlaskInstantRecovery", "BASE", 0)
local recoveryMod = 1 + sumLocal(modList, "FlaskRecovery", "INC", 0) / 100
local rateMod = 1 + sumLocal(modList, "FlaskRecoveryRate", "INC", 0) / 100
local instant = sumLocal(modList, "FlaskInstantRecovery", "BASE", 0)
local durBase = item.base.flask.duration * (1 + durationInc / 100)
flaskData.duration = item.base.flask.duration * (1 + durationInc / 100) / rateMod
if item.base.flask.life then
local base = item.base.flask.life * (1 + item.quality / 100) * recoveryMod
local inst = base * instant / 100
local grad = base * (1 - instant / 100) * (1 + durationInc / 100)
flaskData.lifeTotal = inst + grad
flaskData.lifeDuration = durBase / rateMod
flaskData.lifeBase = item.base.flask.life * (1 + item.quality / 100) * recoveryMod
flaskData.lifeInstant = flaskData.lifeBase * flaskData.instantPerc / 100
flaskData.lifeGradual = flaskData.lifeBase * (1 - flaskData.instantPerc / 100) * (1 + durationInc / 100)
flaskData.lifeTotal = flaskData.lifeInstant + flaskData.lifeGradual
end
if item.base.flask.mana then
local base = item.base.flask.mana * (1 + item.quality / 100) * recoveryMod
local inst = base * instant / 100
local grad = base * (1 - instant / 100) * (1 + durationInc / 100)
flaskData.manaTotal = inst + grad
flaskData.manaDuration = durBase / rateMod
flaskData.manaBase = item.base.flask.mana * (1 + item.quality / 100) * recoveryMod
flaskData.manaInstant = flaskData.manaBase * flaskData.instantPerc / 100
flaskData.manaGradual = flaskData.manaBase * (1 - flaskData.instantPerc / 100) * (1 + durationInc / 100)
flaskData.manaTotal = flaskData.manaInstant + flaskData.manaGradual
end
else
-- Utility flask
flaskData.duration = round(item.base.flask.duration * (1 + (durationInc + item.quality) / 100), 1)
flaskData.duration = item.base.flask.duration * (1 + (durationInc + item.quality) / 100)
end
local extra = sumLocal(modList, "FlaskCharges", "BASE", 0)
local usedInc = sumLocal(modList, "FlaskChargesUsed", "INC", 0)
local gainedInc = sumLocal(modList, "FlaskChargeRecovery", "INC", 0)
flaskData.chargesMax = item.base.flask.chargesMax + extra
flaskData.chargesUsed = m_floor(item.base.flask.chargesUsed * (1 + usedInc / 100))
flaskData.gainMod = 1 + gainedInc / 100
flaskData.chargesMax = item.base.flask.chargesMax + sumLocal(modList, "FlaskCharges", "BASE", 0)
flaskData.chargesUsed = m_floor(item.base.flask.chargesUsed * (1 + sumLocal(modList, "FlaskChargesUsed", "INC", 0) / 100))
flaskData.gainMod = 1 + sumLocal(modList, "FlaskChargeRecovery", "INC", 0) / 100
flaskData.effectInc = sumLocal(modList, "FlaskEffect", "INC", 0)
for _, value in ipairs(modList:Sum("LIST", nil, "Misc")) do
if value.type == "FlaskData" then
flaskData[value.key] = value.value
end
end
elseif item.type == "Jewel" then
item.jewelFunc = nil
item.jewelFuncList = nil
for _, value in ipairs(modList:Sum("LIST", nil, "Misc")) do
if value.type == "JewelFunc" then
item.jewelFunc = item.jewelFunc or { }
t_insert(item.jewelFunc, value.func)
item.jewelFuncList = item.jewelFuncList or { }
t_insert(item.jewelFuncList, value.func)
end
end
end