#define EP_PASSABLE_OVER 14
#define EP_PASSABLE_INSIDE 15
#define EP_PASSABLE_UNDER 16
-#define EP_UNUSED_17 17
+#define EP_CHANGEABLE 17
#define EP_UNUSED_18 18
#define EP_UNUSED_19 19
#define EP_UNUSED_20 20
#define EP_PLAYER 26
#define EP_CAN_BE_CRUMBLED 27
#define EP_CAN_MOVE 28
-#define EP_CAN_CHANGE 29
-#define EP_DONT_TOUCH 30
-#define EP_ENEMY 31
-#define EP_DONT_GO_TO 32
-#define EP_EXPLOSIVE 33
-#define EP_BD_ELEMENT 34
-#define EP_SP_ELEMENT 35
-#define EP_SB_ELEMENT 36
-#define EP_GEM 37
-#define EP_FOOD_DARK_YAMYAM 38
-#define EP_FOOD_PENGUIN 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_CAN_PASS_MAGIC_WALL 29
+#define EP_SWITCHABLE 30
+#define EP_DONT_TOUCH 31
+#define EP_ENEMY 32
+#define EP_DONT_GO_TO 33
+#define EP_CAN_EXPLODE 34
+#define EP_BD_ELEMENT 35
+#define EP_SP_ELEMENT 36
+#define EP_SB_ELEMENT 37
+#define EP_GEM 38
+#define EP_FOOD_DARK_YAMYAM 39
+#define EP_FOOD_PENGUIN 40
+#define EP_FOOD_PIG 41
+#define EP_HISTORIC_WALL 42
+#define EP_HISTORIC_SOLID 43
+#define EP_BELT 44
+#define EP_BELT_ACTIVE 45
+#define EP_BELT_SWITCH 46
+#define EP_TUBE 47
+#define EP_KEYGATE 48
+#define EP_AMOEBOID 49
+#define EP_AMOEBALIVE 50
+#define EP_HAS_CONTENT 51
+#define EP_ACTIVE_BOMB 52
+#define EP_INACTIVE 53
/* 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_WALL 58
-#define EP_SOLID_FOR_PUSHING 59
-#define EP_DRAGONFIRE_PROOF 60
-#define EP_EXPLOSION_PROOF 61
-#define NUM_ELEMENT_PROPERTIES 63
+#define EP_ACCESSIBLE_OVER 54
+#define EP_ACCESSIBLE_INSIDE 55
+#define EP_ACCESSIBLE_UNDER 56
+#define EP_WALKABLE 57
+#define EP_PASSABLE 58
+#define EP_ACCESSIBLE 59
+#define EP_SNAPPABLE 60
+#define EP_WALL 61
+#define EP_SOLID_FOR_PUSHING 62
+#define EP_DRAGONFIRE_PROOF 63
+#define EP_EXPLOSION_PROOF 64
+
+#define NUM_ELEMENT_PROPERTIES 65
#define NUM_EP_BITFIELDS ((NUM_ELEMENT_PROPERTIES + 31) / 32)
#define EP_BITFIELD_BASE 0
#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)
/* 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_BE_CRUMBLED(e) HAS_PROPERTY(e, EP_CAN_BE_CRUMBLED)
#define CAN_MOVE(e) HAS_PROPERTY(e, EP_CAN_MOVE)
-#define CAN_CHANGE(e) HAS_PROPERTY(e, EP_CAN_CHANGE)
+#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_EXPLOSIVE(e) HAS_PROPERTY(e, EP_EXPLOSIVE)
+#define IS_CAN_EXPLODE(e) HAS_PROPERTY(e, EP_CAN_EXPLODE)
#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)
#define IS_GEM(e) HAS_PROPERTY(e, EP_GEM)
#define IS_FOOD_DARK_YAMYAM(e) HAS_PROPERTY(e, EP_FOOD_DARK_YAMYAM)
#define IS_FOOD_PENGUIN(e) HAS_PROPERTY(e, EP_FOOD_PENGUIN)
+#define IS_FOOD_PIG(e) HAS_PROPERTY(e, EP_FOOD_PIG)
#define IS_HISTORIC_WALL(e) HAS_PROPERTY(e, EP_HISTORIC_WALL)
#define IS_HISTORIC_SOLID(e) HAS_PROPERTY(e, EP_HISTORIC_SOLID)
#define IS_BELT(e) HAS_PROPERTY(e, EP_BELT)
#define IS_ACCESSIBLE_OVER(e) HAS_PROPERTY(e, EP_ACCESSIBLE_OVER)
#define IS_ACCESSIBLE_INSIDE(e) HAS_PROPERTY(e, EP_ACCESSIBLE_INSIDE)
#define IS_ACCESSIBLE_UNDER(e) HAS_PROPERTY(e, EP_ACCESSIBLE_UNDER)
+#define IS_SNAPPABLE(e) HAS_PROPERTY(e, EP_SNAPPABLE)
#define IS_WALKABLE(e) HAS_PROPERTY(e, EP_WALKABLE)
#define IS_PASSABLE(e) HAS_PROPERTY(e, EP_PASSABLE)
#define IS_ACCESSIBLE(e) HAS_PROPERTY(e, EP_ACCESSIBLE)