Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
- --- a/src/server/scripts/Spells/spell_generic.cpp
- +++ b/src/server/scripts/Spells/spell_generic.cpp
- @@ -478,6 +478,101 @@
- }
- };
- +enum eArgentChampionSpells
- +{
- + SPELL_SHIELD_BREAKER = 62626,
- + SPELL_SUNDERING_THRUST = 63825,
- + SPELL_CHARGE = 68321,
- + //SPELL_SHIELD_BREAKER_TRIGGER = 62575,
- + //SPELL_CHARGE_1 = 62960, //spell_effect 1 is scripteffect only effect 2 gets handled atm
- + //SPELL_CHARGE_TRIGGER = 63665,
- + //SPELL_CHARGE_2 = 63010, //spell_effect 3 is scripteffect only effect 2 gets handled atm
- + //SPELL_COUNTERATTACK = 62709,
- + SPELL_DEFEND = 62552,
- + SPELL_SHIELD_LEVEL_1 = 63130,
- + SPELL_SHIELD_LEVEL_2 = 63131,
- + SPELL_SHIELD_LEVEL_3 = 63132,
- +};
- +class spell_argent_champion : public SpellScriptLoader
- +{
- +public:
- + spell_argent_champion() : SpellScriptLoader("spell_argent_champion") {}
- +
- + class spell_argent_champion_SpellScript : public SpellScript
- + {
- + PrepareSpellScript(spell_argent_champion_SpellScript)
- +
- + bool Validate(SpellEntry const * /*spellEntry*/)
- + {
- + if (!sSpellStore.LookupEntry(SPELL_SHIELD_BREAKER))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_CHARGE))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_SUNDERING_THRUST))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_DEFEND))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_1))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_2))
- + return false;
- + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_3))
- + return false;
- + return true;
- + }
- +
- + bool Load()
- + {
- + if (GetCaster()->GetTypeId() != TYPEID_UNIT)
- + return false;
- + }
- +
- + void HandleScript(SpellEffIndex /*effIndex*/)
- + {
- + if (Unit* pTarget = GetHitUnit())
- + {
- + if (Aura *buff = pTarget->GetAura(SPELL_DEFEND))
- + {
- + buff->SetStackAmount((buff->GetStackAmount())-1);
- +
- + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_1);
- + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_2);
- + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_3);
- +
- + switch(buff->GetStackAmount())
- + {
- + case 0:
- + pTarget->RemoveAura(SPELL_DEFEND);
- + return;
- + case 1:
- + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_1,true);
- + return;
- + case 2:
- + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_2,true);
- + return;
- + case 3:
- + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_3,true);
- + return;
- + }
- + return;
- + }
- + }
- + }
- +
- + void Register()
- + {
- + OnEffect += SpellEffectFn(spell_argent_champion_SpellScript::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
- + }
- +
- +
- +
- + SpellScript* GetSpellScript() const
- + {
- + return new spell_argent_champion_SpellScript();
- + }
- + };
- +};
- +
- void AddSC_generic_spell_scripts()
- {
- new spell_gen_aura_of_anger();
- @@ -490,4 +585,5 @@
- new spell_gen_trick_or_treat();
- new spell_creature_permanent_feign_death();
- new spell_pvp_trinket_wotf_shared_cd();
- + new spell_argent_champion();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement