diff mm7_2.cpp @ 90:d61f6bc04bf2

more pointer fixes
author zipi
date Wed, 06 Feb 2013 22:32:43 +0000
parents 98cd93e14777
children 81e93310f73c 2fb33d31ca0d
line wrap: on
line diff
--- a/mm7_2.cpp	Wed Feb 06 21:19:42 2013 +0000
+++ b/mm7_2.cpp	Wed Feb 06 22:32:43 2013 +0000
@@ -3225,7 +3225,7 @@
 void __cdecl sub_4BBCDD()
 {
   signed int v0; // ebp@3
-  char *v1; // eax@4
+  Actor *v1; // eax@4
   __int16 v2; // cx@5
   int v3; // esi@8
   Player *v4; // esi@14
@@ -3242,22 +3242,22 @@
     else
     {
       v0 = 0;
-      if ( (signed int)uNumActors <= 0 )
-        goto LABEL_23;
-      v1 = (char *)&pActors[0].uAIState;
-      v7 = uNumActors;
-      do
-      {
-        v2 = *(short *)v1;
-        if ( *(short *)v1 == 5 || v2 == 11 || v2 == 19 || (v3 = *((int *)v1 + 159)) != 0 && (v3 & 7) == 4 )
-          ++v0;
-        v1 += 836;
-        --v7;
-      }
-      while ( v7 );
-      if ( v0 >= (signed int)uNumActors )
-      {
-LABEL_23:
+      if ( (signed int)uNumActors > 0 )
+	  {
+		  v1 = pActors;//[0].uAIState;
+		  v7 = uNumActors;
+		  do
+		  {
+			v2 = v1->uAIState;
+			if ( v1->uAIState == 5 || v2 == 11 || v2 == 19 || (v3 = v1->uSummonerID) != 0 && (v3 & 7) == 4 )
+			  ++v0;
+			++v1;
+			--v7;
+		  }
+		  while ( v7 );
+	  }
+      if ( v0 >= (signed int)uNumActors || (signed int)uNumActors <= 0)
+      {
         uDialogueType = 91;
         v4 = pParty->pPlayers;
         ++*((char *)&pParty->field_75A[3] + (unsigned __int8)pParty->field_7B5_in_arena_quest + 1);
@@ -7781,7 +7781,7 @@
 signed int __fastcall sub_44FA4C_spawn_light_elemental(int a1, int a2, int a3)
 {
   signed int v3; // ecx@6
-  char *v4; // edx@7
+  Actor *v4; // edx@7
   signed int result; // eax@13
   Actor *v6; // esi@16
   char *v7; // ebx@16
@@ -7820,17 +7820,17 @@
   v20 = uNumActors;
   if ( (signed int)uNumActors > 0 )
   {
-    v4 = (char *)&pActors[0].uAIState;
-    while ( *(short *)v4 != Removed )
+    v4 = pActors;//[0].uAIState;
+    while ( v4->uAIState != Removed )
     {
       ++v3;
-      v4 += 836;
+      ++v4;
       if ( v3 >= (signed int)uNumActors )
-        goto LABEL_12;
-    }
-    v20 = v3;
-  }
-LABEL_12:
+        break;
+    }
+	if( v3 < (signed int)uNumActors )
+		v20 = v3;
+  }
   if ( v20 != uNumActors || (result = uNumActors + 1, (signed int)(uNumActors + 1) < 500) )
   {
     v21 = 0;
@@ -15982,7 +15982,7 @@
 int __fastcall sub_46A89E(int a1, int a2, signed int a3)
 {
   signed int v3; // edi@1
-  char *v4; // esi@2
+  Actor *v4; // esi@2
   int v5; // ebx@3
   int v6; // eax@3
   int v7; // ebx@3
@@ -16004,12 +16004,12 @@
   v19 = 0;
   if ( (signed int)uNumActors > 0 )
   {
-    v4 = (char *)&pActors[0].uAIState;
+    v4 = pActors;//[0].uAIState;
     do
     {
-      v5 = abs(*((short *)v4 - 17) - pParty->vPosition.x);
-      v17 = abs(*((short *)v4 - 16) - pParty->vPosition.y);
-      v18 = abs(*((short *)v4 - 15) - pParty->vPosition.z);
+	  v5 = abs(v4->vPosition.x - pParty->vPosition.x);
+	  v17 = abs(v4->vPosition.y - pParty->vPosition.y);
+	  v18 = abs(v4->vPosition.z - pParty->vPosition.z);
       v6 = v5;
       v7 = v17;
       v8 = v18;
@@ -16033,8 +16033,8 @@
       }
       if ( (signed int)(((unsigned int)(11 * v7) >> 5) + (v8 >> 2) + v6) <= a3 )
       {
-        v12 = *(short *)v4;
-        if ( *(short *)v4 != 5 )
+		v12 = v4->uAIState;
+        if ( v4->uAIState != 5 )
         {
           if ( v12 != 4 )
           {
@@ -16055,7 +16055,7 @@
         }
       }
       ++v3;
-      v4 += 836;
+      ++v4;
     }
     while ( v3 < (signed int)uNumActors );
   }
@@ -16353,7 +16353,7 @@
 void LayingItem::_46BEF1_apply_spells()
 {
   LayingItem *v1; // edi@1
-  char *v2; // esi@2
+  Actor *v2; // esi@2
   __int16 v3; // fps@4
   unsigned __int8 v4; // c0@4
   unsigned __int8 v5; // c3@4
@@ -16363,28 +16363,28 @@
   v1 = this;
   if ( (signed int)uNumActors > 0 )
   {
-    v2 = (char *)&pActors[0].vPosition.y;
+    v2 = pActors;//[0].vPosition.y;
     do
     {
-      if ( ((Actor *)(v2 - 144))->CanAct() )
+      if ( v2->CanAct() )
       {
         //UNDEF(v3);
         if ( !(v4 | v5) )
         {
-          if ( stru_50C198.GetMagicalResistance((Actor *)(v2 - 144), 0xAu) )
-          {
-            ((SpellBuff *)&v2[16 * v1->field_48 + 68])->Apply(
+          if ( stru_50C198.GetMagicalResistance(v2, 0xAu) )
+          {
+			  v2->pActorBuffs[v1->field_48].Apply(
               pParty->uTimePlayed + (signed int)(signed __int64)((double)(v1->field_4C << 7) * 0.033333335),
               v1->field_50,
               4u,
               0,
               0);
-            *(v2 - 106) |= 8u;
+            HIWORD(v2->uAttributes) |= 8u;
           }
         }
       }
       ++v6;
-      v2 += 836;
+      ++v2;
     }
     while ( v6 < (signed int)uNumActors );
   }
@@ -16730,7 +16730,7 @@
                     pActors[v108].uAIState = Standing;
                     pActors[v108].UpdateAnimation();
                   }
-                  ((SpellBuff *)((char *)&pActors[0].pActorBuffs[v136] + v108 * 836))->Apply(
+                  pActors[v108].pActorBuffs[v136].Apply(
                     pParty->uTimePlayed + (signed int)(signed __int64)((double)(v137 << 7) * 0.033333335),
                     v152,
                     v150,