… | |
… | |
248 | if (get_owner (ob) == owner) |
248 | if (get_owner (ob) == owner) |
249 | { |
249 | { |
250 | if (!QUERY_FLAG (ob, FLAG_REMOVED)) |
250 | if (!QUERY_FLAG (ob, FLAG_REMOVED)) |
251 | ob->remove (); |
251 | ob->remove (); |
252 | remove_friendly_object (ob); |
252 | remove_friendly_object (ob); |
253 | ob->destroy (0); |
253 | ob->destroy (); |
254 | } |
254 | } |
255 | } |
255 | } |
256 | } |
256 | } |
257 | |
257 | |
258 | /* |
258 | /* |
… | |
… | |
325 | |
325 | |
326 | return 0; |
326 | return 0; |
327 | |
327 | |
328 | fail: |
328 | fail: |
329 | remove_friendly_object (ob); |
329 | remove_friendly_object (ob); |
330 | ob->destroy (0); |
330 | ob->destroy (); |
331 | |
331 | |
332 | return 1; |
332 | return 1; |
333 | } |
333 | } |
334 | |
334 | |
335 | void |
335 | void |
… | |
… | |
343 | /* Check to see if player pulled out */ |
343 | /* Check to see if player pulled out */ |
344 | if ((owner = get_owner (ob)) == NULL) |
344 | if ((owner = get_owner (ob)) == NULL) |
345 | { |
345 | { |
346 | ob->remove (); /* Will be freed when returning */ |
346 | ob->remove (); /* Will be freed when returning */ |
347 | remove_friendly_object (ob); |
347 | remove_friendly_object (ob); |
348 | ob->destroy (0); |
348 | ob->destroy (); |
349 | LOG (llevMonster, "Pet: no owner, leaving.\n"); |
349 | LOG (llevMonster, "Pet: no owner, leaving.\n"); |
350 | return; |
350 | return; |
351 | } |
351 | } |
352 | |
352 | |
353 | /* move monster into the owners map if not in the same map */ |
353 | /* move monster into the owners map if not in the same map */ |
… | |
… | |
545 | |
545 | |
546 | if (get_owner (op) == NULL) |
546 | if (get_owner (op) == NULL) |
547 | { |
547 | { |
548 | LOG (llevDebug, "Golem without owner destructed.\n"); |
548 | LOG (llevDebug, "Golem without owner destructed.\n"); |
549 | op->remove (); |
549 | op->remove (); |
550 | op->destroy (0); |
550 | op->destroy (); |
551 | return; |
551 | return; |
552 | } |
552 | } |
553 | |
553 | |
554 | /* It would be nice to have a cleaner way of what message to print |
554 | /* It would be nice to have a cleaner way of what message to print |
555 | * when the golem expires than these hard coded entries. |
555 | * when the golem expires than these hard coded entries. |
… | |
… | |
562 | new_draw_info (NDI_UNIQUE, 0, op->owner, op->msg); |
562 | new_draw_info (NDI_UNIQUE, 0, op->owner, op->msg); |
563 | |
563 | |
564 | op->owner->contr->ranges[range_golem] = 0; |
564 | op->owner->contr->ranges[range_golem] = 0; |
565 | remove_friendly_object (op); |
565 | remove_friendly_object (op); |
566 | op->remove (); |
566 | op->remove (); |
567 | op->destroy (0); |
567 | op->destroy (); |
568 | return; |
568 | return; |
569 | } |
569 | } |
570 | |
570 | |
571 | /* Do golem attacks/movement for single & multisq golems. |
571 | /* Do golem attacks/movement for single & multisq golems. |
572 | * Assuming here that op is the 'head' object. Pass only op to |
572 | * Assuming here that op is the 'head' object. Pass only op to |
… | |
… | |
660 | */ |
660 | */ |
661 | if (op->type == PLAYER && op->contr->ranges[range_golem]) |
661 | if (op->type == PLAYER && op->contr->ranges[range_golem]) |
662 | { |
662 | { |
663 | new_draw_info (NDI_UNIQUE, 0, op, "You dismiss your existing golem."); |
663 | new_draw_info (NDI_UNIQUE, 0, op, "You dismiss your existing golem."); |
664 | op->contr->ranges[range_golem]->remove (); |
664 | op->contr->ranges[range_golem]->remove (); |
665 | op->contr->ranges[range_golem]->destroy (0); |
665 | op->contr->ranges[range_golem]->destroy (); |
666 | op->contr->ranges[range_golem] = 0; |
666 | op->contr->ranges[range_golem] = 0; |
667 | } |
667 | } |
668 | |
668 | |
669 | if (spob->other_arch) |
669 | if (spob->other_arch) |
670 | at = spob->other_arch; |
670 | at = spob->other_arch; |