X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fgame_em%2Flogic.c;h=6270550dd6ee8c5b36c1a9fd23a1b626038d5fb5;hb=f645e74fab72d2bc94db81ea937904a865d5831e;hp=be2bed34a712bd36d7b2fa0fe9161d5fe979450e;hpb=76966ac62fb1c36c12b64d60915afcbe149635ff;p=rocksndiamonds.git diff --git a/src/game_em/logic.c b/src/game_em/logic.c index be2bed34..6270550d 100644 --- a/src/game_em/logic.c +++ b/src/game_em/logic.c @@ -10,11 +10,9 @@ #define SPRING_ROLL /* spring rolling off round things continues to roll */ #define ACID_ROLL /* rolling objects go into acid rather than remove it */ +#define ACID_PLAYER /* player gets killed by acid, but without explosion */ -#define USE_CHANGED_ACID_STUFF - -#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; @@ -152,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); @@ -467,7 +465,7 @@ static void kill_player(struct PLAYER *ply) switch (cave[x][y]) { -#ifdef USE_CHANGED_ACID_STUFF +#ifdef ACID_PLAYER case Xacid_1: case Xacid_2: case Xacid_3: @@ -501,7 +499,7 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) if (dx && dy && ply->joy_snap) /* more than one direction specified */ return FALSE; - if (ply->joy_snap == 0) /* player wants to move */ + if (!ply->joy_snap) /* player wants to move */ { int element = cave[x][y]; @@ -513,6 +511,8 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) case Xsplash_w: cave[x][y] = Zplayer; next[x][y] = Zplayer; + // FALL THROUGH + case Xfake_acid_1: case Xfake_acid_2: case Xfake_acid_3: @@ -527,7 +527,6 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) ply->y = y; break; -#ifdef USE_CHANGED_ACID_STUFF case Xacid_1: case Xacid_2: case Xacid_3: @@ -536,13 +535,14 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) case Xacid_6: case Xacid_7: case Xacid_8: +#ifdef ACID_PLAYER if (cave[x+1][y-1] == Xblank) cave[x+1][y-1] = Xsplash_e; if (cave[x-1][y-1] == Xblank) cave[x-1][y-1] = Xsplash_w; play_element_sound(x, y, SOUND_acid, Xacid_1); + // FALL THROUGH #endif - case Xboom_android: case Xboom_1: case Xbug_1_n: @@ -561,17 +561,6 @@ static boolean player_digfield(struct PLAYER *ply, int dx, int dy) case Xtank_2_e: case Xtank_2_s: case Xtank_2_w: - -#ifndef USE_CHANGED_ACID_STUFF - case Xacid_1: - case Xacid_2: - case Xacid_3: - case Xacid_4: - case Xacid_5: - case Xacid_6: - case Xacid_7: - case Xacid_8: -#endif ply->anim = PLY_walk_n + anim; ply->x = x; ply->y = y; @@ -1357,7 +1346,10 @@ static void check_player(struct PLAYER *ply) if (!can_move) { - ply->joy_n = ply->joy_e = ply->joy_s = ply->joy_w = 0; + ply->joy_n = FALSE; + ply->joy_e = FALSE; + ply->joy_s = FALSE; + ply->joy_w = FALSE; return; } @@ -1365,7 +1357,7 @@ static void check_player(struct PLAYER *ply) if (dx == 0 && dy == 0) { - ply->joy_stick = 0; + ply->joy_stick = FALSE; if (ply->joy_drop) { @@ -1387,11 +1379,15 @@ static void check_player(struct PLAYER *ply) return; } - ply->joy_stick = 1; - ply->joy_n = ply->joy_e = ply->joy_s = ply->joy_w = 0; + ply->joy_stick = TRUE; + ply->joy_n = FALSE; + ply->joy_e = FALSE; + ply->joy_s = FALSE; + ply->joy_w = FALSE; + ply->dynamite_cnt = 0; /* reset dynamite timer if we move */ - if (ply->joy_snap == 0) /* player wants to move */ + if (!ply->joy_snap) /* player wants to move */ { boolean moved = FALSE;