diff options
-rw-r--r-- | sql/updates/world/master/2025_05_25_01_world.sql | 3 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 40 |
2 files changed, 43 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_25_01_world.sql b/sql/updates/world/master/2025_05_25_01_world.sql new file mode 100644 index 00000000000..78e0ff84d1e --- /dev/null +++ b/sql/updates/world/master/2025_05_25_01_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_rog_cloaked_in_shadows'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1856, 'spell_rog_cloaked_in_shadows'); diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index c5055305595..30ae85fba72 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -51,6 +51,8 @@ enum RogueSpells SPELL_ROGUE_CHEAT_DEATH_DUMMY = 31231, SPELL_ROGUE_CHEATED_DEATH = 45181, SPELL_ROGUE_CHEATING_DEATH = 45182, + SPELL_ROGUE_CLOAKED_IN_SHADOWS_TALENT = 382515, + SPELL_ROGUE_CLOAKED_IN_SHADOWS_ABSORB = 386165, SPELL_ROGUE_CRIPPLING_POISON = 3408, SPELL_ROGUE_CRIPPLING_POISON_DEBUFF = 3409, SPELL_ROGUE_DEADLY_POISON = 2823, @@ -321,6 +323,43 @@ class spell_rog_cheat_death : public AuraScript } }; +// 382515 - Cloaked in Shadows (attached to 1856 - Vanish) +class spell_rog_cloaked_in_shadows : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROGUE_CLOAKED_IN_SHADOWS_ABSORB }) + && ValidateSpellEffect({ { SPELL_ROGUE_CLOAKED_IN_SHADOWS_TALENT, EFFECT_0 } }); + } + + bool Load() override + { + return GetCaster()->HasAuraEffect(SPELL_ROGUE_CLOAKED_IN_SHADOWS_TALENT, EFFECT_0); + } + + void HandleCloakedInShadows() const + { + Unit* caster = GetCaster(); + + AuraEffect const* cloakedInShadows = caster->GetAuraEffect(SPELL_ROGUE_CLOAKED_IN_SHADOWS_TALENT, EFFECT_0); + if (!cloakedInShadows) + return; + + int32 amount = caster->CountPctFromMaxHealth(cloakedInShadows->GetAmount()); + + caster->CastSpell(caster, SPELL_ROGUE_CLOAKED_IN_SHADOWS_ABSORB, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell(), + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, amount } } + }); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_rog_cloaked_in_shadows::HandleCloakedInShadows); + } +}; + // 2818 - Deadly Poison class spell_rog_deadly_poison : public SpellScript { @@ -1398,6 +1437,7 @@ void AddSC_rogue_spell_scripts() RegisterSpellScript(spell_rog_blackjack); RegisterSpellScript(spell_rog_blade_flurry); RegisterSpellScript(spell_rog_cheat_death); + RegisterSpellScript(spell_rog_cloaked_in_shadows); RegisterSpellScript(spell_rog_deadly_poison); RegisterSpellScript(spell_rog_deepening_shadows); RegisterSpellScript(spell_rog_envenom); |