#define SPRING_ROLL /* spring rolling off round things continues to roll */
+#define ACID_ROLL /* rolling objects go into acid rather than remove it */
+
#define USE_CHANGED_ACID_STUFF
#define RANDOM_RAW (seed = seed << 31 | seed >> 1)
static void Lpush_emerald_e(int x, int y)
{
+ cave[x][y] = Yemerald_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xemerald;
- next[x][y] = Xemerald;
return;
- default:
- cave[x][y] = Yemerald_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Yemerald_e;
- next[x+1][y] = Xemerald_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Yemerald_e;
+ next[x+1][y] = Xemerald_pause;
}
static void Lpush_emerald_w(int x, int y)
{
+ cave[x][y] = Yemerald_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xemerald;
- next[x][y] = Xemerald;
return;
- default:
- cave[x][y] = Yemerald_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Yemerald_w;
- next[x-1][y] = Xemerald_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Yemerald_w;
+ next[x-1][y] = Xemerald_pause;
}
static void Lpush_diamond_e(int x, int y)
{
+ cave[x][y] = Ydiamond_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xdiamond;
- next[x][y] = Xdiamond;
return;
- default:
- cave[x][y] = Ydiamond_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Ydiamond_e;
- next[x+1][y] = Xdiamond_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Ydiamond_e;
+ next[x+1][y] = Xdiamond_pause;
}
static void Lpush_diamond_w(int x, int y)
{
+ cave[x][y] = Ydiamond_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xdiamond;
- next[x][y] = Xdiamond;
return;
- default:
- cave[x][y] = Ydiamond_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Ydiamond_w;
- next[x-1][y] = Xdiamond_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Ydiamond_w;
+ next[x-1][y] = Xdiamond_pause;
}
static void Lpush_stone_e(int x, int y)
{
+ cave[x][y] = Ystone_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xstone;
- next[x][y] = Xstone;
return;
- default:
- cave[x][y] = Ystone_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Ystone_e;
- next[x+1][y] = Xstone_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Ystone_e;
+ next[x+1][y] = Xstone_pause;
}
static void Lpush_stone_w(int x, int y)
{
+ cave[x][y] = Ystone_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xstone;
- next[x][y] = Xstone;
return;
- default:
- cave[x][y] = Ystone_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Ystone_w;
- next[x-1][y] = Xstone_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Ystone_w;
+ next[x-1][y] = Xstone_pause;
}
static void Lpush_bomb_e(int x, int y)
{
+ cave[x][y] = Ybomb_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xbomb;
- next[x][y] = Xbomb;
return;
- default:
- cave[x][y] = Ybomb_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Ybomb_e;
- next[x+1][y] = Xbomb_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Ybomb_e;
+ next[x+1][y] = Xbomb_pause;
}
static void Lpush_bomb_w(int x, int y)
{
+ cave[x][y] = Ybomb_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xbomb;
- next[x][y] = Xbomb;
return;
- default:
- cave[x][y] = Ybomb_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Ybomb_w;
- next[x-1][y] = Xbomb_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Ybomb_w;
+ next[x-1][y] = Xbomb_pause;
}
static void Lpush_nut_e(int x, int y)
{
+ cave[x][y] = Ynut_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xnut;
- next[x][y] = Xnut;
return;
- default:
- cave[x][y] = Ynut_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Ynut_e;
- next[x+1][y] = Xnut_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Ynut_e;
+ next[x+1][y] = Xnut_pause;
}
static void Lpush_nut_w(int x, int y)
{
+ cave[x][y] = Ynut_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xnut;
- next[x][y] = Xnut;
return;
- default:
- cave[x][y] = Ynut_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Ynut_w;
- next[x-1][y] = Xnut_pause;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Ynut_w;
+ next[x-1][y] = Xnut_pause;
}
static void Lpush_spring_e(int x, int y)
{
+ cave[x][y] = Yspring_eB;
+ next[x][y] = Xblank;
+
switch (cave[x+1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xspring;
- next[x][y] = Xspring;
return;
- default:
- cave[x][y] = Yspring_eB;
- next[x][y] = Xblank;
- cave[x+1][y] = Yspring_e;
- next[x+1][y] = Xspring_e;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x+2][y-1] == Xblank)
+ cave[x+2][y-1] = Xsplash_e;
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x+1][y] = Yspring_e;
+ next[x+1][y] = Xspring_e;
}
static void Lpush_spring_w(int x, int y)
{
+ cave[x][y] = Yspring_wB;
+ next[x][y] = Xblank;
+
switch (cave[x-1][y])
{
- case Zplayer:
case Zborder:
case Znormal:
case Zdynamite:
case Xboom_bomb:
case Xboom_android:
case Xboom_1:
- cave[x][y] = Xspring;
- next[x][y] = Xspring;
return;
- default:
- cave[x][y] = Yspring_wB;
- next[x][y] = Xblank;
- cave[x-1][y] = Yspring_w;
- next[x-1][y] = Xspring_w;
+#ifdef ACID_ROLL
+ case Xacid_1:
+ case Xacid_2:
+ case Xacid_3:
+ case Xacid_4:
+ case Xacid_5:
+ case Xacid_6:
+ case Xacid_7:
+ case Xacid_8:
+ if (cave[x][y-1] == Xblank)
+ cave[x][y-1] = Xsplash_e;
+ if (cave[x-2][y-1] == Xblank)
+ cave[x-2][y-1] = Xsplash_w;
+ play_element_sound(x, y, SOUND_acid, Xacid_1);
return;
+#endif
}
+
+ cave[x-1][y] = Yspring_w;
+ next[x-1][y] = Xspring_w;
}
static void Ldynamite_1(int x, int y)