Core/Corpses: Fixed a possible crash adding bones to grid
Closes #15808 (cherry picked from commit ec1583df67605b7253a34dc5f153cdad5b16969e)
This commit is contained in:
1 parent
a08611dfef
commit
910fb00130
1 file changed
+10
-10
@@ -303,19 +303,19 @@ template<>
|
||||
void Map::AddToGrid(Corpse* obj, Cell const& cell)
|
||||
{
|
||||
NGridType* grid = getNGrid(cell.GridX(), cell.GridY());
|
||||
if (obj->IsWorldObject())
|
||||
// Corpses are a special object type - they can be added to grid via a call to AddToMap
|
||||
// or loaded through ObjectGridLoader.
|
||||
// Both corpses loaded from database and these freshly generated by Player::CreateCoprse are added to _corpsesByCell
|
||||
// ObjectGridLoader loads all corpses from _corpsesByCell even if they were already added to grid before it was loaded
|
||||
// so we need to explicitly check it here (Map::AddToGrid is only called from Player::BuildPlayerRepop, not from ObjectGridLoader)
|
||||
// to avoid failing an assertion in GridObject::AddToGrid
|
||||
if (grid->isGridObjectDataLoaded())
|
||||
{
|
||||
// Corpses are a special object type - they can be added to grid via a call to AddToMap
|
||||
// or loaded through ObjectGridLoader.
|
||||
// Both corpses loaded from database and these freshly generated by Player::CreateCoprse are added to _corpsesByCell
|
||||
// ObjectGridLoader loads all corpses from _corpsesByCell even if they were already added to grid before it was loaded
|
||||
// so we need to explicitly check it here (Map::AddToGrid is only called from Player::BuildPlayerRepop, not from ObjectGridLoader)
|
||||
// to avoid failing an assertion in GridObject::AddToGrid
|
||||
if (grid->isGridObjectDataLoaded())
|
||||
if (obj->IsWorldObject())
|
||||
grid->GetGridType(cell.CellX(), cell.CellY()).AddWorldObject(obj);
|
||||
else
|
||||
grid->GetGridType(cell.CellX(), cell.CellY()).AddGridObject(obj);
|
||||
}
|
||||
else
|
||||
grid->GetGridType(cell.CellX(), cell.CellY()).AddGridObject(obj); // bones. nothing special here
|
||||
}
|
||||
|
||||
template<class T>
|
||||
|
||||
Reference in new issue
Block a user