All help topics · Link to this topic
Showing help on 'mail'
generic mail receiving playerCommands:
@mail - @mail <msg-sequence> --- as in help @mail
@read - @read <msg>... -- as in help @read
@rmm*ail - @rmm <message-sequence> [from <recipient>]. Use @unrmm if you screw up.
@unrmm*ail - @unrmm [on <recipient>] -- undoes the previous @rmm on that recipient.
@answer - @answer <msg> [on *<recipient>] [<flags>...]
@forward - @forward <msg> [on *<recipient>] to <recipient> [<recipient>...]
@skip - @skip [*<folder/mailing_list>...]
@subscribe*-quick - @subscribe *<folder/mailing_list> [with notification] [before|after *<folder>]
@unsub*scribe - @unsubscribe [*<folder/mailing_list> ...]
@netforw*ard - @netforward <msg>... -- as in help on @netforward
@@sendmail - Syntax: @@sendmail
@keep-m*ail - @keep-mail [<msg-sequence>|none] [on <recipient>]
@resend - @resend <msg> [on *<recipient>] to <recipient> [<recipient>...]
@nn - @nn -- reads the first new message on the first mail_recipient (in .current_message) where new mail exists.
@unread - @unread <msg> [on *<recipient>] -- resets last-read-date for recipient to just before the first of the indicated messages.
@refile - @refile/@copym*ail <msg-sequence> [on <recipient>] to <recipient>
@quickr*eply - @qreply <msg> [on *<recipient>] [<flags>...]
@mail-all-new*-mail - @mail-all-new-mail
@read-all-new*-mail - @read-all-new-mail [yes]
@quick*send - Syntax: @quicksend <recipients(s)> [subj=<text>] [<message>]
@add-notify - Ideally, in order for one person to be notified that another person has new mail, both the mail recipient and the notification recipient should agree that this is an OK transfer of information.
@unsend - USAGE: @unsend [message-sequence] from <player>
@pagelen*gth - @pagelength number -- sets page buffering to that many lines (or 0 to turn off page buffering)
@mode - @mode <mode>
@set-note-string - Usage: @set-note-{string | text} {#xx | #xx.pname}
@registerme - @registerme as <email-address> -- update your account email address
news - Usage: news [contents] [articles]
@password - Last modified Sun Dec 7 01:44:07 2025 UTC by Claude (#13505@Mongoose).
@remove-feature - Usage: @remove-feature <feature object>
@page2mail - @page2mail: mail yourself the pages saved while you were away, then clear them.
rps - rps <player> - Challenge another player to rock-paper-scissors
turn - Player command: turn <left|right|around|degrees>
help - help [topic] | help index | help search <words>. The one help command (Q's help plan, 4.4). The lookup itself is $help_utils:lookup, shared with GMCP Help.Get; this verb parses ?topic forms, logs misses and prints.
@help-edit - @help-edit <topic> [on <db>] | @help-edit <thing>. Edit a help topic in the note editor; saving goes through the db's :set_topic, so helpers can save topics they don't own. With a thing you control, edits that thing's help_msg instead.
@help-new - @help-new <topic> [on <db>]. Create a help topic and open it in the note editor. Helpers default to the game help db; wizards must say which db.
@help-rm - @help-rm <topic> [on <db>]. Delete a help topic after confirmation; the old text is shown to you so it isn't lost.
@help-mv - @help-mv <old> <new> [on <db>]. Rename a help topic.
@help-alias - @help-alias <alias> <topic> [on <db>]. Make <alias> show <topic>. Forwards only work within one db, so the alias goes in the topic's own db.
@help-log - @help-log [n]. The last n help edits (default 10). Wizards and helpers only.
@help-misses - @help-misses [n]. The n most-missed help searches (default 20): what people look for and don't find. Wizards and helpers only.
Callable verbs (programmers):
:display_message(preamble,msg) --- prints msg to player.
:parse_message_seq - parse_message_seq(strings,cur) => msg_seq
:msg_text(@msg) => list of strings.
:notify_mail(from,recipients[,msgnums])
:current_message([recipient])
:get_current_message([recipient])
:set_current_message(recipient[,number[,date]])
:make_current_message(recipient[,index])
:kill_current_message(recipient)
:current_folder() => default folder to use, always an object, usually `this'
:parse_folder_spec(verb,args,expected_preposition[,allow_trailing_args_p])
:parse_mailread_cmd(verb,args,default,prep[,trailer])
:mail_option(name)
:send_self_netmail(msg [ ,from ])
:my_match_recipient(string) => matches string against player's private mailing lists.
:msg_full_text(@msg) => list of strings.
:expirable_msg_seq - Return a sequence indicating the expirable messages for this player.
:format_for_netforward - Takes a message sequence (the actual messages, not just the sequence describing it) and grovels over it filling text etc. Returns a two valued list: {formatted message, header for same}
:format_for_netforward_debug - Takes a message sequence (the actual messages, not just the sequence describing it) and grovels over it filling text etc. Returns a two valued list: {formatted message, header for same}
:do_unsend(seq) -> Remove the specified messages. Used by @unsend. Cannot be overridden by players or player classes; @unsend won't bother to call the verb.
:my_huh - Extra parsing of player commands. Called by $command_utils:do_huh.
:last_huh(verb,args) final attempt to parse a command...
:my_match_object(string [,location])
:linesplit(line,len) => list of substrings of line
:set_gaglist(@newlist) => this.gaglist = newlist
:receive_page - called by $player:page. Two args, the page header and the text, all pre-processed by the page command. Could be extended to provide haven abilities, multiline pages, etc. Indeed, at the moment it just does :tell_lines, so we already do have multiline pages, if someone wants to take advantage of it.
:page_origin_msg - set_task_perms(this.owner)
:display_option(name) => returns the value of the specified @display option
:edit_option(name) => returns the value of the specified edit option
:set_edit_option(oname,value)
:set_name - set_name(newname) attempts to change this.name to newname
:set_aliases - set_aliases(alias_list)
:set_gender - set_gender(newgender) attempts to change this.gender to newgender
:set_brief - set_brief(value)
:add_feature - Add a feature to this player's features list. Caller must be this or have suitable permissions (this or wizardly).
:remove_feature - Remove a feature from this player's features list. Caller must be this, or have permissions of this, a wizard, or feature.owner.
:is_listening - return true if player is active.
:linewrap - Return a true value if this needs linewrapping.
:set_linelength - Set linelength. Linelength must be an integer >= 10.
:set_pagelength - Set pagelength. Must be an integer >= 5, or 0 to turn pagelength off.
:set_home - set_home(newhome) attempts to change this.home to newhome
:ctime([INT time]) => STR as the function.
:title - random april fools jokes :)
:you - What should this object be replaced with when printing messages about itself to itself?
:set_sgaglist(@newlist) => this.sgaglist = newlist
:facing_angle - Canonical accessor for player listener facing angle in radians.
:orientation - Canonical accessor for orientation in MOO world coords (east=+x, north=+y, up=+z). Returns forward + up unit vectors; the CLIENT converts to Web Audio. MOO yaw: south=0, east=pi/2, north=pi, west=3pi/2.
:face - Canonical mutator for player listener facing.
:turn_to - turn_to(target_angle_radians) -> the turn DURATION in seconds (0.0 if negligible/instant). Eases facing to target by driving :face over a duration proportional to the angular distance; supersedes any in-progress turn. Callers may suspend(duration) to await it.
:face_object(target) -> turn to face another object in this room. Returns the new yaw.
:my_match_object_menu(string [,location]) => like :my_match_object, but when 'string' is GENUINELY ambiguous among the objects you can see (per $string_utils:match), present an interactive menu ($command_utils:menu) of the tied candidates and return the chosen one. Otherwise resolves exactly as :my_match_object. Any command can call this in place of :my_match_object to get disambiguation for free; it never returns $ambiguous_match.
:sound_origin() -> {x,y,z} at HEAD height. Overrides $gpo's box-centre origin: a voice comes from a head, not a navel, and your own head is where your ears are -- this is the listener position Client.Spatial sends. x,y still centre the footprint (pass()); z is a fraction of stature (ears sit at ~93% of height) so it scales with the body rather than a fixed drop that would go negative on a small one.
:known_name(who) => STR -- the name this player remembers who by (from an introduction or `remember'), or "" if none.
:stranger_desc() => STR -- how this player appears to people who don't know them in a recognition room: their .sdesc if set, else "a stranger".
:name_for(viewer) => STR
:head_quaternion() => the HEAD's orientation {w,x,y,z}: yaw about +z from :facing_angle() (MOO compass, 0 = south). Gaze and hearing use this; the body (occupancy) is :orientation_quaternion().
:_follow_head(head_yaw) => the yaw turn applied to the body (0 if none). Project Exorcist: the head may turn up to .head_yaw_limit either side of the body; past that, the body turns just enough to keep the head at the limit. The turn goes through :set_orientation, so the body's centre stays put. Yaw is MOO compass (0 = south); body yaw is the compass angle of body -y.
- - - - -
See "help mail-system" for a description of the programming interface to the mail system.
In particular, see "help $mail_recipient" for information on creating new mail collections.