Boxboy writes, "My disarm skill. I saw disarm somewhere and though 'I must have, I must have!' so, well it is here. This skill was made just for pain in the arse little people. I personally love this skill, its quite funny to run past someone about four times you lvl and to smash their weapon from their hands and steal it."
/***** Start Here *********/
open structs.h,
find this line,
#define ITEM_NOSELL (1 << 12)/* Shopkeepers won't touch it*/
and below it add,
#define ITEM_NODISARM (1 << 21)/* Cannot be disarmed from someone */
now open spells.h,
find the line,
#define SKILL_TRACK 140 /* Reserved Skill[] DO NOT CHANGE */
then add this below it,
#define SKILL_DISARM 141 /* Reserved Skill[] DO NOT CHANGE */
now go into act.offensive.c or act.other.c (it doesn't really matter) and paste this entire command.
ACMD(do_disarm)
{
struct obj_data *obj;
struct char_data *vict;
one_argument(argument, buf);
if (!*buf) {
send_to_char("Whom do you want to disarm?\r\n", ch);
return;
}
else if (!(vict = get_char_room_vis(ch, buf))) {
send_to_char(NOPERSON, ch);
return;
}
else if (!GET_SKILL(ch, SKILL_DISARM)) {
send_to_char("You have no idea how.\r\n", ch);
return;
}
else if (vict == ch) {
send_to_char("That would be funny to watch.\r\n", ch);
return;
}
else if (AFF_FLAGGED(ch, AFF_CHARM) && (ch->master == vict)) {
send_to_char("The thought of disarming your master makes you weep.\r\n", ch);
return;
}
if (ROOM_FLAGGED(ch->in_room, ROOM_PEACEFUL)) {
send_to_char("This room just has such a peaceful, easy feeling...\r\n", ch);
return;
}
else if (!(obj = GET_EQ(vict, WEAR_WIELD)))
act("$N is unarmed!", FALSE, ch, 0, vict, TO_CHAR);
else if (IS_SET(GET_OBJ_EXTRA(obj), ITEM_NODISARM) ||
MOB_FLAGGED(vict, MOB_NOBASH) ||
(number(1, 101) > (!IS_NPC(ch) ?
GET_SKILL(ch, SKILL_DISARM) : number(0, 100)))) {
act("You failed to disarm $N and make $M rather angry!", FALSE, ch, 0, vict, TO_CHAR);
damage(vict, ch, number(1, GET_LEVEL(vict)), TYPE_HIT);
}
else if (dice(2, GET_STR(ch)) + GET_LEVEL(ch) <= dice(2, GET_STR(vict)) + GET_LEVEL(vict)) {
act("Your hand just misses $N's weapon, failing to disarm $M/", FALSE, ch, 0, vict, TO_CHAR);
act("$N has tried and failed to disarm you!", FALSE, vict, 0, ch, TO_CHAR);
damage(vict, ch, number(1, GET_LEVEL(vict) / 2), TYPE_HIT);
} else {
obj_to_room(unequip_char(vict, WEAR_WIELD), vict->in_room);
act("You rip $N's weapon from $S hands and it falls the ground!", FALSE, ch, 0, vict, TO_CHAR);
act("$N smashes you weapon from your hand!", FALSE, vict, obj, ch, TO_CHAR);
act("$n disarms $N, $p drops to the ground.", FALSE, ch, obj, vict, TO_ROOM);
}
hit(vict , ch, TYPE_UNDEFINED);
WAIT_STATE(ch, PULSE_VIOLENCE * 3);
}
That should be all.
On a side note, if you don't know this, the definitions for the NODISARM and SKILL_DISARM should go at the
end of the list. The line I have put for it to go under is just the last line in stock circle.
Hope that didn't confuse ya. Also if people wish, I will rip out my vampire and vampire slayer code for
ceramic mouse, but I need to know that people want. If you would like me to post the Vampire code Email
me at boxboy22nd@trust-me.com rather than my normal address.
Boxboy, is gone.......
<< AutoGold [by BoxBoy] | Reply | Threaded | Second-Hand Shops [by Jake Turner] >>
|
|
|||||||||||||||||
|
|
| Bug in Disarm by Blaize (garath@fl.freei.net) on Friday, August 4th @ 10:33:06 PM http:// |
| else if (!GET_SKILL(ch, SKILL_DISARM)) needs to read else if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_DISARM)) otherwise, a switched imm using it or a forced or ordered mobile would crash the MUD (I think). Blaize Imperitor, Lord of Shadow (Shadow is still in creation, but should be open to the public in several months. |
| [ Reply to this comment ] |
|
|
| It doesn't cause crashes by BoxBoy () on Wednesday, January 10th @ 11:47:28 PM http:// |
| I was trying to get it so that the mobs COULD use this skill as it would allow mobiles to test players. I have however added the disarm as part of my mob_fighter flag, so i don't have mobs going through the command no more. |
| [ Reply to this comment ] |