1. enum JadeFlameCrackleSpell
  2. {
  3. SPELL_JADE_TEMPEST = 148583,
  4. SPELL_MOLTEN_FIST = 148517,
  5. SPELL_RETURN_TO_STONE = 145514,
  6. SPELL_FRACTURE = 148513,
  7. SPELL_SHADOW_VOLLEY = 148516
  8. };
  9. class spell_gen_jade_tempest : public SpellScriptLoader
  10. {
  11. public:
  12. spell_gen_jade_tempest() : SpellScriptLoader("spell_gen_jade_tempest") { }
  13. class spell_gen_jade_tempest_SpellScript : public SpellScript
  14. {
  15. PrepareSpellScript(spell_gen_jade_tempest_SpellScript);
  16. void HandleDummy(SpellEffIndex /*effIndex*/)
  17. {
  18. std::list<Unit*> TargetList;
  19. Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(GetCaster(), GetCaster(), 100.0f);
  20. Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(GetCaster(), TargetList, checker);
  21. GetCaster()->VisitNearbyObject(100.0f, searcher);
  22. for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
  23. {
  24. Unit* target = *itr;
  25. if (!target || !target->IsAlive())
  26. continue;
  27. int32 damage = GetEffectValue();
  28. GetCaster()->CastCustomSpell(target, SPELL_JADE_TEMPEST, &damage, NULL, NULL, true);
  29. }
  30. }
  31. void Register() override
  32. {
  33. OnEffectHitTarget += SpellEffectFn(spell_gen_jade_tempest_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  34. }
  35. };
  36. SpellScript* GetSpellScript() const override
  37. {
  38. return new spell_gen_jade_tempest_SpellScript();
  39. }
  40. };
  41. class spell_gen_molten_fist : public SpellScriptLoader
  42. {
  43. public:
  44. spell_gen_molten_fist() : SpellScriptLoader("spell_gen_molten_fist") { }
  45. class spell_gen_molten_fist_SpellScript : public SpellScript
  46. {
  47. PrepareSpellScript(spell_gen_molten_fist_SpellScript);
  48. void HandleDummy(SpellEffIndex /*effIndex*/)
  49. {
  50. std::list<Unit*> TargetList;
  51. Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(GetCaster(), GetCaster(), 100.0f);
  52. Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(GetCaster(), TargetList, checker);
  53. GetCaster()->VisitNearbyObject(100.0f, searcher);
  54. for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
  55. {
  56. Unit* target = *itr;
  57. if (!target || !target->IsAlive())
  58. continue;
  59. int32 damage = GetEffectValue();
  60. GetCaster()->CastCustomSpell(target, SPELL_MOLTEN_FIST, &damage, NULL, NULL, true);
  61. }
  62. }
  63. void Register() override
  64. {
  65. OnEffectHitTarget += SpellEffectFn(spell_gen_molten_fist_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  66. }
  67. };
  68. SpellScript* GetSpellScript() const override
  69. {
  70. return new spell_gen_molten_fist_SpellScript();
  71. }
  72. };
  73. class spell_gen_return_to_stone : public SpellScriptLoader
  74. {
  75. public:
  76. spell_gen_return_to_stone() : SpellScriptLoader("spell_gen_return_to_stone") { }
  77. class spell_gen_return_to_stone_SpellScript : public SpellScript
  78. {
  79. PrepareSpellScript(spell_gen_return_to_stone_SpellScript);
  80. void HandleDummy(SpellEffIndex /*effIndex*/)
  81. {
  82. std::list<Unit*> TargetList;
  83. Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(GetCaster(), GetCaster(), 100.0f);
  84. Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(GetCaster(), TargetList, checker);
  85. GetCaster()->VisitNearbyObject(100.0f, searcher);
  86. for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
  87. {
  88. Unit* target = *itr;
  89. if (!target || !target->IsAlive())
  90. continue;
  91. int32 damage = GetEffectValue();
  92. GetCaster()->CastCustomSpell(target), SPELL_RETURN_TO_STONE, &damage, NULL, NULL, true);
  93. }
  94. }
  95. void Register() override
  96. {
  97. OnEffectHitTarget += SpellEffectFn(spell_gen_return_to_stone_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  98. }
  99. };
  100. SpellScript* GetSpellScript() const override
  101. {
  102. return new spell_gen_return_to_stone_SpellScript();
  103. }
  104. };
  105. class spell_gen_shadow_volley : public SpellScriptLoader
  106. {
  107. public:
  108. spell_gen_shadow_volley() : SpellScriptLoader("spell_gen_shadow_volley") { }
  109. class spell_gen_shadow_volley_SpellScript : public SpellScript
  110. {
  111. PrepareSpellScript(spell_gen_shadow_volley_SpellScript);
  112. void HandleDummy(SpellEffIndex /*effIndex*/)
  113. {
  114. std::list<Unit*> TargetList;
  115. Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(GetCaster(), GetCaster(), 100.0f);
  116. Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(GetCaster(), TargetList, checker);
  117. GetCaster()->VisitNearbyObject(100.0f, searcher);
  118. for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
  119. {
  120. Unit* target = *itr;
  121. if (!target || !target->IsAlive())
  122. continue;
  123. int32 damage = GetEffectValue();
  124. GetCaster()->CastCustomSpell(target), SPELL_SHADOW_VOLLEY, &damage, NULL, NULL, true);
  125. }
  126. }
  127. void Register() override
  128. {
  129. OnEffectHitTarget += SpellEffectFn(spell_gen_shadow_volley_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  130. }
  131. };
  132. SpellScript* GetSpellScript() const override
  133. {
  134. return new spell_gen_shadow_volley_SpellScript();
  135. }
  136. };
  137. class spell_gen_fracture : public SpellScriptLoader
  138. {
  139. public:
  140. spell_gen_fracture() : SpellScriptLoader("spell_gen_fracture") { }
  141. class spell_gen_fracture_SpellScript : public SpellScript
  142. {
  143. PrepareSpellScript(spell_gen_fracture_SpellScript);
  144. void HandleDummy(SpellEffIndex /*effIndex*/)
  145. {
  146. std::list<Unit*> TargetList;
  147. Trinity::AnyUnfriendlyUnitInObjectRangeCheck checker(GetCaster(), GetCaster(), 100.0f);
  148. Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(GetCaster(), TargetList, checker);
  149. GetCaster()->VisitNearbyObject(100.0f, searcher);
  150. for (std::list<Unit*>::iterator itr = TargetList.begin(); itr != TargetList.end(); ++itr)
  151. {
  152. Unit* target = *itr;
  153. if (!target || !target->IsAlive())
  154. continue;
  155. int32 damage = GetEffectValue();
  156. GetCaster()->CastCustomSpell(target), SPELL_FRACTURE, &damage, NULL, NULL, true);
  157. }
  158. }
  159. void Register() override
  160. {
  161. OnEffectHitTarget += SpellEffectFn(spell_gen_fracture_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  162. }
  163. };
  164. SpellScript* GetSpellScript() const override
  165. {
  166. return new spell_gen_fracture_SpellScript();
  167. }
  168. };