diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-10-27 11:16:48 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-10-27 11:16:48 +0100 |
| commit | 54cc7dcb41f1a57f44d69bb45a6ebd16e259b389 (patch) | |
| tree | fc6f27c669505ed510c7a4da0f74fbfdabf1df61 /src/server/game/Entities | |
| parent | 75a790ca475c6af31730d331a3ab185f8abdd6e2 (diff) | |
| parent | f0794d75850a0c43938a9cddf2c42e0aab08d4ff (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 3 | ||||
| -rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 31 |
2 files changed, 21 insertions, 13 deletions
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index 574ee7e64f3..82e4ee2e7bc 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -656,9 +656,6 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject float m_SightDistance, m_CombatDistance; - void SetGUIDTransport(uint32 guid) { guid_transport=guid; } - uint32 GetGUIDTransport() { return guid_transport; } - void FarTeleportTo(Map* map, float X, float Y, float Z, float O); bool m_isTempWorldObject; //true when possessed diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 47493e281e5..50526136ab5 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -40,6 +40,7 @@ Transport::Transport() : GameObject(), Transport::~Transport() { + ASSERT(_passengers.empty()); UnloadStaticPassengers(); } @@ -192,20 +193,23 @@ void Transport::Update(uint32 diff) void Transport::AddPassenger(WorldObject* passenger) { if (_passengers.insert(passenger).second) + { TC_LOG_DEBUG(LOG_FILTER_TRANSPORTS, "Object %s boarded transport %s.", passenger->GetName().c_str(), GetName().c_str()); - if (Player* plr = passenger->ToPlayer()) - sScriptMgr->OnAddPassenger(this, plr); + if (Player* plr = passenger->ToPlayer()) + sScriptMgr->OnAddPassenger(this, plr); + } } void Transport::RemovePassenger(WorldObject* passenger) { if (_passengers.erase(passenger) || _staticPassengers.erase(passenger)) // static passenger can remove itself in case of grid unload + { TC_LOG_DEBUG(LOG_FILTER_TRANSPORTS, "Object %s removed from transport %s.", passenger->GetName().c_str(), GetName().c_str()); - - if (Player* plr = passenger->ToPlayer()) - sScriptMgr->OnRemovePassenger(this, plr); + if (Player* plr = passenger->ToPlayer()) + sScriptMgr->OnRemovePassenger(this, plr); + } } Creature* Transport::CreateNPCPassenger(uint32 guid, CreatureData const* data) @@ -239,9 +243,13 @@ Creature* Transport::CreateNPCPassenger(uint32 guid, CreatureData const* data) return NULL; } - map->AddToMap(creature); - _staticPassengers.insert(creature); + if (!map->AddToMap(creature)) + { + delete creature; + return NULL; + } + _staticPassengers.insert(creature); sScriptMgr->OnAddCreaturePassenger(this, creature); return creature; } @@ -275,10 +283,13 @@ GameObject* Transport::CreateGOPassenger(uint32 guid, GameObjectData const* data return NULL; } - map->AddToMap(go); - _staticPassengers.insert(go); + if (!map->AddToMap(go)) + { + delete go; + return NULL; + } - //sScriptMgr->OnAddCreaturePassenger(this, go); + _staticPassengers.insert(go); return go; } |
