diff options
author | ccrs <ccrs@users.noreply.github.com> | 2017-08-12 17:35:46 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-08-23 00:48:46 +0200 |
commit | 0a133e77d61fc6bafad7b60b74604d5da648ece9 (patch) | |
tree | 0a3d4252830a2da40b65e0f83cfe1067d85219c7 /src/server/game | |
parent | 7586daad6289f022ea2e625d74c370cd46423e9c (diff) |
Core/Movement: 7fff83d6752 followup
remove home position set from creature PauseMovement, and use it when necessary
change log level on DelayedDelete
(cherry picked from commit cd4775420a4894012616d54467eb3827430245b5)
Diffstat (limited to 'src/server/game')
-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 9bd9fa7d3cc..c9efc4b5637 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 ca87ccb3196..6eab8bef3ec 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -356,13 +356,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 2b937e54389..1efa1efa566 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -296,7 +296,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 fb2af4bb11c..82297d25d92 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1909,8 +1909,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.AddMovementFlag(f); } void RemoveUnitMovementFlag(uint32 f) { m_movementInfo.RemoveMovementFlag(f); } diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 463070837b8..fdd96a8369d 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -48,6 +48,7 @@ void WorldSession::HandleBattlemasterHelloOpcode(WorldPackets::NPC::Hello& hello // 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 225547f0b5c..9eff5fce9b2 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -601,6 +601,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* vendorItems = vendor->GetVendorItems(); uint32 rawItemCount = vendorItems ? vendorItems->GetItemCount() : 0; diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 16c6ca0b1bf..f4df5db9fd6 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -170,6 +170,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet) // 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 fe6826441d1..9f2044dab59 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -90,6 +90,7 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHe // Stop the npc if moving creature->PauseMovement(sWorld->getIntConfig(CONFIG_CREATURE_STOP_FOR_PLAYER)); + creature->SetHomePosition(creature->GetPosition()); _player->PlayerTalkClass->ClearMenus(); if (creature->GetAI()->GossipHello(_player)) diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index acea74214f5..19b4e2b6197 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -878,7 +878,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; |