aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Creature
diff options
context:
space:
mode:
authormegamage <none@none.none>2011-10-10 17:59:52 -0400
committermegamage <none@none.none>2011-10-10 17:59:52 -0400
commit3569121d80d92a08ff64e6af0a79be95a8188634 (patch)
tree92632498fe5578222a4c4c3f37e88807bc588271 /src/server/game/Entities/Creature
parent3ba22d0d06ee52c6692d436fa013186cf6a6b9cf (diff)
Remove/Add creature from/to map when it changes map.
Note: creatures was never supposed to change map, but now the core allows them to move with transports...
Diffstat (limited to 'src/server/game/Entities/Creature')
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 5682e0c0361..fa12529d101 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -2387,22 +2387,15 @@ const char* Creature::GetNameForLocaleIdx(LocaleConstant loc_idx) const
return GetName();
}
-//TODO: This may cause crash. Creature must be removed from the original grid and added to the new grid.
+//Do not if this works or not, moving creature to another map is very dangerous
void Creature::FarTeleportTo(Map* map, float X, float Y, float Z, float O)
{
- InterruptNonMeleeSpells(true);
- CombatStop();
- ClearComboPointHolders();
- DeleteThreatList();
- GetMotionMaster()->Clear(false);
- DestroyForNearbyPlayers();
-
- RemoveFromWorld();
+ CleanupBeforeRemoveFromMap(false);
+ GetMap()->RemoveFromMap(this, false);
ResetMap();
+ Relocate(X, Y, Z, O);
SetMap(map);
- AddToWorld();
-
- UpdatePosition(X, Y, Z, O, true);
+ GetMap()->AddToMap(this);
}
void Creature::SetPosition(float x, float y, float z, float o)