It just would not be the weekend if I did not have a question for the group ;) I am trying to add a disarm skill for warriors in my MUD. I have gotten it mostly done. You can practice it, and if you try to disarm a weaponless opponent is tell you such, but it just simply will not work as it should. Here is the code that I added to act.offensive, and fight.c: ACMD(do_disarm) { struct char_data *victim; byte percent, prob; if (GET_CLASS(ch) != CLASS_WARRIOR) { send_to_char("You'd better leave all that to the fighters.\n\r", ch); return; } if victim = ch->specials.fighting; } else { send_to_char("Disarm who?\n\r", ch); return; } } if (victim == ch) { send_to_char("Aren't we funny today...\n\r", ch); return; } percent = number(1, 101); /* 101% is a complete failure */ prob = GET_SKILL(ch, SKILL_DISARM); if (percent > prob) { disarm(ch, victim); } else act ("You failed to disarm $s.", FALSE, ch, 0, 0, TO_CHAR); WAIT_STATE(ch, PULSE_VIOLENCE * 2); } And in fight.c: void disarm( struct char_data *ch, struct char_data *victim ) { struct obj_data *obj; obj = (victim->equipment[WIELD]); if ( (victim->equipment[WIELD]) == NULL ) act( "$s weapon seems to be $s hands.", FALSE, ch, 0, 0, TO_CHAR); return; act( "$n tries to disarm you, but $p won't come off your hand!", FALSE, ch, 0, 0, TO_VICTIM); act( "You try to knock the weapon from $S hand, but it is useless!", FALSE, ch, 0, 0, TO_CHAR); return; } act( "$n disarms you and sends your weapon flying!", TRUE, ch, 0, 0, TO_VICTIM); act( "You have managed to disarm $N!", TRUE, ch, 0, 0, TO_CHAR ); act( "$n disarms $N!", TRUE, ch, 0, 0, TO_ROOM ); obj_from_char( obj ); obj_to_room( obj, victim->in_room ); return; } Suggestions? Thanks. --Ziz, NetShamen
This archive was generated by hypermail 2b30 : 12/07/00 PST