Politically Correct Featureful Player Class Created Because Nobody Would @Copy Verbs To 8855 #33337
Aliases: Politically Correct Featureful Player Class Created Because Nobody Would @Copy Verbs To 8855, PC Class
43 verbs · 50 properties · 1 children
Verbs
Properties
| Property | Definer | Flags | Owner | Value |
|---|---|---|---|---|
tell_filter_hook | #33337 | r | — | #-1 |
last_read_pc_news | #33337 | r | — | 706626366 |
last_player_paged | #33337 | | — | not readable (E_PERM) |
goto_delay | #33337 | rc | — | 5 |
use_goto | #33337 | rc | — | 0 |
map | #33337 | rc | — | #33965 |
idle_watched | #33337 | | — | not readable (E_PERM) |
pc_options | #33337 | r | — | {{"crosspost_list_length", 20}, {"ignore_crossposts", 4}, "prompt_for_long_posts"} |
crosspost_list | #33337 | | — | not readable (E_PERM) |
spoof_attribution | #33337 | | — | " --" |
idle_messages | #33337 | | — | not readable (E_PERM) |
respond_to | #33337 | | — | not readable (E_PERM) |
moved_by | #33337 | | — | {} |
sessile | #33337 | | — | 0 |
eval_subs | #33337 | | — | {{"ME", "player"}, {"HERE", "player.location"}} |
witnessing | #33337 | | — | not readable (E_PERM) |
rooms | #33337 | | — | {{"Living", #17}, {"Dining", #28}, {"Library", #1670}, {"Pool", #1428}} |
messages_going | #33337 | | — | not readable (E_PERM) |
mail_options | #33337 | | — | {"sticky", {"@mail", "new"}} |
current_message | #33337 | | — | not readable (E_PERM) |
messages | #33337 | | — | not readable (E_PERM) |
features | #33337 | | — | {#55317, #30203, #40842, #26787} |
previous_connection | #33337 | | — | not readable (E_PERM) |
email_address | #33337 | | — | not readable (E_PERM) |
help | #33337 | | — | #55502 |
linebuffer | #33337 | | — | not readable (E_PERM) |
current_folder | #33337 | | — | not readable (E_PERM) |
all_connect_places | #33337 | | — | not readable (E_PERM) |
last_connect_place | #33337 | | — | not readable (E_PERM) |
lines | #33337 | | — | not readable (E_PERM) |
pq | #33337 | | — | "eirs" |
pqc | #33337 | | — | "Eirs" |
ownership_quota | #33337 | | — | not 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 | #33337 | | — | not readable (E_PERM) |
size_quota | #33337 | | — | not readable (E_PERM) |
last_password_time | #33337 | | — | not readable (E_PERM) |
last_connect_attempt | #33337 | | — | not readable (E_PERM) |
key | #33337 | | — | not 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
Source
mu*rmur
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
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
Referenced by
- #33337:teleport line 6:
this:goto
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
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)
Referenced by
none
Source
1argstr = dobjstr = ""; 2prepstr = iobjstr = ""; 3dobj = iobj = #-1; 4pass(@args);
'*
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
Referenced by
none
Source
1if (this.shout_state_shm) 2 this:tell(args[2]); 3endif
_who's_infidel_slime
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
Referenced by
- #33337:_who's_infidel_slime line 12:
this:feature
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
Referenced by
- #1359:confunc line 4:
pass(
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
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
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
Referenced by
- #33337:@tell-filter*-hook line 7:
this:unfiltered_tell
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
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
Referenced by
- #33337:confunc line 1:
this:clear_tell_filter_instructions - #33337:@tell-filter*-hook line 8:
this:clear_tell_filter_instructions
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
Referenced by
none
Source
1player.tell_filter_hook = $nothing; 2player:tell("Tell-filter cleared.");
tell
Referenced by
- #2693:tell line 3:
pass( - #1359:slurp line 5:
this:tell - #33337:@watch line 33:
this:tell - #33337:@watch line 37:
this:tell - #33337:receive_shout line 2:
this:tell - #33337:unfiltered_tell line 4:
this:tell
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
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)
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)
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
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
Referenced by
- #33337:msg_text(verbose) line 52:
this:message_length - #33337:msg_text line 57:
this:message_length
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
Referenced by
- #33337:msg_text(verbose) line 63:
this:time_stamp_msg - #33337:msg_text line 68:
this:time_stamp_msg
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)
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
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
Referenced by
none
Source
1return {@pass(@args), "entry", "flames"};
refuses_action_flames
Referenced by
none
Source
1return 1;
refuses_action_entry
Referenced by
none
Source
1return 1;
implements_entry_refusal
Referenced by
none
Source
1return 1;
friends_of
Referenced by
none
Source
1return {};
receive_page
Referenced by
- #1359:receive_page line 1:
pass(
Source
1result = pass(@args); 2argstr = dobjstr = iobjstr = prepstr = ""; 3return result;
erase_paranoid_data
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
Referenced by
- #33337:tell line 10:
this:pc_option
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
Referenced by
- #2693:disfunc line 7:
pass(
Source
1this:clear_crosspost_list(); 2pass(@args);
moveto
Referenced by
- #2693:moveto line 1:
pass(
Source
1if (player == #72441) 2 "lose"; 3 return 0; 4else 5 return pass(@args); 6endif
msg_text
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
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
`*
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
Referenced by
- #33337:confunc line 2:
this:clear_crosspost_list - #33337:disfunc line 1:
this:clear_crosspost_list
Source
1(caller == this) || lose; 2this.crosspost_list = {};
do_out_of_band_command
Referenced by
none
Source
1return; 2"Until somebody explains to me why tracebacks are the best diagnostic for having no MCP handler.";
notify_33337
Referenced by
none
Source
1if (caller != #106616) 2 return E_PERM; 3endif 4return this:notify(@args);
@who
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
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);