#define MV_TURNING_RANDOM (1 << MV_BIT_TURNING_RANDOM)
#define MV_PREVIOUS (1 << MV_BIT_PREVIOUS)
+/* values for elements left behind by custom elements */
+#define LEAVE_TYPE_UNLIMITED 0
+#define LEAVE_TYPE_LIMITED 1
+
/* values for slippery property for custom elements */
#define SLIPPERY_ANY_RANDOM 0
#define SLIPPERY_ANY_LEFT_RIGHT 1
#define EL_EXPANDABLE_WALL_GROWING (EL_FIRST_RUNTIME_UNREAL + 8)
#define EL_FLAMES (EL_FIRST_RUNTIME_UNREAL + 9)
#define EL_PLAYER_IS_LEAVING (EL_FIRST_RUNTIME_UNREAL + 10)
-#define EL_QUICKSAND_FILLING (EL_FIRST_RUNTIME_UNREAL + 11)
-#define EL_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 12)
-#define EL_BD_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 13)
+#define EL_PLAYER_IS_EXPLODING_1 (EL_FIRST_RUNTIME_UNREAL + 11)
+#define EL_PLAYER_IS_EXPLODING_2 (EL_FIRST_RUNTIME_UNREAL + 12)
+#define EL_PLAYER_IS_EXPLODING_3 (EL_FIRST_RUNTIME_UNREAL + 13)
+#define EL_PLAYER_IS_EXPLODING_4 (EL_FIRST_RUNTIME_UNREAL + 14)
+#define EL_QUICKSAND_FILLING (EL_FIRST_RUNTIME_UNREAL + 15)
+#define EL_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 16)
+#define EL_BD_MAGIC_WALL_FILLING (EL_FIRST_RUNTIME_UNREAL + 17)
/* dummy elements (never used as game elements, only used as graphics) */
-#define EL_FIRST_DUMMY (EL_FIRST_RUNTIME_UNREAL + 14)
+#define EL_FIRST_DUMMY (EL_FIRST_RUNTIME_UNREAL + 18)
#define EL_STEELWALL_TOPLEFT (EL_FIRST_DUMMY + 0)
#define EL_STEELWALL_TOPRIGHT (EL_FIRST_DUMMY + 1)
int move_stepsize; /* step size element moves with */
int move_enter_element; /* element that can be entered (and removed) */
int move_leave_element; /* element that can be left behind */
+ int move_leave_type; /* change (limited) or leave (unlimited) */
int slippery_type; /* how/where other elements slip away */
boolean in_group[NUM_GROUP_ELEMENTS];
+ boolean can_leave_element; /* element can leave other element behind */
+ boolean can_leave_element_last;
+
/* ---------- internal values used in level editor ---------- */
int access_type; /* walkable or passable */