diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 144 |
1 files changed, 103 insertions, 41 deletions
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 4773b7a584b..a64ccf2a7af 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -58,7 +58,6 @@ enum RogueSpells SPELL_ROGUE_CRIPPLING_POISON_DEBUFF = 3409, SPELL_ROGUE_DEADLY_POISON = 2823, SPELL_ROGUE_DEADLY_POISON_DEBUFF = 2818, - SPELL_ROGUE_DEATH_FROM_ABOVE = 152150, SPELL_ROGUE_GRAND_MELEE = 193358, SPELL_ROGUE_GRAPPLING_HOOK = 195457, SPELL_ROGUE_IMPROVED_GARROTE_AFTER_STEALTH = 392401, @@ -72,13 +71,12 @@ enum RogueSpells SPELL_ROGUE_KILLING_SPREE_WEAPON_DMG = 57841, SPELL_ROGUE_KILLING_SPREE_DMG_BUFF = 61851, SPELL_ROGUE_MARKED_FOR_DEATH = 137619, - SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT = 31665, - SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE = 31223, SPELL_ROGUE_MAIN_GAUCHE = 86392, SPELL_ROGUE_NUMBING_POISON = 5761, SPELL_ROGUE_NUMBING_POISON_DEBUFF = 5760, SPELL_ROGUE_PREMEDITATION_PASSIVE = 343160, SPELL_ROGUE_PREMEDITATION_AURA = 343173, + SPELL_ROGUE_PREMEDITATION_ENERGIZE = 343170, SPELL_ROGUE_PREY_ON_THE_WEAK_TALENT = 131511, SPELL_ROGUE_PREY_ON_THE_WEAK = 255909, SPELL_ROGUE_RUTHLESS_PRECISION = 193357, @@ -790,6 +788,55 @@ class spell_rog_poisoned_knife : public SpellScript } }; +// Called by 1784 - Stealth +class spell_rog_premeditation : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROGUE_PREMEDITATION_PASSIVE, SPELL_ROGUE_PREMEDITATION_AURA }); + } + + bool Load() override + { + return GetCaster()->HasAura(SPELL_ROGUE_PREMEDITATION_PASSIVE); + } + + void HandleEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_PREMEDITATION_AURA, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_rog_premeditation::HandleEffectApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 343173 - Premeditation (proc) +class spell_rog_premeditation_proc : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROGUE_PREMEDITATION_ENERGIZE }); + } + + void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) + { + GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_PREMEDITATION_ENERGIZE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + OnEffectProc += AuraEffectProcFn(spell_rog_premeditation_proc::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + } +}; + // 131511 - Prey on the Weak // Called by Cheap Shot - 1833 and Kidney Shot - 408 class spell_rog_prey_on_the_weak : public AuraScript @@ -816,7 +863,7 @@ class spell_rog_prey_on_the_weak : public AuraScript class spell_rog_restless_blades : public AuraScript { static uint32 constexpr Spells[] = { SPELL_ROGUE_ADRENALINE_RUSH, SPELL_ROGUE_BETWEEN_THE_EYES, SPELL_ROGUE_SPRINT, - SPELL_ROGUE_GRAPPLING_HOOK, SPELL_ROGUE_VANISH, SPELL_ROGUE_KILLING_SPREE, SPELL_ROGUE_MARKED_FOR_DEATH, SPELL_ROGUE_DEATH_FROM_ABOVE }; + SPELL_ROGUE_GRAPPLING_HOOK, SPELL_ROGUE_VANISH, SPELL_ROGUE_KILLING_SPREE, SPELL_ROGUE_MARKED_FOR_DEATH }; bool Validate(SpellInfo const* /*spellInfo*/) override { @@ -997,6 +1044,39 @@ private: bool _hasPremeditationAura = false; }; +// Called by 1784 - Stealth and 185313 - Shadow Dance +class spell_rog_shadow_focus : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROGUE_SHADOW_FOCUS, SPELL_ROGUE_SHADOW_FOCUS_EFFECT }); + } + + bool Load() override + { + return GetCaster()->HasAura(SPELL_ROGUE_SHADOW_FOCUS); + } + + void HandleEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_ROGUE_SHADOW_FOCUS_EFFECT, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_ROGUE_SHADOW_FOCUS_EFFECT); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_rog_shadow_focus::HandleEffectApply, EFFECT_1, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_rog_shadow_focus::HandleEffectRemove, EFFECT_1, SPELL_AURA_ANY, AURA_EFFECT_HANDLE_REAL); + } +}; + // 193315 - Sinister Strike class spell_rog_sinister_strike : public SpellScript { @@ -1060,63 +1140,42 @@ class spell_rog_stealth : public AuraScript { return ValidateSpellInfo( { - SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE, - SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, SPELL_ROGUE_SANCTUARY, - SPELL_ROGUE_SHADOW_FOCUS, - SPELL_ROGUE_SHADOW_FOCUS_EFFECT, SPELL_ROGUE_STEALTH_STEALTH_AURA, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA }); } - void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + void HandleEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - // Master of Subtlety - if (target->HasAura(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE)) - target->CastSpell(target, SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, TRIGGERED_FULL_MASK); - - // Shadow Focus - if (target->HasAura(SPELL_ROGUE_SHADOW_FOCUS)) - target->CastSpell(target, SPELL_ROGUE_SHADOW_FOCUS_EFFECT, TRIGGERED_FULL_MASK); - - // Premeditation - if (target->HasAura(SPELL_ROGUE_PREMEDITATION_PASSIVE)) - target->CastSpell(target, SPELL_ROGUE_PREMEDITATION_AURA, true); - - target->CastSpell(target, SPELL_ROGUE_SANCTUARY, TRIGGERED_FULL_MASK); - target->CastSpell(target, SPELL_ROGUE_STEALTH_STEALTH_AURA, TRIGGERED_FULL_MASK); - target->CastSpell(target, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA, TRIGGERED_FULL_MASK); + target->CastSpell(target, SPELL_ROGUE_SANCTUARY, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + target->CastSpell(target, SPELL_ROGUE_STEALTH_STEALTH_AURA, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + target->CastSpell(target, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); } void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - // Master of Subtlety - if (AuraEffect* masterOfSubtletyPassive = GetTarget()->GetAuraEffect(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE, EFFECT_0)) - { - if (Aura* masterOfSubtletyAura = GetTarget()->GetAura(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT)) - { - masterOfSubtletyAura->SetMaxDuration(masterOfSubtletyPassive->GetAmount()); - masterOfSubtletyAura->RefreshDuration(); - } - } - - // Premeditation - target->RemoveAura(SPELL_ROGUE_PREMEDITATION_AURA); - - target->RemoveAurasDueToSpell(SPELL_ROGUE_SHADOW_FOCUS_EFFECT); target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_STEALTH_AURA); target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA); } void Register() override { - AfterEffectApply += AuraEffectApplyFn(spell_rog_stealth::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - AfterEffectRemove += AuraEffectRemoveFn(spell_rog_stealth::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectApply += AuraEffectApplyFn(spell_rog_stealth::HandleEffectApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_rog_stealth::HandleEffectRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; @@ -1299,7 +1358,7 @@ class spell_rog_vanish_aura : public AuraScript } }; -// 79134 - Venomous Wounds - SPELL_ROGUE_VENOMOUS_WOUNDS +// 79134 - Venomous Wounds class spell_rog_venomous_wounds : public AuraScript { void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) @@ -1336,12 +1395,15 @@ void AddSC_rogue_spell_scripts() RegisterSpellScript(spell_rog_mastery_main_gauche); RegisterSpellScript(spell_rog_pickpocket); RegisterSpellScript(spell_rog_poisoned_knife); + RegisterSpellScript(spell_rog_premeditation); + RegisterSpellScript(spell_rog_premeditation_proc); RegisterSpellScript(spell_rog_prey_on_the_weak); RegisterSpellScript(spell_rog_restless_blades); RegisterSpellScript(spell_rog_roll_the_bones); RegisterSpellScript(spell_rog_rupture); RegisterSpellScript(spell_rog_ruthlessness); RegisterSpellScript(spell_rog_shadowstrike); + RegisterSpellScript(spell_rog_shadow_focus); RegisterSpellScript(spell_rog_sinister_strike); RegisterSpellScript(spell_rog_soothing_darkness); RegisterSpellScript(spell_rog_stealth); |