Oddity after adding inter-mob aggression . . .

From: Mathew Earle Reuther (graymere@zipcon.net)
Date: 09/11/02

/* Aggressive Mobs */
  found = FALSE;
  for (vict = world[IN_ROOM(ch)].people; vict && !found; vict =
      vict->next_in_room) {
    /* Mobs will now attack each other if they are aggressive - Corwynn */
    if (!CAN_SEE(ch, vict) || (!IS_NPC(vict) &&
    if (vict == ch)
    /* Do not kill self! */
    if (vict == ch->master || ch == vict->master)
    /* Do not kill master/follower! */

As we can see, the check for IS_NPC(vict) has been removed, so NPCs will
attack each other.  Added in are checks for not killing self, and not
killing anyone that the NPC is master of, or following.

However, for some strange reason, I get a crash in void stop_follower.  I
just log any character in (to wake the mud up) and within about 10
seconds, it crashes with no input from me.  (I can just sit in a room.)

My version of GDB is the cygwin GUI version so I'm not entirely sure what
I can look at to get a better idea of what's happening.  (Typically when I
find out where it crashes, I have had a decent idea of why . . . not this
time sadly.)

The lines it manages to crash at (in stop_followers) are below:

if (ch->master->followers->follower == ch) { /* Head of follower-list? */


for (k = ch->master->followers; k->next->follower != ch; k = k->next);

I'm sorry for the poor quality of this report, but I'm unsure of what
other information is of use that I can acquire from this version of GDB.


   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |

This archive was generated by hypermail 2b30 : 06/25/03 PDT