Cleanup the mage spell scripts, and move SPELLFAMILY_PRIEST and SPELLFAMILY_ROGUE dummy effect handlers to spell scripts.
--HG-- branch : trunk
This commit is contained in:
1 parent
86576de982
commit
e7e49c56cf
6 files changed
+314
-134
No files matched your search
@@ -23,14 +23,176 @@
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
enum RogueSpells
|
||||
{
|
||||
ROGUE_SPELL_HUNGER_FOR_BLOOD_BUFF = 63848,
|
||||
ROGUE_SPELL_SHIV_TRIGGERED = 5940,
|
||||
ROGUE_SPELL_CHEATING_DEATH = 45182,
|
||||
ROGUE_SPELL_GLYPH_OF_PREPARATION = 56819,
|
||||
};
|
||||
|
||||
class spell_rog_cheat_death_SpellScript : public SpellScript
|
||||
{
|
||||
bool Validate(SpellEntry const * spellEntry)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(ROGUE_SPELL_CHEATING_DEATH))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
Unit *caster = GetCaster();
|
||||
caster->CastSpell(caster, ROGUE_SPELL_CHEATING_DEATH, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
// add dummy effect spell handler to Cheat Death
|
||||
EffectHandlers += EffectHandlerFn(spell_rog_cheat_death_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript *GetSpellScript_spell_rog_cheat_death()
|
||||
{
|
||||
return new spell_rog_cheat_death_SpellScript();
|
||||
}
|
||||
|
||||
class spell_rog_hunger_for_blood_SpellScript : public SpellScript
|
||||
{
|
||||
bool Validate(SpellEntry const * spellEntry)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(ROGUE_SPELL_HUNGER_FOR_BLOOD_BUFF))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
Unit *caster = GetCaster();
|
||||
caster->CastSpell(caster, ROGUE_SPELL_HUNGER_FOR_BLOOD_BUFF, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
// add dummy effect spell handler to Hunger for Blood
|
||||
EffectHandlers += EffectHandlerFn(spell_rog_hunger_for_blood_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript *GetSpellScript_spell_rog_hunger_for_blood()
|
||||
{
|
||||
return new spell_rog_hunger_for_blood_SpellScript();
|
||||
}
|
||||
|
||||
class spell_rog_preparation_SpellScript : public SpellScript
|
||||
{
|
||||
bool Validate(SpellEntry const * spellEntry)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(ROGUE_SPELL_GLYPH_OF_PREPARATION))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
Unit *caster = GetCaster();
|
||||
if (caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
//immediately finishes the cooldown on certain Rogue abilities
|
||||
const SpellCooldowns& cm = caster->ToPlayer()->GetSpellCooldownMap();
|
||||
for (SpellCooldowns::const_iterator itr = cm.begin(); itr != cm.end();)
|
||||
{
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(itr->first);
|
||||
|
||||
if (spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE)
|
||||
{
|
||||
if (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_COLDB_SHADOWSTEP || // Cold Blood, Shadowstep
|
||||
spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_VAN_EVAS_SPRINT) // Vanish, Evasion, Sprint
|
||||
caster->ToPlayer()->RemoveSpellCooldown((itr++)->first, true);
|
||||
else if (caster->HasAura(ROGUE_SPELL_GLYPH_OF_PREPARATION))
|
||||
{
|
||||
if (spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_DISMANTLE || // Dismantle
|
||||
spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_KICK || // Kick
|
||||
(spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_BLADE_FLURRY && // Blade Flurry
|
||||
spellInfo->SpellFamilyFlags[1] & SPELLFAMILYFLAG1_ROGUE_BLADE_FLURRY))
|
||||
caster->ToPlayer()->RemoveSpellCooldown((itr++)->first, true);
|
||||
else
|
||||
++itr;
|
||||
}
|
||||
else
|
||||
++itr;
|
||||
}
|
||||
else
|
||||
++itr;
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
// add dummy effect spell handler to Preparation
|
||||
EffectHandlers += EffectHandlerFn(spell_rog_preparation_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript *GetSpellScript_spell_rog_preparation()
|
||||
{
|
||||
return new spell_rog_preparation_SpellScript();
|
||||
}
|
||||
|
||||
class spell_rog_shiv_SpellScript : public SpellScript
|
||||
{
|
||||
bool Validate(SpellEntry const * spellEntry)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(ROGUE_SPELL_SHIV_TRIGGERED))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
Unit *caster = GetCaster();
|
||||
if (caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
if (Unit *unitTarget = GetHitUnit())
|
||||
caster->CastSpell(unitTarget, ROGUE_SPELL_SHIV_TRIGGERED, true);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
// add dummy effect spell handler to Hunger for Blood
|
||||
EffectHandlers += EffectHandlerFn(spell_rog_shiv_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript *GetSpellScript_spell_rog_shiv()
|
||||
{
|
||||
return new spell_rog_shiv_SpellScript();
|
||||
}
|
||||
|
||||
void AddSC_rogue_spell_scripts()
|
||||
{
|
||||
//Script *newscript;
|
||||
Script *newscript;
|
||||
|
||||
/*
|
||||
newscript = new Script;
|
||||
newscript->Name = "spell_rog_";
|
||||
newscript->GetSpellScript = &GetSpellScript_spell_rog_;
|
||||
newscript->Name = "spell_rog_cheat_death";
|
||||
newscript->GetSpellScript = &GetSpellScript_spell_rog_cheat_death;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "spell_rog_hunger_for_blood";
|
||||
newscript->GetSpellScript = &GetSpellScript_spell_rog_hunger_for_blood;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "spell_rog_preparation";
|
||||
newscript->GetSpellScript = &GetSpellScript_spell_rog_preparation;
|
||||
newscript->RegisterSelf();
|
||||
|
||||
newscript = new Script;
|
||||
newscript->Name = "spell_rog_shiv";
|
||||
newscript->GetSpellScript = &GetSpellScript_spell_rog_shiv;
|
||||
newscript->RegisterSelf();
|
||||
*/
|
||||
}
|
||||
Reference in new issue
Block a user