Re: [CODE] Using die() in mob specials : SOLUTION!

From: Jared Buckley (jaredb@TI.COM)
Date: 08/28/97


Ron Cole wrote:
>
[snip]
>
> Take a look at where the spec is called, in mobile_activity() probably, see if
> the loop depends on the character staying in the linked list.
>
> Ron

You hit it on the head Ron.  It appears as if mobile_activity()
in mobact.c handles it rather poorly if you extract the mob for
which it called the special procedure.

Many thanks to both Ron and John Evans for their assistance.

Jared

-------------------------------------------------------------------

SPECIAL( shadow )
{

  /* code is complicated by fact that sometimes mob = ch and
     sometimes mob = me.  Parameters differ because when called
     from mobile_actions, ch references the mob, but when called
     in response to a player cmd, ch references the player.      */

  if ( (time_info.hours >= 6) && (time_info.hours <= 21 ) )
    {
    if ( IS_NPC(ch) )
      {
      /*
        true if called from mobile_activity in mobact.c.  It appears
        that mobile_activity handles things poorly when the mob it
        called the special proc for is extracted, so instead
        just incapacitate and leave for dead.
      */
      GET_HIT(ch) = -10;
      GET_POS(ch) = POS_MORTALLYW;
      return( TRUE );
      }
     else
      {
      act( "$n hisses in agony and withers away as the sun hits $e!",
           FALSE, me, 0, 0, TO_ROOM );
      die( me );
      return( FALSE );
      }
    }

  return( FALSE );

}


     +------------------------------------------------------------+
     | 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/08/00 PST