aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp27
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);
}