housekeeper #65

Parent #50Owner #29Flags player, programmer, readSource hellcore/hellcore.db

Aliases: housekeeper

24 verbs · 220 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
look_selfthis none thisrxd#652
cleanupthis none thisrxd#6514
replacethis none thisrxd#6568
cleanup_listany none nonerxd#6532
add_cleanupany any anyrxd#6547
remove_cleanupany none nonerxd#6515
controlsthis none thisrxd#6513
continuousthis none thisrxd#6527
litterbugthis none thisrxd#6512
is_watchingthis none thisrxd#651
send_homethis none thisrxd#6515
moveitthis none thisrxd#657
ejectitthis none thisrxd#654
is_object_cleanedthis none thisrxd#656
is_litterthis none thisrxd#657
init_for_corethis none thisrxd#6519
clean_statusthis none thisrxd#6511
is_cleaningthis none thisrxd#658
timethis none thisrxd#653
acceptablethis none thisrxd#651
move_players_homethis none thisrxd#6529
move_emthis none thisrxd#6528
take_away_msg drop_off_msgthis none thisrxd#651
set_moveto_taskthis none thisrxd#655

Properties

PropertyDefinerFlagsOwnerValue
recycle_bins#65rc#29{}
owners#65rc#29{#2}
cleaning#65rc#29#-1
litter#65rc#29{}
eschews#65rc#29{}
public_places#65rc#29{}
task#65rc#290
requestors#65rc#29{}
destination#65rc#29{}
clean#65r#29{}
testing#65rc#290
player_queue#65r#29{}
take_away_msg#65rc#29"%[tpsc] arrives to cart %n off to bed."
drop_off_msg#65rc#29"%[tpsc] arrives to drop off %n, who is sound asleep."
move_player_task#65r#290
moveto_task#65rc#290
cleaning_index#65rc#290
eval_subs#50r#29{}
eval_ticks#50r#29<clear>
prog_options#50rc#29<clear>
event_debug_filter#50rc#29<clear>
progkill_msg#50rc#29<clear>
progburn_msg#50rc#29<clear>
proglight_msg#50rc#29<clear>
heal_msg#50rc#29<clear>
heal_self_msg#50rc#29<clear>
revert_form_msg#50rc#29<clear>
eval_env#50rc#29<clear>
build_options#2rc#29<clear>
who_visible#2rc#29<clear>
join_msg#89rc#29<clear>
object_port_msg#89rc#29<clear>
victim_port_msg#89rc#29<clear>
thing_arrive_msg#89rc#29<clear>
othing_port_msg#89rc#29<clear>
thing_port_msg#89rc#29<clear>
player_arrive_msg#89rc#29<clear>
oplayer_port_msg#89rc#29<clear>
player_port_msg#89rc#29<clear>
self_arrive_msg#89rc#29<clear>
oself_port_msg#89rc#29<clear>
self_port_msg#89rc#29<clear>
real_name#89rc#29<clear>
real_aliases#89rc#29<clear>
zots#89rc#29<clear>
bedroom#89rc#29<clear>
chillmin#89rc#29<clear>
_mail_task#33rc#29<clear>
messages_going#33c#29<clear>
mail_lists#33rc#29<clear>
mail_notify#33r#362<clear>
mail_forward#33rc#29{#2}
mail_options#33rc#29{}
message_keep_date#33rc#29<clear>
messages_kept#33rc#29<clear>
current_message#33c#29<clear>
messages#33c#29{}
mail_hack#33rc#29<clear>
barcolor#33rc#29<clear>
autowield#33rc#29<clear>
bug#33rc#29<clear>
readied_weapon#33rc#29<clear>
unread_mail#33rc#29<clear>
features#6r#29{#84, #83}
previous_connection#6#361<clear>
email_address#6#361""
last_disconnect_time#6r#361<clear>
help#6rc#29<clear>
more_msg#6rc#29<clear>
linetask#6r#29<clear>
linesleft#6r#29<clear>
linebuffer#6#29<clear>
pagelen#6r#29<clear>
owned_objects#6r#361{}
linelen#6r#29-80
current_folder#6c#29<clear>
all_connect_places#6#361<clear>
last_connect_place#6#361<clear>
lines#6c#29<clear>
page_absent_msg#6rc#29"The housekeeper is too busy putting away all of the junk all over LambdaMoo that there isn't time to listen to pages and stuff like that so your page isn't listened to, too bad."
page_origin_msg#6rc#29<clear>
page_echo_msg#6rc#29<clear>
edit_options#6rc#29<clear>
last_connect_time#6r#361<clear>
ownership_quota#6#291073741823
password#6#361"Impossible password to type"
paranoid#6rc#29<clear>
display_options#6rc#29<clear>
verb_subs#6rc#29<clear>
first_connect_time#6r#3610
size_quota#6#29{100000, 24743, 1084262400, 0}
last_password_time#6#3610
last_connect_attempt#6#361<clear>
prefs#6rc#29
list of 17{1, 0, 0, 0, 0, 0, 0, 0, {"showmap", 1}, 0, 0, 0, 0, 0, 0, 0, 0}
ansi#6rc#29<clear>
last_hit_meter#6rc#29"~1b[1m~1b[37m[~1b[32m|||||||||||||||||||||||||||||~1b[32m*~1b[37m~1b[1m]~1b[0m"
doing_msg#6rc#29<clear>
xp_total#6rc#29225
party#6rc#29#-1
rooms#6r#361<clear>
client#6rc#29<clear>
last_death_time#6rc#29<clear>
default_weapon#6rc#29<clear>
thirst#6rc#29<clear>
may_chat#6rc#29<clear>
idlemsg#6rc#29<clear>
eula#6rc#29<clear>
birthdate#6rc#29<clear>
bad_words#6rc#29<clear>
char_start_time#6rc#290
rumors#6rc#29{{#198411, "Commander Andy"}, {#231279, "Barry"}}
last_broadcast#6rc#29<clear>
ansihack#6rc#29<clear>
last_death_callers#6rc#29<clear>
char_extra_epochs#6rc#29<clear>
code_name#6rc#29""
code_plural#6rc#29<clear>
changeable_properties#6rc#29<clear>
out_of_band_session#6r#29<clear>
private_aliases#6rc#29<clear>
quests_open#6rc#29<clear>
quests#6rc#29
list of 17{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
page_receive_msg#6rc#29<clear>
page_msg#6rc#29<clear>
focus_skills#6rc#29<clear>
skillpoints#100rc#29<clear>
xp#100rc#29192
mutations#100rc#29<clear>
mutation_slots#100rc#29<clear>
char_start_age#100rc#29<clear>
char_extra_age#100rc#29<clear>
hands#107rc#29<clear>
wielding#107rc#29{}
health#107rc#29500
unarmed_weapon#107rc#29<clear>
size#107rc#29<clear>
posture#107rc#29"standing"
gender#107rc#29<clear>
respawn#107rc#29#2800
corpse#107rc#29<clear>
has_proper_name#107rc#29<clear>
die_msg#107rc#29<clear>
body_parts#107rc#29<clear>
wearing#107rc#29<clear>
armor#107rc#29<clear>
last_swing_message#107rc#29{1204695450, #79678}
health_max#107rc#29<clear>
fighting#107rc#29{}
last_dodge_time#107rc#291204695450
following#107rc#29#-1
icon#107rc#29<clear>
say_msg#107rc#29<clear>
say_to_msg#107rc#29<clear>
afterlife#107rc#29<clear>
get_msg#107rc#29<clear>
drop_msg#107rc#29<clear>
blood#107rc#29{}
squeals#107rc#29<clear>
prc#107rc#29<clear>
ppc#107rc#29<clear>
poc#107rc#29<clear>
psc#107rc#29<clear>
pr#107rc#29<clear>
pp#107rc#29<clear>
po#107rc#29<clear>
ps#107rc#29<clear>
pq#107rc#29<clear>
pqc#107rc#29<clear>
brief#107rc#29<clear>
knockout#107rc#29<clear>
knockout_msg#107rc#29<clear>
body#107rc#29<clear>
wake_msg#107rc#29<clear>
owake_msg#107rc#29<clear>
oknockout_msg#107rc#29<clear>
friends#107rc#29<clear>
home#107rc#29#1438
respawn_msg#107rc#29<clear>
move_action#107rc#29<clear>
heart#107rc#290
last_heartbeat#107rc#291189897908
dead#107rc#29<clear>
_tohit_next#107rc#290
last_words_msg#107rc#29<clear>
attacked#107rc#29<clear>
opens_doors#107rc#29<clear>
movable_by_explosion#107rc#29<clear>
obscured#107rc#29<clear>
obscured_desc_msg#107rc#29<clear>
cooldowns#107rc#29<clear>
combat_rounds#107rc#29<clear>
encumbrance#107rc#29{0, 0}
respawn_handler#107rc#29<clear>
distant_form_msg#107rc#29<clear>
block_msg#107rc#29<clear>
attack_on_block#107rc#290
last_stunned#107rc#29<clear>
nude_descs#107rc#29<clear>
skills#107rc#29<clear>
explode_msg#107rc#29<clear>
death_listeners#107rc#29<clear>
queue#92r#361{}
preemptible#92r#3611
executing#92r#361{}
process_queue#92r#3611388050276
help_msg#92rc#29<clear>
last_action#92r#361{#82516, {5.0}, 1, ""}
article#92rc#29<clear>
last_last_action#92rc#29<clear>
action_count#92rc#29<clear>
aliases#1r#362{"housekeeper"}
description#1rc#29"A very clean, neat, tidy person who doesn't mind lugging players and their gear all over the place."
object_size#1r#29{27111, 1298433815}
hidden_verbs#1rc#29<clear>
phelp_msg#1rc#29<clear>
weight#1rc#29<clear>
owner_verbs#1rc#29<clear>
plural_name#1rc#29<clear>
client_image#1rc#29<clear>
listening#1rc#29<clear>

Ancestry

Ancestors (nearest first): #50 generic programmer#2 generic builder#89 generic immortal#33 generic normal player#6 generic player#100 generic RPG player#154 generic living creature#107 generic creature#92 generic actor#1 root

Children: none

Call graph

calls n65_0 #65:look_self n1_11 #1:tell_lines n65_0->n1_11 n6_157 #6:description n65_0->n6_157 n107_43 #107:tell n65_0->n107_43 n20_34 #20:pronoun_sub n65_0->n20_34 n65_1 #65:cleanup n65_1->n107_43 n65_2 #65:replace n65_1->n65_2 n48_8 #48:suspend_if_needed n65_1->n48_8 n65_2->n48_8 n57_9 #57:valid n65_2->n57_9 n51_36 #51:verb_or_property n65_2->n51_36 n20_59 #20:name_and_number n65_2->n20_59 n45_2 #45:has_verb n65_2->n45_2 n45_0 #45:has_property n65_2->n45_0 n65_11 #65:moveit n65_2->n65_11 n45_5 #45:isa n65_2->n45_5 n65_3 #65:cleanup_list n65_3->n107_43 n65_3->n48_8 n20_1 #20:left n65_3->n20_1 n65_4 #65:add_cleanup n65_4->n45_5 n42_0 #42:controls n65_4->n42_0 n45_3 #45:has_callable_verb n65_4->n45_3 n65_6 #65:controls n65_4->n65_6 n65_5 #65:remove_cleanup n65_5->n42_0 n65_5->n65_6 n65_7 #65:continuous n65_7->n65_2 n65_7->n42_0 n51_37 #51:task_valid n65_7->n51_37 n65_18 #65:time n65_7->n65_18 n65_8 #65:litterbug n65_7->n65_8 n4_31 #4:current_lag n65_18->n4_31 n65_14 #65:is_litter n65_8->n65_14 n65_9 #65:is_watching n65_8->n65_9 n65_10 #65:send_home n65_8->n65_10 n65_14->n45_5 n65_10->n45_5 n65_10->n45_3 n65_12 #65:ejectit n65_10->n65_12 n65_15 #65:init_for_core n2_28 #2:init_for_core n65_15->n2_28 n65_16 #65:clean_status n65_16->n107_43 n65_16->n48_8 n65_16->n65_18 n47_7 #47:remove_duplicates n65_16->n47_7 n35_7 #35:english_time n65_16->n35_7 n65_17 #65:is_cleaning n65_13 #65:is_object_cleaned n65_17->n65_13 n65_20 #65:move_players_home n65_20->n48_8 n65_20->n42_0 n65_20->n51_37 n45_16 #45:connected n65_20->n45_16 n65_21 #65:move_em n65_20->n65_21 n3_12 #3:enterfunc n65_21->n3_12 n65_23 #65:set_moveto_task n65_21->n65_23 n65_22 #65:take_away_msg n65_21->n65_22 n65_22->n20_34

Source

look_self

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

none

Source

1player:tell_lines(this:description());
2player:tell($string_utils:pronoun_sub("%S %<is> moving around from room to room, cleaning up.", this));

cleanup

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

none

Source

1"$housekeeper:cleanup([insist]) => clean up player's objects. Argument is 'up' or 'up!' for manually requested cleanups (notify player differently)";
2if (caller_perms() != this)
3return E_PERM;
4endif
5for object in (this.clean)
6x = object in this.clean;
7if (this.requestors[x] == player)
8if (result = this:replace(object, @args))
9player:tell(result, ".");
10endif
11endif
12$command_utils:suspend_if_needed(0);
13endfor
14player:tell("The housekeeper has finished cleaning up your objects.");

replace

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1"replace the object given to its proper spot (if there is one).";
2{object, ?insist = 0} = args;
3i = object in this.clean;
4if (!i)
5return tostr(object, " is not on the ", this.name, "'s cleanup list");
6endif
7place = this.destination[i];
8if (!(($recycler:valid(object) && ($recycler:valid(place) || (place == #-1))) && (!(object.location in this.recycle_bins))))
9"object no longer valid (recycled or something), remove it.";
10this.clean = listdelete(this.clean, i);
11this.requestors = listdelete(this.requestors, i);
12this.destination = listdelete(this.destination, i);
13return tostr(object) + " is no longer valid, removed from cleaning list";
14endif
15oldloc = loc = object.location;
16if (object.location == place)
17"already in its place";
18return "";
19endif
20requestor = this.requestors[i];
21if (insist != "up!")
22if ($code_utils:verb_or_property(object, "in_use"))
23return ("Not returning " + object.name) + " because it claims to be in use";
24endif
25for thing in (object.contents)
26if (thing:is_listening())
27return ((("Not returning " + object.name) + " because ") + thing.name) + " is inside";
28endif
29$command_utils:suspend_if_needed(0);
30endfor
31if (valid(loc) && (loc != $limbo))
32if (loc:is_listening())
33return ((("Not returning " + object.name) + " because ") + loc.name) + " is holding it";
34endif
35for y in (loc:contents())
36if ((y != object) && y:is_listening())
37return (((("Not returning " + object.name) + " because ") + y.name) + " is in ") + loc.name;
38endif
39$command_utils:suspend_if_needed(0);
40endfor
41endif
42endif
43if (valid(place) && (!place:acceptable(object)))
44return (place.name + " won't accept ") + object.name;
45endif
46try
47requestor:tell("As you requested, the housekeeper tidies ", $string_utils:nn(object), " from ", $string_utils:nn(loc), " to ", $string_utils:nn(place), ".");
48if ($object_utils:has_verb(loc, "announce_all_but"))
49loc:announce_all_but({requestor, object}, "At ", requestor.name, "'s request, the ", this.name, " sneaks in, picks up ", object.name, " and hurries off to put ", ($object_utils:has_property(object, "po") && (typeof(object.po) == STR)) ? object.po | "it", " away.");
50endif
51except (ANY)
52"Ignore errors";
53endtry
54this:moveit(object, place, requestor);
55if ((loc = object.location) == oldloc)
56return (object.name + " wouldn't go; ") + ((!place:acceptable(object)) ? (" perhaps " + $string_utils:nn(place)) + " won't let it in" | ((" perhaps " + $string_utils:nn(loc)) + " won't let go of it"));
57endif
58try
59object:tell("The housekeeper puts you away.");
60if ($object_utils:isa(loc, $room))
61loc:announce_all_but({object}, "At ", requestor.name, "'s request, the housekeeper sneaks in, deposits ", object:title(), " and leaves.");
62else
63loc:tell("You notice the housekeeper sneak in, give you ", object:title(), " and leave.");
64endif
65except (ANY)
66"Ignore errors";
67endtry
68return "";

cleanup_list

Spec any none noneFlags rxdOwner #29Definer #65

Referenced by

none

Source

1if (args)
2if (!valid(who = args[1]))
3return;
4endif
5player:tell(who.name, "'s personal cleanup list:");
6else
7who = 0;
8player:tell("Housekeeper's complete cleanup list:");
9endif
10player:tell("------------------------------------------------------------------");
11printed_anything = 0;
12objs = this.clean;
13reqs = this.requestors;
14dest = this.destination;
15for i in [1..length(objs)]
16$command_utils:suspend_if_needed(2);
17req = reqs[i];
18ob = objs[i];
19place = dest[i];
20if (((who == 0) || (req == who)) || (ob.owner == who))
21if (!valid(ob))
22player:tell($string_utils:left(tostr(ob), 7), $string_utils:left("** recycled **", 50), "(", req.name, ")");
23else
24player:tell($string_utils:left(tostr(ob), 7), $string_utils:left(ob.name, 26), "=>", $string_utils:left(tostr(place), 7), place.name || "nowhere", " (", req.name, ")");
25endif
26printed_anything = 1;
27endif
28endfor
29if (!printed_anything)
30player:tell("** The housekeeper has nothing in the cleanup list.");
31endif
32player:tell("------------------------------------------------------------------");

add_cleanup

Spec any any anyFlags rxdOwner #29Definer #65

Referenced by

none

Source

1if (!$perm_utils:controls(caller_perms(), this))
2return E_PERM;
3endif
4{what, ?who = player, ?where = what.location} = args;
5if ((what < #1) || (!valid(what)))
6return "invalid object";
7endif
8if ($object_utils:isa(who, $guest))
9return tostr("Guests can't use the ", this.name, ".");
10endif
11if (!is_player(who))
12return tostr("Non-players can't use the ", this.name, ".");
13endif
14if (!valid(where))
15return tostr("The ", this.name, "doesn't know how to find ", where, " in order to put away ", what.name, ".");
16endif
17if (is_player(what))
18return ("The " + this.name) + " doesn't do players, except to cart them home when they fall asleep.";
19endif
20for x in (this.eschews)
21if ($object_utils:isa(what, x[1]))
22ok = 0;
23for y in [3..length(x)]
24if ($object_utils:isa(what, x[y]))
25ok = 1;
26endif
27endfor
28if (!ok)
29return tostr("The ", this.name, " doesn't do ", x[2], "!");
30endif
31endif
32endfor
33if ($object_utils:has_callable_verb(where, "litterp") ? where:litterp(what) | ((where in this.public_places) && (!(what in where.residents))))
34return tostr("The ", this.name, " won't litter ", where.name, "!");
35endif
36if (i = what in this.clean)
37if ((!this:controls(i, who)) && valid(this.destination[i]))
38return tostr(this.requestors[i].name, " already asked that ", what.name, " be kept at ", this.destination[i].name, "!");
39endif
40this.requestors[i] = who;
41this.destination[i] = where;
42else
43this.clean = {what, @this.clean};
44this.requestors = {who, @this.requestors};
45this.destination = {where, @this.destination};
46endif
47return tostr("The ", this.name, " will keep ", what.name, " (", what, ") at ", valid(where) ? ((where.name + " (") + tostr(where)) + ")" | where, ".");

remove_cleanup

Spec any none noneFlags rxdOwner #29Definer #65

Referenced by

none

Source

1if (!$perm_utils:controls(caller_perms(), this))
2return E_PERM;
3endif
4{what, ?who = player} = args;
5if (i = what in this.clean)
6if (!this:controls(i, who))
7return tostr("You may remove an object from ", this.name, " list only if you own the object, the place it is kept, or if you placed the original cleaning order.");
8endif
9this.clean = listdelete(this.clean, i);
10this.destination = listdelete(this.destination, i);
11this.requestors = listdelete(this.requestors, i);
12return tostr(what.name, " (", what, ") removed from cleanup list.");
13else
14return tostr(what.name, " not in cleanup list.");
15endif

controls

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1"does player control entry I?";
2{i, who} = args;
3if ((who in {this.owner, @this.owners}) || who.wizard)
4return "Yessir.";
5endif
6cleanable = this.clean[i];
7if (this.requestors[i] == who)
8return "you asked for the previous result, you can change this one.";
9elseif (((who == cleanable.owner) || (!valid(dest = this.destination[i]))) || (who == dest.owner))
10return "you own the object or the place where it is being cleaned to, or the destination is no longer valid.";
11else
12return "";
13endif

continuous

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

none

Source

1"start the housekeeper cleaning continuously. Kill any previous continuous";
2"task. Not meant to be called interactively.";
3if (!$perm_utils:controls(caller_perms(), this))
4return E_PERM;
5endif
6if ($code_utils:task_valid(this.task))
7taskn = this.task;
8this.task = 0;
9kill_task(taskn);
10endif
11fork taskn (0)
12while (1)
13index = 1;
14while (index < length(this.clean))
15x = this.clean[index];
16index = index + 1;
17try
18this:replace(x);
19except id (ANY)
20endtry
21suspend(this.testing ? 2 | this:time());
22endwhile
23suspend(5);
24this:litterbug();
25endwhile
26endfork
27this.task = taskn;

litterbug

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1for room in (this.public_places)
2for thingy in (room.contents)
3suspend(10);
4if (((thingy.location == room) && this:is_litter(thingy)) && (!this:is_watching(thingy, $nothing)))
5"if it is litter and no-one is watching";
6fork (0)
7this:send_home(thingy);
8endfork
9suspend(0);
10endif
11endfor
12endfor

is_watching

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1return valid(thing = args[1]) && thing:is_listening();

send_home

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1if (caller != this)
2return E_PERM;
3endif
4litter = args[1];
5littering = litter.location;
6this:ejectit(litter, littering);
7home = litter.location;
8if ($object_utils:isa(home, $room))
9home:announce_all("The ", this.name, " sneaks in, deposits ", litter:title(), " and leaves.");
10else
11home:tell("You notice the ", this.name, " sneak in, give you ", litter:title(), " and leave.");
12endif
13if ($object_utils:has_callable_verb(littering, "announce_all_but"))
14littering:announce_all_but({litter}, "The ", this.name, " sneaks in, picks up ", litter:title(), " and rushes off to put it away.");
15endif

moveit

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

Source

1"Wizardly verb to move object with requestor's permission";
2if (caller != this)
3return E_PERM;
4else
5set_task_perms(player = args[3]);
6return args[1]:moveto(args[2]);
7endif

ejectit

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

Source

1"this:ejectit(object,room): Eject args[1] from args[2].  Callable only by housekeeper's quarters verbs.";
2if (caller == this)
3args[2]:eject(args[1]);
4endif

is_object_cleaned

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1what = args[1];
2if (!(where = what in this.clean))
3return 0;
4else
5return {this.destination[where], this.requestors[where]};
6endif

is_litter

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1thingy = args[1];
2for x in (this.litter)
3if ($object_utils:isa(thingy, x[1]) && (!$object_utils:isa(thingy, x[2])))
4return 1;
5endif
6endfor
7return 0;

init_for_core

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

none

Source

1if (caller_perms().wizard)
2this.password = "Impossible password to type";
3this.last_password_time = 0;
4this.litter = {};
5this.public_places = {};
6this.requestors = {};
7this.destination = {};
8this.clean = {};
9this.eschews = {};
10this.recycle_bins = {};
11this.cleaning = #-1;
12this.task = 0;
13this.owners = {#2};
14this.mail_forward = {#2};
15this.player_queue = {};
16this.move_player_task = 0;
17this.moveto_task = 0;
18pass(@args);
19endif

clean_status

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

none

Source

1count = 0;
2for i in (this.requestors)
3if (i == player)
4count = count + 1;
5endif
6$command_utils:suspend_if_needed(1);
7endfor
8player:tell("Number of items in cleanup list: ", tostr(length(this.clean)));
9player:tell("Number of items you requested to be tidied: ", tostr(count));
10player:tell("Number of requestors: ", tostr(length($list_utils:remove_duplicates(this.requestors))));
11player:tell("Time to complete one cleaning circuit: ", $time_utils:english_time(length(this.clean) * this:time()));

is_cleaning

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

none

Source

1"return a string status if the hosuekeeper is cleaning this object";
2cleanable = args[1];
3info = this:is_object_cleaned(cleanable);
4if (info == 0)
5return tostr(cleanable.name, " is not cleaned by the ", this.name, ".");
6else
7return tostr(cleanable.name, " is kept tidy at ", info[1].name, " (", info[1], ") at ", info[2].name, "'s request.");
8endif

time

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1"Returns the amount of time to suspend between objects while continuous cleaning.";
2"Currently set to try to complete cleaning circuit in one hour, but not exceed one object every 20 seconds.";
3return max(20 + $login:current_lag(), length(this.clean) ? 3600 / length(this.clean) | 0);

acceptable

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

none

Source

1return caller == this;

move_players_home

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

none

Source

1if (!$perm_utils:controls(caller_perms(), this))
2"perms don't control the $housekeeper; probably not called by $room:disfunc then. Used to let args[1] call this. No longer.";
3return E_PERM;
4endif
5this.player_queue = {@this.player_queue, {args[1], time() + 300}};
6if ($code_utils:task_valid(this.move_player_task))
7"the move-players-home task is already running";
8return;
9endif
10fork tid (10)
11while (this.player_queue)
12if ((mtime = this.player_queue[1][2]) < (time() + 10))
13who = this.player_queue[1][1];
14"Remove from queue first so that if they do something malicious, like put a kill_task in a custom :accept_for_abode, they won't be in the queue when the task restarts with the next player disconnect. Ho_Yan 12/3/98";
15this.player_queue = listdelete(this.player_queue, 1);
16if (is_player(who) && (!$object_utils:connected(who)))
17dest = `who.home:accept_for_abode(who) ! ANY => 0' ? who.home | $player_start;
18if (who.location != dest)
19player = who;
20this:move_em(who, dest);
21endif
22endif
23else
24suspend(mtime - time());
25endif
26$command_utils:suspend_if_needed(1);
27endwhile
28endfork
29this.move_player_task = tid;

move_em

Spec this none thisFlags rxdOwner #361Definer #65

Referenced by

Source

1if (caller == this)
2{who, dest} = args;
3set_task_perms(who);
4fork (0)
5fork (0)
6"This is forked so that it's protected from aborts due to errors in the player's :moveto verb.";
7if (who.location != dest)
8"Unfortunately, if who is -already- at $player_start, move() won't call :enterfunc and the sleeping body never goes to $limbo. Have to call explicitly for that case. Ho_Yan 11/2/95";
9if (who.location == $player_start)
10$player_start:enterfunc(who);
11else
12move(who, $player_start);
13endif
14endif
15endfork
16start = who.location;
17this:set_moveto_task();
18who:moveto(dest);
19if (who.location != start)
20start:announce(this:take_away_msg(who));
21endif
22if (who.location == dest)
23dest:announce(this:drop_off_msg(who));
24endif
25endfork
26else
27return E_PERM;
28endif

take_away_msg drop_off_msg

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1return $string_utils:pronoun_sub(this.(verb), args[1], this);

set_moveto_task

Spec this none thisFlags rxdOwner #29Definer #65

Referenced by

Source

1"sets $housekeeper.moveto_task to the current task_id() so player:moveto's can check for validity.";
2if (caller != this)
3return E_PERM;
4endif
5this.moveto_task = task_id();