… | |
… | |
558 | */ |
558 | */ |
559 | if (--op->stats.hp < 0) |
559 | if (--op->stats.hp < 0) |
560 | { |
560 | { |
561 | if (op->msg) |
561 | if (op->msg) |
562 | new_draw_info (NDI_UNIQUE, 0, op->owner, op->msg); |
562 | new_draw_info (NDI_UNIQUE, 0, op->owner, op->msg); |
|
|
563 | |
563 | op->owner->contr->ranges[range_golem] = NULL; |
564 | op->owner->contr->ranges[range_golem] = 0; |
564 | op->owner->contr->golem_count = 0; |
|
|
565 | remove_friendly_object (op); |
565 | remove_friendly_object (op); |
566 | remove_ob (op); |
566 | remove_ob (op); |
567 | free_object (op); |
567 | free_object (op); |
568 | return; |
568 | return; |
569 | } |
569 | } |
… | |
… | |
656 | char buf[MAX_BUF]; |
656 | char buf[MAX_BUF]; |
657 | |
657 | |
658 | /* Because there can be different golem spells, player may want to |
658 | /* Because there can be different golem spells, player may want to |
659 | * 'lose' their old golem. |
659 | * 'lose' their old golem. |
660 | */ |
660 | */ |
661 | if (op->type == PLAYER && op->contr->ranges[range_golem] != NULL && op->contr->golem_count == op->contr->ranges[range_golem]->count) |
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 | remove_ob (op->contr->ranges[range_golem]); |
664 | remove_ob (op->contr->ranges[range_golem]); |
665 | free_object (op->contr->ranges[range_golem]); |
665 | free_object (op->contr->ranges[range_golem]); |
666 | op->contr->ranges[range_golem] = NULL; |
666 | op->contr->ranges[range_golem] = 0; |
667 | op->contr->golem_count = (uint32) - 1; |
|
|
668 | } |
667 | } |
669 | |
668 | |
670 | if (spob->other_arch) |
669 | if (spob->other_arch) |
671 | at = spob->other_arch; |
670 | at = spob->other_arch; |
672 | else if (spob->race) |
671 | else if (spob->race) |
… | |
… | |
713 | { |
712 | { |
714 | tmp->type = GOLEM; |
713 | tmp->type = GOLEM; |
715 | set_owner (tmp, op); |
714 | set_owner (tmp, op); |
716 | set_spell_skill (op, caster, spob, tmp); |
715 | set_spell_skill (op, caster, spob, tmp); |
717 | op->contr->ranges[range_golem] = tmp; |
716 | op->contr->ranges[range_golem] = tmp; |
718 | op->contr->golem_count = tmp->count; |
|
|
719 | /* give the player control of the golem */ |
717 | /* give the player control of the golem */ |
720 | op->contr->shoottype = range_golem; |
718 | op->contr->shoottype = range_golem; |
721 | } |
719 | } |
722 | else |
720 | else |
723 | { |
721 | { |