skill_retreat

From: Shane Augustine (sca@BU.EDU)
Date: 09/22/98


Hi i downloaded the code snippet to a retreat skill however the mud
always seems
to crash when i specify a valid directino once i'm fighting.  I was
wondering if anyone could help me out.. Thanks.

ACMD(do_retreat)
{
 int prob, percent, dir = 0;
 int retreat_type;

 one_argument(argument, arg);

 if (!FIGHTING(ch))
   {
   send_to_char("You are not fighting!", ch);
   return;
   }
 if (!*arg)
   {
   send_to_char("Retreat where?!?", ch);
   return;
   }

 retreat_type = search_block(argument + 1, dirs, FALSE);

 if (retreat_type < 0 || !EXIT(ch, retreat_type) ||
   EXIT(ch, retreat_type)->to_room == NOWHERE)
   {
   send_to_char("Retreat where?\r\n", ch);
   return;
   }

 percent = GET_SKILL(ch, SKILL_RETREAT);
 prob = number(0, 101);

 if (prob <= percent){
    if (CAN_GO(ch, dir) && !IS_SET(ROOM_FLAGS(EXIT(ch,dir)->to_room),
ROOM_DEATH))
  {
       act("$n skillfully retreats from combat.", TRUE, ch, 0, 0,
TO_ROOM);
  send_to_char("You skillfully retreat from combat.\r\n", ch);
  WAIT_STATE(ch, PULSE_VIOLENCE);
  improve_skill(ch, SKILL_RETREAT, 2);
  do_simple_move(ch, dir, TRUE);
  if (FIGHTING(FIGHTING(ch)) == ch)
   stop_fighting(FIGHTING(ch));
  stop_fighting(ch);
  } else {
  act("$n tries to retreat from combat but has no where to go!", TRUE,
ch,
     0, 0, TO_ROOM);
  send_to_char("You cannot retreat in that direction!", ch);
       return;
  }
 } else {
    send_to_char("You fail your attempt to retreat!\r\n", ch);
    WAIT_STATE(ch, PULSE_VIOLENCE);
    return;
  }
}


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