TYPE_INTEGER, CONF_VALUE_8_BIT(4),
&li.game_of_life[3], 3
},
+ {
+ EL_GAME_OF_LIFE, -1,
+ TYPE_BOOLEAN, CONF_VALUE_8_BIT(5),
+ &li.use_life_bugs, FALSE
+ },
{
EL_BIOMAZE, -1,
level->extra_time_score = level->score[SC_TIME_BONUS];
}
+ /* game logic of "game of life" and "biomaze" was buggy before 4.1.1.1 */
+ if (level->game_version < VERSION_IDENT(4,1,1,1))
+ level->use_life_bugs = TRUE;
+
if (level->game_version < VERSION_IDENT(3,2,0,7))
{
/* default behaviour for snapping was "not continuous" before 3.2.0-7 */
int *life_parameter = (element == EL_GAME_OF_LIFE ? level.game_of_life :
level.biomaze);
boolean changed = FALSE;
- boolean use_life_bugs = FALSE;
if (IS_ANIMATED(graphic))
DrawLevelGraphicAnimationIfNeeded(ax, ay, graphic);
boolean is_player_cell = (element == EL_GAME_OF_LIFE && IS_PLAYER(x, y));
boolean is_neighbour = FALSE;
- if (use_life_bugs)
+ if (level.use_life_bugs)
is_neighbour =
(((Feld[x][y] == element || is_player_cell) && !Stop[x][y]) ||
(IS_FREE(x, y) && Stop[x][y]));
boolean is_free = FALSE;
- if (use_life_bugs)
+ if (level.use_life_bugs)
is_free = (IS_FREE(xx, yy));
else
is_free = (IS_FREE(xx, yy) && Last[xx][yy] == EL_EMPTY);
boolean em_explodes_by_fire; /* EM style chain explosion behaviour */
boolean use_spring_bug; /* for compatibility with old levels */
boolean use_time_orb_bug; /* for compatibility with old levels */
+ boolean use_life_bugs; /* for compatibility with old levels */
boolean instant_relocation; /* no visual delay when relocating player */
boolean shifted_relocation; /* no level centering when relocating player */
boolean lazy_relocation; /* only redraw off-screen player relocation */