Crossfire Server, Trunk
object.h
Go to the documentation of this file.
1 
6 #ifndef OBJECT_H
7 #define OBJECT_H
8 
9 #include "dialog.h"
10 
12 typedef uint32_t tag_t;
13 #define NUM_BODY_LOCATIONS 13
14 #define BODY_ARMS 1
20 typedef struct body_locations_struct {
21  const char *save_name;
22  const char *use_name;
23  const char *nonuse_name;
25 
27 
28 extern const char *const move_name[];
29 
40 typedef struct _key_value {
41  const char *key;
42  const char *value;
43  struct _key_value *next;
44 } key_value;
45 
52 #define WILL_APPLY_HANDLE 0x1
53 #define WILL_APPLY_TREASURE 0x2
54 #define WILL_APPLY_EARTHWALL 0x4
55 #define WILL_APPLY_DOOR 0x8
56 #define WILL_APPLY_FOOD 0x10
58 
59 
68 #define object_was_destroyed(op, old_tag) \
69  (op->count != old_tag || QUERY_FLAG(op, FLAG_FREED))
70 
71 
81 #define SPELL_TAG_SIZE 16
82 
87 #define OB_SPELL_TAG_HASH(op, count) (op->spell_tags[count&0xf])
88 
93 #define OB_SPELL_TAG_MATCH(op, count) (op->spell_tags[count&0xf] == count)
94 
96 #define CUSTOM_NAME_FIELD "custom_name"
97 
110  PLAYER = 1,
111  TRANSPORT = 2,
112  ROD = 3,
113  TREASURE = 4,
114  POTION = 5,
115  FOOD = 6,
116  POISON = 7,
117  BOOK = 8,
118  CLOCK = 9,
120  ARROW = 13,
121  BOW = 14,
122  WEAPON = 15,
123  ARMOUR = 16,
124  PEDESTAL = 17,
125  ALTAR = 18,
128  MAP = 22,
129  DOOR = 23,
130  KEY = 24,
132  TRIGGER = 27,
134  MAGIC_EAR = 29,
138  SHIELD = 33,
139  HELMET = 34,
140  MONEY = 36,
141  CLASS = 37,
142  AMULET = 39,
145  CREATOR = 42,
146  SKILL = 43,
147  EARTHWALL = 45,
148  GOLEM = 46,
150  BLINDNESS = 49,
151  GOD = 50,
152  DETECTOR = 51,
160  DRINK = 54,
161  MARKER = 55,
167  PEACEMAKER = 59,
170  GEM = 60,
171  FIREWALL = 62,
172  CHECK_INV = 64,
173  MOOD_FLOOR = 65,
184  EXIT = 66,
185  ENCOUNTER = 67,
187  SHOP_MAT = 69,
188  RING = 70,
189  FLOOR = 71,
190  FLESH = 72,
191  INORGANIC = 73,
192  SKILL_TOOL = 74,
193  LIGHTER = 75,
194  WALL = 77,
196  MISC_OBJECT = 79,
203  MONSTER = 80,
204  LAMP = 82,
205  DUPLICATOR = 83,
206  SPELLBOOK = 85,
207  CLOAK = 87,
208  SPINNER = 90,
209  GATE = 91,
210  BUTTON = 92,
211  CF_HANDLE = 93,
212  HOLE = 94, /* When open, objects fall through */
213  TRAPDOOR = 95,
214  SIGN = 98,
215  BOOTS = 99,
216  GLOVES = 100,
217  SPELL = 101,
219  CONVERTER = 103,
220  BRACERS = 104,
221  POISONING = 105,
222  SAVEBED = 106,
223  WAND = 109,
224  SCROLL = 111,
225  DIRECTOR = 112,
226  GIRDLE = 113,
227  FORCE = 114,
232  CLOSE_CON = 121,
234  CONTAINER = 122,
237  SKILLSCROLL = 130,
239  DEEP_SWAMP = 138,
243  RUNE = 154,
244  TRAP = 155,
246  CORPSE = 157,
247  DISEASE = 158,
248  SYMPTOM = 159,
249  BUILDER = 160,
251  MATERIAL = 161,
252  MIMIC = 162,
253  LIGHTABLE = 163,
255 };
256 
257 typedef uint32_t ob_flags[4];
258 
280 typedef struct obj {
281  /* These variables are not changed by object_copy() */
282  struct pl *contr;
283  struct obj *next;
284  struct obj *prev;
285  struct obj *active_next;
289  struct obj *active_prev;
293  struct obj *below;
294  struct obj *above;
295  /* Note: stacked in the *same *environment*/
296  struct obj *inv;
297  struct obj *container;
299  struct obj *env;
301  struct obj *more;
302  struct obj *head;
303  struct mapdef *map;
309  /* These get an extra add_refcount(), after having been copied by memcpy().
310  *
311  * Fields below name (included) are copied by memcpy in object_copy().
312  *
313  * If adding something that needs a refcount updated, make sure you modify
314  * object_copy() to do so.
315  * Everything below here also gets cleared by object_clear().
316  */
318  /* Place new attributes that should get copied and cleared below name */
319 
333  int16_t x, y;
334  int16_t ox, oy;
335  float speed;
336  float speed_left;
337  float weapon_speed;
339  const Face *face;
340  uint32_t nrof;
342  int8_t direction;
343  int8_t facing;
345  /* This next big block are basically used for monsters and equipment */
346  uint8_t type;
347  uint8_t subtype;
348  uint16_t client_type;
349  int16_t resist[NROFATTACKS];
350  uint32_t attacktype;
351  uint32_t path_attuned;
352  uint32_t path_repelled;
353  uint32_t path_denied;
355  uint16_t material;
356  int8_t magic;
357  uint8_t state;
358  int32_t value;
359  int16_t level;
361  /* Note that the last_.. values are sometimes used for non obvious
362  * meanings by some objects, eg, sp penalty, permanent exp.
363  */
364  int32_t last_eat;
365  int32_t last_heal;
366  int32_t last_sp;
367  int16_t last_grace;
368  int16_t invisible;
369  uint8_t pick_up;
370  int8_t item_power;
371  int8_t gen_sp_armour;
372  int8_t glow_radius;
373  int32_t weight;
374  int32_t weight_limit;
375  int32_t carrying;
377  int64_t total_exp;
378  struct obj *current_weapon;
379  uint32_t weapontype;
382  /* See the doc/Developers/objects for more info about body locations */
383 
384  /* Following mostly refers to fields only used for monsters */
385  struct obj *owner;
389  struct obj *enemy;
390  struct obj *attacked_by;
392  uint8_t run_away;
394  struct obj *chosen_skill;
395  uint8_t hide;
396  /* changes made by kholland@sunlab.cit.cornell.edu */
397  /* allows different movement patterns for attackers */
398  int32_t move_status;
399  uint16_t attack_movement;
400  uint8_t will_apply;
401  uint8_t sound_chance;
402  struct obj *spellitem;
403  double expmul;
406  /* Spell related information, may be useful elsewhere
407  * Note that other fields are used - these files are basically
408  * only used in spells.
409  */
410  int16_t casting_time;
411  int16_t duration;
413  int8_t range;
414  uint8_t range_modifier;
415  uint8_t dam_modifier;
416  struct obj *spell;
417  char *spellarg;
419  /* Following are values used by any object */
420  struct archt *arch;
421  struct archt *other_arch;
425  uint8_t anim_speed;
426  uint8_t last_anim;
428  uint8_t temp_anim_speed;
429  uint8_t smoothlevel;
430  uint8_t map_layer;
443  uint64_t event_bitmask;
444 } object;
445 
449 typedef struct oblnk {
450  object *ob;
451  struct oblnk *next;
453 } objectlink;
454 
458 typedef struct oblinkpt {
459  struct oblnk *link;
460  long value;
461  struct oblinkpt *next;
462 } oblinkpt;
463 
472 typedef struct archt {
474  struct archt *head;
475  struct archt *more;
476  object clone;
477  int8_t tail_x, tail_y;
480 } archetype;
481 
482 extern object *objects;
483 extern object *active_objects;
484 
485 extern int nrofallocobjects;
486 extern int nroffreeobjects;
487 
488 static inline void compare_flags(ob_flags *ret, const object *p, const object *q) {
489  for (int i = 0; i < 4; i++) {
490  (*ret)[i] = p->flags[i] ^ q->flags[i];
491  }
492 }
493 
494 static inline int query_flag(const object *op, int flag) {
495  return op->flags[flag / 32] & (1U << (flag % 32));
496 }
497 
498 static inline void clear_flag(object *op, int flag) {
499  op->flags[flag / 32] &= ~(1U << (flag % 32));
500 }
501 
502 static inline void set_flag(object *op, int flag) {
503  op->flags[flag / 32] |= (1U << (flag % 32));
504 }
505 
510 #define LOOK_OBJ(ob) (!ob->invisible && ob->type != PLAYER && ob->type != EVENT_CONNECTOR)
511 
519 #define UP_OBJ_INSERT 1
520 #define UP_OBJ_REMOVE 2
521 #define UP_OBJ_CHANGE 3
522 #define UP_OBJ_FACE 4
526 
527 
533 #define FREE_OBJ_FREE_INVENTORY 1
534 #define FREE_OBJ_NO_DESTROY_CALLBACK 2
535 #define FREE_OBJ_DROP_ABOVE_FLOOR 4
537 
538 
569 #define INS_NO_MERGE 0x0001
570 #define INS_ABOVE_FLOOR_ONLY 0x0002
571 #define INS_NO_WALK_ON 0x0004
572 #define INS_ON_TOP 0x0008
573 #define INS_BELOW_ORIGINATOR 0x0010
574 #define INS_MAP_LOAD 0x0020
576 
577 #define ARCH_SINGULARITY "singularity"
578 #define ARCH_DETECT_MAGIC "detect_magic"
579 #define ARCH_DEPLETION "depletion"
580 #define ARCH_SYMPTOM "symptom"
581 #define ARCH_PORTAL_FAILED "town_portal_failed"
582 #define ARCH_SPELL_BLOCKED "spell_blocked"
583 #define ARCH_SPELL_BUNGLE "spell_bungle"
585 #define MONSTER_EXCLUDE_FROM_READABLE_KEY "exclude_from_readable"
596 #define HEAD(op) ((op)->head != NULL ? (op)->head : (op))
597 
598 static inline bool IS_PLAYER(object *op) {
599  return op->type == PLAYER;
600 }
601 
605 static inline bool CAN_PROBE(const object *ob) {
606  return QUERY_FLAG(ob, FLAG_ALIVE) &&
607  (ob->type == PLAYER || QUERY_FLAG(ob, FLAG_MONSTER));
608 }
609 
614 static inline uint32_t NROF(const object * const ob) {
615  return ob->nrof ? ob->nrof : 1;
616 }
617 
623 object *find_force(object *op, const char *name);
624 
630 object *add_force(object *op, const char *name, int duration);
631 
632 #endif /* OBJECT_H */
obj::weapon_speed
float weapon_speed
Definition: object.h:337
CLASS
@ CLASS
Definition: object.h:141
obj::move_off
MoveType move_off
Definition: object.h:436
obj::flags
ob_flags flags
Definition: object.h:423
Face
Definition: face.h:14
TRIGGER
@ TRIGGER
Definition: object.h:132
MIMIC
@ MIMIC
Definition: object.h:252
PLAYER
@ PLAYER
Definition: object.h:110
obj::attack_movement
uint16_t attack_movement
Definition: object.h:399
object
struct obj object
CF_HANDLE
@ CF_HANDLE
Definition: object.h:211
MAP
@ MAP
Definition: object.h:128
nroffreeobjects
int nroffreeobjects
Definition: object.cpp:290
NUM_BODY_LOCATIONS
#define NUM_BODY_LOCATIONS
Definition: object.h:13
obj::face
const Face * face
Definition: object.h:339
obj::move_block
MoveType move_block
Definition: object.h:433
MONSTER
@ MONSTER
Definition: object.h:203
CAN_PROBE
static bool CAN_PROBE(const object *ob)
Definition: object.h:605
BOW
@ BOW
Definition: object.h:121
BRACERS
@ BRACERS
Definition: object.h:220
archt::head
struct archt * head
Definition: object.h:474
CLOSE_CON
@ CLOSE_CON
Definition: object.h:232
ARMOUR_IMPROVER
@ ARMOUR_IMPROVER
Definition: object.h:235
EVENT_CONNECTOR
@ EVENT_CONNECTOR
Definition: object.h:230
SYMPTOM
@ SYMPTOM
Definition: object.h:248
WAND
@ WAND
Definition: object.h:223
FLESH
@ FLESH
Definition: object.h:190
ENCOUNTER
@ ENCOUNTER
Definition: object.h:185
GLOVES
@ GLOVES
Definition: object.h:216
GIRDLE
@ GIRDLE
Definition: object.h:226
BUTTON
@ BUTTON
Definition: object.h:210
obj::count
tag_t count
Definition: object.h:305
obj::map
struct mapdef * map
Definition: object.h:303
QUERY_FLAG
#define QUERY_FLAG(xyz, p)
Definition: define.h:226
obj::race
sstring race
Definition: object.h:324
archt::tail_x
int8_t tail_x
Definition: object.h:477
TRIGGER_PEDESTAL
@ TRIGGER_PEDESTAL
Definition: object.h:137
obj::value
int32_t value
Definition: object.h:358
KEY
@ KEY
Definition: object.h:130
obj::gen_sp_armour
int8_t gen_sp_armour
Definition: object.h:371
obj::body_used
int8_t body_used[NUM_BODY_LOCATIONS]
Definition: object.h:381
obj::anim_speed
uint8_t anim_speed
Definition: object.h:425
obj::path_attuned
uint32_t path_attuned
Definition: object.h:351
obj::attacked_by_count
tag_t attacked_by_count
Definition: object.h:391
SHOP_FLOOR
@ SHOP_FLOOR
Definition: object.h:186
GEM
@ GEM
Definition: object.h:170
pl
Definition: player.h:105
TRAP
@ TRAP
Definition: object.h:244
obj::last_anim
uint8_t last_anim
Definition: object.h:426
obj::artifact
sstring artifact
Definition: object.h:320
ARMOUR
@ ARMOUR
Definition: object.h:123
WEAPON
@ WEAPON
Definition: object.h:122
TIMED_GATE
@ TIMED_GATE
Definition: object.h:131
obj::invisible
int16_t invisible
Definition: object.h:368
MoveType
unsigned char MoveType
Definition: define.h:417
_key_value::key
const char * key
Definition: object.h:41
guildjoin.ob
ob
Definition: guildjoin.py:42
obj::range_modifier
uint8_t range_modifier
Definition: object.h:414
AMULET
@ AMULET
Definition: object.h:142
CHECK_INV
@ CHECK_INV
Definition: object.h:172
TREASURE
@ TREASURE
Definition: object.h:113
archt::tail_y
int8_t tail_y
Definition: object.h:477
SKILL
@ SKILL
Definition: object.h:146
obj::dialog_information
struct struct_dialog_information * dialog_information
Definition: object.h:306
RUNE
@ RUNE
Definition: object.h:243
oblinkpt::link
struct oblnk * link
Definition: object.h:459
obj::path_denied
uint32_t path_denied
Definition: object.h:353
CREATOR
@ CREATOR
Definition: object.h:145
obj::smoothlevel
uint8_t smoothlevel
Definition: object.h:429
oblinkpt
Definition: object.h:458
TRANSPORT
@ TRANSPORT
Definition: object.h:111
POTION_RESIST_EFFECT
@ POTION_RESIST_EFFECT
Definition: object.h:228
FLOOR
@ FLOOR
Definition: object.h:189
SIGN
@ SIGN
Definition: object.h:214
body_locations_struct::save_name
const char * save_name
Definition: object.h:21
NROFATTACKS
#define NROFATTACKS
Definition: attack.h:17
obj::msg
sstring msg
Definition: object.h:328
obj::body_info
int8_t body_info[NUM_BODY_LOCATIONS]
Definition: object.h:380
TRIGGER_BUTTON
@ TRIGGER_BUTTON
Definition: object.h:135
nrofallocobjects
int nrofallocobjects
Definition: object.cpp:291
body_locations_struct
struct body_locations_struct body_locations_struct
POWER_CRYSTAL
@ POWER_CRYSTAL
Definition: object.h:245
obj::randomitems
struct treasureliststruct * randomitems
Definition: object.h:393
query_flag
static int query_flag(const object *op, int flag)
Definition: object.h:494
POISONING
@ POISONING
Definition: object.h:221
obj::expmul
double expmul
Definition: object.h:403
body_locations_struct::nonuse_name
const char * nonuse_name
Definition: object.h:23
obj::nrof
uint32_t nrof
Definition: object.h:340
obj::ox
int16_t ox
Definition: object.h:334
obj::duration_modifier
uint8_t duration_modifier
Definition: object.h:412
obj::duration
int16_t duration
Definition: object.h:411
archt
Definition: object.h:472
obj
Definition: object.h:280
FLAG_ALIVE
#define FLAG_ALIVE
Definition: define.h:230
obj::last_heal
int32_t last_heal
Definition: object.h:365
obj::chosen_skill
struct obj * chosen_skill
Definition: object.h:394
obj::slaying
sstring slaying
Definition: object.h:325
TRIGGER_MARKER
@ TRIGGER_MARKER
Definition: object.h:156
obj::spell
struct obj * spell
Definition: object.h:416
obj::attacked_by
struct obj * attacked_by
Definition: object.h:390
CLOAK
@ CLOAK
Definition: object.h:207
obj::spell_tags
tag_t * spell_tags
Definition: object.h:442
item.q
q
Definition: item.py:32
NROF
static uint32_t NROF(const object *const ob)
Definition: object.h:614
HELMET
@ HELMET
Definition: object.h:139
obj::current_weapon
struct obj * current_weapon
Definition: object.h:378
ob_flags
uint32_t ob_flags[4]
Definition: object.h:257
POISON
@ POISON
Definition: object.h:116
oblnk::next
struct oblnk * next
Definition: object.h:451
obj::active_next
struct obj * active_next
Definition: object.h:285
key_value
struct _key_value key_value
obj::name
sstring name
Definition: object.h:317
oblinkpt::next
struct oblinkpt * next
Definition: object.h:461
DEEP_SWAMP
@ DEEP_SWAMP
Definition: object.h:239
MARKER
@ MARKER
Definition: object.h:161
SAVEBED
@ SAVEBED
Definition: object.h:222
LIGHTABLE
@ LIGHTABLE
Definition: object.h:253
POTION
@ POTION
Definition: object.h:114
body_locations_struct::use_name
const char * use_name
Definition: object.h:22
BUILDER
@ BUILDER
Definition: object.h:249
obj::path_repelled
uint32_t path_repelled
Definition: object.h:352
obj::total_exp
int64_t total_exp
Definition: object.h:377
obj::name_pl
sstring name_pl
Definition: object.h:321
oblinkpt::value
long value
Definition: object.h:460
ROD
@ ROD
Definition: object.h:112
active_objects
object * active_objects
Definition: object.cpp:296
CONTAINER
@ CONTAINER
Definition: object.h:234
INORGANIC
@ INORGANIC
Definition: object.h:191
obj::speed_left
float speed_left
Definition: object.h:336
obj::hide
uint8_t hide
Definition: object.h:395
LOCKED_DOOR
@ LOCKED_DOOR
Definition: object.h:126
PLAYERMOVER
@ PLAYERMOVER
Definition: object.h:143
obj::prev
struct obj * prev
Definition: object.h:284
SPECIAL_KEY
@ SPECIAL_KEY
Definition: object.h:127
obj::spellarg
char * spellarg
Definition: object.h:417
HOLE
@ HOLE
Definition: object.h:212
obj::carrying
int32_t carrying
Definition: object.h:375
PEACEMAKER
@ PEACEMAKER
Definition: object.h:167
find_force
object * find_force(object *op, const char *name)
Definition: object.cpp:5392
CONVERTER
@ CONVERTER
Definition: object.h:219
obj::x
int16_t x
Definition: object.h:333
obj::container
struct obj * container
Definition: object.h:297
SKILLSCROLL
@ SKILLSCROLL
Definition: object.h:237
objectlink
struct oblnk objectlink
obj::event_bitmask
uint64_t event_bitmask
Definition: object.h:443
DRAGON_FOCUS
@ DRAGON_FOCUS
Definition: object.h:119
LAMP
@ LAMP
Definition: object.h:204
obj::other_arch
struct archt * other_arch
Definition: object.h:421
archt::more
struct archt * more
Definition: object.h:475
GOLEM
@ GOLEM
Definition: object.h:148
sstring
const typedef char * sstring
Definition: global.h:43
obj::speed
float speed
Definition: object.h:335
object_type
object_type
Definition: object.h:109
obj::weapontype
uint32_t weapontype
Definition: object.h:379
tag_t
uint32_t tag_t
Definition: object.h:12
obj::env
struct obj * env
Definition: object.h:299
obj::client_type
uint16_t client_type
Definition: object.h:348
MOOD_FLOOR
@ MOOD_FLOOR
Definition: object.h:173
obj::below
struct obj * below
Definition: object.h:293
ARROW
@ ARROW
Definition: object.h:120
struct_dialog_information
Definition: dialog.h:39
obj::move_slow_penalty
float move_slow_penalty
Definition: object.h:438
obj::enemy
struct obj * enemy
Definition: object.h:389
mapdef
Definition: map.h:317
BOOK
@ BOOK
Definition: object.h:117
compare_flags
static void compare_flags(ob_flags *ret, const object *p, const object *q)
Definition: object.h:488
objects
object * objects
Definition: object.cpp:294
oblnk::id
tag_t id
Definition: object.h:452
RING
@ RING
Definition: object.h:188
obj::map_layer
uint8_t map_layer
Definition: object.h:430
obj::animation
const Animations * animation
Definition: object.h:424
BLINDNESS
@ BLINDNESS
Definition: object.h:150
liv
Definition: living.h:35
obj::material
uint16_t material
Definition: object.h:355
FLAG_MONSTER
#define FLAG_MONSTER
Definition: define.h:245
CLOCK
@ CLOCK
Definition: object.h:118
obj::spellitem
struct obj * spellitem
Definition: object.h:402
obj::item_power
int8_t item_power
Definition: object.h:370
obj::lore
sstring lore
Definition: object.h:330
SHOP_MAT
@ SHOP_MAT
Definition: object.h:187
obj::next
struct obj * next
Definition: object.h:283
IS_PLAYER
static bool IS_PLAYER(object *op)
Definition: object.h:598
EXIT
@ EXIT
Definition: object.h:184
obj::y
int16_t y
Definition: object.h:333
obj::glow_radius
int8_t glow_radius
Definition: object.h:372
MAGIC_EAR
@ MAGIC_EAR
Definition: object.h:134
obj::title
sstring title
Definition: object.h:323
obj::arch
struct archt * arch
Definition: object.h:420
obj::oy
int16_t oy
Definition: object.h:334
animations_struct
Definition: face.h:25
obj::type
uint8_t type
Definition: object.h:346
obj::temp_animation
const Animations * temp_animation
Definition: object.h:427
dialog.h
obj::last_grace
int16_t last_grace
Definition: object.h:367
obj::move_slow
MoveType move_slow
Definition: object.h:437
obj::stats
living stats
Definition: object.h:376
BATTLEGROUND
@ BATTLEGROUND
Definition: object.h:166
obj::direction
int8_t direction
Definition: object.h:342
body_locations
body_locations_struct body_locations[NUM_BODY_LOCATIONS]
Definition: item.cpp:54
OBJECT_TYPE_MAX
@ OBJECT_TYPE_MAX
Definition: object.h:254
archt::clone
object clone
Definition: object.h:476
obj::state
uint8_t state
Definition: object.h:357
obj::contr
struct pl * contr
Definition: object.h:282
obj::facing
int8_t facing
Definition: object.h:343
obj::weight
int32_t weight
Definition: object.h:373
GRIMREAPER
@ GRIMREAPER
Definition: object.h:133
EARTHWALL
@ EARTHWALL
Definition: object.h:147
DUPLICATOR
@ DUPLICATOR
Definition: object.h:205
DISEASE
@ DISEASE
Definition: object.h:247
FIREWALL
@ FIREWALL
Definition: object.h:171
TRIGGER_ALTAR
@ TRIGGER_ALTAR
Definition: object.h:136
PLAYER_CHANGER
@ PLAYER_CHANGER
Definition: object.h:165
archt::reference_count
int reference_count
Definition: object.h:479
LIGHTER
@ LIGHTER
Definition: object.h:193
give.op
op
Definition: give.py:33
obj::temp_anim_speed
uint8_t temp_anim_speed
Definition: object.h:428
MATERIAL
@ MATERIAL
Definition: object.h:251
obj::key_values
key_value * key_values
Definition: object.h:440
add_force
object * add_force(object *op, const char *name, int duration)
Definition: object.cpp:5397
SPINNER
@ SPINNER
Definition: object.h:208
SPELL_EFFECT
@ SPELL_EFFECT
Definition: object.h:218
obj::weapon_speed_left
float weapon_speed_left
Definition: object.h:338
_key_value
Definition: object.h:40
SKILL_TOOL
@ SKILL_TOOL
Definition: object.h:192
obj::last_sp
int32_t last_sp
Definition: object.h:366
obj::casting_time
int16_t casting_time
Definition: object.h:410
set_flag
static void set_flag(object *op, int flag)
Definition: object.h:502
SHOP_INVENTORY
@ SHOP_INVENTORY
Definition: object.h:241
PEDESTAL
@ PEDESTAL
Definition: object.h:124
oblnk::ob
object * ob
Definition: object.h:450
obj::ownercount
tag_t ownercount
Definition: object.h:388
obj::head
struct obj * head
Definition: object.h:302
obj::subtype
uint8_t subtype
Definition: object.h:347
obj::more
struct obj * more
Definition: object.h:301
obj::last_eat
int32_t last_eat
Definition: object.h:364
obj::move_type
MoveType move_type
Definition: object.h:432
obj::weight_limit
int32_t weight_limit
Definition: object.h:374
obj::materialname
sstring materialname
Definition: object.h:354
DEAD_OBJECT
@ DEAD_OBJECT
Definition: object.h:159
DIRECTOR
@ DIRECTOR
Definition: object.h:225
CORPSE
@ CORPSE
Definition: object.h:246
obj::pick_up
uint8_t pick_up
Definition: object.h:369
obj::skill
sstring skill
Definition: object.h:327
move_name
const char *const move_name[]
Definition: object.cpp:4806
obj::move_status
int32_t move_status
Definition: object.h:398
FOOD
@ FOOD
Definition: object.h:115
obj::active_prev
struct obj * active_prev
Definition: object.h:289
ALTAR
@ ALTAR
Definition: object.h:125
DOOR
@ DOOR
Definition: object.h:129
_key_value::next
struct _key_value * next
Definition: object.h:43
DRINK
@ DRINK
Definition: object.h:160
archt::name
sstring name
Definition: object.h:473
WALL
@ WALL
Definition: object.h:194
_key_value::value
const char * value
Definition: object.h:42
WEAPON_IMPROVER
@ WEAPON_IMPROVER
Definition: object.h:236
SCROLL
@ SCROLL
Definition: object.h:224
body_locations_struct
Definition: object.h:20
obj::above
struct obj * above
Definition: object.h:294
obj::owner
struct obj * owner
Definition: object.h:385
obj::will_apply
uint8_t will_apply
Definition: object.h:400
obj::anim_suffix
sstring anim_suffix
Definition: object.h:322
obj::move_on
MoveType move_on
Definition: object.h:435
clear_flag
static void clear_flag(object *op, int flag)
Definition: object.h:498
obj::attacktype
uint32_t attacktype
Definition: object.h:350
oblnk
Definition: object.h:449
BOOTS
@ BOOTS
Definition: object.h:215
obj::run_away
uint8_t run_away
Definition: object.h:392
IDENTIFY_ALTAR
@ IDENTIFY_ALTAR
Definition: object.h:240
SPELL
@ SPELL
Definition: object.h:217
SHIELD
@ SHIELD
Definition: object.h:138
TELEPORTER
@ TELEPORTER
Definition: object.h:144
obj::sound_chance
uint8_t sound_chance
Definition: object.h:401
obj::move_allow
MoveType move_allow
Definition: object.h:434
obj::magic
int8_t magic
Definition: object.h:356
obj::resist
int16_t resist[NROFATTACKS]
Definition: object.h:349
THROWN_OBJ
@ THROWN_OBJ
Definition: object.h:149
SPELLBOOK
@ SPELLBOOK
Definition: object.h:206
FORCE
@ FORCE
Definition: object.h:227
HOLY_ALTAR
@ HOLY_ALTAR
Definition: object.h:164
TRAPDOOR
@ TRAPDOOR
Definition: object.h:213
oblinkpt
struct oblinkpt oblinkpt
DETECTOR
@ DETECTOR
Definition: object.h:152
obj::level
int16_t level
Definition: object.h:359
GOD
@ GOD
Definition: object.h:151
MISC_OBJECT
@ MISC_OBJECT
Definition: object.h:196
MONEY
@ MONEY
Definition: object.h:140
obj::range
int8_t range
Definition: object.h:413
treasureliststruct
Definition: treasure.h:85
GATE
@ GATE
Definition: object.h:209
obj::inv
struct obj * inv
Definition: object.h:296
give.name
name
Definition: give.py:27
archetype
struct archt archetype
obj::dam_modifier
uint8_t dam_modifier
Definition: object.h:415