diff options
-rw-r--r-- | sql/updates/world/master/2024_11_09_00_world.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 45 |
2 files changed, 49 insertions, 0 deletions
diff --git a/sql/updates/world/master/2024_11_09_00_world.sql b/sql/updates/world/master/2024_11_09_00_world.sql new file mode 100644 index 00000000000..4560734b87f --- /dev/null +++ b/sql/updates/world/master/2024_11_09_00_world.sql @@ -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'); diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 187eb72ddb0..8fb1e04cc2c 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -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); |