This retreat skill allows a character to flee from battle in a
direction of his choosing and without loss of exp. The main
disadvantage this skill has over FLEE is that it has a WAIT_STATE, so
you can't go ape with it like you can flee.
One of the things I would like some help on is getting from the
direction argument to the interger direction... the way I do it
here(with a switch) is pure slop... is there a more efficent way? Also,
if anyone has some helpful suggestions for cleaning this code up, please
teach me.
-Shaw-
<Sometimes my toilet has floating errors too...>
ACMD(do_retreat)
{
int prob, percent, dir = 0;
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;}
switch (*arg) { /* This is sloppy... */
case 'n': /* Should have checks for: */
dir = 0; /* neswud and NESWUD and */
break; /* north, east.... and */
case 'e': /* NORTH, EAST.... and */
dir = 1; /* North, East.... ect. */
break; /* I'm sure there is an easier way. */
case 's':
dir = 2;
break;
case 'w':
dir = 3;
break;
case 'u':
dir = 4;
break;
case 'd':
dir = 5;
break;
default:
send_to_char("Retreat where?!?", ch);
return;
break;}
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