Here is the code for a 'throw' skill, which allows a player to throw darts
or daggers (actually, any weapon) at an opponent. Probably dozens of these
have been written, but here's my version.
In spells.h :
#define SKILL_THROW XXX /* Use next unused skill # */
In interpreter.c :
After:
ACMD(do_tell);
Put:
ACMD(do_throw);
After:
{ "teleport" , POS_DEAD , do_teleport , LVL_GOD, 0 },
Put:
{ "throw" , POS_FIGHTING, do_throw , 1, 0 },
In act.offensive.c :
ACMD(do_throw)
{
struct char_data *vict;
int percent, prob, dam;
if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_THROW)) {
send_to_char("You have no idea how.\r\n", ch);
return;
}
if (ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL)) {
send_to_char("This room just has such a peaceful, easy feeling...\r\n",
ch);
return;
}
skip_spaces(&argument);
if (!*argument) {
send_to_char("Usage: throw <weapon> <victim>\r\n", ch);
return;
}
two_arguments(argument, arg1, arg2);
if (!(obj = get_obj_in_list_vis(ch, arg1, ch->carrying))) {
send_to_char("You can't seem to find it.\r\n", ch);
return;
}
if ((GET_OBJ_TYPE(obj) != ITEM_WEAPON)) {
send_to_char("You can only throw weapons!\r\n", ch);
return;
}
if (!(vict = get_char_vis(ch, arg2, FIND_CHAR_ROOM))) {
if (FIGHTING(ch) && IN_ROOM(ch) == IN_ROOM(FIGHTING(ch))) {
vict = FIGHTING(ch);
} else {
send_to_char("Throw it at whom?\r\n", ch);
return;
}
}
if (vict == ch) {
send_to_char("Aren't we funny today...\r\n", ch);
return;
}
/* 101% is a complete failure */
percent = ((10 - (compute_armor_class(vict) / 10)) * 2) + number(1, 101);
prob = GET_SKILL(ch, SKILL_THROW);
dam = dice(GET_OBJ_VAL(obj, 1), GET_OBJ_VAL(obj, 2));
dam *= number(2, 5);
if (percent > prob) {
dam = 0;
obj_from_char(obj);
obj_to_char(obj, vict);
act("You throw $p at $N!", FALSE, ch, obj, vict, TO_CHAR);
act("$n throws $p at $N!", FALSE, ch, obj, vict, TO_NOTVICT);
act("$n throws $p at you!", FALSE, ch, obj, vict, TO_VICT);
damage(ch, vict, dam, SKILL_THROW);
WAIT_STATE(ch, PULSE_VIOLENCE * 2);
}
In lib/text/help/commands.hlp :
Near the end of the file, put:
THROW
Usage: throw <weapon> [<victim>]
This skill allows a player to throw a weapon at a victim. The
weapon thrown will strike the victim with full force, dealing
a significant amount of damage. The amount of damage depends on
the weapon used.
#
That should do it.
Melissa Jadwinski / meersan@earthlink.net
Meer / Shameless meersan.net 4200
+------------------------------------------------------------+
| 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 : 04/10/01 PDT