aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/6.x/2016_04_29_01_world.sql5
-rw-r--r--src/server/game/Spells/SpellEffects.cpp14
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp156
3 files changed, 106 insertions, 69 deletions
diff --git a/sql/updates/world/6.x/2016_04_29_01_world.sql b/sql/updates/world/6.x/2016_04_29_01_world.sql
new file mode 100644
index 00000000000..de2f228fee6
--- /dev/null
+++ b/sql/updates/world/6.x/2016_04_29_01_world.sql
@@ -0,0 +1,5 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rog_overkill';
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_rog_vanish','spell_rog_vanish_aura');
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(1856,'spell_rog_vanish'),
+(11327,'spell_rog_vanish_aura');
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 667249d897e..f90a3c33b9b 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -241,7 +241,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectUnlockGuildVaultTab, //173 SPELL_EFFECT_UNLOCK_GUILD_VAULT_TAB
&Spell::EffectNULL, //174 SPELL_EFFECT_APPLY_AURA_ON_PET
&Spell::EffectUnused, //175 SPELL_EFFECT_175 unused
- &Spell::EffectNULL, //176 SPELL_EFFECT_SANCTUARY_2
+ &Spell::EffectSanctuary, //176 SPELL_EFFECT_SANCTUARY_2
&Spell::EffectNULL, //177 SPELL_EFFECT_177
&Spell::EffectUnused, //178 SPELL_EFFECT_178 unused
&Spell::EffectCreateAreaTrigger, //179 SPELL_EFFECT_CREATE_AREATRIGGER
@@ -618,18 +618,6 @@ void Spell::EffectTriggerSpell(SpellEffIndex /*effIndex*/)
{
unitTarget->RemoveMovementImpairingAuras();
unitTarget->RemoveAurasByType(SPELL_AURA_MOD_STALKED);
-
- // If this spell is given to an NPC, it must handle the rest using its own AI
- if (unitTarget->GetTypeId() != TYPEID_PLAYER)
- return;
-
- // See if we already are stealthed. If so, we're done.
- if (unitTarget->HasAura(1784))
- return;
-
- // Reset cooldown on stealth if needed
- unitTarget->GetSpellHistory()->ResetCooldown(1784);
- unitTarget->CastSpell(unitTarget, 1784, true);
return;
}
// Demonic Empowerment -- succubus
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index a4f876b289e..ff0be4595cf 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -42,9 +42,11 @@ enum RogueSpells
SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT = 31665,
SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE = 31223,
SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC = 31666,
- SPELL_ROGUE_OVERKILL_TALENT = 58426,
- SPELL_ROGUE_OVERKILL_PERIODIC = 58428,
- SPELL_ROGUE_OVERKILL_POWER_REGEN = 58427,
+ SPELL_ROGUE_SANCTUARY = 98877,
+ SPELL_ROGUE_STEALTH = 1784,
+ SPELL_ROGUE_STEALTH_STEALTH_AURA = 158185,
+ SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA = 158188,
+ SPELL_ROGUE_VANISH_AURA = 11327,
SPELL_ROGUE_PREY_ON_THE_WEAK = 58670,
SPELL_ROGUE_SHIV_TRIGGERED = 5940,
SPELL_ROGUE_SILCE_AND_DICE = 5171,
@@ -493,43 +495,6 @@ class spell_rog_master_of_subtlety : public SpellScriptLoader
}
};
-// 58428 - Overkill
-class spell_rog_overkill : public SpellScriptLoader
-{
- public:
- spell_rog_overkill() : SpellScriptLoader("spell_rog_overkill") { }
-
- class spell_rog_overkill_AuraScript : public AuraScript
- {
- PrepareAuraScript(spell_rog_overkill_AuraScript);
-
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_OVERKILL_POWER_REGEN))
- return false;
- return true;
- }
-
- void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
- {
- Unit* target = GetTarget();
-
- if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH))
- target->RemoveAurasDueToSpell(SPELL_ROGUE_OVERKILL_POWER_REGEN);
- }
-
- void Register() override
- {
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_rog_overkill_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
- }
- };
-
- AuraScript* GetAuraScript() const override
- {
- return new spell_rog_overkill_AuraScript();
- }
-};
-
// 14185 - Preparation
class spell_rog_preparation : public SpellScriptLoader
{
@@ -740,9 +705,9 @@ class spell_rog_stealth : public SpellScriptLoader
if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE) ||
!sSpellMgr->GetSpellInfo(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT) ||
!sSpellMgr->GetSpellInfo(SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC) ||
- !sSpellMgr->GetSpellInfo(SPELL_ROGUE_OVERKILL_TALENT) ||
- !sSpellMgr->GetSpellInfo(SPELL_ROGUE_OVERKILL_POWER_REGEN) ||
- !sSpellMgr->GetSpellInfo(SPELL_ROGUE_OVERKILL_PERIODIC))
+ !sSpellMgr->GetSpellInfo(SPELL_ROGUE_SANCTUARY) ||
+ !sSpellMgr->GetSpellInfo(SPELL_ROGUE_STEALTH_STEALTH_AURA) ||
+ !sSpellMgr->GetSpellInfo(SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA))
return false;
return true;
}
@@ -753,14 +718,11 @@ class spell_rog_stealth : public SpellScriptLoader
// Master of Subtlety
if (AuraEffect const* aurEff = target->GetAuraEffect(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE, EFFECT_0))
- {
- int32 basepoints0 = aurEff->GetAmount();
- target->CastCustomSpell(target, SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, &basepoints0, NULL, NULL, true);
- }
+ target->CastCustomSpell(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true);
- // Overkill
- if (target->HasAura(SPELL_ROGUE_OVERKILL_TALENT))
- target->CastSpell(target, SPELL_ROGUE_OVERKILL_POWER_REGEN, 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);
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
@@ -771,15 +733,14 @@ class spell_rog_stealth : public SpellScriptLoader
if (target->HasAura(SPELL_ROGUE_MASTER_OF_SUBTLETY_PASSIVE))
target->CastSpell(target, SPELL_ROGUE_MASTER_OF_SUBTLETY_PERIODIC, true);
- // Overkill
- if (target->HasAura(SPELL_ROGUE_OVERKILL_TALENT))
- target->CastSpell(target, SPELL_ROGUE_OVERKILL_PERIODIC, true);
+ target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_STEALTH_AURA);
+ target->RemoveAurasDueToSpell(SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA);
}
void Register() override
{
- AfterEffectApply += AuraEffectApplyFn(spell_rog_stealth_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
- AfterEffectRemove += AuraEffectRemoveFn(spell_rog_stealth_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_SHAPESHIFT, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
+ AfterEffectApply += AuraEffectApplyFn(spell_rog_stealth_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_rog_stealth_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
@@ -789,6 +750,88 @@ class spell_rog_stealth : public SpellScriptLoader
}
};
+// 1856 - Vanish
+class spell_rog_vanish : public SpellScriptLoader
+{
+ public:
+ spell_rog_vanish() : SpellScriptLoader("spell_rog_vanish") { }
+
+ class spell_rog_vanish_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_rog_vanish_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_VANISH_AURA) ||
+ !sSpellMgr->GetSpellInfo(SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA))
+ return false;
+ return true;
+ }
+
+ void OnLaunchTarget(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+
+ Unit* target = GetHitUnit();
+
+ target->RemoveMovementImpairingAuras();
+ target->RemoveAurasByType(SPELL_AURA_MOD_STALKED);
+ if (target->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ if (target->HasAura(SPELL_ROGUE_VANISH_AURA))
+ return;
+
+ target->CastSpell(target, SPELL_ROGUE_VANISH_AURA, TRIGGERED_FULL_MASK);
+ target->CastSpell(target, SPELL_ROGUE_STEALTH_SHAPESHIFT_AURA, TRIGGERED_FULL_MASK);
+ }
+
+ void Register() override
+ {
+ OnEffectLaunchTarget += SpellEffectFn(spell_rog_vanish_SpellScript::OnLaunchTarget, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_rog_vanish_SpellScript();
+ }
+};
+
+// 11327 - Vanish
+class spell_rog_vanish_aura : public SpellScriptLoader
+{
+ public:
+ spell_rog_vanish_aura() : SpellScriptLoader("spell_rog_vanish_aura") { }
+
+ class spell_rog_vanish_aura_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_rog_vanish_aura_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_STEALTH))
+ return false;
+ return true;
+ }
+
+ void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_ROGUE_STEALTH, TRIGGERED_FULL_MASK);
+ }
+
+ void Register() override
+ {
+ AfterEffectRemove += AuraEffectRemoveFn(spell_rog_vanish_aura_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const override
+ {
+ return new spell_rog_vanish_aura_AuraScript();
+ }
+};
+
// 57934 - Tricks of the Trade
class spell_rog_tricks_of_the_trade : public SpellScriptLoader
{
@@ -1016,12 +1059,13 @@ void AddSC_rogue_spell_scripts()
new spell_rog_deadly_poison();
new spell_rog_killing_spree();
new spell_rog_master_of_subtlety();
- new spell_rog_overkill();
new spell_rog_preparation();
new spell_rog_recuperate();
new spell_rog_rupture();
new spell_rog_shiv();
new spell_rog_stealth();
+ new spell_rog_vanish();
+ new spell_rog_vanish_aura();
new spell_rog_tricks_of_the_trade();
new spell_rog_tricks_of_the_trade_proc();
new spell_rog_serrated_blades();