housekeeper #65
Aliases: housekeeper
24 verbs · 220 properties · 0 children
Verbs
| Verb | Spec | Flags | Definer | Lines |
|---|---|---|---|---|
look_self | this none this | rxd | #65 | 2 |
cleanup | this none this | rxd | #65 | 14 |
replace | this none this | rxd | #65 | 68 |
cleanup_list | any none none | rxd | #65 | 32 |
add_cleanup | any any any | rxd | #65 | 47 |
remove_cleanup | any none none | rxd | #65 | 15 |
controls | this none this | rxd | #65 | 13 |
continuous | this none this | rxd | #65 | 27 |
litterbug | this none this | rxd | #65 | 12 |
is_watching | this none this | rxd | #65 | 1 |
send_home | this none this | rxd | #65 | 15 |
moveit | this none this | rxd | #65 | 7 |
ejectit | this none this | rxd | #65 | 4 |
is_object_cleaned | this none this | rxd | #65 | 6 |
is_litter | this none this | rxd | #65 | 7 |
init_for_core | this none this | rxd | #65 | 19 |
clean_status | this none this | rxd | #65 | 11 |
is_cleaning | this none this | rxd | #65 | 8 |
time | this none this | rxd | #65 | 3 |
acceptable | this none this | rxd | #65 | 1 |
move_players_home | this none this | rxd | #65 | 29 |
move_em | this none this | rxd | #65 | 28 |
take_away_msg drop_off_msg | this none this | rxd | #65 | 1 |
set_moveto_task | this none this | rxd | #65 | 5 |
Properties
| Property | Definer | Flags | Owner | Value |
|---|---|---|---|---|
recycle_bins | #65 | rc | #29 | {} |
owners | #65 | rc | #29 | {#2} |
cleaning | #65 | rc | #29 | #-1 |
litter | #65 | rc | #29 | {} |
eschews | #65 | rc | #29 | {} |
public_places | #65 | rc | #29 | {} |
task | #65 | rc | #29 | 0 |
requestors | #65 | rc | #29 | {} |
destination | #65 | rc | #29 | {} |
clean | #65 | r | #29 | {} |
testing | #65 | rc | #29 | 0 |
player_queue | #65 | r | #29 | {} |
take_away_msg | #65 | rc | #29 | "%[tpsc] arrives to cart %n off to bed." |
drop_off_msg | #65 | rc | #29 | "%[tpsc] arrives to drop off %n, who is sound asleep." |
move_player_task | #65 | r | #29 | 0 |
moveto_task | #65 | rc | #29 | 0 |
cleaning_index | #65 | rc | #29 | 0 |
eval_subs | #50 | r | #29 | {} |
eval_ticks | #50 | r | #29 | <clear> |
prog_options | #50 | rc | #29 | <clear> |
event_debug_filter | #50 | rc | #29 | <clear> |
progkill_msg | #50 | rc | #29 | <clear> |
progburn_msg | #50 | rc | #29 | <clear> |
proglight_msg | #50 | rc | #29 | <clear> |
heal_msg | #50 | rc | #29 | <clear> |
heal_self_msg | #50 | rc | #29 | <clear> |
revert_form_msg | #50 | rc | #29 | <clear> |
eval_env | #50 | rc | #29 | <clear> |
build_options | #2 | rc | #29 | <clear> |
who_visible | #2 | rc | #29 | <clear> |
join_msg | #89 | rc | #29 | <clear> |
object_port_msg | #89 | rc | #29 | <clear> |
victim_port_msg | #89 | rc | #29 | <clear> |
thing_arrive_msg | #89 | rc | #29 | <clear> |
othing_port_msg | #89 | rc | #29 | <clear> |
thing_port_msg | #89 | rc | #29 | <clear> |
player_arrive_msg | #89 | rc | #29 | <clear> |
oplayer_port_msg | #89 | rc | #29 | <clear> |
player_port_msg | #89 | rc | #29 | <clear> |
self_arrive_msg | #89 | rc | #29 | <clear> |
oself_port_msg | #89 | rc | #29 | <clear> |
self_port_msg | #89 | rc | #29 | <clear> |
real_name | #89 | rc | #29 | <clear> |
real_aliases | #89 | rc | #29 | <clear> |
zots | #89 | rc | #29 | <clear> |
bedroom | #89 | rc | #29 | <clear> |
chillmin | #89 | rc | #29 | <clear> |
_mail_task | #33 | rc | #29 | <clear> |
messages_going | #33 | c | #29 | <clear> |
mail_lists | #33 | rc | #29 | <clear> |
mail_notify | #33 | r | #362 | <clear> |
mail_forward | #33 | rc | #29 | {#2} |
mail_options | #33 | rc | #29 | {} |
message_keep_date | #33 | rc | #29 | <clear> |
messages_kept | #33 | rc | #29 | <clear> |
current_message | #33 | c | #29 | <clear> |
messages | #33 | c | #29 | {} |
mail_hack | #33 | rc | #29 | <clear> |
barcolor | #33 | rc | #29 | <clear> |
autowield | #33 | rc | #29 | <clear> |
bug | #33 | rc | #29 | <clear> |
readied_weapon | #33 | rc | #29 | <clear> |
unread_mail | #33 | rc | #29 | <clear> |
features | #6 | r | #29 | {#84, #83} |
previous_connection | #6 | | #361 | <clear> |
email_address | #6 | | #361 | "" |
last_disconnect_time | #6 | r | #361 | <clear> |
help | #6 | rc | #29 | <clear> |
more_msg | #6 | rc | #29 | <clear> |
linetask | #6 | r | #29 | <clear> |
linesleft | #6 | r | #29 | <clear> |
linebuffer | #6 | | #29 | <clear> |
pagelen | #6 | r | #29 | <clear> |
owned_objects | #6 | r | #361 | {} |
linelen | #6 | r | #29 | -80 |
current_folder | #6 | c | #29 | <clear> |
all_connect_places | #6 | | #361 | <clear> |
last_connect_place | #6 | | #361 | <clear> |
lines | #6 | c | #29 | <clear> |
page_absent_msg | #6 | rc | #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 | #6 | rc | #29 | <clear> |
page_echo_msg | #6 | rc | #29 | <clear> |
edit_options | #6 | rc | #29 | <clear> |
last_connect_time | #6 | r | #361 | <clear> |
ownership_quota | #6 | | #29 | 1073741823 |
password | #6 | | #361 | "Impossible password to type" |
paranoid | #6 | rc | #29 | <clear> |
display_options | #6 | rc | #29 | <clear> |
verb_subs | #6 | rc | #29 | <clear> |
first_connect_time | #6 | r | #361 | 0 |
size_quota | #6 | | #29 | {100000, 24743, 1084262400, 0} |
last_password_time | #6 | | #361 | 0 |
last_connect_attempt | #6 | | #361 | <clear> |
prefs | #6 | rc | #29 | list of 17{1, 0, 0, 0, 0, 0, 0, 0, {"showmap", 1}, 0, 0, 0, 0, 0, 0, 0, 0} |
ansi | #6 | rc | #29 | <clear> |
last_hit_meter | #6 | rc | #29 | "~1b[1m~1b[37m[~1b[32m|||||||||||||||||||||||||||||~1b[32m*~1b[37m~1b[1m]~1b[0m" |
doing_msg | #6 | rc | #29 | <clear> |
xp_total | #6 | rc | #29 | 225 |
party | #6 | rc | #29 | #-1 |
rooms | #6 | r | #361 | <clear> |
client | #6 | rc | #29 | <clear> |
last_death_time | #6 | rc | #29 | <clear> |
default_weapon | #6 | rc | #29 | <clear> |
thirst | #6 | rc | #29 | <clear> |
may_chat | #6 | rc | #29 | <clear> |
idlemsg | #6 | rc | #29 | <clear> |
eula | #6 | rc | #29 | <clear> |
birthdate | #6 | rc | #29 | <clear> |
bad_words | #6 | rc | #29 | <clear> |
char_start_time | #6 | rc | #29 | 0 |
rumors | #6 | rc | #29 | {{#198411, "Commander Andy"}, {#231279, "Barry"}} |
last_broadcast | #6 | rc | #29 | <clear> |
ansihack | #6 | rc | #29 | <clear> |
last_death_callers | #6 | rc | #29 | <clear> |
char_extra_epochs | #6 | rc | #29 | <clear> |
code_name | #6 | rc | #29 | "" |
code_plural | #6 | rc | #29 | <clear> |
changeable_properties | #6 | rc | #29 | <clear> |
out_of_band_session | #6 | r | #29 | <clear> |
private_aliases | #6 | rc | #29 | <clear> |
quests_open | #6 | rc | #29 | <clear> |
quests | #6 | rc | #29 | list of 17{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} |
page_receive_msg | #6 | rc | #29 | <clear> |
page_msg | #6 | rc | #29 | <clear> |
focus_skills | #6 | rc | #29 | <clear> |
skillpoints | #100 | rc | #29 | <clear> |
xp | #100 | rc | #29 | 192 |
mutations | #100 | rc | #29 | <clear> |
mutation_slots | #100 | rc | #29 | <clear> |
char_start_age | #100 | rc | #29 | <clear> |
char_extra_age | #100 | rc | #29 | <clear> |
hands | #107 | rc | #29 | <clear> |
wielding | #107 | rc | #29 | {} |
health | #107 | rc | #29 | 500 |
unarmed_weapon | #107 | rc | #29 | <clear> |
size | #107 | rc | #29 | <clear> |
posture | #107 | rc | #29 | "standing" |
gender | #107 | rc | #29 | <clear> |
respawn | #107 | rc | #29 | #2800 |
corpse | #107 | rc | #29 | <clear> |
has_proper_name | #107 | rc | #29 | <clear> |
die_msg | #107 | rc | #29 | <clear> |
body_parts | #107 | rc | #29 | <clear> |
wearing | #107 | rc | #29 | <clear> |
armor | #107 | rc | #29 | <clear> |
last_swing_message | #107 | rc | #29 | {1204695450, #79678} |
health_max | #107 | rc | #29 | <clear> |
fighting | #107 | rc | #29 | {} |
last_dodge_time | #107 | rc | #29 | 1204695450 |
following | #107 | rc | #29 | #-1 |
icon | #107 | rc | #29 | <clear> |
say_msg | #107 | rc | #29 | <clear> |
say_to_msg | #107 | rc | #29 | <clear> |
afterlife | #107 | rc | #29 | <clear> |
get_msg | #107 | rc | #29 | <clear> |
drop_msg | #107 | rc | #29 | <clear> |
blood | #107 | rc | #29 | {} |
squeals | #107 | rc | #29 | <clear> |
prc | #107 | rc | #29 | <clear> |
ppc | #107 | rc | #29 | <clear> |
poc | #107 | rc | #29 | <clear> |
psc | #107 | rc | #29 | <clear> |
pr | #107 | rc | #29 | <clear> |
pp | #107 | rc | #29 | <clear> |
po | #107 | rc | #29 | <clear> |
ps | #107 | rc | #29 | <clear> |
pq | #107 | rc | #29 | <clear> |
pqc | #107 | rc | #29 | <clear> |
brief | #107 | rc | #29 | <clear> |
knockout | #107 | rc | #29 | <clear> |
knockout_msg | #107 | rc | #29 | <clear> |
body | #107 | rc | #29 | <clear> |
wake_msg | #107 | rc | #29 | <clear> |
owake_msg | #107 | rc | #29 | <clear> |
oknockout_msg | #107 | rc | #29 | <clear> |
friends | #107 | rc | #29 | <clear> |
home | #107 | rc | #29 | #1438 |
respawn_msg | #107 | rc | #29 | <clear> |
move_action | #107 | rc | #29 | <clear> |
heart | #107 | rc | #29 | 0 |
last_heartbeat | #107 | rc | #29 | 1189897908 |
dead | #107 | rc | #29 | <clear> |
_tohit_next | #107 | rc | #29 | 0 |
last_words_msg | #107 | rc | #29 | <clear> |
attacked | #107 | rc | #29 | <clear> |
opens_doors | #107 | rc | #29 | <clear> |
movable_by_explosion | #107 | rc | #29 | <clear> |
obscured | #107 | rc | #29 | <clear> |
obscured_desc_msg | #107 | rc | #29 | <clear> |
cooldowns | #107 | rc | #29 | <clear> |
combat_rounds | #107 | rc | #29 | <clear> |
encumbrance | #107 | rc | #29 | {0, 0} |
respawn_handler | #107 | rc | #29 | <clear> |
distant_form_msg | #107 | rc | #29 | <clear> |
block_msg | #107 | rc | #29 | <clear> |
attack_on_block | #107 | rc | #29 | 0 |
last_stunned | #107 | rc | #29 | <clear> |
nude_descs | #107 | rc | #29 | <clear> |
skills | #107 | rc | #29 | <clear> |
explode_msg | #107 | rc | #29 | <clear> |
death_listeners | #107 | rc | #29 | <clear> |
queue | #92 | r | #361 | {} |
preemptible | #92 | r | #361 | 1 |
executing | #92 | r | #361 | {} |
process_queue | #92 | r | #361 | 1388050276 |
help_msg | #92 | rc | #29 | <clear> |
last_action | #92 | r | #361 | {#82516, {5.0}, 1, ""} |
article | #92 | rc | #29 | <clear> |
last_last_action | #92 | rc | #29 | <clear> |
action_count | #92 | rc | #29 | <clear> |
aliases | #1 | r | #362 | {"housekeeper"} |
description | #1 | rc | #29 | "A very clean, neat, tidy person who doesn't mind lugging players and their gear all over the place." |
object_size | #1 | r | #29 | {27111, 1298433815} |
hidden_verbs | #1 | rc | #29 | <clear> |
phelp_msg | #1 | rc | #29 | <clear> |
weight | #1 | rc | #29 | <clear> |
owner_verbs | #1 | rc | #29 | <clear> |
plural_name | #1 | rc | #29 | <clear> |
client_image | #1 | rc | #29 | <clear> |
listening | #1 | rc | #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
Source
look_self
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
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
Referenced by
- #65:cleanup line 8:
this:replace - #65:continuous line 18:
this:replace
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
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
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
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
Referenced by
- #65:add_cleanup line 37:
this:controls - #65:remove_cleanup line 6:
this:controls
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
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
Referenced by
- #65:continuous line 24:
this:litterbug
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
Referenced by
- #65:litterbug line 4:
this:is_watching
Source
1return valid(thing = args[1]) && thing:is_listening();
send_home
Referenced by
- #65:litterbug line 7:
this:send_home
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
Referenced by
- #65:replace line 54:
this:moveit
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
Referenced by
- #65:send_home line 6:
this:ejectit
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
Referenced by
- #65:is_cleaning line 3:
this:is_object_cleaned
Source
1what = args[1]; 2if (!(where = what in this.clean)) 3return 0; 4else 5return {this.destination[where], this.requestors[where]}; 6endif
is_litter
Referenced by
- #65:litterbug line 4:
this:is_litter
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
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
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
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
Referenced by
- #65:continuous line 21:
this:time - #65:clean_status line 11:
this:time
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
Referenced by
none
Source
1return caller == this;
move_players_home
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
Referenced by
- #65:move_players_home line 20:
this:move_em
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
Referenced by
- #65:move_em line 20:
this:take_away_msg - #65:move_em line 23:
this:drop_off_msg
Source
1return $string_utils:pronoun_sub(this.(verb), args[1], this);
set_moveto_task
Referenced by
- #65:move_em line 17:
this:set_moveto_task
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();