#define ACID_ROLL /* rolling objects go into acid rather than remove it */
#define ACID_PLAYER /* player gets killed by acid, but without explosion */
+#define RANDOM_BUG /* handle problem with old tapes using 64-bit random */
+
#define RANDOM(x) ((seed = seed << 31 | seed >> 1) % x)
static short **cave, **next, **boom;
boom[x][y+1] = lev.eater_array[lev.eater_pos][7];
boom[x+1][y+1] = lev.eater_array[lev.eater_pos][8];
- lev.eater_pos = (lev.eater_pos + 1) % 8;
+ lev.eater_pos = (lev.eater_pos + 1) % lev.num_eater_arrays;
#if PLAY_ELEMENT_SOUND
play_element_sound(x, y, SOUND_boom, Xeater_n);
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
int x;
int y;
int count;
- unsigned int random;
+#ifdef RANDOM_BUG
+ uint64_t random;
+#else
+ uint32_t random;
+#endif
cave = lev.cave;
next = lev.next;
Lamoeba(x, y);
random = random * 129 + 1;
+
+#ifdef RANDOM_BUG
+ if (!game_em.use_random_bug)
+ random = (uint32_t)random;
+#endif
}
game_em.random = random;