generic body area #15623

Parent Owner Flags Source rpg_march_2006/bodyarea.txt

Aliases: generic body area, body part, body area, area, part, appendage

4 verbs · 10 properties · 7 children

Verbs

VerbSpecFlagsDefinerLines
coverage shock_mod stun_resistance attack_mod parry_mod nat_protthis none this#1562317
titlethis none thisrx#1562310
make_fertilethis none this#1562312
movetothis none this#1562330

Properties

PropertyDefinerFlagsOwnerValue
coverage#15623rc0
shock_mod#15623rc0
stun_resistance#15623rc0
attack_mod#15623rc0
parry_mod#15623rc0
nat_prot#15623rc0
key#15623not readable (E_PERM)
aliases#15623{"generic body area", "body part", "body area", "area", "part", "appendage"}
description#15623"A part of YOUR body. Guard it well, lest it be sliced and diced by some mad hacker."
object_size#15623{4239, 1141286561}

Ancestry

Ancestors (nearest first): none

Children: #39284 head, #47817 left leg, #51172 abdomen, #52374 right leg, #60746 left arm, #61605 chest, #61688 right arm

Source

coverage shock_mod stun_resistance attack_mod parry_mod nat_prot

Spec this none thisDefiner #15623

Referenced by

none

Source

1":*(character[, attacker[, weapon]])";
2"Descriptions for each stat follow.  Bracketed numbers are suggested ranges.";
3".coverage";
4"-> % of body the part covers, for random area determination.  [1..100]";
5".shock_mod";
6"-> Modifer when checking shock from wounds to this area.  [-30..0]";
7".stun_resistance";
8"-> How resistant the area is against being stunned. [0..100]";
9".attack_mod";
10"-> Attacker's mod when aiming for the area.  [-30..30]";
11".parry_mod";
12"-> Defender's mod when parrying an attack aimed for the area.  [-30..30]";
13".nat_prot";
14"-> Natural armor protection added to :armour of defendant. [0-3]";
15return this.(verb);
16"Quinn 22-OCT-93 0328: Added.";
17"Profane 20-JAN-96 0930: Added nat_prot bit.";

title

Spec this none thisFlags rxDefiner #15623

Referenced by

none

Source

1":title(whose-body) -> The name of this body area, allowing for customisation by characters.";
2"Note that, for the moment, due to speed considerations and -wanting- to allow Non-GM PCs to customise their parts, this does not check permissions on the custom verb.";
3"If this becomes a problem, a permissions check will be included.  Knowing a few PCs as I do, it probably will.";
4{?who = #-1} = args;
5if (valid(who) && (typeof(custom = who:get_body_area_name(this)) == STR))
6  return custom;
7else
8  return pass(who);
9endif
10"Quinn 22-OCT-93 0328: Added.";

make_fertile

Spec this none thisDefiner #15623

Referenced by

none

Source

1"Usage: make_fertile()  => Makes this temporarily fertile if permitted.";
2"       make_fertile(1) => Resets this to unfertile.";
3$local.rpg:secure();
4if (args)
5  this.f = 0;
6elseif (this.f)
7else
8  this.f = 1;
9  fork (0)
10    this.f = 0;
11  endfork
12endif

moveto

Spec this none thisDefiner #15623

Referenced by

none

Source

1if (`caller.dest ! ANY' in {E_PROPNF, E_INVIND})
2elseif (caller != this)
3  $local.rpg:log_error((((("Attempt to move object via exit " + $string_utils:nn(caller)) + " owned by ") + tostr(`$string_utils:nn(caller.owner) ! ANY')) + "  :  ") + toliteral(callers()));
4  return E_PERM;
5endif
6cp = (caller_perms() in (rpg = $local.rpg).probation) ? $no_one | caller_perms();
7{dest} = args;
8if (valid(dest) || (cp in rpg.gms))
9elseif (caller != this)
10  for t in (callers())
11    if (index(t[2], "eject") && t[3].wizard)
12      rpg.vacuum:back_in_play(this);
13    endif
14  endfor
15endif
16doll = rpg:get_doll(place = this.location);
17if (((valid(doll) && valid(dest)) && (dest.location == place)) && (!(dest.owner in rpg.gms)))
18  return 0;
19endif
20if (cp in rpg.gms)
21  pass(dest);
22elseif ((((caller == place) || ((caller == this) && (caller_perms() == place))) && valid(dest)) && ((dest in {place.location, place}) || (dest.location == place)))
23  pass(dest);
24elseif (cp.wizard)
25  (callers()[1][2] == "eject") || rpg:log_error((((("Wizard-permed move via " + $string_utils:nn(caller)) + " owned by ") + tostr(`$string_utils:nn(caller.owner) ! ANY')) + "  :  ") + toliteral(callers()));
26  pass(dest);
27else
28  return 0;
29endif
30return 0;