#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;
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);
switch (cave[x][y])
{
-#ifdef USE_CHANGED_ACID_STUFF
+#ifdef ACID_PLAYER
case Xacid_1:
case Xacid_2:
case Xacid_3:
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];
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:
ply->y = y;
break;
-#ifdef USE_CHANGED_ACID_STUFF
case Xacid_1:
case Xacid_2:
case Xacid_3:
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:
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;
}
}
+ /* 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;
}
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;
}
if (dx == 0 && dy == 0)
{
- ply->joy_stick = 0;
+ ply->joy_stick = FALSE;
if (ply->joy_drop)
{
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;