Core/Spells: Fix rogue talent "Overkill" (thx to @timh52280)
Close #10411
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (1784,58428);
|
||||
INSERT INTO `spell_script_names`(`spell_id`, `ScriptName`) VALUES
|
||||
(1784,'spell_rog_stealth'),
|
||||
(58428,'spell_rog_overkill'),
|
||||
(31666,'spell_rog_master_of_subtlety');
|
||||
@@ -5328,11 +5328,6 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const
|
||||
{
|
||||
switch (GetSpellInfo()->Id)
|
||||
{
|
||||
// Master of Subtlety
|
||||
case 31666:
|
||||
if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH))
|
||||
target->RemoveAurasDueToSpell(31665);
|
||||
break;
|
||||
// Killing Spree
|
||||
case 51690:
|
||||
{
|
||||
@@ -5364,11 +5359,6 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const
|
||||
target->CastSpell(spellTarget, 57841, true);
|
||||
break;
|
||||
}
|
||||
// Overkill
|
||||
case 58428:
|
||||
if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH))
|
||||
target->RemoveAurasDueToSpell(58427);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1435,24 +1435,6 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_ROGUE:
|
||||
// Stealth
|
||||
if (GetSpellInfo()->SpellFamilyFlags[0] & 0x00400000)
|
||||
{
|
||||
// Master of subtlety
|
||||
if (AuraEffect const* aurEff = target->GetAuraEffect(31223, 0))
|
||||
{
|
||||
if (!apply)
|
||||
target->CastSpell(target, 31666, true);
|
||||
else
|
||||
{
|
||||
int32 basepoints0 = aurEff->GetAmount();
|
||||
target->CastCustomSpell(target, 31665, &basepoints0, NULL, NULL, true);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_HUNTER:
|
||||
switch (GetId())
|
||||
{
|
||||
|
||||
@@ -1195,7 +1195,7 @@ class spell_dk_will_of_the_necropolis : public SpellScriptLoader
|
||||
{
|
||||
PrepareAuraScript(spell_dk_will_of_the_necropolis_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* spellInfo) OVERRIDE
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_DK_WILL_OF_THE_NECROPOLIS))
|
||||
return false;
|
||||
@@ -1212,7 +1212,7 @@ class spell_dk_will_of_the_necropolis : public SpellScriptLoader
|
||||
return GetTarget()->HealthBelowPctDamaged(30, eventInfo.GetDamageInfo()->GetDamage());
|
||||
}
|
||||
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
void HandleProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_DK_WILL_OF_THE_NECROPOLIS, true, NULL, aurEff);
|
||||
|
||||
|
||||
@@ -1076,7 +1076,7 @@ class spell_mage_polymorph : public SpellScriptLoader
|
||||
return _caster && eventInfo.GetDamageInfo();
|
||||
}
|
||||
|
||||
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo)
|
||||
void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/)
|
||||
{
|
||||
PreventDefaultAction();
|
||||
// Improved Polymorph
|
||||
|
||||
@@ -28,21 +28,27 @@
|
||||
|
||||
enum RogueSpells
|
||||
{
|
||||
SPELL_ROGUE_BLADE_FLURRY = 13877,
|
||||
SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK = 22482,
|
||||
SPELL_ROGUE_CHEAT_DEATH_COOLDOWN = 31231,
|
||||
SPELL_ROGUE_CRIPPLING_POISON = 3409,
|
||||
SPELL_ROGUE_GLYPH_OF_PREPARATION = 56819,
|
||||
SPELL_ROGUE_PREY_ON_THE_WEAK = 58670,
|
||||
SPELL_ROGUE_SHIV_TRIGGERED = 5940,
|
||||
SPELL_ROGUE_SILCE_AND_DICE = 5171,
|
||||
SPELL_ROGUE_TRICKS_OF_THE_TRADE_DMG_BOOST = 57933,
|
||||
SPELL_ROGUE_TRICKS_OF_THE_TRADE_PROC = 59628,
|
||||
SPELL_ROGUE_BLADE_FLURRY = 13877,
|
||||
SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK = 22482,
|
||||
SPELL_ROGUE_CHEAT_DEATH_COOLDOWN = 31231,
|
||||
SPELL_ROGUE_CRIPPLING_POISON = 3409,
|
||||
SPELL_ROGUE_GLYPH_OF_PREPARATION = 56819,
|
||||
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_PREY_ON_THE_WEAK = 58670,
|
||||
SPELL_ROGUE_SHIV_TRIGGERED = 5940,
|
||||
SPELL_ROGUE_SILCE_AND_DICE = 5171,
|
||||
SPELL_ROGUE_TRICKS_OF_THE_TRADE_DMG_BOOST = 57933,
|
||||
SPELL_ROGUE_TRICKS_OF_THE_TRADE_PROC = 59628
|
||||
};
|
||||
|
||||
enum RogueSpellIcons
|
||||
{
|
||||
ICON_ROGUE_IMPROVED_RECUPERATE = 4819
|
||||
ICON_ROGUE_IMPROVED_RECUPERATE = 4819
|
||||
};
|
||||
|
||||
// 13877, 33735, (check 51211, 65956) - Blade Flurry
|
||||
@@ -327,6 +333,43 @@ class spell_rog_deadly_poison : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// 31666 - Master of Subtlety
|
||||
class spell_rog_master_of_subtlety : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_rog_master_of_subtlety() : SpellScriptLoader("spell_rog_master_of_subtlety") { }
|
||||
|
||||
class spell_rog_master_of_subtlety_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_rog_master_of_subtlety_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/)
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
|
||||
if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH))
|
||||
target->RemoveAurasDueToSpell(SPELL_ROGUE_MASTER_OF_SUBTLETY_DAMAGE_PERCENT);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_rog_master_of_subtlety_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_rog_master_of_subtlety_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 31130 - Nerves of Steel
|
||||
class spell_rog_nerves_of_steel : public SpellScriptLoader
|
||||
{
|
||||
@@ -371,6 +414,43 @@ class spell_rog_nerves_of_steel : 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*/)
|
||||
{
|
||||
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()
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_rog_overkill_AuraScript::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_rog_overkill_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 14185 - Preparation
|
||||
class spell_rog_preparation : public SpellScriptLoader
|
||||
{
|
||||
@@ -621,6 +701,70 @@ class spell_rog_shiv : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// 1784 - Stealth
|
||||
class spell_rog_stealth : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_rog_stealth() : SpellScriptLoader("spell_rog_stealth") { }
|
||||
|
||||
class spell_rog_stealth_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_rog_stealth_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/)
|
||||
{
|
||||
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))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
|
||||
// Master of Subtlety
|
||||
if (AuraEffect const* aurEff = target->GetAuraEffectOfRankedSpell(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);
|
||||
}
|
||||
|
||||
// Overkill
|
||||
if (target->HasAura(SPELL_ROGUE_OVERKILL_TALENT))
|
||||
target->CastSpell(target, SPELL_ROGUE_OVERKILL_POWER_REGEN, true);
|
||||
}
|
||||
|
||||
void HandleEffectRemove(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_PERIODIC, true);
|
||||
|
||||
// Overkill
|
||||
if (target->HasAura(SPELL_ROGUE_OVERKILL_TALENT))
|
||||
target->CastSpell(target, SPELL_ROGUE_OVERKILL_PERIODIC, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
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);
|
||||
}
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const
|
||||
{
|
||||
return new spell_rog_stealth_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 57934 - Tricks of the Trade
|
||||
class spell_rog_tricks_of_the_trade : public SpellScriptLoader
|
||||
{
|
||||
@@ -719,12 +863,15 @@ void AddSC_rogue_spell_scripts()
|
||||
new spell_rog_crippling_poison();
|
||||
new spell_rog_cut_to_the_chase();
|
||||
new spell_rog_deadly_poison();
|
||||
new spell_rog_master_of_subtlety();
|
||||
new spell_rog_nerves_of_steel();
|
||||
new spell_rog_overkill();
|
||||
new spell_rog_preparation();
|
||||
new spell_rog_prey_on_the_weak();
|
||||
new spell_rog_recuperate();
|
||||
new spell_rog_rupture();
|
||||
new spell_rog_shiv();
|
||||
new spell_rog_stealth();
|
||||
new spell_rog_tricks_of_the_trade();
|
||||
new spell_rog_tricks_of_the_trade_proc();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user