daleken/
daleken/data/notes/
daleken/data/player/
daleken/data/system/poses/
daleken/doc/Homepage/images/
daleken/log/
<html>
<head>
<title>The Daleken Area File Format</title>
<link rel="stylesheet" type="text/css" href="doc.css"
title="Documentation Standard Style">
</head>
<body bgcolor="#ffffff">

<table class="main" width="600" border="0">
<tr><td>
<div align="right">
DalekenMUD 1.11 documentation.
<br>Updated 7 June 2000.
</div>
</td></tr>

<tr><th class="heading">
<h1>The Daleken Area File Format v1</h1>
</th></tr>

<tr><td> 

<p><b>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.</b></p>

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>Introduction</h2>
</th></tr>

<tr><td>

<p>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.</p>

<p>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.</p>

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>Data Types</h2>
</th></tr>

<tr><td>

<p>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.</p>

<p>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.</p>

<p>The individual types are: 'letter', 'string', 'number' and 'lookup'.</p>

<p>A '<b>letter</b>' is a single non-blank character.</p>

<p>A '<b>string</b>' 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.</p>

<p>A '<b>number</b>' 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.</p>

<p>A '<b>lookup</b>' 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.</p>

<p>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.</p>

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>Basic Format</h2>
</th></tr>

<tr><td>

<p>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.</p>

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

<p>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.</p>

<p>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.</p>

<p>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.</p>

<table class="sub" width="100%" border="0" cellspacing="0" cellpadding="2">
<tr><th class="top">Symbol</th>
    <th class="top">Meaning</th></tr>
<tr><td valign="top">@</td>
    <td>Directly before a section heading, eg @MOBILES</td></tr>
<tr><td valign="top">!</td>
    <td>New mob, object or room, precedes a vnum, eg !1023</td></tr>
<tr><td valign="top">&gt;</td>
    <td>Subsection, followed by the name of the subsection, e.g.
    <blockquote><code>
    &gt;MobProgs
    </code></blockquote></td></tr>
<tr><td valign="top">?</td>
    <td>New section in a subsection, this is rare and will be explained later.</td></tr>
<tr><td valign="top">.</td>
    <td>End of a section or subsection</td></tr>
<tr><td valign="top">$</td>
    <td>String field, ended by a tilde '~', e.g. 
    <blockquote><code>
    $Name skeletal knight~
    </code></blockquote></td></tr>
<tr><td valign="top">#</td>
    <td>Number field, e.g.
     <blockquote><code>
     #Level 100
     </code></blockquote></td></tr>
<tr><td valign="top">%</td>
    <td>Lookup table, field name is followed by the name of the table,
    The values are a space separated string, e.g.
    <blockquote><code>
    %Flags area	  verbose hidden~
    </code></blockquote></td></tr>
<tr><td valign="top">*</td>
    <td>Comment, the rest of the line is ignored.</td></tr>
</table>

<p>The following is a sample of how the format can be used.</p>

<pre>
* 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:
&gt;Favourite			* &gt;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
</pre>

</td></tr>

<tr><th class="heading">
<h2>Area File Sections</h2>
</th></tr>

<tr><td>

<p>There are six basic sections in the area file, as follows:</p>

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

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>The @AREA Section</h2>
</th></tr>

<tr><td>

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

<pre>
@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
</pre>

<p>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.</p>

<p>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.</p>

<p>The area flags at this stage are:</p>

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

</td></tr>

<tr><th class="heading">
<h2>The @HELPS Section</h2>
</th></tr>

<tr><td>

<p>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.</p>

<p>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.</p>

<pre>
@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.
~
.
</pre>

<p>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).</p>

<p>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.</p>

<p>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.</p>

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

</td></tr>

<tr><th class="heading">
<h2>The @SOCIALS Section</h2>
</th></tr>

<tr><td>

<p>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
<code>socials.txt</code> file.</p>

<pre>
@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!!!~
.
</pre>

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>The @MOBILES Section</h2>
</th></tr>

<tr><td>

<p>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.</p>

<pre>
@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
&gt;Race            God~			* as you can see, he is a god
&gt;Specfun         spec_cast_adept~	* special function, optional
***** mobprogs subsection, optional also
* see mobprogs.txt for more info.
&gt;MobProgs
?%Type mobprogs    greet_prog~
  $Args              100~
  $Comlist
say Hey, you, $n, can you dig me out?
~
  .
</pre>

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

<p>The '<b>Name</b>' 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.</p>

<p>The '<b>Short</b>' 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.</p>

<p>The '<b>Long</b>' 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.</p>
<p>To illustrate this...</p>
<blockquote><code>
$Long	   An old woman totters down the street~
</code></blockquote>
<p>...is incorrect.  And...</p>
<blockquote><code>
$Long	   An old woman totters down the street.
<br></br>~
</code></blockquote>
<p>...is correct.</p>

<p>The '<b>Desc</b>' 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.</p>

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

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

<p>The '<b>Race</b>' is a race chosen from the list in
<code>const.c</code>:</p>
<blockquote>
    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.
</blockquote>
<p>For an updated list check const.c and it's race_table.</p>

<p>'<b>Sex</b>' is either male, female or neutral, dont forget that this is a
lookup also.</p>

<p>The '<b>Align</b>' 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.</p>

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

<p>'<b>Parts</b>' 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 <code>bit.c</code>.</p>

<h4>Optional sections</h4>

<code>&gt;Specfun   spec_thief~</code>

<p>This associates a special function to the character:</p>

<dl>
<dt>spec_breath_any</dt><dd>Dragon breath randomly chosen from the 5 below</dd>
<dt>spec_breath_acid</dt><dd>Acid Breath</dd>
<dt>spec_breath_fire</dt><dd>Fire Breath</dd>
<dt>spec_breath_frost</dt><dd>Frost Breath</dd>
<dt>spec_breath_gas</dt><dd>Gas Breath</dd>
<dt>spec_breath_lightning</dt><dd>Lightning Breath</dd>
<dt>spec_cast_adept</dt><dd>Healer</dd>
<dt>spec_cast_cleric</dt><dd>Combative Cleric</dd>
<dt>spec_cast_ghost</dt><dd>Undead ghost (repop during night, gone by day)</dd>
<dt>spec_cast_judge</dt><dd>Combative Mage in Mega1.are</dd>
<dt>spec_cast_mage</dt><dd>Combative Mage (generic)</dd>
<dt>spec_cast_psionicist</dt><dd>Combative Psionicist</dd>
<dt>spec_cast_undead</dt><dd>Undead (generic)</dd>
<dt>spec_cast_god</dt><dd>Extremely powerful caster from all spheres.</dd>
<dt>spec_executioner</dt><dd>Executioner</dd>
<dt>spec_fido</dt><dd>Corpse-eating mobile</dd>
<dt>spec_guard</dt><dd>Midgaard Cityguard</dd>
<dt>spec_janitor</dt><dd>Midgaard Janitor</dd>
<dt>spec_poison</dt><dd>Poisonous Bite</dd>
<dt>spec_repairman</dt><dd>Bashed Door Repairman</dd>
<dt>spec_thief</dt><dd>Pick-pocketing Thief</dd>
<dt>spec_safe</dt><dd>Impossible to attack mobile</dd>
<dt>spec_peacemaker</dt><dd>Teleports around stopping fights</dd>
<dt>spec_deaf</dt><dd>Is REALLY deaf</dd>
<dt>spec_weevil</dt><dd>Is extremely annoying</dd>
<dt>death_explode</dt><dd>Goes *bang* when it dies</dd>
<dt>death_ghost</dt><dd>Doesn't leave a corpse</dd>
</dl>

<pre>
&gt;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)
.
</pre>

<p>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.<p>

</td></tr>

<tr><th class="heading">
<h2>The @OBJECTS Section</h2>
</th></tr>

<tr><td>

<p>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.</p>

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

<pre>
@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?
&gt;Values				* type-specific values
0~ 0~ 0~ 0~
.
&gt;Affect				* Standard type of affect.
  %Location apply hitroll~
  #Modifier -2
.
&gt;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~
.
&gt;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~
&gt;Values
 ~ 0~ 0~ 1~
.
&gt;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.
.
.
</pre>

<p>The '<b>vnum</b>' is the virtual number of the object.</p>

<p>The '<b>Name</b>' is words which can be used in commands to identify the
object.</p>

<p>The '<b>short</b>' 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.</p>

<p>The '<b>long</b>' 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&gt;'.</p>

<p>The '<b>action</b>' 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...</p>

<p>The '<b>Type</b>' 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.</p>
<blockquote>
	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
</blockquote>

<p>'<b>Extra</b>' flags which are pretty well self explanatory, these are
explained somewhat where they are defined in <code>const.h</code></p>
<blockquote>
	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
</blockquote>

<p>'<b>Wear</b>' flags tell where you can wear the object, in particular the 'take'
flag determines whether you can pick it up or not:</p>
<blockquote>
	take, finger, neck, body, head, legs, feet, hands, arms, shield,
	shoulders, waist, wrist, wield, double, hold, face, float, ankle,
	horns, wings, ear, nose
</blockquote>

<p>'<b>Material</b>' is what the item is made from (in order of toughness):</p>
<blockquote>
	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
</blockquote>

<p>'<b>Weight</b>' is just that and '<b>Cost</b>', an optional value
determines the value of the object.  '<b>Level</b>' 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).</p>

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

<p>'<b>Affect</b>': 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.</p>

<p>First is the standard '<b>Affect</b>' section:</p>

<pre>
&gt;Affect
  %Name skill &lt;skill/spell&gt;~
  %Location apply &lt;location&gt;~
  #Modifier &lt;amount&gt;
  %Bits affect &lt;affect-bits&gt;~
.
</pre>

<dl>
<dt>&lt;skill/spell&gt;</dt>
<dd>
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.
</dd>
<dt>&lt;location&gt;</dt>
<dd>is where the affect will apply:
<blockquote>
	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
</blockquote></dd>
<dt>&lt;amount&gt; is, of course, by how much &lt;location&gt; is modified.</dd>
<dt>&lt;affect-bits&gt;</dt>
<dd> is the bits to give to the character, see the 
<a href="#@MOBILES">@MOBILES</a> section</dd>
</dl>

<p>Permanent, Continuous and Delayed:</p>

<pre>
&gt;Affect
  %Name skill &lt;'permanent' / 'continuous' / 'delayed'&gt;~
  %Location skill &lt;spell&gt;~
.
</pre>

<p>For the '<b>Name</b>' 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.</p>

<p><b>NOTE:</b> 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.</p>

      <p>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.</p>

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

<p><b>NOTE:</b> 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.</p>

<p>Extra descriptions of the object are added by the '<b>ExDesc</b>'
subsection:</p>
<blockquote>
	<p>'<b>Keyword</b>' is the keywords used to get the text (ie 'look keyword')</p>
	<p>'<b>Text</b>' is the text shown when someone looks.</p>
</blockquote>
<p>This section is finished by a full-stop.</p>


<h3>Meaning of Value Numbers by Item Type</h3>

<p>As mentioned above, the '<b>value</b>' 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.</p>

<p><b>NOTE:</b> 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])</p>

<p>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:<p>

<table class="sub" border="0" cellspacing="0" cellpadding="2">
<tr><th class="topleft">Item Type</th>
    <th class="top">Values</th></tr>
<tr><th valign="top" class="left">LIGHT</th>
    <td>
    #2 - light hours (-1 infinite)
</td></tr>
<tr><th valign="top" class="left">SCROLL</th>
    <td>
    #0 - level	
    <br></br>$1 - spell name 1
    <br></br>$2 - spell name 2
    <br></br>$3 - spell name 3
</td></tr>
<tr><th valign="top" class="left">WAND</th>
    <td>
    #0 - level
    <br></br>$1 - max charges
    <br></br>$2 - current charges
    <br></br>$3 - spell name
</td></tr>
<tr><th valign="top" class="left">STAFF</th>
    <td>
    #0 - level
    <br></br>$1 - max charges
    <br></br>$2 - current charges
    <br></br>$3 - spell name
    </td></tr>
<tr><th valign="top" class="left">WEAPON</th>
    <td>
    $0 - offensive spell cast with a hit
    <br></br>#1 - minumum damage (unused)
    <br></br>#2 - maximum damage (unused)
    <br></br>%3 - type of hit (flagg lookup):
    <blockquote>
	hit, slice, stab, slash, whip, claw, blast, pound,
	crush, rip, bite, pierce, suction, chop
    </blockquote>
</td></tr>

<tr><th valign="top" class="left">ARMOUR (ARMOR)</th>
    <td>
    #1 - armour size (-1 fits all)
</td></tr>


<tr><th valign="top" class="left">POTION</th>
    <td>
    #0 - level
    <br></br>$1 - spell name 1
    <br></br>$2 - spell name 2
    <br></br>$3 - spell name 3
</td></tr>

<tr><th valign="top" class="left">PILL</th>
    <td>
    #0 - level
    <br></br>$1 - spell name 1
    <br></br>$2 - spell name 2
    <br></br>$3 - spell name 3
</td></tr>

<tr><th valign="top" class="left">PLANT</th>
    <td>
    #0 - level
    <br></br>$1 - spell name 1
    <br></br>$2 - spell name 2
    <br></br>$3 - spell name 3
</td></tr>
<tr><th valign="top" class="left">CONTAINER</th>
    <td>
    #0 - weight capacity
    <br></br>%1 - flags: closeable, pickproof, closed, locked, trapped, 
	weightless, hungry, holey
    <br></br>#2 - key vnum
</td></tr>
<tr><th valign="top" class="left">DRINK-CONTAINER</th>
    <td>
    #0 - capacity
    <br></br>#1 - current amount of liquid
    <br></br>%2 - liquid, by name:
    <blockquote>
	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
    </blockquote>
    #3 - non-zero if poisoned
</td></tr>
<tr><th valign="top" class="left">FOOD</th>
    <td>
    #0 - how many hours of fullness you get from eating it
    <br></br>#3 - non-zero if poisoned
</td></tr>
<tr><th valign="top" class="left">MONEY</th>
    <td>
    #0 - value of the pile of money
</td></tr>
<tr><th valign="top" class="left">TREASURE</th>
    <td>
    #0 - saleable value of the object (0 for level dependant)
</td></tr>
<tr><th valign="top" class="left">CORPSE PC
	<br></br>CORPSE NPC</th>
    <td>
    %0 - race of deceased
</td></tr>
<tr><th valign="top" class="left">FOUNTAIN</th>
    <td>
    %2 - liquid type (see drink-container)
</td></tr>
<tr><th valign="top" class="left">LIMB</th>
    <td>
    %0 - body parts actually on the limb (see bit.c)
</td></tr>
<tr><th valign="top" class="left">EXPLOSIVE</th>
    <td>
    #0 - explosive level
</td></tr>
<tr><th valign="top" class="left">PORTAL</th>
    <td>
    #0 - vnum of destination room
</td></tr>
<tr><th valign="top" class="left">BOOK</th>
    <td>
    $0 - skill/spell the book gives the reader.
    <br></br>#1 - percentage in skill/spell gained per study.
    <br></br>#2 - maximum percentage attainable by studying the book.
</td></tr>
<tr><th valign="top" class="left">FURNITURE, TRASH, KEY, BOAT</th>
    <td>(none)
</td></tr>

</table>


</td></tr>

<tr><th class="heading">
<h2>The @ROOMS Section</h2>
</th></tr>

<tr><td>

<p>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!</p>

<pre>
@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
&gt;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
.
&gt;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
.
&gt;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 &gt;Resets subsection
.	* end @ROOMS section
</pre>

<p>Each room starts with a !&lt;vnum&gt; like objects and mobiles.</p>

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

<p>The '<b>Desc</b>' is the long multi-line description of the room.  The original
help file had these words to say: <i>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.</i></p>

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

<p>'<b>Sector</b>' determines the sector type of the room:</p>
<blockquote>
	inside, city, field, forest, hills, mountain, water, noswim,
	underwater, air, desert, space, swamp
</blockquote>

<p>The '<b>&gt;Door</b>' 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...</p>
<blockquote>
    <p>'<b>Keyword</b>' is the keywords of the door (if any) (optional)</p>
    <p>'<b>Desc</b>' is the description of the exit/door (optional)</p>
    <p>'<b>ToRoom</b>' is the vnum of where the exit goes to</p>
    <p>'<b>flags</b>' is what the door is:</p>
    <blockquote>
	door, closed, locked, bashed, bashproof,
	pickproof, passproof, trapped, hidden
    </blockquote>
</blockquote>

<p>The '<b>&gt;ExDesc</b>' sections are for extra description like on
objects</p>
<blockquote>
    <p>'<b>Keyword</b>' is the keywords.</p>
    <p>'<b>Text</b>' is the text for the extra description.</p>
</blockquote>


<h3>&gt;Resets Section</h3>

<p>The '<b>&gt;Resets</b>' section is more complicated than the other
subsections as they have many commands and they must be ordered correctly to
work properly.</p>

<p>The commands are:</p>

<table class="sub" border="0" cellspacing="0" cellpadding="2">
<tr><th class="left">M</th><td>load a mobile</td></tr>
<tr><th class="left">G</th><td>equip object to mobile</td></tr>
<tr><th class="left">E</th><td>give object to mobile</td></tr>
<tr><th class="left">O</th><td>load an object to the room</td></tr>
<tr><th class="left">P</th><td>put object in object</td></tr>
<tr><th class="left">R</th><td>randomize room exits</td></tr>
</table>

<dl>
<dt>M &lt;vnum&gt; &lt;max&gt;</dt>
<dd>
loads a mobile of vnum &lt;vnum&gt; into the room.  The maximum number stops
the game from continually loading more every reset.  If &lt;max&gt; is
positive the game wont reset unless there are less than this number of these
mobiles in the entire game.  if &lt;max&gt; is negative the game will count
only the mobiles in the room ensuring, this only works for 'sentinel' flagged
mobiles.  e.g.
<blockquote><pre>
  M 700 -2	* Maximum of two mobs in the room.
  M 700 10	* Maximum of 10 mobs in the world.
</pre></blockquote>
</dd>
<dt>G &lt;vnum&gt;</dt>
<dd>
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.
</dd>
<dt>E &lt;vnum&gt; &lt;wear-loc&gt;~</dt>
<dd>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:
<blockquote>
	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
</blockquote></dd>
<dt>O &lt;vnum&gt;</dt>
<dd>
loads the object &lt;vnum&gt; into the room if there isn't allready one
there.
</dd>
<dt>P &lt;vnum&gt; &lt;container-vnum&gt;</dt>
<dd>
loads the object &lt;vnum&gt; into &lt;container-vnum&gt; object if it's
there.  this also resets the container flags (i.e. closes it and so on)
</dd>
<dt>R &lt;number&gt;</dt>
<dt>R 0 &lt;door-flags&gt;~</dt>
<dd>
In the first instance this shuffles the exits around, up to the exit number
&lt;number&gt;, number is from 2 to 6, if it is 5 then exits 0 to 4 get
shuffled (ie north, east, south, west and up)
<br></br>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.
</dd>
</dl>

</td></tr>

<tr><th class="heading">
<h2>Colour</h2>
</th></tr>

<tr><td>

<p>Colour codes start with a '<b>&amp;</b>' and they can be any of the
following (lower case - regular, upper case - bold, digit - background):</p>

<table class="sub" border="0" cellspacing="0" cellpadding="2">
<tr><th class="topleft">Colour</th>
    <th class="top">Foreground</th>
    <th class="top">Bold Foreground</th>
    <th class="top">Background</th>
</tr>
<tr><th class="left">black</th>
    <td>k</td><td>K</td><td>0</td></tr>
<tr><th class="left">red</th>
    <td>r</td><td>R</td><td>1</td></tr>
<tr><th class="left">green</th>
    <td>g</td><td>G</td><td>2</td></tr>
<tr><th class="left">yellow</th>
    <td>y</td><td>Y</td><td>3</td></tr>
<tr><th class="left">blue</th>
    <td>b</td><td>B</td><td>4</td></tr>
<tr><th class="left">magenta</th>
    <td>m</td><td>M</td><td>5</td></tr>
<tr><th class="left">cyan</th>
    <td>c</td><td>C</td><td>6</td></tr>
<tr><th class="left">white</th>
    <td>w</td><td>W</td><td>7</td></tr>
</table>

<p>Colour codes are also used for special characters</p>

<table class="sub" border="0" cellspacing="0" cellpadding="2">
<tr><th class="left">&amp;-</th>
    <td>tilde (~)</td></tr>
<tr><th class="left">&amp;/</th>
    <td>new line</td></tr>
<tr><th class="left">&amp;&amp;</th>
    <td>ampersand (&amp;)</td></tr>
<tr><th class="left">&amp;!</th>
    <td>vertical bar (|)</td></tr>
<tr><th class="left">&amp;f</th>
    <td>flashing text</td></tr>
<tr><th class="left">&amp;u</th>
    <td>underlined text (mono screens only)</td></tr>
<tr><th class="left">&amp;r</th>
    <td>reverse video</td></tr>
<tr><th class="left">&amp;*</th>
    <td>bell sound (watch it!)</td></tr>
<tr><th class="left">&amp;n</th>
    <td>no colour/reset colour</td></tr>
</table>

<p>Remember to finish with a '&amp;x' to revert to the default colour, some
codes require a &amp;n also before the &amp;x.</p>

<p>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.</p>

</td></tr>

<tr><th class="heading">
<h2>Summary</h2>
</th></tr>

<tr><td>

<p>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...</p>

<p>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.</p>

<p>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.</p>

<p>Any enquiries just mail me 
<a href="mailto:mwt02@uow.edu.au">mwt02@uow.edu.au</a></p>

<p><div align="right">-- Symposium</div></p>

</td></tr>

<tr><th class="heading">
<h2>Spells by Type</h2>
</th></tr>

<tr><td>

<p>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).</p>

<h3>No Target Or Special Spells</h3>

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

<h3>Offensive/Attacking Spells</h3>

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

<h3>Defensive Spells</h3>

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

<h3>Self-Only Spells</h3>

<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr><td>adrenaline control </td><td>biofeedback </td>
    <td>cell adjustment </td><td>change sex </td></tr>
<tr><td>cold barrier </td><td>complete healing </td>
    <td>concentration </td><td>dark claws </td></tr>
<tr><td>detect alignment </td><td>detect hidden </td>
    <td>detect invis </td><td>displacement </td></tr>
<tr><td>energy containment </td><td>enhanced strength </td>
    <td>familiar </td><td>fast talk </td></tr>
<tr><td>fire screen </td><td>flaming shield </td>
    <td>flesh armour </td><td>gotterdammerung </td></tr>
<tr><td>magic awareness </td><td>mental barrier </td>
    <td>phase shift </td><td>prayer </td></tr>
<tr><td>protection </td><td>psychic healing </td>
    <td>stone skin </td><td>teleport </td></tr>
<tr><td>thought shield </td><td>word of recall </td></tr>
</table>

<h3>Object Target Spells</h3>

<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr><td>charge weapon </td><td>claim item </td>
    <td>create water </td><td>detect poison </td></tr>
<tr><td>enchant armour </td><td>enchant weapon </td>
    <td>enhance armour </td><td>flame of god </td></tr>
<tr><td>gift item </td><td>glamour </td>
    <td>harmonise </td><td>holy weapon </td></tr>
<tr><td>ice weapon </td><td>identify </td>
    <td>recharge item </td><td>transmute </td></tr>
<tr><td>vampiric weapon </td></tr>
</table>

 </td></tr>
</table>
</body>
</html>