aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWyreth <32145860+Wyreth@users.noreply.github.com>2019-05-11 19:39:03 +0200
committerGiacomo Pozzoni <giacomopoz@gmail.com>2019-05-11 19:39:03 +0200
commit552720a993cd02e47956cf99e41715b244e0b0eb (patch)
tree8b6b79b3ec73e3840eb5e79b3cbbb141f042b38a /src
parent21031898feaa2bdd3af42ce4b9eda7fd587676f4 (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
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp92
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 8777394e2f7..849e0897531 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
@@ -305,7 +305,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
};
@@ -336,7 +336,7 @@ public:
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CastSpell(player, SPELL_CREATE_TOTEM_OF_ISSLIRUK, true);
- CloseGossipMenuFor(player);
+ CloseGossipMenuFor(player);
}
return true;
}
@@ -1264,16 +1264,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;
@@ -1730,11 +1730,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
@@ -1751,14 +1760,11 @@ public:
void Initialize()
{
- Bonker_agro = 0;
+ _events.ScheduleEvent(EVENT_OOC_TALK, urand(10000, 20000));
}
- uint32 Bonker_agro;
-
void Reset() override
{
- Initialize();
SetDespawnAtFar(false);
}
@@ -1768,18 +1774,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
@@ -1790,8 +1821,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;
}
}
@@ -1800,11 +1835,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