fixed correcting playfield buffer offsets for EM engine
[rocksndiamonds.git] / src / game_em / logic.c
index 6d6f0e1b6769c6fb5dccb065d353219254fbb144..6270550dd6ee8c5b36c1a9fd23a1b626038d5fb5 100644 (file)
@@ -12,8 +12,7 @@
 #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_RAW     (seed = seed << 31 | seed >> 1)
-#define RANDOM(x)      (RANDOM_RAW & (x - 1))
+#define RANDOM(x)      ((seed = seed << 31 | seed >> 1) % x)
 
 static short **cave, **next, **boom;
 static unsigned int seed;
@@ -151,7 +150,7 @@ static void Lboom_eater(int x, int y)
   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) & 7;
+  lev.eater_pos = (lev.eater_pos + 1) % 8;
 
 #if PLAY_ELEMENT_SOUND
   play_element_sound(x, y, SOUND_boom, Xeater_n);