I tried to respond a few days ago on this problem. It is crashing at the point when the mob/pc gets to stunned or mortally wounded or some such and olny then. On Sun, 8 Sep 1996, Rob Hofstetter wrote: > -- [ From: Rob Hofstetter * EMC.Ver #3.2 ] -- > > I've implemented the same kind of multiattack that annick was trying, and I too > crash after a few rounds. I however, didn't change anything with the messaging. > The crashes are fairly random, and even happened to the imp. Since I was getting > a protection violation I tried increasing stack and heapsizes to 16meg and 64meg > respectively. It didn't have any effect on the situation. Other than these > changes to perform_violence, I didn't change a whole lot. Added the skills of > course. Anybody have any ideas what's goin on? > > Rob > rch@mci2000.com > > /* control the fights going on. Called every 2 seconds from comm.c. */ > void perform_violence(void) > { > struct char_data *ch; > extern struct index_data *mob_index; > int cond, skill_level, spellnum; > for (ch = combat_list; ch; ch = next_combat_list) > { > next_combat_list = ch->next_fighting; > > if (FIGHTING(ch) == NULL || ch->in_room != FIGHTING(ch)->in_room) > { > stop_fighting(ch); > continue; > } > > if (IS_NPC(ch)) > { > if (GET_MOB_WAIT(ch) > 0) > { > GET_MOB_WAIT(ch) -= PULSE_VIOLENCE; > } > else if (GET_POS(ch) < POS_FIGHTING) > { > GET_POS(ch) = POS_FIGHTING; > act("$n scrambles to $s feet!", TRUE, ch, 0, 0, TO_ROOM); > } > GET_MOB_WAIT(ch) = 0; > /* -rch 11/10/95 */ > cond = (float)GET_HIT(ch)/(float)GET_MAX_HIT(ch) * 100.00; > if (cond > 99) > act("$n is in excellent condition.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 89) > act("$n has a few scratches.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 79) > act("$n has a welt on the forehead.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 69) > act("$n is bleeding a little.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 59) > act("$n is bleeding all over.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 49) > act("$n is hurting.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 39) > act("$n looks pretty awfull.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 29) > act("$n is badly wounded.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 19) > act("$n is seriously wounded.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond > 9) > act("$n is vomitting blood.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond >= 0) > act("$n pales visibly as death nears.",FALSE, ch, 0, 0, TO_ROOM); > else if (cond < 0) > act("something is wrong with the damage display > routine.",FALSE,ch,0,0, TO_ROOM); > } > > if (GET_POS(ch) < POS_FIGHTING) > { > send_to_char("You can't fight while sitting!!\r\n", ch); > continue; > } > > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > spellnum = 142; > if (GET_LEVEL(ch) >= SINFO.min_level[(int) GET_CLASS(ch)]) > { > skill_level = GET_SKILL(ch, spellnum); /* 9/7/96 rch */ > if ((number (0,101)) <= skill_level) > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > spellnum = 143; > if (GET_LEVEL(ch) >= SINFO.min_level[(int) GET_CLASS(ch)]) > { > skill_level = GET_SKILL(ch, spellnum); > if ((number (0,101)) <= skill_level) > hit(ch, FIGHTING(ch), TYPE_UNDEFINED); > } > } > > if (MOB_FLAGGED(ch, MOB_SPEC) && mob_index[GET_MOB_RNUM(ch)].func != NULL) > (mob_index[GET_MOB_RNUM(ch)].func) (ch, ch, 0, ""); > } > } > > > +-----------------------------------------------------------+ > | Ensure that you have read the CircleMUD Mailing List FAQ: | > | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | > +-----------------------------------------------------------+ > +-----------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://cspo.queensu.ca/~fletcher/Circle/list_faq.html | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST