[NEWBIE][CODE] Push skill, problems

From: Beau Perrizo (Perrizo@aol.com)
Date: 02/11/99


Hello,
    I recently pieced together a push skill using mostly stuff from
act.movement.c.  The skill is supposed to allow a player to shove someone out
of a room in a direction they choose, i.e. push fido n would force the mob to
move north.  I have two questions regarding it: Firstly, the skill only works
in my testing when I run the mud in mini-mode, running in any other mode
crashes it.  Secondly, I am having trouble getting it to check to make sure
the direction exists before pushing the character, it crashes if I try pushing
in a non-existant direction.  I'd greatly appreciate any help on either
question.  Here's my code (I put it in act.offensive.c):

ACMD(do_push)
{
 int exit;
 struct char_data *was_fighting;
 int percent, prob;
 struct char_data *vict;
 char dir[MAX_INPUT_LENGTH];

 two_arguments(argument, arg, dir);

if (!GET_SKILL(ch, SKILL_PUSH)) {
    send_to_char("You better leave that sort of thing to the bouncers.\r\n",
ch);
    return;
   }
if ((exit = search_block(dir, dirs, FALSE)) == -1) {
    send_to_char("That's not a direction.\r\n", ch);
    return;
}
if (!CAN_GO(ch, exit)) {
        send_to_char("There's nowhere to push someone in that direction!\r\n", ch);
        return;
}
if (!(vict = get_char_room_vis(ch, arg))) {
    send_to_char("Push who?\r\n", ch);
      return;
}
if (vict == ch) {
    send_to_char("Why not just walk there instead?\r\n", ch);
    return;
  }

 percent = number(1, 101);
 prob = GET_SKILL(ch, SKILL_PUSH);

if (percent > prob) {
        act("$n unsuccessfully tries to shove $N from the room.", TRUE, ch, 0, 0,
TO_ROOM);
        send_to_char("Ooops...\r\n", ch);
} else {
        act("You give $N a strong shove, pushing $M from the room!", FALSE, ch, 0,
vict, TO_CHAR);
        act("$n gives $N a powerful push, throwing $M bodily from the room!", TRUE,
ch, 0, 0, TO_ROOM);
        act("$N gives you a powerful shove, hurling you from the room!", FALSE, vict,
0, ch, TO_CHAR);
        do_simple_move(vict, exit, TRUE);
}
        }

I am currently running Circlemud version 3.0 bpl11 on a Win95 Dos shell.

Thanks,
        Turgantarganth


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



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