From 6ff71dffbb774b8ea715053cd9223edc5c67bb0f Mon Sep 17 00:00:00 2001 From: Treeston Date: Mon, 12 Feb 2018 02:58:51 +0100 Subject: Scripts/ScarletEnclave: fix Massacre at Light's Point mine cart escort to work again (tag #20310) --- .../EasternKingdoms/ScarletEnclave/chapter1.cpp | 36 ++++++++++++---------- 1 file changed, 20 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 7a5e35e9ed8..90e174364b9 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -1056,11 +1056,6 @@ class npc_scarlet_miner_cart : public CreatureScript if (Creature* miner = ObjectAccessor::GetCreature(*me, _minerGUID)) { me->SetWalk(false); - - // Not 100% correct, but movement is smooth. Sometimes miner walks faster - // than normal, this speed is fast enough to keep up at those times. - me->SetSpeedRate(MOVE_RUN, 1.25f); - me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0); } } @@ -1110,25 +1105,21 @@ class npc_scarlet_miner : public CreatureScript { npc_scarlet_minerAI(Creature* creature) : EscortAI(creature) { - Initialize(); me->SetReactState(REACT_PASSIVE); } - void Initialize() + void InitializeAI() override { - carGUID.Clear(); IntroTimer = 0; IntroPhase = 0; + carGUID.Clear(); + playerGUID.Clear(); } uint32 IntroTimer; uint32 IntroPhase; ObjectGuid carGUID; - - void Reset() override - { - Initialize(); - } + ObjectGuid playerGUID; void IsSummonedBy(Unit* summoner) override { @@ -1170,9 +1161,12 @@ class npc_scarlet_miner : public CreatureScript void SetGUID(ObjectGuid const& guid, int32 /*id*/) override { - InitWaypoint(); - Start(false, false, guid); - SetDespawnAtFar(false); + playerGUID = guid; + } + + void Reset() override + { + EscortAI::Reset(); } void WaypointReached(uint32 waypointId, uint32 /*pathId*/) override @@ -1200,6 +1194,16 @@ class npc_scarlet_miner : public CreatureScript } } + void JustAppeared() override + { + EscortAI::JustAppeared(); + if (!playerGUID) + return; + InitWaypoint(); + Start(false, false, playerGUID); + SetDespawnAtFar(false); + } + void UpdateAI(uint32 diff) override { if (IntroPhase) -- cgit v1.2.3