case Xacid_6:
case Xacid_7:
case Xacid_8:
+#if 1
+ Cave[y][x] = Xsand_stonesand_quickout_1;
+ if (Cave[y][x+1] == Xblank)
+ Cave[y][x+1] = Yacid_splash_eB;
+ if (Cave[y][x-1] == Xblank)
+ Cave[y][x-1] = Yacid_splash_wB;
+ Next[y][x] = Xsand_stonesand_quickout_2;
+ play_element_sound(x, y, SAMPLE_acid, Xacid_1);
+ goto loop;
+#else
Cave[y][x] = Xsand_stonesand_3;
if (Cave[y][x+1] == Xblank)
Cave[y][x+1] = Yacid_splash_eB;
Next[y][x] = Xsand_stonesand_4;
play_element_sound(x, y, SAMPLE_acid, Xacid_1);
goto loop;
+#endif
case Xblank:
case Yacid_splash_eB:
case Yacid_splash_wB:
+#if 1
+ Cave[y][x] = Xsand_stonesand_quickout_1;
+ Cave[y+1][x] = Xsand_stoneout_1;
+ Next[y][x] = Xsand_stonesand_quickout_2;
+ Next[y+1][x] = Xsand_stoneout_2;
+ goto loop;
+#else
Cave[y][x] = Xsand_stonesand_3;
Cave[y+1][x] = Xsand_stoneout_1;
Next[y][x] = Xsand_stonesand_4;
Next[y+1][x] = Xsand_stoneout_2;
goto loop;
+#endif
case Xsand:
Cave[y][x] = Xsand_stonesand_1;
Next[y][x] = Xsand;
goto loop;
+#if 1
+ case Xsand_stonesand_quickout_1:
+ Next[y][x] = Xsand_stonesand_quickout_2;
+ goto loop;
+
+ case Xsand_stonesand_quickout_2:
+ Next[y][x] = Xsand;
+ goto loop;
+#endif
+
case Xsand_stoneout_1:
Next[y][x] = Xsand_stoneout_2;
goto loop;
Xsand_stonesand_4, FALSE, FALSE,
EL_QUICKSAND_EMPTYING, -1, -1
},
+ {
+ Xsand_stonesand_quickout_1, FALSE, FALSE,
+ EL_QUICKSAND_EMPTYING, -1, -1
+ },
+ {
+ Xsand_stonesand_quickout_2, FALSE, FALSE,
+ EL_QUICKSAND_EMPTYING, -1, -1
+ },
#else
{
Xsand_stonesand_1, FALSE, FALSE,
switch (tile)
{
case Xsand_stonesand_1:
+ case Xsand_stonesand_quickout_1:
case Xsand_sandstone_1:
+ case Xsand_stonein_1:
+ case Xsand_stoneout_1:
case Xboom_1:
case Xdynamite_1:
case Ybug_w_n:
action == ACTION_FILLING ||
action == ACTION_EMPTYING);
+#if 0
+ if (tile == Xsand_stonesand_1 ||
+ tile == Xsand_stonesand_2 ||
+ tile == Xsand_stonesand_3 ||
+ tile == Xsand_stonesand_4)
+ printf("::: 1: quicksand frame %d [%d]\n", GfxFrame[x][y], tile);
+#endif
+
+#if 1
+ if ((action_removing || check_linear_animation_EM(tile)) && frame_em == 0)
+ {
+ GfxFrame[x][y] = 0;
+
+ // printf("::: resetting... [%d]\n", tile);
+ }
+#else
if (action_removing || check_linear_animation_EM(tile))
{
GfxFrame[x][y] = frame_em;
+
+ // printf("::: resetting... [%d]\n", tile);
}
+#endif
else if (action_moving)
{
boolean is_backside = object_mapping[tile].is_backside;
else
{
GfxFrame[x][y]++;
+
+ /* special case: animation for Xsand_stonesand_quickout_1/2 twice as fast */
+ if (tile == Xsand_stonesand_quickout_1 ||
+ tile == Xsand_stonesand_quickout_2)
+ GfxFrame[x][y]++;
}
+#if 0
+ if (tile == Xsand_stonesand_1 ||
+ tile == Xsand_stonesand_2 ||
+ tile == Xsand_stonesand_3 ||
+ tile == Xsand_stonesand_4)
+ printf("::: 2: quicksand frame %d [%d]\n", GfxFrame[x][y], tile);
+#endif
+
#if 1
if (graphic_info[graphic].anim_global_sync)
sync_frame = FrameCounter;