DalekenMUD 1.11 documentation.
Updated 7 June 2000.

The Daleken Area File Format v1

This document is no longer valid, the upgrade to version 1.12 has meant the introduction of a new format, thus all information about actual formatting should be ignored.

It is recognised that some people find the OLC system challenging or inflexible or they cannot always access the MUD directly so they may prefer to write the areas 'by hand', this file shows the format and how to write an area in the Daleken format.

Introduction

Plan out your area on paper before writing it out. Check the mud to see if that area is already in place or something similar. Map out your area, then place the mobs and items BEFORE you start writing the area. Think before you write. Read through this document, and try and figure it out. If you still need help, don't hesitate to ask someone online. Try to have as close to, but less than, sets of 100 rooms as you can, since we use 100 roomed slots. Let your imagination run wild and remember to place exits in the long description, including doors. While writing your area, have a previously written and debugged area nearby so you can use it as a reference.

This is important whichever method you intend to use to build your area, once you have a plan in mind you spend far less time stuffing about.

An area is one piece of the world. Each area is defined in a separate file. All of our area files have the extension '.are'. Areas are what make the game special, sure the gods help, but it is the areas. Please keep your areas original and not too far out. Use good and proper English and try and spell check your area before sending it in. Hatchet and the high up gods will debug if necessary. Remember the world is a magical one, where technology was not really developed. So please keep the machine guns, grenades, lasers, etc out.

Data Types

All of the data in an area file (even the section headers) consists of a series of values. Each value has a specific type. The server parses the file by reading in data values one at a time according to the types it expects.

Blank characters (spaces, tabs, new lines, carriage returns) at the beginning of a data value are always ignored (this includes strings). Thus, you can format the area files whatever way suits your taste and your needs.

The individual types are: 'letter', 'string', 'number' and 'lookup'.

A 'letter' is a single non-blank character.

A 'string' is a sequence of non-tilde characters terminated by a tilde. A tilde is this character: '~'. Thus, strings may contain blanks, and may be multiple lines long. There is no limit on the length of an individual string; however, all strings go into a common memory pool whose size is fixed when the server is compiled.

A 'number' is a decimal number with an optional leading '-' or '+'. The '|' character may be used in any number: '1|64|1048576' has the value 1048641. The individual values separated by '|' are added together, so '5|6' is 11, not 7. The components need not be powers of 2.

A 'lookup' is less a data type than a method of interpreting numbers in a format that the builder is more familiar with. In some instances like object wear-locations the string is interpreted straight to a number (eg 'head' goes to 1, 'lfinger' goes to 14) these instances require only a single word and you may have to enclose that word in parentheses or inverted commas if it contains a space (eg "npc corpse"). Bit fields are also represented this way and each word in the string is separated by a space and represents a different bit on the number: (eg sentinel aggressive~ is taken as the words 'sentinel' and 'aggressive' which are 2 and 32 repectively these are ORed together to give 34) The string for a 'lookup' is always terminated by a tilde '~' like any other string.

Mobiles, objects, and rooms are identified by vnum (virtual number). The range of vnum's is 1 to 65534. Vnum's must be unique (for that particular kind of vnum). Vnums do not have to be in increasing order.

Typically an area uses the same range of vnum's for mobile vnum's, object vnum's, and room vnum's, starting with a multiple of 100. This facilitates adding the area into an existing set of areas.

Basic Format

The area files are set out using a punctuation method where a symbol represents the type of information following, this means that area files are compatible in all directions.

Some sections are optional which means you can leave out some of the tedious typing involved with writing areas.

In most cases the punctuation show in the table below will precede a keyword which is then followed by the value of the variable, there are special instances.

The keywords are read case-insensitive so 'extra' is equivalent to 'eXTrA', Daleken doesn't care. Also note that blank characters (spaces, tabs, new lines, carriage returns) between the start of a field and the beginning of the next are ignored so you can format the area file however you like. You can even fill these spaces with comments to assist people reading the file.

Fields which are normally a certain value don't have to be filled, the game will automatically fill empty fields with default values. For instance you don't always have a spec function for a mobile so the game automatically fills in with the spec_null if you leave that part out.

Symbol Meaning
@ Directly before a section heading, eg @MOBILES
! New mob, object or room, precedes a vnum, eg !1023
> Subsection, followed by the name of the subsection, e.g.
>MobProgs
? New section in a subsection, this is rare and will be explained later.
. End of a section or subsection
$ String field, ended by a tilde '~', e.g.
$Name skeletal knight~
# Number field, e.g.
#Level 100
% Lookup table, field name is followed by the name of the table, The values are a space separated string, e.g.
%Flags area verbose hidden~
* Comment, the rest of the line is ignored.

The following is a sample of how the format can be used.

* This is a comment, comments can be put anywhere outside of
* a field description, the line after a '*' is ignored.
@SAMPLE				* starts the 'SAMPLE' section
!1205				* the first vnum is 1205
$Name	example name~		* The 'name' field is set to 'example name'
#Number 20			* 'Number' is set to 20
%extra state   (new york)~	* the 'extra' field is set,
	* 'new york' is looked up in the 'state' table to get the number
	* Note how new york is parenthesised () so it is taken as one word
	* 'new york' and not two 'new', 'york'.

		* a bit of space so it isn't cluttered

* A special function is called to fill the 'favourite' field:
>Favourite			* >subsection!, notice the '?'
?   $Food  green eggs and ham~	* They like 'green eggs and ham', tasty!
?   $Food  ice cream~		* another favorite subsection
    $Video star wars~		* 'ice cream' and 'star wars'!
    #Number  13
    .				* the full-stop to end the subsection



!1206				* the next thing in this section
$Name second name~		* 'name' set to 'second name'
.				* the full-stop to end the entire section

Area File Sections

There are six basic sections in the area file, as follows:

@AREA
area summary information
@HELPS
helps specific to the area
@SOCIALS
socials to add with the area
@MOBILES
mobile information, this includes spec functions, shops and mobprogs
@OBJECTS
object information
@ROOMS
Room information including resets for that room and exit info
@END
>Put this at the end of a file.

This differs from Envy/Merc/Diku in that the information is grouped together in logical groups, for instance resets are put in each room, this reduces memory usage and makes it easier to load resets.

The @AREA Section

This is the header for the area that you have containing global-ish information about the area. e.g.

@AREA
$Name	      Limbo~		* The name of the area.
$Plane	      immortal~		* Which plane it belongs to.
$Builders     ~			* Who builds the area (OLC)
$Repop	      You hear screams of pain in the distance.
~				* Repop message.
#LVnum	      1			* Lower vnum (OLC)
#UVnum	      100		* Upper vnum (OLC)
#Security     5			* Security (OLC)
#Temp	      0			* Average temperature.
%Flags area   finished hidden~	* Area flags.
.				* Full stop, end of section

In this instance only the name field is essential, all the other values are set to their default if they are left. The level range for the area is calculated by the game so there is no need to put that in the name.

Note how spaces aren't important before any field as they are ignored but in the Repop field the tilde (~) must be on the next line. Note also how the full-stop finishes the section.

The area flags at this stage are:

verbose
OLC saves in verbose mode.
deleted
OLC will delete the file (probably dont want to set this)
hidden
area wont show on 'areas' command
finished
area wont be saved by OLC because it's finished, you have to add this to the file, OLC wont add it.
sentinel
all mobiles will have the sentinel flag set (used for testing resets)

The @HELPS Section

This allows you to put in helps on anything relating to your area, for instance you may like to put a map of your area or directions to it, what would be really good is to have a story about it or something similar.

Generally, all helps are placed in one file, 'help.are', that contains no other sections. Immortal helps are put in 'immhelp.are' but area specific helps, like directions or maps, can be put wherever you think proper.

@HELPS
!-1				* Trust level required.
$Name      MINOTAUR~		* Keywords.
$Text
Minotaurs appear to be a hybrid of human and bull, that seems to have
been in existence as long as, or possibly longer than humankind itself.
Most of their kind become warriors of great might due to their high strength
and constitution, although Minotaur spellcasters have been found.
~				* The actual help.
!0
$Name     CRASH~
$Text
No help on this yet sorry.
~
.

Here every help is started by an exclamation mark followed by the trust level of the help (the level you have to be to see the help, -1 trust means the title of the help wont be shown).

The Name and Text fields are strings and as you can see the actual text is put on the next line, this is fine as any space up to the first character is ignored but remember to place the tilde on the next line.

Normally when a player uses 'help', both the keywords and the help-text are shown. If the 'level' is negative, however, the keywords are suppressed. This allows the help file mechanism to be used for certain other commands, such as the initial 'greetings' text.

Note how the section finishes with a full-stop(.) and each section follows the last without a full-stop.

The @SOCIALS Section

This section is for one off socials that need to be entered, all socials are now stored globally. This format corresponds to that used in the system socials.txt file.

@SOCIALS
!$Name   giggle~		* The keyword of the social
		* CNA - Character No Argument
$CNA     You giggle.~
		* ONA - Others No Argument
$ONA     $n giggles.~
		* CF - Character when victim is Found
$CF      You giggle in $S presence.~
		* OF - Others when victim is Found
$OF      $n giggles at $N's actions.~
		* Victim ...
$VF      $n giggles at you.  Hope it's not contagious!~
		* CA - Character Auto, when they do it to themselves
$CA      You giggle at yourself.  You must be nervous or something.~ 
		* OA - Others Auto, what others get for CA
$OA      $n giggles at $mself.  $e must be nervous or something.~
!$Name   laugh~
$CNA     You laugh.~
$ONA     $n laughs.~
$CF      You laugh at $N mercilessly.~
$OF      $n laughs at $N mercilessly.~
$VF      $n laughs at you mercilessly.  Hmmmmph.~
$CA      You laugh at yourself.  I would, too.~
$OA      $n laughs at $mself.  Let's all join in!!!~
.

You can get the drift by this example I hope, simply copy the above and change the messages to suit, notice the $Name line is preceded by an exclamation mark, as you can see you can put comments between commands, even on the line after them.

The @MOBILES Section

Mobiles give the area character and can really spice the place up. This is also the most important section to those players who walk around with brief on.

@MOBILES
!700
$Name      immortal guardian~		* the keywords of the mobile
$Short     The Immortal Guardian~
			* short description, what you see as their name
$Long      The Immortal Guardian stands here guarding the Immortal Plane.
~			* long description as you see when you type 'look'
$Desc
You feel that this is NOT someone you want to mess with, allthough he
looks kind and benevolent you can see the power that he holds.
~			* really long description from looking at them
#Level     500		* mobile level, determines its hps etc...
#Align     1000		* alignment of the mobile (-1000 to 1000)
%Act act         sentinel stay_area train practice banker assist questmaster~
			* act flags, see table in bit.c
%Affected affect detect-invis detect-magic sanctuary infrared protect~
			* affected flags, see table in bit.c
%Sex sex         male~		* mobile sex
%Parts limbs     torso head eyes nose left-ear right-ear left-arm right-arm 
	left-hand right-hand left-fingers right-fingers left-leg right-leg 
	left-foot right-foot tail horns wings lungs gills~
			* body parts, if left out, it goes on race
>Race            God~			* as you can see, he is a god
>Specfun         spec_cast_adept~	* special function, optional
***** mobprogs subsection, optional also
* see mobprogs.txt for more info.
>MobProgs
?%Type mobprogs    greet_prog~
  $Args              100~
  $Comlist
say Hey, you, $n, can you dig me out?
~
  .

Most sections above should be self explanatory by the comments, each new mobile starts with '!<vnum>' showing it's vnum, the rest of the sections are explained in detail below.

The 'Name' is words which can be used in commands to identify the mobile. Most mudders consider the keywords the mobile's name. Separate each keyword you use with a space and make sure at least one of them occurs in the description the player sees when they enter the room for ease of reference if you intention is to have a visible mobile.

The 'Short' is the description used by the 'act' function and other functions to identify the mobile. Do not use a capital letter in the description as it is used from within sentences, unless it is a proper name.

The 'Long' is the description used when a character walks in the room and the mobile is visible. It is suggested to not use more than one line for the 'long-description'. Make sure you end the description with a newline with a '~' only.

To illustrate this...

$Long An old woman totters down the street~

...is incorrect. And...

$Long An old woman totters down the street.

~

...is correct.

The 'Desc' is the longest description. It is used when a character explicitly looks at the mobile. This may contain as many lines as you wish. This can even include a fake listing of what it is wearing.

The 'Act' are flags showing what the mobile will do:

npc
Automatically set for mobiles
sentinel
stands still
scavenger
Picks up junk
aggressive
Attacks visible players
stay_area
stays in their own area (good idea)
wimpy
runs from fights when hurt
pet
is a pet
train
can train players str, wis, int, dex, con, hp, mana...
practice
can teach players skills
prac-air
prac-earth
prac-fire
prac-spirit
prac-water
can teach spells from that sphere
gamble
nothing really
banker
is an agent for the bank
mercenary
can be bought for a price
assist
will attack players if they are fighting someone else
buried
is underground and hence not visible at all
racist
attacks players from races they hate eg human vs vampire
hunter
hunts down fleeing players
questmaster
will give quests for players and sell quest items
smith
combined with shop information, repairs gear for gold

The 'Affected' are flags showing the mobiles attributes:

blind
cant see
invisible
is invisible
detect-evil
no real point
detect-invis
can see invisible characters
detect-magic
no real point
detect-hidden
can see hidden characters
hold
not good to put on
sanctuary
takes half damage
faerie-fire
poor armour class
infrared
can see players in the dark
mind-mist
can't remember how to do anything, auto fail on all skills
flying
in the air
plague
very, very sick, contagious too
poison
poisoned
protect
3/4 damage from opposite alignment characters
sneak
entry and exit from room is silent
hide
hidden
sleep
no real point
charm
not good to put on
pass-door
can move through doors
bleeding
no real point
mute
can't talk
vamp-bite
no real point
ghoul
no real point
flaming
has a shield a fire, anyone who hits them gets flamestriked
haste
gets an extra attack every round
fast-talk
no real point
warp-flesh
takes double damage from weapon hits
breathing
doesn't need to breath
aura-sight
no real point
polymorph
no real point

The 'Race' is a race chosen from the list in const.c:

Human, Elf, Halfelf, Drow, Dwarf, Halfdwarf, Hobbit, Giant, Ogre, Orc, Kobold, Minotaur, Troll, Insect, Red Dragon, Blue Dragon, Animal, God, Undead, Harpy, Bear, Githyanki, Fire Elemental, Bat, Plant, Rat, Vampire, Werewolf, Goblin, Faerie, Mechanoid, Mindflayer, Object, Snake, Ooze, Fish, Hydra, Gnome... et. al.

For an updated list check const.c and it's race_table.

'Sex' is either male, female or neutral, dont forget that this is a lookup also.

The 'Align' of the mobile ranges from -1000 to +1000. Keep in mind that certain spells ('protection' and 'dispel evil') give characters fighting evil monsters an advantage, and that experience earned is influenced by alignment.

The 'level' determines most things about the mobile, it affects just about everything that you dont set, hps, hitroll, damroll, strength...

'Parts' are body parts for the mobile, which dont have to be included unless you want to make the mobile special (different to other creatures typical to it's race). For a full list see bit.c.

Optional sections

>Specfun spec_thief~

This associates a special function to the character:

spec_breath_any
Dragon breath randomly chosen from the 5 below
spec_breath_acid
Acid Breath
spec_breath_fire
Fire Breath
spec_breath_frost
Frost Breath
spec_breath_gas
Gas Breath
spec_breath_lightning
Lightning Breath
spec_cast_adept
Healer
spec_cast_cleric
Combative Cleric
spec_cast_ghost
Undead ghost (repop during night, gone by day)
spec_cast_judge
Combative Mage in Mega1.are
spec_cast_mage
Combative Mage (generic)
spec_cast_psionicist
Combative Psionicist
spec_cast_undead
Undead (generic)
spec_cast_god
Extremely powerful caster from all spheres.
spec_executioner
Executioner
spec_fido
Corpse-eating mobile
spec_guard
Midgaard Cityguard
spec_janitor
Midgaard Janitor
spec_poison
Poisonous Bite
spec_repairman
Bashed Door Repairman
spec_thief
Pick-pocketing Thief
spec_safe
Impossible to attack mobile
spec_peacemaker
Teleports around stopping fights
spec_deaf
Is REALLY deaf
spec_weevil
Is extremely annoying
death_explode
Goes *bang* when it dies
death_ghost
Doesn't leave a corpse
>Shop
%Trade0 type   wand~
%Trade1 type   staff~
%Trade4 type   scroll~
#Markup    110		* how much he sells for as a percentage of cost
#Markdown  0		* how much he will pay as a percentage of cost
#Open      8		* 24 hour time for opening the shop (8am)
#Close     21		* closing time (9pm)
.

This section makes the mobile a shopkeeper, Trade[0-4] are the items that they will buy, you dont have to include all these. In the example above the shopkeeper will buy wands, scrolls and staves but pays nothing for them as the markdown is 0 (unless the seller has haggle ;) and he puts a 110% markup on anything he sells. The shop is open from 8am to 9pm.

The @OBJECTS Section

These are the items that the people who journey through you area will keep and use, it is best to think up good descriptions for them. Remember to balance these items with those that already exist, we don't want items giving level 1 characters thousands of hitpoints and a massive armour class.

Objects are important to getting players in the area, while you dont want inbalance, good items will ensure that players visit your area.

@OBJECTS
!1				* vnum number 1
$Name	    pile trash~		* keywords are 'pile' and 'trash'
$Short	    a pile of trash~	* its short name
$Long	    A pile of trash lies here.~
$Action	    You hit yourself on the head, idiot!
~				* action message specific to type of item
#Level	    0			* default loading level
#Weight	    1			* its weight
%Type type	    trash~	* what type of object it is
%Wear wear	    take~	* where you can wear it
%Extra extra	    none~	* extra flags
%Material material mucus~	* what is this made from?
>Values				* type-specific values
0~ 0~ 0~ 0~
.
>Affect				* Standard type of affect.
  %Location apply hitroll~
  #Modifier -2
.
>Affect				* A permanent 'plague' affect
  %Name skill plague~		* which modifies strength by -10
  %Location apply strength~	* and has the plague bit set.
  #Modifier -10
  %Bits affect plague~
.
>Affect				* Permanent spell affect 'plague'
  %Name skill permanent~	* This differs from the above in that the
  %Location skill plague~	* spell is cast on the char at the item's
.				* level and it may even fail.
!10				* vnum 10
$Name	    corpse~
$Short	    corpse of %s~
$Long	    The corpse of %s&x is lying here.~
#Level	    0
#Weight	    100
%Type type	    (npc corpse)~	* notice the parentheses?
%Wear wear	    take~
%Extra extra	    none~
%Material material organic~
>Values
 ~ 0~ 0~ 1~
.
>ExDesc			* extra description
$Keyword   corpse~	* keywords
$Text
You see the remains of some poor soul who encountered someone far
stronger and vicious than themselves, the corpse lies here mouldering and
you can see worms at work doing the decomposition business they do so well.
~			* the text.
.
.

The 'vnum' is the virtual number of the object.

The 'Name' is words which can be used in commands to identify the object.

The 'short' is the description used by the 'act' function and other functions to identify the object. The first character of the short- description should be lower case, because this description is used in the middle of sentences. The 'short-description' is used with the commands: 'get', 'drop', 'inventory', 'equipment', 'look', etc.

The 'long' is the description used when a character walks in the room and the object is visible. This string will display when someone types 'look %lt;obj>'.

The 'action' is a message which is sent at different times depending on the type of object. For things you can wear like armour, wands and staves, action is given when your wear it. For fountains, when you drink, for food, when you eat and so on and so forth...

The 'Type' is the type of the item, a lookup table, note here that you may have to place this in parentheses, especially for the '(n)pc corpse' item type, which includes a space.

light, scroll, wand, staff, weapon, treasure, armor, potion, furniture, trash, container, drink-container, key, food, money, boat, 'npc corpse', 'pc corpse', fountain, pill, explosive, portal, plant, limb

'Extra' flags which are pretty well self explanatory, these are explained somewhat where they are defined in const.h

glow, hum, dark, quest, evil, invis, magic, nodrop, bless, anti-good, anti-evil, anti-neutral, noremove, inventory, poisoned, vampire-bane, holy, charged, sharp, horned, owner, no-cast, runed, buried, no-id, fragile

'Wear' flags tell where you can wear the object, in particular the 'take' flag determines whether you can pick it up or not:

take, finger, neck, body, head, legs, feet, hands, arms, shield, shoulders, waist, wrist, wield, double, hold, face, float, ankle, horns, wings, ear, nose

'Material' is what the item is made from (in order of toughness):

eternium, mithril, diamond, steel, flame, crystal, dragonskin, stone, iron, silver, copper, lead, ebony, bronze, gold, aluminium, clay, rubber, carbon, ivory, leather, wood, bone, cloth, organic, glass, paper, mucus

'Weight' is just that and 'Cost', an optional value determines the value of the object. 'Level' is the default loading level of the object, just set this to zero if you want the object to be loaded a whatever level is suitable (see resets subsection of rooms).

'Values' are a subsection made up of four strings (terminated by a ~). Values are dependant on the item type see below for a complete list.

'Affect': these sections are what a character will get when they wear the item, you can add as many of these are you deem appropriate but be wary of balance. Since the issue of balance is important, I would suggest that you consult the modifications.txt document, which has guidelines on size of modifiers.

First is the standard 'Affect' section:

>Affect
  %Name skill <skill/spell>~
  %Location apply <location>~
  #Modifier <amount>
  %Bits affect <affect-bits>~
.
<skill/spell>
is any skill or spell in the game, this is on optional section, if you leave the name out the affect wont be named, this should be left off for most affects as that spell can't be cast on a character with a named affect.
<location>
is where the affect will apply:
none, strength, dexterity, intelligence, wisdom, constitution, sex, class, level, age, height, weight, mana, hp, move, gold, experience, ac, hitroll, damroll, saving-para, saving-rod, saving-petri, saving-breath, saving-spell, race, resilience, appearance, body-temp, body-part, initiative
<amount> is, of course, by how much <location> is modified.
<affect-bits>
is the bits to give to the character, see the @MOBILES section

Permanent, Continuous and Delayed:

>Affect
  %Name skill <'permanent' / 'continuous' / 'delayed'>~
  %Location skill <spell>~
.

For the 'Name' section, choose any one of the three options. The 'Location' section can then be changed to be the spell, which is to be applied as permanent/continuous/delayed. Note how the location is set using a skill rather than an apply.

NOTE: Permanent, continuous and delayed affects should be fairly rare on items. Be aware of the effect the spell has when it is cast and consider how powerful this would be.

e.g. An item with permanent stone skin is pretty good, but the way that permanent affects are applied mean that permanent flamestrike would be very strange.

e.g. Continuous heal would certainly be very useful and probably totally unbalanced, continuous mass plague or refresh may be justified.

NOTE: Delayed affects on items are a little strange in how they are applied. When the character removes the item, the spell will go off, please make sure the spell isn't something like meteor swarm or heal, as the character will be able to cast the spell extremely rapidly, for no cost by simply removing the item repetitively. In fact I would suggest that the delayed effect is not used at all.

Extra descriptions of the object are added by the 'ExDesc' subsection:

'Keyword' is the keywords used to get the text (ie 'look keyword')

'Text' is the text shown when someone looks.

This section is finished by a full-stop.

Meaning of Value Numbers by Item Type

As mentioned above, the 'value' fields are entered by the builder as TEXT strings even though they will be converted to and stored as integer values. EnvyMud made this modification so that spell names, rather than slot numbers, could be used for scrolls, staves, wands, potions, and pills. For these types of items, the text string containing the spell name (for example, cure critical) is translated to an internal skill/spell number or 'sn'. For the other item types, the strings are converted directly to integer values. If a potion, scroll, or pill only has one spell, the other strings must still be terminated by a '~' but need not have any content. A complete list of spells is given at the end of this file.

NOTE: Because these are read in as strings, the '|' format cannot be used for the flags; i.e. 1|4|8~ is an invalid entry, but 13~ is valid. (cf. ITEM_CONTAINER, value[1])

Below is a list of the item types and the values used, the symbols represent the type of data in the field and any field not listed is unused, you can put anything you like in it although the standard is to use 0~ as they are numbers eventually:

Item Type Values
LIGHT #2 - light hours (-1 infinite)
SCROLL #0 - level

$1 - spell name 1

$2 - spell name 2

$3 - spell name 3
WAND #0 - level

$1 - max charges

$2 - current charges

$3 - spell name
STAFF #0 - level

$1 - max charges

$2 - current charges

$3 - spell name
WEAPON $0 - offensive spell cast with a hit

#1 - minumum damage (unused)

#2 - maximum damage (unused)

%3 - type of hit (flagg lookup):
hit, slice, stab, slash, whip, claw, blast, pound, crush, rip, bite, pierce, suction, chop
ARMOUR (ARMOR) #1 - armour size (-1 fits all)
POTION #0 - level

$1 - spell name 1

$2 - spell name 2

$3 - spell name 3
PILL #0 - level

$1 - spell name 1

$2 - spell name 2

$3 - spell name 3
PLANT #0 - level

$1 - spell name 1

$2 - spell name 2

$3 - spell name 3
CONTAINER #0 - weight capacity

%1 - flags: closeable, pickproof, closed, locked, trapped, weightless, hungry, holey

#2 - key vnum
DRINK-CONTAINER #0 - capacity

#1 - current amount of liquid

%2 - liquid, by name:
water, beer, wine, ale, dark-ale, whisky, milk, lemonade, firebreather, local-specialty, coffee, slime-mold-juice, tea, blood, salt-water, cola, urine, fruit-juice, turpentine, tabasco-sauce
#3 - non-zero if poisoned
FOOD #0 - how many hours of fullness you get from eating it

#3 - non-zero if poisoned
MONEY #0 - value of the pile of money
TREASURE #0 - saleable value of the object (0 for level dependant)
CORPSE PC

CORPSE NPC
%0 - race of deceased
FOUNTAIN %2 - liquid type (see drink-container)
LIMB %0 - body parts actually on the limb (see bit.c)
EXPLOSIVE #0 - explosive level
PORTAL #0 - vnum of destination room
BOOK $0 - skill/spell the book gives the reader.

#1 - percentage in skill/spell gained per study.

#2 - maximum percentage attainable by studying the book.
FURNITURE, TRASH, KEY, BOAT (none)

The @ROOMS Section

Here is where is all happens, people play the entire game inside a room so they have to be good, you can use them for anything you like but be creative!

@ROOMS
!700
$Name	  Hub of the Immortal Plane~
$Desc
Here you stand at the centre of the immortal plane, this is the place
where all magic in the entire realm emnates.  In all directions there are
exits, north, south, east and west are the primary god's home rooms, down
leads to the lesser immortal's rooms and upwards you see the Daleken City
Temple.
~
%Flags room    no_mob no_portal fall~
%Sector sector air~			* the room is in the air
>Door 0					* a door leading north
  $Keyword      beaded curtain~		* beaded curtain keywords on the door
  #ToRoom	      702		* it leads to room 702
  %Flags exit  door closed~		* it's a closed door
.
>Door 4					* an exit leading up to room 3001
  $Desc
You gaze up at a massive cathedral's vaulted ceiling.
~
  #ToRoom	3001
  %Flags exit  none~			* no door, just an exit
.
>Resets
* The Immortal Guardian to room.
M 700 1
*     equip an Immortal's Sword two-handed.
E 700 (two-handed)~
* give him some extra money
G 2
* a pool of pure energy to room.
O 702
* the fountain of inspiration to room.
O 701
.	* end >Resets subsection
.	* end @ROOMS section

Each room starts with a !<vnum> like objects and mobiles.

The 'Name' is the heading of the room as seen at the top when you look and when people type 'where' and so on...

The 'Desc' is the long multi-line description of the room. The original help file had these words to say: Remember these rooms set the atmosphere of the area. Go beyond just regular descriptive words, use far out language, have a thesaurus handy when writing your rooms so you can use that one exact word that expresses what the room is trying to convey. I can't stress enough that your descriptions even if short have to create the atmosphere. Even the room string can add to the affect.

The 'Flags' are special room flags:

dark
it's a little darker than elsewhere
no_mob
no mobiles can walk in
indoors
you have roof above
underground
you are underground
private
only two people in the room at once
safe
no fighting here
solitary
one person at a time
pet_shop
pets room (shop vnum + 1)
no_recall
you cannot recall from here or set it here
no_portal
no portaling or transport spells to this room
cone_of_silence
no talking, chatting or spell-casting
arena
player deaths have no bonus or penalty here
fall
if you aren't flying you fall downwards
hot
the room is either hotter or colder than the rest of the
cold
area, both together have no effect
forage
foraging in this room works

'Sector' determines the sector type of the room:

inside, city, field, forest, hills, mountain, water, noswim, underwater, air, desert, space, swamp

The '>Door' sections create exits. The number following is the direction: 0 - North, 1 - East, 2 - South, 3 - West, 4 - Up, 5 - Down. You can also use 'n', 'N', 's', 'S', etc...

'Keyword' is the keywords of the door (if any) (optional)

'Desc' is the description of the exit/door (optional)

'ToRoom' is the vnum of where the exit goes to

'flags' is what the door is:

door, closed, locked, bashed, bashproof, pickproof, passproof, trapped, hidden

The '>ExDesc' sections are for extra description like on objects

'Keyword' is the keywords.

'Text' is the text for the extra description.

>Resets Section

The '>Resets' section is more complicated than the other subsections as they have many commands and they must be ordered correctly to work properly.

The commands are:

Mload a mobile
Gequip object to mobile
Egive object to mobile
Oload an object to the room
Pput object in object
Rrandomize room exits
M <vnum> <max>
loads a mobile of vnum <vnum> into the room. The maximum number stops the game from continually loading more every reset. If <max> is positive the game wont reset unless there are less than this number of these mobiles in the entire game. if <max> is negative the game will count only the mobiles in the room ensuring, this only works for 'sentinel' flagged mobiles. e.g.
  M 700 -2	* Maximum of two mobs in the room.
  M 700 10	* Maximum of 10 mobs in the world.
G <vnum>
loads an object and gives it to the last mobile, for this to work there must have been a mobile loaded before by the 'M' command and it must have been reset on this pass, so the same mobile wont get infinite objects.
E <vnum> <wear-loc>~
loads an object like 'G' and equips the last mobile, the mobile must have been reset the most recent pass. Wear locations are as follows:
none (same as using 'G'), head, horns, nose, lear, rear, face, neck1, neck2, shoulders, wings, rfloat, lfloat, arms, lwrist, rwrist, hands, lfinger, rfinger, rwielded, lwielded, two-handed, lhold, rhold, shield, body, waist, legs, lankle, rankle, feet
O <vnum>
loads the object <vnum> into the room if there isn't allready one there.
P <vnum> <container-vnum>
loads the object <vnum> into <container-vnum> object if it's there. this also resets the container flags (i.e. closes it and so on)
R <number>
R 0 <door-flags>~
In the first instance this shuffles the exits around, up to the exit number <number>, number is from 2 to 6, if it is 5 then exits 0 to 4 get shuffled (ie north, east, south, west and up)

In the second instance the doors are read in as a string like a lookup (eg R 0 north west up~) and only the doors mentioned are shuffled.

Colour

Colour codes start with a '&' and they can be any of the following (lower case - regular, upper case - bold, digit - background):

Colour Foreground Bold Foreground Background
black kK0
red rR1
green gG2
yellow yY3
blue bB4
magenta mM5
cyan cC6
white wW7

Colour codes are also used for special characters

&- tilde (~)
&/ new line
&& ampersand (&)
&! vertical bar (|)
&f flashing text
&u underlined text (mono screens only)
&r reverse video
&* bell sound (watch it!)
&n no colour/reset colour

Remember to finish with a '&x' to revert to the default colour, some codes require a &n also before the &x.

Don't overuse colour as it is supposed to be special and objects/mobs with colour should be viewed as special, only use it if you have to and then make sure the mob/item is important.

Summary

I hope this file has been informative and you can now work on the area file I'm afraid that I may have assumed a little knowledge about the workings of the MUD but I'm sure to fix that if you tell me...

Now that you are all excited about creating a new area, open your favourite text editor and slap one together, you might need to plan a little first with things like maps and lists of mobs and objects but you'll soon get the hang of things.

Anyhow, I hope to see some exciting new areas come about and if this file has helped you I'd be happy to have done at least something right.

Any enquiries just mail me mwt02@uow.edu.au

-- Symposium

Spells by Type

This list may be out of date within the week, don't trust them to stay the same, check the server by using the '? spells' command (builder/immortal only).

No Target Or Special Spells

animate dead army of darkness astral blizzard
call lightning calm colour spray cone of silence
control weather create food create spring cyclone
dancing weapon death field decay destroy life
dimension door earthquake everdark everlight
faith shield feast flood gas breath
glitterdust hellfire holylight incite brawl
inertial barrier inferno intellect fortress locate object
mass bless mass heal mass invis mass plague
mercy meteor swarm nexus planeshift
portal resurrect scry spiritual hammer
story summon transport ultrablast
ventriloquism warcry wave of oblivion

Offensive/Attacking Spells

acid blast acid breath agitation ballistic attack
blindness burn cause agony charm person
condemn confusion control flames cream pie
detonate disintegrate domination drain heat
earth bind ego whip energy drain faerie fire
fear fire breath fireball flamestrike
freeze frost breath gale hand of KAZ
harm hex high explosive ice lance
inflict pain lightning bolt lightning breath lullaby
magic missile mind mist mind thrust mute
plague poison power word project force
psionic blast psychic crush psychic drain shock
sleep soul blast tangleweed turn undead
warp flesh weaken web

Defensive Spells

aid armour aura sight awe
awen bark skin bind flesh bless
boost breathing burning hands chaos shield
chill touch combat mind continuous effect cure
cure blindness cure poison darkness delayed effect
destroy cursed dispel magic divinity divine protection
empowerment endurance enlarge exorcise
fly foci fortitudes gate
ghoul form giant strength golden touch haste
heal heavenly guidance hog holy armour
holy aura infravision invis know alignment
lay hands lend health levitation mana balm
medicine mend flesh polymorph other regeneration
remove hex remove silence reparation resist cold
resist fire resist poison sanctuary sense life
share strength shield shocking grasp shrink
vanish vampiric bite

Self-Only Spells

adrenaline control biofeedback cell adjustment change sex
cold barrier complete healing concentration dark claws
detect alignment detect hidden detect invis displacement
energy containment enhanced strength familiar fast talk
fire screen flaming shield flesh armour gotterdammerung
magic awareness mental barrier phase shift prayer
protection psychic healing stone skin teleport
thought shield word of recall

Object Target Spells

charge weapon claim item create water detect poison
enchant armour enchant weapon enhance armour flame of god
gift item glamour harmonise holy weapon
ice weapon identify recharge item transmute
vampiric weapon