game.balloon_dir = MV_NO_MOVING;
game.explosions_delayed = TRUE;
+ game.envelope_active = FALSE;
+
for (i=0; i<4; i++)
{
game.belt_dir[i] = MV_NO_MOVING;
if (GfxElement[x][y] == EL_UNDEFINED)
{
- printf("\n\n\n");
+ printf("\n\n");
printf("Explode(): x = %d, y = %d: GfxElement == EL_UNDEFINED\n", x, y);
printf("Explode(): This should never happen!\n");
- printf("\n\n\n");
+ printf("\n\n");
GfxElement[x][y] = EL_EMPTY;
}
TestIfElementTouchesCustomElement(x, y);
- if (CAN_BE_CRUMBLED(element))
+ if (GFX_CRUMBLED(element))
DrawLevelFieldCrumbledSandNeighbours(x, y);
if (IS_PLAYER(x, y) && !PLAYERINFO(x,y)->present)
#endif
}
#if 1
+
+#if 0
+ /* TEST: bug where player gets not killed by falling rock ... */
+ else if (CAN_SMASH(element) &&
+ (Feld[x][y + 1] == EL_BLOCKED ||
+ IS_PLAYER(x, y + 1)) &&
+ JustStopped[x][y] && !Pushed[x][y + 1])
+
+#else
#if 1
else if (game.engine_version < RELEASE_IDENT(2,2,0,7) &&
CAN_SMASH(element) && Feld[x][y + 1] == EL_BLOCKED &&
else if (CAN_SMASH(element) && Feld[x][y + 1] == EL_BLOCKED &&
JustStopped[x][y])
#endif
+#endif
+
{
/* calling "Impact()" here is not only completely unneccessary
(because it already gets called from "ContinueMoving()" in
/* copy element change control values to new field */
ChangeDelay[newx][newy] = ChangeDelay[x][y];
-#if 1
Changed[newx][newy] = Changed[x][y];
ChangeEvent[newx][newy] = ChangeEvent[x][y];
ChangeDelay[x][y] = 0;
Changed[x][y] = CE_BITMASK_DEFAULT;
ChangeEvent[x][y] = CE_BITMASK_DEFAULT;
-#endif
/* copy animation control values to new field */
GfxFrame[newx][newy] = GfxFrame[x][y];
DrawLevelField(x, y);
- if (CAN_BE_CRUMBLED(Feld[x][y]))
+ if (GFX_CRUMBLED(Feld[x][y]))
DrawLevelFieldCrumbledSandNeighbours(x, y);
TestIfBadThingTouchesHero(x, y);
int element = MovingOrBlocked2Element(x, y);
struct ElementChangeInfo *change = &element_info[element].change_page[page];
+#if 0
#ifdef DEBUG
if (!CAN_CHANGE(element))
{
- printf("\n\n\n");
- printf("ChangeElement(): element = %d\n", element);
- printf("Explode(): This should never happen!\n");
- printf("\n\n\n");
+ printf("\n\n");
+ printf("ChangeElement(): %d,%d: element = %d ('%s')\n",
+ x, y, element, element_info[element].token_name);
+ printf("ChangeElement(): This should never happen!\n");
+ printf("\n\n");
}
+#endif
#endif
if (ChangeDelay[x][y] == 0) /* initialize element change */
GfxElement[x][y] = GFX_ELEMENT(element);
#else
GfxElement[x][y] =
- (CAN_BE_CRUMBLED(element) ? EL_SAND : GFX_ELEMENT(element));
+ (GFX_CRUMBLED(element) ? EL_SAND : GFX_ELEMENT(element));
#endif
player->is_digging = TRUE;
}