Generic Guest #31

Parent #40Owner #36Flags readSource QuestCore.db

Aliases: Generic Guest

21 verbs · 75 properties · 0 children

Verbs

VerbSpecFlagsDefinerLines
bootthis none thisrxd#318
disfuncthis none thisrxd#3118
deferthis none thisrxd#3132
mail_catch_upthis none thisrxd#311
createany any anyrd#315
ejectthis none thisrxd#311
logthis none thisrxd#318
confuncthis none thisrxd#318
log_disconnectthis none thisrxd#316
@last-c*onnectionany none nonerxd#313
@read @peekany any anyrd#311
set_current_folderthis none thisrxd#312
init_for_corethis none thisrxd#315
set_name set_aliasesthis none thisrxd#316
extra_confunc_msgthis none thisrxd#311
do_resetthis none thisrxd#3130
@requestany any anyrd#3115
connection_name_hashthis none thisrxd#319
@kids @s*how @verbs @props @properties @exam*ine exam*ine where*is @where*is homeany none nonerd#315
@add-feature @addfeature @remove-feature @rmfeatureany none nonerd#315
my_huhthis none thisrxd#315

Properties

PropertyDefinerFlagsOwnerValue
default_gender#31r#36"neuter"
default_description#31r#36{"By definition, guests appear nondescript."}
request#31#20
extra_confunc_msg#31rc#36""
free_to_use#31r#361
_mail_task#40rc#36<clear>
messages_going#40c#36<clear>
mail_lists#40rc#36<clear>
mail_notify#40rc#36<clear>
mail_forward#40rc#36"%t (%[#t]) is a guest character."
mail_options#40rc#36<clear>
message_keep_date#40rc#36<clear>
messages_kept#40rc#36<clear>
current_message#40c#36{0, -1300000000}
messages#40c#36<clear>
ansi_options#95r#36<clear>
replace_codes#95r#36<clear>
features#6r#36{#92, #124}
previous_connection#6#2<clear>
email_address#6#2<clear>
last_disconnect_time#6r#2<clear>
help#6rc#360
more_msg#6rc#36<clear>
linetask#6r#36<clear>
linesleft#6r#36<clear>
linebuffer#6#36<clear>
pagelen#6r#36<clear>
owned_objects#6r#2<clear>
linelen#6r#3679
current_folder#6c#36<clear>
all_connect_places#6#2<clear>
last_connect_place#6#2<clear>
brief#6rc#36<clear>
lines#6c#3630
page_absent_msg#6rc#36<clear>
pq#6rc#36<clear>
pqc#6rc#36<clear>
page_origin_msg#6rc#36<clear>
page_echo_msg#6rc#36<clear>
edit_options#6rc#36<clear>
last_connect_time#6r#2<clear>
ownership_quota#6#360
gender#6rc#36<clear>
prc#6rc#36<clear>
ppc#6rc#36<clear>
poc#6rc#36<clear>
psc#6rc#36<clear>
pr#6rc#36<clear>
pp#6rc#36<clear>
po#6rc#36<clear>
ps#6rc#36<clear>
home#6rc#36<clear>
password#6#20
gaglist#6rc#36<clear>
paranoid#6rc#361
display_options#6rc#36<clear>
verb_subs#6rc#36<clear>
first_connect_time#6r#2<clear>
size_quota#6#36{0, 0, 0, 0}
last_password_time#6#2<clear>
last_connect_attempt#6#2<clear>
page_count_start_time#6r#2<clear>
ping_task#6r#36<clear>
infobar#6rc#36<clear>
value_base#102r#2<clear>
damage_base#102r#2<clear>
x_loc#102r#36<clear>
y_loc#102r#36<clear>
ansi_title#102r#36<clear>
obvious#102r#36<clear>
build_help#102rc#36<clear>
key#1c#36<clear>
aliases#1r#2{"Generic Guest"}
description#1rc#36{"By definition, guests appear nondescript."}
object_size#1r#36{14691, -1090650497}

Ancestry

Ancestors (nearest first): #40 Generic Mail Receiving Player#95 ANSI PC#6 generic player#102 subthing#1 Root Class

Children: none

Call graph

calls n31_0 #31:boot n95_3 #95:notify n31_0->n95_3 n20_8 #20:from_seconds n31_0->n20_8 n10_14 #10:player_creation_enabled n31_0->n10_14 n31_1 #31:disfunc n42_0 #42:controls n31_1->n42_0 n31_8 #31:log_disconnect n31_1->n31_8 n6_89 #6:erase_paranoid_data n31_1->n6_89 n31_15 #31:do_reset n31_1->n31_15 n20_53 #20:connection_hostname n31_8->n20_53 n12_0 #12:enter n31_8->n12_0 n31_5 #31:eject n31_15->n31_5 n52_0 #52:has_property n31_15->n52_0 n1_8 #1:set_description n31_15->n1_8 n6_56 #6:set_gender n31_15->n6_56 n6_63 #6:remove_feature n31_15->n6_63 n6_62 #6:add_feature n31_15->n6_62 n52_22 #52:descendants n31_15->n52_22 n31_2 #31:defer n10_18 #10:blacklisted n31_2->n10_18 n31_2->n20_53 n52_23 #52:leaves n31_2->n52_23 n31_4 #31:create n31_4->n10_14 n6_18 #6:tell n31_4->n6_18 n10_15 #10:newt_registration_string n31_4->n10_15 n1_16 #1:eject n31_5->n1_16 n31_7 #31:confunc n31_7->n42_0 n31_7->n20_53 n31_7->n12_0 n40_53 #40:confunc n31_7->n40_53 n6_79 #6:tell_lines n31_7->n6_79 n31_14 #31:extra_confunc_msg n31_7->n31_14 n20_34 #20:pronoun_sub n31_14->n20_34 n31_9 #31:@last-c*onnection n31_9->n6_18 n31_10 #31:@read n40_17 #40:@read n31_10->n40_17 n31_11 #31:set_current_folder n40_13 #40:set_current_folder n31_11->n40_13 n31_13 #31:set_name n31_13->n42_0 n95_6 #95:set_name n31_13->n95_6 n31_16 #31:@request n31_16->n6_18 n6_11 #6:notify_lines n31_16->n6_11 n59_45 #59:verb_usage n31_16->n59_45 n10_26 #10:request_character n31_16->n10_26 n31_17 #31:connection_name_hash n31_17->n20_53 n24_30 #24:connection_hash n31_17->n24_30 n31_18 #31:@kids n31_18->n6_18 n31_19 #31:@add-feature n6_10 #6:notify n31_19->n6_10 n6_64 #6:@add-feature n31_19->n6_64 n31_20 #31:my_huh

Showing 48 of 49 verbs; 1 not shown.

Source

boot

Spec this none thisFlags rxdOwner #2Definer #31

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 #2Definer #31

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("The housekeeper arrives to remove ", this.name, ".");
12move(this, this.home);
13this:room_announce("The housekeeper arrives to drop off ", this.name, ".");
14endif
15finally
16this:do_reset();
17this.free_to_use = 1;
18endtry

defer

Spec this none thisFlags rxdOwner #2Definer #31

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 (!(this in connected_players()))
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 #2Definer #31

Referenced by

none

Source

1return;

create

Spec any any anyFlags rdOwner #36Definer #31

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 #36Definer #31

Referenced by

Source

1return pass(@args);

log

Spec this none thisFlags rxdOwner #36Definer #31

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 #2Definer #31

Referenced by

none

Source

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

log_disconnect

Spec this none thisFlags rxdOwner #2Definer #31

Referenced by

Source

1if (caller != this)
2return E_PERM;
3else
4cname = `connection_name(this) ! ANY' || this.last_connect_place;
5$guest_log:enter(0, time(), $string_utils:connection_hostname(cname));
6endif

@last-c*onnection

Spec any none noneFlags rxdOwner #2Definer #31

Referenced by

none

Source

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

@read @peek

Spec any any anyFlags rdOwner #36Definer #31

Referenced by

none

Source

1return pass(@args);

set_current_folder

Spec this none thisFlags rxdOwner #36Definer #31

Referenced by

none

Source

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

init_for_core

Spec this none thisFlags rxdOwner #2Definer #31

Referenced by

none

Source

1if (caller_perms().wizard)
2this.extra_confunc_msg = "";
3`clear_property(this, "rooms") ! E_PROPNF => ""';
4this.features = {$pasting_feature, $social_feature};
5endif

set_name set_aliases

Spec this none thisFlags rxdOwner #2Definer #31

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 #2Definer #31

Referenced by

Source

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

do_reset

Spec this none thisFlags rxdOwner #2Definer #31

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", "ansi_options", "replace_codes"})
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 rdOwner #2Definer #31

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 #2Definer #31

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.";
3xx = $wiz_utils:connection_hash(caller_perms(), $string_utils:connection_hostname(this.last_connect_place), @args);
4hash = toint(caller_perms());
5host = $string_utils:connection_hostname(this.last_connect_place);
6for i in [1..length(host)]
7hash = (hash * 14) + index($string_utils.ascii, host[i]);
8endfor
9return crypt(tostr(hash), @args);

@kids @s*how @verbs @props @properties @exam*ine exam*ine where*is @where*is home

Spec any none noneFlags rdOwner #2Definer #31

Referenced by

none

Source

1if (!$rp_regulator.do_restrict_guests)
2return `player:(verb)(@args) ! E_VERBNF => ""';
3else
4player:tell("Sorry, guests aren't allowed to peek at the details.");
5endif

@add-feature @addfeature @remove-feature @rmfeature

Spec any none noneFlags rdOwner #2Definer #31

Referenced by

none

Source

1if ($rp_regulator.do_restrict_guests)
2return player:notify("Sorry, only a wizard can add or remove your features on this MOO.");
3elseif (caller == this)
4pass(@args);
5endif

my_huh

Spec this none thisFlags rxdOwner #2Definer #31

Referenced by

none

Source

1if (caller_perms().wizard || (caller_perms() in {this, $hacker}))
2return pass(@args);
3else
4return E_PERM;
5endif