Substitutions
All messages may contain %-substitutions. Some common ones return pronouns if the player's gender is set. They are:
| %s | subjective | Name, he, she, it, they. |
| %o | objective | Name, him, her, it, them. |
| %p | possessive | Name's, his, her, its, their. |
| %a | absolute possessive | Name's, his, hers, its, theirs. |
| %N | player's name | Name. |
Other possible substitutions are:
| %# | player number | #<actor's number>. Equivalent to num(%N) |
| %@ | caller number | #<caller's number>. No equivalent. Initially equal to %#, but changes when things like u() are called. |
| %! | object number | #<message holder's number>. Equivalent to num(me) |
| %l | location number | #<actor's location>. Like loc(%N). This works even if the LOC() function would normally not, since the enactor has "volunteered" his location by triggering another object. |
| %c | last command | Text of last command, before evaluation. |
| %r | newline | Carriage return and newline in output. Note that this counts as two characters, in functions like strlen(). (puts "\r\n") |
| %t | tab | Tab character in output. |
| %b | blank | Space in output. |
| %qN | r(N) | The equivalent of r(N), a register set by a setq() function. |
| %? | accounting | Current values of function invocation count and recursion depth count. |
If you need a '%', use %%. Case matters; for example, "%S" returns "His", "%s" returns "his".
Example:
@ofail teapot=burns %p hand on the hot teapot.
would, for a male, return "burns his hand on the hot teapot."
HALTed objects do not perform substitutions.
Other substitutions, such as %va-%vz, %wa-%wz, %xa-%xz, and %0-%9 may also be used and are equivalent to v(?) where ? is a-z or 0-9. In these substitutions and pronoun substitutions, if the first letter of the name is capitalized, the first letter of the substitution will also be capitalized.