With the new EM game engine, objects that are pushed towards acid when
initially created fall into acid instead of replacing it (like in the
old engine). This change adds some compatibility code to use the old
behaviour when replaying old tapes.
This is an addition to commit
f717d0c1.
game_em.use_old_push_elements =
(game.engine_version < VERSION_IDENT(4,1,4,2));
game_em.use_old_push_elements =
(game.engine_version < VERSION_IDENT(4,1,4,2));
+ game_em.use_old_push_into_acid =
+ (game.engine_version < VERSION_IDENT(4,1,4,2));
+
game_em.use_wrap_around =
(game.engine_version > VERSION_IDENT(4,1,4,1));
game_em.use_wrap_around =
(game.engine_version > VERSION_IDENT(4,1,4,1));
// - game_em.use_old_explosions (default: FALSE)
// - game_em.use_old_android (default: FALSE)
// - game_em.use_old_push_elements (default: FALSE)
// - game_em.use_old_explosions (default: FALSE)
// - game_em.use_old_android (default: FALSE)
// - 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.level_solved = FALSE;
// - game_em.use_wrap_around (default: TRUE)
game_em.level_solved = FALSE;
boolean use_old_explosions;
boolean use_old_android;
boolean use_old_push_elements;
boolean use_old_explosions;
boolean use_old_android;
boolean use_old_push_elements;
+ boolean use_old_push_into_acid;
boolean use_wrap_around;
};
boolean use_wrap_around;
};
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
if (cave[x+2][y-1] == Xblank)
cave[x+2][y-1] = Xsplash_e;
if (cave[x][y-1] == Xblank)
case Xacid_6:
case Xacid_7:
case Xacid_8:
case Xacid_6:
case Xacid_7:
case Xacid_8:
+ if (game_em.use_old_push_into_acid)
+ break;
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)
if (cave[x][y-1] == Xblank)
cave[x][y-1] = Xsplash_e;
if (cave[x-2][y-1] == Xblank)