aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Events/midsummer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/scripts/Events/midsummer.cpp')
-rw-r--r--src/server/scripts/Events/midsummer.cpp86
1 files changed, 72 insertions, 14 deletions
diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp
index b36fd1a04b6..d0bc05365ae 100644
--- a/src/server/scripts/Events/midsummer.cpp
+++ b/src/server/scripts/Events/midsummer.cpp
@@ -25,11 +25,13 @@ enum TorchSpells
{
SPELL_TORCH_TOSSING_TRAINING = 45716,
SPELL_TORCH_TOSSING_PRACTICE = 46630,
- SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE = 45719,
- SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE = 46651,
+ SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1 = 45719,
+ SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2 = 46651,
+ SPELL_REMOVE_TORCHES = 46074,
SPELL_TARGET_INDICATOR_COSMETIC = 46901,
SPELL_TARGET_INDICATOR = 45723,
- SPELL_BRAZIERS_HIT = 45724
+ SPELL_BRAZIERS_HIT = 45724,
+ SPELL_TARGET_DETECT_INVISIBILITY = 45725
};
// 45724 - Braziers Hit!
@@ -43,24 +45,21 @@ class spell_midsummer_braziers_hit : public AuraScript
{
SPELL_TORCH_TOSSING_TRAINING,
SPELL_TORCH_TOSSING_PRACTICE,
- SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE,
- SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE
+ SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1,
+ SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2,
+ SPELL_REMOVE_TORCHES
});
}
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- Player* player = GetTarget()->ToPlayer();
- if (!player)
- return;
+ Unit* target = GetTarget();
- if ((player->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (player->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20))
+ if ((target->HasAura(SPELL_TORCH_TOSSING_TRAINING) && GetStackAmount() == 8) || (target->HasAura(SPELL_TORCH_TOSSING_PRACTICE) && GetStackAmount() == 20))
{
- if (player->GetTeam() == ALLIANCE)
- player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_ALLIANCE, true);
- else if (player->GetTeam() == HORDE)
- player->CastSpell(player, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_HORDE, true);
- Remove();
+ target->CastSpell(target, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_1, true);
+ target->CastSpell(target, SPELL_TORCH_TOSSING_TRAINING_SUCCESS_2, true);
+ target->CastSpell(target, SPELL_REMOVE_TORCHES, true);
}
}
@@ -70,6 +69,63 @@ class spell_midsummer_braziers_hit : public AuraScript
}
};
+// 46074 - Remove Torches
+class spell_midsummer_remove_torches : public SpellScript
+{
+ PrepareSpellScript(spell_midsummer_remove_torches);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_TORCH_TOSSING_TRAINING, SPELL_TORCH_TOSSING_PRACTICE, SPELL_BRAZIERS_HIT });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ Unit* target = GetHitUnit();
+ target->RemoveAurasDueToSpell(SPELL_TORCH_TOSSING_TRAINING);
+ target->RemoveAurasDueToSpell(SPELL_TORCH_TOSSING_PRACTICE);
+ target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_midsummer_remove_torches::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
+// 45716 - Torch Tossing Training
+// 46630 - Torch Tossing Practice
+class spell_midsummer_torch_tossing_training_practice : public AuraScript
+{
+ PrepareAuraScript(spell_midsummer_torch_tossing_training_practice);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BRAZIERS_HIT, SPELL_TARGET_DETECT_INVISIBILITY });
+ }
+
+ void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ // Is this spell really used? Not shown in sniffs
+ target->CastSpell(target, SPELL_TARGET_DETECT_INVISIBILITY, true);
+ target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT);
+ }
+
+ void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ Unit* target = GetTarget();
+ target->RemoveAurasDueToSpell(SPELL_TARGET_DETECT_INVISIBILITY);
+ target->RemoveAurasDueToSpell(SPELL_BRAZIERS_HIT);
+ }
+
+ void Register() override
+ {
+ AfterEffectApply += AuraEffectApplyFn(spell_midsummer_torch_tossing_training_practice::AfterApply, EFFECT_0, SPELL_AURA_DETECT_AMORE, AURA_EFFECT_HANDLE_REAL);
+ AfterEffectRemove += AuraEffectRemoveFn(spell_midsummer_torch_tossing_training_practice::AfterRemove, EFFECT_0, SPELL_AURA_DETECT_AMORE, AURA_EFFECT_HANDLE_REAL);
+ }
+};
+
// 45907 - Torch Target Picker
class spell_midsummer_torch_target_picker : public SpellScript
{
@@ -544,6 +600,8 @@ class spell_midsummer_stamp_out_bonfire_event : public SpellScript
void AddSC_event_midsummer()
{
RegisterSpellScript(spell_midsummer_braziers_hit);
+ RegisterSpellScript(spell_midsummer_remove_torches);
+ RegisterSpellScript(spell_midsummer_torch_tossing_training_practice);
RegisterSpellScript(spell_midsummer_torch_target_picker);
RegisterSpellScript(spell_midsummer_torch_toss_land);
RegisterSpellScript(spell_midsummer_test_ribbon_pole_channel);