generic door #119

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

Aliases: generic door, door

64 verbs · 82 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
look_selfthis none thisrxd#11938
_openthis none thisrxd#11952
try_openthis none thisrxd#11924
enterfuncthis none thisrxd#1193
acceptablethis none thisrxd#1196
exitfuncthis none thisrxd#1193
openthis none nonerxd#1195
_startthis none thisrxd#11914
try_closethis none thisrxd#11918
_closethis none thisrxd#11936
closethis none nonerxd#1191
try_methis none thisrxd#1199
on_resetthis none thisrxd#11918
controlled_bythis none thisrxd#11912
pick_oldnone none nonerxd#11926
unlockthis none nonerxd#11913
lockthis none nonerxd#11916
hear_event_saythis none thisrxd#11910
_announcethis none thisrxd#11911
may_pickthis none thisrxd#11915
add_pickerthis none thisrxd#1195
uninstall removeany out of/from inside/from thisrxd#11910
exit_specthis none thisrxd#11911
knockthis none nonerxd#1191
_knockany none nonerxd#1199
_tell_appraisethis none thisrxd#1190
bashthis none nonerxd#1191
_bashthis none thisrxd#11912
fire_pcmthis none thisrxd#11915
peep peekthis none nonerxd#11915
become_adoorthis none thisrxd#11940
_do_openthis none thisrxd#1191
_do_closethis none thisrxd#1191
_is_lockedany none nonerxd#1195
throws_tothis none thisrxd#1195
_lockthis none thisrxd#1194
_unlockthis none thisrxd#1194
_can_be_unlocked_bythis none thisrxd#1194
ok_to_pickthis none thisrxd#11943
allowsthis none thisrxd#11910
take_damagethis none thisrxd#11918
diethis none thisrxd#11911
squeal_msgthis none thisrxd#11923
is_brokenthis none thisrxd#1191
_repairthis none thisrxd#11916
_repair_checkthis none thisrxd#1193
movethis none thisrxd#11910
hear_lock_changethis none thisrxd#1190
allows_shovethis none thisrxd#1198
allows_backup_xthis none thisrxd#11920
listennone at/to thisrxd#1195
room_heatthis none thisrxd#11926
push shoveany at/to thisrxd#1195
dnamethis none thisrxd#1195
direction_namethis none thisrxd#11911
action_doing_msgthis none thisrxd#11911
attenuatethis none thisrxd#1197
look_place_msgthis none thisrxd#1193
tell_healththis none thisrxd#1194
slamthis none nonerxd#1191
person_is_behindthis none thisrxd#11919
not_ok_to_pickthis none thisrxd#11910
_slamthis none thisrxd#11916
check_holdersthis none thisrxd#11913

Properties

PropertyDefinerFlagsOwnerValue
open#119rc#3610
is_open_msg#119rc#361"%DT is open."
is_closed_msg#119rc#361"%DT is closed."
open_msg#119rc#361"%DN opens %dt."
open_self_msg#119rc#361"%DT swings open."
lock#119rc#361#-1
operational#119rc#3611
close_msg#119rc#361"%DN closes %dt."
close_self_msg#119rc#361"%DT swings shut."
broken_msg#119rc#361"%DT is smashed."
health#119rc#361100
health_max#119rc#361100
ownable#119rc#3610
biz#119rc#361#-1
autoclose_time#119rc#36140
autoclose_task#119rc#3610
pick_timeout#119rc#3610
pickers#119rc#361{}
open_fail_msg#119rc#361"%DN jiggles uselessly at the handle of %dt."
knock_msg#119rc#361"%DN knocks on %dt."
otherside_knock_msg#119rc#361"A knock comes from %dt."
bash_difficulty#119rc#361-6
bash_msg#119rc#361"%DN slams %p shoulder against %dt."
bash_otherside_msg#119rc#361"%DT shudders in its frame as something crashes into it from the other side."
armor#119rc#361
list of 14{{#268, 3, 8}, {#277, 4, 9}, {#278, 7, 20}, {#279, 6, 15}, {#280, 1, 5}, {#281, 100, 100}, {#282, 2, 5}, {#308, 100, 100}, {#1326, 100, 100}, {#308, 50, 100}, {#938, 50, 100}, {#1052, 50, 100}, {#1051, 50, 100}, {#1326, 50, 100}}
value#119rc#3610
default_attenuation#119rc#361-6
squeals#119rc#361#4003
fist_fatality_msg#119rc#361"%DN grabs %dl's head and rams it hard against %dt, then slams it over and over, crushing %dl's skull into paste."
locked_on_reset#119rc#3611
filtration#119rc#3611
knock_action#119rc#361#6040
close_noise#119rc#361#201815
barred_msg#119rc#361"The lock clicks open...but when you push on the door, you find it's been barred. Dammit! The owner must be sleeping inside."
never_opaque#119rc#3610
holders#119rc#361{}
otherside#55rc#361#-1
leave_msg#55rc#361"You head through %dt."
arrive_msg#55rc#361<clear>
go_fail_msg#55rc#361<clear>
look_place_msg#55rc#361<clear>
opaque#55rc#3611
obvious#55rc#361<clear>
next_hops#55r#361<clear>
speed#55rc#361<clear>
direction#55rc#361""
throw_msg#55rc#361<clear>
throw_through_msg#55rc#361<clear>
throw_fail_msg#55rc#361<clear>
oarrive_msg#55rc#361""
oleave_msg#55rc#361"%DN heads through %dt."
oleave_follow_msg#55rc#361"%DN follows %dd through %dt."
oarrive_follow_msg#55rc#361<clear>
last_use_time#55r#361<clear>
last_user#55r#361<clear>
last_arriver#55r#361<clear>
last_arrive_time#55r#361<clear>
passable#55rc#361<clear>
draw_ok#55rc#361<clear>
attenuation#55rw#361-2
hidden#55rc#361<clear>
direction_msg#55rc#361<clear>
next_hop_ok#55rc#361<clear>
protect_msg#55rc#361<clear>
pushed_msg#55rc#361<clear>
pushed_from_msg#55rc#361<clear>
look_through_msg#55rc#361"Through %dt, you see:"
icon#55rc#361"+"
pee_msg#55rc#361"%DN pisses against %dt."
otherside_type#55rc#361<clear>
verb_subs#55rc#361<clear>
sneak_difficulty#55rc#361<clear>
aliases#1rc#361{"generic door", "door"}
description#1rc#361"You see a plain wooden door."
object_size#1r#29{44179, 1298434489}
hidden_verbs#1rc#361{"open", "@pass", "pick", "pick_old"}
phelp_msg#1rc#361<clear>
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): #55 generic exit#1 root

Children: none

Call graph

calls n119_0 #119:look_self n55_2 #55:look_self n119_0->n55_2 n107_43 #107:tell n119_0->n107_43 n20_34 #20:pronoun_sub n119_0->n20_34 n103_2 #103:junk n119_0->n103_2 n119_13 #119:controlled_by n119_0->n119_13 n20_6 #20:english_list n119_0->n20_6 n47_3 #47:map_verb n119_0->n47_3 n119_58 #119:tell_health n119_0->n119_58 n119_58->n107_43 n119_1 #119:_open n119_1->n20_34 n119_2 #119:try_open n119_1->n119_2 n119_9 #119:_close n119_1->n119_9 n119_2->n20_34 n1_39 #1:dnamec n119_2->n1_39 n119_9->n20_34 n119_8 #119:try_close n119_9->n119_8 n119_63 #119:check_holders n119_9->n119_63 n47_16 #47:slice n119_9->n47_16 n119_6 #119:open n119_6->n107_43 n92_2 #92:queue_action n119_6->n92_2 n119_8->n20_34 n119_8->n1_39 n119_8->n119_63 n119_53 #119:dname n119_8->n119_53 n119_10 #119:close n119_10->n92_2 n119_11 #119:try_me n55_4 #55:try_me n119_11->n55_4 n119_12 #119:on_reset n119_12->n119_9 n119_14 #119:pick_old n119_14->n107_43 n119_14->n92_2 n119_14->n119_53 n119_38 #119:ok_to_pick n119_14->n119_38 n119_15 #119:unlock n119_15->n107_43 n119_15->n1_39 n119_15->n92_2 n119_15->n119_53 n119_16 #119:lock n119_16->n107_43 n119_16->n1_39 n119_16->n92_2 n119_16->n119_53 n119_17 #119:hear_event_say n45_2 #45:has_verb n119_17->n45_2 n119_19 #119:may_pick n119_19->n47_16 n119_21 #119:uninstall n119_21->n107_43 n119_21->n119_13 n119_21->n119_53 n44_0 #44:match n119_21->n44_0 n119_23 #119:knock n119_23->n92_2 n119_24 #119:_knock n119_24->n20_34 n55_31 #55:pass_noise n119_24->n55_31 n119_26 #119:bash n119_26->n92_2 n119_27 #119:_bash n119_27->n20_34 n119_27->n119_53 n55_7 #55:invoke n119_27->n55_7 n20_81 #20:msg n119_27->n20_81 n119_29 #119:peep n119_29->n107_43 n119_29->n119_53 n1_42 #1:occupants n119_29->n1_42 n119_30 #119:become_adoor n119_30->n107_43 n20_59 #20:name_and_number n119_30->n20_59 n57_1 #57:_recycle n119_30->n57_1 n48_8 #48:suspend_if_needed n119_30->n48_8 n6_48 #6:_chparent n119_30->n6_48 n103_1 #103:spawn n119_30->n103_1 n119_31 #119:_do_open n119_31->n119_1

Showing 48 of 81 verbs; 33 not shown.

Source

look_self

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!this.open)
2if (this.opaque && (!this.never_opaque))
3pass(@args);
4else
5player:tell($su:ps("Through %ts, you see:"));
6if (valid(this.otherside) && valid(this.otherside.location))
7this.otherside.location:look_self();
8endif
9endif
10player:tell($su:ps(this.is_closed_msg, this, this));
11else
12pass(@args);
13if (!`this.always_opaque ! ANY')
14player:tell($su:ps("Through %ts, you see:"));
15if (valid(this.otherside) && valid(this.otherside.location))
16this.otherside.location:look_self();
17endif
18endif
19player:tell($su:ps(this.is_open_msg, this, this));
20endif
21for x in (this.contents)
22if (is_a(x, $decal))
23$rpg:junk(x);
24elseif (!is_a(x, $alock))
25if (m = `x:installed_msg() ! ANY => ""')
26player:tell(m);
27endif
28endif
29endfor
30if (valid(this.lock))
31player:tell($su:ps(this.lock.installed_msg, this.lock, this.lock, this));
32elseif ((is_a(this.otherside, $door) && valid(lock = this.otherside.lock)) && lock.lockable_on_otherside)
33player:tell($su:ps(lock.installed_otherside_msg, lock, lock, this));
34endif
35if (this:controlled_by(player) && this.contents)
36player:tell("(Installed: ", $su:english_list($lu:map_verb(this.contents, "iname")), ".)");
37endif
38this:tell_health();

_open

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1":_open([OBJ opener, INT queue_move]) => true if opening occurred";
2"Open up, if that's possible.";
3"If queue_move, queue a move attempt after a successful open.";
4who = args ? args[1] | #-1;
5queue_move = (length(args) > 1) ? args[2] | 0;
6ignore_lock = (length(args) > 2) ? args[3] | 0;
7if ((!this.passable) && is_a(who, $creature))
8who:tell("Shit!  It won't open.");
9return;
10endif
11m = "";
12if (is_a(who, $adoor))
13m = this.open_self_msg;
14if (who != this.otherside)
15this.otherside:_open(this);
16endif
17elseif (valid(who))
18if (who.location != this.location)
19return E_INVARG;
20elseif (!this:try_open(who, queue_move, ignore_lock))
21return 0;
22endif
23m = this.open_msg;
24if (is_a(this.otherside, $door))
25this.otherside:_open(this);
26endif
27elseif (!this.open)
28m = this.open_self_msg;
29if (is_a(this.otherside, $door))
30this.otherside:_open(this);
31endif
32endif
33this.open = 1;
34if (m)
35this.location:announce_all($su:ps(m));
36endif
37this.location:temperature(1);
38if (queue_move)
39who:prequeue_action(who.move_action, {this}, 1, "", 1);
40endif
41if ((this.autoclose_time && (who != this.otherside)) && this.operational)
42if (task_valid(this.autoclose_task))
43kill_task(this.autoclose_task);
44endif
45fork task_id (this.autoclose_time)
46if (is_a(this, $door) && this.operational)
47this:_close();
48endif
49endfork
50this.autoclose_task = task_id;
51endif
52return 1;

try_open

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1who = args ? args[1] | #-1;
2queue_move = (length(args) > 1) ? args[2] | 0;
3ignore_lock = (length(args) > 2) ? args[3] | 0;
4do_open = 0;
5m = "";
6if (this.open)
7valid(who) ? who:tell(this:dnamec() + " is already open.") | 0;
8elseif (!this.operational)
9valid(who) ? who:tell($su:ps(this.broken_msg, this, this)) | 0;
10elseif (((valid(this.lock) && (!ignore_lock)) && valid(who)) && this.lock:is_locked())
11if (is_player(who) && (!who:check_pref("unlockdoors")))
12who:tell(this:dnamec(), " is locked.");
13return;
14endif
15who:queue_action(this.lock, {"permit", queue_open = 1, queue_move});
16elseif ((is_a(this.otherside, $door) && ((valid(alock = this.otherside.lock) && (!alock.openable_on_otherside)) && valid(who))) && alock:is_locked())
17m = $su:ps(this.open_fail_msg, who, this);
18else
19do_open = 1;
20endif
21if (m)
22this.location:announce_all(m);
23endif
24return do_open;

enterfunc

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (is_a(what = args[1], $alock))
2this.lock = what;
3endif

acceptable

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (is_a(what = args[1], $alock))
2if (is_a(this.lock, $alock) && (this.lock.location == this))
3return 0;
4endif
5endif
6return 1;

exitfunc

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (args[1] == this.lock)
2this.lock = #-1;
3endif

open

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!this.passable)
2player:tell("Shit!  It won't open.");
3return;
4endif
5player:queue_action(this, {"open"});

_start

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2action = args[2][1];
3aargs = {who};
4if (length(args[2]) > 1)
5aargs = {@aargs, @args[2][2..$]};
6endif
7if (this:("_" + action)(@aargs))
8if (action == "bash")
9return {4.0, 0};
10endif
11return {2.0, 0};
12else
13return E_NONE;
14endif

try_close

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1who = args ? args[1] | #-1;
2do_close = 0;
3if (!this.open)
4valid(who) ? who:tell(this:dnamec() + " is already closed.") | 0;
5elseif (!this.operational)
6valid(who) ? who:tell($su:ps(this.broken_msg, this, this)) | 0;
7else
8do_close = 1;
9endif
10if (h = this:check_holders())
11reason = h[$][2];
12do_close = 0;
13valid(who) && who:tell((("You can't close " + this:dname()) + "! ") + reason);
14elseif (this.otherside:check_holders())
15do_close = 0;
16valid(who) && who:tell(("You can't close " + this:dname()) + " because something is keeping it open!");
17endif
18return do_close;

_close

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1":_close([OBJ closer]) => true if closing occurred";
2"Close, if that's possible.";
3who = args ? args[1] | #-1;
4if (!this.open)
5is_a(who, $creature) && who:tell("It's already closed.");
6return 1;
7endif
8if ((((!valid(who)) && this:check_holders()) || is_a(this.otherside, $door)) && this.otherside:check_holders())
9return 0;
10elseif (is_a(who, $adoor))
11m = this.close_self_msg;
12valid(noise = this.close_noise) && this.location:make_noise(noise, this);
13elseif (valid(who))
14if (!this:try_close(who))
15return 0;
16endif
17m = this.close_msg;
18if (is_a(this.otherside, $door) && this.otherside.open)
19this.otherside:_close(this);
20endif
21else
22m = this.close_self_msg;
23if (is_a(this.otherside, $door) && this.otherside.open)
24this.otherside:_close(this);
25endif
26endif
27this.open = 0;
28(!("slam" in $lu:slice(callers(), 2))) && this.location:announce_all($su:ps(m, who, this));
29gamevalid(this) && this.location:temperature(1);
30if (task_valid(this.autoclose_task) && (task_id() != this.autoclose_task))
31kill_task(this.autoclose_task);
32endif
33if (valid(this.lock))
34this.lock:hear_close(this);
35endif
36return 1;

close

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1player:queue_action(this, {"close"});

try_me

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2if (!this.open)
3if (is_a(who, $creature) && (!who.opens_doors))
4return E_NONE;
5endif
6who:prequeue_action(this, {"open", queue_move = 1}, 1, "", 1);
7return E_NONE;
8endif
9return pass(@args);

on_reset

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (this.f || (!valid(this.otherside)))
2return;
3endif
4this.health = this.health_max;
5this.operational = 1;
6if (is_a(this.otherside, $door))
7this.otherside.operational = 1;
8this.otherside.health = this.otherside.health_max;
9endif
10(!task_valid(this.autoclose_task)) && this:_close();
11if (is_a(this.lock, $alock))
12this.lock.operational = 1;
13if (this.locked_on_reset)
14this.lock:_lock();
15else
16this.lock:_unlock();
17endif
18endif

controlled_by

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1who = args[1];
2if ((who == this.owner) || who.programmer)
3return 1;
4endif
5if (this.ownable)
6if (!is_a(this.biz, $biz))
7this.biz = #-1;
8endif
9return (((((who == this.owner) || (who == this.location.owner)) || (who == this.otherside.location.owner)) || (who in this.location.residents)) || (who in this.otherside.location.residents)) || (valid(this.biz) && this.biz:permit_control(who, this));
10else
11return 0;
12endif

pick_old

Spec none none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (player.executing && (player.executing[1] == $actions.apick))
2player:tell("You're already picking something.");
3return;
4endif
5for dude in (this.location:occupants($player))
6if ((dude.executing && (dude.executing[1] == $actions.apick)) && (dude.executing[2][1] == this.lock))
7player:tell("Someone else beat you to the punch there, champ.");
8return;
9endif
10endfor
11if (!valid(this.lock))
12player:tell("You can't see any way to pick a lock in ", this:dname(), ".");
13elseif (this.open)
14player:tell("The uh...the door's already open, champ.  Mission accomplished, I guess.");
15elseif (!this.lock:is_locked())
16player:tell("It doesn't appear to be locked.");
17elseif (0 && (!this:ok_to_pick()))
18"Disabled this so you can try picking a logged-out guy.  Sucks to be you.";
19player:tell("You jiggle the door a bit, and realize it's been barred from the inside.  The owner must be sleeping in there.  Dammit!");
20else
21what = this.otherside.location.owner;
22if (is_a(what, $player) && (!is_a(what, $immortal)))
23what:_pvp_record({player}, "lockpick");
24endif
25player:queue_action($actions.apick, {this.lock});
26endif

unlock

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!valid(this.lock))
2if ((!valid(alock = this.otherside.lock)) || (!alock.lockable_on_otherside))
3player:tell(this:dnamec(), " doesn't seem to have anything you can unlock.");
4elseif (!alock:is_locked())
5player:tell("It's not locked.");
6else
7player:queue_action(alock, {"unlock_otherside"});
8endif
9elseif (!this.lock:is_locked())
10player:tell(this.lock:dnamec(), " in ", this:dname(), " isn't locked.");
11else
12player:queue_action(this.lock, {"unlock"});
13endif

lock

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!valid(this.lock))
2if ((!valid(alock = this.otherside.lock)) || (!alock.lockable_on_otherside))
3player:tell(this:dnamec(), " doesn't seem to have anything you can lock.");
4elseif (alock:is_locked())
5player:tell("It's already locked.");
6else
7if (this.open)
8player:queue_action(this, {"close"});
9endif
10player:queue_action(alock, {"lock_otherside"});
11endif
12elseif (this.lock:is_locked())
13player:tell(this.lock:dnamec(), " in ", this:dname(), " is already locked.");
14else
15player:queue_action(this.lock, {"lock"});
16endif

hear_event_say

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

none

Source

1if (args[4][2] == this)
2for a in (this.contents)
3if ($ou:has_verb(a, verb))
4a:(verb)(@args);
5if (`a.listens == 1 ! ANY => 0')
6return;
7endif
8endif
9endfor
10endif

_announce

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

none

Source

1"Copied from door (#170):_announce by Necanthrope (#142) Sat Sep 29 00:46:40 2007 CDT";
2who = args[1];
3locmsg = args[2];
4destmsg = (length(args) > 2) ? args[3] | "";
5dest = this.otherside.location;
6if (locmsg)
7this.location:announce_all(locmsg);
8endif
9if (destmsg)
10dest:announce_all(destmsg);
11endif

may_pick

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2if (this.owner.programmer)
3return 1;
4endif
5np = {};
6for x in (this.pickers)
7if ((time() - x[2]) <= this.pick_timeout)
8np = {@np, x};
9endif
10endfor
11this.pickers = np;
12if (who in $lu:slice(this.pickers, 1))
13return 0;
14endif
15return 1;

add_picker

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2this.pickers = {@this.pickers, {who, time()}};
3if (length(this.pickers) > 20)
4this.pickers = this.pickers[$ - 19..$];
5endif

uninstall remove

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

Referenced by

none

Source

1what = $mu:match(dobjstr, this.contents);
2if ((!this:controlled_by(player)) && (!player.wizard))
3player:tell("You can't see how to remove anything from ", this:dname(), ".");
4return;
5endif
6if (!valid(what))
7player:tell("You can't find any '", dobjstr, "' in ", this:dname(), ".");
8else
9what:_uninstall(player);
10endif

exit_spec

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!this.open)
2icon = this.icon ? this.icon + "" | $ansi.cyan;
3else
4icon = "";
5endif
6if ((this.name == this.direction) || (!(this.direction in $rpg.cardinals)))
7s = ($ansi.bold_on + this.direction) + $ansi.bold_off;
8else
9s = (((($ansi.bold_on + this.direction) + $ansi.bold_off) + "(") + this.name) + ")";
10endif
11return (icon + $ansi.yellow) + s;

knock

Spec this none noneFlags rxdOwner #29Definer #119

Referenced by

none

Source

1player:queue_action($actions.verb, {dobj, "_knock", {player}}, 1, "knock");

_knock

Spec any none noneFlags rxdOwner #29Definer #119

Referenced by

none

Source

1"Copied from door (#170):_knock by Necanthrope (#142) Tue Oct  2 21:22:31 2007 CDT";
2who = args[1];
3dest = this.otherside.location;
4destname = this.otherside:dname();
5locmsg = this.knock_msg;
6$noises.knock:sound_in(dest, who, {}, 4, this.otherside);
7this:pass_noise($noises.knock, who, {}, 4, random(99999));
8who:announce_action_text($su:ps(locmsg, who, this));
9dest:broadcast_event(1, $actions.door.knock, who, {this.otherside});

_tell_appraise

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

none

Source

No program (verb defined but unprogrammed).

bash

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1player:queue_action(this, {"bash"});

_bash

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2if (this.open)
3who:aat(who:dnamec(), " rushes at ", this:dname(), ", not realizing it was already open, and goes flying through it.");
4this:invoke(who);
5return;
6endif
7who:aat($su:ps($su:msg(this.bash_msg), who, this));
8this.otherside.location:announce_all($su:ps($su:msg(this.bash_otherside_msg), who, this.otherside));
9check = $skills.brawn:check(who, this.bash_difficulty);
10who:take_damage(#268, 5 + random(5), #301, this);
11this.location:broadcast_noise("You hear a %vol crash from the %dir.", 3);
12return 1;

fire_pcm

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1who = args[1];
2pick = args[2];
3check = args[3];
4if (check < 0)
5ran = 100;
6else
7ran = 300;
8endif
9t = 0;
10for x in (this.contents)
11if (random(ran) <= `x.fire_chance ! ANY => 0')
12t = t + `x:_fire_pcm(@args) ! E_VERBNF => 0';
13endif
14endfor
15return t;

peep peek

Spec this none noneFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (this.open)
2player:tell("YOU uh...you know it's open, right?  So you can just look right through the open door.  Go ahead, try it.  It's okay.");
3return;
4endif
5hole = this.otherside:occupants(#174381);
6if (!hole)
7if ((player == this.owner) && this:occupants(#174381))
8player:tell("You can't look through this side of the peephole.  Did you maybe install it backwards?  Hahaha.  Oh man.  I can't tell you how funny that is.  Well, live and learn, right?  It's not so bad -- you can just uninstall it and then reinstall it on the other side.  Sorry to ramble about it...you go have a good time.  I'll be fine.");
9return;
10endif
11player:tell("There's no peephole in ", this:dname(), ".");
12else
13player:tell("Through the peephole, you see:");
14this.otherside.location:look_self(player);
15endif

become_adoor

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1bestlock = #-1;
2junklocks = {};
3shock = 0;
4for x in (this.contents)
5if (is_a(x, $lock))
6if ((!valid(bestlock)) || (x.value > bestlock.value))
7bestlock = x;
8endif
9if (is_a(x, #7163))
10shock = shock + 1;
11endif
12endif
13endfor
14for x in (this.contents)
15if (is_a(x, $lock))
16if (x == bestlock)
17player:tell("  converting ", $su:nn(x), "...");
18x:become_alock();
19this.lock = is_a(x, #1) ? x | #-1;
20else
21player:tell("  junking ", $su:nn(x), "...");
22if (!x.f)
23$recycler:_recycle(x);
24endif
25$cu:sin(0);
26endif
27elseif (is_a(x, #5232))
28player:tell("  converting ", $su:nn(x), "...");
29player:_chparent(x, x.amod_type);
30endif
31endfor
32if (shock > 1)
33shocker = $rpg:spawn((shock > 2) ? #156863 | #27779);
34player:tell("  spawning ", $su:nn(shocker), "...");
35shocker:moveto(this);
36endif
37if ((!args) && is_a(this.otherside, #1))
38this.otherside:become_adoor(otherside = 1);
39endif
40player:tell("Converted ", $su:nn(this), "!");

_do_open

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1this:_open();

_do_close

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1this:_close();

_is_locked

Spec any none noneFlags rxdOwner #29Definer #119

Referenced by

none

Source

1"Copied from door (#170):_is_locked by Necanthrope (#142) Fri Oct  5 23:02:29 2007 CDT";
2if (valid(this.lock))
3return this.lock.locked;
4endif
5return 0;

throws_to

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!this.open)
2return #-1;
3else
4return pass(@args);
5endif

_lock

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (valid(this.lock))
2this.lock:_lock(@args);
3return 1;
4endif

_unlock

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (valid(this.lock))
2this.lock:_unlock(@args);
3return 1;
4endif

_can_be_unlocked_by

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (valid(this.lock))
2return this.lock:(verb)(@args);
3endif
4return 1;

ok_to_pick

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1if (ok_to_pick = area(this.otherside):ok_to_pick(this))
2return ok_to_pick in {E_NONE, 1};
3endif
4if ((!is_player(this.owner)) || this.owner.programmer)
5return 1;
6endif
7if (!gamevalid(this.lock))
8return 1;
9endif
10if (typeof(residents = this.lock.keyed_to) != LIST)
11return 1;
12endif
13residents = (!this.owner.programmer) ? setadd(residents, this.owner) | residents;
14if (is_a(this.biz, $biz))
15for x in (this.biz.ranks["employees"])
16residents = setadd(residents, x);
17endfor
18endif
19"Is any resident connected or not behind this door or inactive?  If so, pickable!";
20for x in (residents)
21if (is_connected(x))
22return 1;
23elseif (!this:person_is_behind(x))
24return 1;
25endif
26endfor
27"Is the owner inactive?  If so, pickable!";
28if ((time() - this.owner.last_disconnect_time) > (86400 * 60))
29return 1;
30endif
31"Is any player connected and behind this door?  If so, pickable!";
32for x in (connected_players())
33if (is_a(x, $immortal))
34continue;
35endif
36if (area(x) == area(this.otherside))
37if (this:person_is_behind(x))
38return 1;
39endif
40endif
41endfor
42"None of that is the case, so unpickable.";
43return 0;

allows

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1"Copied from generic door (#246837):allows by Gilmore (#98) Sun Jul 11 15:59:49 2010 CDT";
2what = args[1];
3if (!this.open)
4if (is_a(what, $creature) && what.opens_doors)
5return pass(@args);
6endif
7return 0;
8else
9return pass(@args);
10endif

take_damage

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1{type, amount} = args[1..2];
2for x in (this.armor)
3if (is_a(type, x[1]))
4r = x[3] - x[2];
5abx = x[2] + (r ? random(x[3] - x[2]) | 0);
6amount = max(0, amount - abx);
7endif
8endfor
9if (amount)
10this.health = min(this.health - amount, this.health_max);
11this.otherside.health = min(this.otherside.health - amount, this.otherside.health_max);
12if (this.health <= 0)
13fork (0)
14this:die();
15endfork
16endif
17endif
18return amount;

die

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1for a in (this.contents)
2if (is_a(a, $lock))
3a.locked = 0;
4a.operational = 0;
5endif
6endfor
7this:_do_open();
8this.operational = 0;
9if (!args)
10this.otherside:die(from_otherside = 1);
11endif

squeal_msg

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

none

Source

1"Copied from door (#170):squeal_msg by Necanthrope (#142) Sat Oct 13 23:47:22 2007 CDT";
2":squeal_msg(INT damage)";
3"Return this object's reaction to receiving this damage, based on the damage actually done after armor.";
4raw = tofloat(args[1]);
5if (!this.health)
6pct = 100.0;
7else
8total = tofloat(this.health + args[1]);
9if (raw > total)
10raw = total;
11endif
12if (total == 0.0)
13pct = 100.0;
14else
15pct = (raw / total) * 100.0;
16endif
17endif
18r = this.squeals:select("squeals", min(100, toint(pct)), $bodypart);
19if (r != "NULL")
20this.otherside.location:announce_all($su:ps(r, this.otherside, this.otherside, this.otherside) + ".");
21endif
22r = $su:ps(r, this, this, this, this);
23return (r == "NULL") ? 0 | r;

is_broken

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1return (this.health < this.health_max) || (!this.operational);

_repair

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1"Copied from door (#170):_repair by Necanthrope (#142) Sun Oct 14 01:44:04 2007 CDT";
2this:_do_close();
3this.operational = 1;
4this.otherside.operational = 1;
5this.health = this.health_max;
6this.otherside.health = this.otherside.health_max;
7for x in (this.contents)
8if ($ou:has_prop(x, "operational"))
9x.operational = 1;
10endif
11endfor
12for x in (this.otherside.contents)
13if ($ou:has_prop(x, "operational"))
14x.operational = 1;
15endif
16endfor

_repair_check

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1":_repair_check(OBJ who) => Return a skillcheck of 'who' trying to fix me.";
2check = $skills.repair:check(args[1], 0);
3return check;

move

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1r = pass(@args);
2who = args[1];
3for x in (this.otherside.location:occupants($player))
4if (x:is_doing($actions.aim) && (x.executing[2][1] == this.otherside))
5fork (0)
6$actions.aim:blam(x, who, x.executing[2][3]);
7endfork
8endif
9endfor
10return r;

hear_lock_change

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

No program (verb defined but unprogrammed).

allows_shove

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!pass(@args))
2return 0;
3endif
4if (!this.open)
5#98:tell($ansi.bold_on, $ansi.red, $su:nn(player), " tried a shove through ", $su:nn(this), "!", $ansi.reset);
6return 0;
7endif
8return 1;

allows_backup_x

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1"Copied from generic door (#246837):allows by Gilmore (#98) Sat Nov 15 01:33:26 2008 CST";
2if (((!this.open) && is_a(who = args[1], $creature)) && (!who.opens_doors))
3return 0;
4endif
5if ((!this.open) && is_a(what = args[1], $thing))
6return 0;
7endif
8if (is_a(player, #40))
9ok_to_go = 1;
10else
11ok_to_go = 0;
12endif
13if ((!this:ok_to_pick()) && (ok_to_go != 1))
14return 0;
15endif
16if (this.open)
17return pass(@args);
18else
19return 0;
20endif

listen

Spec none at/to thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (this.open)
2player:tell("It's open, genius.");
3return;
4endif
5player:queue_action($actions.doorlisten, {this}, 1, "listen at " + this.name);

room_heat

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if ((this.open && (!this.location.outdoor)) && this.otherside.location.outdoor)
2if (this.otherside.location.temperature > this.location.temperature)
3r = this.otherside.location.temperature - this.location.temperature;
4r = abs(r);
5r = r / 3;
6r = max(0, r);
7r = min(10, r);
8if (r > 5)
9this.location:announce_all("Warm air blows in from the ", this.name, ".");
10endif
11elseif (this.otherside.location.temperature < this.location.temperature)
12r = this.location.temperature - this.otherside.location.temperature;
13r = abs(r);
14r = r / 3;
15r = 1 - r;
16r = max(-10, r);
17r = min(0, r);
18if (r <= -5)
19this.location:announce_all("Cool air blows in from the ", this.name, ".");
20endif
21else
22r = 0;
23endif
24return r;
25endif
26return 0;

push shove

Spec any at/to thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1if (!this.open)
2player:tell(this:dnamec(), " is closed.");
3return;
4endif
5return pass(@args);

dname

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1if (this.name == this.direction)
2return "the door to " + this:direction_name();
3else
4return pass(@args);
5endif

direction_name

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1if (this.direction == "up")
2return "above";
3elseif (this.direction == "down")
4return "below";
5elseif (this.direction in {"in", "out"})
6return this.direction + "side";
7elseif (this.direction in {"north", "northeast", "east", "southeast", "south", "southwest", "west", "northwest"})
8return "the " + this.direction;
9else
10return this.direction;
11endif

action_doing_msg

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1action = args[2][1];
2if (action == "open")
3return "opening " + this:dname();
4elseif (action == "close")
5return "closing " + this:dname();
6elseif (action == "bash")
7return "bashing " + this:dname();
8else
9$nets.prognet:announce(#2, (((("unknown door doing_msg => " + $su:nn(player)) + " used ") + $su:nn(this)) + " args: ") + toliteral(args), 1);
10return "";
11endif

attenuate

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1"Copied from generic exit (#543):attenuate by Seraph (#7195) Thu Feb 12 00:36:17 2009 CST";
2{noise, initial_vol} = args;
3if (this.open)
4return pass(@args);
5else
6return initial_vol - 6;
7endif

look_place_msg

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1r = pass(@args);
2m = strsub(r, "%open", this.open ? "open" | "closed");
3return m;

tell_health

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

Source

1"Copied from south (#201091):tell_health by Left4Chiyo2 (#143894) Wed Oct 28 13:00:07 2009 CDT";
2if (this.health < this.health_max)
3player:tell("It's " + $rpg:damage_to_desc(this.health, this.health_max), ".");
4endif

slam

Spec this none noneFlags rxdOwner #29Definer #119

Referenced by

none

Source

1player:queue_action(this, {"slam"});

person_is_behind

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1{who, ?maxhops = 4} = args;
2firsthop = this.location:next_hop_to(who);
3if (firsthop != this)
4return 0;
5endif
6room = firsthop.otherside.location;
7hops = 1;
8while (hops < maxhops)
9if (who.location == room)
10return 1;
11endif
12nexthop = room:next_hop_to(who);
13if (!valid(nexthop))
14return 0;
15endif
16room = nexthop.otherside.location;
17hops = hops + 1;
18endwhile
19return 0;

not_ok_to_pick

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

none

Source

1"Copied from generic door (#246837):ok_to_pick by Jed (#45097) Mon Mar  1 14:18:30 2010 CST";
2if ((is_player(this.owner) && (!this.owner.programmer)) && (this.owner:area() == this.otherside:area()))
3for x in (this.otherside.location.residents)
4if ((x in connected_players()) && (x.location != this.otherside.location))
5return 1;
6endif
7endfor
8return 0;
9endif
10return 1;

_slam

Spec this none thisFlags rxdOwner #29Definer #119

Referenced by

none

Source

1"Copied from south (#225691):_slam by laser_spider (#381051) Sun Aug 29 18:46:17 2010 CDT";
2if (!this.open)
3player:tell("It's already closed, champ.");
4return;
5endif
6player:aat(((((player:dnamec() + " slams ") + this:dname()) + " shut as hard as ") + player.ps) + " can, causing the frame to shake a little bit.");
7this.otherside.location:announce_all(this.otherside:dnamec() + " suddenly slams shut.");
8this:_close(player);
9this.location:make_noise(#25302);
10brawn = $skills.brawn:check(player, 0);
11if (brawn > 5)
12damage = this:take_damage($damages.beating, brawn);
13if (damage > 0)
14this.location:announce_all(("A few splinters fly off " + this:dname()) + ".");
15endif
16endif

check_holders

Spec this none thisFlags rxdOwner #361Definer #119

Referenced by

Source

1new = {};
2if (this.holders)
3for tuple in (this.holders)
4{time, reason} = tuple;
5if (time() < time)
6do_close = 0;
7new = {@new, tuple};
8endif
9endfor
10this.holders = new;
11new = $lu:sort_alist(new);
12endif
13return new;