rnd-20030602-1-src
[rocksndiamonds.git] / src / main.h
index 23b431efaa7be3ea837584b7aa4ad2eeca821c25..8ffeb3de6d9736a06e51fbfc382ea7b95da61b6d 100644 (file)
@@ -63,9 +63,9 @@
 /* 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)
@@ -1173,8 +1171,10 @@ struct ElementInfo
   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 */