rnd-20010121-1-src
authorHolger Schemel <info@artsoft.org>
Sun, 21 Jan 2001 15:16:57 +0000 (16:16 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:35:54 +0000 (10:35 +0200)
CHANGES
src/game.c
src/init.c
src/main.h
src/tools.c

diff --git a/CHANGES b/CHANGES
index 600a5460e74c80576c74605ced67479317bae028..ec968c99bfb655b5c730d7640a4cce7dd7474c04 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+Release Version 2.0.1 [?? ??? 2001]
+-----------------------------------
+       - bug in explosion code fixed that broke level 24 of "Baby Ghost Mine"
+       - Supaplex "orange disk" emulation bug fixed thanks to Mihail Milushev
+
 Release Version 2.0.0 [01 JAN 2001]
 -----------------------------------
        - major code redesign to maintain generic game functions in a separate
@@ -5,9 +10,9 @@ Release Version 2.0.0 [01 JAN 2001]
        - can be compiled with SDL library to build native Windows version
        - DOS and Windows versions can be compiled with gcc cross-compiler
        - trying to open already busy audio device does not block the game
-       - fixed network playing bug (patch from web site)
+       - bug in network playing code fixed (patch from web site)
        - SDL version can load and play music modules
-       - fixed element description in level editor for EM doors and keys
+       - bug in level editor fixed for EM doors and keys element description
        - sound sample frequency raised from 8 kHz to 22 kHz
 
 Release Version 1.4.0 [27 OCT 1999]
index 811d103aa769b3c0019421b88590531f9520f9a6..65fff98e2ae17ea72b48b3aa81b902dbcf7aacab 100644 (file)
@@ -695,9 +695,9 @@ void InitGame()
     for (i=0; i<ep_slippery_num; i++)
     {
       if (game.version >= GAME_VERSION_2_0)
-       Elementeigenschaften1[ep_slippery[i]] |= EP_BIT_SLIPPERY;
+       Elementeigenschaften2[ep_slippery[i]] |= EP_BIT_SLIPPERY_GEMS;
       else
-       Elementeigenschaften1[ep_slippery[i]] &= ~EP_BIT_SLIPPERY;
+       Elementeigenschaften2[ep_slippery[i]] &= ~EP_BIT_SLIPPERY_GEMS;
     }
   }
 
@@ -2585,9 +2585,10 @@ void StartMoving(int x, int y)
             element != EL_DX_SUPABOMB)
 #endif
 #else
-    else if (IS_SLIPPERY(Feld[x][y+1]) &&
+    else if ((IS_SLIPPERY(Feld[x][y+1]) ||
+             (IS_SLIPPERY_GEMS(Feld[x][y+1]) && IS_GEM(element))) &&
             !IS_FALLING(x, y+1) && !JustStopped[x][y+1] &&
-            element != EL_DX_SUPABOMB)
+            element != EL_DX_SUPABOMB && element != EL_SP_DISK_ORANGE)
 #endif
     {
       boolean left  = (x>0 && IS_FREE(x-1, y) &&
@@ -4420,15 +4421,17 @@ void GameActions()
     {
       StartMoving(x, y);
 
-      if (IS_GEM(element))
+      if (IS_GEM(element) || element == EL_SP_INFOTRON)
        EdelsteinFunkeln(x, y);
     }
     else if (IS_MOVING(x, y))
       ContinueMoving(x, y);
     else if (IS_ACTIVE_BOMB(element))
       CheckDynamite(x, y);
+#if 0
     else if (element == EL_EXPLODING && !game.explosions_delayed)
       Explode(x, y, Frame[x][y], EX_NORMAL);
+#endif
     else if (element == EL_AMOEBING)
       AmoebeWaechst(x, y);
     else if (element == EL_DEAMOEBING)
@@ -4518,16 +4521,21 @@ void GameActions()
     }
   }
 
+#if 0
   if (game.explosions_delayed)
+#endif
   {
     game.explosions_delayed = FALSE;
 
     for (y=0; y<lev_fieldy; y++) for (x=0; x<lev_fieldx; x++)
     {
+      element = Feld[x][y];
+
       if (ExplodeField[x][y])
        Explode(x, y, EX_PHASE_START, ExplodeField[x][y]);
-      else if (Feld[x][y] == EL_EXPLODING)
+      else if (element == EL_EXPLODING)
        Explode(x, y, Frame[x][y], EX_NORMAL);
+
       ExplodeField[x][y] = EX_NO_EXPLOSION;
     }
 
index a2cae6bce4d1f7dc2ed6d6701656fa5fd0a99bd9..2d6017f3708d77e5e124a9413e137c0b1a3e8a42 100644 (file)
@@ -1098,8 +1098,7 @@ void InitElementProperties()
     EL_EDELSTEIN_GELB,
     EL_EDELSTEIN_ROT,
     EL_EDELSTEIN_LILA,
-    EL_DIAMANT,
-    EL_SP_INFOTRON
+    EL_DIAMANT
   };
   static int ep_gem_num = sizeof(ep_gem)/sizeof(int);
 
index d626cd59a096fba60955bd5ed02c362b4a74d420..4995df65ac63bbba26597089d006f56208c00fac 100644 (file)
@@ -96,6 +96,7 @@
 #define EP_BIT_BELT            (1 << 0)
 #define EP_BIT_BELT_SWITCH     (1 << 1)
 #define EP_BIT_TUBE            (1 << 2)
+#define EP_BIT_SLIPPERY_GEMS   (1 << 3)
 
 #define IS_AMOEBALIVE(e)       (Elementeigenschaften1[e] & EP_BIT_AMOEBALIVE)
 #define IS_AMOEBOID(e)         (Elementeigenschaften1[e] & EP_BIT_AMOEBOID)
 #define IS_BELT(e)             (Elementeigenschaften2[e] & EP_BIT_BELT)
 #define IS_BELT_SWITCH(e)      (Elementeigenschaften2[e] & EP_BIT_BELT_SWITCH)
 #define IS_TUBE(e)             (Elementeigenschaften2[e] & EP_BIT_TUBE)
+#define IS_SLIPPERY_GEMS(e)    (Elementeigenschaften2[e] & EP_BIT_SLIPPERY_GEMS)
 
 #define IS_PLAYER(x,y)         (ELEM_IS_PLAYER(StorePlayer[x][y]))
 
@@ -1525,7 +1527,7 @@ extern int                num_element_info;
 #define SETUPINPUT             9
 #define CALIBRATION            10
 
-#define PROGRAM_VERSION_STRING "2.0.0"
+#define PROGRAM_VERSION_STRING "2.0.1"
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
 #define PROGRAM_RIGHTS_STRING  "Copyright ^1995-2001 by"
index b1c832c04e6f839302880dc74e8c9f30c04d5bc3..05d2610d5ce7ec003a93db7e1864334dbcdb4dbb 100644 (file)
@@ -1107,7 +1107,9 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element,
   else if ((element == EL_FELSBROCKEN ||
            element == EL_SP_ZONK ||
            element == EL_BD_ROCK ||
-           IS_GEM(element)) && !cut_mode)
+           element == EL_SP_INFOTRON ||
+           IS_GEM(element))
+          && !cut_mode)
   {
     if (uy >= lev_fieldy-1 || !IS_BELT(Feld[ux][uy+1]))
     {