Scripts/Spells: Implement rogue talent Cloaked in Shadows (#30974)

This commit is contained in:
Aqua Deus
2025-05-25 16:54:56 +02:00
committed by GitHub
parent c9101337f6
commit 762122466c
2 changed files with 43 additions and 0 deletions

View File

@@ -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');

View File

@@ -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);