Politically Correct Featureful Player Class Created Because Nobody Would @Copy Verbs To 8855 #33337

Parent #8855Owner Flags Source rpg_march_2006/Dependencies/33337.txt

Aliases: Politically Correct Featureful Player Class Created Because Nobody Would @Copy Verbs To 8855, PC Class

43 verbs · 50 properties · 1 children

Verbs

VerbSpecFlagsDefinerLines
mu*rmurany any any#3333722
@watchany any any#3333742
gotoany none nonerxd#3333734
teleportthis none this#3333710
@who(old)any any anyrxd#333374
'*any any anyr#3333715
receive_shoutthis none thisrx#333373
_who's_infidel_slimethis none thisrx#3333714
featurethis none this#333373
confuncthis none this#333376
@pc-newsnone none none#333376
@tell-filter*-hooknone none noner#333378
unfiltered_tellthis none thisrx#333379
@set-tell-filter*-hookany none noner#3333719
clear_tell_filter_instructionsthis none thisrx#333377
@unset-tell-filter*-hook @clear-tell-filter*-hooknone none noner#333372
tellthis none thisrx#3333729
linesplitthis none thisrx#333377
who(old)any none nonerxd#3333728
#33337:@audit(old)any any anyrx#3333770
@pc-opt*ions @pcopt*ionsany any any#3333732
message_lengththis none this#333378
time_stamp_msgthis none this#333373
msg_text(verbose)this none this#3333763
set_pc_optionthis none this#3333710
refusable_actionsthis none this#333371
refuses_action_flamesthis none this#333371
refuses_action_entrythis none this#333371
implements_entry_refusalthis none this#333371
friends_ofthis none this#333371
receive_pagethis none this#333373
erase_paranoid_datathis none this#333376
pc_optionthis none thisrxd#333377
disfuncthis none this#333372
movetothis none this#333376
msg_textthis none thisrxd#3333768
busted-dash-verbany any anyrxd#333378
`*any any anyrxd#3333715
clear_crosspost_listthis none thisrxd#333372
do_out_of_band_commandthis none this#333372
notify_33337this none this#333374
@whoany any anyrxd#3333719
@who-anonany any anyrxd#3333719

Properties

PropertyDefinerFlagsOwnerValue
tell_filter_hook#33337r#-1
last_read_pc_news#33337r706626366
last_player_paged#33337not readable (E_PERM)
goto_delay#33337rc5
use_goto#33337rc0
map#33337rc#33965
idle_watched#33337not readable (E_PERM)
pc_options#33337r{{"crosspost_list_length", 20}, {"ignore_crossposts", 4}, "prompt_for_long_posts"}
crosspost_list#33337not readable (E_PERM)
spoof_attribution#33337" --"
idle_messages#33337not readable (E_PERM)
respond_to#33337not readable (E_PERM)
moved_by#33337{}
sessile#333370
eval_subs#33337{{"ME", "player"}, {"HERE", "player.location"}}
witnessing#33337not readable (E_PERM)
rooms#33337{{"Living", #17}, {"Dining", #28}, {"Library", #1670}, {"Pool", #1428}}
messages_going#33337not readable (E_PERM)
mail_options#33337{"sticky", {"@mail", "new"}}
current_message#33337not readable (E_PERM)
messages#33337not readable (E_PERM)
features#33337{#55317, #30203, #40842, #26787}
previous_connection#33337not readable (E_PERM)
email_address#33337not readable (E_PERM)
help#33337#55502
linebuffer#33337not readable (E_PERM)
current_folder#33337not readable (E_PERM)
all_connect_places#33337not readable (E_PERM)
last_connect_place#33337not readable (E_PERM)
lines#33337not readable (E_PERM)
pq#33337"eirs"
pqc#33337"Eirs"
ownership_quota#33337not readable (E_PERM)
prc#33337"Eirself"
ppc#33337"Eir"
poc#33337"Em"
psc#33337"E"
pr#33337"eirself"
pp#33337"eir"
po#33337"em"
ps#33337"e"
home#33337#-1
password#33337not readable (E_PERM)
size_quota#33337not readable (E_PERM)
last_password_time#33337not readable (E_PERM)
last_connect_attempt#33337not readable (E_PERM)
key#33337not readable (E_PERM)
aliases#33337{"Politically Correct Featureful Player Class Created Because Nobody Would @Copy Verbs To 8855", "PC Class"}
description#33337"You see a player who looks very willing to espouse the proper views on most everything."
object_size#33337{33290, 1141286584}

Ancestry

Ancestors (nearest first): #8855 Player Class hacked with eval that does substitutions and assorted stuff#5803 Experimental Guinea Pig Class with Even More Features of Dubious Utility#7069 Generic Player Class With Additional Features of Dubious Utility

Children: #26026 Generic Super_Huh Player

Call graph

calls n33337_1 #33337:@watch n33337_16 #33337:tell n33337_1->n33337_16 n33337_32 #33337:pc_option n33337_16->n33337_32 n7069_6 #7069:tell n33337_16->n7069_6 n33337_3 #33337:teleport n33337_2 #33337:goto n33337_3->n33337_2 n33337_5 #33337:'* n5803_25 #5803:page n33337_5->n5803_25 n33337_6 #33337:receive_shout n33337_6->n33337_16 n33337_7 #33337:_who's_infidel_slime n33337_8 #33337:feature n33337_7->n33337_8 n33337_9 #33337:confunc n33337_14 #33337:clear_tell_filter_instructions n33337_9->n33337_14 n33337_38 #33337:clear_crosspost_list n33337_9->n33337_38 n33337_11 #33337:@tell-filter*-hook n33337_11->n33337_14 n33337_12 #33337:unfiltered_tell n33337_11->n33337_12 n33337_12->n33337_16 n33337_23 #33337:msg_text(verbose) n33337_21 #33337:message_length n33337_23->n33337_21 n33337_22 #33337:time_stamp_msg n33337_23->n33337_22 n33337_30 #33337:receive_page n7069_30 #7069:receive_page n33337_30->n7069_30 n33337_33 #33337:disfunc n33337_33->n33337_38 n33337_34 #33337:moveto n8855_7 #8855:moveto n33337_34->n8855_7 n33337_35 #33337:msg_text n33337_35->n33337_21 n33337_35->n33337_22

Source

mu*rmur

Spec any any anyDefiner #33337

Referenced by

none

Source

1if (length(args) < 2)
2  player:tell("EZ-Whisper Usage: mu <player> <message>");
3  return;
4endif
5who = this.location:match_object(args[1]);
6if (!$command_utils:object_match_failed(who, args[1]))
7  dobjstr = argstr[index(argstr, " ") + 1..length(argstr)];
8  iobj = who;
9  who:whisper(argstr);
10endif
11return;
12"";
13"old version";
14"";
15if (!valid(who))
16  player:tell("\"", args[1], "\"", "is either ambiguous, or that person isn't here.");
17  return;
18endif
19"dobjstr = $string_utils:from_list(listdelete(args, 1), \" \");";
20dobjstr = argstr[index(argstr, " ") + 1..length(argstr)];
21iobj = who;
22who:whisper(argstr);

@watch

Spec any any anyDefiner #33337

Referenced by

none

Source

1"Watch a player to see when they type a command.";
2"@watch <player>   to begin watching";
3"@watch none|off   to stop watching";
4"@watch            to see who you're watching";
5if (this != player)
6  player:tell("I don't understand that.");
7  return E_PERM;
8endif
9if ((argstr == "off") || (argstr == "none"))
10  if (valid(this.idle_watched))
11    player:tell(("You stop watching " + this.idle_watched.name) + ".");
12    this.idle_watched = #-1;
13    return;
14  else
15    player:tell("You're not currently watching anyone.");
16    return;
17  endif
18endif
19if (!argstr)
20  if (valid(this.idle_watched) && is_player(this.idle_watched))
21    player:tell($string_utils:pronoun_sub("You are watching %n (%[#n]).", this.idle_watched));
22  else
23    player:tell("You are not watching anyone.");
24  endif
25  return;
26endif
27target = $string_utils:match_player(argstr);
28if (!valid(target))
29  player:tell("I don't know who that is.");
30  return;
31else
32  this.idle_watched = target;
33  this:tell($string_utils:pronoun_sub("You begin watching %n (%[#n]).", target));
34  "Notice that .idle_watched is expected to change during the suspend whereas ic is not.";
35  while ((valid(ic = this.idle_watched) && (ic in connected_players())) && (this in connected_players()))
36    if (idle_seconds(ic) < 30)
37      this:tell("[", ic.name, "]");
38    endif
39    "$command_utils:suspend(30);";
40    suspend(30);
41  endwhile
42endif

goto

Spec any none noneFlags rxdDefiner #33337

Referenced by

Source

1player:tell("Please use @go ", argstr, " instead; this verb is too spammy to use any more.");
2return;
3if (!valid(dobj))
4  player:tell("Searching room names...");
5  dobj = $string_utils:match(dobjstr, this.map.rooms, "name");
6endif
7if (valid(dobj))
8  player:tell("Getting path to ", dobj.name, ".");
9  path = {};
10  path = this.map:path_from_A_to_B(this.location, dobj);
11  if (typeof(path) != LIST)
12    return E_NACC;
13  endif
14  path = path[2];
15  player:tell("Executing path.");
16  i = 0;
17  "this.brief = 1;";
18  this:set_brief(1, "add");
19  len = length(path);
20  for exit in (path)
21    i = i + 1;
22    "player:tell(i, \" \", len);";
23    if (i >= len)
24      this:set_brief(-1, "add");
25    endif
26    exit:move(this);
27    $command_utils:suspend(this.goto_delay);
28  endfor
29  "this:set_brief(-1, \"add\");";
30  return 1;
31else
32  player:tell("Could not find ", dobjstr, ".");
33  return E_NACC;
34endif

teleport

Spec this none thisDefiner #33337

Referenced by

none

Source

1if ((!this.use_goto) || (args[1] != this))
2  return pass(@args);
3else
4  old = dobj;
5  dobj = args[2];
6  if (!this:goto())
7    return pass(@args);
8  endif
9  dobj = old;
10endif

@who(old)

Spec any any anyFlags rxdDefiner #33337

Referenced by

none

Source

1argstr = dobjstr = "";
2prepstr = iobjstr = "";
3dobj = iobj = #-1;
4pass(@args);

'*

Spec any any anyFlags rDefiner #33337

Referenced by

none

Source

1" [EZ-Page]             Page: '<player> [<message>]";
2"                    Respond: ' <message>";
3"";
4" EZ-Page responds to the player last contacted with \"'\"";
5if ((verb == "'") && (!argstr))
6  player:tell_lines($code_utils:verb_documentation(#33337, "'"));
7else
8  if (verb == "'")
9    who = this.last_player_paged;
10  else
11    who = this.last_player_paged = verb[2..length(verb)];
12  endif
13  argstr = tostr("\"", who, "\" ", $code_utils:argstr(verb, args, argstr));
14  this:page(who, @args);
15endif

receive_shout

Spec this none thisFlags rxDefiner #33337

Referenced by

none

Source

1if (this.shout_state_shm)
2  this:tell(args[2]);
3endif

_who's_infidel_slime

Spec this none thisFlags rxDefiner #33337

Referenced by

none

Source

1"Called by \"who's schmooed\"";
2connected_players = connected_players();
3where_name = "logged on";
4no_one = "No other infidel slime are %l.";
5someone = "%w %b %l.";
6who_all = {};
7for thing in (connected_players)
8  if (thing.shout_state_shm && (!$object_utils:isa(thing, #4803)))
9    who_all = {@who_all, thing};
10  endif
11endfor
12wo = this:feature("who's");
13player:tell(wo:("who's_substitute")(who_all ? someone | no_one, $list_utils:map_arg(wo, "who's_title", who_all), where_name));
14su = $string_utils;

feature

Spec this none thisDefiner #33337

Referenced by

Source

1"feature(name)";
2"Match name against this.features' aliases, return object, $nothing, $ambigous_match, or $failed_match as per $string_utils:match or the parser.";
3return $string_utils:match(args[1], this.features, "aliases");

confunc

Spec this none thisDefiner #33337

Referenced by

Source

1this:clear_tell_filter_instructions();
2this:clear_crosspost_list();
3pass(@args);
4if (this.last_read_pc_news < #19664.last_written)
5  player:tell("There is new news on #33337, the PC Player Class.  Type @pc-news to read it.");
6endif

@pc-news

Spec none none noneDefiner #33337

Referenced by

none

Source

1player:tell("PC News written by Jonny at ", player:time_stamp_msg(#19664.last_written), ":");
2player:tell("");
3player:tell_lines(#19664:text());
4player:tell("");
5player:tell("(You finish reading.)");
6player.last_read_pc_news = time();

@tell-filter*-hook

Spec none none noneFlags rDefiner #33337

Referenced by

none

Source

1filter_object = this.tell_filter_hook;
2if (valid(filter_object))
3  message = $string_utils:pronoun_sub("Your tell-filter is %t (%[#t]).", this, filter_object);
4else
5  message = "Your tell-filter is unset.";
6endif
7this:unfiltered_tell(message);
8this:clear_tell_filter_instructions();

unfiltered_tell

Spec this none thisFlags rxDefiner #33337

Referenced by

Source

1if (caller == this)
2  filter = this.tell_filter_hook;
3  this.tell_filter_hook = $nothing;
4  result = this:tell(@args);
5  this.tell_filter_hook = filter;
6  return result;
7else
8  return E_PERM;
9endif

@set-tell-filter*-hook

Spec any none noneFlags rDefiner #33337

Referenced by

none

Source

1if (player != this)
2  player:tell("Permission denied.");
3  return;
4endif
5if (!valid(dobj))
6  player:unfiltered_tell("Either that is ambiguous or it does not exist.");
7  player:clear_tell_filter_instructions();
8  return;
9endif
10if (!$object_utils:has_callable_verb(dobj, "tell_filter"))
11  player:unfiltered_tell("That object does not have a callable :tell_filter verb, and thus can not be used as a tell-filter.");
12  player:clear_tell_filter_instructions();
13  return;
14endif
15message = "Tell-filter set to %t (%[#t]), which is owned by %n (%[#n]).";
16player:unfiltered_tell($string_utils:pronoun_sub(message, dobj.owner, dobj));
17player:unfiltered_tell("Be aware that this object receives most text directed at you, and can modify it before it reaches you.");
18player.tell_filter_hook = dobj;
19player:clear_tell_filter_instructions();

clear_tell_filter_instructions

Spec this none thisFlags rxDefiner #33337

Referenced by

Source

1if (caller != this)
2  return E_PERM;
3else
4  if (valid(this.tell_filter_hook))
5    player:unfiltered_tell("Type @unset-tell-filter to clear your tell-filter.");
6  endif
7endif

@unset-tell-filter*-hook @clear-tell-filter*-hook

Spec none none noneFlags rDefiner #33337

Referenced by

none

Source

1player.tell_filter_hook = $nothing;
2player:tell("Tell-filter cleared.");

tell

Spec this none thisFlags rxDefiner #33337

Referenced by

Source

1if (0)
2  cache_correct = 0;
3  for slice in (callers())
4    if (#90332 in slice)
5      if (cache_correct && (!cache))
6        return;
7      elseif (cache_correct && cache)
8        "nothing. my kingdom for a break statement.";
9      else
10        cache = this:pc_option("no_ostracism");
11        if (!cache)
12          return;
13        endif
14      endif
15    endif
16  endfor
17endif
18if ($recycler:valid(this.tell_filter_hook))
19  filtered = this.tell_filter_hook:tell_filter(tostr(@args));
20  if (typeof(filtered) == STR)
21    return pass(filtered);
22  else
23    return;
24  endif
25elseif (valid(this.tell_filter_hook))
26  this.tell_filter_hook = #-1;
27  "E's managed to get a Recyclable into eir tell filter hook.  GC it. --yduJ";
28endif
29return pass(@args);

linesplit

Spec this none thisFlags rxDefiner #33337

Referenced by

none

Source

1if (valid(this.tell_filter_hook))
2  filtered = this.tell_filter_hook:linesplit_filter(@args);
3  if (typeof(filtered) != ERR)
4    return filtered;
5  endif
6endif
7return pass(@args);

who(old)

Spec any none noneFlags rxdDefiner #33337

Referenced by

none

Source

1"Quinn's WHO. Usage: WHO [idle-minutes-included]";
2"                        [    default == 5m    ]";
3idles = tonum(dobjstr) * 60;
4idles = (idles < 1) ? 300 | idles;
5su = $string_utils;
6who = connected_players();
7wholist = {};
8for x in (who)
9  l = x.location;
10  hoot = idle_seconds(x);
11  if (hoot <= idles)
12    t = (tonum(l) < 1) ? "nothing (#-1)" | l.name;
13    l = (length(t) > 12) ? t[1..12] | t;
14    l = su:left(l, 12, ".");
15    n = (length(x.name) > 12) ? x.name[1..12] | x.name;
16    n = su:left(n, 12, ".");
17    "xinfo = l + n + \":\" + tostr(x.gender, \" \")[1..1] + \"|\" + t;";
18    xinfo = ((l + n) + "|") + t;
19    wholist = {@wholist, xinfo};
20  endif
21endfor
22wholist = $list_utils:sort(wholist);
23sortee = {};
24for z in (wholist)
25  sortee = {@sortee, z[13..length(z)]};
26endfor
27col = (length(sortee) < 11) ? 1 | 2;
28player:tell_lines(su:columnize(sortee, col));

#33337:@audit(old)

Spec any any anyFlags rxDefiner #33337

Referenced by

none

Source

1"Copied from APHiD (#31783):@audit Tue Mar 16 10:52:05 1993 PST";
2"Usage:  @audit [player] [from <start>] [to <end>] [for <matching string>]";
3set_task_perms(player);
4dobj = $string_utils:match_player(dobjstr);
5if (!dobjstr)
6  dobj = player;
7elseif ($command_utils:player_match_result(dobj, dobjstr)[1])
8  return;
9endif
10dobjwords = $string_utils:words(dobjstr);
11if (args[1..length(dobjwords)] == dobjwords)
12  args = args[length(dobjwords) + 1..length(args)];
13endif
14if (!(parse_result = $code_utils:_parse_audit_args(@args)))
15  player:tell("Usage:  @audit [player] [from <start>] [to <end>] [for<match>]");
16  return;
17endif
18start = parse_result[1];
19end = parse_result[2];
20match = parse_result[3];
21player:tell("Objects owned by ", valid(dobj) ? dobj.name | dobj, ((" (from #" + tostr(start)) + " to #") + tostr(end), match ? " matching " + match | "", ")", ":");
22count = 0;
23for i in (dobj.owned_objects)
24  if ((start <= tonum(i)) && (tonum(i) <= end))
25    o = toobj(i);
26    if ($command_utils:running_out_of_time())
27      suspend(0);
28    endif
29    if (valid(o) && (o.owner == dobj))
30      found = 0;
31      names = {o.name, @o.aliases};
32      while (names && (!found))
33        if (index(names[1], match))
34          found = 1;
35        endif
36        names = listdelete(names, 1);
37      endwhile
38      if (found)
39        if (valid(o.location))
40          loc = (" [" + o.location.name) + "]";
41        elseif ($object_utils:has_property(o, "dest") && $object_utils:has_property(o, "source"))
42          if (!valid(o.source))
43            source = "Nowhere";
44          else
45            source = o.source.name;
46          endif
47          if (!valid(o.dest))
48            destin = "Nowhere";
49          else
50            destin = o.dest.name;
51          endif
52          srclen = (length(source) < 20) ? length(source) | 19;
53          destlen = (length(destin) < 20) ? length(destin) | 19;
54          loc = ((" " + source[1..srclen]) + "->") + destin[1..destlen];
55        elseif ($object_utils:isa(o, $room))
56          loc = "";
57        else
58          loc = " [Nowhere]";
59        endif
60        if (length(loc) > 41)
61          loc = loc[1..37] + "..]";
62        endif
63        namelen = (length(o.name) < 30) ? length(o.name) | 29;
64        player:tell($string_utils:left(o, 7), $string_utils:left(o.name[1..namelen], 30), $string_utils:left(loc, 15));
65        count = count + 1;
66      endif
67    endif
68  endif
69endfor
70player:tell("Total: ", count, " object", (count == 1) ? "." | "s.");

@pc-opt*ions @pcopt*ions

Spec any any anyDefiner #33337

Referenced by

none

Source

1"@pc-option <option> [is] <value>   sets <option> to <value>";
2"@pc-option <option>=<value>        sets <option> to <value>";
3"@pc-option +<option>     sets <option>   (usually equiv. to <option>=1";
4"@pc-option -<option>     resets <option> (equiv. to <option>=0)";
5"@pc-option !<option>     resets <option> (equiv. to <option>=0)";
6"@pc-option <option>      displays value of <option>";
7if (player != this)
8  player:tell("You can't set options on other players.");
9  return;
10endif
11what = "pc";
12options = what + "_options";
13option_pkg = #40525;
14set_option = ("set_" + what) + "_option";
15if (!args)
16  player:notify_lines({("Current " + what) + " options:", "", @option_pkg:show(this.(options), option_pkg.names)});
17  return;
18elseif (typeof(presult = option_pkg:parse(args)) == STR)
19  player:notify(presult);
20  return;
21else
22  if (length(presult) > 1)
23    if (typeof(sresult = this:(set_option)(@presult)) == STR)
24      player:notify(sresult);
25      return;
26    elseif (!sresult)
27      player:notify("No change.");
28      return;
29    endif
30  endif
31  player:notify_lines(option_pkg:show(this.(options), presult[1]));
32endif

message_length

Spec this none thisDefiner #33337

Referenced by

Source

1":message_length(LIST message_body) => Length of message in `lines', which is arbitrarily defined as $player:linelen() characters.";
2body = args[1];
3body = (typeof(body) == LIST) ? body | {body};
4mlen = 0;
5for line in (body)
6  mlen = mlen + length(tostr(line));
7endfor
8return mlen / $player:linelen();

time_stamp_msg

Spec this none thisDefiner #33337

Referenced by

Source

1":time_stamp_msg(NUM)  =>  string of NUM as time converted to this player's favored time format";
2"Will be overridden on subclasses.";
3return ctime(args[1]);

msg_text(verbose)

Spec this none thisDefiner #33337

Referenced by

none

Source

1":msg_text(@msg) => message in text form (suitable for printing)";
2"This verb gives warning and escape from long messages, primitive crosspost skipping, and an alternate display format.";
3"";
4"In place of a ctime() call to display message times, this:time_stamp_msg() is used, in order for subclasses to override.";
5"";
6"Copied from Revenant Player Class (#5409):msg_text by Quinn (#19845) Mon Feb  8 01:33:39 1993 PST";
7"Hacked on by Jonny to use pc option package.";
8"Hacked on further to do flames refusal mechanism.";
9"Hacked more to skip all the fancy checks if invoked with @peek.";
10"Hacked on even more to skip messages crossposted to more than n lists.";
11"Hacked on more to add an option to flat-out skip long messages without prompting.";
12from = args[2];
13fromobj = $mail_agent:parse_address_field(from);
14if ((typeof(fromobj) == LIST) && (length(fromobj) == 1))
15  fromobj = fromobj[1];
16else
17  fromobj = #-1;
18endif
19subject = args[4];
20body = args[5..length(args)];
21skip_crossposts = #40525:get(this.pc_options, "skip_crossposts");
22maxlen = #40525:get(this.pc_options, "max_message_length");
23recips = args[3];
24invoking_verb = callers()[length(callers())][2];
25override_everything = invoking_verb == "@peek";
26if (!override_everything)
27  max_count = #40525:get(this.pc_options, "ignore_crossposts");
28  if (max_count)
29    mailing_lists = 0;
30    remaining_recips = " " + recips;
31    while (pos = index(remaining_recips, " *"))
32      remaining_recips = remaining_recips[pos + 2..length(remaining_recips)];
33      mailing_lists = mailing_lists + 1;
34    endwhile
35  endif
36  if (this:refuses_action(fromobj, "flames"))
37    body = {"", ("[ Flame from " + from) + " skipped. ]", ""};
38  elseif (max_count && (mailing_lists > max_count))
39    body = {"", ("[ Ignored due to crosspost limit; mailing list count: " + tostr(mailing_lists)) + " ]", ""};
40  elseif (skip_crossposts && (index(recips, ",") || index(recips, " and ")))
41    if (args[1..4] in this.crosspost_list)
42      body = {"", "[ Previously seen text omitted. ]", ""};
43    else
44      crosspost_list_length = #40525:get(this.pc_options, "crosspost_list_length");
45      this.crosspost_list = mr = setadd(this.crosspost_list, args[1..4]);
46      if ((lmr = length(mr)) > crosspost_list_length)
47        this.crosspost_list = mr[lmr - crosspost_list_length..lmr];
48      endif
49    endif
50  endif
51endif
52if (((!override_everything) && maxlen) && ((length = this:message_length(body)) > maxlen))
53  prompt = #40525:get(this.pc_options, "prompt_for_long_posts");
54  if (prompt)
55    if (!$command_utils:yes_or_no(tostr("The following message from ", from, " concerning \"", subject, "\" is ", length, " lines long.  Do you still wish to read it?")))
56      body = {"", "[ Long message skipped. ]", ""};
57    endif
58  else
59    body = {"", "[ Long message skipped. ]", ""};
60  endif
61endif
62$command_utils:suspend_if_needed(0);
63return {tostr("Date:    ", this:time_stamp_msg(args[1])), tostr("From:    ", from), tostr("To:      ", args[3]), @(args[4] == " ") ? {} | {tostr("Subject: ", subject)}, @body};

set_pc_option

Spec this none thisDefiner #33337

Referenced by

none

Source

1if (caller != this)
2  return E_PERM;
3endif
4new = #40525:set(this.pc_options, @args);
5if (typeof(new) == LIST)
6  this.pc_options = new;
7  return 1;
8else
9  return new;
10endif

refusable_actions

Spec this none thisDefiner #33337

Referenced by

none

Source

1return {@pass(@args), "entry", "flames"};

refuses_action_flames

Spec this none thisDefiner #33337

Referenced by

none

Source

1return 1;

refuses_action_entry

Spec this none thisDefiner #33337

Referenced by

none

Source

1return 1;

implements_entry_refusal

Spec this none thisDefiner #33337

Referenced by

none

Source

1return 1;

friends_of

Spec this none thisDefiner #33337

Referenced by

none

Source

1return {};

receive_page

Spec this none thisDefiner #33337

Referenced by

Source

1result = pass(@args);
2argstr = dobjstr = iobjstr = prepstr = "";
3return result;

erase_paranoid_data

Spec this none thisDefiner #33337

Referenced by

none

Source

1pc_opt = #40525;
2if (!($perm_utils:controls(caller_perms(), this) || (this == caller)))
3  return E_PERM;
4elseif (!pc_opt:get(this.pc_options, "paranoid_data"))
5  pass(@args);
6endif

pc_option

Spec this none thisFlags rxdOwner #4292Definer #33337

Referenced by

Source

1":pc_option(name)";
2"Returns the value of the specified pc option";
3if ((caller == this) || $perm_utils:controls(caller_perms(), this))
4  return #40525:get(this.pc_options, args[1]);
5else
6  return E_PERM;
7endif

disfunc

Spec this none thisDefiner #33337

Referenced by

Source

1this:clear_crosspost_list();
2pass(@args);

moveto

Spec this none thisDefiner #33337

Referenced by

Source

1if (player == #72441)
2  "lose";
3  return 0;
4else
5  return pass(@args);
6endif

msg_text

Spec this none thisFlags rxdOwner #26947Definer #33337

Referenced by

none

Source

1":msg_text(@msg) => message in text form (suitable for printing)";
2"This verb gives warning and escape from long messages, primitive crosspost skipping, and an alternate display format.";
3"";
4"In place of a ctime() call to display message times, this:time_stamp_msg() is used, in order for subclasses to override.";
5"";
6"Copied from Revenant Player Class (#5409):msg_text by Quinn (#19845) Mon Feb  8 01:33:39 1993 PST";
7"Hacked on by Jonny to use pc option package.";
8"Hacked on further to do flames refusal mechanism.";
9"Hacked more to skip all the fancy checks if invoked with @peek.";
10"Hacked on even more to skip messages crossposted to more than n lists.";
11"Hacked on more to add an option to flat-out skip long messages without prompting.";
12from = args[2];
13fromobj = $mail_agent:parse_address_field(from);
14if ((typeof(fromobj) == LIST) && (length(fromobj) == 1))
15  fromobj = fromobj[1];
16else
17  fromobj = #-1;
18endif
19subject = args[4];
20body = args[5..length(args)];
21skip_crossposts = #40525:get(this.pc_options, "skip_crossposts");
22maxlen = #40525:get(this.pc_options, "max_message_length");
23recips = args[3];
24invoking_verb = callers()[length(callers())][2];
25override_everything = invoking_verb == "@peek";
26if (!override_everything)
27  max_count = #40525:get(this.pc_options, "ignore_crossposts");
28  if (max_count)
29    mailing_lists = 0;
30    remaining_recips = " " + recips;
31    while (pos = index(remaining_recips, " *"))
32      remaining_recips = remaining_recips[pos + 2..length(remaining_recips)];
33      mailing_lists = mailing_lists + 1;
34    endwhile
35  endif
36  if (this:refuses_action(fromobj, "flames"))
37    lines = 0;
38    for line in (body)
39      lines = (lines + 1) + (length(line) / 80);
40    endfor
41    return {tostr("    [ Flame from ", from, " skipped: ", lines, " lines. ]")};
42    body = {"", ("[ Flame from " + from) + " skipped. ]", ""};
43  elseif (max_count && (mailing_lists > max_count))
44    body = {"", ("[ Ignored due to crosspost limit; mailing list count: " + tostr(mailing_lists)) + " ]", ""};
45  elseif (skip_crossposts && (index(recips, ",") || index(recips, " and ")))
46    if (args[1..4] in this.crosspost_list)
47      body = {"", "[ Previously seen text omitted. ]", ""};
48    else
49      crosspost_list_length = #40525:get(this.pc_options, "crosspost_list_length");
50      this.crosspost_list = mr = setadd(this.crosspost_list, args[1..4]);
51      if ((lmr = length(mr)) > crosspost_list_length)
52        this.crosspost_list = mr[lmr - crosspost_list_length..lmr];
53      endif
54    endif
55  endif
56endif
57if (((!override_everything) && maxlen) && ((length = this:message_length(body)) > maxlen))
58  prompt = #40525:get(this.pc_options, "prompt_for_long_posts");
59  if (prompt)
60    if (!$command_utils:yes_or_no(tostr("The following message from ", from, " concerning \"", subject, "\" is ", length, " lines long.  Do you still wish to read it?")))
61      body = {"", "[ Long message skipped. ]", ""};
62    endif
63  else
64    body = {"", "[ Long message skipped. ]", ""};
65  endif
66endif
67$command_utils:suspend_if_needed(0);
68return {tostr("Date:    ", this:time_stamp_msg(args[1])), tostr("From:    ", from), tostr("To:      ", args[3]), @(args[4] == " ") ? {} | {tostr("Subject: ", subject)}, @body};

busted-dash-verb

Spec any any anyFlags rxdDefiner #33337

Referenced by

none

Source

1name = verb[2..length(verb)];
2who = player.location:match_object(name);
3argstr = $code_utils:argstr(verb, args, argstr);
4if (!valid(who))
5  player.location:announce_all(player.name, " [", name, "]: ", argstr);
6else
7  player.location:announce_all(player.name, " [to ", who.name, "]: ", argstr);
8endif

`*

Spec any any anyFlags rxdDefiner #33337

Referenced by

none

Source

1name = verb[2..length(verb)];
2who = player.location:match_object(name);
3if ($command_utils:object_match_failed(who, name))
4  return;
5endif
6player.location:announce_all(player.name, " [to ", who.name, "]: ", argstr);
7return;
8"Say something out loud, directed at someone or something.";
9"Usage:";
10"  `target message";
11"Example:";
12"  Munchkin is talking to Kenneth, who's in the same room with him.  He types:";
13"      `kenneth What is the frequency?";
14"  The room sees:";
15"       Munchkin [to Kenneth]: What is the frequency?";

clear_crosspost_list

Spec this none thisFlags rxdOwner #26947Definer #33337

Referenced by

Source

1(caller == this) || lose;
2this.crosspost_list = {};

do_out_of_band_command

Spec this none thisDefiner #33337

Referenced by

none

Source

1return;
2"Until somebody explains to me why tracebacks are the best diagnostic for having no MCP handler.";

notify_33337

Spec this none thisDefiner #33337

Referenced by

none

Source

1if (caller != #106616)
2  return E_PERM;
3endif
4return this:notify(@args);

@who

Spec any any anyFlags rxdDefiner #33337

Referenced by

none

Source

1"Copied from generic player (#6):@who by ur-Rog (#6349) Tue Sep  1 10:04:21 1998 PDT";
2if (caller != player)
3  return E_PERM;
4endif
5plyrs = args ? listdelete($command_utils:player_match_result($string_utils:match_player(args), args), 1) | connected_players();
6if (!plyrs)
7  return;
8elseif (length(plyrs) > 200)
9  player:tell("You have requested a listing of ", length(plyrs), " players.  Please either specify individual players you are interested in, to reduce the number of players in any single request, or else use the `@users' command instead.  The lag thanks you.");
10  return;
11endif
12laundry = #106616;
13if (1 || (random(100) < 30))
14  "not now honey...I have to run by the laundry...";
15  util = laundry;
16else
17  util = $code_utils;
18endif
19util:show_who_listing(plyrs);

@who-anon

Spec any any anyFlags rxdDefiner #33337

Referenced by

none

Source

1"Copied from generic player (#6):@who by ur-Rog (#6349) Tue Sep  1 10:04:21 1998 PDT";
2if (caller != player)
3  return E_PERM;
4endif
5plyrs = args ? listdelete($command_utils:player_match_result($string_utils:match_player(args), args), 1) | connected_players();
6if (!plyrs)
7  return;
8elseif (length(plyrs) > 100)
9  player:tell("You have requested a listing of ", length(plyrs), " players.  Please either specify individual players you are interested in, to reduce the number of players in any single request, or else use the `@users' command instead.  The lag thanks you.");
10  return;
11endif
12laundry = #106616;
13if (random(100) < 100)
14  "not now honey...I have to run by the laundry...";
15  util = laundry;
16else
17  util = $code_utils;
18endif
19util:show_who_listing(plyrs);