},
{
GAMETOON_XSIZE, GAMETOON_YSIZE,
- ((GFX_MAULWURF_LEFT - GFX_START_ROCKSHEROES) % HEROES_PER_LINE)*TILEX,
- ((GFX_MAULWURF_LEFT - GFX_START_ROCKSHEROES) / HEROES_PER_LINE)*TILEY,
+ ((GFX_MOLE_LEFT - GFX_START_ROCKSHEROES) % HEROES_PER_LINE)*TILEX,
+ ((GFX_MOLE_LEFT - GFX_START_ROCKSHEROES) / HEROES_PER_LINE)*TILEY,
GAMETOON_FRAMES_4,
GAMETOON_FPS,
GAMETOON_STEPSIZE,
},
{
GAMETOON_XSIZE, GAMETOON_YSIZE,
- ((GFX_MAULWURF_RIGHT - GFX_START_ROCKSHEROES) % HEROES_PER_LINE)*TILEX,
- ((GFX_MAULWURF_RIGHT - GFX_START_ROCKSHEROES) / HEROES_PER_LINE)*TILEY,
+ ((GFX_MOLE_RIGHT - GFX_START_ROCKSHEROES) % HEROES_PER_LINE)*TILEX,
+ ((GFX_MOLE_RIGHT - GFX_START_ROCKSHEROES) / HEROES_PER_LINE)*TILEY,
GAMETOON_FRAMES_4,
GAMETOON_FPS,
GAMETOON_STEPSIZE,
EL_AUSGANG_AUF,
EL_EDELSTEIN_BD,
- EL_BUTTERFLY_O,
- EL_FIREFLY_O,
+ EL_BUTTERFLY_UP,
+ EL_FIREFLY_UP,
EL_FELSBROCKEN,
- EL_BUTTERFLY_L,
- EL_FIREFLY_L,
- EL_BUTTERFLY_R,
- EL_FIREFLY_R,
+ EL_BUTTERFLY_LEFT,
+ EL_FIREFLY_LEFT,
+ EL_BUTTERFLY_RIGHT,
+ EL_FIREFLY_RIGHT,
EL_AMOEBE_BD,
- EL_BUTTERFLY_U,
- EL_FIREFLY_U,
+ EL_BUTTERFLY_DOWN,
+ EL_FIREFLY_DOWN,
EL_LEERRAUM,
EL_CHAR('E'),
EL_AUSGANG_AUF,
EL_MAMPFER,
- EL_KAEFER_O,
- EL_FLIEGER_O,
+ EL_KAEFER_UP,
+ EL_FLIEGER_UP,
EL_ROBOT,
- EL_KAEFER_L,
- EL_FLIEGER_L,
- EL_KAEFER_R,
- EL_FLIEGER_R,
+ EL_KAEFER_LEFT,
+ EL_FLIEGER_LEFT,
+ EL_KAEFER_RIGHT,
+ EL_FLIEGER_RIGHT,
EL_ABLENK_AUS,
- EL_KAEFER_U,
- EL_FLIEGER_U,
+ EL_KAEFER_DOWN,
+ EL_FLIEGER_DOWN,
EL_UNSICHTBAR,
EL_BADEWANNE1,
EL_PFORTE3X,
EL_PFORTE4X,
- EL_PFEIL_L,
- EL_PFEIL_R,
- EL_PFEIL_O,
- EL_PFEIL_U,
+ EL_PFEIL_LEFT,
+ EL_PFEIL_RIGHT,
+ EL_PFEIL_UP,
+ EL_PFEIL_DOWN,
EL_AMOEBE_VOLL,
EL_EDELSTEIN_GELB,
EL_ERZ_EDEL_LILA,
EL_LIFE,
- EL_PACMAN_O,
+ EL_PACMAN_UP,
EL_ZEIT_VOLL,
EL_ZEIT_LEER,
- EL_PACMAN_L,
+ EL_PACMAN_LEFT,
EL_MAMPFER2,
- EL_PACMAN_R,
+ EL_PACMAN_RIGHT,
EL_MAUER_LEBT,
EL_LIFE_ASYNC,
- EL_PACMAN_U,
+ EL_PACMAN_DOWN,
EL_BIRNE_AUS,
EL_BIRNE_EIN,
EL_DYNABOMB_XL,
EL_BADEWANNE,
- EL_MAULWURF,
+ EL_MOLE,
EL_PINGUIN,
EL_SCHWEIN,
EL_DRACHE,
+ EL_LEERRAUM,
+ EL_MOLE_UP,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+
+ EL_MOLE_LEFT,
+ EL_LEERRAUM,
+ EL_MOLE_RIGHT,
+ EL_LEERRAUM,
+
+ EL_LEERRAUM,
+ EL_MOLE_DOWN,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+
EL_SONDE,
EL_MAUER_X,
EL_MAUER_Y,
EL_BELT1_LEFT,
EL_BELT1_MIDDLE,
EL_BELT1_RIGHT,
- EL_BELT1_SWITCH_M,
+ EL_BELT1_SWITCH_MIDDLE,
EL_BELT2_LEFT,
EL_BELT2_MIDDLE,
EL_BELT2_RIGHT,
- EL_BELT2_SWITCH_M,
+ EL_BELT2_SWITCH_MIDDLE,
EL_BELT3_LEFT,
EL_BELT3_MIDDLE,
EL_BELT3_RIGHT,
- EL_BELT3_SWITCH_M,
+ EL_BELT3_SWITCH_MIDDLE,
EL_BELT4_LEFT,
EL_BELT4_MIDDLE,
EL_BELT4_RIGHT,
- EL_BELT4_SWITCH_M,
+ EL_BELT4_SWITCH_MIDDLE,
- EL_BELT1_SWITCH_L,
- EL_BELT2_SWITCH_L,
- EL_BELT3_SWITCH_L,
- EL_BELT4_SWITCH_L,
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT4_SWITCH_LEFT,
- EL_BELT1_SWITCH_R,
- EL_BELT2_SWITCH_R,
- EL_BELT3_SWITCH_R,
- EL_BELT4_SWITCH_R,
+ EL_BELT1_SWITCH_RIGHT,
+ EL_BELT2_SWITCH_RIGHT,
+ EL_BELT3_SWITCH_RIGHT,
+ EL_BELT4_SWITCH_RIGHT,
EL_SWITCHGATE_OPEN,
EL_SWITCHGATE_CLOSED,
{ EL_EDELSTEIN_ROT, &level.score[SC_EDELSTEIN], TEXT_COLLECTING },
{ EL_EDELSTEIN_LILA,&level.score[SC_EDELSTEIN], TEXT_COLLECTING },
{ EL_DIAMANT, &level.score[SC_DIAMANT], TEXT_COLLECTING },
- { EL_KAEFER_R, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_KAEFER_O, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_KAEFER_L, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_KAEFER_U, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_BUTTERFLY_R, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_BUTTERFLY_O, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_BUTTERFLY_L, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_BUTTERFLY_U, &level.score[SC_KAEFER], TEXT_SMASHING },
- { EL_FLIEGER_R, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FLIEGER_O, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FLIEGER_L, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FLIEGER_U, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FIREFLY_R, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FIREFLY_O, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FIREFLY_L, &level.score[SC_FLIEGER], TEXT_SMASHING },
- { EL_FIREFLY_U, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_KAEFER_RIGHT, &level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_KAEFER_UP, &level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_KAEFER_LEFT, &level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_KAEFER_DOWN, &level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_BUTTERFLY_RIGHT,&level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_BUTTERFLY_UP, &level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_BUTTERFLY_LEFT,&level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_BUTTERFLY_DOWN,&level.score[SC_KAEFER], TEXT_SMASHING },
+ { EL_FLIEGER_RIGHT, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FLIEGER_UP, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FLIEGER_LEFT, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FLIEGER_DOWN, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FIREFLY_RIGHT, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FIREFLY_UP, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FIREFLY_LEFT, &level.score[SC_FLIEGER], TEXT_SMASHING },
+ { EL_FIREFLY_DOWN, &level.score[SC_FLIEGER], TEXT_SMASHING },
{ EL_MAMPFER, &level.score[SC_MAMPFER], TEXT_SMASHING },
{ EL_MAMPFER2, &level.score[SC_MAMPFER], TEXT_SMASHING },
{ EL_ROBOT, &level.score[SC_ROBOT], TEXT_SMASHING },
- { EL_PACMAN_R, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_O, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_L, &level.score[SC_PACMAN], TEXT_SMASHING },
- { EL_PACMAN_U, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_RIGHT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_UP, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_LEFT, &level.score[SC_PACMAN], TEXT_SMASHING },
+ { EL_PACMAN_DOWN, &level.score[SC_PACMAN], TEXT_SMASHING },
{ EL_KOKOSNUSS, &level.score[SC_KOKOSNUSS], TEXT_CRACKING },
{ EL_DYNAMITE_INACTIVE,&level.score[SC_DYNAMIT], TEXT_COLLECTING },
{ EL_SCHLUESSEL1, &level.score[SC_SCHLUESSEL], TEXT_COLLECTING },
static int getBeltNrFromSwitchElement(int element)
{
- return (element < EL_BELT2_SWITCH_L ? 0 :
- element < EL_BELT3_SWITCH_L ? 1 :
- element < EL_BELT4_SWITCH_L ? 2 : 3);
+ return (element < EL_BELT2_SWITCH_LEFT ? 0 :
+ element < EL_BELT3_SWITCH_LEFT ? 1 :
+ element < EL_BELT4_SWITCH_LEFT ? 2 : 3);
}
static int getBeltDirNrFromSwitchElement(int element)
{
static int belt_base_element[4] =
{
- EL_BELT1_SWITCH_L,
- EL_BELT2_SWITCH_L,
- EL_BELT3_SWITCH_L,
- EL_BELT4_SWITCH_L
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT4_SWITCH_LEFT
};
int belt_nr = getBeltNrFromSwitchElement(element);
Feld[x][y] = EL_BADEWANNE5;
break;
- case EL_KAEFER_R:
- case EL_KAEFER_O:
- case EL_KAEFER_L:
- case EL_KAEFER_U:
+ case EL_KAEFER_RIGHT:
+ case EL_KAEFER_UP:
+ case EL_KAEFER_LEFT:
+ case EL_KAEFER_DOWN:
case EL_KAEFER:
- case EL_FLIEGER_R:
- case EL_FLIEGER_O:
- case EL_FLIEGER_L:
- case EL_FLIEGER_U:
+ case EL_FLIEGER_RIGHT:
+ case EL_FLIEGER_UP:
+ case EL_FLIEGER_LEFT:
+ case EL_FLIEGER_DOWN:
case EL_FLIEGER:
- case EL_BUTTERFLY_R:
- case EL_BUTTERFLY_O:
- case EL_BUTTERFLY_L:
- case EL_BUTTERFLY_U:
+ case EL_BUTTERFLY_RIGHT:
+ case EL_BUTTERFLY_UP:
+ case EL_BUTTERFLY_LEFT:
+ case EL_BUTTERFLY_DOWN:
case EL_BUTTERFLY:
- case EL_FIREFLY_R:
- case EL_FIREFLY_O:
- case EL_FIREFLY_L:
- case EL_FIREFLY_U:
+ case EL_FIREFLY_RIGHT:
+ case EL_FIREFLY_UP:
+ case EL_FIREFLY_LEFT:
+ case EL_FIREFLY_DOWN:
case EL_FIREFLY:
- case EL_PACMAN_R:
- case EL_PACMAN_O:
- case EL_PACMAN_L:
- case EL_PACMAN_U:
+ case EL_PACMAN_RIGHT:
+ case EL_PACMAN_UP:
+ case EL_PACMAN_LEFT:
+ case EL_PACMAN_DOWN:
case EL_MAMPFER:
case EL_MAMPFER2:
case EL_ROBOT:
case EL_PACMAN:
case EL_SP_SNIKSNAK:
case EL_SP_ELECTRON:
+ case EL_MOLE_LEFT:
+ case EL_MOLE_RIGHT:
+ case EL_MOLE_UP:
+ case EL_MOLE_DOWN:
+ case EL_MOLE:
InitMovDir(x, y);
break;
local_player->sokobanfields_still_needed++;
break;
- case EL_MAULWURF:
case EL_PINGUIN:
local_player->friends_still_needed++;
break;
Feld[x][y] = EL_EM_KEY_4;
break;
- case EL_BELT1_SWITCH_L:
- case EL_BELT1_SWITCH_M:
- case EL_BELT1_SWITCH_R:
- case EL_BELT2_SWITCH_L:
- case EL_BELT2_SWITCH_M:
- case EL_BELT2_SWITCH_R:
- case EL_BELT3_SWITCH_L:
- case EL_BELT3_SWITCH_M:
- case EL_BELT3_SWITCH_R:
- case EL_BELT4_SWITCH_L:
- case EL_BELT4_SWITCH_M:
- case EL_BELT4_SWITCH_R:
+ case EL_BELT1_SWITCH_LEFT:
+ case EL_BELT1_SWITCH_MIDDLE:
+ case EL_BELT1_SWITCH_RIGHT:
+ case EL_BELT2_SWITCH_LEFT:
+ case EL_BELT2_SWITCH_MIDDLE:
+ case EL_BELT2_SWITCH_RIGHT:
+ case EL_BELT3_SWITCH_LEFT:
+ case EL_BELT3_SWITCH_MIDDLE:
+ case EL_BELT3_SWITCH_RIGHT:
+ case EL_BELT4_SWITCH_LEFT:
+ case EL_BELT4_SWITCH_MIDDLE:
+ case EL_BELT4_SWITCH_RIGHT:
if (init_game)
{
int belt_nr = getBeltNrFromSwitchElement(Feld[x][y]);
{ 0, -1 },
{ -1, 0 }
};
- static int direction[2][4] =
+ static int direction[3][4] =
{
{ MV_RIGHT, MV_UP, MV_LEFT, MV_DOWN },
- { MV_LEFT, MV_DOWN, MV_RIGHT, MV_UP }
+ { MV_LEFT, MV_DOWN, MV_RIGHT, MV_UP },
+ { MV_LEFT, MV_RIGHT, MV_UP, MV_DOWN }
};
switch(element)
{
- case EL_KAEFER_R:
- case EL_KAEFER_O:
- case EL_KAEFER_L:
- case EL_KAEFER_U:
+ case EL_KAEFER_RIGHT:
+ case EL_KAEFER_UP:
+ case EL_KAEFER_LEFT:
+ case EL_KAEFER_DOWN:
Feld[x][y] = EL_KAEFER;
- MovDir[x][y] = direction[0][element - EL_KAEFER_R];
+ MovDir[x][y] = direction[0][element - EL_KAEFER_RIGHT];
break;
- case EL_FLIEGER_R:
- case EL_FLIEGER_O:
- case EL_FLIEGER_L:
- case EL_FLIEGER_U:
+ case EL_FLIEGER_RIGHT:
+ case EL_FLIEGER_UP:
+ case EL_FLIEGER_LEFT:
+ case EL_FLIEGER_DOWN:
Feld[x][y] = EL_FLIEGER;
- MovDir[x][y] = direction[0][element - EL_FLIEGER_R];
+ MovDir[x][y] = direction[0][element - EL_FLIEGER_RIGHT];
break;
- case EL_BUTTERFLY_R:
- case EL_BUTTERFLY_O:
- case EL_BUTTERFLY_L:
- case EL_BUTTERFLY_U:
+ case EL_BUTTERFLY_RIGHT:
+ case EL_BUTTERFLY_UP:
+ case EL_BUTTERFLY_LEFT:
+ case EL_BUTTERFLY_DOWN:
Feld[x][y] = EL_BUTTERFLY;
- MovDir[x][y] = direction[0][element - EL_BUTTERFLY_R];
+ MovDir[x][y] = direction[0][element - EL_BUTTERFLY_RIGHT];
break;
- case EL_FIREFLY_R:
- case EL_FIREFLY_O:
- case EL_FIREFLY_L:
- case EL_FIREFLY_U:
+ case EL_FIREFLY_RIGHT:
+ case EL_FIREFLY_UP:
+ case EL_FIREFLY_LEFT:
+ case EL_FIREFLY_DOWN:
Feld[x][y] = EL_FIREFLY;
- MovDir[x][y] = direction[0][element - EL_FIREFLY_R];
+ MovDir[x][y] = direction[0][element - EL_FIREFLY_RIGHT];
break;
- case EL_PACMAN_R:
- case EL_PACMAN_O:
- case EL_PACMAN_L:
- case EL_PACMAN_U:
+ case EL_PACMAN_RIGHT:
+ case EL_PACMAN_UP:
+ case EL_PACMAN_LEFT:
+ case EL_PACMAN_DOWN:
Feld[x][y] = EL_PACMAN;
- MovDir[x][y] = direction[0][element - EL_PACMAN_R];
+ MovDir[x][y] = direction[0][element - EL_PACMAN_RIGHT];
break;
case EL_SP_SNIKSNAK:
MovDir[x][y] = MV_LEFT;
break;
+ case EL_MOLE_LEFT:
+ case EL_MOLE_RIGHT:
+ case EL_MOLE_UP:
+ case EL_MOLE_DOWN:
+ Feld[x][y] = EL_MOLE;
+ MovDir[x][y] = direction[2][element - EL_MOLE_LEFT];
+ break;
+
default:
MovDir[x][y] = 1 << RND(4);
if (element != EL_KAEFER &&
if (game.emulation == EMU_SUPAPLEX)
Store[x][y] = EL_LEERRAUM;
}
- else if (center_element == EL_MAULWURF)
+ else if (center_element == EL_MOLE)
Store[x][y] = EL_EDELSTEIN_ROT;
else if (center_element == EL_PINGUIN)
Store[x][y] = EL_EDELSTEIN_LILA;
case EL_MAMPFER2:
case EL_ROBOT:
case EL_PACMAN:
+ case EL_MOLE:
RaiseScoreElement(element);
Explode(x, y, EX_PHASE_START, EX_NORMAL);
break;
case EL_DYNABOMB_XL:
DynaExplode(x, y);
break;
- case EL_MAULWURF:
case EL_PINGUIN:
case EL_BIRNE_AUS:
case EL_BIRNE_EIN:
{
static int belt_base_element[4] =
{
- EL_BELT1_SWITCH_L,
- EL_BELT2_SWITCH_L,
- EL_BELT3_SWITCH_L,
- EL_BELT4_SWITCH_L
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT4_SWITCH_LEFT
};
static int belt_move_dir[4] =
{
{
if (object_hit && IS_PLAYER(x, y+1))
KillHeroUnlessForceField(PLAYERINFO(x, y+1));
- else if (object_hit && (smashed == EL_MAULWURF || smashed == EL_PINGUIN))
+ else if (object_hit && smashed == EL_PINGUIN)
Bang(x, y+1);
else
{
KillHeroUnlessForceField(PLAYERINFO(x, y+1));
return;
}
- else if (smashed == EL_MAULWURF || smashed == EL_PINGUIN)
+ else if (smashed == EL_PINGUIN)
{
Bang(x, y+1);
return;
{
if (IS_ENEMY(smashed) ||
smashed == EL_BOMBE || smashed == EL_SP_DISK_ORANGE ||
- smashed == EL_SONDE || smashed == EL_SCHWEIN || smashed == EL_DRACHE)
+ smashed == EL_SONDE || smashed == EL_SCHWEIN ||
+ smashed == EL_DRACHE || smashed == EL_MOLE)
{
Bang(x, y+1);
return;
MovDelay[x][y] = 0;
}
- else if (element == EL_ROBOT || element == EL_SONDE ||
- element == EL_MAULWURF || element == EL_PINGUIN)
+ else if (element == EL_MOLE)
+ {
+ boolean can_turn_left = FALSE, can_turn_right = FALSE, can_move_on = FALSE;
+
+ if (IN_LEV_FIELD(move_x, move_y) &&
+ (IS_FREE(move_x, move_y) || IS_AMOEBOID(Feld[move_x][move_y]) ||
+ Feld[move_x][move_y] == EL_DEAMOEBING))
+ can_move_on = TRUE;
+
+ if (!can_move_on)
+ {
+ if (IN_LEV_FIELD(left_x, left_y) &&
+ (IS_FREE(left_x, left_y) || IS_AMOEBOID(Feld[left_x][left_y])))
+ can_turn_left = TRUE;
+ if (IN_LEV_FIELD(right_x, right_y) &&
+ (IS_FREE(right_x, right_y) || IS_AMOEBOID(Feld[right_x][right_y])))
+ can_turn_right = TRUE;
+
+ if (can_turn_left && can_turn_right)
+ MovDir[x][y] = (RND(2) ? left_dir : right_dir);
+ else if (can_turn_left)
+ MovDir[x][y] = left_dir;
+ else
+ MovDir[x][y] = right_dir;
+ }
+
+ if (MovDir[x][y] != old_move_dir)
+ MovDelay[x][y] = 9;
+ }
+ else if (element == EL_ROBOT || element == EL_SONDE || element == EL_PINGUIN)
{
int attr_x = -1, attr_y = -1;
attr_y = ZY;
}
- if (element == EL_MAULWURF || element == EL_PINGUIN)
+ if (element == EL_PINGUIN)
{
int i;
static int xy[4][2] =
if (IN_LEV_FIELD(newx, newy) &&
(IS_FREE(newx, newy) ||
Feld[newx][newy] == EL_SALZSAEURE ||
- ((element == EL_MAULWURF || element == EL_PINGUIN) &&
+ (element == EL_PINGUIN &&
(Feld[newx][newy] == EL_AUSGANG_AUF ||
IS_MAMPF3(Feld[newx][newy])))))
return;
if (IN_LEV_FIELD(newx, newy) &&
(IS_FREE(newx, newy) ||
Feld[newx][newy] == EL_SALZSAEURE ||
- ((element == EL_MAULWURF || element == EL_PINGUIN) &&
+ (element == EL_PINGUIN &&
(Feld[newx][newy] == EL_AUSGANG_AUF ||
IS_MAMPF3(Feld[newx][newy])))))
return;
if (element!=EL_MAMPFER && element!=EL_MAMPFER2 && element!=EL_PACMAN)
{
TurnRound(x, y);
- if (MovDelay[x][y] && (element == EL_KAEFER || element == EL_FLIEGER ||
+ if (MovDelay[x][y] && (element == EL_KAEFER ||
+ element == EL_FLIEGER ||
element == EL_SP_SNIKSNAK ||
- element == EL_SP_ELECTRON))
+ element == EL_SP_ELECTRON ||
+ element == EL_MOLE))
DrawLevelField(x, y);
}
}
#endif
}
- else if ((element == EL_MAULWURF || element == EL_PINGUIN ||
+ else if ((element == EL_PINGUIN ||
element == EL_ROBOT || element == EL_SONDE) &&
IN_LEV_FIELD(newx, newy) &&
MovDir[x][y] == MV_DOWN && Feld[newx][newy] == EL_SALZSAEURE)
Blurb(x, y);
Store[x][y] = EL_SALZSAEURE;
}
- else if ((element == EL_MAULWURF || element == EL_PINGUIN) &&
- IN_LEV_FIELD(newx, newy))
+ else if (element == EL_PINGUIN && IN_LEV_FIELD(newx, newy))
{
if (Feld[newx][newy] == EL_AUSGANG_AUF)
{
DrawLevelField(newx, newy);
}
}
- else if (element == EL_PACMAN && IN_LEV_FIELD(newx, newy) &&
- IS_AMOEBOID(Feld[newx][newy]))
+ else if ((element == EL_PACMAN || element == EL_MOLE)
+ && IN_LEV_FIELD(newx, newy) && IS_AMOEBOID(Feld[newx][newy]))
{
if (AmoebaNr[newx][newy])
{
AmoebaCnt[AmoebaNr[newx][newy]]--;
}
- Feld[newx][newy] = EL_LEERRAUM;
- DrawLevelField(newx, newy);
+ if (element == EL_MOLE)
+ {
+ Feld[newx][newy] = EL_DEAMOEBING;
+ MovDelay[newx][newy] = 0; /* start amoeba shrinking delay */
+ return; /* wait for shrinking amoeba */
+ }
+ else /* element == EL_PACMAN */
+ {
+ Feld[newx][newy] = EL_LEERRAUM;
+ DrawLevelField(newx, newy);
+ }
+ }
+ else if (element == EL_MOLE && IN_LEV_FIELD(newx, newy) &&
+ (Feld[newx][newy] == EL_DEAMOEBING ||
+ (Feld[newx][newy] == EL_LEERRAUM && Stop[newx][newy])))
+ {
+ /* wait for shrinking amoeba to completely disappear */
+ return;
}
else if (!IN_LEV_FIELD(newx, newy) || !IS_FREE(newx, newy))
{
TurnRound(x, y);
if (element == EL_KAEFER || element == EL_FLIEGER ||
- element == EL_SP_SNIKSNAK)
+ element == EL_SP_SNIKSNAK || element == EL_MOLE)
DrawLevelField(x, y);
else if (element == EL_BUTTERFLY || element == EL_FIREFLY)
DrawGraphicAnimation(x, y, el2gfx(element), 2, 4, ANIM_NORMAL);
Feld[x][y] = EL_LEERRAUM;
Feld[newx][newy] = element;
+ if (element == EL_MOLE)
+ {
+ int i;
+ static int xy[4][2] =
+ {
+ { 0, -1 },
+ { -1, 0 },
+ { +1, 0 },
+ { 0, +1 }
+ };
+
+ Feld[x][y] = EL_ERDREICH;
+ DrawLevelField(x, y);
+
+ for(i=0; i<4; i++)
+ {
+ int xx, yy;
+
+ xx = x + xy[i][0];
+ yy = y + xy[i][1];
+
+ if (IN_LEV_FIELD(xx, yy) && Feld[xx][yy] == EL_ERDREICH)
+ DrawLevelField(xx, yy); /* for "ErdreichAnbroeckeln()" */
+ }
+ }
+
if (Store[x][y] == EL_MORAST_VOLL)
{
Store[x][y] = 0;
}
}
+void AmoebeSchrumpft(int x, int y)
+{
+ static unsigned long sound_delay = 0;
+ static unsigned long sound_delay_value = 0;
+
+ if (!MovDelay[x][y]) /* start new shrinking cycle */
+ {
+ MovDelay[x][y] = 7;
+
+ if (DelayReached(&sound_delay, sound_delay_value))
+ {
+ PlaySoundLevel(x, y, SND_BLURB);
+ sound_delay_value = 30;
+ }
+ }
+
+ if (MovDelay[x][y]) /* wait some time before shrinking */
+ {
+ MovDelay[x][y]--;
+ if (MovDelay[x][y]/2 && IN_SCR_FIELD(SCREENX(x), SCREENY(y)))
+ DrawGraphic(SCREENX(x), SCREENY(y), GFX_AMOEBING + MovDelay[x][y]/2);
+
+ if (!MovDelay[x][y])
+ {
+ Feld[x][y] = EL_LEERRAUM;
+ DrawLevelField(x, y);
+
+ /* don't let mole enter this field in this cycle;
+ (give priority to objects falling to this field from above) */
+ Stop[x][y] = TRUE;
+ }
+ }
+}
+
void AmoebeAbleger(int ax, int ay)
{
int i;
Explode(x, y, Frame[x][y], EX_NORMAL);
else if (element == EL_AMOEBING)
AmoebeWaechst(x, y);
+ else if (element == EL_DEAMOEBING)
+ AmoebeSchrumpft(x, y);
else if (IS_AMOEBALIVE(element))
AmoebeAbleger(x, y);
else if (element == EL_LIFE || element == EL_LIFE_ASYNC)
}
break;
- case EL_BELT1_SWITCH_L:
- case EL_BELT1_SWITCH_M:
- case EL_BELT1_SWITCH_R:
- case EL_BELT2_SWITCH_L:
- case EL_BELT2_SWITCH_M:
- case EL_BELT2_SWITCH_R:
- case EL_BELT3_SWITCH_L:
- case EL_BELT3_SWITCH_M:
- case EL_BELT3_SWITCH_R:
- case EL_BELT4_SWITCH_L:
- case EL_BELT4_SWITCH_M:
- case EL_BELT4_SWITCH_R:
+ case EL_BELT1_SWITCH_LEFT:
+ case EL_BELT1_SWITCH_MIDDLE:
+ case EL_BELT1_SWITCH_RIGHT:
+ case EL_BELT2_SWITCH_LEFT:
+ case EL_BELT2_SWITCH_MIDDLE:
+ case EL_BELT2_SWITCH_RIGHT:
+ case EL_BELT3_SWITCH_LEFT:
+ case EL_BELT3_SWITCH_MIDDLE:
+ case EL_BELT3_SWITCH_RIGHT:
+ case EL_BELT4_SWITCH_LEFT:
+ case EL_BELT4_SWITCH_MIDDLE:
+ case EL_BELT4_SWITCH_RIGHT:
if (!player->Switching)
{
player->Switching = TRUE;
break;
- case EL_MAULWURF:
case EL_PINGUIN:
case EL_SCHWEIN:
case EL_DRACHE:
EL_SP_TERMINAL,
EL_SP_EXIT,
EL_INVISIBLE_STEEL,
- EL_BELT1_SWITCH_L,
- EL_BELT1_SWITCH_M,
- EL_BELT1_SWITCH_R,
- EL_BELT2_SWITCH_L,
- EL_BELT2_SWITCH_M,
- EL_BELT2_SWITCH_R,
- EL_BELT3_SWITCH_L,
- EL_BELT3_SWITCH_M,
- EL_BELT3_SWITCH_R,
- EL_BELT4_SWITCH_L,
- EL_BELT4_SWITCH_M,
- EL_BELT4_SWITCH_R,
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT1_SWITCH_MIDDLE,
+ EL_BELT1_SWITCH_RIGHT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT2_SWITCH_MIDDLE,
+ EL_BELT2_SWITCH_RIGHT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT3_SWITCH_MIDDLE,
+ EL_BELT3_SWITCH_RIGHT,
+ EL_BELT4_SWITCH_LEFT,
+ EL_BELT4_SWITCH_MIDDLE,
+ EL_BELT4_SWITCH_RIGHT,
EL_LIGHT_SWITCH_OFF,
EL_LIGHT_SWITCH_ON,
EL_SIGN_EXCLAMATION,
EL_SP_HARD_BASE5,
EL_SP_HARD_BASE6,
EL_INVISIBLE_STEEL,
- EL_BELT1_SWITCH_L,
- EL_BELT1_SWITCH_M,
- EL_BELT1_SWITCH_R,
- EL_BELT2_SWITCH_L,
- EL_BELT2_SWITCH_M,
- EL_BELT2_SWITCH_R,
- EL_BELT3_SWITCH_L,
- EL_BELT3_SWITCH_M,
- EL_BELT3_SWITCH_R,
- EL_BELT4_SWITCH_L,
- EL_BELT4_SWITCH_M,
- EL_BELT4_SWITCH_R,
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT1_SWITCH_MIDDLE,
+ EL_BELT1_SWITCH_RIGHT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT2_SWITCH_MIDDLE,
+ EL_BELT2_SWITCH_RIGHT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT3_SWITCH_MIDDLE,
+ EL_BELT3_SWITCH_RIGHT,
+ EL_BELT4_SWITCH_LEFT,
+ EL_BELT4_SWITCH_MIDDLE,
+ EL_BELT4_SWITCH_RIGHT,
EL_LIGHT_SWITCH_OFF,
EL_LIGHT_SWITCH_ON,
EL_SIGN_EXCLAMATION,
EL_MAMPFER2,
EL_ROBOT,
EL_PACMAN,
- EL_MAULWURF,
+ EL_MOLE,
EL_PINGUIN,
EL_SCHWEIN,
EL_DRACHE,
static int ep_could_move[] =
{
- EL_KAEFER_R,
- EL_KAEFER_O,
- EL_KAEFER_L,
- EL_KAEFER_U,
- EL_FLIEGER_R,
- EL_FLIEGER_O,
- EL_FLIEGER_L,
- EL_FLIEGER_U,
- EL_BUTTERFLY_R,
- EL_BUTTERFLY_O,
- EL_BUTTERFLY_L,
- EL_BUTTERFLY_U,
- EL_FIREFLY_R,
- EL_FIREFLY_O,
- EL_FIREFLY_L,
- EL_FIREFLY_U,
- EL_PACMAN_R,
- EL_PACMAN_O,
- EL_PACMAN_L,
- EL_PACMAN_U
+ EL_KAEFER_RIGHT,
+ EL_KAEFER_UP,
+ EL_KAEFER_LEFT,
+ EL_KAEFER_DOWN,
+ EL_FLIEGER_RIGHT,
+ EL_FLIEGER_UP,
+ EL_FLIEGER_LEFT,
+ EL_FLIEGER_DOWN,
+ EL_BUTTERFLY_RIGHT,
+ EL_BUTTERFLY_UP,
+ EL_BUTTERFLY_LEFT,
+ EL_BUTTERFLY_DOWN,
+ EL_FIREFLY_RIGHT,
+ EL_FIREFLY_UP,
+ EL_FIREFLY_LEFT,
+ EL_FIREFLY_DOWN,
+ EL_PACMAN_RIGHT,
+ EL_PACMAN_UP,
+ EL_PACMAN_LEFT,
+ EL_PACMAN_DOWN
};
static int ep_could_move_num = sizeof(ep_could_move)/sizeof(int);
EL_SP_HARD_BASE6,
EL_SP_EXIT,
EL_INVISIBLE_STEEL,
- EL_BELT1_SWITCH_L,
- EL_BELT1_SWITCH_M,
- EL_BELT1_SWITCH_R,
- EL_BELT2_SWITCH_L,
- EL_BELT2_SWITCH_M,
- EL_BELT2_SWITCH_R,
- EL_BELT3_SWITCH_L,
- EL_BELT3_SWITCH_M,
- EL_BELT3_SWITCH_R,
- EL_BELT4_SWITCH_L,
- EL_BELT4_SWITCH_M,
- EL_BELT4_SWITCH_R,
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT1_SWITCH_MIDDLE,
+ EL_BELT1_SWITCH_RIGHT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT2_SWITCH_MIDDLE,
+ EL_BELT2_SWITCH_RIGHT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT3_SWITCH_MIDDLE,
+ EL_BELT3_SWITCH_RIGHT,
+ EL_BELT4_SWITCH_LEFT,
+ EL_BELT4_SWITCH_MIDDLE,
+ EL_BELT4_SWITCH_RIGHT,
EL_SIGN_EXCLAMATION,
EL_SIGN_RADIOACTIVITY,
EL_SIGN_STOP,
EL_DYNABOMB_SZ,
EL_DYNABOMB_XL,
EL_KAEFER,
- EL_MAULWURF,
+ EL_MOLE,
EL_PINGUIN,
EL_SCHWEIN,
EL_DRACHE,
static int ep_belt_switch[] =
{
- EL_BELT1_SWITCH_L,
- EL_BELT1_SWITCH_M,
- EL_BELT1_SWITCH_R,
- EL_BELT2_SWITCH_L,
- EL_BELT2_SWITCH_M,
- EL_BELT2_SWITCH_R,
- EL_BELT3_SWITCH_L,
- EL_BELT3_SWITCH_M,
- EL_BELT3_SWITCH_R,
- EL_BELT4_SWITCH_L,
- EL_BELT4_SWITCH_M,
- EL_BELT4_SWITCH_R,
+ EL_BELT1_SWITCH_LEFT,
+ EL_BELT1_SWITCH_MIDDLE,
+ EL_BELT1_SWITCH_RIGHT,
+ EL_BELT2_SWITCH_LEFT,
+ EL_BELT2_SWITCH_MIDDLE,
+ EL_BELT2_SWITCH_RIGHT,
+ EL_BELT3_SWITCH_LEFT,
+ EL_BELT3_SWITCH_MIDDLE,
+ EL_BELT3_SWITCH_RIGHT,
+ EL_BELT4_SWITCH_LEFT,
+ EL_BELT4_SWITCH_MIDDLE,
+ EL_BELT4_SWITCH_RIGHT,
};
static int ep_belt_switch_num = sizeof(ep_belt_switch)/sizeof(int);
"invisible sand",
"dx unknown 15",
"dx unknown 42",
- "dx unknown 229",
- "dx unknown 233", /* 320 */
+ "-",
+ "-", /* 320 */
"force field (active, kills enemies)",
"-",
"-",
#define EL_SOKOBAN_OBJEKT 67
#define EL_SOKOBAN_FELD_LEER 68
#define EL_SOKOBAN_FELD_VOLL 69
-#define EL_BUTTERFLY_R 70
-#define EL_BUTTERFLY_O 71
-#define EL_BUTTERFLY_L 72
-#define EL_BUTTERFLY_U 73
-#define EL_FIREFLY_R 74
-#define EL_FIREFLY_O 75
-#define EL_FIREFLY_L 76
-#define EL_FIREFLY_U 77
-#define EL_BUTTERFLY_1 EL_BUTTERFLY_U
-#define EL_BUTTERFLY_2 EL_BUTTERFLY_L
-#define EL_BUTTERFLY_3 EL_BUTTERFLY_O
-#define EL_BUTTERFLY_4 EL_BUTTERFLY_R
-#define EL_FIREFLY_1 EL_FIREFLY_L
-#define EL_FIREFLY_2 EL_FIREFLY_U
-#define EL_FIREFLY_3 EL_FIREFLY_R
-#define EL_FIREFLY_4 EL_FIREFLY_O
+#define EL_BUTTERFLY_RIGHT 70
+#define EL_BUTTERFLY_UP 71
+#define EL_BUTTERFLY_LEFT 72
+#define EL_BUTTERFLY_DOWN 73
+#define EL_FIREFLY_RIGHT 74
+#define EL_FIREFLY_UP 75
+#define EL_FIREFLY_LEFT 76
+#define EL_FIREFLY_DOWN 77
+#define EL_BUTTERFLY_1 EL_BUTTERFLY_DOWN
+#define EL_BUTTERFLY_2 EL_BUTTERFLY_LEFT
+#define EL_BUTTERFLY_3 EL_BUTTERFLY_UP
+#define EL_BUTTERFLY_4 EL_BUTTERFLY_RIGHT
+#define EL_FIREFLY_1 EL_FIREFLY_LEFT
+#define EL_FIREFLY_2 EL_FIREFLY_DOWN
+#define EL_FIREFLY_3 EL_FIREFLY_RIGHT
+#define EL_FIREFLY_4 EL_FIREFLY_UP
#define EL_BUTTERFLY 78
#define EL_FIREFLY 79
#define EL_SPIELER1 80
#define EL_SPIELER2 81
#define EL_SPIELER3 82
#define EL_SPIELER4 83
-#define EL_KAEFER_R 84
-#define EL_KAEFER_O 85
-#define EL_KAEFER_L 86
-#define EL_KAEFER_U 87
-#define EL_FLIEGER_R 88
-#define EL_FLIEGER_O 89
-#define EL_FLIEGER_L 90
-#define EL_FLIEGER_U 91
-#define EL_PACMAN_R 92
-#define EL_PACMAN_O 93
-#define EL_PACMAN_L 94
-#define EL_PACMAN_U 95
+#define EL_KAEFER_RIGHT 84
+#define EL_KAEFER_UP 85
+#define EL_KAEFER_LEFT 86
+#define EL_KAEFER_DOWN 87
+#define EL_FLIEGER_RIGHT 88
+#define EL_FLIEGER_UP 89
+#define EL_FLIEGER_LEFT 90
+#define EL_FLIEGER_DOWN 91
+#define EL_PACMAN_RIGHT 92
+#define EL_PACMAN_UP 93
+#define EL_PACMAN_LEFT 94
+#define EL_PACMAN_DOWN 95
#define EL_EDELSTEIN_ROT 96
#define EL_EDELSTEIN_LILA 97
#define EL_ERZ_EDEL_ROT 98
#define EL_BLACK_ORB 108
#define EL_AMOEBA2DIAM 109
-#define EL_MAULWURF 110
+#define EL_MOLE 110
#define EL_PINGUIN 111
#define EL_SONDE 112
-#define EL_PFEIL_L 113
-#define EL_PFEIL_R 114
-#define EL_PFEIL_O 115
-#define EL_PFEIL_U 116
+#define EL_PFEIL_LEFT 113
+#define EL_PFEIL_RIGHT 114
+#define EL_PFEIL_UP 115
+#define EL_PFEIL_DOWN 116
#define EL_SCHWEIN 117
#define EL_DRACHE 118
#define EL_BELT1_LEFT 271
#define EL_BELT1_MIDDLE 272
#define EL_BELT1_RIGHT 273
-#define EL_BELT1_SWITCH_L 274
-#define EL_BELT1_SWITCH_M 275
-#define EL_BELT1_SWITCH_R 276
+#define EL_BELT1_SWITCH_LEFT 274
+#define EL_BELT1_SWITCH_MIDDLE 275
+#define EL_BELT1_SWITCH_RIGHT 276
#define EL_BELT2_LEFT 277
#define EL_BELT2_MIDDLE 278
#define EL_BELT2_RIGHT 279
-#define EL_BELT2_SWITCH_L 280
-#define EL_BELT2_SWITCH_M 281
-#define EL_BELT2_SWITCH_R 282
+#define EL_BELT2_SWITCH_LEFT 280
+#define EL_BELT2_SWITCH_MIDDLE 281
+#define EL_BELT2_SWITCH_RIGHT 282
#define EL_BELT3_LEFT 283
#define EL_BELT3_MIDDLE 284
#define EL_BELT3_RIGHT 285
-#define EL_BELT3_SWITCH_L 286
-#define EL_BELT3_SWITCH_M 287
-#define EL_BELT3_SWITCH_R 288
+#define EL_BELT3_SWITCH_LEFT 286
+#define EL_BELT3_SWITCH_MIDDLE 287
+#define EL_BELT3_SWITCH_RIGHT 288
#define EL_BELT4_LEFT 289
#define EL_BELT4_MIDDLE 290
#define EL_BELT4_RIGHT 291
-#define EL_BELT4_SWITCH_L 292
-#define EL_BELT4_SWITCH_M 293
-#define EL_BELT4_SWITCH_R 294
+#define EL_BELT4_SWITCH_LEFT 292
+#define EL_BELT4_SWITCH_MIDDLE 293
+#define EL_BELT4_SWITCH_RIGHT 294
#define EL_LANDMINE 295
#define EL_ENVELOPE 296
#define EL_LIGHT_SWITCH_OFF 297
#define EL_SAND_INVISIBLE 316
#define EL_DX_UNKNOWN_15 317
#define EL_DX_UNKNOWN_42 318
-#define EL_DX_UNKNOWN_229 319
-#define EL_DX_UNKNOWN_233 320
+
+#define EL_UNUSED_319 319
+#define EL_UNUSED_320 320
+
#define EL_FORCE_FIELD_ACTIVE 321
/* "real" (and therefore drawable) runtime elements */
#define EL_BLURB_LEFT 603
#define EL_BLURB_RIGHT 604
#define EL_AMOEBING 605
-#define EL_MAUERND 606
-#define EL_BURNING 607
-#define EL_PLAYER_IS_LEAVING 608
+#define EL_DEAMOEBING 606
+#define EL_MAUERND 607
+#define EL_BURNING 608
+#define EL_PLAYER_IS_LEAVING 609
/* game graphics:
** 0 - 255: graphics from "RocksScreen"
#define GFX_DYNAMIT_AUS 48
#define GFX_DYNAMIT 49
#define GFX_FLIEGER 56
-#define GFX_FLIEGER_R 56
-#define GFX_FLIEGER_O 57
-#define GFX_FLIEGER_L 58
-#define GFX_FLIEGER_U 59
+#define GFX_FLIEGER_RIGHT 56
+#define GFX_FLIEGER_UP 57
+#define GFX_FLIEGER_LEFT 58
+#define GFX_FLIEGER_DOWN 59
/* Zeile 4 (64) */
#define GFX_EXPLOSION 64
#define GFX_KAEFER 72
-#define GFX_KAEFER_R 72
-#define GFX_KAEFER_O 73
-#define GFX_KAEFER_L 74
-#define GFX_KAEFER_U 75
+#define GFX_KAEFER_RIGHT 72
+#define GFX_KAEFER_UP 73
+#define GFX_KAEFER_LEFT 74
+#define GFX_KAEFER_DOWN 75
/* Zeile 5 (80) */
#define GFX_MAMPFER 80
#define GFX_ROBOT 84
#define GFX_PACMAN 88
-#define GFX_PACMAN_R 88
-#define GFX_PACMAN_O 89
-#define GFX_PACMAN_L 90
-#define GFX_PACMAN_U 91
+#define GFX_PACMAN_RIGHT 88
+#define GFX_PACMAN_UP 89
+#define GFX_PACMAN_LEFT 90
+#define GFX_PACMAN_DOWN 91
/* Zeile 6 (96) */
#define GFX_ABLENK 96
#define GFX_ABLENK_EIN GFX_ABLENK
#define GFX_KUGEL_GRAU 143
/* Zeile 9 (144) */
#define GFX_PINGUIN 144
-#define GFX_MAULWURF 145
+#define GFX_MOLE 145
#define GFX_SCHWEIN 146
#define GFX_DRACHE 147
#define GFX_MAUER_XY 148
#define GFX_DYNABOMB_NR 188
#define GFX_DYNABOMB_SZ 191
/* Zeile 12 (192) */
-#define GFX_PFEIL_L 192
-#define GFX_PFEIL_R 193
-#define GFX_PFEIL_O 194
-#define GFX_PFEIL_U 195
+#define GFX_PFEIL_LEFT 192
+#define GFX_PFEIL_RIGHT 193
+#define GFX_PFEIL_UP 194
+#define GFX_PFEIL_DOWN 195
#define GFX_BUTTERFLY 196
#define GFX_FIREFLY 198
-#define GFX_BUTTERFLY_R 200
-#define GFX_BUTTERFLY_O 201
-#define GFX_BUTTERFLY_L 202
-#define GFX_BUTTERFLY_U 203
-#define GFX_FIREFLY_R 204
-#define GFX_FIREFLY_O 205
-#define GFX_FIREFLY_L 206
-#define GFX_FIREFLY_U 207
+#define GFX_BUTTERFLY_RIGHT 200
+#define GFX_BUTTERFLY_UP 201
+#define GFX_BUTTERFLY_LEFT 202
+#define GFX_BUTTERFLY_DOWN 203
+#define GFX_FIREFLY_RIGHT 204
+#define GFX_FIREFLY_UP 205
+#define GFX_FIREFLY_LEFT 206
+#define GFX_FIREFLY_DOWN 207
/* only available as size MINI_TILE */
#define GFX_VSTEEL_UPPER_LEFT 208
#define GFX_DRACHE_UP (GFX_START_ROCKSHEROES + 2*HEROES_PER_LINE +12)
#define GFX_DRACHE_LEFT (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE + 8)
#define GFX_DRACHE_RIGHT (GFX_START_ROCKSHEROES + 3*HEROES_PER_LINE +12)
-#define GFX_MAULWURF_DOWN (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE + 8)
-#define GFX_MAULWURF_UP (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE +12)
-#define GFX_MAULWURF_LEFT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE + 8)
-#define GFX_MAULWURF_RIGHT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE +12)
+#define GFX_MOLE_DOWN (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE + 8)
+#define GFX_MOLE_UP (GFX_START_ROCKSHEROES + 4*HEROES_PER_LINE +12)
+#define GFX_MOLE_LEFT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE + 8)
+#define GFX_MOLE_RIGHT (GFX_START_ROCKSHEROES + 5*HEROES_PER_LINE +12)
#define GFX_PINGUIN_DOWN (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE + 8)
#define GFX_PINGUIN_UP (GFX_START_ROCKSHEROES + 6*HEROES_PER_LINE +12)
#define GFX_PINGUIN_LEFT (GFX_START_ROCKSHEROES + 7*HEROES_PER_LINE + 8)
#define GFX_BELT4_MIDDLE (GFX_START_ROCKSDC + 9 * DC_PER_LINE + 0)
#define GFX_BELT4_LEFT (GFX_START_ROCKSDC + 10 * DC_PER_LINE + 0)
#define GFX_BELT4_RIGHT (GFX_START_ROCKSDC + 11 * DC_PER_LINE + 0)
-#define GFX_BELT1_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 0)
-#define GFX_BELT2_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 1)
-#define GFX_BELT3_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 2)
-#define GFX_BELT4_SWITCH_L (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 3)
-#define GFX_BELT1_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 0)
-#define GFX_BELT2_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 1)
-#define GFX_BELT3_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 2)
-#define GFX_BELT4_SWITCH_M (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 3)
-#define GFX_BELT1_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 0)
-#define GFX_BELT2_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 1)
-#define GFX_BELT3_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 2)
-#define GFX_BELT4_SWITCH_R (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 3)
+#define GFX_BELT1_SWITCH_LEFT (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_LEFT (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_LEFT (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_LEFT (GFX_START_ROCKSDC + 12 * DC_PER_LINE + 3)
+#define GFX_BELT1_SWITCH_MIDDLE (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_MIDDLE (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_MIDDLE (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_MIDDLE (GFX_START_ROCKSDC + 13 * DC_PER_LINE + 3)
+#define GFX_BELT1_SWITCH_RIGHT (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 0)
+#define GFX_BELT2_SWITCH_RIGHT (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 1)
+#define GFX_BELT3_SWITCH_RIGHT (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 2)
+#define GFX_BELT4_SWITCH_RIGHT (GFX_START_ROCKSDC + 14 * DC_PER_LINE + 3)
#define GFX_SWITCHGATE_OPEN (GFX_START_ROCKSDC + 15 * DC_PER_LINE + 4)
#define GFX_SWITCHGATE_CLOSED (GFX_START_ROCKSDC + 15 * DC_PER_LINE + 0)
#define GFX_SIGN_EXIT GFX_CHAR_FRAGE
#define GFX_SIGN_YINYANG GFX_CHAR_FRAGE
#define GFX_SIGN_OTHER GFX_CHAR_FRAGE
-#define GFX_MOLE_LEFT GFX_CHAR_FRAGE
-#define GFX_MOLE_RIGHT GFX_CHAR_FRAGE
-#define GFX_MOLE_UP GFX_CHAR_FRAGE
-#define GFX_MOLE_DOWN GFX_CHAR_FRAGE
#define GFX_DX_UNKNOWN_15 GFX_CHAR_FRAGE
#define GFX_DX_UNKNOWN_42 GFX_CHAR_FRAGE
-#define GFX_DX_UNKNOWN_229 GFX_CHAR_FRAGE
-#define GFX_DX_UNKNOWN_233 GFX_CHAR_FRAGE
/* the names of the sounds */
#define SND_ALCHEMY 0
for(i=2; i<10; i++)
DrawGraphic(0, i, GFX_KUGEL_BLAU);
- DrawGraphic(10, 3, GFX_PFEIL_L);
- DrawGraphic(14, 3, GFX_PFEIL_R);
+ DrawGraphic(10, 3, GFX_PFEIL_LEFT);
+ DrawGraphic(14, 3, GFX_PFEIL_RIGHT);
DrawText(SX + 56, SY + 326, "A Game by Artsoft Entertainment",
FS_SMALL, FC_RED);
GFX_MAMPFER2+1,1,1, GFX_MAMPFER2+0,1,1, HA_NEXT,
GFX_ROBOT+0,4,1, GFX_ROBOT+3,1,1, GFX_ROBOT+2,1,1,
GFX_ROBOT+1,1,1, GFX_ROBOT+0,1,1, HA_NEXT,
- GFX_MAULWURF_DOWN,4,2,
- GFX_MAULWURF_UP,4,2,
- GFX_MAULWURF_LEFT,4,2,
- GFX_MAULWURF_RIGHT,4,2, HA_NEXT,
+ GFX_MOLE_DOWN,4,2,
+ GFX_MOLE_UP,4,2,
+ GFX_MOLE_LEFT,4,2,
+ GFX_MOLE_RIGHT,4,2, HA_NEXT,
GFX_PINGUIN_DOWN,4,2,
GFX_PINGUIN_UP,4,2,
GFX_PINGUIN_LEFT,4,2,
{"Cruncher: Eats diamonds and you,", "if you're not careful"},
{"Cruncher (BD style):", "Eats almost everything"},
{"Robot: Tries to kill the player", ""},
- {"The mole: You must guide him savely","to the exit; he will follow you"},
+ {"The mole: Eats the amoeba and turns","empty space into normal sand"},
{"The penguin: Guide him to the exit,","but keep him away from monsters!"},
{"The Pig: Harmless, but eats all", "gems it can get"},
{"The Dragon: Breathes fire,", "especially to some monsters"},
}
if (first_entry > 0)
- DrawGraphic(0, 1, GFX_PFEIL_O);
+ DrawGraphic(0, 1, GFX_PFEIL_UP);
if (first_entry + num_page_entries < num_leveldirs)
- DrawGraphic(0, MAX_LEVEL_SERIES_ON_SCREEN + 1, GFX_PFEIL_U);
+ DrawGraphic(0, MAX_LEVEL_SERIES_ON_SCREEN + 1, GFX_PFEIL_DOWN);
}
static void drawChooseLevelInfo(int leveldir_nr)
DrawGraphic(0, 3, GFX_KUGEL_BLAU);
DrawGraphic(0, 4, GFX_KUGEL_BLAU);
DrawGraphic(0, 15, GFX_KUGEL_BLAU);
- DrawGraphic(10, 2, GFX_PFEIL_L);
- DrawGraphic(12, 2, GFX_PFEIL_R);
+ DrawGraphic(10, 2, GFX_PFEIL_LEFT);
+ DrawGraphic(12, 2, GFX_PFEIL_RIGHT);
DrawText(SX+32, SY+2*32, "Player:", FS_BIG, FC_GREEN);
DrawText(SX+32, SY+3*32, "Device:", FS_BIG, FC_GREEN);
}
DrawText(SX+32, SY+5*32, "Actual Settings:", FS_BIG, FC_GREEN);
- DrawGraphic(1, 6, GFX_PFEIL_L);
- DrawGraphic(1, 7, GFX_PFEIL_R);
- DrawGraphic(1, 8, GFX_PFEIL_O);
- DrawGraphic(1, 9, GFX_PFEIL_U);
+ DrawGraphic(1, 6, GFX_PFEIL_LEFT);
+ DrawGraphic(1, 7, GFX_PFEIL_RIGHT);
+ DrawGraphic(1, 8, GFX_PFEIL_UP);
+ DrawGraphic(1, 9, GFX_PFEIL_DOWN);
DrawText(SX+2*32, SY+6*32, ":", FS_BIG, FC_BLUE);
DrawText(SX+2*32, SY+7*32, ":", FS_BIG, FC_BLUE);
DrawText(SX+2*32, SY+8*32, ":", FS_BIG, FC_BLUE);
{
graphic = GFX2_SP_ELECTRON + getGraphicAnimationPhase(8, 2, ANIM_NORMAL);
}
- else if (element == EL_MAULWURF || element == EL_PINGUIN ||
+ else if (element == EL_MOLE || element == EL_PINGUIN ||
element == EL_SCHWEIN || element == EL_DRACHE)
{
if (dir == MV_LEFT)
- graphic = (element == EL_MAULWURF ? GFX_MAULWURF_LEFT :
+ graphic = (element == EL_MOLE ? GFX_MOLE_LEFT :
element == EL_PINGUIN ? GFX_PINGUIN_LEFT :
element == EL_SCHWEIN ? GFX_SCHWEIN_LEFT : GFX_DRACHE_LEFT);
else if (dir == MV_RIGHT)
- graphic = (element == EL_MAULWURF ? GFX_MAULWURF_RIGHT :
+ graphic = (element == EL_MOLE ? GFX_MOLE_RIGHT :
element == EL_PINGUIN ? GFX_PINGUIN_RIGHT :
element == EL_SCHWEIN ? GFX_SCHWEIN_RIGHT : GFX_DRACHE_RIGHT);
else if (dir == MV_UP)
- graphic = (element == EL_MAULWURF ? GFX_MAULWURF_UP :
+ graphic = (element == EL_MOLE ? GFX_MOLE_UP :
element == EL_PINGUIN ? GFX_PINGUIN_UP :
element == EL_SCHWEIN ? GFX_SCHWEIN_UP : GFX_DRACHE_UP);
else
- graphic = (element == EL_MAULWURF ? GFX_MAULWURF_DOWN :
+ graphic = (element == EL_MOLE ? GFX_MOLE_DOWN :
element == EL_PINGUIN ? GFX_PINGUIN_DOWN :
element == EL_SCHWEIN ? GFX_SCHWEIN_DOWN : GFX_DRACHE_DOWN);
case EL_SPIELER3: return GFX_SPIELER3;
case EL_SPIELER4: return GFX_SPIELER4;
case EL_KAEFER: return GFX_KAEFER;
- case EL_KAEFER_R: return GFX_KAEFER_R;
- case EL_KAEFER_O: return GFX_KAEFER_O;
- case EL_KAEFER_L: return GFX_KAEFER_L;
- case EL_KAEFER_U: return GFX_KAEFER_U;
+ case EL_KAEFER_RIGHT: return GFX_KAEFER_RIGHT;
+ case EL_KAEFER_UP: return GFX_KAEFER_UP;
+ case EL_KAEFER_LEFT: return GFX_KAEFER_LEFT;
+ case EL_KAEFER_DOWN: return GFX_KAEFER_DOWN;
case EL_FLIEGER: return GFX_FLIEGER;
- case EL_FLIEGER_R: return GFX_FLIEGER_R;
- case EL_FLIEGER_O: return GFX_FLIEGER_O;
- case EL_FLIEGER_L: return GFX_FLIEGER_L;
- case EL_FLIEGER_U: return GFX_FLIEGER_U;
+ case EL_FLIEGER_RIGHT: return GFX_FLIEGER_RIGHT;
+ case EL_FLIEGER_UP: return GFX_FLIEGER_UP;
+ case EL_FLIEGER_LEFT: return GFX_FLIEGER_LEFT;
+ case EL_FLIEGER_DOWN: return GFX_FLIEGER_DOWN;
case EL_BUTTERFLY: return GFX_BUTTERFLY;
- case EL_BUTTERFLY_R: return GFX_BUTTERFLY_R;
- case EL_BUTTERFLY_O: return GFX_BUTTERFLY_O;
- case EL_BUTTERFLY_L: return GFX_BUTTERFLY_L;
- case EL_BUTTERFLY_U: return GFX_BUTTERFLY_U;
+ case EL_BUTTERFLY_RIGHT: return GFX_BUTTERFLY_RIGHT;
+ case EL_BUTTERFLY_UP: return GFX_BUTTERFLY_UP;
+ case EL_BUTTERFLY_LEFT: return GFX_BUTTERFLY_LEFT;
+ case EL_BUTTERFLY_DOWN: return GFX_BUTTERFLY_DOWN;
case EL_FIREFLY: return GFX_FIREFLY;
- case EL_FIREFLY_R: return GFX_FIREFLY_R;
- case EL_FIREFLY_O: return GFX_FIREFLY_O;
- case EL_FIREFLY_L: return GFX_FIREFLY_L;
- case EL_FIREFLY_U: return GFX_FIREFLY_U;
+ case EL_FIREFLY_RIGHT: return GFX_FIREFLY_RIGHT;
+ case EL_FIREFLY_UP: return GFX_FIREFLY_UP;
+ case EL_FIREFLY_LEFT: return GFX_FIREFLY_LEFT;
+ case EL_FIREFLY_DOWN: return GFX_FIREFLY_DOWN;
case EL_MAMPFER: return GFX_MAMPFER;
case EL_ROBOT: return GFX_ROBOT;
case EL_BETON: return GFX_BETON;
case EL_PFORTE4X: return GFX_PFORTE4X;
case EL_DYNAMITE_INACTIVE: return GFX_DYNAMIT_AUS;
case EL_PACMAN: return GFX_PACMAN;
- case EL_PACMAN_R: return GFX_PACMAN_R;
- case EL_PACMAN_O: return GFX_PACMAN_O;
- case EL_PACMAN_L: return GFX_PACMAN_L;
- case EL_PACMAN_U: return GFX_PACMAN_U;
+ case EL_PACMAN_RIGHT: return GFX_PACMAN_RIGHT;
+ case EL_PACMAN_UP: return GFX_PACMAN_UP;
+ case EL_PACMAN_LEFT: return GFX_PACMAN_LEFT;
+ case EL_PACMAN_DOWN: return GFX_PACMAN_DOWN;
case EL_UNSICHTBAR: return GFX_UNSICHTBAR;
case EL_ERZ_EDEL: return GFX_ERZ_EDEL;
case EL_ERZ_DIAM: return GFX_ERZ_DIAM;
case EL_SOKOBAN_OBJEKT: return GFX_SOKOBAN_OBJEKT;
case EL_SOKOBAN_FELD_LEER: return GFX_SOKOBAN_FELD_LEER;
case EL_SOKOBAN_FELD_VOLL: return GFX_SOKOBAN_FELD_VOLL;
- case EL_MAULWURF: return GFX_MAULWURF;
+ case EL_MOLE: return GFX_MOLE;
case EL_PINGUIN: return GFX_PINGUIN;
case EL_SCHWEIN: return GFX_SCHWEIN;
case EL_DRACHE: return GFX_DRACHE;
case EL_SONDE: return GFX_SONDE;
- case EL_PFEIL_L: return GFX_PFEIL_L;
- case EL_PFEIL_R: return GFX_PFEIL_R;
- case EL_PFEIL_O: return GFX_PFEIL_O;
- case EL_PFEIL_U: return GFX_PFEIL_U;
+ case EL_PFEIL_LEFT: return GFX_PFEIL_LEFT;
+ case EL_PFEIL_RIGHT: return GFX_PFEIL_RIGHT;
+ case EL_PFEIL_UP: return GFX_PFEIL_UP;
+ case EL_PFEIL_DOWN: return GFX_PFEIL_DOWN;
case EL_SPEED_PILL: return GFX_SPEED_PILL;
case EL_SP_TERMINAL_ACTIVE: return GFX_SP_TERMINAL;
case EL_SP_BUG_ACTIVE: return GFX_SP_BUG_ACTIVE;
case EL_BELT1_LEFT: return GFX_BELT1_LEFT;
case EL_BELT1_MIDDLE: return GFX_BELT1_MIDDLE;
case EL_BELT1_RIGHT: return GFX_BELT1_RIGHT;
- case EL_BELT1_SWITCH_L: return GFX_BELT1_SWITCH_L;
- case EL_BELT1_SWITCH_M: return GFX_BELT1_SWITCH_M;
- case EL_BELT1_SWITCH_R: return GFX_BELT1_SWITCH_R;
+ case EL_BELT1_SWITCH_LEFT: return GFX_BELT1_SWITCH_LEFT;
+ case EL_BELT1_SWITCH_MIDDLE:return GFX_BELT1_SWITCH_MIDDLE;
+ case EL_BELT1_SWITCH_RIGHT: return GFX_BELT1_SWITCH_RIGHT;
case EL_BELT2_LEFT: return GFX_BELT2_LEFT;
case EL_BELT2_MIDDLE: return GFX_BELT2_MIDDLE;
case EL_BELT2_RIGHT: return GFX_BELT2_RIGHT;
- case EL_BELT2_SWITCH_L: return GFX_BELT2_SWITCH_L;
- case EL_BELT2_SWITCH_M: return GFX_BELT2_SWITCH_M;
- case EL_BELT2_SWITCH_R: return GFX_BELT2_SWITCH_R;
+ case EL_BELT2_SWITCH_LEFT: return GFX_BELT2_SWITCH_LEFT;
+ case EL_BELT2_SWITCH_MIDDLE:return GFX_BELT2_SWITCH_MIDDLE;
+ case EL_BELT2_SWITCH_RIGHT: return GFX_BELT2_SWITCH_RIGHT;
case EL_BELT3_LEFT: return GFX_BELT3_LEFT;
case EL_BELT3_MIDDLE: return GFX_BELT3_MIDDLE;
case EL_BELT3_RIGHT: return GFX_BELT3_RIGHT;
- case EL_BELT3_SWITCH_L: return GFX_BELT3_SWITCH_L;
- case EL_BELT3_SWITCH_M: return GFX_BELT3_SWITCH_M;
- case EL_BELT3_SWITCH_R: return GFX_BELT3_SWITCH_R;
+ case EL_BELT3_SWITCH_LEFT: return GFX_BELT3_SWITCH_LEFT;
+ case EL_BELT3_SWITCH_MIDDLE:return GFX_BELT3_SWITCH_MIDDLE;
+ case EL_BELT3_SWITCH_RIGHT: return GFX_BELT3_SWITCH_RIGHT;
case EL_BELT4_LEFT: return GFX_BELT4_LEFT;
case EL_BELT4_MIDDLE: return GFX_BELT4_MIDDLE;
case EL_BELT4_RIGHT: return GFX_BELT4_RIGHT;
- case EL_BELT4_SWITCH_L: return GFX_BELT4_SWITCH_L;
- case EL_BELT4_SWITCH_M: return GFX_BELT4_SWITCH_M;
- case EL_BELT4_SWITCH_R: return GFX_BELT4_SWITCH_R;
+ case EL_BELT4_SWITCH_LEFT: return GFX_BELT4_SWITCH_LEFT;
+ case EL_BELT4_SWITCH_MIDDLE:return GFX_BELT4_SWITCH_MIDDLE;
+ case EL_BELT4_SWITCH_RIGHT: return GFX_BELT4_SWITCH_RIGHT;
case EL_LANDMINE: return GFX_LANDMINE;
case EL_ENVELOPE: return GFX_ENVELOPE;
case EL_LIGHT_SWITCH_OFF: return GFX_LIGHT_SWITCH_OFF;
case EL_SAND_INVISIBLE: return GFX_SAND_INVISIBLE;
case EL_DX_UNKNOWN_15: return GFX_DX_UNKNOWN_15;
case EL_DX_UNKNOWN_42: return GFX_DX_UNKNOWN_42;
- case EL_DX_UNKNOWN_229: return GFX_DX_UNKNOWN_229;
- case EL_DX_UNKNOWN_233: return GFX_DX_UNKNOWN_233;
default:
{