/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* (c) 1995-2000 Artsoft Entertainment *
+* (c) 1995-2001 Artsoft Entertainment *
* Holger Schemel *
* Detmolder Strasse 189 *
* 33604 Bielefeld *
}
}
+ game.version = (tape.playing ? tape.game_version : level.game_version);
game.emulation = (emulate_bd ? EMU_BOULDERDASH :
emulate_sb ? EMU_SOKOBAN :
emulate_sp ? EMU_SUPAPLEX : EMU_NONE);
+ /* dynamically adjust element properties according to game engine version */
+ {
+ static int ep_slippery[] =
+ {
+ EL_BETON,
+ EL_MAUERWERK,
+ EL_MAUER_LEBT,
+ EL_MAUER_X,
+ EL_MAUER_Y,
+ EL_MAUER_XY
+ };
+ static int ep_slippery_num = sizeof(ep_slippery)/sizeof(int);
+
+ for (i=0; i<ep_slippery_num; i++)
+ {
+ if (game.version >= GAME_VERSION_2_0)
+ Elementeigenschaften1[ep_slippery[i]] |= EP_BIT_SLIPPERY;
+ else
+ Elementeigenschaften1[ep_slippery[i]] &= ~EP_BIT_SLIPPERY;
+ }
+ }
+
if (BorderElement == EL_LEERRAUM)
{
SBX_Left = 0;
SaveLevelSetup_SeriesInfo();
}
- if (!level_editor_test_game)
- {
- if (level_nr < leveldir_current->last_level)
- raise_level = TRUE;
- }
+ if (level_editor_test_game)
+ local_player->score = -1; /* no highscore when playing from editor */
+ else if (level_nr < leveldir_current->last_level)
+ raise_level = TRUE; /* advance to next level */
if ((hi_pos = NewHiScore()) >= 0)
{
Feld[x][y] = EL_AMOEBING;
Store[x][y] = EL_AMOEBE_NASS;
}
+ /* Store[x][y+1] must be zero, because:
+ (EL_MORAST_VOLL -> EL_FELSBROCKEN): Store[x][y+1] == EL_MORAST_LEER
+ */
#if OLD_GAME_BEHAVIOUR
else if (IS_SLIPPERY(Feld[x][y+1]) && !Store[x][y+1])
#else