MovDir[x][y] = 1 << RND(4);
break;
+#if 0
case EL_SP_EMPTY:
Feld[x][y] = EL_EMPTY;
break;
+#endif
+#if 0
case EL_EM_KEY_1_FILE:
Feld[x][y] = EL_EM_KEY_1;
break;
case EL_EM_KEY_4_FILE:
Feld[x][y] = EL_EM_KEY_4;
break;
+#endif
case EL_CONVEYOR_BELT_1_SWITCH_LEFT:
case EL_CONVEYOR_BELT_1_SWITCH_MIDDLE:
ei->change_events = CE_BITMASK_DEFAULT;
for (j=0; j < NUM_CHANGE_EVENTS; j++)
{
- ei->event_page_num[j] = 0;
+ ei->event_page_nr[j] = 0;
ei->event_page[j] = &ei->change_page[0];
}
}
!(ei->change_events & CH_EVENT_BIT(k)))
{
ei->change_events |= CH_EVENT_BIT(k);
- ei->event_page_num[k] = j;
+ ei->event_page_nr[k] = j;
ei->event_page[k] = &ei->change_page[j];
}
}
player->is_digging = FALSE;
player->is_collecting = FALSE;
- player->show_envelope = FALSE;
+ player->show_envelope = 0;
player->move_delay = game.initial_move_delay;
player->move_delay_value = game.initial_move_delay_value;
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
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");
+ 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 */
{
ChangeDelay[x][y] = ( change->delay_fixed * change->delay_frames +
}
if (page < 0)
- page = element_info[element].event_page_num[trigger_event];
+ page = element_info[element].event_page_nr[trigger_event];
if (!(element_info[element].change_page[page].sides & side))
return FALSE;
/* this may take place after moving, so 'element' may have changed */
if (IS_CHANGING(x, y))
{
- ChangeElement(x, y, element_info[element].event_page_num[CE_DELAY]);
+ ChangeElement(x, y, element_info[element].event_page_nr[CE_DELAY]);
element = Feld[x][y];
graphic = el_act_dir2img(element, GfxAction[x][y], MovDir[x][y]);
}
#endif
#if 1
- if (local_player->show_envelope && local_player->MovPos == 0)
+ if (local_player->show_envelope != 0 && local_player->MovPos == 0)
{
- ShowEnvelope();
+ ShowEnvelope(local_player->show_envelope - EL_ENVELOPE_1);
- local_player->show_envelope = FALSE;
+ local_player->show_envelope = 0;
}
#endif
}
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;
}
el2edimg(EL_KEY_1 + key_nr));
redraw_mask |= REDRAW_DOOR_1;
}
- else if (element == EL_ENVELOPE)
+ else if (IS_ENVELOPE(element))
{
#if 1
- player->show_envelope = TRUE;
+ player->show_envelope = element;
#else
- ShowEnvelope();
+ ShowEnvelope(element - EL_ENVELOPE_1);
#endif
}
else if (IS_DROPPABLE(element)) /* can be collected and dropped */