diff options
Diffstat (limited to 'src/bindings/scripts')
| -rw-r--r-- | src/bindings/scripts/include/sc_creature.h | 3 | ||||
| -rw-r--r-- | src/bindings/scripts/scripts/npc/npc_escortAI.cpp | 19 | ||||
| -rw-r--r-- | src/bindings/scripts/scripts/npc/npc_escortAI.h | 2 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/bindings/scripts/include/sc_creature.h b/src/bindings/scripts/include/sc_creature.h index da40e2eab60..70a43a4df52 100644 --- a/src/bindings/scripts/include/sc_creature.h +++ b/src/bindings/scripts/include/sc_creature.h @@ -75,6 +75,9 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI //Called at waypoint reached or PointMovement end void MovementInform(uint32, uint32){} + // Called when AI is temporarily replaced or put back when possess is applied or removed + void OnPossess(bool apply) {} + //************* // Variables //************* diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp index 2c3163b9a7c..04efb0c952d 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.cpp +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.cpp @@ -256,6 +256,25 @@ void npc_escortAI::MovementInform(uint32 type, uint32 id) } } +void npc_escortAI::OnPossess(bool apply) +{ + // We got possessed in the middle of being escorted, store the point + // where we left off to come back to when possess is removed + if (IsBeingEscorted) + { + if (apply) + m_creature->GetPosition(LastPos.x, LastPos.y, LastPos.z); + else + { + Returning = true; + m_creature->GetMotionMaster()->MovementExpired(); + m_creature->GetMotionMaster()->MovePoint(WP_LAST_POINT, LastPos.x, LastPos.y, LastPos.z); + } + } +} + + + void npc_escortAI::AddWaypoint(uint32 id, float x, float y, float z, uint32 WaitTimeMs) { Escort_Waypoint t(id, x, y, z, WaitTimeMs); diff --git a/src/bindings/scripts/scripts/npc/npc_escortAI.h b/src/bindings/scripts/scripts/npc/npc_escortAI.h index 73928f7e2f8..a805bdd45bb 100644 --- a/src/bindings/scripts/scripts/npc/npc_escortAI.h +++ b/src/bindings/scripts/scripts/npc/npc_escortAI.h @@ -51,6 +51,8 @@ struct TRINITY_DLL_DECL npc_escortAI : public ScriptedAI void MovementInform(uint32, uint32); + void OnPossess(bool apply); + // EscortAI functions void AddWaypoint(uint32 id, float x, float y, float z, uint32 WaitTimeMs = 0); |
