diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 5e5eecea068..55b840d94e4 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -564,20 +564,22 @@ void Transport::Update(uint32 p_diff) } else { - Relocate(m_curr->second.x, m_curr->second.y, m_curr->second.z, GetAngle(m_next->second.x,m_next->second.y) + 3.1415926f); + Relocate(m_curr->second.x, m_curr->second.y, m_curr->second.z, GetAngle(m_next->second.x,m_next->second.y) + float(M_PI)); UpdateNPCPositions(); // COME BACK MARKER } + sScriptMgr.OnRelocate(this, m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z); + m_nextNodeTime = m_curr->first; if (m_curr == m_WayPoints.begin() && (sLog.getLogFilter() & LOG_FILTER_TRANSPORT_MOVES) == 0) - sLog.outDetail(" ************ BEGIN ************** %s", this->m_name.c_str()); + sLog.outDetail(" ************ BEGIN ************** %s", m_name.c_str()); if ((sLog.getLogFilter() & LOG_FILTER_TRANSPORT_MOVES) == 0) - sLog.outDetail("%s moved to %d %f %f %f %d", this->m_name.c_str(), m_curr->second.id, m_curr->second.x, m_curr->second.y, m_curr->second.z, m_curr->second.mapid); - - sScriptMgr.OnTransportUpdate(this, p_diff); + sLog.outDetail("%s moved to %d %f %f %f %d", m_name.c_str(), m_curr->second.id, m_curr->second.x, m_curr->second.y, m_curr->second.z, m_curr->second.mapid); } + + sScriptMgr.OnTransportUpdate(this, p_diff); } void Transport::UpdateForMap(Map const* targetMap) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 9487baa5811..86336d138c6 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1006,6 +1006,12 @@ void ScriptMgr::OnTransportUpdate(Transport* transport, uint32 diff) tmpscript->OnUpdate(transport, diff); } +void ScriptMgr::OnRelocate(Transport* transport, uint32 mapId, float x, float y, float z) +{ + GET_SCRIPT(TransportScript, transport->GetScriptId(), tmpscript); + tmpscript->OnRelocate(transport, mapId, x, y, z); +} + void SpellHandlerScript::RegisterSelf() { ScriptMgr::ScriptRegistry<SpellHandlerScript>::AddScript(this); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 7cb81724497..971924b6b58 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -729,6 +729,9 @@ class TransportScript : public ScriptObject, public UpdatableScript<Transport> // Called when a player exits the transport. virtual void OnRemovePassenger(Transport* transport, Player* player) { } + + // Called when a transport moves. + virtual void OnRelocate(Transport* transport, uint32 mapId, float x, float y, float z) { } }; // Placed here due to ScriptRegistry::AddScript dependency. @@ -895,6 +898,7 @@ class ScriptMgr void OnAddCreaturePassenger(Transport* transport, Creature* creature); void OnRemovePassenger(Transport* transport, Player* player); void OnTransportUpdate(Transport* transport, uint32 diff); + void OnRelocate(Transport* transport, uint32 mapId, float x, float y, float z); public: /* ScriptRegistry */ |