+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
- 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]
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;
}
}
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) &&
{
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)
}
}
+#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;
}
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);
#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]))
#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"
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]))
{