… | |
… | |
175 | arch_ptr ACC (RW, arch); /* Pointer to archetype */ |
175 | arch_ptr ACC (RW, arch); /* Pointer to archetype */ |
176 | arch_ptr ACC (RW, other_arch);/* Pointer used for various things - mostly used for what */ |
176 | arch_ptr ACC (RW, other_arch);/* Pointer used for various things - mostly used for what */ |
177 | |
177 | |
178 | float ACC (RW, speed); /* The overall speed of this object */ |
178 | float ACC (RW, speed); /* The overall speed of this object */ |
179 | float ACC (RW, speed_left); /* How much speed is left to spend this round */ |
179 | float ACC (RW, speed_left); /* How much speed is left to spend this round */ |
180 | uint32 ACC (RW, nrof); /* How many of the objects */ |
180 | sint32 ACC (RW, nrof); /* How many of the objects */ |
181 | |
181 | |
182 | /* This next big block is basically used for monsters and equipment */ |
182 | /* This next big block is basically used for monsters and equipment */ |
183 | uint16 ACC (RW, client_type); /* Public type information. see doc/Developers/objects */ |
183 | uint16 ACC (RW, client_type); /* Public type information. see doc/Developers/objects */ |
184 | |
184 | |
185 | sint16 ACC (RW, resist[NROFATTACKS]); /* Resistance adjustments for attacks */ |
185 | sint16 ACC (RW, resist[NROFATTACKS]); /* Resistance adjustments for attacks */ |
… | |
… | |
270 | }; |
270 | }; |
271 | |
271 | |
272 | struct object : zero_initialised, object_copy |
272 | struct object : zero_initialised, object_copy |
273 | { |
273 | { |
274 | // These variables are not changed by ->copy_to |
274 | // These variables are not changed by ->copy_to |
275 | maptile_ptr ACC (RW, map); /* Pointer to the map in which this object is present */ |
275 | maptile *ACC (RW, map); /* Pointer to the map in which this object is present */ |
276 | |
276 | |
277 | UUID ACC (RW, uuid); // Unique Identifier, survives saves etc. |
277 | UUID ACC (RW, uuid); // Unique Identifier, survives saves etc. |
278 | int ACC (RO, count); |
278 | int ACC (RO, count); |
279 | object_vector_index ACC (RO, index); // index into objects |
279 | object_vector_index ACC (RO, index); // index into objects |
280 | object_vector_index ACC (RO, active); // index into actives |
280 | object_vector_index ACC (RO, active); // index into actives |
… | |
… | |
467 | /* This return true if object has still randomitems which |
467 | /* This return true if object has still randomitems which |
468 | * could be expanded. |
468 | * could be expanded. |
469 | */ |
469 | */ |
470 | MTH bool has_random_items () const { return randomitems && !flag [FLAG_IS_A_TEMPLATE]; } |
470 | MTH bool has_random_items () const { return randomitems && !flag [FLAG_IS_A_TEMPLATE]; } |
471 | |
471 | |
|
|
472 | MTH bool has_dialogue () const { return *&msg == '@'; } |
|
|
473 | |
472 | // returns the outermost owner, never returns 0 |
474 | // returns the outermost owner, never returns 0 |
473 | MTH object *outer_owner () |
475 | MTH object *outer_owner () |
474 | { |
476 | { |
|
|
477 | object *op; |
|
|
478 | |
475 | for (object *op = this; ; op = op->owner) |
479 | for (op = this; op->owner; op = op->owner) |
476 | if (!op->owner) |
480 | ; |
|
|
481 | |
477 | return op; |
482 | return op; |
478 | } |
483 | } |
479 | |
484 | |
480 | // returns the outermost environment, never returns 0 |
485 | // returns the outermost environment, never returns 0 |
481 | MTH object *outer_env () |
486 | MTH object *outer_env () |
482 | { |
487 | { |
|
|
488 | object *op; |
|
|
489 | |
483 | for (object *op = this; ; op = op->env) |
490 | for (op = this; op->env; op = op->env) |
484 | if (!op->env) |
491 | ; |
|
|
492 | |
485 | return op; |
493 | return op; |
486 | } |
494 | } |
487 | |
495 | |
488 | // returns the player that has this object in his inventory, or 0 |
496 | // returns the player that has this object in his inventory, or 0 |
489 | // we assume the player is always the outer env |
497 | // we assume the player is always the outer env |
490 | MTH object *in_player () |
498 | MTH object *in_player () |