- for (i=0; i<4; i++)
- {
- int xx = x + xy[i][0], yy = y + xy[i][1];
-
- if (IS_PLAYER(xx, yy))
- {
- PlaySoundLevel(x, y, SND_SP_BUGGY_BASE_ACTIVE);
-
- break;
- }
- }
-}
-
-#if 1
-void CheckBuggyBase(int x, int y)
-{
- int element = Feld[x][y];
-
- if (element == EL_SP_BUGGY_BASE)
- {
- if (MovDelay[x][y] == 0) /* wait some time before activating base */
- {
- GfxFrame[x][y] = 0;
-
- InitBuggyBase(x, y);
- }
-
- MovDelay[x][y]--;
-
- if (MovDelay[x][y] != 0)
- {
- DrawLevelElementAnimation(x, y, element);
- }
- else
- {
- Feld[x][y] = EL_SP_BUGGY_BASE_ACTIVATING;
- DrawLevelField(x, y);
- }
- }
- else if (element == EL_SP_BUGGY_BASE_ACTIVATING)
- {
- if (MovDelay[x][y] == 0) /* display activation warning of buggy base */
- {
- GfxFrame[x][y] = 0;
-
- InitBuggyBase(x, y);
- }
-
- MovDelay[x][y]--;
-
- if (MovDelay[x][y] != 0)
- {
- DrawLevelElementAnimation(x, y, element);
- }
- else
- {
- Feld[x][y] = EL_SP_BUGGY_BASE_ACTIVE;
- DrawLevelField(x, y);
- }
- }
- else if (element == EL_SP_BUGGY_BASE_ACTIVE)
- {
- if (MovDelay[x][y] == 0) /* start activating buggy base */
- {
- GfxFrame[x][y] = 0;
-
- InitBuggyBase(x, y);
- }
-
- MovDelay[x][y]--;
-
- if (MovDelay[x][y] != 0)
- {
- DrawLevelElementAnimation(x, y, element);
-
- WarnBuggyBase(x, y);
- }
- else
- {
- Feld[x][y] = EL_SP_BUGGY_BASE;
- DrawLevelField(x, y);
- }
- }
-}
-#endif
-
-static void InitTrap(int x, int y)
-{
- MovDelay[x][y] = 2 * FRAMES_PER_SECOND + RND(5 * FRAMES_PER_SECOND);
-}
-
-static void ActivateTrap(int x, int y)
-{
- PlaySoundLevel(x, y, SND_TRAP_ACTIVATING);
-}
-
-static void ChangeActiveTrap(int x, int y)
-{
- int graphic = IMG_TRAP_ACTIVE;
-
- /* if animation frame already drawn, correct crumbled sand border */
- if (IS_ANIMATED(graphic))
- if (checkDrawLevelGraphicAnimation(x, y, graphic))
- DrawCrumbledSand(SCREENX(x), SCREENY(y));
-}
-
-#if 1
-void CheckTrap(int x, int y)
-{
- int element = Feld[x][y];
-
- if (element == EL_TRAP)
- {
- if (MovDelay[x][y] == 0) /* wait some time before activating trap */
- MovDelay[x][y] = 2 * FRAMES_PER_SECOND + RND(5 * FRAMES_PER_SECOND);
-
- MovDelay[x][y]--;
-
- if (MovDelay[x][y] != 0)
- {
- /* do nothing while waiting */
- }
- else
- {
- Feld[x][y] = EL_TRAP_ACTIVE;
- PlaySoundLevel(x, y, SND_TRAP_ACTIVATING);
- }
- }
- else if (element == EL_TRAP_ACTIVE)
- {
- int delay = 4;
- int num_frames = 8;
-
- if (MovDelay[x][y] == 0) /* start activating trap */
- {
- MovDelay[x][y] = num_frames * delay;
- GfxFrame[x][y] = 0;
- }
-
- MovDelay[x][y]--;