Help Entries starting with 'P'


@pageformat

Sets the message that is seen when <object> receives a page. <message> is evaluated.

  %0 will be set to the page message.
  %1 will be set to ':' ';' or '"' for pose, semipose and normal page,
                    respectively,
  %2 will be set to the alias of the pager, if any.
  %3 will be a space-separated list of recipient dbrefs.
  To obtain 'page_aliases' behavior:
  > @pageformat me=[setq(0,%n[if(%2,%b(%2))],1,switch(%3,%!,,itemize(iter(%3,
     name(##),%b,|),|)))][switch(%1,",%q0 pages[if(%q1,%b%q1)]: %0,:,From 
     afar[if(%q1,%b(to %q1))]\, %q0 %0,From afar[if(%q1,%b(to %q1))]\, %q0%0)]
  To obtain no 'page_aliases' behavior:
  > @pageformat me=[setq(1,switch(%3,%!,,itemize(iter(%3,name(##),%b,|),|)))]
     [switch(%1,",%n pages[if(%q1,%b%q1)]: %0,:,From afar
     [if(%q1,%b(to %q1))]\, %n %0,From afar[if(%q1,%b(to %q1))]\, %n%0)]

See also:


@parent

This command sets the parent of <object> to <parent>. <parent> may be an object of any type; <object> can be anything but a player. The player must control <object>. <parent> must be controlled by the player or LINK_OK. If <parent> is "none" or blank, the object is unparented.

See also:


@password

This changes your password. Please note that passwords ARE case-sensitive.


@payment

Sets the message that is shown to anyone who pays the object, by giving it a certain amount of MUSH money. If =<message> is omitted, the message is reset to nothing. May be abbreviated @pay.

See also:


@pcreate

This wizard-only command creates a player with the given name and password.


@pemit

The basic form of this command sends <message> to <object> directly. It is very similar in its effects to @emit except only one object will see the message. You may @pemit to objects in the same room, objects you are carrying, and to objects that are carrying you, or @pemit remotely, using #<object> or *<player name>.

The /list switch to this command allows you to @pemit a message to a list: @pemit/list <object 1> [<object 2> <object N>] = <message> There can be any number of objects in the list. You will not get back a "confirmation" message for the /list form of this command.

(continued in help @pemit2)


@pemit2
  The @pemit command can take the following additional switches:
    /contents  -- equivalent to @remit.
    /silent    -- does not tell the @pemit'ing object a confirmation message.
    /noisy     -- tells the @pemit'ing object a confirmation message.
    /noeval    -- the message will not be evaluated for substitutions 
    /spoof     -- the enactor's dbref will be used for nospoof notifications
                  instead of the executor's dbref. Requires control
                  over enactor or Can_nspemit power. 

Note that page-lock and the HAVEN flag will block @pemits as well, except from Wizards or those with the pemit_all power.

See also @emit, @oemit, @remit, NOSPOOF, and SPOOFING.


@poll

This command manipulate the message at the top of WHO/DOING. By itself, it displays the current poll. Wizards and those with the poll @power can set or clear the message.

See also:


@poor

@poor <value>. This is a god only command. It sets every player's money supply to value.

See also:


@power

@power/list lists the defined powers (see "help powers"). A list of standard powers with explanations is given in "help powers list". When given a power name as an argument, @power displays information about a power.

The third form manipulates powers on objects, and is limited to Wizards. @power <object>=[!]<power> sets (or clears) the given power on an object.

God can add, delete, and otherwise manipulate power definitions. See help @power2 for these commands.


@power2
  These commands manipulate power definitions. Only God may use them.
    /disable disables a power, making it invisible and unusable
    /enable re-enables a disabled power
    /alias adds a new alias for an existing power
    /letter changes or removes a single-letter alias for an existing power.
    /restrict changes power permissions (see help @power3) 
    /type changes power type(s) (see help @power3) 
    /delete deletes a power completely, removing it from all objects
      in the database and the removing it permanently from the 
      power table. It requires the exact power name or alias to be used.
      Be very very careful with this. 

See help @power3 for information on @power/add


@power3

@power/add is used to add a new power with the given name. Arguments other than the power name are optional:

  <letter> gives the power's one-letter abbreviation, which must
    not conflict with the one-letter abbreviation of another power that
    could be applied to the same object type(s). It defaults to none, which
    means it won't appear in a list of power characters but can still be 
    tested for with haspower(), andlpowers(), and orlpowers(). 
  <type> specifies the space-separated list of types to which the power
    applies, and may be 'any' or one or more of 'room', 'thing', 'player',
    or 'exit'. It defaults to 'any'. 
  <setperms> specifies the space-separated list of permissions for who can
    set and/or see the power. See 'help flag permissions' for details.
    It defaults to 'any'
  <unsetperms> specifies the space-separated list of permissions for who
    can clear the power on an object they control. It defaults to
    whatever <setperms> is given, or 'any'.

Powers added with @power/add are saved with the database when it is dumped, and do not need to be re-added at startup. They are treated exactly as any other power in the server.


@prefix
  This attribute is meant to be used in conjunction with the AUDIBLE
  flag. The @prefix of the object is prepended to messages propagated
  via AUDIBLE.   Pronoun substitution is done on @prefix messages.
  For example, if you have an audible exit "Outside" leading from a room 
  Garden to a room Street, with @prefix  "From the garden nearby,"  if
  Joe does a ":waves to everyone." from the Garden, the people at Street
  will see the message,   "From the garden nearby, Joe waves to everyone."

See also:


@pricelist

The PRICELIST attribute is a space-delimited list of item names and prices that are checked when the 'buy' command is run.

An item name may have '_'s where the player would use a space in the name.

A price is either a number (20), a range of numbers (10-30), or a minimum number (10+).

  ex:
    @PRICELIST vendor=mansion:1000+ large_house:100-200 house:20,30,50

See also:


@prompt

A variation of @pemit/list that adds a telnet GOAHEAD control code to the end of messages sent to players. Players with clients that handle GOAHEAD may get the message as a prompt in their client's input area.

@prompt supports the following @pemit switches: /silent, /noisy, /spoof, /noeval

See also:


@ps
  @ps is a useful command for MUSHers.  It lists all commands currently on
  your 'to be executed' queue, thus allowing you to identify infinite (or
  unnecessary) loops with-out putting in says or poses. It gives a count of
  the total commands in each of the queues (Player, Object, Wait, and
  Semaphore), displayed in the format:
      <Number of your queued commands> / <Total number of queued commands>.

@ps with no arguments will show you your own queue. Wizards may specify the /all switch, and see the full queue. They may also specify a player. @ps/summary just displays the queue totals for the whole queue. @ps/quick displays the queue totals for just your queue.


@purge

@purge is a wizard only command that calls the internal purge routine to advance the clock of each object scheduled to be destroyed, and destroy those things whose time is up. The internal purge routine is normally run automatically approximately every 10 minutes.

The @purge command should almost never need to be performed manually. If you do use it manually, you may want to use it twice in a row to make sure that everything marked GOING is actually destroyed.

See also:


page

page[/<switch>] [<player-list>=]<message>.

This command sends a message to a player or list of players. If the player's name contains spaces, surround it with double-quotes. If you have already paged someone since connecting, just typing:

    'page <message>' or 'page =<message>'

will send the message to the last person paged. You cannot page a player if they are set HAVEN or if you do not pass their @lock/page. In the latter case, the player's PAGE_LOCK`FAILURE, PAGE_LOCK`OFAILURE, and PAGE_LOCK`AFAILURE attributes will be activated if set.

Example:

> page airwolf=hi there!
You paged Airwolf with 'hi there!'.
> page see, I don't have to retype the name.
You paged Airwolf with 'see, I don't have to retype the name.'.
> page "John Lennon" Ringo=Paul's fine!

(continued in help page2)


page2

Page will attempt a partial match on the name, checking both for an @alias and to see if the name matches someone connected. If the first character of <message> is a : or a ;, it will send the page in pose format.

Objects may page players, but not vice versa. If an object pages a NOSPOOF player, that player will see the object's number in square brackets, in front of the message, in a fashion similar to the way NOSPOOF flags emits.

When a player is paged, their PAGEFORMAT attribute is checked, and if exists, the page as viewed by the player is set to the results of calling PAGEFORMAT. See help @pageformat

Page takes five switches: /list, /blind, /noeval, /override, and /port. The /list and /blind switches provide two different ways of handling pages to lists of players. With /list, each paged player sees the list of who was paged, and the paging player is notified only once. With /blind, it's as if each player was individually paged. The default list behavior is set by the blind_page @config option. The /noeval switch prevents the MUSH from evaluating the message. The /override switch is admin-only, and overrides pagelocks and HAVEN. The /port switch is admin-only, and will page a port descriptor directly, including connections that have not yet logged into a player.

See also:


PARANOID

Flag: PARANOID (players)

Used in conjunction with the NOSPOOF flag. If a player is set PARANOID and NOSPOOF, @emits of all sorts are tagged with the name and dbref of the person/object making them and the name of the object's owner, if the emit was not from a player.

See NOSPOOF, SPOOFING, @emit, @pemit, @remit, and @oemit.


PARENT

Objects may have "parent" objects, from which they can inherit attributes. Once an object is given a parent, it may use the attributes on the parent just as if the attributes were on the object itself, including checking for $commands. Use the @parent command to change the parent of an object.

Objects may have multiple levels of parents - thus, if #100 is the parent of #101, which is the parent of #102, object #102 checks itself, #101, and #100 for attributes. Attributes are checked on the object itself first, followed by its parent, followed by that parent's parent, and so forth. There is a (configurable) maximum length of the parent chain for an object; the default is 10.

After the parent chain is exhausted, the type-specific ancestor is also checked in similar fashion. See 'help ANCESTORS' for more about ancestors.

(continued in help parents2)


PARENT()

This function returns the dbref number of an object's parent. You must be able to examine the object to do this. If you specify a second argument, it tries to re-parent the object. In this case, you must control the object.


PARENTS2

Note that the only properties inherited are attributes. In particular, flags and exits are NOT inherited from the parent object. Also, commands which walk the attribute list (such as "examine", the LATTR() function, the HASATTR() function, @set, and @edit) only affect attributes that are on the object itself.

There are some limitations to the use of @parent. The most important is that ^-pattern checking is not done on the parent of an object, unless the object is set LISTEN_PARENT. For the purposes of automated game checks, the following attributes are not inherited: CHARGES, EALIAS, LALIAS, LAST, LASTSITE, LISTEN, QUEUE, RQUOTA, SEMAPHORE, and STARTUP.

The attributes inherited from the parent are treated just like its own attributes by the child. Thus, when a $-command or @trigger is executed, "me", for example, refers to the child, not the parent, and the $-command's associated actions are performed by the child.

(continued in help parents3)


PARENTS3

Attributes with $-commands _are_ inherited from the parent and previous generations. Conflicts are resolved not by the $-command name, but by the attribute name. If two attributes are in "conflict", the child's attribute is used.

For example:

Example:

> &TEST #10=$test:@emit I'm the parent
> &TEST #11=$check:@emit I'm the child
> @parent #11=#10
> test
(nothing happens)
> check
I'm the child

(continued in help parents4)


PARENTS4

If a parent has the same $-command name in a different attribute, however, BOTH the parent and child commands will execute:

(continued from previous example) > &CHECK #10=$check:@emit No, I'm the parent!

Example:

> check
I'm the child
No, I'm the parent!

@parent is most useful when several objects use common attributes. It is slightly faster to have $commands on the child object which in turn @trigger or otherwise retrieve attributes inherited from the parent object, rather than having the $commands checked on the parent object.

(continued in help parents5)


PARENTS5

Parent-object $-command checking is at its most efficient when there are few or no attributes on the child. Also, each additional level of parents further reduces efficiency. Finally, note that ancestors are *not* checked for $-commands.

If you are "mass-marketing" your objects, you can create blank copies, and @parent those copies to a template object. You can then customize necessary attributes on the copy. When a buyer @chowns his copy, the parent does not change, so unless you're putting data into the parent that you want to make impossible to read, it's safe to allow the purchasers of your object to @chown their copy.

See also:


patchlevels

For information on a specific patchlevel of one of the versions listed, type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'

1.8.3: 0, 1, 2, 3, 4
1.8.2: 0, 1, 2, 3, 4, 5, 6
1.8.1: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
1.8.0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
       19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
       36, 37, 38, 39, 40
1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
       19, 20
1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
       19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
1.7.1: 0, 1, 2, 3
1.7.0: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
1.6.10: 0, 1, 2, 3, 4, 5, 6
1.6.9: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
1.6.8: 0, 1
1.6.7: 0, 1, 2, 3, 4, 5, 6
1.6.6: 0
1.6.5: 0, 1, 2, 3, 4
1.6.4: 0, 1, 2
1.6.3: 0, 1, 2, 3, 4, 5, 6, 7
1.6.2: 0, 1
1.6.1: 0, 1
1.6.0: 0, 3, 4, 5
1.50: dune2, dune1, 6, 7, 8, 9, 10, 11, 12, 13, 14

PCREATE()

Creates a player with a given name and password. Wizard-only.

See also:


PEMIT()

pemit() will send each object on the list a message, as per the @pemit/list command. It returns nothing. It respects page-locks and HAVEN flags on players.

nspemit() is a wizard-only variation that works like @nspemit/list.

prompt() adds a telnet GOAHEAD to the end of the message, as per the @prompt command. nsprompt() is a wizard-only variation that works like @nsprompt.

See also:


PI()

Returns the value of "pi" (3.14159265358979323846264338327, rounded to the game's float_precision setting).


PLAYER

Flag: PLAYER (player)

The PLAYER flag identifies you as a player. This flag cannot be reset by any player, not even a Wizard. It is used by hardcode to identify your commands, check for validity of commands or locks, etc. You can just pretend it isn't there.


PLAYER()

Returns the dbref of the player connected to a given port. You must be see_all or otherwise privleged to use this function on ports that players besides yourself are using.

See also:


PLAYERMEM()

This function returns the amount of memory, in bytes, being used by everything owned by the player. It can only be used by players with Search powers.

See also:


PMATCH()

Given the partial name of a connected player, returns that player's dbref number. This partial name completion works similarly to the partial name completion of the "page" command - i.e. it first attempts to match the full names of all players (connected or not), and if that fails, it tries to match the partial names of connected players visible to the enactor. If no player is matched, it returns "#-1". If more than one match is possible for a partial name, it returns "#-2".

Pmatch() will also accept *<player> or #<db#>. If given a non-player dbref #, pmatch() will return #-1.


POLL()

This function returns the current @poll.

See also:


POS()

This function returns the position that string1 begins in string2, with the first position being 1. If string1 is not in string2, then it returns #-1.


pose2

Example:

If you are player Bob, and you type in ':laughs out loud.' or
'pose laughs out loud.' everybody in the room will see:
"Bob laughs out loud."
    If you are player Bob, and you type in ';'s smiling today.' or
    'pose/nospace 's smiling today.' everybody in the room will see:
    "Bob's smiling today."

POSS()

Returns the possessive pronoun - his/her/its - for an object.


POWER()

Returns <number> to the power of <exponent>.

See also:


POWERS LIST

Powers can be granted only by wizards, using the @power command. Powers cannot be granted to guest characters or players who are set UNREGISTERED. Powers normally give the player the ability to use a limited set of wizard/admin powers.

  announce              Can use @wall command.  
  boot                  Can use @boot command.
  builder               Can use Builder commands.
  chat_privs            Can use Admin channels.
  debit                 Can use give with a negative amount.
  functions             Can use @function command.
  guest                 Guest. Restricted command set.
  halt                  Can @halt others' objects and do @allhalt.
  hide                  Can hide on the WHO list.
  idle                  No inactivity timeout.
  link_anywhere         Can @link an exit to anyplace.
  login                 Not subject to login restrictions.
  long_fingers          Can do things remotely, like "get".
  many_attribs          Can exceed max_attrs_per_obj.

(continued in help powers2)


POWERS()

The first form returns a space-separate list of powers possessed by the object. If the object does not exist, #-1 will be returned.

The second form attempts to set <power> on <object>, as per @power.


POWERS2
  no_pay                Doesn't need money for anything
  no_quota              Has an unlimited quota
  open_anywhere         Can @open a link from any room.
  pemit_all             Can @pemit to HAVEN/ulocked players.
  player_create         Can use @pcreate command.
  poll                  Can use @poll command.
  pueblo_send           Can use xch_cmd and send pueblo tags
  queue                 Has queue limit equal to the size of the database.
  quota                 Can use @quota commands on other players.
  search                Can do @search, @stats, and @entrances on anything.
  see_all               Sees everything as if it were Visual.
  see_queue             Can do @ps on anyone, and @ps/all.
  sql_ok                Can perform SQL queries
  tport_anything        Can @teleport anything.
  tport_anywhere        Can @teleport to anywhere.
  unkillable            Can not be killed
  can_nspemit           Can use @nspemit and nspemit()

See also:


PROMPT_NEWLINES

This socket-level command is used to indicate whether a newline should be sent after the telnet GOAHEAD code issued by @prompt/prompt() to telnet-capable clients. By default, in order to maximize portability, newlines are sent.

Some clients, like TinyFugue, are smart enough to interpret GOAHEAD and treat prompts specially by putting them into their input window. These clients do not require the newline, and sending the newline results in a blank line in their output window. The 'PROMPT_NEWLINES 0' command can be used to disable the newline and is recommended for users with these clients.

See also:


PUEBLO

Pueblo is a client made by Chaco (a now defunct company). It attempts to mix HTML with MUSH, and does a decent job at it. There are other clients (notably MUSHclient) that also offer Pueblo features. If compiled into the MUSH, PennMUSH offers support for the enhanced features of Pueblo.

PennMUSH will automatically detect a Pueblo client (rather, the client will announce itself and PennMUSH will detect that), and set up that connection for Pueblo use.

The PUEBLO() function returns 1 for players connected with Pueblo, 0 for players with other clients, and #-1 NOT CONNECTED for players who aren't connected. It uses the most recently active connection if a player is multiply logged in.

For more information, see 'Pueblo features', 'HTML' and 'HTML Functions'.


PUEBLO FEATURES

PennMUSH makes the following enhancements visible to Pueblo users, if Pueblo support has been enabled in the server (check @config):

- Object/Room names are highlighted - Support for VRML graphics - Unordered list for contents and transparent exits - Contents and links have links (Click an exit to walk through it) - Object lists (like the ones found in 'examine') have links - Conversion of ANSI sequences to <FONT> tags.

See also:


PUPPET

Flag: PUPPET (things)

Setting this flag on a thing turns it into a sort of extension of its owner, making it grow eyes and ears. It then relays everything sees and hears back to its owner, unless the owner is in the same room. (If you set a puppet VERBOSE as well, it will relay even when the owner is in the same room).

See: @force, PUPPETS


PUPPETS

A thing is turned into a puppet by setting the PUPPET flag on it. A puppet object is an extension of its owner and relays everything it sees and hears to its owner, except if it is in the same room as the owner (a puppet with the VERBOSE flag will relay even if it's in the same room). Things relayed by the puppet will be prefixed by the name of the puppet.

Puppets are useful for keeping track of what is going on in two rooms at once, as extensions of a player (such as a pet, for example), or for testing code.

You can control your puppets using the @force command. It is important to remember the DBREF numbers of your puppets so you can control them even if they are not in the same room with you. You can also have your puppets follow you by using the 'follow' command.

(example in help puppets2)


PUPPETS2

An example of a puppet:

Example:

> @create Punch
Created: Object #18.
> drop Punch
Dropped.
> @set punch=puppet
Punch is now listening.
Flag set.
> @force punch=go north
Punch has left.
Punch> The Finishing Place
Punch>
Punch> Obvious exits:
Punch> Door <S>
#18 :waves hello
Punch> Punch waves hello

See also:


Generated at Mon Jul 2 00:35:04 2007