Scripts/Spells: Implement Rogue Airborne Irritant talent (#30375)

This commit is contained in:
Aqua Deus
2024-11-09 15:21:18 +01:00
committed by GitHub
parent 7d36db7ede
commit c9b2823d6e
2 changed files with 49 additions and 0 deletions
@@ -0,0 +1,4 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_rog_airborne_irritant','spell_rog_airborne_irritant_target_selection');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(2094, 'spell_rog_airborne_irritant'),
(427773, 'spell_rog_airborne_irritant_target_selection');
+45
View File
@@ -37,6 +37,7 @@
enum RogueSpells
{
SPELL_ROGUE_ADRENALINE_RUSH = 13750,
SPELL_ROGUE_AIRBORNE_IRRITANT = 200733,
SPELL_ROGUE_AMPLIFYING_POISON = 381664,
SPELL_ROGUE_AMPLIFYING_POISON_DEBUFF = 383414,
SPELL_ROGUE_ATROPHIC_POISON = 381637,
@@ -46,6 +47,7 @@ enum RogueSpells
SPELL_ROGUE_BLACKJACK = 394119,
SPELL_ROGUE_BLADE_FLURRY = 13877,
SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK = 22482,
SPELL_ROGUE_BLIND_AREA = 427773,
SPELL_ROGUE_BROADSIDE = 193356,
SPELL_ROGUE_BURIED_TREASURE = 199600,
SPELL_ROGUE_CHEAT_DEATH_DUMMY = 31231,
@@ -134,6 +136,47 @@ bool IsFinishingMove(Spell const* spell)
return GetFinishingMoveCPCost(spell).has_value();
}
// Called by 2094 - Blind
class spell_rog_airborne_irritant : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_ROGUE_AIRBORNE_IRRITANT, SPELL_ROGUE_BLIND_AREA });
}
bool Load() override
{
return GetCaster()->HasAura(SPELL_ROGUE_AIRBORNE_IRRITANT);
}
void HandleHit(SpellEffIndex /*effIndex*/) const
{
GetCaster()->CastSpell(GetHitUnit(), SPELL_ROGUE_BLIND_AREA, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.TriggeringSpell = GetSpell()
});
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_rog_airborne_irritant::HandleHit, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
}
};
// 427773 - Blind
class spell_rog_airborne_irritant_target_selection : public SpellScript
{
void FilterTargets(std::list<WorldObject*>& targets) const
{
targets.remove(GetExplTargetWorldObject());
}
void Register() override
{
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_rog_airborne_irritant_target_selection::FilterTargets, EFFECT_ALL, TARGET_UNIT_DEST_AREA_ENEMY);
}
};
// 53 - Backstab
class spell_rog_backstab : public SpellScript
{
@@ -1250,6 +1293,8 @@ class spell_rog_venomous_wounds : public AuraScript
void AddSC_rogue_spell_scripts()
{
RegisterSpellScript(spell_rog_airborne_irritant);
RegisterSpellScript(spell_rog_airborne_irritant_target_selection);
RegisterSpellScript(spell_rog_backstab);
RegisterSpellScript(spell_rog_blackjack);
RegisterSpellScript(spell_rog_blade_flurry);