diff options
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 32d99002211..bd8a72ee760 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -46,8 +46,9 @@ enum RogueSpells SPELL_ROGUE_KILLING_SPREE_DMG_BUFF = 61851, SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT = 31665, SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE = 31223, - SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC = 31666, SPELL_ROGUE_SANCTUARY = 98877, + SPELL_ROGUE_SHADOW_FOCUS = 108209, + SPELL_ROGUE_SHADOW_FOCUS_EFFECT = 112942, SPELL_ROGUE_STEALTH = 1784, SPELL_ROGUE_STEALTH_STEALTH_AURA = 158185, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA = 158188, @@ -619,8 +620,9 @@ class spell_rog_stealth : public SpellScriptLoader { SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE, SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, - SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC, SPELL_ROGUE_SANCTUARY, + SPELL_ROGUE_SHADOW_FOCUS, + SPELL_ROGUE_SHADOW_FOCUS_EFFECT, SPELL_ROGUE_STEALTH_STEALTH_AURA, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA }); @@ -631,8 +633,12 @@ class spell_rog_stealth : public SpellScriptLoader Unit* target = GetTarget(); // Master of Subtlety - if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE, EFFECT_0)) - target->CastCustomSpell(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true); + 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); target->CastSpell(target, SPELL_ROGUE_SANCTUARY, TRIGGERED_FULL_MASK); target->CastSpell(target, SPELL_ROGUE_STEALTH_STEALTH_AURA, TRIGGERED_FULL_MASK); @@ -643,10 +649,17 @@ class spell_rog_stealth : public SpellScriptLoader { Unit* target = GetTarget(); - // Master of subtlety - if (target->HasAura(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE)) - target->CastSpell(target, SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC, true); + // 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(); + } + } + target->RemoveAurasDueToSpell(SPELL_ROGUE_SHADOW_FOCUS_EFFECT); target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_STEALTH_AURA); target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA); } |