A dump of #50181 (Generic Natural Weapon)

@create #82 named generic natural weapon:generic natural weapon,natweap,generic,natural,weapon
"#50181.("dodgable") => E_PERM (Permission denied)
"#50181.("parryable") => E_PERM (Permission denied)
"#50181.("slowness") => E_PERM (Permission denied)
"#50181.("parry") => E_PERM (Permission denied)
"#50181.("attack") => E_PERM (Permission denied)
"#50181.("pen") => E_PERM (Permission denied)
"#50181.("dam") => E_PERM (Permission denied)
"#50181.("skill") => E_PERM (Permission denied)
;;#50181.("hands") = 0
;;#50181.("pierce") = 0
"#50181.("max_str_bonus") => E_PERM (Permission denied)
;;#50181.("disarmable") = 0
;;#50181.("natural") = 1
"#50181.("can_degrade") => E_PERM (Permission denied)
"#50181.("track_usage") => E_PERM (Permission denied)
;;#50181.("worth") = -1
;;#50181.("keep_at_death") = 1
;;#50181.("condition") = E_NONE
;;#50181.("odrop_failed_msg") = "%<tries> to drop %t but fails!"
;;#50181.("odrop_succeeded_msg") = "%<drops> %t."
;;#50181.("otake_succeeded_msg") = "%<picks> up %t."
"#50181.("key") => E_PERM (Permission denied)
;;#50181.("aliases") = {"generic natural weapon", "natweap", "generic", "natural", "weapon"}
;;#50181.("description") = "A generic implement of destruction."
;;#50181.("object_size") = {6766, 1141286561}

@verb #50181:"dam" this none this
@program #50181:dam
":dam(by,targ) => Damage adjusted for wielder's size.";
if (valid(doll = $local.rpg:get_doll(by = args[1])))
  size = (doll.size > 0) ? doll.size | 1;
  dam = (this.dam > 0) ? this.dam | 1;
  "Still fooling with equations here.  Whatcha like?";
  return (size > 10) ? dam + random((size / 10) * dam) | (dam / (10 / size));
else
  "if the doll isn't valid, who cares?";
  return 0;
endif
.

@verb #50181:"used" this none this
@program #50181:used
"Remove this later if we make natural weapons designed for players to wield, but right now they shouldn't even have them.";
{by, targ} = args;
if (is_player(by) && (!(this in `$local.rpg:get_doll(by).natural_weapons ! E_INVIND => {}')))
  by:tell("You suddenly become acutely aware that ", this.name, " was not meant to be wielded by your kind.  The appendage digs painfully into your flesh.");
  by:room_announce(by:title(), " screams, \"OH MY GOD get this ", this.name, " off of me!!!\"");
  return E_PERM;
else
  return pass(by, targ);
endif
"Quinn 10-AUG-93 0227-ET: Added.";
"Profane 8-DEC-96 1119PST -- put this verb back in action and put in exception for those damn razor claws";
.

@verb #50181:"attack pen pierce" this none this
@program #50181:attack
"Modified verb for natural weapon to disregard .condition of weapon, since natural weapons shouldn't degrade anyway. Saves ticks too, woo-woo!";
return this.(verb);
"Profane 2-17-95 23:21EST - Added.";
.

@verb #50181:"notify_parry notify_clang" this none this
@program #50181:notify_parry
"Since natural weapons shouldn't degrade, put in this tick-saving return over the one on #82.";
return;
"Profane 2-18-95 00:50EST - Added.";
.

@verb #50181:"announce_parry" this none this rx
@program #50181:announce_parry
":announce_parry(attacker, defender, location-string, weapon)";
"Announce that `defender' has used this weapon to parry an attack by `attacker' with `weapon' aimed at `location-string'.";
who = args[2];
who:tell(("You parry with your " + this.name) + ".");
who.location:announce_all_but({who}, ((((who.name + " parries with ") + who.pp) + " ") + this.name) + ".");
"Profane 2-18-95 00:55EST Added (removed degrade check from #82)";
.

@verb #50181:"is_wooden" this none this rx
@program #50181:is_wooden
return 0;
.

@verb #50181:"announce_swing" this none this rx
@program #50181:announce_swing
"Swiped from naginata (79903):announce_swing by THX1138 (105941) Sat Mar  8 14:25:48 1997 PST";
"modified, bent, and spindled by Bartlebooth 3/8/97";
":announce_swing(attacker, target)";
"Announce that `attacker' has swung at `target' with this weapon.";
{who, target} = args;
swing = this.swing_list ? this.swing_list[x = random($)] | this.swing;
oswing = this.oswing_list ? this.oswing_list[x] | this.oswing;
who:tell("You ", swing, " your ", weapon = this.name, " at ", tname = target.name, ".");
target:tell(string = tostr(who.name, " ", oswing, " ", who.pp, " ", weapon, " at "), "you.");
$local.rpg:rpg_announce_all_but(who.location, {who, target}, string, tname, ".");
"Originaly used .swing and .oswing for lists, but that broke code on monsters";
"that expect these to be strings, not lists. So much for trying to be clever.";
.

@verb #50181:"glued" this none this
@program #50181:glued
{who} = args;
return !(valid(who) && (who.owner in $local.rpg.gms));
.

@verb #50181:"may_wield" this none this
@program #50181:may_wield
{who} = args;
return who.owner in $local.rpg.gms;
.

"***finished***