fix(Scripts/Quest): A Cry For Help (#5720)

This commit is contained in:
Emir
2021-05-22 12:53:45 -07:00
committed by GitHub
parent a75b84ab2e
commit 0527c17d5f
2 changed files with 82 additions and 13 deletions
@@ -0,0 +1,12 @@
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620469549972464900');
UPDATE `creature_text` SET `language`=7, `BroadcastTextid`=13770 WHERE `creatureid`=17312 AND `groupid`=1;
UPDATE `creature_text` SET `emote`=5 WHERE `creatureid`=17312 AND `groupid`=2;
UPDATE `creature_text` SET `emote`=22 WHERE `creatureid`=17312 AND `groupid`=3;
UPDATE `creature_text` SET `emote`=5 WHERE `creatureid`=17312 AND `groupid`=4;
DELETE FROM `creature_text` WHERE `creatureid`=17311;
INSERT INTO `creature_text` (`creatureid`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
(17311, 0, 0, (SELECT `MaleText` FROM `broadcast_text` WHERE `ID`=13749), 12, 7, 100, 0, 0, 0, 13749, 0, "Cowlen");
UPDATE `script_waypoint` SET `waittime`=3000 WHERE `entry`=17312 AND `pointid`=28;
UPDATE `script_waypoint` SET `waittime`=5000 WHERE `entry`=17312 AND `pointid`=29;
@@ -210,7 +210,14 @@ enum Magwin
SAY_END1 = 3, SAY_END1 = 3,
SAY_END2 = 4, SAY_END2 = 4,
EMOTE_HUG = 5, EMOTE_HUG = 5,
QUEST_A_CRY_FOR_SAY_HELP = 9528, NPC_COWLEN = 17311,
SAY_COWLEN = 0,
EVENT_ACCEPT_QUEST = 1,
EVENT_START_ESCORT = 2,
EVENT_STAND = 3,
EVENT_TALK_END = 4,
EVENT_COWLEN_TALK = 5,
QUEST_A_CRY_FOR_HELP = 9528,
FACTION_QUEST = 113 FACTION_QUEST = 113
}; };
@@ -223,7 +230,10 @@ public:
{ {
npc_magwinAI(Creature* creature) : npc_escortAI(creature) { } npc_magwinAI(Creature* creature) : npc_escortAI(creature) { }
void Reset() override { } void Reset() override
{
_events.Reset();
}
void EnterCombat(Unit* who) override void EnterCombat(Unit* who) override
{ {
@@ -232,10 +242,10 @@ public:
void sQuestAccept(Player* player, Quest const* quest) override void sQuestAccept(Player* player, Quest const* quest) override
{ {
if (quest->GetQuestId() == QUEST_A_CRY_FOR_SAY_HELP) if (quest->GetQuestId() == QUEST_A_CRY_FOR_HELP)
{ {
me->setFaction(FACTION_QUEST); _player = player->GetGUID();
npc_escortAI::Start(true, false, player->GetGUID()); _events.ScheduleEvent(EVENT_ACCEPT_QUEST, 2000);
} }
} }
@@ -245,23 +255,70 @@ public:
{ {
switch (waypointId) switch (waypointId)
{ {
case 0:
Talk(SAY_START, player);
break;
case 17: case 17:
Talk(SAY_PROGRESS, player); Talk(SAY_PROGRESS, player);
break; break;
case 28: case 28:
Talk(SAY_END1, player); player->GroupEventHappens(QUEST_A_CRY_FOR_HELP, me);
_events.ScheduleEvent(EVENT_TALK_END, 2000);
SetRun(true);
break; break;
case 29: case 29:
Talk(EMOTE_HUG, player); if (Creature* cowlen = me->FindNearestCreature(NPC_COWLEN, 50.0f, true))
Talk(SAY_END2, player); {
player->GroupEventHappens(QUEST_A_CRY_FOR_SAY_HELP, me); Talk(EMOTE_HUG, cowlen);
break; Talk(SAY_END2, player);
break;
}
} }
} }
} }
void UpdateEscortAI(uint32 diff) override
{
_events.Update(diff);
if (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_ACCEPT_QUEST:
if (Player* player = ObjectAccessor::GetPlayer(*me, _player))
{
Talk(SAY_START, player);
}
me->setFaction(FACTION_QUEST);
_events.ScheduleEvent(EVENT_START_ESCORT, 1000);
break;
case EVENT_START_ESCORT:
if (Player* player = ObjectAccessor::GetPlayer(*me, _player))
{
npc_escortAI::Start(true, false, player->GetGUID());
}
_events.ScheduleEvent(EVENT_STAND, 2000);
break;
case EVENT_STAND: // Remove kneel standstate. Using a separate delayed event because it causes unwanted delay before starting waypoint movement.
me->SetByteValue(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_STAND_STATE, UNIT_STAND_STATE_STAND);
break;
case EVENT_TALK_END:
if (Player* player = ObjectAccessor::GetPlayer(*me, _player))
{
Talk(SAY_END1, player);
}
_events.ScheduleEvent(EVENT_COWLEN_TALK, 2000);
break;
case EVENT_COWLEN_TALK:
if (Creature* cowlen = me->FindNearestCreature(NPC_COWLEN, 50.0f, true))
{
cowlen->AI()->Talk(SAY_COWLEN);
}
break;
}
}
npc_escortAI::UpdateEscortAI(diff);
}
private:
EventMap _events;
ObjectGuid _player;
}; };
CreatureAI* GetAI(Creature* creature) const override CreatureAI* GetAI(Creature* creature) const override