/* values for configurable properties (custom elem's only, else pre-defined) */
#define EP_DIGGABLE 0
#define EP_COLLECTIBLE 1
-#define EP_UNUSED_2 2
-#define EP_UNUSED_3 3
-#define EP_UNUSED_4 4
+#define EP_DONT_GO_TO 2
+#define EP_ENEMY 3
+#define EP_DONT_TOUCH 4
#define EP_INDESTRUCTIBLE 5
#define EP_SLIPPERY 6
#define EP_CAN_EXPLODE 7
#define EP_PLAYER 27
#define EP_CAN_PASS_MAGIC_WALL 28
#define EP_SWITCHABLE 29
-#define EP_DONT_TOUCH 30
-#define EP_ENEMY 31
-#define EP_DONT_GO_TO 32
-#define EP_BD_ELEMENT 33
-#define EP_SP_ELEMENT 34
-#define EP_SB_ELEMENT 35
-#define EP_GEM 36
-#define EP_FOOD_DARK_YAMYAM 37
-#define EP_FOOD_PENGUIN 38
-#define EP_FOOD_PIG 39
-#define EP_HISTORIC_WALL 40
-#define EP_HISTORIC_SOLID 41
-#define EP_BELT 42
-#define EP_BELT_ACTIVE 43
-#define EP_BELT_SWITCH 44
-#define EP_TUBE 45
-#define EP_KEYGATE 46
-#define EP_AMOEBOID 47
-#define EP_AMOEBALIVE 48
-#define EP_HAS_CONTENT 49
-#define EP_ACTIVE_BOMB 50
-#define EP_INACTIVE 51
+#define EP_BD_ELEMENT 30
+#define EP_SP_ELEMENT 31
+#define EP_SB_ELEMENT 32
+#define EP_GEM 33
+#define EP_FOOD_DARK_YAMYAM 34
+#define EP_FOOD_PENGUIN 35
+#define EP_FOOD_PIG 36
+#define EP_HISTORIC_WALL 37
+#define EP_HISTORIC_SOLID 38
+#define EP_BELT 39
+#define EP_BELT_ACTIVE 40
+#define EP_BELT_SWITCH 41
+#define EP_TUBE 42
+#define EP_KEYGATE 43
+#define EP_AMOEBOID 44
+#define EP_AMOEBALIVE 45
+#define EP_HAS_CONTENT 46
+#define EP_ACTIVE_BOMB 47
+#define EP_INACTIVE 48
/* values for derived properties (determined from properties above) */
-#define EP_ACCESSIBLE_OVER 52
-#define EP_ACCESSIBLE_INSIDE 53
-#define EP_ACCESSIBLE_UNDER 54
-#define EP_WALKABLE 55
-#define EP_PASSABLE 56
-#define EP_ACCESSIBLE 57
-#define EP_SNAPPABLE 58
-#define EP_WALL 59
-#define EP_SOLID_FOR_PUSHING 60
-#define EP_DRAGONFIRE_PROOF 61
-#define EP_EXPLOSION_PROOF 62
+#define EP_ACCESSIBLE_OVER 49
+#define EP_ACCESSIBLE_INSIDE 50
+#define EP_ACCESSIBLE_UNDER 51
+#define EP_WALKABLE 52
+#define EP_PASSABLE 53
+#define EP_ACCESSIBLE 54
+#define EP_SNAPPABLE 55
+#define EP_WALL 56
+#define EP_SOLID_FOR_PUSHING 57
+#define EP_DRAGONFIRE_PROOF 58
+#define EP_EXPLOSION_PROOF 59
/* values for internal purpose only (level editor) */
-#define EP_WALK_TO_OBJECT 63
+#define EP_WALK_TO_OBJECT 60
+#define EP_DEADLY 61
-#define NUM_ELEMENT_PROPERTIES 64
+#define NUM_ELEMENT_PROPERTIES 62
#define NUM_EP_BITFIELDS ((NUM_ELEMENT_PROPERTIES + 31) / 32)
#define EP_BITFIELD_BASE 0
/* macros for configurable properties */
#define IS_DIGGABLE(e) HAS_PROPERTY(e, EP_DIGGABLE)
#define IS_COLLECTIBLE(e) HAS_PROPERTY(e, EP_COLLECTIBLE)
+#define DONT_GO_TO(e) HAS_PROPERTY(e, EP_DONT_GO_TO)
+#define IS_ENEMY(e) HAS_PROPERTY(e, EP_ENEMY)
+#define DONT_TOUCH(e) HAS_PROPERTY(e, EP_DONT_TOUCH)
#define IS_INDESTRUCTIBLE(e) HAS_PROPERTY(e, EP_INDESTRUCTIBLE)
#define IS_SLIPPERY(e) HAS_PROPERTY(e, EP_SLIPPERY)
#define CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE)
#define IS_PASSABLE_OVER(e) HAS_PROPERTY(e, EP_PASSABLE_OVER)
#define IS_PASSABLE_INSIDE(e) HAS_PROPERTY(e, EP_PASSABLE_INSIDE)
#define IS_PASSABLE_UNDER(e) HAS_PROPERTY(e, EP_PASSABLE_UNDER)
-#define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE)
#define IS_CHANGEABLE(e) HAS_PROPERTY(e, EP_CHANGEABLE)
+#define IS_PUSHABLE(e) HAS_PROPERTY(e, EP_PUSHABLE)
/* macros for special configurable properties */
#define IS_EM_SLIPPERY_WALL(e) HAS_PROPERTY(e, EP_EM_SLIPPERY_WALL)
#define ELEM_IS_PLAYER(e) HAS_PROPERTY(e, EP_PLAYER)
#define CAN_PASS_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_MAGIC_WALL)
#define IS_SWITCHABLE(e) HAS_PROPERTY(e, EP_SWITCHABLE)
-#define DONT_TOUCH(e) HAS_PROPERTY(e, EP_DONT_TOUCH)
-#define IS_ENEMY(e) HAS_PROPERTY(e, EP_ENEMY)
-#define DONT_GO_TO(e) HAS_PROPERTY(e, EP_DONT_GO_TO)
#define IS_BD_ELEMENT(e) HAS_PROPERTY(e, EP_BD_ELEMENT)
#define IS_SP_ELEMENT(e) HAS_PROPERTY(e, EP_SP_ELEMENT)
#define IS_SB_ELEMENT(e) HAS_PROPERTY(e, EP_SB_ELEMENT)
int move_delay_random; /* additional random frame delay for moving */
int move_pattern; /* direction movable element moves to */
+ int move_direction_initial; /* initial direction element moves to */
int walk_to_action; /* only for level editor; not stored */
+ int deadliness; /* only for level editor; not stored */
int walkable_layer; /* only for level editor; not stored */
int content[3][3]; /* new elements after explosion */