aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp12
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp6
-rw-r--r--src/server/game/Scripting/ScriptMgr.h4
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 */