From 91e6fb2b7050654418011e2c56cc71bf75a9c39f Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Mon, 15 Dec 2025 13:46:52 +0000 Subject: [PATCH 1/2] Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/9302 --- src/Data/Minions.lua.rej | 9 ++++ src/Data/Skills/other.lua.rej | 9 ++++ src/Modules/CalcActiveSkill.lua.rej | 37 +++++++++++++++ src/Modules/CalcPerform.lua.rej | 72 +++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 src/Data/Minions.lua.rej create mode 100644 src/Data/Skills/other.lua.rej create mode 100644 src/Modules/CalcActiveSkill.lua.rej create mode 100644 src/Modules/CalcPerform.lua.rej diff --git a/src/Data/Minions.lua.rej b/src/Data/Minions.lua.rej new file mode 100644 index 000000000..268797519 --- /dev/null +++ b/src/Data/Minions.lua.rej @@ -0,0 +1,9 @@ +diff a/src/Data/Minions.lua b/src/Data/Minions.lua (rejected hunks) +@@ -1724,6 +1724,7 @@ minions["LivingLightningMinion"] = { + + minions["PenanceMarkPhantasm"] = { + name = "Shackled Phantasm", ++ hostile = true, + monsterTags = { "caster", "fire_affinity", "ghost", "ghost_armour", "ghost_blood", "is_unarmed", "medium_movement", "slashing_weapon", "undead", }, + life = 1.3, + fireResist = 40, diff --git a/src/Data/Skills/other.lua.rej b/src/Data/Skills/other.lua.rej new file mode 100644 index 000000000..3bdf0b314 --- /dev/null +++ b/src/Data/Skills/other.lua.rej @@ -0,0 +1,9 @@ +diff a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua (rejected hunks) +@@ -2405,6 +2405,7 @@ skills["PenanceMark"] = { + }, + baseMods = { + skill("debuff", true), ++ skill("minionLevelIsEnemyLevel", true), + }, + constantStats = { + { "base_skill_effect_duration", 3000 }, diff --git a/src/Modules/CalcActiveSkill.lua.rej b/src/Modules/CalcActiveSkill.lua.rej new file mode 100644 index 000000000..c8c5f5528 --- /dev/null +++ b/src/Modules/CalcActiveSkill.lua.rej @@ -0,0 +1,37 @@ +diff a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua (rejected hunks) +@@ -662,10 +662,16 @@ function calcs.buildActiveSkillModList(env, activeSkill) + local minion = { } + activeSkill.minion = minion + skillFlags.haveMinion = true +- minion.parent = env.player +- minion.enemy = env.enemy + minion.type = minionType + minion.minionData = env.data.minions[minionType] ++ minion.hostile = minion.minionData and minion.minionData.hostile or false ++ if minion.hostile then ++ minion.parent = env.enemy ++ minion.enemy = env.player ++ else ++ minion.parent = env.player ++ minion.enemy = env.enemy ++ end + minion.level = activeSkill.skillData.minionLevelIsEnemyLevel and env.enemyLevel or + activeSkill.skillData.minionLevelIsPlayerLevel and (m_min(env.build and env.build.characterLevel or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement, activeSkill.skillData.minionLevelIsPlayerLevel)) or + minionSupportLevel[minion.type] or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement +@@ -673,9 +679,14 @@ function calcs.buildActiveSkillModList(env, activeSkill) + minion.level = m_min(m_max(minion.level,1),100) + minion.itemList = { } + minion.uses = activeGrantedEffect.minionUses +- minion.lifeTable = (minion.minionData.lifeScaling == "AltLife1" and env.data.monsterLifeTable2) or (minion.minionData.lifeScaling == "AltLife2" and env.data.monsterLifeTable3) or (isSpectre and env.data.monsterLifeTable) or env.data.monsterAllyLifeTable ++ if minion.minionData.hostile then ++ minion.lifeTable = env.data.monsterLifeTable ++ else ++ minion.lifeTable = (minion.minionData.lifeScaling == "AltLife1" and env.data.monsterLifeTable2) or (minion.minionData.lifeScaling == "AltLife2" and env.data.monsterLifeTable3) or (isSpectre and env.data.monsterLifeTable) or env.data.monsterAllyLifeTable ++ end + local attackTime = minion.minionData.attackTime +- local damage = (isSpectre and env.data.monsterDamageTable[minion.level] or env.data.monsterAllyDamageTable[minion.level]) * minion.minionData.damage ++ local damageTable = (isSpectre or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable ++ local damage = damageTable[minion.level] * minion.minionData.damage + if not minion.minionData.baseDamageIgnoresAttackSpeed then -- minions with this flag do not factor attack time into their base damage + damage = damage * attackTime + end diff --git a/src/Modules/CalcPerform.lua.rej b/src/Modules/CalcPerform.lua.rej new file mode 100644 index 000000000..6a5dba3b3 --- /dev/null +++ b/src/Modules/CalcPerform.lua.rej @@ -0,0 +1,72 @@ +diff a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua (rejected hunks) +@@ -1088,9 +1088,18 @@ function calcs.perform(env, skipEHP) + env.minion.output = output.Minion + env.minion.modDB.multipliers["Level"] = env.minion.level + calcs.initModDB(env, env.minion.modDB) +- env.minion.modDB:NewMod("Life", "BASE", m_floor(env.minion.lifeTable[env.minion.level] * env.minion.minionData.life), "Base") ++ local baseLife = env.minion.lifeTable[env.minion.level] * env.minion.minionData.life ++ if env.minion.hostile then ++ baseLife = baseLife * (env.data.mapLevelLifeMult[env.enemyLevel] or 1) ++ end ++ env.minion.modDB:NewMod("Life", "BASE", m_floor(baseLife), "Base") + if env.minion.minionData.energyShield then +- env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(env.data.monsterAllyLifeTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield), "Base") ++ local esTable = env.minion.hostile and env.minion.lifeTable or env.data.monsterAllyLifeTable ++ local baseES = esTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield ++ if env.minion.hostile then ++ baseES = baseES * (env.data.mapLevelLifeMult[env.enemyLevel] or 1) ++ end ++ env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(baseES), "Base") + end + --Armour formula is math.floor((10 + 2 * level) * 1.067 ^ level) + env.minion.modDB:NewMod("Armour", "BASE", round(env.data.monsterArmourTable[env.minion.level] * (env.minion.minionData.armour or 1)), "Base") +@@ -1713,14 +1722,25 @@ function calcs.perform(env, skipEHP) + doActorAttribsConditions(env, env.player) + doActorLifeMana(env.player) + if env.minion then +- for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do +- if not value.type or env.minion.type == value.type then +- env.minion.modDB:AddMod(value.mod) ++ if env.minion.hostile then ++ for _, value in ipairs(env.modDB:Tabulate(nil, nil, "EnemyModifier")) do ++ local mod = value.value and value.value.mod ++ if mod then ++ local copy = copyTable(mod, true) ++ env.minion.modDB:AddMod(modLib.setSource(copy, mod.source or value.mod.source)) ++ end + end + end +- for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do +- if env.spec.tree.keystoneMap[name] then +- env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) ++ if not env.minion.hostile then ++ for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do ++ if not value.type or env.minion.type == value.type then ++ env.minion.modDB:AddMod(value.mod) ++ end ++ end ++ for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do ++ if env.spec.tree.keystoneMap[name] then ++ env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) ++ end + end + end + doActorAttribsConditions(env, env.minion) +@@ -2045,7 +2065,7 @@ function calcs.perform(env, skipEHP) + buffs[buff.name].notBuff = true + end + end +- if env.minion and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then ++ if env.minion and not env.minion.hostile and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then + activeSkill.minionBuffSkill = true + env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true + local srcList = new("ModList") +@@ -2190,7 +2210,7 @@ function calcs.perform(env, skipEHP) + end + end + if not (modDB:Flag(nil, "SelfAurasCannotAffectAllies") or modDB:Flag(nil, "SelfAurasOnlyAffectYou") or modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies") ) then +- if env.minion then ++ if env.minion and (not env.minion.hostile or modDB:Flag(nil, "AurasAffectEnemies")) then + local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") + local mult = (1 + inc / 100) * more From 8196a7e4111b418269f0d2a5d8265fb3118fae2b Mon Sep 17 00:00:00 2001 From: LocalIdentity Date: Tue, 16 Dec 2025 03:35:45 +1100 Subject: [PATCH 2/2] Fix merge conflicts --- src/Data/Minions.lua.rej | 9 ---- src/Data/Skills/other.lua.rej | 9 ---- src/Modules/CalcActiveSkill.lua | 18 ++++++-- src/Modules/CalcActiveSkill.lua.rej | 37 --------------- src/Modules/CalcPerform.lua | 34 ++++++++++---- src/Modules/CalcPerform.lua.rej | 72 ----------------------------- 6 files changed, 39 insertions(+), 140 deletions(-) delete mode 100644 src/Data/Minions.lua.rej delete mode 100644 src/Data/Skills/other.lua.rej delete mode 100644 src/Modules/CalcActiveSkill.lua.rej delete mode 100644 src/Modules/CalcPerform.lua.rej diff --git a/src/Data/Minions.lua.rej b/src/Data/Minions.lua.rej deleted file mode 100644 index 268797519..000000000 --- a/src/Data/Minions.lua.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/src/Data/Minions.lua b/src/Data/Minions.lua (rejected hunks) -@@ -1724,6 +1724,7 @@ minions["LivingLightningMinion"] = { - - minions["PenanceMarkPhantasm"] = { - name = "Shackled Phantasm", -+ hostile = true, - monsterTags = { "caster", "fire_affinity", "ghost", "ghost_armour", "ghost_blood", "is_unarmed", "medium_movement", "slashing_weapon", "undead", }, - life = 1.3, - fireResist = 40, diff --git a/src/Data/Skills/other.lua.rej b/src/Data/Skills/other.lua.rej deleted file mode 100644 index 3bdf0b314..000000000 --- a/src/Data/Skills/other.lua.rej +++ /dev/null @@ -1,9 +0,0 @@ -diff a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua (rejected hunks) -@@ -2405,6 +2405,7 @@ skills["PenanceMark"] = { - }, - baseMods = { - skill("debuff", true), -+ skill("minionLevelIsEnemyLevel", true), - }, - constantStats = { - { "base_skill_effect_duration", 3000 }, diff --git a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua index 9576d4300..dd999c834 100644 --- a/src/Modules/CalcActiveSkill.lua +++ b/src/Modules/CalcActiveSkill.lua @@ -786,10 +786,16 @@ function calcs.buildActiveSkillModList(env, activeSkill) local minion = { } activeSkill.minion = minion skillFlags.haveMinion = true - minion.parent = env.player - minion.enemy = env.enemy minion.type = minionType minion.minionData = env.data.minions[minionType] + minion.hostile = minion.minionData and minion.minionData.hostile or false + if minion.hostile then + minion.parent = env.enemy + minion.enemy = env.player + else + minion.parent = env.player + minion.enemy = env.enemy + end minion.level = activeSkill.skillData.minionLevelIsEnemyLevel and env.enemyLevel or activeSkill.skillData.minionLevelIsTriggeredSkillLevel and activeEffect.srcInstance.supportEffect and activeEffect.srcInstance.supportEffect.activeSkillLevel and data.minionLevelTable[activeEffect.srcInstance.supportEffect.activeSkillLevel] or activeSkill.skillData.minionLevelIsPlayerLevel and (m_min(env.build and env.build.characterLevel or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement, activeSkill.skillData.minionLevelIsPlayerLevel)) or @@ -799,8 +805,14 @@ function calcs.buildActiveSkillModList(env, activeSkill) minion.itemList = { } minion.uses = activeGrantedEffect.minionUses minion.lifeTable = env.data.monsterAllyLifeTable + if minion.minionData.hostile then + minion.lifeTable = env.data.monsterLifeTable + else + minion.lifeTable = env.data.monsterAllyLifeTable + end local attackTime = minion.minionData.attackTime - local damage = (isSpectre and env.data.monsterDamageTable[minion.level] or env.data.monsterAllyDamageTable[minion.level]) * minion.minionData.damage + local damageTable = (isSpectre or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable + local damage = damageTable[minion.level] * minion.minionData.damage if not minion.minionData.baseDamageIgnoresAttackSpeed then -- minions with this flag do not factor attack time into their base damage damage = damage * attackTime end diff --git a/src/Modules/CalcActiveSkill.lua.rej b/src/Modules/CalcActiveSkill.lua.rej deleted file mode 100644 index c8c5f5528..000000000 --- a/src/Modules/CalcActiveSkill.lua.rej +++ /dev/null @@ -1,37 +0,0 @@ -diff a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua (rejected hunks) -@@ -662,10 +662,16 @@ function calcs.buildActiveSkillModList(env, activeSkill) - local minion = { } - activeSkill.minion = minion - skillFlags.haveMinion = true -- minion.parent = env.player -- minion.enemy = env.enemy - minion.type = minionType - minion.minionData = env.data.minions[minionType] -+ minion.hostile = minion.minionData and minion.minionData.hostile or false -+ if minion.hostile then -+ minion.parent = env.enemy -+ minion.enemy = env.player -+ else -+ minion.parent = env.player -+ minion.enemy = env.enemy -+ end - minion.level = activeSkill.skillData.minionLevelIsEnemyLevel and env.enemyLevel or - activeSkill.skillData.minionLevelIsPlayerLevel and (m_min(env.build and env.build.characterLevel or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement, activeSkill.skillData.minionLevelIsPlayerLevel)) or - minionSupportLevel[minion.type] or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement -@@ -673,9 +679,14 @@ function calcs.buildActiveSkillModList(env, activeSkill) - minion.level = m_min(m_max(minion.level,1),100) - minion.itemList = { } - minion.uses = activeGrantedEffect.minionUses -- minion.lifeTable = (minion.minionData.lifeScaling == "AltLife1" and env.data.monsterLifeTable2) or (minion.minionData.lifeScaling == "AltLife2" and env.data.monsterLifeTable3) or (isSpectre and env.data.monsterLifeTable) or env.data.monsterAllyLifeTable -+ if minion.minionData.hostile then -+ minion.lifeTable = env.data.monsterLifeTable -+ else -+ minion.lifeTable = (minion.minionData.lifeScaling == "AltLife1" and env.data.monsterLifeTable2) or (minion.minionData.lifeScaling == "AltLife2" and env.data.monsterLifeTable3) or (isSpectre and env.data.monsterLifeTable) or env.data.monsterAllyLifeTable -+ end - local attackTime = minion.minionData.attackTime -- local damage = (isSpectre and env.data.monsterDamageTable[minion.level] or env.data.monsterAllyDamageTable[minion.level]) * minion.minionData.damage -+ local damageTable = (isSpectre or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable -+ local damage = damageTable[minion.level] * minion.minionData.damage - if not minion.minionData.baseDamageIgnoresAttackSpeed then -- minions with this flag do not factor attack time into their base damage - damage = damage * attackTime - end diff --git a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua index c42b5082d..d025600a4 100644 --- a/src/Modules/CalcPerform.lua +++ b/src/Modules/CalcPerform.lua @@ -906,7 +906,11 @@ function calcs.perform(env, skipEHP) env.minion.output = output.Minion env.minion.modDB.multipliers["Level"] = env.minion.level calcs.initModDB(env, env.minion.modDB) - env.minion.modDB:NewMod("Life", "BASE", m_floor(env.minion.lifeTable[env.minion.level] * env.minion.minionData.life), "Base") + local baseLife = env.minion.lifeTable[env.minion.level] * env.minion.minionData.life + if env.minion.hostile then + baseLife = baseLife * (env.data.mapLevelLifeMult[env.enemyLevel] or 1) + end + env.minion.modDB:NewMod("Life", "BASE", m_floor(baseLife), "Base") if env.minion.minionData.energyShield then env.minion.modDB:NewMod("LifeConvertToEnergyShield", "BASE", env.minion.minionData.energyShield * 100, "Base") end @@ -1491,14 +1495,24 @@ function calcs.perform(env, skipEHP) -- Calculate attributes doActorAttribsConditions(env, env.player) if env.minion then - for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do - if not value.type or env.minion.type == value.type then - env.minion.modDB:AddMod(value.mod) + if env.minion.hostile then + for _, value in ipairs(env.modDB:Tabulate(nil, nil, "EnemyModifier")) do + local mod = value.value and value.value.mod + if mod then + local copy = copyTable(mod, true) + env.minion.modDB:AddMod(modLib.setSource(copy, mod.source or value.mod.source)) + end end - end - for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do - if env.spec.tree.keystoneMap[name] then - env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) + else + for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do + if not value.type or env.minion.type == value.type then + env.minion.modDB:AddMod(value.mod) + end + end + for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do + if env.spec.tree.keystoneMap[name] then + env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) + end end end doActorAttribsConditions(env, env.minion) @@ -1754,7 +1768,7 @@ function calcs.perform(env, skipEHP) buffs[buff.name].notBuff = true end end - if env.minion and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies") and not env.minion.modDB:Flag(nil, "HiddenMonster")) then + if env.minion and not env.minion.hostile and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies") and not env.minion.modDB:Flag(nil, "HiddenMonster")) then activeSkill.minionBuffSkill = true env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true local srcList = new("ModList") @@ -1896,7 +1910,7 @@ function calcs.perform(env, skipEHP) end end if not (modDB:Flag(nil, "SelfAurasCannotAffectAllies") or modDB:Flag(nil, "SelfAurasOnlyAffectYou") or modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies")) then - if env.minion and not env.minion.modDB:Flag(nil, "HiddenMonster") then + if env.minion and (not env.minion.hostile or modDB:Flag(nil, "AurasAffectEnemies")) and not env.minion.modDB:Flag(nil, "HiddenMonster") then local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") * calcLib.mod(skillModList, skillCfg, "Magnitude") local mult = (1 + inc / 100) * more diff --git a/src/Modules/CalcPerform.lua.rej b/src/Modules/CalcPerform.lua.rej deleted file mode 100644 index 6a5dba3b3..000000000 --- a/src/Modules/CalcPerform.lua.rej +++ /dev/null @@ -1,72 +0,0 @@ -diff a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua (rejected hunks) -@@ -1088,9 +1088,18 @@ function calcs.perform(env, skipEHP) - env.minion.output = output.Minion - env.minion.modDB.multipliers["Level"] = env.minion.level - calcs.initModDB(env, env.minion.modDB) -- env.minion.modDB:NewMod("Life", "BASE", m_floor(env.minion.lifeTable[env.minion.level] * env.minion.minionData.life), "Base") -+ local baseLife = env.minion.lifeTable[env.minion.level] * env.minion.minionData.life -+ if env.minion.hostile then -+ baseLife = baseLife * (env.data.mapLevelLifeMult[env.enemyLevel] or 1) -+ end -+ env.minion.modDB:NewMod("Life", "BASE", m_floor(baseLife), "Base") - if env.minion.minionData.energyShield then -- env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(env.data.monsterAllyLifeTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield), "Base") -+ local esTable = env.minion.hostile and env.minion.lifeTable or env.data.monsterAllyLifeTable -+ local baseES = esTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield -+ if env.minion.hostile then -+ baseES = baseES * (env.data.mapLevelLifeMult[env.enemyLevel] or 1) -+ end -+ env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(baseES), "Base") - end - --Armour formula is math.floor((10 + 2 * level) * 1.067 ^ level) - env.minion.modDB:NewMod("Armour", "BASE", round(env.data.monsterArmourTable[env.minion.level] * (env.minion.minionData.armour or 1)), "Base") -@@ -1713,14 +1722,25 @@ function calcs.perform(env, skipEHP) - doActorAttribsConditions(env, env.player) - doActorLifeMana(env.player) - if env.minion then -- for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do -- if not value.type or env.minion.type == value.type then -- env.minion.modDB:AddMod(value.mod) -+ if env.minion.hostile then -+ for _, value in ipairs(env.modDB:Tabulate(nil, nil, "EnemyModifier")) do -+ local mod = value.value and value.value.mod -+ if mod then -+ local copy = copyTable(mod, true) -+ env.minion.modDB:AddMod(modLib.setSource(copy, mod.source or value.mod.source)) -+ end - end - end -- for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do -- if env.spec.tree.keystoneMap[name] then -- env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) -+ if not env.minion.hostile then -+ for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do -+ if not value.type or env.minion.type == value.type then -+ env.minion.modDB:AddMod(value.mod) -+ end -+ end -+ for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do -+ if env.spec.tree.keystoneMap[name] then -+ env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList) -+ end - end - end - doActorAttribsConditions(env, env.minion) -@@ -2045,7 +2065,7 @@ function calcs.perform(env, skipEHP) - buffs[buff.name].notBuff = true - end - end -- if env.minion and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then -+ if env.minion and not env.minion.hostile and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then - activeSkill.minionBuffSkill = true - env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true - local srcList = new("ModList") -@@ -2190,7 +2210,7 @@ function calcs.perform(env, skipEHP) - end - end - if not (modDB:Flag(nil, "SelfAurasCannotAffectAllies") or modDB:Flag(nil, "SelfAurasOnlyAffectYou") or modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies") ) then -- if env.minion then -+ if env.minion and (not env.minion.hostile or modDB:Flag(nil, "AurasAffectEnemies")) then - local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") - local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf") - local mult = (1 + inc / 100) * more