if (Feld[x][y] == EL_BLOCKED &&
(Feld[oldx][oldy] == EL_QUICKSAND_EMPTYING ||
Feld[oldx][oldy] == EL_MAGIC_WALL_EMPTYING ||
- Feld[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTYING))
+ Feld[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTYING ||
+ Feld[oldx][oldy] == EL_AMOEBA_DRIPPING))
{
Feld[oldx][oldy] = (Feld[oldx][oldy] == EL_QUICKSAND_EMPTYING ?
EL_MORAST_LEER :
Feld[oldx][oldy] == EL_MAGIC_WALL_EMPTYING ?
EL_MAGIC_WALL_EMPTY :
Feld[oldx][oldy] == EL_MAGIC_WALL_BD_EMPTYING ?
- EL_MAGIC_WALL_BD_EMPTY : 0);
- Store[oldx][oldy] = Store2[oldx][oldy] = 0;
- }
- else if (Feld[x][y] == EL_BLOCKED &&
- Store[oldx][oldy] == EL_AMOEBE_NASS)
- {
- Feld[oldx][oldy] = Store[oldx][oldy];
+ EL_MAGIC_WALL_BD_EMPTY :
+ Feld[oldx][oldy] == EL_AMOEBA_DRIPPING ?
+ EL_AMOEBE_NASS : 0);
Store[oldx][oldy] = Store2[oldx][oldy] = 0;
}
else
int newx = x + dx, newy = y + dy;
int step = (horiz_move ? dx : dy) * TILEX / 8;
- if (element == EL_TROPFEN)
+ if (element == EL_TROPFEN || element == EL_AMOEBA_DRIPPING)
step /= 2;
else if (element == EL_QUICKSAND_FILLING ||
element == EL_QUICKSAND_EMPTYING)
element = Feld[newx][newy] = Store[x][y];
Store[x][y] = 0;
}
- else if (Store[x][y] == EL_SALZSAEURE)
+ else if (element == EL_AMOEBA_DRIPPING)
{
+ Feld[x][y] = EL_AMOEBE_NASS;
+ element = Feld[newx][newy] = Store[x][y];
Store[x][y] = 0;
- Feld[newx][newy] = EL_SALZSAEURE;
- element = EL_SALZSAEURE;
}
- else if (Store[x][y] == EL_AMOEBE_NASS)
+ else if (Store[x][y] == EL_SALZSAEURE)
{
Store[x][y] = 0;
- Feld[x][y] = EL_AMOEBE_NASS;
+ Feld[newx][newy] = EL_SALZSAEURE;
+ element = EL_SALZSAEURE;
}
MovPos[x][y] = MovDir[x][y] = MovDelay[x][y] = 0;
else
{
InitMovingField(ax, ay, MV_DOWN);
- Feld[ax][ay] = EL_TROPFEN;
- Store[ax][ay] = EL_AMOEBE_NASS;
+ Feld[ax][ay] = EL_AMOEBA_DRIPPING;
+ Store[ax][ay] = EL_TROPFEN;
ContinueMoving(ax, ay);
return;
}