Hi all- I changed my mud so that when a player dies they're given three ticks before they "corpse". I added 'raise dead' and 'resurrect' spells (using a spell template) to the mud and changed the heal code so that it won't work for a dead player. The following is the code from spell_parser.c & magic.c: In spell_parser.c: /* If a player is dead, make sure they can't be healed */ if (!IS_NPC(tch) && GET_POS(tch) == POS_DEAD && IS_SET(SINFO.routines, MAG_POINTS)) { send_to_char("They're beyond that kind of help now.\r\n", ch); return; } In magic.c: void mag_revive(int level, struct char_data * ch, struct char_data * victim, int spellnum, int type) { if (victim == NULL) return; switch (spellnum) { case SPELL_RAISE_DEAD: GET_POS(victim) = POS_STANDING; GET_HIT(victim) = 1; send_to_char("You have been raised from the dead!\r\n", victim); break; case SPELL_RESURRECT: GET_POS(victim) = POS_STANDING; GET_HIT(victim) = GET_MAX_HIT(victim); send_to_char("You have been resurrected and fully healed!\r\n", victim); break; } update_pos(victim); } Now all this works fine. The wierd thing is that after I implemented this code and a player tries to animate a corpse the mud crashes. The output from the core dump shows that the problem is in the code in spell_parser.c: #0 0x80b41bb in do_cast (ch=0x82e3dd0, argument=0xbffff904 " ", cmd=34, subcmd=0) at spell_parser.c:635 635 if (!IS_NPC(tch) && GET_POS(tch) == POS_DEAD && IS_SET(SINFO.routines, MAG_POINTS)) { It doesn't make any sense to me as to why this is crashing the mud since MAG_SUMMON doesn't seem to be used anywhere. Any thoughts or ideas are very much appreciated. Thanks, Mark -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/05/01 PST