#define IS_DROPPABLE(e) HAS_PROPERTY(e, EP_DROPPABLE)
#define CAN_EXPLODE_1X1(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_1X1)
#define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE)
#define IS_DROPPABLE(e) HAS_PROPERTY(e, EP_DROPPABLE)
#define CAN_EXPLODE_1X1(e) HAS_PROPERTY(e, EP_CAN_EXPLODE_1X1)
#define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE)
#define IS_PROTECTED(e) HAS_PROPERTY(e, EP_PROTECTED)
#define CAN_MOVE_INTO_ACID(e) HAS_PROPERTY(e, EP_CAN_MOVE_INTO_ACID)
#define IS_PROTECTED(e) HAS_PROPERTY(e, EP_PROTECTED)
#define CAN_MOVE_INTO_ACID(e) HAS_PROPERTY(e, EP_CAN_MOVE_INTO_ACID)
#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 25)
#define EL_INTERNAL_CLIPBOARD_CUSTOM (EL_FIRST_INTERNAL + 0)
#define EL_FIRST_INTERNAL (EL_FIRST_DUMMY + 25)
#define EL_INTERNAL_CLIPBOARD_CUSTOM (EL_FIRST_INTERNAL + 0)
-#define EL_INTERNAL_CLIPBOARD_GROUP (EL_FIRST_INTERNAL + 1)
-#define EL_INTERNAL_DUMMY (EL_FIRST_INTERNAL + 2)
+#define EL_INTERNAL_CLIPBOARD_CHANGE (EL_FIRST_INTERNAL + 1)
+#define EL_INTERNAL_CLIPBOARD_GROUP (EL_FIRST_INTERNAL + 2)
+#define EL_INTERNAL_DUMMY (EL_FIRST_INTERNAL + 3)
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 1
#define PROGRAM_VERSION_PATCH 0
#define PROGRAM_VERSION_MAJOR 3
#define PROGRAM_VERSION_MINOR 1
#define PROGRAM_VERSION_PATCH 0
boolean block_last_field; /* player blocks previous field while moving */
boolean sp_block_last_field; /* player blocks previous field while moving */
boolean use_spring_bug; /* for compatibility with old levels */
boolean block_last_field; /* player blocks previous field while moving */
boolean sp_block_last_field; /* player blocks previous field while moving */
boolean use_spring_bug; /* for compatibility with old levels */
int use_step_counter; /* count steps instead of seconds for level */
short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
int use_step_counter; /* count steps instead of seconds for level */
short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean pause_before_death;
boolean recording, playing, pausing;
boolean fast_forward;
boolean pause_before_death;
boolean recording, playing, pausing;
boolean fast_forward;
/* functions that are called before, while and after the change of an
element -- currently only used for non-custom elements */
void (*pre_change_function)(int x, int y);
void (*change_function)(int x, int y);
void (*post_change_function)(int x, int y);
/* functions that are called before, while and after the change of an
element -- currently only used for non-custom elements */
void (*pre_change_function)(int x, int y);
void (*change_function)(int x, int y);
void (*post_change_function)(int x, int y);
short actual_trigger_element; /* element that actually triggered change */
int actual_trigger_player; /* player which actually triggered change */
short actual_trigger_element; /* element that actually triggered change */
int actual_trigger_player; /* player which actually triggered change */
boolean can_leave_element; /* element can leave other element behind */
boolean can_leave_element_last;
boolean can_leave_element; /* element can leave other element behind */
boolean can_leave_element_last;