diff options
-rw-r--r-- | sql/updates/world/master/2025_05_25_05_world.sql | 7 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_dh.cpp | 29 |
2 files changed, 36 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_25_05_world.sql b/sql/updates/world/master/2025_05_25_05_world.sql new file mode 100644 index 00000000000..3333d51d4c6 --- /dev/null +++ b/sql/updates/world/master/2025_05_25_05_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_violent_transformation'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(452409, 'spell_dh_violent_transformation'); + +DELETE FROM `spell_proc` WHERE `SpellId` IN (452409); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(452409,0x00,107,0x10008000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0,0,0,0); -- Violent Transformation diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index edbe36f6ac8..8808655cd23 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -137,6 +137,7 @@ enum DemonHunterSpells SPELL_DH_ILLIDANS_GRASP = 205630, SPELL_DH_ILLIDANS_GRASP_DAMAGE = 208618, SPELL_DH_ILLIDANS_GRASP_JUMP_DEST = 208175, + SPELL_DH_IMMOLATION_AURA = 258920, SPELL_DH_INNER_DEMON_BUFF = 390145, SPELL_DH_INNER_DEMON_DAMAGE = 390137, SPELL_DH_INNER_DEMON_TALENT = 389693, @@ -186,6 +187,7 @@ enum DemonHunterSpells SPELL_DH_SIGIL_OF_CHAINS_SNARE = 204843, SPELL_DH_SIGIL_OF_CHAINS_TARGET_SELECT = 204834, SPELL_DH_SIGIL_OF_CHAINS_VISUAL = 208673, + SPELL_DH_SIGIL_OF_FLAME = 204596, SPELL_DH_SIGIL_OF_FLAME_AOE = 204598, SPELL_DH_SIGIL_OF_FLAME_FLAME_CRASH = 228973, SPELL_DH_SIGIL_OF_FLAME_VISUAL = 208710, @@ -208,6 +210,7 @@ enum DemonHunterSpells SPELL_DH_TACTICAL_RETREAT_TALENT = 389688, SPELL_DH_THROW_GLAIVE = 185123, SPELL_DH_UNCONTAINED_FEL = 209261, + SPELL_DH_VENGEANCE_DEMON_HUNTER = 212613, SPELL_DH_VENGEFUL_BONDS = 320635, SPELL_DH_VENGEFUL_RETREAT = 198813, SPELL_DH_VENGEFUL_RETREAT_TRIGGER = 198793, @@ -1655,6 +1658,31 @@ class spell_dh_vengeful_retreat_damage : public SpellScript } }; +// 452409 - Violent Transformation +class spell_dh_violent_transformation : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_SIGIL_OF_FLAME, SPELL_DH_VENGEANCE_DEMON_HUNTER, SPELL_DH_FEL_DEVASTATION, SPELL_DH_IMMOLATION_AURA }); + } + + void HandleOnProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const + { + Unit* target = GetTarget(); + target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_SIGIL_OF_FLAME, GetCastDifficulty())->ChargeCategoryId); + + if (target->HasAura(SPELL_DH_VENGEANCE_DEMON_HUNTER)) + target->GetSpellHistory()->ResetCooldown(SPELL_DH_FEL_DEVASTATION, true); + else + target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_IMMOLATION_AURA, GetCastDifficulty())->ChargeCategoryId); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_dh_violent_transformation::HandleOnProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + void AddSC_demon_hunter_spell_scripts() { RegisterSpellScript(spell_dh_army_unto_oneself); @@ -1699,6 +1727,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterSpellScript(spell_dh_tactical_retreat); RegisterSpellScript(spell_dh_unhindered_assault); RegisterSpellScript(spell_dh_vengeful_retreat_damage); + RegisterSpellScript(spell_dh_violent_transformation); RegisterAreaTriggerAI(areatrigger_dh_darkness); new GenericAreaTriggerEntityScript<areatrigger_dh_generic_sigil<SPELL_DH_SIGIL_OF_CHAINS_TARGET_SELECT, SPELL_DH_SIGIL_OF_CHAINS_VISUAL>>("areatrigger_dh_sigil_of_chains"); |