diff options
author | Wyreth <32145860+Wyreth@users.noreply.github.com> | 2019-05-11 19:39:03 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-05 15:15:52 +0100 |
commit | 40ec90e1f5b81f4bb2548ca0e49d13a59ad773bb (patch) | |
tree | abce67552fd6b7982ed9c14cc7cf603283cdec20 /src | |
parent | ddace645ba84f9abe2c4b6a1ba7b7d07409f437d (diff) |
Scripts/Northrend: improvements for quest Get Me Outa Here! (11673) (#20753)
* Script/Quest: improvements for quest Get Me Outa Here! (11673).
* Happiness for our Travis overlord
* Update 9999_99_99_99_world_quest_get_me_outa_here.sql
* Update zone_borean_tundra.cpp
* Update 9999_99_99_99_world_quest_get_me_outa_here.sql
* Update 9999_99_99_99_world_quest_get_me_outa_here.sql
* Fix hook that got renamed
* Update 9999_99_99_99_world_quest_get_me_outa_here.sql
* Rename 9999_99_99_99_world_quest_get_me_outa_here.sql to 2019_05_11_08_world.sql
(cherry picked from commit 552720a993cd02e47956cf99e41715b244e0b0eb)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/zone_borean_tundra.cpp | 92 |
1 files changed, 67 insertions, 25 deletions
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 069ae08b54f..338b79a31bd 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -239,7 +239,7 @@ enum Corastrasza NPC_TEXT_EAGERLY_AWAITING_YOUR_RETURN = 14170, QUEST_ACES_HIGH = 13413, - QUEST_ACES_HIGH_DAILY = 13414, + QUEST_ACES_HIGH_DAILY = 13414, SPELL_SUMMON_WYRMREST_SKYTALON = 61240, SPELL_WYRMREST_SKYTALON_RIDE_PERIODIC = 61244 @@ -306,7 +306,7 @@ enum Iruk GOSSIP_OPTION_SEARCH_CORPSE = 0, NPC_TEXT_THIS_YOUNG_TUSKARR = 12585, - QUEST_SPIRITS_WATCH_OVER_US = 11961, + QUEST_SPIRITS_WATCH_OVER_US = 11961, SPELL_CREATE_TOTEM_OF_ISSLIRUK = 46816 }; @@ -337,7 +337,7 @@ public: if (action == GOSSIP_ACTION_INFO_DEF + 1) { player->CastSpell(player, SPELL_CREATE_TOTEM_OF_ISSLIRUK, true); - CloseGossipMenuFor(player); + CloseGossipMenuFor(player); } return true; } @@ -1262,16 +1262,16 @@ public: if (soulBlastTimer <= diff) { DoCastVictim(SPELL_SOUL_BLAST); - soulBlastTimer = urand(12000, 18000); - } + soulBlastTimer = urand(12000, 18000); + } else soulBlastTimer -= diff; } DoMeleeAttackIfReady(); - } + } - void JustDied(Unit* killer) override - { + void JustDied(Unit* killer) override + { if (!leryssaGUID || !arlosGUID) return; @@ -1728,11 +1728,20 @@ public: enum BonkerTogglevolt { - NPC_BONKER_TOGGLEVOLT = 25589, - QUEST_GET_ME_OUTA_HERE = 11673, - - SAY_BONKER_1 = 0, - SAY_BONKER_2 = 1 + NPC_BONKER_TOGGLEVOLT = 25589, + GO_BALL_AND_CHAIN = 182531, + QUEST_GET_ME_OUTA_HERE = 11673, + + EVENT_OOC_TALK = 1, + EVENT_TALK_1 = 2, + EVENT_TALK_2 = 3, + + SAY_BONKER_0 = 0, + SAY_BONKER_1 = 1, + SAY_BONKER_2 = 2, + SAY_BONKER_3 = 3, + SAY_BONKER_4 = 4, + SAY_BONKER_5 = 5 }; class npc_bonker_togglevolt : public CreatureScript @@ -1749,14 +1758,11 @@ public: void Initialize() { - Bonker_agro = 0; + _events.ScheduleEvent(EVENT_OOC_TALK, urand(10000, 20000)); } - uint32 Bonker_agro; - void Reset() override { - Initialize(); SetDespawnAtFar(false); } @@ -1766,18 +1772,43 @@ public: player->FailQuest(QUEST_GET_ME_OUTA_HERE); } - void UpdateEscortAI(uint32 /*diff*/) override + void JustEngagedWith(Unit* who) override { - if (IsActiveAttacker() && UpdateVictim()) + if (who->GetTypeId() != TYPEID_PLAYER) + if (roll_chance_i(20)) + Talk(SAY_BONKER_5); + } + + void UpdateEscortAI(uint32 diff) override + { + _events.Update(diff); + + if (uint32 eventId = _events.ExecuteEvent()) { - if (Bonker_agro == 0) + switch (eventId) { - Talk(SAY_BONKER_1); - Bonker_agro++; + case EVENT_OOC_TALK: + Talk(SAY_BONKER_0); + _events.ScheduleEvent(EVENT_OOC_TALK, urand(5 * MINUTE * IN_MILLISECONDS, 10 * MINUTE * IN_MILLISECONDS)); + break; + case EVENT_TALK_1: + if (Player* player = ObjectAccessor::GetPlayer(*me, _player)) + Talk(SAY_BONKER_1, player); + if (GameObject* go = me->FindNearestGameObject(GO_BALL_AND_CHAIN, 20.0f)) + go->SetLootState(GO_JUST_DEACTIVATED); + _events.ScheduleEvent(EVENT_TALK_2, Seconds(11)); + break; + case EVENT_TALK_2: + Talk(SAY_BONKER_2); + me->SetReactState(REACT_AGGRESSIVE); + break; } - DoMeleeAttackIfReady(); } - else Bonker_agro=0; + + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); } void WaypointReached(uint32 waypointId, uint32 /*pathId*/) override @@ -1788,8 +1819,12 @@ public: switch (waypointId) { + case 1: + Talk(SAY_BONKER_3); + break; case 29: player->GroupEventHappens(QUEST_GET_ME_OUTA_HERE, me); + Talk(SAY_BONKER_4, player); break; } } @@ -1798,11 +1833,18 @@ public: { if (quest->GetQuestId() == QUEST_GET_ME_OUTA_HERE) { + _player = player->GetGUID(); me->SetStandState(UNIT_STAND_STATE_STAND); - Talk(SAY_BONKER_2, player); + _events.ScheduleEvent(EVENT_TALK_1, Seconds(2)); + _events.CancelEvent(EVENT_OOC_TALK); Start(true, true, player->GetGUID()); + SetPauseTimer(12 * IN_MILLISECONDS); } } + + private: + EventMap _events; + ObjectGuid _player; }; CreatureAI* GetAI(Creature* creature) const override |