aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-01-15 16:54:57 +0100
committerShauren <shauren.trinity@gmail.com>2019-01-15 16:54:57 +0100
commitec1cfa36f4c286ad8037516460a4e99ea5d7a5ed (patch)
treee350c0dc66fc456db9136b07def1a362c5424fe1 /src
parent6859dfa2d157f0d174004a00a9d047d6eb38f9a1 (diff)
Core/Commands: Fixed creature/gameobject move commands not updating which cell they belong to
Closes #22720
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Commands/cs_gobject.cpp4
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp4
2 files changed, 7 insertions, 1 deletions
diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp
index f13ca7b9c9b..0e65130fe61 100644
--- a/src/server/scripts/Commands/cs_gobject.cpp
+++ b/src/server/scripts/Commands/cs_gobject.cpp
@@ -503,7 +503,11 @@ public:
Map* map = object->GetMap();
object->Relocate(x, y, z, object->GetOrientation());
+
+ // update which cell has this gameobject registered for loading
+ sObjectMgr->RemoveGameobjectFromGrid(guidLow, object->GetGameObjectData());
object->SaveToDB();
+ sObjectMgr->AddGameobjectToGrid(guidLow, object->GetGameObjectData());
// Generate a completely new spawn with new guid
// 3.3.5a client caches recently deleted objects and brings them back to life
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index 3148b700730..243aa3cb104 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -778,7 +778,9 @@ public:
}
// update position in memory
+ sObjectMgr->RemoveCreatureFromGrid(lowguid, data);
const_cast<CreatureData*>(data)->spawnPoint.Relocate(*player);
+ sObjectMgr->AddCreatureToGrid(lowguid, data);
// update position in DB
PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_UPD_CREATURE_POSITION);
@@ -837,7 +839,7 @@ public:
handler->SetSentErrorMessage(true);
return false;
}
-
+
if (!sCreatureDisplayInfoStore.LookupEntry(displayId))
{
handler->PSendSysMessage(LANG_COMMAND_INVALID_PARAM, args);