aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp13
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp1
-rw-r--r--src/server/game/Entities/Transport/Transport.h2
-rw-r--r--src/server/game/Maps/Map.cpp11
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());