diff options
| author | megamage <none@none.none> | 2011-10-10 17:59:52 -0400 |
|---|---|---|
| committer | megamage <none@none.none> | 2011-10-10 17:59:52 -0400 |
| commit | 3569121d80d92a08ff64e6af0a79be95a8188634 (patch) | |
| tree | 92632498fe5578222a4c4c3f37e88807bc588271 /src/server/game/Entities/Creature | |
| parent | 3ba22d0d06ee52c6692d436fa013186cf6a6b9cf (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-x | src/server/game/Entities/Creature/Creature.cpp | 17 |
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) |
