WindsMARE Helptext



WindsMARE Helpfiles - v2.1: Player's Manual


If you are new to WindsMARE, type: help getting started
For general information on WindsMARE: help general info

For a list of helpfile topics: help topics

For a list of common commands: help commands
For a list of building/coding commands: help @commands
For a list of built-in attributes: help attributes
For a list of global functions: help functions
For a list of object flags: help flags



Getting Started

Welcome to WindsMARE! Here are some basic commands that will help you get started on your journies as an Adventurer:

QUIT - Exit from WindsMARE. Must be in all caps.
who - Print a list of users currently online the system.
look - Look at the room you are in, or at a person or object inside.

"<msg> - Make your character say <msg> in your current room.
=<msg> - Transmit a message over the default [public] +channel.

page <player>=<message> - Sends <message> to <player>, who must be online.


General Information

WindsMARE, which stands for Multi-User Adventure Role-Playing Epic, is a virtual reality text-based fantasy game combining the survival and exploration objectives of the real world into a theme of medieval proportions, where high priests, lords, wizards and arch-magi, master thieves, dragons, fierce demons, and even the gods themselves may come into play.

There are 5 types of objects: Players, Rooms, Zones, Exits, and Things, each which make up their own part of the virtual database. Rooms are the backbone of the world, for every object in some way must be inside a room. Things can be placed into rooms or other things, acting as containers. Players have the ability to move through rooms or enter things. Exits link the various Rooms of the world together, and are used for movement in towns, castles, and the countryside. Zones chart off sectors of numerous rooms for use in full areas of development in the database.

Most basic commands, such as look or take, require typing in a particular <object>. By specifying this <object> (such as a Player, Thing, or Exit) by its name, you can tell the computer exactly what you would like to do with it. If there was more than one object of the same name in the room, you may specify it with an additional number in suffix. Example:



Section 1: General Commands



Commands

announce behavior cast clear drop enter equip examine
exits fight get give goto grab inventory items
leave look lore map money move open page
pick pose put quests run save say score
search sector skills spells status stop suicide summary
take talk to unequip use weather whereis whisper
who wimpy wish

+channel +com +finger +info +language +laston +mail +motd
+news +party +sbar +term +tzone +uptime +version

QUIT RECONNECT


ann
announce <message>

This command makes an announcement across the entire game. Every player currently online at the time of the announcement will see this message prefixed with your name. Making an announcement costs a rather hefty fee and is usually discouraged except in under extreme circumstances.


behavior
behavior <option>

This command modifies your combat behavior strategy when encountering enemies in the wilderness. Typing this command without an option displays the selections available to you and what setting you are currently using. The game checks your combat behavior every time you move to another room in the world. Behavior set more aggressively will force your character to automatically attack enemies waiting for you in the next room, while defensive behavior gives the player more time to cast spells or use items before the battle begins. Defensive options are better when you want to travel quickly across the land, and aggressive options are suitable when exploring in areas where battles are quick and you have little time to react. More options may become available to you as you study new skills and techniques.

See also: fight, Fighting


cast <spellname>
cast <spellname>=<target>

This command calls upon a learned technique and executes it at the given target, if specified. While casting a spell, you cannot move, fight, or use any other item; you must have complete concentration during the chant. How long it takes to chant a particular technique solely lies upon the chosen spell itself. All techniques require and consume some amount of either Magic Points or Endurance Points. You may use the spells command to list or view the current spells that you have learned. Examples:

See also: spells, Endurance, Magic Power


clear

This command clears the screen. If the Status Bar is turned on, it will also be reset to the current Terminal Emulation mode.

See also: +sbar, +term


drop <object>

This command drops a thing from your inventory into the room at which you are currently standing in. This works without restriction in rooms that you own, however, you are not able to drop objects into various rooms composing the village or countryside, or other rooms that you do not own. Event Items, on the other hand, may be dropped anywhere. Event items are not locked, and can be picked up by anyone else with the get command. Items dropped in Oceanic rooms sink (disappear) when the game shuts down.

See also: get, inventory, items, Oceanic


enter <object>

This command allows you to enter a specified object present in the current room. This object serves as a container, holding you in its inventory. You can freely enter any objects that you own that are not @elocked. For you to enter objects owned by other people, the Enter_Ok flag must first be set on it. To return to the original room once within an object, type 'leave'.

See also: leave, @elock, Enter_Ok


eq
equip all
equip <item>
equip =*<playername>

This command equips your character with a specific type of weapon or armor shown within your personal items inventory. Weapons are normally equipped in the right hand, and shields are normally equipped in the left hand. You may not equip a shield with weapons that are two-handed, and only with a special skill can you equip each hand with a one-handed weapon. All armor is equipped in their designated slots.

Typing eq without any arguments shows the layout of your character and all of the weapons and armor that have been previously equipped, along with the current Attack Power and Defense Power your character has: both with and without the equipment.

Typing eq all searches your item list and equips the optimum (that is, the best) weapons and armor available to your character. Wizards may type eq =*<playername> to view the current weapons and armor equipped on another player on WindsMARE. Examples:

See also: unequip, items


ex
examine <object>
examine <object>/<attribute>

examine <object>=all
examine <object>=brief
examine <object>=*pattern*

This command displays all the information contained within a particular object in the virtual database. The information listed includes the description of the object, as well as its owner, the flags set on it, the amount of memory it is currently using, the last time it was modified, and any other such attributes set or coded within the object itself. The object's contents, as well as its link and location are also displayed. You must be able to own the object to view a complete list of information within it, however, if the object also has the Visible flag set, anyone else may examine the object.

Typing examine without any arguments examines the current room you are in. You can also specify a distinct attribute to display on the object. If you specify this command with the argument all, then all attributes inherited by the object's parents will also be listed, prefixed with the number of generations above the attribute has passed through. If used with the keyword brief, then the contents and exits list of an object will not be displayed. If a *pattern* is specified, only those attributes whose values match the pattern will be shown.

See also: @desc, Visible


exits

This command displays all of the obvious exits found within the current room, as well as the names of the rooms of the destination that each exit is linked to.

See also: @link, @open


fight <enemy>
fight <full name of player>

This command engages combat against a particular enemy or player located in the current room. Within one round, which usually lasts about 5 or 6 seconds and is dependent upon one's Agility, you will attack the specified target using either your fists or your equipped weapon. Your fighting power, or the amount of damage you inflict on the enemy, is determined mostly by your Attack Power.

If your opponent is still alive by the time you deliver the shot (if any), your enemy may automatically engage into battle against you, striking back before the next round. The battle ends when either you or your opponent is vanquished. You may use any item or any technique maneuver while the fight proceeds to ensure victory, yet you cannot direct a normal attack until all other such techniques are either stopped or executed.

To prevent the accidental initiation of battle against player characters, the name of the player you wish to fight must be typed out in full. See the topic Fighting for a complete summary on the sequence of battles.

See also: cast, equip, use, status, Fighting


get <object>

This command picks up an object, located within the current room, and places it into your inventory. Only objects which are not @locked may be picked up by any player. You may not pick up other players or exits found within the room. The commands get and take are equivalent.

See also: drop, @lock


give <recipient>=<object>
give <recipient>=<event item>
give <recipient>=<amount of Gold Pieces>

This command gives either an object found within your inventory, or a reasonable amount of Gold Pieces, to the specified recipient. The recipient must be in the current room that you are in, and can be either a player or another object.

Any amount of Gold Pieces may be given freely to another player, provided you have enough to cover the transaction. Money given to an object that does not have a @cost attribute set will not be accepted. Objects may only be given to another player or object if it is under your ownership or if it has the Enter_Ok flag and the @elock attribute set appropriately. Event items may also be sent to other players in the current room. The item that you wish to send must be found in your items list, and must not be equipped at that moment. Normal event items, such as the Acorns of Life, or legendary pieces of weapons and armor cannot be given to anyone else online.

See also: grab, inventory, put, @cost, @elock, Enter_Ok


go <exit>
goto <exit>

This command makes your character move through an exit in the current room. As an abbreviation, one may just type the name of the exit, or its direction, to pass through to its destination. The commands goto and move are equivalent.


grab <object1>=<object2>

This command takes object2 from object1, and places it into your inventory. Object1 must also be in your inventory for you to take things from it. Things may be grabbed only if you own their container or if the Grab_Ok flag and the @lgrab attribute on the container is set appropriately. Example:

See also: give, inventory, put, @lgrab, Grab_Ok


help
help ?
help <topic>

This command displays an information screen which provides online help to a player. A player may choose to specify a particular topic to read about, or use ? as the argument to obtain the current version information of the helptext viewer.


inv
inventory

This command lists all of the database objects that you are currently carrying. It should not be confused with the items command, which lists all of your unequipped items, weapons, and armor.

See also: items


it
items <page>
items <item name>
items =*<playername>

This command shows you the layout of all of the event items, normal consumable items, and unequipped weapons and armor that you are currently carrying. It displays how much you have of each item, and a brief description of what each item does when used. If you have too many items, the list will be broken up into various pages. The page number viewed is displayed in the box at the top of the list. Typing items with the name of a carried item, either listed with the method above or by using the equip command, will display detailed information about the item itself.

Wizards also have the option of typing items =*<playername> to view the list of items that another player has. Examples:

See also: equip, inventory, use


leave

This command makes your character leave from the object you are currently inside of. You cannot leave from anything except an object, and you must be able to pass the @llock set on the object itself. This is the opposite of the 'enter' command, which allows you to enter an object in the current room.

See also: enter, @llock


load

Currently unimplemented.


look
look <object>
look <player>'s <object>

This command looks in the current room, or just at a particular object if specified. Looking within a room will view the room's description, along with whatever contents and exits are therein. If a room has the Dark flag set, objects within can only be seen when you or another person in the room is using a Torch. Objects or exits set Dark can not be seen unless specified as the actual target to the look command.

If the database reference number of a room is specified when using the look command, you will also view any visible attributes coded within. If you wish to otherwise view attributes, use the examine command instead. If you own the current room, all objects within (including ones set Dark will also be listed).

See also: examine, Dark


lore

This command lists the lore learned by your character as you travel throughout the storyline theme of the game. The column at the far left lists your available battle tactics, which usually include Fight, Cast, Use, and one or two other current guild commands from skills that you have learned. The next column over to the right lists other informational commands, such as Status, Items, Equip, Spells, Skills, and Save. These commands may be typed in at almost any time to receive information during the game. Help is available for each in further detail.

Also displayed in the lore command is the current storyline chapter that you are on, as well as the race of your character and all of the guilds that you belong to. Any other special effects will also be noted.

See also: fight, Fighting


map
map <floor>

This command displays the current map of the wilderness or dungeon that your character is exploring. The flashing star in the center of the map drawing is your present location. Terminals without ANSI emulation will find most maps hard to follow.

In the wilderness, a miniature drawing of your surroundings are displayed. Various text pictures found on the map represent different nearby countryside landmarks. There are generally three types of wilderness. Normal wilderness, which includes normal countryside, mountainous, or arid desert regions, display a fair size distance map. Swamp and marsh regions display a smaller than normal map layout. Rhovanion regions, which include great fields and plains, display a much larger map layout.

Dungeon maps, on the other hand, are quite different. The dungeon sector number, along with a list of the floors (or vertical levels present in the dungeon) are displayed. Depending upon whether or not you have gotten any special dungeon items determines the outlook of the rest of the map. First, each dungeon has a separate map hidden in a Treasure Chest somewhere that includes an ANSI representation of each floor present. Without the map in hand, the only thing you will see is the flashing white star denoting your position in the dungeon. With the map, you can view a preset floor display, which fills up to your current screen size, settable by using the +term command. Second, each dungeon has a compass which uses the map to point to the lair of the boss within. A bright yellow flashing X will appear next to the floor icon to the left which tells which floor the boss is located on. The X will also appear in the physical map of that floor. If the dungeon boss has been defeated, a solid red X will appear instead.

In a dungeon, typing map <floor> will display the actual map of a floor different from the one you are standing on. Each map also displays the compass location, which is translated as the distance from the origin point marked on the map. The origin point is usually the entrance to the dungeon or the central crossroads of the wilderness. Example:

See also: sector, +term


money
money <playername>

This command displays how many Gold Pieces you have, both on hand and in the local Vault. Wizards may choose to type money <playername> to find the assets of another player on WindsMARE.

See also: status


move <exit>

This command makes your character move through an exit in the current room. As an abbreviation, one may just type the name of the exit, or its direction, to pass through to its destination. The commands move and goto are equivalent.


open <object>

This command opens a particular object in the room, such as a Treasure Chest, and gives you its contents. Once a chest is opened, it can never be reopened by the same player.


page <playername>=<message>

This command sends a message to any other player currently online. You may send messages to more than one player at a time by using spaces in between the player names. If the player you specify is disconnected or hidden, their @away message will be displayed. If the player is idle, or hasn't typed in any command longer than five minutes, their @idle message will be displayed. If the player is currently not accepting pages and has their @plock attribute set against you, you will see their @haven message. Examples:

See also: @away, @haven, @idle, @plock


pick

This command searches the wilderness area around you and picks the plant that is most abundant in the area. The effects of the plant are immediate, and could be both helpful or harmful to the player depending upon what type of plant it is. Only rangers are known to preserve the plants they pick for later use, either for themselves or against their foes.

See also: search


pose <message>

This command emits a message in your current room, using your character's name as the first word of the sentence. For example, if your name was Bob and you typed 'pose laughs!', everyone else will see the message 'Bob laughs!' This command may be abbreviated using :<message>, or by using ;<message> for possessives. Examples:


put <object1>=<object2>

This command puts object2 inside of object1, both of which are originally located in your inventory. Objects can only be put inside others that are under your ownership, or if they have the Enter_Ok flag and the @elock attribute set appropriately.

See also: give, inventory, @elock, Enter_Ok


quests

This command lists the names of the level quests you've completed during your adventuring career. Level quests reduce the number of Experience Points needed on a specific level to get to the next level. Upon completion of a level quest, the player gains an amount of EXP inversely proportional to the number of quests available for a particular level. If only one quest exists, then the player gets half of the EXP needed. If two exist, then the player gets one-third EXP for each completed, and so on. The player is only granted experience points at the time of completing the quest when he is already on the specified level, otherwise the player will automatically get the experience points when he achieves a levelup to that level. If a level quest is marked as required, a player may not advance to the specified level for which the quest is required to be done. The player's Experience For Next will remain at 0 until the quest is completed, where it will then automatically levelup that player. Required level quests may or may not grant any EXP.

You can view the list of all available level quests by typing the command @list quests, or using @list quest=<level> for detailed descriptions about each one on a particular level. A level quest cannot be completed by any player whose level is higher than that specified. You can also see the number of level quests completed by using the score command.

See also: score, Experience


run

This command attempts to escape from a hazardous battle in the dungeon or countryside. Upon escaping, you will move through a random exit, or whichever is not blocked by monsters. Running from difficult monsters is a good practice, as long as you don't make it a habit to venture often into the uncharted wilderness until you raise your levels high enough to win most battles successfully. You cannot run when fighting a major boss enemy.


save

This command saves your current status and location in the game. You must either own the room you are in, or it needs to have the Abode flag set, represented by an A appearing after the database reference number of the room. You cannot save in boss zones or if you have a disruptive ailment.

See also: load, status, Abode


say <message>

This command makes your character say a message to all the other people in the room. You may see who else is in the room by typing 'look'. This command may be abbreviated using "<message>.


score
score <player>

This command shows your current score in the game, including some of the most commonly requested statistics about your character, status attributes, and health that your character is currently experiencing. Further detail can be viewed through the other game information commands: status, lore, and summary. Only Wizards have the ability to view the score of other players in the realm.


search

This command makes your character search your surroundings in the current room that you are standing in. You will be notified if you find anything unusual nearby. It is a good practice to search often while exploring dungeons or unmapped rooms, for many hidden secrets such as treasure chests could be revealed.


sector

This command displays information about the wilderness zone area that you are currently standing in. It shows the defined sector number and name, along with the common enemy encounters you will normally find as you move through the rooms within. Sector also brings up information about the current room, such as which flags it has and which floor you are on (in dungeons). Most dungeon and wilderness sectors have their own rooms mapped out, and are visible to players by using the map command.

See also: map, Zones


sk
skills <page>
skills <technique name>
skills =*<playername>

This command gives you a layout of all of the special skills that you have learned during your journeys. It displays the percentage of mastery that you have of each, and a brief description of what each does. Skill effects are automatic; they cannot be used by any direct means, but are instead triggered through the usage of other actions only a percentage of the time. If you have too many learned techniques, the list will be broken up into various pages. The page number viewed is displayed in the box at the top of the list.

Typing skills with the name of a technique will display further detailed information about the particular skill, including how many Endurance Points it costs to activate the skill, and how many Technique Points are needed for the next percentage level of mastery. Various skills aid you in your quest in many numerous ways, and it is recommended that you learn as many as you can throughout your adventure. Each separate guild has their own learnable skill, with unique effects pertaining to that guild's field of study. Some skills enable the usage of other commands, which appear under the list of combat tactics using the lore command. Wizards may type skills =*<playername> to view the current list of skilled techniques that another player has. Examples:

See also: lore, spells


sp
spells <page>
spells <spellname>
spells =*<playername>

This command gives you a layout of all of the spells that you have mastered. It displays the current level and percentage of mastery that you have of each, followed by a brief description of what each does. Spells can be used in or out of combat or by using the cast command, as long as your character is not in a Muted condition. If you have too many learned techniques, the list will be broken up into various pages. The page number viewed is displayed in the box at the top of the list.

Typing spells with the name of an incantation will display further detailed information about the particular spell, including how many Magic Points are needed to successfully cast the spell, how long it takes to cast the spell, and its specified attack type. Elemental attack types are broken down into four categories: Single- hits one enemy only, Group- hits a species of enemies or an entire party of players, All- hits all enemies in the current room, and Global- hits all enemies and party members in the room. Wizards may type spells =*<playername> to view the current list of spells that another player has. Examples:


st
status
status <enemy>

This command displays in full your character's current status in the game. Among the list of items displayed are your current and maximum Hit Points, your current and maximum Magic Power, current and maximum Endurance, your character's Level, your total Experience and how much you need for the next level, your current alignment (Virtue), how many non-fatal deaths you have undergone during your adventure, and how many steps you've taken from the start. Various attributes are also listed, including your current Strength, Dexterity, Wisdom, Intelligence, Agility, Luck, Attack Power, Defense Power, and Magic Attack Power.

The amount of Gold Pieces both on hand and in the Vault is displayed, with the amount of Task Points that you have earned. Your Critical Rate and Experience Rate are also displayed, along with the number of sessions you have connected to the game and the amount of time you have spent online (in hours:minutes). Wizards have the ability to status other players and enemies in the realm. Help is available for each of the topics mentioned above.

See also: lore


stop

This command stops any current incantation being casted, or any special technique being used within or outside of battle. If used in the heat of battle, your technique will merely stop and you will attack your enemy at the next possible chance.

See also: cast


suicide

This command brings death to your character at an instant, returning you to The Prairie to await resurrection at your previous save point. Use this command when you find yourself stuck in a labyrinth (such as a house in a Residential Zone that has no 'Out' exit), or if you are Wounded and there is no enemy nearby to finish you off.

See also: save


summary

This command shows you the battle summary of your online session, including the number of monsters you have killed and the number of times you have died. Among the fields, Experience Gained is the number of Experience Points gotten from killing enemies or players. Gold Difference is the total amount of Gold Pieces that you have both on hand and in the Vault, and how it has changed (positively or negatively) since the time you have last connected. Steps Taken is the number of room moves while online. Total Damage Inflicted is the amount of damage actually absorbed by the enemies you have fought. The Hit Average readout is a percentage of the number of successful hits that you have made against an enemy, divided by your total number of attacks.

Two more fields are present. Damage taken without protection is the total amount of damage that an enemy has actually inflicted upon you, without subtracting any rebound movements or armor defense points. Damage taken with protection is the total amount of Hit Points that you have lost, with armor defense points added, from attacks inflicted by enemies. It is a general rule that if the amount of damage taken with protection is greater than half of the amoung of damage taken without protection, that you are fighting in too heavy of a territory and the monsters might be a bit too strong for you. On a further note, this is the same screen that is displayed when you disconnect from the game using QUIT.

See also: QUIT


take <object>

This command picks up an object, located within the current room, and places it into your inventory. Only objects which are not @locked may be picked up by any player. You may not pick up other players or exits found within the room. The commands get and take are equivalent.

See also: drop, @lock


talk <person>

Talk to townspeople and various other non-player characters by using this command. Many townspeople give clues and other hints about the storyline that you are role-playing, while others just go about their normal way through the town unwilling to talk to a perfect stranger about the local events and happenings. It is a good habit to always talk to a person more than once, for they often say something different.


to <playername> <message>

This command sends a message to all the players who are in the current room. The message is prefixed with your character name, and the name of the person you are directing the text to. This command may be abbreviated using '<playername> <message>. Using : or ; as the first letter of the message changes the output to a pose. Examples:

See also: pose, say


unequip <object>

This command unequips any weapon or armor that you currently have equipped, provided it is not cursed, and places it into your items listing. The changes in your Defense Power are also displayed.

See also: equip, items


use <item>
use <item>=<target>
use <object>=%0,%1,..,%9

This command uses a particular item, found within your items list. If no target is specified, the game assumes you would like to use the item on yourself. Each item has a different effect, which is displayed when you examine it further by typing items <itemname>. Depending upon the available skills, you may use variour armor and weapons to produce different effects against a target enemy. Regular items disappear when used, however special weapons and armor may have several or infinite charges. Objects with the @use, @ause, and @ouse attributes set appropriately may also be used, and additional arguments passed to the command will be parsed as %0, %1, and so on.

See also: items, @trigger


weather

This command displays the game's weather almanac, which includes data on various climate temperatures around your area, the sunrise and sunset of the current day, chance of rain, humidity, wind speed and direction, precipitation, visibility, and barometric pressure. It also shows the phase of the moon, as well as the current game time since the "beginning" of the world. Various functions listed below can also be used to obtain almanac information through coding.

See also: alttemp(), avgtemp(), gettemp(), wdate(), wtime()


where
whereis <playername>

This command shows you the location of a particular player currently online the game. You may set the Dark flag on your character if you do not wish to be located by other players. Setting the @hlock attribute appropriately, or hiding from a user, is also a decent way to protect your location from being known. Typing where without any arguments will scan the rooms around you for any monsters or other players visible in the distance. You can only scan for players in the open wilderness.

See also: @hlock, Dark


whisper <player>=<message>

This command whispers a message to the specified player, who must be located in the same room you are in. Other people in the room will see that you are whispering to someone, but will not be able to make out the contents of the message.

See also: page


who
who ?
who <flags>
who =<playerlist>
who <flags>=<playerlist>

This command displays the list of players currently connected to the game. Hidden players are not listed, but could still be counted in the value of total users shown at the end of the list. The <playerlist> is a space-separated list of the only players that you would like to see on the wholist.

<flags> is a list of words which represent the columns that you would like to see in the who list. There are two versions of each column: short and long. If the first letter of the flag is capitalized, the game will display the long version, as opposed to lowercase for the short. Type who ? for a list of currently available flags. If no flags are specified, the who list defaults to name online idle Level gender Occupation doing poll, or if there are over 200 people online, just name level. Your default flag settings may be changed by using the @whoflags attribute to store the value on yourself.

See also: @whoflags


wimpy
wimpy <Hit Points>

This command either displays or sets your current Wimpy percentage value. When an enemy hits you with an attack, the game checks this value to see if your Hit Points has gone below that marked percentage. If your Hit Points are low enough, your character will wimp out and automatically run away from the battle. Use this mostly when exploring new territory and are unsure of what type of monsters you might encounter there.

See also: fight, run, Fighting, Hit Points


wish
wish <name>
wish <name>=<target>

You can get wishes by having enough Task Points on hand. A wish is something that can not be gotten by normal means on the game, such as an added effect to your character, increased stats, or the like. Type wish by itself for a list of wishes to choose from. Using the name of the wish, you can get more information about what each one does. The wish will not be requested and no Task Points will be used unless you specify a valid <target> for the wish, which is usually an item you are carrying or the word me. If you're looking for a wish that isn't available, speak with a Wizard online and it might be added, as long as it's reasonable.


+ch
+channel <channel name>
+channel -<channel name>

This command lists or sets your channels for the online communications system. The +com system supports an arbitrary number of case-sensitive named channels. Players who are working as a group can make up a channel name for their group and add it to the list of channels which their +com is listening to.

+ch <channel name> sets the default channel for use with the abbreviated communications command, =msg. +ch -<channel name> removes a channel from your list. Typing +ch without any arguments shows the list of channels that you are currently listening to. You can listen to as many simultaneous channels as you wish. For a general chatting channel, turn to channel 'public'.

See also: +com


+com <channel>=who
+com <channel>=<message>

This command sends a message over a particular communications channel, quite like an interactive speaking radio. You can get a list of your current channels by using the +ch command. If the message sent contains only the word who, you will receive a listing of all the players currently on that channel. Channel names are case-sensitive. Speaking on your default channel may be abbreviated by using the command =msg.

See also: +channel


+i
+info ?
+info all
+info <topic>

This command displays the current database breakdown of the Mare, showing many statistics of different categories. The display has been broken up into several topics, which may be displayed by typing +info <topic>. Typing +info ? will show you the full list of current topics visible. Typing +info all will display full information about each topic, which can get rather large.

See also: +uptime, +version, @stats


+f
+finger <playername>

This command displays extended information about a specific player on the game. It shows the level, race, and list of occupations that the player has, along with the time spent online, real life name, email address, and a possible @plan that the player has set on himself or herself. If the player is not online or hidden from you, it will show you the last time the player connected to the game.

See also: +laston, @plan


+lang
+language <new language>

Displays or selects your currently spoken language. This affects commands that say things in the room, such as say, pose, and to. It does not affect out-of-character commands such as page and +com. Setting a language may enhance or cripple your ability to talk with non-player characters as you meet them in the story.

When another player hears you speak a language they don't know 100%, your words are replaced by gibberish depending on how much they know that language. Knowing a language at least 10% allows you to somewhat read scrolls and write words. 50% is required to be able to speak in a tongue. At 90%, you can fluently speak the language and teach it to others.

Over time, you can learn the language that others are speaking by joining in a +party with them. They must have the language selected and in use during your travels. You will not know if you have learned the language until it reaches 10%. Some races initially start off with the ability to speak or understand more than one language.


+last
+laston <playername>

This command tells you the last time the player has logged onto the game, and if the player is currently disconnected, the last time the player has logged off. You cannot view the login times of players that are hidden from you.


+mail

The +mail system allows a user to send messages to anyone else online, and read messages sent by other players. To send someone a message, type +mail <player>=<text>. You may specify more than one player to send mail to by separating their names with a space, but standard prices apply for each additional message to be sent. Typing +mail without any arguments will display the list of messages you currently have in your mailbox. To view a message, type +mail <message#>. To delete a message, type +mail delete=<message#>. Deleted messages disappear from your mailbox when you leave the game. A full list of +mail commands is shown below.

+mail [list] - Lists your current mail messages.
+mail check - Checks if new mail has arrived.
+mail clear - Completely clears out your mailbox.
+mail clear=<msg#> - Erases a particular message number.
+mail delete=<msg#> - Marks a message for deletion.
+mail undelete=<msg#> - Saves a message from deletion.
+mail protect=<msg#> - Protects a message from being erased with +mail clear.
+mail unprotect=<msg#> - Returns message status to normal.
+mail [read] <msg#> - Reads a particular message.
+mail [send] <player>=<text> - Sends a message to a player.
+mail reply <msg#>=<text> - Replies to a particular message.
+mail forward <msg#>=<player>[,<text>] - Forwards a message to another player.
+mail rewrite/purge - Purges mailbox, zapping all messages marked deleted.
+mail version - Prints out the current TinyMARE Mail System version.

Wizard commands:
+mail scan <player>[=<msg#>] - Views mailfile of another player.
+mail remove <player>=<msg#> - Removes a message from player's mailfile.
+mail reset - Erases the entire mailfile.


+motd

Displays the current message of the day. The file that you see is the same one that is presented each time you log into the game, just before connecting.


+news

Currently unimplemented.


+party

WindsMARE's +party system allows a group of people to explore the wilderness and dungeons together as a single party of adventurers. Members of this group follow a designated leader as a team, each taking their turn to attack monsters and share in the experience gained. Party members are oriented by rank and formation, with the leader in the front row. The leader can choose different formations based on his or her combat ability. All members can see their position on the field, as well as the status of each and every other member of the party. A party of players makes for a formiddable opponent against any threat that crosses your path.

How it works:

It only takes one person to begin a party. You can start a new party by entering the command '+party create=<name>', where <name> is the name of your new party. Next, you can check out the status of your party by typing '+party status'. This will show your vital party statistics, including when it was created, how many Experience Points have been earned, and who is in your party.

A box to the left of the main status display shows your current party's formation as it would be on the field of battle. The numbers in the box show where your party members are in relation to each other, according to rank. In normal attacks, enemies If the party leader dies, he will exchange places with rank #2. People in a party not fighting in the same sector of the wilderness will not obtain the experience points the other gains from killing an enemy. Otherwise, all Experience Points gained is equally divided among members with a remainder going to the topmost in rank. Gold Pieces won from enemies are given out randomly to the party members present. Technique Points are given to the player who defeats the enemy. While fighting, your Agility determines who goes first in the party. You will automatically leave the party if you disconnect from the game.

+party status can show a general display of your present party's statistics. In the flags line, L stands for Leader (rank 1). F indicates that the person is following the leader around the wilderness (normally this should be the case). H means that the person is hiding his party title from other players outside of the party. A means the player has a condition ailment associated with his status. You may use +party com or the command -<msg> to send a message to everyone in the party. A full list of +party commands is shown below.

Party Member Commands:
+party list - Lists the parties currently running in the game.
+party status - Shows the current status of the party.
+party create=<name> - Create a new party.
+party join - Join the party that you have last been invited to.
+party leave - Leave the current party.
+party follow - Start/stop following your leader through rooms.
+party hide - Hide/Show that you belong to the current party.
+party row=<rank#> - Switch to a lower rank in party formation.
+party com=<message> - Sends a message to everyone in the party.

Party Leader Commands:
+party name=<new name> - Rename the current party.
+party invite=<player> - Invite another player to your party.
+party kick=<player> - Boots the player out of the party.
+party leader=<player> - Selects someone else to be the leader.
+party rank=<player>,<rank#> - Positions a player to a specific rank.
+party formation=<strategy> - Selects a new party formation during combat.
+party reset - Clears the Exp/Min and resets party's creation time.


+sbar on|off
+sbar reset
+sbar floor
+sbar color=<0-10>
+sbar clock=on|off|default|12|24|game|game-24|age

The status bar is a real-time region that gets fixed to the top of your viewing screen, using VT100 or ANSI terminal emulation. The components of the status bar are your current Hit Points, Magic Power, Endurance, Gold Pieces, Level, and current Condition. Also shown is your total Experience, and how many points you need for the next level.

Type +sbar on or +sbar off to turn your status-bar on or off. The status bar will be removed when you properly disconnect from the game. If your status-bar ever gets jumbled, typing +sbar on or clear will redisplay the screen, hopefully fixing any errors. The background color of the status-bar may be set by using +sbar color=#, where # is a number from 0 through 10. To reset your entire status-bar configuration to default vaules, type +sbar reset.

In this status bar is also implemented a real-time clock. You may alter the clock, using the command +sbar clock, to show 12 or 24 hour real-life or current-game time. You may also specify to display your character's age, shown in hours:minutes. Also, at times during your travels, you will notice two letters appear in the upper right corner of your status bar. This tells you that you have changed to a new floor, or level, in a particular dungeon. To view the current floor you are on, type +sbar floor.

See also: clear, sector, weather, +term


+term
+term <setting>
+term <setting>=<value>

This command displays and sets the terminal attributes on your particular character, for use with the game's output display. Typing +term alone shows you a list of both modifyable and inferred settings. If you type +term <setting>, you will be shown a list of values appropriate for that particular setting. Inferred variables may not be changed, but are presented to the game depending upon the current state of your connection. Upon creation of your character, most of these settings are asked in the form of a brief questionnaire. Most commands look nicer if your terminal has ANSI emulation present.


+tz
+tzone <offset>:<y|n>

This command tells the Mare which timezone you are in, so that all functions dealing with time will be adjusted according to where you live in real life. <offset> is the number of hours before or after Greenwich Mean Time, from -10 to 13. Default offset for the Mare is usually -5, Eastern Standard Time. <y|n> refers to whether or not your timezone changes to Daylight Savings Time every 6 months. Default is Yes.


+uptime

This command displays various runtime statistics concerning the game itself, including the exact time in which the game was last turned on, last rebooted, and how many minutes it will be until the time the game next saves its database.

See also: +version, uptime()


+version

This command displays current version information for netmare, including which type of operating system it was compiled on, what compiler did the effort, the date of the last hardcode upgrade, and the current database version being used.

See also: +uptime, version()


QUIT

This command disconnects you from the game, saving your entire character's status, location, and inventory. Items you are holding do not disappear when you are away from the game, and things will resume as normal when you reconnect. If you have fought at all during your stay online, you will also be shown a summary status screen displaying your battle statistics for the session. Please note that this command must be typed in all CAPS.

See also: summary


RECONNECT

Similar to QUIT, the Reconnect command disconnects your character from the game and immediately returns you to the login prompt, where you may once again connect to your character or select a new one to login to.

See also: QUIT



Section 2: Coding/Building Commands



@Commands

@addparent @addrelay @addzone @chown @clone @create @cycle
@decompile @defattr @delparent @delrelay @delzone @destroy @dig
@echo @edit @emit @find @force @foreach @halt
@iterate @link @list @memory @misc @name @necho
@nemit @npemit @oemit @open @oremit @passwd @pemit
@poll @ps @push @redefattr @redirect @remit @search
@set @stats @switch @text @time @trigger @undefattr
@undestroy @unlink @unlock @update @upfront @wait @wipeattr
@zemit @zone


@addparent <object>=<parent>

This command gives an object a new parent. Objects may have any number of parents related to them. The parent object must be either controlled by you or have the Bearing flag set. An object inherits attribute definitions from its parent, and may also inherit attribute values, if the inherit option is set on the particular attribute. See the topic Inheritance for more detailed information.

See also: @delparent, Bearing, Inheritance


@addrelay <object1>=<object2>

This command adds object2 to the list of relays on object1. An object, with a relay set, will send all that it hears to object2, in the form that corresponds to the @rhear attribute. This works much like how a puppet sends what it hears to its owner. Non-player objects may relay data only when their @listen attribute is appropriately defined. You must be able to control both objects for this to work properly.

For example, typing the following commands will set up a relay between room #2000 and room #195. All the messages heard in room #2000 will be sent to everything in room #195 with the prefix 'From afar,':

See also: @delrelay, @listen, @rhear


@addzone <room>=<zone object>

This command adds a zone object to a particular room. A zone object must be an object that was previously created with the @zone command. Once a room is zoned, exits from within may not be linked to other rooms outside of the zone. Wilderness sector information for the specific room will always use the first zone added to the list for calculations. You must own both the room and the zone for this command to work. See the topic Zones for more detailed information about zones.

See also: @delzone, @zone, Zone, Zones


@chown <object>
@chown <object>=<player>

This command changes ownership of a particular object, room, or exit. To @chown things, you must be carrying them. For rooms or exits, you must be in the room that they are in. Unless you are a wizard, objects must have the Chown_Ok flag set on them. Any chowned object is automatically set Haven for security purposes. Wizards have the ability to chown any item to any player they wish.


@clone <object>
@clone <object>=<newname>

This command makes an exact duplicate of the specified object, and puts it in your inventory. If <newname> is specified, the object created will be named as such. You must be able to control the object to clone it. Monsters and other items with a combat status set may not be cloned.


@create <object name>

This command creates an object with the specified name, and puts it in your inventory. Creation costs a subtle amount of Gold Pieces. You do not get your money back when the object is destroyed.

See also: @dig, @open, @zone


@cycle <object>/<attr>=arg1,arg2,..,arg100

This command cycles the contents of a particular attribute on <object> with the next argument in the series. If the last argument is reached, the @cycle command will switch it back to the first, and so on. Example:

See also: @set


@decompile <object>

This command outputs a series of instructions, in regular text, that may be quoted or typed back into TinyMARE to reproduce the object in its entirity. This command is useful for copying objects between multi-user realms or recording the data of an object for personal use offline, most likely as backup or for local editing. This command does nothing to the object itself, only merely displays its contents in command form.


@def
@defattr <object>/<attr>
@defattr <object>/<attr>=<options>

@defattr <object>/<attribute pattern>=<options>

This command creates a new attribute, with name <attr>, on a particular object. The attribute can be set to a value using the @set command, or by using the abbreviation @<attr> <object>=<value>. The <options> argument is a space-separated list of any options that you would like to give the attribute (listed below). The @defattr command may be used on an existing attribute to change its options. You may use either the examine command, or the attropts() function to display the current options on a particular attribute. If you specify an <attribute pattern> using wildcards, this command will attempt to set the flags on all matching attributes instead of defining a new attribute on the object. No object can have more than 255 attributes defined on it. A full list of the attribute options is shown below.

osee - Enables the attribute contents to be seen by anyone who examines it, and not just the owner.
dark - Its value is not displayed during an examine, and its contents may not be retrieved by using the get() function.
wizard - This attribute may only be set by the owner of the parent in which it is defined, or by a wizard of the game.
unsaved - This attribute is not saved along with the database, and thus is erased each time the game restarts.
hidden - With the exception of God, the contents of this attribute can not be viewed or modified.
date - The contents of this attribute will be expanded to correspond to the time and date, much like what xtime returns, adusted to the player's timezone value.
inherit - The attribute contents will be seen on all children of that particular object. Unless marked wizard or nomod, the attribute on the object's children may still be changed to any other value.
lock - The contents of this attribute will be expanded to a boolean lock expression when examined.
function - This attribute may be called upon as a user-defined function, as in attr(args). Arguments to the function are passed to the attribute contents as %0 through %9.
haven - This attribute may not be triggered or executed using $ or ! Events.
bitmap - The number in this attribute is expressed in hexadecimal format when examined.
dbref - The number in this attribute is parsed to the database reference number when examined.

Examples:

See also: examine, @set, @undefattr, Events, Inheritance, attropts(), get(), xtime()


@delparent <object>=<parent>

This command removes a parent from the object. You must be able to own the object's parent, or the parent must already have the Bearing flag set. Any attribute values set on the object whose actual attributes were defined on the parent will be lost. See the topic Inheritance for more detailed information.

See also: @addparent, Bearing, Inheritance


@delrelay <object>=<object2>

This command removes object2 from the list of relays on object1. It may be appropriate to also remove the @rhear attribute on the object, if no relays are present.

See also: @addrelay, @listen, @rhear


@delzone <room>=<zone object>

This command removes a zone object from the list of zones on a room. You must be able to own both the zone object and the specified room. See the topic Zones for more information.

See also: @addzone, @zone, Zone, Zones


@destroy <object>
@destroy <object>=Now
@destroy <object>=<seconds>

This command destroys a thing, room, or exit currently in the player's possession. All rooms that are destroyed will be automatically set with the Going flag, and the room itself will be destroyed nearly 10 minutes after the command is issued. During that time, you may type @undestroy to stop the process. If you are unsure of destroying an object, you may also schedule its destruction time by entering in the amount of <seconds> it has remaining. All objects found with a room at the time of destruction will be sent to their homes, and all players will instantly die. All exits leading to and from the room will also be destroyed.

See also: @undestroy, Going


@dig <room>
@dig <room>=<exit to>,<exit back>

This command creates a new room with the specified name, and displays its number. If you include additional exit names, they will be opened up from the room you are in (and back again, if you include the <exit back>). You cannot open any exits out of a room that you do not own. Exitnames may be given aliases by using a semicolon to separate them from the full name. The @dig command copies the @color, @floor, and Zone of the previous room. Examples:

See also: @color, @create, @floor, @link, @open, @zone, Zones


@echo <message>

This command parses and sends a message to the player who executes it, namely yourself. It is mostly useful for objects, or for parsing function values. Example:

See also: @emit, @necho


@edit <object>/<attr>=$,<string to append>
@edit <object>/<attr>=^,<string to prepend>
@edit <object>/<attr>=<old string>,<new string>

This command edits a particular <attr> of an object, replacing all occurances of <old string> with <new string>. If ^ or $ is used, the string will be prepended or appended, respectively. If the string contains complex characters such as non-alphabetic or numeral characters, curly braces are required around the string. Example:


@emit <message>

This command parses and sends a message to all of the players who are in the current room that you are in. You cannot spoof, however, or begin the message with the name of another player, and pretend to be that other person.

See also: @nemit, @npemit, @oemit, @oremit, @pemit, @remit, @zemit


@find
@find <pattern>

This command searches the database and lists all of the objects that you own, whose names match <pattern>. If no arguments are presented, this command will list all rooms and things that you own. It will not work on exits. Finding objects requires a subtle fee.

See also: @search


@fo
@force <object>=<commands>

This command forces a particular object to execute a set of <commands>. The list of commands is in the same format as action attributes, in that they are each separated by a semicolon. Only wizards are able to force other players to do things. Example:

See also: @switch, @trigger, @wait


@foreach <wordlist>=<actions>

This command executes <actions> (which may be a semicolon-separated list of commands) for each word in <wordlist>, whose elements are separated by spaces. If a %0 or [v(0)] occurs anywhere in the command, it will be substituted by the current word from the wordlist, in order, while iterating. Examples:


@halt
@halt <object>
@halt <object>=<commands>

This command halts all of the objects owned by you. Any command currently in the queue for an object will be removed, and all will be silent. If you specify an object as the target, only that object will be halted. If you also list any semicolon-separated commands, the object will execute those after it halts everything else. Wizards have an additional ability to type @halt ALL, which instantly clears all queued commands on every object in the game.


@iterate <pattern>=<command>,<action>

Invokes the command <action> for every output line of <command> that matches <pattern>. Unmatching parts of the output get discarded. Since <action> is placed into the command queue and executed only after the full output of <command> is done, the Quiet flag need not be set to protect against infinite recursion. This command is equivalent to setting the @listen and @ahear attributes on an object to <pattern> and <action> respectively, and then forcing that object to execute <command>. More than one command or action can be specified at a time by using curly braces around the set, with individual commands separated by semicolons. Examples:

See also: @ahear, @listen, @open, Quiet


@link <exit>=<destination>

This command links an exit, to a destination room. The destination is usually specified as a database reference number, such as #12345. You may link an exit to any room you own, or to any room set with the Link_Ok flag. Linking exits requires a small fee. Wizards may link an exit to 'home'. This allows anyone passing through the exit to be immediately transported to the place where they had last used the save command.

See also: save, @dig, @open, Link_Ok


@list
@list <category>
@list <category>=<value>

This command lists various tables of data, configured in the source code of netmare. Typing @list on a line by itself without arguments shows you the possible categories that can be obtained. Type @list <category> to get a full readout of that particular category. If you would like to limit the readout to only certain values, then you may specify them in the above command.


@memory
@memory <player>

This command shows the complete memory usage of you, or another person online. It also tells you the percentage of objects and bytes used out of the total of the entire game, combining all of the players and objects in the database. Wizards have the ability to check on the stats of players other than themselves.


@misc

Used for artificial intelligence robots that correspond to multi-user realms such as TinyMush and TinyMuse, this command displays the original error message used by those programs. Since most maas-neotek robots use @misc as their way of checking to see if the local mud is still alive, it is appropriate to have this command available in TinyMare.


@name <object>=<newname>

This command changes the name of an object, room, or exit, to a new name. You must be able to control the object to change its name. Exits may have aliases set after their full name by separating them with a semicolon. Only wizards are able to change the names of players online. Example:


@necho <message>

This command sends a message to the player who executes it, namely yourself. Unlike @echo, no spaces are removed from the message text, and no functions are parsed.

See also: @echo


@nemit <message>

This command sends a message to all of the players who are in the current room that you are in. You cannot spoof, however, or begin the message with the name of another player, and pretend to be that other person. Unlike @emit, no spaces are removed from the message text, and no functions are parsed.

See also: @emit, @npemit


@npemit <object>=<message>

This command emits a message to one object or player only. You cannot begin the message with the name of another player, and pretend to be that other person. Unlike @pemit, no spaces are removed from the message text, and no functions are parsed.

See also: @emit, @nemit, @pemit


@oemit <object>=<message>

This command parses and emits a message to everybody in the room you are in, except for the specified <object>. You cannot begin the message with the name of another player, and pretend to be that other person.

See also: @emit, @oremit, @pemit, @remit


@open <exit>
@open <exit>=<destination>

This command opens an exit, from the current room you are in, to a destination room (if specified). You must own the current room to create an exit, and the destination room must be either controlled by you or set with the Link_Ok flag. Opening exits costs a small fee, and linking them costs an additional fee. Exit names may contain aliases, which are separated by semicolons from the name of the exit itself. Example:

See also: @create, @dig, @link, @zone, Link_Ok


@oremit <object>=<message>

This command parses and emits a message to everybody in the room that <object> is in, except for the specified <object> itself. Unlike @oemit, this command may be used to send a message to an entirely different room than the one you are in. The same rules on spoofing still apply.

See also: @emit, @oemit, @pemit, @remit


@passwd
@passwd <playername>

This command allows you to change the password of your character. You will be prompted to enter in your old password with local echo turned off, so that others in the room will not easily see what you are typing. Then you may enter your new password twice, once to verify that it is correct. The @passwd command may only be used in direct mode and not executed by using a command in the Queue. Wizards also have the option to specify an additional <playername> to change the password of.


@pemit <object>=<message>

This command parses and emits a message to one object or player only. You cannot begin the message with the name of another player, and pretend to be that other person.

See also: @emit, @nemit, @npemit


@poll
@poll <message>

This command sets the Quote of the Day, seen by using the who command, with the poll who-flag in use. Once the quote has been set, it cannot be changed for another 15 minutes. If no arguments are given, this command will clear the current quote of the day. Wizards have the ability to modify this message whenever they please.

See also: who, @whoflags


@ps
@ps <category>
@ps <category>=<player>

This command lists all of the elements in each queue scheduled to take place in the next slice of time. Typing @ps without arguments will list all of the commands currently waiting to be executed by the use of the @force, @trigger, and @wait commands, for all objects either owned or controlled by you. Depending upon what has been configured in the game, there might be other categories present in the stats layout. Wizards may include a specific <player> to check the queue of, and all objects owned by that player will be reported in the readout.

The Command Queue is operated on a first-in first-serve basis. When an object is forced to execute a command, it will place the command into the queue until the next time slice that the game has nothing else to do but wait for input or output on the server port. Configuration variables may be defined in the game itself to include a maximum number of commands in the queue for one object, or the maximum number of @wait commands for all objects, at any one given time. Each command executed in the queue costs a minute fraction of a Gold Piece, preventing troublesome users from creating infinite loops through the use of @triggers or action attributes. When an object exceeds these set limits, it will be considered a "Run-Away", and will be set with the Haven flag. While an object is set haven, it cannot execute any commands in the queue. You may use the @set command to release the object from this state, and to try out your code again.

See also: @force, @trigger, @wait, Haven


@push <object>

This command pushes an object or exit up to the top of the contents list or exits list in a particular room. You must own the object's location to be able to move the item around in the stack.


@redef
@redefattr <object>/<attr>=<newname>

This command renames the attribute <attr>, on <object>, to <newname>. All of the object's children, if any, with this attribute set will have it renamed. An attribute name may not shadow, or be equal to, a built-in attribute that is already in the game itself, such as @desc or @succ.

See also: @defattr, @set, @undefattr, Inheritance


@redir
@redirect <object>=<commands>

This command redirects the output of a particular command to <object>. It is similar to @force, except that the commands specified will be executed immediately. The resulting <object> sees the output as you would see it, even if the <object> does not have the special powers you have.

See also: @force


@remit <room>=<message>

This command parses and emits a message to all of the objects located in the specified room. You cannot spoof, however, or begin the message with the name of another player, and pretend to be that other person.

See also: @emit, @oremit, @zemit


@search
@search <player>
@search <category>=<type>
@search <player> <category>=<type>

This command searches through the database, and lists all players, things, rooms, and exits for which <type> matches on the object under the specified <category>. If no arguments are given to the command, it will display all of the objects you own or control, including exits (unlike @find). All exits displayed are listed with their source room and destination room. All things are listed along with their location. Because of the strenous processor usage that this command takes up to fulfill the search, a rather large fee is required to operate this command. A full list of @search categories is shown below.

@search attr=<name>:<pattern> - Displays all objects with a matching <pattern> on attribute <name>, both which may contain wildcards.
@search class=<rank> - Display all players whose class matches <rank>.
@search exit=<pattern> - Display all exits whose names match <pattern>.
@search flags=<flaglist> - Display all objects whose flags contain those letters listed in <flaglist>, as they appear after the database reference number. All flag letters are case-sensitive.
@search inzone=<object> - Display all rooms whose zone is linked to a particular <object>.
@search links=<room> - Displays all objects that are linked to <room>.
@search name=<pattern> - Display all objects, of any type, whose names match <pattern>.
@search player=<pattern> - Display all players whose names match <pattern>.
@search room=<pattern> - Display all rooms whose names match <pattern>.
@search thing=<pattern> - Display all things whose names match <pattern>.
@search type=<pattern> - Display all objects whose type matches <pattern>, which must be one of Player, Thing, Room, Zone, or Exit.
@search zone=<pattern> - Display all zones whose names match <pattern>.

Examples:

See also: @find


@set <object>=<flags>
@set <object>=<attribute>:<value>
@<attribute> <object>=<value>

The @set command may be used to assign values to attributes, or to mark certain flags on various objects. To set a flag on an object that you own or control, type @set <object>=<flag>. You may set more than one flag at a time by separating the words with spaces. To remove a flag from an object, type @set <object>=!<flag>. Both built-in or user-defined attributes may be set in the same manner, using the command @set <object>=<attribute>:<value>. There is a shortcut method, which just allows you to type @<attribute> <object>=<value> without even touching the @set command. Examples:

See also: @defattr, Attributes, Flags


@stats
@stats me
@stats <player>

This command views the current database statistics of the game, showing the total number of objects both online and active, and the total number of rooms, things, exits, and players that comprise the total amount of objects. Also listed are the number of players in each administrative class rank. If the number is less than 20, then the players' names will be displayed along with their rank. You may also view the complete stats of only the objects that you own, and if you are a wizard, you may view the database stats of any other player as well.

See also: +info


@swi
@switch <expression>=<result1>,<commands1>,..,<default commands>

This command tests an expression with a series of specified values, and places an action into the command queue corresponding to the appropriate value. First, it evaluates <expression>, and tests it with <result1>. If it finds a match, then it executes <commands1> following the comma. If it does not find a match, then it tests it with <result2>, and so on. If no matches are found, the last result expression in the list will be executed. Wildcards are allowed in the result expressions. Examples:

See also: @force, @trigger, @wait


@text
@text <filename>
@text <filename>=,,<object>
@text <filename>=<top line#>,<bottom line#>
@text <filename>=<top line#>,<bottom line#>,<object>

This command outputs a local file, from the game's main directory listing of files, to yourself, or a different player if <object> is specified. Typing @text by itself will give you a directory listing of all available files that this command can work with. Other directories in this listing will be represented with a / as the last character of the filename. You may type @text <directory>, without the slash, to receive a listing of that directory as well. Typing @text <filename> views the specific file, and you may add in which lines to read selectively using the syntax listed above. At this time, only Wizards may send files to other objects or players.


@time <commands>

This command times the execution of a particular group of commands, separated by semicolons. After the commands are executed, you will receive a display of how long the command took to process completely. Note that any commands put into the queue will not affect the end result time. In all respect, this command is equivalent to @force me=<commands>, but with an added time counter.

See also: @force


@tr
@trigger <object>/<attr>=%0,%1,..,%9

This command triggers a particular attribute, filled with a list of commands separated by semicolons, on an object. The object will execute the commands, if possible, substituting %0 through %9 with the various arguments that are placed into the @trigger command itself. All commands executed are placed into the queue for further processing. Examples:

See also: @force, @switch, @wait, Events


@undef
@undefattr <object>/<attr>

This command permanently removes a previously created user-defined attribute on an object. All values set on this attribute, whether it is the object itself or any children with the object as its parent, will be lost. All references to the attribute, following the executing of this command, will cease to exist. Built-in attributes, such as @desc or @succ, may not be removed from the game.

See also: @defattr, @redefattr, @set, Inheritance


@undestroy <object>

This command saves an object, particularly a room, from destruction. Its Going flag will be removed, and its destruction counter will be cleared.

See also: @destroy, Going


@unlink <exit>

This command unlinks an exit from its destination room. Nobody will be able to use the exit until it is further linked, by the owner, to a new location.

See also: @link


@unlock <object>

Removes the @lock on an object or exit. This command is a synonym for @lock <object>.

See also: @lock


@update <object>

This command merely sets the Modification Time, seen when using the examine command, on an object to the current time, thus updating it without doing anything to the object itself.

See also: examine


@upfront <object#>

This command, when used on an already destroyed object with the Going flag set, moves the specified object number up to the top of the free list. This means that the next time a person goes to @create, @dig, or @open an object, it will have the database reference number characteristic of the one on the top of the free list; most likely the one you've selected with the @upfront command.

See also: @create, @destroy, @dig, @open, Going


@wait <seconds>=<commands>

This command places a series of commands into the wait queue. The commands will not be executed until the number of <seconds> in real time have elapsed. Commands on the argument line may be separated by using a semicolon. You may check the queue by using the @ps command to see how much longer it will be before a particular command executes.

See also: @force, @ps, @switch, @trigger


@wipe <object>
@wipeattr <object>=<attribute list>

This command removes all modifyable attribute values on a particular object. All user-defined attributes will remain, including those that are unsettable by yourself. If <attribute list> is present, this command will wipe out all attributes on an object that match the ones listed. This command should be used with caution, for no attributes may be recovered from a wipe. Examples:


@zemit <zone object>=<message>

This command parses and sends a message to all of the objects located in each of the rooms that are linked to a particular <zone object>. You must own the zone to be able to send messages to its contents. The same rules for spoofing another player apply to this command as like using @emit. This command may not be used on the Universal Zone Object, since it covers all rooms in the world and would use up quite a lot of processing time. A wizard may use the @wemit command to send a message to everyone online the game at the current time. See the topic Zones for more detailed information.

See also: @emit, @remit, @wemit, @zone, Zones


@zone <object name>

This command creates a zone object with the specified name. Zone objects cannot be placed in any room, player, or thing, and must be accessed by database reference number. Creation of a zone object is much more expensive than a thing, room, or exit. You do not get your money back when a zone object is destroyed.

See also: @create, @dig, @open, Zones



Section 3: Wizard Administrating Commands



Wizard Commands

home join slay summon

@addeq @addtech @advance @bitmap @boot @broadcast
@capture @cboot @cemit @chapter @chownall @class
@config @console @copybitmap @cpage @crash @ctrace
@dbtop @deleq @deltech @dflag @dump @enemy
@enemycond @empower @event @exp_raise @fight @flush
@fmap @forge @inactivity @init @input @levelquest
@log @nuke @output @pcreate @pennies @powers
@priority @purge @reboot @sbar @setcond @shutdown
@task @teleport @town @uncapture @wemit @wipeout


home

Powers: Build, Teleport

This command sends the object who is executing it home. The home is the room that the object or player is linked to. Ordinary players may @link to the room they are in by using the save command. Rooms, zones, and exits do not have the ability to go home. Depending upon whether or not the Mare has teleport restricted, one must need the Build or Teleport powers for this command to work.

See also: save, @link, @teleport


join <playername>

Powers: Join

This command allows you to freely teleport to the room that another player, currently online the game, is in. It is quite useful for assisting other people with coding problems, or for merely helping new users to get acquainted with the game.

See also: summon, @teleport


slay <object>
slay <object>=<cause>

Powers: Combat

This command instantly kills an enemy or player. If it is a player, he or she will be sent to limbo just like as if being defeated by a regular enemy. If slaying a wilderness monster familiar (indicated with the Monster flag), the enemy will be instantly destroyed. If slaying any other type of object, no move will take place, but the object's @akill attribute will be triggered, with the cause as either you or <cause>, if specified. A <cause> can be either a #dbref of an object, or a list of the following natural causes of death: Mortal, Unknown, General, Drown, Fall, Damage, Sick, Poison, Stone, Swamp, Accidental, Suicide, Condemn, and Jailed.

See also: @akill, Monster


summon <playername>

Powers: Summon

This command summons, or teleports, a player currently online the game to the room that you are standing in. It is quite useful for holding meetings in which a select group of people must attend, or to help get someone out of a room that has no exits, and so on.

See also: join, @teleport


@addeq <player>=<item number>
@addeq <player>=<item number>,<amount>

Powers: Combat

This command adds a piece of equipment to the inventory of a specified player. The equipment must be addressed according to item number as appearing in the equipment database (@list items). If one or more of the same item is already in the player's inventory, the counter for that item will increase by 1. No player may have more than 255 of a particular item at any one time. If <amount> is specified, the amount of those items in the player's inventory will be set appropriately. Examples:

See also: @deleq


@addtech <player>=<technique>,<number>
@addtech <player>=<technique>,<number>,<level>,<value>

Powers: Combat

This command adds or modifies a technique entry in a specific list on a player or object. The <technique> must be addressed as a number from 0 to 255, or a name as appearing in the list of technique types (@list tech). <number> is the technique index number from 0 to 65535 that you want to modify on <player>. It is possible for some technique types to actually specify a name instead of a number for the second argument. For example, for the Language <technique>, one may specify the name of a language such as Dwarven instead of a numeral in the <number> field.

Both <level> and <value> are optional fields that, if left blank, are filled in with zeroes. <level> is an 8-bit number from 0 to 255 that determines the mastery level of a spell, quantity of an item on hold, and so on. Its meaning is different for each technique type. <value> is a 32-bit integer that can be set to any positive or negative value that the technique entry should have. Refer to the Wizard's Manual for a list of technique types and what arguments for <level> and <value> they expect. Examples:

See also: @advance, @deltech


@advance <player>=<spell name>
@advance <player>=<spell name>,<technique points>
@advance <player>=<spell name>,<technique points>,<technique type>

Powers: Combat

This command raises the Mastery % of a spell or skill on a particular player. The spell name addressed must be according to an item name or number as appearing in the equipment database (@list items). If no <technique points> are specified, the command assumes you would like to raise the spell or skill 1 point. This command fails to raise the mastery of a technique if the player does not currently have the specified technique in any of the technique type lists. However, if a <technique type> is specified and the player does not originally know the spell or skill, the player will automatically learn it in his or her respective technique type with a level of 0 (1% for skills) and a Mastery Percentage of 0. Examples:

See also: @addtech


@bitmap <object>=<attribute>,<value>
@bitmap <object>=<bitpos>,<bitlength>,<value>

Powers: Combat

This command sets a bitmapped variable on a particular object, usually an enemy or player with a fight status. To give an object a fight status, set the bitmap variable Iscombat to 1 on that object. The <attribute> name can be one listed using '@list soul', or '@list config=towns'. Town attributes have a maximum bitlength of 2 (which means they can be set any value from 0 to 3). Objects may be @addparented with ones that already have bitmaps on them. Only bitmap positions 256 or greater on the first parent in the list will show up on the child. Those bitmap positions under 256 include current HP/MP/EN, Condition, and Iscombat. The entire bitmap of an object may be removed during a reboot or shutdown if its Iscombat variable is set to 0.

Wizards may also choose to set particular bitmap positions to desired values on a player. This is especially used for storyline values, where regular attribute names cannot be created to cover the myriad of variables. <bitpos> may be from 0 to 8191 (storyline variables usually start at 4096), and their corresponding <bitlength> may be from 1 to 32. A bitmap value can only contain negative values if its bitlength is 32. Examples:

See also: @addparent, @copybitmap, bitmap(), soul()


@boot <playername>
@boot <playername>=<message>
@boot all

Powers: Boot

This command temporarily disconnects a player from the game. Any player may choose to log back into the game, under the same character name, at any time afterwards. This command does not modify any character attributes on the player whatsoever. You cannot boot any player that is not currently connected to the game. Unless a <message> is specified as the reason for the @boot, the player will not know which administrator booted him or her. If the all argument is used, the game boots off all non-administrators currently online.

See also: @cboot, @nuke


@broadcast <message>

Powers: Broadcast

This command sends a message across the entire game. Every single connection logged into netmare, including all players online or those even at the login screen unlike the announce command, will see this message, prefixed with your name. Using this command costs no fee from your character, but it is usually restricted only to those immortals highest in rank.

See also: announce


@capture <player>
@capture <player>=<reason>

Powers: Capture

This command sends a <player> directly to jail. Here, he or she will be unable to speak on the public channel or use privileged commands in any form except to page other players and administrators online. The room players get sent to is defined via the DUNGEON_CELL system configuration variable. Dungeon cell rooms should be set with the X-Zone flag to ensure that the offender cannot escape or perform any normal game functions.

See also: @uncapture, Slave, X-Zone


@cboot <connection id>

Powers: Boot

This command disconnects a specific connection-id from the game, even if the player has not yet logged in under a valid character online. This command does not modify any attributes on the player or connection whatsoever. Immortals that are currently logged in may not be booted in this fashion, however, any incoming connection may be deleted from the queue at any time.

See also: @boot, @nuke


@cemit <channel>=<message>

Powers: Spoof

This command sends a message over a particular communications channel. This message is not parsed or prefixed with your character's name, but the color of your character will still show through on the channel. Channel names are case-sensitive.

See also: +com, @emit


@chownall <player1>=<player2>

Powers: Chown

This command changes ownership of all the objects owned by <player1> to <player2>. The Chown_Ok flag need not be set to perform this maneuver, and objects being chowned will not be set Haven, however, any commands currently being executed in the queue by those objects will be removed. It is a wise move to check all objects owned by a player for any code that will otherwise allow the player to gain Wizard status through the use of commands, before chowning the player's objects to one with immortal rank.

See also: @chown


@chapter <number>
@chapter <number>=<title>
@chapter <Prologue|Epilogue>=<title>
@chapter <player#>=<chapter>

Powers: Combat

This command configures the name for a specific chapter number used for the game. A chapter is much like that used in a novel, giving a title to a particular place each individual player is in the storyline. As the game proceeds towards the final ending, the chapter increases on the player until at last he beats the game. Chapter number 0 is reserved for a possible prologue to the game, and Chapter number 255 (highest allowable value) is reserved for the epilogue. If <title> is omitted, the chapter information is completely cleared out of memory.

Events occuring between character creation and actually being able to roleplay in the story is considered the Prologue to the game. It is a general rule that any characters still in the Prologue have not moved out of the starting room on the game. During the Epilogue when the game is beaten, a player may continue to use his character anywhere on the game and is not forced to restart back on Level 1. However, no further storyline exists for the player to explore, except for that which the player missed on his first time around.

See also: chapter(), @town


@class <player>=<rank>

Powers: Security

This command classifies a player to a new rank. All powers held by that player will be reset to the default of that new rank, and it is up to the wizard to add more powers or remove unnecessary ones from the player by using the @empower command. Only God may classify another player to the highest rank, Wizard, or declass a Wizard to any other lower rank. A current list of ranks may be displayed by typing '@list classes'.

See also: @empower, @powers, class()


@config <environment>=<value>

Powers: Config

This command sets a system configuration variable to a specific value, whether it be numeric or a string of words. If no value is specified, the variable will take on a 0 or a null string in its place. All variables, whose values do not equal default, will be saved in the database. A player may type '@list config' to view the current system configuration for netmare. To maintain security, @config can only be typed in through a direct connection and not by a queued command.


@console <player>=<options>

Powers: Console

This wizard command changes options defined on a player's connection to the game. <options> is a list of the following space-separated words: Input turns on a player's commands so that the game driver may once again receive requests. Output turns on all output sent from the game by normal means (excluding system errors and the Status Bar). Sbar turns on all Status Bar updates for the player. Each word may be preceded by a ! to indicate that the particular option be turned off. Upon connect, all options are turned on for a player. Note that when Status Bar updates are turned off, any changes that would have been sent to the screen will be lost.

See also: +sbar, @input, @output


@copybitmap <object1>=<object2>

Powers: Combat

This command copies the entire contents of an object's combat status bitmap from <object2> to <object1>. You must be able to control both objects to do the copy.

See also: @bitmap


@cpage <connection id>=<message>

Powers: Console

This command sends a message to a specific connection id currently online the game, even if the player has not yet logged in under a valid character. All messages are prefixed by your name and database reference number. The Console power is required because it involves sending data to any of netmare's connections in instantaneous mode.

See also: page, @ctrace, @output


@crash

Powers: Shutdown

This command aborts the netmare process, restarting the game from the last time the database was saved either automatically or by using the @dump command. Everybody online will be kicked off while netmare reboots. The current database at this point in time will be lost forever.

See also: @dump, @reboot, @shutdown


@ctrace

Powers: Console

This command traces a list of all connections made in or out of the game, displaying their unique connection-id number, file descriptor number characteristic of netmare, the hostname in which they are attached to, and other pieces of information such as the character name that the connection belongs to (if any) and its status. The status of a connection displays which part of the server code that is currently handling the input and output of the connection. This field is usually marked 'Game', if the main game driver is handling a fully connected player.


@dbtop
@dbtop <category>
@dbtop <category>=<depth>

Powers: Database

This command lists the top 20 players or objects currently in netmare's database that match the specified <category>. Typing @dbtop without any arguments lists all of the available categories to use with the command. Normally, this command will list the top 20 objects, but if a <depth> is specified, it will list that many objects instead. The maximum depth range is from 2 to 100.


@deleq <player>=<item number>

Powers: Combat

This command deletes a piece of equipment from the inventory of the specified player. The equipment must be addressed according to item number as appearing in the equipment database (@list items). If more than one of the same item is already in the player's inventory, the counter for that item will decrease by 1. If the counter reaches 0, it will be removed from the inventory list automatically.

See also: @addeq


@deltech <player>=<technique>,<number>

Powers: Combat

This command removes a technique entry from a specific list on a player or object. The <technique> must be addressed as a number from 0 to 255, or a name as appearing in the list of technique types (@list tech). <number> is the technique index number from 0 to 65535 that you want to delete from <player>. It is possible for some technique types to actually specify a name instead of a number for the second argument. For example, for the Language <technique>, one may specify the name of a language such as Dwarven instead of a numeral in the <number> field. Examples:

See also: @addtech


@dflag <object>
@dflag <object>=<settings>

Powers: Combat

This command selects or deselects a temporary unsaved data flag on an object, usually either a room or a player. Dataflags are temporary only to the extent of the current runtime of the game; they are not saved in any form in the database. These are mainly used in conjunction with special effect spells and techniques which alter the room or player/enemy in a special way. It is important to note that the flags settable on a room greatly differ from the ones allowed for a player, enemy, or exit, and one single flag may not be used on both a room and a player.

Without any <setting> specified, all flags set on the object will be deselected. To set a dataflag, type @dflag <object>=<flag name>. To clear the flag list before adding new settings, use a * as the first character of the flag list. To remove dataflags, place a ! in front of the flag name that you wish to unset. More than one dataflag can be selected at a time by separating them with spaces on the command line. This works much like the @set command when turning flags on or off.

See also: @set


@dump

Powers: Database

This command immediately attempts to save the game's database in the form of a background process on the local computer. If a crash occurs in the netmare program afterwards, all data will be reverted back to the last time the database was saved. It is generally a good idea to save often, usually about once an hour, especially if the platform is unstable for any reason. The timer sequence Dump interval is set up to save the database automatically every hour or so. When the @dump command is used, the timer is reset for another hour afterwards.

If an error occurs where the database cannot be saved, netmare will attempt to try again within 5 minutes, for 10 straight tries. If 10 attempts pass and it still cannot save the database properly, netmare will save the database in the foreground, halting all activity online until the save is finished. If an error occurs in this manner, it will be reported on the _log_err channel, and the game will continue to function normally as if the database had saved. If the database cannot be saved for obvious reasons, do not attempt to @reboot or @shutdown the game.

See also: @reboot, @shutdown


@enemy <name>=<parent>,<destination room>
@enemy <name>=<parent>,<destination room>,<combat target>

Powers: Combat

This command creates an enemy familiar, set with the Monster flag, both located to and linked in the specified <destination room>. The <parent> must be a valid object which includes a full fight status. The enemy will retain all of these stats (including the parent's Condition) plus full HP/MP/EN. It will automatically be locked to itself so that no other player may pick it up, and its @aclone attribute will be executed. This is the same type of procedure that is called internally for normal enemy encounters in a wilderness or dungeon sector, however, monsters created using @enemy are not naturally aggressive.

See also: sector, @aclone, @addparent, @create, @encounters, Monster, Zones


@enemycond <object>
@enemycond <object>=<conditions>

Powers: Combat

This command sets an enemy-specific condition on a creature with fight status. Enemy-specific conditions range from determining if a creature is a boss monster, is aggressive in the wilderness, and even if the creature dies when its total Magic Power drops to zero. If no <condition> is supplied, any conditions previously set will be removed. To set an enemy condition, type @enemycond <object>=<condition>. To clear the condition list before adding new conditions, use a * as the first character of the condition list. To remove an enemy condition, type @enemycond <object>=!<condition>. More than one condition may be set at a time by separating them with spaces. This works much like the @set command when turning flags on or off.

See also: status, @setcond, @set


@empower <player>=<power>:<yes|yeseq|yeslt|no>

Powers: Security

This command enables or disables a specified <power> on a particular player. Yes and No unconditionally enable or disable the power, and Yeseq and Yeslt enable the named power to be used on objects or players of equal or lesser status than <player>, respectively. Powers adjusted in this way, except if God is issuing the command, cannot be elevated above the maximum allowed power level for the player's particular rank. A list of default and maximum powers for each rank may be seen by typing '@list powers'.

See also: @class, @powers


@event
@event <target>=<action>

Powers: Combat

This command triggers a special automatic event on a particular <target>. Such events are usually done internally by netmare, for example, timed sequences for status regeneration and poison depletion. Typing @event alone will list the possible actions available for use, each with a short description. The listed <target> must be one with suitable fight status, and currently not in a dead Condition or in a room set with the X-Zone flag.

See also: Condition, X-Zone


@exp_raise <playername>=<amount>

Powers: Combat

This command raises the total amount of Experience Points on a player by <amount>. This procedure works like normal experience gain from a defeated enemy, in that the player will be promoted to the next level if his or her experience is high enough. This command has no effect for any type of object other than players.


@fight <player>=<enemy>,<technique name>
@fight <player>=<enemy>,<technique name>,<targets>

Powers: Combat

This command instantly forces <player> to execute a specified <technique name> at <enemy>, either if the player has or has not learned the specified spell or skill in his or her technique tables. The spell functions as normal, using Magic Power or Endurance points whenever necessary, and records any technique point increase in the spells or skills chart. If <targets> are specified, the spell or skill acts just as if the player were casting it at a specific target. Note that this command does not execute as the result of a recursive @afight attribute.

See also: fight, @afight, Fighting


@flush <player>
@flush <player>=<options>

Powers: Console

This command flushes the data contained in one of three buffers that save text for a player currently connected to the game. The three possible <options> are Input, Output, and Server. The Input buffer contains all player commands that have been already entered but pending for execution by the game driver. The Output buffer contains all output normally printed by the game when a player is connected. The Server buffer is a high-priority output buffer that contains Status Bar output and all direct server output sent during the time before a player connects to the game. Using this command without any options clears all pending text in each buffer. Multiple buffers can be cleared by specifying a space-separated list of options.

See also: @output, @input, @console, Status Bar


@fmap <filename>
@fmap <filename>=<player>
@fmap <filename>=<player>,<zoom%>
@fmap <filename>=<player>,<zoom%>,<columns>,<rows>
@fmap <filename>=<player>,0,<XB>,<XE>,<YB>,<YE>
@fmap <filename>=<player>,0,<XB>,<XE>,<YB>,<YE>,<columns>,<rows>

Powers: Animation

This command allows a wizard to manipulate and display a section of a map file to the screen or to another <player>'s screen. The <filename> specified must include the .map extension, which must be found within the run/maps directory on netmare's local computer. The actual position of the map will be displayed according to the location of <player>, corresponding to the @compass attribute set on the room (or 0,0,0 if not set). The size of the map defaults to the screen size specified on the player's combat status. However, one may specify a new screen size using the arguments <columns> and <rows>, whose maximum values are 255, and whose minimum values are 4 and 1, respectively.

A Zoom% value may also be specified to zoom in or out around the map screen that the player normally sees. Numbers greater than 100% make distant surroundings available to the player, but some detail is lost. Numbers less than 100% zoom in onto the near surroundings of the player, perhaps doubling text onto the screen. Negative numbers flip the map image reversely onto the screen. If 0 is specified for the Zoom%, netmare tries to use the following 4 arguments to crop the picture fitting either the screen size or the specified <columns> and <rows>. In short, <XB>, <XE>, <YB>, and <YE> stand for the X-Coordinate-Begin, X-Coordinate-End, Y-Coordinate-Begin, and Y-Coordinate-End respectively. These are values that are # spaces away from the central origin point of the actual map screen. Negative values for these arguments are allowed. Zoom% may contain a decimal number. Examples:

See also: map, sector, +term, @compass


@forge <player>=<name>,<wear>,<strength>,<value>,<dmgtype>,<density>,<color>,<flags>,<stats>,<weight>,<condition>

Powers: Combat

This command creates a piece of forged equipment, either weapon or armor, and puts it into the items inventory of <player>. The item created will take on the name <name>, along with its proper attributes as noted above. The <strength> is the Attack Power of the weapon, or Defense Power of the armor, from 0 to 65535. The <dmgtype>, or Damage Type, is an 8-bit number from 0 to 255, representative of which types of the 8 elementals are to be endowed upon the object, with 1 being the weakest (Poison) and 128 being the strongest (Magic). The argument <value> is set to what the price should normally be of the weapon in stores. Note that the Sell Value of the weapon is half as much.

The <wear>, or Wear Pointer, is a number from 0 to 15, indicative of what type of item it is from the following list in sequential order: Item, Weapon, Shield, Helmet, Neck, Amulet, Torso, Cloak, Arms, Hands, Legs, Feet, Waist, Relic, Finger, or Rod. Next, <density> is a number indicative of what form of weapon or armor the equipment is. If it is a weapon, then the following names apply from 0 to 19: Stick, Sling, Dart, Dagger, Knife, Bola, Glove, Sap, Boomerang, Whip, Bow, Hammer, Club, Axe, Staff, Spear, Javelin, Scimitar, Scythe, and Sword. Otherwise if it is a piece of armor, then the following names apply from 0 to 31: Silk, Cloth, Feather, Fur, Leather, Rubber, Scale, Bone, Ivory, Limestone, Wood, Bronze, Brass, Copper, Tin, Platinum, Silver, Granite, Opal, Iron, Steel, Mithril, Gold, Electrum, Quartz, Diamond, Crystal, Elemental, Titanium, Adamantium, Plasma, and Astral respectively.

The <color> argument is a number between 0 and 15, specifying the color of the item. <flags> is a bitmasked number representing the special abilities of the equipment, as shown in items. In order of powers of 2 from 1 to 32, they are respectively: Cursed, Legendary, Forged, 2-Hand, Universal, and Holy. <stats> is a 32-bit number representing the changes in Agility, Intelligence, Wisdom, and Luck, each using signed 8-bit parts of the number from high order to low, range -128 to 127. <weight> represents the weight of the item in grams, and <condition> grants the equipment a special bitmasked condition on which it either protects or attacks with.

For security precautions, one player may not have more than 10,000 pieces of forged equipment, either in their items inventory or currently equipped, at any given time. Example:

See also: equip, items


@inactivity
@inactivity all
@inactivity <playername>

Powers: Nuke

This command lists or processes all characters that have not logged onto the game for an extended period of time. The length of time each player may go inactive depend upon their Level and Experience Points that they have. Players with 0 Experience Points only get 7 days of inactivity, players lower than Level 4 get 1 month, others lower than Level 25 get 3 months, and all others get a total of 6 months of inactivity time. If you specify a <playername> along with this command, it will check to see if that particular player is inactive or not according to the above rules.

Once every Saturday night at sunset in game-time, netmare will automatically @nuke all characters who are considered inactive. A wizard may type @inactivity all to nuke all such characters at different times of the week. It is also possible to save any character from destruction completely by setting that player with the Inactive_Ok flag.

See also: @nuke, Inactive_Ok


@init <player>
@init <player>=<new race>

Powers: Combat

This command reinitializes a player for combat, clearing all of its previous bitmapped stats (if any) and setting the player to level 1, with a reroll on his or her attributes. Age, sessions, taskpoints, and gender are the only bitmap values saved during the resetting of the character. If the player is online, the player will automatically be sent to the Race Select screen to choose a new race and begin anew.

If <new race> is specified, this command will not reinitialize the player, but instead reroll his or her status attributes at the same Level and Experience values that the player had before, only that these values will be modified by the new race. In this fashion, no other changes are made to the player's bitmap values.

See also: @bitmap, @pcreate


@input <player>=<object>/<attr>
@input <player>=<object>/<attr>:<prompt>

Powers: Console

This command temporarily redirects the next line of input from <player>'s network connection to trigger the specified attribute on <object>. During the trigger, environment variable %0 will contain the text typed in at the prompt. The specified attribute must exist and contain a non-blank value during the time input is received by <player> or the player's command will be handled normally by the game. If another input prompt is to immediately follow the previous without any input lost to the game driver, the triggering attribute must reinitialize the next prompt with the @input command before the next set of queue commands is executed. This requires the next @input command to be executed as close as possible to first in the list, avoiding any @wait or @force commands.

An optional <prompt> for the player can be specified by using a colon after the attribute to be triggered. Server state commands, such as QUIT or RECONNECT, are still in effect during a prompt and can be used to regain control of the game driver. Status Bar updates continue to be in effect during a prompt, as well as other messages from the game unless they have been turned off with the @console command. During a prompt, queued commands on a player will be executed in the background as normally done, however the @input command has no effect for unconnected players or other object types. Lastly, for security reasons, the God character can never lose control of the game driver and can not be prompted by any object.

See also: @console, @cpage, @output, Status Bar


@levelquest <level>=<quest name>:<bit position>:<flags>:<description>
@levelquest <level>=<quest name>
@levelquest <player>=<quest name>

Powers: Combat

This command either defines a new quest, modifies an already existing quest, or grants the accomplishment of a level quest to a player. In the first form of this command, a <level> for the quest must be specified to add a new quest. This command defines a new quest with the name <quest name>, or if that name already exists, redefines the entry. <bit position> refers to the storyline variable that gets set to a 1 when the player accomplishes the levelquest. It is recommended that bitmap positions in the Storyline range (2048 and up) be reserved and used for levelquest data, however any position greater than 0 is allowed. <bit position> may be set to 0 to define the quest for future use (but without any way to accomplish that quest in its current state). <flags> are a space-separated list of words that are composed of the following: Required: Forces the player to accomplish the levelquest before the specified level is reached. This has no effect if the player is already above that level when the quest is created. NoEXP: No Experience Points are granted when the player achieves the levelquest. This is usually set in combination with the Required flag. LockEXP: A player can never gain more experience than that required for the next level until the quest is completed. Global: A player may accomplish this quest anytime during his adventuring career, before or after that level is reached. A level quest can be removed by specifying nothing after the <quest name>.

The second form of the command actively sets the storyline bits on a particular player and invokes the routines for the completion of a levelquest. At this time, if the player is currently on the same level as the quest is specified, he will instantly gain a certain amount of Experience Points not exceeding the number of points needed for the next level. If his Experience For Next was 0 at the time of the quest completion, he will automatically be promoted to the next level. See the helpfile on the 'quests' command for more information on levelquests. Example:

See also: quests, Experience


@log <logfile>=<message>

Powers: Security

This command records a message in one of three offline logfiles used by netmare: io, main, and error. This message is also displayed on the common logfile channels, _log_io, _log_main, and _log_err respectively.


@nuke <playername>

Powers: Nuke

This command permanently removes a character and its stats from the game. Once a player has been nuked, it cannot be retained except for reverting back to an older database or by immediately using the @crash command before the next database save. Players with the rank of immortality can not be nuked. Use this command with caution.

See also: @boot, @crash, @inactivity


@output <player>=<message>

Powers: Console

Sends a high-priority message straight to a player's network connection. Messages such as these can not be turned off by the player and are printed before other game messages waiting in the queue, even if the @output command was executed after several other commands. Direct connection output has the same priority as Status Bar display updates, and such messages can even be received by players during the login process. This command is mainly used in conjunction with the @console command when a player's normal game messages have been turned off. This command does nothing for non-connected players or other objects.

See also: @console, @cpage, @input, Status Bar


@pcreate <playername>

Powers: Pcreate

This command creates a new player character with the name <playername>. A prompt that asks for a password then appears on the screen. Leaving a blank password will allow the player to select his own when he first logs into the game. At that point, the player will normally enter the race selection screen and set his terminal settings as if the player created his own character. This command is widely useful when player creation is currently turned off.

See also: @init


@pennies <player>=<amount>

Powers: Money

This command simply sets the amount of Gold Pieces that a player has at the current time. This amount may be from 0 to 999,999,999 at maximum. This command has nothing to do with how much money the player has in his or her Vault account. The @bitmap command can also be used to edit the Pennies or Vault that a player has.

See also: money, @bitmap, Gold Pieces


@powers
@powers <player>

Powers: Examine

This command views the list of authorized powers that have been enabled on your character. It shows a brief description of each of the powers you have, plus whether or not you have that particular power over all classes, those of equal or lower rank, or just those of lower rank. Only a wizard may view the power list on players other than himself or herself.


@priority <process id#>=<value>

Powers: Security

This command sets the priority of the current <process id#>. The priority is read as the number of commands that the program in the process executes per one input command from a user online. A higher priority generally means that the program runs faster. Priorities of more than 30 tend to slow the game, however. A priority of 0 will completely halt the program, but will not terminate it, however. The default priority for normal Adventurers is set at 10, and for Wizards 30. A program's priority cannot exceed 100.


@purge

Powers: Database

This command does a limited maintainence check on the current database in netmare. It makes an up-to-date count of the number of disconnected rooms in the realm, and removes all objects set with the Going flag and whose destruction counters have expired. Among the features of this command, @purge also displays a readout of the objects destroyed, as well as the number of disconnected rooms, rooms marked floating, and the exit tree depth (the furthest number of exits to reach any one single room) from the starting room, #0. This database check is normally maintained automatically by TinyMare every ten minutes.

See also: @destroy, Going


@reboot
@reboot <options>

Powers: Shutdown

This command reboots netmare with a full database save. If system resources permit, netmare will reload the new code and database without kicking any prior connections offline. All @startup attributes will execute, all other features of a normal TinyMARE bootup will take place, and all error and main logfiles will be displayed on the main socket for everybody to see the process take place.

During reboot, TinyMARE loads a temporary file containing the list of all people online prior to the shutdown (if present). Next, TinyMARE begins to open the database, loading the present system configuration variables and sector area tables. Then, TinyMARE loads each object in the database, from #0 to the top, making sure each is consistent with the latest version of source code. Once that is finished, TinyMARE preforms a list of tasks that act as database checkup facilities to make sure everything is running properly and smoothly. Lastly, TinyMARE is ready for new connections, and those that have been waiting through the @reboot will reconnect automatically. If an error in the database occurs while reloading, TinyMARE will shutdown completely until the owner of the game can find out what the problem is, and hopefully fix it without having to revert to a previous database.

The <options> field can be used to specify a space-separated list of flags to modify the boot process. Available options include the following: Restart, which bypasses the standard execution calls to the system and actually shuts down the current process, knocking all people offline as the game reboots. Quiet, which reboots the game without any visual output to those who don't have access to channel logfiles. This allows reboots to be performed without normal players even noticing the game going offline. Validate, which reboots the game without writing any temporary configuration such as who belongs to which +parties and any pending semaphores. This option should only be used with a corrupt or edited database and is not meant for standard daily rebooting. Note that bootflag options during database loading have no meaning if the Restart option is used, or if the game is starting up for the first time.

See also: @crash, @shutdown, @startup


@sbar
@sbar <player>=<field>

Powers: Combat

This command updates a field of the interactive Status Bar on a particular player. Typing @sbar without any arguments gives a full list of available fields to update. This command may be also used on players who do not have their Status Bar set, however it will perform no additional action or print any error message. This command is needed most when an object uses the @bitmap command to edit a variable that is represented on the Status Bar. @bitmap does not update any values on a player's Status Bar by itself, though all other commands that alter the combat status of a player should also alter the Status Bar automatically.

See also: +sbar, @bitmap, @sbar


@setcond <object>=<conditions>
@setcond <object>=<conditions>[,<value>][,<type>]

Powers: Combat

This command modifies the list of combat status Conditions that can be set on a particular player or object. <conditions> is a list of space-separated conditions, enemy flags, or racial abilities that can be set or unset individually on any object in the universe. If specified, the <type> controls which domain the condition has effect over. Up to two types can be specified at once (space-separated), but one type must be from 'Set A' and the other from 'Set B'. Set A includes the following types: Wish, Race, Ailment, and set B includes: Protect, Attack, Remedy. The order of priority is the order they are listed above, so a condition value listed for Wish will completely replace any underlying Race or Ailment condition--although it continues to exist. Note that simply setting a condition value to 0 will remove the condition from the list, thus allowing lower priority condition types to retain their values. To block lower condition types, set a condition value to -1. The game will treat any negative number as a 0.

Wish is the set of all conditions that were applied to your character through the use of a Limited Wish. These have the highest priority and replace any other means of condition setting, even through equipped items. Race is the set of all racial abilities or condition modifiers on a player's character during time of character creation. This list is removed every time a player is reinitialized for combat. This can also be used for setting permanent characteristics on monsters that you do not want altered by adventurers casting various enchantment/dispel spells. Ailment, the default, is the list of all 'ailment' or 'aid' conditions that the player has picked up on his journeys. Those three types can be combined with zero or one of the types listed in Set B. The default is to use no type from Set B, which means to treat all conditions as active ailments, relic effects, and/or wishes on the player. Types in Set B should not be used for any of the above, and are only useful when setting valid values with conditions.

Protect is a classifier that determines a player's Saving Throw Level against an ailment. This is separately defined from other conditions with a value from 0 to 10 incidating the protection level. Attack is a classifier that adds a particular condition to a weaponless attack. Used mainly for monsters, this allows attacks to randomly inflict the condition on the opponent. The value used here is a range from 0 to 255, indicating how often the condition is to be triggered--255 being always. Note that this still must pass the opponent's Saving Throw. Remedy is a classifier similar to Attack, but instead unsets the condition from the opponent. Useful for unsetting conditions that aid the enemy, such as Ruse or Divine.

Using this command with an empty <conditions> field will clear all ailment conditions inflicting the player (the default). If a <type> is specified, it will instead clear all conditions set for that particular type (including wishes, etc). Conditions can be prefixed with a ! symbol, which means to remove the condition no matter what, even if a <value> is specified. Setting a condition with no <value> specified will set the value to 1, unless the condition is already set (in that case it will retain its original value). If the first character of the conditions list is a * symbol, then all conditions will be removed before adding the new. This works much like the @set command when turning flags on and off. Examples:

See also: status, @enemycond, @set, Condition


@shutdown

Powers: Shutdown

This command shuts down netmare with a full database save. The game will remain turned off until an owner logs on to the local machine to restart the netmare program back up. All players online will be kicked off until further notice. Normally, TinyMARE automatically shuts itself down as fast as it could when the local system sends a Termination signal and is about to shut down itself, or when something goes wrong with the CPU. On systems such as these, the netmare program is usually included in the rc.local file, allowing it to start right back up when the system comes back online.

See also: @crash, @reboot


@task <player>=<task points>:<event name>

Powers: Combat

This command awards <player> with a number of <task points>, automatically announcing it to all the players currently online the game. Only an amount of task points between 1 and 100 may be specified. A single player may only accumulate up to a maximum of 255 Task Points at once.

See also: Task Points


@tel
@teleport <destination#>
@teleport <object>=<destination#>

Powers: Build, Teleport

This command relocates yourself, or an <object> if specified, to the specified <destination> room in the netmare database. The <destination#> may be either a Room, Thing, Player, or even Exit, if certain rules are followed. First, players may not teleport into other players, and exits may not teleport into other things or players. An object teleporting into an exit acts as if the object is walking through the exit.

Restrictive teleportation to wizards and/or mortals may be set in netmare by using the @config command. If mortals are allowed to teleport, they may only do so within rooms or objects that they own. Mortals may be able to teleport themselves to a room owned by someone else if that room is set with the Jump_Ok flag. Players with the Build power are not hindered by the restrictive teleportation variable set in the system configuration (@list config), but they must still abide by the rules of owning the destination room or having set the Jump_Ok flag.

See also: move, @config, @push, Jump_Ok


@town <name>
@town <name>=<bit position>,<zone>

Powers: Combat

TinyMare keeps a list of all towns, villages, and shrines reachable through the use of Teleportation spells or warp items that take you from town to town. When a player enters a town zone for the first time, a bit is marked on that player to signify that he can warp back to it later. The bits set for each town depend on the specified <bit position> configured individually. It is recommended that bitmap positions in the Storyline range (2048 and up) be reserved and used for gaining access to towns, however any position greater than 0 is allowed. <bit position> may be omitted or set to 0 to define the town for future use, without setting any bits on the player. This type of town can never be warped back to through normal means (unless explicitly defined). <zone> is any zone object that is first in the list of zones for a particular room. The game only checks for the room's primary zone, or the one first added, thus only one zone per room can ever be enabled on a player at one time. Town names can be any size length, however most display screens will truncate them to 12 characters maximum.

Note: Bit positions for towns are currently 2 bits in length. Thus, a town set to 2048 will take up both 2048 and 2049. This may change back to 1 bit in the near future.

See also: @chapter


@uncapture <player>

Powers: Capture

This command frees a person from the confines of the dungeon cell when previously captured by the @capture command. The player will instantly be sent back home. If COMBAT support is turned on, then the player will suffer 1 death at the time of freeing and will automatically lose half of the number of Gold Pieces carried at the time.

See also: @capture


@wemit <message>

Powers: Broadcast

This is a wall-emit, which sends <message> to everyone online without prefixing with your character's name of any kind. The message sent will not be parsed, and spoofing other players or objects with this command is not restricted.

See also: @emit, @nemit, @remit, @zemit


@wipeout <player>

Powers: Nuke

This wizard command instantly destroys all of the rooms, things, and exits that <player> owns. It does not affect the player himself in any manner, or anything that the player is holding and does not own. All objects found in destroyed rooms will be sent to their respective homes and links, and all players found in such rooms will instantly die. You may only wipeout players of lower rank than yourself.



Section 4: Database Attributes



Attributes

@acfail @aclone @aconnect @adefeat @adesc @adisconnect
@adrop @aefail @aenter @afail @affail @afight
@agfail @agive @agrab @ahear @aidesc @akill
@aleave @alevel @alfail @alias @amoon @amove
@aopen @apage @apay @asearch @asfail @asucc
@asunrise @asunset @atalk @atime @aufail @aunidle
@ause @away @caption @cfail @channel @color
@compass @comtitle @cost @damage @desc @doing
@drop @ealias @efail @elock @email @encounters
@enter @fail @ffail @floor @gfail @give
@grab @eventkey @haven @hlock @idesc @idle
@kill @lalias @lastfrom @lcost @leave @lfail
@lgive @lgrab @listen @llink @llock @lock
@locklev @lsearch @map @move @ndesc @notify
@ocfail @oclone @odesc @odrop @oefail @oenter
@ofail @offail @ogfail @ogive @ograb @oleave
@oidesc @okill @olfail @omove @opay @osucc
@otalk @oufail @ouse @pay @plan @plock
@prompt @prefix @reply @rhear @rlname @sector
@sfail @shop @slock @sound @startup @succ
@suffix @talk @treasure @ufail @ulock @use
@vlock @weather @whoflags


@acfail

Type: Inherit

This attribute holds a list of commands which are activated whenever a player fails the @lcost lock on a particular object in an attempt to give the object some money.

See also: give, @cfail, @lcost, @ocfail


@aclone

Type: Inherit

This attribute holds a list of commands which are activated when the object is copied by the use of either the @clone or @enemy command. The actions are performed by the newly cloned copy, and not the original object. %# is set to the player who cloned the object.

See also: @clone, @enemy, @oclone


@aconnect

Type: Inherit

This attribute holds a list of commands which are activated whenever a player logs onto the game. The attribute may be set on the player itself, the room that the player is located in, any objects carried by the player, other objects in the room, or even the location's zone object. %# is set to the player logging on.

See also: @adisconnect


@adefeat

Type: Inherit

This attribute holds a list of commands which are activated whenever a player defeats another player or any other creature in the realm. %# is set to the reference number of the enemy being defeated.

See also: fight, @afight, @akill, @kill, @okill


@adesc

Type: Inherit

This attribute holds a list of commands which are activated whenever a thing or another player views the said object's description. Room descriptions are activated every time a person enters the room or uses the look command. %# is set to the player or thing who looked at the description.

See also: look, @desc, @ndesc, @odesc


@adisconnect

Type: Inherit

This attribute holds a list of commands which are activated whenever a player logs off of the game. The attribute may be set on the player itself, the room that the player is located in, any objects carried by the player, other objects in the room, or even the location's zone object. %# is set to the player logging off.

See also: @aconnect, QUIT


@adrop

Type: Inherit

This attribute holds a list of commands which are activated on the said object whenever a player uses the drop command to place this object into his or her location. %# is set to the player dropping the object.

See also: drop, @drop, @odrop


@aefail

Type: Inherit

This attribute holds a list of commands which are activated whenever a player fails the @elock lock on a particular object, in an attempt to enter it. This can be also triggered if the flag Enter_Ok is not set to allow others to enter the object. %# is set to the player that fails the lock.

See also: enter, @efail, @elock, @oefail, Enter_Ok


@aenter

Type: Inherit

This attribute holds a list of commands which are activated on a container or room whenever a player succeeds in entering the said object. For container objects, the player must be able to pass the @elock lock, and if not owning the container, the flag Enter_Ok must be set to allow entry. %# is set to the player who moves into the room or container.

See also: enter, @elock, @enter, @oenter, Enter_Ok


@afail

Type: Inherit

This attribute holds a list of commands which are activated on a container or room whenever a player fails the @lock on the object, usually when entering a room or trying to pick an object up with the take command. %# is set to the player who fails the lock.

See also: take, @fail, @lock, @ofail


@affail

Type: Inherit

This attribute holds a list of commands which are activated on a container or room whenever a player attempts to fight an object that is not unfightable or already dead.

See also: fight, @ffail, @offail


@afight

Type: Inherit

This attribute holds a list of commands which are activated whenever a player attempts to fight another player or creature in the realm, either by using the fight command or by automatically engaging in battle. %# is set to the reference number of the enemy being fought.

See also: fight, @adefeat, @akill


@agfail

Type: Inherit

This attribute holds a list of commands which are activated on the said object whenever a player fails the @lgrab lock on the object, usually when trying to use the grab command to take a thing from the inventory of the said object. If the player does not own the object container, this also occurs if the Grab_Ok flag is not set to allow the procedure to take place. %# is set to the player who fails the lock.

See also: grab, @gfail, @lgrab, @ogfail, Grab_Ok


@agive

Type: Inherit

This attribute holds a list of commands which are activated on the recipient container whenever a player succeeds in giving an object to the container by use of the give command. This attribute is not triggered if giving an amount of money instead of an object (see 'help @apay' instead). %# is set to the player who is giving the item. %0 is set to the object that the player is giving.

See also: give, @apay, @elock, @give, @ogive, Enter_Ok


@agrab

Type: Inherit

This attribute holds a list of commands which are activated on the recipient container whenever a player succeeds in grabing an object from the container by use of the grab command. %0 is set to the name of the object that the player is taking.

See also: grab, @llock, @grab, @ograb, Grab_Ok


@ahear

Type: Inherit

This attribute holds a list of commands which are triggered on an object, only if this object hears a message which matches a wildcard pattern previously set with the @listen attribute. %# contains the object or player that spoke the message. The variables %0 through %9 contain data obtained from the wildcard matching. Example:

See also: @listen, @rhear, Events Wildcards


@aidesc

Type: Inherit

This attribute holds a list of commands which are activated whenever a thing or another player is inside the a container object, viewing its description by using the look command. This only works when you are inside things, not rooms. %# is set to the player looking at the inside description.

See also: look, @desc, @idesc, @oidesc


@akill

Type: Inherit

This attribute holds a list of commands which are activated whenever you get killed by another player or creature in the realm, either by result of the fight command or by any other natural causes. %# is set to the reference number of the enemy who killed you.

See also: fight, @adefeat, @afight, @kill, @okill


@aleave

Type: Inherit

This attribute holds a list of commands which are activated whenever a player leaves from the inside of an said object. This can be set on either a room, thing, or player. Players may leave from a container to its location by use of the leave command, which also triggers this attribute. %# is set to the player or object leaving the said container.

See also: leave, @leave, @llock, @oleave


@alevel

Type: Inherit

This attribute holds a list of commands which are activated whenever you receive enough Experience Points for reaching the next level.

See also: fight, @adefeat, @afight, @akill, Experience


@alfail

Type: Inherit

This attribute holds a list of commands which are activated whenever a player fails to leave the room or container by using the leave command. A player usually fails to leave if not being able to pass the @llock leave-lock from the present container object, or the @elock enter-lock to the destination object or room. %# is set to the player that attempted to leave.

See also: leave, @elock, @lfail, @llock, @olfail


@alias

Type: Haven, Osee

On players, your @alias is a shortened form of your character name which allows people to address you quickly. The alias set will be shown in parentheses to other people when you page them, and it could also be listed on the who list with the proper flags set. For example, if your name was Gandalf, you might set your alias to G. A player may have one and only one unique alias.

On exits, the @alias is a list of semicolon-separated words that give shorthand names for the exit. Example:

See also: page, who, @open


@amoon

Type: Inherit

This attribute holds a list of commands which are activated, for all objects and connected players, every time there is an announcement of a major moon phase change. The moonphase() function can be used to determine the new phase of the moon, according to the Weather Almanac. The current almanac's statistics can be viewed by typing weather.

See also: weather, @asunrise, @asunset, moonphase()


@amove

Type: Inherit, Wizard

This attribute holds a list of commands which are activated whenever the said player uses the move command to use an exit to another room or uses the enter command to jump inside of a container object.

See also: move, enter, @move, @omove


@aopen

Type: Haven, Inherit

This attribute must be set on an object in order for it to be able to be acted upon through use of the open command. It holds a list of commands which are activated whenever a player opens the item, most usually a treasure chest. If the object is set with the Key flag, it must automatically @unlock itself before another attempt at open can be successful.

See also: open, @unlock, Key


@apage

Type: Inherit

This attribute holds a list of commands which are activated whenever you are paged by another player online the game. %# is set to the player who paged you, and %0 is set to the entire contents of the message.

See also: page


@apay

Type: Inherit

This attribute holds a list of commands which are activated on the recipient object whenever a player succeeds in giving an amount of Gold Pieces to the said object by use of the give command. This attribute is not triggered if giving an object instead of an amount of money (see 'help @agive' instead). %# is set to the player who is giving the money. %0 is set to the amount that the player is giving.

See also: give, @agive, @cost, @lcost, @opay, @pay


@asearch

Type: Inherit

This attribute holds a list of commands which are activated on the room whenever a player uses the search command. To prevent excess searching, an @unlock is necessary to enable a player to search the room again, after a short amount of time has passed. %# is set to the player who is doing the search.

See also: search, @unlock


@asfail

Type: Inherit

This attribute holds a list of commands which are activated on a container or room whenever a player or object fails the @slock speech-lock on the object, usually when a player does unauthorized talking in a room. %# is set to the player violating the @slock.

See also: say, @sfail, @slock


@asucc

Type: Inherit

This attribute holds a list of commands which are activated on a container or room whenever a player or object succeeds in passing the @lock on the object, usually when entering a room or picking an object up with the take command. %# is set to the player who performs the action.

See also: take, @lock, @osucc, @succ


@asunrise

Type: Inherit

This attribute holds a list of commands which are activated, for all objects and connected players, every single day when the sun rises, according to the Weather Almanac. The current almanac's statistics may be viewed by typing weather.

See also: weather, @amoon, @asunset


@asunset

Type: Inherit

This attribute holds a list of commands which are activated, for all objects and connected players, every single day when the sun sets, according to the Weather Almanac. The current almanac's statistics may be viewed by typing weather.

See also: weather, @amoon, @asunrise


@atalk

Type: Inherit

This attribute holds a list of commands which are activated whenever a player uses the talk command on an object. %# is set to the player using the command.

See also: talk, @otalk @talk


@atime

Type: Inherit

This attribute contains a list of commands that are executed by the object once every specified number of seconds (usually 1 minute). It can be used for anything that requires a repetitive timer, without the overhead of using the @wait queue. Players with this attribute set will only have it triggered when they are currently logged into the game.

The actual number of seconds between successive @atime executions is specified by the ATIME_INTERVAL configuration variable. See help on this term for more information regarding when @atime attributes are triggered.

See also: @wait ATIME_INTERVAL


@aufail

Type: Inherit

This attribute holds a list of commands which are activated whenever a player fails to use an object or trigger one of its ! or $ Events because of the @ulock use-lock. %# is set to the player that attempted to use the object.

See also: use, @ause, @oufail, @ufail, @ulock, @use, Events


@aunidle

Type: Inherit

This attribute executes on a player whenever he or she types in a command to the game that unidles the player from longer than 1 total hour. %0 is set to the number of seconds you were idle beforehand.

See also: @idle


@ause

Type: Inherit

This attribute holds a list of commands which are activated whenever a player succeeds in passing the @ulock use-lock to trigger an object with the use command. %# is set to the player that used the object.

See also: use, @ouse, @ulock, @use


@away

Type: Haven, Inherit

This attribute on yourself holds a message which is shown to any player when one tries to page you while you are either hidden from them or not connected to the game. The message is also parsed according to who is paging you.

See also: page, @haven, @idle, @reply


@caption

Type: Haven, Inherit

This attribute holds a message, which is seen by all other players online, following your name in the list of Contents in a room's description. This appears mostly when they move from room to room or when they use the look command either in the room or on yourself. It may be settable for any player or thing.

See also: look, move


@cfail

Type: Haven, Inherit

This attribute holds a message which is displayed to a player whenever he or she fails the @lcost lock on the said object, in an attempt to give the object some money.

See also: give, @acfail, @lcost, @ocfail


@channel

Type: Haven, Wizard

This wizard attribute holds a space-separated list of all the channels that a player currently belongs to. It is usually modified only by using the +channel command. This attribute has no significance for non-player objects.

See also: +channel, +com


@color

Type: Haven, Inherit

This attribute can hold several comma-separated values to represent the color of a room or object as seen in the description or contents list when a player with ANSI emulation types in a look command. Each value is a number from 0 to 15 determining the color of the object. Added to the value may be several modifiers which determine additional color options. A + instructs the object to blink. A - underlines the object name in the contents list. Finally, a * makes the object appear in a rainbow color.

The different fields the @color attribute determines when the color goes into effect. There can be up to a maximum of ten different fields separated by commas. The first field contains the daytime color of the object, or what color a room is underground when lit by a torch. The second, optional field, contains the nighttime, or darker color. If provided, the next set of four fields contain the daytime colors for the seasons Winter, Spring, Summer, and Autumn, depending upon the date and year in game time (seen with the weather command). The next four are those same seasons for nighttime use, respectively. If some fields are not specified, the first ones mentioned take priority. The values 0 through 15 are described in the table below.

0-Normal 8-Dark Gray
1-Red 9-Light Red
2-Green 10-Light Green
3-Brown 11-Yellow
4-Blue 12-Light Blue
5-Purple 13-Light Purple
6-Cyan 14-Light Cyan
7-Grey 15-White

Examples:

See also: look, weather, Dark


@compass

Type: Haven, Inherit, Wizard

This attribute contains 2 or 3 comma-separated numbers that, when on a room, designate the room's location on a world or dungeon map. The numbers specify coordinates in X,Y or X,Y,Z format, indicating the room's distance from the origin on the map. For conventional measurement, rooms are usually placed 4 spaces apart in the X direction (West/East) and 2 spaces apart in the Y direction (North/South). The Z direction is only used to show the height of the player as positioned on the world or dungeon map. If Z is negative, the player's position will not be seen on the map, and its compass will be shown as 'Below'. If Z is positive, the world map will zoom out to show a larger landscape view between you and the ground. Normally, the @floor attribute is used in dungeons to display the height of a player in the structure. Examples:

See also: map, sector, @floor


@comtitle

Type: Haven, Inherit

This attribute holds a message which is seen by all other players online, following your name in <>'s, every time you speak on a channel by using the +com command. This attribute has no significance for any non-player object.

See also: +channel, +com


@cost

Type: Haven, Inherit

This attribute, when set on a thing in a room, enables the object to accept a certain amount of money from any player. The attribute holds a single number which determines the amount of money that a player must give to the object to trigger its @apay attribute. If the amount specified in @cost is negative, then the player may give any amount of money to the object to trigger it. The @cost attribute is parsed with %# set as the player who is giving the money. Example:

See also: give, @apay, @cfail, @lcost, @opay, @pay


@damage

Type: Haven, Inherit, Wizard

This wizard attribute can be set on certain exits that fall to the ground. The value contains the amount of Hit Points that should be deducted from any player that attempts to move, or fall through the exit.

See also: move, Hit Points


@desc

Type: Haven, Inherit

This attribute contains the description of the room, thing, player, or exit, displayed and parsed whenever a person uses the look command. Different variations of this attribute are available depending upon other circumstances that come into play as the game progresses.

See also: look, @adesc, @idesc, @ndesc, @odesc


@doing

Type: Haven, Inherit

This attribute on a player contains a short message, usually either 20 or 36 characters in width, that is displayed to all other players in a column on the who list. The attribute, when displayed, strips all unprintable characters so that the columns will remain intact. The @doing is also displayed when you are unidle and another player uses the +finger command on you. @doing phrases are also parsed according to who is looking at them.

See also: who, +finger


@drop

Type: Haven, Inherit

This attribute holds a message which is displayed to a player whenever he or she drops the said object from his or her inventory into the room.

See also: drop, @adrop, @odrop


@ealias

Type: Haven, Inherit

This attribute sets up a set of alternate commands that may be used as synonynms for the enter command when you are in the same location as the object. The alternate commands are separated by semicolons just like in exit names, but they are checked for after builtin commands and before $ Events.

See also: enter, @lalias, Events


@efail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player fails to enter an object, either because of the @elock enter-lock or because the Enter_Ok flag was not appropriately set.

See also: enter, @aefail, @elock, @oefail, Enter_Ok


@elock

Type: Lock

The enter-lock is used to control who is allowed to enter the said object, room, or zone. It may be set to any number of players or objects on the game. The attributes @efail, @aefail, and @oefail will be executed appropriately if the player fails the lock.

See also: enter, @aefail, @efail, @oefail, Locks


@email

Type: Haven, Inherit

This attribute contains the email address of the player on netmare. It is initialized by each player as he or she logs in and creates his or her character on the game for the first time. It may be displayed by any other player online, if permitted, by using the +finger command.

See also: @rlname


@encounters

Type: Dbref, Haven, Inherit, Wizard

This attribute holds the primary list of enemy encounters available in a special zone object sector. The encounters listed are in the form of a set of #dbref's (database reference numbers), representing the parent object of the enemy, separated by | characters. When randomly found in the wilderness, the word 'Parent' will be stripped from the name of the parent #dbref used.

Enemy encounters should be arranged such that the weakest monsters found in the sector are first, and so on up to the most difficult or rarest in the 6th slot. The word order for each slot goes as the following: Easy, Common, Difficult, Night, Rare, Major. By default, the 2nd slot Common will be the most common of all 6 enemy encounters, except during night, when the 4th slot will be the most common (only outside in the wilderness). Only the three most common encounters, if present, will be mentioned when a player uses the sector command. The 6th and last encounter on the list is considered a Fatal Attack, which should be an enemy twice as difficult to defeat as the normal ones in the current sector. If the 6th encounter is equal to the 2nd slot, then during a Fatal Attack, 8-12 enemies will appear on the screen.

You may also set this attribute on a specific room in the sector to specify which slot to use as the most common encounter for that room. Whichever slot is defined as the most common is always checked first, then the game begins checking slots from 1 on up to 6, skipping the previously mentioned most-common. The value from 1 to 6 may be placed in the attribute for checking on a room. If a '6' is specified as the most common, the Fatal Attack message will not appear. If the number is a '0', enemy encounters will be turned off for that room. Example:

See also: sector, Zones


@enter

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player succeeds in entering the said object. For container objects, the player must be able to pass the @elock lock, and if not owning the container, the flag Enter_Ok must be set to allow entry.

See also: enter, @aenter, @elock, @oefail, Enter_Ok


@eventkey

Type: Haven, Inherit, Wizard

This wizard attribute holds the rules for which an thing or exit is able to accept Event Items given by players as part of the storyline. The use command must be applied to exits, and the give command must be applied to regular things. If successful, both commands behave like a give and executes the @give, @agive, and @ogive attributes respectively, with %0 being the name of the event item given or used. Only the give command on a thing removes the specified Event Item from your inventory list.

Another use for @eventkey is for treasure chests that can hold a limited number of items in them. Set the value of the attribute to 'Chest #', where # is the maximum number of items allowable in the chest at one time. If the @eventkey attribute is removed while items are in the chest, those items cannot be taken from the chest using grab and more items cannot be given to the chest.

See also: give, grab, use, @agive, @agrab, @give, @grab, @ogive, @ograb


@fail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player fails to pass the @lock on the object, usually when entering a room or trying to pick an object up with the take command.

See also: take, @afail, @lock, @ofail


@ffail

Type: Haven, Inherit

This attribute holds a message that is displayed whenever a player attempts to fight an object that is not unfightable or already dead.

See also: fight, @affail, @offail


@floor

Type: Haven, Inherit

This attribute determines the floor level of a particular room. The floor can be any two-letter title that will show up in the Status Bar automatically when a player enters the room (only if the floor is different than the one in the previous room). The dungeon map or its world sector rely on this attribute to display the depth of the room to the passing player. Conventional floor setting usually goes from B15 up through 15F. Floors above 9 use the ASCII character set, as listed in the short table from 0 to 15: 0123456789:;<=>?

A room without a @floor attribute set makes it switch to the default floor. Wizards may set the @floor of room #0 to determine the default floor for all rooms in the realm. This is usually set as 1F. The floor variable is currently not case-sensitive, but it may be so in a later version of netmare. The Status Bar reads data for each digit in the attribute from the msgs/block.db file, located in the netmare runtime directory. Example:

See also: map, sector, @floor, +sbar


@gfail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player fails the @lgrab lock on an object, usually when trying to use the grab command to take a thing from the inventory of the said object. If the player does not own the object container, this also occurs if the Grab_Ok flag is not set to allow the procedure to take place.

See also: grab, @agfail, @lgrab, @ogfail, Grab_Ok


@grab

Type: Haven, Inherit

This attribute holds a message which is displayed by the recipient container whenever a player succeeds in grabing an object from the container by use of the grab command. %0 is set to the name of the object that the player is taking.

See also: grab, @llock, @agrab, @ograb, Grab_Ok


@haven

Type: Haven, Inherit

This attribute on yourself holds a message which is shown to any player when one tries to page you while you have your @plock page-lock set against them. The message is also parsed according to who is paging you.

See also: page, @away, @idle, @plock, @reply


@hlock

Type: Lock, Wizard

The hide-lock is used to control who is allowed to be able to see you on the who list. Your character will be tallied in the list of hidden users and still in the number of total players online. Though if you are a hidden immortal, it will not show up in the count for others. People who page you will see the same message as if you were not even connected, and your @away attribute will be shown to them, if set. This is normally useful to Wizards who would like to work on the game without the interruptions of regular players.

See also: page, who, @away, Locks


@idesc

Type: Haven, Inherit

This attribute, usually set on a container object, contains the inside-description of the object that is seen whenever a player or object is inside the said container uses the look command. If you are inside an object and no @idesc is set, you will see the normal @desc if one is present.

See also: look, @aidesc, @desc, @oidesc


@idle

Type: Haven, Inherit

This attribute on yourself holds a message which is shown to players when they page you when you are idle. The message is only seen when you have not typed in any command to netmare for longer than 5 minutes at a time. If your @idle message is set, each person that pages you will have the exact time prefixed before the message in white, and the Flags column in the who list will contain an I for idle. The message is parsed according to who is paging you.

See also: page, who, @away, @haven, @reply


@kill

Type: Haven, Inherit

This attribute holds a message which is displayed to the player that kills the said object, either from using the fight command or from a natural phenomena (in this case, a Wizard would use the slay command to kill the player).

See also: fight, slay, @akill, @okill


@lalias

Type: Haven, Inherit

This attribute sets up a set of alternate commands that may be used as synonynms for the leave command when you are currently inside the object. The alternate commands are separated by semicolons just like in exit names, but they are checked for after builtin commands and before $ Events.

See also: leave, @ealias, Events


@lastfrom

Type: Dark, Haven

This wizard attribute is internally set by netmare each time you connect to the game. It contains the last hostname address and userid from which you entered the game. It is used for checking to see if your character might have been hacked by another player from a different host. If when you connect, you see a Last Login that has a different host that what you are normally used to, it is a good idea to use the @passwd command as soon as possible.


@lcost

Type: Lock

The cost-lock is used to control who is allowed to give an object any amount of money. It may be set to any number of players or objects on the game. The attributes @cfail, @acfail, and @ocfail will be executed appropriately if the player fails the lock.

See also: give, @acfail, @cfail, @elock, @lgive, @ocfail, Locks


@leave

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player leaves from the inside of an object. This can be set on either a room, thing, or player. Players may leave from a container to its location by use of the leave command, which also shows this message.

See also: leave, @aleave, @llock, @oleave


@lfail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player fails to leave the room or container by using the leave command. A player usually fails to leave if not being able to pass the @llock leave-lock from the present container object, or the @elock enter-lock to the destination object or room.

See also: leave, @alfail, @elock, @llock, @olfail, Locks


@lgive

Type: Lock

The give-lock is used to control who is allowed to give an object to another object. It may be set to any number of players or objects on the game. The attributes @efail, @aefail, and @oefail will be executed appropriately if the player fails the lock.

See also: give, @aefail, @efail, @elock, @oefail, Locks


@lgrab

Type: Lock

The grab-lock is used to control who is allowed to grab things from another object. It may be set to any number of players or objects on the game. The attributes @gfail, @agfail, and @ogfail will be executed appropriately if the player fails the lock.

See also: grab, @agfail, @gfail, @ogfail, Locks


@listen

Type: Haven, Inherit

This attribute contains a wildcard pattern that is set to match what the object should hear. All players or objects inside an object set with the @listen attribute will also hear everything that the container hears. Actions can be performed according to what the container hears by use of the @ahear attribute, and messages may be set to other rooms or objects by use of the @addrelay command.

See also: @addrelay, @ahear, @rhear


@llink

Type: Lock

The link-lock is used on a room to control who is allowed to be able to use the @link command to link an exit or object to the room. Remember that the Link_Ok flag must also be set for other people to be able to link exits to the room.

See also: @link, Link_Ok, Locks


@llock

Type: Lock

The leave-lock is used to control who is allowed to use the leave command to escape from the inside of a container object or room. The attributes @lfail, @alfail, and @olfail will be executed appropriately if the player fails the lock.

See also: leave, @alfail, @lfail, @olfail, Locks


@lock

Type: Lock

The normal lock is used to control who is allowed to pick up an object with the take command, or enter through an exit with the move command. The attributes @fail, @afail, and @ofail will be executed appropriately if the player fails the lock. No @lock needs to be set on a player, since nothing is allowed to pick a player up.

See also: move, take, @afail, @fail, @ofail, Locks


@locklev

Type: Haven, Inherit, Wizard

This wizard attribute is used to specify the strength of a door on an exit marked with the Door flag. The value can be from 0 through 8, whose meanings are respectively: Default, Wooden, Bronze, Platinum, Iron, Steel, Crystal, Adamantium, and Astral. The higher the level, the harder the material the door is made out of, and the harder it is for soldiers to bash through or for thieves to pick its lock.

See also: Door


@lsearch

Type: Lock

The search-lock is used to control who is allowed to successfully search in the room, and trigger the room's @asearch attribute. Those that fail the lock will receive the normal message as if there was nothing available to search in the first place.

See also: search, @asearch, Locks


@map

Type: Haven, Inherit, Wizard

The value of this attribute is broken up into two distinct parts, separated by a comma, when used on a zone object. The first part consists of a set of 7 space-separated words which determine the required bitmap positions for dungeon accessories, and the second part consists of a layout for each floor of the dungeon.

In the first part, the first word contains the bitmap position of the Dungeon Map (or World Map if this is a wilderness sector). You could only view the full map if the value for this position on the player is 1. The next word is the bitmap position of the Dungeon Compass, which marks a big X on the map indicative of the dungeon lair. If the sector is not a dungeon, the second word may be used for Swampland sectors, in which case the bitmap position determines if you can freely walk through the swamp without its harmful gases affecting you. The third word is the matching floor of the boss' lair, such as B3 or 7F. The next two words contain the X and Y coordinates on the map of where the actual lair is located on the specified floor. The next word in this field contains the bitmap position for the variable which tells if the player has defeated the dungeon boss yet. If a particular dungeon has no compass or boss, it is safe to leave those words out entirely from the @map string.

The second set of values after the comma are separated into 4 groups of space-separated words for each floor of the dungeon or stronghold. The first word contains the floor icon, usually arranged from highest to lowest level in a particular dungeon. The second and third contain the X and Y coordinates of where the map should be centered on the map screen. The fourth number is a color code from 0 to 15 which determines the color of the Floor icon on the map screen. The colors used can be found by typing 'help @color.'

Since the bit position '0' on any player is always 1, you may set any number to 0 in @map to enable or 1 to disable each feature for all players. Examples:

See also: map, sector, @color, Zones


@move

Type: Haven, Inherit

This attribute holds a message which is displayed to the player whenever he or she switches to a new location either by using the move or enter command.

See also: move, enter, @amove, @omove


@ndesc

Type: Haven, Inherit

This attribute contains the nighttime description of the room, thing, player, or exit, displayed and parsed whenever a person uses the look command during nighttime hours on the game. If no @ndesc is present or if it is not night at all, the regular @desc will be shown to the player.

See also: look, @desc, @idesc


@notify

Type: Haven, Inherit

This attribute contains a space-separated list of player names that are to be watched for as the they log on or off the game. You will be notified as they connect and disconnect, and also, when you log into the game, you will receive a list of those specified players that are currently connected. If you set this attribute to the word 'all', you will be notified when any non-hidden player connects or disconnects to the game. Examples:


@ocfail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails the @lcost lock on the said object, in an attempt to give the object some money.

See also: give, @acfail, @cfail, @lcost


@oclone

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever this object is cloned by use of either the @clone or @enemy command.

See also: @aclone, @clone, @enemy


@odesc

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player views the said object's description. Room descriptions are activated every time a person enters the room or uses the look command.

See also: look, @adesc, @desc, @ndesc


@odrop

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player uses the drop command to place this object into his or her location.

See also: drop, @adrop, @drop


@oefail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails the @elock lock on a particular object, in an attempt to enter it. This can be also triggered if the flag Enter_Ok is not set to allow others to enter the object.

See also: enter, @aefail, @efail, @elock, Enter_Ok


@oenter

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player succeeds in entering the said object. For container objects, the player must be able to pass the @elock lock, and if not owning the container, the flag Enter_Ok must be set to allow entry.

See also: enter, @aenter, @elock, @enter, Enter_Ok


@ofail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails the @lock on the object, usually when entering a room or trying to pick an object up with the take command.

See also: take, @afail, @fail, @lock


@offail

Type: Haven, Inherit

This attribute holds a message that is displayed to all the other objects in the room whenever a player attempts to fight an object that is not unfightable or already dead.

See also: fight, @affail, @ffail


@ogfail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails the @lgrab lock on the object, usually when trying to use the grab command to take a thing from the inventory of the said object. If the player does not own the object container, this also occurs if the Grab_Ok flag is not set to allow the procedure to take place.

See also: grab, @agfail, @gfail, @lgrab, Grab_Ok


@ogive

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player succeeds in giving an object to the container by use of the give command. This attribute is not displayed if giving an amount of money instead of an object (see 'help @opay' instead). %0 is set to the object that the player is giving.

See also: give, @agive, @opay, @elock, @give, Enter_Ok


@ograb

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player succeeds in grabing an object from the container by use of the grab command. %0 is set to the name of the object that the player is taking.

See also: grab, @llock, @agrab, @grab, Grab_Ok


@oidesc

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects whenever a player is inside the said object, viewing its description by using the look command. This only works when you are inside things, not rooms.

See also: look, @aidesc, @desc, @idesc


@okill

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever you get killed by another player or creature in the realm, either by result of the fight command or by any other natural causes.

See also: fight, @akill, @kill


@oleave

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player leaves from the inside of an said object. This can be set on either a room, thing, or player. Players may leave from a container to its location by use of the leave command, which also triggers this attribute.

See also: leave, @aleave, @leave, @llock


@olfail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails to leave the room or container by using the leave command. A player usually fails to leave if not being able to pass the @llock leave-lock from the present container object, or the @elock enter-lock to the destination object or room.

See also: leave, @alfail, @elock, @lfail, @llock


@omove

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the origin room whenever the said player uses the move command to use an exit to another room or uses the enter command to jump inside of a container object.

See also: move, enter, @amove, @move


@opay

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player succeeds in giving an amount of Gold Pieces to the said object by use of the give command. This attribute is not displayed if giving an object instead of an amount of money (see 'help @ogive' instead). %0 is set to the amount that the player is giving.

See also: give, @apay, @cost, @lcost, @ogive, @pay


@osucc

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player or object succeeds in passing the @lock on the object, usually when entering a room or picking an object up with the take command.

See also: take, @asucc, @lock, @succ


@otalk

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player uses the talk command on an object.

See also: talk, @atalk, @talk


@oufail

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player fails to use an object or trigger one of its ! or $ Events because of the @ulock use-lock.

See also: use, @aufail, @ause, @ouse, @ufail, @ulock, @use, Events


@ouse

Type: Haven, Inherit

This attribute holds a message which is displayed to all the other objects in the room whenever a player succeeds in passing the @ulock use-lock to trigger an object with the use command.

See also: use, @ause, @ulock, @use


@pay

Type: Haven, Inherit

This attribute holds a message which is displayed by the recipient object whenever a player succeeds in giving an amount of Gold Pieces to the said object by use of the give command. This attribute is not displayed if giving an object instead of an amount of money (see 'help @give' instead). %0 is set to the amount that the player is giving.

See also: give, @apay, @give, @cost, @lcost, @opay


@plan

Type: Haven, Inherit

This attribute on a player usually describes a short-term goal that the player has in mind, a quote from one of the player's favorite interests, or an advertisement for a skill that the player has. In short, the @plan is a message that all players can see when they use the +finger command on you. It may contain %R's, which parse out to be newline characters on the screen. %# is set to the player who is using +finger on you. The maximum size for this attribute is 8000 characters.

See also: +finger


@plock

Type: Lock

The page-lock is used to control who is allowed to page you on the game. It may be set to any player you wish. Locked-out players who attempt to page you will receive your @haven message (if set), and a message telling them that you are not accepting pages from them. They will not be notified with your @haven message if you are also hidden from them with the @hlock hide-lock set. Examples:

See also: page, @haven, @hlock, Locks


@prefix

Type: Haven, Inherit

This attribute holds a string of parsable text, displayed whenever a player enters a command in from the network (as opposed to queued commands). The text string is shown and parsed before the execution of the command. This is mostly meaningful to notify robots that the output of a particular command is following next.

See also: @suffix


@prompt

Type: Haven, Inherit

This attribute holds a message which is displayed online as a prompt string, every time you type in a command to the game. It can be used for keeping up-to-date tabs on your status or equipment, especially if your terminal has no ANSI emulation and you cannot use the online Status Bar. If you set the value of this attribute to on, you will be given a default game-provided prompt which includes the present Hit Points, Magic Power, and the number of Gold Pieces you currently have. Example:

See also: +sbar


@reply

Type: Haven, Inherit

This attribute on yourself holds a message which is shown to players when they send you some +mail, whether you are online the game at the current time or not. The message is parsed according to who is mailing you.

See also: @away, @haven, @idle, +mail


@rhear

Type: Haven, Inherit

This attribute, usually set on a room, contains a message which is parsed and sent to all of the objects present in the relay list on the room. The message is only sent when the object hears something that matches the wildcard pattern set on its @listen attribute.

See also: @addrelay, @ahear, @listen


@rlname

Type: Haven, Inherit

This attribute contains the real-life name of the player on netmare. It is initialized by each player as he or she logs in and creates his or her character on the game for the first time. It may be displayed by any other player online, if permitted, by using the +finger command.

See also: @email


@sector

Type: Haven, Inherit, Wizard

This attribute is set on a zone object to determine which type of climate and terrain the sector belongs to. Differences in climate yield differences in weather for that sector, as well as the rate of encountering random enemies and how much food is used when travelling through rooms. Valid values consist of either a number or word representation from the table shown when you type '@list sectors'. If no value is set, the sector defaults to Normal terrain with no monster encounters present. More terrain types may be added in the future.

See also: map, sector, Zones


@sfail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player or object fails the @slock speech-lock on the object, usually when a player does unauthorized talking in a room.

See also: say, @asfail, @slock


@shop

Type: Haven, Inherit, Wizard

This attribute is used to determine what type of shop an Object, usually a Merchant or Shop Keeper, is to behave like. Each shop type allows different commands to be available automatically only in the room of the object. Valid values consist of either a number or word represention from the table shown when you type '@list shops'. Additional arguments, such as which supplies an Item Shop is supposed to sell or the extent of the menu in the House of Healing, may be added as a comma-separated list of values or strings following a colon after the name of the shop. Note that more shop settings may be available in the future. Examples:


@slock

Type: Lock

The speech-lock is used to control who is allowed to use the say or pose command in a certain room. The attributes @sfail and @asfail will be executed appropriately if the player fails the lock.

See also: pose, say, @asfail, @sfail, Locks


@sound

Type: Haven, Inherit

This wizard attribute can be set on a zone or a room to present an ANSI escape code which sets the appropriate background music for the area. When set on a room, it overrides any music set on any of the zones. Example:

See also: sector, Zones


@startup

Type: Inherit

This attribute holds a list of commands which are activated on each object in the database when the game reboots or starts up for the first time.

See also: @reboot


@succ

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player or object succeeds in passing the @lock on the object, usually when entering a room or picking an object up with the take command.

See also: take, @asucc, @lock, @osucc


@suffix

Type: Haven, Inherit

This attribute holds a string of parsable text on a player, displayed immediately following the output of any command typed in from the network (instead of any queued commands). This is mostly meaningful to notify robots that there is no more output coming from the completed command, however it could be used as a substitute for the @prompt attribute to display your current status conditions after each command.

See also: @prefix, @prompt


@talk

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player uses the talk command on an object.

See also: talk, @atalk, @otalk


@treasure

Type: Haven, Inherit, Wizard

This attribute holds a list of numbers that can be set on any monster or enemy object in the realm. These numbers determine the random items that players will get in occasional treasure chests after defeating the monster or stealing from the enemy. The three groups of numbers, Items Won, Equipment Won, and Items/Equipment Stolen from an enemy are separated by commas, respectively. The numbers in each group are separated by spaces and are randomly picked when the a treasure chest appears. Items can be found rarer in the list by adding more different, common treasures to the list. Example:

This attribute can also be set on a Zone object, which determines the availability of random items when a player uses the search command in the wilderness. Examples of common random items are weak arrows or pebbles for a sling.


@ufail

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player fails to use an object or trigger one of its $ Events because of the @ulock use-lock.

Note that ! events on locked objects are not matched by any text, and therefore do not print the @ufail. Also note that if a @ulock is set and neither a @ufail or a @aufail are set, the command will not match the object's $ event at all.

See also: use, @aufail, @oufail, @ulock, @use, Events


@ulock

Type: Lock

The use-lock is used to control who is allowed to use an object, or trigger it by means of one of its ! or $ Events. It may be set to any number of players or objects on the game. The attributes @ufail, @aufail, and @oufail will be executed appropriately if the player fails the lock.

See also: use, @aufail, @oufail, @ufail, @ulock, Events, Locks


@use

Type: Haven, Inherit

This attribute holds a message which is displayed whenever a player succeeds in passing the @ulock use-lock to trigger an object with the use command.

See also: use, @ause, @ouse, @ulock


@vlock

Type: Lock, Wizard

The visual-lock is used to control who is allowed to see an object in any room environment. Used basically for role-playing effects where townspeople are to disappear or reappear from a certain place from time to time in the storyline, the visual-lock allows no contact to be noticable by any player online except the owner and other wizards. If something is not present from view, wizards will see a (hidden) symbol added at the end of the object's @caption in the room's contents list. Being hidden from sight does not block out any leaving or arriving messages, nor does it mute the object in any form.

See also: look, @caption, Locks


@weather

Type: Haven, Inherit, Wizard

Currently unimplemented.


@whoflags

Type: Haven, Inherit

This attribute holds a series of words which represent what type of who list you would like to see. Capital letters at the beginning of each word indicate a larger specific column, whereas the word being all in lowercase letters indicate a shortened version. The default is normally set to name online idle Level gender Occupation doing poll. Typing who ? will display the list of possible flags that you can use. Be warned, however, that not all of them may work for ordinary players.

Notes on special whoflags. The Flags column contains any of four letters which display H if the player is hidden, I if the player is over 5 minutes idle and he or she has an @idle message set, P if the player is not accepting pages from you, and B if the player is an authorized builder on the game. The Occupation column may have a symbol to the left of the player's occupation showing session status. The symbol can be a * indicating Administration, or & to indicate the player is currently busy, not accepting any text output from the game. This can occur during the death animation screen or during race selection, where the output of the game can not be seen. All text sent to the player is saved and restored the moment he or she becomes unbusy, missing nothing.

See also: who



Section 5: Object Flags



Flags

A- Abode B- Builder C- Chown_Ok
D- Dark E- Exit F- Floating
G- Going H- Healing I- Illness
J- Jump_Ok K- Key L- Link_Ok
M- Monster N- Nest O- Oceanic
P- Player R- Room S- Shaft
T- Transparent U- Universal V- Visible
W- Wall X- X-Zone Z- Zone
a- Arena b- Bearing c- Connected
d- Door e- Enter_Ok f- Fishable
g- Grab_Ok h- Haven i- Inactive_Ok
l- Light m- Marked o- Opaque
p- Puppet q- Quiet s- Slaved
t- Terse u- Unsaved v- Verbose
w- Wander


Abode

This flag on a room indicates that all players have the ability to use the save command in the room, as long as there are no ailing conditions still present on the player.

See also: save, Link_Ok


Arena

This wizard flag may be set on a room to create a fighting arena for players. All players in such a room may fight without penalties to their Virtue or Gold Pieces, and no extra deaths will accumulate. When a player is defeated, the @adefeat attribute on the room will be triggered. This attribute is responsible for restoring the life of the defeated player and teleporting him or her out of the arena to a safe haven. Non-player enemies in an arena are treated normally with no special effects from the game. Players or enemies may not be knocked unconscious during a challenge.

See also: @adefeat


Bearing

This flag may be set on a thing to allow other people, other than the object's owner, to @addparent or @delparent their particular objects to the said thing. You cannot unset the flag unless there are no children attached to it, or unless you are a wizard.

See also: @addparent, @delparent, Inheritance


Builder

This wizard flag gives an ordinary player character unrestricted building access with the @clone, @create, @dig, and @open commands. On most games, building access is not restricted to wizards only, and this flag is hardly used. TinyMARE can be configured to restrict access to one or more of the above fields using @config command.

See also: @clone, @config, @create, @dig, @open


Chown_Ok

This flag may be set on any room, thing, or exit. It allows another player, other than the object's owner, to use the @chown command, taking over ownership of the object. Players must carry the objects to be able to @chown them.

See also: @chown


Connected

This flag is automatically marked on players when they are currently connected online to the game. It cannot be unset except by use of the @boot command, or any other action that forces the particular player to log off of the game.

See also: @boot


Dark

This flag may be set on any room, thing, exit, or player. When set on rooms, all things and exits normally visible and not glowing (with the Light flag) will disappear entirely from the normal Contents and Obvious Exits list. When set on things or exits, only that particular object will be unseen with the normal look command. This flag, when used on players, still keeps the player in the contents list, but disallows others to use the whereis command to locate a player's location from afar.

See also: look, whereis, Light


Door

This wizard flag can be set on an exit to enable it to become a Commonly Locked Door. These doors make use of the @locklev attribute, which determines the strength of the door. Doors are useful for mortal houses in a residental area whose exits cannot normally be locked by the @lock attribute.

See also: @lock, @locklev


Enter_Ok

This flag, set on a thing, allows the object to be entered by any player online instead of by just the owner of the object. This also allows players to use the give command to give other objects to one that is owned by someone else. The @elock enter-lock must still be set appropriately for the move to succeed.

See also: enter, @elock, Locks


Exit

An exit is one of five different types of objects in the realm. Its location is the source room, and its @link is its destination.

See also: Player, Room, Thing, Zone


Fishable

This wizard flag should be set on all wilderness rooms which are suitable for use with the Fishing Skill. This also includes lake rooms and any large sources of water found underground that might contain an abundant number of fresh-water fish.


Floating

This flag may be set on a room to suppress messages which say that the room is disconnected from the 'outside world'. This message is sent about every 10 minutes only if there are no exits leading up to it from the origin room, #0.

See also: Marked


Going

This flag is automatically set by TinyMARE to indicate that an object is scheduled for destruction, or if it has already been destroyed and is in the free list, owned by God. Objects may be set Going by using the @destroy command on a room or on an object who still has children attached to it. It may be removed by using @undestroy.

See also: @addparent, @destroy, @undestroy, Inheritance


Grab_Ok

This flag can be set on an object to allow players other than the object's owner to use the grab command to take items from the object. The @lgrab grab-lock must still be set appropriately for the move to succeed.

See also: grab, @lgrab, Locks


Haven

If an object is set haven, it cannot execute any commands in the background Command Queue or Wait Queue. If a player is set haven, he or she may not @trigger or @force himself or herself to execute any commands, however he or she may still type commands into the game successfully in direct mode.

See also: @force, @trigger, @wait


Healing

This flag may be set on a room to designate it as a healing area. All players who are in that room, unengaged in combat and without ailments in their Condition, will experience a faster regeneration rate of Hit Points, Magic Power, and Endurance. Most inns and cottages located in the wilderness (with a fireplace) have this flag set on the room location.


Illness

This flag may be set on a room to designate it as a place where players may easily get a Sickness, such as near a real cold spray of water or in a plague-infested area. All players in these areas will increase their sickness level by 1 point at about every 3 minutes or so. The maximum level of sickness is the 15th degree. Inns cure sickness by 1 point for every night stayed.


Inactive_Ok

This wizard flag may be set on a player to indicate that this player should not abide by the normal rules of Inactivity. With this flag set, a specific player will never be deleted due to automatic inactivity purposes. The player may still be deleted by using the @nuke command.

See also: @inactivity, @nuke


Jump_Ok

This flag can be set on a room to enable regular players to @teleport to it from afar, depending upon whether or not Teleportation is restricted on the game. If the flag is not set, only the owner of the room may teleport to it. This flag also enables the database reference number to be seen when a person uses the look command.

See also: look, @teleport


Key

This flag is used on objects to control the rate of using user-defined commands. If an object is set Key when a person activates a ! or $ Event, the object automatically becomes set with the hidden Marked flag. When the event finishes, a @unlock command is required to unset the flag so that it may accept the next command. During this time, a player may not use any further ! or $ Events on the object until the queue completes its round. This is very useful to keep players from using @force to execute an event twice when it was only meant to be executed once.

See also: @force, @unlock, Events, Marked


Link_Ok

This flag, when set on a room, enables other players who do not own the room to be able to @link their exits to that room. This does, however, not allow other players to @open exits back from that room to their own. If unset on a room, all exits already linked to that room will remain linked until either @destroyed or relinked to a different destination. Remember that an object must be able to pass the @llink lock to successfully link to the room.

See also: @destroy, @link, @llink, @open, Locks


Light

This flag may be set on an object or exit in a Dark room so that players venturing inside will still be able to see that object even without having a Torch equipped in hand. If set on a room, the room emits such intense brightness that any players inside cannot see unless they cast a Dark spell or use a special item to block the light. This flag has no meaning for zones or players.

See also: look, Dark


Marked

This wizard flag is automatically set by TinyMARE whenever the @asearch attribute of a room is triggered by the search command or when an object set with the Key flag is triggered by means of the use command or ! or $ Events. These attributes should include use of the @unlock command, which removes the Marked flag so that players may once again use the object.

The Marked flag is also used internally in the check for disconnected rooms every 10 minutes or so. During each check, all rooms will have their Marked flag unset, and all players will be notified if there are any rooms that are not connected with exits to the origin room, #0.

See also: search, use, @asearch, @unlock, Events, Floating, Key


Monster

This wizard flag is automatically set by TinyMARE on an object that is considered an enemy familiar. Enemy familiars are created with the @enemy command, and cannot have any stats except their current HP/MP/EN and Condition altered from the value that their parents behold. Like the Wander flag, these enemies move about automatically every minute or so.

See also: @enemy, Condition, Wander


Nest

This wizard flag may be set on a room to indicate a boss area. In these rare rooms marked Nest, no random enemy familiars will be encountered, no enemies or players can have a Wounded Condition, players may not use techniques (such as run) to escape from battle, and players may not use the save command.

When the enemy in this particular room set with the Boss bitmap attribute is defeated, all other enemies set with the Monster flag will be destroyed automatically, and a loud explosion will result from the boss. Only the player defeating the boss will retain the full amount of experience points gained.

See also: run, save, Condition, Monster, Nest


Oceanic

This flag may be set on a room to indicate that the room is an oceanic, or waterlogged, area. Rooms that have a sizable amount of water filled in them, where players must use the Swim technique, should have this flag set. Players that do not know how to swim will lose Hit Points gradually for every move they make in the water and for how long they stay afloat. The amount of life lost is near the same as if a player had a 10th degree Illness.

See also: Illness


Opaque

This flag may be set on a thing or player to hide the contents of that thing from normal view, only when a player uses the look command while not actually inside the object. It has no significance for rooms or exits.

See also: look


Player

A player character is one of five different types of objects, which can specifically be connected to on the game via an outside link to the real world. In brief, players act much like objects of type Thing, except that players may not enter other players, and that they own themselves.

See also: Exit, Room, Thing, Zone


Puppet

This flag may be set on a room, thing, or exit. When set, the object relays all that it hears to its owner, with the name of the puppet object prefixed. The only current drawback to this is that the @ahear attribute and any ! Events, which normally listen for certain message patterns, will not be triggered.

See also: @ahear, @listen, Events, Verbose


Quiet

When this flag is set on any type of object, all coding confirmation messages, such as 'Flag set', will be suppressed from the screen. This is mostly for objects who do a lot of triggering and are listening for key Events, or for players who have a slow connection and cannot take the amount of text that shows up on the screen while programming.

See also: @set, Events, Terse


Restricted

This flag, when set on a zone, places a portion of the game under special restrictions that gives players limited building abilities while operating within the parameters of the game. First, it only allows players to go through exits that have a return exit pointing back from the destination room. This ensures that players do not create bogus exits that trap others inside. Second, players cannot @lock or @unlock exits in a Restricted zone. Lastly, players cannot set exits Dark in a Restricted zone.

When the system configuration variable RESTRICT_TELEPORT is in effect, then this flag has special meanings. It allows restricted use of the @teleport command to jump between rooms only within the zone and when not crossing the zone's boundaries. Similarly, @link can be used to link exits and droptos only within a Restricted zone, even when the rest of the game is unreachable.

See also: @link, @teleport, RESTRICT_TELEPORT


Room

A room is one of five different types of objects which can be found in the realm. Rooms hold the backbone to the database, consisting of exits, things, and players.

See also: Exit, Player, Thing, Zone


Shaft

This flag can be set on a room to indicate a type of crawlspace, where the area is not big enough for a player to engage in combat with normal weapons or skilled techniques. Magic is a must in this area.


Slaved

This wizard flag may be set on a troublesome player in order to quiet him up, temporarily disabling all of the building and normal game commands available to the player except look, say, and move.

See also: look, move, say


Terse

This flag can be set on a player to suppress the descriptions on a room from view. Exits will be shown in aliased format to the right of the room name, and contents will be shown right below the room name. This is most useful if a player is trying to reach an area quickly, but has a slow connection and cannot take the amount of text that shows up on the screen.

See also: Quiet


Thing

A thing is one of five different types of objects which make up the database. Any thing may be created using the @create command and can be placed inside any player, room, or another thing. Players may take or drop things, as well as enter them if the appropriate flags are set.

See also: drop, enter, take, @create, Exit, Player, Room, Zone


Transparent

This wizard flag can be set on a thing to allow its contents to be visible during a normal look in the object's room. When inside the object, players may use normal exit directions to control the movement of the object. Typing look from within the object will show the object's brief @idesc followed by the description, contents, and exits of the room containing the object. The leave command behaves like normally, leaving the object and the effects of the transparency.

See also: look, leave, @idesc


Universal

This flag may be set on a zone object to signify a universal background zone across all of the rooms in the database. Any ! or $ Events coded on this object will be available to any object online, as well as triggering the @aconnect or @adisconnect attributes each time a player logs on or off of the game. While Universal, the zone may continue to function like any other normal zone.

See also: @aconnect, @adisconnect, Events, Zone


Unsaved

This flag can be set on normal things to specify that it is an object that cannot be saved in the database during reboots. Upon startup of the game, the object will automatically be destroyed.


Verbose

This flag may be set on a room, thing, or exit. When set, the object relays all of the commands that it executes to its owner, with the name of the object prefixed. It is similar to the Puppet flag, but no disadvantages arise from using this command.

See also: Puppet


Visible

If this flag is set on a room, thing, exit, or player, different players, other than the owner of the object, will be able to examine the object, seeing all the code within and how everything works. Players set Visible can also have the status command used on them by different players successfully.

See also: examine, status


Wall

If a room is set Wall, all magic spells within the room will be dissipated and non-functional. Magical equipment and magical items, such as Warp Boots or Wind Essence, will not work as well. The magic will work again when the player moves to a new room that does not have the Wall flag set.


Wander

This flag enables a thing to pick a random exit to move through every interval before an @atime attribute is triggered. This is more efficient to use than setting commands on @atime to move the object in a random direction.

See also: @atime


X-Zone

This wizard flag may be set on a room to designate a fourth-dimensional space in the world. All players and things within this room will not be able to see or talk to each other, yet all exits present will still be accessible. No battle movements may take place in this room, and a player's age is also slowed down to a halt. X-Zone is normally used for a room that one would go to after he or she dies, where the game is waiting for that person to go through the 'Continue' exit.


Zone

A zone is one of five different types of objects comprising the TinyMare database. A zone is linked to any number of rooms through the use of @addzone and @delzone, allowing its commands to be used by any player in those rooms. Once a room is linked to a zone, exits may not be made to and from rooms outside of the zone unless you are the zone's owner.

See also: @addzone, @delzone, @zone, Zones



Section 6: Global Functions



Functions

Functions provide the backbone to coding commands and objects on TinyMARE. They are used to call on-the-fly routines which take text arguments (input strings) and manipulate them to print its results within the the context of a command.

Functions can be present in the text areas of many different commands (such as say or @emit) and take the form: [function(arguments)], where <function> is the name of the function used, and <arguments> is a comma-separated list of input parameters given to the function. In most commands, the brackets [] are required to tell TinyMARE that the text inside is indeed a function call and not to be represented literally. For example, the most common way to test the results of a function is to say it in the room, like this: say [add(2,2)]

Functions may be nested within each other, as in the phrase [first(rest(This is a nice day))], which returns the string 'is'. Note that additional brackets are not required around the rest() function because the game already knows it is a function call. In this manner, the game can differentiate between a text string and a function call if there is only one word followed by a matching set of parentheses. Likewise, most coding commands do not require brackets around a function if they are the only thing present in an argument field. For instance, the function use in '@wait mul(60,5)=@emit Tick!' is legal because the [mul()] function is the only text present in the <seconds> field.

Not all commands parse (or expand) functions. Some commands such as page or +mail will not parse functions so that players may send messages with literal function strings in them. Players wishing to parse functions can prefix the command line with the string '@force me=' to send the text into the parser. When coding, it is imperative that you understand which commands perform automatic parsing and which do not. See 'help parser' for more information on the command-line parser.

Any function fed with illegal input strings beyond what it can handle will return an error. Errors begin with the word #-1 and may or may not contain text after it describing the error. For example, using the function [get(#1,desc)] to get the description of object #1 in the database will print '#-1 Permission denied.' because you do not own that object. Mathematical functions will generally return 0 or inf on error (for infinity).

For help with a particular function, type 'help functionname()'. See 'help Function List' for a list of the available functions broken down into groups. Type '@list functions' for a semi-alphabetical list of all the functions built into the game. A tutorial on functions is available, describing their most common and challenging uses: 'help Function Tutorial'.

See also: Function List, Function Tutorial, Parser


Function Tutorial

This section is meant as a reference guide to describe how functions can be integrated with commands on TinyMARE. You may type 'help functionname()' for help on a particular function at any time during this tutorial.

Using the Tutorial: If you are reading this file from within TinyMARE, then you may have trouble entering in commands at the pager prompt. You can enter normal game commands by prefixing them with a ! symbol. When the command finishes, you will return to the pager prompt. If the screen gets cluttered, you can type 'r' and press return to redraw the current page.


Function List

abs() acos() add() alttemp() ascii() asin() atan()
avgtemp() band() base() between() bitmap() bor() bxor()
canequip() ceil() center() chapter() children() chr() class()
cmds() comp() concid() cond() config() controls() cos()
cpu() create() credits() csi() date() dbtop() dec()
degrees() delete() dice() div() e() edit() entrances()
eq() eqvalue() esc() exp() extract() fadd() fdiv()
fill() findsp() first() flags() flip() floor() fmul()
foreach() fsub() gender() get() gettemp() gt() gteq()
guild() has_a() home() host() idle() if() ifelse()
immortal() inc() input() int() inzone() is_a() items()
lag() land() lattr() lattrdef() lcon() lcstr() level()
lexits() link() linkup() ljust() ln() lnum() loc()
log() lor() lt() lteq() lwho() lxor() match()
mglvl() mid() mod() modify() moonphase() mudname() mul()
name() neq() nextexp() not() num() objmem() oexit()
okitem() onfor() oper() output() owner() parents() parse_lock()
pi() playmem() plcon() pnum() port() pos() pow()
powers() race() rainbow() rand() randexit() rank() relay()
relics() remove() repeat() rest() rjust() rmatch() room()
round() s() scramble() secure() setq() shl() shr()
sign() sin() soul() spc() sprslt() sqrt() stats()
strcat() strlen() sub() switch() s_as() tan() time()
timeofday() tma() tmf() tml() tms() truth() type()
ucstr() unparse() uptime() v() version() wcount() wdate()
weapon() weight() wmatch() wordflip() wtime() xtime() zone()
zwho()


abs(<number>)

Returns the absolute value of <number>. Examples:

abs(-4):4
abs(2):2


acos(<number>)

Returns the arc-cosine of <number>, expressed in radians.


add(<number>,<number>)

Returns the sum of two integers.


alttemp()

Returns the current temperature difference from the average daily temperature from the weather almanac.

See also: weather, avgtemp(), gettemp(), wtime()


ascii(<character>)

Returns the ASCII value of <character>.

See also: chr()


asin(<number>)

Returns the arc-sine of <number>, expressed in radians.


atan(<number>)

Returns the arc-tangent of <number>, expressed in radians.


avgtemp()

Returns the current average daily temperature from the weather almanac.

See also: weather, alttemp(), gettemp(), wtime()


band(<number>,<number>)

Returns the value of a Binary AND operation between two numbers.


base(<number>,<oldbase>,<newbase>)

Converts <number> from <oldbase> to <newbase>. Bases must be numbers between 2 and 36, and the digits in <number> must be in the range of <oldbase>. Common bases are 2-Binary, 8-Octal, 10-Decimal, and 16-Hexadecimal. Digits above 9 are marked as A (=10) through Z (=35). Examples:

base(127,10,16):7f
base(101011,2,10):43


between(<number>,<low>,<high>)

Returns 1 if <number> is between <low> and <high> or equal to either <low> or <high>. Returns 0 otherwise.


bitmap(<object>,<bitpos>,<size>)

This returns a number from the combat system bitmaps defined on <object>. A valid <bit position> can be from 0 through 4095. A valid <size> can be from 1 through 32. For example, the Hit Points marker on an object is defined as a 32-bit number, using bit positions 256 through 287. To retrieve it, use bitmap(object,256,32). There is also the opportunity of doing soul(object,level) to get the same result. The bitmap() function is mainly used for storyline variables in the bit position range of 2048 and higher, which are undefined by the combat system and reserved solely for storyline purpose. In terms of inheritance, children retain all bitmaps above 512 from their parented objects, and only bit positions 0 through 511 may be modified on objects set with the Monster flag.

See also: @addparent, Inheritance, Monster, soul()


bor(<number>,<number>)

Returns the value of a Binary OR operation between two numbers.


bxor(<number>,<number>)

Returns the value of a Binary XOR operation between two numbers.


canequip(<player>,<item number>)

Returns 1 if <player> is able to equip a specified <item number> of a piece of equipment from the item database. Returns 0 otherwise.


ceil(<number>)

Returns the least integral value greater than or equal to <number>.


center(<string>,<width>)
center(<string>,<width>,<fill>)

This function will center a string in a field <width> characters wide, using <fill> characters for padding on either end. If no fill character is specified, then a space is used. If the length of <string> is longer than <width> characters, then the rightmost end of the string will be truncated. Examples:

  • say center(a,5,-)
  • say center(*BAMF*,15)

    See also: fill(), ljust(), rjust()


    chapter(<number>)

    Returns the complete name of the storyline chapter. Number can be 0 for Prologue and 255 for Epilogue.

    See also: @chapter


    children(<object>)

    Returns a list of database reference numbers of all of the children of <object>.

    See also: parents()


    chr(<number>)

    Returns a character equivalent to the ASCII code for <number>. Only wizards are allowed to use control characters in this function. Example:

    chr(65):A
    See also: ascii()


    class(<player>)

    Returns the name of the class hierarchy that <player> belongs to.

    See also: rank()


    cmds(<player>)

    Returns the number of commands a player has executed since logging on.


    comp(<string1>,<string2>)

    Compares two strings. It returns 0 if they are the same, -1 if string1 is less than/preceeds alphabetically string2, 1 otherwise. Strings are case-sensitive: all capital letters precede lowercase letters.


    concid(<player>)

    Returns the connection-id number of a player that is currently logged on.


    cond(<player>)

    Returns a space-separated list of all conditions set on <player>. If the player has no conditions, this function will return a null string. For those with the Combat wizard power, this function also returns all innate relics and wish settings on the player.


    config(<variable name>)

    Returns the value stored in the specified system configuration variable. See @list config for details.


    controls(<object1>,<object2>,<power>)

    Returns 1 if <object1> has a certain wizard <power> over <object2>, otherwise 0. <power> can only be any of the powers listed using @list powers.


    cos(<number>)

    Returns the cosine of <number>, which should be expressed in radians.


    cpu()

    Returns the current CPU Usage as a percentage in floating-point format. CPU Usage is updated every 60 seconds. This value reads 0 for two minutes after the game turns on.

    See also: lag()


    create(<object>)

    Returns the creation time of the object in seconds format (since Jan 1 1970), used with time().

    See also: modify(), time()


    credits(<player>)

    Returns the amount of money <player> is currently carrying on hand.


    csi(<code>)

    Returns a string of the format `ESC <code>'. Only wizards may use this function.

    See also: esc()


    date()
    date(<seconds>)

    Returns a string in the form of `Dayofweek, Month Day, Year'. If <seconds> is specified, it will calculate using the number of seconds since January 1, 1970. The date displayed depends on your current timezone settings. See 'help +tzone' for more information.

    See also: +tzone, time(), xtime()


    dbtop()

    Returns the #dbref of the highest object number in the database.


    dec(<number>)

    Returns <number> minus 1. <number> may also contain a string, however it must end in either a positive or negative integer. Examples:

    dec(4):3
    dec(Table-30):Table-31
    See also: inc()


    degrees(<x,y>)

    Returns a compass pointing from 0 to 359.99 in the direction of <x,y> from coordinate <0,0> on a linear graph. For example, 0 is directly positive on the Y-Axis, and 270 is directly negative on the X-Axis.


    delete(<string>,<first>,<len>)

    Returns a modified <string>, with <len> characters starting after the character at position <first> deleted. In other words, it copies <first> characters, skips <len> characters, and then copies the remainder of the string. Example:

    delete(abcdefg,3,2):abcfg


    dice(<number1>,<number2>)

    Imitates a standard random roll of dice. <number1> determines how many times one die should be rolled, and <number2> is the highest number found on the die. Example:

    dice(2,6):Roll of 2 standard dice.


    div(<number>,<number>)

    Returns the integer quotient of the first number divided by the second number.

    See also: mod()


    e()

    Returns the value of e, (2.718281828).


    edit(<string>, <search>, <replace>)
    edit(<string>, $, <string to append>)
    edit(<string>, ^, <string to prepend>)

    This functions in a similar way to the @edit command. Instead of taking an attribute from an object, it takes an arbitrary string. The first form of the function searches <string> for <search> and replaces it with <replace>; the other two forms append and prepend text to <string>, respectively. Examples:

    edit(This is a test,is,Is):ThIs Is a test
    edit(abcdefg,^,123):123abcdefg
    See also: @edit


    entrances(<room>)

    Returns a space-separated list of all of the exits leading into <room> in #dbref format. You must own the room to find its entrances.


    eq(<number>,<number>)

    Returns 1 if both numbers are equal, 0 otherwise.


    eqvalue(<player>,<item#>,<type>)

    Returns the amount of Gold Pieces that a particular weapon, armor, or item, specified by <item#>, is worth. This function depends on the <player> for any special skills learned that may affect the outcome of the appraisal. <type> is an integer determining what kind of value to display. Type=0: Merchant Shop Value of the item. Type=1: Item Sell Value. Type=2: Sell Value on an Equipped Item.


    esc(<code>)

    Returns a string of the format `ESC [ <code>'. Only wizards may use this function.

    See also: csi()


    exp(<number>)

    Returns e to the power of <number>.


    extract(<string>,<first>,<length>)
    extract(<string>,<first>,<length>,<delimiter>)

    Returns a string of <length> words, starting with the word <first>. Words are numbered starting from 1. If a <delimiter> is specified, words are counted by a symbol rather than a space. Examples:

    extract(This is a test,1,2): This is
    extract(West-North West-North,1,2,-): West-North West
    See also: remove()


    fadd(<number>,<number>)

    Returns the sum of two floating point numbers.


    fdiv(<number>,<denominator>)

    Returns the quotient of the two numbers. Note that the div() and mod() functions cannot be used on floating point numbers.


    fill(<string>,<width>)

    This function returns a numeric string right-justified in a field of zeroes that are <length> characters in total size. The numeral can be an integer or floating-point constant. If the length of <string> is longer than <width> characters, the string returned is not truncated. Examples:

  • say fill(176,5)
  • say fill(3.8+e03,2)

    See also: center(), ljust(), rjust()


    findsp(<technique name>)

    Returns the matching number of an item, equipment, spell, or special technique or skill in the item database. The name must be typed out in full.


    first(<string>)
    first(<string>,<delimiter>)

    Returns the first space-separated word of <string>. If specified, a <delimiter> can be used instead of spaces to determine words.

    See also: rest()


    flags(<object>)

    Returns a string consisting of the flags of <object>, just as they would be seen after their database reference number in an examine. The result is only just one word.


    flip(<string>)

    Returns <string> with all of its contents flipped backwards from right to left.

    See also: wordflip()


    floor(<number>)

    Returns the greatest integral value less than or equal to <number>.


    fmul(<number>,<number>)

    Returns the product of two floating point numbers.


    foreach(<word list>,{<function>})

    This function prints out a space-separated list of results from <function>, which is executed for each word in <word list>. Like @foreach, the word appears as %0. Example:

    foreach(3 7 -2 8 1,{[add(v(0),13)]!}): 16! 20! 11! 21! 14!
    See also: oper()


    fsub(<number>,<number>)

    Returns the subtraction result of two floating point numbers.


    gender(<playername>)

    Returns 0 if the gender of <playername> is male, 1 if the gender is female, or #-1 if the object is not a player.


    get(<object>,<attribute>)

    Returns the string stored in the attribute of <object>. You may get the attributes of objects you control, the attributes you control on other objects, and publicly accessible attributes.


    gettemp()

    Returns the calculated current air temperature as shown in the weather almanac.

    See also: weather, alttemp(), avgtemp(), wtime()


    gt(<number1>,<number2>)

    Returns 1 if <number1> > <number2>, 0 if otherwise.


    gteq(<number1>,<number2>)

    Returns 1 if <number1> >= <number2>, 0 if otherwise.


    guild(<player>)

    Returns the name of the primary guild that <player> belongs to. Players not yet belonging to a guild are considered Adventurers.


    has_a(<room>,<parent>)

    Returns a space-separated list of database reference numbers of all of the objects in <room> that are parented to <parent>. You must own the specified room.


    home(<player>)

    Returns the database reference number of the room <player> is saved at. For objects, this is merely an alias for the link() function.

    See also: home, save, link()


    host(<playername>)

    Returns the hostname of a connected player. You need wizard powers to see hostnames of users other than yourself.


    idle(<playername>)

    Returns the idle time of a connected player in seconds.


    if(<expression>,<string>)

    This function evaluates <expression>. If the expression is true (being anything but a 0, #-1, or null), the function will return <string>, otherwise it will return an empty string.

    See also: ifelse(), truth()


    ifelse(<expression>,<string1>,<string2>)

    This function evaluates <expression>. If the result of the expression is true (being anything but a 0, #-1, or null), the function will return <string1>. If instead false, it will return <string2>.

    See also: if(), truth()


    immortal(<object>)

    Returns 1 if an <object> or player holds any immortal rank and powers, 0 if the object is owned by a normal player character.


    inc(<number>)

    Returns <number> plus 1. <number> may also contain a string, however it must end in either a positive or negative integer. Examples:

    inc(3):4
    inc(Table-30):Table-29
    See also: dec()


    input(<playername>)

    Returns the number of bytes inputted to the game by a player online. You need wizard powers to check other players' session statistics.


    int(<number>)

    Returns the integer form of <number>, truncating (not rounding) any digits after the decimal point.

    See also: round()


    inzone(<zone object>)

    Returns a space-separated list of database reference numbers for each room that is linked to <zone object>. You must have ownership permissions on the zone object.


    is_a(<object>,<parent>)

    Returns 1 if <object> is parented to <parent>, 0 if otherwise. You must own <object> to be able to check its parents.


    items(<player>)

    This wizard function returns a space-separated list of the numbers of each item or equipment in the inventory of <player>. It only lists one number for each different item. If a player holds more than one of a specific item, the quantity will be displayed after the number separated by a colon. This function works on rooms and objects as well as players.


    lag()

    Returns the current average TinyMare runtime lag, in seconds, between checking for commands on the port. Normal average lag is 0.10 seconds. This value may be high if the game is under serious usage, and this value can also be used to check if the lag is coming from the game itself or instead from your network connection to the game.

    See also: cpu()


    land(<expression>,<expression>)

    Logical And. Evaluates the boolean expressions and returns 1 if both of them are true.


    lattr(<object>)

    Returns a space-separated word list of all of the visible attributes set with a value on <object>.


    lattrdef(<object>)

    Returns a space-separated word list of all the user-defined attributes created on <object>, whether they have a value set or not. You must be able to own the object to list its attributes.


    lcon(<room>)

    Returns a list of the database reference numbers of each object located in <room>. If you do not own the room, only those objects which you control or those which are visible in the current room of the invoker will be listed.


    lcstr(<string>)

    Takes a string and transforms all text within it to lowercase characters. Anything that is not a letter is not affected.


    level(<number>)
    level(<playername>)

    Returns the proper name of a particular level, characterized by <number>, just as it appears in the who list. Whether the level name returned is Male or Female is based on the gender of the invoker. Level names below 20 are shown by numbers. You can also find the levelname of another <player> in the game with this function.

    See also: who


    lexits(<room>)

    Returns a list of the database reference numbers of each exit leading from <room>. If you do not own the room, only those exits which you control or those which are visible in the current room of the invoker will be listed.


    link(<object>)

    Returns the database reference number to which <object> is linked to. Rooms and zones, if unlinked, will return #-1. You must own the object to determine its link.


    linkup(<room>)

    Returns a list of database reference numbers of each object that is linked to <room>, whether it is a player, thing, exit, or zone. Only the objects you own will be shown in the list.


    ljust(<string>,<width>)
    ljust(<string>,<width>,<fill>)

    This function pads a string in a field of size <width> characters with trailing spaces so that the string is left-justified. If no fill character is specified, then a space is used. If the length of <string> is longer than <width> characters, then the rightmost end of the string will be truncated. Examples:

  • say -[ljust(foo,6)]
  • say =[ljust(bar,5,.)]=

    See also: center(), fill(), rjust()


    ln(<number>)

    Returns the natural log of <number>.


    lnum(<amount>)
    lnum(<amount>,<start value>,<stepping>)

    Generates a space-separated list of counting numbers starting from 0 up to <amount - 1>, for a total of <amount> numbers. A different <start value> other than 0, or a different <stepping> other than 1 may also be specified. Examples:

    lnum(4):0 1 2 3
    lnum(4,7,2):7 9 11 13


    loc(<object>)

    Returns the database reference number of the location of <object>. The object must be either in a room set with the Jump_Ok flag, in a room that you own, or be owned by you in order to view its location.


    log(<number>)

    Returns the logarithm (base 10) of <number>.


    lor(<expression>,<expression>)

    Logical Or. Evaluates the boolean expressions and returns 1 if either are true.


    lt(<number1>,<number2>)

    Returns 1 if <number1> < <number2>, 0 if otherwise.


    lteq(<number1>,<number2>)

    Returns 1 if <number1> <= <number2>, 0 if otherwise.


    lwho()

    Returns the list of database reference numbers for each user that is online and connected to the game. Any players hidden from the who list will not be listed.


    lxor(<expression>,<expression>)

    Logical Xor. Evaluates the boolean expressions and returns 1 if, and only if, one of the two inputs are true.


    match(<string>,<pattern>)

    This function checks each word in <string>, matching it with <pattern>. The pattern may contain wildcards * and ?, and it may also contain boolean testing functions such as ! < and >. It returns the number of the word that matched (starting at 1), or 0 if no match was found. Examples:
    match(2 7 1 34 8 4,8):5
    match(2 7 1 34 8 4,*4*):4
    match(2 7 1 34 8 4,>3):2
    See also: Wildcards


    mglvl(<player>,<technique>,<number|name>)
    mglvl(<player>,<technique>,<number|name>,<request>)

    Each player has a technique table with different entries for different spells, items, guilds, languages, etc. This function scans the technique table for a particular <technique> type for <number|name>, and returns the Level associated with that particular technique. If <request> is present and nonzero, this function will return the Value associated with that technique instead of the Level. Note that this is the same list that is scanned when typing 'ex me/tech'. This function returns #-1 if the technique does not exist in the player's database. Examples:
    mglvl(me,language,sylvan): Returns the level of the Sylvan language mastered.
    mglvl(me,magic,refresh,1): Returns the number of TP gained for Refresh so far.
    mglvl(me,memorize,1): Returns the room number of Memorize Slot #1.
    mglvl(me,apprentice,3,1): Returns the #Dbref value of Guild Apprentice #3.
    See also: Wildcards


    mid(<string>,<first>,<length>)

    Returns a segment of <string>, the <length> characters to the right of the <first> character inward. Note that the first character in a string is numbered zero, not one.


    mod(<number>,<number>)

    Mod returns the remainder of the integer division of the first number by the second.

    See also: div()


    modify(<object>)

    Returns the modification time of the object in seconds format (since Jan 1 1970), used with time().

    See also: create(), time()


    moonphase()

    Returns an integer value between 0 and 7 depicting the phase of the moon. Phases are listed below.
    0-New Moon 4-Full Moon
    1-Waxing Crescent 5-Waning Gibbous
    2-First Quarter 6-Last Quarter
    3-Waxing Gibbous 7-Waning Crescent


    mudname()

    Returns the name of the local TinyMare database.


    mul(<number>,<number>)

    Returns the product of two numbers.


    name(<object>)

    Returns the full name of <object> in the database. Any aliases on an exit will not be shown by this function.


    neq(<number>,<number>)

    Returns 1 if both numbers are NOT equal, 0 otherwise.


    nextexp(<player>)
    nextexp(<level>)

    If a valid <player> is specified, it returns the amount of experience needed by the player to achieve the next level. Otherwise, this function returns the value of total experience points needed for level <level>, an integer greater than 1.


    not(<expression>)

    Takes the boolean value of <expression> and returns its inverse. If <expression> is true, it returns a 0, otherwise it returns 1.


    num(<object name>)

    Returns the database reference number of the first object matching <object name>.


    objmem(<object>)

    Returns in bytes the amount of memory taken up in the database by <object>. Note that the data in attributes is compressed, and comparing object memory values while setting attributes may produce some interesting results.

    See also: playmem()


    oexit(<exit>)

    Returns a list of database reference numbers of all returning exits linked from the destination of <exit> to the exit's source. You must own <exit> to be able to list the returning paths.


    okitem(<string>)

    Returns 1 if <string> is a valid name for an item or technique, 0 if otherwise. This is mainly used with creating new user-defined equipment for the game.

    See also: @forge


    onfor(<playername>)

    Returns the total session time of a connected player in seconds.


    oper(<word list>,<start value>,{<function>})

    This function performs <function> for each word in <word list>. The function relies on %0 as the current word being processed. However, another variable %1 is also used as the result of the previous function with the previous word. In this manner, only the last value calculated is returned by this function. <start value> can be used to set %1 at initialization, before the first word is processed by <function>. Examples:
    oper(lnum(5),0,{[add(v(0),v(1))]}):10
    oper(b c d e,a,{%0%1}):edcba
    See also: foreach()


    output(<playername>)

    Returns the number of bytes of output sent by the game for a player's current session online. You need wizard powers to check other players' session statistics.


    owner(<object>)

    Returns the database reference number of the owner of <object>.


    parents(<object>)

    Returns a list of database reference numbers of all of the children of <object>.

    See also: children()


    parse_lock(<player>,<privs>,<string>)

    This boolean function mimics checking of a locked attribute for passage. <string> is any normal attribute value with functions and boolean symbols consisting of the lock. <player> is the object trying to pass the lock, and all functions and priviledges used within the lock are executed from the viewpoint of <privs>. You must own <privs> for this to properly succeed. A 1 is returned if <player> passes the lock, otherwise a 0 is returned.


    pi()

    Returns the value of pi, (3.141592654).


    playmem(<player>)

    Returns in bytes the total amount of memory taken up in the database by <player> and all of the objects he or she owns.

    See also: objmem()


    plcon(<room>)

    Returns a list of database reference numbers for each player that is located in <room>. If you do not own the room, only those players visible in the current room of the invoker will be listed.


    pnum(<playername>)

    Returns the database reference number of <playername>, which can either be the partial name of a player currently connected, the full name of any player in the game, or a player's alias.


    port(<playername>)

    Returns the value of the active unix port of a connected player. You need wizard powers to see the port values of users other than yourself.


    pos(<substring>,<string>)

    Returns the first character position that <substring> is found in <string>. The first character is regarded as a 1. If no matches are found, it returns 0.


    pow(<number>,<exponent>)

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


    powers(<object>)

    Returns a space-separated list of the immortal powers granted to <object>.


    race(<player>)

    Returns the name of the race that <player> belongs to. Players in the process of creating their characters will be shown with a ? for their race.


    rainbow(<string>)
    rainbow(<string>,<starting color>)

    This wizard function takes a string and returns its resulting output using the rainbow color generator which cycles through 12 different shades of colors and hilites. If <starting color> is present, it will attempt to begin the cycle with that shade. A description of starting colors can be seen in 'help @color'.

    See also: @color


    rand(<number>)

    Returns an random integer between the range 0 and <number - 1>. If <number> is less than 1, it always returns 0.


    randexit(<object>)

    Returns a database reference number for a random accessible exit found in the location of <object>. If there are no obvious exits or all exits are locked from the object, it returns #-1.


    rank(<player>)

    Returns the rank number of the class hierarchy that <player> belongs to. A general hierarchy begins with 1 as a normal player character and 5 as a maintainer with all the abilities to run the game.

    See also: class()


    relay(<object>)

    Returns a list of database reference numbers of all the rooms that <object> is relaying its messages to.


    relics(<player>)

    This wizard function returns a space-separated list of innate race effects, equipped relic conditions, or special magical enchantments currently possessed by <player>.


    remove(<string>,<first>,<length>)
    remove(<string>,<first>,<length>,<delimiter>)

    Returns the remainder of <string> after removing <length> words starting at <first>. Words are numbered starting from 1. If a <delimiter> is specified, words are counted by a symbol rather than a space character. Examples:
    remove(This is a test,3,1): This is test
    remove(West-North East-South,2,1,-): West-South
    See also: extract()


    repeat(<string>,<number>)

    This function simply repeats the specified <string>, <number> times. No spaces are inserted between each repetition. Example:
    repeat(Test,5): TestTestTestTestTest


    rest(<string>)
    rest(<string>,<delimiter>)

    Returns all except the first word of <string>. If specified, a <delimiter> can be used instead of spaces to determine words.

    See also: first()


    rjust(<string>,<width>)
    rjust(<string>,<width>,<fill>)

    This function pads a string in a field of size <width> characters with leading spaces so that the string is right-justified. If no fill character is specified, then a space is used. If the length of <string> is longer than <width> characters, then the leftmost end of the string will be truncated. Examples:

  • say -[rjust(foo,6)]
  • say =[rjust(bar,5,.)]=

    See also: center(), fill(), ljust()


    rmatch(<object>,<match phrase>)

    This function performs a remote-match using <object> as its central viewpoint. <match phrase> is the prefix or full name of an object, 'here', or 'me', used in finding another object in the room or vicinity of <object>. A database reference number is returned, or #-1 if no object matches. You must be able to control <object> to match things from its viewpoint.


    room(<object>)

    Traces back the database reference number of the prime room of <object> if it were nestled down in the location of multiple objects inside each other. If an object is inside itself or no room is to be found at the top of the stack, this function instead returns #-1.

    See also: loc()


    round(<number>)
    round(<number>,<decimal places>)

    Rounds a floating point number to its nearest integer value, or a number of decimal places (up to 9) if specified.

    See also: int()


    s(<expression>)

    Performs pronoun substitution and function evaluation on the given expression, from the point of view of the object using the function. Its main purpose is to be used in the middle of other functions or expressions. Example:
    s({%N - [v(level)]}):God - 1000
    See also: Pronouns


    scramble(<string>)

    This function scrambles a string, returning a random permutation of its characters. For example, "[scramble(abcdef)]" might return "cfaedb". Note that this function does not pay any attention to spaces or other special characters; it will scramble these characters just like normal characters.


    secure(<string>)

    Returns a secure version of <string> with all dangerous characters removed. All occuraces of ( ) [ ] { } $ % , \ ^ and ; will be replaced by space characters. This can make output slightly ugly, but it's a good way of preventing other people from doing nasty things with your objects.


    setq(<number>,<string>)

    The setq() function is used to copy strings into local registers. It returns a null string; it is a purely "side effect" function. There are ten local registers, numbered 0 through 9. They are cleared at the start of each new queue cycle (i.e. whenever a new command is evaluated). They are most useful for storing complex function evaluations which are used repeatedly within a single command. <number> must be one of the local registers, from 0 through 9. Registers set via setq() can be accessed using the v() function or using the percent-substitution of %0 through %9. Example:


    shl(<number>,<count>)

    Performs a leftwards bit-shift on <number>, shifting it <count> times. This is equivalent to mul(<number>,pow(2,<count>), but much faster.


    shr(<number>,<count>)

    Performs a rightwards bit-shift on <number>, shifting it <count> times. This is equivalent to div(<number>,pow(2,<count>), but much faster.


    sign(<number>)

    Returns the sign of a number; 0 if the number is 0, 1 if the number is positive, and -1 if the number is negative.


    sin(<number>)

    Returns the sine of <number>, which should be expressed in radians.


    soul(<object>,<combat attribute>)

    Returns the value of <combat attribute> on <object>. A combat attribute is one that is saved in bitmap format on each player character or object with a valid fight status set. The list of combat attributes available may be displayed by typing @list soul. Invalid combat attributes will return a value of 0. You may only view the values of objects you control.

    See also: bitmap()


    spc(<number>)

    Returns a string with a <number> of blank spaces.


    sprslt(<player>,<item#>,<field>)

    This returns an attribute of a skilled technique specified by the <item#>, held by <player>. The type of string returned depends upon the <field>, an integer number designating which attribute of the item is to be displayed. Due to the developmental stages of the combat system, the meaning of attributes and fields are unknown and may change without prior notice.


    sqrt(<number>)

    Returns the square root of <number>. <number> cannot be negative.


    stats()
    stats(<player>)

    Returns a space-separated list of the actual database breakdown count, as shown by using the @stats command. If a <player> is specified, it will obtain the database usage of all the objects owned by that player. Only wizards may view the statistics of another player.

    See also: @stats


    strcat(<string>,<string>)

    Concatanates two strings together, with no space between them.


    strlen(<string>)

    Returns the length in characters of <string>.


    sub(<number>,<number>)

    Returns the integer subtraction of two numbers.


    switch(<expression>,<result1>,<string1>,..,<default string>)

    This function matches <expression> against the <result>s, returning the corresponding <string>. If nothing is matched, the <default string> is returned, or an empty string is returned if no <default string> is present. Wildcard patterns are allowed. There may be a maximum of ten arguments total to the function. Examples:

    See also: @switch


    s_as(<expression>,<cause>,<player>)

    Performs pronoun substitution and function evaluation on the given expression, using the priviledges and point of view of <player> and imitating the cause of the function from <cause>. Like s(), this enables you to assign values to %# and %! as <cause> and <player>, respectively. You must be able to control both <cause> and <player> to perform an accurate substitution. Example:
    s_as({%N(%#) -> %U(%!)},me,here): Gandalf(#14) -> Gandalf's Patch(#2)
    See also: Pronouns, s()


    tan(<number>)

    Returns the tangent of <number>, which should be expressed in radians.


    time()
    time(<seconds>)

    Returns an alphanumerical string of the current system date and time. If <seconds> is specified, it will calculate using the number of seconds since January 1, 1970. The time displayed depends on your current timezone settings. See 'help +tzone' for more information.

    See also: +tzone, date(), xtime()


    timeofday()

    Returns 1 if the game time is currently during the day, and 0 if it is instead during the night (after sunset and before sunrise).


    tma(<seconds>)

    Returns a string displaying the number of <seconds> using all components of time, such as '3h, 25m, 12s'.


    tmf(<seconds>)

    Returns a string displaying the number of <seconds> in a full word form of the most significant part of the time, such as '39 minutes', 'an hour', or '2 days'.


    tml(<seconds>)

    Returns a string displaying the number of <seconds> in the long form, such as '00:45' or '1d 13:52'.


    tms(<seconds>)

    Returns a string displaying the number of <seconds> in the short form, such as '4s' or '13m'.


    truth(<expression>)

    Evaluates <expression> and returns 1 if the result is true, or 0 if it is false. An expression is false if the result is either an empty string, a 0, or a #-1. All other results are considered as true.


    type(<object>)

    Returns the type of <object> in word form. Types can be one of the following for any one object: Room, Thing, Exit, Player, Zone, or Garbage.


    ucstr(<string>)

    Takes a string and transforms all text within it to uppercase characters. Anything that is not a letter is not affected.


    unparse(<object>)

    Displays the name, database reference number, and flags of <object> for standard output. If the invoker of this function has wizard powers, this will also print the object title in color depending if the viewer's terminal is set to ANSI mode via use of the +term command.

    See also: +term


    uptime()

    Returns a value representing the number of seconds since the game has last completely restarted (not since the last reboot).


    v(<attribute>)

    This function behaves exactly like get(me,<attribute>), soul(me,<combat attribute>), or performs pronoun substitution on a symbol or character. If a valid attribute is found on the invoker, this function will print its contents. Next, it checks for any available pronouns such as v(#) which returns the cause of the function or v(n) which returns the object name of cause. Lastly, if no pronouns or attributes match, this function checks any combat attributes on the player and returns the value of an integer. If nothing matches, v() returns 0.

    Unlike pronoun substitution using %, data in v() is not made secure. None of the dangerous characters such as ; and [ ] are stripped out, and they can be hazardous to your program if v() is not used within other functions but instead isolated by itself. If you simply must use a [v()], try padding it with a number of % or \ symbols to escape any parsing that might get to it before the actual queue command is executed.

    Here is a list of pronoun symbols available for use with v():

    0..9- Prints one of the 10 local environment registers, behaving much like the pronouns %0 through %9.
    N- Returns the name of the cause of the function, like %N.
    #- Returns the number of the cause of the function, like %#.
    L- Returns the location number of the cause of the function, like %L.
    U- Returns the name of the function invoker, like %U.
    !- Returns the number of the function invoker, like %!.

    Examples:
    v(desc): You see someone special and unique.
    v(hitpoints): 186
    v(n): Gandalf

    See also: Pronouns


    version()

    Returns the current source code version of TinyMare.


    wcount(<string>)
    wcount(<string>,<delimiter>)

    Returns the number of space-separated words in <string>. If a <delimiter> is specified, it uses that instead of a space character to determine words.


    wdate()
    wdate(<seconds>)

    Returns a string in the form of `Dayofweek, Month Day, Year', using the current game time. If <seconds> is specified, it will calculate using the number of seconds since January 1, 0001.

    See also: date(), wtime()


    weapon(<player>)

    Returns the name of the weapon currently being held by <player>. If no weapon is held, the word 'Fists' is returned. If <player> is an object without a fight status, #-1 will be returned.


    weight(<player>)

    Returns the number of grams that <player> is carrying. If <player> is an object, it returns the weight of the object in grams. Weight includes all equipped items, Gold Pieces, and all items currently being carried in the player's inventory.


    wmatch(<string>,<pattern>)

    Returns the number of the word within <string> that matches <pattern> without any wildcards allowed. Words are numbered starting from 1. If <pattern> is not in the string, a 0 will be returned.


    wordflip(<string>)

    Returns <string> with all of its words, excluding text within the word, flipped backwards from right to left.

    See also: flip()


    wtime()
    wtime(<seconds>)

    Returns an alphanumerical string of the date and time according to the current game clock represented in the weather almanac. If <seconds> is specified, it will calculate using the number of seconds since January 1, 0001.

    See also: time(), wdate()


    xtime()

    Returns the current system time in the form of a number of seconds since January 1, 1970. The value returned is a floating point number independent of any timezone, and always refers to the representation of the system clock on which TinyMare resides.

    See also: time()


    zone(<object>)

    Returns a list of database reference numbers of all the zones that are currently linked to <object>.


    zwho(<zone>)

    Returns a list of database reference numbers of all the player characters that are currently located in a room linked to <zone>. All players are shown, no matter if they are online, hidden, or disconnected. You must own the zone object to be able to check for players inside.



    Section 7: Additional Topics



    Topics

    Building Coding Events Fighting Inheritance
    Locks Macros Pronouns Queue Wildcards
    Zones

    Agility Attack Power Condition Critical Rate Defense Power
    Dexterity Endurance Experience Experience Rate Gold Pieces
    Hit Points Intelligence Level Luck Magic Attack Power
    Magic Power Strength Task Points Virtue Wisdom


    building: how to check for costs in creating objs/flags


    Macros

    Along with the wide variety of commands that are available to the average player on the game, TinyMare also supports a quick set of one-symbol macros to allow easier gameplay and manipulation of your character. Each macro symbol is to be typed in as the first character in the line, with an additional message following that symbol. No space is needed between the symbol and the message. The list of available macros is shown below.

    "<message>- Imitates the say command, printing a message prefixed by your name to everyone in the room.
    '<player> <message>- Sends a message to a specific player in the current room, like the to command.
    :<pose>- Poses a message to everyone in the room, prefixed with your name.
    ;<pose>- Poses a message to everyone in the room prefixed with the possessive form of your name.
    #<object number> <commands>- Like @force, this command forces a particular object to execute <commands>. This macro, however, executes the commands instantly rather than putting them into the command queue.
    =<message>- Sends a message to the default +com channel.
    -<message>- Sends a message to the channel of the current party group (see the +party command).
    \<message>- Imitates @emit, sending a message to everyone in the room prefixed by nothing.
    ^<command>- The remark symbol; comments out a coded command from execution.
    &<attr> <object>=<text>- This macro sets <text> on a specified attribute of <object>, performing no parsing on the contents of <text>. See @set for more details on setting attributes.

    There is another macro that may be used in attributes that are to be triggered. This macro is @@, which is intended as a remark between a set of semicolon-separated commands. A remark performs no action or prints no message.


    Zones

    Zones comprise a small area of the world, usually composed of an average of 20-50 rooms. Sector names allow small parts of the world to be geographically defined, according to the land features or towns nearby.

    The link of a global zone is also important acting as the primary point for a particular sector. For outside sectors, the linked room should be located in the most central part of the zone, such as a crossroads or clearing. For all cave or dungeon sectors, the link should be the room that lies directly outside of the cave, or the pointer for exit spells or other teleportation devices. For towns and shrines, this should be the town gate or main entrance found in the sector itself.



    Section 8: System Configuration Variables



    WIZLOCK_LEVEL

    This variable controls the rank of players that are allowed to login to the game. The default setting, 0, allows all ranks to connect. Setting a 1 allows only ranks 1 and above in and disallows normal player characters. Setting this value to a number above the highest rank will give access only to God.

    This variable also controls whether players can create their own characters at the login screen. By setting this value to -1, you allow all players with already existing accounts to log in, but disallow new player creation. A -1 does not turn off Guest account access.

    See also: GUEST_LOGIN


    GUEST_LOGIN

    Controls whether players are allowed to create Guest accounts at the login prompt. A 1 means to turn on Guest creation, and 0 means to disable it. Guest logins are only acceptable when GUEST_PREFIX and GUEST_START are set appropriately.

    See also: GUEST_PREFIX, GUEST_START


    USER_LIMIT

    This value puts a cap on the number of users that can connect to the game through the standard game ports (as defined in run/etc/ports). Wizards can still connect on the admin ports beyond this limit. If this value is 0, then the number of logins is limited by the maximum number of available connections a process can have, as shown in +info cpu.


    INACTIVENUKE

    This value holds the number of days a player can refrain from logging into the game before being marked as Inactive. Every Saturday night, the game will automatically purge the database of inactive players that are not set Inactive_Ok. If this value is set to 0, then no automatic purging will be done, and Wizards must use the @inactivity command to manually delete old players. Setting this value to 1 will turn on standard Inactivity Nuking for a default time period of 6 months.

    If COMBAT is turned on, then the default inactivity period (INACTIVENUKE set to 1) depends on several factors of the player's status: Players who haven't yet passed the opening Prologue chapter get 7 days. Players who haven't gotten to Level 2 get 1 month. All other characters get 6 months.

    See also: @inactivity


    ERR_SIGNAL

    When set to 1, the game will attempt to catch errors with the TinyMARE program, displaying a report to all players online as the problem is encountered. In the case of Infinite Loops or Segmentation Faults, TinyMARE will restart the game engine and reconnect users to the point where the game is playable again. This allows administrators to quickly pinpoint the problematic command and fix it or report it to the TinyMARE maintainer.

    There is a maximum limit of 128 errors that the game will catch before it aborts the server. If this value is set to 0, then no error catching will be performed, and the first problem with the program will terminate the TinyMARE server with a core dump.


    LOG_FAILED_CMDS

    When set to 1, TinyMARE will log all failed commands executed by non-player objects to the logs/playerlog file on the local machine. A failed command is any such command that produces an "Unrecognizable Command" error or random typo message.


    HIDDEN_ADMIN

    When set to 1, all traces of rank distinction between players and administrators will be removed from players' sight. Specifically, @stats will not display the number of players in each rank level, +finger will not show the classname of a player, and the number of administrators logged in will not be shown on the who list. Also, any objects owned by a Wizard will have their Owner: field masked out when a normal player attempts to examine them.


    TIMEZONE

    This value holds the base timezone offset of the machine that the game is running on, in number of hours + or - Universal Coordinated Time (UTC). For example, EST/EDT is -5, PST/PDT is -8, EET is +2, and JST is +9. Use this with the HAVE_DST variable accordingly and TinyMARE will automatically handle timezone adjustments, displaying the correct time to players with a different +tzone set.

    See also: +tzone, HAVE_DST


    HAVE_DST

    This variable must be set to 1 if the system TinyMARE is running on changes the clock for Daylight Savings Time. This variable is required for players to get correct time readouts, and works in conjunction with the TIMEZONE configuration variable.

    See also: TIMEZONE


    DB_FORK

    Set this variable to 1 if you would like TinyMARE to fork() its database saves into the background, allowing for the game to continue serving players while the save takes place. On most modern UNIX machines, this offers no performance decrease and is recommended to be turned on. However, on some older systems, doing a fork() duplicates the entire program contents and can take upwards of several minutes for a large database save to complete. Only for this case should DB_FORK be set to 0.


    DB_LIMIT

    Specifies the maximum number of objects that can be created in the database. When this number is reached, no new objects or players can be created until other objects are destroyed. This is useful to prevent people from accidentally creating objects that clone themselves over and over. The default value of 0 turns off any such limit.


    DB_BACKUP

    This variable determines the number of successive daily database backups that are kept in the db directory. Backups are automatically created on the first database save after midnight of each day, and the database file is appended with the current checkpoint number and compressed.

    If this value is 0, no backups will be kept. This variable must be used in conjunction with DB_EPOCH, which determines the number of days between successive backups.

    See also: DB_EPOCH


    DB_EPOCH

    This value determines the number of days between successive backups when the DB_BACKUP variable is set to 1 or greater. Setting DB_EPOCH to a number less than 1 will still allow backups to take place once per day.

    See also: DB_BACKUP


    RESTRICT_BUILD

    Setting this variable to 1 restricts normal players from building on the game. Specifically, this prohibits the use of @create, @dig, @open, @link, @zone, @clone, and @chown. A player must be set with the Builder flag by a Wizard, or have the Build power, in order to build when the restriction is in effect. This variable only restricts the exit-linking aspects of @link.

    See also: Builder


    RESTRICT_TELEPORT

    Setting this variable to 1 forces a number of restrictions on the game. It is used most when administrators want to limit a players' ability to move around anywhere or bypass certain areas. First, it disables the use of @teleport to any room that is not within a Restricted zone, even if the room is set Jump_Ok. Wizards can choose which zones have the Restricted flag, thereby assigning areas where players can have free reign over teleportation commands, but only within the zone in question. In this manner, players will only be able to reach home if their home resides in the same zone they are currently located in.

    Second, players are not allowed to drop objects in rooms they do not own, unless again, the room is a member of a Restricted zone. Similarly, players cannot force objects to move across boundaries from one zone to another, nor can objects move while carrying players (independent of zone). Wizards can use this to keep players from cluttering public game areas or cheating by moving puppets ahead to scout out the area.

    Players who have the Builder flag or Build power will automatically bypass all restrictions listed above, except in the case of objects moving around while carrying players. Players with the Teleport power will bypass all restrictions listed above, except for being able to @link players to remote rooms, @link exits to "home", and set Droptos on rooms.

    See also: @teleport, Builder, Restricted


    RESTRICT_HASPOW

    Setting this variable to 1 restricts the use of the powers(), controls(), and haspow() functions, such that players without the Examine power will not be able to use them to find out what powers administrators have.


    RESTRICT_HIDDEN

    Setting this variable to 1 prohibits players from changing their @hlock to hide themselves from the who list. With this restriction enabled, the who list will not display the number of hidden players on the game, thus giving an added layer of security for players who have been explicitly set hidden by an administrator.

    Administrators must have the Wizattr power to both set and remove a player's @hlock when RESTRICT_HIDDEN is in effect.

    See also: who, @hlock


    ZONE_COST

    The cost per use of the @zone command to create a zone object.


    ROOM_COST

    The cost per use of the @dig command to create a room, plus the EXIT_COST and LINK_COST for each individual exit opened and linked automatically.


    THING_COST

    The cost per creation of an object in the database, using either @create or @clone.


    EXIT_COST

    The cost per creation of an exit by using the @open command. An added LINK_COST is applied if the exit is to be linked to a room.


    LINK_COST

    The cost per use of the @link command to link an exit to another room. Using @link on anything but an Exit is free of charge.


    SEARCH_COST

    The cost per use of the @search command on any number of objects.


    FIND_COST

    The cost per use of the @find command on any number of objects.


    PAGE_COST

    The amount of money charged for each player a message is directly sent to using the page command.


    COM_COST

    The amount of money charged for each use of the +com command to talk on a channel. This is also the amount charged for talking on a +party channel when combat is turned on.


    ANNOUNCE_COST

    The cost per use of the announce command, which sends a message to all players currently online.


    MAIL_COST

    The amount of money charged for each player that a message is locally sent to using the +mail subsystem. A local +mail message is one sent to a player on the current game, rather than a player on a remote TinyMARE or to a valid internet email address.


    NEWS_COST

    The amount of money charged for each post to a newsgroup by using the +news command.


    EMAIL_COST

    The amount of money charged for sending a +mail message to an address external to TinyMARE, such as an alternate MARE or to an internet email address. Because of the overhead involved, the charge is not refunded even if the remote address is unknown or does not exist.


    QUEUE_COST

    This value represents the charge of 1/QUEUE_COST coins for each command that is queued by an object, as opposed to running it interactively. For example, if this value is the default 16, then an object has a 1 in 16 chance of being charged 1 coin per queued command.

    Queue commands consist of executing any @triggers, ! or $ Events, @force, or @wait commands by an object or player. One cannot queue commands when there is no money remaining. The queue is free if this value is set to 0, or if the player has the Queue power.


    LINK_OK_COST

    The cost per enabling of the Link_Ok flag on a room. The charge is not refunded when the flag is removed.


    JUMP_OK_COST

    The cost per enabling of the Jump_Ok flag on a room. The charge is not refunded when the flag is removed.


    ABODE_COST

    The cost per enabling of the Abode flag on a room. The charge is not refunded when the flag is removed.


    DARK_COST

    The cost per enabling of the Dark flag on a room or exit. This charge is not applied when setting an object or player Dark.


    HEALING_COST

    The cost per enabling of the Healing flag on a room. The charge is not refunded when the flag is removed.


    ILLNESS_COST

    The cost per enabling of the Illness flag on a room. The charge is not refunded when the flag is removed.


    OCEANIC_COST

    The cost per enabling of the Oceanic flag on a room. The charge is not refunded when the flag is removed.


    SHAFT_COST

    The cost per enabling of the Shaft flag on a room. The charge is not refunded when the flag is removed.


    WALL_COST

    The cost per enabling of the Wall flag on a room. The charge is not refunded when the flag is removed.


    MAX_OUTPUT

    This is the maximum number of characters of output a player can accumulate in a single time-frame. A time-frame describes when the game runs all queued commands, reads input from all players connected, and sends output to all connections. Output from commands are generally saved in a buffer to be sent out all at once at the end of the time-frame. If new output would cause the amount of buffered output to exceed this parameter, then the oldest pending output is discarded and an «Output Flushed» message is displayed in its place.


    QUEUE_QUOTA

    The total number of commands that an object can have in the queue at a single time. When an object reaches this limit, the object is set Haven and the message "Run away object" is sent to the object's owner. This has no effect if the owner of the object has the Queue power.


    MAX_PLAYER_WAIT

    The maximum number of @wait commands that can be in the queue before an additional @wait issued by a player is refused. For security reasons, this value should be set to half that of MAX_WIZARD_WAIT, which has the same meaning but for Wizards instead of players.

    See also: @wait, MAX_WIZARD_WAIT


    MAX_WIZARD_WAIT

    The maximum number of @wait commands that can be in the queue before an additional @wait issued by a Wizard is refused. This variable is separate from MAX_PLAYER_WAIT and should be set higher such that players cannot flood the @wait queue to break code set on Wizard objects. Administrators need the Queue power to be classified under the MAX_WIZARD_WAIT category.

    Setting both MAX_PLAYER_WAIT and MAX_WIZARD_WAIT to 0 will prevent any @wait commands from being queued. This is not recommended.

    See also: @wait, MAX_PLAYER_WAIT


    FUNC_RECURSION

    This directive sets the maximum number of nested function calls that can be executed before the function call is aborted and the string "#-1 Too many levels of recursion." is returned. Normally this is not a problem, but functions such as s_as() can otherwise be used to cause infinite recursion.

    See also: MAX_FUNCTIONS


    MAX_FUNCTIONS

    This value represents the total number of functions that can be executed by the parser for a single command, excluding percent-substitutions. If the function limit is exceeded, the string "#-1 Too many functions." is returned, and function loops such as foreach() and oper() will stop processing input.

    See also: FUNC_RECURSION


    LOCK_LIMIT

    The total number of locks that an object @lock can reference, either sequentially or recursively. When this limit is reached, all additional locks in the same reference point will immediately fail. This limit is necessary because locks can reference additional attributes on other objects for checking, and this can be done in a cyclic or recursive manner. The owner of an object's @lock will be notified at each attempt when the limit has been reached.

    See also: @lock


    DUMP_INTERVAL

    Specifies the time in seconds between automatic database dumps. If a database save fails, an error message will be reported to all players online and the next save will be scheduled 5 minutes later. If 10 successive saves fail, the game will attempt to save without forking into the background so that additional errors can be reported in the logs.

    A value of 0 disables database checkpointing, forcing administrators to manually use the @dump command to save the database. This option is not recommended, since any failure in power or uncaught Segmentation Fault can cause the TinyMARE process to abort, and any changes since the last save will be lost. Manually saving the database before a @reboot or @shutdown is not necessary.

    See also: @dump, @reboot, @shutdown


    WEATHER_INTERVAL

    Specifies the time in seconds between successive Weather System updates. Each update changes the current cloud cover slightly, according to the game's weather patterns and predictions. Players who are in rooms designated Outside will be notified of the current cloud cover and any changes in weather (for better or worse). This update will also print to everyone online any sunrise or sunset messages, depending on the time of day and the current season.

    In addition, if COMBAT is turned on, this variable determines how often a players' sickness level will increase or decrease when they are outside in rainy or cold weather.

    See also: weather


    ATIME_INTERVAL

    Specifies the interval of time in seconds of how often the game will trigger the @atime attribute on a single object. When TinyMare is turned on, a loop counter is initialized at object #0. Every second, TinyMare will increment that counter and execute enough @atime attributes such that it will complete the entire object database when ATIME_INTERVAL seconds have lapsed. When the counter reaches DBTOP, it will reset itself back at #0 and begin the process over.

    In its loop iterations, TinyMare will skip all objects that do not have an @atime set, skip all HAVEN objects, and skip all players who are not currently connected. The game will only process a set number of objects per second based on the total database size. For example, if there were 1000 objects in the database and the ATIME_INTERVAL was set to 60 (once per minute), then at most 17 @atime attributes will be triggered per second (17*60 = 1020). The current object being processed can be viewed on the +info game screen.

    The ATIME_INTERVAL also controls how often objects automatically move around the realm when it has the Wander flag set. The same incremental counter is used to determine which object should move next.

    See also: @atime, Wander


    TIMEOUT_LOGIN

    Specifies the number of seconds a player can remain idle at the login screen between typing two commands. Idle checks are made once per minute, and the game will instantly disconnect the player if idle for longer than this amount.

    See also: LIMIT_LOGIN, LIMIT_SESSION, TIMEOUT_SESSION


    TIMEOUT_SESSION

    Specifies the number of seconds a player can remain idle when connected to the game, either after putting in their password or actually appearing on the who list. A player will be instantly disconnected if idle for longer than this amount.

    See also: LIMIT_LOGIN, LIMIT_SESSION, TIMEOUT_LOGIN


    LIMIT_LOGIN

    Specifies the total amount of time a player can remain at the login screen before connecting as a player or guest (in seconds). A player will be instantly disconnected if online for longer than this amount. This value is useful to keep players from flooding the number of available connections by staying logged into the game without creating a character.

    See also: LIMIT_SESSION, TIMEOUT_SESSION, TIMEOUT_LOGIN


    LIMIT_SESSION

    Specifies the total amount of time a player can remain connected to their character during normal gameplay, in seconds. A player will be instantly disconnected if connected for longer than this amount. This value is useful if there are a limited number of available connections (as per operating system restriction) and a large number of players wanting to connect to the game.

    See also: LIMIT_LOGIN, TIMEOUT_SESSION, TIMEOUT_LOGIN


    MUD_NAME

    This is the default name of the TinyMARE Game as reported in the +version information and to remote who (RWHO) servers when reporting information. This value is always saved in the database even if netmare is compiled with the correct name.


    TECH_EMAIL

    This value stores the email address of the maintainer of the site. It should be set to a contact address that players can refer to when they forget their passwords, have trouble connecting, or have problems with other players online. This is also the address that appears in the identification string during remote email and HTTP connections.


    MAILHOST

    This value is set to the remote hostname or IP address that TinyMARE uses to send outgoing email. If this value is blank, then the default server "localhost" will be assumed. The host specified must be able to accept SMTP connections on port 25 and have relaying support turned on (except for localhost).

    See also: +mail, EMAIL_ADDRESS


    EMAIL_ADDRESS

    This value specifies the internet email host address from which all outgoing email sent from TinyMARE is to appear. This address is prefixed with the player's name (in lowercase) and a @ symbol. This is the same as the From: address, allowing remote hosts to send a reply back to the player on TinyMARE. This value must be set to allow players to send outgoing email.

    To receive incoming email, a special redirection must be set up with the sendmail program running on the local machine. This program must correctly identify the EMAIL_ADDRESS and redirect it to the TinyMARE game port using a special SMTP connection. See the file lib/smtp/README in the netmare package for details.

    See also: +mail, MAILHOST


    MAIL_EXPIRE

    This value specifies the number of days +mail is to be automatically deleted from the player's mailbox after being read. The number of days corresponds to when the +mail was first read and not when it was first sent. New mail has no expiration date.

    See also: +mail


    PLAYER_START

    This variable holds the database room number where all new player characters will be created. This is also the default room for players to enter when one's current location is being destroyed. If a player's home is destroyed, it will automatically be relinked to this room.

    The room marked by PLAYER_START has other interesting side effects as well. Exit depth statistics (shown by the +info game or @purge commands) are counted by taking the longest path of exits from PLAYER_START. Also, any rooms that are not directly accessible using exits from PLAYER_START, and are not set with the Floating flag, will be classified as Disconnected.

    See also: Floating


    GUEST_START

    This variable contains the database room number where all new Guests will enter the realm. It can be different from the PLAYER_START variable, which contains the location for normal player character creations. This value can only be set to a room dbref#.

    See also: GUEST_LOGIN, PLAYER_START


    GAME_DRIVER

    The Game Driver is a designated object that executes internal Mare commands requiring Wizard privileges. Commands that are too difficult to handle internally are placed into the command queue for automatic or delayed (via @wait) processing by the Game Driver. For example, the Combat System uses the Game Driver to trigger actions on spells, whose commands are not tied to any database object attribute.

    The Game Driver can be any type of object (room, zone, or thing) that is not set Haven. The Haven flag is automatically removed from this object during system startup. Do not assign this value to an object owned by a non-Wizard.


    DUNGEON_CELL

    This dbref# specifies the room to which players will be sent to when they are jailed using the @capture command. For the jail to work effectively, the room should have no unlocked exits and should be set X-Zone to keep players from performing normal game commands and talking on +com channels.

    See also: @capture, X-Zone


    GUEST_PREFIX

    This variable contains a short name, such as "Guest", that will be prefixed to each Guest character that is created. A Guest ID is appended to each guest name, starting from 1, for each consecutive player that connects as a Guest. A Guest's alias is taken from the first letter of the GUEST_PREFIX, appended with the Guest ID.

    This variable is required to be set to allow any Guest access and must begin with a letter.

    See also: GUEST_LOGIN


    START_BONUS

    The amount of money that a new player is given at character creation. A player can use the money to talk to others, buy initial supplies, or save for for later quests.

    See also: GUEST_BONUS


    GUEST_BONUS

    The amount of money that a Guest is given at character creation. This value is necessary if there are simple charges for PAGE_COST and COM_COST, otherwise Guests would not be able to use the page and +com commands to talk to other players. This value can be better judged by remembering that Guests cannot give money to other players, nor can players give money to Guests.

    See also: START_BONUS


    ALLOWANCE

    This is the amount of money players receive each day they connect to the game. Players do not automatically get their allowance if they stay connected longer than 1 day, and they must reconnect in order to get that day's paycheck.


    MONEY_SINGULAR

    Specifies the string to use to describe the money of the realm when it is being referred to singularly. For example, "You found a Penny!" would be displayed if this value is set to "Penny".

    See also: MONEY_PLURAL


    MONEY_PLURAL

    Specifies the string to use to describe the money of the realm when it is being referred to plurally. For example, the phrase "You have <number> Pennies." would be shown in a player's inventory if this value is set to "Pennies" (as long as <number> is not 1).

    See also: MONEY_SINGULAR



    Section 9: Spell Attributes



    Spell Attributes

    Numerical values:

    $applyequip $applyitem $applyskill $areaatk $bitpos $chantrate
    $charges $color $component1 $component2 $component3 $cost
    $damage $density $flags $food $fumbleatk $hardness
    $learn $level $material $maxpercent $maxpower $maxtrain
    $power $resilience $skill $spoil $spoilage $techbase
    $techlevel $techraise $type $value $weight
    Text values:

    $action $caption $cast $command $desc $drop $fail
    $fumble $lock $message $ocast $odrop $ofail $ofumble
    $osucc $remote $succ $tfail $tfumble $tsucc $ufail
    $usage


    $type

    This attribute designates the type of spell, item, technique, or equipment. It can be set to one of the values found in @list types. Values from 0 to 63 denote equipment that can be wielded or worn, values from 64 to 79 denote different types of items, and values from 80 and up deal with techniques, spells, and items that work with magic. The default item type is 0 (Stick).


    $color

    A numerical value representing the color of an item. This $color is more limited than that of the @color attribute, in that items can only be set with a foreground and background color, with the optional ability for rainbow.

    To set a color, begin with the foreground by picking a number from 0 to 7: 0=Black, 1=Red, 2=Brown, 3=Green, 4=Blue, 5=Purple, 6=Cyan, 7=Gray. If you want the foreground color to be hilited, add 8. Next, a background color is chosen by multiplying one of the above numbers from 0 to 7 with 16 (i.e. a blue background is 16*4 = 64), and add this to the number. If you want the capability for a rainbow item, add 128 to the color.


    $value

    This value represents the full price of an item as it would be displayed on a shop menu. Shops will buy items back for half of this amount, or varied depending on a player's skill at bargaining. The maximum possible value of an item is 999,999,999.


    $weight

    This attribute determines the weight of an item in grams. Each player has a limit to the number of items he or she can carry determined by the weight of each item. More lighter items can be held or equipped than heavier items, and lighter equipment is less restrictive in battle. This value is equivalent to the @weight attribute that can be set on an object.

    See also: @weight


    $material

    This attribute is defined for equipment that can be worn. It describes the type of material the equipment is made out of, and judges an equipment's hardness, density, and resilience during physical attacks. Different types of materials can have interesting special properties. This value can be set to one of the entries shown in @list materials. A material is defined to be 0 (Eggshell) by default, but it will not show up on anything else but equipment unless it is nonzero.


    $flags

    This attribute holds special flags that change the behavior of an item. An item's flags are a space-separated list of words from the table below that enable special features. All flags are specific to a group of item types, and some item types may not reflect the actions of a flag.

    Legendary- This flag can be set on a item or equipment to signify its uniqueness in the game. Such an item can not be discarded, given to other players, sold to a shop, or otherwise destroyed in battle.
    Quiet- Setting a usable item or spell Quiet will prevent it from displaying a -< Battle >- message when the technique is used.
    Fragile- An item set Fragile will instantly disappear the moment it is dropped in a room by a player or enemy. Setting the $drop and $odrop attributes will suppress the "shattered" message that players will see.


    $level

    Items, when held in a player's inventory, do not have the Level setting that all Spells and Skills do. This attribute sets the default level of a technique when used as an item rather than casted as a spell. The maximum level of an item can be 10.


    $cost

    This attribute determines the Magic Power or Endurance point cost of casting the spell or executing the technique. Magic Power is only used when the $type of the spell is set to Magic, and Endurance is used when the type is set to Special. A technique can not be used unless the $cost requirement is fulfilled. For all other item types, this attribute has no effect.

    Note: This value is not checked when using a spell/skill as an item. Instead, the number of items in the player's inventory will decrease by 1.


    $chantrate

    This attribute determines the duration of time, in 1/10ths of a second, that it takes to cast a spell or execute a technique. For example, if this value was set to 45, then it would take 4.5 seconds before the spell began. This value only has meaning when the $type is set to Magic or Special. Setting this value to 0 will set the chanting rate to the player's default battle speed, or Vigor. The maximum chantrate an item can have is 255.


    $areaatk

    Specifies the area attack range of a spell or skilled technique. The range determines who and how many targets can get hit with the blast of a single attack. A spell's $areaatk is one of 8 different types, plus an optional set of one or more space-separated flags that modify the range of effect. This attribute is required for all techniques that use the combat system.

    Area Attack Types:
    NoTarget - No target is required for this spell. The spell will reference its caster by default.
    Single - A single target is the victim of the attack.
    Group - References a +party of players or a group of enemies with the same name (or species).
    Objtype - All opponents in the room with the same object type, except for the caster's Group.
    Everyone - Everyone in the room except for the caster's group.
    Global - Everyone in the room except for the caster.
    All - Everyone in the room (including the caster).
    Multi - Range specified at the time of an attack (see below).

    Optional Flags:
    Caster - Automatic spell casting (by enemies, Tactics, or Artifical Intelligence) will default to casting these spells on themselves.
    Attack - Signifies an attack spell. Players cannot cast these spells on themselves.
    Random - Always pick 1 target from the list of members of the Area Attack Type.
    Remove - Removes the specified target from the list of Area Attack members. This is useful if you want to heal everyone in your party except the caster, for example.
    Fumble - Allow for the chance of a fumbled technique. The target of the fumble is determined by a $fumble attribute's area attack.
    NoReflect - Keep a spell/skill from ever becoming reflected by the target.
    Room - Allow the keyword 'here' as a target.
    Thing - Allow anything in the room to be a target, not just those with a Combat Status.
    Exit - Only match exits in the room.
    Items - Only match inventory items, event items, and equipment.
    Invert - Match all living things in the room except listed targets.
    Wounded - Only target wounded enemies.
    When using the Attack Type Multi, players can designate the extent of the spell by using special symbols for a spell's target. If a * symbol prefixes the name of the target, then all targets in the same Group will be attacked. This means all enemies of the same name, or all players belonging to the same +party. If the keyword 'all' is specified, then all opponents will be hit if it is an Attack spell, or all players in the caster's +party (including the caster) will be targetted otherwise.

    See also: $fumbleatk


    $fumbleatk

    This attribute determines the Area Attack Range of a fumbled attack. It is necessary in order to have a different range than would otherwise normally occur if the spell was successful. When an attack fumbles, a random living creature in the room becomes the target of the attack. Then, this value determines the range of the attack, which is one of the Area Attack Types specified in 'help $areaatk'. Only the types have valid meanings for this value. The Optional Flags cannot be used here.

    See also: $areaatk


    $charges

    Specifies the number of enemies a player must defeat before he or she can use this skilled technique again. The number of battles is recorded by a 32-bit integer specified using the $bitpos attribute, and both must be set correctly to enable this feature. This attribute only has meaning for spells and skills, and has no effect on items.

    See also: $bitpos


    $bitpos

    Specifies a 32-bit area in a player's Bitmap where an internal counter will be stored. When a player uses this spell, this value will get set to the number of enemies defeated + the value of this spell's $charges attribute. The player will be unable to use this spell again until he or she has defeated enough enemies to surpass what is stored in this bit position.

    Valid bit positions are anywhere from the beginning of the storyline section (2048) to the end of the bitmap (defined by MAX_BITMAP, usually 4096) minus 32.

    See also: $charges


    $component1

    One of three item numbers that, if specified, are required to be held in a player's inventory for successful casting of a spell or skill. Item numbers must defined in the spell database, and can have any type as long as the player is allowed to hold them. These items are depleted from a player's inventory at the time the spell is cast.

    Up to three components can be specified as 'required' for spell completion. If $component2 and $component3 are also set, then the spell will not succeed unless the player has all three items in his or her possession.


    $component2

    One of three item numbers that are required for the successful casting of a spell or skill. See $component1 for details.


    $component3

    One of three item numbers that are required for the successful casting of a spell or skill. See $component1 for details.


    $applyitem

    This attribute specifies a particular item number that can be held in a player's inventory. The success rate of this spell or technique will increase by 50% if the $applyitem is currently held by the player. The item will not disappear when this spell is cast.

    See also: $applyequip, $applyskill


    $applyequip

    This attribute specifies a particular item number of a piece of equipment that can be worn or wielded by a player. The success rate of this spell or technique will increase by 50% if the $applyequip is currently equipped by the player. The equipment will not disappear or be removed when this spell is cast; it only acts as a modifier.

    See also: $applyitem, $applyskill


    $applyskill

    This attribute specifies that the success rate of the spell or technique can be further enhanced through the application of a skill. This value is set to the number of a skill that can be learned by a player. The success rate of this spell will increase up to 50%, 1 percentage point for every 2% of the skill mastered by the player.

    See also: $applyitem, $applyequip


    $food

    Specifies the number of food points this item will give the player when eaten. This attribute is required for the player to be able to eat the item. The actual amount of food points increased depends on the duration of time since the food was created.

    See also: $spoil, $spoilage


    $spoil

    Specifies roughly the number of minutes a piece of food is good for until it is no longer edible. The amount of spoilage can decrease the number of food points gained when eating this item, or can cause sickness and poisoning if completely rotten. Food spoils faster in damp areas such as a dungeon or swamp, so this value should be only set as a term relative to other food products (e.g. iron rations will last much longer than milk). In towns and shrines, this value equals precisely the number of hours a food product will last. A food item's $spoilage attribute will increment every 15 minutes, no matter if the player holding it has logged off.

    See also: $food, $spoilage


    $spoilage

    This attribute can only be stored on user-defined items held in a player's inventory. It displays the number of minutes of 'spoilage' that has elapsed since the food was created. A piece of food becomes spoiled when this value becomes larger than its $spoil value.

    See also: $food, $spoil


    $hardness

    This attribute determines the hardness rating of a material, from 0 to 255. Hardness determines an armor's relative protection against slashing attacks. It is used primarily for controlling the rate of armor degradation when compared to the density of an opponent's weapon. 100 is roughly the maximum for a naturally occurring substance, such as Diamond. 25-50 is normal for most substances such as metals and crystals. This value only has meaning for $type equals Material.

    See also: $density, $resilience


    $density

    This attribute determines the density rating of a material, from 0 to 255. Density determines an armor's relative protection against piercing attacks. It also determines a material's damage potential to an opponent's armor when used as the basis for a weapon.

    On the average, metals tend to be softer and more pliable than crystals, meaning lower hardness and density ratings. This value only has meaning for $type equals Material.

    See also: $hardness, $resilience


    $resilience

    This attribute determines the resilience rating of a material, from 0 to 255. Resilience determines an armor's overall protection against blunt attacks. It also determines a material's shatter resistance when used as a weapon (how easily it will break when it strikes an object).

    Resiliency ratings for metals are higher than for crystals and gems. Clothing tends to have decent resiliency ratings, but its hardness and density ratings are abysmally low. This value only has meaning for $type equals Material.

    See also: $density, $hardness


    $skill

    When set on an item number whose $type is Skill, this determines the reference number of the skill as hardcoded in the TinyMARE Combat System. A list of hardcoded skill numbers can be viewed by typing @list skills. Defining your own skills in the database allows you to enhance and otherwise describe skills that players can use. Also, two skills can both be linked to the same reference number, thereby possessing the same qualities but under a different name.


    $techbase

    This value determines the base amount of Technique Points a player must accumulate before the first 1% of skill mastery is automatically learned. This value is used in conjunction with $techlevel and $techraise to set a scale of increasing difficulty for skill mastery up to 100%.

    See also: $techlevel, $techraise


    $techlevel

    This value determines the base amount of Technique Points needed per 1% of mastery level beyond the first percentage point.

    See also: $techbase, $techraise


    $techraise

    This value is defined as an increase to the number of Technique Points a player must obtain, added onto the $techlevel value.

    See also: $techbase, $techlevel


    $maxtrain

    This attribute limits the maximum mastery percentage that this skill can be trained at when paying money to a guild trainer. The value can be set no higher than 100%. If this value is 0, then 100 is assumed by default. It only has an effect on item numbers whose $type is Skill.

    See also: $maxpercent


    $maxpercent

    This attribute limits the maximum mastery percentage that this skill can automatically increase to while gaining Technique Points by fighting enemies in the wilderness. Players must find other ways to raise a skill's percentage higher, such as training in a guild or through the completion of special quests. If this value is 0, then 100% is assumed by default. It only has an effect on item numbers whose $type is Skill.

    See also: $maxtrain


    $learn

    This attribute contains the item number of another Skill as defined in the item database. When a player reaches 100% mastery in this skill, then the player will automatically learn a new skill specified by this value, starting at 1%. This attribute only has an effect if the item $type is Skill.


    $power

    This value is automatically set on equipment to determine the current +Strength of a weapon or armor compared to its $maxpower value. As equipment becomes damaged, its $power slowly saps away until it reaches 0, at which point it shatters completely. Equipment must frequently need repairing to bring $power back up to the $maxpower level.

    Magical enchantments can increase an equipment's $power above $maxpower, thereby increasing its attack or defense power. Equipment of type Clothing has both $power and $maxpower set to 0, thereby offering no defense. Clothing shatters when its $damage increases to 10000 points.

    See also: $damage, $maxpower


    $maxpower

    For equipment, this attribute determines the highest +Strength rating that the particular equipment can attain without magical intervention. A piece of equipment that is at perfect (100%) condition has $power equal to $maxpower and 0 $damage points.

    This value must be set on equipment in the item database before any equipment is created. Equipment bought at a shop holds the highest +Strength value and 0 $damage points. Equipment found on monsters in the wilderness can have anywhere from 75% to 100% condition, and must be repaired to deliver its full potential.

    See also: $damage, $power


    $damage

    This value is automatically incremented on equipment during battle to track the damage at its current $power level. Equipment cracks when its $damage points become 1000 times that of its current $power level. At that point, the power level decreases by 1 and $damage resets to 0, and the wearer of the equipment is notified of the loss of strength. Equipment cracks faster as its $power approaches 0.

    An equipment's rate of damage depends on the type of material it's composed of. Each material has three damage ratings: Hardness, Density, and Resilience, each which give their own spin as to how weapon and armor damage is dealt and received. See the help on $hardness, $density, and $resilience for more information.

    See also: $maxpower, $power


    $desc

    Contains the description of the item as shown when a player looks at or examines an item or spell. An item description should physically describe the item or explain the actions of a spell and how a player would use the spell. However, the specifics of what it really does should be better reserved for an item's $caption instead. The $desc can contain %-substitutions as well as functions, which are only given the permissions of the player looking at it. The following pronouns are defined:

    %#,%! - The player# looking at the item.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    %3 - Damage range based on level. Value can be in the form 'x' or 'x-y'.
    See also: $caption


    $caption

    The caption is a short message up to 48 characters long, that identifies an item for its use in and outside of battle. While an item's $desc physically describes an item or spell, the $caption shows its precise function in the combat system. Captions provide a quick way for players to skillfully select which items to use in the heat of battle, and are thus displayed alongside each item and quantity on the items screen.

    Examples of useful captions would be 'Recovers HP by %3 points', or 'Teleports to the dungeon entrance'. Pronoun substitution for this attribute is the same as that of $desc.

    See also: $desc


    $command

    This attribute defines a command word that can be used to execute a defined technique, rather than through the usual use or cast commands. This value is most widely used for command-based Skills that have no meaning for use or cast. An example $command would be 'steal' as defined on a Steal skill, which executes the events on the skill when the player types 'steal <enemy name>'.

    Note: Setting this attribute on an item or spell does not disable the use or cast commands, instead it allows for both methods to be available.

    See also: cast, use


    $usage

    This attribute defines the meanings to possible arguments that can be used with an item or selected with a spell. Only the arguments need to be defined, not the full 'use' or 'cast' command that goes along with it. For example, setting this value to '<enemy>' will display the following Usage: line for each of these three different types of items:

    Item: use Steal=<enemy>
    Spell: cast Steal=<enemy>
    Skill: steal <enemy>
    If no $usage is defined for an item, then the = after the item name will not be printed. This attribute performs no variable substitution.


    $action

    This attribute contains a semicolon-separated list of Mare commands that the Game Driver will execute when the spell is cast. These optional commands will trigger after any events on the spell have gone into effect. Specifying $action on an item forces that item to become usable even if there aren't any active events programmed on it. An item with only command actions and no events will always return successful, unless the $lock attribute prohibits the player from using the item. The following pronouns are defined:

    %! - Game Driver, who executes the command.
    %# - The spell caster / user of the item.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    Because $action directly executes commands on the Game Driver, this attribute can only be set by Wizards that have the Security power.

    See also: $lock


    $lock

    This attribute sets a lock on the usage of an item or spell. If a player fails the lock, then a failed attempt message will be printed the moment he or she tries to use the item or casts the spell. All spells that do not pass the lock for a player will appear grayed-out when he or she views the spell list.

    The $lock attribute is checked first before any other event-based checking and before the target of the technique is known. Therefore the lock cannot be based on the target or arguments of the spell. $lock can be used to restrict the spell to certain areas or sector types, but not to specific groups of enemies (which can be accomplished in more detail on the event-level of control).

    $lock has the same semantics as the object attribute @lock, with %# equal to the player# using the item and %! set to the Game Driver with privileges to operate the lock. No other environment variables are defined. The $ufail attribute can be used to override the message that appears when the lock is failed.

    See also: $ufail


    $ufail

    This attribute contains the message that is to be displayed to the player when he or she fails the $lock on an item while typing use or cast. If not set, the default phrase "You can't use %0 here." is displayed. Variable substitution is as follows:

    %#,%! - The player# using the item.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    See also: $lock


    $cast

    This attribute contains the verbal component to the spell. It is a per-spell definable message printed to the caster when he or she types the cast command, instead of the phrase "You chant the spell of %0." Variable substitution is as follows:

    %#,%! - The player# chanting the spell.
    %0 - Spell name.
    %1 - Spell number.
    %2 - Spell level.
    %3 - The chanting duration in 1/10ths of a second, based on level.
    See also: cast, $ocast


    $ocast

    This attribute contains the message displayed to everyone in the room except the caster when he or she types the cast command. It is displayed instead of the phrase "%N chants the spell of %0." Variable substitution is the same as with the $cast attribute.

    See also: cast, $cast


    $message

    This attribute is displayed to everyone in the room at the moment an item or spell gets executed, after the -< Battle >- message and before the item's events trigger. This message only gets displayed once and is directed at the original target, even if the $areaatk specifies a group of enemies or the target does not actually get hit (because the Remove or Invert flags were specified). The following pronouns are defined:

    %! - The player using the technique.
    %# - The primary target of the technique.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    No message is displayed to the room if this attribute is not set.


    $succ

    This attribute holds the message the caster would see if the technique usage successfully strikes its victim, one per enemy targetted. It is displayed before the event's messages (such as HP damage) are displayed. Use in conjunction with $osucc and $tsucc. The following pronouns are defined:

    %! - The player using the technique.
    %# - The target of the technique.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    %3 - [Attack event only] The actual damage inflicted on opponent.
    See also: $osucc, $tsucc


    $osucc

    This attribute holds the message everyone in the room except the caster and the target would see when a technique successfully strikes its victim. It is displayed once for each successful strike in an area attack. See $succ for details and pronoun usage.

    See also: $succ, $tsucc


    $tsucc

    This attribute holds the message that the target of the spell would see if the spell scored a successful hit. The message would appear before the event's messages (such as HP damage) are displayed. See $succ for details and pronoun usage.

    See also: $succ, $osucc


    $remote

    This is a special message that only a select number of events use. It is displayed to everyone in a remote or adjacent room before the spell's events are triggered. An example of using this attribute would be a message that is shown in the destination room during a Teleport event before the player appeared in that room.

    This message is only displayed when a spell is successful. Pronoun usage is the same as in $succ, except for %3, which references the remote room's dbref#.

    See also: $succ, $osucc, $tsucc


    $fail

    This message is displayed to the caster when the technique misses its intended target. It replaces the default "Miss" message that the event would have normally printed on the screen. Pronoun usage is the same as that of $succ, except %3 is blank.

    See also: $ofail, $tfail


    $ofail

    This attribute holds the message everyone in the room except the caster and the target would see when a technique misses its inteded target. It is displayed in place of the default "Miss" message that the event would have normally printed on the screen. Pronoun usage is the same as that of $succ, except %3 is blank.

    See also: $fail, $tfail


    $tfail

    This attribute holds the message that the target of the technique would see in the case of a miss. It is displayed in place of the default "Miss" message that the event would have normally printed on the screen. Pronoun usage is the same as that of $succ, except %3 is blank.

    See also: $fail, $ofail


    $fumble

    This message is displayed to the caster when he or she fumbles his attack onto an unsuspecting victim. It is in effect the same as a success message, except the target (%#) may or may not be different (a fumble can occur on the intended target, only a different message may be printed). This message is displayed before the event's normal messages (such as HP damage) are displayed. Pronoun usage is the same as that of $succ.

    See also: $ofumble, $tfumble


    $ofumble

    This attribute holds the message everyone in the room except the caster and the adjusted target would see if the caster's technique has fumbled onto that target. It is displayed once for each target that matches the spell's area attack. See $fumble for details and pronoun usage.

    See also: $fumble, $tfumble


    $tfumble

    This attribute holds the message that the target of the spell would see if the caster fumbled an attack on the target. The target may or may not be the intended target from the beginning. This message would appear before other event messages (such as HP damage) are displaaed. See $fumble for details and pronoun usage.

    See also: $fumble, $ofumble


    $drop

    This message will be displayed to the player who drops an item from the inventory to the floor. When both $drop and $odrop are set on an item, and the item's $flags contain the Fragile option, the phrase "%0 shatters on the floor!" will be suppressed. This message need not be set for a Fragile item if the @eventkey on the room is expecting someone to drop that item in a specific location. The following pronouns are defined:

    %#,%! - The player# dropping the item.
    %0 - Item name.
    %1 - Item number.
    %2 - Level of item if a spell, or $level if found in a player's inventory.
    Dropping an item also triggers a room's @adrop attribute with the above mentioned pronouns defined. A room can check for %1 to be a valid item number (nonzero) to determine if a database object or an item was dropped.

    See also: $odrop


    $odrop

    This message will be displayed to everyone else in the room a player drops this item from his or her inventory to the floor. See $drop for details and pronoun usage.

    See also: $drop


    Byron Stanoszek : gandalf@winds.org
    Last Index Update - October 15, 2000

    Copyright ©2000 by Byron Stanoszek
    All Rights Reserved