aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2025-05-25 16:54:56 +0200
committerGitHub <noreply@github.com>2025-05-25 16:54:56 +0200
commit762122466ced37397989c3a45fbafe56189bccb7 (patch)
treedaa418ce6326ca2a046b8f055af31dc1608c0d83 /src
parentc9101337f6bc32bf6b21d72280aba4a4ac29453c (diff)
Scripts/Spells: Implement rogue talent Cloaked in Shadows (#30974)
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp40
1 files changed, 40 insertions, 0 deletions
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);