rnd-19981228-2
authorHolger Schemel <info@artsoft.org>
Mon, 28 Dec 1998 02:18:24 +0000 (03:18 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:32:41 +0000 (10:32 +0200)
src/editor.c
src/files.c
src/game.c
src/init.c
src/main.h
src/tools.c

index 2adf93c8233d7ddd2195736af529013660c88660..2d20b09ebf49008d94b0cb4a0641dd49a3de3c1c 100644 (file)
@@ -364,6 +364,11 @@ int editor_element[] =
   EL_MAUER_Y,
   EL_MAUER_XY,
 
+  EL_SPEED_PILL,
+  EL_LEERRAUM,
+  EL_LEERRAUM,
+  EL_LEERRAUM,
+
   EL_CHAR_A + ('S' - 'A'),
   EL_CHAR_A + ('O' - 'A'),
   EL_CHAR_A + ('K' - 'A'),
index eb87f87e87cde86cf3ddaff1f08724a6317fa35f..e1765fd87b20cf655f72cd502cb43f269c8827bd 100644 (file)
@@ -253,6 +253,8 @@ static void setLevelInfoToDefaults()
   level.dauer_ablenk = 10;
   level.amoebe_inhalt = EL_DIAMANT;
 
+  level.high_speed = FALSE;
+
   strcpy(level.name, "Nameless Level");
 
   for(i=0; i<LEVEL_SCORE_ELEMENTS; i++)
@@ -395,6 +397,13 @@ void LoadLevel(int level_nr)
 
   if (level.time <= 10)                /* minimum playing time of each level */
     level.time = 10;
+
+  if (file_version == FILE_VERSION_1_0)
+  {
+    Error(ERR_WARN, "level file '%s' has version number 1.0", filename);
+    Error(ERR_WARN, "using high speed movement for player");
+    level.high_speed = TRUE;
+  }
 }
 
 void SaveLevel(int level_nr)
index fbaccc24f0d04bdff5a5f8a33fa7d002435dbd54..e69b1e6182af1d54529f3bfb883cc2d9d0851816 100644 (file)
@@ -389,6 +389,17 @@ void InitGame()
   ScreenMovPos = 0;
   ScreenGfxPos = 0;
 
+  if (level.high_speed)
+  {
+    MoveSpeed = 4;
+    ScrollStepSize = TILEX/4;
+  }
+  else
+  {
+    MoveSpeed = 8;
+    ScrollStepSize = TILEX/8;
+  }
+
   AllPlayersGone = FALSE;
   SiebAktiv = FALSE;
   SiebCount = 0;
@@ -4109,6 +4120,13 @@ int DigField(struct PlayerInfo *player,
       PlaySoundLevel(x, y, SND_PONG);
       break;
 
+    case EL_SPEED_PILL:
+      RemoveField(x, y);
+      MoveSpeed = 4;
+      ScrollStepSize = TILEX/4;
+      PlaySoundLevel(x, y, SND_PONG);
+      break;
+
     case EL_DYNAMIT_AUS:
       RemoveField(x, y);
       player->dynamite++;
index 6b4bece70fcac7f92f9b45a0dd3d208c49c95580..ad4cad8b19f267e4453df40b9ce6f37387506bdd 100644 (file)
@@ -947,6 +947,7 @@ void InitElementProperties()
     EL_SP_CHIP_RIGHT,
     EL_SP_CHIP_UPPER,
     EL_SP_CHIP_LOWER,
+    EL_SPEED_PILL
   };
   static int ep_slippery_num = sizeof(ep_slippery)/sizeof(int);
 
index 077fab94d8f855b46da552ee8a468c07856078fb..11588dd9aa019b29121e5ce994d18e368713dff3 100644 (file)
@@ -339,6 +339,7 @@ struct LevelInfo
   int dauer_sieb;
   int dauer_ablenk;
   int amoebe_inhalt;
+  boolean high_speed;
 };
 
 struct LevelDirInfo
@@ -551,9 +552,7 @@ extern int          num_bg_loops;
 #define EL_TROPFEN             18
 #define EL_BOMBE               19
 #define EL_SIEB_INAKTIV                20
-
-#define EL_UNUSED_21           21
-
+#define EL_SPEED_PILL          21
 #define EL_SALZSAEURE          22
 #define EL_AMOEBE_NASS         23
 #define EL_AMOEBE_NORM         24
@@ -916,6 +915,7 @@ extern int          num_bg_loops;
 #define GFX_EDELSTEIN_ROT      152
 #define GFX_EDELSTEIN_LILA     154
 #define GFX_DYNABOMB_XL                156
+#define GFX_SPEED_PILL         158
 #define GFX_SONDE              159
 /* Zeile 10 (160) */
 #define GFX_EDELSTEIN_BD       163
index 3184acaa51de78b18e8edccb0b5150f0a9af11ae..498a44f8ffad1589f41ad38edb382554325c582c 100644 (file)
@@ -1933,6 +1933,7 @@ int el2gfx(int element)
     case EL_PFEIL_R:           return GFX_PFEIL_R;
     case EL_PFEIL_O:           return GFX_PFEIL_O;
     case EL_PFEIL_U:           return GFX_PFEIL_U;
+    case EL_SPEED_PILL:                return GFX_SPEED_PILL;
     default:
     {
       if (IS_CHAR(element))