Guest User

Untitled

a guest
Nov 19th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. // 45907 - Torch Target Picker
  2. class spell_midsummer_torch_target_picker : public SpellScript
  3. {
  4. PrepareSpellScript(spell_midsummer_torch_target_picker);
  5.  
  6. bool Validate(SpellInfo const* /*spellInfo*/) override
  7. {
  8. return ValidateSpellInfo({ SPELL_TARGET_INDICATOR_COSMETIC, SPELL_TARGET_INDICATOR });
  9. }
  10.  
  11. void HandleScript(SpellEffIndex /*effIndex*/)
  12. {
  13. Unit* target = GetHitUnit();
  14. target->CastSpell(target, SPELL_TARGET_INDICATOR_COSMETIC, true);
  15. target->CastSpell(target, SPELL_TARGET_INDICATOR, true);
  16. }
  17.  
  18. void Register() override
  19. {
  20. OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_target_picker::HandleScript, EFFECT_0, SPELL_EFFECT_DUMMY);
  21. }
  22. };
  23.  
  24. // 46054 - Torch Toss (land)
  25. class spell_midsummer_torch_toss_land : public SpellScript
  26. {
  27. PrepareSpellScript(spell_midsummer_torch_toss_land);
  28.  
  29. bool Validate(SpellInfo const* /*spellInfo*/) override
  30. {
  31. return ValidateSpellInfo({ SPELL_BRAZIERS_HIT });
  32. }
  33.  
  34. void HandleScript(SpellEffIndex /*effIndex*/)
  35. {
  36. GetHitUnit()->CastSpell(GetCaster(), SPELL_BRAZIERS_HIT, true);
  37. }
  38.  
  39. void Register() override
  40. {
  41. OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_toss_land::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
  42. }
  43. };
  44.  
  45. enum RibbonPoleData
  46. {
  47. SPELL_HAS_FULL_MIDSUMMER_SET = 58933,
  48. SPELL_BURNING_HOT_POLE_DANCE = 58934,
  49. SPELL_RIBBON_POLE_PERIODIC_VISUAL = 45406,
  50. SPELL_RIBBON_DANCE = 29175,
  51. SPELL_TEST_RIBBON_POLE_1 = 29705,
  52. SPELL_TEST_RIBBON_POLE_2 = 29726,
  53. SPELL_TEST_RIBBON_POLE_3 = 29727
  54. };
  55.  
  56. // 29705, 29726, 29727 - Test Ribbon Pole Channel
  57. class spell_midsummer_test_ribbon_pole_channel : public AuraScript
  58. {
  59. PrepareAuraScript(spell_midsummer_test_ribbon_pole_channel);
  60.  
  61. bool Validate(SpellInfo const* /*spellInfo*/) override
  62. {
  63. return ValidateSpellInfo(
  64. {
  65. SPELL_RIBBON_POLE_PERIODIC_VISUAL,
  66. SPELL_BURNING_HOT_POLE_DANCE,
  67. SPELL_HAS_FULL_MIDSUMMER_SET,
  68. SPELL_RIBBON_DANCE
  69. });
  70. }
  71.  
  72. void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
  73. {
  74. GetTarget()->RemoveAurasDueToSpell(SPELL_RIBBON_POLE_PERIODIC_VISUAL);
  75. }
  76.  
  77. void PeriodicTick(AuraEffect const* /*aurEff*/)
  78. {
  79. Unit* target = GetTarget();
  80. target->CastSpell(target, SPELL_RIBBON_POLE_PERIODIC_VISUAL, true);
  81.  
  82. if (Aura* aur = target->GetAura(SPELL_RIBBON_DANCE))
  83. {
  84. aur->SetMaxDuration(std::min(3600000, aur->GetMaxDuration() + 180000));
  85. aur->RefreshDuration();
  86.  
  87. if (aur->GetMaxDuration() == 3600000 && target->HasAura(SPELL_HAS_FULL_MIDSUMMER_SET))
  88. target->CastSpell(target, SPELL_BURNING_HOT_POLE_DANCE, true);
  89. }
  90. else
  91. target->CastSpell(target, SPELL_RIBBON_DANCE, true);
  92. }
  93.  
  94. void Register() override
  95. {
  96. AfterEffectRemove += AuraEffectRemoveFn(spell_midsummer_test_ribbon_pole_channel::HandleRemove, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL);
  97. OnEffectPeriodic += AuraEffectPeriodicFn(spell_midsummer_test_ribbon_pole_channel::PeriodicTick, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
  98. }
  99. };
  100.  
  101. // 45406 - Holiday - Midsummer, Ribbon Pole Periodic Visual
  102. class spell_midsummer_ribbon_pole_periodic_visual : public AuraScript
  103. {
  104. PrepareAuraScript(spell_midsummer_ribbon_pole_periodic_visual);
  105.  
  106. bool Validate(SpellInfo const* /*spellInfo*/) override
  107. {
  108. return ValidateSpellInfo(
  109. {
  110. SPELL_TEST_RIBBON_POLE_1,
  111. SPELL_TEST_RIBBON_POLE_2,
  112. SPELL_TEST_RIBBON_POLE_3
  113. });
  114. }
  115.  
  116. void PeriodicTick(AuraEffect const* /*aurEff*/)
  117. {
  118. Unit* target = GetTarget();
  119. if (!target->HasAura(SPELL_TEST_RIBBON_POLE_1) && !target->HasAura(SPELL_TEST_RIBBON_POLE_2) && !target->HasAura(SPELL_TEST_RIBBON_POLE_3))
  120. Remove();
  121. }
  122.  
  123. void Register() override
  124. {
  125. OnEffectPeriodic += AuraEffectPeriodicFn(spell_midsummer_ribbon_pole_periodic_visual::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
  126. }
  127. };
Add Comment
Please, Sign In to add comment