Generic Guest #25

Parent #89Owner #29Flags read, fertileSource hellcore/hellcore.db

Aliases: Generic Guest

19 verbs · 195 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
bootthis none thisrxd#258
disfuncthis none thisrxd#2518
deferthis none thisrxd#2532
mail_catch_upthis none thisrxd#251
createany any anyrxd#255
ejectthis none thisrxd#251
logthis none thisrxd#258
confuncthis none thisrxd#257
log_disconnectthis none thisrxd#251
@last-c*onnectionany none nonerxd#253
my_huhthis none thisrxd#255
@read @peekany any anyrxd#251
set_current_folderthis none thisrxd#252
init_for_corethis none thisrxd#255
set_name set_aliasesthis none thisrxd#256
extra_confunc_msgthis none thisrxd#251
do_resetthis none thisrxd#2530
@requestany any anyrxd#2515
connection_name_hashthis none thisrxd#258

Properties

PropertyDefinerFlagsOwnerValue
default_gender#25r#29"neuter"
default_description#25r#29{"By definition, guests appear nondescript."}
request#25#3610
extra_confunc_msg#25rc#29""
free_to_use#25r#291
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#33rc#29<clear>
mail_forward#33rc#29"%t (%[#t]) is a guest character."
mail_options#33rc#29<clear>
message_keep_date#33rc#29<clear>
messages_kept#33rc#29<clear>
current_message#33c#29<clear>
messages#33c#29<clear>
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<clear>
previous_connection#6#361<clear>
email_address#6#361""
last_disconnect_time#6r#361<clear>
help#6rc#290
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<clear>
linelen#6r#2979
current_folder#6c#29<clear>
all_connect_places#6#361<clear>
last_connect_place#6#361<clear>
lines#6c#2930
page_absent_msg#6rc#29<clear>
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#290
password#6#3610
paranoid#6rc#291
display_options#6rc#29<clear>
verb_subs#6rc#29<clear>
first_connect_time#6r#361<clear>
size_quota#6#29{0, 0, 0, 0}
last_password_time#6#361<clear>
last_connect_attempt#6#361<clear>
prefs#6rc#29<clear>
ansi#6rc#29<clear>
last_hit_meter#6rc#29"~1b[1m~1b[37m[~1b[32m|||||||||||||||||||||||||||||~1b[31m*~1b[37m~1b[1m]~1b[0m"
doing_msg#6rc#29<clear>
xp_total#6rc#29133
party#6rc#29<clear>
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#29<clear>
rumors#6rc#29<clear>
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<clear>
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<clear>
page_receive_msg#6rc#29<clear>
page_msg#6rc#29<clear>
focus_skills#6rc#29<clear>
skillpoints#100rc#29<clear>
xp#100rc#29100
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#29488
unarmed_weapon#107rc#29<clear>
size#107rc#29<clear>
posture#107rc#29<clear>
gender#107rc#29<clear>
respawn#107rc#29<clear>
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<clear>
health_max#107rc#29<clear>
fighting#107rc#29<clear>
last_dodge_time#107rc#29<clear>
following#107rc#29<clear>
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<clear>
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#29-1
last_heartbeat#107rc#29<clear>
dead#107rc#29<clear>
_tohit_next#107rc#29<clear>
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#361<clear>
executing#92r#361<clear>
process_queue#92r#3610
help_msg#92rc#29<clear>
last_action#92r#361<clear>
article#92rc#29<clear>
last_last_action#92rc#29<clear>
action_count#92rc#29<clear>
aliases#1r#362{"Generic Guest"}
description#1rc#29{"By definition, guests appear nondescript."}
object_size#1r#29{17563, 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): #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 n25_0 #25:boot n6_9 #6:notify n25_0->n6_9 n20_8 #20:from_seconds n25_0->n20_8 n4_14 #4:player_creation_enabled n25_0->n4_14 n25_1 #25:disfunc n42_0 #42:controls n25_1->n42_0 n25_8 #25:log_disconnect n25_1->n25_8 n6_151 #6:name n25_1->n6_151 n20_34 #20:pronoun_sub n25_1->n20_34 n25_16 #25:do_reset n25_1->n25_16 n45_0 #45:has_property n25_16->n45_0 n1_7 #1:set_description n25_16->n1_7 n107_37 #107:set_gender n25_16->n107_37 n25_5 #25:eject n25_16->n25_5 n6_34 #6:remove_feature n25_16->n6_34 n6_33 #6:add_feature n25_16->n6_33 n45_22 #45:descendants n25_16->n45_22 n25_2 #25:defer n4_18 #4:blacklisted n25_2->n4_18 n20_53 #20:connection_hostname n25_2->n20_53 n45_23 #45:leaves n25_2->n45_23 n25_4 #25:create n25_4->n4_14 n107_43 #107:tell n25_4->n107_43 n4_15 #4:newt_registration_string n25_4->n4_15 n25_7 #25:confunc n25_7->n42_0 n33_49 #33:confunc n25_7->n33_49 n33_53 #33:tell_lines n25_7->n33_53 n25_15 #25:extra_confunc_msg n25_7->n25_15 n25_15->n20_34 n25_9 #25:@last-c*onnection n25_9->n107_43 n25_10 #25:my_huh n6_4 #6:my_huh n25_10->n6_4 n25_11 #25:@read n33_17 #33:@read n25_11->n33_17 n25_12 #25:set_current_folder n33_13 #33:set_current_folder n25_12->n33_13 n25_14 #25:set_name n25_14->n42_0 n6_26 #6:set_name n25_14->n6_26 n25_17 #25:@request n25_17->n107_43 n6_10 #6:notify_lines n25_17->n6_10 n51_45 #51:verb_usage n25_17->n51_45 n4_27 #4:request_character n25_17->n4_27 n25_18 #25:connection_name_hash n25_18->n20_53

Source

boot

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if (!caller_perms().wizard)
2return;
3endif
4player = this;
5this:notify(tostr("Sorry, but you've been here for ", $string_utils:from_seconds(connected_seconds(this)), " and someone else wants to be a guest now.  Feel free to come back", @$login:player_creation_enabled(player) ? {" or even create your own character if you want..."} | {" or type `create' to learn more about how to get a character of your own."}));
6"boot_player(this)";
7return;
8"See #0:user_reconnected.";

disfunc

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if ((((valid(cp = caller_perms()) && (caller != this)) && (!$perm_utils:controls(cp, this))) && (cp != this)) && (caller != #0))
2return E_PERM;
3endif
4"Don't let another guest use this one until all this is done. See :defer, Ho_Yan 1/19/94";
5this.free_to_use = 0;
6this:log_disconnect();
7this:erase_paranoid_data();
8try
9if (this.location != this.home)
10this:room_announce(player:name(), " has disconnected.");
11this:room_announce($string_utils:pronoun_sub($housekeeper.take_away_msg, this, $housekeeper));
12move(this, this.home);
13this:room_announce($string_utils:pronoun_sub($housekeeper.drop_off_msg, this, $housekeeper));
14endif
15finally
16this:do_reset();
17this.free_to_use = 1;
18endtry

defer

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1"Called by #0:connect_player when this object is about to be used as the next guest character.  Usually returns `this', but if for some reason some other guest character should be used, that player object is returned instead";
2if (!caller_perms().wizard)
3"...caller is not :do_login_command; doesn't matter what we return...";
4return this;
5elseif ($login:blacklisted($string_utils:connection_hostname(connection_name(player))))
6return #-2;
7elseif (!is_connected(this))
8"...not logged in, no problemo...";
9return this;
10endif
11longest = 900;
12"...guests get 15 minutes before they can be dislodged...";
13candidate = #-1;
14free = {};
15for g in ($object_utils:leaves($guest))
16if (!is_player(g))
17"...a toaded guest?...";
18elseif ((!(con = g in connected_players())) && g.free_to_use)
19"...yay; found an unused guest...and their last :disfunc is complete";
20free = {@free, g};
21elseif (con && ((t = connected_seconds(g)) > longest))
22longest = t;
23candidate = g;
24endif
25endfor
26if (free)
27candidate = free[random($)];
28elseif (valid(candidate))
29"...someone's getting bumped...";
30candidate:boot();
31endif
32return candidate;

mail_catch_up

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1return;

create

Spec any any anyFlags rxdOwner #29Definer #25

Referenced by

none

Source

1if ($login:player_creation_enabled(player))
2player:tell("First @quit, then connect to the MOO again and, rather than doing `connect guest' do `create <name> <password>'");
3else
4player:tell($login:registration_string());
5endif

eject

Spec this none thisFlags rxdOwner #29Definer #25

Referenced by

Source

1return pass(@args);

log

Spec this none thisFlags rxdOwner #29Definer #25

Referenced by

none

Source

1":log(islogin,time,where) adds an entry to the connection log for this guest.";
2if (caller != this)
3return E_PERM;
4elseif (length(this.connect_log) < this.max_connect_log)
5this.connect_log = {args, @this.connect_log};
6else
7this.connect_log = {args, @this.connect_log[1..this.max_connect_log - 1]};
8endif

confunc

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if ((((valid(cp = caller_perms()) && (caller != this)) && (!$perm_utils:controls(cp, this))) && (cp != this)) && (caller != #0))
2return E_PERM;
3else
4ret = pass(@args);
5this:tell_lines(this:extra_confunc_msg());
6return ret;
7endif

log_disconnect

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

Source

1

@last-c*onnection

Spec any none noneFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if (!valid(caller_perms()))
2player:tell("Sorry, that information is not available.");
3endif

my_huh

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if (caller_perms() != this)
2return E_PERM;
3else
4return pass(@args);
5endif

@read @peek

Spec any any anyFlags rxdOwner #29Definer #25

Referenced by

none

Source

1return pass(@args);

set_current_folder

Spec this none thisFlags rxdOwner #29Definer #25

Referenced by

none

Source

1return pass(@args);
2"only for setting permission";

init_for_core

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1if (caller_perms().wizard)
2this.extra_confunc_msg = "";
3clear_property(this, "features");
4clear_property(this, "rooms");
5endif

set_name set_aliases

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1"disallow guests from setting aliases on themselves";
2if ($perm_utils:controls(caller_perms(), this))
3return pass(@args);
4else
5return E_PERM;
6endif

extra_confunc_msg

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

Source

1return $string_utils:pronoun_sub(this.(verb));

do_reset

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

Source

1if (!caller_perms().wizard)
2return E_PERM;
3else
4flush_input(this, 0);
5for x in ({"paranoid", "lines", "responsible", "linelen", "linebuffer", "brief", "gaglist", "rooms", "pagelen", "current_message", "current_folder", "messages", "messages_going", "request", "mail_options", "edit_options", "home", "spurned_objects", "web_info"})
6if ($object_utils:has_property(parent(this), x))
7clear_property(this, x);
8endif
9endfor
10this:set_description(this.default_description);
11this:set_gender(this.default_gender);
12for x in (this.contents)
13this:eject(x);
14endfor
15for x in (this.features)
16if (!(x in $guest.features))
17this:remove_feature(x);
18endif
19endfor
20for x in ($guest.features)
21if (!(x in this.features))
22this:add_feature(x);
23endif
24endfor
25for x in ($object_utils:descendants($generic_editor))
26if (loc = this in x.active)
27x:kill_session(loc);
28endif
29endfor
30endif

@request

Spec any any anyFlags rxdOwner #361Definer #25

Referenced by

none

Source

1"Copied from Generic Guest (#5678):@request by Froxx (#49853) Mon Apr  4 10:49:26 1994 PDT";
2"Usage:  @request <player-name> for <email-address>";
3if (player != this)
4return player:tell(E_PERM);
5endif
6if (this.request)
7return player:tell("Sorry, you appear to have already requested a character.");
8endif
9name = dobjstr;
10if ((prepstr != "for") || ((!dobjstr) || index(address = iobjstr, " ")))
11return player:notify_lines($code_utils:verb_usage());
12endif
13if ($login:request_character(player, name, address))
14this.request = 1;
15endif

connection_name_hash

Spec this none thisFlags rxdOwner #361Definer #25

Referenced by

none

Source

1"Compute an encrypted hash of the guest's (last) connection, using 'crypt'. Basically, you can't tell where the guest came from, but it is unlikely that two guests will have the same hash";
2"You can use guest:connection_name_hash(seed) as a string to identify whether two guests are from the same place.";
3HASH = toint(caller_perms());
4host = $string_utils:connection_hostname(this.last_connect_place);
5for i in [1..length(host)]
6HASH = (HASH * 14) + index($string_utils.ascii, host[i]);
7endfor
8return crypt(tostr(HASH), @args);