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:
Jack Lockwood
2019-09-17 19:41:09 +10:00
parent 13a0606da6
commit 8fa8f3d10f
23 changed files with 482 additions and 57 deletions

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View File

@@ -398,7 +398,7 @@ function calcs.buildOutput(build, mode)
output.Minion.CurseList = output.CurseList
end
--infoDump(env)
infoDump(env)
end
return env

View File

@@ -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)

View File

@@ -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,