aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_11_09_00_world.sql4
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp45
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);