diff options
-rw-r--r-- | src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.h | 2 | ||||
-rw-r--r-- | src/server/game/Maps/Map.cpp | 11 |
4 files changed, 25 insertions, 2 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index 7cb4c07ba1e..82d7de0d9bf 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -58,8 +58,17 @@ BattlegroundIC::BattlegroundIC() BattlegroundIC::~BattlegroundIC() { - delete gunshipHorde; - delete gunshipAlliance; + if (gunshipHorde) + { + gunshipHorde->RemoveFromWorld(); + delete gunshipHorde; + } + + if (gunshipAlliance) + { + gunshipAlliance->RemoveFromWorld(); + delete gunshipAlliance; + } } void BattlegroundIC::HandlePlayerResurrect(Player* player) diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index f9a0a7bb5e7..59359e59fdc 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -39,6 +39,7 @@ Transport::Transport() : GameObject(), Transport::~Transport() { + UnloadStaticPassengers(); } bool Transport::Create(uint32 guidlow, uint32 entry, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress) diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h index 22a54e8428d..0d020fe2c34 100644 --- a/src/server/game/Entities/Transport/Transport.h +++ b/src/server/game/Entities/Transport/Transport.h @@ -67,6 +67,8 @@ class Transport : public GameObject, public TransportBase void EnableMovement(bool enabled); + TransportTemplate const* GetTransportTemplate() const { return _transportInfo; } + private: void MoveToNextWaypoint(); float CalculateSegmentPos(float perc); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 179a4cba878..9abb78187a9 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -63,6 +63,17 @@ Map::~Map() obj->ResetMap(); } + for (TransportsContainer::iterator itr = _transports.begin(); itr != _transports.end(); ++itr) + { + Transport* transport = *itr; + // Destroy local transports + if (transport->GetTransportTemplate()->inInstance) + { + transport->RemoveFromWorld(); + delete transport; + } + } + if (!m_scriptSchedule.empty()) sScriptMgr->DecreaseScheduledScriptCount(m_scriptSchedule.size()); |