Release 1.4.152
- Added support for item-granted notables - Fixed Feeding Frenzy buff - Added new spectres - Fixed buff effect modifiers not applying to minion modifiers
This commit is contained in:
@@ -256,6 +256,15 @@ function calcs.offence(env, actor, activeSkill)
|
||||
end
|
||||
end
|
||||
end
|
||||
if skillModList:Flag(nil, "TransfigurationOfBody") then
|
||||
skillModList:NewMod("Damage", "INC", m_floor(skillModList:Sum("INC", nil, "Life") * 0.3), "Transfiguration of Body", ModFlag.Attack)
|
||||
end
|
||||
if skillModList:Flag(nil, "TransfigurationOfMind") then
|
||||
skillModList:NewMod("Damage", "INC", m_floor(skillModList:Sum("INC", nil, "Mana") * 0.3), "Transfiguration of Mind")
|
||||
end
|
||||
if skillModList:Flag(nil, "TransfigurationOfSoul") then
|
||||
skillModList:NewMod("Damage", "INC", m_floor(skillModList:Sum("INC", nil, "EnergyShield") * 0.3), "Transfiguration of Soul", ModFlag.Spell)
|
||||
end
|
||||
|
||||
local isAttack = skillFlags.attack
|
||||
|
||||
|
||||
@@ -340,7 +340,7 @@ function calcs.initEnv(build, mode, override)
|
||||
end
|
||||
end
|
||||
else
|
||||
nodes = env.spec.allocNodes
|
||||
nodes = copyTable(env.spec.allocNodes, true)
|
||||
end
|
||||
env.allocNodes = nodes
|
||||
|
||||
@@ -615,6 +615,16 @@ function calcs.initEnv(build, mode, override)
|
||||
env.player.weaponData2 = env.player.itemList["Weapon 2"] and env.player.itemList["Weapon 2"].weaponData and env.player.itemList["Weapon 2"].weaponData[2] or { }
|
||||
end
|
||||
|
||||
-- Add granted passives
|
||||
env.grantedPassives = { }
|
||||
for _, passive in pairs(env.modDB:List(nil, "GrantedPassive")) do
|
||||
local node = env.spec.tree.notableMap[passive]
|
||||
if node then
|
||||
nodes[node.id] = node
|
||||
env.grantedPassives[node.id] = true
|
||||
end
|
||||
end
|
||||
|
||||
-- Merge modifiers for allocated passives
|
||||
env.modDB:AddList(calcs.buildModListForNodeList(env, nodes, true))
|
||||
|
||||
|
||||
@@ -141,17 +141,15 @@ function calcLib.buildSkillInstanceStats(skillInstance, grantedEffect)
|
||||
end
|
||||
local level = grantedEffect.levels[skillInstance.level]
|
||||
local availableEffectiveness
|
||||
if not skillInstance.actorLevel then
|
||||
skillInstance.actorLevel = level.levelRequirement
|
||||
end
|
||||
local actorLevel = skillInstance.actorLevel or level.levelRequirement
|
||||
for index, stat in ipairs(grantedEffect.stats) do
|
||||
local statValue
|
||||
if level.statInterpolation[index] == 3 then
|
||||
-- Effectiveness interpolation
|
||||
if not availableEffectiveness then
|
||||
availableEffectiveness =
|
||||
(3.885209 + 0.360246 * (skillInstance.actorLevel - 1)) * grantedEffect.baseEffectiveness
|
||||
* (1 + grantedEffect.incrementalEffectiveness) ^ (skillInstance.actorLevel - 1)
|
||||
(3.885209 + 0.360246 * (actorLevel - 1)) * grantedEffect.baseEffectiveness
|
||||
* (1 + grantedEffect.incrementalEffectiveness) ^ (actorLevel - 1)
|
||||
end
|
||||
statValue = round(availableEffectiveness * level[index])
|
||||
elseif level.statInterpolation[index] == 2 then
|
||||
@@ -161,7 +159,7 @@ function calcLib.buildSkillInstanceStats(skillInstance, grantedEffect)
|
||||
local prevReq = grantedEffect.levels[nextLevel - 1].levelRequirement
|
||||
local nextStat = grantedEffect.levels[nextLevel][index]
|
||||
local prevStat = grantedEffect.levels[nextLevel - 1][index]
|
||||
statValue = round(prevStat + (nextStat - prevStat) * (skillInstance.actorLevel - prevReq) / (nextReq - prevReq))
|
||||
statValue = round(prevStat + (nextStat - prevStat) * (actorLevel - prevReq) / (nextReq - prevReq))
|
||||
else
|
||||
-- Static value
|
||||
statValue = level[index] or 1
|
||||
|
||||
@@ -398,7 +398,7 @@ function calcs.buildOutput(build, mode)
|
||||
output.Minion.CurseList = output.CurseList
|
||||
end
|
||||
|
||||
--infoDump(env)
|
||||
infoDump(env)
|
||||
end
|
||||
|
||||
return env
|
||||
|
||||
@@ -90,8 +90,11 @@ return {
|
||||
modList:NewMod("Condition:EnemyHasDeathmark", "FLAG", true, "Config")
|
||||
end },
|
||||
{ label = "Feeding Frenzy:", ifSkill = "Feeding Frenzy" },
|
||||
{ var = "feedingFrenzyFeedingFrenzyActive", type = "check", label = "Is Feeding Frenzy active?", ifSkill = "Feeding Frenzy", apply = function(val, modList, enemyModList)
|
||||
{ var = "feedingFrenzyFeedingFrenzyActive", type = "check", label = "Is Feeding Frenzy active?", ifSkill = "Feeding Frenzy", tooltip = "Feeding Frenzy grants:\n10% more Minion Damage\n15% increased Minion Movement Speed\n15% increased Minion Attack and Cast Speed", apply = function(val, modList, enemyModList)
|
||||
modList:NewMod("Condition:FeedingFrenzyActive", "FLAG", true, "Config")
|
||||
modList:NewMod("MinionModifier", "LIST", { mod = modLib.createMod("Damage", "MORE", 10, "Feeding Frenzy") }, "Config")
|
||||
modList:NewMod("MinionModifier", "LIST", { mod = modLib.createMod("MovementSpeed", "INC", 15, "Feeding Frenzy") }, "Config")
|
||||
modList:NewMod("MinionModifier", "LIST", { mod = modLib.createMod("Speed", "INC", 15, "Feeding Frenzy") }, "Config")
|
||||
end },
|
||||
{ label = "Herald of Agony:", ifSkill = "Herald of Agony" },
|
||||
{ var = "heraldOfAgonyVirulenceStack", type = "count", label = "# of Virulence Stacks:", ifSkill = "Herald of Agony", apply = function(val, modList, enemyModList)
|
||||
|
||||
@@ -1625,6 +1625,10 @@ local specialModList = {
|
||||
["warcry skills' cooldown time is (%d+) seconds"] = function(num) return { mod("CooldownRecovery", "OVERRIDE", 2, nil, 0, KeywordFlag.Warcry) } end,
|
||||
["your critical strike multiplier is (%d+)%%"] = function(num) return { mod("CritMultiplier", "OVERRIDE", num) } end,
|
||||
["base critical strike chance for attacks with weapons is ([%d%.]+)%%"] = function(num) return { mod("WeaponBaseCritChance", "OVERRIDE", num) } end,
|
||||
["allocates (.+)"] = function(_, passive) return { mod("GrantedPassive", "LIST", passive) } end,
|
||||
["transfiguration of body"] = { flag("TransfigurationOfBody") },
|
||||
["transfiguration of mind"] = { flag("TransfigurationOfMind") },
|
||||
["transfiguration of soul"] = { flag("TransfigurationOfSoul") },
|
||||
-- Skill-specific enchantment modifiers
|
||||
["(%d+)%% increased decoy totem life"] = function(num) return { mod("TotemLife", "INC", num, { type = "SkillName", skillName = "Decoy Totem" }) } end,
|
||||
["(%d+)%% increased ice spear critical strike chance in second form"] = function(num) return { mod("CritChance", "INC", num, { type = "SkillName", skillName = "Ice Spear" }, { type = "SkillPart", skillPart = 2 }) } end,
|
||||
|
||||
Reference in New Issue
Block a user