diff options
author | SnapperRy <snapperryen@gmail.com> | 2016-08-23 13:36:57 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-18 14:47:00 +0100 |
commit | a6209e6d6d08a3ef5ef71b8799eb07eefd04275a (patch) | |
tree | b0ccab22a8ac1ab82d76301dc7267934bb546d1c /src | |
parent | d8befaf68b60caeae1e13e70ec50158dc39b92a4 (diff) |
Event/Brewfest: implement relay race (#17603)
(cherry picked from commit 894378f86728f54a604f6808b6c34e4f498ddd0c)
Rename 9999_99_99_99_world.sql to 2016_08_23_05_world.sql
(cherry picked from commit 6036b07f2515bec008df3ec02ab71b90e4384229)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_holiday.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 71c8878b81b..59b4e11d6c2 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -847,6 +847,7 @@ enum RamBlaBla { SPELL_GIDDYUP = 42924, SPELL_RENTAL_RACING_RAM = 43883, + SPELL_SWIFT_WORK_RAM = 43880, SPELL_RENTAL_RACING_RAM_AURA = 42146, SPELL_RAM_LEVEL_NEUTRAL = 43310, SPELL_RAM_TROT = 42992, @@ -854,6 +855,7 @@ enum RamBlaBla SPELL_RAM_GALLOP = 42994, SPELL_RAM_FATIGUE = 43052, SPELL_EXHAUSTED_RAM = 43332, + SPELL_RELAY_RACE_TURN_IN = 44501, // Quest SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN = 43345, @@ -874,7 +876,7 @@ class spell_brewfest_giddyup : public SpellScriptLoader void OnChange(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - if (!target->HasAura(SPELL_RENTAL_RACING_RAM)) + if (!target->HasAura(SPELL_RENTAL_RACING_RAM) && !target->HasAura(SPELL_SWIFT_WORK_RAM)) { target->RemoveAura(GetId()); return; @@ -1111,6 +1113,38 @@ class spell_brewfest_relay_race_intro_force_player_to_throw : public SpellScript } }; +class spell_brewfest_relay_race_turn_in : public SpellScriptLoader +{ +public: + spell_brewfest_relay_race_turn_in() : SpellScriptLoader("spell_brewfest_relay_race_turn_in") { } + + class spell_brewfest_relay_race_turn_in_SpellScript : public SpellScript + { + PrepareSpellScript(spell_brewfest_relay_race_turn_in_SpellScript); + + void HandleDummy(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + + if (Aura* aura = GetHitUnit()->GetAura(SPELL_SWIFT_WORK_RAM)) + { + aura->SetDuration(aura->GetDuration() + 30 * IN_MILLISECONDS); + GetCaster()->CastSpell(GetHitUnit(), SPELL_RELAY_RACE_TURN_IN, TRIGGERED_FULL_MASK); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_turn_in_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_brewfest_relay_race_turn_in_SpellScript(); + } +}; + // 43876 - Dismount Ram class spell_brewfest_dismount_ram : public SpellScriptLoader { @@ -1383,6 +1417,7 @@ void AddSC_holiday_spell_scripts() new spell_brewfest_apple_trap(); new spell_brewfest_exhausted_ram(); new spell_brewfest_relay_race_intro_force_player_to_throw(); + new spell_brewfest_relay_race_turn_in(); new spell_brewfest_dismount_ram(); new spell_brewfest_barker_bunny(); // Midsummer Fire Festival |