/
com/planet_ink/coffee_mud/Abilities/
com/planet_ink/coffee_mud/Abilities/Common/
com/planet_ink/coffee_mud/Abilities/Diseases/
com/planet_ink/coffee_mud/Abilities/Druid/
com/planet_ink/coffee_mud/Abilities/Fighter/
com/planet_ink/coffee_mud/Abilities/Prayers/
com/planet_ink/coffee_mud/Abilities/Properties/
com/planet_ink/coffee_mud/Abilities/Skills/
com/planet_ink/coffee_mud/Abilities/Songs/
com/planet_ink/coffee_mud/Abilities/Spells/
com/planet_ink/coffee_mud/Abilities/Thief/
com/planet_ink/coffee_mud/Abilities/Traps/
com/planet_ink/coffee_mud/Areas/interfaces/
com/planet_ink/coffee_mud/Behaviors/
com/planet_ink/coffee_mud/CharClasses/interfaces/
com/planet_ink/coffee_mud/Commands/
com/planet_ink/coffee_mud/Commands/interfaces/
com/planet_ink/coffee_mud/Exits/interfaces/
com/planet_ink/coffee_mud/Items/Armor/
com/planet_ink/coffee_mud/Items/Basic/
com/planet_ink/coffee_mud/Items/MiscMagic/
com/planet_ink/coffee_mud/Items/Software/
com/planet_ink/coffee_mud/Items/Weapons/
com/planet_ink/coffee_mud/Libraries/interfaces/
com/planet_ink/coffee_mud/Locales/
com/planet_ink/coffee_mud/Locales/interfaces/
com/planet_ink/coffee_mud/MOBS/
com/planet_ink/coffee_mud/MOBS/interfaces/
com/planet_ink/coffee_mud/Races/
com/planet_ink/coffee_mud/Races/interfaces/
com/planet_ink/coffee_mud/WebMacros/
com/planet_ink/coffee_mud/WebMacros/interfaces/
com/planet_ink/coffee_mud/application/
com/planet_ink/coffee_mud/core/smtp/
com/planet_ink/siplet/applet/
lib/
resources/examples/
resources/fakedb/
resources/quests/delivery/
resources/quests/diseased/
resources/quests/drowning/
resources/quests/gobwar/
resources/quests/holidays/
resources/quests/robbed/
resources/quests/smurfocide/
resources/quests/stolen/
resources/quests/templates/
resources/quests/treasurehunt/
resources/quests/vengeance/
web/
web/admin.templates/
web/admin/images/
web/pub.templates/
web/pub/images/mxp/
web/pub/sounds/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>


<body>









    
<center>
<table border="1" bordercolor="gray" cellpadding="10" cellspacing="0" width="90%">








  <tbody>








    <tr>









      <td colspan="2" align="left" bgcolor="#dfdfdf" width="100%">
        
      
      
      
      
      
      
      
      
      <h1>
          CoffeeMud 5.2 Game Builders Guide
        </h1>









      </td>








    </tr>








    <tr>








      <td align="left" valign="top" width="20%">
        
      
      
      
      
      
      
      
      
      <ul>








        <li>Introduction</li>








        <li><a href="#cmfs">CoffeeMud File System</a></li>








        <li><a href="#ables">Abilities</a></li>








        <li><a href="#classes">Classes</a></li>








        <li><a href="#factions">Factions</a></li>








        <li><a href="#quests">Quests</a></li>

        <li><a href="#holidays">Holidays</a></li>








        <li><a href="#socials">Socials</a></li>








        <li><a href="#polls">Polls</a></li>








        <li><a href="#clans">Clans</a></li>








        <span style="text-decoration: underline;"><br>








        </span>
      
      
      
      
      
      
      
      
      </ul>









      </td>








      <td align="left" valign="top">
      
      
      
      
      
      
      
      
      <p style="text-align: center;" align="left"><strong><img src="images/mug.jpg"></strong></p>











      <strong style="color: rgb(255, 0, 0);"><font size="5">Introduction</font></strong><br>








      <br>








The purpose of this document is to cover aspects of Archon game
creation that are not directly related to Area/Map creation, which is
already covered in detail in the <a href="ArchonGuide.html">Archons Guide.</a><br>








      <br>








      
      
      
      
      
      
      
      
      <p><a name="cmfs"><strong><font color="#008000" size="5">&nbsp;The
         CoffeeMud File System (CMFS)</font></strong></a>&nbsp;</p>












                     
      
      
      
      
      
      
      
      
      <p>This is a complicated topic, but one that all builders  and Archons should
         understand.&nbsp; Sooner or later, every CoffeeMud  adminstrator
is   going      to want to modify some of the local files in the CoffeeMud
 folder.&nbsp;        This may include the quests, or skill lists, or hopefully 
 the  intro.txt       file located in resources/text directory!&nbsp; 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.&nbsp; 
 </p>












                     
      
      
      
      
      
      
      
      
      <p>Pretty soon, your directories are packed with stuff customized to your
          mud.&nbsp; This can create issues for back-ups, meaning that not
 only     do   you  have to back-up your database (or your data directory)&nbsp; 
   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.&nbsp;  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.&nbsp; 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.&nbsp; 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.&nbsp; 
 That   way,  should the file   in the database (called a  <strong>VFS</strong>&nbsp;file)
     become corrupted   or deleted, the one in the  local file system will
 remain    safe.&nbsp; Furthermore,   since&nbsp;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.&nbsp; 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.&nbsp; 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.&nbsp;
 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&nbsp;UNIX standard for separating directorys and folders.&nbsp;
          This means that the forward slash / character is used when separating
      one   folder  from another when naming a file.&nbsp; 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.&nbsp; 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.&nbsp;   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.&nbsp;  </p>












                     
      
      
      
      
      
      
      
      
      <p>If for some reason you absolutely need to ensure that ONLY&nbsp;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.&nbsp; 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.&nbsp;      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&nbsp;using &nbsp;<strong>::resources/progs/myprog.script     
    </strong>as your path name.&nbsp; 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.&nbsp; 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.&nbsp;
     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.&nbsp; 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.&nbsp; 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&nbsp;asterisk,
         to designate ALL files in the resources directory.&nbsp; The  next
  parameter       is the destination folder.&nbsp; In this case, we specify
  our  destination       as ::/resources, which would be the same directory,
  but in the VFS  system.&nbsp;      Notice that we did not have to create
 a VFS folder called  /resources  before    we did this.&nbsp; The VFS always
  has a mirror copy of all the  local file    system folders.&nbsp; However,
  it requires you to use the SHELL COPY  command    to create a mirror of
the  files themselves.&nbsp; 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.&nbsp; 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.&nbsp; You'll    see    that all of
 the files have little "+" marks next to them.&nbsp;  This  means    that
the files  exist both in your local file system *AND*  in the  VFS.&nbsp;
   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.&nbsp; Had we not put those two slashes in front,
    it   would   have preferred the VFS copy of socials.txt and deleted that 
   one instead.&nbsp;     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.&nbsp; 
   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.&nbsp; Now, you'll see  that most of the files still have the
 "+"    sign    in front, but  now&nbsp;<strong>socials.txt</strong> only
has a  "-"  character.&nbsp;     This&nbsp;means that the file exists only
in the&nbsp;VFS    database, and   not on  our local hard drive.&nbsp; We
can copy it back  to  our local file   system by  doing:&nbsp;</p>












                     
      
      
      
      
      
      
      
      
      <p><strong><font face="Courier New">shell copy&nbsp;::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.&nbsp; We use the :: characters
         in  front of the filename socials.txt to specify that we want to
copy     the    VFS  version of the file.&nbsp; Since the VFS version is
always  preferred       and  accessed first, the copy command would have
worked just  fine without       the two ::  characters in front.&nbsp; The
last parameter  is just two   slash    marks.&nbsp;  When no directory or
folder is specified,  the default   and  current  directory is  used.&nbsp;
In this case, we only  specified the  two  slash marks  to denote the  local
file system, and we  did not specify   a destination   folder.&nbsp;  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.&nbsp; At the top
         of  this Guide, the subject of security codes was discussed.&nbsp;
  Well,      CMFS  provides its own security codes to limit access to files
  and folders      in either  the local file system, the VFS, or both.&nbsp;
  </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.&nbsp;
         The two  security codes are <strong>FS: [ABSOLUTE_PATH]</strong>
and    <strong>VFS:      [ABSOLUTE_PATH].&nbsp; </strong>In cmfs security
codes,    the [absolute  path]   is a  path name starting from inside your
coffeemud    directory, with  no path-separating    slashes&nbsp; except
to separate  directories  or to designate&nbsp;that the  last  file is really&nbsp;a&nbsp;directory
    by using a trailing forward  slash.&nbsp;&nbsp;  </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.&nbsp; The user 
 would  also  have permission  to   create new files or create new directories 
 in  the VFS  inside that  folder.&nbsp;   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.&nbsp; All  files   would reside only in
the VFS  database.&nbsp;  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.&nbsp;  </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/&nbsp; </strong>Using FS instead
 of VFS    gives   the  user access to both local and database versions of
 those files.&nbsp;       </p>












                     
Of course, by default, an Archon has access to both versions of the entire
          coffeemud installation folder.&nbsp; 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)&nbsp; access to 
 the  root   directory   and  everything underneath it.&nbsp; 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).
      
      
      
      
      
      
      
      
      <p style="text-align: center;" align="left"><strong></strong></p>










      <strong><font color="blue" size="5"><a name="ables">Abilities (Skills/Spells/Chants/etc..)</a></font></strong>
                     
      
      
      
      
      
      
      
      
      <p>In the lexicon of the Archons, the word "Ability" encompasses a
great many powers and skills, both natural and man-made. &nbsp;An
ability may behave as an Affect, as a Skill, or as Both. &nbsp;</p>










      
      
      
      
      
      
      
      
      <p>An ability behaving as an Affect means that it is acting as a
discrete aspect of some existing thing, whether that thing is a room,
an exit, an item, or a mob. &nbsp;Such aspects may include the property
of great strength,&nbsp;great damaging ability, immunity to certain
affects, or simply the garbling of normal speech. &nbsp; An ability
taking on this role is both passive and reactionary; passive when it is
embueing its host with great strength or damage, and reactionary when
it is providing immunity or garbling speech. &nbsp;</p>










      
      
      
      
      
      
      
      
      <p>An ability that is behaving as a Skill means that it allows its host
(which is always a MOB in this case) to interact with the world around
it, to change it, derive information from it, or beslow Affects upon
it. &nbsp;Such interactions can include kicking, making sick,
poisoning, identifying, catching on fire, and many other things.
&nbsp;An ability taking on this role is entirely active, though once
the active interaction ends, that same Ability may either end (as a
kick), leave itself behind on its target to remain as an Affect as
described above (as catching on fire would).</p>










      
      
      
      
      
      
      
      
      <p>CoffeeMud contains over a thousand different java-coded Abilities
which fall into numerous other categories and genera of various
descriptions. &nbsp;The most important of those categories, however,
are their Ability Type. &nbsp;CoffeeMud has numerous different ability
types, which include Properties (which always act only as Affects), or
Skills, Spells, Prayers, Chants, Diseases, Poisons, etc. (all of which
can act purely as&nbsp;Skills, act purely as an Affects, or act as Both
depending on the context in which it is used). &nbsp;Whenever you place
the name of an ability in the Affects list of a mob, item, room, or
exit, you are telling CoffeeMud to use only the Affect/property aspect
of that skill. &nbsp;When you place the same ability name in the same
mob's Abilities list, you are telling CoffeeMud to reserve the ability
for use as a Skill. &nbsp;For example,&nbsp;when you&nbsp;add
Spell_GiantStrength to a GenMob's affects list, you are saying that
this mob is permanently stronger than normal, but when you place it on
the GenMob's abilities list, you are saying that you want the mob to be
able to invoke the skill at a later date (by casting the spell).</p>










      
      
      
      
      
      
      
      
      <p>CoffeeMud also allows you to define abilities outside of the
java-realm. &nbsp;This can be done from the command line using the
CREATE command. &nbsp;If you want to create a new skill called Poke,
for instance, you might enter:</p>












                     
      
      
      
      
      
      
      
      
      <p><strong>CREATE ABILITY Skill_Poke</strong></p>












                     
      
      
      
      
      
      
      
      
      <p>And it would be done.&nbsp; &nbsp;The "Skill_Poke" is the abilities
Ability ID. &nbsp;The fact that it starts with "Skill_" is merely for
descriptive purposes, and is not required. &nbsp;Generally speaking, it
is a good idea to give your abilities Ability ID's that start with the
general kind of ability it is, for instance "Spell_", "Chant_",
"Prayer_", etc.</p>










      
      
      
      
      
      
      
      
      <p>Whenever creating or  modifying a new ability,
         the Archon is presented with a menu of selections and  options available
        to customize the class.&nbsp; 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>Skill Name</em></td>












                             <td>the name of the ability. &nbsp;Make this anything you like, but uniqueness is important for making help file entries.</td>












                            </tr>












                           <tr>












                             <td><em>Type, Domain</em></td>












                             <td>the skill type and domain (if
any). &nbsp;Enter the type, a comma, and a domain (or nothing).
&nbsp;Enter ? to get a list of skill and domain types.</td>












                            </tr>












                           <tr>












                             <td><em>Command Words</em></td>












                             <td>the command invocation word.
&nbsp;This need not be unique to your skill! For instance, use CAST for
spells, and the command word will automatically require the skills name
to be included for invocation. &nbsp;Use commas to seperate different
invocation words. &nbsp;This can be blank for Properties.</td>












                            </tr>












                           <tr>












                             <td><em>Minimum Range</em></td>












                             <td>for combat/targeted skills,
how&nbsp;far away the invoker must be to use the skill. &nbsp;Use ? to
get a list of possible values.</td>












                            </tr>












                           <tr>












                             <td><em>Maximum Range</em></td>












                             <td>                                       
                                             
      
      
      
      
            
            
            
            
            
            
            
            
            <p>for combat/targeted skills, how close the invoker must be to
use the skill. &nbsp;Use ? to get a list of possible values.&nbsp; </p>












                  </td>












                            </tr>












                           <tr>












                             <td><em>Affect String</em></td>












                             <td>what is displayed in the Affects
list when players and mobs are affected by this ability. &nbsp;Enter
nothing, or&nbsp;NULL to show nothing at all.</td>












                            </tr>












                           <tr>












                             <td><em>Is Auto-invoking</em></td>












                             <td>whether this skill is
automatically applied to a player as an affect when they learn the
skill. &nbsp;If true, the ability will show no casting message, and
proceed directly to affecthood.</td>












                            </tr>












                           <tr>












                             <td><em>Skill Flags</em></td>












                             <td>0 or more comma-delimeted flags that describe the affects of your skill to the rest of the mud engine. Use ? to get a list.</td>












                            </tr>












                           <tr>












                             <td><em>Override cost</em></td>












                             <td>designate the cost of using this
skill in mana/movement/etc. &nbsp;A value of -1 means to use the
default system as defined in your coffeemud.ini file. &nbsp;A value of
&nbsp;0 means its free. &nbsp;A value from 0-99999 means to always use
that amount. &nbsp;A value of &nbsp;2147483647 means to always use all
of the mobs mana/move points. &nbsp;A value of 2147483647-100 to
2147483647 means to use that percentage of the mobs mana/move points.</td>












                            </tr>












                           <tr>












                             <td><em>Cost Type</em></td>












                             <td>one or more flags designating the
type of mob resource used to invoke the skills, whether it be move,
mana, hit points, or some combination. &nbsp;Enter ? for a list.</td>












                            </tr>












                           <tr>












                             <td><em>Can Affect</em></td>












                             <td>the types of objects which, when
invoked, this skill will remain on as an affect. The list is
comma-delimited. &nbsp;Make sure this is a subset of the Can Target
list! &nbsp;Enter ? for a list.</td>












                            </tr>












                           <tr>












                             <td><em>Can Target</em></td>












                             <td>the types of object which, when
invoked, this skill will target. &nbsp;If the value is 0, it will
target only the invoker. &nbsp;Enter ? for a list.</td>












                            </tr>












                           <tr>












                             <td><em>Quality Code</em></td>












                             <td>whether this skill is malicious
(hurts the target), beneficial to self or others (always gives a combat
benefit), ok to self or others (sometimes gives a combat benefit under
certain circumstances), or indifferent (usually for role-playing
skils). &nbsp;Enter ? for a list.</td>












                            </tr>












                           <tr>












                             <td><em>Affect Adjustments</em></td>












                             <td>For skills that affect their
targets (see Can Affect), this is the list of affects and their values.
&nbsp;It is modelled on the same syntax and format of the property
Prop_HereAdjuster, so enter HELP Prop_HereAdjuster for information on
the syntax for this field. &nbsp;Entering ? will show you that help.</td>












                            </tr>












                           <tr>












                             <td><em>Caster Mask</em></td>












                             <td>a mask to determine if the invoker
is allowed, under the circumstances, to use this skill. Enter ? or help
on Prop_HaveZapper for more information on the syntax for CoffeeMud
"Zapper" masks.</td>












                            </tr>












                           <tr>












                             <td><em>Scriptable Parm</em></td>












                             <td>a Scriptable-behavior parameter
denoting the script that is active during invocation of this skill and
during its tenure as an affect. &nbsp; See the Scriptable Guide for
detailed information on how to use mobprog scripts. &nbsp;Enter ? for
some short help on acceptable parameters here. &nbsp;*special note:
during successful invocation of this ability, a special trigger event
will occur that can be handled by an IMASK_PROG p &lt;ability id&gt;.
&nbsp; Such a script trigger would, for example, be the appropriate
place to put damage commands for skills that do damage.</td>












                            </tr>












                           <tr>












                             <td><em>Target Mask</em></td>












                             <td>a mask to determine if the target is allowed, under the circumstances,
to be targeted by this skill. Enter ? or help on Prop_HaveZapper for more
information on the syntax for CoffeeMud "Zapper" masks.</td>












                            </tr>












                           <tr>












                             <td><em>Fizzle Message</em></td>












                             <td>the message shown when the mob or
player fails their profficiency check for this skill. &nbsp;Use
&lt;S-NAME&gt; as a substitute for the invoker, and &lt;T-NAME&gt; as a
substitute for the name of the target.</td>












                            </tr>












                           <tr>












                             <td><em>Auto-Cast Message</em></td>












                             <td>the message shown when the skill
is invoked from a wand, scroll or other automatic means. &nbsp;Use
&lt;S-NAME&gt; as a substitute for the invoker,
and &lt;T-NAME&gt; as a substitute for the name of the target.</td>












                            </tr>












                           <tr>












                             <td><em>Normal-Cast Message</em></td>












                             <td>the message shown when the skill successfully invoked. &nbsp;Use &lt;S-NAME&gt; as a substitute for the
invoker,
and &lt;T-NAME&gt; as a substitute for the name of the target.</td>












                            </tr>












                           <tr>












                             <td><em>Post-Cast Message</em></td>












                             <td>the message shown after the skill
is invoked, if the target did not make a saving throw against it.
&nbsp;Use &lt;S-NAME&gt; as a substitute for the
invoker,
and &lt;T-NAME&gt; as a substitute for the name of the target.</td>












                            </tr>












                           <tr>












                             <td><em>Attack-Type</em></td>












                             <td>an optional field for malicious
skills. &nbsp;this is the secondary type of &nbsp;attack being made,
where the primary attack type is determined by the skill type (magic
for spells, chants, prayers, etc). &nbsp;for instance, for a
flame-shooting spell, FIRE would be an appropriate value. &nbsp;Use ?
for a list.</td>












                            </tr>












                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                                                    
  
  
  
  
        
        
        
        
        
        
        
        
        </tbody>        
      
      
      
      
      
      
      
      
      </table>












                               
      
      
      
      
      
      
      
      
      <p>As you can tell if you read through the above, most of the meat of the work done by Generic Abilities is </p>










      
      
      
      
      
      
      
      
      <p style="text-align: center;" align="left"></p>











      <strong><font color="blue" size="5"><a name="classes">Character  Classes</a></font></strong>
                     
      
      
      
      
      
      
      
      
      <p>A character class is a designation chosen by players that
limits the scope of skills and abilities they will have available to
them as they advance in level. &nbsp;</p>








      
      
      
      
      
      
      
      
      <p>CoffeeMud supports several different class-systems through its
coffeemud.ini file (the CLASSSYSTEM entry). One such option is the
Single-class system, whereby the player can select a single class to
play throughout their characters gaming career. &nbsp;Another is the
Sub-classing system, whereby the player selects a parent-class to play,
but may add/change to any of that parent classes sub-classes to gain a
different selection of skills as they go forward in levels. &nbsp;A
third is the multi-classing system, whereby the player can select an
initial class, but may add/change to any other class to gain a
different selection of skills as they go forward in levels. &nbsp;The
last option is &nbsp;to disable the class system altogether, which
essentially only means that the player is not allowed to choose which
class they play, but are secretly forced into a single class that
determines their skill selection. &nbsp;See your coffeemud.ini file for
more information on this feature.</p>








      
      
      
      
      
      
      
      
      <p>CoffeeMud includes numerous character classes by default that
give players access to the hundreds of skills in the CoffeeMud
codebase. &nbsp;However, they doesn't mean there isn't room for change,
improvement, or addition. &nbsp;</p>








      
      
      
      
      
      
      
      
      <p>Customized player or mob classes can be used as skill templates for mobs created using  the
  Fighterness       (or similar) behaviors, or as genuine player classes
for   your  game.&nbsp;       Either way, here is how it is done:</p>












                     
      
      
      
      
      
      
      
      
      <p><strong>CREATE&nbsp;CLASS  Boxer</strong></p>












                     
      
      
      
      
      
      
      
      
      <p>And it would be done.&nbsp; The name Boxer is just an example.
&nbsp;You can enter any non-space string to serve as an official ID for
your character class. &nbsp;You can even specify the name of an
existing code-base class, such as Fighter or Mage. &nbsp;If you specify
your own name, you are creating a new class from scratch. &nbsp;If you
specify an existing class name, you are essentially "over-riding" that
standard class. &nbsp;This can be a quick and easy way to disable
existing standard classes, since you can create a generic character
class called Fighter, for instance, then set it so that players can not
select it, which effectively disables that character class.</p>








      
      
      
      
      
      
      
      
      <p>After a character class is created using the CREATE CLASS
command, it can be deleted or modified later using the DESTROY CLASS or
MODIFY CLASS commands.</p>








      
      
      
      
      
      
      
      
      <p>Whenever creating or  modifying a new class,
         the Archon is presented with a menu of selections and  options available
        to customize the class.&nbsp; Here is a description of those  options:</p>








      
      
      
      
      
      
      
      
      <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>Number of Names</em></td>












                             <td>the number of displayable names this class
        has.&nbsp;      Normally  just 1.</td>












                            </tr>












                           <tr>












                             <td><em>Name #x</em></td>












                             <td>a displayable name of the class.&nbsp; Each
        displayable       name applies based on a class level.</td>












                            </tr>












                           <tr>












                             <td><em>Name&nbsp;#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 base class category into
which the class fits.&nbsp; Usually this is the same as the&nbsp;ID you
specified when doing CREATE CLASS. &nbsp;However, if&nbsp; you are
using a subclass system
and you want this class to belong to a set of subclasses under a base
class, and this particular class is NOT the base class,&nbsp;then this
field should be set to the class ID of the base class it falls under.</td>












                            </tr>












                           <tr>












                             <td><em>Availability</em></td>












                             <td>                                       
                                             
      
      
      
      
            
            
            
            
            
            
            
            
            <p> whether or not players may access this class at creation, in spells,
         or never.&nbsp;&nbsp;&nbsp;                 </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. &nbsp;If this class rolls 2d6 for hit points, this would be the "2" part.</td>












                            </tr>












                           <tr>












                             <td><em>HP Die</em></td>












                             <td>the maximum roll on each die roll made per
 level     for   hit   points. &nbsp;If this class rolls 2d6 for hit points, this would be the "6" part.</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. &nbsp;If this class rolls 2d6 for mana, this would be the "2" part.</td>












                            </tr>












                           <tr>












                             <td><em>Mana Die</em></td>












                             <td>the maximum roll on each die roll made per
 level     for   mana. &nbsp;If this class rolls 2d6 for mana, this would be the "6" part.</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><span style="font-style: italic;">Armor Restr Spells</span></td>







            <td>normally, armor restrictions apply when any class skill
is used. &nbsp;If this field is true, however, armor restrictions apply
only when a class spell/chant/prayer is cast.</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.&nbsp; 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.&nbsp; Use ? for a list.</td>












                            </tr>












                           <tr>












                             <td><em>CharStat  Settings</em></td>












                             <td>hard settings for strength, saving throws,
 and  other      stats.&nbsp;   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.&nbsp; 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><span style="font-style: italic;">Weapon Mat. Req.</span></td>







            <td>A list of the raw materials out of which a players weapon must be made in order to avoid fumbling.</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.&nbsp;  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).&nbsp;
 Each set begins    to        apply at a given class level for that&nbsp;set.&nbsp; 
 &nbsp;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&nbsp;class level at which this set of
        security     codes    or groups begins to apply, in addition to any
 previous       sets.</td>












                            </tr>







          <tr>







            <td>Stat-Modifying Class</td>







            <td>the name of a standard character class which will be
used for special stat adjustments from java code, such as a thiefs
level-based defence bonus, or druids mana bonus at their monument.
&nbsp;If you are creating a generic char. class on top of an existing
standard one, you will need to use the fully qualified class name of
the form:
com.planet_ink.coffee_mud.CharClasses.&lt;charclassname&gt;&nbsp;in
order to access the standard version.</td>







          </tr>







          <tr>







            <td>Special-Event Class</td>







            <td>the name of a standard character class which will be
used for special
event processing from java code, such as a clerics alignement
restrictions when praying, or an Artisan's expertience gains while
crafting.. &nbsp;If you are creating a
generic char. class on top of an existing standard one, you will need
to use the fully qualified class name of the form:
com.planet_ink.coffee_mud.CharClasses.&lt;charclassname&gt;&nbsp;in
order to
access the standard version.</td>







          </tr>












                                                    
  
  
  
  
        
        
        
        
        
        
        
        
        </tbody>        
      
      
      
      
      
      
      
      
      </table>












                               
      
      
      
      
      
      
      
      
      <p></p>












                     
      
      
      
      
      
      
      
      
      <p><strong><font color="blue" size="5"><a name="factions">Factions</a></font></strong></p>












                     
      
      
      
      
      
      
      
      
      <p>A faction can be viewed very simply as a glorified tattoo with
a number value. &nbsp;Normal Tattoos are simply flags which a mob or
player
can have: either you do or do not have the tattoo. &nbsp;A Faction is a
kind of flag a mob or player
can have that has a special a numeric value assigned to
it.&nbsp;
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.&nbsp; For example, in CoffeeMud, a mob or players
Alignment is implemented as a Faction.&nbsp; The Alignment can be
thought
of as having a tattoo called alignment along with a numeric value
assigned to it.&nbsp; 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.&nbsp; Since
the values  of factions are     available&nbsp;for   use in&nbsp;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.&nbsp;     As an example, the
alignment faction typically&nbsp;impacts   all of  the   things  mentioned
above and more.</p>












                     
      
      
      
      
      
      
      
      
      <p>Now, as was said before, factions have numeric  values.&nbsp; These values
         can be positive, like 2389473, negative, or even  0.&nbsp; The range
    of   values  which are valid for a given faction are defined by  the
limits     of   the divisions  or Ranges of a faction.&nbsp; </p>












                     
      
      
      
      
      
      
      
      
      <p>A <strong>Range</strong> is a  numeric division of a faction you have defined.&nbsp;
A Range has a displayable  name, a special code name for use in Zapper Masks,
and of course a low and high  value.&nbsp; 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.&nbsp; 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.&nbsp; 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.&nbsp;&nbsp;For this reason, ranges are the most
important part of a  faction.</p>












                     
      
      
      
      
      
      
      
      
      <p>Another important aspect are the range <strong>Change Triggers</strong>.&nbsp;
         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.&nbsp; 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.&nbsp;
 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),&nbsp; 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.&nbsp;
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.&nbsp;   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&nbsp;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).&nbsp;
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.&nbsp;  Factions are
  loaded       into memory when their identifiers/filenames are added to
 the  FACTIONS     entry  in your "coffeemud.ini" file.&nbsp; Factions may
also  be  loaded   if  a mob  or player is loaded who has a faction which
has already  been defined.&nbsp;    Creating new factions, as you can now
guess, is a two part  step.&nbsp;  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&nbsp;FACTION  orc_affinity.ini</strong></p>












                     
      
      
      
      
      
      
      
      
      <p>This command will create a new file in&nbsp;your  CoffeeMud/resources directory
or folder for the new faction.&nbsp; This file  will contain the default
setting for your brand new faction, whose ID  (identifier) will be ORC_AFFINITY.CMVars.&nbsp;
You will now be automatically  taken into the Faction Editor.&nbsp; 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.&nbsp;        The Faction editor contains numerous other&nbsp;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.&nbsp;
 See  the&nbsp;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.&nbsp; 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.&nbsp;
 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.&nbsp;
 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.&nbsp; 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.&nbsp;  If        this
 field  is empty,  noone is assigned a value automatically.&nbsp;  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.&nbsp;
The syntax  of   this field        is&nbsp;similar  to&nbsp;the "Automatic
assigned values"    field above.&nbsp;          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&nbsp;players     will get to choose from when they create their
        characters for the    first time.&nbsp; Each value in this list should
            correspond to, or   fall into,&nbsp;a different Division/Range
 listed           above.&nbsp; 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.&nbsp; 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.&nbsp; 
          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.&nbsp;&nbsp;        If the value is None, then this faction
does not        affect experience        gained by players for killing monsters.&nbsp;
 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.&nbsp;
Higher  means the amount is always gained.&nbsp;     Lower        means the
amount  is always lost.&nbsp; Followhigher means  the   amount is       
always gained,  and in proportion to how high the value   of  the monsters
       faction  is.&nbsp; 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.&nbsp; 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.&nbsp;
 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.&nbsp;
        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.&nbsp; 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.&nbsp; 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.&nbsp;&nbsp; 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.&nbsp;           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>












                     
      <br>











      
      
      
      
      
      
      
      
      <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"><span class="453251818-08032003"></span></span></span></span></span></span></span></span></span><strong><font color="green" size="5"><a name="quests">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.&nbsp; 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:&nbsp;</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&nbsp;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&nbsp;definitions and pseudo-commands
 called a <span style="color: rgb(204, 0, 0);">QUEST-SCRIPT</span>. &nbsp;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 "\;".
&nbsp;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. &nbsp;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&nbsp;started automatically (autoquests)  from inside the
         quest script by including&nbsp;the SET WAIT and SET INTERVAL  commands,
       or  they&nbsp;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. &nbsp;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 SPAWNABLE <span style="color: rgb(102, 51, 102);">[TRUE/ALL]</span></span>
- whether this quest will, when started, spawn a copy of itself and run
the copy instead. &nbsp;This allows the same quest to run more than
once at the same time, though it will share its name as well as its
list of winners. &nbsp;If
the ALL flag is given, the quest manager will attempt to spawn off
every single STEP of the quest all at once. &nbsp;This can create chaos
unless STEP BREAK is used instead of STEP. &nbsp;See information on the
STEP and SET PRESERVE commands below.</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>&nbsp;<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. &nbsp;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.
&nbsp;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.
&nbsp;This does not affect spawned quest copies, which will always run
even when another of the same name (and runlevel) is active.</p>








      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET PRESERVE</span><span style="color: rgb(102, 51, 102);"> [#STEPS]</span>-
If a number greater than 0 is issued, then when a STEP command is
encountered and the commands following it are executed due to a
MPSTEPQUEST Scriptable command, then any
objects, behaviors, abilities, or affects which are specified after the
SET PRESERVE, but BEFORE the STEP command will not be cleaned up by the
quest manager until the specified number of STEPS have been encountered
and executed. &nbsp;This allows, for instance, a mob, once appropriated
and specified by a quest, to continue being used in subsequent steps
without being restored by the quest manager to a natural state.
&nbsp;An MPSTOPQUEST command, or an expired duration, will always cause
the entire quest to cease executing and all objects to be cleaned up.</p>








      <span style="color: rgb(51, 102, 102);"></span>
      
      





                     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">STEP&nbsp;</span>- The
purpose of this command is to allow your quest to run in several
different steps or stages. &nbsp;Placing this command in your quest
script will cause the script to end execution when it is encountered.
&nbsp;The quest will run
normally until it is ordered to proceed with the next step using the
Scriptable command MPSTEPQUEST. &nbsp;When the&nbsp;MPSTEPQUEST command
is issued, the quest script will clean up any
objects or data defined by statements prior to this STEP command, and
begin processing new quest script commands which follow it. &nbsp;A SET
DURATION command must follow a STEP command in order to ensure that the
quest will continue to run following execution of the post-STEP
commands, otherwise any duration settings from previous steps will be
re-used. &nbsp;Numerous STEP commands may be places in your quest
scripts. &nbsp;&nbsp;An MPSTOPQUEST command, or an expired duration, however, will always cause the
entire quest to cease executing and all objects to be cleaned up. &nbsp;See also SET PRESERVE. &nbsp;</p>






      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">STEP <span style="color: rgb(102, 51, 102);">BREAK</span></span><span style="color: rgb(102, 51, 102);">-</span>
This command will cause the quest script to stop evaluating any further
settings. &nbsp;Statements after a STEP BREAK, including any SETS,
LOADS, or any other statements, will not be executed. &nbsp; &nbsp;This
is used in conjunction with SET SPAWNABLE ANY to allow quest scripts
which have been broken into several descrete steps to run
independently. &nbsp;A SET SPAWNABLE ANY quest is considered
successfully run when this command is encountered.</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. &nbsp;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. &nbsp;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.&nbsp;Several area names   may be  specified     as choices
by setting the first area name as ANY, followed  by your  other     area
name&nbsp;choices, separated by spaces.&nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing. &nbsp;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 AREAGROUP</span> <span style="color: rgb(102, 51, 102);">([AREA NAME OR NAMES]) </span>-
essentially the same as set ROOMGROUP below, this will set the current
designated roomgroup to the rooms in the area(s) 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.&nbsp;Several area names may be specified, separated by
spaces and word-grouped with double-quotes.&nbsp;If no area name is
given,
this will CLEAR the ROOMGROUP designation. This can have a profound
impact
on how subsequent mob or item loading, or room setting commands work.
&nbsp;This command will automatically clear the AREA setting.</p>












      
      
      
      
      
      <span style="color: rgb(51, 102, 102);"></span>








                     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET ROOMGROUP</span> <span style="color: rgb(102, 51, 102);">([ROOM NAME])</span> - will set the&nbsp;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,&nbsp;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.&nbsp;&nbsp;Several 
 room names may be specified as choices by setting the first room name as 
ANY, followed by your other room name&nbsp;choices, separated by spaces.&nbsp;
 If no room name is given, this will effectly clear the ROOMGROUP designation
 (but it will not clear the area designation!). &nbsp;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&nbsp;</span><span style="color: rgb(51, 102, 102);">ROOMGROUP</span>&nbsp;<span style="color: rgb(102, 51, 102);"></span><span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;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.&nbsp;&nbsp;Several 
 room names may be specified as choices by setting the first room name as 
ANY, followed by your other room name&nbsp;choices, separated by spaces.&nbsp;
 If no room name is given, this will effectly clear the room designation
(but  it will not clear the area designation!). &nbsp; 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]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing.&nbsp; &nbsp;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&nbsp;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&nbsp;RADIUS  rooms away from the currently set ROOM (see SET ROOM/SET
LOCALE). The radius  must then be greater than 0.&nbsp; If the following
room name of ANY is given,  then all rooms in the radius are grouped.&nbsp;&nbsp;Several
room names may  be specified as choices by setting the first room name as
ANY, followed by  your other room name&nbsp;choices, separated by spaces.&nbsp;
If no room name is given, this will effectly clear the ROOMGROUP designation
(but it will not clear the area designation!). &nbsp; &nbsp; 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.&nbsp;&nbsp;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.&nbsp;
 If no locale is given, this will effectly clear the ROOMGROUP designation
 (but it will not clear the area designation!). &nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);"></span><span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing. </p>












                     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET&nbsp;LOCALEGROUPAROUND</span>
 <span style="color: rgb(102, 51, 102);">([#RADIUS]&nbsp;[LOCALE])</span> -
will set the&nbsp;ROOMGROUP to the ones with the specified class name. The
rooms will be selected from the set of rooms which areup to&nbsp;RADIUS rooms
away from the currently set ROOM (see SET LOCALE/SET ROOM). The radius must
then be greater than 0.&nbsp; If the following locale name of ANY is given,
then all rooms in the radius are grouped.&nbsp;&nbsp;Several room names may
be specified as choices by setting the first&nbsp;locale name as ANY, followed
 by your other&nbsp;locale name&nbsp;choices, separated by spaces.&nbsp;
If  no&nbsp;locale name is given, this will effectly clear the ROOMGROUP
designation  (but it will not clear the area designation!). &nbsp;&nbsp;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.&nbsp;&nbsp;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.&nbsp;    If no locale is given, this will effectly  clear the room
designation (but    it will not clear the area designation!). &nbsp;&nbsp;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]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing.&nbsp; &nbsp;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>&nbsp;<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. &nbsp;The mobs chosen will be selected from those   in
the   designated   ROOMGROUP (if one&nbsp;is designated),&nbsp; AREA (if
one is designated) or the world. The mobs must exist somewhere in the map
for this command to work. &nbsp;Normally a mob will not be placed in the
mobgroup if the mob has been previously set with SET MOB, or SET MOBTYPE.&nbsp;
The RESELECT flag is an optional first flag which, if specified, designates
that &nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);"></span><span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);">(RESELECT) &nbsp;</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&nbsp;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. &nbsp;Normally
 a mob will not be chosen by this command if the mob has been previously
set  with SET MOB, or SET MOBTYPE. &nbsp;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]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing.&nbsp; &nbsp;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&nbsp;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. &nbsp;Normally
a mob will not be chosen by this command if the mob has been previously set
with SET MOB, or SET MOBTYPE. &nbsp;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]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing.&nbsp; &nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);">(RESELECT) &nbsp;</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&nbsp;entered before the MASK= string.
The items chosen will be selected from those in the designated ROOMGROUP
(if one&nbsp;is designated), the AREA (if one&nbsp;is designated) or the
world. The items must exist somewhere in the map for this command to work.
 &nbsp;Normally an item will not be placed in the itemgroup if the item has
been previously set with SET ITEM, or SET ITEMTYPE.&nbsp; 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>&nbsp;<span style="color: rgb(102, 51, 102);"></span><span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;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&nbsp;is  designated),
AREA     (if one&nbsp;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. &nbsp;Normally
 an item&nbsp;will not be chosen by this command if the item has been previously
 set with SET ITEM, or SET ITEMTYPE. &nbsp;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&nbsp;ITEM or SET&nbsp;ITEMTYPE command.</p>












      
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET ITEM</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- serves the same purpose
 as the above command of the same name, but the argument is an object specifier.
 &nbsp;See Object Specifiers below this command listing.&nbsp; &nbsp;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&nbsp;is designated), AREA (if one&nbsp;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. &nbsp;Normally an item&nbsp;will not be chosen by this command
if the item has been previously set with SET ITEM, or SET ITEMTYPE. &nbsp;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&nbsp;ITEM or SET&nbsp;ITEMTYPE command.
      </p>












                     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">LOAD MOBGROUP</span>&nbsp;<span style="color: rgb(102, 51, 102);">([#NUMBER]) [MOB NAME] </span>- will instantiate
 all (or optionally, the given number) mobs of the given name&nbsp;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. &nbsp;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>&nbsp;<span style="color: rgb(102, 51, 102);">([#NUMBER])</span> <span style="color: rgb(102, 51, 102);">[ITEM NAME] </span>- will instantiate all&nbsp;(or
 optionally, the given number)&nbsp;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.&nbsp;&nbsp;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.&nbsp;</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 STAT<span style="color: rgb(102, 51, 102);"> [STAT ID] [VALUE]</span></span><span style="color: rgb(102, 51, 102);"> </span>-
will give the currently designated object (designated using the SET
ITEM/MOB/ROOM/AREA, or LOAD ITEM/MOB command) a new value for their
internal stat designated by the STAT ID. &nbsp;This is an advanced
coding feature; use it wisely.. </p>












                     
      
      <span style="color: rgb(51, 102, 102);"></span>





                     
      
      
      
      
      
      
      
      
      <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. &nbsp;The
parameters  above are optional, and include any text that would be valid
for the behavior  id specified. &nbsp;The text may also optionally include
embedded references  to other quest objects. &nbsp;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.&nbsp;The
 parameters above are optional, and include any text that would be valid
for  the ability id specified. &nbsp;The text may also optionally include
embedded  references to other quest objects. &nbsp;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.&nbsp;The
 parameters above are optional, and include any text that would be valid
for  the ability id specified. &nbsp;The text may also optionally include
embedded  references to other quest objects. &nbsp;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.&nbsp; 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.&nbsp;</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]&nbsp;</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.&nbsp;
     </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&nbsp;room to reset, or re-load from the database.&nbsp; If a&nbsp;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.&nbsp; 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);">&lt;SCRIPT&gt;</span> - This designates
 the beginning of  embedded Javascript         in your quest script.&nbsp;
 The end is designated by a  corresponding     &lt;/SCRIPT&gt;    tag on
its  own line.&nbsp; 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])
 &nbsp;</span></span>- This command will cause the specified external quest
 script file to be loaded and executed as if it were &nbsp;embedded at the
 current point&nbsp;in the script. &nbsp;The &nbsp;quest &nbsp;filename is
 of the same format mentioned above. &nbsp;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.
 &nbsp;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. &nbsp;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). &nbsp;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);">&lt;OPTION&gt; <span style="color: rgb(102, 51, 102);">([QUEST SCRIPT COMMANDS]) <span style="color: rgb(51, 102, 102);">&lt;/OPTION&gt;</span></span></span><span style="color: rgb(51, 102, 102);"><span style="color: rgb(102, 51, 102);">&nbsp;</span></span>- 
 Putting quest script commands inside of &lt;OPTION&gt; tags means that, for
every execution of the quest script, only ONE&nbsp;of the &lt;OPTION&gt;
 tags will be have their script commands executed.&nbsp; The one chosen will
 be selected at random. &nbsp;If only one &lt;OPTION&gt; 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>&nbsp;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;"><a name="questcrobjsp"></a>* Object Specifiers</span><span style="font-weight: bold;">. </span>&nbsp;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. &nbsp;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: &nbsp;"FACTION", 
 "FACTIONGROUP", "AGENT", "AGENTGROUP", "ACTION", "ACTIONGROUP", "TARGET",
 "TARGETGROUP", "MOTIVE", "MOTIVEGROUP", "WHEREHAPPENED", "WHEREHAPPENEDGROUP",
 "WHEREAT", "WHEREATGROUP", "WHENHAPPENED", "WHENHAPPENEDGROUP", "WHENAT",
 "WHENATGROUP", "TOOL", "TOOLGROUP". &nbsp;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. &nbsp;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. &nbsp;There will be one
such object specifier  available for each argument passed to the script.
&nbsp;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). &nbsp;Object specifiers can also be combined using
+ and - characters. &nbsp;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;">.&nbsp;</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. &nbsp;For instance,
the command:&nbsp;"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. &nbsp;  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. &nbsp;Special characters are: '_'
(to make the name in uppercase),  '&amp;' 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. &nbsp;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]&nbsp;</span>- Sets the AGENT variable
 to the [OBJECT]. &nbsp;Will also set the MOB object. &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.&nbsp; &nbsp;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]&nbsp;</span>- Sets the AGENTGROUP
 variable to the [OBJECT]. &nbsp;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. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET AGENTGROUP</span> <span style="color: rgb(102, 51, 102);">[#NUMBER]&nbsp;</span>- Sets the AGENTGROUP
 variable to the currently set MOBGROUP, selecting at most NUMBER mobs randomly
 from that list. &nbsp;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.
&nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET WHEREHAPPENED</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the WHEREHAPPENED
 variable to the [OBJECT]. &nbsp;Will also set the ROOM object. &nbsp;See
      <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this command listing.&nbsp; &nbsp;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]&nbsp;</span>- Sets the&nbsp;WHEREHAPPENEDGROUP 
 variable to the [OBJECT]. &nbsp;Will also set the ROOMGROUP object to the
 same, as well as designate one random room&nbsp;from the group as the&nbsp;WHEREHAPPENED
 and the ROOM. &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET WHEREHAPPENEDGROUP</span> <span style="color: rgb(102, 51, 102);">[#NUMBER]&nbsp;</span>- Sets the&nbsp;WHEREHAPPENEDGROUP 
 variable to the currently set ROOMGROUP, selecting at most NUMBER rooms randomly
from that list. &nbsp;Will also set the ROOMGROUP object to the same, as
well as designate one random room from the group as the&nbsp;WHEREHAPPENED
 and the ROOM. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET WHEREAT</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the WHEREAT
variable to the [OBJECT]. &nbsp;Will also set the ROOM object. &nbsp;See
      <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this command listing.&nbsp; &nbsp;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&nbsp;</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]&nbsp;</span>- Sets the&nbsp;WHEREATGROUP
 variable to the [OBJECT]. &nbsp;Will also set the ROOMGROUP object to the
 same, as well as designate one random room&nbsp;from the group as the&nbsp;WHEREAT
 and the ROOM. &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET&nbsp;</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]&nbsp;</span>- Sets the&nbsp;WHEREATGROUP 
 variable to the currently set ROOMGROUP, selecting at most NUMBER rooms randomly
from that list. &nbsp;Will also set the ROOMGROUP object to the same, as
well as designate one random room from the group as the&nbsp;WHEREAT and
the ROOM. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET WHENHAPPENED</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the WHENHAPPENED
 variable to the timeclock [OBJECT]. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this 
 command listing.&nbsp; &nbsp;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]&nbsp;</span>- Sets the
 WHENHAPPENED variable to the current time plus or minus the hours difference
 specified. &nbsp;See<a href="ArchonTome.html#questcrobjsp"> Object Specifiers</a>
 above this command listing.&nbsp;
&nbsp;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]&nbsp;</span>- Sets the&nbsp;WHENHAPPENEDGROUP
 variable to the [OBJECT]. &nbsp;Will also&nbsp;designate one random time
from the group as the&nbsp;WHENHAPPENED. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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);">]&nbsp;</span>- Sets the&nbsp;WHENHAPPENEDGROUP
 list to the current time plus or minus the list of hours-differences given.
 &nbsp;Will also designate one random time from the group as the&nbsp;WHENHAPPENED.
 &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET WHENAT</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the WHENHAPPENED
 variable to the timeclock [OBJECT]. &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this 
 command listing.&nbsp; &nbsp;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]&nbsp;</span>- Sets the
 WHENAT variable to the current time plus or minus the hours difference specified.
 &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
above this command listing.&nbsp; &nbsp;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]&nbsp;</span>- Sets the&nbsp;WHENATGROUP
 variable to the [OBJECT]. &nbsp;Will also&nbsp;designate one random time
from the group as the&nbsp;WHENAT. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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);">]&nbsp;</span>- Sets the&nbsp;WHENATGROUP
 list to the current time plus or minus the list of hours-differences given.
 &nbsp;Will also designate one random time from the group as the&nbsp;WHENAT.
 &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET FACTION</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the FACTION
variable to the faction string [OBJECT]. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above
this command listing.&nbsp; &nbsp;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]&nbsp;</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]&nbsp;</span>- Sets the FACTIONGROUP
 variable to the [OBJECT]. &nbsp;Will also designate one random faction from 
 the group as the FACTION. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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]&nbsp;</span>- Sets the FACTIONGROUP
 variable to NUMBER random factions, or ALL to set it to all of them. &nbsp;Will
 also designate one random faction from the group as the FACTION. &nbsp;See
 <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
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. &nbsp;Will also designate one random faction from the group as the
FACTION. &nbsp;The faction names are space delimited, and names grouped with
double-quotes.&nbsp;</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]&nbsp;</span>- Sets the TARGET variable
 to the [OBJECT]. &nbsp;Will also set the MOB or ITEM object depending on
what gets designated. &nbsp;See <a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.&nbsp;
 &nbsp;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]&nbsp;</span>- Sets the TARGETGROUP
 variable to the [OBJECT]. &nbsp;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.  &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET TARGETGROUP</span> <span style="color: rgb(102, 51, 102);">[#NUMBER]&nbsp;</span>- Sets the TARGETGROUP
 variable to the currently set MOBGROUP (if one is currently set) or ITEMGROUP
 if not. &nbsp;It will select at most NUMBER objects randomly from that list.
 &nbsp;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. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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]&nbsp;</span>- Sets the TOOL variable
 to the [OBJECT]. &nbsp;Will also set the MOB or ITEM object depending on
what gets designated. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.&nbsp;
 &nbsp;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]&nbsp;</span>- Sets the TOOLGROUP
 variable to the [OBJECT]. &nbsp;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.  &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET TOOLGROUP</span> <span style="color: rgb(102, 51, 102);">[#NUMBER]&nbsp;</span>- Sets the TOOLGROUP
 variable to the currently set MOBGROUP (if one is currently set) or ITEMGROUP
 if not. &nbsp;It will select at most NUMBER objects randomly from that list.
 &nbsp;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. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command listing.</p>












     
      
      
      
      
      
      
      
      
      <p><span style="color: rgb(51, 102, 102);">SET MOTIVE</span> <span style="color: rgb(102, 51, 102);">[OBJECT]&nbsp;</span>- Sets the MOTIVE variable
 to the&nbsp;string [OBJECT]. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command
 listing.&nbsp; &nbsp;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&nbsp;</span><span style="color: rgb(51, 102, 102);">MOTIVE</span> <span style="color: rgb(102, 51, 102);">[STRING]&nbsp;</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&nbsp;</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]&nbsp;</span>- Sets the MOTIVEGROUP
 variable to the [OBJECT]. &nbsp;Will also designate one random string from 
 the group as the MOTIVE. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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&nbsp;</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. &nbsp;Will also designate one random string
 from the group as the MOTIVE. &nbsp;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]&nbsp;</span>- Sets the ACTION variable
 to the&nbsp;string [OBJECT]. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 above this command
 listing.&nbsp; &nbsp;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]&nbsp;</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]&nbsp;</span>- Sets the ACTIONGROUP
 variable to the [OBJECT]. &nbsp;Will also designate one random string from 
 the group as the ACTION. &nbsp;See&nbsp;<a href="ArchonTome.html#questcrobjsp">Object Specifiers</a>
 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. &nbsp;Will also designate one random string
 from the group as the ACTION. &nbsp;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.&nbsp;      The Javascript must be located between the &lt;SCRIPT&gt; 
   and  &lt;/SCRIPT&gt;      quest script commands to be recognized.&nbsp; 
 </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&nbsp;quest
script       language&nbsp;described  in  this document.&nbsp; You should
read the&nbsp;JavaScripting       section of  the  CoffeeMud </font><a href="Programming.html"><font size="3">Programming   Guide</font></a><font size="3">&nbsp;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">&nbsp; and </font><a href="http://www.mozilla.org/rhino/"><font size="3">http://www.mozilla.org/rhino/</font></a><font size="3">&nbsp;.</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.&nbsp;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&nbsp;quest manager engine
  will   strip    out  all semicolons as part of its command parsing process.&nbsp;
     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.&nbsp;
  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.&nbsp; 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>).&nbsp; There are
also methods  for  properly adding    other  such mobs and&nbsp;items to
your quest (<font face="Courier New" size="2">runtimeRegisterObject</font>),
or  for adding&nbsp;abilities,    behaviors,     or effects to existing objects
 (&nbsp;<font face="Courier New" size="2">runtimeRegisterAbility,  runtimeRegisterEffect,
      runtimeRegisterBehavior</font>).&nbsp;    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.&nbsp;&nbsp;The QuestState object
         made available by  this method contains information on the current
  state      of your quest  Script.&nbsp;&nbsp;&nbsp;There are&nbsp;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.&nbsp;&nbsp;&nbsp;     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. &nbsp;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="holidays"><strong><font color="#008000" size="5">Holidays</font></strong></a></p>












                     
      
      
      
      
      
      
      Holidays are a special/reserved quest defined by file /resources/quests/holidays/holidays.quest. <br>

      <br>

They are very simple Scriptless quests that can be started at random
intervals, or on certain mud dates, or&nbsp;real-life dates.&nbsp; The
holidays will only impact the areas specified by the holiday settings,
and only the mobs&nbsp;in those areas specified in the settings, and
only with the features you specify.&nbsp; <br>

      <br>

Use LIST HOLIDAYS to see a&nbsp;list of all defined holidays and the
areas hey are defined for.&nbsp; By default, 3 special-case weather
related&nbsp;holidays are included which impact any area that meets
their special criteria.&nbsp; <br>

      <br>

You can use MODIFY HOLIDAY &lt;name&gt; to&nbsp;change the settings for
a holiday, DESTROY HOLIDAY &lt;name&gt; to delete one, or CREATE
HOLIDAY name to create a new&nbsp;one that will automatically apply to
the area the creator is standing in when it is created.<br>

      <br>

Here are the standard settings for holidays:<br>

      <br>

      <br>

      
      <table style="text-align: left; background-color: rgb(255, 255, 153); width: 100%;" border="1" cellpadding="2" cellspacing="2">

        <tbody>

          <tr>

            <td><span style="font-weight: bold;">Property</span></td>

            <td><span style="font-weight: bold;">Description</span></td>

          </tr>

          <tr>

            <td style="font-style: italic;">Holiday Name</td>

            <td>A unique name for your holiday. &nbsp;It should be unique not only among holidays, but also among quests.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Schedule Type</td>

            <td>The type of time-trigger for the holiday, whether a random interval, a mud-date, or a real-life date.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Interval Ticks</td>

            <td>If the time trigger is a random interval, this is the
math expression to derive that interval. &nbsp;You may use normal math
operators like +-/*(), as well as the special ? operator to generate a
random number. &nbsp;1?5 would mean a random number between 1-5.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Mud-Day</td>

            <td>If the time trigger is a mud-date, this is that date in month-day numeric format (like 1-30).</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Real Life Date</td>

            <td>If the time trigger is a real-life date, this is that date in month-day numeric format (like 12-31).</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Duration Ticks</td>

            <td>The number of ticks (4 second periods) that the changes specified below will be in effect once the holiday triggers.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Areas List</td>

            <td>The list of areas to apply the holiday to. &nbsp;Area names are space separated, with multiple words grouped in double quotes.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Mask for mobs that apply</td>

            <td>A zapper-mask that determines which mobs inside the
designated area will benefit from the changes specified below.
&nbsp;See Prop_HaveZapper for an example of a zapper mask, or just hit
? at the prompt here.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Mood setting</td>

            <td>If this entry is blank, it has no effect.
&nbsp;Otherwise, it is the name of the MOOD to force all the mobs to be
in during your holiday. &nbsp;Use ? for a list.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Aggressive Setting</td>

            <td>If this entry is blank, it has no effect.
&nbsp;Otherwise, it makes all the mobs aggressive during your holiday.
&nbsp;Use ? to get a list of valid parameters. &nbsp;Remember that this
field must not be blank if you want it to work!</td>

          </tr>

          <tr>

            <td style="font-style: italic;">Price Factor</td>

            <td>This change will only apply to mob shopkeepers.
&nbsp;It is a list of price-changes to make to specified items during
the holiday. &nbsp;See help on GenShopKeeper for more information on
Price Factors. &nbsp;You can specify as many different price-factors
for as many different types of items as you need to.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">MudChat for words...</td>

            <td>This is a list of trigger words that mobs will respond
to when spoken to, and what they will respond. &nbsp;You can have as
many trigger words groupings as you like, with as many responses to
those trigger words as you need. &nbsp;Each response begins with a
single digit weight, to show how often that selection should be chosen
among the others.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">MOB Behavior</td>

            <td>A list of Behaviors to apply to mobs during your
holiday. &nbsp;See the Archon's Guide under GenMOB for more information
on this, as it works the exact same way. &nbsp;Use ? for a list, and ?
will also work in the parameters for help.</td>

          </tr>

          <tr>

            <td style="font-style: italic;">MOB Property</td>

            <td>A list of Affects/Effects to apply to mobs during your
holiday. &nbsp;Again, see the Archon's Guide for more information on
how this works. &nbsp;Use ? for a list, and ? will also work in the
parameters for help.</td>

          </tr>

        
        </tbody>
      
      </table>












                     
      
      
      
      
      
      
      
      
      <p class="MsoNormal"><a name="socials"><strong><font color="#008000" size="5">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.&nbsp; Without
them, players couldn't smile, roll their eyes, or flip  anyone off without
considerable typing.&nbsp; 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.&nbsp;       There   are  actually four different kinds of TWIGGLE
 we will make: TWIGGLE      (no parameters),   TWIGGLE SELF, TWIGGLE ALL,
and TWIGGLE (to&nbsp;a  target).&nbsp;     This is  type 1  of 4.<br>












                        <br>












                        <em>You wave your arms...<br>












                        Social name  'TWIGGLE' Enter new.<br>












                        :&nbsp;<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:&nbsp;</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'.&nbsp; 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&nbsp;<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'.&nbsp; Enter  new.<br>












                        :&nbsp;<br>












                        </em><br>












                        This is what the people in the room see when you
perform  a   social.<br>












                        <br>












                        <strong>&lt;S-NAME&gt; wiggles &lt;S-HIS-HER&gt;
toes.</strong><br>












                        <br>












                        &lt;S-NAME&gt; 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:&nbsp;<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.&nbsp;</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:&nbsp;<br>












                        </em><br>












                        Because this portion is the SELF portion, choose
"<strong>S</strong>".         <br>












                        <br>












                        <em>You see 'null'.&nbsp; 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'.&nbsp; Enter new.<br>












                        :<br>












                        </em><br>












                        What the others in the room  see when you perform 
the social.<br>












                        <br>












                        <strong>&lt;S-NAME&gt; wiggles  &lt;S-HIS-HER&gt; 
toes at  &lt;S-HIM-HERSELF&gt;.        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!&nbsp;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'.&nbsp; 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'.&nbsp; Enter new.<br>












                        :<br>












                        </em><br>












                        What those&nbsp;twiggled at  people&nbsp;witness.<br>












                        <br>












                        <strong>&lt;S-NAME&gt; wiggles &lt;S-HIS-HER&gt;
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      &lt;T-NAME&gt;</font><br>












                        <br>












                        </strong>Yay!&nbsp;Type 4! The TARGET! &lt;T-NAME&gt;
 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&nbsp;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'.&nbsp; 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 &lt;T-NAME&gt;. 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'.&nbsp; Enter new.<br>












                        :<br>












                        </em><br>












                        What those bystanders  witness.<br>












                        <br>












                        <strong>&lt;S-NAME&gt; wiggles &lt;S-HIS-HER&gt;
toes  at  &lt;T-NAME&gt;.        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'.&nbsp; Enter  new.<br>












                        :<br>












                        </em><br>












                        If you were the unfortunate victim, this is what
you  would   see.<br>












                        <br>












                        <strong>&lt;S-NAME&gt; wiggles &lt;S-HIS-HER&gt;
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'.&nbsp; 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  &lt;T-NAME&gt;)     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>












                        &lt;S-HIS-HER&gt; Outputs 'Your' if Observer=Source,
  otherwise     'His'/'Her'.     <br>












                        &lt;S-HIM-HER&gt; Outputs 'You'  if Observer=Source,
 otherwise    'Him'/'Her'.      <br>












                        &lt;S-NAME&gt; Outputs 'You' if Observer=Source,
otherwise    the   Name.    <br>












                        &lt;S-NAMESELF&gt; Outputs 'Yourself' if  Observer=Source, 
  otherwise     the   Name <br>












                        &lt;S-HE-SHE&gt;  Outputs 'You' if Observer=Source,
 otherwise    'He'/'She'      <br>












                        &lt;S-SIRMADAM&gt; Outputs 'Sir'/'Madam' <br>












                        &lt;S-IS-ARE&gt; Outputs 'Are' if Observer=Source,
  otherwise    'Is'.    <br>












                        &lt;S-HAS-HAVE&gt; Outputs 'Have' if  Observer=Source,
 otherwise     'Has'.    <br>












                        &lt;S-YOUPOSS&gt;  Outputs 'Your' if Observer=Source,
 otherwise     the   Name`s   <br>












                        &lt;S-HIM-HERSELF&gt; Outputs 'Yourself' if  Observer=Source,
    otherwise      the 'Himself'/'Herself' <br>












                        &lt;S-HIS-HERSELF&gt; Outputs 'Yourself' if  Observer=Source,
    otherwise      the 'Hisself'/'Herself' <br>












                        &lt;T-HIS-HER&gt; Outputs 'You' if Observer=Target,
  otherwise    'His'/'Her'.      <br>












                        &lt;T-HIM-HER&gt; Outputs 'You'  if Observer=Target,
 otherwise    'Him'/'Her'.      <br>












                        &lt;T-NAME&gt; Outputs 'You' if Observer=Target,
otherwise    the   Name.    <br>












                        &lt;T-NAMESELF&gt; Outputs 'Yourself' if  Observer=Target, 
  otherwise     the   Name <br>












                        &lt;T-HE-SHE&gt;  Outputs 'You' if Observer=Target,
 otherwise    'He'/'She'      <br>












                        &lt;T-SIRMADAM&gt; Outputs 'Sir'/'Madam' <br>












                        &lt;T-IS-ARE&gt; Outputs 'Are' if Observer=Target,
  otherwise    'Is'.    <br>












                        &lt;T-HAS-HAVE&gt; Outputs 'Have' if  Observer=Target,
 otherwise     'Has'.    <br>












                        &lt;T-YOUPOSS&gt;  Outputs 'Your' if Observer=Target,
 otherwise     the   Name   with an '`s' <br>












                        &lt;T-HIM-HERSELF&gt; Outputs 'Yourself' if  Observer=Source,
    otherwise      the 'Himself'/'Herself' <br>












                        &lt;T-HIS-HERSELF&gt; Outputs 'Yourself' if  Observer=Source,
    otherwise      the 'Hisself'/'Herself'</p>












                     
      
      
      
      
      
      
      
      
      <p class="MsoNormal"><a name="polls"><strong><font color="#008000" size="5">Polls</font></strong></a></p>












                     
      
      
      
      
      
      
      
      
      <p>Polls can be an entertaining and sometimes amusing way  to&nbsp;measure
         the thoughts of players.&nbsp; CoffeeMud supports  single-selection 
   voting      among options which you can designate.&nbsp; 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.&nbsp; When a  poll is created
         or modified, you are presented with a list of properties to fill
 in.&nbsp;        Pressing enter will leave the property unchanged.&nbsp;
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.&nbsp; 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.&nbsp;      This   string is similar in functionality to the one
described        in   the Prop_HaveZapper.&nbsp;   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.&nbsp; This
flag  is         automatically    set   to false if an expiration date (below)
is used   and        passes.&nbsp;     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.&nbsp;       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.&nbsp; 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>









      <br>









      
      
      
      
      
      
      
      
      <p class="MsoNormal"><a name="clans"><strong><font color="#008000" size="5">Clans</font></strong></a></p>












                     
      
      
      
      
      
      
      
      
      <p>Clans serve many purposes in the CoffeeMud engine. &nbsp;They provide
a way for multiple players to own property, conquer areas, and exert control.
  &nbsp;They also provide a means of expressing politics between themselves
  and other groups, or even with each other. &nbsp;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. &nbsp;Clans can be tyrannical,
run by a select few, run by elected members, or run collectively. &nbsp;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. &nbsp;This
  ability can be removed by disabling the several clan creation and management
  commands from the coffeemud.ini file using the DISABLE= field. &nbsp;Regardless,
  there is also an Archon mechanism for creating and managing clans.</p>












                     
      
      
      
      
      
      
      
      
      <p><strong>CREATE CLAN &lt;clanname&gt;</strong></p>












                     
      
      
      
      
      
      
      
      
      <p>This command will create a clan with the given name.&nbsp; You can then
  enter the following commands at any time:<br>












         </p>












            
      
      
      
      
      
      
      
      
      <p><strong>DESTROY CLAN &lt;clanname&gt; </strong></p>












            
      
      
      
      
      
      
      
      
      <p><strong>MODIFY CLAN &lt;clanname&gt;</strong></p>












                      
      
      
      
      
      
      
      
      
      <p>When a clan modified, you are presented with a list of properties to fill
   in.&nbsp;        Pressing enter will leave the property unchanged.&nbsp;
  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.
 &nbsp;It  can only be destroyed. &nbsp;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. &nbsp;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. &nbsp;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. &nbsp;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. &nbsp;The
  mask is a standard CoffeeMud ZapperMask. &nbsp;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. &nbsp;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. &nbsp;Normally this is set to Applicant,
meaning  that  the clan must approve all new members. &nbsp;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). &nbsp;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. &nbsp;This list can be altered manually
 here.</td>












             </tr>












                                   
  
  
  
  
        
        
        
        
        
        
        
        
        </tbody>    
      
      
      
      
      
      
      
      
      </table>












            
      
      
      
      
      
      
      
      
      <p><br>












         </p>











      
      
      
      
      
      
      
      
      <p style="text-align: left;"><strong></strong></p>











      
      
      
      
      
      
      
      
      <p style="text-align: left;"><strong>
                   </strong></p>










      </td>








    </tr>








  
  
  
  
  
  
  
  
  </tbody>
</table>








</center>









</body>
</html>