#include "game_em/game_em.h"
#include "game_sp/game_sp.h"
#include "game_mm/game_mm.h"
+#include "engines.h"
#include "conf_gfx.h" /* include auto-generated data structure definitions */
#include "conf_snd.h" /* include auto-generated data structure definitions */
((x) >= (xmin) && (x) <= (xmax) && \
(y) >= (ymin) && (y) <= (ymax))
+#define IN_PIX_FIELD(x, y) IN_FIELD(x, y, SXSIZE, SYSIZE)
#define IN_VIS_FIELD(x, y) IN_FIELD(x, y, SCR_FIELDX, SCR_FIELDY)
#define IN_LEV_FIELD(x, y) IN_FIELD(x, y, lev_fieldx, lev_fieldy)
#define IN_SCR_FIELD(x, y) IN_FIELD_MINMAX(x,y, BX1,BY1, BX2,BY2)
#define IS_DF_ELEMENT(e) ((e) >= EL_DF_START && \
(e) <= EL_DF_END)
+#define IS_MM_MCDUFFIN(e) ((e) >= EL_MM_MCDUFFIN_START && \
+ (e) <= EL_MM_MCDUFFIN_END)
+
+#define IS_DF_LASER(e) ((e) >= EL_DF_LASER_START && \
+ (e) <= EL_DF_LASER_END)
+
#define IS_MM_WALL(e) (((e) >= EL_MM_WALL_START && \
(e) <= EL_MM_WALL_END) || \
((e) >= EL_DF_WALL_START && \
(e) <= EL_DF_WALL_END))
-#define IS_DF_WALL(e) (((e) >= EL_DF_WALL_START && \
- (e) <= EL_DF_WALL_END))
+#define IS_DF_WALL(e) ((e) >= EL_DF_WALL_START && \
+ (e) <= EL_DF_WALL_END)
+
+#define IS_MM_WALL_EDITOR(e) ((e) == EL_MM_STEEL_WALL || \
+ (e) == EL_MM_WOODEN_WALL || \
+ (e) == EL_MM_ICE_WALL || \
+ (e) == EL_MM_AMOEBA_WALL || \
+ (e) == EL_DF_STEEL_WALL || \
+ (e) == EL_DF_WOODEN_WALL)
#define IS_ENVELOPE(e) ((e) >= EL_ENVELOPE_1 && \
(e) <= EL_ENVELOPE_4)
+#define IS_BALLOON_ELEMENT(e) ((e) == EL_BALLOON || \
+ (e) == EL_BALLOON_SWITCH_LEFT || \
+ (e) == EL_BALLOON_SWITCH_RIGHT || \
+ (e) == EL_BALLOON_SWITCH_UP || \
+ (e) == EL_BALLOON_SWITCH_DOWN || \
+ (e) == EL_BALLOON_SWITCH_ANY || \
+ (e) == EL_BALLOON_SWITCH_NONE)
+
#define IS_RND_KEY(e) ((e) >= EL_KEY_1 && \
(e) <= EL_KEY_4)
#define IS_EM_KEY(e) ((e) >= EL_EM_KEY_1 && \
#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
(e) <= EL_DC_STEELWALL_2_SINGLE)
+#define MM_WALL_BASE(e) ((e) & 0xfff0)
+#define MM_WALL_BITS(e) ((e) & 0x000f)
+
#define GFX_ELEMENT(e) (element_info[e].gfx_element)
/* !!! CHECK THIS !!! */
#define IS_NEXT_FRAME(f, g) (IS_NEW_FRAME(f, g) && (f) > 0)
#define IS_LOOP_SOUND(s) (sound_info[s].loop)
+#define IS_LOOP_MUSIC(s) (music_info[s].loop)
#define IS_SPECIAL_GFX_ARG(a) ((a) >= 0 && (a) < NUM_SPECIAL_GFX_ARGS)
#define SC_CRYSTAL 11
#define SC_PEARL 12
#define SC_SHIELD 13
-#define SC_UNKNOWN_14 14
+#define SC_ELEM_BONUS 14
#define SC_UNKNOWN_15 15
#define LEVEL_SCORE_ELEMENTS 16 /* level elements with score */
#define EL_MM_WALL_EMPTY EL_MM_WALL_START
#define EL_MM_WALL_00 EL_MM_WALL_START
#define EL_MM_STEEL_WALL_START EL_MM_WALL_00
+#define EL_MM_STEEL_WALL_1 EL_MM_STEEL_WALL_START
#define EL_MM_WALL_15 (EL_MM_START + 47)
#define EL_MM_STEEL_WALL_END EL_MM_WALL_15
#define EL_MM_WALL_16 (EL_MM_START + 48)
#define EL_MM_WOODEN_WALL_START EL_MM_WALL_16
+#define EL_MM_WOODEN_WALL_1 EL_MM_WOODEN_WALL_START
#define EL_MM_WALL_31 (EL_MM_START + 63)
#define EL_MM_WOODEN_WALL_END EL_MM_WALL_31
#define EL_MM_WALL_32 (EL_MM_START + 64)
#define EL_MM_ICE_WALL_START EL_MM_WALL_32
+#define EL_MM_ICE_WALL_1 EL_MM_ICE_WALL_START
#define EL_MM_WALL_47 (EL_MM_START + 79)
#define EL_MM_ICE_WALL_END EL_MM_WALL_47
#define EL_MM_WALL_48 (EL_MM_START + 80)
#define EL_MM_AMOEBA_WALL_START EL_MM_WALL_48
+#define EL_MM_AMOEBA_WALL_1 EL_MM_AMOEBA_WALL_START
#define EL_MM_WALL_63 (EL_MM_START + 95)
#define EL_MM_AMOEBA_WALL_END EL_MM_WALL_63
#define EL_MM_WALL_END EL_MM_WALL_63
#define EL_MM_WOODEN_BLOCK (EL_MM_START + 96)
#define EL_MM_GRAY_BALL (EL_MM_START + 97)
-#define EL_MM_BEAMER_START (EL_MM_START + 98)
-#define EL_MM_BEAMER_1 (EL_MM_BEAMER_START + 0)
-#define EL_MM_BEAMER_2 (EL_MM_BEAMER_START + 1)
-#define EL_MM_BEAMER_3 (EL_MM_BEAMER_START + 2)
-#define EL_MM_BEAMER_4 (EL_MM_BEAMER_START + 3)
-#define EL_MM_BEAMER_5 (EL_MM_BEAMER_START + 4)
-#define EL_MM_BEAMER_6 (EL_MM_BEAMER_START + 5)
-#define EL_MM_BEAMER_7 (EL_MM_BEAMER_START + 6)
-#define EL_MM_BEAMER_8 (EL_MM_BEAMER_START + 7)
-#define EL_MM_BEAMER_9 (EL_MM_BEAMER_START + 8)
-#define EL_MM_BEAMER_10 (EL_MM_BEAMER_START + 9)
-#define EL_MM_BEAMER_11 (EL_MM_BEAMER_START + 10)
-#define EL_MM_BEAMER_12 (EL_MM_BEAMER_START + 11)
-#define EL_MM_BEAMER_13 (EL_MM_BEAMER_START + 12)
-#define EL_MM_BEAMER_14 (EL_MM_BEAMER_START + 13)
-#define EL_MM_BEAMER_15 (EL_MM_BEAMER_START + 14)
-#define EL_MM_BEAMER_16 (EL_MM_BEAMER_START + 15)
-#define EL_MM_BEAMER_END EL_MM_BEAMER_15
+#define EL_MM_TELEPORTER_START (EL_MM_START + 98)
+#define EL_MM_TELEPORTER_1 (EL_MM_TELEPORTER_START + 0)
+#define EL_MM_TELEPORTER_2 (EL_MM_TELEPORTER_START + 1)
+#define EL_MM_TELEPORTER_3 (EL_MM_TELEPORTER_START + 2)
+#define EL_MM_TELEPORTER_4 (EL_MM_TELEPORTER_START + 3)
+#define EL_MM_TELEPORTER_5 (EL_MM_TELEPORTER_START + 4)
+#define EL_MM_TELEPORTER_6 (EL_MM_TELEPORTER_START + 5)
+#define EL_MM_TELEPORTER_7 (EL_MM_TELEPORTER_START + 6)
+#define EL_MM_TELEPORTER_8 (EL_MM_TELEPORTER_START + 7)
+#define EL_MM_TELEPORTER_9 (EL_MM_TELEPORTER_START + 8)
+#define EL_MM_TELEPORTER_10 (EL_MM_TELEPORTER_START + 9)
+#define EL_MM_TELEPORTER_11 (EL_MM_TELEPORTER_START + 10)
+#define EL_MM_TELEPORTER_12 (EL_MM_TELEPORTER_START + 11)
+#define EL_MM_TELEPORTER_13 (EL_MM_TELEPORTER_START + 12)
+#define EL_MM_TELEPORTER_14 (EL_MM_TELEPORTER_START + 13)
+#define EL_MM_TELEPORTER_15 (EL_MM_TELEPORTER_START + 14)
+#define EL_MM_TELEPORTER_16 (EL_MM_TELEPORTER_START + 15)
+#define EL_MM_TELEPORTER_END EL_MM_TELEPORTER_15
#define EL_MM_FUSE_ACTIVE (EL_MM_START + 114)
#define EL_MM_PACMAN_START (EL_MM_START + 115)
#define EL_MM_PACMAN_RIGHT (EL_MM_PACMAN_START + 0)
#define EL_MM_PACMAN_LEFT (EL_MM_PACMAN_START + 2)
#define EL_MM_PACMAN_DOWN (EL_MM_PACMAN_START + 3)
#define EL_MM_PACMAN_END EL_MM_PACMAN_DOWN
-#define EL_MM_POLARISATOR_START (EL_MM_START + 119)
-#define EL_MM_POLARISATOR_1 (EL_MM_POLARISATOR_START + 0)
-#define EL_MM_POLARISATOR_2 (EL_MM_POLARISATOR_START + 1)
-#define EL_MM_POLARISATOR_3 (EL_MM_POLARISATOR_START + 2)
-#define EL_MM_POLARISATOR_4 (EL_MM_POLARISATOR_START + 3)
-#define EL_MM_POLARISATOR_5 (EL_MM_POLARISATOR_START + 4)
-#define EL_MM_POLARISATOR_6 (EL_MM_POLARISATOR_START + 5)
-#define EL_MM_POLARISATOR_7 (EL_MM_POLARISATOR_START + 6)
-#define EL_MM_POLARISATOR_8 (EL_MM_POLARISATOR_START + 7)
-#define EL_MM_POLARISATOR_9 (EL_MM_POLARISATOR_START + 8)
-#define EL_MM_POLARISATOR_10 (EL_MM_POLARISATOR_START + 9)
-#define EL_MM_POLARISATOR_11 (EL_MM_POLARISATOR_START + 10)
-#define EL_MM_POLARISATOR_12 (EL_MM_POLARISATOR_START + 11)
-#define EL_MM_POLARISATOR_13 (EL_MM_POLARISATOR_START + 12)
-#define EL_MM_POLARISATOR_14 (EL_MM_POLARISATOR_START + 13)
-#define EL_MM_POLARISATOR_15 (EL_MM_POLARISATOR_START + 14)
-#define EL_MM_POLARISATOR_16 (EL_MM_POLARISATOR_START + 15)
-#define EL_MM_POLARISATOR_END EL_MM_POLARISATOR_15
-#define EL_MM_POLARISATOR_CROSS_START (EL_MM_START + 135)
-#define EL_MM_POLARISATOR_CROSS_1 (EL_MM_POLARISATOR_CROSS_START + 0)
-#define EL_MM_POLARISATOR_CROSS_2 (EL_MM_POLARISATOR_CROSS_START + 1)
-#define EL_MM_POLARISATOR_CROSS_3 (EL_MM_POLARISATOR_CROSS_START + 2)
-#define EL_MM_POLARISATOR_CROSS_4 (EL_MM_POLARISATOR_CROSS_START + 3)
-#define EL_MM_POLARISATOR_CROSS_END EL_MM_POLARISATOR_CROSS_03
+#define EL_MM_POLARIZER_START (EL_MM_START + 119)
+#define EL_MM_POLARIZER_1 (EL_MM_POLARIZER_START + 0)
+#define EL_MM_POLARIZER_2 (EL_MM_POLARIZER_START + 1)
+#define EL_MM_POLARIZER_3 (EL_MM_POLARIZER_START + 2)
+#define EL_MM_POLARIZER_4 (EL_MM_POLARIZER_START + 3)
+#define EL_MM_POLARIZER_5 (EL_MM_POLARIZER_START + 4)
+#define EL_MM_POLARIZER_6 (EL_MM_POLARIZER_START + 5)
+#define EL_MM_POLARIZER_7 (EL_MM_POLARIZER_START + 6)
+#define EL_MM_POLARIZER_8 (EL_MM_POLARIZER_START + 7)
+#define EL_MM_POLARIZER_9 (EL_MM_POLARIZER_START + 8)
+#define EL_MM_POLARIZER_10 (EL_MM_POLARIZER_START + 9)
+#define EL_MM_POLARIZER_11 (EL_MM_POLARIZER_START + 10)
+#define EL_MM_POLARIZER_12 (EL_MM_POLARIZER_START + 11)
+#define EL_MM_POLARIZER_13 (EL_MM_POLARIZER_START + 12)
+#define EL_MM_POLARIZER_14 (EL_MM_POLARIZER_START + 13)
+#define EL_MM_POLARIZER_15 (EL_MM_POLARIZER_START + 14)
+#define EL_MM_POLARIZER_16 (EL_MM_POLARIZER_START + 15)
+#define EL_MM_POLARIZER_END EL_MM_POLARIZER_15
+#define EL_MM_POLARIZER_CROSS_START (EL_MM_START + 135)
+#define EL_MM_POLARIZER_CROSS_1 (EL_MM_POLARIZER_CROSS_START + 0)
+#define EL_MM_POLARIZER_CROSS_2 (EL_MM_POLARIZER_CROSS_START + 1)
+#define EL_MM_POLARIZER_CROSS_3 (EL_MM_POLARIZER_CROSS_START + 2)
+#define EL_MM_POLARIZER_CROSS_4 (EL_MM_POLARIZER_CROSS_START + 3)
+#define EL_MM_POLARIZER_CROSS_END EL_MM_POLARIZER_CROSS_03
#define EL_MM_MIRROR_FIXED_START (EL_MM_START + 139)
#define EL_MM_MIRROR_FIXED_1 (EL_MM_MIRROR_FIXED_START + 0)
#define EL_MM_MIRROR_FIXED_2 (EL_MM_MIRROR_FIXED_START + 1)
#define EL_MM_WOODEN_GRID_FIXED_END EL_MM_WOODEN_GRID_FIXED_03
#define EL_MM_FUEL_EMPTY (EL_MM_START + 155)
-#define EL_MM_END_1 (EL_MM_START + 155)
-#define EL_MM_START_2 (EL_MM_START + 156)
+#define EL_MM_UNUSED_156 (EL_MM_START + 156)
+#define EL_MM_UNUSED_157 (EL_MM_START + 157)
+#define EL_MM_UNUSED_158 (EL_MM_START + 158)
+#define EL_MM_UNUSED_159 (EL_MM_START + 159)
+
+#define EL_MM_END_1 (EL_MM_START + 159)
+#define EL_MM_START_2 (EL_MM_START + 160)
#define EL_DF_START EL_MM_START_2
#define EL_DF_START2 (EL_DF_START - 240)
#define EL_DF_STEEL_GRID_FIXED_END EL_DF_STEEL_GRID_FIXED_07
#define EL_DF_WOODEN_WALL_START (EL_DF_START2 + 272)
+#define EL_DF_WOODEN_WALL_1 (EL_DF_WOODEN_WALL_START + 0)
#define EL_DF_WOODEN_WALL_END (EL_DF_WOODEN_WALL_START + 15)
#define EL_DF_STEEL_WALL_START (EL_DF_START2 + 288)
+#define EL_DF_STEEL_WALL_1 (EL_DF_STEEL_WALL_START + 0)
#define EL_DF_STEEL_WALL_END (EL_DF_STEEL_WALL_START + 15)
#define EL_DF_WALL_START EL_DF_WOODEN_WALL_START
#define EL_DF_END (EL_DF_START2 + 355)
-#define EL_MM_BEAMER_RED_START (EL_DF_START2 + 356)
-#define EL_MM_BEAMER_RED_1 (EL_MM_BEAMER_RED_START + 0)
-#define EL_MM_BEAMER_RED_2 (EL_MM_BEAMER_RED_START + 1)
-#define EL_MM_BEAMER_RED_3 (EL_MM_BEAMER_RED_START + 2)
-#define EL_MM_BEAMER_RED_4 (EL_MM_BEAMER_RED_START + 3)
-#define EL_MM_BEAMER_RED_5 (EL_MM_BEAMER_RED_START + 4)
-#define EL_MM_BEAMER_RED_6 (EL_MM_BEAMER_RED_START + 5)
-#define EL_MM_BEAMER_RED_7 (EL_MM_BEAMER_RED_START + 6)
-#define EL_MM_BEAMER_RED_8 (EL_MM_BEAMER_RED_START + 7)
-#define EL_MM_BEAMER_RED_9 (EL_MM_BEAMER_RED_START + 8)
-#define EL_MM_BEAMER_RED_10 (EL_MM_BEAMER_RED_START + 9)
-#define EL_MM_BEAMER_RED_11 (EL_MM_BEAMER_RED_START + 10)
-#define EL_MM_BEAMER_RED_12 (EL_MM_BEAMER_RED_START + 11)
-#define EL_MM_BEAMER_RED_13 (EL_MM_BEAMER_RED_START + 12)
-#define EL_MM_BEAMER_RED_14 (EL_MM_BEAMER_RED_START + 13)
-#define EL_MM_BEAMER_RED_15 (EL_MM_BEAMER_RED_START + 14)
-#define EL_MM_BEAMER_RED_16 (EL_MM_BEAMER_RED_START + 15)
-#define EL_MM_BEAMER_RED_END EL_MM_BEAMER_RED_16
-#define EL_MM_BEAMER_YELLOW_START (EL_DF_START2 + 372)
-#define EL_MM_BEAMER_YELLOW_1 (EL_MM_BEAMER_YELLOW_START + 0)
-#define EL_MM_BEAMER_YELLOW_2 (EL_MM_BEAMER_YELLOW_START + 1)
-#define EL_MM_BEAMER_YELLOW_3 (EL_MM_BEAMER_YELLOW_START + 2)
-#define EL_MM_BEAMER_YELLOW_4 (EL_MM_BEAMER_YELLOW_START + 3)
-#define EL_MM_BEAMER_YELLOW_5 (EL_MM_BEAMER_YELLOW_START + 4)
-#define EL_MM_BEAMER_YELLOW_6 (EL_MM_BEAMER_YELLOW_START + 5)
-#define EL_MM_BEAMER_YELLOW_7 (EL_MM_BEAMER_YELLOW_START + 6)
-#define EL_MM_BEAMER_YELLOW_8 (EL_MM_BEAMER_YELLOW_START + 7)
-#define EL_MM_BEAMER_YELLOW_9 (EL_MM_BEAMER_YELLOW_START + 8)
-#define EL_MM_BEAMER_YELLOW_10 (EL_MM_BEAMER_YELLOW_START + 9)
-#define EL_MM_BEAMER_YELLOW_11 (EL_MM_BEAMER_YELLOW_START + 10)
-#define EL_MM_BEAMER_YELLOW_12 (EL_MM_BEAMER_YELLOW_START + 11)
-#define EL_MM_BEAMER_YELLOW_13 (EL_MM_BEAMER_YELLOW_START + 12)
-#define EL_MM_BEAMER_YELLOW_14 (EL_MM_BEAMER_YELLOW_START + 13)
-#define EL_MM_BEAMER_YELLOW_15 (EL_MM_BEAMER_YELLOW_START + 14)
-#define EL_MM_BEAMER_YELLOW_16 (EL_MM_BEAMER_YELLOW_START + 15)
-#define EL_MM_BEAMER_YELLOW_END EL_MM_BEAMER_YELLOW_16
-#define EL_MM_BEAMER_GREEN_START (EL_DF_START2 + 388)
-#define EL_MM_BEAMER_GREEN_1 (EL_MM_BEAMER_GREEN_START + 0)
-#define EL_MM_BEAMER_GREEN_2 (EL_MM_BEAMER_GREEN_START + 1)
-#define EL_MM_BEAMER_GREEN_3 (EL_MM_BEAMER_GREEN_START + 2)
-#define EL_MM_BEAMER_GREEN_4 (EL_MM_BEAMER_GREEN_START + 3)
-#define EL_MM_BEAMER_GREEN_5 (EL_MM_BEAMER_GREEN_START + 4)
-#define EL_MM_BEAMER_GREEN_6 (EL_MM_BEAMER_GREEN_START + 5)
-#define EL_MM_BEAMER_GREEN_7 (EL_MM_BEAMER_GREEN_START + 6)
-#define EL_MM_BEAMER_GREEN_8 (EL_MM_BEAMER_GREEN_START + 7)
-#define EL_MM_BEAMER_GREEN_9 (EL_MM_BEAMER_GREEN_START + 8)
-#define EL_MM_BEAMER_GREEN_10 (EL_MM_BEAMER_GREEN_START + 9)
-#define EL_MM_BEAMER_GREEN_11 (EL_MM_BEAMER_GREEN_START + 10)
-#define EL_MM_BEAMER_GREEN_12 (EL_MM_BEAMER_GREEN_START + 11)
-#define EL_MM_BEAMER_GREEN_13 (EL_MM_BEAMER_GREEN_START + 12)
-#define EL_MM_BEAMER_GREEN_14 (EL_MM_BEAMER_GREEN_START + 13)
-#define EL_MM_BEAMER_GREEN_15 (EL_MM_BEAMER_GREEN_START + 14)
-#define EL_MM_BEAMER_GREEN_16 (EL_MM_BEAMER_GREEN_START + 15)
-#define EL_MM_BEAMER_GREEN_END EL_MM_BEAMER_GREEN_16
-#define EL_MM_BEAMER_BLUE_START (EL_DF_START2 + 404)
-#define EL_MM_BEAMER_BLUE_1 (EL_MM_BEAMER_BLUE_START + 0)
-#define EL_MM_BEAMER_BLUE_2 (EL_MM_BEAMER_BLUE_START + 1)
-#define EL_MM_BEAMER_BLUE_3 (EL_MM_BEAMER_BLUE_START + 2)
-#define EL_MM_BEAMER_BLUE_4 (EL_MM_BEAMER_BLUE_START + 3)
-#define EL_MM_BEAMER_BLUE_5 (EL_MM_BEAMER_BLUE_START + 4)
-#define EL_MM_BEAMER_BLUE_6 (EL_MM_BEAMER_BLUE_START + 5)
-#define EL_MM_BEAMER_BLUE_7 (EL_MM_BEAMER_BLUE_START + 6)
-#define EL_MM_BEAMER_BLUE_8 (EL_MM_BEAMER_BLUE_START + 7)
-#define EL_MM_BEAMER_BLUE_9 (EL_MM_BEAMER_BLUE_START + 8)
-#define EL_MM_BEAMER_BLUE_10 (EL_MM_BEAMER_BLUE_START + 9)
-#define EL_MM_BEAMER_BLUE_11 (EL_MM_BEAMER_BLUE_START + 10)
-#define EL_MM_BEAMER_BLUE_12 (EL_MM_BEAMER_BLUE_START + 11)
-#define EL_MM_BEAMER_BLUE_13 (EL_MM_BEAMER_BLUE_START + 12)
-#define EL_MM_BEAMER_BLUE_14 (EL_MM_BEAMER_BLUE_START + 13)
-#define EL_MM_BEAMER_BLUE_15 (EL_MM_BEAMER_BLUE_START + 14)
-#define EL_MM_BEAMER_BLUE_16 (EL_MM_BEAMER_BLUE_START + 15)
-#define EL_MM_BEAMER_BLUE_END EL_MM_BEAMER_BLUE_16
-
-#define EL_MM_MCDUFFIN 1200
-#define EL_MM_PACMAN 1201
-#define EL_MM_FUSE 1202
-#define EL_MM_STEEL_WALL 1203
-#define EL_MM_WOODEN_WALL 1204
-#define EL_MM_ICE_WALL 1205
-#define EL_MM_AMOEBA_WALL 1206
-#define EL_DF_LASER 1207
-#define EL_DF_RECEIVER 1208
-#define EL_DF_STEEL_WALL 1209
-#define EL_DF_WOODEN_WALL 1210
+#define EL_MM_TELEPORTER_RED_START (EL_DF_START2 + 356)
+#define EL_MM_TELEPORTER_RED_1 (EL_MM_TELEPORTER_RED_START + 0)
+#define EL_MM_TELEPORTER_RED_2 (EL_MM_TELEPORTER_RED_START + 1)
+#define EL_MM_TELEPORTER_RED_3 (EL_MM_TELEPORTER_RED_START + 2)
+#define EL_MM_TELEPORTER_RED_4 (EL_MM_TELEPORTER_RED_START + 3)
+#define EL_MM_TELEPORTER_RED_5 (EL_MM_TELEPORTER_RED_START + 4)
+#define EL_MM_TELEPORTER_RED_6 (EL_MM_TELEPORTER_RED_START + 5)
+#define EL_MM_TELEPORTER_RED_7 (EL_MM_TELEPORTER_RED_START + 6)
+#define EL_MM_TELEPORTER_RED_8 (EL_MM_TELEPORTER_RED_START + 7)
+#define EL_MM_TELEPORTER_RED_9 (EL_MM_TELEPORTER_RED_START + 8)
+#define EL_MM_TELEPORTER_RED_10 (EL_MM_TELEPORTER_RED_START + 9)
+#define EL_MM_TELEPORTER_RED_11 (EL_MM_TELEPORTER_RED_START + 10)
+#define EL_MM_TELEPORTER_RED_12 (EL_MM_TELEPORTER_RED_START + 11)
+#define EL_MM_TELEPORTER_RED_13 (EL_MM_TELEPORTER_RED_START + 12)
+#define EL_MM_TELEPORTER_RED_14 (EL_MM_TELEPORTER_RED_START + 13)
+#define EL_MM_TELEPORTER_RED_15 (EL_MM_TELEPORTER_RED_START + 14)
+#define EL_MM_TELEPORTER_RED_16 (EL_MM_TELEPORTER_RED_START + 15)
+#define EL_MM_TELEPORTER_RED_END EL_MM_TELEPORTER_RED_16
+#define EL_MM_TELEPORTER_YELLOW_START (EL_DF_START2 + 372)
+#define EL_MM_TELEPORTER_YELLOW_1 (EL_MM_TELEPORTER_YELLOW_START + 0)
+#define EL_MM_TELEPORTER_YELLOW_2 (EL_MM_TELEPORTER_YELLOW_START + 1)
+#define EL_MM_TELEPORTER_YELLOW_3 (EL_MM_TELEPORTER_YELLOW_START + 2)
+#define EL_MM_TELEPORTER_YELLOW_4 (EL_MM_TELEPORTER_YELLOW_START + 3)
+#define EL_MM_TELEPORTER_YELLOW_5 (EL_MM_TELEPORTER_YELLOW_START + 4)
+#define EL_MM_TELEPORTER_YELLOW_6 (EL_MM_TELEPORTER_YELLOW_START + 5)
+#define EL_MM_TELEPORTER_YELLOW_7 (EL_MM_TELEPORTER_YELLOW_START + 6)
+#define EL_MM_TELEPORTER_YELLOW_8 (EL_MM_TELEPORTER_YELLOW_START + 7)
+#define EL_MM_TELEPORTER_YELLOW_9 (EL_MM_TELEPORTER_YELLOW_START + 8)
+#define EL_MM_TELEPORTER_YELLOW_10 (EL_MM_TELEPORTER_YELLOW_START + 9)
+#define EL_MM_TELEPORTER_YELLOW_11 (EL_MM_TELEPORTER_YELLOW_START + 10)
+#define EL_MM_TELEPORTER_YELLOW_12 (EL_MM_TELEPORTER_YELLOW_START + 11)
+#define EL_MM_TELEPORTER_YELLOW_13 (EL_MM_TELEPORTER_YELLOW_START + 12)
+#define EL_MM_TELEPORTER_YELLOW_14 (EL_MM_TELEPORTER_YELLOW_START + 13)
+#define EL_MM_TELEPORTER_YELLOW_15 (EL_MM_TELEPORTER_YELLOW_START + 14)
+#define EL_MM_TELEPORTER_YELLOW_16 (EL_MM_TELEPORTER_YELLOW_START + 15)
+#define EL_MM_TELEPORTER_YELLOW_END EL_MM_TELEPORTER_YELLOW_16
+#define EL_MM_TELEPORTER_GREEN_START (EL_DF_START2 + 388)
+#define EL_MM_TELEPORTER_GREEN_1 (EL_MM_TELEPORTER_GREEN_START + 0)
+#define EL_MM_TELEPORTER_GREEN_2 (EL_MM_TELEPORTER_GREEN_START + 1)
+#define EL_MM_TELEPORTER_GREEN_3 (EL_MM_TELEPORTER_GREEN_START + 2)
+#define EL_MM_TELEPORTER_GREEN_4 (EL_MM_TELEPORTER_GREEN_START + 3)
+#define EL_MM_TELEPORTER_GREEN_5 (EL_MM_TELEPORTER_GREEN_START + 4)
+#define EL_MM_TELEPORTER_GREEN_6 (EL_MM_TELEPORTER_GREEN_START + 5)
+#define EL_MM_TELEPORTER_GREEN_7 (EL_MM_TELEPORTER_GREEN_START + 6)
+#define EL_MM_TELEPORTER_GREEN_8 (EL_MM_TELEPORTER_GREEN_START + 7)
+#define EL_MM_TELEPORTER_GREEN_9 (EL_MM_TELEPORTER_GREEN_START + 8)
+#define EL_MM_TELEPORTER_GREEN_10 (EL_MM_TELEPORTER_GREEN_START + 9)
+#define EL_MM_TELEPORTER_GREEN_11 (EL_MM_TELEPORTER_GREEN_START + 10)
+#define EL_MM_TELEPORTER_GREEN_12 (EL_MM_TELEPORTER_GREEN_START + 11)
+#define EL_MM_TELEPORTER_GREEN_13 (EL_MM_TELEPORTER_GREEN_START + 12)
+#define EL_MM_TELEPORTER_GREEN_14 (EL_MM_TELEPORTER_GREEN_START + 13)
+#define EL_MM_TELEPORTER_GREEN_15 (EL_MM_TELEPORTER_GREEN_START + 14)
+#define EL_MM_TELEPORTER_GREEN_16 (EL_MM_TELEPORTER_GREEN_START + 15)
+#define EL_MM_TELEPORTER_GREEN_END EL_MM_TELEPORTER_GREEN_16
+#define EL_MM_TELEPORTER_BLUE_START (EL_DF_START2 + 404)
+#define EL_MM_TELEPORTER_BLUE_1 (EL_MM_TELEPORTER_BLUE_START + 0)
+#define EL_MM_TELEPORTER_BLUE_2 (EL_MM_TELEPORTER_BLUE_START + 1)
+#define EL_MM_TELEPORTER_BLUE_3 (EL_MM_TELEPORTER_BLUE_START + 2)
+#define EL_MM_TELEPORTER_BLUE_4 (EL_MM_TELEPORTER_BLUE_START + 3)
+#define EL_MM_TELEPORTER_BLUE_5 (EL_MM_TELEPORTER_BLUE_START + 4)
+#define EL_MM_TELEPORTER_BLUE_6 (EL_MM_TELEPORTER_BLUE_START + 5)
+#define EL_MM_TELEPORTER_BLUE_7 (EL_MM_TELEPORTER_BLUE_START + 6)
+#define EL_MM_TELEPORTER_BLUE_8 (EL_MM_TELEPORTER_BLUE_START + 7)
+#define EL_MM_TELEPORTER_BLUE_9 (EL_MM_TELEPORTER_BLUE_START + 8)
+#define EL_MM_TELEPORTER_BLUE_10 (EL_MM_TELEPORTER_BLUE_START + 9)
+#define EL_MM_TELEPORTER_BLUE_11 (EL_MM_TELEPORTER_BLUE_START + 10)
+#define EL_MM_TELEPORTER_BLUE_12 (EL_MM_TELEPORTER_BLUE_START + 11)
+#define EL_MM_TELEPORTER_BLUE_13 (EL_MM_TELEPORTER_BLUE_START + 12)
+#define EL_MM_TELEPORTER_BLUE_14 (EL_MM_TELEPORTER_BLUE_START + 13)
+#define EL_MM_TELEPORTER_BLUE_15 (EL_MM_TELEPORTER_BLUE_START + 14)
+#define EL_MM_TELEPORTER_BLUE_16 (EL_MM_TELEPORTER_BLUE_START + 15)
+#define EL_MM_TELEPORTER_BLUE_END EL_MM_TELEPORTER_BLUE_16
+
+#define EL_MM_MCDUFFIN 1204
+#define EL_MM_PACMAN 1205
+#define EL_MM_FUSE 1206
+#define EL_MM_STEEL_WALL 1207
+#define EL_MM_WOODEN_WALL 1208
+#define EL_MM_ICE_WALL 1209
+#define EL_MM_AMOEBA_WALL 1210
+#define EL_DF_LASER 1211
+#define EL_DF_RECEIVER 1212
+#define EL_DF_STEEL_WALL 1213
+#define EL_DF_WOODEN_WALL 1214
#define EL_MM_END_2 (EL_DF_START2 + 430)
#define EL_MM_END EL_MM_END_2
-#define NUM_FILE_ELEMENTS 1211
+#define NUM_FILE_ELEMENTS 1215
/* "real" (and therefore drawable) runtime elements */
#define ACTION_EATING 49
#define ACTION_TWINKLING 50
#define ACTION_SPLASHING 51
-#define ACTION_PAGE_1 52
-#define ACTION_PAGE_2 53
-#define ACTION_PAGE_3 54
-#define ACTION_PAGE_4 55
-#define ACTION_PAGE_5 56
-#define ACTION_PAGE_6 57
-#define ACTION_PAGE_7 58
-#define ACTION_PAGE_8 59
-#define ACTION_PAGE_9 60
-#define ACTION_PAGE_10 61
-#define ACTION_PAGE_11 62
-#define ACTION_PAGE_12 63
-#define ACTION_PAGE_13 64
-#define ACTION_PAGE_14 65
-#define ACTION_PAGE_15 66
-#define ACTION_PAGE_16 67
-#define ACTION_PAGE_17 68
-#define ACTION_PAGE_18 69
-#define ACTION_PAGE_19 70
-#define ACTION_PAGE_20 71
-#define ACTION_PAGE_21 72
-#define ACTION_PAGE_22 73
-#define ACTION_PAGE_23 74
-#define ACTION_PAGE_24 75
-#define ACTION_PAGE_25 76
-#define ACTION_PAGE_26 77
-#define ACTION_PAGE_27 78
-#define ACTION_PAGE_28 79
-#define ACTION_PAGE_29 80
-#define ACTION_PAGE_30 81
-#define ACTION_PAGE_31 82
-#define ACTION_PAGE_32 83
-#define ACTION_PART_1 84
-#define ACTION_PART_2 85
-#define ACTION_PART_3 86
-#define ACTION_PART_4 87
-#define ACTION_PART_5 88
-#define ACTION_PART_6 89
-#define ACTION_PART_7 90
-#define ACTION_PART_8 91
-#define ACTION_PART_9 92
-#define ACTION_PART_10 93
-#define ACTION_PART_11 94
-#define ACTION_PART_12 95
-#define ACTION_PART_13 96
-#define ACTION_PART_14 97
-#define ACTION_PART_15 98
-#define ACTION_PART_16 99
-#define ACTION_PART_17 100
-#define ACTION_PART_18 101
-#define ACTION_PART_19 102
-#define ACTION_PART_20 103
-#define ACTION_PART_21 104
-#define ACTION_PART_22 105
-#define ACTION_PART_23 106
-#define ACTION_PART_24 107
-#define ACTION_PART_25 108
-#define ACTION_PART_26 109
-#define ACTION_PART_27 110
-#define ACTION_PART_28 111
-#define ACTION_PART_29 112
-#define ACTION_PART_30 113
-#define ACTION_PART_31 114
-#define ACTION_PART_32 115
-#define ACTION_OTHER 116
-
-#define NUM_ACTIONS 117
+#define ACTION_HITTING 52
+#define ACTION_PAGE_1 53
+#define ACTION_PAGE_2 54
+#define ACTION_PAGE_3 55
+#define ACTION_PAGE_4 56
+#define ACTION_PAGE_5 57
+#define ACTION_PAGE_6 58
+#define ACTION_PAGE_7 59
+#define ACTION_PAGE_8 60
+#define ACTION_PAGE_9 61
+#define ACTION_PAGE_10 62
+#define ACTION_PAGE_11 63
+#define ACTION_PAGE_12 64
+#define ACTION_PAGE_13 65
+#define ACTION_PAGE_14 66
+#define ACTION_PAGE_15 67
+#define ACTION_PAGE_16 68
+#define ACTION_PAGE_17 69
+#define ACTION_PAGE_18 70
+#define ACTION_PAGE_19 71
+#define ACTION_PAGE_20 72
+#define ACTION_PAGE_21 73
+#define ACTION_PAGE_22 74
+#define ACTION_PAGE_23 75
+#define ACTION_PAGE_24 76
+#define ACTION_PAGE_25 77
+#define ACTION_PAGE_26 78
+#define ACTION_PAGE_27 79
+#define ACTION_PAGE_28 80
+#define ACTION_PAGE_29 81
+#define ACTION_PAGE_30 82
+#define ACTION_PAGE_31 83
+#define ACTION_PAGE_32 84
+#define ACTION_PART_1 85
+#define ACTION_PART_2 86
+#define ACTION_PART_3 87
+#define ACTION_PART_4 88
+#define ACTION_PART_5 89
+#define ACTION_PART_6 90
+#define ACTION_PART_7 91
+#define ACTION_PART_8 92
+#define ACTION_PART_9 93
+#define ACTION_PART_10 94
+#define ACTION_PART_11 95
+#define ACTION_PART_12 96
+#define ACTION_PART_13 97
+#define ACTION_PART_14 98
+#define ACTION_PART_15 99
+#define ACTION_PART_16 100
+#define ACTION_PART_17 101
+#define ACTION_PART_18 102
+#define ACTION_PART_19 103
+#define ACTION_PART_20 104
+#define ACTION_PART_21 105
+#define ACTION_PART_22 106
+#define ACTION_PART_23 107
+#define ACTION_PART_24 108
+#define ACTION_PART_25 109
+#define ACTION_PART_26 110
+#define ACTION_PART_27 111
+#define ACTION_PART_28 112
+#define ACTION_PART_29 113
+#define ACTION_PART_30 114
+#define ACTION_PART_31 115
+#define ACTION_PART_32 116
+#define ACTION_OTHER 117
+
+#define NUM_ACTIONS 118
#define ACTION_BORING_LAST ACTION_BORING_10
#define ACTION_SLEEPING_LAST ACTION_SLEEPING_3
#define GFX_ARG_POST_DELAY_FIXED 39
#define GFX_ARG_POST_DELAY_RANDOM 40
#define GFX_ARG_INIT_EVENT 41
-#define GFX_ARG_ANIM_EVENT 42
-#define GFX_ARG_NAME 43
-#define GFX_ARG_SCALE_UP_FACTOR 44
-#define GFX_ARG_TILE_SIZE 45
-#define GFX_ARG_CLONE_FROM 46
-#define GFX_ARG_FADE_MODE 47
-#define GFX_ARG_FADE_DELAY 48
-#define GFX_ARG_POST_DELAY 49
-#define GFX_ARG_AUTO_DELAY 50
-#define GFX_ARG_ALIGN 51
-#define GFX_ARG_VALIGN 52
-#define GFX_ARG_SORT_PRIORITY 53
-#define GFX_ARG_CLASS 54
-#define GFX_ARG_STYLE 55
-#define GFX_ARG_ACTIVE_XOFFSET 56
-#define GFX_ARG_ACTIVE_YOFFSET 57
-#define GFX_ARG_PRESSED_XOFFSET 58
-#define GFX_ARG_PRESSED_YOFFSET 59
-
-#define NUM_GFX_ARGS 60
+#define GFX_ARG_INIT_EVENT_ACTION 42
+#define GFX_ARG_ANIM_EVENT 43
+#define GFX_ARG_ANIM_EVENT_ACTION 44
+#define GFX_ARG_NAME 45
+#define GFX_ARG_SCALE_UP_FACTOR 46
+#define GFX_ARG_TILE_SIZE 47
+#define GFX_ARG_CLONE_FROM 48
+#define GFX_ARG_FADE_MODE 49
+#define GFX_ARG_FADE_DELAY 50
+#define GFX_ARG_POST_DELAY 51
+#define GFX_ARG_AUTO_DELAY 52
+#define GFX_ARG_ALIGN 53
+#define GFX_ARG_VALIGN 54
+#define GFX_ARG_SORT_PRIORITY 55
+#define GFX_ARG_CLASS 56
+#define GFX_ARG_STYLE 57
+#define GFX_ARG_ACTIVE_XOFFSET 58
+#define GFX_ARG_ACTIVE_YOFFSET 59
+#define GFX_ARG_PRESSED_XOFFSET 60
+#define GFX_ARG_PRESSED_YOFFSET 61
+
+#define NUM_GFX_ARGS 62
/* values for sound configuration suffixes */
#define FONT_OPTION_ON 30
#define FONT_VALUE_1 31
#define FONT_VALUE_2 32
-#define FONT_VALUE_OLD 33
-#define FONT_VALUE_NARROW 34
-#define FONT_LEVEL_NUMBER_ACTIVE 35
-#define FONT_LEVEL_NUMBER 36
-#define FONT_TAPE_RECORDER 37
-#define FONT_GAME_INFO 38
-#define FONT_INFO_ELEMENTS 39
-#define FONT_INFO_LEVELSET 40
-
-#define NUM_FONTS 41
+#define FONT_VALUE_OLD_NARROW 33
+#define FONT_VALUE_OLD 34
+#define FONT_VALUE_NARROW 35
+#define FONT_LEVEL_NUMBER_ACTIVE 36
+#define FONT_LEVEL_NUMBER 37
+#define FONT_TAPE_RECORDER 38
+#define FONT_GAME_INFO 39
+#define FONT_INFO_ELEMENTS 40
+#define FONT_INFO_LEVELSET 41
+#define FONT_MAIN_NETWORK_PLAYERS 42
+
+#define NUM_FONTS 43
#define NUM_INITIAL_FONTS 4
/* values for toon animation configuration */
/* program information and versioning definitions */
-#define PROGRAM_VERSION_MAJOR 4
+#define PROGRAM_VERSION_SUPER 4
+#define PROGRAM_VERSION_MAJOR 1
#define PROGRAM_VERSION_MINOR 0
#define PROGRAM_VERSION_PATCH 1
-#define PROGRAM_VERSION_BUILD 5
#define PROGRAM_VERSION_EXTRA ""
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define GAME_VERSION_2_0 FILE_VERSION_2_0
#define GAME_VERSION_3_0 FILE_VERSION_3_0
-#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_MAJOR, \
+#define GAME_VERSION_ACTUAL VERSION_IDENT(PROGRAM_VERSION_SUPER, \
+ PROGRAM_VERSION_MAJOR, \
PROGRAM_VERSION_MINOR, \
- PROGRAM_VERSION_PATCH, \
- PROGRAM_VERSION_BUILD)
+ PROGRAM_VERSION_PATCH)
/* values for game_emulation */
#define EMU_NONE 0
struct MenuPosInfo prev_level;
struct MenuPosInfo next_level;
+
+ struct MenuPosInfo first_level;
+ struct MenuPosInfo last_level;
+ struct MenuPosInfo level_number;
+
+ struct MenuPosInfo insert_solution;
+ struct MenuPosInfo play_solution;
};
struct MenuMainTextInfo
struct MenuMainButtonInfo button;
struct MenuMainTextInfo text;
struct MenuMainInputInfo input;
+
+ struct TextPosInfo preview_players;
+ struct TextPosInfo network_players;
};
struct TitleFadingInfo
int list_size[NUM_SPECIAL_GFX_ARGS];
int list_size_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int left_spacing[NUM_SPECIAL_GFX_ARGS];
+ int left_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int left_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int right_spacing[NUM_SPECIAL_GFX_ARGS];
+ int right_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int right_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int top_spacing[NUM_SPECIAL_GFX_ARGS];
+ int top_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int top_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int bottom_spacing[NUM_SPECIAL_GFX_ARGS];
+ int bottom_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int bottom_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+
+ int paragraph_spacing[NUM_SPECIAL_GFX_ARGS];
+ int paragraph_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int paragraph_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int headline1_spacing[NUM_SPECIAL_GFX_ARGS];
+ int headline1_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int headline1_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int headline2_spacing[NUM_SPECIAL_GFX_ARGS];
+ int headline2_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int headline2_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int line_spacing[NUM_SPECIAL_GFX_ARGS];
+ int line_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int line_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+ int extra_spacing[NUM_SPECIAL_GFX_ARGS];
+ int extra_spacing_info[NUM_SPECIAL_GFX_INFO_ARGS];
+ int extra_spacing_setup[NUM_SPECIAL_GFX_SETUP_ARGS];
+
struct TitleFadingInfo enter_menu;
struct TitleFadingInfo leave_menu;
struct TitleFadingInfo enter_screen[NUM_SPECIAL_GFX_ARGS];
int height;
int step_offset;
int step_delay;
+ int post_delay;
int anim_mode;
};
struct XY element_name;
struct EditorTabsInfo tabs;
+
+ struct XY tooltip;
};
struct EditorGadgetInfo
char text[MAX_ENVELOPE_TEXT_LEN + 1];
};
-struct LevelSetInfo
-{
- int music[MAX_LEVELS];
-};
-
struct LevelFileInfo
{
int nr;
int time; /* available time (seconds) */
int gems_needed;
+ boolean auto_count_gems;
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
boolean can_pass_to_walkable; /* player can pass to empty or walkable tile */
boolean grow_into_diggable; /* amoeba can grow into anything diggable */
boolean auto_exit_sokoban; /* automatically finish solved Sokoban levels */
+ boolean solved_by_one_player; /* level is solved if one player enters exit */
boolean continuous_snapping; /* repeated snapping without releasing key */
boolean block_snap_field; /* snapping blocks field to show animation */
boolean block_last_field; /* player blocks previous field while moving */
boolean sp_block_last_field; /* player blocks previous field while moving */
+ /* values for MM/DF elements */
+ boolean mm_laser_red, mm_laser_green, mm_laser_blue;
+ boolean df_laser_red, df_laser_green, df_laser_blue;
+ int mm_time_fuse;
+ int mm_time_bomb;
+ int mm_time_ball;
+ int mm_time_block;
+
/* ('int' instead of 'boolean' because used as selectbox value in editor) */
int use_step_counter; /* count steps instead of seconds for level */
boolean use_custom_template; /* use custom properties from template file */
+ boolean file_has_custom_elements; /* set when level file contains CEs */
+
boolean no_valid_file; /* set when level file missing or invalid */
boolean no_level_file; /* set when falling back to level template */
boolean use_action_after_change_bug;
};
+struct NetworkLevelInfo
+{
+ char *leveldir_identifier; /* network levelset identifier */
+
+ struct LevelFileInfo file_info; /* file info for level file */
+ struct LevelFileInfo tmpl_info; /* file info for level template */
+
+ boolean use_network_level_files; /* use levels from network server */
+ boolean use_custom_template; /* use CEs from level template */
+};
+
struct GlobalInfo
{
char *autoplay_leveldir;
int post_delay_random; /* animations (pause before next animation) */
int init_event; /* optional event triggering animation start */
+ int init_event_action; /* optional action called on animation start */
int anim_event; /* optional event triggering animation end */
+ int anim_event_action; /* optional action called on animation end */
int step_offset; /* optional step offset of toon animations */
int step_xoffset; /* optional step offset of toon animations */
extern int graphics_action_mapping[];
-extern struct LevelSetInfo levelset;
extern struct LevelInfo level, level_template;
extern struct HiScore highscore[];
extern struct TapeInfo tape;