Re: MOB_MEMORY with Circle 3.0

From: Daniel Koepke (dkoepke@california.com)
Date: 10/11/95


On Wed, 11 Oct 1995, E.I. wrote:

> 
> 	About the memory of the mobile you are correct unless you have 
> changed your fight system allowing a random hit to every attacker fo every
> attacker and funny-bunny things like this. Hmm one solution can be to
> look for the group of the memorized person and summon randomly one guy 
> from there, that is insane, or simply summon the guy that attacked him
> 1st hence as you call'im "the tank".
> 	To summon everyone in the group: a cheap and buggy version is as I said
> check the descriptors for the guy in memory, 
> above: do a ch->master check and a follower check and then with a for
> loop do a char_to_room stuff to get them in the room of yer mob.
> 
> 	Urm I do not see yer point but, a very silly way is to trap the
> flee command! do a if check for fight and for flee command and 
> summon the guy. 
> 
> 	Hope that was a helpfullllzzz :)
> 
> 	Emre
> 
> 

Instead, don't even let them flee, in do_flee:

if (FIGHTING(ch) && IS_NPC(FIGHTING(ch))) {
  struct char_data * mob;
  mob = FIGHTING(ch);

  if (IS_SET(MOB_FLAGS, MOB_STOP_FLEE)) {
    sprintf( buf, "The %s thwarts your desperate attempts to flee.\r\n",
	     GET_NAME(FIGHTING(ch)) );
    send_to_char( buf, ch );
  }
}

Or, you can do like I did and make a 'trip' skill, and then which not 
only trips people during battle (it should be an auto-skill), but 
randomly if they flee, this provides it for players, then, for mobiles, 
instead of checking for the skill, check for MOB_STOP_FLEE and then make 
a quick level/hp check to prevent them from fleing.  For instance:

if (GET_HIT(ch) > GET_MAXHIT(ch) / 2) {
  /*			*
   * Person is tripped  *
   * this also helps to *
   * stop thieves from  *
   * backstabbing and   *
   * fleing.		*/
}
else {
  /* The person flees   */
}



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