#define EP_BIT_INACTIVE (1 << 11)
#define EP_BIT_WALL (1 << 12)
#define EP_BIT_PACMAN (1 << 13)
+#define EP_BIT_ENVELOPE (1 << 14)
#define IS_GRID(e) (Elementeigenschaften[e] & EP_BIT_GRID)
#define IS_MCDUFFIN(e) (Elementeigenschaften[e] & EP_BIT_MCDUFFIN)
#define IS_INACTIVE(e) (Elementeigenschaften[e] & EP_BIT_INACTIVE)
#define IS_MM_WALL(e) (Elementeigenschaften[e] & EP_BIT_WALL)
#define IS_PACMAN(e) (Elementeigenschaften[e] & EP_BIT_PACMAN)
+#define IS_ENVELOPE(e) (Elementeigenschaften[e] & EP_BIT_ENVELOPE)
#define IS_WALL_STEEL(e) ((e) >= EL_WALL_STEEL_START && \
(e) <= EL_WALL_STEEL_END)
(e) == EL_BOMB || \
IS_WALL_AMOEBA(e))
+#define IS_ENVELOPE_OPENING(e) ((e) >= EL_ENVELOPE_OPENING_START && \
+ (e) <= EL_ENVELOPE_OPENING_END)
+
+#define ENVELOPE_NR(e) ((e) - EL_ENVELOPE_1)
+#define ENVELOPE_OPENING_NR(e) ((e) - EL_ENVELOPE_1_OPENING)
+
#define CAN_MOVE(e) ((e) == EL_PACMAN)
#define IS_FREE(x,y) (Tile[x][y] == EL_EMPTY)
extern DrawBuffer *drawto_field;
+extern DrawBuffer *bitmap_db_field;
extern int game_status;
extern boolean level_editor_test_game;
extern short Frame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern boolean Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
-extern short AmoebaCnt[MAX_NUM_AMOEBA], AmoebaCnt2[MAX_NUM_AMOEBA];
+extern short AmoebaCnt[MAX_NUM_AMOEBA];
+extern short AmoebaCnt2[MAX_NUM_AMOEBA];
+extern short ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+
+extern int GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern int GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+
extern unsigned int Elementeigenschaften[MAX_ELEMENTS];
extern int level_nr;
#define EL_GRID_WOOD_03 (EL_GRID_WOOD_START + 3)
#define EL_GRID_WOOD_END EL_GRID_WOOD_03
#define EL_FUEL_EMPTY 155
+#define EL_ENVELOPE_1 156
+#define EL_ENVELOPE_2 157
+#define EL_ENVELOPE_3 158
+#define EL_ENVELOPE_4 159
-#define EL_MM_END_1 155
+#define EL_MM_END_1 159
#define EL_CHAR_START 160
#define EL_CHAR_ASCII0 (EL_CHAR_START - 32)
#define EL_GRAY_BALL_OPENING 502
#define EL_ICE_WALL_SHRINKING 503
#define EL_AMOEBA_WALL_GROWING 504
+#define EL_BOMB_ACTIVE 505
+#define EL_MINE_ACTIVE 506
+#define EL_ENVELOPE_1_OPENING 507
+#define EL_ENVELOPE_2_OPENING 508
+#define EL_ENVELOPE_3_OPENING 509
+#define EL_ENVELOPE_4_OPENING 510
+
+#define EL_ENVELOPE_OPENING_START EL_ENVELOPE_1_OPENING
+#define EL_ENVELOPE_OPENING_END EL_ENVELOPE_4_OPENING
#define EL_WALL_CHANGING 512
#define EL_WALL_CHANGING_START (EL_WALL_CHANGING + 0)
#define EL_EXPLODING_OPAQUE 601
#define EL_EXPLODING_TRANSP 602
-// dummy elements (never used as game elements, only used as graphics)
-#define EL_MM_MASK_MCDUFFIN_RIGHT 700
-#define EL_MM_MASK_MCDUFFIN_UP 701
-#define EL_MM_MASK_MCDUFFIN_LEFT 702
-#define EL_MM_MASK_MCDUFFIN_DOWN 703
-#define EL_MM_MASK_GRID_1 704
-#define EL_MM_MASK_GRID_2 705
-#define EL_MM_MASK_GRID_3 706
-#define EL_MM_MASK_GRID_4 707
-#define EL_MM_MASK_RECTANGE 708
-#define EL_MM_MASK_CIRCLE 709
-
// game graphics:
// 0 - 191: graphics from "MirrorScreen"
#define GAME_OVER_NO_ENERGY 1
#define GAME_OVER_OVERLOADED 2
#define GAME_OVER_BOMB 3
+#define GAME_OVER_DELAYED 4
// values for color_status
#define STATIC_COLORS 0