mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
Map local guids 6.x -> 4.3.4
Ported the following commits:ca83e14f8bee1c1b97be18e4ab6911bf37446b3ccb854a2b7b
This commit is contained in:
@@ -221,8 +221,17 @@ void PoolGroup<Creature>::Despawn1Object(uint32 guid)
|
||||
{
|
||||
sObjectMgr->RemoveCreatureFromGrid(guid, data);
|
||||
|
||||
if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HIGHGUID_UNIT, data->id, guid), (Creature*)NULL))
|
||||
creature->AddObjectToRemoveList();
|
||||
Map* map = sMapMgr->CreateBaseMap(data->mapid);
|
||||
if (!map->Instanceable())
|
||||
{
|
||||
auto creatureBounds = map->GetCreatureBySpawnIdStore().equal_range(guid);
|
||||
for (auto itr = creatureBounds.first; itr != creatureBounds.second; )
|
||||
{
|
||||
Creature* creature = itr->second;
|
||||
++itr;
|
||||
creature->AddObjectToRemoveList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,8 +243,17 @@ void PoolGroup<GameObject>::Despawn1Object(uint32 guid)
|
||||
{
|
||||
sObjectMgr->RemoveGameobjectFromGrid(guid, data);
|
||||
|
||||
if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid(HIGHGUID_GAMEOBJECT, data->id, guid), (GameObject*)NULL))
|
||||
pGameobject->AddObjectToRemoveList();
|
||||
Map* map = sMapMgr->CreateBaseMap(data->mapid);
|
||||
if (!map->Instanceable())
|
||||
{
|
||||
auto gameObjectBounds = map->GetGameObjectBySpawnIdStore().equal_range(guid);
|
||||
for (auto itr = gameObjectBounds.first; itr != gameObjectBounds.second; )
|
||||
{
|
||||
GameObject* go = itr->second;
|
||||
++itr;
|
||||
go->AddObjectToRemoveList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -507,20 +525,16 @@ void PoolGroup<Quest>::SpawnObject(ActivePoolData& spawns, uint32 limit, uint32
|
||||
|
||||
// Method that does the respawn job on the specified creature
|
||||
template <>
|
||||
void PoolGroup<Creature>::ReSpawn1Object(PoolObject* obj)
|
||||
void PoolGroup<Creature>::ReSpawn1Object(PoolObject* /*obj*/)
|
||||
{
|
||||
if (CreatureData const* data = sObjectMgr->GetCreatureData(obj->guid))
|
||||
if (Creature* creature = ObjectAccessor::GetObjectInWorld(ObjectGuid(HIGHGUID_UNIT, data->id, obj->guid), (Creature*)NULL))
|
||||
creature->GetMap()->AddToMap(creature);
|
||||
// Creature is still on map, nothing to do
|
||||
}
|
||||
|
||||
// Method that does the respawn job on the specified gameobject
|
||||
template <>
|
||||
void PoolGroup<GameObject>::ReSpawn1Object(PoolObject* obj)
|
||||
void PoolGroup<GameObject>::ReSpawn1Object(PoolObject* /*obj*/)
|
||||
{
|
||||
if (GameObjectData const* data = sObjectMgr->GetGOData(obj->guid))
|
||||
if (GameObject* pGameobject = ObjectAccessor::GetObjectInWorld(ObjectGuid(HIGHGUID_GAMEOBJECT, data->id, obj->guid), (GameObject*)NULL))
|
||||
pGameobject->GetMap()->AddToMap(pGameobject);
|
||||
// GameObject is still on map, nothing to do
|
||||
}
|
||||
|
||||
// Nothing to do for a child Pool
|
||||
|
||||
Reference in New Issue
Block a user