Skip to content

Commit eb9683b

Browse files
LocalIdentityLocalIdentity
andauthored
Add Support for Shrine buffs from The Gull and staff Rune craft (#8457)
* Add support for Shrine Buffs Adds support for Shrine buffs granted by The Gull and all the regular shrines grated by the Staff rune craft and the upcoming Legacy of Phrecia event * Formatting --------- Co-authored-by: LocalIdentity <localidentity2@gmail.com>
1 parent a2a9290 commit eb9683b

File tree

7 files changed

+181
-16
lines changed

7 files changed

+181
-16
lines changed

src/Data/Skills/other.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,9 @@ skills["TriggeredSummonLesserShrine"] = {
767767
spell = true,
768768
duration = true,
769769
},
770+
baseMods = {
771+
flag("Condition:CanHaveLesserShrines", { type = "GlobalEffect", effectType = "Buff", effectName = "Shrines" }),
772+
},
770773
constantStats = {
771774
{ "chance_to_cast_on_kill_%", 100 },
772775
{ "base_skill_effect_duration", 10000 },

src/Export/Skills/other.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ local skills, mod, flag, skill = ...
265265
#skill TriggeredSummonLesserShrine
266266
#flags spell duration
267267
fromItem = true,
268+
#baseMod flag("Condition:CanHaveLesserShrines", { type = "GlobalEffect", effectType = "Buff", effectName = "Shrines" })
268269
#mods
269270

270271
#noGem

src/Modules/CalcPerform.lua

Lines changed: 66 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -291,22 +291,81 @@ local function doActorAttribsConditions(env, actor)
291291
end
292292
-- Shrine Buffs: Must be done before life pool calculated for massive shrine
293293
local shrineEffectMod = 1 + modDB:Sum("INC", nil, "BuffEffectOnSelf", "ShrineBuffEffect") / 100
294-
if modDB:Flag(nil, "LesserMassiveShrine") then
295-
modDB:NewMod("Life", "INC", m_floor(20 * shrineEffectMod), "Lesser Massive Shrine")
296-
modDB:NewMod("AreaOfEffect", "INC", m_floor(20 * shrineEffectMod), "Lesser Massive Shrine")
294+
if modDB:Flag(nil, "AccelerationShrine") then
295+
modDB:NewMod("ActionSpeed", "INC", m_floor(50 * shrineEffectMod), "Acceleration Shrine")
296+
modDB:NewMod("ProjectileSpeed", "INC", m_floor(80 * shrineEffectMod), "Acceleration Shrine")
297297
end
298-
if modDB:Flag(nil, "LesserBrutalShrine") then
299-
modDB:NewMod("Damage", "INC", m_floor(20 * shrineEffectMod), "Lesser Brutal Shrine")
300-
modDB:NewMod("EnemyStunDuration", "INC", m_floor(20 * shrineEffectMod), "Lesser Brutal Shrine")
301-
modDB:NewMod("EnemyKnockbackChance", "INC", 100, "Lesser Brutal Shrine")
298+
if modDB:Flag(nil, "BrutalShrine") then
299+
modDB:NewMod("Damage", "INC", m_floor(50 * shrineEffectMod), "Brutal Shrine")
300+
modDB:NewMod("EnemyStunDuration", "INC", m_floor(30 * shrineEffectMod), "Brutal Shrine")
301+
modDB:NewMod("EnemyKnockbackChance", "INC", 100, "Brutal Shrine")
302302
end
303303
if modDB:Flag(nil, "DiamondShrine") then
304304
modDB:NewMod("CritChance", "OVERRIDE", 100, "Diamond Shrine")
305305
end
306+
if modDB:Flag(nil, "DivineShrine") then
307+
modDB:NewMod("DamageTaken", "MORE", -100, "Divine Shrine")
308+
end
309+
if modDB:Flag(nil, "EchoingShrine") then
310+
modDB:NewMod("Speed", "MORE", m_floor(100 * shrineEffectMod), "Echoing Shrine", ModFlag.Attack)
311+
modDB:NewMod("Speed", "MORE", m_floor(100 * shrineEffectMod), "Echoing Shrine", ModFlag.Cast)
312+
modDB:NewMod("RepeatCount", "BASE", m_floor(1 * shrineEffectMod), "Echoing Shrine")
313+
end
314+
if modDB:Flag(nil, "GloomShrine") then
315+
modDB:NewMod("NonChaosDamageGainAsChaos", "BASE", m_floor(10 * shrineEffectMod), "Gloom Shrine")
316+
end
317+
if modDB:Flag(nil, "ImpenetrableShrine") then
318+
modDB:NewMod("Armour", "INC", m_floor(100 * shrineEffectMod), "Impenetrable Shrine")
319+
modDB:NewMod("Evasion", "INC", m_floor(100 * shrineEffectMod), "Impenetrable Shrine")
320+
modDB:NewMod("EnergyShield", "INC", m_floor(100 * shrineEffectMod), "Impenetrable Shrine")
321+
end
306322
if modDB:Flag(nil, "MassiveShrine") then
307323
modDB:NewMod("Life", "INC", m_floor(40 * shrineEffectMod), "Massive Shrine")
308324
modDB:NewMod("AreaOfEffect", "INC", m_floor(40 * shrineEffectMod), "Massive Shrine")
309325
end
326+
if modDB:Flag(nil, "ReplenishingShrine") then
327+
modDB:NewMod("ManaRegenPercent", "BASE", 10 * shrineEffectMod, "Replenishing Shrine")
328+
modDB:NewMod("LifeRegenPercent", "BASE", 6.7 * shrineEffectMod, "Replenishing Shrine")
329+
end
330+
if modDB:Flag(nil, "ResistanceShrine") then
331+
modDB:NewMod("ElementalResist", "BASE", m_floor(50 * shrineEffectMod), "Resistance Shrine")
332+
modDB:NewMod("ElementalResistMax", "BASE", m_floor(10 * shrineEffectMod), "Resistance Shrine")
333+
end
334+
if modDB:Flag(nil, "ResonatingShrine") then
335+
modDB:NewMod("CritChance", "INC", m_floor(50 * shrineEffectMod), "Resonating Shrine", { type = "Multiplier", var = "PowerCharge" })
336+
modDB:NewMod("Speed", "INC", m_floor(4 * shrineEffectMod), "Resonating Shrine", ModFlag.Attack, { type = "Multiplier", var = "FrenzyCharge" })
337+
modDB:NewMod("Speed", "INC", m_floor(4 * shrineEffectMod), "Resonating Shrine", ModFlag.Cast, { type = "Multiplier", var = "FrenzyCharge" })
338+
modDB:NewMod("Damage", "MORE", m_floor(4 * shrineEffectMod), "Resonating Shrine", { type = "Multiplier", var = "FrenzyCharge" })
339+
modDB:NewMod("PhysicalDamageReduction", "BASE", m_floor(4 * shrineEffectMod), "Resonating Shrine", { type = "Multiplier", var = "EnduranceCharge" })
340+
modDB:NewMod("ElementalDamageReduction", "BASE", m_floor(4 * shrineEffectMod), "Resonating Shrine", { type = "Multiplier", var = "EnduranceCharge" })
341+
modDB:NewMod("Damage", "INC", m_floor(4 * shrineEffectMod), "Resonating Shrine", { type = "Multiplier", var = "PowerCharge" }, { type = "Multiplier", var = "FrenzyCharge" }, { type = "Multiplier", var = "EnduranceCharge" })
342+
end
343+
if modDB:Flag(nil, "LesserAccelerationShrine") and not modDB:Flag(nil, "AccelerationShrine") then
344+
modDB:NewMod("ActionSpeed", "INC", m_floor(10 * shrineEffectMod), "Lesser Acceleration Shrine")
345+
modDB:NewMod("ProjectileSpeed", "INC", m_floor(30 * shrineEffectMod), "Lesser Acceleration Shrine")
346+
end
347+
if modDB:Flag(nil, "LesserBrutalShrine") then
348+
modDB:NewMod("Damage", "INC", m_floor(20 * shrineEffectMod), "Lesser Brutal Shrine")
349+
modDB:NewMod("EnemyStunDuration", "INC", m_floor(20 * shrineEffectMod), "Lesser Brutal Shrine")
350+
modDB:NewMod("EnemyKnockbackChance", "INC", 100, "Lesser Brutal Shrine")
351+
end
352+
if modDB:Flag(nil, "LesserImpenetrableShrine") then
353+
modDB:NewMod("Armour", "INC", m_floor(50 * shrineEffectMod), "Lesser Impenetrable Shrine")
354+
modDB:NewMod("Evasion", "INC", m_floor(50 * shrineEffectMod), "Lesser Impenetrable Shrine")
355+
modDB:NewMod("EnergyShield", "INC", m_floor(50 * shrineEffectMod), "Lesser Impenetrable Shrine")
356+
end
357+
if modDB:Flag(nil, "LesserMassiveShrine") then
358+
modDB:NewMod("Life", "INC", m_floor(20 * shrineEffectMod), "Lesser Massive Shrine")
359+
modDB:NewMod("AreaOfEffect", "INC", m_floor(20 * shrineEffectMod), "Lesser Massive Shrine")
360+
end
361+
if modDB:Flag(nil, "LesserReplenishingShrine") then
362+
modDB:NewMod("ManaRegenPercent", "BASE", 3.3 * shrineEffectMod, "Lesser Replenishing Shrine")
363+
modDB:NewMod("LifeRegenPercent", "BASE", 3.3 * shrineEffectMod, "Lesser Replenishing Shrine")
364+
end
365+
if modDB:Flag(nil, "LesserResistanceShrine") then
366+
modDB:NewMod("ElementalResist", "BASE", m_floor(25 * shrineEffectMod), "Lesser Resistance Shrine")
367+
modDB:NewMod("ElementalResistMax", "BASE", m_floor(2 * shrineEffectMod), "Lesser Resistance Shrine")
368+
end
310369
end
311370
if env.mode_effective then
312371
if env.player.mainSkill.skillModList:Sum("BASE", env.player.mainSkill.skillCfg, "FireExposureChance") > 0 or modDB:Sum("BASE", nil, "FireExposureChance") > 0 then

src/Modules/CalcSetup.lua

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,23 @@ function calcs.initModDB(env, modDB)
7575
modDB:NewMod("ChaoticMight", "FLAG", true, "Base", { type = "Condition", var = "ChaoticMight" })
7676
modDB:NewMod("Tailwind", "FLAG", true, "Base", { type = "Condition", var = "Tailwind" })
7777
modDB:NewMod("Adrenaline", "FLAG", true, "Base", { type = "Condition", var = "Adrenaline" })
78-
modDB:NewMod("LesserMassiveShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserMassiveShrine" })
79-
modDB:NewMod("LesserBrutalShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserBrutalShrine" })
78+
modDB:NewMod("AccelerationShrine", "FLAG", true, "Base", { type = "Condition", var = "AccelerationShrine" })
79+
modDB:NewMod("BrutalShrine", "FLAG", true, "Base", { type = "Condition", var = "BrutalShrine" })
8080
modDB:NewMod("DiamondShrine", "FLAG", true, "Base", { type = "Condition", var = "DiamondShrine" })
81+
modDB:NewMod("DivineShrine", "FLAG", true, "Base", { type = "Condition", var = "DivineShrine" })
82+
modDB:NewMod("EchoingShrine", "FLAG", true, "Base", { type = "Condition", var = "EchoingShrine" })
83+
modDB:NewMod("GloomShrine", "FLAG", true, "Base", { type = "Condition", var = "GloomShrine" })
84+
modDB:NewMod("ImpenetrableShrine", "FLAG", true, "Base", { type = "Condition", var = "ImpenetrableShrine" })
8185
modDB:NewMod("MassiveShrine", "FLAG", true, "Base", { type = "Condition", var = "MassiveShrine" })
86+
modDB:NewMod("ReplenishingShrine", "FLAG", true, "Base", { type = "Condition", var = "ReplenishingShrine" })
87+
modDB:NewMod("ResistanceShrine", "FLAG", true, "Base", { type = "Condition", var = "ResistanceShrine" })
88+
modDB:NewMod("ResonatingShrine", "FLAG", true, "Base", { type = "Condition", var = "ResonatingShrine" })
89+
modDB:NewMod("LesserAccelerationShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserAccelerationShrine" }, { type = "Condition", var = "AccelerationShrine", neg = true })
90+
modDB:NewMod("LesserBrutalShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserBrutalShrine" }, { type = "Condition", var = "BrutalShrine", neg = true })
91+
modDB:NewMod("LesserImpenetrableShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserImpenetrableShrine" }, { type = "Condition", var = "ImpenetrableShrine", neg = true })
92+
modDB:NewMod("LesserMassiveShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserMassiveShrine" }, { type = "Condition", var = "MassiveShrine", neg = true })
93+
modDB:NewMod("LesserReplenishingShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserReplenishingShrine" }, { type = "Condition", var = "ReplenishingShrine", neg = true })
94+
modDB:NewMod("LesserResistanceShrine", "FLAG", true, "Base", { type = "Condition", var = "LesserResistanceShrine" }, { type = "Condition", var = "ResistanceShrine", neg = true })
8295
modDB:NewMod("AlchemistsGenius", "FLAG", true, "Base", { type = "Condition", var = "AlchemistsGenius" })
8396
modDB:NewMod("LuckyHits", "FLAG", true, "Base", { type = "Condition", var = "LuckyHits" })
8497
modDB:NewMod("Convergence", "FLAG", true, "Base", { type = "Condition", var = "Convergence" })

src/Modules/Calcs.lua

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -699,18 +699,57 @@ function calcs.buildOutput(build, mode)
699699
if env.modDB:Flag(nil, "HerEmbrace") then
700700
t_insert(combatList, "Her Embrace")
701701
end
702-
if env.modDB:Flag(nil, "LesserMassiveShrine") then
703-
t_insert(combatList, "Lesser Massive Shrine")
702+
if env.modDB:Flag(nil, "AccelerationShrine") then
703+
t_insert(combatList, "Acceleration Shrine")
704704
end
705-
if env.modDB:Flag(nil, "LesserBrutalShrine") then
706-
t_insert(combatList, "Lesser Brutal Shrine")
705+
if env.modDB:Flag(nil, "BrutalShrine") then
706+
t_insert(combatList, "Brutal Shrine")
707707
end
708708
if env.modDB:Flag(nil, "DiamondShrine") then
709709
t_insert(combatList, "Diamond Shrine")
710710
end
711+
if env.modDB:Flag(nil, "DivineShrine") then
712+
t_insert(combatList, "Divine Shrine")
713+
end
714+
if env.modDB:Flag(nil, "EchoingShrine") then
715+
t_insert(combatList, "Echoing Shrine")
716+
end
717+
if env.modDB:Flag(nil, "GloomShrine") then
718+
t_insert(combatList, "Gloom Shrine")
719+
end
720+
if env.modDB:Flag(nil, "ImpenetrableShrine") then
721+
t_insert(combatList, "Impenetrable Shrine")
722+
end
711723
if env.modDB:Flag(nil, "MassiveShrine") then
712724
t_insert(combatList, "Massive Shrine")
713725
end
726+
if env.modDB:Flag(nil, "ReplenishingShrine") then
727+
t_insert(combatList, "Replenishing Shrine")
728+
end
729+
if env.modDB:Flag(nil, "ResistanceShrine") then
730+
t_insert(combatList, "Resistance Shrine")
731+
end
732+
if env.modDB:Flag(nil, "ResonatingShrine") then
733+
t_insert(combatList, "Resonating Shrine")
734+
end
735+
if env.modDB:Flag(nil, "LesserAccelerationShrine") then
736+
t_insert(combatList, "Lesser Acceleration Shrine")
737+
end
738+
if env.modDB:Flag(nil, "LesserBrutalShrine") then
739+
t_insert(combatList, "Lesser Brutal Shrine")
740+
end
741+
if env.modDB:Flag(nil, "LesserImpenetrableShrine") then
742+
t_insert(combatList, "Lesser Impenetrable Shrine")
743+
end
744+
if env.modDB:Flag(nil, "LesserMassiveShrine") then
745+
t_insert(combatList, "Lesser Massive Shrine")
746+
end
747+
if env.modDB:Flag(nil, "LesserReplenishingShrine") then
748+
t_insert(combatList, "Lesser Replenishing Shrine")
749+
end
750+
if env.modDB:Flag(nil, "LesserResistanceShrine") then
751+
t_insert(combatList, "Lesser Resistance Shrine")
752+
end
714753
for name in pairs(env.buffs) do
715754
t_insert(buffList, name)
716755
end

0 commit comments

Comments
 (0)