#define CA_SET_CE_VALUE 16
#define CA_SET_ENGINE_SCAN_MODE 17
#define CA_SET_PLAYER_INVENTORY 18
+#define CA_SET_CE_ARTWORK 19
+#define CA_SET_LEVEL_RANDOM_SEED 20
#define CA_HEADLINE_LEVEL_ACTIONS 250
#define CA_HEADLINE_PLAYER_ACTIONS 251
#define CA_ARG_SCAN_MODE_HEADLINE (CA_ARG_SCAN_MODE + 999)
#define CA_ARG_INVENTORY 18000
#define CA_ARG_INVENTORY_RESET (CA_ARG_INVENTORY + 0)
-#define CA_ARG_INVENTORY_RM_FIRST (CA_ARG_INVENTORY + 1)
-#define CA_ARG_INVENTORY_RM_LAST (CA_ARG_INVENTORY + 2)
-#define CA_ARG_INVENTORY_RM_ALL (CA_ARG_INVENTORY + 3)
+#define CA_ARG_INVENTORY_RM_TARGET (CA_ARG_INVENTORY + 1)
+#define CA_ARG_INVENTORY_RM_TRIGGER (CA_ARG_INVENTORY + 2)
+#define CA_ARG_INVENTORY_RM_ACTION (CA_ARG_INVENTORY + 3)
+#define CA_ARG_INVENTORY_RM_FIRST (CA_ARG_INVENTORY + 4)
+#define CA_ARG_INVENTORY_RM_LAST (CA_ARG_INVENTORY + 5)
+#define CA_ARG_INVENTORY_RM_ALL (CA_ARG_INVENTORY + 6)
#define CA_ARG_INVENTORY_HEADLINE (CA_ARG_INVENTORY + 998)
#define CA_ARG_INVENTORY_RM_HEADLINE (CA_ARG_INVENTORY + 999)
#define CA_ARG_UNDEFINED 65535
#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
(e) <= EL_DC_STEELWALL_2_SINGLE)
+#if 1
+#define GFX_ELEMENT(e) (element_info[e].gfx_element)
+#else
#define GFX_ELEMENT(e) (element_info[e].use_gfx_element ? \
element_info[e].gfx_element : e)
+#endif
/* !!! CHECK THIS !!! */
#if 1
/* program information and versioning definitions */
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 2
-#define PROGRAM_VERSION_PATCH 5
+#define PROGRAM_VERSION_PATCH 6
#define PROGRAM_VERSION_BUILD 0
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
+ int random_seed;
+
struct EnvelopeInfo envelope[NUM_ENVELOPES];
int score[LEVEL_SCORE_ELEMENTS];
int initial_inventory_content[MAX_PLAYERS][MAX_INITIAL_INVENTORY_SIZE];
boolean em_slippery_gems; /* EM style "gems slip from wall" behaviour */
+ boolean em_explodes_by_fire; /* EM style chain explosion behaviour */
boolean use_spring_bug; /* for compatibility with old levels */
boolean use_time_orb_bug; /* for compatibility with old levels */
boolean instant_relocation; /* no visual delay when relocating player */
unsigned long properties[NUM_EP_BITFIELDS]; /* element base properties */
boolean use_gfx_element; /* use custom graphic element */
- int gfx_element; /* optional custom graphic element */
+ int gfx_element_initial; /* initial optional custom graphic element */
int access_direction; /* accessible from which direction */
boolean in_group[NUM_GROUP_ELEMENTS];
+ int gfx_element; /* runtime optional custom graphic element */
+
int collect_score; /* runtime score value for collecting */
/* count of this element on playfield, calculated after each frame */