/* values for change action mode for custom elements */
#define CA_MODE_UNDEFINED 0
-#define CA_MODE_ADD 1
-#define CA_MODE_SUBTRACT 2
-#define CA_MODE_MULTIPLY 3
-#define CA_MODE_DIVIDE 4
-#define CA_MODE_SET 5
+#define CA_MODE_SET 1
+#define CA_MODE_ADD 2
+#define CA_MODE_SUBTRACT 3
+#define CA_MODE_MULTIPLY 4
+#define CA_MODE_DIVIDE 5
+#define CA_MODE_MODULO 6
/* values for change action parameters for custom elements */
#define CA_ARG_MIN 0
#define GFX_ARG_POST_DELAY_RANDOM 35
#define GFX_ARG_NAME 36
#define GFX_ARG_SCALE_UP_FACTOR 37
+#define GFX_ARG_CLONE_FROM 38
-#define NUM_GFX_ARGS 38
+#define NUM_GFX_ARGS 39
/* values for sound configuration suffixes */
int access_direction; /* accessible from which direction */
- int collect_score; /* score value for collecting */
- int collect_count; /* count value for collecting */
+ int collect_score_initial; /* initial score value for collecting */
+ int collect_count_initial; /* initial count value for collecting */
int push_delay_fixed; /* constant delay before pushing */
int push_delay_random; /* additional random delay before pushing */
int explosion_delay; /* duration of explosion of this element */
int ignition_delay; /* delay for explosion by other explosion */
- int counter_initial; /* initial value of generic CE counter */
-
struct ElementChangeInfo *change_page; /* actual list of change pages */
struct ElementChangeInfo *change; /* pointer to current change page */
boolean in_group[NUM_GROUP_ELEMENTS];
- int counter; /* current value of generic CE counter */
+ int collect_score; /* runtime score value for collecting */
/* ---------- internal values used in level editor ---------- */
struct GraphicInfo
{
Bitmap *bitmap;
+ int src_image_width; /* scaled bitmap size, but w/o small images */
+ int src_image_height; /* scaled bitmap size, but w/o small images */
+
int src_x, src_y; /* start position of animation frames */
int width, height; /* width/height of each animation frame */
int offset_x, offset_y; /* x/y offset to next animation frame */
int diggable_like; /* element for cloning digging graphics */
int border_size; /* border size for "crumbled" graphics */
int scale_up_factor; /* optional factor for scaling image up */
+ int clone_from; /* graphic for cloning *all* settings */
int anim_delay_fixed; /* optional delay values for bored and */
int anim_delay_random; /* sleeping player animations (animation */
extern short MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short Count[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];