aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeleqraph <nyrdeveloper@gmail.com>2022-08-02 21:17:05 +0200
committerGitHub <noreply@github.com>2022-08-02 21:17:05 +0200
commitf20135696b28775449a2e6e9d6ef4fd8b422a74f (patch)
treee0ba0a5c317762f15263747ec3724009a67419a3
parent87e2d53fc132d101aec1d08c51a95eb56a6cc56e (diff)
Scripts/Spells: Priest - Sins of the Many fixed (#28122)
-rw-r--r--sql/updates/world/master/2022_08_02_01_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp46
2 files changed, 48 insertions, 1 deletions
diff --git a/sql/updates/world/master/2022_08_02_01_world.sql b/sql/updates/world/master/2022_08_02_01_world.sql
new file mode 100644
index 00000000000..02e10aff69d
--- /dev/null
+++ b/sql/updates/world/master/2022_08_02_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_pri_sins_of_the_many';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(280391, 'spell_pri_sins_of_the_many');
diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp
index 4e583e7cf24..662cf91e84f 100644
--- a/src/server/scripts/Spells/spell_priest.cpp
+++ b/src/server/scripts/Spells/spell_priest.cpp
@@ -76,6 +76,7 @@ enum PriestSpells
SPELL_PRIEST_SHADOW_MEND_PERIODIC_DUMMY = 187464,
SPELL_PRIEST_SHIELD_DISCIPLINE_ENERGIZE = 47755,
SPELL_PRIEST_SHIELD_DISCIPLINE_PASSIVE = 197045,
+ SPELL_PRIEST_SINS_OF_THE_MANY = 280398,
SPELL_PRIEST_SMITE = 585,
SPELL_PRIEST_SPIRIT_OF_REDEMPTION = 27827,
SPELL_PRIEST_STRENGTH_OF_SOUL = 197535,
@@ -219,7 +220,9 @@ class spell_pri_atonement : public AuraScript
bool Validate(SpellInfo const* spellInfo) override
{
- return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT_HEAL }) && spellInfo->GetEffects().size() > EFFECT_1;
+ return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT_HEAL, SPELL_PRIEST_SINS_OF_THE_MANY })
+ && spellInfo->GetEffects().size() > EFFECT_1
+ && sSpellMgr->AssertSpellInfo(SPELL_PRIEST_SINS_OF_THE_MANY, DIFFICULTY_NONE)->GetEffects().size() > EFFECT_2;
}
bool CheckProc(ProcEventInfo& eventInfo)
@@ -257,11 +260,24 @@ public:
void AddAtonementTarget(ObjectGuid const& target)
{
_appliedAtonements.push_back(target);
+
+ UpdateSinsOfTheManyValue();
}
void RemoveAtonementTarget(ObjectGuid const& target)
{
_appliedAtonements.erase(std::remove(_appliedAtonements.begin(), _appliedAtonements.end(), target), _appliedAtonements.end());
+
+ UpdateSinsOfTheManyValue();
+ }
+
+ void UpdateSinsOfTheManyValue()
+ {
+ constexpr std::array<float, 11> damageByStack = { 12.0f, 12.0f, 10.0f, 8.0f, 7.0f, 6.0f, 5.0f, 5.0f, 4.0f, 4.0f, 3.0f };
+
+ for (SpellEffIndex effectIndex : { EFFECT_0, EFFECT_1, EFFECT_2 })
+ if (AuraEffect* sinOfTheMany = GetTarget()->GetAuraEffect(SPELL_PRIEST_SINS_OF_THE_MANY, effectIndex))
+ sinOfTheMany->ChangeAmount(damageByStack[std::min(_appliedAtonements.size(), damageByStack.size() - 1)]);
}
};
@@ -997,6 +1013,33 @@ private:
ObjectGuid _raptureTarget;
};
+// 280391 - Sins of the Many
+class spell_pri_sins_of_the_many : public AuraScript
+{
+ PrepareAuraScript(spell_pri_sins_of_the_many);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_PRIEST_SINS_OF_THE_MANY });
+ }
+
+ void HandleOnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_SINS_OF_THE_MANY, true);
+ }
+
+ void HandleOnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->RemoveAura(SPELL_PRIEST_SINS_OF_THE_MANY);
+ }
+
+ void Register() override
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_pri_sins_of_the_many::HandleOnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ OnEffectRemove += AuraEffectRemoveFn(spell_pri_sins_of_the_many::HandleOnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// 20711 - Spirit of Redemption
class spell_pri_spirit_of_redemption : public AuraScript
{
@@ -1351,6 +1394,7 @@ void AddSC_priest_spell_scripts()
RegisterSpellScript(spell_pri_prayer_of_mending_aura);
RegisterSpellScript(spell_pri_prayer_of_mending_jump);
RegisterSpellScript(spell_pri_rapture);
+ RegisterSpellScript(spell_pri_sins_of_the_many);
RegisterSpellScript(spell_pri_spirit_of_redemption);
RegisterSpellScript(spell_pri_shadow_mend);
RegisterSpellScript(spell_pri_shadow_mend_periodic_damage);