if (IS_AWAKE (ch) && ch->in_room == victim->in_room){
multi_hit (ch, victim, TYPE_UNDEFINED);
if ((victim = ch->fighting) == NULL)
continue;
/*
* Swords will very rarely get in an extra round.
*/
if (get_weapon_sn (ch) == gsn_sword && ch->wait <= 0)
for (vch = ch->in_room->people; vch != NULL; vch = vch->next_in_room) {
if (vch->fighting == ch || is_same_group (vch->fighting, ch)) {
if (number_percent () < chance) {
was_fighting = ch->fighting;
ch->fighting = vch;
multi_hit (ch, vch, TYPE_UNDEFINED);
check_improve (ch, gsn_sword, TRUE, 2);
ch->fighting = was_fighting;
WAIT_STATE (ch, PULSE_VIOLENCE);
break; //exit after finding a victim
}
}
}
for (vch = ch->in_room->people; vch != NULL; vch = vch->next_in_room)
for (vch = ch->in_room->people; vch != NULL; vch = vch_next)
vch_next = vch->next_in_room;
Program received signal SIGSEGV, Segmentation fault.
0x004376b0 in violence_update () at fight.c:113
113 if (vch->fighting == ch
(gdb) tb
Breakpoint 1 at 0x4376b0: file fight.c, line 113.
(gdb) bt
#0 0x004376b0 in violence_update () at fight.c:113
#1 0x00479f2b in update_handler () at update.c:1199
#2 0x0042c442 in game_loop_unix (control=5) at comm.c:844
#3 0x0042bed8 in main (argc=2, argv=0x10e19b0) at comm.c:448
(gdb) list
108 chance = chance * 3 / 5;
109
110 for (vch = ch->in_room->people; vch != N
ULL; vch = vch_next)
111 vch_next = vch->next_in_room;
112 {
113 if (vch->fighting == ch
114 || is_same_group (vch->f
ighting, ch))
115 {
116 if (number_percent () <
chance)
117 {
(gdb)
for (vch = ch->in_room->people; vch != NULL; vch = vch_next)
vch_next = vch->next_in_room;
for(vch = ch->in_room->people; vch != NULL; vch = vch_next){
vch_next = vch->next_in_room;
//…rest if loop here (those 2 ifs)
}
I'll take all the credit for that.