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

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

Ron Cole wrote:
> 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.



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;
      return( TRUE );
      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:  |
     | |

This archive was generated by hypermail 2b30 : 12/08/00 PST