rnd-20030801-1-src
authorHolger Schemel <info@artsoft.org>
Fri, 1 Aug 2003 00:01:05 +0000 (02:01 +0200)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:42:56 +0000 (10:42 +0200)
24 files changed:
CHANGES
Makefile
src/conf_chr.c
src/conf_chr.h
src/conf_cus.c
src/conf_cus.h
src/conf_e2g.c
src/conf_e2s.c
src/conf_esg.c
src/conf_fnt.c
src/conf_gfx.c
src/conf_gfx.h
src/conf_snd.h
src/conftime.h
src/editor.c
src/files.c
src/game.c
src/init.c
src/libgame/gadgets.c
src/libgame/setup.c
src/main.c
src/main.h
src/screens.c
src/tools.c

diff --git a/CHANGES b/CHANGES
index 71822bc7008a6d86b75590d08e86d9c87e558cbd..2e7bb1d14d85175af4bc976ddfd3d8df286645f9 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,6 @@
-Pre-Release Version 2.2.0rc8 [?? ??? ????]
+Pre-Release Version 3.3.0 [?? ??? ????]
 ------------------------------------------
+       - fixed Supaplex gravity tubes
 
 Pre-Release Version 2.2.0rc7 [17 JUL 2003]
 ------------------------------------------
index bdd285b5e775938c501bd4dd53fd57723470f574..0c22aefb3fa9bcb1696e9a9c507b3dde989eaf00 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -49,8 +49,8 @@ CROSS_PATH_WIN32=/usr/local/cross-tools/i386-mingw32msvc
 SRC_DIR = src
 MAKE_CMD = $(MAKE) -C $(SRC_DIR)
 
-DEFAULT_TARGET = x11
-DEFAULT_TARGET = sdl
+DEFAULT_TARGET = x11
+DEFAULT_TARGET = sdl
 
 all:
        @$(MAKE_CMD) TARGET=$(DEFAULT_TARGET)
index 00fe699421f9a0c1b0393bdf9157b31f095bfbba..506c8b27244a0ae6f904d26af269c59e5ecbe5e7 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_chr.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 373ef0deed6541198dd59e54858390eef750e516..8cee272485e9fccebc29661db0e8563857aafa2e 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_chr.h                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 7c68e0723f9b1c2f9cddcdc19f0079e507cfb47a..82144cd288f1572ca3af5e576c999b3d68898464 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_cus.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 3fa751d63c2a974d76d172ee6fde1cfae7aaa1db..425334be397f5cf9cf103ed6e186b479a9a542bf 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_cus.h                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 3b84c0ad1ff9fb8912ef4e7038c926cee4698f88..2b9b2e006738320cda819d746dd954b9d38a1f1d 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_e2g.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
@@ -477,6 +489,10 @@ element_to_graphic[] =
     EL_SAND,                           -1, -1, FALSE,
     IMG_SAND
   },
+  {
+    EL_SAND,                           -1, -1, TRUE,
+    IMG_SAND_CRUMBLED
+  },
   {
     EL_SAND,                           ACTION_DIGGING, MV_BIT_LEFT, FALSE,
     IMG_SAND_DIGGING_LEFT
@@ -493,14 +509,6 @@ element_to_graphic[] =
     EL_SAND,                           ACTION_DIGGING, MV_BIT_DOWN, FALSE,
     IMG_SAND_DIGGING_DOWN
   },
-  {
-    EL_SAND_CRUMBLED,                  -1, -1, TRUE,
-    IMG_SAND_CRUMBLED
-  },
-  {
-    EL_SAND,                           -1, -1, TRUE,
-    IMG_SAND_CRUMBLED
-  },
   {
     EL_SAND,                           ACTION_DIGGING, MV_BIT_LEFT, TRUE,
     IMG_SAND_DIGGING_LEFT_CRUMBLED
@@ -522,8 +530,8 @@ element_to_graphic[] =
     IMG_WALL
   },
   {
-    EL_WALL_CRUMBLED,                  -1, -1, FALSE,
-    IMG_WALL_CRUMBLED
+    EL_WALL_SLIPPERY,                  -1, -1, FALSE,
+    IMG_WALL_SLIPPERY
   },
   {
     EL_STEELWALL,                      -1, -1, FALSE,
@@ -1286,8 +1294,8 @@ element_to_graphic[] =
     IMG_LANDMINE
   },
   {
-    EL_STEELWALL_SLANTED,              -1, -1, FALSE,
-    IMG_STEELWALL_SLANTED
+    EL_STEELWALL_SLIPPERY,             -1, -1, FALSE,
+    IMG_STEELWALL_SLIPPERY
   },
   {
     EL_EXTRA_TIME,                     -1, -1, FALSE,
index f17b1b3e05db1a81e7b5114ebacf7ab0c11fb0e3..6e229df276c147bd90caf18ae9ba2ef334bdb66e 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_e2s.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index ed2369a35ff2119eb74c90f7cbd589217e604b45..b2180fb3a855be56d94e00b015999da407e7a164 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_esg.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 0c9256b51ccddd50814a9f7bb19798e8a1bc4686..0a191dda15f257a76f19a1f25fb52e882c988d34 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_fnt.c                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 5e3e91ba0095def39e864d2d8210851f4e543e51..84a893525f9d5e3d15c945d5c549023f5c9aa6c3 100644 (file)
@@ -584,6 +584,10 @@ struct ConfigInfo image_config[] =
   { "sand.xpos",                               "0"                     },
   { "sand.ypos",                               "2"                     },
   { "sand.frames",                             "1"                     },
+  { "sand.CRUMBLED",                           "RocksMore.pcx"         },
+  { "sand.CRUMBLED.xpos",                      "1"                     },
+  { "sand.CRUMBLED.ypos",                      "2"                     },
+  { "sand.CRUMBLED.frames",                    "1"                     },
   { "sand.digging.left",                       "RocksMore.pcx"         },
   { "sand.digging.left.xpos",                  "6"                     },
   { "sand.digging.left.ypos",                  "3"                     },
@@ -608,10 +612,6 @@ struct ConfigInfo image_config[] =
   { "sand.digging.down.frames",                        "3"                     },
   { "sand.digging.down.delay",                 "2"                     },
   { "sand.digging.down.anim_mode",             "linear"                },
-  { "sand.CRUMBLED",                           "RocksMore.pcx"         },
-  { "sand.CRUMBLED.xpos",                      "1"                     },
-  { "sand.CRUMBLED.ypos",                      "2"                     },
-  { "sand.CRUMBLED.frames",                    "1"                     },
   { "sand.digging.left.CRUMBLED",              "RocksMore.pcx"         },
   { "sand.digging.left.CRUMBLED.xpos",         "6"                     },
   { "sand.digging.left.CRUMBLED.ypos",         "0"                     },
@@ -642,10 +642,10 @@ struct ConfigInfo image_config[] =
   { "wall.ypos",                               "0"                     },
   { "wall.frames",                             "1"                     },
 
-  { "wall_crumbled",                           "RocksElements.pcx"     },
-  { "wall_crumbled.xpos",                      "6"                     },
-  { "wall_crumbled.ypos",                      "0"                     },
-  { "wall_crumbled.frames",                    "1"                     },
+  { "wall_slippery",                           "RocksElements.pcx"     },
+  { "wall_slippery.xpos",                      "6"                     },
+  { "wall_slippery.ypos",                      "0"                     },
+  { "wall_slippery.frames",                    "1"                     },
 
   { "steelwall",                               "RocksElements.pcx"     },
   { "steelwall.xpos",                          "4"                     },
@@ -1460,10 +1460,10 @@ struct ConfigInfo image_config[] =
   { "landmine.frames",                         "1"                     },
   { "landmine.crumbled_like",                  "sand"                  },
 
-  { "steelwall_slanted",                       "RocksDC.pcx"           },
-  { "steelwall_slanted.xpos",                  "5"                     },
-  { "steelwall_slanted.ypos",                  "15"                    },
-  { "steelwall_slanted.frames",                        "1"                     },
+  { "steelwall_slippery",                      "RocksDC.pcx"           },
+  { "steelwall_slippery.xpos",                 "5"                     },
+  { "steelwall_slippery.ypos",                 "15"                    },
+  { "steelwall_slippery.frames",               "1"                     },
 
   { "extra_time",                              "RocksDC.pcx"           },
   { "extra_time.xpos",                         "8"                     },
index f35c2147e4244de1fab0d839dc698231276c7532..8b3f18c8cd2507c399fb4fc016d172caf50b0386 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_gfx.h                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
 #define IMG_SOKOBAN_FIELD_FULL                         106
 #define IMG_EMPTY_SPACE                                        107
 #define IMG_SAND                                       108
-#define IMG_SAND_DIGGING_LEFT                          109
-#define IMG_SAND_DIGGING_RIGHT                         110
-#define IMG_SAND_DIGGING_UP                            111
-#define IMG_SAND_DIGGING_DOWN                          112
-#define IMG_SAND_CRUMBLED                              113
+#define IMG_SAND_CRUMBLED                              109
+#define IMG_SAND_DIGGING_LEFT                          110
+#define IMG_SAND_DIGGING_RIGHT                         111
+#define IMG_SAND_DIGGING_UP                            112
+#define IMG_SAND_DIGGING_DOWN                          113
 #define IMG_SAND_DIGGING_LEFT_CRUMBLED                 114
 #define IMG_SAND_DIGGING_RIGHT_CRUMBLED                        115
 #define IMG_SAND_DIGGING_UP_CRUMBLED                   116
 #define IMG_SAND_DIGGING_DOWN_CRUMBLED                 117
 #define IMG_WALL                                       118
-#define IMG_WALL_CRUMBLED                              119
+#define IMG_WALL_SLIPPERY                              119
 #define IMG_STEELWALL                                  120
 #define IMG_ROCK                                       121
 #define IMG_ROCK_MOVING_LEFT                           122
 #define IMG_SIGN_EXCLAMATION                           289
 #define IMG_SIGN_STOP                                  290
 #define IMG_LANDMINE                                   291
-#define IMG_STEELWALL_SLANTED                          292
+#define IMG_STEELWALL_SLIPPERY                         292
 #define IMG_EXTRA_TIME                                 293
 #define IMG_SHIELD_NORMAL                              294
 #define IMG_SHIELD_NORMAL_ACTIVE                       295
index bfb6db880e9ae94988a40edc21c6a0d1d8be6073..94366024764911dc3940936b0885a65d842fefaa 100644 (file)
@@ -1,3 +1,15 @@
+/***********************************************************
+* Rocks'n'Diamonds -- McDuffin Strikes Back!               *
+*----------------------------------------------------------*
+* (c) 1995-2002 Artsoft Entertainment                      *
+*               Holger Schemel                             *
+*               Detmolder Strasse 189                      *
+*               33604 Bielefeld                            *
+*               Germany                                    *
+*               e-mail: info@artsoft.org                   *
+*----------------------------------------------------------*
+* conf_snd.h                                               *
+***********************************************************/
 
 /* ----- this file was automatically generated -- do not edit by hand ----- */
 
index 08abd54293b6006a5e56fd7cc28cd95bb0480ea2..48476e040dbe5f36b9e652e19fbf08f95e26aff1 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-07-30 20:00]"
+#define COMPILE_DATE_STRING "[2003-07-31 20:49]"
index 4806b8423b3db0be7e0fff7d90ffb6761071993a..1749fe25f9c78a59565665ae9999c934c6fdd1b1 100644 (file)
 #define ED_SELECTBOX_XSIZE             ED_WIN_COUNT_XSIZE
 #define ED_SELECTBOX_YSIZE             ED_WIN_COUNT_YSIZE
 
+#define ED_SELECTBOX_BUTTON_XSIZE      14
+
 #define ED_TEXTBUTTON_XPOS             ED_WIN_COUNT_XPOS
 #define ED_TEXTBUTTON_YPOS             (ED_WIN_COUNT_YPOS + \
                                         4 * (2 + ED_WIN_COUNT_YSIZE))
@@ -1798,7 +1800,7 @@ static int editor_el_emerald_mine[] =
 
   EL_STEELWALL,
   EL_WALL,
-  EL_WALL_CRUMBLED,
+  EL_WALL_SLIPPERY,
   EL_MAGIC_WALL,
 
   EL_EMERALD,
@@ -2119,7 +2121,7 @@ static int editor_el_diamond_caves[] =
 
   EL_LANDMINE,
   EL_INVISIBLE_SAND,
-  EL_STEELWALL_SLANTED,
+  EL_STEELWALL_SLIPPERY,
   EL_EMPTY,
 
   EL_SIGN_EXCLAMATION,
@@ -3156,7 +3158,7 @@ static void CreateSelectboxGadgets()
                      GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x, gd_y,
                      GDI_DESIGN_PRESSED, gd_bitmap, gd_x, gd_y,
                      GDI_BORDER_SIZE, ED_BORDER_SIZE, ED_BORDER_SIZE,
-                     GDI_BORDER_SIZE_SELECTBUTTON, getFontWidth(FONT_INPUT_1),
+                     GDI_BORDER_SIZE_SELECTBUTTON, ED_SELECTBOX_BUTTON_XSIZE,
                      GDI_DESIGN_WIDTH, ED_WIN_COUNT_XSIZE,
                      GDI_EVENT_MASK, event_mask,
                      GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
index 21717f1d7bdc74897abc1aa41df199ab06b1fea9..791181393dc89c48c1e0ec28f5381c994bc0004f 100644 (file)
@@ -730,26 +730,31 @@ static void LoadLevel_InitLevel(struct LevelInfo *level, char *filename)
   }
 
   /* map elements which have changed in newer versions */
-  if (level->game_version <= VERSION_IDENT(2,2,0))
+  for(y=0; y<level->fieldy; y++)
   {
-    /* map game font elements */
-    for(y=0; y<level->fieldy; y++)
+    for(x=0; x<level->fieldx; x++)
     {
-      for(x=0; x<level->fieldx; x++)
+      int element = level->field[x][y];
+
+      if (level->game_version <= VERSION_IDENT(2,2,0))
       {
-       int element = level->field[x][y];
-
-       if (element == EL_CHAR('['))
-         element = EL_CHAR_AUMLAUT;
-       else if (element == EL_CHAR('\\'))
-         element = EL_CHAR_OUMLAUT;
-       else if (element == EL_CHAR(']'))
-         element = EL_CHAR_UUMLAUT;
-       else if (element == EL_CHAR('^'))
-         element = EL_CHAR_COPYRIGHT;
-
-       level->field[x][y] = element;
+       /* map game font elements */
+       element = (element == EL_CHAR('[')  ? EL_CHAR_AUMLAUT :
+                  element == EL_CHAR('\\') ? EL_CHAR_OUMLAUT :
+                  element == EL_CHAR(']')  ? EL_CHAR_UUMLAUT :
+                  element == EL_CHAR('^')  ? EL_CHAR_COPYRIGHT : element);
       }
+      else if (level->game_version < VERSION_IDENT(3,0,0))
+      {
+       /* map Supaplex gravity tube elements */
+       element = (element == EL_SP_GRAVITY_PORT_LEFT  ? EL_SP_PORT_LEFT  :
+                  element == EL_SP_GRAVITY_PORT_RIGHT ? EL_SP_PORT_RIGHT :
+                  element == EL_SP_GRAVITY_PORT_UP    ? EL_SP_PORT_UP    :
+                  element == EL_SP_GRAVITY_PORT_DOWN  ? EL_SP_PORT_DOWN  :
+                  element);
+      }
+
+      level->field[x][y] = element;
     }
   }
 
index 5a859675c607b680a25fdb11b29cedea4ede51ac..718b1fff062877878666bddd6e2109a08c845ffc 100644 (file)
@@ -2215,6 +2215,7 @@ void DynaExplode(int ex, int ey)
 
       Explode(x, y, EX_PHASE_START, EX_BORDER);
 
+      /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
       if (element != EL_EMPTY &&
          element != EL_SAND &&
          element != EL_EXPLOSION &&
@@ -2525,14 +2526,16 @@ static int getInvisibleActiveFromInvisibleElement(int element)
 {
   return (element == EL_INVISIBLE_STEELWALL ? EL_INVISIBLE_STEELWALL_ACTIVE :
          element == EL_INVISIBLE_WALL      ? EL_INVISIBLE_WALL_ACTIVE :
-         EL_INVISIBLE_SAND_ACTIVE);
+         element == EL_INVISIBLE_SAND      ? EL_INVISIBLE_SAND_ACTIVE :
+         element);
 }
 
 static int getInvisibleFromInvisibleActiveElement(int element)
 {
   return (element == EL_INVISIBLE_STEELWALL_ACTIVE ? EL_INVISIBLE_STEELWALL :
          element == EL_INVISIBLE_WALL_ACTIVE      ? EL_INVISIBLE_WALL :
-         EL_INVISIBLE_SAND);
+         element == EL_INVISIBLE_SAND_ACTIVE      ? EL_INVISIBLE_SAND :
+         element);
 }
 
 static void RedrawAllLightSwitchesAndInvisibleElements()
@@ -4058,7 +4061,7 @@ void StartMoving(int x, int y)
       TurnRound(x, y);
 
 #if 1
-      if (GFX_ELEMENT(element) != EL_SAND)
+      if (GFX_ELEMENT(element) != EL_SAND)     /* !!! FIX THIS (crumble) !!! */
        DrawLevelElementAnimation(x, y, element);
 #else
       if (element == EL_BUG ||
@@ -4553,6 +4556,7 @@ void AmoebeAbleger(int ax, int ay)
     if (!IN_LEV_FIELD(x, y))
       return;
 
+    /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
     if (IS_FREE(x, y) ||
        Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY)
     {
@@ -4577,6 +4581,7 @@ void AmoebeAbleger(int ax, int ay)
       if (!IN_LEV_FIELD(x, y))
        continue;
 
+      /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
       if (IS_FREE(x, y) ||
          Feld[x][y] == EL_SAND || Feld[x][y] == EL_QUICKSAND_EMPTY)
       {
@@ -4721,6 +4726,7 @@ void Life(int ax, int ay)
        changed = TRUE;
       }
     }
+    /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
     else if (IS_FREE(xx, yy) || Feld[xx][yy] == EL_SAND)
     {                                  /* free border field */
       if (nachbarn >= life[2] && nachbarn <= life[3])
@@ -5810,6 +5816,7 @@ void GameActions()
 #endif
       element = Feld[x][y];
 
+      /* !!! extend EL_SAND to anything diggable (but maybe not SP_BASE) !!! */
       if (!IS_PLAYER(x,y) &&
          (element == EL_EMPTY ||
           element == EL_SAND ||
@@ -6097,6 +6104,7 @@ static void CheckGravityMovement(struct PlayerInfo *player)
       (IN_LEV_FIELD(new_jx, new_jy) &&
        (Feld[new_jx][new_jy] == EL_SP_BASE ||
        Feld[new_jx][new_jy] == EL_SAND));
+    /* !!! extend EL_SAND to anything diggable !!! */
 
     if (field_under_player_is_free &&
        !player_is_moving_to_valid_field &&
@@ -7072,6 +7080,12 @@ int DigField(struct PlayerInfo *player,
          !IS_FREE(nextx, nexty))
        return MF_NO_ACTION;
 
+      if (element == EL_SP_GRAVITY_PORT_LEFT ||
+         element == EL_SP_GRAVITY_PORT_RIGHT ||
+         element == EL_SP_GRAVITY_PORT_UP ||
+         element == EL_SP_GRAVITY_PORT_DOWN)
+       level.gravity = !level.gravity;
+
       /* automatically move to the next field with double speed */
       player->programmed_action = move_direction;
       DOUBLE_PLAYER_SPEED(player);
index 229cba0a6512abd9eb5794ade523d49b9689d00e..376aa8c822c088880b0fa46a5a4a8c56e17250d1 100644 (file)
@@ -1421,7 +1421,7 @@ void InitElementPropertiesStatic()
     EL_SIGN_EXIT,
     EL_SIGN_YINYANG,
     EL_SIGN_OTHER,
-    EL_STEELWALL_SLANTED,
+    EL_STEELWALL_SLIPPERY,
     EL_EMC_STEELWALL_1,
     EL_EMC_STEELWALL_2,
     EL_EMC_STEELWALL_3,
@@ -1475,7 +1475,7 @@ void InitElementPropertiesStatic()
 
   static int ep_slippery[] =
   {
-    EL_WALL_CRUMBLED,
+    EL_WALL_SLIPPERY,
     EL_BD_WALL,
     EL_ROCK,
     EL_BD_ROCK,
@@ -1504,7 +1504,7 @@ void InitElementPropertiesStatic()
     EL_SP_CHIP_TOP,
     EL_SP_CHIP_BOTTOM,
     EL_SPEED_PILL,
-    EL_STEELWALL_SLANTED,
+    EL_STEELWALL_SLIPPERY,
     EL_PEARL,
     EL_CRYSTAL,
     -1
@@ -1825,7 +1825,7 @@ void InitElementPropertiesStatic()
   {
     EL_EMPTY,
     EL_SAND,
-    EL_WALL_CRUMBLED,
+    EL_WALL_SLIPPERY,
     EL_BD_WALL,
     EL_ROCK,
     EL_BD_ROCK,
@@ -2002,7 +2002,7 @@ void InitElementPropertiesStatic()
     EL_EXIT_OPENING,
     EL_EXIT_OPEN,
     EL_WALL,
-    EL_WALL_CRUMBLED,
+    EL_WALL_SLIPPERY,
     EL_EXPANDABLE_WALL,
     EL_EXPANDABLE_WALL_HORIZONTAL,
     EL_EXPANDABLE_WALL_VERTICAL,
@@ -2033,7 +2033,7 @@ void InitElementPropertiesStatic()
     EL_INVISIBLE_STEELWALL_ACTIVE,
     EL_INVISIBLE_WALL,
     EL_INVISIBLE_WALL_ACTIVE,
-    EL_STEELWALL_SLANTED,
+    EL_STEELWALL_SLIPPERY,
     EL_EMC_STEELWALL_1,
     EL_EMC_STEELWALL_2,
     EL_EMC_STEELWALL_3,
@@ -2057,7 +2057,7 @@ void InitElementPropertiesStatic()
     EL_EXPANDABLE_WALL_VERTICAL,
     EL_EXPANDABLE_WALL_ANY,
     EL_BD_WALL,
-    EL_WALL_CRUMBLED,
+    EL_WALL_SLIPPERY,
     EL_EXIT_CLOSED,
     EL_EXIT_OPENING,
     EL_EXIT_OPEN,
@@ -2160,7 +2160,7 @@ void InitElementPropertiesStatic()
     EL_SIGN_EXIT,
     EL_SIGN_YINYANG,
     EL_SIGN_OTHER,
-    EL_STEELWALL_SLANTED,
+    EL_STEELWALL_SLIPPERY,
     EL_EMC_STEELWALL_1,
     EL_EMC_STEELWALL_2,
     EL_EMC_STEELWALL_3,
@@ -2354,7 +2354,7 @@ void InitElementPropertiesStatic()
     EL_SAND,
     EL_WALL,
     EL_BD_WALL,
-    EL_WALL_CRUMBLED,
+    EL_WALL_SLIPPERY,
     EL_STEELWALL,
     EL_AMOEBA_DEAD,
     EL_QUICKSAND_EMPTY,
@@ -2472,7 +2472,7 @@ void InitElementPropertiesStatic()
     EL_SIGN_EXIT,
     EL_SIGN_YINYANG,
     EL_SIGN_OTHER,
-    EL_STEELWALL_SLANTED,
+    EL_STEELWALL_SLIPPERY,
     EL_EMC_STEELWALL_1,
     EL_EMC_STEELWALL_2,
     EL_EMC_STEELWALL_3,
@@ -3200,7 +3200,8 @@ static void InitImages()
 #endif
 
 #if 0
-  printf("::: InitImages ['%s', '%s'] ['%s', '%s']\n",
+  printf("::: InitImages for '%s' ['%s', '%s'] ['%s', '%s']\n",
+        leveldir_current->identifier,
         artwork.gfx_current_identifier,
         artwork.gfx_current->identifier,
         leveldir_current->graphics_set,
index a83155e10a53fb2ba4f82e90c054efc1722948f7..d2af524ac4353ceb8505c59351ea8e9834ca17e0 100644 (file)
@@ -1470,7 +1470,7 @@ void HandleGadgets(int mx, int my, int button)
       /* if mouse moving inside activated selectbox, select value */
       if (my >= gi->selectbox.y && my < gi->selectbox.y + gi->selectbox.height)
        gi->selectbox.current_index =
-         (my - gi->selectbox.y - gi->border.xsize) / getFontWidth(gi->font);
+         (my - gi->selectbox.y - gi->border.ysize) / getFontHeight(gi->font);
 
       if (gi->selectbox.current_index < 0)
        gi->selectbox.current_index = 0;
index 24e2471b723632f30eff5a570000d2c63973a6a8..47f57cb0152912f466b02b2d1ced52c770b4f508 100644 (file)
@@ -495,7 +495,9 @@ char *getCustomImageFilename(char *basename)
     /* 2nd try: look for special artwork in current level series directory */
     filename = getPath3(getCurrentLevelDir(), GRAPHICS_DIRECTORY, basename);
 #if 0
+    /*
     if (strcmp(basename, "RocksScreen.pcx") == 0)
+    */
       printf("::: trying 2 '%s' ...\n", filename);
 #endif
     if (fileExists(filename))
@@ -507,7 +509,9 @@ char *getCustomImageFilename(char *basename)
     /* 1st try: look for special artwork configured in level series config */
     filename = getPath2(getLevelArtworkDir(TREE_TYPE_GRAPHICS_DIR), basename);
 #if 0
+    /*
     if (strcmp(basename, "RocksScreen.pcx") == 0)
+    */
       printf("::: trying 2.1 '%s' ...\n", filename);
 #endif
     if (fileExists(filename))
@@ -520,7 +524,9 @@ char *getCustomImageFilename(char *basename)
   /* 3rd try: look for special artwork in configured artwork directory */
   filename = getPath2(getSetupArtworkDir(artwork.gfx_current), basename);
 #if 0
+  /*
   if (strcmp(basename, "RocksScreen.pcx") == 0)
+  */
     printf("::: trying 3 '%s' ...\n", filename);
 #endif
   if (fileExists(filename))
index 3095a5a25a8e41e7b03a17935a1ad286b59fa24e..ba7ab867873f6620715e4bf35ebbdc3812b11520 100644 (file)
@@ -128,9 +128,9 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "normal wall"
   },
   {
-    "wall_crumbled",
+    "wall_slippery",
     "wall",
-    "round wall"
+    "slippery wall"
   },
   {
     "rock",
@@ -1221,22 +1221,22 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
   {
     "sp_gravity_port_right",
     "sp_port",
-    "port (leading right)"
+    "gravity port (leading right)"
   },
   {
     "sp_gravity_port_down",
     "sp_port",
-    "port (leading down)"
+    "gravity port (leading down)"
   },
   {
     "sp_gravity_port_left",
     "sp_port",
-    "port (leading left)"
+    "gravity port (leading left)"
   },
   {
     "sp_gravity_port_up",
     "sp_port",
-    "port (leading up)"
+    "gravity port (leading up)"
   },
   {
     "sp_sniksnak",
@@ -1679,9 +1679,9 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "mole (starts moving down)"
   },
   {
-    "steelwall_slanted",
+    "steelwall_slippery",
     "wall",
-    "steel wall (slanted)"
+    "slippery steel wall"
   },
   {
     "invisible_sand",
@@ -2918,11 +2918,6 @@ struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1] =
     "-",
     "-"
   },
-  {
-    "sand_crumbled",
-    "-",
-    "-"
-  },
   {
     "dynabomb",
     "-",
index 6709828a683a3d67597ffb8d5a8bfbbc1ef37911..03e983782a83ec62ff9425804ffbd1e422c9e8a8 100644 (file)
 #define EL_EMPTY                       EL_EMPTY_SPACE
 #define EL_SAND                                1
 #define EL_WALL                                2
-#define EL_WALL_CRUMBLED               3
+#define EL_WALL_SLIPPERY               3
 #define EL_ROCK                                4
 #define EL_KEY_OBSOLETE                        5 /* obsolete; mapped to EL_KEY_1 */
 #define EL_EMERALD                     6
 #define EL_MOLE_RIGHT                  312
 #define EL_MOLE_UP                     313
 #define EL_MOLE_DOWN                   314
-#define EL_STEELWALL_SLANTED           315
+#define EL_STEELWALL_SLIPPERY          315
 #define EL_INVISIBLE_SAND              316
 #define EL_DX_UNKNOWN_15               317
 #define EL_DX_UNKNOWN_42               318
 #define EL_INVISIBLE_STEELWALL_BOTTOMRIGHT     (EL_FIRST_DUMMY + 9)
 #define EL_INVISIBLE_STEELWALL_HORIZONTAL      (EL_FIRST_DUMMY + 10)
 #define EL_INVISIBLE_STEELWALL_VERTICAL                (EL_FIRST_DUMMY + 11)
-#define EL_SAND_CRUMBLED                       (EL_FIRST_DUMMY + 12)
-#define EL_DYNABOMB                            (EL_FIRST_DUMMY + 13)
-#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 14)
-#define EL_DYNABOMB_PLAYER_1                   (EL_FIRST_DUMMY + 15)
-#define EL_DYNABOMB_PLAYER_2                   (EL_FIRST_DUMMY + 16)
-#define EL_DYNABOMB_PLAYER_3                   (EL_FIRST_DUMMY + 17)
-#define EL_DYNABOMB_PLAYER_4                   (EL_FIRST_DUMMY + 18)
-#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 19)
-#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 20)
-#define EL_DEFAULT                             (EL_FIRST_DUMMY + 21)
-#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 22)
-#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 23)
-#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 24)
-
-#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 25)
+#define EL_DYNABOMB                            (EL_FIRST_DUMMY + 12)
+#define EL_DYNABOMB_ACTIVE                     (EL_FIRST_DUMMY + 13)
+#define EL_DYNABOMB_PLAYER_1                   (EL_FIRST_DUMMY + 14)
+#define EL_DYNABOMB_PLAYER_2                   (EL_FIRST_DUMMY + 15)
+#define EL_DYNABOMB_PLAYER_3                   (EL_FIRST_DUMMY + 16)
+#define EL_DYNABOMB_PLAYER_4                   (EL_FIRST_DUMMY + 17)
+#define EL_SHIELD_NORMAL_ACTIVE                        (EL_FIRST_DUMMY + 18)
+#define EL_SHIELD_DEADLY_ACTIVE                        (EL_FIRST_DUMMY + 19)
+#define EL_DEFAULT                             (EL_FIRST_DUMMY + 20)
+#define EL_BD_DEFAULT                          (EL_FIRST_DUMMY + 21)
+#define EL_SP_DEFAULT                          (EL_FIRST_DUMMY + 22)
+#define EL_SB_DEFAULT                          (EL_FIRST_DUMMY + 23)
+
+#define MAX_NUM_ELEMENTS                       (EL_FIRST_DUMMY + 24)
 
 
 /* values for graphics/sounds action types */
 #define GAME_MODE_PSEUDO_TYPENAME              10
 #define GAME_MODE_QUIT                         11
 
-#define PROGRAM_VERSION_MAJOR  2
-#define PROGRAM_VERSION_MINOR  2
+#define PROGRAM_VERSION_MAJOR  3
+#define PROGRAM_VERSION_MINOR  0
 #define PROGRAM_VERSION_PATCH  0
-#define PROGRAM_VERSION_RELEASE        8
-#define PROGRAM_VERSION_STRING "2.2.0rc8"
+#define PROGRAM_VERSION_RELEASE        0
+#define PROGRAM_VERSION_STRING "3.0.0"
 
 #define PROGRAM_TITLE_STRING   "Rocks'n'Diamonds"
 #define PROGRAM_AUTHOR_STRING  "Holger Schemel"
index f2c95cec1aaf49d3e654896fbc4f2e4bc92649fd..65708d2409bcd94ee0fad82907cee07c8349388f 100644 (file)
@@ -527,7 +527,7 @@ static int helpscreen_action[] =
 
   IMG_INVISIBLE_WALL,                  -1,                     HA_NEXT,
 
-  IMG_WALL_CRUMBLED,                   -1,                     HA_NEXT,
+  IMG_WALL_SLIPPERY,                   -1,                     HA_NEXT,
 
   IMG_FONT_GAME_INFO,                  -1,                     HA_NEXT,
 
@@ -918,11 +918,15 @@ void DrawHelpScreenElAction(int start)
     i++;
   }
 
+#if 1
+  redraw_mask |= REDRAW_FIELD;
+#else
   for(i=2; i<16; i++)
   {
     MarkTileDirty(0, i);
     MarkTileDirty(1, i);
   }
+#endif
 
   FrameCounter++;
 }
index 97853144b22e327fa06080fe9c3097fc6758e7f8..744065cd5923675762f020124912bc5a78a6dd8e 100644 (file)
@@ -504,6 +504,9 @@ inline void DrawLevelGraphicAnimationIfNeeded(int x, int y, int graphic)
     return;
 
   DrawGraphicAnimation(sx, sy, graphic);
+
+  if (CAN_BE_CRUMBLED(Feld[x][y]))
+    DrawLevelFieldCrumbledSand(x, y);
 }
 
 void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
@@ -520,6 +523,9 @@ void DrawLevelElementAnimationIfNeeded(int x, int y, int element)
     return;
 
   DrawGraphicAnimation(sx, sy, graphic);
+
+  if (CAN_BE_CRUMBLED(element))
+    DrawLevelFieldCrumbledSand(x, y);
 }
 
 void DrawAllPlayers()