diff options
| author | megamage <none@none> | 2009-03-29 11:58:19 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-03-29 11:58:19 -0600 |
| commit | e528611141ca0923503933a0fe4d0f0720efaf91 (patch) | |
| tree | c6a3232a199cc203e09fabea0ffdc7bb5a715060 /src/game/Map.cpp | |
| parent | 3733af4d6ae2615a09c421b5a6a47c4085575f91 (diff) | |
*Fix a crash.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Map.cpp')
| -rw-r--r-- | src/game/Map.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index c00b774c68f..3511e7b5bca 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -1074,27 +1074,31 @@ bool Map::UnloadGrid(const uint32 &x, const uint32 &y, bool unloadAll) return false; DEBUG_LOG("Unloading grid[%u,%u] for map %u", x,y, i_id); + ObjectGridUnloader unloader(*grid); if(!unloadAll) { // Finish creature moves, remove and delete all creatures with delayed remove before moving to respawn grids // Must know real mob position before move - DoDelayedMovesAndRemoves(); + MoveAllCreaturesInMoveList(); // move creatures to respawn grids if this is diff.grid or to remove list unloader.MoveToRespawnN(); // Finish creature moves, remove and delete all creatures with delayed remove before unload - DoDelayedMovesAndRemoves(); + MoveAllCreaturesInMoveList(); } - else - RemoveAllObjectsInRemoveList(); - //assert(grid.NoWorldObjectInGrid()); + ObjectGridCleaner cleaner(*grid); + cleaner.CleanN(); + + RemoveAllObjectsInRemoveList(); + unloader.UnloadN(); - //assert(grid.NoWorldObjectInGrid()); - //assert(grid.NoGridObjectInGrid()); + + assert(i_objectsToRemove.empty()); + delete grid; setNGrid(NULL, x, y); } |
