-- [ 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 | +-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST