generic corpse #104

Parent #148Owner #361Flags read, fertileSource hellcore/hellcore.db

Aliases: generic corpse, corpse

30 verbs · 106 properties · 1 children

Verbs

VerbSpecFlagsDefinerLines
diethis none thisrxd#1041
is_deadthis none thisrxd#1048
heartbeatthis none thisrxd#10410
rotthis none thisrxd#10430
take_damagethis none thisrxd#1041
_knockoutthis none thisrxd#1041
_eatthis none thisrxd#10414
hear_event_arrivethis none thisrxd#1045
ingestthis none thisrxd#1041
receive_fuckthis none thisrxd#1044
get_as_it_once_wasthis none thisrxd#10425
newgetthis none thisrxd#1041
get_fromthis none thisrxd#1044
cant_get_fromthis none thisrxd#10417
cryptkeeperthis none thisrxd#1044
_brainscanthis none thisrxd#1042
setup_forthis none thisrxd#10435
update_posturethis none thisrxd#1048
enter_roomthis none thisrxd#1042
tree_tagthis none thisrxd#10413
tell_appraisethis none thisrxd#1041
setupthis none thisrxd#1042
wearing_onthis none thisrxd#10417
turn_to_corpsethis none thisrxd#1041
deadthis none thisrxd#1041
dnamethis none thisrxd#1045
butch*erthis none nonerxd#10421
cutany out of/from inside/from thisrxd#10424
manglethis none thisrxd#1041
sever_meatthis none thisrxd#10413

Properties

PropertyDefinerFlagsOwnerValue
rot_msg#104rc#361"%DN dries up and blows away in the breeze."
eat_msg#104rc#361"%DN eats %it."
original_player#104rc#361#-1
bodyparts#104rc#361{#27317, #10261, #10261, #21740, #21740}
restorable_blood#104rc#361{}
timestamp#104rc#3610
killed_by#104rc#361{}
sync_props#148rc#362<clear>
player#148rc#362<clear>
rename#148rc#362<clear>
restore_props#148rc#362{"wearing", "implants", "blood", "health", "wielding"}
meats#148rc#362<clear>
get_from_msg#148rc#362<clear>
clothing#148rc#362<clear>
drag_msg#148rc#362<clear>
drag_fall_msg#148rc#362<clear>
nodrag_msg#148rc#362<clear>
hands#107rc#361<clear>
wielding#107rc#361<clear>
health#107rc#3610
unarmed_weapon#107rc#361<clear>
size#107rc#361<clear>
posture#107rc#361"lying"
gender#107rc#361<clear>
respawn#107rc#361<clear>
corpse#107rc#361#83691
has_proper_name#107rc#3610
die_msg#107rc#361<clear>
body_parts#107rc#361<clear>
wearing#107rc#361<clear>
armor#107rc#361<clear>
last_swing_message#107rc#361<clear>
health_max#107rc#361<clear>
fighting#107rc#361{}
last_dodge_time#107rc#361<clear>
following#107rc#361<clear>
icon#107rc#361<clear>
say_msg#107rc#361<clear>
say_to_msg#107rc#361<clear>
afterlife#107rc#361<clear>
get_msg#107rc#361<clear>
drop_msg#107rc#361<clear>
blood#107rc#361<clear>
squeals#107rc#361<clear>
prc#107rc#361<clear>
ppc#107rc#361<clear>
poc#107rc#361<clear>
psc#107rc#361<clear>
pr#107rc#361<clear>
pp#107rc#361<clear>
po#107rc#361<clear>
ps#107rc#361<clear>
pq#107rc#361<clear>
pqc#107rc#361<clear>
brief#107rc#361<clear>
knockout#107rc#361<clear>
knockout_msg#107rc#361<clear>
body#107rc#361<clear>
wake_msg#107rc#361<clear>
owake_msg#107rc#361<clear>
oknockout_msg#107rc#361<clear>
friends#107rc#361<clear>
home#107rc#361<clear>
respawn_msg#107rc#361<clear>
move_action#107rc#362<clear>
heart#107rc#3620
last_heartbeat#107rc#362<clear>
dead#107rc#3621
_tohit_next#107rc#362<clear>
last_words_msg#107rc#362<clear>
attacked#107rc#362<clear>
opens_doors#107rc#362<clear>
movable_by_explosion#107rc#362<clear>
obscured#107rc#362<clear>
obscured_desc_msg#107rc#362<clear>
cooldowns#107rc#362<clear>
combat_rounds#107rc#362<clear>
encumbrance#107rc#362{0, 1292469331}
respawn_handler#107rc#362<clear>
distant_form_msg#107rc#362<clear>
block_msg#107rc#362<clear>
attack_on_block#107rc#362<clear>
last_stunned#107rc#362<clear>
nude_descs#107rc#361<clear>
skills#107rc#361<clear>
explode_msg#107rc#361<clear>
death_listeners#107rc#361<clear>
queue#92r#361<clear>
preemptible#92r#361<clear>
executing#92r#361<clear>
process_queue#92r#361<clear>
help_msg#92rc#361<clear>
last_action#92r#361<clear>
article#92rc#361<clear>
last_last_action#92rc#361<clear>
action_count#92rc#361<clear>
aliases#1rc#361{"generic corpse", "corpse"}
description#1rc#361<clear>
object_size#1r#29{23091, 1298433826}
hidden_verbs#1rc#361<clear>
phelp_msg#1rc#361{"Yup, it's a corpse. Provided you're not squeamish, corpses have a number of uses: If you're hungry, for example, you can always cut the meat out of a corpse and eat it."}
weight#1rc#361<clear>
owner_verbs#1rc#361<clear>
plural_name#1rc#361<clear>
client_image#1rc#361<clear>
listening#1rc#361<clear>

Ancestry

Ancestors (nearest first): #148 generic body#107 generic creature#92 generic actor#1 root

Children: #245 generic human corpse

Call graph

calls n104_2 #104:heartbeat n104_3 #104:rot n104_2->n104_3 n20_34 #20:pronoun_sub n104_3->n20_34 n103_2 #103:junk n104_3->n103_2 n57_9 #57:valid n104_3->n57_9 n104_6 #104:_eat n104_6->n104_3 n104_6->n20_34 n45_0 #45:has_property n104_6->n45_0 n104_7 #104:hear_event_arrive n104_7->n104_3 n104_7->n57_9 n104_10 #104:get_as_it_once_was n44_0 #44:match n104_10->n44_0 n107_43 #107:tell n104_10->n107_43 n104_25 #104:dname n104_10->n104_25 n1_66 #1:announce_action_text n104_10->n1_66 n20_15 #20:capitalize n104_10->n20_15 n107_9 #107:dname n104_10->n107_9 n104_25->n107_9 n104_11 #104:newget n107_97 #107:get n104_11->n107_97 n104_12 #104:get_from n47_25 #47:randomly_permute n104_12->n47_25 n104_13 #104:cant_get_from n104_13->n104_25 n104_14 #104:cryptkeeper n1_42 #1:occupants n104_14->n1_42 n104_15 #104:_brainscan n107_107 #107:_whisper n104_15->n107_107 n104_16 #104:setup_for n104_16->n20_34 n1_2 #1:set_name n104_16->n1_2 n1_4 #1:set_aliases n104_16->n1_4 n104_17 #104:update_posture n104_16->n104_17 n1_8 #1:description n104_16->n1_8 n104_18 #104:enter_room n104_18->n104_17 n107_28 #107:enter_room n104_18->n107_28 n104_19 #104:tree_tag n20_5 #20:from_list n104_19->n20_5 n104_20 #104:tell_appraise n104_20->n107_43 n1_39 #1:dnamec n104_20->n1_39 n104_21 #104:setup n148_1 #148:setup n104_21->n148_1 n104_22 #104:wearing_on n107_12 #107:wearing_on n104_22->n107_12 n104_26 #104:butch*er n104_26->n107_43 n104_26->n104_25 n104_26->n1_39 n104_1 #104:is_dead n104_26->n104_1 n107_114 #107:cuts_with n104_26->n107_114 n107_15 #107:weapon n104_26->n107_15 n47_58 #47:sum n104_26->n47_58 n47_3 #47:map_verb n104_26->n47_3 n92_2 #92:queue_action n104_26->n92_2 n104_27 #104:cut n104_27->n57_9 n104_27->n44_0 n104_27->n107_43 n104_27->n104_25 n104_27->n1_39 n104_27->n104_1 n104_27->n107_114 n104_27->n107_15 n104_27->n47_3 n104_27->n92_2 n20_6 #20:english_list n104_27->n20_6

Showing 48 of 51 verbs; 3 not shown.

Source

die

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return;

is_dead

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

Source

1":is_dead() => 0: unconscious,";
2"              1: dead, but revivable from afterlife,";
3"              2: dead and he ain't comin' back.";
4if ((is_a(this.player, $creature) && this.player:is_in_afterlife()) && this.intact)
5return 1;
6else
7return 2;
8endif

heartbeat

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1if ((this.location != $tomb) && (random(1000) < 60))
2if ((!is_a(this.original_player, $player)) || ((time() - this.timestamp) > $rpg.player_corpse_rot_minimum))
3if ((!valid(this.location)) || (!this.location:occupants($player)))
4this:rot(1);
5elseif (random(100) < 20)
6this:rot(1);
7endif
8endif
9endif
10this.action_count = 0;

rot

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

Source

1silent = args ? args[1] | 0;
2if ((!this.f) && (this.location != $tomb))
3$nets.deathnet:announce_rot(this);
4if (valid(this.location))
5if (!silent)
6this.location:announce_all($su:ps(this.rot_msg, this, this));
7endif
8if (!is_a(this.original_player, $player))
9if (!this.location:occupants($player))
10for x in (this.contents)
11$rpg:junk(x);
12endfor
13endif
14endif
15for x in (this.contents)
16if ($recycler:valid(x))
17if (is_a(x, $decal))
18$rpg:junk(x);
19else
20this.location:broadcast_event(0, $actions.drop, this.original_player, {x, this.location});
21x:moveto(this.location);
22endif
23endif
24endfor
25endif
26if (is_a(this.player, $creature))
27this.player.body = #-1;
28endif
29move(this, $tomb);
30endif

take_damage

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return;

_knockout

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return;

_eat

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1who = args[1];
2if ($ou:has_property(who, "feed_msg"))
3m = who.feed_msg;
4else
5m = this.eat_msg;
6endif
7who:aat($su:ps(m));
8for a in (this.blood)
9who:ingest(a[1], a[3], 0);
10endfor
11for x in (this.contents)
12`x:moveto(who) ! ANY => 0';
13endfor
14this:rot(1);

hear_event_arrive

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1if ((args[3] == this.original_player) && (args[3].location == this.location))
2if ($recycler:valid(this.original_player) && this.original_player.has_proper_name)
3this:rot(1);
4endif
5endif

ingest

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return 0;

receive_fuck

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1who = args[1];
2if (is_a(who, $player))
3$quest:named("defiler"):award_to(who);
4endif

get_as_it_once_was

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1if (dobjstr == "all")
2olist = this.contents;
3else
4o = $match_utils:match(dobjstr, this.contents);
5if (o == $failed_match)
6player:tell("You can't find any '", dobjstr, "' in ", this:dname(), ".");
7return;
8elseif (o == $ambiguous_match)
9player:tell("I don't know which '", dobjstr, "' in ", this:dname(), " you mean.");
10return;
11endif
12olist = {o};
13endif
14if (olist)
15for x in (olist)
16if (is_a(x, $clothing) && (!is_a(this, $corpse)))
17player:tell("You can't take ", this.pp, " clothes off...", this.ps, "'s not dead.");
18else
19player:aat($su:capitalize(player:dname()), " takes ", x:iname(), " from ", this:dname(), ".");
20x:moveto(player);
21endif
22endfor
23else
24player:tell("There's nothing in ", this:dname(), ".");
25endif

newget

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1player:get();

get_from

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1"Copied from generic container (#931):get_from by Gilmore (#98) Mon Apr  4 22:59:27 2005 PDT";
2who = args[1];
3targets = (typeof(args[2]) == LIST) ? $lu:randomly_permute(args[2]) | {args[2]};
4who:queue_action($actions.get, {targets, this, {}}, 1, "get from " + this.name);

cant_get_from

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1getter = args[1];
2targets = args[2];
3if (!this.contents)
4return this:dname() + " doesn't have anything to get";
5endif
6for x in (targets)
7if (!(x in this.contents))
8targets = setremove(targets, x);
9endif
10endfor
11if (!targets)
12return "it's not on " + this:dname();
13endif
14if (`this.location.no_loot_corpse ! ANY')
15return this.location.no_loot_corpse;
16endif
17return 0;

cryptkeeper

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1if (c = this:occupants(#132814))
2return c[1];
3endif
4return #-1;

_brainscan

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1who = args[1];
2this:_whisper(who, "I'm dead.  Oh my god, I'm dead.");

setup_for

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1":setup_for(OBJ who, OBJ dtype) => setup this corpse for who, with damage type dtype";
2who = args[1];
3dtype = args[2];
4this.original_player = who;
5if (!this.rename)
6this:set_name(parent(this).name);
7this:set_aliases({@parent(this).aliases});
8else
9this.plural_name = "corpses of " + who.name;
10this:set_aliases({@this.aliases, "corpse of " + who.name, "corpse"});
11endif
12this:update_posture();
13if (dtype != $damage)
14d = this:description();
15d = (typeof(d) == LIST) ? d | {d};
16d = {@d, $su:ps(dtype.autopsy_msg, who, this, this)};
17this.description = d;
18endif
19this.restorable_blood = this.blood;
20if (meats = `who:corpse_meats(this.meats) ! E_VERBNF')
21this.meats = meats;
22endif
23if ($drugs.pregnancy:doses_for(this) >= 15)
24this.meats = {@this.meats, #16842};
25endif
26meatblood = {};
27for x in (this.blood)
28if (random(100) <= x[1].meat_transmit_chance)
29meatblood = {@meatblood, x};
30endif
31endfor
32this.blood = meatblood;
33w = who.weight;
34this.weight = w;
35this.timestamp = time();

update_posture

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

Source

1loc = (length(args) > 0) ? args[1] | this.location;
2if (is_a(loc, #1047) || is_a(loc, #1034))
3this.posture = "floating";
4elseif (is_a(loc, #761))
5this.posture = "gliding";
6else
7this.posture = "lying on the ground";
8endif

enter_room

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1this:update_posture(args[1]);
2return pass(@args);

tree_tag

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1r = "";
2if ((!("corpse" in this.aliases)) && (!("remains" in this.aliases)))
3r = tostr(r, " ", $ansi.red, $ansi.bold_on, "!", $ansi.reset);
4endif
5if (this.meats)
6names = {};
7if (length(names) <= 4)
8r = tostr(r, " [", $su:from_list(names, ", "), "]");
9else
10r = tostr(r, " [too many meats]");
11endif
12endif
13return r;

tell_appraise

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1player:tell(this:dnamec(), " is dead.  You don't think the corpse will be giving you too much trouble.");

setup

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1this.clothing = `args[1].clothing ! ANY => {}';
2return pass(@args);

wearing_on

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1":wearing_on(OBJ bodypart) => LIST what I'm wearing there.";
2part = args[1];
3s = {};
4for x in (this.clothing)
5if (is_a(x, $clothing))
6for y in (x.covers)
7if (is_a(part, y))
8s = setadd(s, x);
9break;
10endif
11endfor
12endif
13endfor
14if (s)
15return s;
16endif
17return pass(@args);

turn_to_corpse

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return;

dead

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1return 1;

dname

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

Source

1if (`this.name[1..6] == "corpse" ! ANY' || `this.name[1..4] == "dead" ! ANY')
2return pass(@args);
3else
4return "the body of " + this.name;
5endif

butch*er

Spec this none noneFlags rxdOwner #361Definer #104

Referenced by

none

Source

1"Butcher the body for yourself.";
2if (!this.butcherable)
3player:tell(this:dnamec(), " seems too tough to butcher anything from.");
4return;
5elseif (gamevalid(this.butchering))
6player:tell(this.butchering:dnamec(), " is already butchering ", this:dname(), "!");
7return;
8endif
9if (!this:is_dead())
10player:tell("Um...", this.ps, "'s still alive.  If you really want ", this.pp, " ", meatgeneric.name, ", have the decency to put ", this.po, " out of ", this.pp, " misery.");
11return;
12endif
13w = player:cuts_with();
14if (!is_a(w, $weapon))
15player:tell("You're not holding a blade.  Good luck butchering a body with your ", player:weapon().name, ".");
16return;
17endif
18if ($lu:sum($lu:map_verb(this.location:occupants($living), "is_doing", $actions.butcher, this)))
19return player:tell("Someone's already butchering ", this:dname(), ".");
20endif
21player:queue_action($actions.butcher, {this}, 1, "butcher " + this.name);

cut

Spec any out of/from inside/from thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1"Butcher a piece of the body for yourself.";
2if (!this.butcherable)
3player:tell(this:dnamec(), " seems too tough to cut anything from.");
4return;
5endif
6meatgeneric = $match_utils:match(dobjstr, this.meats);
7if (!$recycler:valid(meatgeneric))
8if (!this.meats)
9player:tell("You don't see anything worthwhile left in ", this:dname(), ".");
10else
11player:tell("You can cut ", $su:english_list($lu:map_verb(this.meats, "dname")), " from ", this:dname(), ".");
12endif
13else
14if (!this:is_dead())
15player:tell("Um...", this.ps, "'s still alive.  If you really want ", this.pp, " ", meatgeneric.name, ", have the decency to put ", this.po, " out of ", this.pp, " misery.");
16return;
17endif
18w = player:cuts_with();
19if (!is_a(w, $weapon))
20player:tell("You're not holding a blade.  Good luck butchering a body with your ", player:weapon().name, ".");
21return;
22endif
23player:queue_action($actions.butcher, {this, meatgeneric});
24endif

mangle

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

Source

1this.intact = 0;

sever_meat

Spec this none thisFlags rxdOwner #361Definer #104

Referenced by

none

Source

1what = args[1];
2for meat in (this.meats)
3if (is_a(meat, what))
4if (!this.f)
5this.meats = setremove(this.meats, meat);
6this:mangle();
7endif
8meat = meat.f ? $rpg:spawn(meat) | meat;
9is_a(who = this.original_player, $living) && `meat:carve_from(who) ! E_VERBNF';
10return meat;
11endif
12endfor
13return #-1;