game_em.use_single_button =
(game.engine_version > VERSION_IDENT(4,0,0,2));
+ game_em.use_push_delay =
+ (game.engine_version > VERSION_IDENT(4,3,7,1));
+
game_em.use_snap_key_bug =
(game.engine_version < VERSION_IDENT(4,0,1,0));
// - game_em.use_old_push_elements (default: FALSE)
// - game_em.use_old_push_into_acid (default: FALSE)
// - game_em.use_wrap_around (default: TRUE)
+ // - game_em.use_push_delay (default: TRUE)
+
+ if (native_em_level.file_version > FILE_VERSION_EM_V5)
+ game_em.use_push_delay = FALSE;
game_em.level_solved = FALSE;
game_em.game_over = FALSE;
boolean use_old_push_elements;
boolean use_old_push_into_acid;
boolean use_wrap_around;
+ boolean use_push_delay;
};
struct LevelInfo_EM
if (dy)
break;
+ if (game_em.use_push_delay && RANDOM(32) < 16)
+ goto stone_push_anim;
+
switch (cave[x+dx][y])
{
case Xblank:
break;
}
+ stone_push_anim:
+
ply->anim = PLY_push_n + anim;
break;
if (dy)
break;
+ if (game_em.use_push_delay && RANDOM(32) < 22)
+ goto bomb_push_anim;
+
switch (cave[x+dx][y])
{
case Xblank:
break;
}
+ bomb_push_anim:
+
ply->anim = PLY_push_n + anim;
break;
if (dy)
break;
+ if (game_em.use_push_delay && RANDOM(32) < 19)
+ goto nut_push_anim;
+
switch (cave[x+dx][y])
{
case Xblank:
break;
}
+ nut_push_anim:
+
ply->anim = PLY_push_n + anim;
break;
ply->dynamite_cnt = 0; /* reset dynamite timer if we move */
+ seed = game_em.random;
+
if (!ply->joy_snap) /* player wants to move */
{
boolean moved = FALSE;
{
game_em.any_player_snapping = player_digfield(ply, dx, dy);
}
+
+ game_em.random = seed;
}
static void set_nearest_player_xy(int x, int y, int *dx, int *dy)