1. class spell_sha_cloudburst_totem : public SpellScriptLoader
  2. {
  3. public:
  4. spell_sha_cloudburst_totem() : SpellScriptLoader("spell_sha_cloudburst_totem") { }
  5. class spell_sha_cloudburst_totem_AuraScript : public AuraScript
  6. {
  7. PrepareAuraScript(spell_sha_cloudburst_totem_AuraScript);
  8. void OnProc(const AuraEffect* aurEff, ProcEventInfo& eventInfo)
  9. {
  10. int32 bp0 = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount());
  11. if (AuraEffect* aurEff0 = aurEff->GetBase()->GetEffect(EFFECT_0))
  12. aurEff0->ChangeAmount(aurEff0->GetAmount() + bp0);
  13. }
  14. void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
  15. {
  16. int32 bp0 = aurEff->GetAmount();
  17. GetTarget()->CastCustomSpell(GetTarget(), SPELL_SHAMAN_CLOUDBURST, &bp0, NULL, NULL, true);
  18. }
  19. void Register() override
  20. {
  21. OnEffectProc += AuraEffectProcFn(spell_sha_cloudburst_totem_AuraScript::OnProc, EFFECT_0, SPELL_AURA_DUMMY);
  22. AfterEffectRemove += AuraEffectRemoveFn(spell_sha_cloudburst_totem_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_SEND_FOR_CLIENT_MASK);
  23. }
  24. int32 bp0;
  25. };
  26. AuraScript* GetAuraScript() const override
  27. {
  28. return new spell_sha_cloudburst_totem_AuraScript();
  29. }
  30. };

Cloudburst Totem.