Wizards' Guide
Players' Guide
The Turn Oriented Role Playing System, or TORPS, is a generic role playing system similar to a Multi-User Dungeon. Where it differs from a MUD is that it is based on a message board interface, not a chat room, and so takes place in turns. The TORPS system also comes with its own Applet interface. The following image describes the major features of this interface.
The Main Text Display area is used to display the program's responses to the user. Usually, this is a description of the environment, or what portion of it the player can see from his position in the game. The program will also display messages in this are to confirm each of the player's moves.
The Text Entry Field is probably the second most important region of the display area. While the Main Text area is used to let the program communicate with the player, the Text Entry Field is used by the user to communicate with the program. You will type all commands into this field. In some cases, other sections of this display may gain focus, and it may become impossible to type in this field. If this happens, simply click on it with the mouse until the cursor reappears.
Note that in the image, the legend "Login:" appears next to the Entry Field. Once the user has logged in, the legend will change to "Command:". This is to let the user know that he has logged in correctly, and the game is ready to accept commands.
The Current Location and Room "Success" fields, at the top of the screen, are used to display information about the user's current location. Most of the time, the "Success" field will display all exits from the room, but other information may be displayed in certain areas. For instance, on board a starship, where every deck can be reached by an Elevator, an "Intercom Message" could appear in this field. There are many other possibilities.
The Character Status fields, Health, Energy, and Score, display these stats of the character, which are defined no matter what game you are playing. Health is how much more damage the player can take before passing out, Energy determines how many more actions the player can take this turn, and Score is how well the player is doing.
Finally, the Character and Item Display areas to the right of the Main Display list all Characters and Items that you can see in the area. You can "look" at any of these characters or items, or perform any other commands on them, if you wish. Also, all characters in the room with you will be able to read the messages you enter when you "talk". Any character whose name ends with "(N)" is a Non Player Character, you may want to talk to them specifically with "tell".
What are the Commands?
Although some commands can be created which are specific to a game, there are a number of commands which are implemented by the TORPS system itself. The best way to find out about the commands available in a specific TORPS game is to type "help". This will list all commands, even those defined specifically for the game. Typing "help" and the name of the command will give you more details about the commands, including hints about how the command may be used specifically in that game.
In the following table, I will describe the syntax for a command as follows: The symbols "<>" indicate a value that the user must substitute. The symbols "[]" indicate an optional value that may be left out. For any command that takes a target, you can type "me" to specify yourself, or "here" to specify the current room.
- quit
- Exits the game. Always use this command before you close the browser or leave the page. (I can't say this often enough...)
- look [<target>]
- Probably the most important command in the game, this lets you view the description message which has been set for the item or character specified. If you do not specify a target, the default is "here".
- inv [<target>]
- Lists all items in the specified character's inventory, including unconscious characters, if the player is carrying any. The TORPS system itself does not define any kind of encumbrance, so you can carry any number of items. If you do not specify a target, the default is "me".
- actions [<target>]
- Lists all actions which the specified item, character, or room has access to. Most actions are exits, from rooms, but the listings for exits usually look funny, since there is often more than one name assigned to each exit. If you do not specify a target, the default is "here", and a synonym for this command is "exits".
- messages [<target>][,][<time>]
- Displays all messages logged by other players, similar to those displayed when the game is first logged onto. The default is to redisplay the messages for the player's room, but the user may optionally specify "me", a room overlooked by this room, or an NPC which the player controls. The user may also specify a range of time to show messages for, as a number, followed by "d" for days, "h" for hours, "m" for minutes, or "s" for seconds. That is, "message 10d" will display all messages for the last 10 days, even if you last logged on yesterday.
The comma between the target and time may be left off if no target is specified.
- go <target>
- Activates an exit or action which is accessible to the user. (That is, the action is in the room, on an item in the character's inventory, or on the character himself) The word "go" is actually optional, and many exits may have more than one name, so "go north", "go n", "north", and "n" might all perform the same function in a given room.
- follow <character>
- Indicates that the user will follow the specified character anywhere he or she goes, as long as the following character has enough energy to continue. This is a good way for exploration groups to stay together, although the leader must be careful not to leave anyone behind. Note that you can tell your own NPC characters to "follow me".
- get <target>
- Places the specified item in your inventory. Some objects are too large to be picked up, you will have to find another way to access them. Also, characters can be picked up, but only if they are unconscious. The moment an unconscious character wakes up, he will be dropped if he is being carried. A synonym for this command is "take".
- drop <target>
- Drops the specified item or character. The object must be in your inventory and will appear in the current room.
- give <target> to <character>
- Moves the specified item to the specified character's inventory. You can also trade Score with other players by specifying an integer in place of the target.
- cond [<target>]
- Displays the "condition" of the specified item, character, or room. The condition of an object is based on its health, but is not as precise, so you cannot tell exactly how healthy or hurt an opponent is. Most games also implement a "stats" command, which may give more detailed information.
- say <message>
- Logs the specified message to the current room. Everyone in the room will be able to read the message the next time they log on.
- do <pose>
- Similar to "say", but does not enclose the message in quotes, or prefix it with "<character> says,". Only the character's name will be prepended. This allows the user to "act", and indicate his gestures and facial expressions.
- tell <character>, <message>
- Logs the message in a special format indicating the target of the message. If directed at an NPC, the message may be responded to immediately by that NPC, depending on who it is owned by and whether it has been "programmed" to respond. If used on an NPC owned by you, the NPC will immediately follow the instruction as if it was your character, parsing the message as a command. This command can also be entered in the form "tell <character> to <message>".
- talk
- Similar to "say", but opens a dialog allowing multiple lines of text to be entered. Useful for soliloquies and long dissertations on the meaning of life.
- page <character>, <message>
- Similar to "say", but logs the message only to the player's talk file, so that no one else can see it. Also, this command can be used to any character, anywhere, even one not in the same room. A synonym for this command is "whisper".
- who
- Lists the names of all players in the game, along with how long ago they were last on. Useful for finding out whether a certain player has lost interest in playing the game.
- password <password>[:<real name>[:<email>]]
- Changes your password to the given text. You may also specify or
change your real name and email address, which will appear in the "who"
list. Your email address will ONLY be visible to wizards, so if you want
everyone to see it, just leave out the colon between it and your real name.
Some games may require an email address, the wizards will let you know if
this is the case.
- search [<target>]
- Searches the room, item or character for hidden items. Characters cannot be searched unless they are unconscious. (Although specific games may implement other commands to override this) If no target is specified, the default is "here". At this time, this command has not been implemented.
- sit <target>
- Similar to "go", but positions the character "next to" the given item or character. Being next to an large, stationary item allows you to use its actions. Being next to a character usually allows you to attack it, so a character may dodge. (Causing the action to fail) This command is, in fact, a synonym for "go", so you can "go <item>", or just "<target>".
- back [<character>]
- If another character moves "next to" you, you can back it away from you with this command. If no target is specified, you will back away from whoever or whatever you are next to.
- edit [<target>]
- This is a very valuable command for setting your description or the
description of other items you may own. The exact properties you will be
able to edit will depend on the game, but usually you will be able to
describe what people see when they look at you, and what they will see
when you are knocked out. By using String Substitution (see below) you
can specify a dynamic, changing description based on abilities that you
have, items that you are holding, or just at random. The default, as you
might guess, is "me".
What is String Substitution?
The ability of the user to program descriptions for objects in the game, and manipulate values with Action scripts, is made even more powerful by the user of String Substitution. String Substitution allows a line of text to be replaced by a property, a random value, a list, the current time, or any of a number of other values.
All String Substitution codes start with "%". These codes may be placed in any description, and will be automatically decoded when the text is displayed. For instance, let's say have the ability to change shape, and can sometimes fly, and sometimes not. When you edited your description you could enter the following:
I am a shape changing creature %if[%sub[fly],with bat wings,I have no wings].
This description will look at the property named "fly" (which would be defined on your character whenever you changed shape, probably using an Action) and use the "if" code to select the correct text from the two values available. Note that the period at the end of the sentence, as well as the first part of the sentence before the %if code, will be displayed in either case.
An even more interesting code would allow you to select a color at random from a list:
I am %rand[Green;Blue;Yellow;Orange;Red].
Now every time someone looked at you you would be a different color. If you would rather change color once a minute:
I am %select[Green;Blue;Yellow;Orange;Red,%time[60]].
This code works because %select is able to "roll around" a numeric argument greater than the number of items in the list. See below.
Substitution codes fall into two groups, those of one letter, and those of more than one letter. Codes of one letter can be typed without an argument (in "[]") but those of more than one letter must include the braces, even if empty.
The object argument is optional, and is "me" if not specified. If the code syntax does not include an object argument, you may specify one and a property in place of the first argument. (This saves you having to nest a call to %sub, but it only works for the first argument)
In addition, if the code is capitalized, the resulting string will be capitalized.
Here are the one letter codes:
- %a (%a[object])
- Substitutes "his", "hers" or "its" (absolute pronoun) depending on the "gender" property of the player or object.
- %s (%s[object])
- Substitutes "he", "she" or "it". (subjective pronoun)
- %o (%o[object])
- Substitutes "him", "her" or "it". (objective pronoun)
- %p (%p[object])
- Substitutes "his", "hers" or "its". (possesive pronoun)
- %n (%n[object])
- Substitutes the object's name.
- %h (%h[object])
- Substitutes the object's health.
- %e (%e[object])
- Substitutes the object's energy.
- %l (%l[object])
- Substitutes the object's level.
- %c (%c[object])
- Substitutes the "condition" of the object. This is a unique string that represents its health without being specific.
- %r
- The newline character.
- %%
- The "%" character.
- %in
- This special value is used in programs to indicate the input value. It may be replaced eventually. (If I can think of some better way)
The following are the multi-character codes:
- %sub[object, property]
- Substitutes the specified property from the object. The property itself will undergo string substitution, so properties can make reference to other properties. (An earlier version of this FAQ listed a %prop code, use the %sub code instead)
- %eval[expression]
- Evaluates "expression" as a series of integers separated by the mathematical symbols "+", "-", "*", "/", and "()". Note that the operations do not have their normal precedence, they are performed in order from left to right. Be sure to force precedence with "()" when needed. There is also a special operator "@", which takes the average of the two values, rounding up if the first value is greater than the second, and down if the other way around.
- %if[condition, true, false]
- Evaluates "condition" as a relation or a series of relations. For each
relation, if the text is "no", "false", or "0", then the relation is false,
otherwise, it is true. Capital letters are ignored for this purpose.
The following operators may be used to separate or define relations:
- <str1>
==
<str2> - True if the two strings match.
- <str1>
!=
<str2> - True if the two strings don't match.
- <int1> < <int2> - Converts the strings to integers and does a less than comparison.
- <int1> > <int2> - As above, but greater than
- <relation>
&
<relation> - Performs an "and"
operation on the two relations.
- <relation>
^
<relation> - Performs an "or"
operation on the two relations.
- <object> is <type> - Where type is room, item, action, or actor. (NPC or Player. Use %sub[robot] to check for NPCs)
The special value "[]" can be used to indicate the "empty" string, for equals or not equals comparisons. As with %eval, precedence should be forced with
"()" where needed. The "==
" syntax is inherited from Java.
- %yes[condition]
- As if, but substitutes "yes" or "no" instead of the true or false string. Useful for performing a string comparison without having to use %if.
- %no[condition]
- Negates the condition, that is, substitutes "no" if it is true and "yes" if it is false. This may be used to implement "nand" and "xor" operations.
- %rand[#n]
- Substitutes a random number between 0 and n for the code.
- %rand[list]
- The list argument must be a set of values, separated by semicolons. Selects a value from the list at random.
- %select[list, num]
- As rand, but the "num" value is used to specify the index into the list, and select the value to be returned. If the value of "num" is less than zero, the empty string will be returned, but if the value is greater than the number of items in the list, the number will just "roll around" to the beginning.
- %time[arg]
- If the "arg" value is "date", this code returns the current time as a date, including the time, day, month, and year. If no argument is specified, or the argument is not a number, the current time in seconds is returned. If the argument is a number, then the current time in seconds is divided by the number, and then returned.
- %contains[list, str]
- Substitutes "yes" if the named item is present in the list of items specified.
- %dbref[object, name]
- Substitutes the dbref of the named item, searching the object specified. If no object, the player and room are searched as normal. This code is useful for locks and to store the dbref of an object in a property.
- %link[object, name]
- Substitutes "yes" if there is a link to the named item in the specified object, (that is, it contains that item or links to that action) otherwise "no". Again, useful for locks.