aboutsummaryrefslogtreecommitdiff
path: root/src/bindings
diff options
context:
space:
mode:
authorgvcoman <none@none>2008-11-05 20:51:05 -0600
committergvcoman <none@none>2008-11-05 20:51:05 -0600
commit44bdb135f4ed5bb834795cfb928ccbb0504cf834 (patch)
tree7995df4957fb2e0e6cde895fbe3e85b7efde5fa7 /src/bindings
parent8d331f2b10cff29ee0571f7056ad353df6a3eabd (diff)
[svn] Implemented player on player and player on creature possession:
* Implemented packet and vision forwarding through possessed units * Added new OnPossess script call alerting scripts on when possession is applied/removed * Moved fall damage and fall under map calculations into the Player class * Added new PossessedAI that is applied only while possession on creature is active * Implemented summon possessed spell effect * Fixed Eyes of the Beast --HG-- branch : trunk
Diffstat (limited to 'src/bindings')
-rw-r--r--src/bindings/scripts/include/sc_creature.h3
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.cpp19
-rw-r--r--src/bindings/scripts/scripts/npc/npc_escortAI.h2
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);