X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Flogic.c;h=290066440bb70e75bcc3b48ad1f46bc702a5ee18;hb=cdae6fb61376731b2ab3fa6082971edfff00ec75;hp=6d6f0e1b6769c6fb5dccb065d353219254fbb144;hpb=50e7de27341fa3a5a0ea86a4ca45d509db67dd76;p=rocksndiamonds.git diff --git a/src/game_em/logic.c b/src/game_em/logic.c index 6d6f0e1b..29006644 100644 --- a/src/game_em/logic.c +++ b/src/game_em/logic.c @@ -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); @@ -1280,6 +1279,11 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) } } + /* check for wrap-around movement */ + if (ply->x < lev.left || + ply->x > lev.right - 1) + play_element_sound(oldx, oldy, SOUND_door, Xdoor_1); + return result; }