Dump of #1359 (Pragmaticter)

@create #26026 named Pragmaticter:Pragmaticter,Pragma
;;#1359.("last_read_pc_news") = 0
"#1359.("last_player_paged") => E_PERM (Permission denied)
"#1359.("idle_watched") => E_PERM (Permission denied)
"#1359.("crosspost_list") => E_PERM (Permission denied)
;;#1359.("spoof_attribution") = "     --"
"#1359.("idle_messages") => E_PERM (Permission denied)
"#1359.("respond_to") => E_PERM (Permission denied)
;;#1359.("moved_by") = {}
;;#1359.("sessile") = 0
"#1359.("witnessing") => E_PERM (Permission denied)
;;#1359.("rooms") = {{"Living", #17}, {"Dining", #28}, {"Library", #1670}, {"Pool", #1428}}
"#1359.("messages_going") => E_PERM (Permission denied)
;;#1359.("mail_options") = {"sticky", {"@mail", "new"}}
"#1359.("current_message") => E_PERM (Permission denied)
"#1359.("messages") => E_PERM (Permission denied)
;;#1359.("features") = {#55317, #30203, #40842, #26787}
"#1359.("previous_connection") => E_PERM (Permission denied)
"#1359.("email_address") => E_PERM (Permission denied)
;;#1359.("help") = #55502
"#1359.("linebuffer") => E_PERM (Permission denied)
"#1359.("current_folder") => E_PERM (Permission denied)
"#1359.("all_connect_places") => E_PERM (Permission denied)
"#1359.("last_connect_place") => E_PERM (Permission denied)
"#1359.("lines") => E_PERM (Permission denied)
"#1359.("ownership_quota") => E_PERM (Permission denied)
"#1359.("password") => E_PERM (Permission denied)
"#1359.("size_quota") => E_PERM (Permission denied)
"#1359.("last_password_time") => E_PERM (Permission denied)
"#1359.("last_connect_attempt") => E_PERM (Permission denied)
"#1359.("key") => E_PERM (Permission denied)
;;#1359.("aliases") = {"Pragmaticter", "Pragma"}
;;#1359.("description") = {"This player class essentially extends the parser through clever use of :my_huh.  It allows you to @remember and @forget objects so you can refer to them even if they aren't in the room and you've forgotten the number; it also allows you to tell your puppets and pets (as listed in the .puppets and .pets properties) what to do with commands like \"Watson, come here\"."}
;;#1359.("object_size") = {6857, 1141286565}

@verb #1359:"@things-to-do @todo" any any any rxd
@program #1359:@things-to-do
"Usage:  @todo <text>";
"Add <text> to your list of things to do.";
"";
"Usage:  @todo";
"List everything in your to-do list.";
"";
"See `@done' for removing things from your to-do list.";
if (args)
  player.todo = setadd(player.todo, argstr);
  player:tell("Added \"", argstr, "\" to your @todo list.");
else
  if (todo = player.todo)
    player:tell("- Things not yet done:");
    for x in [1..length(todo)]
      player:tell("  ", x, " - ", todo[x]);
    endfor
    player:tell("- End of list.");
  else
    player:tell("Everything seems to be done.");
  endif
endif
.

@verb #1359:"@thing-done @done" any none none rxd
@program #1359:@thing-done
"Usage:  @done <#>";
"Remove the #-th reminder from your @todo list.";
if ((x = tonum(argstr)) > 0)
  if (x <= length(player.todo))
    player:tell("Removed \"", player.todo[x], "\" from your @todo list.");
    player.todo = listdelete(player.todo, x);
  else
    player:tell("You don't have that many things to do!");
  endif
else
  player:tell("What's done?");
endif
.

@verb #1359:"confunc" this none this
@program #1359:confunc
if ((valid(cp = caller_perms()) && (caller != this)) && (!$perm_utils:controls(cp, this)))
  return E_PERM;
endif
pass(@args);
(lngth = length(this.todo)) && this:notify(((("You have " + tostr(lngth)) + " item") + ((lngth > 1) ? "s" | "")) + " in your @todo list.");
.

@verb #1359:"get_todo" this none this
@program #1359:get_todo
return (caller == this) ? this.todo | {};
.

@verb #1359:"i inv*entory" none none none rxd
@program #1359:i
"Copied from Sick's Slightly Sick Player Class (#40099):inventory by Sickness (#57140) Sun Jan 29 19:09:04 1995 PST";
stuff = player:contents();
short = long = {};
width = player:linelen();
objlen = length(tostr(max_object()));
for thing in (stuff)
  name = tostr($string_utils:right(thing, objlen), " ", thing:title());
  if (length(name) < (width / 2))
    short = {@short, name};
  else
    long = {@long, name};
  endif
endfor
player:tell_lines((short || long) ? {"Carrying:", @$string_utils:columnize(short, 2, width), @long} | {"You are empty-handed."});
"... Dred 5/26/94, empty-handed bit";
"... Written by Sick,  7 Jan 93";
.

"#1359:6 --- Permission denied";
@verb #1359:"receive_page" this none this
@program #1359:receive_page
return pass("Shortest alias: " + $list_utils:shortest(player.aliases), @args);
.

@verb #1359:"slurp" none none none
@program #1359:slurp
n = this;
for t in ($recycler.contents)
  (n > t) && (n = t);
endfor
return this:tell($string_utils:nn(n));
.

"***finished***