diff options
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 4 | ||||
| -rw-r--r-- | src/server/game/Handlers/BattleGroundHandler.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Movement/MotionMaster.cpp | 2 | 
9 files changed, 9 insertions, 11 deletions
| diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 58f8f72d47b..307941d3e5c 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -144,6 +144,7 @@ void SmartAI::PausePath(uint32 delay, bool forced)          _waypointPauseForced = forced;          SetRun(mRun);          me->PauseMovement(); +        me->SetHomePosition(me->GetPosition());      }      else          _waypointReached = false; @@ -407,6 +408,7 @@ void SmartAI::WaypointReached(uint32 nodeId, uint32 pathId)      {          _waypointReached = true;          me->PauseMovement(); +        me->SetHomePosition(me->GetPosition());      }      else if (HasEscortState(SMART_ESCORT_ESCORTING) && me->GetMotionMaster()->GetCurrentMovementGeneratorType() == WAYPOINT_MOTION_TYPE)      { diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 9a5aba738ee..092f1798de3 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -313,13 +313,6 @@ void Creature::DisappearAndDie()      ForcedDespawn(0);  } -void Creature::PauseMovement(uint32 timer/* = 0*/, uint8 slot/* = 0*/) -{ -    Unit::PauseMovement(timer, slot); - -    SetHomePosition(GetPosition()); -} -  bool Creature::IsReturningHome() const  {      if (GetMotionMaster()->GetMotionSlotType(MOTION_SLOT_ACTIVE) == HOME_MOTION_TYPE) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 2446b9e87ad..2f8da928057 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -297,7 +297,6 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma          uint32 GetCurrentWaypointID() const { return m_waypointID; }          void UpdateWaypointID(uint32 wpID) { m_waypointID = wpID; } -        void PauseMovement(uint32 timer = 0, uint8 slot = 0) override; // timer in ms          bool IsReturningHome() const;          void SearchFormation(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 51031ce12a8..e76dcbd84f4 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1794,8 +1794,8 @@ class TC_GAME_API Unit : public WorldObject          bool IsStopped() const { return !(HasUnitState(UNIT_STATE_MOVING)); }          void StopMoving(); -        virtual void PauseMovement(uint32 timer = 0, uint8 slot = 0); // timer in ms -        void ResumeMovement(uint32 timer = 0, uint8 slot = 0); +        void PauseMovement(uint32 timer = 0, uint8 slot = 0); // timer in ms +        void ResumeMovement(uint32 timer = 0, uint8 slot = 0); // timer in ms          void AddUnitMovementFlag(uint32 f) { m_movementInfo.flags |= f; }          void RemoveUnitMovementFlag(uint32 f) { m_movementInfo.flags &= ~f; } diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index a8e2315e8ec..bb8f52b90fd 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -52,6 +52,7 @@ void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket& recvData)      // Stop the npc if moving      unit->PauseMovement(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)); +    unit->SetHomePosition(unit->GetPosition());      BattlegroundTypeId bgTypeId = sBattlegroundMgr->GetBattleMasterBG(unit->GetEntry()); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index a1a661febab..ee2666c9f96 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -616,6 +616,7 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid)      // Stop the npc if moving      vendor->PauseMovement(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)); +    vendor->SetHomePosition(vendor->GetPosition());      VendorItemData const* items = vendor->GetVendorItems();      if (!items) diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 2bdfd463dbe..59344509283 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -325,6 +325,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket& recvData)      // Stop the npc if moving      unit->PauseMovement(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)); +    unit->SetHomePosition(unit->GetPosition());      // If spiritguide, no need for gossip menu, just put player into resurrect queue      if (unit->IsSpiritGuide()) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 56464adb657..23c0ac25524 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -94,6 +94,7 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket& recvData)      // Stop the npc if moving      creature->PauseMovement(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)); +    creature->SetHomePosition(creature->GetPosition());      _player->PlayerTalkClass->ClearMenus();      if (creature->AI()->GossipHello(_player)) diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index c0450f97563..2c9899ed43a 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -861,7 +861,7 @@ void MotionMaster::DirectDelete(MovementGenerator* curr)  void MotionMaster::DelayedDelete(MovementGenerator* curr)  { -    TC_LOG_FATAL("misc", "Unit (Entry %u) is trying to delete its updating Movement Generator (Type %u)!", _owner->GetEntry(), curr->GetMovementGeneratorType()); +    TC_LOG_DEBUG("misc", "MotionMaster::DelayedDelete: unit (%u) delayed deleting movement generator (type %u)", _owner->GetEntry(), curr->GetMovementGeneratorType());      if (IsStatic(curr))          return; | 
