Skip to content

Commit 91e6fb2

Browse files
committed
1 parent 2108651 commit 91e6fb2

File tree

4 files changed

+127
-0
lines changed

4 files changed

+127
-0
lines changed

src/Data/Minions.lua.rej

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
diff a/src/Data/Minions.lua b/src/Data/Minions.lua (rejected hunks)
2+
@@ -1724,6 +1724,7 @@ minions["LivingLightningMinion"] = {
3+
4+
minions["PenanceMarkPhantasm"] = {
5+
name = "Shackled Phantasm",
6+
+ hostile = true,
7+
monsterTags = { "caster", "fire_affinity", "ghost", "ghost_armour", "ghost_blood", "is_unarmed", "medium_movement", "slashing_weapon", "undead", },
8+
life = 1.3,
9+
fireResist = 40,

src/Data/Skills/other.lua.rej

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
diff a/src/Data/Skills/other.lua b/src/Data/Skills/other.lua (rejected hunks)
2+
@@ -2405,6 +2405,7 @@ skills["PenanceMark"] = {
3+
},
4+
baseMods = {
5+
skill("debuff", true),
6+
+ skill("minionLevelIsEnemyLevel", true),
7+
},
8+
constantStats = {
9+
{ "base_skill_effect_duration", 3000 },
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
diff a/src/Modules/CalcActiveSkill.lua b/src/Modules/CalcActiveSkill.lua (rejected hunks)
2+
@@ -662,10 +662,16 @@ function calcs.buildActiveSkillModList(env, activeSkill)
3+
local minion = { }
4+
activeSkill.minion = minion
5+
skillFlags.haveMinion = true
6+
- minion.parent = env.player
7+
- minion.enemy = env.enemy
8+
minion.type = minionType
9+
minion.minionData = env.data.minions[minionType]
10+
+ minion.hostile = minion.minionData and minion.minionData.hostile or false
11+
+ if minion.hostile then
12+
+ minion.parent = env.enemy
13+
+ minion.enemy = env.player
14+
+ else
15+
+ minion.parent = env.player
16+
+ minion.enemy = env.enemy
17+
+ end
18+
minion.level = activeSkill.skillData.minionLevelIsEnemyLevel and env.enemyLevel or
19+
activeSkill.skillData.minionLevelIsPlayerLevel and (m_min(env.build and env.build.characterLevel or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement, activeSkill.skillData.minionLevelIsPlayerLevel)) or
20+
minionSupportLevel[minion.type] or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement
21+
@@ -673,9 +679,14 @@ function calcs.buildActiveSkillModList(env, activeSkill)
22+
minion.level = m_min(m_max(minion.level,1),100)
23+
minion.itemList = { }
24+
minion.uses = activeGrantedEffect.minionUses
25+
- 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
26+
+ if minion.minionData.hostile then
27+
+ minion.lifeTable = env.data.monsterLifeTable
28+
+ else
29+
+ 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
30+
+ end
31+
local attackTime = minion.minionData.attackTime
32+
- local damage = (isSpectre and env.data.monsterDamageTable[minion.level] or env.data.monsterAllyDamageTable[minion.level]) * minion.minionData.damage
33+
+ local damageTable = (isSpectre or minion.minionData.hostile) and env.data.monsterDamageTable or env.data.monsterAllyDamageTable
34+
+ local damage = damageTable[minion.level] * minion.minionData.damage
35+
if not minion.minionData.baseDamageIgnoresAttackSpeed then -- minions with this flag do not factor attack time into their base damage
36+
damage = damage * attackTime
37+
end

src/Modules/CalcPerform.lua.rej

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
diff a/src/Modules/CalcPerform.lua b/src/Modules/CalcPerform.lua (rejected hunks)
2+
@@ -1088,9 +1088,18 @@ function calcs.perform(env, skipEHP)
3+
env.minion.output = output.Minion
4+
env.minion.modDB.multipliers["Level"] = env.minion.level
5+
calcs.initModDB(env, env.minion.modDB)
6+
- env.minion.modDB:NewMod("Life", "BASE", m_floor(env.minion.lifeTable[env.minion.level] * env.minion.minionData.life), "Base")
7+
+ local baseLife = env.minion.lifeTable[env.minion.level] * env.minion.minionData.life
8+
+ if env.minion.hostile then
9+
+ baseLife = baseLife * (env.data.mapLevelLifeMult[env.enemyLevel] or 1)
10+
+ end
11+
+ env.minion.modDB:NewMod("Life", "BASE", m_floor(baseLife), "Base")
12+
if env.minion.minionData.energyShield then
13+
- env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(env.data.monsterAllyLifeTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield), "Base")
14+
+ local esTable = env.minion.hostile and env.minion.lifeTable or env.data.monsterAllyLifeTable
15+
+ local baseES = esTable[env.minion.level] * env.minion.minionData.life * env.minion.minionData.energyShield
16+
+ if env.minion.hostile then
17+
+ baseES = baseES * (env.data.mapLevelLifeMult[env.enemyLevel] or 1)
18+
+ end
19+
+ env.minion.modDB:NewMod("EnergyShield", "BASE", m_floor(baseES), "Base")
20+
end
21+
--Armour formula is math.floor((10 + 2 * level) * 1.067 ^ level)
22+
env.minion.modDB:NewMod("Armour", "BASE", round(env.data.monsterArmourTable[env.minion.level] * (env.minion.minionData.armour or 1)), "Base")
23+
@@ -1713,14 +1722,25 @@ function calcs.perform(env, skipEHP)
24+
doActorAttribsConditions(env, env.player)
25+
doActorLifeMana(env.player)
26+
if env.minion then
27+
- for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do
28+
- if not value.type or env.minion.type == value.type then
29+
- env.minion.modDB:AddMod(value.mod)
30+
+ if env.minion.hostile then
31+
+ for _, value in ipairs(env.modDB:Tabulate(nil, nil, "EnemyModifier")) do
32+
+ local mod = value.value and value.value.mod
33+
+ if mod then
34+
+ local copy = copyTable(mod, true)
35+
+ env.minion.modDB:AddMod(modLib.setSource(copy, mod.source or value.mod.source))
36+
+ end
37+
end
38+
end
39+
- for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do
40+
- if env.spec.tree.keystoneMap[name] then
41+
- env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList)
42+
+ if not env.minion.hostile then
43+
+ for _, value in ipairs(env.player.mainSkill.skillModList:List(env.player.mainSkill.skillCfg, "MinionModifier")) do
44+
+ if not value.type or env.minion.type == value.type then
45+
+ env.minion.modDB:AddMod(value.mod)
46+
+ end
47+
+ end
48+
+ for _, name in ipairs(env.minion.modDB:List(nil, "Keystone")) do
49+
+ if env.spec.tree.keystoneMap[name] then
50+
+ env.minion.modDB:AddList(env.spec.tree.keystoneMap[name].modList)
51+
+ end
52+
end
53+
end
54+
doActorAttribsConditions(env, env.minion)
55+
@@ -2045,7 +2065,7 @@ function calcs.perform(env, skipEHP)
56+
buffs[buff.name].notBuff = true
57+
end
58+
end
59+
- if env.minion and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then
60+
+ if env.minion and not env.minion.hostile and (buff.applyMinions or buff.applyAllies or skillModList:Flag(nil, "BuffAppliesToAllies")) then
61+
activeSkill.minionBuffSkill = true
62+
env.minion.modDB.conditions["AffectedBy"..buff.name:gsub(" ","")] = true
63+
local srcList = new("ModList")
64+
@@ -2190,7 +2210,7 @@ function calcs.perform(env, skipEHP)
65+
end
66+
end
67+
if not (modDB:Flag(nil, "SelfAurasCannotAffectAllies") or modDB:Flag(nil, "SelfAurasOnlyAffectYou") or modDB:Flag(nil, "SelfAuraSkillsCannotAffectAllies") ) then
68+
- if env.minion then
69+
+ if env.minion and (not env.minion.hostile or modDB:Flag(nil, "AurasAffectEnemies")) then
70+
local inc = skillModList:Sum("INC", skillCfg, "AuraEffect", "BuffEffect") + env.minion.modDB:Sum("INC", skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf")
71+
local more = skillModList:More(skillCfg, "AuraEffect", "BuffEffect") * env.minion.modDB:More(skillCfg, "BuffEffectOnSelf", "AuraEffectOnSelf")
72+
local mult = (1 + inc / 100) * more

0 commit comments

Comments
 (0)