rnd-20091020-1-src
[rocksndiamonds.git] / src / game_sp / Murphy.c
index a646978b61b1fb617845c383ae5c8700c698acfd..a2063fda6cea7ef3c506018950f57f8fee9e843b 100644 (file)
@@ -932,7 +932,12 @@ loc_g_6756:
     return subAnimateMurphy;
 
 #if 1
-  printf("::: Murphy.c: !!!!!!!!!! GAME SOLVED !!!!!!!!!!\n");
+  if (!game_sp_info.LevelSolved)
+    printf("::: Murphy.c: !!!!!!!!!! LEVEL %d SOLVED !!!!!!!!!!\n",LevelNumber);
+#endif
+
+#if 1
+  game_sp_info.LevelSolved = TRUE;
 #endif
 
   subSoundFXExit();
@@ -2328,6 +2333,34 @@ int subSpPortTest(int si)
 
   int i, cx, bx;
 
+#if 1
+  cx = LInfo.SpecialPortCount; // number of special ports
+
+  for (i = 0; i < cx; i++)
+  {
+#if 1
+    /* this assumes that PortLocation is stored as big endian */
+    bx = LInfo.SpecialPort[i].PortLocation;
+#else
+    /* this assumes that PortLocation is stored as little endian */
+    bx = HighByte(LInfo.SpecialPort[i].PortLocation);
+    MovHighByte(&bx, LowByte(LInfo.SpecialPort[i].PortLocation));
+#endif
+
+    if (bx / 2 == si)
+    {
+      GravityFlag = LInfo.SpecialPort[i].Gravity;
+      FreezeZonks = LInfo.SpecialPort[i].FreezeZonks;
+      SnikSnaksElectronsFrozen = LInfo.SpecialPort[i].FreezeEnemies;
+
+      // RandomTime = RandomTime Xor RandomSeed 'is RandomTime used at all? no!
+
+      break;
+    }
+  }
+
+#else
+
   cx = LInfo.SpecialPortCount; // number of special ports
   for (i = 1; i <= cx; i++)
   {
@@ -2342,9 +2375,9 @@ int subSpPortTest(int si)
         //        RandomTime = RandomTime Xor RandomSeed 'is RandomTime used at all? no!
         i = cx + 1;
       }
-
     }
   }
+#endif
 
   return subSpPortTest;
 } // subSpPortTest