X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_bd%2Fbd_cave.c;h=6a22a6379556b13d962f2cd26f7eb293eeb8aa09;hb=3fa87bc018874afae7bfca06c6d509411a441b09;hp=0b635df1dddffacda2c9e52e0b0a61097237082f;hpb=16e73266bef50f4e3b0fd3f5753e28a679e29f67;p=rocksndiamonds.git diff --git a/src/game_bd/bd_cave.c b/src/game_bd/bd_cave.c index 0b635df1..6a22a637 100644 --- a/src/game_bd/bd_cave.c +++ b/src/game_bd/bd_cave.c @@ -1522,8 +1522,8 @@ void gd_drawcave_game(const GdCave *cave, // change only graphically if (hate_invisible_outbox) { - elemmapping[O_PRE_INVIS_OUTBOX] = O_PRE_OUTBOX; - elemmapping[O_INVIS_OUTBOX] = O_OUTBOX; + elemmapping[O_PRE_INVIS_OUTBOX] = elemmapping[O_PRE_OUTBOX]; + elemmapping[O_INVIS_OUTBOX] = elemmapping[O_OUTBOX]; } if (hate_invisible_outbox) @@ -1678,3 +1678,60 @@ unsigned int gd_cave_adler_checksum(GdCave *cave) gd_cave_adler_checksum_more(cave, &a, &b); return (b << 16) + a; } + +boolean gd_cave_has_levels(GdCave *cave) +{ + GdCave c = *cave; + int *cave_level_value[] = + { + c.level_diamonds, + c.level_speed, + c.level_ckdelay, + c.level_time, + c.level_magic_wall_time, + c.level_amoeba_time, + c.level_amoeba_threshold, + c.level_amoeba_2_time, + c.level_amoeba_2_threshold, + c.level_slime_permeability, + c.level_slime_permeability_c64, + c.level_slime_seed_c64, + c.level_hatching_delay_frame, + c.level_hatching_delay_time, + c.level_bonus_time, + c.level_penalty_time, + + NULL + }; + int i, j; + + for (i = 0; cave_level_value[i] != NULL; i++) + for (j = 1; j < 5; j++) + if (cave_level_value[i][j] != cave_level_value[i][0]) + return TRUE; + + for (j = 1; j < 5; j++) + if (cave->level_rand[j] != j && + cave->level_rand[j - 1] != j - 1 && + cave->level_rand[j] != cave->level_rand[0]) + return TRUE; + + for (j = 1; j < 5; j++) + if (cave->level_timevalue[j] != j + 1 && + cave->level_timevalue[j - 1] != j && + cave->level_timevalue[j] != cave->level_timevalue[0]) + return TRUE; + + return FALSE; +} + +boolean gd_caveset_has_levels(void) +{ + List *iter; + + for (iter = gd_caveset; iter != NULL; iter = iter->next) + if (gd_cave_has_levels((GdCave *)iter->data)) + return TRUE; + + return FALSE; +}