Skip to content

Commit 70416ec

Browse files
LocalIdentityLocalIdentity
andauthored
Add Support for Living Lightning Minion (#1377)
Adds support for showing the proper DPS of the minion by having the minion level be scaled by the triggered skills level Co-authored-by: LocalIdentity <[email protected]>
1 parent f7a6cc9 commit 70416ec

File tree

9 files changed

+67
-0
lines changed

9 files changed

+67
-0
lines changed

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)