Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.88 KB | None | 0 0
  1. diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
  2. --- a/src/server/scripts/Spells/spell_generic.cpp
  3. +++ b/src/server/scripts/Spells/spell_generic.cpp
  4. @@ -478,6 +478,101 @@
  5. }
  6. };
  7.  
  8. +enum eArgentChampionSpells
  9. +{
  10. + SPELL_SHIELD_BREAKER = 62626,
  11. + SPELL_SUNDERING_THRUST = 63825,
  12. + SPELL_CHARGE = 68321,
  13. + //SPELL_SHIELD_BREAKER_TRIGGER = 62575,
  14. + //SPELL_CHARGE_1 = 62960, //spell_effect 1 is scripteffect only effect 2 gets handled atm
  15. + //SPELL_CHARGE_TRIGGER = 63665,
  16. + //SPELL_CHARGE_2 = 63010, //spell_effect 3 is scripteffect only effect 2 gets handled atm
  17. + //SPELL_COUNTERATTACK = 62709,
  18. + SPELL_DEFEND = 62552,
  19. + SPELL_SHIELD_LEVEL_1 = 63130,
  20. + SPELL_SHIELD_LEVEL_2 = 63131,
  21. + SPELL_SHIELD_LEVEL_3 = 63132,
  22. +};
  23. +class spell_argent_champion : public SpellScriptLoader
  24. +{
  25. +public:
  26. + spell_argent_champion() : SpellScriptLoader("spell_argent_champion") {}
  27. +
  28. + class spell_argent_champion_SpellScript : public SpellScript
  29. + {
  30. + PrepareSpellScript(spell_argent_champion_SpellScript)
  31. +
  32. + bool Validate(SpellEntry const * /*spellEntry*/)
  33. + {
  34. + if (!sSpellStore.LookupEntry(SPELL_SHIELD_BREAKER))
  35. + return false;
  36. + if (!sSpellStore.LookupEntry(SPELL_CHARGE))
  37. + return false;
  38. + if (!sSpellStore.LookupEntry(SPELL_SUNDERING_THRUST))
  39. + return false;
  40. + if (!sSpellStore.LookupEntry(SPELL_DEFEND))
  41. + return false;
  42. + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_1))
  43. + return false;
  44. + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_2))
  45. + return false;
  46. + if (!sSpellStore.LookupEntry(SPELL_SHIELD_LEVEL_3))
  47. + return false;
  48. + return true;
  49. + }
  50. +
  51. + bool Load()
  52. + {
  53. + if (GetCaster()->GetTypeId() != TYPEID_UNIT)
  54. + return false;
  55. + }
  56. +
  57. + void HandleScript(SpellEffIndex /*effIndex*/)
  58. + {
  59. + if (Unit* pTarget = GetHitUnit())
  60. + {
  61. + if (Aura *buff = pTarget->GetAura(SPELL_DEFEND))
  62. + {
  63. + buff->SetStackAmount((buff->GetStackAmount())-1);
  64. +
  65. + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_1);
  66. + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_2);
  67. + pTarget->RemoveAura(SPELL_SHIELD_LEVEL_3);
  68. +
  69. + switch(buff->GetStackAmount())
  70. + {
  71. + case 0:
  72. + pTarget->RemoveAura(SPELL_DEFEND);
  73. + return;
  74. + case 1:
  75. + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_1,true);
  76. + return;
  77. + case 2:
  78. + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_2,true);
  79. + return;
  80. + case 3:
  81. + pTarget->CastSpell(pTarget, SPELL_SHIELD_LEVEL_3,true);
  82. + return;
  83. + }
  84. + return;
  85. + }
  86. + }
  87. + }
  88. +
  89. + void Register()
  90. + {
  91. + OnEffect += SpellEffectFn(spell_argent_champion_SpellScript::HandleScript, EFFECT_2, SPELL_EFFECT_SCRIPT_EFFECT);
  92. + }
  93. +
  94. +
  95. +
  96. + SpellScript* GetSpellScript() const
  97. + {
  98. + return new spell_argent_champion_SpellScript();
  99. + }
  100. + };
  101. +};
  102. +
  103. void AddSC_generic_spell_scripts()
  104. {
  105. new spell_gen_aura_of_anger();
  106. @@ -490,4 +585,5 @@
  107. new spell_gen_trick_or_treat();
  108. new spell_creature_permanent_feign_death();
  109. new spell_pvp_trinket_wotf_shared_cd();
  110. + new spell_argent_champion();
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement