<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta name="GENERATOR" content="Microsoft Visual Studio 6.0">
<title></title>
</head>
<body alink="#0000ee" bgcolor="#ffffff" link="#0000ee" text="#000000"
vlink="#551a8b">
<a href="#appi"><img
src="images/paperclip.jpg" alt="Index" align="left" height="35"
width="27">
</a>
<p style="text-align: center;" align="center"> <strong><span
style="font-size: 18pt;"><font size="6">The Novice Archon's Guide</font>
</span></strong><b><span style="font-size: 18pt;"><br>
<font size="6">to CoffeeMud 5.2</font> </span></b></p>
<p style="text-align: center;" align="center"><strong>By Archon Grothus Gallslanger
of the Free City of Maltan</strong></p>
<p style="text-align: center;" align="left"><strong><img
src="images/mug.jpg">
</strong></p>
<p><strong><a name="construct"><strong><font color="royalblue" size="5">World
Construction and Destruction</font> </strong></a> </strong></p>
<p>Causing buildings and towers to appear along paved streets, mountains to
rise from the dust, and then breathing life into this worlds denizens may
seem like a daunting task, but you will quickly discover that it is not so.
All it takes is some careful planning, and educated execution.</p>
<p>Towards that end, but before we get started properly on the business of
molding a universe, we must needs take a moment to reflect on the
powers of the Archon, and how the universes underlying laws are navigated.
Herein, therefore, I have copied from the sacred scrolls the archaic
and confusing runes of "CoffeeMud Administration" for your consideration.</p>
<p align="left"><strong><font color="red" size="5"><a name="admin">CoffeeMud
Administration</a></font> </strong></p>
<p align="left"> The administration of your CoffeeMud server is done
from within the game server itself, when you are logged in as your
Archon player. Some functions can be performed from the
<a href="MUDGrinder.html">MUDGrinder</a>.</p>
<p align="left"><em>AHELP<br>
</em>This is the command that Archons will use to
get help on all of the commands in this section, on various administrative
topics, and on all of the various building "tools" discussed elsewhere
in this document, including such things as behaviors and properties.
The atopics command can give you a comprehensive list of all the
topics you can get help on with ahelp.</p>
<p align="left"><em>ANNOUNCE<br>
</em>If there is some message you wish to give to
everyone presently on your mud, this is the surest way to make sure
they receive it.</p>
<p><em>AFTER<br>
</em>This command lets the Archon do things after
an elapsed time, or even periodically.</p>
<p><em>AS<br>
</em>This command lets the Archon do anything as
another player.</p>
<p align="left"><em>AT<br>
</em>This command lets the Archon do anything anywhere,
regardless of where he is!</p>
<p align="left"><em>BAN<br>
</em>Deadly, but necessary, this command allows you
to specify player names, or partial player names, or IP addresses
or IP ranges that you wish to keep OUT of your mud.</p>
<p align="left"><em>BEACON<br>
</em>The beacon command is used to change the unique
home, start room, or recall room of either the Archon, or some targeted
player. Rarely used, it is typically invoked only as reward
for a player or perhaps a lesser admin.</p>
<p align="left"><em>BOOT<br>
</em>If a player becomes troublesome, or you just
want them to go away, you will use this power to knock them temporarily
out of your mud, regardless of where they are in your world.
To make them STAY away, you will have to investigate commands such
as destroy or ban.</p>
<p align="left"><em>CHARGEN<br>
</em>This little tool accepts a character class
name and a level, and it shows you the stats of an "average" player
of that class and level. Although it's not a vital administration
tool, CharGen can be a helpful aid in the construction of monsters,
perhaps.</p>
<p align="left"><em>CLOAK<br>
</em>This command makes the player unlisted in commands
like who, chanwho, and on web player lists.</p>
<p align="left"><em>COPY<br>
</em>Depending on the argument, this command can
make copies of almost anything in your mud, from rooms to monsters
and items. The thing you want to copy must exist somewhere in
the world for you to properly copy it. You can even specify how
many things you wish to copy, for those moments when one pot pie just
won't do.</p>
<p align="left"><em>CREATE<br>
</em>Depending on the argument, this command can
bring almost anything into existence, from rooms to doors, from
monsters to items. The create command is discussed at length
in the sections on building rooms and areas.</p>
<p align="left"><em>DESTROY<br>
</em>This powerful command can be used to banish
objects and mobs, rooms and areas, or even players -- permanently. A
player (user) need not be online to be destroyed. The destroy command,
as it relates to rooms, exits, items, and mobs, is discussed further
in the sections on building rooms and areas. </p>
<p align="left"><em>DEVIATIONS<br>
</em>Can show you the difference between your world
as it is compared with the standards at the end of this document.</p>
<p align="left"><em>DRESS<br>
</em>The quick way to get clothing, weapons and armor
on your mobs from the command line.</p>
<p align="left"><em>DUMPFILE<br>
</em>When you want to view some text file on your computer
through the MUD.</p>
<p align="left"><em>EXPORT<br>
</em>If you need a backup to your database, you can
save your areas one at a time as files, for reimportation in the
event of a disaster. This command will generate files with the
extension .cmare. They are XML formatted text files containing
all the data you told the system to export. In addition to rooms
and areas, you can also specifically export players, some items or mobs
from a room. The import command could then be used later to load
the data you exported back in.</p>
<p align="left"><em>GMODIFY<br>
</em>Quickly search for all the monsters, items,
or rooms that match your search criteria. You can also optionally
modify the found fields with this command.</p>
<p align="left"><em>GOTO<br>
</em>Allows the Archon to zap him or herself directly
to the room or mob of his or her choice. The argument is a
valid Room ID, room name, mob name, or area name. You will find
yourself using the goto command quite a bit. Walking everywhere
sucks.</p>
<p><em>I3<br>
</em> This module is used to manage InterMud 3 chatting
channels. I3 is a component of CoffeeMud that provides for
chatting channels which span across many many muds in cyperspace,
allowing players and admins to talk to folks playing on other muds.</p>
<p><em>IMC2<br>
</em>This module is used to manage InterMud Chat
2 information. IMC2 is a component of CoffeeMud that
provides for chatting channels which span across many many muds in
cyperspace, allowing players and admins to talk to folks playing on
other muds.</p>
<p> <em>JRUN<br>
</em>This command can be used to execute Javascript
scripts located on the local hard drive. If the gods have given
you this power, they have great trust in you indeed.</p>
<p align="left"><em>IMPORT<br>
</em>Import will suck in one or more data files
and recreate rooms, areas, players, mobs, items, and lots of other
stuff from the contents of those files. The data files
that import will successfully read include (of course) the CoffeeMud
.cmare files discussed under the export command. In addition,
import will also take in area data files from other MUDs,
such as ROM, CircleMUD, and others. Of the non-CoffeeMud area
files, the ROM format is by far the best supported.</p>
<p align="left"><em>LINK<br>
</em>This command will cause two places to come together,
making travel between them much easier.</p>
<p align="left"><em>LIST<br>
</em>The Archon is able to list lots of different
things, for many different reasons. "list users" will show you
all of the players, and when they logged on last. This is useful
for weeding out olde players (see DESTROY below). "list
threads" will show you how many Java threads are active. "list
ticks" will show you all the objects making use of those threads! "list
reports" will show you your resource usage. "list staff" will
show you a list of your areas and any Area staff defined for them. You
may also list things like locales, items, weapons, armor, mobs, and other
things discussed further down in the sections on world building.</p>
<p align="left"><em>LOAD<br>
</em>This command will cause a text or file resource
to be brought into memory. What happens to it from there is
your business.</p>
<p align="left"><em>MERGE<br>
</em>This powerful tool is rarely used, but is vital
if you need to make small changes to identical items or mobs
scattered all around your world. It uses item or mob data gathered
from the export command to merge with the items and mobs
you specify in the real world, making the necessary world corrections that
you want it to.</p>
<p align="left"><em>MODIFY<br>
</em>If something which exists is not quite right,
this command can make it right. By telling the system exactly
what you want to modify, you can change it into what it ought to be.
The modify command is discussed further in the sections on
building rooms and areas.</p>
<p align="left"><em>MULTIWATCH<br>
</em>A little tool which allows an Archon to gather
evidence against multiplaying players.</p>
<p align="left"><em>NOPURGE<br>
</em>Prevent a player from ever being auto-purged
due to not logging in.</p>
<p align="left"><em>ORDER<br>
</em>Although any player may order around their followers,
an Archon can order ANYONE to do ANYTHING.</p>
<p align="left"><em>POOF<br>
</em>This command lets you modify the messages seen
when you use GOTO to move from room to room.</p>
<p align="left"><em>POSSESS<br>
</em>Easily the most fun part of being an Archon
is to possess one of the monsters and harass the players, making
them think the monsters have truely come to life! Some enjoy
this so much that they forget to return to their true bodies!</p>
<p align="left"><em>PURGE<br>
</em>A moderate form of the DESTROY command which
allows you to clear out mobs or items without affecting whether or
not they will repopulate (rejuv) later on.</p>
<p align="left"><em>RESET<br>
</em>Giving a parameter of "room" or "area", this
command will make everything reset back to the state it was last saved
at.</p>
<p align="left"><em>RESTRING<br>
</em>A moderate form of the MODIFY command which
allows only editing a few fields on items.</p>
<p align="left"><em>SAVE<br>
</em>This command is used to update your CoffeeMud
database. If you use "save user", the system will update
the players data. "save room" can make aspects of a
room permanent by saving it to the database. Saving rooms is
discussed further below in the section on building.</p>
<p align="left"><em>SESSIONS<br>
</em>This command will list all of the players online,
and perhaps a few who are on their way to being online.</p>
<p align="left"><em>SHELL<br>
</em>This command will allow you to view the files
in your coffeemud folder, copy and delete files, and even put them
in your database. Saving files in the database? See
Appendix H for more info on the CoffeeMud VFS system.</p>
<p align="left"><em>SNOOP<br>
</em>This command can let you watch other players
as they wander your world. This command gives you a second pair
of eyes to look over the shoulder of the player of your choice.
You will see everything they see, almost as if you were them yourself.</p>
<p align="left"><em>STAT<br>
</em>This command allows you to do everything from
view the statistical happenings on your world, to the simple charicteristics
of a target mob or player.</p>
<p align="left"><em>SYSMSGS<br>
</em>This important little trick is vital to those
doing CoffeeMud development from the command line. It gives the
Archon a unique vision of the world sometimes necessary for his work.
For one, it makes everything visible to the Archon regardless of its
state of visibility, darkness, fog, or any/all other conditions.
It also reveals the unique identifying codes, classes, and names
by which things are known or identified. All of this is very
important when trying to modify or destroy things you no longer want
in your world.</p>
<p align="left"><em>SHUTDOWN<br>
</em>Although CoffeeMud can also be brought down
by killing the Java virtual machine, the proper way to shut down
CoffeeMud is by entering the shutdown command. This will ensure
that all users are saved back to disk, and that the system goes down
in a polite and orderly manner. </p>
<p><em>TAKE<br>
</em>Use this command if a player or monster has
something that doesn't belong to them, and you need it back.</p>
<p align="left"><em>TICKTOCK<br>
</em>This simple little power will advance the world's
time clock by one hour every time it is used. If it's day,
and you want it to be night, or vis-versa, this is the way to go.</p>
<p align="left"><em>TRAILTO<br>
</em>A tool to tell the Archon the twistings and
turns from where he is, to where he'd like to be.</p>
<p><em>TRANSFER<br>
</em>Allows the Archon to zap someone directly
to the room or mob of his or her choice. The argument is either
ALL or the name of the target, and a valid Room ID, room name, mob name,
or area name. Use this when you want someone to go somewhere NOW.</p>
<p align="left"><em>UNLINK<br>
</em>This command will separate two places from
one together.</p>
<p align="left"><em>UNLOAD<br>
</em>If you've made any changes to your help files
or other resources, and don't want to have to reboot the whole MUD,
you can use this command as a short-cut. It unloads "resources"
(try "list resources") that are in memory. By unloading resources
from memory, you force CoffeeMud to reload your changes from disk.</p>
<p align="left"><em>WHERE<br>
</em>Allows the Archon to who all is online, and
where they are on the map. An argument, such as "where orc", may
be given to specify a specific mob name. That way, you can
find out where you might have misplaced that wandering zombie.
Where can also be used to locate rooms, items, or almost anything
else. The mind boggles at the possibilities.</p>
<p align="left"><em>WIZEMOTE<br>
</em>The omnipresence of the Archon is reflected
in this command, which causes a message to appear throughout the
world.</p>
<p align="left"><em>WIZINV<br>
</em>Sometimes an Archon wants a little privacy,
and this command gives it to him or her. It will make the
Archon completely undetectable, allowing free movement without harassment
from players or monsters.</p>
<p align="left"><strong><font color="red" size="5"><a name="security">Security</a></font></strong>
</p>
<p align="left">CoffeeMud has an extremely flexible and powerful security
system. It allows the Archons to designate who has which
powers, and where they may exercise them. Powers can be
doled out to minions as they deserve and warrant. </p>
<p align="left">By default, all players who have levels in the class
of Archon are all powerful system administrators, who may perform
all of the powers discussed in the last section and many many more.
Of course, this does not NEED to be the definition of the all powerful,
but since it is for starters, we will continue as if Archon
and 'All Powerful Super Duper System Administrator' are indeed
and always the same. If you wish to change it, the SYSOPMASK
setting in your coffeemud.ini file is the place to go, or to
the <a href="MUDGrinder.html">MUDGrinder</a> has a wonderful
tool for security in the Control Panel.</p>
<p align="left">While players are just players, and are unable to wipe their
own noses without an Archon to provide them a tissue, they may
also be much more with the wave of an Archon's hand. The Security
setting one sees when using the command MODIFY USER <em>playername</em>
from the command line can be used to give players a small portion
of the creative powers. By combining this with the Staff setting
under Areas (see below), players can have their powers narrowed to
certain spheres of influence. A customized Character Class
can also be used to expand the creative power of players by adding Security
Group Levels to your players character class. See the section
on creating your own custom character classes for more information on
this. </p>
<p align="left">To upgrade the powers of a player, you may use the MODIFY
command as mentioned previously. From the Security setting,
players who are not SYSOPS may be granted very specific privileges
by adding special security codes. Each of the privileges/flags
may be limited to specific areas, or available globally. Each entry
listed under Security for a player may be either a security Group,
or a specific security code. Security Groups, like the SYSOPMASK
mentioned above, are also defined in the coffeemud.ini file or
from the <a href="MUDGrinder.html">MUDGrinder</a>
Control Panel. A Security Group consists
of a group name, and a set of string codes representing privileges
for that group. The string codes are the security flags. The
Group names in the Control Panel start with the string "GROUP_",
but only the part after that string is a valid group name. You
should never include the "GROUP_" part when entering a group name into
a players Security settings. </p>
<p align="left">Now, each individual security code which makes up each
of the groups is implicitly global (meaning the power may be used
anywhere), but can be qualified as area-only by prefixing
the code with the word AREA and a space. For example,
the security code "ANNOUNCE" by itself confers the global ability
to use the ANNOUNCE command. The security code "AREA ANNOUNCE"
means that the ANNOUNCE command can only be used inside areas where
the player is listed as Staff. See the section on Areas in this
guide for more information on Staff.</p>
<p align="left">Use HELP SECURITY, or access the Control Panel from the <a
href="MUDGrinder.html">MUDGrinder</a> for a list of recognized security
codes.</p>
<p><strong><font color="purple" size="5"><a name="planning">Building Your
World: Planning is the First Step</a></font></strong></p>
<p>Before a single bird can flitter through the skies that you opened up,
you must have planned the placement of that sky, and the song of
that bird. I am assuming you have been given some general area
to construct, some wicked kingdom, joyous elven city by the sea, or
some other such nonsense. If not, get one; decide on the general
theme of some area you wish to construct.</p>
<p>At this point I suggest you get a piece of graph paper or parchment.
Upon it you shall draw small squares next to each other.
Plot out every location you will create. The squares need not
be equal in size, but they need to all fit together somehow.
Before invoking the spells of creation, you should know where every
door leads, where every path ends, and if X indeed marks the spot,
where the X is.<br>
<br>
Inside each square, you shall make small notes.
What notes? Well, that's the next part of our story.</p>
<p><strong><font color="purple" size="5"><a name="rooms">Understanding Rooms</a></font></strong></p>
<p>At the foundation of the CoffeeMud world is the room. Now, a room
is not just some pink wallpapered play area, but simply a place.
Certainly a kitchen can be a room, as can a pink wallpapered play
area, but so can the bottom of a well, a stretch of rolling hills,
the top of a tall mountain, or a dragon’s lair deep underground.
Physical size does not matter with rooms; only your imagination can
determine that.</p>
<p>Every room has a general foundational type that defines it. That
type determines the behavior of that room day to day, whether it
is outside or inside, made of wood or stone, a mountain or a plain,
in darkness or light, a cliffside or deep in the ocean. The type
determines whether one breathes water or air, chops wood or fishes,
and how good the hunting is. This foundational type of every
room has a name: Locale. </p>
<p>If you log into CoffeeMud right now, you can list the available Locales
with the command "list locales". This list should include
many different types of locales, most of which are self-explanatory.
They include:</p>
<table bgcolor="yellow" border="1" cellpadding="1" cellspacing="1"
width="75%">
<tbody>
<tr>
<td style="width: 20%;" width="20%">CaveMaze
</td>
<td>a dark, dank, multi-room maze of caves</td>
</tr>
<tr>
<td>CaveRoom </td>
<td>dark and dank</td>
</tr>
<tr>
<td>CaveSurface </td>
<td>dark and dank ClimbableSurface</td>
</tr>
<tr>
<td>CityStreet </td>
<td>outside urban area</td>
</tr>
<tr>
<td>ClimbableLedge</td>
<td>the edge you must climb up to</td>
</tr>
<tr>
<td>ClimbableSurface </td>
<td>an area that can only be climbed or flown
through</td>
</tr>
<tr>
<td>Desert </td>
<td>a hot, dry, outside locale</td>
</tr>
<tr>
<td>DesertGrid </td>
<td>a hot, dry, multi-room outside locale</td>
</tr>
<tr>
<td>DesertMaze </td>
<td>a hot, dry, multi-room outside maze</td>
</tr>
<tr>
<td>DesertThinGrid </td>
<td>as DesertGrid but it uses less memory/more
cpu</td>
</tr>
<tr>
<td>EndlessOcean </td>
<td>huge multi-room, locale on the
ocean surface</td>
</tr>
<tr>
<td>EndlessSky </td>
<td>an endless, ~3D, multi-room, locale
up in the sky</td>
</tr>
<tr>
<td>EndlessThinOcean </td>
<td>As EndlessOcean but using less memory/more
cpu</td>
</tr>
<tr>
<td>EndlessThinSky </td>
<td>As EndlessSky but using less memory/more
cpu</td>
</tr>
<tr>
<td>FrozenMountains </td>
<td>a cold, outside, mountanous room</td>
</tr>
<tr>
<td>FrozenPlains </td>
<td>the cold snowy plans</td>
</tr>
<tr>
<td>GreatLake</td>
<td>endless, ~3D, multi-room, locale below
the lake surface</td>
</tr>
<tr>
<td>GreatThinLake</td>
<td>as GreatLake but using less memory/more
cpu</td>
</tr>
<tr>
<td>Hills </td>
<td>green rolling hills</td>
</tr>
<tr>
<td>HillsGrid </td>
<td>a huge multi-room rolling hilly area</td>
</tr>
<tr>
<td>HillsThinGrid </td>
<td>as HillsGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>HotRoom </td>
<td>a hot, stone, indoor place</td>
</tr>
<tr>
<td>IceRoom </td>
<td>a cold, icey, indoor place</td>
</tr>
<tr>
<td>IndoorInTheAir </td>
<td>such as a gap in a cave, or midway down
a pit.</td>
</tr>
<tr>
<td>IndoorShallowWater </td>
<td>a layer of underground water perhaps</td>
</tr>
<tr>
<td>IndoorUnderWater</td>
<td>under an underground lake</td>
</tr>
<tr>
<td>IndoorWaterSurface</td>
<td>on the surface of an underground lake</td>
</tr>
<tr>
<td>InTheAir </td>
<td>a place up among the clouds</td>
</tr>
<tr>
<td>Jungle</td>
<td>a thick hot overgrown forest</td>
</tr>
<tr>
<td>JungleGrid</td>
<td>a large multi-room overgrown hot forest</td>
</tr>
<tr>
<td>JungleThinGrid</td>
<td>as JungleGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>LargeCaveRoom</td>
<td>a cave room large enough to bring mounts
into</td>
</tr>
<tr>
<td>LargeStoneRoom</td>
<td>a stone indoor room large enough to bring
mounts into</td>
</tr>
<tr>
<td>LargeWoodRoom</td>
<td>a wooden indoor room large enough to bring
mounts into</td>
</tr>
<tr>
<td>MagicFreeRoom</td>
<td>an indoor, stone place where magic always
fails</td>
</tr>
<tr>
<td>MagicShelter </td>
<td>the basis for the mage "Shelter" spell --
do not use.</td>
</tr>
<tr>
<td>Mountains</td>
<td>an outside, mountanous region</td>
</tr>
<tr>
<td>MountainsGrid</td>
<td>an outside, mountanous multi-room of rock</td>
</tr>
<tr>
<td>MountainsThinGrid</td>
<td>as MountainsGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>MountainsMaze</td>
<td>an outside, mountanous maze of rock</td>
</tr>
<tr>
<td>MountainSurface</td>
<td>a climable mountainous place</td>
</tr>
<tr>
<td>MountainSurfaceGrid</td>
<td>a large, multi-room, climable mountainous
place</td>
</tr>
<tr>
<td>MountainSurfaceThinGrid</td>
<td>as MountainSurfaceGrid but using less mem/more
cpu</td>
</tr>
<tr>
<td>OverTheLedge</td>
<td>a room you can walk into, but then fall
doooowwwnn</td>
</tr>
<tr>
<td>Plains </td>
<td>out in the open fields</td>
</tr>
<tr>
<td>PlainsGrid </td>
<td>a huge multi-room, outdoor plains area</td>
</tr>
<tr>
<td>PlainsThinGrid </td>
<td>as PlainsGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>Road </td>
<td>out in the open road</td>
</tr>
<tr>
<td>RoadGrid </td>
<td>a huge multi-room, outdoor stretch of road</td>
</tr>
<tr>
<td>RoadThinGrid </td>
<td>as RoadGrid but using less memory, more
cpu</td>
</tr>
<tr>
<td>SaltWaterSurface</td>
<td>the surface of the ocean</td>
</tr>
<tr>
<td>SaltWaterThinSurface</td>
<td>as SaltWaterSurface but depths use less
memory/more cpu</td>
</tr>
<tr>
<td>SewerMaze</td>
<td>a wet, cave-like maze</td>
</tr>
<tr>
<td>SewerRoom</td>
<td>a wet, cave-like room</td>
</tr>
<tr>
<td>ShallowWater </td>
<td>a wet, outdoor area</td>
</tr>
<tr>
<td>Shore</td>
<td>some solid ground to fish from, if water
is nearby</td>
</tr>
<tr>
<td>StdGrid </td>
<td>the basis for all of the Grid locales --
do not use.</td>
</tr>
<tr>
<td>StdMaze </td>
<td>the basis for the maze locales -- do not
use</td>
</tr>
<tr>
<td>StdRoom </td>
<td>the basis for all other Locales, do not
use!</td>
</tr>
<tr>
<td>StdThinGrid </td>
<td>the basis for all of the ThinGrid locales
-- do not use.</td>
</tr>
<tr>
<td>StoneMaze </td>
<td>well lit indoor multi-room maze with stone
walls and ceiling</td>
</tr>
<tr>
<td>StoneRoom </td>
<td>well lit indoor room with stone walls and
ceiling</td>
</tr>
<tr>
<td>StoneGrid </td>
<td>well lit indoor multi-room locale with
stone walls and ceiling</td>
</tr>
<tr>
<td>StoneThinGrid </td>
<td>as StoneGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>Swamp</td>
<td>damp outdoor swampy region</td>
</tr>
<tr>
<td>SwampGrid</td>
<td>a large multi-room damp outdoor swampy
region</td>
</tr>
<tr>
<td>SwampThinGrid</td>
<td>as SwampGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>TreeSurface </td>
<td>a wooden ClimbableSurface, such as the trunk
of a tree</td>
</tr>
<tr>
<td>UnderSaltWater</td>
<td>beneath the ocean</td>
</tr>
<tr>
<td>UnderSaltWaterGrid</td>
<td>a multi-room 2D place beneath the ocean</td>
</tr>
<tr>
<td>UnderSaltWaterMaze</td>
<td>a multi-room 2D maze beneath the ocean</td>
</tr>
<tr>
<td>UnderSaltWaterThinGrid</td>
<td>as UnderSaltWaterGrid but using less mem/more
cpu</td>
</tr>
<tr>
<td>UnderWater </td>
<td>as wet as it gets... unless you are a fish
you won't live long</td>
</tr>
<tr>
<td>UnderWaterGrid </td>
<td>a huge multi-room underwater locale</td>
</tr>
<tr>
<td>UnderWaterThinGrid </td>
<td>as UnderWaterGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>UnderWaterMaze </td>
<td>a huge multi-room maze of underwater locales
-- be careful!</td>
</tr>
<tr>
<td>WaterSurface</td>
<td>the surface of a lake or river</td>
</tr>
<tr>
<td>WaterThinSurface</td>
<td>as WaterSurface but depths use less mem/more
cpu</td>
</tr>
<tr>
<td>WetCaveMaze </td>
<td>as CaveMaze, but extremely wet and nasty</td>
</tr>
<tr>
<td>WetCaveRoom </td>
<td>a wet and nasty CaveRoom</td>
</tr>
<tr>
<td>WoodRoom </td>
<td>well lit indoor room with wooden walls and
ceiling</td>
</tr>
<tr>
<td>WoodRoomGrid </td>
<td>well lit multi-indoor-room with wooden walls
and ceiling</td>
</tr>
<tr>
<td>WoodRoomThinGrid </td>
<td>as WoodRoomGrid but uses less memory/more
cpu</td>
</tr>
<tr>
<td>WoodRoomMaze</td>
<td>well lit multi-indoor-maze with wooden walls
and ceiling</td>
</tr>
<tr>
<td>Woods </td>
<td>thick with trees and life, the bright forest</td>
</tr>
<tr>
<td>WoodsGrid </td>
<td>thick with trees and life, multi-room expanse</td>
</tr>
<tr>
<td>WoodsThinGrid </td>
<td>as WoodsGrid but using less memory/more
cpu</td>
</tr>
<tr>
<td>WoodsMaze </td>
<td>thick with trees and life, a multi-room
maze of woodlands</td>
</tr>
</tbody>
</table>
<p>The type of room you pick can have an important impact on the residents
of your world. The type of room can determine whether there
is a sky above the players, whether players in the room are affected
by weather events, whether there is any light in the room by default,
whether nightfall affects the lighting in the room, whether players
drown or require swimming, what kinds of resources are available from
the various player resource-gathering common skills, and whether certain
spells, prayers, skills, or commands work properly (Dirt Kicking doesn't
work in ShallowWater, for instance).</p>
<p>For each room you are drawing on your graph parchment, you should note
in the Locale type of the room from the above list, or from the
list you received when you entered "list locales" into CoffeeMud.
Keep in mind that some rooms are multi-rooms. These Grids and
Mazes represent 2-Dimensional grids of rooms of a single sort.
The dimensions are entirely up to you, and can range from a thin 1x20
trail, to a wide 15x15 block. The mazes expand on this by creating
weaving paths through the grids.</p>
<p>The detailed properties of rooms are discussed further in the section
on creating rooms.</p>
<p><strong><font color="purple" size="5"><a name="exits">Understanding Exits</a></font></strong></p>
<p>Now surely you did not expect everyone to conjure him or herself from
place to place! Why, the pitiful halfling thieves would starve
in their holes if this were so. No, each of the rooms you have
drawn on your paper will be connected with things called Exits.</p>
<p>For any two rooms that one can travel between, there are always two exits.
One exit leads from the first room to the second. Another exit
leads from the second room to the first. Usually those exits
are the same, but they need not be if you don't want them to be so.</p>
<p>All exits will take a person from one room to another, and may even take
them back again if you choose. An exit can only be located
in one of six directions: North, South, East, West, Up, and Down.
The four compass directions are easy to fathom, but be careful with
up and down, as they need not be unhindered flight, or a reckless fall.
If, for instance, the destination room is a Locale like "InTheAir",
then Up obviously represents the open sky. If it is another "StoneRoom",
however, it probably represents a flight of stairs. The Down
direction may represent falling off a cliff, but it may also represent
a ladder down to the basement. Either way is fine.
</p>
<p>Exits, like rooms, can be of many different types. If you are still
in CoffeeMud, enter the command "list exits". The list you
receive describes the many connectors that can be mixed and matched
between rooms. Some include doors, and some include doors with
locks. There are walkways with pits, doors with needle traps,
and many others. By far the most common of these Exits is called
"Open". It describes a completely free and clear path between
the two rooms you are creating. Here is the official list:</p>
<p>
<table bgcolor="yellow" border="1" cellpadding="1" cellspacing="1"
width="75%">
<tbody>
<tr>
<td style="width: 25%;" width="25%">ClimbableExit</td>
<td>a passageway one must climb through</td>
</tr>
<tr>
<td>Door</td>
<td>an ordinary closed door</td>
</tr>
<tr>
<td>FlyingExit</td>
<td>a passageway one must fly through</td>
</tr>
<tr>
<td>GapExit</td>
<td>an exit one must jump across or fall and
DIE!</td>
</tr>
<tr>
<td>Gate</td>
<td>an ordinary closed gate</td>
</tr>
<tr>
<td>GenDoor</td>
<td>the maleable generic door</td>
</tr>
<tr>
<td>GenExit</td>
<td>the maleable generic exit</td>
</tr>
<tr>
<td>Grate</td>
<td>an ordinary closed grate in the street</td>
</tr>
<tr>
<td>HiddenClosedDoorway</td>
<td>the venerable secret door</td>
</tr>
<tr>
<td>HiddenWalkway</td>
<td>a way that can be walked through, but not
seen</td>
</tr>
<tr>
<td>Impassable</td>
<td>no one may go that way</td>
</tr>
<tr>
<td>LockedDoor</td>
<td>an ordinary locked door</td>
</tr>
<tr>
<td>LockedGate</td>
<td>an ordinary locked gate</td>
</tr>
<tr>
<td>NeedleDoor</td>
<td>a door trapped with a needle</td>
</tr>
<tr>
<td>Open</td>
<td>a normal walkable passageway</td>
</tr>
<tr>
<td>OpenDescriptable</td>
<td>an open walkway thats describable</td>
</tr>
<tr>
<td>OpenNameable</td>
<td>an open walkway thats nameable</td>
</tr>
<tr>
<td>PitOpen</td>
<td>a walkable passageway with a pit!</td>
</tr>
<tr>
<td>StdClosedDoorway</td>
<td>base class for closed doors</td>
</tr>
<tr>
<td>StdExit</td>
<td>base class for all exits, do not use!</td>
</tr>
<tr>
<td>StdLockedDoorway</td>
<td>base class for locked doors</td>
</tr>
<tr>
<td>StdOpenDoorway</td>
<td>base class for open walkways</td>
</tr>
<tr>
<td>TrappedDoor</td>
<td>a trapped and closed door</td>
</tr>
<tr>
<td>TrappedLockedDoor</td>
<td>a trapped and locked and closed door</td>
</tr>
</tbody>
</table>
</p>
<p>As you finish your graph parchment drawing, be sure to note those places
where there are doors, locked doors, pit traps, and open walkways.
If a door is one way, or if a door leads to one place when one
enters, but does not go back to there when one leaves, make a note
of that too. The doors listed above are ever vigilant in decorum--
doors that are opened by players will re-close in time, and locks are resecured.</p>
<p>However, it may come to pass that there is a rickety straw door to some
hut you wish to have, but it was not listed among your choices.
Fear not, for there is "GenExit" and "GenDoor". "GenExit"
stands for "Generic Exit", and represents the finest in Archon power.
A completely customizable exit flowing from one room to another.
And thusly are exits divided from each other: the GenExits and GenDoors
are customizable, flexible, changable, and otherwise maleable.
All the other exits, however, are "Standard", meaning they are not very
customizable at all, but they do load very quickly, and take up very
little memory compared to a GenExit. GenExits, as well as the other
features of exits, are discussed further in the section on creating exits.</p>
<p><br>
<strong><font color="purple" size="5"><a
name="mobintro">Understanding That Which Creepeth Upon the Land</a></font></strong></p>
<p>The denizens of your land are surely the greatest accomplishment you will
claim. From the lowly cooks in your kitchens to the great beasts in
the darkest dungeons, it is they who will be remembered by those who visit
your realm. </p>
<p>Funny then that for things so important, they should have such a short,
ugly sounding name: MOB. If you are in CoffeeMud, you can
list them: "list mobs". It will show you every creature that
can populate your cities, dwell in your dungeons, or hide in your
pantries. They are too numerous to list here. </p>
<p>If a creature is not listed there that you require, there is always the
GenMob, that nasty formless being that can be shaped by the Archon
to appear and behave exactly as it should. GenShopkeepers, GenPostman,
and GenBankers are available to provide valuable services
for your community. GenDeitys give your Clerics employment.
GenRideable mobs provide transport. For more devious spirits,
however, the GenUndead is also available, to strike fear in the hearts
of the purest cleric. These mobs just mentioned form the
troupe of "Generic" mobs, meaning they are customizable and changeable
from inside the mud. The other mobs listed are classified
as species "Standard" mob, meaning they are not nearly as customizable,
though they do load quickly, and take up much less memory than the "Generic"
mobs do.</p>
<p>GenMobs, as well as the features of MOBs, are discussed further in the
section on creating MOBs.</p>
<p><strong><font color="purple" size="5"><a name="itemintro">The Things We
Treasure</a></font></strong></p>
<p>Our last planning topic is that of the items that will be found in your
land. Some of them will be priceless once-in-a-lifetime creations.
Others will be reoccurring trapped chests that always seem to have
enough gold for those bold enough to continuously risk their guardians.</p>
<p>The items can be discovered using the "list items" command. Other
items include weapons, which can be discovered through "list weapons",
armor from "list armor", and other miscellaneous enchanted items
through "list magic". </p>
<p>For those items you need by are not present, there is also the "GenItem", "GenBoat",
"GenChair", "GenTable", "GenBed", "GenLimb", "GenCoins", "GenCorpse",
"GenKey", "GenLantern", "GenLightSource", "GenCigar", "GenPipe",
"GenMap", "GenResource", "GenLiquidResource", "GenFoodResource",
"GenRideable", "GenWallpaper", "GenJournal", "GenBook", "GenContainer",
"GenFood", "GenDrink", "GenWater", and "GenReadable". For the
fighting spirit there is the "GenWeapon", "GenStaff", and "GenArmor".
Among the formless magical items are "GenPill", "GenPowder",
"GenPotion", "GenScroll", "GenWand", and "GenSuperPill".
These items just mentioned form the gluttony of "Generic"
items, meaning they are customizable and changeable from inside the
mud. The other items listed are classified as "Standard"
items, meaning they are not nearly as customizable, though they do
load quickly, and take up much less memory than the "Generic" items
do. These and the many properties of items are discussed below
under the section on creating items.</p>
<p><strong><font color="purple" size="5"><a name="creation">The Art of Creation</a></font></strong></p>
<p>Before beginning, you should log into CoffeeMud and take yourself to some
place that is adjacent to the area you will be forming. You should
also cast the spell of natural enlightenment using the following
command: "sysmsgs". You should see an utterance that reads
"Extended messages are now: ON". </p>
<p>Now your eyes will behold new wonders when you look around the rooms:
You will see the Locale types of the room, the Room IDs that have
been assigned uniquely to each room, the Area IDs of the area you
are in. They should look like this:</p>
<p>Area :(MyArea)<br>
Locale: (StoneRoom) <br>
(MyArea#123) Joe Bob's Room</p>
<p>The first line lists the area name, the second line the locale type we
talked about earlier, and the third line lists the Room ID,
followed by the Room Name. Take note of them all, my friend,
and learn to appreciate their beauty. </p>
<p><strong><font color="blue" size="5"><a name="roomcreate">Creating Rooms</a></font></strong></p>
<p>Now that you have your plan laid out, it is quite time to being execution.
Gather your strength, and begin harnessing the power of the Archon,
for you will need every ounce of it when the wood and rock chips
start flying.</p>
<p>To create a new room most easily, you must first be standing in a
room adjacent to it, one that will be connected to it through
some exit. You will then utter the invocation of room creation,
summoning the Locale in the direction that the new room should be.
For instance, you wish to have a new room north of room "MyArea#123".
If room "MyArea#123” is already created, and the new room is
going to be of the "StoneRoom" Locale, you would bring yourself to
room "MyArea#123" and utter the words: "create stoneroom
north".</p>
<p><img alt="" src="images/createroom.gif">
</p>
<p>At this point, you should cover your ears, as the sound of a stone room
falling to the north is often quite disturbing. Between the
two rooms; the one you are standing in, and the one you have created,
will be a default exit: the Open exit. Most times, that is ok,
though changing it will be the subject of the next section.</p>
<p>However, once this is done, and the rooms are irrevocably linked, you
can still throw a small twist on things. If you are still
standing in room "MyArea#123" and wish to create a NEW StoneRoom
in the SAME direction, it can be done. Uttering the words "create
StoneRoom north" AGAIN and a new room is created. Now, what
happened with "MyArea#124" you’re wondering? It is still there,
and it still leads back to where you are standing -- a one way exit.</p>
<p><img alt="" src="images/createroom2.gif">
</p>
<p><strong><font color="blue" size="5"><a name="modrooms">Modifying Rooms</a></font></strong></p>
<p>For now, once you have created a new room, it is time to design the landscape
of it. To do this, you should enter the room through the
default Open exit that was created for you. You will find the
room plain and boring. </p>
<p>To give the room a new name and description, utter the invocation: "modify
room" and follow the promptings. The <em>display </em>property
is the short name that appears at the top of the room description,
while the <em>description </em>field is the long text. Type
whatever text you like into these fields, and feel the power as the
place takes on a new form dictated by your creative magic. These
two fields support the CoffeeMud color codes described in the Programmer's
guide, as well as line breaks using either %0D or \n. Normally,
that's all you need to know. However, these fields may also be
customized to display different text depending on the weather, season,
or the time of day. This last is done by starting the field with
the string <VARIES>, and following it with text surrounded by
the appropriate codes in the following format: <CODE>text</CODE>.
In all of these cases, the codes must be in uppercase. Valid codes
include: SUMMER, SPRING, WINTER, FALL, DAY, NIGHT, DUSK, DAWN, RAIN,
SLEET, SNOW, CLEAR, HEATWAVE, THUNDERSTORM, BLIZZARD, WINDY, DROUGHT,
DUSTSTORM, COLD, HAIL, CLOUDY.</p>
<p>Rooms of the Grid and Maze sort present unique challenges to the molder
of universes. In the first place, if you have SYSMSGS turned
on, you will notice that the room ID displayed is a little different.
In addition to the room ID of the parent room, there is an additional
set of parenthesis showing where you are in the big grid room.
It would look something like this:</p>
<p>Area :(Coffee Grounds) <br>
Locale:(Plains) <br>
(Coffee Grounds#19#(0,2)) The Demitasse Demesnes</p>
<p>In this case, we are in Coffee Grounds#19, child room at X=0, Y=2. </p>
<p>You will notice that you are unable to modify child rooms like this one.
In the case of Grids and Mazes, you must be inside the Parent room
to perform modifications. To get to the parent room, use the
GOTO command. In the example above, we would enter "goto Coffee
Grounds#19". This will allow us to properly modify the room,
and add any creatures (mobs) to it later on.</p>
<p>Once you are in the parent room of a Grid or Maze, you may use "modify
room" to modify the properties of the entire grid or maze.
You can modify things like the dimensions in the X and Y, to make
your grid anything from a long hallway to a giant hedge maze.
</p>
<p>Modifying the <em>display </em>and <em>description </em>fields also
has unique consequences inside a Maze or Grid. You may enter a random
selection of text strings to display into each of these fields, so long
as you remember to separate each individual text selection by the <P>
string. For example:</p>
<p>Display: 'First Display Title<P>Second Display Title<P>Third
Display Title'<br>
Description: 'First Description<P>Second Description<P>Third
Description'</p>
<p>The above, when placed in a grid or maze locale, will cause CoffeeMud
to select randomly among three different display title/description
combinations. Since there is an equal number of display
and descriptions given (3), the display and titles will always be
matched up in the grid children rooms. </p>
<p>After you have made your modifications to the grid parent room display
and description, use the "reset room" command to have them take
effect.</p>
<p>The "reset room" command will force CoffeeMud not only to reset a grid
or maze, but to reload the creatures and items last saved in the
CoffeeMud database. This can be useful if you make a few critters
or things you don't want to keep and havn't yet saved. A corresponding
"reset area" command does the same for the whole area.</p>
<p>And speaking of areas, rooms also may have behaviors and effects
added to them, including a few more. In this case, the behaviors
and effects above will only be active for this particular room.
Aside from those listed under Areas above, here are additional Behaviors
you might enjoy: </p>
<p>"DelayedTransporter" causes all those who enter to be whisked elsewhere.<br>
"Emoter" - yea -- this is mentioned under Areas,
but it's just sooo cool.<br>
"FasterRecovery" - makes the players recover their
stats faster in this room.<br>
"FieryRoom" - stuff catches on fire here! watch
out!<br>
"InstantDeath" - nuff said.<br>
"Mime" causes the room to mimic players.
Wierd.. yea, I know.<br>
"MovingRoom" the fast train to somewhere.<br>
"ProtectedCitizens" will allow resident mobs to scream
for help and receive it when attacked.<br>
"RandomMonsters" will cause monsters from a saved
file to appear here.<br>
"RandomItems" will cause items from a saved file
to appear here.<br>
"ItemGenerator" will create treasure and items for
your rooms.<br>
"RandomTraps" will cause random traps to be set
here.<br>
"ResourceOverride" if you want fishing in the desert,
or sand in your swap, this is the way to go.<br>
"Scriptable" makes the room react to events in a
scripted way.<br>
"ScriptableEverymob" same as scriptable, but applies
itself to all the mobs born here.<br>
"Sounder" is still a good alternative to Emoter.<br>
Lots of other properties and effects are also available
for rooms. In addition to all the ones listed above under Areas,
here are a few more you might want to add: </p>
<p>"Prop_AbilityImmunity" protects the room from specified targeted spells.<br>
"Prop_ClosedDayNight" turns off the lights in a lit
room at nighttime.<br>
"Prop_ClosedSeason" turns off the lights in a lit
room during a season.<br>
"Prop_CommonTwister" jumbles up the usefulness of
gathering common skills.<br>
"Prop_Crawlspace" forces players to crawl through
here.<br>
"Prop_EnlargeRoom" forces players to use more movement
traveling through here.<br>
"Prop_EnterAdjuster" affect the occupants stats permanent
when entering the room.<br>
"Prop_HereAdjuster" affecst the occupants stats
when in the room.<br>
"Prop_HereSpellCast" affect the occupants with spells
when in the room.<br>
"Prop_ItemTransporter" drop it, and its gone --
elsewhere.<br>
"Prop_ItemReceiver" is the elsewhere.<br>
"Prop_LotsForSale" puts this room up for sale, and
ensures that you never run out of new rooms to buy.<br>
"Prop_MagicFreedom" makes the room an unhappy place
for mages.<br>
"Prop_NarrowLedge" makes this a room you can cross..
if you are very very careful.<br>
"Prop_NoChannel" makes the room safe from channel
messages.<br>
"Prop_NoCharm" makes the room safe from charming.<br>
"Prop_NoOrdering" makes the room safe from player ordering.<br>
"Prop_NoPurge" makes the room safe for dropped garbage.<br>
"Prop_NoPKill" makes the room safe from player killing.<br>
"Prop_NoRecall" makes the room safe from recalling.<br>
"Prop_NoSummon" makes the room safe from summoning.<br>
"Prop_NoTeleport" makes the room safe from teleporting
in.<br>
"Prop_NoTeleportOut" makes the room safe from teleporting
out.<br>
"Prop_NoTelling" makes the room safe from telling
between players.<br>
"Prop_Peacemaker" makes the room safe.<br>
"Prop_ReqAlignments" lets you limit the alignment
of all who enter.<br>
"Prop_ReqCapacity" lets you limit the number of
folks or items in the rooms.<br>
"Prop_ReqClasses" lets you limit the character class
of those who enter.<br>
"Prop_ReqNoMOB" to make your area a player-only
place to be. <br>
"Prop_RestrictSpells" lets you limit specific skills
or spells from being used here.<br>
"Prop_ReqEntry" lets you limit entry to folks by
many different criteria.<br>
"Prop_ReqHeight" keeps out tall people, or at least
those unwilling to crawl.<br>
"Prop_ReqLevels" lets you limit entry by levels.<br>
"Prop_ReqRaces" lets you limit entry by race.<br>
"Prop_ReqTattoo" lets you limit entry to players
with certain builder-definable tags.<br>
"Prop_ReqPKill" makes this a place that only the
bloodthirsty may enter.<br>
"Prop_RestrictSpells" shuts down a list of spells
that you provide.<br>
"Prop_RoomDark" makes the whole area a place in
need of light.<br>
"Prop_RoomForSale" puts this one little room on
the market.<br>
"Prop_RoomsForSale" designates that this room, and
all others like it nearby, are for sale as a group.<br>
"Prop_RoomUnmappable" makes the whole area unmappable
by mundane means.<br>
"Prop_RoomView" makes this room seem to be another...<br>
"Prop_RoomWatch" allows folks in other rooms to
watch what goes on here.<br>
"Prop_Smell" gives the place a smell.<br>
"Prop_SparringRoom" makes the consequences of death
more palatable.<br>
"Prop_SpellAdder" puts everyone who enters under
its spell.<br>
"Prop_TattooAdder" puts a little something
on all who enter.<br>
"Prop_Transporter" send those who enter to the room
you designate.<br>
"Prop_Trashcan" destroys stuff dropped on the ground.<br>
"Prop_WeakBridge" makes cross this room very very
dangerous.<br>
"Spell_Silence" to quiet things down.<br>
And lots and lots of traps to put in your rooms:
"Thief_Caltrops", "Thief_DeathTrap", "Thief_Listen", "Thief_MinorTrap",
"Thief_Trap", "Trap_AcidPit", "Trap_Avalanche", "Trap_BearTrap",
"Trap_Boulders", "Trap_CaveIn", "Trap_CrushingRoom", "Trap_Darkfall",
"Trap_DeepPit", "Trap_Enter", "Trap_EnterBlade", "Trap_EnterGas",
"Trap_EnterNeedle", "Trap_EnterSpell", "Trap_FloodRoom", "Trap_MonsterCage",
"Trap_RatPit", "Trap_RoomPit", "Trap_SnakePit", "Trap_Snare", "Trap_SpikePit",
"Trap_Tripline". </p>
<p>Ok! Back to work! </p>
<p>If you are ever wandering around, and wish to go directly to a room you
have created, you may utter the magic matra "goto RoomID".
For instance, entering "goto MyArea#123" would take you to the room
we created above. This will especially come in handy when we
begin to create and destroy the links between rooms, and there is
no other way to get to a room. </p>
<p><strong><font color="blue" size="5"><a name="linkrooms">Linking Two Rooms
Together</a></font></strong></p>
<p>Now that you have created a room, and wish to link one of the rooms
in your area with one of another, you can use a command that utilizes
the Room IDs mentioned above. If you would like to create a
northerly link from room "MyArea#123" to a room whose room ID is "MyArea#124",
then you need only stand in room "MyArea#123" (use the "goto" command
if you must), and utter the invocation: "link MyArea#124 north".
This will create an Open exit between the room you are standing in,
and the room whose ID is born out. </p>
<p><img alt="" src="images/linkroom.gif">
</p>
<p>You should note that this command could be used as it was in the last
section to create one-way exits to existing rooms.</p>
<p> </p>
<p><strong><font color="blue" size="5"><a name="unlinkrooms">Unlinking Two
Rooms</a></font></strong></p>
<p>If you wish to detach two rooms from each other, you need only learn the
"unlink" command. If you are standing in the room to the south of
the one you wish to unlink, and the room you wish to detach from is to the
north, utter the command: "unlink north". It will do the trick!</p>
<p><img alt="" src="images/destroyroom.gif">
</p>
<p>Keep in mind that just because there is no longer a route from the room
you are in to the other via a northerly path, it does not mean
that there is no path from the detached room back to here again.
You may have to conjure yourself into the other place and enter
a "unlink south" command to completely detach them forever.</p>
<p><strong><font color="blue" size="5"><a name="xrooms">Destroying a Room</a></font></strong></p>
<p>Sometimes the pain born from a failed or evil place is too much to bear,
and as an Archon, you can do something about it. This involves
the destroy command. It does not merely unlink the room, but
obliterates it altogether and forever. To do this, first make
sure you are not standing in the room you wish to destroy. Such
destructive magic would surely be your end as well. Then you
must utilize the Room ID of the doomed place. If the room you
wish to destroy has the Room ID of "MyArea#124", then enter: "destroy
MyArea#124". It will obliterate that place from the planet forever.</p>
<p><img alt="" src="images/destroyroom2.gif">
</p>
<p><strong><font color="blue" size="5"><a name="exitcreate">Creating Exits</a></font></strong></p>
<p>The difference between Exits and Rooms is a very important one.
Creating and destroying Rooms describes <em>WHETHER</em> two rooms
are connected, and by which direction. Creating and destroying
Exits describes <em>HOW</em> one gets from one room to the next.
Two rooms must be connected together before exits between them can be
modified.</p>
<p>For instance, suppose you linked "MyArea#123" and "MyArea#124" as described
above. By default, you get an StdOpenDoorway, also known
as an "Open" exit. These exits can be walked through freely.
Now suppose you wish to have a Door between the two rooms. If
the exits between the two rooms are both the same, and you are standing
in the southernmost room of the two, then changing them both is simply
a matter of issuing the command "create Door north".</p>
<p><img alt="" src="images/createexit.gif">
</p>
<p><strong><font color="blue" size="5"><a name="xexits">Destroying Exits</a></font></strong></p>
<p>Just as unlinking rooms disconnects them, destroying exits can SEEM to
disconnect them. When you issue a simple destroy command,
and refer specifically to the exit, then you will not be destroying
the link between the two rooms, but merely the exit that travels between
them. Archons can still travel through these missing links,
but players will not be able to. Also, destroying an exit only
deletes the exit in one direction, not both. For instance, if
you are standing in the southerly room of two linked rooms that both
have Exits between them, and you issue the command "destroy exit north",
you will destroy the Open exit between the rooms. As an Archon,
you can still travel north through the destroyed exit, but players will
not be able to.</p>
<p><img alt="" src="images/destroyexit.gif">
</p>
<p> </p>
<p>Now, that an exit has been deleted, it is possible to create a DIFFERENT
kind of exit for the northerly direction from MyArea#123 to MyArea#124.
Issuing a create command like "create Door north" will create a
door that leads from MyArea#123 to MyArea#124, WITHOUT AFFECTING the
Open path from MyArea#124 to MyArea#123. This is only possible
when the exits between two rooms are different, or one is deleted,
as is our case here.</p>
<p><img alt="" src="images/destroyexit3.gif">
</p>
<p> </p>
<p>Now, suppose you wanted to have the same Door going between two rooms.
For sure this is a more common scenario than the example we just
went through. To do this, you must first delete BOTH of the
exits between two rooms as described above. That means entering MyArea#123
and entering "destroy exit north", and then entering MyArea#124 and
entering "destroy exit south". </p>
<p><img alt="" src="images/destroyexit2.gif">
</p>
<p>Now, with both exits deleted (and thus the same), you can create a single
door between them as we did in the first part of this section using
the "create Door south" command.</p>
<p><img alt="" src="images/createexit2.gif">
</p>
<p><strong><font color="blue" size="5"><a name="areas">Creating and Modifying
Areas</a></font> </strong></p>
<p>A town or village, country or demesnes can hardly come to be without the
careful demarcation of their borders. What separates the town from
the country, or one country from another? Like everything else, this
is the decision of the Archon as he groups his rooms into Areas. </p>
<p>The best way to create your areas is to do so right from the start.
The moment you create the first plot of land in your new area,
or lay down the first building in your new town, you should designate
it as such. Enter the new room in your new area and utter the
mystic chant "modify room area New Area Name". Of course, where
"New Area Name" can be anything you wish. Call it "Newarea Land"
or "Goldfish Villiage" or "The Fruity Phantasm" or whatever strikes your
fancy. </p>
Now that you have designated your new room as belonging
to a new area, it is important to remember to create all future rooms
by doing so from rooms that already belong to the new area.
Any future rooms that you build by standing in your new area room will
bear its area mark, as well as any rooms created from any other room
bearing the new area mark. If you fail then, you may be forced
to invoke the power of the "modify room area..." command again to re-group
the rooms you are creating.<br>
<p> When you create a new area, you will be asked for the arcane "type
of area" you want to create. We will now take a second to peruse the
different area types: </p>
<p>
<table bgcolor="yellow" border="1" cellpadding="1" cellspacing="1"
width="75%">
<tbody>
<tr>
<td style="width: 25%;" width="25%">StdArea</td>
<td>This is a standard, every-day area in your
every day world. All of CoffeeMuds features work just fine with
it, as it has no restrictions or limitations. The standard area
always has its own weather, and inherets its calendar. Use this
type for your most often used areas, your areas with lots of special
features, and your most important areas, especially when they are less
than 700 rooms.</td>
</tr>
<tr>
<td>StdGridArea</td>
<td>The standard Grid area is identical to a
standard area, except that there is a limitation on the number of rooms
that can be in a grid area. That limitation is always based on the
width and height dimensions you have defined for it. The maximum
rooms is always width X height. You probably won't notice any differences
between a standard area and a standard grid area unless you use the
MUDGrinder visual area editor. This is because grid areas always
position their rooms at a single coordinate location on the visual editor
screen, and it never ever moves from that position. This can be
a blessing for those creating carefully pre-planned areas that fit nicely
in 2 dimensional graphs. It can also be a blessing for big areas
(> 200 rooms), since the MUDGrinder will let you edit a grid area in
sections, and the rooms won't move around on you when you re-link them.
Use this area type if you do a lot of MUDGrinder visual work. It
can be a curse for more organic area designers, however. </td>
</tr>
<tr>
<td>StdPlanet</td>
<td>A standard planet is mostly unimplemented
at this time. It inherets the features of the StdArea and the
StdTimeZone.</td>
</tr>
<tr>
<td>StdSpaceShip</td>
<td>The space ship is definitely unimplemented
at this time. Don't bother with it. It lacks many of
the features of the other area types.<br>
</td>
</tr>
<tr>
<td>StdThinArea</td>
<td>A thin area is the same as a standard area
with one difference. The rooms in a thin area are not loaded
at mud boot time. Instead they are loaded only when a player,
mob, or a special built feature (such as a random monsters behavior)
causes one or more rooms to be loaded. Thin areas will also periodically
unload their rooms when they havn't been accessed in 40 minutes or so.
Thin areas are fantastic for enormous (>1000) room areas that
span massive ranges. They won't gobble up your system resources.
They are bad for popular areas though, and for areas with lots
of special features. Things like the legal system and conquest system
don't work well with them, since an officer may not know where to find
the local judge when someone is arrested (if the judges chambers are one
of the rooms not yet loaded). If you are short on memory, or your
area is one you need to have, but doesn't have to do much, the thin area
is for you.</td>
</tr>
<tr>
<td>StdTimeZone</td>
<td>A standard time zone is the same as a standard
area, except that it can have its very own calendar. Any "child"
areas of a time zone area will also inheret its calendar.</td>
</tr>
<tr>
<td>StdThinGridArea</td>
<td>A standard thin grid area is a mixture between
the grid area and the thin area. It combines the benefits and
limitations of both. Use them only when you need to have a largenormous
area with not much going on, like a planet-girdling wilderness that
surrounds your more standard areas, for instance. </td>
</tr>
</tbody>
</table>
</p>
<p>Areas also contain important properties which may be modified.
Enter the secret code "modify area" to go through a list of these modifiable
properties. </p>
<p>The <em>name</em> and <em>description</em> of the area may be changed
by following the promptings. You may also tinker with the
<em>climate</em> of your area, which will affect the types of weather
that will blow through it, and how mild or severe the winters and
summers may be. This is also where you may add <em>Staff</em>.
A player whose name is listed as Staff has no additional
powers unless their player Security settings grant them specific AREA
privileges. In that case, the player would be able to use their
area privileges in the area where they are listed as Staff. The
section on Security above mentions all this stuff in more detail.
Typically, a player is listed as Staff, and then given several area creation
privileges in order to assist in area building and modifying. After all,
sometimes creating a universe becomes a little bit too much work
for one person. </p>
<p>Strange settings like <em>Technology Level</em> and <em>Archive File Name</em>
are available on the area promptings. Don't worry about these.
The former is not very important at the moment, and the second is a bit
too obscure for these lessons. The <em>Currency</em> field is discussed
in detail in the next section on What Areas are Worth.</p>
<p>You will also be asked to add any <em>behaviors </em>and <em>effects</em>
to the area that you wish to. These may seem strange
at first, and usually you won't add any of these at all. After
all, rarely does a plot of dirt exibit any behavior, and what the heck
is an effect? Well! To the first, the wind blowing through the
trees, the hoot of an owl, or a distant cackling noise are all considerable
behaviors. In fact, it is a behavior called "Emoter". Enter
"ahelp emoter" for more information about the Emoter behavior.
There are other behaviors that Areas may benefit from too. Here are some
examples: </p>
<p>"Arrest" will add law and order to your area, with resident mobs playing
the cops and the judges.<br>
"Conquerable" has all the features of Arrest, plus
it makes the area conquerable by clans!<br>
"Emoter" is what I mentioned above -- it's for inserting
those cute little blurbs in the area.<br>
"FasterRoom" makes everything happen twice as fast
here (or faster!)<br>
"InstantDeath" makes everything that comes here
DIE!!!!!<br>
"LinkedWeather" makes the weather in this area mimic
the weather from another area.<br>
"ProtectedCitizens" will allow resident mobs to
scream for help and receive it when attacked.<br>
"PuddleMaker" will scatter some puddles around after
rain or snow.<br>
"RandomMonsters" will populate the area with lots
of hideously random creatures that you choose.<br>
"RandomItems" will cause items from a saved file
to appear here.<br>
"ItemGenerator" will create treasure and items
for your rooms.<br>
"RandomTraps" will scatter some traps around your
area.<br>
"ResetWhole" will cause the whole area to re-boot
every so often, thus supplementing the natural "rejuv" process. <br>
"Scriptable" allows you to script the behavior of
the room in a limited sense.<br>
"ScriptableEverymob" allows you to script all the
mobs in the area at once.<br>
"Sounder" is also for inserting little blurbs, plus
it reacts to player actions.<br>
"WaterCurrents" will make those on the water bob
and flow in the direction you specify.<br>
"WeatherAffects" will make the players really FEEL
the weather.</p>
<p>As for effects, well, effects are special properties which you can attach
to your new little holes in the ground. There are lots of
nice properties that one may add to an Area, which will affect
every room in it, such as: </p>
<p>"Merchant" to establish a store front that follows the players from room
to room.<br>
"Prop_AreaForSale" to make the entire area purchasable
by a shopkeeper in the area.<br>
"Prop_CommonTwister" to mix up the resources gained
from using gathering skills in the area.<br>
"Prop_Crawlspace" to make the entire area require
crawling through.<br>
"Prop_EnlargeRoom" makes crossing the area eat up
more Movement.<br>
"Prop_MagicFreedom" to fluster any spell-using folks
that happen along.<br>
"Prop_Hidden" will make the area unlisted to normal
players.<br>
"Prop_ModExperience" modifies experience gained in
this area..<br>
"Prop_NoChannel" for a place of quiet.<br>
"Prop_NoCharm" lets everyone remember who their
REAL friends are.<br>
"Prop_NoOrdering" keeps players from being bossy.<br>
"Prop_NoPKill" keeps out the riffraff.<br>
"Prop_NoRecall" keeps folks from taking the easy
way out.<br>
"Prop_NoSummon" makes sure that everyone leaves of
their own free will.<br>
"Prop_NoTeleport" keeps those silly mages from teleporting
in.<br>
"Prop_NoTelling" prevents players from using the
TELL command to each other.<br>
"Prop_NoTeleportOut" keeps those silly mages IN.
<br>
"Prop_PeaceMaker" to go with it if you want peace
AND quiet. <br>
"Prop_ReqAlignments" lets you limit the alignment
of all who enter.<br>
"Prop_ReqCapacity" lets you limit the number of folks
or items in the rooms.<br>
"Prop_ReqClasses" lets you limit the character class
of those who enter.<br>
"Prop_ReqNoMOB" to make your area a player-only place
to be. <br>
"Prop_RestrictSpells" lets you limit specific skills
or spells from being used here.<br>
"Prop_RoomDark" makes the whole area a place in need
of light.<br>
"Prop_RoomUnmappable" makes the whole area unmappable
by mundane means.<br>
"Prop_ReqEntry" lets you limit entry to folks by
many different criteria.<br>
"Prop_ReqHeight" keeps out tall people, or at least
those unwilling to crawl.<br>
"Prop_ReqLevels" lets you limit entry by levels.<br>
"Prop_ReqRaces" lets you limit entry by race.<br>
"Prop_ReqTattoo" lets you limit entry to players
with certain builder-definable tags.<br>
"Prop_ReqPKill" makes this a place that only the
bloodthirsty may enter.<br>
"Prop_Smell" gives off a unique aroma when players
use their SNIFF command.<br>
"Prop_Weather" to have the same weather in an Area
all the time.<br>
<br>
To learn more about the properties you can add to
areas and rooms, enter "ahelp" while you are in CoffeeMud.
Now, isn't this fun? Remember, if you make a mistake, fear not,
for the land does not grow weary of your molding. </p>
<p><strong><font color="#0000ff" size="5">What Areas are Worth</font></strong></p>
<p>Currency is the system of money used by the inhabitants of the area. It
is defined using the <em>Currency</em> field when creating and modifying
Areas as discussed in the previous section. All of the bankers,
money changers, tax collectors, postmen, and shopkeepers will deal
in the currency that you define for the area. By default,
all areas will use a system of currency that includes gold coins,
and golden notes, whole notes, and Archon notes. You can change
this system by defining your own, however. The way you do this
is by entering a name for your currency, followed by an equal sign, and
then a series of relative values and currency names, all separated
by semicolons. Let's look at an example:</p>
<pre>US=0.01 penny(s);0.1 dime(s);.25 quarter(s);1.0 dollar(s)<br></pre>
<p>In the currency we have defined here, we have four different currencies:
the penny, the dime, the quarter, and the dollar. Notice
that each currency is separated by a semicolon in our definition
string. Each entry includes two or possibly three parts.
The first part is the base value, the second part is the name of the
currency, and the optional third part is a "short name" used by shopkeepers
when listing prices.</p>
<p>The first part of each currency entry tell us how much one unit of that
currency is worth <strong><em>relative to the base coffeemud unit
of value</em></strong>. This base unit of value is used throughout
the system, and can be thought of as equal to one gold coin in the
default currency. For this reason, it is wise for Archons to
become familiar with the value of things in the default currency before
defining their own. Under the system we gave in our example,
a penny is worth 0.01 or 1/100th of a base coffeemud unit of value.
The dollar is worth 1.0 or exactly one base unit value.
The only rule when defining the worth of your currency units is that all
currency values MUST be evenly divisible by the lowest valued unit.
In this case, all of our values are evenly divisible by the penny, so
we are safe. </p>
<p>The second part of each currency entry is the name of the currency unit.
This can be any name you choose. The fact that the
name of the currency ends with (s) tells us that the system should
include the trailing letter 's' when there are more than one of that
currency unit listed.</p>
<p>It is completely optional, but if you wish, you may also include a short
name for each currency unit entry. If an entry contains a
short name, it will tell the shopkeeper to try and display its currency
using just those units. If none of the unit entrys contain short
names, then shopkeepers will tend to display their prices in multiples
of the lowest valued unit, in this case, pennys. Here is an example
of that same currency redefined with short names.:</p>
<pre>US=0.01 penny(s) (p);0.1 dime(s) (d);.25 quarter(s) (q);1.0 dollar(s) ($)<br></pre>
<p>In this new example, we have defined short forms for each currency, allowing
shopkeepers to choose the most appropriate one. The prices
will END with the letter p, d, s, or q depending upon which currency
the shopkeeper chooses to display the currency in.</p>
<p>Once you have defined your currency in at least one area, you may use
it throughout your mud by simply entering its name alone in the
<em>Currency </em>field when you edit your area settings.
In our example, US would be a sufficient value for the <em>Currency</em>
field to tell the system to re-use our US currency in that area.
You may also redefine the default coffeemud currency throughout the
entire system by NOT entering a name for your currency. For example.:</p>
<pre>=0.01 penny(s) (p);0.1 dime(s) (d);.25 quarter(s) (q);1.0 dollar(s) ($)<br></pre>
<p>This last example, since it contains a blank currency name, would make
our U.S. currency system the default one used throughout coffeemud,
or wherever the <em>Currency </em>value in the area settings is also
empty.</p>
<p><br>
<strong><font color="blue" size="5"><a
name="modexits">Modifying Exits</a></font></strong></p>
<p>To modify an exit that is east of your present location, simply enter
"modify east". If the exit to the east of you is a GenExit
or a GenDoor, you will receive the properties mentioned above.
If the exit is anything other, than you will be prompted to enter the
Miscellaneous Text field. For a standard exit, like Open
or Door, this field represents the secret code that must also be specified
in the StdKey item in order for you to unlock this door without spells
or thief picking. For a readable exit, this field represents the
text that is written on the door.</p>
<p><strong><a name="genexit"><font style="background-color: lime;">The "GenExit"
and "GenDoor"</font></a></strong></p>
<p>As mentioned briefly earlier, the GenExit is an undefined exit that one
can mold to fit ones needs. Whenever a GenExit is created
or modified, you will be presented with a series of properties to
change. Hitting return will leave most of these properties
without modification. Entering new values will replace the
old values. These properties include:</p>
<p>
<table id="TABLE1" style="width: 100%;" bgcolor="yellow" border="1"
cellpadding="1" cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em> </td>
<td>the general name of this exit. Such as "the
grand portal", or "the wooden gate".</td>
</tr>
<tr>
<td><em>Description</em> </td>
<td>what one sees when this exit is LOOKed at
with the LOOK command</td>
</tr>
<tr>
<td><em>Display Text</em></td>
<td>what one sees when the EXITS command is
issued and the way is OPEN.</td>
</tr>
<tr>
<td><em>Level</em></td>
<td>The Level of the door can determine how
difficult it is to PICK or KNOCK. </td>
</tr>
<tr>
<td><em>Has A Door</em></td>
<td>I think thou canst figure these next few
out. </td>
</tr>
<tr>
<td><em>Door Defaults Closed</em></td>
<td style="width: 100%;" width="100%"><br>
</td>
</tr>
<tr>
<td><em>Has A Lock</em></td>
<td><br>
</td>
</tr>
<tr>
<td><em>Door Defaults Locked</em></td>
<td><br>
</td>
</tr>
<tr>
<td><em>Reset Delay #</em></td>
<td>Whenever this exit is opened after previously
being closed, this is the number of ticks (where a tick is
currently 4 seconds) that will transpire before the exit is
reset to its default state. </td>
</tr>
<tr>
<td><em>Closed Text </em></td>
<td>what one sees when the EXITS command is
issued and the way is CLOSED. </td>
</tr>
<tr>
<td><em>Assigned Key Item</em></td>
<td>This is the secret code that must be present
in the StdKey for you to be able to unlock it. The StdKey must
have it's Miscellaneous Text property set the same as this value
in order to open this exit using the UNLOCK command. If
the level is sufficiently low, the door can still be KNOCKed or PICKed
without the key. </td>
</tr>
<tr>
<td><em>Door Name</em></td>
<td>Is it a gate, door, grate, or portcullis.
Specify that here. </td>
</tr>
<tr>
<td><em>Close Word</em></td>
<td>When you close it, are you really lowering
it, or sliding it? Specify the correct verb here. </td>
</tr>
<tr>
<td><em>Open Word</em></td>
<td>When you open it, are you really raising
it, or sliding it? Specify the correct verb here. </td>
</tr>
<tr>
<td><em>Is.. flags</em> </td>
<td>
<p>I think thou doest grok most of these flags. You may
also require a little climbing or flying for this exit, in case
it is a mere gulf the player must traverse, instead of the wide expanse
that a climable room entails.</p>
</td>
</tr>
<tr>
<td><em>Behaviors</em></td>
<td>Like mentioned above when we talked about
Rooms, there are not many behaviors that one can give to an item,
but "Emoter" and "Sounder" works with exits very well.</td>
</tr>
<tr>
<td><em>Effects</em></td>
<td>As mentioned in the section on Rooms, there
are many properties that one may attach to items. Use "list properties"
to see them all, and "ahelp propertyname" for more information.
</td>
</tr>
</tbody>
</table>
<br>
Like rooms and areas, there are special properties
that are great for exits. They include:</p>
<p>As for Effects, well, effects are special properties which you can attach
to your new little holes in the ground. There are lots of
nice properties that one may add to an Area, which will affect
every room in it, such as: </p>
<p>"Prop_AbilityImmunity" protects the exitfrom specified targeted spells.<br>
"Prop_ClosedDayNight" shuts and locks any doors
at night.<br>
"Prop_ClosedSeason" shuts and locks any doors for
a season.<br>
"Prop_Crawlspace" requires crawling through this
exit.<br>
"Prop_EnterAdjuster" modifies the players stats
permanently when they cross through this exit.<br>
"Prop_Hidden" makes the exit hidden.<br>
"Prop_Invisibility" makes the exit invisible.<br>
"Prop_NarrowLedge" makes this an exit you can
cross.. if you are very very careful.<br>
"Prop_NoPKill" keeps out the riffraff.<br>
"Prop_OpenPassword" requires a spoken password to
open the door.<br>
"Prop_ReqNoMOB" to make your exit a player-only
place to be. <br>
"Prop_ReqAlignments" lets you limit the alignment
of all who enter.<br>
"Prop_ReqCapacity" lets you limit the number of
folks or items here.<br>
"Prop_ReqClasses" lets you limit the character class
of those who enter.<br>
"Prop_ReqEntry" keeps out people that fit your specific
requirements.<br>
"Prop_ReqHeight" keeps out tall people, or at least
those unwilling to crawl.<br>
"Prop_ReqLevels" lets you limit entry by levels.<br>
"Prop_ReqPKill" lets you limit entry by bloodthirstiness.<br>
"Prop_ReqRaces" lets you limit entry by race.<br>
"Prop_ReqTattoo" checks out a mobs forearm before
letting them in.<br>
"Prop_RoomView" makes looking at this exit more
revealing.<br>
"Prop_Smell" gives the exit an aroma when using
the SNIFF command.<br>
"Prop_TattooAdder" puts a little something
on all who enter.<br>
"Prop_Transporter" send those who enter to the room
you designate.<br>
"Prop_WeakBridge" makes cross this room very very
dangerous.<br>
Popular traps for exits include: Trap_AcidSpray",
"Trap_ElectricShock", "Trap_Enter", "Trap_EnterGas", "Trap_EnterNeedle",
"Trap_EnterPit", "Trap_EnterSpell", "Trap_Launcher", "Trap_Needle",
"Trap_Noise", "Trap_Open", "Trap_OpenBlade", "Trap_OpenGas", "Trap_OpenNeedle",
"Trap_OpenSpell", "Trap_PoisonGas", "Trap_SleepGas", "Trap_SpellBlast",
"Trap_SporeTrap", "Trap_Unlock", "Trap_UnlockBlade", "Trap_UnlockGas",
"Trap_UnlockNeedle", "Trap_UnlockSpell", "Trap_WeaponSwing"<br>
<br>
To learn more about the properties you can add to
exits, enter "ahelp" while you are in CoffeeMud.</p>
<p><strong><font color="blue" size="5"><a name="itemcreate">Creating Items</a></font></strong></p>
<p>For our purposes, an item is any normal item, piece of armor, a weapon,
a container, or any magical item, armor, or weapon. To bring
one of these things into the world, you have only to call its true
name using the create command. To create a Longsword, for instance,
issue the command "create Longsword". It will then fall from
the sky onto the floor or ground before you.</p>
<p>To find out what items are available for you to create, you can enter
"list items". Entering "create <itemname>" will prove
the true incantation for almost all of the items on this list.
An exception, however, is the GenRideable. Since there is both
an Item and a MOB version of that name, you will need to further
qualify your create command by entering "create item GenRideable"
or "create mob GenRideable".</p>
<p><strong><a name="geni1"><font style="background-color: lime;">The "GenItem",
"GenResource", "GenMirror", and "GenReadable"</font></a></strong></p>
<p>These represent some of the basic items your ordinary denizen will use
every day. A GenItem and GenMirror represent nothing-special
THINGS. GenResource is a raw material, like iron, coal, or
wood, from which other things are made, especially with the common
skills. GenReadables are GenItems with something to read on
them, like a book or parchment.</p>
<p>Whenever a GenItem is created, much like the GenExit above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the name of the item, like "a stone", or
"a pencil"</td>
</tr>
<tr>
<td><em>Description</em></td>
<td>what one sees when one looks at the item.
</td>
</tr>
<tr>
<td><em>Display Text</em></td>
<td>what one sees when an item is laying in
a room. if you enter 'null' here, the item becomes blended, meaning
that it does not show up in the listing of room contents, but
may still be "looked" at, "read", or (if allowed) picked up!</td>
</tr>
<tr>
<td><em>Secret Identity</em></td>
<td>what one sees when the Identify spell is
cast on the item. </td>
</tr>
<tr>
<td><em>Level</em></td>
<td>the level of the item, dictating the lowest
level a character must attain to possess or hold it. </td>
</tr>
<tr>
<td><em>Uses Remaining</em></td>
<td>This property applies especially to GenWand,
GenStaff, and GenScroll, discussed below. This tells how many
times the magic in the item may be reused before requiring a recharge.</td>
</tr>
<tr>
<td><em>Rejuv/Pct</em></td>
<td>
<p>This field has two different meanings, depending upon whether
the item is in the room, or in a mobs inventory.<br>
If this item is located
in a room, this value determines whether it rejuvinates after
being removed from the room. In this case, it is the number of ticks
(4 second intervals) between the removal time, and the time
the item rejuvinates. For more information on making the RejuvTicks
property take effect after changing it, see below under Rejuvenating
Items and Mobs" or "How to Save a Room".<br>
If this item is located
in a mobs inventory, this value represents the % chance of
it appearing in the mobs inventory after reset. In this case,
the value should be between 1-100, or 0 to also represent 100 (always
available). See the section on "Equipping Mobs"
for more information on this feature.</p>
</td>
</tr>
<tr>
<td><em>Is This Item Gettable</em></td>
<td>whether the item can be picked up off the
ground. </td>
</tr>
<tr>
<td><em>Is This Item Droppable</em></td>
<td>whether the item can be dropped into a room.
</td>
</tr>
<tr>
<td><em>Is This Item Removable</em></td>
<td>whether the item, once held or worn, can
be removed. </td>
</tr>
<tr>
<td><em>Is This Item Locatable</em></td>
<td>whether the item can be found with the Locate
Object spell. </td>
</tr>
<tr>
<td><em>Is This Item Readable</em></td>
<td>whether there are any readable markings
on the item. Normally, an item must be in a players inventory
to be read. However, if the item is set as not being
Gettable, then it may be read even on the ground, like a sign or
billboard.</td>
</tr>
<tr>
<td><em>Assigned Readable Text</em></td>
<td>if this item is marked, what those markings
say. If this text begins with FILE=, then a text file from the resources
directory will be displayed. For example: FILE=text/intro.txt</td>
</tr>
<tr>
<td><em>Material</em></td>
<td>this is the material that the item is made
of. This affects the classes with armor restrictions,
and the effects of certain spells. Choices include: cloth,
metal, wood, leather, glass, and mithril.</td>
</tr>
<tr>
<td><em>Value</em></td>
<td>the items monetary value, for the purposes
of buying from and selling to shopkeepers who price the item at default
values. The value is expressed in multiples of the the
base value. A value of 20 will mean that the item is worth
20 gold (or whatever the local currency is), assuming gold is
valued at 1.0 of base. If the local currency has only Latinum
Bars valued at 0.5, then a money value of 20 here would mean
that the item is worth 40 Latinum Bars. </td>
</tr>
<tr>
<td><em>Weight</em></td>
<td>the items weight.</td>
</tr>
<tr>
<td><em>Is Flags... (Disposition)</em></td>
<td>most these flags, my faith tells me, thou
canst discern. To clarify, however, a glowing item gives off light.
An invisible item can not be seen, except by magic. An unseen item
cannot be seen at all.</td>
</tr>
<tr>
<td><em>Behaviors</em></td>
<td>Like mentioned above when we talked about
Areas, there are not many behaviors that one can give to an item,
but "Emoter" works with items very well.</td>
</tr>
<tr>
<td><em>Effects</em></td>
<td>As mentioned in the section on Areas, there
are many properties that one may attach to items. Use "list properties"
to see them all. </td>
</tr>
<tr>
<td><em>Uses Remaining</em></td>
<td>A few items, notably wands, scrolls, and
ammutiion can only be used a few times. For all other items,
this may be left unchanged.</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>although meaningless for most Generic Items,
and absent on others, this property does have meaning for specific
items described below. In general, items which a magical ability
above 0 are considered magical. The exception to this is
the <b>GenCoins</b> object. For coins, this denotes the
number of coins in the pile!</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni0"><font style="background-color: lime;">The "GenCoins"</font></a><br>
</strong><br>
A GenCoins item represents one or more instances
of a unit of currency, such as a dollar bill, a gold coin, a stack
of bills, or a pile of coins.</p>
<p>Whenever these GenCoins are created, much like the GenItem above, you
are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenItem, plus two more:</p>
<p><strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Money Data</em></td>
<td>A three part field, including the Currency
type, which can be either "DEFAULT", another of the stock currency
types, or a custom currency defined for your area. See the section
on area currencies for more information on this. The
next part is the decimal absolute-value denomination within the
given currency, followed by the number of items in the "stack"
of money. Together, these three fields define the nature,
value, and size of the GenCoins stack. <br>
You will be prompted for each of the three parts,
beginning with currency. </td>
</tr>
<tr>
<td><em>Base Value</em></td>
<td>For a GenCoins item, this field is, ironically,
useless.</td>
</tr>
</tbody>
</table>
</strong></p>
<p><strong><a name="geni2"><font style="background-color: lime;">The "GenLightSource",
"GenCigar", "GenPipe", and "GenLantern"</font> </a></strong><br>
<br>
</p>
<p>A GenLightSource and GenLantern provide light for players whenever they
are HELD. GenCigars and GenPipes are WORN on the mouth for
enjoyment. GenLightSources and GenCigars will burn away after a time,
while GenLanterns can be refilled with oil from an oil flask, and
GenPipes must be filled with an herb.</p>
<p>Whenever these GenLightSources are created, much like the GenItem above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenItem, plus two more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Light Duration</em></td>
<td>the number of ticks (4 second intervals)
which will transpire before the light source will burn out. See the
next field for more information on burning out. </td>
</tr>
<tr>
<td><em>Is Destroyed after burnout</em></td>
<td>Whether the item is destroyed after burnout.
This defaults to true for GenCigar and GenLightSource (torches),
which vanish after use. GenLanterns and GenCigars default this
to false, meaning the item remains after it burns out (though no
longer gives off light). The GenLantern may be refilled with oil
at this time, or the GenPipe may be refilled with herbs to continue.</td>
</tr>
</tbody>
</table>
<strong> </strong></p>
<p><strong><a name="geni3"><font style="background-color: lime;">The "GenJournal"
and "GenBook"</font></a></strong><br>
<br>
GenJournals and GenBooks are similar ways of persistant
message storage. GenJournals represent message boards for players
to commonly post on and everyone to read. All GenJournals
who have the same NAME field will display the same set of messages
to readers, regardless of how many instances of the same journal/book
there are. GenBooks display a table of contents listing the "chapters"
available for reading. Players who have access to GenJournals or
GenBooks, and who have the Write skill may write new messages/chapters
(or post replies to old ones on GenJournals).</p>
<p>GenJournals may be used by individual players to carry around and magically
chat with each other on (assuming all their journals have the same
name). They may also be large public posting boards. To
make one of this last sort, simply make the journal non-gettable.
That way, people can write on them even if they can't pick them up.</p>
<p>One special kind of journal is called "CoffeeMud News". If a Journal
is given that name (without the quotes, and yes -- watch your spelling
and case), then all messages posted to it will be echoed to all
players whenever they log on next. For this reason, you will
want to keep journals with than name close to your vest.</p>
<p>Archons can also create special "persistant" entries, whether they
be in custom journals/books or in CoffeeMud News. These entries
remain "new" longer than normal ones. These are created by starting
off an entry subject with the letters MOTD (for message of the day),
MOTM, or MOTY. If a subject starts with those letters, in uppercase,
the entry will persist as new for a day, month, or year respectively.</p>
<p>Archons can also make use of the Web Macros system inside the body or
message part of an entry. To do so, the message must start
with the characters <cmvp>. If those six characters start
the message, then the message may contain web macros. See the
WebServer Guide for more information on this feature.</p>
<p>Whenever a GenJournal or GenBook is created, much like the GenItem above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenItem, plus one that
works a little bit differently than described above:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Readable Text</em></td>
<td>A Journal/Book is always readable, so this
field is really redundant. Therefore, it is now used as a field
where you may set requirements for reading from and writing to the
journa/bookl. If no requirements are mentioned, anyone may read
from, write to, or reply it. A reading requirement is specified by
putting READ= followed by some requirements. A reply requirement
is specified by putting REPLY= followed by some requirements. A
writing requirement is specified by putting WRITE= followed by some
requirements. An optional administrative requirement is specified
by putting ADMIN= followed by some requirements. The requirements
for each of these settings can be seen by checking out the help
entry for Prop_HaveZapper. The same mask criteria used
for that property are also used for these options.</td>
</tr>
</tbody>
</table>
</p>
<p><br>
<strong><a name="geni4"><font
style="background-color: lime;">The "GenWeapon", "GenBow", "GenLasso",
"GenNet", "GenSling", "GenSpear", "GenBoffWeapon"</font></a></strong></p>
<p>These are the assorted weapons players and mobs use to attack each other.
They are typically worn in the WIELD position, though some may
also go in the HOLD position, either as a requirement (for two handed
weapons) or as an option (for those with two-weapon fighting).
</p>
<p>Weapons can be anything from swords to daggers, from bows you shoot ammunition
at, to spears that you throw. It all depends on how you design
them. The GenBow, GenSling, and GenSpear classes don't actually
offer any functionality you couldn't get out of a properly molded
GenWeapon, but are provided as good examples of how to make them.
The GenBoffWeapon, on the other hand, is another form
of GenWeapon, but it provides some silly and random hit messages
during combat. </p>
<p>The GenNet and GenLasso, however, are quite different. Each of those
are capable of ensnaring someone who is hit by them when they are thrown.
They do default to thrown weapons.</p>
<p>Whenever any of these GenWeapons are created, much like the
GenItem above, you are presented with a list of properties to fill
in. Pressing enter will leave the property unchanged.
The properties include all of the fields listed above under GenItem,
plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Attack Adjustment</em></td>
<td>a number representing the quality of the
weapon. The most common value is zero, representing a
normal quality item. Typical ranges include -10 for a
poor quality weapon up to 10 for an exceptional quality weapon.</td>
</tr>
<tr>
<td><em>Damage</em></td>
<td>the highest amount of damage this weapon
does when used in a fight. Typical range is 2 - 8 for low
level weapons, up to 20 or 30 for high-level weapons.</td>
</tr>
<tr>
<td><em>Weapon Attack Type </em></td>
<td>this dictates how the weapon is used in
combat, whether in a bashing manner, slicing, piercing, or as a natural
(fingers and claws) item.</td>
</tr>
<tr>
<td><em>Weapon Classification </em></td>
<td>this tells how the weapon fits into the
several weapon specialization categories, and also determines which
classes can use the weapon without penalty. Choices include
blunt, dagger, edged, flailed, hammer, karate (fingers and claws),
polearm, ranged, and sword.</td>
</tr>
<tr>
<td><em>Two-Handed</em></td>
<td>Whether the weapon occupies both the wielded
and held position when used.</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>This number represents an adjustment to
both attack adjustment and damage, denoting whether the weapon
is magical. Typical ranges include -2 for a badly cursed
item, up to 5 for an extremely high level magical item.</td>
</tr>
<tr>
<td><em>Condition</em></td>
<td>a number from 0 to 100 denoting the condition
of the weapon. A 100 means that the weapon is in top condition.
A 0 means that it is all but destroyed and worthless as a weapon.</td>
</tr>
<tr>
<td><em>Minimum range</em></td>
<td>this is the closest position required to
use the weapon. 0 means the weapon may be used in melee, where
1 means that a minimum range of 1 pace is required.</td>
</tr>
<tr>
<td><em>Maximum range</em></td>
<td>this is the farthese position required to
use this weapon. When combat begins, it will denote how far
away the wielder is from their foe. The same values as above
apply, though the maximum range must always equal or exceed the
minimum range.</td>
</tr>
<tr>
<td><em>Requires Ammunition</em></td>
<td>whether this weapon requires ammunition
in order to use.</td>
</tr>
<tr>
<td><em>Ammunition Type</em></td>
<td>This is the type of ammunition required
by this weapon. Ammunition is a special kind of item called
GenAmmunition (see below) which must have an ammunition type
field matching that of its intended weapon (such as "arrows"
or "bolts" or "rocks") and has a Uses Remaining property above
0.</td>
</tr>
<tr>
<td><em>Ammunition Capacity</em></td>
<td>This is the amount of the ammunition which
can be held by the weapon at one time. Usually this is only
1.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni5"><font style="background-color: lime;">The "GenContainer",
"GenCorpse", "GenCage"</font></a></strong></p>
<p>The GenContainer represents the standard container of other things, whether
it be a piggy bank, a chest, or a holster. Lids, capacity, and even
restrictions on what can be placed in it are all settable from here.
Containers are also smart enough to re-close themselves after awhile when
they are opened, and re-lock themselves after awhile when they are unlocked
(assuming they have lids and locks, of course). A GenCorpse is a special
sort of container, and should not be created in your world without good
reason. It is designed to stand as the corpse of fallen creatures and foes.
The GenCage is a GenContainer that one can see the contents of even
when the lid is closed.. this simulates bars or other see-through doors and
lids.</p>
<p>Whenever a GenContainer is created, much like the GenArmor above, you
are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenItem, plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Has A Lid</em></td>
<td>Well, does it have one?.</td>
</tr>
<tr>
<td><em>Has A Lock</em></td>
<td>If it has a lid, can you lock it?</td>
</tr>
<tr>
<td><em>Can Contain</em></td>
<td>This can help you limit what goes inside.</td>
</tr>
<tr>
<td><em>Capacity</em></td>
<td>this denotes the maximum amount of weight
that can be placed in the container.</td>
</tr>
</tbody>
</table>
</p>
<p>One more thing to keep in mind. Always make the weight of a container
less than its capacity. A container must be able to hold
its own weight in addition to anything put in it!</p>
<p><strong><a name="geni6"><font style="background-color: lime;">The "GenAmmunition"</font></a></strong></p>
<p>The GenAmmunition is a very special kind of item that can not be worn
or held. It represents a package of ammunition for a GenWeapon
(or GenBow, etc..) which requires ammunition. To make the
ammunition work with your weapon, the values in the ammunitionType
fields in both the GenWeapon and the GenAmmunition must match.
Whenever a player runs out of ammunition for their weapon, it will be
drawn from GenAmmunition objects, provided they are in the players inventory.</p>
<p>GenAmmunition differs from other items not only in its inability to be
held, but also in its ability to transfer any Effects on itself
to the weapon. Whenever a weapon draws ammunition from a GenAmmunition
type, properties, spells, and other Effects on the Ammunition will
be transferred to the weapon. This allows one to make Magical ammunition.</p>
<p>Whenever a GenAmmunition is created, much like the GenItem above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenItem, plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Ammunition Type</em></td>
<td>arrows, bolts, bullets, etc. MUST
match the ammunition type field of the weapon. Also, the Uses
Remaining field for ammunition represents the AMOUNT of ammunition
in this bundle.</td>
</tr>
</tbody>
</table>
</p>
<strong> </strong>
<p><strong><a name="geni7"><font style="background-color: lime;">The "GenArmor"
and "GenShield"</font></a></strong></p>
<p>These represent all manner of clothing, shoes, worn jewelry, armor, and
of course shields. Of these, only a shield MUST be made from
GenShield. Everything else may be made from GenArmor.
Plus, GenArmors are also containers, meaning that you can make armor
that things can be sheathed in or placed in like pockets.</p>
<p>Whenever a GenArmor piece is created, much like the GenContainer above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenItem and GenContainer, plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Worn Locations</em></td>
<td>this little menu allows you to describe
either all the different places a piece of armor MAY be worn, or
to describe ALL the places that a piece of armor MUST be worn.
Entering the specified numbers will toggle the locations.
Entering '1' will toggle whether it is a MAY or MUST situation.
Enter '0' when done.</td>
</tr>
<tr>
<td valign="top"><i>Layer</i><br>
</td>
<td valign="top">a number designating what can be worn
on top of or beneath this piece of armor. Generally higher numbers
are worn on top of lower numbers, with negative numbers generally meaning
underwear. However, a layer number must be 2 higher than the next
lowest worn item on the same location to cover it. For instance
a layer 3 can cover a layer 1 or 0, but not a layer 2 or 4. This
entry also allows you to designate whether this item hides anything worn
beneath it or is see-through, and whether multiple of these can be worn
on the same location at the same time (such as jewelry).<br>
</td>
</tr>
<tr>
<td><em>Armor Protection</em></td>
<td>the base amount of protection provided when
wearing this piece of armor. Unline MOBS, the higher the number
here, the better for the wearer.</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>This number represents an adjustment to
the armor protection, denoting whether the armor is magical.
Typical ranges include -2 for a badly cursed item, up to 5
for an extremely high level magical item.</td>
</tr>
<tr>
<td><em>Capacity</em></td>
<td>if the armor piece has pockets, this denotes
the maximum amount of weight that can be placed in it. 0 is
a typical value, denoting that you cannot store items in this
armor. The capacity should always exceed the weight.</td>
</tr>
<tr>
<td><em>Can Contain</em></td>
<td>For armor with capacity, this can help you
limit what goes inside. This value must be changed to something
specific, and a sufficient capacity must be set, in order for
this item to be a SHEATH.</td>
</tr>
<tr>
<td><em>Condition</em></td>
<td>a number from 0 to 100 denoting the condition
of the armor. A 100 means that the armor is in top condition.
A 0 means that it is all but destroyed and is not longer providing
any protection at all.</td>
</tr>
<tr>
<td><em>Size</em></td>
<td>the size of the piece of armor. 0 means
that the piece has a variable size, and will fit anyone until it
is worn for the first time. Any other number means that
the wearer must be near to the size in inches to wear it.</td>
</tr>
</tbody>
</table>
</p>
<strong> </strong>
<p><strong><a name="geni8"><font style="background-color: lime;">The "GenBed"
"GenChair", "GenTable", "GenBoat", "GenRideable", "GenCageRideable",
"GenTub"</font></a></strong></p>
<p>These represent the GenRideable group -- a group of things which may be
sat one, slept in, ridden on the seas, or pulled by horses. The GenRideable,
GenBed, GenChair, GenTable, and GenBoat all represent different incarnations
of GenRideable, but are interchangable otherwise. The GenTub is unique
in that it provides the functionality of GenDrink as well as GenRideable.
GenCageRideable is very different, since it has the unique property of the
GenCage -- able to be seen in even when lids or doors are closed. </p>
<p>Whenever a GenRideable item is created, much like the GenContainer above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenItem, and GenContainer, plus a
few more:</p>
<strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Rideable Type</em></td>
<td>the type of rideable item this is, from
sittable, to sleepable, etc. Some of these types may be ridden
from room to room, like "LAND-BASED","WATER-BASED","AIR-FLYING",
and "WAGON" while others may not. "WAGON", unlike
the others, may be hitched to another Rideable (such as a GenRideable
MOB made into a horse.) "LADDER" will help those trying
to get through climable rooms. The others are just furniture
for sitting on, sleeping on, or climbing into.</td>
</tr>
<tr>
<td><em>MOBs Held</em></td>
<td>th emaximum number of mobs which may occupy
this piece of furniture at once.</td>
</tr>
</tbody>
</table>
<strong> </strong>
<p><br>
<strong><a name="geni9"><font
style="background-color: lime;">The "GenFood", "GenDrink", "GenWater",
"GenFoodResource", "GenLiquidResource", "GenFountain", "GenTub"</font></a></strong></p>
<p>These items represent the edibles and drinkables on CoffeeMud. The
GenFood is a simple edible food, while a GenFoodResource is a raw edible
material that can be used for cooking or other resource-requiring
common skills. GenWater, GenDrink, and GenFountain are all
templates for drinkable containers, with a GenFountain differing only
in a lack of need to ever fill it. A GenLiquidResource represents
a liquid resource for potion making or other skills.</p>
<p>Whenever a GenFood, GenDrink, GenFountain, or GenWater is created,
much like the GenItem above, you are presented with a list of properties
to fill in. Pressing enter will leave the property unchanged.
The properties include everything listed under GenItem, plus GenContainer
for the drinkables, plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Nourishment/Eat</em></td>
<td>when eaten, how much nourishment does it
provide. 1000 would represent a full day of eating, while
300 would represent a single meal. 100 would represent
a snack.</td>
</tr>
<tr>
<td><em>Quenched/Drink</em></td>
<td>when drunk out of, how much of the total
capacity is consumed. A value of 500 represents a full day
of drinking, while 100 would represent a full glass</td>
</tr>
<tr>
<td><em>Amount of Drink Held </em></td>
<td>the amount of total drink held by the
container. Each time the item is drunk, the amount represented
by Quenched/Drink is subtracted from this. When this
number reaches 0, the container is empty and must be refilled.</td>
</tr>
<tr>
<td><em>Liquid Type</em></td>
<td>for GenWater/GenDrink only, this denotes
what kind of liquid it is, whether fresh water, salt water, or even
BLOOD! This may differ from the GenItem material type, so that
the archon may differentiate between the material of the container
from whats inside it.</td>
</tr>
</tbody>
</table>
</p>
<p><br>
<strong><a name="geni10"><font
style="background-color: lime;">The "GenPerfume"</font></a></strong></p>
<p>This item represents a liquid drinkable (which should not be drunk) which
can be worn to gain its effect. Its effect is to put a temporary
smelling emoter on the wearer, making it seem to all those with noses
that the wearer is affected by the perfume.</p>
<p>Whenever a GenPerfume, much like the GenDrink above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include everything
listed under GenDrink, plus GenContainer, plus a few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Smell emotes</em></td>
<td>this represents the parameters passed on
to the Emoter behavior when the perfume is worn. The parameters are
identical to the emoter, except that the SMELL flag is automatically
set. Unless the perfume is permanent, a expires parameter should
always be used. A default of 100 will be used if it is absent.
<p>The parameters are as follows: </p>
<pre>Parameters : Max/Min ticks, pct chance, expires, emote strings, ';' separated.<br>Example : min=10 max=20 chance=25;smells great!;smells lovely.;smells like roses!<br>Example : smell chance=25 expires=100;smells horrible!;is really stinky!<br>Example : broadcast chance=25;smells awesome!;smells overpowering!<br>Description: \n\r\<br>All smell emote strings are separated by the semicolons shown above. The first<br>parameter can be empty for defaults, or may contain a setting for minimum ticks<br>(min=10), maximum ticks (max=20), the percept chance of occurrence after the random<br>number of ticks has expired (chance=25), a total number of occurrences before<br>expiration (expires=0), or a tag to make the emote broadcast to adjacent rooms<br>(broadcast). In the first example every 10-20 ticks, there is a 25% chance that the<br>object with this property will select one of the emotes randomly and perform it for<br>all those in the same room who can see it. In the second example, a emote will be<br>performed 25% of the time, but will only emote 100 times before the behavior is<br>removed from the object. In the last example, a emote will be performed 25% of the<br>time in the room of the behavior, and in any adjacent rooms.<br> </pre>
</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni11"><font style="background-color: lime;">The "GenMap"</font></a></strong></p>
<p>A GenMap is a readable item that will automatically map out the rooms
of the specified area(s). Level is uniquely significant on
a GenMap. A level of 0 means the map will be built without
access to any indoor rooms or areas behind secret exits.
A value of 1 means the map will be built with both indoor and outdoor
rooms, but without secret rooms. Any other value will display each
and every room, regardless. A room that is classified as "in the
air" will never be placed on a map.</p>
<p>Whenever a GenMap is created, much like the GenArmor above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include everything
listed under GetItem, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Area List</em></td>
<td>
<p>List here the names of the areas which will be displayed on
the map, separated by semicolons. If you have a "MyArea", and a "HisArea",
you might enter them here as "MyArea;HisArea" (without the quotes).</p>
</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni12"><font style="background-color: lime;">The "GenKey"</font></a></strong></p>
<p>Keys are things required to unlock doors and containers with locks. </p>
<p>Whenever a GenKey is created, much like the GenItem above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include everything
listed under Genitem, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Key Code</em></td>
<td>The text entered here must match exactly
the assigned key code for the door or container lid which this
key opens.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni13"><font style="background-color: lime;">The "GenStaff"</font></a></strong></p>
<p>A GenStaff is a type of GenWeapon which also behaves like a wand.
This means that it has an invocation word which must be spoken
to activate the spell inside it.</p>
<p>Whenever a GenStaff is created, much like the GenWeapon above, you are
presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenWeapon, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spell</em></td>
<td>List here the name of the spell which is
cast by this staff. If left blank, the staff becomes mundane.
Check the list of spells for ones to use. Also, don't forget
to set the "Uses Remaining" field to give the staff some charges!</td>
</tr>
</tbody>
</table>
</p>
<p>The GenStaff, like the GenWand below, is activated by first wielding it,
and then by <em>speaking</em> or <em>saying</em> the magical triggerword to
the target. </p>
<p><strong><a name="geni14"><font style="background-color: lime;">The "GenWand"</font></a></strong></p>
<p>GenWands are items which must be worn/held and a magic word spoken in
order to activate an innate spell. To cast a wands spell on
a creature or item, the word must be spoken to the creature or item
directly.</p>
<p>Whenever a GenWand is created, much like the GenItem above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include everything
listed under GenItem, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spell</em></td>
<td>List here the name of the spell which is
cast by this wand. If left blank, the wand is little
more than a fancy stick. Check the list of spells for ones
to use. Also, don't forget to set the "Uses Remaining"
field to give the wand some charges!</td>
</tr>
</tbody>
</table>
</p>
<p>The GenWand, like the GenStaff above, is activated by first holding it
in ones hand, and then by <em>speaking</em> or <em>saying</em> the
magical triggerword to the target. </p>
<p><strong><a name="geni15"><font style="background-color: lime;">The "GenPill",
"GenPotion", "GenPowder", and "GenMultiPotion"</font></a></strong></p>
<p>GenPills are edible items which impart their spell after eating.
GenPowders can have their magic thrown on targets. GenPotions
and GenMultiPotions do the same when they are drank. The difference
between them is that GenPills and GenPotions vanish after drinking/eating.
GenMultiPotions may be drank from many times to receive their magic.</p>
<p>Whenever a GenPill, GenPowder, or GenPotion is created, much like the
GenArmor above, you are presented with a list of properties to
fill in. Pressing enter will leave the property unchanged.
The properties include everything listed under GenItem, plus a few
more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spells</em></td>
<td>List here the names of the spells which
are cast upon the eater of the pill or drinker of the potion.
Check the list of spells for ones to use. Each potion and
pill may only be used once, though an empty potion flask may
be refilled with water if one likes.</td>
</tr>
<tr>
<td><em>Nourishment/Eat</em></td>
<td>when eaten, how much nourishment does the
pill provide. 1000 would represent a full day of eating,
while 300 would represent a single meal. 100 would represent
a snack. You could make a magical smorgasborg if
you like!</td>
</tr>
<tr>
<td><em>Quenched/Drink</em></td>
<td>when drunk out of, how much of the total
capacity is consumed. A value of 500 represents a full day
of drinking, while 100 would represent a full glass. Keep
in mind that when a potion is potent (contains its magical substance),
the potion is entirely consumed. Only when the potion container
is refilled with water does this apply.</td>
</tr>
<tr>
<td><em>Amount of Drink Held </em></td>
<td>the amount of total drink held by the
potion. Each time the contents of the potion is
drunk, the amount represented by Quenched/Drink is subtracted from
this. When this number reaches 0, the potion container is
empty and must be refilled with something mundane, like water.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni16"><font style="background-color: lime;">The "GenSuperPill"</font></a></strong></p>
<p>The GenSuperPill is a special kind of GenPill which does not create a
spell effect, but has other, more permanent benefits!</p>
<p>Whenever a GenSuperPill is created, much like the GenPill above, you are
presented with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include everything listed
under GenItem, plus two more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spell or Parameters</em></td>
<td>The GenSuperPill has all of the properties
of the GenPill, but with a few more capabilities. Spells,
separated by semicolons, may be listed in this field.
Make sure the names are typed exactly, however, or the pill will
fail! In addition, certain adjustment parameters may be
typed in, to give the pill an extra "punch". These
adjustment parameters are too numerous to list here. I
suggest you enter "help parameters", and look at the entry for
"Prop_HaveAdjuster". The parameters for GenSuperPill will appear the
same, though GenSuperPills can also boost experience using "expe+10"
or "expe-20", or reset a players recall room to their current
room using "beacon+1". Another important difference from
Prop_HaveAdjuster is that the effects of a pill are PERMANENT!!!</td>
</tr>
<tr>
<td><em>Nourishment/Eat</em></td>
<td>when eaten, how much nourishment does the
pill provide. 1000 would represent a full day of
eating, while 300 would represent a single meal. 100
would represent a snack.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni17"><font style="background-color: lime;">The "GenScroll"</font></a></strong></p>
<p>A GenScroll is a readable item that has spells written on it. These
spells may be discovered through the "Read Magic" spell, and written
on using Scribe. Spells can be learned from scrolls using Scroll
Copy. </p>
<p>Whenever a GenScroll is created, much like the GenPill above, you are
presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenItem, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spells</em></td>
<td>List here the names of the spells which
are written upon the scroll. Check the list of spells
for ones to use. Remember to set the uses remaining field
so that the scroll can have a little clarity!</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p> </p>
<p><strong><a name="geni18"><font style="background-color: lime;">The "GenTitle"</font></a></strong></p>
<p>A GenTitle is a piece of paper which designates ownership of
a piece of property. A piece of property can only be a room or a set
of rooms with Prop_RoomForSale, Prop_RoomsForSale, or Prop_LotsForSale on
it. Titles are unique in that whenever they are GIVEn to another player,
the property changes ownership. Although titles can be created by
archons and given to shopkeepers to sell, the usual method for putting land
up for sale is to create a shopkeeper of the type LANDSELLER (see shopkeepers
below). This will automatically populate the shopkeeper with
titles to all properties for sale in his or her area.</p>
<p>Whenever a GenTitle is created, much like the GenPill above, you are presented
with a list of properties to fill in. Pressing enter will leave the
property unchanged. The properties include everything listed under
GenItem, plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Spells</em></td>
<td>List here the names of the spells which
are written upon the scroll. Check the list of spells
for ones to use. Remember to set the uses remaining field
so that the scroll can have a little clarity!</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p> </p>
<p><strong><a name="geni19"><font style="background-color: lime;">The "GenLawBook"</font></a></strong></p>
<p>A GenLawBook is a Journal-Like document containing 10 pages of detailed
information about the laws in the area for which it is "written".
An Area must have either the "Arrest" or "Conquerable" behaviors
in order to have any laws for the law book to list. If the Area
has the Arrest behavior with a property of "custom", then Archons and
staff may also use the GenLawBook to modify aspects of the law in that
area. If the Area has the "Conquerable" behavior, then either the
Archon, staff, or duly authorized clan member may use the book to modify
law.</p>
<p>Whenever a GenLawBook is created, much like the GenReadable above, you
are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenReadable, though one of the properties
has a slightly different meaning:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Readable Text</em></td>
<td>This field is reserved for the Name of the
area for which this law book refers. The area named here must
have the Arrest or Conquerable behaviors for the law book to work
properly.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni20"><font style="background-color: lime;">The "GenPortal"
and "GenMobilePortal"</font></a></strong></p>
<p>A GenPortal is Rideable type item that can act as a gateway between two
rooms via the ENTER command. The item can be made gettable or not,
blended or not, having all the advantages of a standard item, while
still getting you from here to there like an Exit. The Rideable-specific
fields Rideable Type and MOBs Held are also unchangeable due to the
specific nature of the portal, although you will see them listed on
the editor screens. They also share the same re-closing and re-locking
behaviors noted above with GenContainers.<br>
</p>
<p>GenMobilePortal is a GenPortal with a unique feature. The GenMobilePortal
expects that it's assigned destination room ALSO contains a GenPortal in
it. If so, then every time the GenMobilPortal is moved by a player
carrying it from place to place, the target for the paired GenPortal will
also be changed to reflect the move.<br>
</p>
<p>Whenever a GenPortal is created, much like the GenRideable above, you
are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Assigned Room IDs</em></td>
<td>This field is the room ID of the room to
which the portal will take you, or a list of rooms (separated by semicolons)
to which the portal might take you.</td>
</tr>
<tr>
<td><em>Exit Direction Name</em></td>
<td>This field, when not blank, will cause the
portal to be listed among the exits in the room. This field will
hold the name of the direction, while the portal's "Name" will
be the room description.</td>
</tr>
<tr>
<td><em>Exit Closed Text</em></td>
<td>If the Exit Direction Name is not empty,
and the portal has a door/lid, then this field will be displayed instead
of the "name" in the exits list.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni21"><font style="background-color: lime;">The "GenClanItem",
"GenClanCommonContainer", "GenClanApron", "GenClanCommonItem",
"GenClanContainer", "GenClanFlag", "GenClanPamphlet", and "GenClanSpecialItem"</font></a></strong></p>
<p>The above are all basis for the items created by the Clan Crafting skill.
The GenClanItem and GenClanContainer are standard holdable items
assignable to clans, usually for the purpose of use with the Conquerable
behavior on Areas. They are only gettable by members of the
clan to whom they are assigned, and have properties to allow them to
be captured by other clans as well. The GenClanCommonItem and GenClanCommonContainer
cause their mob holders to perform tasks. The GenClanFlag holds a
conquered area in place, and provides Conquerable behavior information.
The GenClanApron makes the holder into a shopkeeper. The GenClanPamphlet
makes the holder a dissident and multiplies in rival clan areas,
and the GenClanSpecialItem performs miscellaneous tasks when found
in a conquered area.</p>
<p>Clan items all have a Clan Item type, which must usually be matched with
the proper GenClan class type from the list above in order to work
effectively. Here is a proper mapping:</p>
<p>
<table style="width: 100%;" bgcolor="palegreen" border="1"
cellpadding="1" cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Class Name</strong></td>
<td width="75%"><strong>Clan Item Types</strong></td>
</tr>
<tr>
<td>GenClanItem, GenClanContainer</td>
<td>"BANNER", "GAVEL"</td>
</tr>
<tr>
<td>GenClanCommonItem, GenClanCommonContainer</td>
<td>"GATHERITEM", "CRAFTITEM"</td>
</tr>
<tr>
<td>GenClanFlag</td>
<td>"FLAG"</td>
</tr>
<tr>
<td>GenClanPamphlet</td>
<td>"PROPAGANDA"</td>
</tr>
<tr>
<td>GenClanSpecialItem</td>
<td>"SPECIALSCALES", "SPECIALSCAVENGER",
"SPECIALOTHER", "SPECIALTAXER"</td>
</tr>
</tbody>
</table>
<br>
Whenever a GenClanItem is created, much like the
GenItem above, you are presented with a list of properties to fill
in. Pressing enter will leave the property unchanged.
The properties include everything listed under GenItem, plus a
few more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Clan ID</em></td>
<td>This field is reserved for the Name of the
clan that this item belongs to. </td>
</tr>
<tr>
<td><em>Clan Item Type</em></td>
<td>This type of clan item, as described above.
</td>
</tr>
</tbody>
</table>
</p>
<p><strong><a name="geni22"><font style="background-color: lime;">The "GenWallpaper",
and "GenFatWallpaper"</font></a></strong></p>
<p>GenWallpaper is unique in that it is a non-gettable item which is
never listed among the items in a room, but CAN be looked
at. It is intended to provide targets for the LOOK command
based upon objects which might be mentioned in a room description.
Archons should make sure they have SYSMSGS turned on to edit wallpaper
items, since they will not be noticed otherwise. <br>
</p>
<p>GenFatWallpaper is the same as GenWallpaper, except that it also has a
displayText field, so that it can be seen in a room. However, like
GenWallpaper, it can not be interacted with.<br>
</p>
<p>When GenWallpaper is created, you have only the name (which should contain
key words for the LOOK command), the description that is seen,
and whether or not it is also readable.</p>
<p><strong><a name="geni25"><font style="background-color: lime;">The "GenRecipe"</font></a></strong></p>
<p>GenWallpaper is a complex but powerful tool for expanding the system of
Common Skills in the CoffeeMud codebase. A GenRecipe is a piece of
paper upon which is written a recipe, schematic, or some other instructions
for enhancing the list of things which can be crafted by players
using their crafting Common Skills. A player takes advantage
of a recipe by mearly having the item in his or her inventory and
using the appropriate skill for which the recipe was designed.</p>
<p>Designing a GenRecipe object is extremely complex. After setting
the "normal" GenItem fields for this item, such as name, readabletext,
weight, value, etc, there are still the two key GenRecipe fields
left to fill in: Common Skill ID, and the Recipe Data line.
The Common Skill ID identifies which of the common skills is served
by the recipe. The Data line describes in detail the item which
can be created by players with this recipe on hand. The format
of the data line is a series of comma-delimited values which are defined
for each common skill uniquely. There are two ways of determining
the number and nature of each value for the data line. One is
to open the appropriate common skill *.java file in the /com/planet_ink/Abilities/Common/
directory on your computer and observing the several lines near the
top of the file which begin with "protected static final int RCP_".
The number, order, and nature of the values will be identical to these
variable definitions. The second way is to open the appropriate
*.txt file for the common skill in the /resources/skills/ directory (such
as weaponsmith.txt or pottery.txt) and noting the first line of the file.
The first line in most cases will be a guide to the number and nature
of the field values. </p>
<p><strong><a name="geni23"><font style="background-color: lime;">The "GenInstrument"
and "GenPiano"</font></a></strong></p>
<p>The GenInstrument represents a musical instrument for the purposes of
the several Minstrel spells. They differ only in that the
GenPiano is also like a GenRideable mentioned above, in that it
must be sat on to play.</p>
<p>Whenever a GenInstrument is created, much like the GenRideable above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
everything listed under GenItem, and GenRideable for the GenPiano,
plus one more:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Instrument Type</em></td>
<td>This is the general classification of the
instrument for the purposes of several of the Minstrel songs.</td>
</tr>
</tbody>
</table>
</p>
<p><a name="geni24"><strong><font style="background-color: lime;">The "GenLimb"</font></strong>
</a></p>
<p>This strange item represents both false limbs and real replaceable ones.</p>
<p>Whenever a GenLimb item is created, much like the GenContainer above,
you are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenItem, though some have slightly
different meanings:</p>
<strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name, Secret Identity</em></td>
<td>At least one of these fields must *END*
with the name of a valid body part in order for the GenLimb to operate
properly. Value body parts include: "ANTENEA","EYE","EAR","HEAD","NECK","ARM","HAND","TORSO","LEG","FOOT",
"NOSE","GILL","MOUTH","WAIST","TAIL",and "WING"</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>On a GenLimb, this field should have a value
of 0 when the limb is false (meaning that wearing it does not replace
the functionality of missing limbs), or a value > 0 (meaning
that it replaces X missing limbs).</td>
</tr>
</tbody>
</table>
</strong>
<p> </p>
<p> </p>
<p><strong><font color="blue" size="5"><a name="moditems">Modifying Items</a></font></strong></p>
<p>There are properties of items, armor, weapons, and containers that can
be modified by the Archon. If one wishes to modify a dagger,
one must either hold the dagger, or have the dagger present in the
room. The Archon can then issue the command "modify dagger".
If the item is a GenItem, GenContainer, GenFood, GenWater, GenDrink,
GenWeapon, or any other "Gen" item, then the same properties as above
will be presented. </p>
<p>Like rooms and areas, there are a very rich selection of Behaviors you
may choose for items. Here are our favorites:</p>
<p>"Decay" for items that are only around for a limited time.<br>
"DelayedTransporter" to make an item that moves
people around.<br>
"Emoter" to make items behave in random and cute
manners.<br>
"FasterRecovery" makes the owner or rider recover
stats faster.<br>
"Follower" will make items follow players and mobs
around.<br>
"InstantDeath" to cause an item to kill someone.<br>
"RandomItems" will cause items from a saved file
to appear in a container item.<br>
"ItemGenerator" will create treasure and items
for your container items.<br>
"Mime" to make an item mimic the socials that players
do.<br>
"Patroller" makes the item travel a route you
specify, even when ridden.<br>
"Scriptable" allows you to script the behavior of
the item based on triggers.<br>
"Sounder" to add new color to item usage.</p>
<p>Items also benefit from effects, just like rooms, areas, and exits.
Here are some important effects you may consider for your items:</p>
<p>"Burning" sets an item on fire.<br>
"Chant_ChargeMetal" makes an item attract electricity.<br>
"Chant_Shillelagh" makes wooden weapons more deadly.<br>
"Falling" sets an item as falling.<br>
"Prop_AbilityImmunity" protects the item from
specified targeted spells.<br>
"Prop_AbsorbDamage" makes the item absorb damage
from certain attacks.<br>
"Prop_AddDamage" makes the item owner sustain extra
damage.<br>
"Prop_ClosedDayNight" makes an item disappear
at night.<br>
"Prop_ClosedSeason" makes an item disappear
for a season.<br>
"Prop_FightSpellCast" makes a weapon cast a spell
when it hits.<br>
"Prop_HaveAdjuster" modifies the owners stats.<br>
"Prop_HaveResister" modifies the owners saving throws.<br>
"Prop_HaveSpellCast" gives a spell effect to the
owner.<br>
"Prop_HaveZapper" restricts ownership.<br>
"Prop_Hidden" makes an item hidden, temporarily.<br>
"Prop_Invisibility" makes an item invisible.<br>
"Prop_ItemTransporter" makes an item that transports
things.<br>
"Prop_ItemTransReceiver" makes an item receives
transported things.<br>
"Prop_LangTranslator" makes the item a translator
of languages.<br>
"Prop_LimitedItems" can limit the number of a particular
item ever to be owned.<br>
"Prop_LocationBound" limits where an item can be
taken from.<br>
"Prop_ModExperience" modifies experience gained
when holding/wielding/wearing this.<br>
"Prop_NoDamage" makes the item incapable of doing
damage.<br>
"Prop_NoPurge" makes the item a permanent piece
of garbage.<br>
"Prop_NoRecall" makes the item prevent recalling.<br>
"Prop_OpenPassword" gives a container a secret opening
word.<br>
"Prop_RideAdjuster" modifies the mounted persons
stats.<br>
"Prop_RideEnabler" gives the mounted new skills.<br>
"Prop_RideResister" modifies the mounted persons
saving throws.<br>
"Prop_RideSpellCast" gives a spell effect to the
mounter.<br>
"Prop_RideZapper" restricts mounting.<br>
"Prop_RoomView" makes an item that gives you a view
of something else. A window maker!<br>
"Prop_ScrapExplode" makes the item explode when the
scrap common skill is used on it.<br>
"Prop_Smell" gives the item an aroma when using
the SNIFF command.<br>
"Prop_SpellAdder" makes the item cast a spell
on those who come near it.<br>
"Prop_SpellReflecting" helps make a shield
that reflects magic.<br>
"Prop_TattooAdder" makes an item that grants one
a tattoo.<br>
"Prop_TicketTaker" makes a rideable that requires
money to board.<br>
"Prop_Trashcan" makes a container that destroys
things placed inside.<br>
"Prop_UseSpellCast" makes an item that spell-affects
the owner when filled, worn, placed in, wielded, or held.<br>
"Prop_UseSpellCast2" makes an item that spell-affects
the one who gets, eats, or drinks from it.<br>
"Prop_WeaponImmunity" makes an item grant attack
immunities.<br>
"Prop_WearAdjuster" modifies the wearers stats.<br>
"Prop_WearEnabler" gives the wearer skills.<br>
"Prop_WearResister" modifies the wearers saving
throws.<br>
"Prop_WearSpellCast" gives a spell effect to the
wearer.<br>
"Prop_WearZapper" restricts wearing/wielding/holding.<br>
"Spell_Boomerang" makes an item very loyal to the
owner.<br>
"Spell_ContinualLight" makes an item shine!<br>
"Spell_Fly" makes an item fly around.<br>
"Spell_LightenItem" makes an item lighter.<br>
"Spell_MagicalAura" gives an item a magical aura.<br>
"Spell_Shrink" makes an item smaller.<br>
"Spell_WizardLock" makes a container harder to open.<br>
"Prayer_BlessItem" makes a weapon harder hitting.<br>
"Prayer_CurseItem" makes a weapon worse at hitting.<br>
"Prayer_FlameWeapon" makes a weapon flame striking.<br>
<br>
Lots of traps are available to make items more perilous:
"Bomb_AcidBurst", "Bomb_Explosive", "Bomb_FlameBurst", "Bomb_Noxious",
"Bomb_Pepper", "Bomb_Poison", "Bomb_Smoke", "Bomb_Spores", "Bomb_Water",
"Trap_AcidSpray", "Trap_Boomerang", "Trap_ElectricShock", "Trap_Get",
"Trap_GetBlade", "Trap_GetGas", "Trap_GetNeedle", "Trap_GetSpell",
"Trap_Gluey", "Trap_Greasy", "Trap_Ignition", "Trap_Infected", "Trap_Launcher",
"Trap_Needle", "Trap_NeedlePrick", "Trap_Noise", "Trap_Open", "Trap_OpenBlade",
"Trap_OpenGas", "Trap_OpenNeedle", "Trap_OpenSpell", "Trap_PoisonGas",
"Trap_Popper", "Trap_SleepGas", "Trap_Spark", "Trap_SpellBlast", "Trap_SporeTrap",
"Trap_Trap", "Trap_Unlock", "Trap_UnlockBlade", "Trap_UnlockGas",
"Trap_UnlockNeedle", "Trap_UnlockSpell", "Trap_Vanishing", "Trap_WeaponSwing"<br>
<br>
Lots of poisons are available to make weapons more
deadly, or drinkables into poisons - "Poison_Alcohol", "Poison_BeeSting",
"Poison_Bloodboil", "Poison_Decreptifier", "Poison_Firebreather",
"Poison_Ghoultouch", "Poison_GoblinDrip", "Poison_Heartstopper", "Poison_Liquor",
"Poison_Mindsap", "Poison_Peppersauce", "Poison_Rotten", "Poison_Slumberall",
"Poison_Venom", "Poison_XXX"</p>
<p>For "non-Generic" items, the following properties will be presented
during modification (see Appendix A for more information):<br>
</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Level</em></td>
<td>the level of the item, dictating the lowest
level a character must attain to possess or hold it. See Appendix
A for more information on this field.</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>This number represents an adjustment to
the items magical properties. If the item is any sort of armor,
then this value will be the same as described above under
GenArmor. If the item is a weapon, then this value will
be the same as described above under GenWeapon. For all
other items, aside from making the item appears magical, it
has no other use whatsoever. See Appendix A for more
information on this field.</td>
</tr>
<tr>
<td><em>RejuvTicks</em></td>
<td>This number represents the number of ticks
(where a tick is roughly 3 seconds) before an item, which has been
removed from the room, rejuvenates or resets to its proper state.
The value '2147483647' or '0' means that the item never
rejuvenates, but once picked up and brought out of the room,
is gone forever. Any other value will represent a number
of ticks. This property does not take effect until the
room is saved. For more information on making the RejuvTicks
property take effect after changing it, see below under Rejuvenating
Items and Mobs" or "How to Save a Room".</td>
</tr>
<tr>
<td><em>UsesRemaining</em></td>
<td>for scrolls, lanterns, ammunition, staves,
and wands, this represents the number of times the item may be used
again before expiring. For all other items, this field has
no purpose whatsoever.</td>
</tr>
<tr>
<td><em>MiscText</em></td>
<td>the meaning of this field differs entirely
from item to item. For most weapons and armor, it means nothing.
For readable items, it represents the text written upon it.
For scrolls, it is the spells that are scribed upon it. For a StdKey,
it is the key code that must match the door the key will open
(see above under GenExit). See Appendix A for more
information on this field.</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p> </p>
<p><strong><font color="blue" size="5"><a name="xitems">Destroying Items</a></font></strong></p>
<p>To destroy an item that is either being held by you, or is in the same
room as you, you need only issue the destroy command. For
instance, if a dagger has offended: "destroy item dagger" wll make
it go away.</p>
<p>Once destroyed, items that have been set to rejuv will not do so.
If the item was a permanently saved item in the room, you must
re-save the room in order to make the items destruction permanent.</p>
<p><strong><font color="blue" size="5"><a name="arctools">Tools of the Trade</a></font></strong></p>
<p>The Archons of your realm have lots of items that assist them in building
and administering their mud. Lets take a look at these:</p>
<p><em>The Archon Staff</em> (CREATE ITEM ARCHONSTAFF) - the Archon
Staff is the main tool of the true Archon. Also available
from the OUTFIT command, it not only provides a deadly weapon, but
a useful source of magical power. To use the powers of the
staff, it must first be wielded. It is a two-handed item, so the
Archon's held position must be given up for it as well. Once wielded,
numerous magical words invoke the power: s<em>ay targetname</em> <em>"refresh"
</em>will rejuvinate the targets mana, hit points, and movement; <em>sayto
targetname "level up" </em>will give the target a free level of experience;
<em>sayto targetname "level all up" </em>will level the target up
to 91; <em>sayto targetname "burn" </em>will blast the target with
hellish fire.</p>
<p><em>The Wand of the Archons</em> (CREATE ITEM WANDARCHON) - the Wand of
the Archons is the one-handed alternative to the Archon Staff. It
is also available only to true Archons. To use the powers of the wand,
it must first be held. Once held, numerous magical words invoke the power:
s<em>ay targetname</em> <em>"refresh" </em>will rejuvinate the targets mana,
hit points, and movement; <em>sayto targetname "level up" </em>will give
the target a free level of experience; <em>sayto targetname "level all up"
</em>will level the target up to 91; <em>sayto targetname "burn" </em>will
blast the target with hellish fire.</p>
<p><em>The Goody Bag </em>(CREATE ITEM GOODYBAG) - The Goody Bag is full
of fabulous prizes which Archons may dispense to players.
What's better, an item that is removed is always replaced, so that
the bag never runs out. Inside the goody bad are piles of currency,
pills to gain stats or experience, and others goodies.</p>
<p><em>Ingredients Sack </em>(CREATE ITEM INGREDIENTS) - The Ingredients
bag has exactly one of every kind of natural resource the system
offers. Removing one from the bag will automatically replace
it, so the bag never ever runs out.</p>
<p><strong><font color="blue" size="5"><a name="mobcreate">Creating MOBs</a></font></strong></p>
<p>Greater even than the mages powerful spells of summoning is the Archons
ability to conjure beasts into caverns and townspeople on to streets.
To do this, the Archon need only issue the create command once
again. Summoning a goblin into an ordinary room is as
simple as entering "create Goblin". This will create a standard
Goblin in the room you are standing in. To make him stay there,
even after you reboot, you must save the room as described in the
section below on saving rooms.</p>
<p>To find out what mobs are available for you to create, you can enter "list
mobs". Entering "create <mobname>" will prove the true incantation
for almost all of the creatures on this list. An exception, however,
is the GenRideable. Since there is both an Item and a MOB version
of that name, you will need to further qualify your create command by entering
"create mob GenRideable" or "create item GenRideable".</p>
<p>If you wish to create your goblin a Grid-type locale, extra consideration
is required. Locale types like MountainsGrid, WoodsGrid,
WoodsMaze, PlainsGrid, DesertMaze, etc.. can all contain nasty
monsters in them. However, two rules need to be followed for
this magic to work properly. The first is that you can only
save creatures which are in the parent Grid room itself.
If you have SYSMSGS on, you can tell which room this is because it is
the only one with a simple room ID ("MyArea#123") in the description. Since
no one ever actually walks into the parent Grid room, the only way to
get to it is using the Archon GOTO command. The second
of the two rules is that you must give the mob a Mobile behavior.
The mobile behaviors are specially coded so that they will
take the monster to a random room inside the grid the first time
the thing tries to move. </p>
<p><strong><a name="genm1"><font style="background-color: lime;">The "GenMob" and
"GenUndead"</font></a></strong></p>
<p>Whenever a GenMob or GenUndead is created, much like the GenItem
above, you are presented with a list of properties to fill in.
Pressing enter will leave the property unchanged. The only
difference between the GenMob and GenUndead is that the GenUndead
can be TURNed by a Cleric, while a GenMob cannot. The
properties include:</p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the name of the mob, like "an evil priest",
or "a goblin"</td>
</tr>
<tr>
<td><em>Description</em></td>
<td>what one sees when one looks at the mob</td>
</tr>
<tr>
<td><em>Display Text</em></td>
<td>what one sees when the mob is
lurking in a room.</td>
</tr>
<tr>
<td><em>Race</em></td>
<td>the race of your creature.</td>
</tr>
<tr>
<td><em>Rejuv Ticks</em></td>
<td>the number of ticks (4 second intervals),
after the mob has been killed, that will transpire before the mob
reappears in its home room. For more information on making the
RejuvTicks property take effect after changing it, see below
under Rejuvenating Items and Mobs" or "How to Save a Room".</td>
</tr>
<tr>
<td><em>Gender </em></td>
<td>M, N or F please!</td>
</tr>
<tr>
<td><em>Level </em></td>
<td>this represents the experience level of
the MOB. This number determines (along with alignment)
how much experience a player will get for slaying the creature.
This number should be calculated with great care so as not to make
it "too good" for a higher level, or "too tough" for a lower level. </td>
</tr>
<tr>
<td><em>Attacks/Round</em></td>
<td>this represents the number of attacks the
creature receives every round. 1 is perfect.</td>
</tr>
<tr>
<td><em>Attack Adjustment</em></td>
<td>this represents the MOBs ability to slay
other beings. At first level, this should be a 0. At 25th
level, this may be as much as 150-200. You should keep
the default, either way.</td>
</tr>
<tr>
<td><em>Damage/Hit</em></td>
<td>this represents the maximum amount of damage
a MOB does when striking its opponents. At first level, 4-8
is plenty. At 25th level, 20-50 is a good range, depending
upon the monsters speed. Just keep the default.</td>
</tr>
<tr>
<td><em>Armor </em></td>
<td>the amount of protection the beast has against
being hit. Lower numbers are always better here. At
first level, 50 is a well-protected creature, while 100 is one that
is completely helpless against attacks. At 25th level, -150
would be a good number. Again, just keep the default.</td>
</tr>
<tr>
<td><em>Hit Points/Level</em></td>
<td>this is a multiplier used to determine the
creatures hit points. The number 11 is a typical, it
is the default, and unless the creature is really nasty (12-20 range),
it should be kept at default.</td>
</tr>
<tr>
<td><em>Alignment </em></td>
<td>this is one the default "Factions" (see
below) used by most muds, and refers to the mobs ethical disposition.
By the default settings, this is the most important determinate
of whether a player gets experience, aside from monster level.
You should make the alignment reflect the creature’s obvious
disposition. Making children evil, or a good orc doesn't do
anyone any good.</td>
</tr>
<tr>
<td><em>Money</em></td>
<td>unless a thief gets it first, this will
be the amount of money the creature is carrying. The money
carried is expressed in multiples of the the base value.
A money value of 20 will mean that they are carrying 20 gold
(or whatever the local currency is), assuming gold is valued at
1.0 of base. If the local currency has only Latinum Bars
valued at 0.5, then a money value of 20 here would mean
that the creature carries 40 Latinum Bars.</td>
</tr>
<tr>
<td><em>Weight </em></td>
<td>You should make this number reflect the
monsters true weight. </td>
</tr>
<tr>
<td><em>Height </em></td>
<td>You should make this number reflect the
monsters true height/size. </td>
</tr>
<tr>
<td><em>Abilities </em></td>
<td>grants the opportunity to give your new
MOB spells, prayers, skills, and other abilities. Enter
'list' to see a list of the proper names of the CoffeeMud
abilities. For more information, you may enter
'atopics' at the main prompt to see a list of the common
names of spells, skills, prayers, and songs to use. You
may also enter 'ahelp' from the main prompt to show some
of the more secret effects available. You may add new ones by
entering the ability's proper name only. Entering
it again will remove it. Keep in mind that placing properties
here is absolutely useless, even though they are classified
as abilities; they belong under effects below.</td>
</tr>
<tr>
<td><em>Behaviors </em></td>
<td>the list of standard behaviors that can
be attached to MOBs is growing daily. Enter 'list' to
see a list of them. You may also, from a normal prompt,
enter 'ahelp' for more information on the available behaviors.
Either way, you may add new ones by entering the behaviors proper
names here, followed by any behavior parameters. Entering it
again will remove it. If you gave your MOB any spells or
skills, you should at least also give it the CombatAbilities behavior
so that it will use them in combat. However, some behaviors,
such as Mageness, Clericness, etc.. come fully-loaded with abilities.</td>
</tr>
<tr>
<td><em>Effects</em></td>
<td>this may refer to a property, as discussed
above in the section on rooms, or it may refer to a permanent spell
effect. After all, it is one thing to be able to pray
for Bless, but quite another thing to ALWAYS be blessed. Either
way, use 'list' here to see the proper names of the abilities
that can be added as effects. Enter the proper name of
the ability to add it as an effect, then any effect parameters.
Enter the proper name again to remove it. From the
main prompt, 'help properties' is a great place to find the many
mob properties available. 'help abilities' will also show
some of the more secret effects available. </td>
</tr>
<tr>
<td><em>Factions</em></td>
<td>the list of factions to which this mob belongs,
and in which he or she has a value assigned. Enter the faction
name to add or remove. Changing a value involves first removing,
then re-adding. See below for more information on factions.</td>
</tr>
<tr>
<td><em>Is .. flags (Disposition)</em></td>
<td>Most of these are self explanatory.</td>
</tr>
<tr>
<td><em>Can See... flags (Senses)</em></td>
<td>Again, methinks thou canst fathom most of
these just fine without me enumerating them. </td>
</tr>
</tbody>
</table>
<strong>
<p><a name="genm2"><font style="background-color: lime;">The "GenShopKeeper"</font></a></p>
</strong>
<p>ShopKeepers are folks that buy and sell equipement that is given to them
by Archons. ShopKeepers can sell anything from items to creatures,
skills as a teacher, or spells for a price. </p>
<p>ShopKeepers designated as Land Sellers will sell any rooms in the same
area as the shopkeeper which has the Prop_RoomForSale, Prop_RoomsForSale,
or Prop_LotsForSale properties. Use "AHELP Prop_RoomForSale"
for more information on this effect you may add to rooms. ShopKeepers
designated as Clan Land Sellers will do the same, but only for Clan
members. In this way, players and clans can buy and own
their own rooms where their property will be safe during reboots, and
pets can become permanent fixtures. This is also the way the
Construction, Masonry, Locksmith, and other property-related skills
can become useful.</p>
<p>ShopKeepers can also be Inn Keepers. To make this work, you need
only give the shopkeeper a number of StdInnKey items equal to the
number of rooms in your inn. For each room in your inn, make
sure you have a locked door for each room, and that each of the locked
doors in your inn has a key code equal to "INN1", "INN2", etc.. up to
the number of locked doors for each room in the Inn. Players
will then buy the keys to rooms, and the keys will automatically return
to the shopkeepers stock after a single mud "day". The only other
trick to making a successful inn is to make sure you do the "reset room"
command to the room with the innkeeper in it, after the keys have all
been given to him, and the room has been saved.</p>
<p>ShopKeepers are much more savvy about money and economy than most.
They will often draw not only from the loose gold a player has,
but any high-denomination Notes the player has in his or her inventory.
The ShopKeeper will also give change in this manner. The player
will often need to check the "change bag" newly arrived in their inventory
to see the change that a ShopKeeper might have given them. These
change bags will often contain the high-denomination notes mentioned before
(such as a Golden Note, or a Half Note). Each of these notes are
convertable into loose gold merely by GETting them from the change bag.
</p>
<p>Whenever a GenShopKeeper is created, much like the GenMob above, you are
presented with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include all of the fields
listed above under GenMob, plus a few more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Type</em></td>
<td>a shopkeeper can sell Anything, General
items, Armor, Miscellanous magic items not included amongst armor
or weapons, Weapons, Pets, Leather items, Only buys the things he
also sells (but sells whatever you give him to sell), Trains players
in spells, prayers, skills, or songs, Casts prayers, spells, or
songs on the buyer, Potions, Land, and more! All shopkeepers
can also buy what they sell, excluding Trainers and Casters.</td>
</tr>
<tr>
<td><em>Inventory</em></td>
<td>
<p>this is where you would "stock" your shopkeeper with items
that match their type. You may add to this list by
entering the class names of any standard items, standard mobs, or
abilities. You may also enter the name of any stray
items or mobs hanging out in the same room as the shopkeeper
to put them up for sale. This last is the best and only
way to get Generic items and mobs onboard. </p>
<p>When an item is put up for sale, you may specify the number
of items like it the shopkeeper has in stock, and a price for the
item. You may also specify a price for the item. There
are many different values you can put in the price field.
</p>
<p>* A given price of 0 or higher will ensure that the item will
have that price in local currency. For example. The price
is expressed in multiples of the the base value. A price value
of 20 will mean that the item costs 20 gold to buy, before adjusting
for charisma and other factors, assuming gold is valued at 1.0 of base.
If the local currency has only Latinum Bars valued at 0.5, then a
price value of 20 here would yield a 40 Latinum Bars price to consumers.<br>
* A given price of -1 means that you are allowing
CoffeeMud to price the item for you. This should be the
recommended entry unless you know what you are doing.<br>
* A given price between -2 and -100, or -1000 is
invalid!<br>
* A given price between -101 and -999 will
designate some number of Quest Points to charge for the item.
The number of quest points is determined by taking the absolute
value of your given price and subtracting 100. So a given
price of -135 would mean that the item costs 35 quest points.<br>
* A given price of -1001 or lower will designate
some number of Experience Points to charge for the item.
The number of experience points is determined by taking the
absolute value of your given price and subtracting 1000.
So a given price of -1001 would mean that the item costs 1 experience
point, while a price of -9876 would mean that the item costs 8876
experience points.</p>
</td>
</tr>
<tr>
<td><em>Prejudice Factors</em></td>
<td>
<p>This complicated field is where you can adjust the prices
the ShopKeeper sells from the programmed normal. It always
works in tandem with the Devalue Rate below, as well as such factors
as the Charisma of the player dealing with your shopkeeper.<br>
<br>
An unspecified value here will always return
a value of 1.0 (which means NO adjustment). However, you
may enter one or more adjustments separated by semicolons (;).
Here is an example:</p>
<p><font face="Courier New" size="2">SELL=5.5 Elf Dwarf <b>;</b> BUY=0.4
Elf Dwarf ; SELL=1.0 ; BUY=1.0</font></p>
<p>Each adjustment must begin with the words "SELL=" or "BUY="
followed by a Real number designating the adjustment from
normal. "SELL=" refers to the adjustment to prices players
get when selling TO the shopkeeper. "BUY=" refers to the adjustment
to prices players get when buying FROM the shopkeeper. A value
above 1.0 for either of those will raise the applicable prices.
A value below 1.0 (like 0.3 or 0.75) will lower prices. Values
of 0.0 are NOT allowed. If you need to all but not allow
buying and selling, a value of 0.000000001 should do. </p>
<p>Each adjustment may also contain the name of one or more Racial
Categories (Elf, Dwarf, Gnome, Halfing, etc..). If a Racial
Category is specified, then the adjustment will ONLY apply to that race.
The adjustments are read from left to right, so adjustments without
any racial categories should be listed LAST. In the above example,
Dwarves and Elves are given a very good deal, where everyone else
gets a normal one. In addition to Racial Categories, you may also
list alignments (good, neutral, or evil), a sex (male, female, and
neuter), a character class, or the name of a faction range.
Remember that this field is evaluated from left to right,
so any matches made on the left that apply to a player
will cancel evaluation of the rest of the field! </p>
<p>Just as bonus feature, if the adjustment begins with the words
"LIMIT=", then you may enter a number representing the maximum number
of rows of inventory the shopkeeper will display whenever a LIST is
done. If the adjustment begins with the words "RANGE=", then you
may enter either a number or a percentage. This number will represent
the maximum and minimum level range of the items which the shopkeeper
will purchase from players. This level range is relative
to the median level range of his area. For instance, if the
median level of the shopkeepers area is 10, and RANGE=3 is entered,
then the shopkeeper will only purchase items between levels 7
and 13. A value of 0 means no limit and no range, of course. These
features have no relation with the above prejudice functionality
-- they're just bonus.</p>
</td>
</tr>
<tr>
<td><em>Budget</em></td>
<td>
<p>This field is used to define the maximum amount of local currency,
per a defined time period, which shopkeepers will spend when buying
equipment from players. The format of the field is an amount of money
(in base values only) followed by the name of period (HOUR, DAY, WEEK,
MONTH, YEAR). All of these time periods are **MUD** time periods, where one
hour is about 10 minutes of real life time. For example, a value of
"200 DAY" means that the shopkeeper will not buy more than 200 gold per
day of any equipment from players, assuming that gold=1.0 in currency
value. </p>
</td>
</tr>
<tr>
<td><em>Devalue Rate</em></td>
<td>
<p>This field is used to limit the number of EACH PARTICULAR
item that a shopkeeper will keep in his inventory. This provides
a ceiling therefore on the number of unique items of a kind which
a shopkeeper will purchase from players. The way this field works is by
defining how far the price drops, in percentage, every time the
player sells an item to a shopkeeper. Decimals (real numbers)
are allowed in this field. This field may also be used to differentiate
between the rate of devaluation of raw resources and other
finished items. A single integer field would represent the
devaluation percentage of all items, while a field with two
integers seperated by a space would represent the devaluation
of finished items and raw resources respectively. For example,
a value of "20" would mean that the shopkeepers value price drops by
20% every time this shopkeeper buys a particular item. If the
shopkeeper buys two, it would be 20%. Three would be 60% and so
forth. This effectively limits the shopkeeper to buying to more
than 5 of any item (5 * 20) == 100%. A value of "20 0.5" would
mean a devaluation rate of 20% for finished items, and 0.5% (1/2%)
for raw resources.<br>
</p>
<p><br>
By default, shopkeepers devalue at a rate of 20% and
0.2%, which is defined in the coffeemud.ini file. If you want
a particular shopkeeper to never devalue items, set the value of this
field to 0 (meaning no devaluation). <br>
</p>
</td>
</tr>
<tr>
<td><em>Inventory Reset Rate</em></td>
<td>
<p>This is the rate, in ticks (4 second periods) at which the
shopkeeper totally resets his inventory back to the last saved
"stock" items. Leave this field empty to use the INI default, or not
to have a reset rate depending. </p>
</td>
</tr>
</tbody>
</table>
<br>
</p>
<strong>
<p><a name="genm3"><font style="background-color: lime;">The "GenBanker"</font></a></p>
</strong>
<p>A Banker is a special type of ShopKeeper that holds money and items in
a special private account for players. Bankers can pay or
charge interest on money left in the account, and charge interest
on items left with them. Bakers can also loan money based on
those same items as collateral, and automatically handle interest and payment
plans. A Banker may also be designated as a Clan Banker, meaning
that it will only deal with Clan Treasurers.</p>
<p>Whenever a GenBanker is created, much like the GenShopKeeper above, you
are presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenMob and GenShopKeeper, plus a
few more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Coin Interest</em></td>
<td>This is the amount of interest paid (or
CHARGED if negative) every game month (about once a real day)
on gold money left in a players account.</td>
</tr>
<tr>
<td><em>Item Interest</em></td>
<td>This is the amount of interest paid (or
CHARGED if negative) every game month (about once a real day) on
items left in a users account.</td>
</tr>
<tr>
<td><em>Loan Interest</em></td>
<td>This is the amount of interest charged
every game month (about once a real day) on gold money loaned to
players or clans account.</td>
</tr>
<tr>
<td><em>Bank Name</em></td>
<td>This is a unique identifier for the bank
chain. All GenBankers with the same Bank Name will offer the same
accounts to players.</td>
</tr>
</tbody>
</table>
<strong> </strong><br>
</p>
<p><a name="genm6"><strong><font style="background-color: lime;">The "GenPostman"</font></strong></a></p>
<p>A Postman is a special type of ShopKeeper that delivers items from one
postman in the branch to another. Each postman holds a
special private box for players or clans. Postman can charge
to deliver items from one box to another, and can charge for the amount
of time an item remains in a box. Every player receives a free
box with any postman in the same area as their Recall/Beacon point.
Other boxes with other postmen must be purchased. Clans must always
purchases their boxes.</p>
<p>Whenever a GenPostman is created, much like the GenShopKeeper above, you
are presented with a list of properties to fill in. Pressing enter
will leave the property unchanged. The properties include
all of the fields listed above under GenMob and GenShopKeeper, plus a
few more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Postal Chain</em></td>
<td>This is a unique identifier for the postal
chain. Postmen will only deliver mail among members of the same
chain. Player/Clan boxes are opened with individual
postmen, however.</td>
</tr>
<tr>
<td><em>Fee to open a new box</em></td>
<td>This is the amount of money charged to open
a new box with a postman. The money is expressed in terms
of base value, though the currency accepted will reflect the
area where the postman is. </td>
</tr>
<tr>
<td><em>Minimum postage cost</em></td>
<td>This is the minimum amount of money charged
players to deliver an item.</td>
</tr>
<tr>
<td><em>Postage cost per pound after
1st pound</em></td>
<td>This is the amount of postage money charged,
per pound of the item, for each pound over the first one.</td>
</tr>
<tr>
<td><em>Holding fee per pound per month</em></td>
<td>This is the amount of money charged every
mud month that an item remains idle in a postal box. The first
month is always free.</td>
</tr>
<tr>
<td><em>Maximum number of months held</em></td>
<td>This is the maximum number of mud months
which a postman will hold an item idle in a postal box. After
this duration expires, the postman will put the item up for sale
to recoup losses.</td>
</tr>
</tbody>
</table>
<strong> </strong><br>
</p>
<p><strong><a name="genm4"><font style="background-color: lime;">The "GenRideable"</font></a></strong></p>
<p>Whenever a GenRideable is created, much like the GenMob above, you are
presented with a list of properties to fill in. Pressing
enter will leave the property unchanged. The properties include
all of the fields listed above under GenMob, plus a few more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Rideable Type</em></td>
<td>the type of rideable item this is, from
a floater to a flyer, etc.</td>
</tr>
<tr>
<td><em>MOBs Held</em></td>
<td>th emaximum number of mobs which may ride
this animal at once.</td>
</tr>
</tbody>
</table>
<strong>
<p><a name="genm5">The "GenDeity"</a></p>
</strong> </p>
<p>Deities are the employers of Clerics, and the object of some players adoration
and worship. Deities are necessary for the DEITIES command to work,
and add great role playing opportunities for all players, though especially
Clerics, since only with deities does their Convert skill have any meaning.
Since deities of this sort being attacked and killed can have a negative
effect on game-play, it is important that deities be placed in a room where
they will be save from players. Give the room where your deities are
Prop_NoSummon and Prop_NoTeleport to keep mages from zapping deities
in or out of their safe room. </p>
<p>There are a few important points to understand about these supreme beings
before continueing. Deities may have separate requirements
for who may worship them, and who may be their clerics. You
will specify these below. Deities may also have a list of blessings
they may bestow upon their clerics and their non-cleric worshippers.
When their clerics perform a special clerical ritual, the deity will
give the cleric ALL of his blessings. When a non-cleric worshipper
performs the special worshipper ritual, the deity will give the worshipper
one random blessing. Leaving these rituals blank prevents the
deity from bestowing the proper blessings. You will specify all
of these things below as well. Deities may also have a list of
curses that they bestow as punishment for sin. When the clerics
perform the cleric-specific sinful ritual, the deity will inflict all
of his curses upon the cleric. When a non-cleric worshipper
performs the worshipper-specific sinful ritual, the deity will inflict
one random curse upon the worshipper. Whether these curses exist,
how many there are, and whether there are any sinful rituals are all
specified below. The last point is about special clerical powers.
Deities may give one of their clerics a skill/spell/prayer/whatever
as a special power after the cleric has performed the specified clerical
power ritual. This power is taken away should the cleric ever
rebuke the deity. Whether this power exists is specified below.</p>
<p>Whenever a GenDeity is created, much like the GenMob above, you are presented
with a list of properties to fill in. Pressing enter will
leave the property unchanged. The properties include all of
the fields listed above under GenMob, plus a few more:</p>
<p><strong> </strong>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Cleric Requirements</em></td>
<td>This field describes the requirements for
a cleric to work for this deity. The value in this field include
the same mask format as described in the help for Prop_WearZapper.
Check the help for that property, or enter AHELP PROP_WEARZAPPER
from the command line for a list of the mask syntax used here.</td>
</tr>
<tr>
<td><em>Worship Requirements</em></td>
<td>This is where the requirements for becoming
a worshiper of this deity is described. The values in this field
are identical to the Cleric Requirements above. The only difference
being to whom the mask applies (Clerics/everyone else). </td>
</tr>
<tr>
<td><em>Blessings</em></td>
<td>This field is a list of the spells, skills,
prayers, blessings, or other Abilities which may be selectively
granted by the deity to his or her worshipers. All of the listed blessings
are typically granted to Clerics of the deity.</td>
</tr>
<tr>
<td><em>Cleric Ritual</em></td>
<td>For a cleric to receive the blessings of
the deity, the cleric must perform a particular ritual consisting
of one or more actions. This field will list the tasks in the ritual
which must be performed. Each task is separated by a "|" to mean
that either of the tasks on either side of the "|" is sufficient,
or a "&" to mean that both of the tasks on either side of the
"&" is required. The tasks themselves must be of one of the
following forms:<br>
<ul>
<li>SAY [TEXT] - the text specified must
be said by the player. For example: SAY "Allah is Great"
</li>
<li>TIME [HOUR] - the other tasks must be
performed at the specified hour. For example: TIME 3 </li>
<li>PUTTHING [THING NAME] [CONTAINER NAME]
- an item of the type must be placed in the specified container.
For example: PUTTHING dagger pit </li>
<li>BURNTHING [THING NAME] - an item of the
type given must be burnt or set afire. This is typically done with
the FIREBUILDING skill. For example: BURNTHING the ceremonial
log </li>
<li>EAT [FOOD NAME] - the specified item
must be eaten. For example: EAT holy pie. </li>
<li>READ [ITEM NAME] - the specified item
must be eaten. For example: READ holy book. </li>
<li>DRINK [DRINK NAME] - the specified drink
must be consumed. For example: DRINK holy fountain </li>
<li>INROOM - the player must be in the specified
room number, or the word holy to designate a room with infused holiness.
For example: INROOM NewArea#123 </li>
<li>RIDING - the player must be on the specified
mount. For example: RIDING holy altar </li>
<li>CAST - the player must cast the specified
spell. For example: CAST Prayer_Bless </li>
<li>EMOTE - the player must emote the following
thing. For example: EMOTE kneels before the throan </li>
<li>PUTVALUE [MINIMUM VALUE] [CONTAINER NAME]
- an item worth at least the specified amount must be placed in
the specified container. For example: PUTVALUE coins pit
</li>
<li>PUTMATERIAL [MATERIAL TYPE] [CONTAINER
NAME] - an item made of the specified material must be placed in
the specified container. For instance: PUTMATERIAL cotton
pit </li>
<li>BURNMATERIAL [MATERIAL TYPE] - an item
made of the specified material must be burnt, such as using the
FIREBUILDING skill. For instance: BURNMATERIAL balsa
</li>
<li>BURNMATERIAL [MINIMUM VALUE] - an item
worth at least the specified amount must be burnt, such as using
the FIREBUILDING skill. For instance: BURNVALUE "wooden statue"
</li>
<li>RANDOM [PERCENTAGE NUMBER] - happens
% of the time. For example: RANDOM 10 </li>
<li>CHECK [REQUIREMENT STRING] - Use
this with care. This allows masks to be entered which the
player must meet. The mask is of the same format as described
in Cleric Requirements above. </li>
<li>SITTING 0 - the player must be sitting
(the 0 is required!) </li>
<li>STANDING 0 - the player must be standing
(the 0 is required!) </li>
<li>SLEEPING 0 - the player must be sleeping
(the 0 is required!)</li>
<li>WAIT [#TICKS] - a pause of #TICKS is required -- this should
be no MORE than 10, to use multiple WAITs in a row for longer pauses. Also,
never make this the first possible trigger -- you always want this between
2 things they must do (&).</li>
<li>YOUSAY - if the previous item was completed (&), then the
person doing the ritual will automatically say the text.</li>
<li>ALLSAY - if the previous item was completed (&), then everyone
in the room will automatically say the text.</li>
<li>OTHERSAY - if the previous item was completed (&), then
everyone in the room except person doing the ritual will automatically say
the text.</li>
</ul>
</td>
</tr>
<tr>
<td><em>Worshipper Ritual</em></td>
<td>For a worshipper to receive one of the blessings
of the deity, the player must perform a particular ritual consisting
of one or more actions. This field will list the tasks in the
ritual which must be performed, and uses the exact same format
as the Cleric Ritual field above. </td>
</tr>
<tr>
<td><em>Curses</em></td>
<td>This field is an optional list of the spells,
skills, prayers, curses, or other Abilities which may be selectively
inflicted by the deity upon his or her worshipers. All of the
listed curses are typically inflicted on Clerics of the deity.</td>
</tr>
<tr>
<td><em>Clerical Sin</em></td>
<td>For a cleric to receive the above curses
of the deity, the player must perform a particular ritual consisting
of one or more actions. This field will list the tasks in the ritual
which must be performed, and uses the exact same format as the
Cleric Ritual field above. </td>
</tr>
<tr>
<td><em>Worshipper Sin</em></td>
<td>For a non-cleric worshipper of the deity
to receive one of the above curses of the deity, the player must
perform a particular ritual consisting of one or more actions. This
field will list the tasks in the ritual which must be performed,
and uses the exact same format as the Cleric Ritual field above.
</td>
</tr>
<tr>
<td><em>Powers</em></td>
<td>This field is an optional list of the spells,
skills, prayers, curses, or other Abilities which will be randomly
chosen from to give to clerics who perform the clerical power ritual.</td>
</tr>
<tr>
<td><em>Clerical Power ritual</em></td>
<td>For a cleric to receive one of the above
powers of the deity, the player must perform a particular ritual consisting
of one or more actions. This field will list the tasks in the
ritual which must be performed, and uses the exact same format
as the Cleric Ritual field above. </td>
</tr>
</tbody>
</table>
</p>
<p><strong><br>
</strong></p>
<strong><br>
<font color="blue" size="5"><a name="modmobs">Modifying
MOBs</a></font></strong>
<p>There are properties of mobs that can be modified by the Archon.
If one wishes to modify a goblin, the goblin must be present
in the room. The Archon can then issue the command "modify
goblin". If the mob modified is a GenMob or GenUndead,
then the same properties as above will be presented. .
</p>
<p>Although there are exceptions, MOBs will be the primary beneficiary of
Behaviors. For Generic MOBs, you will find many useful Behaviors
which will add great depth to your MUD. It is highly recommended
that any Archon wishing to create a rich and wonderous universe spend
time perusing the help files to learn of the wonders of the Behaviors
and Effects. Here are some useful behaviors:</p>
<p>"Aggressive" makes the mob attack others.<br>
"AlignHelper" makes the mob defend same alignments.<br>
"AntiVagrant" makes the mob wake up stragglers on
the street.<br>
"Bardness" makes the mob fight with bard skills.<br>
"Beggar" makes the mob beg for money.<br>
"BribeGateGuard" makes the mob a gate guard who can
be bribed.<br>
"BrotherHelper" makes the mob defend similar mobs.<br>
"ClanHelper" makes the mob defend clan buddies.<br>
"Clericness" makes the mob fight with cleric skills
appropriate to alignment.<br>
"CombatAbilities" makes the mob use its abilities
in combat.<br>
"CombatAssister" makes the mob assist specific other
mobs in combat.<br>
"CommonSpeaker" makes the mob speak common, even
if it doesn't want to.<br>
"CorpseEater" makes the mob eat corpses it comes
across.<br>
"CorpseLooter" makes the mob loot corpses it kills.<br>
"Decay" makes the mob go away after a time.<br>
"DelayedTransporter" makes a mob that randomly zaps
around the place.<br>
"DoorwayGuardian" makes a mob that won't let anyone
pass.<br>
"Drowness" provides certain drow-like behavior to
genmobs.<br>
"Druidness" makes the mob fight with druid skills.<br>
"Emoter" makes the mob do the silly things
you think of.<br>
"EvilExecutioner" makes the mob slaughter good folks.<br>
"FaithHelper" makes the mob defend those of the
same faith.<br>
"FightFlee" makes an annoying mob that runs away.<br>
"Fighterness" makes a mob that fights with fighter
skills.<br>
"Follower" makes the mob follow folks around.<br>
"GateGuard" makes a mob that opens, closes, unlocks,
and locks a door.<br>
"GoldLooter" makes a mob that takes the loot
from the vanquished.<br>
"GoodExecutioner" makes a mob that kills evil
and thief mobs.<br>
"GoodGuardian" makes a mob that stops fights and
defends the helpless.<br>
"Guard" always defends the attacked.<br>
"Healer" makes the mob a random friendly healer.<br>
"Hireling" puts the mobs abilities up for hire.<br>
"InstantDeath" kills everyone in the room with the
mob, after a time.<br>
"ItemIdentifier" makes the mob an identifier for
hire.<br>
"ItemGenerator" will create treasure and items
for your mobs inventory.<br>
"ItemMender" makes the mob a mender for hire.<br>
"ItemRefitter" makes the mob a refitter for hire.<br>
"MOBEater" makes the mob eat its enemies.<br>
"MOBHelper" makes the mob assist other mobs.<br>
"MOBHunter" makes the mob hunt other mobs.<br>
"MOBReSave" a bizarre behavior that updates a mobs
info in the world database.<br>
"MOBTeacher" makes the mob a teacher of class skills.<br>
"Mageness" makes the mob use mage skills in combat.<br>
"Mime" makes the mob mime the socials of other mobs.<br>
"Mobile" makes the mob mobile.<br>
"MobileAggressive" makes the mob mobile and aggressive.<br>
"MobileGoodGuardian" makes the mob mobile and peacemaking.<br>
"MOBReSave" keeps the mob updated in the database
at all times.<br>
"MoneyChanger" makes the mob exchange coins for
notes.<br>
"MudChat" makes the mob chatty.<br>
"NastyAbilities" makes the mob a random caster of
mean spells.<br>
"NiceAbilities" makes the mob a random caster of
friendly spells.<br>
"NoCombatAssist" makes the mob never assist group
members in combat.<br>
"ObjectGuardian" makes the mob forbid getting items
in its room.<br>
"Patroller" makes the mob walk a patrol.<br>
"PlayerHelper" makes the mob assist players.<br>
"PokerDealer" makes a dealer of player vs player
poker games.<br>
"ProtectedCitizen" makes the mob scream for help!<br>
"ROMGangMember" makes the mob a gang member.<br>
"ROMPatrolman" makes the mob a patrolman for gang
members.<br>
"RandomItems" will cause items from a saved file
to appear on your mob.<br>
"RandomTransporter" makes the mob zip around the
map.<br>
"RaceHelper" makes the mob assist those of the same
race.<br>
"Scavenger" makes the mob a scavenger of stuff on
the ground.<br>
"Scriptable" makes the mob run scripts that you
write!<br>
"Sounder" makes the mob emote the silly things you
want it to.<br>
"TargetPlayer" makes the mob fight the weakest player
attacking him.<br>
"TaxCollector" makes the mob a collector of money
from players and or mobs.<br>
"Thiefness" makes the mob use thief skills in combat.<br>
"Vagrant" makes the mob sleepy.<br>
"VeryAggressive" makes the mob willing to jump rooms
to fight.<br>
"Wimpy" makes the mob run away.<br>
"WimpyAggressive" makes the mob only fight sleeping
folks.<br>
</p>
<p>Mobs also benefit from effects, just like rooms, areas, items, and
exits. Here are some important effects you may consider for
your mobs:</p>
<p>"Age" is the proper way to age a mob<br>
"Allergies" gives the mob allergies.<br>
"Amputation" takes away a limb from the mob<br>
"Chant_Fertility" makes the mob fertile.<br>
"Chant_PrayerWard" resists prayers.<br>
"Chant_Shapelessness" makes the mob very light.<br>
"Chant_SongWard" resists songs.<br>
"Chant_SpellWard" resist spells.<br>
"Chant_Thorns" makes those fighting the mob get pricked!<br>
"Chant_Treemind" resist mind effects.<br>
"Chant_WindShape" takes less damage.<br>
"Chant_WindSnatcher" makes the mob resist the wind.<br>
"Immunities" gives the mob immunities you pick.<br>
"Injury" injures the mobs limbs.<br>
"Inebriation" makes the mob drunk.<br>
"Paladin_Aura" protects the mob from evil.<br>
"Paladin_Goodness" assaults all evil!<br>
"Prayer_AcidHealing" heals from acid attacks.<br>
"Prayer_AiryForm" takes less damage.<br>
"Prayer_BladeBarrier" hits back!<br>
"Prayer_Bless" a holy aura.<br>
"Prayer_Demonshield" flames back!<br>
"Prayer_ElectricHealing" heals from electric hits.<br>
"Prayer_Etherealness" allows him to walk through
doors.<br>
"Prayer_FireHealing" heals from fire attacks<br>
"Prayer_IceHealing" heals from cold attacks.<br>
"Prayer_ProtEvil" protects from evil.<br>
"Prayer_ProtGood" protects from good.<br>
"Prayer_ProtParalyzation" protects from paralysis.<br>
"Prayer_ProtUndead" protects from the undead.<br>
"Prayer_Sanctuary" takes less damage.<br>
"Prop_AbilityImmunity" protects the mob from specified
targeted spells.<br>
"Prop_AbsorbDamage" absorbs damage from certain
attacks.<br>
"Prop_AddDamage" deals more damage to this mob from
certain attacks.<br>
"Prop_ClosedDayNight" makes the mob go home at night,
or just disappear.<br>
"Prop_ClosedSeason" makes the mob go home for the
season, or just disappear.<br>
"Prop_Doppleganger" makes the mob change its level
and skill to match opponents.<br>
"Prop_Hidden" makes the mob hidden.<br>
"Prop_Invisibility" makes the mob invisible.<br>
"Prop_ItemTransporter" makes the mob a transporter
of items.<br>
"Prop_ItemTransReceiver" makes the mob a receiver
of transported items.<br>
"Prop_ItemLangTranslator" makes the mob a translator
of languages.<br>
"Prop_LocationBound" limits the traveling ability
of the mob.<br>
"Prop_ModExperience" modified experience gained from
killing him.<br>
"Prop_NewDeathMsg" changes the string seen when
this mob dies.<br>
"Prop_NoCharm" protects from charms.<br>
"Prop_NoSummon" protects from summoning.<br>
"Prop_NoOrdering" protects from player orders.<br>
"Prop_PeaceMaker" makes into peace maker.<br>
"Prop_PracticeDummy" makes into an unkillable unhitting
dummy.<br>
"Prop_Resistance" gives resistances which you pick.<br>
"Prop_RestrictSpells" restricts spells from being
cast.<br>
"Prop_Retainable" changes its price to shopkeepers.<br>
"Prop_RideAdjuster" adjusts stats when ridden.<br>
"Prop_RideEnabler" gives new skills to riders when
ridden.<br>
"Prop_RideResister" adjusts saves when ridden.<br>
"Prop_RideSpellCast" gives spell-affects when ridden.<br>
"Prop_RideZapper" restricts riding.<br>
"Prop_SafePet" makes unattackable.<br>
"Prop_Smell" gives the mob an aroma.<br>
"Prop_SpellReflecting" makes spell reflecting.<br>
"Prop_StatTrainer" gives good stats.<br>
"Prop_TattooAdder" gives a tattoo upon death.<br>
"Prop_TicketTaker" requires a price to ride.<br>
"Prop_Trainer" makes a mob into a full TRAIN command
respondant.<br>
"Prop_WeaponImmunity" gives immunities to certain
attacks.<br>
"Regeneration" regenerates hit points during combat.<br>
"Skill_AllBreathing" makes them a fish.<br>
"Skill_Resistance" gives resistances that you pick.<br>
"Soiled" gives the mob a stink.<br>
"Spell_Awe" makes them too awesome to attack.<br>
"Spell_Blink" makes them blink around during combat.<br>
"Spell_Blur" makes them hard to make out.<br>
"Spell_ChantShield" protects from chants.<br>
"Spell_Confusion"<br>
"Spell_FeatherFall" makes them float when falling.<br>
"Spell_Flameshield" flames back to attackers.<br>
"Spell_IllusoryDisease" gives them a fake disease.<br>
"Spell_IronGrip" makes them undisarmable.<br>
"Spell_Levitate" makes them levitate.<br>
"Spell_Light" makes them bright.<br>
"Spell_MajorGlobe" protects from great spells.<br>
"Spell_MinorGlobe" protects from ok spells.<br>
"Spell_ObscureSelf" makes them hard to discern.<br>
"Spell_ResistArrows" protects from arrows.<br>
"Spell_ResistMagicMissiles" protects from magic
missiles.<br>
"Spell_ResistPetrification" protects from flesh
to stone.<br>
"Spell_SpellTurning" turns spells around.<br>
"Spell_TeleportationWard" protects from teleporting.<br>
"Spell_Tourettes" gives them a dirty mouth.</p>
<p>And don't forget how much fun it is to make your creatures permanently SICK!<br>
"Disease_Aids", "Disease_Amnesia", "Disease_Anthrax",
"Disease_Arthritis", "Disease_Asthma", "Disease_Blahs", "Disease_Cancer",
"Disease_Carrier", "Disease_Chlamydia", "Disease_Cold", "Disease_Depression",
"Disease_Fever", "Disease_Fleas", "Disease_Flu", "Disease_Gangrene",
"Disease_Giggles", "Disease_Gonorrhea", "Disease_Infection", "Disease_Lepresy",
"Disease_Lockjaw", "Disease_Lycanthropy", "Disease_Lyme", "Disease_Magepox",
"Disease_Malaria", "Disease_Narcolepsy", "Disease_Migraines", "Disease_MummyRot",
"Disease_Plague", "Disease_Pneumonia", "Disease_PoisonIvy", "Disease_SARS",
"Disease_Smiles", "Disease_Syphilis", "Disease_Tetnus", "Disease_Tinnitus",
"Disease_Vampirism"<br>
</p>
<p>For all non-generic MOBs, the following properties will be presented
for modification (See Appendix B for more information):</p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Level</em></td>
<td>this is the level of the mob. Please
see the Level entry under GenMob for more information. On
some mobs, such as Dragons, this can have a profound impact.</td>
</tr>
<tr>
<td><em>Magical Ability</em></td>
<td>This number represents an adjustment to
the base properties of the mob. This number, unfortunately,
means different things to different mob types. For
dragons, it may refer to color. For others, it may
bring a slightly different description. You can play
with this value to see if it has any effect on the mob you've
chosen, though the effects will not likely become evident until
after the beastie has reloaded.</td>
</tr>
<tr>
<td><em>RejuvTicks</em></td>
<td>This number represents the number of ticks
(4 second intervals) before a MOB that has been killed
rejuvenates or resets to its proper state. The value '2147483647'
or '0' means that the MOB never rejuvenates, but once killed,
is gone forever. Any other value will represent a number
of ticks. This property does not take effect until the room
is saved. For more information on making the RejuvTicks property
take effect after changing it, see below under Rejuvenating
Items and Mobs" or "How to Save a Room".</td>
</tr>
<tr>
<td><em>MiscText</em></td>
<td>For non-generic MOBs, this is a completely unused
field.</td>
</tr>
</tbody>
</table>
<p><strong><font color="blue" size="5"><a name="xmobs">Destroying MOBs</a></font></strong>
</p>
<p>To destroy a MOB that is in the same room as you, you need only issue
the destroy command. If an orc, for instance, no longer requires
his existence: "destroy mob orc" will take that existence away.</p>
<p>Once destroyed, MOBs that have been set to rejuv will not do so.
If the MOB was a permanently saved MOB in the room, you
must re-save the room in order to make the MOBs destruction permanent.</p>
<p><strong><font color="blue" size="5"><a name="eqmobs">Equipping MOBs</a></font></strong></p>
<p>You may give a MOB equipment to wear or carry as treasure, if this is
done properly. First off, you can ONLY equip a Generic MOB.
This includes the GenMob, GenDeity, GenRideable, GenUndead, GenBanker,
and GenShopKeeper. No other creature may be saved with equipment.
Generic or non-Generic Items may be used as equipment. </p>
<p>To equip the MOB, first create the items you wish to give to your new
creature using the procedure described above under "Creating Items".
Now, you may use the give command to put the item into the mobs
inventory, and the dress command to make the mob wear it.</p>
<p>MOBs can also be equipped with variable items. Variable items are items
which may or may not appear in its inventory on any particular
rejuvination of the mob. Variable items are created
by modifying the Rejuv/Pct field on the item in the mobs inventory.
If the value of this field is less than 1 or greater than 99, then
the item will always appear in the inventory. If the value of
the field is between 1 and 100, then it represents the percent chance
that the item will remain in the inventory. A special
case is created when more than one variable item is actually being
worn in the same wear location on a mob. In this special case,
CoffeeMud will ensure that exactly one of the variable items will remain.</p>
<p>Dealing with variable equipment can be very tricky when not using the
MUDGrinder. It requires that the Archon remain in the room
with the mob until the room is saved, in order to prevent the mob
from ditching its equipment according to the variable rules.
This is because the variable equipment rules will not activate so long
as an Archon is in the room. Dealing with variable equipment on
MOBs also requires that the Archon remember to use the RESET ROOM command
whenever returning to the room to make modifications. Only RESET
ROOM will cause the mob to regain all of his equipment with their Rejuv/Pct
fields intact. Forgetting to do a RESET ROOM before making modifications
and saving the room can cause the Archon to lose variable equipment.
Lastly, the Archon should take care not to make copies of variable
equipment on mobs as room items. This is because the Rejuv/Pct
field that is used to hold the percentage chance for the equipment while
it is in a mobs inventory means something entirely different when the
item is saved in a room. When an item is saved in a room, the Rejuv/Pct
field refers to the rejuvination (repopulation) rate for the item when
it is removed from a room.</p>
<p><strong><font color="blue" size="5"><a name="racecreate">Creating Races</a></font></strong></p>
<p>Although the myriad of available races should be quite sufficient for
any Archon's needs, you may find yourself at a point where a new
species is required for the balance of your ecosystem. In this
situation, we must turn to the CREATE RACE command. Supposing
we needed the raveging Woogler to grace our shores, we would enter:</p>
<p><strong>CREATE RACE Woogler</strong></p>
<p>And it would be done. Whenever creating or modifying a new race,
the Archon is presented with a menu of selections and options available
to customize the little boogers. Here is a description of
those options:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the displayable name of the race.</td>
</tr>
<tr>
<td><em>Racial Category</em></td>
<td>the category into which the race fits.
Use ? to get a list of existing ones.</td>
</tr>
<tr>
<td><em>Base Weight</em></td>
<td>the minimum weight of a mob of this race</td>
</tr>
<tr>
<td><em>Weight Variance</em></td>
<td>the amount by which the weight of the mob
may vary above the base.</td>
</tr>
<tr>
<td><em>Base Male Height</em></td>
<td>the minimum height of a male mob of this
race</td>
</tr>
<tr>
<td><em>Base Female Height</em></td>
<td>the minimum height of a female mob of this
race</td>
</tr>
<tr>
<td><em>Height Variance</em></td>
<td>the amount by which the height of the mob
may vary above the base.</td>
</tr>
<tr>
<td><em>Availability</em></td>
<td>whether or not players may access this race
at creation, in spells, or never</td>
</tr>
<tr>
<td><em>Leaving Text</em></td>
<td>the word displayed when a mob of this race
leaves the room</td>
</tr>
<tr>
<td><em>Arriving Text</em></td>
<td>the word displayed when a mob of this race
arrives into a room</td>
</tr>
<tr>
<td><em>Health Race</em></td>
<td>the name of a standard race which will be
used as a source of health descriptions during combat. In
short, enter here the name of a race that looks the most like
the one you are creating.</td>
</tr>
<tr>
<td><em>Body Parts</em></td>
<td>the number and type of body parts available
for amputation</td>
</tr>
<tr>
<td><em>EStat Adjustments</em></td>
<td>adjustments, positive or negative, to attack,
defence, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharStat Adjustments</em></td>
<td>adjustments, positive or negative, to strength,
saving throws, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharStat Settings</em></td>
<td>hard settings for strength, saving throws,
and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharState Adjustments</em></td>
<td>adjustments, positive or negative, to hit
points, mana, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>Starting CharState Adjustments</em></td>
<td>adjustments, positive or negative, to the
default hit points, mana, and other stats for starting players of
this race.</td>
</tr>
<tr>
<td><em>Extra Race Flags</em></td>
<td>Whether class, level, or the gaining/losing
of experience applies to this race. By default, they do.</td>
</tr>
<tr>
<td><em>Resources</em></td>
<td>list of items produced from the corpse of
this race when it is Butchered. </td>
</tr>
<tr>
<td><em>Outfit</em></td>
<td>list of items automatically equipped and
word when the OUTFIT command is used, or a player of this race is created.
</td>
</tr>
<tr>
<td><em>Natural Weapon</em></td>
<td>the weapon used by this race when it is
unarmed.</td>
</tr>
<tr>
<td><em>Racial Abilities</em></td>
<td>a list of abilities available to members
of this race. the abilities must be of the type that have command
words. the proficiency given to the ability is hard coded
and cannot be modified. the level referred to is in player
levels as opposed to class levels.</td>
</tr>
<tr>
<td><em>Cultural Abilities</em></td>
<td>a list of abilities granted automatically
to those who are born this race. it is assumed these abilities
are learned because of the races culture. the proficiency given
is the default proficiency which players/mobs of this race start
out with.</td>
</tr>
</tbody>
</table>
</p>
<p><strong><font color="blue" size="5"><a name="classcreate">Creating Classes</a></font></strong></p>
<p>Creating customized player or mob classes can be fun and exciting! These
classes can be used as skill templates for mobs created using the
Fighterness (or similar) behaviors, or as genuine player classes
for your game. Either way, here is how it is done:</p>
<p><strong>CREATE CLASS Boxer</strong></p>
<p>And it would be done. Whenever creating or modifying a new class,
the Archon is presented with a menu of selections and options available
to customize the class. Here is a description of those options:</p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Number of Names</em></td>
<td>the number of displayable names this class
has. Normally just 1.</td>
</tr>
<tr>
<td><em>Name #x</em></td>
<td>a displayable name of the class. Each
displayable name applies based on a class level.</td>
</tr>
<tr>
<td><em>Name #x Class Level</em></td>
<td>a class level at which this displayable
name begins to apply.</td>
</tr>
<tr>
<td><em>Base Class</em></td>
<td>the category into which the class fits.
Usually the same as your ID if you are using a subclass system
and this is the base class.</td>
</tr>
<tr>
<td><em>Availability</em></td>
<td>
<p> whether or not players may access this class at creation, in spells,
or never. </p>
</td>
</tr>
<tr>
<td><em>HP Divisor</em></td>
<td>amount by which the players constitution
is divided by when calculated hit point gains per level.</td>
</tr>
<tr>
<td><em>HP Dice</em></td>
<td>number of dice rolls which the player gets
per level for bonus hit points.</td>
</tr>
<tr>
<td><em>HP Die</em></td>
<td>the maximum roll on each die roll made per
level for hit points.</td>
</tr>
<tr>
<td><em>Mana Divisor</em></td>
<td>amount by which the players intelligence
is divided by when calculated mana gains per level.</td>
</tr>
<tr>
<td><em>Mana Dice</em></td>
<td>number of dice rolls which the player gets
per level for bonus mana.</td>
</tr>
<tr>
<td><em>Mana Die</em></td>
<td>the maximum roll on each die roll made per
level for mana.</td>
</tr>
<tr>
<td><em>Practices/Level</em></td>
<td>the number of practice points gained by
this class per level.</td>
</tr>
<tr>
<td><em>Attack/Level</em></td>
<td>the number of attack points, modified by
a formula based on the mobs attack attribute, gained per level.</td>
</tr>
<tr>
<td><em>Attack Attribute</em></td>
<td>the primary attribute used with the above
to determine the number of attack points gained per level.</td>
</tr>
<tr>
<td><em>Practices/1st Level</em></td>
<td>the number of practice points received by
this class at first level.</td>
</tr>
<tr>
<td><em>Trains/1st Level</em></td>
<td>the number of training sessions received
by this class at first level.</td>
</tr>
<tr>
<td><em>Level/Dmg Pt</em></td>
<td>the number of levels between gains of 1
point of base damage.</td>
</tr>
<tr>
<td><em>Movement/Level</em></td>
<td>the number of movement points, modified
by a formula based on the mobs strength, gained per level.</td>
</tr>
<tr>
<td><em>Armor Restr.</em></td>
<td>the type of armor restrictions for using
skills in this class, if any.</td>
</tr>
<tr>
<td><em>Limitations</em></td>
<td>This is an open text field. Mention any
special limitations of the class.</td>
</tr>
<tr>
<td><em>Bonuses</em></td>
<td>This is an open text field. Mention any
special bonuses to being this class.</td>
</tr>
<tr>
<td><em>Qualifications</em></td>
<td>This is a mask to determine which players
qualify for it. List any racial, or stat requirements to becomming
this class. Use ? for more information on the mask.</td>
</tr>
<tr>
<td><em>EStat Adjustments</em></td>
<td>adjustments, positive or negative, to attack,
defence, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharStat Adjustments</em></td>
<td>adjustments, positive or negative, to strength,
saving throws, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharStat Settings</em></td>
<td>hard settings for strength, saving throws,
and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>CharState Adjustments</em></td>
<td>adjustments, positive or negative, to hit
points, mana, and other stats. Use ? for a list.</td>
</tr>
<tr>
<td><em>Starting CharState Adjustments</em></td>
<td>adjustments, positive or negative, to the
default hit points, mana, and other stats for starting players of
this class.</td>
</tr>
<tr>
<td><em>Extra Class Flags</em></td>
<td>Whether race, level, or the gaining/losing
of experience applies to this class. By default, they do.</td>
</tr>
<tr>
<td><em>Weapon Restr.</em></td>
<td>This is a list of the weapon classes which
players of this class will fumble using.</td>
</tr>
<tr>
<td><em>Outfit</em></td>
<td>This is a list of any equipment outfitted
to players who join this class.</td>
</tr>
<tr>
<td><em>Class Abilities</em></td>
<td>a list of abilities available to those who
become this class. the proficiency given is the default proficiency
which players/mobs of this class start out with. Also listed
here is the class level at which the skill becomes available,
whether it is automatically gained (true), or merely qualified
for (false), whether it is a secret skill or not, and any miscellaneous
parameters for this skill.</td>
</tr>
<tr>
<td><em>Number of Security Code Sets</em></td>
<td>If this class is intended to administrators
or builders, you may specify one or more sets of security codes
or security groups (see above section on CoffeeMud Security).
Each set begins to apply at a given class level for that set.
All previous sets at lower levels continue to apply as
well.</td>
</tr>
<tr>
<td><em>Security Codes in Set#x</em></td>
<td>The space-delimited list of security codes
or groups which applies to this set.</td>
</tr>
<tr>
<td><em>Class Level for Set#x</em></td>
<td>The class level at which this set of
security codes or groups begins to apply, in addition to any
previous sets.</td>
</tr>
</tbody>
</table>
<p></p>
<p><strong><font color="blue" size="5"><a name="factions">Factions</a></font></strong></p>
<p>Before learning the secrets of creating, modifying, and destroying factions,
needs must we delve into the topic of what a Faction IS.
A faction can be viewed very simply as a glorified tattoo, where
instead of merely having or not having the tattoo, a mob or player
can have the tattoo and have a numeric value assigned to that tattoo.
Another way to view a faction is as a relationship between a mob or
player and some idea, such as Goodness, Evilness, Orc Affinity, Reputation,
or some other idea. For example, in CoffeeMud, a mob or players
Alignment is implemented as a Faction. The Alignment can be thought
of as having a tattoo called alignment along with a numeric value assigned
to it. Alignment can also be thought of as the relationship
between the mob or player, and evilness, goodness, or neutrality.</p>
<p>The faction system in CoffeeMud is a powerful engine for defining what
factions exist, how the factions are assigned, how the value of
factions rise or fall in value, how value changes are reflected
in other factions, and what impact the value of a faction has on
experience gain, ability usage, and ability skill gain. Since
the values of factions are available for use in Properties
such as Prop_WearZapper, Prop_ReqEntry, and all other features which
respect Zapper Masks, factions can also potentially impact which items
can be used, which rooms can be entered, the price of goods, the availability
of Deities, and many other things as well. As an example, the
alignment faction typically impacts all of the things mentioned
above and more.</p>
<p>Now, as was said before, factions have numeric values. These values
can be positive, like 2389473, negative, or even 0. The range
of values which are valid for a given faction are defined by the
limits of the divisions or Ranges of a faction. </p>
<p>A <strong>Range</strong> is a numeric division of a faction you have defined.
A Range has a displayable name, a special code name for use in Zapper Masks,
and of course a low and high value. A Range can also be tied back
to CoffeeMud's built in "virtue meter", which allows you to define a Range
as always granting the mob or player whose faction value falls into that
range goodness, evilness, or neutrality. The lowest value of the lowest
Range, and the highest value of the highest Range define the overall limits
of the values of the faction itself. No player or mob may have a value
for a faction which falls outside those highest and lowest values of the
highest and lowest Ranges. For this reason, ranges are the most
important part of a faction.</p>
<p>Another important aspect are the range <strong>Change Triggers</strong>.
One of the ways factions differ from simple tattoos is that CoffeeMud
can manage the rise and fall in the values of the faction on a given
mob or player automatically. The way these changes are triggered
and managed is first through Change Triggers, which are applied when
both the source and target of an action have standing or value in the
faction, and when the source and target are different creatures.
Each Change Trigger defines 1) What triggers the change (the Trigger),
2) Whether value is gained or lost in the faction when the trigger occurs
(the Direction), 3) What percentage of the amount of change (after all
other modifiers) is applied to the value (the Amount Factor), 4)
several miscellanous flags to define the circumstances under which the
trigger is applied (the Flags), and 5) a Zapper mask to determine what
criteria the target of the Trigger must meet for this trigger to apply.
The valid Triggers include: Murder, Time (a change occurs every 40 seconds
or so), a type of skill being used, the domain of a spell being cast, a
flag associated with a skill being used, or Add Outsider, which allows
the faction to be added to those who do not have the faction, so long as
they meet the other requirements. Valid Directions of change include:
Up, Down, Opposite (opposite direction of the value of the creature killed
and proportional in value to the distance between the faction value in
the source and the target), Minimum (automatically gains minimum value),
Maximum (automatically gains maximum value), Add (gains the faction if
they don't have it -- useful with the Add Outsider trigger), Away (gain
if monsters value for this faction is lower, lose if higher), and Towards
(gain if monsters value for this faction is higher, lose if lower).
Valid Flags include: OUTSIDER, which allows the trigger to apply even if
the target of the trigger (not the source) does not have standing in this
faction, SELFOK, which allows the trigger to apply even when the source
or target are the same person, and JUST100, which overrides the normal
modifications of a change (based on experience or other factors) and uses
100 points as a base amount for the change from this trigger.</p>
<p>Now, lets discuss how to list existing factions:</p>
<p><strong>LIST FACTIONS</strong></p>
<p>The list that is shown with this command reflects the list of those factions
which have been loaded into CoffeeMuds memory. Factions are
loaded into memory when their identifiers/filenames are added to
the FACTIONS entry in your "coffeemud.ini" file. Factions may
also be loaded if a mob or player is loaded who has a faction which
has already been defined. Creating new factions, as you can now
guess, is a two part step. One step is to add its identifier/filename
to the FACTIONS entry of your "coffeemud.ini" file, after the file has
been created. To create the new faction identifier/filename, you must
do the following:</p>
<p><strong>CREATE FACTION orc_affinity.ini</strong></p>
<p>This command will create a new file in your CoffeeMud/resources directory
or folder for the new faction. This file will contain the default
setting for your brand new faction, whose ID (identifier) will be ORC_AFFINITY.CMVars.
You will now be automatically taken into the Faction Editor. If you
had wanted simply to modify an existing faction, you might have entered:</p>
<p><strong>MODIFY FACTION resources/reputation.ini</strong></p>
<p>The modify command will take you into the editor for an existing faction,
regardless of whether it appears on the LIST FACTIONS list, so
long as the filename/identifier given refers to an existing faction
file. The Faction editor contains numerous other complex
and interesting fields to change, which we will now describe.</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the displayable name of the faction, not
to be confused with its official identifier, which you may not change.</td>
</tr>
<tr>
<td><em>Division/Ranges List</em></td>
<td>the defined ranges for this faction.
See the above discussion on ranges for the meaning of the fields.</td>
</tr>
<tr>
<td><em>Show In Score</em></td>
<td>whether this faction is listed with the
players information when they use the SCORE command. The FACTIONS
command is always available for a player to list their factions
and values regardless of whether this setting is true or false.</td>
</tr>
<tr>
<td><em>Show In MOB Editor</em></td>
<td>whether this faction gets its very own entry
in the command-line mob editor, or the MUDGrinder mob editor.
The Factions field is always listed in the mob editor for changing
the factions and their values on players and mobs regardless of
whether this setting is true or false.</td>
</tr>
<tr>
<td><em>Automatic assigned values</em></td>
<td>optional field showing which mobs or players
will automatically be given this faction and some value in it.
This is a semicolon-delimited list, where each entry begins
with the value to assign, and is followed by a mask to determine
who the value gets assigned to. For example: "100 -race
+elf ; 500 -race +dwarf" would mean that all elf players and
mobs receive this faction with a value of 100, and all dwarf players
and mobs receive this faction with a value of 500. If this
field is empty, noone is assigned a value automatically. If
this field only contains a number, or if any entry contains only a
number (no mask), then everyone will receive this faction.</td>
</tr>
<tr>
<td><em>Other default values</em></td>
<td>required field defining the values that
mobs or players will be assigned whenever this faction is granted
to them by scripts, triggers, or by some other means.
The syntax of this field is similar to the "Automatic
assigned values" field above. At least one entry, however,
must be without a mask, so as to make sure that a default value
exists for every possible player or mob.</td>
</tr>
<tr>
<td><em>New player value choice</em></td>
<td>an optional list of values, semicolon delimited,
which players will get to choose from when they create their
characters for the first time. Each value in this list should
correspond to, or fall into, a different Division/Range
listed above. If this field is empty, players will not
be given this faction at creation time.</td>
</tr>
<tr>
<td><em>Choices introduction text</em></td>
<td>if the previous field contained entries,
then this field will become available. It is the optional filename
of a text file in your Coffeemud/resources directory or folder
which describes the choices available to the player.</td>
</tr>
<tr>
<td><em>Rate Modifier</em></td>
<td>normally 100%, this field is a fudge factor
for all instances where some value is gained or lost in this faction.
Typically gained values can be halfed, doubled, or changed in
any other way by modifying this value.</td>
</tr>
<tr>
<td><em>Affect on Experience</em></td>
<td>whether and/or how values in this faction
affect the amount of experience gained by players for killing
monsters. If the value is None, then this faction
does not affect experience gained by players for killing monsters.
Otherwise, the amount of faction gained or lost is a function
of the base number of experience points earned, and modified
by the value of this field: Extreme means the amount gained or lost
is always towards one extreme end of this factions Ranges, and always
in a direction away from the value that the monster had.
Higher means the amount is always gained. Lower means the
amount is always lost. Followhigher means the amount is
always gained, and in proportion to how high the value of the monsters
faction is. Followlower means the amount is always lost,
and in proportion to how low the value of the monsters faction
is.</td>
</tr>
<tr>
<td><em>Faction Change Adjustments</em></td>
<td>like the Rate Modifier above, this field
affects the values of gains and losses in this faction. It allows
you to change the value of Gains or Losses based on whether the
player or mob with the faction matches the given Zapper Mask.
Both the Gain and Loss values should be positive, as they reflect
a percentage change in the gain, and a percentage change in
the loss only.</td>
</tr>
<tr>
<td><em>Cross-Faction Relations</em></td>
<td>defines whether and/or how the value of
other factions may rise or fall when the value of this faction changes.
Each entry is the name of second faction, along with a positive
or negative percentage of the value gained or lost in this faction,
which will then be applied to the second faction.</td>
</tr>
<tr>
<td><em>Change Triggers</em></td>
<td>the events which cause the value of a faction
on a player to rise and fall. Usually triggers are applied
when an action is performed on a target creature by a source
creature, both of whom have standing in the faction. See
the description above for more information on the fields defined
for each Change Trigger.</td>
</tr>
<tr>
<td><em>Ability Allowances</em></td>
<td>this defines the circumstances under which
a player may always use a particular time of skill, spell, or
whatever, unimpeded and with full privileges. Each entry
contains a list of flags to determine which skills, spells, chants,
etc are being selected along with the range into which a players
value in this faction must fall for the ability to be used unimpeded
and with full privileges. Requirements defined by Ability
Allowances will typically determine whether proficiency is
every gained in a skill, and whether certain class restrictions
are overridden.</td>
</tr>
</tbody>
</table>
</p>
<p><br>
<strong><font color="royalblue" size="5"><a
name="saving">"Rejuvenating Items and Mobs" or "How to Save a Room"</a></font></strong></p>
<p>MOBs and Items that are created in rooms, even those which have had the
Rejuv Ticks property set to some reasonable number, will not actually
begin to rejuvenate, and will not reappear in the room when CoffeeMud
is rebooted, until the room is saved. </p>
<p>To save a room, you must be standing in it. From there, you may
issue either the "save items" command to save the items in the
room, "save mobs" command to save the mobs in the room, or "save
room" to save them both. You should make sure that the items,
mobs, or both, are exactly the way you want them to be when the system
is rebooted. Players in the room, including yourself and your
followers, will be ignored by the command to save the mobs.</p>
<p>Currently, the resets using the Rejuv setting method are on a mob-by-mob
and item-by-item basis, though the system does give you some default
reset times when mobs are created (based on level). There is an
alternative reset method however. If you were to make NONE
of your mobs or items resettable under the current scheme (by making
the REJUV value 0), then to add the Behavior called "ResetWhole" to
each Area, you can simply reset every room in the area on a
timed basis. The behavior will reset every room after
noone has visited the area in a certain amount of time. This time
can be set in the behaviors parameters. Use AHELP ResetWhole
for more information on this behavior. </p>
<p class="MsoNormal"><strong><font color="green" size="5"><a name="appa">Appendix
A: Special Standard Items</a></font></strong></p>
<p class="MsoNormal">Map</p>
<ul>
<li>
<div class="MsoNormal">level - A value of 0 means the map will be built
without access to any indoor rooms or areas behind only secret exits.
A value of 1 means the map will be built with both indoor and outdoor
rooms, but without secret rooms. Any other value will display each
and every room, regardless. A room that is classified as "in the
air" will never be placed on a map.</div>
</li>
<li>
<div class="MsoNormal">misc text - The names of the areas, separated
by semicolons, to place on the map. For instance "Area1;Area2"
would build a map from rooms in both Area 1 and Area 2.</div>
</li>
</ul>
<p class="MsoNormal">LargeChest, SmallChest, LockableContainer, etc</p>
<ul>
<li>
<div class="MsoNormal">misc text - The name of the key which will open
this container.</div>
</li>
</ul>
<p class="MsoNormal">StdJournal</p>
<ul>
<li>
<div class="MsoNormal">misc text - The reading, writing, and replying
requirements for the journal. The proper format is READ=REQUIREMENTS
WRITE=REQUIREMENTS REPLY=REQUIREMENTS ADMIN=REQUIREMENTS. The
REQUIREMENTS are as described above under the Assigned Readable Text
field in the GenJournal entry. </div>
</li>
</ul>
<p class="MsoNormal">StdKey</p>
<ul>
<li>
<div class="MsoNormal">misc text - The name of the key. This
value must match the corresponding value on the door, chest,
etc.</div>
</li>
</ul>
<p class="MsoNormal">TrappedChest (or any other trapped item)</p>
<ul>
<li>
<div class="MsoNormal">ability - The type of trap encountered.
0=Needle, 1=Pit or Blade, 2=Gas</div>
</li>
</ul>
<p class="MsoNormal">RingOrnamental, Gem</p>
<ul>
<li>
<div class="MsoNormal">level - The material the ring or gem is made
out of, or what gem is mounted on it in the case of a ring.
</div>
</li>
</ul>
<p class="MsoNormal">Coins</p>
<ul>
<li>
<div class="MsoNormal">ability - The number of coins in the pile</div>
</li>
<li>
<div class="MsoNormal">misc text - the currency name followed by a
/ (slash), followed by the denomination value (floating point)</div>
</li>
</ul>
<p class="MsoNormal">InnKey</p>
<ul>
<li>
<div class="MsoNormal">* Must be in a shopkeepers starting inventory
in order to take effect. Each key in the shopkeeper's inventory
will be automatically set to open exits with lock descriptions
"INN1", "INN2", etc.. In order to create an Inn,
you need only have a shopkeeper with one InnKey for every room in
your inn. Then create the same number of rooms, each with a
locked door. Key each locked door to a different room number,
so that they will match the keys. For instance, "INN1", "INN2",
etc. See the section on exits for more information on keying
locked doors.</div>
</li>
</ul>
<p class="MsoNormal">(Most Generic and non-Generic Armor)</p>
<ul>
<li>
<div class="MsoNormal">ability - Equates to a roughly 10 point bonus
in armor for every ability point above 0. Makes the armor
magical. Negative ability points will do the opposite.</div>
</li>
</ul>
<p class="MsoNormal">(Most Generic and non-Generic Weapons)</p>
<ul>
<li>
<div class="MsoNormal">ability - Equates to a 5 point attack bonus,
and 1 point damage bonus for every ability point above 0.
Makes the weapon magical. Negative ability points do the opposite.</div>
</li>
</ul>
<p class="MsoNormal">ScrollSpell</p>
<ul>
<li>
<div class="MsoNormal">usesRemaining - The number of times, total,
that any spell on the scroll may be cast or scribed. In other
words, this number applies to ANY use of the scroll, as opposed
to individually for each of the spells.</div>
</li>
<li>
<div class="MsoNormal">misc text - The names of the spells, separated
by semicolons, that are written on the scroll. The names must
be the same case-sensitive class names used in CoffeeMud. For
instance: "Spell_MagicMissile;Spell_Fireball;Spell_ResistElectricity"</div>
</li>
</ul>
<p class="MsoNormal">StdWand, Staff, Wand_Fire, Wand_Nourishment</p>
<ul>
<li>
<div class="MsoNormal">usesRemaining - The number of times the wand
will respond to its activation word.</div>
</li>
<li>
<div class="MsoNormal">
<div class="MsoNormal">misc text - For Staff and StdWand only, the
name of the spell that is invoked by the magic word. The name
must be the same case-sensitive class names used in CoffeeMud.
For instance: "Spell_MagicMissile"</div>
</div>
</li>
</ul>
<p class="MsoNormal">StdPill, StdPotion</p>
<ul>
<li>misc text - the list of the spells, separated
by semicolons, that are invoked by consumption.
The spell names must be the same case-sensitive class names used
in CoffeeMud. For instance: "Spell_MagicMissile;
Spell_Sleep"</li>
</ul>
<p class="MsoNormal">StdLawBook</p>
<ul>
<li>misc text - the name of the Area for
which this book operates.</li>
</ul>
<p class="MsoNormal">StdPortal</p>
<ul>
<li>misc text - A room ID, or a a semicoloon-delimited
list of roomIDs that this portal leads to. For the return trip,
a portal object would need to be in both rooms.</li>
</ul>
<p class="MsoNormal">Ring_Protection</p>
<ul>
<li>
<div class="MsoNormal">level - The type of protection afforded by the
ring. Levels 0-11 protect from various magical effects.</div>
</li>
<li>
<div class="MsoNormal">ability - For levels 12 and higher, the amount
of 10 point armor protection afforded. </div>
</li>
</ul>
<p class="MsoNormal">StdTitle</p>
<ul>
<li>
<div class="MsoNormal">misc text - the room ID of the room which has
the Prop_RoomForSale property.</div>
</li>
</ul>
<p class="MsoNormal">ManualClasses, ManualAdvancement, etc.</p>
<ul>
<li>
<div class="MsoNormal">usesRemaining - The number of types the manual
may be read before becomming ineffective.</div>
</li>
</ul>
<p> </p>
<p class="MsoNormal"><strong><font color="green" size="5"><a name="appb">Appendix
B: Special Standard MOBs</a></font></strong></p>
<p class="MsoNormal">Dragon</p>
<div class="MsoNormal">
<ul>
<li>
<div class="MsoNormal">level - The Age of the Dragon. Ranges
are from 8-64.</div>
</li>
<li>
<div class="MsoNormal">ability - The Color of the Dragon. Ranges
are from 1-10.</div>
</li>
</ul>
</div>
<p class="MsoNormal">Goblin</p>
<ul>
<li>
<div class="MsoNormal">ability - The type of goblin being dealt with.
Ranges 0-1000</div>
</li>
</ul>
<p class="MsoNormal">StdBanker</p>
<ul>
<li>
<div class="MsoNormal">misc text - The name of the bank chain</div>
</li>
</ul>
<p class="MsoNormal">StdPostman</p>
<ul>
<li>
<div class="MsoNormal">misc text - The name of the postal chain</div>
</li>
</ul>
<p class="MsoNormal">StdShopKeeper</p>
<ul>
<li>misc text - Prejudice factors. See the
field of the same name under GenShopKeeper above!</li>
</ul>
<p> </p>
<p><strong><font color="green" size="5"><a name="appc">Appendix C: Generic
Weapons and Armor Guide</a></font></strong></p>
<p align="left"><u><strong><font>Weapon Groups</font></strong></u>
</p>
<p> When
building weapons, you must first select the group that the weapon
falls under. The weapon group affects which classes can use
the weapon, as well as what specializations enhance it’s use.
Selecting more common weapon groups, such as EDGED or SWORD can enable
a weapon designer to place higher level restrictions, if desired, on
the weapon. This increase in levels is suggested to be 2 additional
levels, but not necessary to keep the game balanced. Weapons
within a group may deal any TYPE of damage, as discussed later, but
have general tendencies towards one or two types.</p>
<p> Weapons
within a given category have certain general tendencies, as describe
by the table below. Any or all of these can be overridden for
the purpose of weapon design, these are just the basic type of weapons
in that category. For example, flailed weapons tend to be unwieldy
(have a negative to attack), but that doesn’t mean all flails are
unwieldy. </p>
<p>Similarly, the allowed materials are materials used historically to make
that type of weapon. If a weapon designer deigns to make
a weapon out of LAMPOIL, it is doable, just a little unorthodox.
(You would probably want to make the weapon out of GLASS, as that
is the outer delivery devise of a Molotov Cocktail.) Currently,
weapon SIZE has no effect on game play, but that may change at a later
date. The BASE MATERIAL of a weapon assumes that weapons are
made from that general area, and use material bonuses based on that
type. If you create a weapon out of a non-standard, ALLOWABLE MATERIAL,
use the appropriate charts for determining attack and damage bonuses
after the level has been set.</p>
<p> </p>
<p align="left">
<table style="left: 10px; width: 100%; top: 28408px;" bgcolor="yellow"
border="1" cellpadding="1" cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="91">
<p> </p>
<p> </p>
<br>
</td>
<td valign="top" width="70">
<p><strong>Base Damage type</strong></p>
</td>
<td valign="top" width="81">
<p><strong>Base # Hands/ Base Reach</strong></p>
</td>
<td valign="top" width="58">
<p><strong>Base Attack Bonus</strong></p>
</td>
<td valign="top" width="132">
<p><strong>Size of Weapon</strong></p>
</td>
<td valign="top" width="160">
<p><strong>Base Material/ Allowable Materials</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>FLAILED</p>
</td>
<td valign="top" width="70">
<p>Blunt</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>-5</p>
</td>
<td valign="top" width="132">
<p>Weight*3</p>
</td>
<td valign="top" width="160">
<p>Wood/ M, W, R, L</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>BLUNT**</p>
</td>
<td valign="top" width="70">
<p>Blunt</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>Weight*2</p>
</td>
<td valign="top" width="160">
<p>Wood / M, W, R, L, P</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>SWORD</p>
</td>
<td valign="top" width="70">
<p>Slash</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>Weight + 12</p>
</td>
<td valign="top" width="160">
<p>Metal/ M, W, R, G, P</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>POLEARM</p>
</td>
<td valign="top" width="70">
<p>Pierce</p>
</td>
<td valign="top" width="81">
<p>2/1</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>Weight*4 + 24</p>
</td>
<td valign="top" width="160">
<p>Wood/ M, W, R, P</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>AXE</p>
</td>
<td valign="top" width="70">
<p>Slash</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>Weight + 6</p>
</td>
<td valign="top" width="160">
<p>Metal/ M, W, R, G, P</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>HAMMER</p>
</td>
<td valign="top" width="70">
<p>Blunt</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>Weight +12</p>
</td>
<td valign="top" width="160">
<p>Wood/ M, W, R, </p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>EDGED*</p>
</td>
<td valign="top" width="70">
<p>Pierce</p>
</td>
<td valign="top" width="81">
<p>1/0</p>
</td>
<td valign="top" width="58">
<p>+10</p>
</td>
<td valign="top" width="132">
<p>Weight*2</p>
</td>
<td valign="top" width="160">
<p>Metal/ M, W, R, G, P</p>
</td>
</tr>
<tr>
<td valign="top" width="91">
<p>RANGED***</p>
</td>
<td valign="top" width="70">
<p>Pierce</p>
</td>
<td valign="top" width="81">
<p>2/1</p>
</td>
<td valign="top" width="58">
<p>0</p>
</td>
<td valign="top" width="132">
<p>SPECIAL</p>
</td>
<td valign="top" width="160">
<p>Wood/M, W, R, L, G, P</p>
</td>
</tr>
</tbody>
</table>
</p>
<p>*A Dagger is a type of EDGED weapon.</p>
<p>**A Staff is a type of BLUNT weapon.</p>
<p>***Includes both RANGED, and THROWN weapons.</p>
<p>Allowed Materials: (M)etal/Mithril, (W)ooden, (R)ock, (B)one, (L)eather,
(G)lass, (P)recious. Disallowed: Flesh, Vegetation,
Liquid, Cloth, Paper </p>
<p><u><strong><font style="background-color: aqua;">Determining Weapon Level</font></strong></u>
</p>
<p> </p>
<p> Weapon
creation can be done by the designer fixing the DAMAGE that a weapon
does, or by fixing the LEVEL required to use the weapon. To
generate weapons that do a specific amount of damage which are balanced
with the WEAPONSMITHING skills, use the following formula:</p>
<p>Level= ((2*D)/(H+1) + (A-W)/5 +R)*((R/W)+2)+1</p>
<p>where</p>
<p>D=base DAMAGE of the weapon before material modifiers,<br>
H=number of hands required to wield<br>
A=base ATTACK bonus of the weapon<br>
R=REACH/RANGE of weapon<br>
W=WEIGHT of weapon</p>
<p> Round
the final number down, to a minimum level of 1. Some general
criteria to follow for weapons to avoid creating ultra-powerful,
low-level weapons include:</p>
<p> Create
the weapon for a HUMAN-sized character first. If you wish
to scale it up or down for different races, use the WEAPONS FOR GIANTS
table after setting the base level. A typical one-handed human
weapon will weigh from 1-8 pounds, and a two handed weapon will typically
weigh from 10 to 20 pounds. Using heavier/lighter weapons will
create a strange, and possibly unbalanced, result.</p>
<p> Melee
weapons should not have a reach greater than 1.</p>
<p> Weight
of weapons should include any incidental weight in using the item,
such as carrying case, ammunition, and other equipment generally assumed
to be in use with the item. For most RANGED weapons, this will
add another 4 pounds to the typical weight of the weapon. For
melee weapons, the weight is generally negligible. (Except, possibly
for a Katana with a very ornate scabbard.)</p>
<p> Round
the final number down, to a minimum level of 1.</p>
<p>Some sample weapons and levels: </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="110">
<p><strong>Name</strong></p>
</td>
<td valign="top" width="70">
<p><strong>Class</strong></p>
</td>
<td valign="top" width="78">
<p><strong>DamType</strong></p>
</td>
<td valign="top" width="51">
<p><strong>Level</strong></p>
</td>
<td valign="top" width="52">
<p><strong>DAM</strong></p>
</td>
<td valign="top" width="46">
<p><strong>ATT</strong></p>
</td>
<td valign="top" width="55">
<p><strong>Hands</strong></p>
</td>
<td valign="top" width="55">
<p><strong>Range</strong></p>
</td>
<td valign="top" width="53">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="42">
<p><strong>Size</strong></p>
</td>
<td valign="top" width="39">
<p><strong>WT</strong></p>
</td>
<td valign="top" width="69">
<p><strong>Material</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Hand Ax</p>
</td>
<td valign="top" width="70">
<p>Axe</p>
</td>
<td valign="top" width="78">
<p>Slashing</p>
</td>
<td valign="top" width="51">
<p>1</p>
</td>
<td valign="top" width="52">
<p>4</p>
</td>
<td valign="top" width="46">
<p>-10</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>56</p>
</td>
<td valign="top" width="42">
<p>14</p>
</td>
<td valign="top" width="39">
<p>8</p>
</td>
<td valign="top" width="69">
<p>Wooden</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Dagger</p>
</td>
<td valign="top" width="70">
<p>Edged</p>
</td>
<td valign="top" width="78">
<p>Piercing</p>
</td>
<td valign="top" width="51">
<p>1</p>
</td>
<td valign="top" width="52">
<p>2</p>
</td>
<td valign="top" width="46">
<p>-5</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>130</p>
</td>
<td valign="top" width="42">
<p>12</p>
</td>
<td valign="top" width="39">
<p>6</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Short Sword</p>
</td>
<td valign="top" width="70">
<p>Sword</p>
</td>
<td valign="top" width="78">
<p>Slashing</p>
</td>
<td valign="top" width="51">
<p>1</p>
</td>
<td valign="top" width="52">
<p>2</p>
</td>
<td valign="top" width="46">
<p>0</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>220</p>
</td>
<td valign="top" width="42">
<p>22</p>
</td>
<td valign="top" width="39">
<p>10</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Voulge</p>
</td>
<td valign="top" width="70">
<p>Polearm</p>
</td>
<td valign="top" width="78">
<p>Slashing</p>
</td>
<td valign="top" width="51">
<p>9</p>
</td>
<td valign="top" width="52">
<p>13</p>
</td>
<td valign="top" width="46">
<p>-10</p>
</td>
<td valign="top" width="55">
<p>2</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="53">
<p>803</p>
</td>
<td valign="top" width="42">
<p>96</p>
</td>
<td valign="top" width="39">
<p>18</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Gladius</p>
</td>
<td valign="top" width="70">
<p>Sword</p>
</td>
<td valign="top" width="78">
<p>Piercing</p>
</td>
<td valign="top" width="51">
<p>7</p>
</td>
<td valign="top" width="52">
<p>4</p>
</td>
<td valign="top" width="46">
<p>+5</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>300</p>
</td>
<td valign="top" width="42">
<p>22</p>
</td>
<td valign="top" width="39">
<p>10</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Grand Sceptre</p>
</td>
<td valign="top" width="70">
<p>Blunt</p>
</td>
<td valign="top" width="78">
<p>Bashing</p>
</td>
<td valign="top" width="51">
<p>12</p>
</td>
<td valign="top" width="52">
<p>8</p>
</td>
<td valign="top" width="46">
<p>+5</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>680</p>
</td>
<td valign="top" width="42">
<p>32</p>
</td>
<td valign="top" width="39">
<p>16</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Executioner’s Axe</p>
</td>
<td valign="top" width="70">
<p>Axe</p>
</td>
<td valign="top" width="78">
<p>Slashing</p>
</td>
<td valign="top" width="51">
<p>13</p>
</td>
<td valign="top" width="52">
<p>20</p>
</td>
<td valign="top" width="46">
<p>-10</p>
</td>
<td valign="top" width="55">
<p>2</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>1233</p>
</td>
<td valign="top" width="42">
<p><b>72! </b></p>
<p> <b> </b></p>
</td>
<td valign="top" width="39">
<p>25</p>
</td>
<td valign="top" width="69">
<p>Wooden</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Cat-o-nine tails</p>
</td>
<td valign="top" width="70">
<p>Flail</p>
</td>
<td valign="top" width="78">
<p>Bashing</p>
</td>
<td valign="top" width="51">
<p>17</p>
</td>
<td valign="top" width="52">
<p>15</p>
</td>
<td valign="top" width="46">
<p>-20</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>965</p>
</td>
<td valign="top" width="42">
<p>42</p>
</td>
<td valign="top" width="39">
<p>14</p>
</td>
<td valign="top" width="69">
<p>Leather</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Sledgehammer</p>
</td>
<td valign="top" width="70">
<p>Hammer</p>
</td>
<td valign="top" width="78">
<p>Bashing</p>
</td>
<td valign="top" width="51">
<p>10</p>
</td>
<td valign="top" width="52">
<p>34</p>
</td>
<td valign="top" width="46">
<p>-50</p>
</td>
<td valign="top" width="55">
<p>2</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>2773</p>
</td>
<td valign="top" width="42">
<p>52</p>
</td>
<td valign="top" width="39">
<p>40</p>
</td>
<td valign="top" width="69">
<p>Wooden</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Javelin</p>
</td>
<td valign="top" width="70">
<p>Thrown</p>
</td>
<td valign="top" width="78">
<p>Piercing</p>
</td>
<td valign="top" width="51">
<p>8</p>
</td>
<td valign="top" width="52">
<p>3</p>
</td>
<td valign="top" width="46">
<p>0</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>2</p>
</td>
<td valign="top" width="53">
<p>265</p>
</td>
<td valign="top" width="42">
<p>76</p>
</td>
<td valign="top" width="39">
<p>8</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
<tr>
<td valign="top" width="110">
<p>Katana</p>
</td>
<td valign="top" width="70">
<p>Sword</p>
</td>
<td valign="top" width="78">
<p>Slashing</p>
</td>
<td valign="top" width="51">
<p>13</p>
</td>
<td valign="top" width="52">
<p>7</p>
</td>
<td valign="top" width="46">
<p>+10</p>
</td>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="53">
<p>635</p>
</td>
<td valign="top" width="42">
<p><b>36! </b></p>
<p> <b> </b></p>
</td>
<td valign="top" width="39">
<p>16</p>
</td>
<td valign="top" width="69">
<p>Metal</p>
</td>
</tr>
</tbody>
</table>
</p>
<p>Notice: On the Executioner’s Axe, and the Katana, the size does
not correspond to the size formula given above. That’s OK,
since the size isn’t currently used, and since the weapon designer
ultimately has free reign over weapon design. Also, if you compare
many of these levels to that of the weaponsmithing skill, you will
some discrepancies on the levels. Weapon construction isn’t an
exact science, as long as you get it in the general range the game will
remain balanced.</p>
<p><u><strong><font style="background-color: aqua;">Determining Weapon Damage</font></strong></u>
</p>
<p><strong></strong> </p>
<p> If
you wish to create a weapon based on the level of a MOB, you can
use some algebra and convert the equation into a damage equation
to give you the following formula: </p>
<p>D= ((L-1)/((R/W)+2) + (W-A)/5 -R)*(((H*2)+1)/2) </p>
<p>where </p>
<p>L=Level required to use weapon,<br>
H=number of hands required to wield<br>
A=base ATTACK bonus of the weapon<br>
R=REACH/RANGE of weapon<br>
W=WEIGHT of weapon </p>
<p>Round the final number down, to a minimum level of 1.</p>
<p><u><strong><font style="background-color: aqua;">Determining Weapon Cost</font></strong></u>
</p>
<p> </p>
<p> To
compute the weapon’s base value use the following equation: </p>
<p>Cost of Item= 2*(W*V+(5*D+A+R*10)*D)/(H+1) </p>
<p>where </p>
<p>D=base DAMAGE of the weapon before material modifiers,<br>
H=number of hands required to wield<br>
A=base ATTACK bonus of the weapon<br>
R=REACH/RANGE of weapon<br>
W=WEIGHT of weapon<br>
V=VALUE of the material the weapon is made from
</p>
<p><u><strong><font style="background-color: aqua;">Determining Weapon Damage
Type</font></strong></u> </p>
<p> </p>
<p> Weapon
Damage Type is entirely up to the weapon designer, but some guidelines
have already been provided for the basic weapon types. Here
is a brief description of the different damage types, and level modifiers
for weapons with these damage types: </p>
<p> NATURAL—All
Natural weapons should be UnGettable. Natural weapons are
available for a creature to use in combat, such as a Manticore’s
tail spikes; but not actual weapons for adventurer’s to loot.
Any GETTABLE Natural weapon should have a level MODIFIER of at LEAST
it’s DAMAGE rating. Natural weapons would be favored by monks
if they could get them. </p>
<p> SLASHING—Slashing
weapons are fairly common and include things like Axes and Swords.
No special care needs to be considered when making a weapon deal
SLASHING damage.</p>
<p> PIERCING—Piercing
weapons are very common amongst the Polearm groups. No special
care needs to be considered when making a weapon deal PIERCING damage.</p>
<p> BASHING—Bashing
weapons are common amongst Blunt and Hammer weapon groups.
No special care needs to be considered when making a weapon deal SLASHING
damage.</p>
<p> BURNING—This
is the damage type for all fire based attacks and spells.
Burning weapons tend to do more damage to cloth and leather armors,
and overall are more powerful than Slashing/Piercing/Bashing due to
there infrequent use amongst weapons. Add 2 levels to a weapon’s
base LEVEL if it is of type BURNING.</p>
<p> BURSTING—
This is the damage type for all Magic based attacks and spells.
Bursting are more powerful than Slashing/Piercing/Bashing due to
there infrequent use amongst weapons. Add 2 levels to a weapon’s
base LEVEL if it is of type BURSTING.</p>
<p> SHOOT—This
is the damage type of projectile missiles, such as Bows and Guns.
It is very similar in nature to PIERCING. No special care
needs to be considered when making a weapon deal SHOOT damage.</p>
<p> FROSTING—This
is the damage type for all Cold based attacks and spells.
Frosting weapons tend to be more powerful than Slashing/Piercing/Bashing
due to there infrequent use amongst weapons. Add 2 levels to
a weapon’s base LEVEL if it is of type FROSTING.</p>
<p> GASSING—This
is the damage type for all Gas based attacks and spells.
Gassing weapons tend to be more powerful than Slashing/Piercing/Bashing
due to there infrequent use amongst weapons. Add 2 levels to
a weapon’s base LEVEL if it is of type GASSING.</p>
<p> MELTING—This
is the damage type for all Acid based attacks and spells.
Melting weapons tend to do more damage to armors, and overall are
more powerful than Slashing/Piercing/Bashing due to there infrequent
use amongst weapons. Add 2 levels to a weapon’s base LEVEL if
it is of type MELTING.</p>
<p> STRIKING—This
is the damage type for all Electricity based attacks and spells.
Striking weapons tend to do more damage to cloth and leather armors,
and overall are more powerful than Slashing/Piercing/Bashing due to
there infrequent use amongst weapons. Add 2 levels to a weapon’s
base LEVEL if it is of type STRIKING.</p>
<p><u><strong><font style="background-color: aqua;">Creating Quick and Dirty
Weapons</font></strong></u> </p>
<p> </p>
<p> If
you just want to guestimate a weapon’s level or damage, use the
following formulas. They aren’t very accurate, and can create
radically overbalanced weapons in the hands of players, but they
are great for easy NON-GETTABLE MOB weapons. </p>
<p>LEVEL=DAMAGE + (ATTACK/5) </p>
<p>or</p>
<p>DAMAGE=LEVEL - (ATTACK/5)</p>
<p><u><strong><font style="background-color: aqua;">Weapons for Giants</font></strong></u>
</p>
<p> </p>
<p> If
you wish to create weapons for large (or small) creatures, the weight
of the item will often get an unusually high bias, creating MASSIVE
low level weapons with lots of damage potential. Instead, create
the weapon for a human sized creature, and add the following modifiers.
</p>
<p>WEAPONS FOR GIANTS </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="104">
<p><strong>Weight Increase</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Level Increase</strong></p>
</td>
<td valign="top" width="101">
<p><strong>Damage Increase</strong></p>
</td>
<td valign="top" width="101">
<p><strong>Size Increase</strong></p>
</td>
<td valign="top" width="101">
<p><strong>Range Increase</strong></p>
</td>
<td valign="top" width="101">
<p><strong>Value Increase</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>-90%</p>
</td>
<td valign="top" width="83">
<p>0</p>
</td>
<td valign="top" width="101">
<p>-3</p>
</td>
<td valign="top" width="101">
<p>-50%</p>
</td>
<td valign="top" width="101">
<p>-1</p>
</td>
<td valign="top" width="101">
<p>+50%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>-50%</p>
</td>
<td valign="top" width="83">
<p>0</p>
</td>
<td valign="top" width="101">
<p>-2</p>
</td>
<td valign="top" width="101">
<p>-25%</p>
</td>
<td valign="top" width="101">
<p>-1</p>
</td>
<td valign="top" width="101">
<p>+20%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>-25%</p>
</td>
<td valign="top" width="83">
<p>0</p>
</td>
<td valign="top" width="101">
<p>-1</p>
</td>
<td valign="top" width="101">
<p>-10%</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="101">
<p>+10%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>+25%</p>
</td>
<td valign="top" width="83">
<p>+1</p>
</td>
<td valign="top" width="101">
<p>+1</p>
</td>
<td valign="top" width="101">
<p>+10%</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="101">
<p>+25%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>+50%</p>
</td>
<td valign="top" width="83">
<p>+2</p>
</td>
<td valign="top" width="101">
<p>+2</p>
</td>
<td valign="top" width="101">
<p>+20%</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="101">
<p>+50%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>+100%</p>
</td>
<td valign="top" width="83">
<p>+4</p>
</td>
<td valign="top" width="101">
<p>+4</p>
</td>
<td valign="top" width="101">
<p>+50%</p>
</td>
<td valign="top" width="101">
<p>+1</p>
</td>
<td valign="top" width="101">
<p>+75%</p>
</td>
</tr>
<tr>
<td valign="top" width="104">
<p>each additional +100%</p>
</td>
<td valign="top" width="83">
<p>+4</p>
</td>
<td valign="top" width="101">
<p>+4</p>
</td>
<td valign="top" width="101">
<p>+50%</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="101">
<p>+25%</p>
</td>
</tr>
</tbody>
</table>
</p>
<p><font size="5"><font style="background-color: lightgrey;"><u><strong>Armor</strong></u>
</font></font> </p>
<p> </p>
<p> Armor
creation is, in many ways, much simpler than weapon creation.
There are three types of armor: Cloth, Leather, and Metal.
Strange armors could exist, but are variants of one of these three
types. The armor values vary by location, and by material.
Shields are considered to be HELD METAL armor. For a wooden shield,
consider it as a HELD LEATHER armor for the purposes of further
discussion (though your material would still be WOODEN). </p>
<p><u><strong><font style="background-color: lightgrey;">Armor Points (Not
the final Defensive value of the armor)</font></strong></u> </p>
<p> </p>
<p> Different
types of armor have different level values, since the less armored
classes would love to get that extra armor bonus at a lighter weight.
To keep the classes balanced, the use the following guideline for determining
the BASE POINT value of an armor piece. As you will see in
the next section, different WEAR locations will have different ARMOR
VALUEs for the same type of armor. A platemail breastplate is
more protective than a platemail cuff. </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="55">
<p><strong>Points</strong></p>
</td>
<td valign="top" width="56">
<p><strong>Cloth Level</strong></p>
</td>
<td valign="top" width="64">
<p><strong>Leather Level</strong></p>
</td>
<td valign="top" width="60">
<p><strong>Metal Level</strong></p>
</td>
<td valign="top" width="355">
<p><strong>Sample Armor Type</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>0</p>
</td>
<td valign="top" width="56">
<p>0</p>
</td>
<td valign="top" width="64">
<p>0</p>
</td>
<td valign="top" width="60">
<p>0</p>
</td>
<td valign="top" width="355">
<p>Simple clothes</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>1</p>
</td>
<td valign="top" width="56">
<p>3</p>
</td>
<td valign="top" width="64">
<p>0</p>
</td>
<td valign="top" width="60">
<p>0</p>
</td>
<td valign="top" width="355">
<p>Padded clothes</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>2</p>
</td>
<td valign="top" width="56">
<p>7</p>
</td>
<td valign="top" width="64">
<p>1</p>
</td>
<td valign="top" width="60">
<p>0</p>
</td>
<td valign="top" width="355">
<p>Leather armor</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>3</p>
</td>
<td valign="top" width="56">
<p>12</p>
</td>
<td valign="top" width="64">
<p>5</p>
</td>
<td valign="top" width="60">
<p>0</p>
</td>
<td valign="top" width="355">
<p>Hard Leather Armor</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>4</p>
</td>
<td valign="top" width="56">
<p>18</p>
</td>
<td valign="top" width="64">
<p>10</p>
</td>
<td valign="top" width="60">
<p>1</p>
</td>
<td valign="top" width="355">
<p>Studded Leather or Ring Mail</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>5</p>
</td>
<td valign="top" width="56">
<p>25</p>
</td>
<td valign="top" width="64">
<p>16</p>
</td>
<td valign="top" width="60">
<p>3</p>
</td>
<td valign="top" width="355">
<p>Scale Mail</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>6</p>
</td>
<td valign="top" width="56">
<p>33</p>
</td>
<td valign="top" width="64">
<p>23</p>
</td>
<td valign="top" width="60">
<p>5</p>
</td>
<td valign="top" width="355">
<p>Chain Mail</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>7</p>
</td>
<td valign="top" width="56">
<p>42</p>
</td>
<td valign="top" width="64">
<p>31</p>
</td>
<td valign="top" width="60">
<p>8</p>
</td>
<td valign="top" width="355">
<p>Banded</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>8</p>
</td>
<td valign="top" width="56">
<p>52</p>
</td>
<td valign="top" width="64">
<p>40</p>
</td>
<td valign="top" width="60">
<p>12</p>
</td>
<td valign="top" width="355">
<p>Plate</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>9</p>
</td>
<td valign="top" width="56">
<p>62</p>
</td>
<td valign="top" width="64">
<p>50</p>
</td>
<td valign="top" width="60">
<p>17</p>
</td>
<td valign="top" width="355">
<p>Field Plate</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>10</p>
</td>
<td valign="top" width="56">
<p>72</p>
</td>
<td valign="top" width="64">
<p>60</p>
</td>
<td valign="top" width="60">
<p>23</p>
</td>
<td valign="top" width="355">
<p>Full Plate</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>11</p>
</td>
<td valign="top" width="56">
<p>82</p>
</td>
<td valign="top" width="64">
<p>70</p>
</td>
<td valign="top" width="60">
<p>30</p>
</td>
<td valign="top" width="355">
<p>Dwarven Plate</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>12</p>
</td>
<td valign="top" width="56">
<p>92</p>
</td>
<td valign="top" width="64">
<p>80</p>
</td>
<td valign="top" width="60">
<p>38</p>
</td>
<td valign="top" width="355">
<p>?</p>
</td>
</tr>
<tr>
<td valign="top" width="55">
<p>13*</p>
</td>
<td valign="top" width="56">
<p>102</p>
</td>
<td valign="top" width="64">
<p>90</p>
</td>
<td valign="top" width="60">
<p>47</p>
</td>
<td valign="top" width="355">
<p>??</p>
</td>
</tr>
</tbody>
</table>
</p>
<p>*Higher levels of armor are conceivable. Add 10 Levels per point
above 13</p>
<p><u><strong><font style="background-color: lightgrey;">Armor Value (The
Almost Final Defensive Value)</font></strong></u> </p>
<p> </p>
<p>Once you have determined it’s base points, then you will determine it’s
actual ARMOR VALUE, based upon it’s location, and it’s WEIGHT,
based upon location, point value, and material type. For example,
a Banded Shirt (7 points) would provide a total ARMOR VALUE of 21 (7*3),
and weigh 63 (7*9) pounds. </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="118">
<p> </p>
<p> </p>
<br>
</td>
<td valign="top" width="118">
<p align="center"><strong>Armor Value per Point</strong></p>
</td>
<td valign="top" width="118">
<p align="center"><strong>Cloth Weight per Point</strong></p>
</td>
<td valign="top" width="118">
<p align="center"><strong>Leather Weight per Point</strong></p>
</td>
<td valign="top" width="118">
<p align="center"><strong>Metal Weight per Point</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Head</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">2</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Neck</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Arms</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">4.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Wrist (2)</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Hands</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Torso</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">6</p>
</td>
<td valign="top" width="118">
<p align="center">9</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Waist</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Legs</p>
</td>
<td align="center">2</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">4.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Feet</p>
</td>
<td valign="top" width="118">
<p align="center">.5</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">2</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Held</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">4.5</p>
</td>
</tr>
<tr>
<td valign="top" width="118">
<p>Wield</p>
</td>
<td valign="top" width="118">
<p align="center">1</p>
</td>
<td valign="top" width="118">
<p align="center">1.5</p>
</td>
<td valign="top" width="118">
<p align="center">3</p>
</td>
<td valign="top" width="118">
<p align="center">4.5</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> The armor weights are recommendations. If you wish to create
a lighter version of chain mail that gives the same armor protection
(like Elven Chainmail) go right ahead. It will not increase
the level, it will increase the COST of the armor.</p>
<p><u><strong><font style="background-color: lightgrey;">Armor Cost</font></strong></u>
</p>
<p> </p>
<p>The formula for the cost of the armor is: </p>
<p>COST = (A*A + V) * ( W/2) </p>
<p>where</p>
<p>W = Weight of Armor<br>
A = Armor Points<br>
V = material Value</p>
<p> So
our example of an iron Banded Shirt would cost 2173.5 (round up
to 2174): (7*7+20)*(63/2). </p>
<p> </p>
<p><u><strong><font style="background-color: lightgrey;">Final Armor Adjustments</font></strong></u>
</p>
<p> </p>
<p> After
you have computed the Armor Value, consult the materials tables
for any bonuses that the material may give. This number is a
bonus per Armor Point. If a breast plate of full plate is made
from Adamantite (armor bonus of 4), it would gain 12 (4*3) points of
protection, bringing it’s total value from 30 (10*3) to 42. (30 + 12).
Material modifiers do NOT affect the level of the armor, even though
it would have an effective Armor Point total of 14, it would still be
available at level 23! Consult the Material Modifiers section below
for an Armor Point reference. </p>
<p><u><strong><font style="background-color: yellow;">Magic Modifiers</font></strong></u>
</p>
<p> </p>
<p> Magic
should be controlled by the type of MUD that is being run.
If you run a low-fantasy MUD, you may wish to increase the Level requirement
for items with magical properties. If you are on a high-fantasy
MUD, you may wish to decrease the Level requirements for items with
magical properties. Magic comes in at least seven forms:
Magic Adjustment, <em>PropFightSpellCast, PropHaveSpellCast, PropWearSpellCast,
PropHaveAdjustor, PropWearAdjuster, PropHaveResistor, PropWearResistor</em>.
</p>
<p><u><strong><font style="background-color: yellow;">Magic Adjustment</font></strong></u>
</p>
<p> </p>
<p> This
field is available on any item, weapon or armor. If the item
can be worn (but not used as a weapon), then every point of magic
gives 1 point of Armor Value. If the item can be used as a weapon,
then it gives +2 to Damage, and +10 to Attack per point of bonus.
In either case, the magic adjustment improves the item’s saving throws
against attacks that damage it’s condition. Having a Magic Adjustment
greater than 0 makes the item magical (and detectable as such).
Every 1 point of magic adjustment is worth 5 additional levels to the base
level of the item. </p>
<p><em>PropFightSpellCast</em> </p>
<p> </p>
<p> This
property will make a weapon discharge a spell-effect with each successful
hit. As such, it is very powerful, and the weapon’s level
should be increased by twice the spell’s typical level. As
with all spell effects, use careful judgment when placing spells on
items, and use your own discretion for determining the final level
adjustment. </p>
<p><em>PropHaveSpellCast</em> </p>
<p> </p>
<p> By
simply having this item, the designated spell is cast on the owner.
If this is a positive effect, add the Spell effect’s typical level
to the level of the item (at least, depending on usefulness).
If having a stone of Invisibility (level 7) is enough to make you invisible,
then the stone should require at least a level 7 character (if it
did nothing else). On something as powerful as invisibility,
you may wish to increase the level even more. </p>
<p><em>PropWearSpellCast</em> </p>
<p> </p>
<p> This
property makes any worn/wielded item grant the effects of a spell.
As a general rule, the item’s level should be increased by half
of the spell’s typical level. Again, use your own discretion
when creating items that may be very powerful, such as stoneskin or
invisibility. </p>
<p><em>PropHaveAdjustor</em> </p>
<p> </p>
<p> This
property makes an item that is in a MOBs possession gain certain
abilities. This is a very powerful effect, since a MOB could
conceivably carry a lot of these items. The level increase for
items of this type should be at least twice as high as those with the
PropWearAdjustor effect. </p>
<p><em>PropWearAdjustor</em> </p>
<p> </p>
<p>This property makes a worn/wielded item grant special benefits to it’s
owner.</p>
<p> </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="79">
<p align="center"><strong>Level per Point</strong></p>
</td>
<td valign="top" width="468">
<p><strong>Effect</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">5</p>
</td>
<td valign="top" width="468">
<p>Str, Dex, Con, Int, Wis, Cha</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">1/5</p>
</td>
<td valign="top" width="468">
<p>Hit Points, Mana Points</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">1/10</p>
</td>
<td valign="top" width="468">
<p>Movement Points</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">3</p>
</td>
<td valign="top" width="468">
<p>Armor</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">½</p>
</td>
<td valign="top" width="468">
<p>Attack</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">3</p>
</td>
<td valign="top" width="468">
<p>Damage</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">2</p>
</td>
<td valign="top" width="468">
<p>Disposition=(Good, Neutral, Evil)</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">10</p>
</td>
<td valign="top" width="468">
<p>Level</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">?</p>
</td>
<td valign="top" width="468">
<p>Rejuv, Hunger, Thirst, Experience</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">5</p>
</td>
<td valign="top" width="468">
<p>Senses</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">Variable</p>
</td>
<td valign="top" width="468">
<p>Race, Height, Weight, Gender</p>
</td>
</tr>
<tr>
<td valign="top" width="79">
<p align="center">5</p>
</td>
<td valign="top" width="468">
<p>Speed</p>
</td>
</tr>
</tbody>
</table>
</p>
<p><em>PropHaveResistor</em> </p>
<p> </p>
<p> This
property will give anyone possessing the item the said resistance
increase. This is a more powerful version of PropWearResistor.
The level increase for this property should be three times that of
a PropWearResistor. </p>
<p><em>PropWearResistor</em> </p>
<p> This
property allows an item worn/held/wielded to grant the owner bonuses
to various saving throws, or outright immunities to certain attacks.
</p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="115">
<p align="center"><strong>Level per percentage of resistance</strong></p>
</td>
<td valign="top" width="444">
<p><strong>Effect</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">1/5</p>
</td>
<td valign="top" width="444">
<p>Gas, Fire, Electrical, Mind, Magic, Cold, Acid, Water, Evil
(Undead), Justice (thief abilities and others)</p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">½</p>
</td>
<td valign="top" width="444">
<p>Weapons, Blunt, Pierce, Slash (reduces damage)</p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">2</p>
</td>
<td valign="top" width="444">
<p>Teleport Immunity (includes gate, summon, and others)</p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">10</p>
</td>
<td valign="top" width="444">
<p>Holy Immunity</p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">10</p>
</td>
<td valign="top" width="444">
<p>Disease Immunity</p>
</td>
</tr>
<tr>
<td valign="top" width="115">
<p align="center">10</p>
</td>
<td valign="top" width="444">
<p>Poison Immunity</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p><u><strong><font style="background-color: yellow;">Other Effects</font></strong></u>
</p>
<p> </p>
<p> There
are many properties available in Coffeemud that enable unique item
creation. There are inhibiting properties such as the <em>PropWearZapper</em>
and <em>PropHaveZapper</em> that can be used to reduce the level of
the item (I would say as a general rule, for every race restricted,
reduce the level requirement by 2, and for every class restricted reduce
the level by 1.) Other spell effects may be negative, reducing the
value of the item. Still others may be difficult to determine their
effects, reducing the value of the item. Use your judgment, or
request the system owner’s advice for particularly complicated works
of magic. </p>
<p align="left"><u><strong><font style="background-color: yellow;">Cost of
Magical and Miscelaneous Properties</font></strong></u> </p>
<p> For
determining the added monetary value of an item based on its magical
properties, you must first determine how prevelant magic items will
be in your world. Choose a cost Index between *10 for a magic rich
world, to *100 for a magic poor world. Each level above the base level
is multiplied by this Index and then added to the base cost to determine
its final value.</p>
<p>
Final Cost = Base Cost + (Total Level Increase)*(cost Index)</p>
<p align="left"><u><strong><font style="background-color: powderblue;">Material
Modifiers</font></strong></u> </p>
<p> The
Material that you use to create an item affects it’s overall effectiveness
without affecting it’s level. Make these modifications to
the item AFTER completing the previous formulas. If you use
a non-standard material, do not apply the actual material modifiers
(other than value) to the item’s Attack, Damage, or Armor values.
A metal club is superior to a wooden club, but using a better type
of metal doesn’t increase the bluntness (or even relative hardness)
of the club significantly. ROCK is an exception to this rule.</p>
<p>ALLOWABLE MATERIALS </p>
<p align="left">
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="105">
<p><strong>Standard</strong></p>
</td>
<td valign="top" width="102">
<p><strong>Actual</strong></p>
</td>
<td valign="top" width="104">
<p><strong>Damage</strong></p>
</td>
<td valign="top" width="101">
<p><strong>Attack</strong></p>
</td>
<td valign="top" width="90">
<p><strong>Armor</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>Wooden</p>
</td>
<td valign="top" width="104">
<p>-4</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="90">
<p>-3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>Precious**</p>
</td>
<td valign="top" width="104">
<p>-4</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>-3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>Leather**</p>
</td>
<td valign="top" width="104">
<p>-6</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>-4</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>Rock</p>
</td>
<td valign="top" width="104">
<p>-2</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>-1</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>Glass</p>
</td>
<td valign="top" width="104">
<p>-4</p>
</td>
<td valign="top" width="101">
<p>-20</p>
</td>
<td valign="top" width="90">
<p>-3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="102">
<p>*Other**</p>
</td>
<td valign="top" width="104">
<p>-8</p>
</td>
<td valign="top" width="101">
<p>-30</p>
</td>
<td valign="top" width="90">
<p>-5</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>Metal/Mithril**</p>
</td>
<td valign="top" width="104">
<p>+2</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="90">
<p>+3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>Precious**</p>
</td>
<td valign="top" width="104">
<p>+2</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>0</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>Leather**</p>
</td>
<td valign="top" width="104">
<p>-2</p>
</td>
<td valign="top" width="101">
<p>0</p>
</td>
<td valign="top" width="90">
<p>0</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>Rock</p>
</td>
<td valign="top" width="104">
<p>+2</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>+2</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>Glass</p>
</td>
<td valign="top" width="104">
<p>-2</p>
</td>
<td valign="top" width="101">
<p>-10</p>
</td>
<td valign="top" width="90">
<p>0</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Wooden</p>
</td>
<td valign="top" width="102">
<p>*Other**</p>
</td>
<td valign="top" width="104">
<p>-6</p>
</td>
<td valign="top" width="101">
<p>-30</p>
</td>
<td valign="top" width="90">
<p>-3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Metal/Mithril</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+4</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Wooden</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+1</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Precious**</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+1</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Leather</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+1</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Rock</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+3</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>Glass</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>+1</p>
</td>
</tr>
<tr>
<td valign="top" width="105">
<p>Cloth</p>
</td>
<td valign="top" width="102">
<p>*Other**</p>
</td>
<td valign="top" width="104">
<p align="center">N/A</p>
</td>
<td valign="top" width="101">
<p align="center">N/A</p>
</td>
<td valign="top" width="90">
<p>-2</p>
</td>
</tr>
</tbody>
</table>
</p>
<p>*Consider each on a case by case basis</p>
<p>**DO NOT apply MATERIAL MODIFIERS to DAMAGE, ATTACK, and ARMOR</p>
<p><u><strong><font style="background-color: plum;">Material Indexes</font></strong></u>
</p>
<p> </p>
<p> Once
an item is completed, add any values from materials to the end result
to get the final values for the item. Note that CONDITION is
a relative term that determines ARMOR and WEAPON damage condition.
Different types of materials suffer differently from the various attack
forms. A blank in this area means that it resists damage normally,
and wears at the standard rate for all attacks against that type of
material. A ‘+’ means that it holds up better against all forms
of attacks. A ‘-‘ means that it suffers more damage from all forms
of attacks. </p>
<p> Mithril
is a special type of METAL. Therefore, any item that can be
made from a metal, can also be made from a mithril. Mithril
has different resistance scores than metals, and has other special
properties, so it is listed as its own classification.</p>
<p> If
an item is created from a non-standard material, apply those modifiers
FIRST. If they don’t allow for a MATERIAL MODIFIER, then skip
this step.</p>
<p> </p>
<p align="left">
<table style="width: 100%;" bgcolor="#ffff00" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="86">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Stone</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Limestone</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Flint</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Granite</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>2</p>
</td>
<td valign="top" width="84">
<p>+10</p>
</td>
<td valign="top" width="85">
<p>+2</p>
</td>
<td valign="top" width="84">
<p>+1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Obsidian</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>+10</p>
</td>
<td valign="top" width="85">
<p>+2</p>
</td>
<td valign="top" width="84">
<p>+1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Marble</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>20</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Sand</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-40</p>
</td>
<td valign="top" width="85">
<p>-8</p>
</td>
<td valign="top" width="84">
<p>-4</p>
</td>
<td valign="top" width="84">
<p align="center">----</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Coal</p>
</td>
<td valign="top" width="84">
<p>ROCK</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-40</p>
</td>
<td valign="top" width="85">
<p>-8</p>
</td>
<td valign="top" width="84">
<p>-4</p>
</td>
<td valign="top" width="84">
<p align="center">----</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table style="width: 100%;" bgcolor="#ffff00" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Iron</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>20</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Lead</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Bronze</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Silver</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>30</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Gold</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>50</p>
</td>
<td bgcolor="#ffff00" valign="top"
width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Zinc</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Copper</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Tin</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p>-20</p>
</td>
<td valign="top" width="85">
<p>-4</p>
</td>
<td valign="top" width="84">
<p>-2</p>
</td>
<td valign="top" width="84">
<p align="center">--</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Steel</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>150</p>
</td>
<td valign="top" width="84">
<p>+20</p>
</td>
<td valign="top" width="85">
<p>+4</p>
</td>
<td valign="top" width="84">
<p>+2</p>
</td>
<td valign="top" width="84">
<p align="center">++</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Brass</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>120</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Platinum</p>
</td>
<td valign="top" width="84">
<p>METAL</p>
</td>
<td valign="top" width="84">
<p>80</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table style="width: 100%;" bgcolor="#ffff00" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td valign="top" width="89">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="82">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="83">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="89">
<p>Mithril</p>
</td>
<td valign="top" width="84">
<p>MITHRIL</p>
</td>
<td valign="top" width="82">
<p>200</p>
</td>
<td valign="top" width="84">
<p>30</p>
</td>
<td valign="top" width="85">
<p>6</p>
</td>
<td valign="top" width="83">
<p>3</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="89">
<p>Adamantite</p>
</td>
<td valign="top" width="84">
<p>MITHRIL</p>
</td>
<td valign="top" width="82">
<p>500</p>
</td>
<td valign="top" width="84">
<p>40</p>
</td>
<td valign="top" width="85">
<p>8</p>
</td>
<td valign="top" width="83">
<p>4</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="86">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Wood</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>2</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Pine</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>4</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Balsa</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-10</p>
</td>
<td valign="top" width="85">
<p>-2</p>
</td>
<td valign="top" width="84">
<p>-1</p>
</td>
<td valign="top" width="84">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Oak</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>5</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Maple</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Redwood</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>20</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Hickory</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>5</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Ironwood</p>
</td>
<td valign="top" width="86">
<p>WOODEN</p>
</td>
<td valign="top" width="84">
<p>25</p>
</td>
<td valign="top" width="84">
<p>+10</p>
</td>
<td valign="top" width="85">
<p>+2</p>
</td>
<td valign="top" width="84">
<p>+1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="87">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Scales</p>
</td>
<td valign="top" width="87">
<p>LEATHER</p>
</td>
<td valign="top" width="83">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p>+2</p>
</td>
<td valign="top" width="84">
<p align="center">++</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Leather</p>
</td>
<td valign="top" width="87">
<p>LEATHER</p>
</td>
<td valign="top" width="83">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Fur</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>20</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p>+1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Wool</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Feathers</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Cotton</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>5</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Hemp</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>4</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Silk</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>200</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Hide</p>
</td>
<td valign="top" width="84">
<p>CLOTH</p>
</td>
<td valign="top" width="84">
<p>4</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ATTACK</strong></p>
</td>
<td valign="top" width="85">
<p><strong>DAMAGE</strong></p>
</td>
<td valign="top" width="84">
<p><strong>ARMOR</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Glass</p>
</td>
<td valign="top" width="84">
<p>GLASS</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Clay</p>
</td>
<td valign="top" width="84">
<p>GLASS</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>-20</p>
</td>
<td valign="top" width="85">
<p>-4</p>
</td>
<td valign="top" width="84">
<p>-2</p>
</td>
<td valign="top" width="84">
<p align="center">--</p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>China</p>
</td>
<td valign="top" width="84">
<p>GLASS</p>
</td>
<td valign="top" width="84">
<p>30</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Crystal</p>
</td>
<td valign="top" width="84">
<p>GLASS</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="85">
<p> </p>
</td>
<td valign="top" width="84">
<p> </p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Bone</p>
</td>
<td valign="top" width="84">
<p>GLASS</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p>+20</p>
</td>
<td valign="top" width="85">
<p>+4</p>
</td>
<td valign="top" width="84">
<p>+2</p>
</td>
<td valign="top" width="84">
<p align="center">++</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="84">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="84">
<p>Paper</p>
</td>
<td valign="top" width="84">
<p>PAPER</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="103">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="79">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="53">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="78">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Meat</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>4</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Beef</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>6</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Pork</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>8</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Poultry</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>3</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Mutton</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>4</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Fish</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>5</p>
</td>
<td valign="top" width="78">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="103">
<p>Eggs</p>
</td>
<td valign="top" width="79">
<p>FLESH</p>
</td>
<td valign="top" width="53">
<p>2</p>
</td>
<td valign="top" width="78">
<p align="center">-</p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="94">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="85">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="78">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Wheat</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Corn</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Rice</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Carrots</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Tomatoes</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Peppers</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Greens</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Fruit</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Apples</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Berries</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Oranges</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Lemons</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Grapes</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>3</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Olives</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Potatoes</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Cactus</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Dates</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Seaweed</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Cocoa</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>4</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Barley</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Mushrooms</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Herbs</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Sugar</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>1</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Hops</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Coffeebeans</p>
</td>
<td valign="top" width="85">
<p>Vegetation</p>
</td>
<td valign="top" width="78">
<p>2</p>
</td>
<td valign="top" width="83">
<p> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="86">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="84">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Freshwater</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>0</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Saltwater</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>0</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Drinkable</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>0</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Milk</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>2</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Blood</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Lampoil</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Poison</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Liquor</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>10</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Honey</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>1</p>
</td>
<td valign="top" width="84">
<p align="center">+</p>
</td>
</tr>
<tr>
<td valign="top" width="86">
<p>Coffee</p>
</td>
<td valign="top" width="84">
<p>LIQUID</p>
</td>
<td valign="top" width="84">
<p>0</p>
</td>
<td valign="top" width="84">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1"
width="100%">
<tbody>
<tr>
<td valign="top" width="94">
<p><strong>Material</strong></p>
</td>
<td valign="top" width="92">
<p><strong>Type</strong></p>
</td>
<td valign="top" width="74">
<p><strong>Value</strong></p>
</td>
<td valign="top" width="83">
<p><strong>Condition</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Jade</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>50</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Diamond</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>5000</p>
</td>
<td valign="top" width="83">
<p align="center">++++</p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Gem</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>1000</p>
</td>
<td valign="top" width="83">
<p align="center">--</p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Pearl</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>1000</p>
</td>
<td valign="top" width="83">
<p align="center">-</p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Opal</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>80</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Amethyst</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>300</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Garnet</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>70</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Aquamarine</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>50</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Topaz</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>200</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Amber</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>80</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
<tr>
<td valign="top" width="94">
<p>Crysoberyl</p>
</td>
<td valign="top" width="92">
<p>PRECIOUS</p>
</td>
<td valign="top" width="74">
<p>50</p>
</td>
<td valign="top" width="83">
<p align="center"> </p>
</td>
</tr>
</tbody>
</table>
</p>
<p> </p>
<p align="left"><u><b>Location Layers</b></u></p>
<p align="left"> Equipement can be designated
as undergarmets or overgarments by a system of layers. The normal
layer of clothing is designated the 0 layer. Negative layers are
underclothing, while positive layers are overclothing. Coffeemud
supports up to 32767 layers, but it is not recommended to allow such latitude
in your games. Your players will become walking department stores.
The methodology recommended by the Coffeemud staff (and utilized in
the crafting skills) is listed below. Clothing must be applied
from the lowest layer to the highest layer, and removed in reverse order.<br>
</p>
<p align="left"> To apply a Layer to
a worn item in the common skills list (or GenRecipe), you add the layer
number followed by a colon prior to the wearlocation (but in the same
column as the wear location). An example would be a doublet, worn
on the torso would be shown as 1:TORSO. The default location (0) is
implicitly understood, so a shirt would be written as TORSO (no colon needed).<br>
</p>
<p align="left"> Clothing in adjacent
layer numbers can not be worn together (that is, a layer 1 clothing
doesn’t fit on top of a layer 0 clothing, but will fit over a layer
-1 clothing).<br>
There are two special flags for clothing, Multiwear (M) and
Seethru (S). Multiwear allows the item to be worn in the same
(or even adjacent) layers as other clothing. A badge that is M1:TORSO
could be worn after the character is already wearing a shirt that is
0:TORSO or a doublet that is 1:TORSO. Additionally, Multiple badges of
that nature could be worn at the same time. Seethru allows the clothing
to not obscure lower-layered clothing. In the case of our badge,
if we made it MS1:TORSO, you would be able to see the shirt underneath
it. If it was just M1:TORSO, you would only see the badge(s) worn,
not the shirt underneath.<br>
</p>
<p align="left">
<table bgcolor="#ffff00" border="1" cellpadding="1" cellspacing="1">
<tbody>
<tr>
<td valign="top" width="79"><b> Layer </b></td>
<td valign="top" width="480"><b> Examples </b></td>
</tr>
<tr>
<td valign="top" width="79"> -5 </td>
<td valign="top" width="480"> Tattoo, piercing
</td>
</tr>
<tr style="">
<td valign="top" width="79"> -4 </td>
<td valign="top" width="480"> Hose, leotards,
Hairpieces </td>
</tr>
<tr>
<td valign="top" width="79"> -3 </td>
<td valign="top" width="480"> Socks, Underwear,
panties, bras, corsets, garder belts, jewelry </td>
</tr>
<tr>
<td valign="top" width="79"> -2 </td>
<td valign="top" width="480">Tshirts, Camise, nightshirts,
collars </td>
</tr>
<tr>
<td valign="top" width="79"> -1 <br>
</td>
<td valign="top" width="480"> Normal clothes
</td>
</tr>
<tr>
<td valign="top" width="79"> 0 <br>
</td>
<td valign="top" width="480"> Normal Leather and
Chain Armors, mitts, *DEFAULT* </td>
</tr>
<tr>
<td valign="top" width="79"> 1 <br>
</td>
<td valign="top" width="480"> Normal Plate armors,
coats, jackets, boots </td>
</tr>
<tr>
<td valign="top" width="79"> 2 <br>
</td>
<td valign="top" width="480"> Cloaks,Robes, scarf,
overcoat,trenchcoat, cowls </td>
</tr>
<tr>
<td valign="top" width="79"> 3 <br>
</td>
<td valign="top" width="480"> Sleeping Bags,
body bags, Heaumes, Golashes </td>
</tr>
</tbody>
</table>
</p>
<p align="left"><span class="453251818-08032003"><span
class="453251818-08032003"><span class="453251818-08032003"><span
class="453251818-08032003"><span class="453251818-08032003"><span
class="453251818-08032003"><span class="453251818-08032003"><span
class="453251818-08032003"><br>
<span class="453251818-08032003"></span></span></span></span></span></span></span></span></span><strong><font
color="green" size="5"><a name="appd">Appendix D: Quests</a></font></strong></p>
<p>Quests are tasks which can be completed by players for prizes, typically
quest points, experience, money, or all three. Quest tasks,
the monitoring of their completion and status, as well as their availability,
can all be automated by CoffeeMud.</p>
<p>The built-in Quest system in CoffeeMud allows you to automatic all of
the following processes: </p>
<ul>
<li>scheduling of quests by a variety of means, and managing a quest
"duration"</li>
<li>setting special quest-start criteria based on the players currently
online</li>
<li>the selection of random mobs, items, rooms, and areas from the
map by various criteria</li>
<li>the introduction of new mobs and/or items from saved text files,
and thier automatic removal when the quest is done</li>
<li>adding various skills, affects, behaviors to any of the aforementioned
objects and their automatic removal when the quest is done</li>
<li>adding scripts to any of the aforementioned objects and having
those scripts removed when the quest is done</li>
<li>special variables and designation for making your own logic problem
quests (mysteries)</li>
</ul>
<p>A quest is designated by a long set of definitions and pseudo-commands
called a <span style="color: rgb(204,0,0);">QUEST-SCRIPT</span>. The
quests are created by an Archon using the <strong>CREATE QUEST</strong>
[SCRIPT] command from the command line. Where [SCRIPT] is a either a complete
quest script, where each command line is terminated by a semicolon (;),
or a load command of the form LOAD=[SCRIPT PATH]. If you enter a complete
quest script, make sure that any embedded semicolons are escaped like "\;".
An example of a create script using a load command (the more common
case) is as follows:</p>
<p><strong>CREATE QUEST</strong> LOAD=quests/murdermystery/murdermystery.quest</p>
<p>All LOAD commands use the resources directory inside your coffeemud install
directory as the default path. Therefore, if you installed coffeemud
in C:\CoffeeMud, the above LOAD command will look for the file in C:\CoffeeMud\resources\quests\murdermystery\murdermystery.quest.</p>
<p>Quests may be started automatically (autoquests) from inside the
quest script by including the SET WAIT and SET INTERVAL commands,
or they may be started manually by using the <strong>MODIFY
QUEST</strong> [QUEST NAME] command. </p>
<p>Quests can be listed, to see their status, using the <strong>LIST QUESTS</strong>
command. </p>
<p>Quests can be removed from the list using the <strong>DESTROY QUEST</strong>
[QUEST NAME] command.</p>
<p>Quests can be saved using the <strong>SAVE QUESTS</strong> command. Quests
saved this way will be restored during the next CoffeeMud reboot. Any
time the CREATE QUEST command is used, you will need to follow it with a
SAVE QUESTS if you want your quest to remain. </p>
<p><font style="background-color: aquamarine;" color="#4169e1" size="4"><strong>Quest
Scripts</strong></font></p>
<p>When creating a new quest using the <strong>CREATE QUEST</strong> [SCRIPT]
command, whether you use the load command to specify an external
script, or include the script directly into the create command,
the quest script commands are as follows:</p>
<p><span style="color: rgb(51,102,102);">SET NAME</span> <span
style="color: rgb(102,51,102);">[QUEST NAME] </span>- the *unique* name
of your quest. This is a required command! </p>
<p><span style="color: rgb(51,102,102);">SET DURATION</span> <span
style="color: rgb(102,51,102);">[#TICKS]</span> - # of ticks (4 second periods)
the quest will last once started. This is a required command! </p>
<p style="color: rgb(51,0,0);"><span style="color: rgb(51,102,102);">SET
WAIT</span><span style="color: rgb(102,51,102);"> [#TICKS]</span> - minimum
# ticks to wait between auto-starts of the quest. Required for auto-quests
only! </p>
<p style="color: rgb(51,0,0);"><span style="color: rgb(51,102,102);">SET
DATE</span> <span style="color: rgb(102,51,102);">[#DAY]-[#MONTH] </span>-
The real-life start-date of the quest. This is a valid substitute for the
SET WAIT requirement.</p>
<p style="color: rgb(51,0,0);"><span style="color: rgb(51,102,102);">SET
MUDDAY</span> <span style="color: rgb(102,51,102);">[#DAY]-[#MONTH]</span>
- The start mud-date of the quest, according to the default global
mud calendar. This is a valid substitute for the SET WAIT requirement.</p>
<p><span style="color: rgb(51,102,102);">SET INTERVAL</span><span
style="color: rgb(102,51,102);"> [#TICKS]</span> - random # ticks (1-#TICKS)
to wait between auto-starting the quest, AFTER the WAIT period
(see above) is over. Required for auto-quests! </p>
<p><span style="color: rgb(51,102,102);">SET MINPLAYERS</span><span
style="color: rgb(102,51,102);"> [#PLAYERS]</span> - Minimum number of players
who must be online for a timed quest to automatically start. See
SET PLAYERMASK.</p>
<p><span style="color: rgb(51,102,102);">SET PLAYERMASK</span> <span
style="color: rgb(102,51,102);">[MASKSTRING]</span> - If this string is
empty or not specified, then anyone is considered a player for the
purposes of the MINPLAYERS setting above. However, you can specify
a "zapper mask" to narrow down the definition of a player. See
HELP Prop_HaveZapper for the list of valid mask values to put here.</p>
<p><span style="color: rgb(51,102,102);">SET RUNLEVEL</span><span
style="color: rgb(102,51,102);"> [#LEVEL]</span> - Normally, a timed quest
will always run when its time comes up. Setting a value above
-1 will prevent this quest from running when its time comes up if
another quest is also running at the same or LOWER run level.</p>
<p><span style="color: rgb(51,102,102);">IMPORT MOBS</span><span
style="color: rgb(102,51,102);"> [XML FILE PATH]</span> - this will import
a list of custom mobs from a .CMARE file generated using the EXPORT ROOM
MOBS command. The parameter must be the path and file name of the file, using
the same format as the LOAD= command mentioned above. This list can
then be accessed with the LOAD MOB, or LOAD MOBGROUP command. </p>
<p><span style="color: rgb(51,102,102);">IMPORT ITEMS</span><span
style="color: rgb(102,51,102);"> [XML FILE PATH] </span>- this will import
a list of custom items from a .CMARE file generated using the EXPORT ROOM
ITEMS command. The parameter must be the path and file name of the file,
using the same format as the LOAD= command mentioned above. This list
can then be accessed with the LOAD ITEM or LOAD ITEMGROUP command. </p>
<p><span style="color: rgb(51,102,102);">SET AREA</span> <span
style="color: rgb(102,51,102);">([AREA NAME OR NAMES]) </span>- will set
the current designated area to the area specified. Although this
does nothing in itself, it is important for the several commands
which load mobs and items. The area name ANY may be given to choose
a random area. Several area names may be specified as choices
by setting the first area name as ANY, followed by your other area
name choices, separated by spaces. If no area name is given,
this will CLEAR the area designation. This can have a profound impact
on how subsequent mob or item loading, or room setting commands work.</p>
<p><span style="color: rgb(51,102,102);">SET AREA</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the object
resolves to a group of objects, a random one from the group will be chosen.
</p>
<p><span style="color: rgb(51,102,102);">SET ROOMGROUP</span> <span
style="color: rgb(102,51,102);">([ROOM NAME])</span> - will set the ROOMGROUP
to the set specified. If an area has been previously designated, and not
cleared (see SET AREA), then the rooms will be selected from the designated
area according to the room name criteria. Otherwise, rooms from the whole
map will be chosen. If a room name of ANY is given, then the rooms will
be chosen randomly from the world, or the area if designated. Several
room names may be specified as choices by setting the first room name as
ANY, followed by your other room name choices, separated by spaces.
If no room name is given, this will effectly clear the ROOMGROUP designation
(but it will not clear the area designation!). Valid room names include
map room IDs such as MyArea#123, or key words from the titles or descriptions
of rooms.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">ROOMGROUP</span> <span
style="color: rgb(102,51,102);"></span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing.<span
style="color: rgb(102,51,102);"></span> </p>
<p><span style="color: rgb(51,102,102);">SET ROOM</span> <span
style="color: rgb(102,51,102);">([ROOM NAME]) </span>- will set the current
designated room to the set specified. If a room or area has been previously
designated, and not cleared (see SET AREA), then the room will be selected
from the designated area according to the room name criteria. Otherwise,
a room from the whole map will be chosen. If a room name of ANY is given,
then the room will be chosen randomly from the world, or the area if designated. Several
room names may be specified as choices by setting the first room name as
ANY, followed by your other room name choices, separated by spaces.
If no room name is given, this will effectly clear the room designation
(but it will not clear the area designation!). Valid room names include
map room IDs such as MyArea#123, or key words from the titles or descriptions
of rooms.</p>
<p><span style="color: rgb(51,102,102);">SET ROOM</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET ROOMGROUPAROUND</span> <span
style="color: rgb(102,51,102);">[#RADIUS] ([ROOM NAME])</span>- will set
the ROOMGROUP to the set of rooms up to RADIUS rooms from the previously
set ROOM. The rooms will be selected from the set of rooms which are up
to RADIUS rooms away from the currently set ROOM (see SET ROOM/SET
LOCALE). The radius must then be greater than 0. If the following
room name of ANY is given, then all rooms in the radius are grouped. Several
room names may be specified as choices by setting the first room name as
ANY, followed by your other room name choices, separated by spaces.
If no room name is given, this will effectly clear the ROOMGROUP designation
(but it will not clear the area designation!). Valid room names
include map room IDs such as MyArea#123, or key words from the titles or
descriptions of rooms.</p>
<p><span style="color: rgb(51,102,102);">SET LOCALEGROUP</span> <span
style="color: rgb(102,51,102);">([LOCALE])</span> - will set the ROOMGROUP
to the ones with the specified class name. If an area has been previously
designated, and not cleared (see SET AREA), then the rooms will be selected
from the designated area according to the locale criteria. Otherwise, rooms
from the whole map will be chosen. If a locale name of ANY is given, then
the rooms will be chosen randomly from the world, or the area if designated. Several
locale types may be specified as choices by setting the first locale type
as ANY, followed by your other locale type choices, separated by spaces.
If no locale is given, this will effectly clear the ROOMGROUP designation
(but it will not clear the area designation!). Valid locale names
may be Locale class names such as MountainSurface, StdRoom, etc, or they
may be locale types such as stone, wooden, underwater, mountains, etc.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">LOCALEGROUP</span> <span
style="color: rgb(102,51,102);"></span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. </p>
<p><span style="color: rgb(51,102,102);">SET LOCALEGROUPAROUND</span>
<span style="color: rgb(102,51,102);">([#RADIUS] [LOCALE])</span> -
will set the ROOMGROUP to the ones with the specified class name. The
rooms will be selected from the set of rooms which areup to RADIUS rooms
away from the currently set ROOM (see SET LOCALE/SET ROOM). The radius must
then be greater than 0. If the following locale name of ANY is given,
then all rooms in the radius are grouped. Several room names may
be specified as choices by setting the first locale name as ANY, followed
by your other locale name choices, separated by spaces.
If no locale name is given, this will effectly clear the ROOMGROUP
designation (but it will not clear the area designation!). Valid
locale names may be Locale class names such as MountainSurface, StdRoom,
etc, or they may be locale types such as stone, wooden, underwater, mountains,
etc.</p>
<p><span style="color: rgb(51,102,102);">SET LOCALE</span><span
style="color: rgb(102,51,102);"> ([LOCALE])</span> - will set the current
designated room to the one with the specified class name. If a
room or area has been previously designated, and not cleared (see
SET AREA), then the room will be selected from the designated area
according to the locale criteria. Otherwise, a room from the whole map
will be chosen. If a locale of ANY is given, then the room will be chosen
randomly from the world, or the area if designated. Several
locale types may be specified as choices by setting the first locale
type as ANY, followed by your other locale type choices, separated by
spaces. If no locale is given, this will effectly clear the room
designation (but it will not clear the area designation!). Valid
locale names may be Locale class names such as MountainSurface, StdRoom,
etc, or they may be locale types such as stone, wooden, underwater, mountains,
etc.</p>
<p><span style="color: rgb(51,102,102);">SET LOCALE</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen. </p>
<p><span style="color: rgb(51,102,102);">SET MOBGROUP</span> <span
style="color: rgb(102,51,102);">(RESELECT) ([MOB NAME]) </span>- will designate
a set of mobs with the given name. If the name ends with MASK=...,
then a mask similar in functionality to the one described in the
Prop_HaveZapper will apply in addition to the name mask entered before
the MASK= string. The mobs chosen will be selected from those in
the designated ROOMGROUP (if one is designated), AREA (if
one is designated) or the world. The mobs must exist somewhere in the map
for this command to work. Normally a mob will not be placed in the
mobgroup if the mob has been previously set with SET MOB, or SET MOBTYPE.
The RESELECT flag is an optional first flag which, if specified, designates
that mobs may be placed in the mobgroup even if previously set, so
long as the RESELECT flag was also used in the previous SET MOB or SET MOBTYPE
command.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">MOBGROUP</span> <span
style="color: rgb(102,51,102);"></span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing </p>
<p><span style="color: rgb(51,102,102);">SET MOB</span><span
style="color: rgb(102,51,102);"> </span> <span
style="color: rgb(102,51,102);">(RESELECT) </span><span
style="color: rgb(102,51,102);">([MOB NAME])</span> - will set the current
mob to one with the given mob name. If the name ends with MASK=..., then
a mask similar in functionality to the one described in the Prop_HaveZapper
will apply in addition to the mob name entered before the MASK= string.
Ths mob chosen will be selected from a MOBGROUP if one has been set. Otherwise,
the mob chosen will be selected from those in the designated ROOMGROUP (if
one is designated), or the AREA (if one is designated) or finally the world.
The mob must exist somewhere one of those groups for this command to work.
If a room has been previously designated, then this command will bring the
chosen mob to that room. If a room or area has not been designated (or was
cleared), then this command will designate a new room and area. Normally
a mob will not be chosen by this command if the mob has been previously
set with SET MOB, or SET MOBTYPE. The RESELECT flag is an optional
first flag which, if specified, designates that a mob may be chosen if previously
chosen, so long as the RESELECT flag was also used in the previous SET MOB
or SET MOBTYPE command.</p>
<p><span style="color: rgb(51,102,102);">SET MOB</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen. </p>
<p><span style="color: rgb(51,102,102);">SET MOBTYPE</span><span
style="color: rgb(102,51,102);"> (RESELECT) ([CLASS])</span> - will set
the current mob to one with the given class name. Ths mob chosen
will be selected from a MOBGROUP if one has been set. Otherwise, the
mob chosen will be selected from those in the designated ROOMGROUP (if
one is designated), AREA (if one is designated) or the world. The mob
must exist somewhere in the map for this command to work. If a room
has been previously designated, then this command will bring the mob
to that room. If a room or area has not been designated (or was cleared),
then this command will designate a new room and area. Normally
a mob will not be chosen by this command if the mob has been previously set
with SET MOB, or SET MOBTYPE. The RESELECT flag is an optional first
flag which, if specified, designates that a mob may be chosen if previously
chosen, so long as the RESELECT flag was also used in the previous SET MOB
or SET MOBTYPE command.</p>
<p><span style="color: rgb(51,102,102);">SET MOBTYPE</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen. </p>
<p><span style="color: rgb(51,102,102);">SET ITEMGROUP</span> <span
style="color: rgb(102,51,102);">(RESELECT) </span><span
style="color: rgb(102,51,102);">([ITEM NAME]) </span>- will designate a
set of items with the given name. If the name ends with MASK=..., then a
mask similar in functionality to the one described in the Prop_HaveZapper
will apply in addition to the item name entered before the MASK= string.
The items chosen will be selected from those in the designated ROOMGROUP
(if one is designated), the AREA (if one is designated) or the
world. The items must exist somewhere in the map for this command to work.
Normally an item will not be placed in the itemgroup if the item has
been previously set with SET ITEM, or SET ITEMTYPE. The RESELECT flag
is an optional first flag which, if specified, designates that items may
be placed in the itemgroup even if previously set, so long as the RESELECT
flag was also used in the previous SET ITEM or SET ITEMTYPE command.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">ITEMGROUP</span> <span
style="color: rgb(102,51,102);"></span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing</p>
<p><span style="color: rgb(51,102,102);">SET ITEM</span> <span
style="color: rgb(102,51,102);">(RESELECT) </span><span
style="color: rgb(102,51,102);">([ITEM NAME])</span> - will set the current
item to one with the given name. The item chosen will be selected
from those in the designated ROOMGROUP (if one is designated),
AREA (if one is designated) or the world. The item must exist
somewhere in a room on the map for this command to work. If a room
has been previously designated, then this command will bring the
item to that room. If a room or area has not been designated (or was
cleared), then this command will designate a new room and area. Normally
an item will not be chosen by this command if the item has been previously
set with SET ITEM, or SET ITEMTYPE. The RESELECT flag is an optional
first flag which, if specified, designates that an item may be chosen if
previously chosen, so long as the RESELECT flag was also used in the previous
SET ITEM or SET ITEMTYPE command.</p>
<p><span style="color: rgb(51,102,102);">SET ITEM</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- serves the same purpose
as the above command of the same name, but the argument is an object specifier.
See Object Specifiers below this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen. </p>
<p><span style="color: rgb(51,102,102);">SET ITEMTYPE</span> <span
style="color: rgb(102,51,102);">(RESELECT) </span><span
style="color: rgb(102,51,102);">([CLASS])</span> - will set the current
item to one with the given class name. The item chosen will be selected from
those in the designated ROOMGROUP (if one is designated), AREA (if one is
designated) or the world. The item must exist somewhere in a room on the
map for this command to work. If a room has been previously designated, then
this command will bring the item to that room. If a room or area has not
been designated (or was cleared), then this command will designate a new
room and area. Normally an item will not be chosen by this command
if the item has been previously set with SET ITEM, or SET ITEMTYPE. The
RESELECT flag is an optional first flag which, if specified, designates
that an item may be chosen if previously chosen, so long as the RESELECT
flag was also used in the previous SET ITEM or SET ITEMTYPE command.
</p>
<p><span style="color: rgb(51,102,102);">LOAD MOBGROUP</span> <span
style="color: rgb(102,51,102);">([#NUMBER]) [MOB NAME] </span>- will instantiate
all (or optionally, the given number) mobs of the given name from the
set of mobs imported using the IMPORT MOBS command above. If the mob name
ends with MASK=..., then a mask similar in functionality to the one described
in the Prop_HaveZapper will apply in addition to the mob name entered before
MASK= string. This selected mobs will be set as the current MOBGROUP. If
a room, roomgroup, or area has been previously designated, then this command
will create each mob in that room or random room in the area. If a room
or area has not been designated (or was cleared), then this command will
designate a random room and area. This command will also designate
the current mob to the last one loaded. </p>
<p><span style="color: rgb(51,102,102);">LOAD MOB</span> <span
style="color: rgb(102,51,102);">[MOB NAME]</span> - will instantiate a mob
of the given name from the list of mobs imported using the IMPORT
MOBS command above. If the name ends with MASK=..., then a mask similar
in functionality to the one described in the Prop_HaveZapper will
apply in addition to the name mask entered. This selected mob will be
set as the current mob. If a room, roomgroup, or area has been previously
designated, then this command will create the mob in that room. If a
room or area has not been designated (or was cleared), then this command
will designate a random room and area. </p>
<p><span style="color: rgb(51,102,102);">LOAD ITEMGROUP</span><span
style="color: rgb(51,102,102);"></span> <span
style="color: rgb(102,51,102);">([#NUMBER])</span> <span
style="color: rgb(102,51,102);">[ITEM NAME] </span>- will instantiate all (or
optionally, the given number) items of the given name from the list
of items imported using the IMPORT ITEMS command above. This items will be
set as the current ITEMGROUP. If a room, roomgroup, or area has been previously
designated, then this command will create the item in that room. If a room
or area has not been designated (or was cleared), then this command will
designate a random room and area. This command will also designate
the current item to the last one loaded.</p>
<p><span style="color: rgb(51,102,102);">LOAD ITEM</span> <span
style="color: rgb(102,51,102);">[ITEM NAME]</span> - will instantiate an
item of the given name from the list of items imported using the
IMPORT ITEMS command above. This item will be set as the current
item. If a room, roomgroup, or area has been previously designated,
then this command will create the item in that room. If a room or
area has not been designated (or was cleared), then this command will
designate a random room and area. </p>
<p><span style="color: rgb(51,102,102);">GIVE ITEM</span> - will give the
currently designated item (designated using the SET ITEM, or LOAD ITEM
command) to the last designated mob or mobs (designated using the SET
MOB, SET MOBGROUP, LOAD MOBGROUP, or LOAD MOB commands). </p>
<p><span style="color: rgb(51,102,102);">GIVE BEHAVIOR</span> <span
style="color: rgb(102,51,102);">[BEHAVIOR ID] ([PARAMETERS]) </span>- The
behavior ID must be a valid behavior class name. The parameters are any
parameters you wish to pass to the behavior. This command will give the
most recently designated mob, item, area, room or mobgroup (designated using
the set or load commands), itemgroup, or roomgroup the above behavior. The
parameters above are optional, and include any text that would be valid
for the behavior id specified. The text may also optionally include
embedded references to other quest objects. See below Object Specifiers
in Parameters below for more information on using this feature.</p>
<p><span style="color: rgb(51,102,102);"> GIVE ABILITY</span><span
style="color: rgb(102,51,102);"> [ABILITY ID] ([PARAMETERS]) </span>- The
ability ID must be a valid ability class name. The parameters are any parameters
you wish to pass to the ability. This command will give the currently designated
mob, or mobgroup (designated using the set or load commands) the above ability. The
parameters above are optional, and include any text that would be valid
for the ability id specified. The text may also optionally include
embedded references to other quest objects. See below Object Specifiers
in Parameters below for more information on using this feature. </p>
<p><span style="color: rgb(51,102,102);">GIVE AFFECT</span> <span
style="color: rgb(102,51,102);">[ABILITY ID] ([PARAMETERS]</span>) - The
ability ID must be a valid ability class name. The parameters are
any parameters you wish to pass to the ability. This command will
give the currently designated mob, item, room, area, or mobgroup (designated
using the set or load commands), itemgroup, or roomgroup the above affect. The
parameters above are optional, and include any text that would be valid
for the ability id specified. The text may also optionally include
embedded references to other quest objects. See below Object Specifiers
in Parameters below for more information on using this feature. </p>
<p><span style="color: rgb(51,102,102);">GIVE FOLLOWER</span> <span
style="color: rgb(102,51,102);">[MOB NAME]</span> - The mob name is a mob
which will be selected from the list of previously designated mobs (designated
using the LOAD MOB, SET MOB, or SET MOBTYPE commands). This mob will be
made into a follower of the mob most recently designated using the SET MOB,
SET MOBTYPE, or LOAD MOB command. This command does not change the current
mob designation, nor does it change the location of either mob.</p>
<p><span style="color: rgb(51,102,102);">TAKE BEHAVIOR</span> <span
style="color: rgb(102,51,102);">[BEHAVIOR ID]</span>- The behavior ID must
be a valid behavior class name. This command will take from the most
recently designated mob, item, area, room or mobgroup (designated using
the set or load commands), itemgroup, or roomgroup the above behavior. </p>
<p> <span style="color: rgb(51,102,102);">TAKE</span><span
style="color: rgb(51,102,102);"> ABILITY</span><span
style="color: rgb(102,51,102);"> [ABILITY ID] </span>- The ability ID must
be a valid ability class name. This command will take from the currently
designated mob, or mobgroup (designated using the set or load commands) the
above ability. </p>
<p> <span style="color: rgb(51,102,102);">TAKE</span><span
style="color: rgb(51,102,102);"> AFFECT</span> <span
style="color: rgb(102,51,102);">[ABILITY ID] </span> - The ability
ID must be a valid ability class name. This command will take from
the currently designated mob, item, room, area, or mobgroup (designated
using the set or load commands), itemgroup, or roomgroup the above affect.
</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">RESET</span><span
style="color: rgb(102,51,102);"></span>- If a ROOM has been designated using
SET ROOM, or by any other previously described method, this command will
cause that room to reset, or re-load from the database. If a ROOM
is not currently set (or has been unset), but a ROOMGROUP or an AREA has
been set, this command will cause all rooms in that set (respectively) to
reload from the database. Doing either can be somewhat time consuming,
and may disrupt any players in the rooms affected, as it will cause items
to vanish from the floor, and make players and mobs unable to move until
the process is completed.</p>
<p><span style="color: rgb(51,102,102);"><SCRIPT></span> - This designates
the beginning of embedded Javascript in your quest script.
The end is designated by a corresponding </SCRIPT> tag on
its own line. See the next section for more details.</p>
<p><span style="color: rgb(51,102,102);">LOAD= <span
style="color: rgb(102,51,102);">([QUEST FILE]) ([ARGUMENT] ... [ARGUMENT])
</span></span>- This command will cause the specified external quest
script file to be loaded and executed as if it were embedded at the
current point in the script. The quest filename is
of the same format mentioned above. When LOAD= is used as a command
inside a script, you can also specify one or more space-delimited arguments
which will be accessible inside the target quest script as Object Specifiers.
The first argument given, whether it is itself an Object Specifier,
or a simple string, will be accessible inside the target quest script as
ARG1, the second as ARG2, and so forth. A special case exists, however,
if one of the arguments evaluates to an Object Specifier which represents
a group of objects (such as MOBGROUP or ITEMGROUP). If that case occurs,
the LOAD= command will execute once for every object inside the group! See
the discussion of Object Specifiers and Object Spcifiers in Parameters for
more information.</p>
<p><span style="color: rgb(51,102,102);"><OPTION> <span
style="color: rgb(102,51,102);">([QUEST SCRIPT COMMANDS]) <span
style="color: rgb(51,102,102);"></OPTION></span></span></span><span
style="color: rgb(51,102,102);"><span style="color: rgb(102,51,102);"> </span></span>-
Putting quest script commands inside of <OPTION> tags means that, for
every execution of the quest script, only ONE of the <OPTION>
tags will be have their script commands executed. The one chosen will
be selected at random. If only one <OPTION> tag exists, it will
be chosen every time, of course. <span style="color: rgb(102,51,102);"></span></p>
<p><span style="color: rgb(102,0,0); font-weight: bold;">* Note About #</span><span
style="font-weight: bold;">. </span> In a quest script, anywhere the
# sign is used above (such as [#TICKS] or [#PLAYERS], you may enter a normal
old every day number (34) or you may enter a valid arithmetic expression
using real or integer numbers and any of the following operators: + - * \
() ?</p>
<p><span style="color: rgb(102,0,0); font-weight: bold;">* Object Specifiers</span><span
style="font-weight: bold;">. </span> Many of the SET ... commands,
such as SET MOBGROUP, SET MOB, SET ITEMGROUP, SET ROOM, etc, have forms which
allow you to designate their value using an [OBJECT] string. An [OBJECT]
string is one of the following basic quest-script values: "LOADEDMOBS", "LOADEDITEMS",
"AREA", "ROOM", "MOBGROUP", "ITEMGROUP", "ROOMGROUP", "ITEM", "ENVOBJ", "STUFF",
"MOB", or one of the following mystery quest-script values: "FACTION",
"FACTIONGROUP", "AGENT", "AGENTGROUP", "ACTION", "ACTIONGROUP", "TARGET",
"TARGETGROUP", "MOTIVE", "MOTIVEGROUP", "WHEREHAPPENED", "WHEREHAPPENEDGROUP",
"WHEREAT", "WHEREATGROUP", "WHENHAPPENED", "WHENHAPPENEDGROUP", "WHENAT",
"WHENATGROUP", "TOOL", "TOOLGROUP". Using the SET command in this
way allows you to either COPY an objects value, or re-designate it for the
purposes of one of the GIVE ... commands. If the quest script was
executed from inside of another using the LOAD= script command, and arguments
were specified from the above objects, you may also have access to argument
object specifiers, such as ARG1, ARG2, ... ARGN. There will be one
such object specifier available for each argument passed to the script.
Please note that some object specifiers return single objects (such
as MOB, ITEM, ROOM) and some return collections of objects (such as ROOMGROUP,
MOBGROUP, ITEMGROUP). Object specifiers can also be combined using
+ and - characters. For instance, MOBGROUP-MOB would return the group
of mobs in the MOBGROUP minus the specified MOB while the specifier MOB+ITEM
would refer to an object group containing both the specified MOB and the
specified ITEM.</p>
<p><span style="color: rgb(102,0,0); font-weight: bold;">* Object Specifiers
in Parameters</span><span style="font-weight: bold;">. </span>When
specifing parameters for the GIVE BEHAVIOR, GIVE ABILITY, or GIVE AFFECT
command, you may embed the names of one or more of the Object Specifiers
by prefixing the Object Specifier code string with a $ character, and concluding
it with a space or other non-alphanumeric character. For instance,
the command: "GIVE BEHAVIOR Scriptable GREET_PROG 100\; say I love
$MOB!!!\;~\;" would embed the name string for the MOB object specifier inside
the in-line script. In addition to this capability, you may also
put a special character after the $ and before the object specifier to manipulate
how the name of the object is generated. Special characters are: '_'
(to make the name in uppercase), '&' to remove any prefixed english
article words from the name, or '|' to replace all spaces in the name with
| characters (which is very useful for QuestChat parameters).</p>
<p><font style="background-color: aquamarine;" color="#4169e1" size="4"><strong>Mystery
Objects in Quest scripts:</strong></font></p>
<p>In addition to the normal quest objects mentioned above, such as MOB,
ITEM, ROOM and so forth, there are also extranous objects and groups intended
for use when building logic problem mysteries. The commands for setting
these are as follows:</p>
<p><span style="color: rgb(51,102,102);">SET AGENT</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the AGENT variable
to the [OBJECT]. Will also set the MOB object. See Object Specifiers
above this command listing. If the object resolves to a group
of objects, a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET AGENTGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the AGENTGROUP
variable to the [OBJECT]. Will also set the MOBGROUP object to the
same, as well as designate one random mob from the group as the AGENT and
the MOB. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET AGENTGROUP</span> <span
style="color: rgb(102,51,102);">[#NUMBER] </span>- Sets the AGENTGROUP
variable to the currently set MOBGROUP, selecting at most NUMBER mobs randomly
from that list. Will also set the MOBGROUP object to the same, as
well as designate one random mob from the group as the AGENT and the MOB.
See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHEREHAPPENED</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHEREHAPPENED
variable to the [OBJECT]. Will also set the ROOM object. See
Object Specifiers above this command listing. If the object resolves
to a group of objects, a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET WHEREHAPPENEDGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHEREHAPPENEDGROUP
variable to the [OBJECT]. Will also set the ROOMGROUP object to the
same, as well as designate one random room from the group as the WHEREHAPPENED
and the ROOM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHEREHAPPENEDGROUP</span> <span
style="color: rgb(102,51,102);">[#NUMBER] </span>- Sets the WHEREHAPPENEDGROUP
variable to the currently set ROOMGROUP, selecting at most NUMBER rooms randomly
from that list. Will also set the ROOMGROUP object to the same, as
well as designate one random room from the group as the WHEREHAPPENED
and the ROOM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHEREAT</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHEREAT
variable to the [OBJECT]. Will also set the ROOM object. See
Object Specifiers above this command listing. If the object resolves
to a group of objects, a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">WHEREATGROUP</span> <span
style="color: rgb(102,51,102);">[</span><span
style="color: rgb(102,51,102);">OBJECT] </span>- Sets the WHEREATGROUP
variable to the [OBJECT]. Will also set the ROOMGROUP object to the
same, as well as designate one random room from the group as the WHEREAT
and the ROOM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">WHEREATGROUP</span> <span
style="color: rgb(102,51,102);">[</span><span
style="color: rgb(102,51,102);">#NUMBER] </span>- Sets the WHEREATGROUP
variable to the currently set ROOMGROUP, selecting at most NUMBER rooms randomly
from that list. Will also set the ROOMGROUP object to the same, as
well as designate one random room from the group as the WHEREAT and
the ROOM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHENHAPPENED</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHENHAPPENED
variable to the timeclock [OBJECT]. See Object Specifiers above this
command listing. If the object resolves to a group of objects,
a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET WHENHAPPENED</span> <span
style="color: rgb(102,51,102);">[#HOURS-DIFFERENCE] </span>- Sets the
WHENHAPPENED variable to the current time plus or minus the hours difference
specified. See Object Specifiers above this command listing.
If the object resolves to a group of objects, a random one from the
group will be chosen.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET WHENHAPPENEDGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHENHAPPENEDGROUP
variable to the [OBJECT]. Will also designate one random time
from the group as the WHENHAPPENED. See Object Specifiers above
this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHENHAPPENEDGROUP</span> <span
style="color: rgb(102,51,102);">[#</span><span
style="color: rgb(102,51,102);">HOURS-DIFFERENCE</span><span
style="color: rgb(102,51,102);">] ... </span><span
style="color: rgb(102,51,102);">[#</span><span
style="color: rgb(102,51,102);">HOURS-DIFFERENCE</span><span
style="color: rgb(102,51,102);">] </span>- Sets the WHENHAPPENEDGROUP
list to the current time plus or minus the list of hours-differences given.
Will also designate one random time from the group as the WHENHAPPENED.
See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHENAT</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHENHAPPENED
variable to the timeclock [OBJECT]. See Object Specifiers above this
command listing. If the object resolves to a group of objects,
a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET WHENAT</span> <span
style="color: rgb(102,51,102);">[#HOURS-DIFFERENCE] </span>- Sets the
WHENAT variable to the current time plus or minus the hours difference specified.
See Object Specifiers above this command listing. If the
object resolves to a group of objects, a random one from the group will
be chosen.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET WHENATGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the WHENATGROUP
variable to the [OBJECT]. Will also designate one random time
from the group as the WHENAT. See Object Specifiers above this
command listing.</p>
<p><span style="color: rgb(51,102,102);">SET WHENATGROUP</span> <span
style="color: rgb(102,51,102);">[#</span><span
style="color: rgb(102,51,102);">HOURS-DIFFERENCE</span><span
style="color: rgb(102,51,102);">] ... </span><span
style="color: rgb(102,51,102);">[#</span><span
style="color: rgb(102,51,102);">HOURS-DIFFERENCE</span><span
style="color: rgb(102,51,102);">] </span>- Sets the WHENATGROUP
list to the current time plus or minus the list of hours-differences given.
Will also designate one random time from the group as the WHENAT.
See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET FACTION</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the FACTION
variable to the faction string [OBJECT]. See Object Specifiers above
this command listing. If the object resolves to a group of objects,
a random one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET FACTION</span> <span
style="color: rgb(102,51,102);">[FACTION NAME] </span>- Sets the FACTION
variable to one of the given name or ANY to choose a random one.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET FACTIONGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the FACTIONGROUP
variable to the [OBJECT]. Will also designate one random faction from
the group as the FACTION. See Object Specifiers above this command
listing.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET FACTIONGROUP</span> <span
style="color: rgb(102,51,102);">[#NUMBER] </span>- Sets the FACTIONGROUP
variable to NUMBER random factions, or ALL to set it to all of them. Will
also designate one random faction from the group as the FACTION. See
Object Specifiers above this command listing.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET FACTIONGROUP</span> <span
style="color: rgb(102,51,102);">[FACTION NAME] ... [FACTION NAME] </span>-
Sets the FACTIONGROUP variable to the set of factions designated by the faction
names. Will also designate one random faction from the group as the
FACTION. The faction names are space delimited, and names grouped with
double-quotes. </p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET TARGET </span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the TARGET variable
to the [OBJECT]. Will also set the MOB or ITEM object depending on
what gets designated. See Object Specifiers above this command listing.
If the object resolves to a group of objects, a random one from the
group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET TARGETGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the TARGETGROUP
variable to the [OBJECT]. Will also set the MOBGROUP or ITEMGROUP
object to the same (depending on what type of group is designated), as well
as designate one random object from the group as the TARGET, and either
the MOB or ITEM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET TARGETGROUP</span> <span
style="color: rgb(102,51,102);">[#NUMBER] </span>- Sets the TARGETGROUP
variable to the currently set MOBGROUP (if one is currently set) or ITEMGROUP
if not. It will select at most NUMBER objects randomly from that list.
Will also re-set the MOBGROUP or ITEMGROUP object to the same, as
well as designate one random mob or item from the group as the TARGET and
either the MOB or ITEM. See Object Specifiers above this command listing.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET TOOL </span><span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the TOOL variable
to the [OBJECT]. Will also set the MOB or ITEM object depending on
what gets designated. See Object Specifiers above this command listing.
If the object resolves to a group of objects, a random one from the
group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET TOOLGROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the TOOLGROUP
variable to the [OBJECT]. Will also set the MOBGROUP or ITEMGROUP
object to the same (depending on what type of group is designated), as well
as designate one random object from the group as the TOOL, and either the
MOB or ITEM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET TOOLGROUP</span> <span
style="color: rgb(102,51,102);">[#NUMBER] </span>- Sets the TOOLGROUP
variable to the currently set MOBGROUP (if one is currently set) or ITEMGROUP
if not. It will select at most NUMBER objects randomly from that list.
Will also re-set the MOBGROUP or ITEMGROUP object to the same, as
well as designate one random mob or item from the group as the TOOL and
either the MOB or ITEM. See Object Specifiers above this command listing.</p>
<p><span style="color: rgb(51,102,102);">SET MOTIVE</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the MOTIVE variable
to the string [OBJECT]. See Object Specifiers above this command
listing. If the object resolves to a group of objects, a random
one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">MOTIVE</span> <span
style="color: rgb(102,51,102);">[STRING] </span>- Sets the MOTIVE variable
to the string.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">MOTIVE</span><span
style="color: rgb(51,102,102);">GROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the MOTIVEGROUP
variable to the [OBJECT]. Will also designate one random string from
the group as the MOTIVE. See Object Specifiers above this command listing.</p>
<span style="color: rgb(51,102,102);"></span><span
style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">MOTIVEGROUP</span> <span
style="color: rgb(102,51,102);">[STRING] .. [STRING] </span>- Sets the MOTIVEGROUP
to the set of strings specified. Will also designate one random string
from the group as the MOTIVE. The strings are space delimited, and
words grouped with double-quotes.</p>
<span style="color: rgb(51,102,102);"></span><span
style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET ACTION</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the ACTION variable
to the string [OBJECT]. See Object Specifiers above this command
listing. If the object resolves to a group of objects, a random
one from the group will be chosen.</p>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">ACTION</span> <span
style="color: rgb(102,51,102);">[STRING] </span>- Sets the ACTION variable
to the string.</p>
<span style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">ACTION</span><span
style="color: rgb(51,102,102);">GROUP</span> <span
style="color: rgb(102,51,102);">[OBJECT] </span>- Sets the ACTIONGROUP
variable to the [OBJECT]. Will also designate one random string from
the group as the ACTION. See Object Specifiers above this command listing.</p>
<span style="color: rgb(51,102,102);"></span><span
style="color: rgb(51,102,102);"></span>
<p><span style="color: rgb(51,102,102);">SET </span><span
style="color: rgb(51,102,102);">ACTIONGROUP</span> <span
style="color: rgb(102,51,102);">[STRING] .. [STRING] </span>- Sets the ACTIONGROUP
to the set of strings specified. Will also designate one random string
from the group as the ACTION. The strings are space delimited, and
words grouped with double-quotes.</p>
<span style="color: rgb(51,102,102);"></span><span
style="color: rgb(51,102,102);"></span>
<p><font style="background-color: aquamarine;" color="#4169e1" size="4"><strong>JavaScripting
in Quest scripts:</strong></font></p>
<p>The CoffeeMud quest manager engine will allow you embed Javascript into
your quest scripts for the purpose of assisting in setting up your
quests. The Javascript must be located between the <SCRIPT>
and </SCRIPT> quest script commands to be recognized.
</p>
<p class="MsoNormal"><span style="font-size: 14pt; color: blue;"><font
color="#000000"><font size="3">Javascript is a wholly different language
than the standard Scriptable/MOBPROG language OR the quest
script language described in this document. You should
read the JavaScripting section of the CoffeeMud </font><a
href="Programming.html"><font size="3">Programming Guide</font></a><font
size="3"> for more information, as well as the following web
sites which discuss the usage and syntax of the Javascript language
itself: </font><a href="http://www.mozilla.org/js/"><font size="3">http://www.mozilla.org/js/</font></a><font
size="3"> and </font><a href="http://www.mozilla.org/rhino/"><font
size="3">http://www.mozilla.org/rhino/</font></a><font size="3"> .</font></font></span></p>
<p class="MsoNormal"><span style="font-size: 14pt; color: blue;"><font
color="#000000" size="3"><span style="font-size: 14pt; color: blue;"><font
color="#000000" size="3">Aside from the above information about JavaScripting
in CoffeeMud, there are still a few more details to learn about
JavaScripting in your quest scripts. Although</font></span><span
style="font-size: 14pt; color: blue;"><font color="#000000" size="3"> Javascript
does not require semicolon line delimeters and it will not likely
cause problems, you should be aware that the quest manager engine
will strip out all semicolons as part of its command parsing process.
For this reason, if you absolutely must keep a semicolon ANYWHERE
in your javascript, whether as part of a displayable string, or a
line delimeter, it must first be escaped: \;</font></span></font></span></p>
<p>The quest manager engine will also make a couple of useful methods available
to your Javascript for assisting in setting up your quests.
One is the <font face="Courier New"><font size="2">Quest quest() </font></font><font
face="Times New Roman">method, which, as you can see, returns a Quest object
which represents to the current quest script. The Quest object
returned has numerous useful methods on them for doing things like
determining which mobs and items were selected by the SET commands
as described above (<font face="Courier New" size="2">isQuestObject,
getQuestObject, getQuestMob, getQuestItem</font>). There are
also methods for properly adding other such mobs and items to
your quest (<font face="Courier New" size="2">runtimeRegisterObject</font>),
or for adding abilities, behaviors, or effects to existing objects
( <font face="Courier New" size="2">runtimeRegisterAbility, runtimeRegisterEffect,
runtimeRegisterBehavior</font>). You should check out the
Quest interface for more information on these methods; they are located
in the file Quest.java, which is in the com/planet_ink/coffee_mud/interfaces
package.</font></p>
<p>Another method provided to Javascript by the quest manager is the <font
face="Courier New" size="2">QuestState setupState() <font
face="Times New Roman" size="3">method. The QuestState object
made available by this method contains information on the current
state of your quest Script. There are several
useful properties of the object, such as <font
face="Courier New" size="2">area, room, mob, mobGroup, item,</font>
and <font face="Courier New" size="2">envObject</font> which will refer
to the last such objects SET by your quest script before Javascript
was executed. The Vectors </font></font><font
size="2"><font size="3"><span style="font-family: monospace;">loadedMobs</span></font></font><font
face="Courier New" size="2"><font face="Times New Roman" size="3"> and </font></font><font
size="2"><font size="3"><span style="font-family: monospace;">loadedItems</span></font></font><font
face="Courier New" size="2"><font face="Times New Roman" size="3"> are available
with any items or mobs gained from the IMPORT command, regardless of whether
they were LOADed. There is also the </font></font><font size="2"><font
size="3"><span style="font-family: monospace;">mysteryData</span></font></font><font
face="Courier New" size="2"><font face="Times New Roman" size="3"> object
with all the objects and Vectors SET for building logic problem mysteries.</font></font></p>
<p><font style="background-color: aquamarine;" color="#4169e1" size="4"><strong>Final
Quest Notes:</strong></font></p>
<p>This stuff may seem complicated, but just make sure you carefully examine
the sample quests found in the CoffeeMud resources directory! Also,
remember that quest script errors are always sent out to your mud.log,
so check their often when starting up a new quest!</p>
<p class="MsoNormal"><a name="appe"><strong><font color="#008000"
size="5">Appendix E: Socials</font></strong></a></p>
<p>Socials are those miscellaneous and happy little emoting blurbs that help
make muds a more fun and realistic place for players to interact. Without
them, players couldn't smile, roll their eyes, or flip anyone off without
considerable typing. The command line includes a social creator and
editor:</p>
<p><strong><font style="background-color: moccasin;">CREATE SOCIAL TWIGGLE</font></strong><br>
<br>
This starts the creation process for a social called
TWIGGLE. There are actually four different kinds of TWIGGLE
we will make: TWIGGLE (no parameters), TWIGGLE SELF, TWIGGLE ALL,
and TWIGGLE (to a target). This is type 1 of 4.<br>
<br>
<em>You wave your arms...<br>
Social name 'TWIGGLE' Enter new.<br>
: <br>
</em><br>
This is here in case you want to change the social
name before you create it. Doubtful, so just hit ENTER and skip
it.<br>
<br>
<em>(No change)<br>
Target=NONE<br>
Change T)arget, S)elf, A)ll, or N)one: </em><br>
<br>
This is where you choose the social type. For type1
socials, this would be None.<br>
<br>
<em>(No change)<br>
You see 'null'. Enter new.<br>
: <br>
</em><br>
This is what you as a player would see when you
perform the social.<br>
<br>
<strong>You wiggle your toes.</strong><br>
<br>
<em>Your action type=MOVEMENT<br>
Change W)ords, M)ovement (small), S)ound, L)arge
Movement <br>
</em><br>
This is the requirement of the social. Small movement
just needs hands, fingers, toes, lips, and other small body movements,
while large movements require legs, and often moving the entire
body. I tend to not use the Words one, and I leave sounds for, well,
yelling and such. This particular social involves toes, thus it's
a M)ovement. Type "<strong>M</strong>" for that.</p>
<p><em>Others see 'null'. Enter new.<br>
: <br>
</em><br>
This is what the people in the room see when you
perform a social.<br>
<br>
<strong><S-NAME> wiggles <S-HIS-HER>
toes.</strong><br>
<br>
<S-NAME> means Source Name. Character performing
the social is the source. I'll have a list of usable tags at the
end of this tutorial for you.<br>
<br>
<strong>Others Effect type=HANDS<br>
Change W)ords, M)ovement (w/noise), S)ound, V)isual,
H)ands: <br>
</strong><br>
This is what others in the room need to be able
to know you're performing a social. This social involves toe wiggling,
so I would recommend Visual. If you're curious about Hands, that
would be left for handshakes, highfives, etc. </p>
<p>And that concludes the creation of our TWIGGLE social, type 1.<br>
<br>
<strong><font
style="background-color: moccasin;">CREATE SOCIAL TWIGGLE SELF</font></strong><br>
<br>
Ahh. Part 2, the SELF portion.<br>
<br>
<em>You wave your arms...<br>
Social name 'TWIGGLE' Enter new.<br>
: <br>
</em><br>
Like the above, you don't need to change the name.<br>
<br>
<em>(No change)<br>
Target=NONE<br>
Change T)arget, S)elf, A)ll, or N)one: <br>
</em><br>
Because this portion is the SELF portion, choose
"<strong>S</strong>". <br>
<br>
<em>You see 'null'. Enter new.<br>
: <br>
</em><br>
This is what you see when you perform the social
TWIGGLE SELF.<br>
<br>
<strong>You glaze over while you try to wiggle your
toes at yourself.</strong><br>
<br>
<em>Your action type=MOVEMENT<br>
Change W)ords, M)ovement (small), S)ound, L)arge
Movement<br>
</em><br>
You need toes to wiggle them, right? <strong>M</strong>)ovement
for that. <br>
<br>
<em>Others see 'null'. Enter new.<br>
:<br>
</em><br>
What the others in the room see when you perform
the social.<br>
<br>
<strong><S-NAME> wiggles <S-HIS-HER>
toes at <S-HIM-HERSELF>. Very odd.<br>
</strong><br>
<em>Others Effect type=HANDS<br>
Change W)ords, M)ovement (w/noise), S)ound, V)isual,
H)ands:<br>
</em><br>
They need to see it happen, right? I would guess
it's a <strong>V</strong>)isual requirement.</p>
<p>And that concludes the creation of our type 2 TWIGGLE social.</p>
<p><strong><font style="background-color: moccasin;">CREATE SOCIAL TWIGGLE
ALL</font><br>
</strong><br>
Yay! Type 3! The ALL is the Target Name.<br>
<br>
<em>You wave your arms...<br>
Social name 'TWIGGLE' Enter new.<br>
: <br>
</em><br>
I doubt you would still need to change the name.
You have type one and two. Why make 3 different?<br>
<br>
<em>(No change)<br>
Target=NONE<br>
Change T)arget, S)elf, A)ll, or N)one:<br>
</em><br>
It's the ALL portion of social creation, so choose
"<strong>A</strong>".<br>
<br>
<em>You see 'null'. Enter new.<br>
:<br>
</em><br>
What you would see when you perform TWIGGLE [Target]
(ex: TWIGGLE VIRAX).<br>
<br>
<strong>You wiggle your toes at everyone. How wierd.</strong><br>
<br>
The display would replace the tag with the appropriate
name, and in this example it would be Virax.<br>
<br>
<em>Your action type=MOVEMENT<br>
Change W)ords, M)ovement (small), S)ound, L)arge
Movement<br>
</em><br>
We have toes we'll need to wiggle. <strong>M</strong>)ovement.<br>
<br>
<em>Others see 'null'. Enter new.<br>
:<br>
</em><br>
What those twiggled at people witness.<br>
<br>
<strong><S-NAME> wiggles <S-HIS-HER>
toes at everyone. Very strange.</strong><br>
<br>
<em>Others Effect type=HANDS<br>
Change W)ords, M)ovement (w/noise), S)ound, V)isual,
H)ands:<br>
</em><br>
I'd say another thing they would have to see. Don't
you? <strong>V</strong>)isual.<br>
<br>
<strong><font
style="background-color: moccasin;">CREATE SOCIAL TWIGGLE <T-NAME></font><br>
<br>
</strong>Yay! Type 4! The TARGET! <T-NAME>
is the Target Name.<br>
<br>
<em>You wave your arms...<br>
Social name 'TWIGGLE' Enter new.<br>
: <br>
</em><br>
I doubt you would still need to change the name.
You have type one, two, and three. Why make 4 different?<br>
<br>
<em>(No change)<br>
Target=NONE<br>
Change T)arget, S)elf, A)ll, or N)one:<br>
</em><br>
It's the TARGET portion of social creation, so choose
"<strong>T</strong>".<br>
<br>
<em>You see 'null'. Enter new.<br>
:<br>
</em><br>
What you would see when you perform TWIGGLE [Target]
(ex: TWIGGLE VIRAX).<br>
<br>
<strong>You wiggle your toes at <T-NAME>. How
cute.</strong><br>
<br>
The display would replace the tag with the appropriate
name, and in this example it would be Virax.<br>
<br>
<em>Your action type=MOVEMENT<br>
Change W)ords, M)ovement (small), S)ound, L)arge
Movement<br>
</em><br>
We have toes we'll need to wiggle. <strong>M</strong>)ovement.<br>
<br>
<em>Others see 'null'. Enter new.<br>
:<br>
</em><br>
What those bystanders witness.<br>
<br>
<strong><S-NAME> wiggles <S-HIS-HER>
toes at <T-NAME>. Very strange.</strong><br>
<br>
<em>Others Effect type=HANDS<br>
Change W)ords, M)ovement (w/noise), S)ound, V)isual,
H)ands:<br>
</em><br>
I'd say another thing they would have to see. Don't
you? <strong>V</strong>)isual.<br>
<br>
<em>Target sees 'null'. Enter new.<br>
:<br>
</em><br>
If you were the unfortunate victim, this is what
you would see.<br>
<br>
<strong><S-NAME> wiggles <S-HIS-HER>
toes at you.</strong><br>
<br>
<em>Target Effect type=HEARING NOISE<br>
Change W)ords, M)ovement (w/noise), S)ound, V)isual,
H)ands:<br>
</em><br>
You see them wiggling their toes, so this would
also be <strong>V</strong>)isual.<br>
<br>
<em>You see when no target 'null'. Enter new.<br>
:<br>
</em><br>
This is what you would see if the target you want
to use the social against isn't there.<br>
<br>
<strong>Sorry. They aren't here for that lovely toe
wiggle.</strong><br>
<br>
This concludes the social creation process. Enjoy
creating your own socials, folks! To modify an existing social,
purely use MODIFY SOCIAL [NAME] (i.e. MODIFY SOCIAL BONK, MODIFY SOCIAL
HIGHFIVE <T-NAME>) or even MODIFY SOCIAL PAT SELF) What this
does is it goes through the command list like you are creating that
particular social, but with the information that is already stored on
it. What you can do is just hit ENTER until you get to the part of the
social you want to change and change it accordingly.</p>
<p><font style="background-color: moccasin;">======= AND NOW FOR THE LIST
OF TAGS =======</font> <br>
<S-HIS-HER> Outputs 'Your' if Observer=Source,
otherwise 'His'/'Her'. <br>
<S-HIM-HER> Outputs 'You' if Observer=Source,
otherwise 'Him'/'Her'. <br>
<S-NAME> Outputs 'You' if Observer=Source,
otherwise the Name. <br>
<S-NAMESELF> Outputs 'Yourself' if Observer=Source,
otherwise the Name <br>
<S-HE-SHE> Outputs 'You' if Observer=Source,
otherwise 'He'/'She' <br>
<S-SIRMADAM> Outputs 'Sir'/'Madam' <br>
<S-IS-ARE> Outputs 'Are' if Observer=Source,
otherwise 'Is'. <br>
<S-HAS-HAVE> Outputs 'Have' if Observer=Source,
otherwise 'Has'. <br>
<S-YOUPOSS> Outputs 'Your' if Observer=Source,
otherwise the Name`s <br>
<S-HIM-HERSELF> Outputs 'Yourself' if Observer=Source,
otherwise the 'Himself'/'Herself' <br>
<S-HIS-HERSELF> Outputs 'Yourself' if Observer=Source,
otherwise the 'Hisself'/'Herself' <br>
<T-HIS-HER> Outputs 'You' if Observer=Target,
otherwise 'His'/'Her'. <br>
<T-HIM-HER> Outputs 'You' if Observer=Target,
otherwise 'Him'/'Her'. <br>
<T-NAME> Outputs 'You' if Observer=Target,
otherwise the Name. <br>
<T-NAMESELF> Outputs 'Yourself' if Observer=Target,
otherwise the Name <br>
<T-HE-SHE> Outputs 'You' if Observer=Target,
otherwise 'He'/'She' <br>
<T-SIRMADAM> Outputs 'Sir'/'Madam' <br>
<T-IS-ARE> Outputs 'Are' if Observer=Target,
otherwise 'Is'. <br>
<T-HAS-HAVE> Outputs 'Have' if Observer=Target,
otherwise 'Has'. <br>
<T-YOUPOSS> Outputs 'Your' if Observer=Target,
otherwise the Name with an '`s' <br>
<T-HIM-HERSELF> Outputs 'Yourself' if Observer=Source,
otherwise the 'Himself'/'Herself' <br>
<T-HIS-HERSELF> Outputs 'Yourself' if Observer=Source,
otherwise the 'Hisself'/'Herself'</p>
<p class="MsoNormal"><a name="appf"><strong><font color="#008000"
size="5">Appendix F: Polls</font></strong></a></p>
<p>Polls can be an entertaining and sometimes amusing way to measure
the thoughts of players. CoffeeMud supports single-selection
voting among options which you can designate. Polls are created
with the CREATE command, reviewed with the LIST command, modified with
the MODIFY command, removed with the DELETE command, and participated
during the login process and/or via the use of the POLL command.</p>
<p><strong>CREATE POLL</strong></p>
<p>This command will create a new blank poll. When a poll is created
or modified, you are presented with a list of properties to fill
in. Pressing enter will leave the property unchanged.
The properties include:</p>
<p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the internal name of the poll. This
is just to tell them apart when LISTing your polls.</td>
</tr>
<tr>
<td><em>Introduction</em></td>
<td>the text that is displayed to the user when
they participate in the poll.</td>
</tr>
<tr>
<td><em>Results Header</em></td>
<td>a short line of text to designate the results
for the poll.</td>
</tr>
<tr>
<td><em>Qual Mask</em></td>
<td>a mask to limit the participants in your
poll. This string is similar in functionality to the one
described in the Prop_HaveZapper. Enter HELP Prop_HaveZapper
for information on masking your poll participants.</td>
</tr>
<tr>
<td><em>Poll Active</em></td>
<td>whether the poll is presently available
for participation, or is closed to participation. This
flag is automatically set to false if an expiration date (below)
is used and passes. Normally a poll must be made inactive
before results can be viewed.</td>
</tr>
<tr>
<td><em>Preview Results</em></td>
<td>whether the participant can see the results
immediately after voting, or must wait until the poll is made
inactive.</td>
</tr>
<tr>
<td><em>Allow Abstentions</em></td>
<td>whether participants can abstain from selecting
one of your options by choosing not to vote.</td>
</tr>
<tr>
<td><em>Use IP Addresses</em></td>
<td>whether a single ip address can designate
a vote. Helps prevent multi-playing users from getting
multiple votes.</td>
</tr>
<tr>
<td><em>Hide Results</em></td>
<td>whether anyone other than Archons or those
with the POLLS security flag can ever view the results of this poll.</td>
</tr>
<tr>
<td><em>POLL CMD Only</em></td>
<td>whereas normally one can participate in
a poll either at login, or via the POLL command, this flag will make
it so that the POLL command must be used.</td>
</tr>
<tr>
<td><em>Expiration Date</em></td>
<td>optional field designating the date/time
when the poll will be automatically set to inactive. If this
field is empty or NA, the poll must be made manually inactive using
the MODIFY POLL command.</td>
</tr>
<tr>
<td><em>New Vote Options</em></td>
<td>the list of options the participants may
choose between.</td>
</tr>
</tbody>
</table>
</p>
<p><a name="appg"><strong><font color="#008000" size="5">Appendix G: The
CoffeeMud File System (CMFS)</font></strong></a> </p>
<p>This is a complicated topic, but one that all builders and Archons should
understand. Sooner or later, every CoffeeMud adminstrator
is going to want to modify some of the local files in the CoffeeMud
folder. This may include the quests, or skill lists, or hopefully
the intro.txt file located in resources/text directory! Builders
will also want to add files, including MOBPROG script files that run
in the Scriptable behavior, item and mob CMARE files for the RandomMobs
behavior or for other scripts, Quest scripts, and other things.
</p>
<p>Pretty soon, your directories are packed with stuff customized to your
mud. This can create issues for back-ups, meaning that not
only do you have to back-up your database (or your data directory)
but you have to backup all those files that have been modified and
added, since they play as integral a role in your world as the rooms
and areas do. All those files can also create upgrade issues, as
modified files can get accidently overwritten when a new version of CoffeeMud
is overlayed in your installation directory. Lastly, this can create
security issues, as the builders might accidently delete the wrong file,
or make a mistake, creating problems for the admins as they try to recover.</p>
<p>To help solve these problems, the CoffeeMud engine uses a kind of mirrored
file system called <strong>CMFS</strong> to store some files in
your local directory (your hard drive), some files in your database,
and some files in both at the same time. When the exact same
file in the exact same directory is found in BOTH the local file system
and in the database, the one in the database is always preferred.
That way, should the file in the database (called a <strong>VFS</strong> file)
become corrupted or deleted, the one in the local file system will
remain safe. Furthermore, since files in the database (VFS
files) are always accessed before the same file in the local file system,
you can overwrite the files in the local file system with upgrades without
worrying about losing your changed files. And lastly, CoffeeMud
provides a security system that allows you to grant access to users on a
folder level, and also to specify whether the user can access the local
file system, or only the database VFS files and folders.</p>
<p>The CMFS includes everything in your CoffeeMud installation directory/folder,
and all the other folders therein. In fact, CoffeeMud is
utterly unable to access any files OUTSIDE of your CoffeeMud installation
folder, giving the server administrator an added level of comfort.
The CMFS is also able to access the VFS files in the CoffeeMud database,
and to give them preference over identically named files in your local
file system.</p>
<p>CMFS employs the UN*X standard for separating directorys and folders.
This means that the forward slash / character is used when separating
one folder from another when naming a file. The CMFS path
<strong>/resources/text/intro.txt</strong> would, for example, refer
to the file called intro.txt inside the text directory, which is inside
the resources directory, which is in your CoffeeMud installation folder.</p>
<p>If that file had been previously copied into the same directory in the
VFS database, then the CMFS would prefer that version over the
one that remains in the local file system. You may modify the
file <strong>resources/text/intro.txt, </strong>update it, and save
it without needing to remember that you are really changing a file
in the database. CoffeeMud will always remember to prefer to
the one in the VFS to the one on your local hard drive, if it has been
copied or saved there. </p>
<p>If for some reason you absolutely need to ensure that ONLY the local
file system version of a file or ONLY the VFS version of a file
is referenced by CoffeeMud, you may do so by prepending a special
string to your file paths. The string is double-colon :: to
force access of a VFS file, and double-forward-slash // to force
access of a local file system file. For instance, if the Scriptable
prog resources/progs/myprog.script is located in both your local
and VFS file systems, then you can force Scriptable to use the VFS
version by using <strong>::resources/progs/myprog.script
</strong>as your path name. If you needed to force Scriptable
to load the local file system version of the file <strong>//resources/progs/myprog.script
</strong>would do the trick. Again, <strong>resources/progs/myprog.script
</strong>alone, without any special prepended file, will prefer
the VFS file, but will use the local file if a VFS file is unavailable.
This is the preferred behavior, so your Scriptable filenames should
employ the normal path naming standard except under very extraordinary
circumstances.</p>
<p>Files can be copied into the VFS from the local file system using the Archon
SHELL command. If you were to go into the coffeemud resources folder
using this command:</p>
<p><strong><font face="Courier New">shell cd /resources</font></strong></p>
<p>if you now view the directory</p>
<p><strong><font face="Courier New">shell dir</font></strong></p>
<p>you'll see all the files in your local filesystem in the resources folder
in your coffeemud installation directory. Now, you may copy
all of the files in this directory into the *same* directory in the
VFS database by entering:</p>
<p><strong><font face="Courier New">shell copy * ::/resources</font></strong></p>
<p>the copy command here is followed by a wild-card character, the asterisk,
to designate ALL files in the resources directory. The next
parameter is the destination folder. In this case, we specify
our destination as ::/resources, which would be the same directory,
but in the VFS system. Notice that we did not have to create
a VFS folder called /resources before we did this. The VFS always
has a mirror copy of all the local file system folders. However,
it requires you to use the SHELL COPY command to create a mirror of
the files themselves. Now, look at the directory again:</p>
<p><strong><font face="Courier New">shell dir /resources</font></strong></p>
<p>We displayed the directory this time using an absolute path name, just
to show you the syntax. You are still looking at the same
directory you saw when you entered <strong><font
face="Courier New">shell dir</font></strong>. In fact, you can
enter that command again to prove it. You'll see that all of
the files have little "+" marks next to them. This means that
the files exist both in your local file system *AND* in the VFS.
Now suppose we did something silly, like delete our local file system
version of resources/socials.txt. This could be done with the following
command:</p>
<p><strong><font face="Courier New">shell delete //resources/socials.txt</font></strong></p>
<p>Notice that we used the double-slash // to designate that we want to delete
the LOCAL version. Had we not put those two slashes in front,
it would have preferred the VFS copy of socials.txt and deleted that
one instead. Now, look at the directory again:</p>
<p><strong><font face="Courier New">shell dir *</font></strong></p>
<p>This time we displayed the directory using an * wildcard, just to demonstrate
that we can use mask characters when displaying directories.
The command is doing the same thing the previous two <strong><font
face="Courier New">shell dir</font></strong> commands did, just in a different
way. Now, you'll see that most of the files still have the
"+" sign in front, but now <strong>socials.txt</strong> only
has a "-" character. This means that the file exists only
in the VFS database, and not on our local hard drive. We
can copy it back to our local file system by doing: </p>
<p><strong><font face="Courier New">shell copy ::socials.txt //</font></strong></p>
<p>You'll see that I changed the syntax of the copy command around again to
demonstrate some of the previous lessons. We use the :: characters
in front of the filename socials.txt to specify that we want to
copy the VFS version of the file. Since the VFS version is
always preferred and accessed first, the copy command would have
worked just fine without the two :: characters in front. The
last parameter is just two slash marks. When no directory or
folder is specified, the default and current directory is used.
In this case, we only specified the two slash marks to denote the local
file system, and we did not specify a destination folder. This
means that the file socials.txt will be copied into the current folder,
on the local file system only.</p>
<p>There are numerous other shell commands you can make use of, such as <strong><font
face="Courier New">makedirectory</font></strong> to create new folders,
<strong><font face="Courier New">edit</font></strong> to modify a text
file, <strong><font face="Courier New">findfile</font></strong> to hunt
down a file with a given name, or <strong><font face="Courier New">searchtext</font></strong>
to find a file containing a given text string. The shell command
is a useful tool for mirror your local files in your VFS database
for safety, convenience, and easy back-ups.</p>
<p>The last topic concerning the CMFS is about security. At the top
of this Guide, the subject of security codes was discussed.
Well, CMFS provides its own security codes to limit access to files
and folders in either the local file system, the VFS, or both.
</p>
<p>By default, a user is not allowed to access any files in either file system,
unless they are an Archon or have been given a CMFS security code.
The two security codes are <strong>FS: [ABSOLUTE_PATH]</strong>
and <strong>VFS: [ABSOLUTE_PATH]. </strong>In cmfs security
codes, the [absolute path] is a path name starting from inside your
coffeemud directory, with no path-separating slashes except
to separate directories or to designate that the last file is really a directory
by using a trailing forward slash. </p>
<p>For example, to give a user access ONLY to files in the VFS database folder
/resources/text/, you would give the user security code <strong>VFS:
RESOURCES/TEXT/ </strong>The user would then have permission to view
or delete any of the VFS database versions of files that have been
copied into that directory from the local file system. The user
would also have permission to create new files or create new directories
in the VFS inside that folder. Directories and files created by
such a user, who only has a VFS security code, would not create ANY
files in your local file system. All files would reside only in
the VFS database. This user would not even be able to copy existing
local file system files into the VFS to modify, since he does not have
access. </p>
<p>To give the same user access to BOTH the local file system and VFS versions
of the resources/text directory, the security code would need to
changed to <strong>FS: RESOURCES/TEXT/ </strong>Using FS instead
of VFS gives the user access to both local and database versions of
those files. </p>
<p>Of course, by default, an Archon has access to both versions of the entire
coffeemud installation folder. It would be as if the Archon
had the security code <strong>FS:</strong> With no directory specified,
the Archon has local file system (and implied VFS) access to
the root directory and everything underneath it. For that reason,
when limiting access to the file system, it is best to use the VFS:
security code, and to always designate a limited directory path in which
your adminitrative user may play (upload their files, save their scripts,
etc).<br>
</p>
<p class="MsoNormal"><a name="appf"><strong><font color="#008000"
size="5">Appendix F: Clans</font></strong></a></p>
<p>Clans serve many purposes in the CoffeeMud engine. They provide
a way for multiple players to own property, conquer areas, and exert control.
They also provide a means of expressing politics between themselves
and other groups, or even with each other. Clans can allow ranking
players to order each other around, to create special magical items, to
keep a collective treasury, to collect taxes from other players, and to
override normal PK (playerkill) settings. Clans can be tyrannical,
run by a select few, run by elected members, or run collectively. Clans
can even be used as an alternative means of learning new Classes.<br>
</p>
<p>By default, clans can be created and managed entirely by players. This
ability can be removed by disabling the several clan creation and management
commands from the coffeemud.ini file using the DISABLE= field. Regardless,
there is also an Archon mechanism for creating and managing clans.</p>
<p><strong>CREATE CLAN <clanname></strong></p>
<p>This command will create a clan with the given name. You can then
enter the following commands at any time:<br>
</p>
<p><strong>DESTROY CLAN <clanname> </strong></p>
<p><strong>MODIFY CLAN <clanname></strong></p>
<p>When a clan modified, you are presented with a list of properties to fill
in. Pressing enter will leave the property unchanged.
The properties include:</p>
<table style="width: 100%;" bgcolor="yellow" border="1" cellpadding="1"
cellspacing="1" width="100%">
<tbody>
<tr>
<td width="25%"><strong>Property</strong></td>
<td width="75%"><strong>Description</strong></td>
</tr>
<tr>
<td><em>Name</em></td>
<td>the name of the clan can never be changed.
It can only be destroyed. Name your clans carefully!<br>
</td>
</tr>
<tr>
<td><em>Government Type</em></td>
<td>how the players rule the clan -- as a tyranny
(Clan), a oligarchy (Guild), a republic (Union), a theocracy, or a democracy
(Fellowship)<br>
</td>
</tr>
<tr>
<td><em>Clan Premise</em><br>
</td>
<td>a description of the clan for all to read</td>
</tr>
<tr>
<td><em>Clan Experience</em><br>
</td>
<td>the number of experience points the clan
has earned, usually through taxation<br>
</td>
</tr>
<tr>
<td><em>Morgue RoomID</em><br>
</td>
<td>the room ID of the room where the bodies
of the members of the clan appear when they die. This room must be properly
owned by the Clan using a property like Prop_RoomForSale.<br>
</td>
</tr>
<tr>
<td><em>Clan Home RoomID</em></td>
<td>the room ID of the room where the members
of the clan appear when they cast Clan Home spell. This room must
be properly owned by the Clan using a property like Prop_RoomForSale.<br>
</td>
</tr>
<tr>
<td><em>Clan Donation RoomID</em><br>
</td>
<td>the room ID of the room where items appear
when a member of the clan casts the Clan Donate spell. This room must
be properly owned by the Clan using a property like Prop_RoomForSale.</td>
</tr>
<tr>
<td><em>Clan Qualifications</em><br>
</td>
<td>this is a mask describing what sort of people
are allowed to apply and join the clan using the CLANAPPLY command. The
mask is a standard CoffeeMud ZapperMask. You can use ? for a description
at the prompt.<br>
</td>
</tr>
<tr>
<td><em>Clan Auto-Class</em><br>
</td>
<td>the name of a character class which all
players who join the clan also gain for free. Normally not used, this
field can be filled in when the Archon wishes to have clan based classes.<br>
</td>
</tr>
<tr>
<td><em></em>Clan Auto-Role<br>
</td>
<td>the role (rank/position) of the player who
enters the CLANAPPLY command. Normally this is set to Applicant,
meaning that the clan must approve all new members. Setting this
value to something else can override that behavior.<br>
</td>
</tr>
<tr>
<td><em>Clan Status</em><br>
</td>
<td>depending upon your coffeemud.ini settings,
clans can be in a state of pending (awaiting a sufficient number of players
to become active), a state of Active, or a state of Fading (because an insufficient
number of members has logged in lately, again settable in the coffeemud.ini
file). This state is changed automatically by CoffeeMud, but can
be altered here.<br>
</td>
</tr>
<tr>
<td><em>Clan Members</em></td>
<td>the list of all current members and their
position/rank/role within the clan. This list can be altered manually
here.</td>
</tr>
</tbody>
</table>
<p><br>
</p>
<p><a name="appi"><strong><font color="#008000" size="5">Appendix I: Index</font></strong></a></p>
<table border="1" cellpadding="0" cellspacing="0" width="100%">
<tbody>
<tr>
<td bgcolor="lightpink" width="20%"><b><font
color="black">Rooms</font></b></td>
<td bgcolor="lightgreen" width="20%"><b><font
color="black">Exits</font></b></td>
<td bgcolor="lightblue" width="20%"><b><font
color="black">MOBs</font></b></td>
<td bgcolor="lightyellow" width="20%"><b><font
color="black">Items</font></b></td>
<td bgcolor="lightgrey" width="20%"><b><font
color="black">Misc</font></b></td>
</tr>
<tr>
<td bgcolor="lightpink"><a href="#rooms"><font
color="black">Introduction</font></a></td>
<td bgcolor="lightgreen"><a href="#exits"><font
color="black">Introduction</font></a></td>
<td bgcolor="lightblue"><a href="#mobintro"><font
color="black">Introduction</font></a></td>
<td bgcolor="lightyellow"><a
href="#itemintro"><font color="black">Introduction</font></a></td>
<td bgcolor="lightgrey"><a
href="#construct"><font color="black">Construction</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a
href="#roomcreate"><font color="black">Creating</font></a></td>
<td bgcolor="lightgreen"><a
href="#exitcreate"><font color="black">Creating</font></a></td>
<td bgcolor="lightblue"><a
href="#mobcreate"><font color="black">Creating</font></a></td>
<td bgcolor="lightyellow"><a
href="#itemcreate"><font color="black">Creating</font></a></td>
<td bgcolor="lightgrey"><a href="#admin"><font
color="black">Administration</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a href="#modrooms"><font
color="black">Modifying</font></a></td>
<td bgcolor="lightgreen"><a
href="#modexits"><font color="black">Modifying</font></a></td>
<td bgcolor="lightblue"><a href="#modmobs"><font
color="black">Modifying</font></a></td>
<td bgcolor="lightyellow"><a
href="#moditems"><font color="black">Modifying</font></a></td>
<td bgcolor="lightgrey"><a href="#security"><font
color="black">Security</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a href="#xrooms"><font
color="black">Destroying</font></a></td>
<td bgcolor="lightgreen"><a href="#xexits"><font
color="black">Destroying</font></a></td>
<td bgcolor="lightblue"><a href="#xmobs"><font
color="black">Destroying</font></a></td>
<td bgcolor="lightyellow"><a href="#xitems"><font
color="black">Destroying</font></a></td>
<td bgcolor="lightgrey"><a href="#planning"><font
color="black">Planning</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a
href="#linkrooms"><font color="black">Linking</font></a></td>
<td bgcolor="lightgreen"><a href="#genexit"><font
color="black">GenExits</font></a></td>
<td bgcolor="lightblue"><a href="#eqmobs"><font
color="black">Equipping</font></a></td>
<td bgcolor="lightyellow"><a
href="#arctools"><font color="black">Archon Tools</font></a></td>
<td bgcolor="lightgrey"><a href="#creation"><font
color="black">Creation</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a
href="#unlinkrooms"><font color="black">Unlinking</font></a></td>
<td bgcolor="lightgreen"><a href="#genexit"><font
color="black">GenDoors</font></a></td>
<td bgcolor="lightblue"><a
href="#classcreate"><font color="black">Character Classes</font></a></td>
<td bgcolor="lightyellow"><a href="#"><font
style="background-color: rgb(255,255,255);" color="black"><br>
</font></a></td>
<td bgcolor="lightgrey"><a href="#areas"><font
color="black">Areas</font></a></td>
</tr>
<tr>
<td bgcolor="lightpink"><a href="#saving"><font
color="black">Saving</font></a></td>
<td bgcolor="lightgreen"><a href="#"><font
color="black"><br>
</font></a></td>
<td bgcolor="lightblue"><a
href="#racecreate"><font color="black">Races</font></a></td>
<td bgcolor="lightyellow"><a href="#"><font
color="black"><br>
</font></a></td>
<td bgcolor="lightgrey"><a href="#factions"><font
color="black">Factions</font></a></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><strong><font color="green" size="3">Generic Item Types
(GenItems)</font></strong></p>
<table bgcolor="lightyellow" border="1" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
</tr>
<tr>
<td width="20%"><a href="#geni1"><font
color="black">GenItem</font></a></td>
<td width="20%"><a href="#geni0"><font
color="black">GenCoins</font></a></td>
<td width="20%"><a href="#geni1"><font
color="black">GenResource</font></a></td>
<td width="20%"><a href="#geni1"><font
color="black">GenMirror</font></a></td>
<td width="20%"><a href="#geni1"><font
color="black">GenReadable</font></a></td>
</tr>
<tr>
<td><a href="#geni2"><font color="black">GenLightSource</font></a></td>
<td><a href="#geni2"><font color="black">GenCigar</font></a></td>
<td><a href="#geni2"><font color="black">GenPipe</font></a></td>
<td><a href="#geni2"><font color="black">GenLantern</font></a></td>
<td><a href="#geni3"><font color="black">GenJournal</font></a></td>
</tr>
<tr>
<td><a href="#geni4"><font color="black">GenWeapon</font></a></td>
<td><a href="#geni4"><font color="black">GenBow</font></a></td>
<td><a href="#geni4"><font color="black">GenLasso</font></a></td>
<td><a href="#geni4"><font color="black">GenNet</font></a></td>
<td><a href="#geni4"><font color="black">GenSling</font></a></td>
</tr>
<tr>
<td><a href="#geni4"><font color="black">GenSpear</font></a></td>
<td><a href="#geni4"><font color="black">GenBoffWeapon</font></a></td>
<td><a href="#geni5"><font color="black">GenContainer</font></a></td>
<td><a href="#geni5"><font color="black">GenCorpse</font></a></td>
<td><a href="#geni5"><font color="black">GenCage</font></a></td>
</tr>
<tr>
<td><a href="#geni6"><font color="black">GenAmmunition</font></a></td>
<td><a href="#geni7"><font color="black">GenArmor</font></a></td>
<td><a href="#geni7"><font color="black">GenShield</font></a></td>
<td><a href="#geni8"><font color="black">GenBed</font></a></td>
<td><a href="#geni8"><font color="black">GenChair</font></a></td>
</tr>
<tr>
<td><a href="#geni8"><font color="black">GenTable</font></a></td>
<td><a href="#geni8"><font color="black">GenBoat</font></a></td>
<td><a href="#geni8"><font color="black">GenRideable</font></a></td>
<td><a href="#geni8"><font color="black">GenCageRideable</font></a></td>
<td><a href="#geni8"><font color="black">GenTub</font></a></td>
</tr>
<tr>
<td><a href="#geni9"><font color="black">GenFood</font></a></td>
<td><a href="#geni9"><font color="black">GenDrink</font></a></td>
<td><a href="#geni9"><font color="black">GenWater</font></a></td>
<td><a href="#geni9"><font color="black">GenFoodResource</font></a></td>
<td><a href="#geni9"><font color="black">GenLiquidResource</font></a></td>
</tr>
<tr>
<td><a href="#geni9"><font color="black">GenFountain</font></a></td>
<td><a href="#geni9"><font color="black">GenTub</font></a></td>
<td><a href="#geni10"><font color="black">GenPerfume</font></a></td>
<td><a href="#geni11"><font color="black">GenMap</font></a></td>
<td><a href="#geni12"><font color="black">GenKey</font></a></td>
</tr>
<tr>
<td><a href="#geni13"><font color="black">GenStaff</font></a></td>
<td><a href="#geni14"><font color="black">GenWand</font></a></td>
<td><a href="#geni15"><font color="black">GenPill</font></a></td>
<td><a href="#geni15"><font color="black">GenPotion</font></a></td>
<td><a href="#geni15"><font color="black">GenMultiPotion</font></a></td>
</tr>
<tr>
<td><a href="#geni16"><font color="black">GenSuperPill</font></a></td>
<td><a href="#geni17"><font color="black">GenScroll</font></a></td>
<td><a href="#geni18"><font color="black">GenTitle</font></a></td>
<td><a href="#geni19"><font color="black">GenLawBook</font></a></td>
<td><a href="#geni20"><font color="black">GenPortal</font></a></td>
</tr>
<tr>
<td><a href="#geni21"><font color="black">GenClanItem</font></a></td>
<td><a href="#geni21"><font color="black">GenClanCommonContainer</font></a></td>
<td><a href="#geni21"><font color="black">GenClanCommonItem</font></a></td>
<td><a href="#geni21"><font color="black">GenClanContainer</font></a></td>
<td><a href="#geni21"><font color="black">GenClanFlag</font></a></td>
</tr>
<tr>
<td><a href="#geni21"><font color="black">GenClanPamphlet</font></a></td>
<td><a href="#geni21"><font color="black">GenClanSpecialItem</font></a></td>
<td><a href="#geni22"><font color="black">GenWallpaper</font></a></td>
<td><a href="#geni23"><font color="black">GenInstrument</font></a></td>
<td><a href="#geni23"><font color="black">GenPiano</font></a></td>
</tr>
<tr>
<td><a href="#geni15"><font color="black">GenPowder</font></a></td>
<td><a href="#geni24"><font color="black">GenLimb</font></a></td>
<td><a href="#geni25"><font color="black">GenRecipe</font></a></td>
<td><a href="#geni21"><font color="black"><br>
</font></a></td>
<td><a href="#geni21"><font color="black"><br>
</font></a></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><strong><font color="green" size="3">Generic MOB Types
(GenMOBs)</font></strong></p>
<table bgcolor="lightblue" border="1" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
</tr>
<tr>
<td width="20%"><a href="#genm1"><font
color="black">GenMob</font></a></td>
<td width="20%"><a href="#genm1"><font
color="black">GenUndead</font></a></td>
<td width="20%"><a href="#genm2"><font
color="black">GenShopKeeper</font></a></td>
<td width="20%"><a href="#genm3"><font
color="black">GenBanker</font></a></td>
<td width="20%"><a href="#genm4"><font
color="black">GenRideable</font></a></td>
</tr>
<tr>
<td width="20%"><a href="#genm5"><font
color="black">GenDeity</font></a></td>
<td width="20%"><a href="#genm6"><font
color="black">GenPostman</font></a></td>
<td width="20%"><a href="#genm"><font
color="black"><br>
</font></a></td>
<td width="20%"><a href="#genm"><font
color="black"><br>
</font></a></td>
<td width="20%"><a href="#genm"><font
color="black"><br>
</font></a></td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><strong><font color="green" size="3">Appendices</font></strong></p>
<table bgcolor="lightgrey" border="1" cellpadding="0" cellspacing="0"
width="100%">
<tbody>
<tr>
<td width="33%"><a href="#appa"><font
color="black">Appendix A (StdItems)</font></a></td>
<td width="33%"><a href="#appb"><font
color="black">Appendix B (StdMOBS)</font></a></td>
<td width="33%"><a href="#appc"><font
color="black">Appendix C (GenWeapons / GenArmor)</font></a></td>
</tr>
<tr>
<td><a href="#appd"><font color="black">Appendix
D (Quests)</font></a></td>
<td><a href="#appe"><font color="black">Appendix
E (Socials)</font></a></td>
<td><a href="#appf"><font color="black">Appendix
F (Polls)</font></a></td>
</tr>
<tr>
<td><a href="#appg"><font color="black">Appendix
G (CM File System)</font></a></td>
<td><a href="#apph"><font color="black">Appendix H
(Clans)</font></a><br>
</td>
<td><a
href="file:///C:/dev/CoffeeMud/guides/ArchonGuide.html#appi"><font
color="black">Appendix I (top)</font></a><br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</body>
</html>