diff mm7_3.cpp @ 921:3696848c0413

meteorite rain and other spells fix
author Ritor1
date Tue, 30 Apr 2013 20:08:42 +0600
parents 34ed2d5e7cfb
children a78f08dbeb88
line wrap: on
line diff
--- a/mm7_3.cpp	Sun Apr 28 19:11:36 2013 +0600
+++ b/mm7_3.cpp	Tue Apr 30 20:08:42 2013 +0600
@@ -11522,34 +11522,36 @@
   v10.uViewportZ = 639;
   v10.uViewportW = 479;
   v12 = 0;
-  v3 = (char *)&pOtherOverlayList->pOverlays[0].field_C;
-  do
-  {
-    if ( *((short *)v3 - 3) > 0 )
-    {
-      result = *((short *)v3 - 6);
-      if ( result >= 300 )
-      {
-        v4 = result;
-        v5 = result == v2 + 320 | result == v2 + 330 | result == v2 + 340 | result == v2 + 350;
-        result = v2 + 310;
-        if ( v4 == v2 + 310 | v5 )
-        {
-          if ( !*(short *)v3 )
-          {
-            v6 = pSpriteFrameTable->GetFrame(
-                   pOverlayList->pOverlays[*((short *)v3 - 5)].uSpriteFramesetID,
-                   *((short *)v3 - 4));
+  //v3 = (char *)&pOtherOverlayList->pOverlays[0].field_C;
+  //do
+  for ( uint i = 0; i < 50; ++i )
+  {
+    if ( pOtherOverlayList->pOverlays[i].field_6 > 0 )
+    {
+      result = pOtherOverlayList->pOverlays[i].field_0;
+      if ( pOtherOverlayList->pOverlays[i].field_0 >= 300 )
+      {
+        //v4 = result;
+        v5 = pOtherOverlayList->pOverlays[i].field_0 == v2 + 320 
+           | pOtherOverlayList->pOverlays[i].field_0 == v2 + 330 | pOtherOverlayList->pOverlays[i].field_0 == v2 + 340 
+           | pOtherOverlayList->pOverlays[i].field_0 == v2 + 350;
+        pOtherOverlayList->pOverlays[i].field_0 = v2 + 310;
+        if ( pOtherOverlayList->pOverlays[i].field_0 == v2 + 310 | v5 )
+        {
+          if ( !pOtherOverlayList->pOverlays[i].field_0 )
+          {
+            v6 = pSpriteFrameTable->GetFrame(pOverlayList->pOverlays[pOtherOverlayList->pOverlays[i].field_2].uSpriteFramesetID,
+                   pOtherOverlayList->pOverlays[i].field_4);
             v7 = v6;
-            v11 = *((int *)v3 + 1);
+            v11 = pOtherOverlayList->pOverlays[i].field_E;
             v13 = v6->scale;
             v13 = (unsigned __int64)(v11 * (signed __int64)v13) >> 16;
-            v10.uScreenSpaceX = *((short *)v3 - 2);
-            v10.uScreenSpaceY = *((short *)v3 - 1);
+            v10.uScreenSpaceX = pOtherOverlayList->pOverlays[i].field_8;
+            v10.uScreenSpaceY = pOtherOverlayList->pOverlays[i].field_A;
             v10._screenspace_x_scaler_packedfloat = v13;
             v10._screenspace_y_scaler_packedfloat = v13;
             v10.pPalette = PaletteManager::Get_Dark_or_Red_LUT(v6->uPaletteIndex, 0, 1);
-            v8 = *((short *)v3 - 5);
+            v8 = pOtherOverlayList->pOverlays[i].field_2;
             v10.sZValue = 0;
             v10.uFlags = 0;
             v9 = pOverlayList->pOverlays[v8].uOverlayType;
@@ -11563,9 +11565,9 @@
         }
       }
     }
-    v3 += 20;
-  }
-  while ( (signed int)v3 < (signed int)&pOverlayList->pOverlays );
+    //v3 += 20;
+  }
+  //while ( (signed int)v3 < (signed int)&pOverlayList->pOverlays );
   return result;
 }