diff --git a/src/game/Map.cpp b/src/game/Map.cpp index c8ecdcf0c..b2d000aa4 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -735,9 +735,10 @@ void Map::Remove(Player *player, bool remove) { if(remove) player->CleanupsBeforeDelete(); + else + player->RemoveFromWorld(); // invalid coordinates - player->RemoveFromWorld(); player->ResetMap(); if( remove ) @@ -760,8 +761,9 @@ void Map::Remove(Player *player, bool remove) if(remove) player->CleanupsBeforeDelete(); + else + player->RemoveFromWorld(); - player->RemoveFromWorld(); RemoveFromGrid(player,grid,cell); SendRemoveTransports(player); @@ -830,7 +832,11 @@ Map::Remove(T *obj, bool remove) if(obj->isActiveObject()) RemoveFromActive(obj); - obj->RemoveFromWorld(); + if(remove) + obj->CleanupsBeforeDelete(); + else + obj->RemoveFromWorld(); + RemoveFromGrid(obj,grid,cell); UpdateObjectVisibility(obj,cell,p); @@ -2161,9 +2167,6 @@ void Map::RemoveAllObjectsInRemoveList() Remove((GameObject*)obj,true); break; case TYPEID_UNIT: - // in case triggered sequence some spell can continue casting after prev CleanupsBeforeDelete call - // make sure that like sources auras/etc removed before destructor start - ((Creature*)obj)->CleanupsBeforeDelete (); Remove((Creature*)obj,true); break; default: @@ -3487,8 +3490,6 @@ void Map::SendObjectUpdates() { Object* obj = *i_objectsToClientUpdate.begin(); i_objectsToClientUpdate.erase(i_objectsToClientUpdate.begin()); - if (!obj) - continue; obj->BuildUpdateData(update_players); } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 5b3dd8f9f..c8e9ca2e5 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1757,11 +1757,12 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati } GetSession()->SendPacket( &data ); SendSavedInstances(); - - // remove from old map now - if(oldmap) oldmap->Remove(this, false); } + // remove from old map now + if(oldmap) + oldmap->Remove(this, false); + // new final coordinates float final_x = x; float final_y = y; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 521628138..fb008bb78 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8724" + #define REVISION_NR "8725" #endif // __REVISION_NR_H__