aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-10-27 11:16:48 +0100
committerShauren <shauren.trinity@gmail.com>2013-10-27 11:16:48 +0100
commit54cc7dcb41f1a57f44d69bb45a6ebd16e259b389 (patch)
treefc6f27c669505ed510c7a4da0f74fbfdabf1df61 /src/server/game/Entities
parent75a790ca475c6af31730d331a3ab185f8abdd6e2 (diff)
parentf0794d75850a0c43938a9cddf2c42e0aab08d4ff (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.h3
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp31
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;
}