diff options
-rw-r--r-- | sql/updates/world/master/2023_04_23_02_world.sql | 27 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_azerite.cpp | 33 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_item.cpp | 22 |
3 files changed, 82 insertions, 0 deletions
diff --git a/sql/updates/world/master/2023_04_23_02_world.sql b/sql/updates/world/master/2023_04_23_02_world.sql new file mode 100644 index 00000000000..81410b573fd --- /dev/null +++ b/sql/updates/world/master/2023_04_23_02_world.sql @@ -0,0 +1,27 @@ +DELETE FROM `spell_proc` WHERE `SpellId` IN (288880,288882,289391,292650,292824,292975,292991,295157,295175,295391,295430,296141,296207,296963,298564,299388,299906,299939,299940); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(288880,0x00,107,0x00100000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Hour of Reaping +(288882,0x00,107,0x00000000,0x00000004,0x00000000,0x00000000,0x0,0x0,0x1,0x1,0x403,0x0,0x0,0,0,0,0), -- Hour of Reaping +(289391,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Buster Shot +(292650,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x3,0x0,0x0,0,0,0,0), -- Custody of the Deep +(292824,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Petrified Willow +(292975,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Blackhand Doomcutter +(292991,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Bleakblade of Shahram +(295157,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Storm Nimbus +(295175,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Spiteful Binding +(295391,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Oblivion Spear +(295430,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x3,0x2,0x403,0x0,0x0,0,0,0,0), -- Ephemeral Vigor +(296141,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Knowledge of Mortality +(296207,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Seed of Eonar +(296963,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Conductive Ink +(298564,0x00,11,0x00000000,0x00000000,0x00002000,0x00000000,0x0,0x0,0x4,0x2,0x0,0x0,0x0,0,0,0,0), -- Might of the Worldsplitter +(299388,0x00,11,0x00000003,0x80000000,0x00000000,0x00000001,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Galvanizing Nimbus +(299906,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x1,0x2,0x403,0x0,0x0,0,0,0,0), -- Fusion Burn +(299939,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0), -- Seed of Eonar +(299940,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x2,0x2,0x403,0x0,0x0,0,0,0,0); -- Seed of Eonar + + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_item_hour_of_reaping','spell_item_grips_of_forsaken_sanity'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(288882,'spell_item_hour_of_reaping'), +(295175,'spell_item_grips_of_forsaken_sanity'); diff --git a/src/server/scripts/Spells/spell_azerite.cpp b/src/server/scripts/Spells/spell_azerite.cpp index f3c44809adc..add0174d0b5 100644 --- a/src/server/scripts/Spells/spell_azerite.cpp +++ b/src/server/scripts/Spells/spell_azerite.cpp @@ -481,6 +481,38 @@ class spell_item_echoing_blades_damage : public SpellScript } }; +// 288882 - Hour of Reaping +class spell_item_hour_of_reaping : public AuraScript +{ + PrepareAuraScript(spell_item_hour_of_reaping); + + enum + { + SPELL_DH_SOUL_BARRIER = 263648 + }; + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_SOUL_BARRIER }); + } + + bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*eventInfo*/) + { + return GetStackAmount() == GetAura()->CalcMaxStackAmount(); + } + + void TriggerSoulBarrier(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_DH_SOUL_BARRIER, aurEff); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_hour_of_reaping::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); + AfterEffectProc += AuraEffectProcFn(spell_item_hour_of_reaping::TriggerSoulBarrier, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 277253 - Heart of Azeroth class spell_item_heart_of_azeroth : public AuraScript { @@ -533,6 +565,7 @@ void AddSC_azerite_item_spell_scripts() RegisterSpellScript(spell_item_bastion_of_might); RegisterSpellScript(spell_item_echoing_blades); RegisterSpellScript(spell_item_echoing_blades_damage); + RegisterSpellScript(spell_item_hour_of_reaping); RegisterSpellScript(spell_item_heart_of_azeroth); } diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 5c03f59f492..1dca1784067 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -4727,6 +4727,27 @@ class spell_item_seeping_scourgewing_aoe_check : public SpellScript } }; +// 295175 - Spiteful Binding +class spell_item_grips_of_forsaken_sanity : public AuraScript +{ + PrepareAuraScript(spell_item_grips_of_forsaken_sanity); + + bool Validate(SpellInfo const* spellInfo) override + { + return spellInfo->GetEffects().size() > EFFECT_1; + } + + bool CheckHealth(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) + { + return eventInfo.GetActor()->GetHealthPct() >= float(GetEffectInfo(EFFECT_1).CalcValue()); + } + + void Register() override + { + DoCheckEffectProc += AuraCheckEffectProcFn(spell_item_grips_of_forsaken_sanity::CheckHealth, EFFECT_0, SPELL_AURA_PROC_TRIGGER_SPELL); + } +}; + void AddSC_item_spell_scripts() { // 23074 Arcanite Dragonling @@ -4875,4 +4896,5 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_highfathers_machination); RegisterSpellScript(spell_item_seeping_scourgewing); RegisterSpellScript(spell_item_seeping_scourgewing_aoe_check); + RegisterSpellScript(spell_item_grips_of_forsaken_sanity); } |