mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 02:50:29 +00:00
fix(Scripts/Quest): A Cry For Help (#5720)
This commit is contained in:
@@ -210,7 +210,14 @@ enum Magwin
|
||||
SAY_END1 = 3,
|
||||
SAY_END2 = 4,
|
||||
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
|
||||
};
|
||||
|
||||
@@ -223,7 +230,10 @@ public:
|
||||
{
|
||||
npc_magwinAI(Creature* creature) : npc_escortAI(creature) { }
|
||||
|
||||
void Reset() override { }
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
@@ -232,10 +242,10 @@ public:
|
||||
|
||||
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);
|
||||
npc_escortAI::Start(true, false, player->GetGUID());
|
||||
_player = player->GetGUID();
|
||||
_events.ScheduleEvent(EVENT_ACCEPT_QUEST, 2000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,23 +255,70 @@ public:
|
||||
{
|
||||
switch (waypointId)
|
||||
{
|
||||
case 0:
|
||||
Talk(SAY_START, player);
|
||||
break;
|
||||
case 17:
|
||||
Talk(SAY_PROGRESS, player);
|
||||
break;
|
||||
case 28:
|
||||
Talk(SAY_END1, player);
|
||||
player->GroupEventHappens(QUEST_A_CRY_FOR_HELP, me);
|
||||
_events.ScheduleEvent(EVENT_TALK_END, 2000);
|
||||
SetRun(true);
|
||||
break;
|
||||
case 29:
|
||||
Talk(EMOTE_HUG, player);
|
||||
Talk(SAY_END2, player);
|
||||
player->GroupEventHappens(QUEST_A_CRY_FOR_SAY_HELP, me);
|
||||
break;
|
||||
if (Creature* cowlen = me->FindNearestCreature(NPC_COWLEN, 50.0f, true))
|
||||
{
|
||||
Talk(EMOTE_HUG, cowlen);
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user