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