(e) <= EL_DF_MIRROR_END)
#define IS_DF_MIRROR_AUTO(e) ((e) >= EL_DF_MIRROR_AUTO_START && \
(e) <= EL_DF_MIRROR_AUTO_END)
+#define IS_DF_MIRROR_FIXED(e) ((e) >= EL_DF_MIRROR_FIXED_START && \
+ (e) <= EL_DF_MIRROR_FIXED_END)
#define IS_LASER(e) ((e) >= EL_LASER_START && \
(e) <= EL_LASER_END)
#define IS_RECEIVER(e) ((e) >= EL_RECEIVER_START && \
(e) == EL_BOMB || \
IS_WALL_AMOEBA(e))
+#define IS_ABSORBING_BLOCK(e) (IS_WALL_WOOD(e) || \
+ IS_DF_WALL_WOOD(e) || \
+ (e) == EL_BLOCK_WOOD || \
+ (e) == EL_GATE_WOOD || \
+ (e) == EL_EXIT_CLOSED || \
+ (e) == EL_EXIT_OPEN)
+
#define IS_ENVELOPE_OPENING(e) ((e) >= EL_ENVELOPE_OPENING_START && \
(e) <= EL_ENVELOPE_OPENING_END)
#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)
-
-#define IS_MOVING(x,y) (MovPos[x][y] != 0)
-#define IS_BLOCKED(x,y) (Tile[x][y] == EL_BLOCKED)
-#define IS_DRAWABLE(e) ((e) < EL_BLOCKED)
-#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED)
+#define IS_FREE(x, y) (Tile[x][y] == EL_EMPTY)
-#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_SPIELER1])
+#define IS_MOVING(x, y) (MovPos[x][y] != 0)
+#define IS_BLOCKED(x, y) (Tile[x][y] == EL_BLOCKED)
+#define IS_DRAWABLE(e) ((e) < EL_BLOCKED)
+#define IS_NOT_DRAWABLE(e) ((e) >= EL_BLOCKED)
#define WALL_BASE(e) ((e) & 0xfff0)
#define WALL_BITS(e) ((e) & 0x000f)
#define LEVEL_SCORE_ELEMENTS 16 // level elements with score
-extern DrawBuffer *drawto_field;
+extern DrawBuffer *drawto_mm;
extern DrawBuffer *bitmap_db_field;
extern int game_status;
#define EL_KETTLE 29
#define EL_BOMB 30
#define EL_PRISM 31
-#define EL_WALL_START 32
-#define EL_WALL_EMPTY EL_WALL_START
-#define EL_WALL_00 EL_WALL_START
-#define EL_WALL_STEEL EL_WALL_00
-#define EL_WALL_STEEL_START EL_WALL_00
-#define EL_WALL_15 47
-#define EL_WALL_STEEL_END EL_WALL_15
-#define EL_WALL_16 48
-#define EL_WALL_WOOD EL_WALL_16
-#define EL_WALL_WOOD_START EL_WALL_16
-#define EL_WALL_31 63
-#define EL_WALL_WOOD_END EL_WALL_31
-#define EL_WALL_32 64
-#define EL_WALL_ICE EL_WALL_32
-#define EL_WALL_ICE_START EL_WALL_32
-#define EL_WALL_47 79
-#define EL_WALL_ICE_END EL_WALL_47
-#define EL_WALL_48 80
-#define EL_WALL_AMOEBA EL_WALL_48
-#define EL_WALL_AMOEBA_START EL_WALL_48
-#define EL_WALL_63 95
-#define EL_WALL_AMOEBA_END EL_WALL_63
-#define EL_WALL_END EL_WALL_63
+#define EL_WALL_START EL_WALL_STEEL_START
+#define EL_WALL_STEEL_BASE 32
+#define EL_WALL_STEEL_START (EL_WALL_STEEL_BASE + 0)
+#define EL_WALL_STEEL_END (EL_WALL_STEEL_BASE + 15)
+#define EL_WALL_WOOD_BASE 48
+#define EL_WALL_WOOD_START (EL_WALL_WOOD_BASE + 0)
+#define EL_WALL_WOOD_END (EL_WALL_WOOD_BASE + 15)
+#define EL_WALL_ICE_BASE 64
+#define EL_WALL_ICE_START (EL_WALL_ICE_BASE + 0)
+#define EL_WALL_ICE_END (EL_WALL_ICE_BASE + 15)
+#define EL_WALL_AMOEBA_BASE 80
+#define EL_WALL_AMOEBA_START (EL_WALL_AMOEBA_BASE + 0)
+#define EL_WALL_AMOEBA_END (EL_WALL_AMOEBA_BASE + 15)
+#define EL_WALL_END EL_WALL_AMOEBA_END
#define EL_BLOCK_WOOD 96
#define EL_GRAY_BALL 97
#define EL_BEAMER_START 98
#define EL_GRID_STEEL_FIXED_07 (EL_GRID_STEEL_FIXED_START + 7) // 157.5°
#define EL_GRID_STEEL_FIXED_END EL_GRID_STEEL_FIXED_07
-#define EL_DF_WALL_WOOD 272
-#define EL_DF_WALL_START EL_DF_WALL_WOOD_START
-#define EL_DF_WALL_WOOD_START (EL_DF_WALL_WOOD + 0)
-#define EL_DF_WALL_WOOD_END (EL_DF_WALL_WOOD + 15)
+#define EL_DF_WALL_WOOD_BASE 272
+#define EL_DF_WALL_WOOD_START (EL_DF_WALL_WOOD_BASE + 0)
+#define EL_DF_WALL_WOOD_END (EL_DF_WALL_WOOD_BASE + 15)
-#define EL_DF_WALL_STEEL 288
-#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL + 0)
-#define EL_DF_WALL_STEEL_END (EL_DF_WALL_STEEL + 15)
+#define EL_DF_WALL_STEEL_BASE 288
+#define EL_DF_WALL_STEEL_START (EL_DF_WALL_STEEL_BASE + 0)
+#define EL_DF_WALL_STEEL_END (EL_DF_WALL_STEEL_BASE + 15)
+
+#define EL_DF_WALL_START EL_DF_WALL_WOOD_START
#define EL_DF_WALL_END EL_DF_WALL_STEEL_END
#define EL_DF_EMPTY 304
#define EL_MCDUFFIN 420
#define EL_PACMAN 421
#define EL_FUSE_OFF 422
-#define EL_STEEL_WALL 423
-#define EL_WOODEN_WALL 424
-#define EL_ICE_WALL 425
-#define EL_AMOEBA_WALL 426
+#define EL_WALL_STEEL 423
+#define EL_WALL_WOOD 424
+#define EL_WALL_ICE 425
+#define EL_WALL_AMOEBA 426
#define EL_LASER 427
#define EL_RECEIVER 428
-#define EL_DF_STEEL_WALL 429
-#define EL_DF_WOODEN_WALL 430
-
-#define EL_MM_END_2 430
+#define EL_DF_WALL_STEEL 429
+#define EL_DF_WALL_WOOD 430
+
+#define EL_DF_MIRROR_FIXED_START 431
+#define EL_DF_MIRROR_FIXED_00 (EL_DF_MIRROR_FIXED_START + 0)
+#define EL_DF_MIRROR_FIXED_01 (EL_DF_MIRROR_FIXED_START + 1)
+#define EL_DF_MIRROR_FIXED_02 (EL_DF_MIRROR_FIXED_START + 2)
+#define EL_DF_MIRROR_FIXED_03 (EL_DF_MIRROR_FIXED_START + 3)
+#define EL_DF_MIRROR_FIXED_04 (EL_DF_MIRROR_FIXED_START + 4)
+#define EL_DF_MIRROR_FIXED_05 (EL_DF_MIRROR_FIXED_START + 5)
+#define EL_DF_MIRROR_FIXED_06 (EL_DF_MIRROR_FIXED_START + 6)
+#define EL_DF_MIRROR_FIXED_07 (EL_DF_MIRROR_FIXED_START + 7)
+#define EL_DF_MIRROR_FIXED_08 (EL_DF_MIRROR_FIXED_START + 8)
+#define EL_DF_MIRROR_FIXED_09 (EL_DF_MIRROR_FIXED_START + 9)
+#define EL_DF_MIRROR_FIXED_10 (EL_DF_MIRROR_FIXED_START + 10)
+#define EL_DF_MIRROR_FIXED_11 (EL_DF_MIRROR_FIXED_START + 11)
+#define EL_DF_MIRROR_FIXED_12 (EL_DF_MIRROR_FIXED_START + 12)
+#define EL_DF_MIRROR_FIXED_13 (EL_DF_MIRROR_FIXED_START + 13)
+#define EL_DF_MIRROR_FIXED_14 (EL_DF_MIRROR_FIXED_START + 14)
+#define EL_DF_MIRROR_FIXED_15 (EL_DF_MIRROR_FIXED_START + 15)
+#define EL_DF_MIRROR_FIXED_END EL_DF_MIRROR_FIXED_15
+
+#define EL_MM_END_2 446
#define EL_MM_END EL_MM_END_2
// "real" (and therefore drawable) runtime elements
#define EL_EXIT_CLOSING 501
#define EL_GRAY_BALL_ACTIVE 502
#define EL_GRAY_BALL_OPENING 503
-#define EL_ICE_WALL_SHRINKING 504
-#define EL_AMOEBA_WALL_GROWING 505
+#define EL_WALL_ICE_SHRINKING 504
+#define EL_WALL_AMOEBA_GROWING 505
#define EL_BOMB_ACTIVE 506
#define EL_MINE_ACTIVE 507
#define EL_ENVELOPE_1_OPENING 508
#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_WALL_CHANGING_END (EL_WALL_CHANGING + 15)
+#define EL_WALL_CHANGING_BASE 512
+#define EL_WALL_CHANGING_START (EL_WALL_CHANGING_BASE + 0)
+#define EL_WALL_CHANGING_END (EL_WALL_CHANGING_BASE + 15)
#define EL_FIRST_RUNTIME_EL EL_EXIT_OPENING
#define HIT_MASK_RIGHT (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMRIGHT)
#define HIT_MASK_TOP (HIT_MASK_TOPLEFT | HIT_MASK_TOPRIGHT)
#define HIT_MASK_BOTTOM (HIT_MASK_BOTTOMLEFT | HIT_MASK_BOTTOMRIGHT)
+#define HIT_MASK_DIAGONAL_1 (HIT_MASK_TOPLEFT | HIT_MASK_BOTTOMRIGHT)
+#define HIT_MASK_DIAGONAL_2 (HIT_MASK_TOPRIGHT | HIT_MASK_BOTTOMLEFT)
#define HIT_MASK_ALL (HIT_MASK_LEFT | HIT_MASK_RIGHT)
// step values for rotating elements
#define GAME_OVER_NO_ENERGY 1
#define GAME_OVER_OVERLOADED 2
#define GAME_OVER_BOMB 3
-#define GAME_OVER_DELAYED 4
#define PROGRAM_VERSION_MAJOR 2
#define PROGRAM_VERSION_MINOR 0