changeset 1884:c77de46b31b1

Actor::AI_Pursue1 cleaned up
author Grumpy7
date Sat, 19 Oct 2013 07:02:05 +0200
parents 7d334cc596e0
children 70719fa68500
files Actor.cpp
diffstat 1 files changed, 14 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/Actor.cpp	Sat Oct 19 06:48:02 2013 +0200
+++ b/Actor.cpp	Sat Oct 19 07:02:05 2013 +0200
@@ -2124,28 +2124,17 @@
 //----- (00402AD7) --------------------------------------------------------
 void Actor::AI_Pursue1(unsigned int uActorID, unsigned int a2, signed int arg0, signed int uActionLength, AIDirection *pDir)
 {
-  unsigned int v5; // edi@1
   int v6; // eax@1
   Actor *v7; // ebx@1
   unsigned int v8; // ecx@1
-  char v9; // zf@1
   AIDirection *v10; // esi@6
-  //int v12; // ecx@19
-  //unsigned int v13; // eax@19
   AIDirection a3; // [sp+Ch] [bp-5Ch]@7
-  //AIDirection v15; // [sp+28h] [bp-40h]@7
-  AIDirection v16; // [sp+44h] [bp-24h]@7
-  //unsigned int v17; // [sp+60h] [bp-8h]@1
   unsigned int v18; // [sp+64h] [bp-4h]@1
-  //int v19; // [sp+70h] [bp+8h]@19
 
-  v5 = uActorID;
   v6 = 0;
   v7 = &pActors[uActorID];
-  v18 = a2;
   v8 = PID(OBJECT_Actor,uActorID);
-  v9 = v7->pMonsterInfo.uFlying == 0;
-  if ( !v9 && !pParty->bFlying )
+  if ( v7->pMonsterInfo.uFlying != 0 && !pParty->bFlying )                //TODO: Does v6 have a point?
   {
     if ( v7->pMonsterInfo.uMissleAttack1Type )
       v6 = v7->uActorRadius + 512;
@@ -2153,34 +2142,37 @@
       v6 = pParty->uPartyHeight;
   }
 
-  v10 = pDir;
-  if ( !pDir )
+  if ( pDir == nullptr )
   {
-    memcpy(&v16, Actor::GetDirectionInfo(v8, a2, &a3, v6), sizeof(v16));
-    v10 = &v16;
+    v10 = Actor::GetDirectionInfo(v8, a2, &a3, v6);
+  }
+  else
+  {
+    v10 = pDir;
   }
   if ( MonsterStats::BelongsToSupertype(v7->pMonsterInfo.uID, MONSTER_SUPERTYPE_TREANT) )
   {
     if ( !uActionLength )
       uActionLength = 256;
-    Actor::AI_StandOrBored(v5, 4, uActionLength, v10);
+    Actor::AI_StandOrBored(uActorID, 4, uActionLength, v10);
     return;
   }
-  if ( (double)(signed int)v10->uDistance < 307.2 )
+  if ( v10->uDistance < 307.2 )
   {
     if ( !uActionLength )
       uActionLength = 256;
-    Actor::AI_Stand(v5, v18, uActionLength, v10);
+    Actor::AI_Stand(uActorID, a2, uActionLength, v10);
     return;
   }
-  if ( !v7->uMovementSpeed )
+  if ( v7->uMovementSpeed == 0 )
   {
-    Actor::AI_Stand(v5, v18, uActionLength, v10);
+    Actor::AI_Stand(uActorID, a2, uActionLength, v10);
     return;
   }
-  v18 = 16;
   if ( arg0 % 2 )
     v18 = -16;
+  else
+    v18 = 16;
 
   v7->uYawAngle = stru_5C6E00->Atan2(
                     pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v18 + stru_5C6E00->uIntegerPi + v10->uYawAngle), v10->uDistanceXZ) - v7->vPosition.x,