Multiple Attacks in fight.c

From: Paul Siegel (pmsie@CONNCOLL.EDU)
Date: 03/19/98


Hello again.  Anyone sick of me yet?  Here's an interesting poser for anyone that cares.  I've been editing my circlemud code to switch from its obvious AD&D rules base into a system based on Warhammer Quest (anyone ever play it?).  Well, in WHQ many characters/monsters have multiple attacks per round, so I added an attribute called attacks, and in fight.c I switched the line in the perform_violence procedure from:
        hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
to:
        for (int i = 0; i < GET_ATTACKS(ch); i++) {
                hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
        }
Well, this seemed all hunky-dorey until I noticed an odd occurance.  I was testing by loading two mobs, then forcing one to attack the other.  Should it occur that a mob with multiple attacks brings another mob below 0 hitpoints but not kill him (ie, POS_DEAD < mob's pos < POS_STANDING) the server crashes and I got the following line in my syslog:

  SYSERR: the Orc Warrior (#108): Attempting to call non-existing mob func

Note that the Orc Warrior (#108) was the mob that had only one attack and was the one that was dying when the system crashed.  I also edited the mob file so both mobs had only one attack and could not reproduce the error.

Does anyone know this syserr better than I who could shed some light on the subject?  I appreciate it.

Paul


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST