Skip to content

Commit 81cde66

Browse files
author
LocalIdentity
committed
Add Support for Living Lightning Minion
Adds support for showing the proper DPS of the minion by having the minion level be scaled by the triggered skills level
1 parent f7a6cc9 commit 81cde66

9 files changed

Lines changed: 67 additions & 0 deletions

File tree

src/Data/Minions.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ minions["UnearthBoneConstruct"] = {
542542
attackTime = 1.06,
543543
attackRange = 12,
544544
accuracy = 1,
545+
limit = "ActiveUnearthBoneConstructLimit",
545546
baseMovementSpeed = 37,
546547
spectreReservation = 50,
547548
companionReservation = 30,
@@ -700,6 +701,7 @@ minions["LivingLightning"] = {
700701
attackTime = 1,
701702
attackRange = 20,
702703
accuracy = 1,
704+
limit = "ActiveLivingLightningLimit",
703705
baseMovementSpeed = 97,
704706
spectreReservation = 50,
705707
companionReservation = 30,

src/Data/SkillStatMap.lua

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,9 @@ return {
284284
["display_skill_minions_level_is_corpse_level"] = {
285285
skill("minionLevelIsEnemyLevel", true),
286286
},
287+
["display_minion_level_from_triggering_skill_level"] = {
288+
skill("minionLevelIsTriggeredSkillLevel", true),
289+
},
287290
["active_skill_minion_added_damage_+%_final"] = {
288291
skill("minionDamageEffectiveness", nil),
289292
},
@@ -2196,6 +2199,9 @@ return {
21962199
["active_skill_minion_bleeding_damage_+%_final"] = {
21972200
mod("MinionModifier", "LIST", { mod = mod("Damage", "MORE", nil, 0, KeywordFlag.Bleed) }),
21982201
},
2202+
["minion_base_physical_damage_%_to_convert_to_lightning"] = {
2203+
mod("MinionModifier", "LIST", { mod = mod("PhysicalDamageConvertToLightning", "BASE", nil) }),
2204+
},
21992205
["minion_critical_strike_chance_+%"] = {
22002206
mod("MinionModifier", "LIST", { mod = mod("CritChance", "INC", nil) }),
22012207
},
@@ -2275,6 +2281,15 @@ return {
22752281
["base_number_of_arbalists"] = {
22762282
mod("ActiveArbalistLimit", "BASE", nil),
22772283
},
2284+
["base_number_of_living_lightning_allowed"] = {
2285+
mod("ActiveLivingLightningLimit", "BASE", nil),
2286+
},
2287+
["base_number_of_skeletal_constructs_allowed"] = {
2288+
mod("ActiveUnearthBoneConstructLimit", "BASE", nil),
2289+
},
2290+
["maximum_hatching_elementals_allowed"] = {
2291+
mod("ActiveSkitteringStoneLimit", "BASE", nil),
2292+
},
22782293
["base_number_of_champions_of_light_allowed"] = {
22792294
mod("ActiveSentinelOfPurityLimit", "BASE", nil),
22802295
},

src/Data/Skills/minion.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,11 +1172,20 @@ skills["LivingLightningZap"] = {
11721172
label = "Zap",
11731173
incrementalEffectiveness = 0.054999999701977,
11741174
statDescriptionScope = "skill_stat_descriptions",
1175+
statMap = {
1176+
["living_lightning_damage_+%_final_per_additional_hit"] = {
1177+
mod("Damage", "MORE", nil),
1178+
div = 3/2, --Average over 3 hits
1179+
},
1180+
},
11751181
baseFlags = {
11761182
attack = true,
11771183
melee = true,
11781184
chaining = true,
11791185
},
1186+
baseMods = {
1187+
skill("timeOverride", 0.001, { type = "Multiplier", var = "LivingLightningAttackTime" }),
1188+
},
11801189
constantStats = {
11811190
{ "number_of_chains", 3 },
11821191
{ "living_lightning_damage_+%_final_per_additional_hit", -30 },

src/Data/Skills/sup_int.lua

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3593,6 +3593,14 @@ skills["TriggeredLivingLightningPlayer"] = {
35933593
label = "Living Lightning",
35943594
incrementalEffectiveness = 0.054999999701977,
35953595
statDescriptionScope = "triggered_living_lightning",
3596+
statMap = {
3597+
["living_lightning_maximum_number_of_attacks"] = {
3598+
mod("MinionModifier", "LIST", { mod = mod("RepeatCount", "BASE", nil), }),
3599+
},
3600+
["living_lightning_beam_attack_time_ms"] = {
3601+
mod("MinionModifier", "LIST", { mod = mod("Multiplier:LivingLightningAttackTime", "BASE", nil) }),
3602+
},
3603+
},
35963604
baseFlags = {
35973605
minion = true,
35983606
},
@@ -3669,6 +3677,12 @@ skills["TriggeredLivingLightningPlayerTwo"] = {
36693677
mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "PerStat", stat = "Dex", actor = "parent", div = 10 }) }),
36703678
div = 10,
36713679
},
3680+
["living_lightning_maximum_number_of_attacks"] = {
3681+
mod("MinionModifier", "LIST", { mod = mod("RepeatCount", "BASE", nil), }),
3682+
},
3683+
["living_lightning_beam_attack_time_ms"] = {
3684+
mod("MinionModifier", "LIST", { mod = mod("Multiplier:LivingLightningAttackTime", "BASE", nil) }),
3685+
},
36723686
},
36733687
baseFlags = {
36743688
minion = true,

src/Export/Minions/Minions.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ local minions, mod = ...
6161
#emit
6262

6363
#monster Metadata/Monsters/SkeletalConstruct/BoneConstructPlayerSummoned UnearthBoneConstruct
64+
#limit ActiveUnearthBoneConstructLimit
6465
#emit
6566

6667
#monster Metadata/Monsters/RhoaPlayerSummoned/RhoaPlayerSummoned SummonedRhoa
@@ -73,6 +74,7 @@ local minions, mod = ...
7374
#emit
7475

7576
#monster Metadata/Monsters/Monsters/LivingLightningPlayerSummoned LivingLightning
77+
#limit ActiveLivingLightningLimit
7678
#emit
7779

7880
#monster Metadata/Monsters/Daemon/ArtilleryPlayer/SummonArtilleryDaemon TacticianMinion

src/Export/Skills/minion.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,13 @@ skills["MinionInstability"] = {
188188
#skill LivingLightningZap Zap
189189
#set LivingLightningZap
190190
#flags attack melee chaining
191+
statMap = {
192+
["living_lightning_damage_+%_final_per_additional_hit"] = {
193+
mod("Damage", "MORE", nil),
194+
div = 3/2, --Average over 3 hits
195+
},
196+
},
197+
#baseMod skill("timeOverride", 0.001, { type = "Multiplier", var = "LivingLightningAttackTime" })
191198
#mods
192199
#skillEnd
193200

src/Export/Skills/sup_int.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -783,6 +783,14 @@ statMap = {
783783
#skill TriggeredLivingLightningPlayer
784784
#set TriggeredLivingLightningPlayer
785785
#flags minion
786+
statMap = {
787+
["living_lightning_maximum_number_of_attacks"] = {
788+
mod("MinionModifier", "LIST", { mod = mod("RepeatCount", "BASE", nil), }),
789+
},
790+
["living_lightning_beam_attack_time_ms"] = {
791+
mod("MinionModifier", "LIST", { mod = mod("Multiplier:LivingLightningAttackTime", "BASE", nil) }),
792+
},
793+
},
786794
#mods
787795
#skillEnd
788796

@@ -804,6 +812,12 @@ statMap = {
804812
mod("MinionModifier", "LIST", { mod = mod("Speed", "INC", nil, ModFlag.Attack, 0, { type = "PerStat", stat = "Dex", actor = "parent", div = 10 }) }),
805813
div = 10,
806814
},
815+
["living_lightning_maximum_number_of_attacks"] = {
816+
mod("MinionModifier", "LIST", { mod = mod("RepeatCount", "BASE", nil), }),
817+
},
818+
["living_lightning_beam_attack_time_ms"] = {
819+
mod("MinionModifier", "LIST", { mod = mod("Multiplier:LivingLightningAttackTime", "BASE", nil) }),
820+
},
807821
},
808822
#mods
809823
#skillEnd

src/Modules/CalcActiveSkill.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ function calcs.createActiveSkill(activeEffect, supportList, env, actor, socketGr
161161
-- Track how many active skills are supported by this support effect
162162
if supportEffect.isSupporting and activeEffect.srcInstance then
163163
supportEffect.isSupporting[activeEffect.srcInstance] = true
164+
supportEffect.activeSkillLevel = activeEffect.srcInstance.level
164165
end
165166
if supportEffect.grantedEffect.addFlags and not summonSkill then
166167
-- Support skill adds flags to supported skills (eg. Remote Mine adds 'mine')
@@ -789,6 +790,7 @@ function calcs.buildActiveSkillModList(env, activeSkill)
789790
minion.type = minionType
790791
minion.minionData = env.data.minions[minionType]
791792
minion.level = activeSkill.skillData.minionLevelIsEnemyLevel and env.enemyLevel or
793+
activeSkill.skillData.minionLevelIsTriggeredSkillLevel and activeEffect.srcInstance.supportEffect and activeEffect.srcInstance.supportEffect.activeSkillLevel and data.minionLevelTable[activeEffect.srcInstance.supportEffect.activeSkillLevel] or
792794
activeSkill.skillData.minionLevelIsPlayerLevel and (m_min(env.build and env.build.characterLevel or activeSkill.skillData.minionLevel or activeEffect.grantedEffectLevel.levelRequirement, activeSkill.skillData.minionLevelIsPlayerLevel)) or
793795
activeSkill.skillData.minionLevel or data.minionLevelTable[activeSkill.activeEffect.level] or 1
794796
-- fix minion level between 1 and 100

src/Modules/CalcOffence.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,6 +2840,8 @@ function calcs.offence(env, actor, activeSkill)
28402840
if skillData.hitTimeOverride and not skillData.triggeredOnDeath then
28412841
output.HitTime = skillData.hitTimeOverride
28422842
output.HitSpeed = 1 / output.HitTime
2843+
elseif skillData.timeOverride and not skillData.triggeredOnDeath then
2844+
output.Time = skillData.timeOverride
28432845
elseif skillData.hitTimeMultiplier and output.Time and not skillData.triggeredOnDeath then
28442846
output.HitTime = output.Time * skillData.hitTimeMultiplier
28452847
if output.Cooldown and skillData.triggered then

0 commit comments

Comments
 (0)