… | |
… | |
267 | && op1->name == op2->name |
267 | && op1->name == op2->name |
268 | && can_merge_slow (op1, op2); |
268 | && can_merge_slow (op1, op2); |
269 | } |
269 | } |
270 | |
270 | |
271 | MTH void set_owner (object *owner); |
271 | MTH void set_owner (object *owner); |
|
|
272 | MTH void set_speed (float speed); |
272 | |
273 | |
273 | MTH void instantiate () |
274 | MTH void instantiate () |
274 | { |
275 | { |
275 | if (!uuid.seq) // HACK |
276 | if (!uuid.seq) // HACK |
276 | uuid = gen_uuid (); |
277 | uuid = gen_uuid (); |
… | |
… | |
287 | MTH void drain_stat (); |
288 | MTH void drain_stat (); |
288 | MTH void drain_specific_stat (int deplete_stats); |
289 | MTH void drain_specific_stat (int deplete_stats); |
289 | MTH void change_luck (int value); |
290 | MTH void change_luck (int value); |
290 | |
291 | |
291 | // info must hold 256 * 3 bytes currently |
292 | // info must hold 256 * 3 bytes currently |
292 | MTH const char *debug_desc (char *info) const; |
293 | const char *debug_desc (char *info) const; |
293 | MTH const char *debug_desc () const; |
294 | MTH const char *debug_desc () const; |
|
|
295 | const char *flag_desc (char *desc, int len) const; |
294 | |
296 | |
295 | MTH bool is_weapon () const { return type == ARROW || type == BOW || type == WEAPON; } |
297 | MTH bool is_weapon () const { return type == ARROW || type == BOW || type == WEAPON; } |
296 | MTH bool is_armor () const { return type == ARMOUR || type == SHIELD || type == HELMET |
298 | MTH bool is_armor () const { return type == ARMOUR || type == SHIELD || type == HELMET |
297 | || type == CLOAK || type == BOOTS || type == GLOVES |
299 | || type == CLOAK || type == BOOTS || type == GLOVES |
298 | || type == BRACERS || type == GIRDLE; } |
300 | || type == BRACERS || type == GIRDLE; } |
… | |
… | |
302 | && !flag [FLAG_IS_A_TEMPLATE]; } |
304 | && !flag [FLAG_IS_A_TEMPLATE]; } |
303 | MTH bool is_arrow () const { return type == ARROW |
305 | MTH bool is_arrow () const { return type == ARROW |
304 | || (type == SPELL_EFFECT |
306 | || (type == SPELL_EFFECT |
305 | && (subtype == SP_BULLET || subtype == SP_MAGIC_MISSILE)); } |
307 | && (subtype == SP_BULLET || subtype == SP_MAGIC_MISSILE)); } |
306 | |
308 | |
|
|
309 | MTH bool has_active_speed () const { return FABS(speed) >= MIN_ACTIVE_SPEED; } |
|
|
310 | |
|
|
311 | // temporary: wether the objetc can be saved in a map file |
|
|
312 | // contr => is a player |
|
|
313 | // head => only save head of a multitile object |
|
|
314 | // owner => can not reference owner yet |
|
|
315 | MTH bool can_map_save () const { return !contr && !head && !owner; } |
|
|
316 | |
307 | /* This return true if object has still randomitems which |
317 | /* This return true if object has still randomitems which |
308 | * could be expanded. |
318 | * could be expanded. |
309 | */ |
319 | */ |
310 | MTH bool has_random_items () const { return randomitems && !flag [FLAG_IS_A_TEMPLATE]; } |
320 | MTH bool has_random_items () const { return randomitems && !flag [FLAG_IS_A_TEMPLATE]; } |
311 | |
321 | |
… | |
… | |
316 | if (op->type == PLAYER) |
326 | if (op->type == PLAYER) |
317 | return op; |
327 | return op; |
318 | |
328 | |
319 | return 0; |
329 | return 0; |
320 | } |
330 | } |
|
|
331 | |
|
|
332 | // "temporary" helper function |
|
|
333 | MTH object *head_ () |
|
|
334 | { |
|
|
335 | return head ? head : this; |
|
|
336 | } |
|
|
337 | |
|
|
338 | // insert object at same map position as 'where' |
|
|
339 | // handles both inventory and map "positions" |
|
|
340 | MTH object *insert_at (object *where, object *originator = 0, int flags = 0); |
|
|
341 | |
|
|
342 | MTH void activate (bool recursive = true); |
|
|
343 | MTH void deactivate (bool recursive = true); |
|
|
344 | |
|
|
345 | void enter_exit (object *exit);//PERL |
|
|
346 | MTH void enter_map (maptile *newmap, int x, int y); |
321 | |
347 | |
322 | // returns the mapspace this object is in |
348 | // returns the mapspace this object is in |
323 | mapspace &ms () const; |
349 | mapspace &ms () const; |
324 | |
350 | |
325 | // fully recursive iterator |
351 | // fully recursive iterator |