Code Search for Developers
 
 
  

configfiles.html from POL-distro scripts at Krugle


Show configfiles.html syntax highlighted

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Config File Reference</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="POL, EScript, documentation" name=keyword>
<META content="Racalac, Rykard" name=Author>
<STYLE type=text/css>BODY {
	FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
TD {
	FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
P {
	FONT-WEIGHT: normal; FONT-SIZE: 8pt; COLOR: #000000; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
</STYLE>
</HEAD>
<BODY bgColor=#f0f0f0>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; TEXT-ALIGN: left">POL 
Configuration Files </P>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; TEXT-ALIGN: left">This is a list 
of all the files that are read by or used by the Core. Any other files are used 
by user scripts and are not listed here. </P>
<P>In the following config file explanations, some punctuation is used to show 
repetition, arbitrary values, and optional entries: 
<UL>
  <LI>No punctuation: text must be the same verbatim. 
  <LI>enclosed in brackets [ ]: text is an optional entry. 
  <LI>enclosed in parenthesis ( ): text is an arbitrary value. 
  <LI>enclosed in curly braces { }: text is the default value. 
  <LI>elipsis ... : repeat entries are allowed. </LI></UL>This means the 
punctuation in these cases should NOT be in the actual config files used by POL, 
they only appear here for information purposes. Exception: curly braces { } are 
used to define an element in a config file. These must be present in the actual 
file. 
<P></P>
<HR>
<BR><?xml version="1.0" encoding="UTF-8"?>
<P style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; TEXT-ALIGN: left">Last Modified: 
6/18/2003<BR></P>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#animxlate.cfg>
    <TH align=middle colSpan=2>animxlate.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the mappings for animation codes for standing and 
      while on horseback.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>OnMount
{
    [(int normal animation) (int mounted animation)]...
}
</PRE></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#armrdesc.cfg>
    <TH align=middle colSpan=2>armrdesc.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes, d'oh!</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Obselete! Use itemdesc.cfg</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>[same as an 'Armor' entry in itemdesc.cfg]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Please don't use this.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#itemdesc.cfg">itemdesc.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#armrzone.cfg>
    <TH align=middle colSpan=2>armrzone.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines armor zones for character layers, and chance to hit 
      each zone.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>ArmorZone
{
    Name    (string zone name)
    Chance  (int chance to hit)
    [Layer  (int UO client layer)]...
}
[ArmorZone...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Chance is a percent chance to hit this zone. I.e. 'Body' 
      might be a 44 percent chance to hit, and 'Head' a 14 percent chance.</TD></TR>
  <TR>
    <TD colSpan=2>Layer is for the different equipped item layers the UO 
      client uses. For example, items that are only equipped on the arms (like 
      platemail arms) are layer 19. You may define multiple layers per 
  zone.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#attributes.cfg>
    <TH align=middle colSpan=2>attributes.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines Attribute names and aliases</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Attribute (Attribute_Name)
{
    [Alias                      (Alias_Name)]...
    [GetIntrinsicModFunction    (script_name:exported_func_name)]
}
[Attribute...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Attribute_Name defines the UNIQUE name for this attribute, 
      like 'Cooking', 'Tactics', 'Strength', etc.</TD></TR>
  <TR>
    <TD colSpan=2>Aliases are optional and any number maybe be assigned for 
      each attribute. This way 'STR' may be used in place of 'Strength'</TD></TR>
  <TR>
    <TD colSpan=2>At the LEAST, these attributes must be defined: 'Strength', 
      'Intelligence', 'Dexterity', 'Parry', and 'Tactics' for use in internal 
      calculations.</TD></TR>
  <TR>
    <TD colSpan=2>GetIntrinsicModFunction returns a value between -30000 and 
      +30000 that is added to the Attribute "base" value to obtain the 
      "effective" value for the attribute. The function is called when UO.EM 
      RecalVitals is called.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#uoclient.cfg">uoclient.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#vitals.cfg">vitals.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#auxsvc.cfg>
    <TH align=middle colSpan=2>auxsvc.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines an Auxilliary Interface Service script in the 
      current package.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>AuxService
{
    Port (intger port)
    Script (string script filename)
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Port is a different port than the gameserver uses. This will 
      be the port your AUX interface external program uses to connect to the 
      server.</TD></TR>
  <TR>
    <TD colSpan=2>Script is the script filename the core will call when it 
      receives an AUX connection (the 'program' in the file will be 
  called)</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#bannedips.cfg>
    <TH align=middle colSpan=2>bannedips.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines IP address ranges that are not allowed to connect to 
      the game server.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>BannedIP
{
    IPMatch (IPaddress)[/(netmask)]
}
[BannedIP...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>If netmask is not defined, the default is 255.255.255.255 
      (exact IP match).</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#boats.cfg>
    <TH align=middle colSpan=2>boats.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the locations of all item components for each boat 
      'facing' graphic.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Boat
{
    ObjType                     (int boat multi graphic)
    TillerMan                   (int item graphic) (x offset) (y offset)
    PortGangplankExtended       (int item graphic) (x offset) (y offset)
    PortGangplankRetracted      (int item graphic) (x offset) (y offset)
    StarboardGangplankExtended  (int item graphic) (x offset) (y offset)
    StarboardGangplankRetracted (int item graphic) (x offset) (y offset)
    Hold                        (int item graphic) (x offset) (y offset)
}
[Boat...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>ObjType should be &gt;= 0x4000.</TD></TR>
  <TR>
    <TD colSpan=2>All the x,y tile distance offsets are from the ship's mast. 
      As normal on the map, positive X is east, positive Y is south. It doesn't 
      matter what 'facing' of the boat this is for, parts of the boat that are 
      east of the mast are defined with positive X values, parts south of the 
      mast are defined with positive Y values, and vice 
versa.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#circles.cfg>
    <TH align=middle colSpan=2>circles.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures the 'spell circles', groups of increasing power 
      spells.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Circle (int number)
{
    Mana        (int manacost)
    Difficulty  (int spell difficulty)
    PointValue  (int skill gain value)
    Delay       (int second casting delay)
}
[Circle...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>This file used to determine mana, skill gain, etc. for each 
      group of spells, but it's probably obselete 
now.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#cmds.cfg>
    <TH align=middle colSpan=2>cmds.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures the command level heirarchy for the 
  server.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>CmdLevel (cmdlevel name)
{
    DIR   (string path to this cmdlevel's textcmd directory)
    [DIR...]
    Alias (string alias name for this cmdlevel)
    [Alias...]
}
[CmdLevel...] {each successive element is one level higher than the last}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Command levels are defined in increasing order of power. 
      Command level 'numbers' will be assigned automatically from this 
  file.</TD></TR>
  <TR>
    <TD colSpan=2>If you change the cmdlevel names from 
      player/coun/seer/gm/admin/test, it is recommended you define 'Alias' lines 
      to associate these basic cmdlevels with your custom cmdlevels. This way, 
      package cmds.cfg files will place their commands into your command 
      structure.</TD></TR>
  <TR>
    <TD colSpan=2>Additional DIR properties allow you to specify additional 
      commands in packages, just set your path to i.e. /pkg/mypkg/textcmd/admin 
    .</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#combat.cfg>
    <TH align=middle colSpan=2>combat.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines some combat-specific options.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>[DisplayParrySuccessMessages (0/1)]
[WarmodeInhibitsRegen        (0/1)]
</PRE></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#console.cfg>
    <TH align=middle colSpan=2>console.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures command characters that activate scripts when 
      typed on the POL console.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Commands
{
    [CMD  (letter)  (script) [(description}]]
    [CMD...]
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>'letter' is case sensative, so 'a' can run a different 
      script than 'A'. And '^A' is activated with CTRL-A</TD></TR>
  <TR>
    <TD colSpan=2>'script' must be placed in /scripts/console.</TD></TR>
  <TR>
    <TD colSpan=2>'?' is the help command - it prints the descriptions of all 
      the other console commands.</TD></TR>
  <TR>
    <TD colSpan=2>The number keys (0-9) are reserved for the shutdown scripts 
      (after a certain delay)</TD></TR>
  <TR>
    <TD colSpan=2>'^C' (CTRL-C) is reserved for immediate core shutdown.</TD></TR>
  <TR>
    <TD colSpan=2>There are three special command script names: [lock] locks 
      the console, no further console commands may be entered. [unlock] unlocks 
      the console from the locked state, and [lock/unlock] toggles the lock 
      status of the console.</TD></TR>
  <TR>
    <TD colSpan=2>Reloadable with ReloadConfiguration() (polsys.em) or SIGHUP 
      under linux</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#ecompile.cfg>
    <TH align=middle colSpan=2>ecompile.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>same directory as ecompile.exe only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>ecompile</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures module, include, and package paths for 
    compiling.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>ModuleDirectory (path to .em files)
IncludeDirectory (path to parent dir of non-packaged includes)
PolScriptRoot (path to non-packaged scripts)
PackageRoot (path to package root)
[PackageRoot...]
[GenerateListing (0/1 {default 0})]
[GenerateDebugInfo  (0/1 {default 0})]
[GenerateDebugTextInfo (0/1 {default 0})]
[DisplayWarnings (0/1 {default 0})]           //same as -w flag
[CompileAspPages (0/1 {default 0})]           //same as -a flag
[OnlyCompileUpdatedScripts (0/1 {default 0})] //same as -u flag
[GenerateDependencyInfo (0/1 {default 0})]    //Generate .dep files whether or not updating
[DisplayUpToDateScripts (0/1 {default 0})]    //Display the "xxx/script.ecl is up-to-date" message, or not.
[AutoCompileByDefault (0/1 {default 0})]      //If set, and you don't pass any script names or -r or -A, 
                                              //will perform an auto compile.
[UpdateOnlyOnAutoCompile (0/1 {default 0})]   //If set, autocompile will only update modified scripts.
[DisplaySummary (0/1 {default 0})]            //Displays overall totals after compilation, unless compilation 
                                              //aborted due to a compile error.

</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>The 'generate' properties allow default behavior for 
      generating listing or debug files.</TD></TR>
  <TR>
    <TD colSpan=2>If not found, ecompile will try to locate module and include 
      directories from the system environment variables ECOMPILE_PATH_EM and 
      ECOMPILE_PATH_INC.</TD></TR>
  <TR>
    <TD colSpan=2>use ECOMPILE_CFG_PATH environment variable to find 
      ecompile.cfg. (note that normally it tries to look where the executable 
      is. Some shells don't always pass this, particularly if you're using batch 
      files or shell scripts - try putting the full path to ecompile in your 
      batch file)</TD></TR>
  <TR>
    <TD colSpan=2>Using this file allows 'packaged includes' because now 
      ecompile knows about the path to packages, allowing it to find include 
      files using the normal package descriptor format 
  ':pkgname:includename:'</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#equip.cfg>
    <TH align=middle colSpan=2>equip.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core, on behalf of UO::EquipFromTemplate</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines default outfit templates, usually for NPCs, using 
      EquipFromTemplate(character,templatename).</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Equipment (templatename)
{
    [Armor  (item name or objtype) [(color)]]
    [Weapon (item name or objtype) [(color)]]
    [Equip  (item name or objtype) [(color)]]
}
[Equipment...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Note 'Armor', 'Weapon', and 'Equip' are all equvilent, they 
      no longer hold any seperate meaning.</TD></TR>
  <TR>
    <TD colSpan=2>Careful with comment lines in this file, they might cause 
      problems.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#fileaccess.cfg>
    <TH align=middle colSpan=2>fileaccess.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>per-package file.em access</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Specifies what packages have file read/write/append 
    access.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>FileAccess
{
	[Package (string package name, or *)]...
	[Directory (string directory name, or *)]...
	[Extension (string file extension name, or *)]...
	[AllowRead (0/1 {default 0})]
	[AllowWrite (0/1 {default 0})]
	[AllowAppend (0/1 {default 0})]
	[AllowRemote (0/1 {default 0})]	
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>'*' above means it applies to all packages.</TD></TR>
  <TR>
    <TD colSpan=2>AllowRemote means the package has access to other files, not 
      just files in its package directory.</TD></TR>
  <TR>
    <TD colSpan=2>Package matches the string name in a pkg.cfg. You can define 
      multiple Package properties.</TD></TR>
  <TR>
    <TD colSpan=2>Directory not implimented yet</TD></TR>
  <TR>
    <TD colSpan=2>Extension examples are '.cfg', '.htm', etc. You can define 
      multiple Extension properties.</TD></TR>
  <TR>
    <TD colSpan=2>This config is reloadable on-demand. Use 
      ReloadConfiguration() (polsys.em) or SIGHUP under 
linux.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#itemdesc.cfg>
    <TH align=middle colSpan=2>itemdesc.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config and/or any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2>CreateItem functions</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines Item descriptions, to be assigned to individual 
      items on creation. Note each UObject class expects different properties to 
      be present, so each will be listed below. An actual itemdesc.cfg file 
      would not look exactly like this. Class Name must be one of: CONTAINER 
      ITEM DOOR WEAPON ARMOR BOAT HOUSE MAP .</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>(Class Name)  (integer unique 'objtype')
{
    (PropertyName)      (value)
    [PropertyName...]
}

Item (objtype)
{
    Name            (string unique object name)
    [Name...]
    Graphic         (int tile number)
    [Color          (int color {default 0})]
    [Facing         (int facing {default 0})]
    [Desc           (string description {default empty})]
    [Tooltip        (string tooltip {default empty})]
    [WalkOnScript   (string scriptname)]
    [Script         (string scriptname)]
    [EquipScript    (string scriptname)]
    [UnequipScript  (string scriptname)]
    [ControlScript  (string scriptname)]
    [CreateScript   (string scriptname)]
    [DestroyScript  (string scriptname)]
    [MethodScript   (string scriptname)]
    [RequiresAttention  (0/1 {default 1})]
    [Lockable       (0/1 {default 0})]
    [VendorSellsFor (int gold {default 0})]
    [VendorBuysFor  (int gold {default 0})]
    [DecayTime      (int minutes {default servspecopt.cfg option})]
    [Movable        (0/1)]
    [DoubleClickRange   (int range {default servspecopt.cfg option})]
    [UseRequiresLOS (0/1 {default 1})]
    [GhostsCanUse   (0/1 {default 0})]
    [CanUseWhileFrozen (0/1 {default 0})]
    [CanUseWhileParalyzed (0/1 {default 0})]
    [Newbie         (0/1 {default 0})]
    [Invisible      (0/1 {default 0})]
    [DecaysOnMultis (0/1 {default 0})]
    [BlocksCastingIfInHand   (0/1 {default 0})]
    [StrRequired    (int strength {default 0})]
    [Weight         (int weight {default tiledata value})]
    [OldObjtype     (int old objtype)]...
    [StackingIgnoresCProps   (propname1) [(propname2)]... ]
    [Resource       (string resource name) (int amount)]
    [Resource...]
}
Container (objtype)
{
    {everything Item can have, plus: }
    Gump            (int gump graphic)
    MinX            (int gump pixel coordinate)
    MaxX            (int gump pixel coordinate)
    MinY            (int gump pixel coordinate)
    MaxY            (int gump pixel coordinate)
    [MaxWeight      (int weight {default to servspecopt.cfg})]
    [MaxItems       (int number {default to servspecopt.cfg})]
    [CanInsertScript    (string scriptname)]
    [OnInsertScript     (string scriptname)]
    [CanRemoveScript    (string scriptname)]
    [OnRemoveScript     (string scriptname)]
}
Door (objtype)
{    
    {everything Item can have, plus: }
    XMod            (int x modification when door toggled)
    YMod            (int y modification when door toggled)
}
House (objtype)
{
    {everything Item can have, plus: }
    MultiID         (int multiID number for this house)
}
Boat (objtype)
{
    {everything Item can have, plus: }
    MultiID         (int multiID number for this house)
}
Map (objtype)
{
    {everything Item can have, plus: }
    Editable        (0/1 {default 1})]
}
Weapon (objtype)
{
    {everything Item can have, plus: }
    Speed            (int weapon attack speed)
    Damage           (die-string value)
    Attribute        (string attribute name for skill this weapon requires)
    [Anim            (int animation ID number for attack {default 0x9})]
    [MountedAnim     (int animationID on mount {defaults to value in animxlate.cfg})]
    [HitSound        (int soundID)]
    [MissSound       (int soundID)]
    [HitScript       (string script name)]
    
    [Projectile      (0/1 {default 0})]
    [ProjectileType  (int objtype of projectile)]
    [ProjectileAnim  (int tile number of animation)]
    [ProjectileSound (int soundID for projectile shoot)]
    
    [TwoHanded       (0/1 {default 0})]
    [MinRange        (int minimum range to attack {default 2 if projectile weapon, 0 else})]
    [MaxRange        (int maximum range to attack {default 20 if projectile weapon, 1 else})]
    [Intrinsic       (0/1 {default 0})]
}
Armor (objtype)
{
    {everything Item can have, plus: }
    AR               (int armor rating)
    [OnHitScript     (string script name)]   
    [Coverage        (string armor zone name {defaults to layer number zone})]
    [Coverage...]
}
...and lots of any of these in the file...
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Note: if objtype &lt; 0x4000, the 'graphic' property is not 
      required, it is assumed objtype=graphic in this case.</TD></TR>
  <TR>
    <TD colSpan=2>Valid ranges for custom items are 0x5000-0xEFFF 
      (0xF000-0xFFFF reserved by core)</TD></TR>
  <TR>
    <TD colSpan=2>Properties having to do with equipping an item is only 
      meaningful if the item is actualy equippable (determined by the graphic 
      number's tiledata flags).</TD></TR>
  <TR>
    <TD colSpan=2>Item Create, Destroy, and Control scripts are in pkg format 
      or in scripts/control. Method scripts must be packaged.</TD></TR>
  <TR>
    <TD colSpan=2>Container scripts are in pkg format, or in 
  scripts/control</TD></TR>
  <TR>
    <TD colSpan=2>RequiresAttention 1 causes container gumps to close when you 
      move, or to unhide you if the item is used.</TD></TR>
  <TR>
    <TD colSpan=2>StackingIgnoresCProps is a space-delimited list of 
      case-sensative CProp names that are ignored when stacking 2 of this item 
      objtype. See also stacking.cfg for a global list.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#stacking.cfg">stacking.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#justice.cfg>
    <TH align=middle colSpan=2>justice.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the justice regions (protected by guards). See also 
      regions.cfg.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Guarded     (0/1 {default 0})]
    [EnterText   (string message)]
    [LeaveText   (string message)]
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>This file is preferred over regions.cfg for the above 
      properties.</TD></TR>
  <TR>
    <TD colSpan=2>IMPORTANT: Regions are limited to POL's internal 64x64 tile 
      zones and will internally expand to fill all of these zones the Range is 
      contained in. This sucks, we know.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#regions.cfg">regions.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#light.cfg>
    <TH align=middle colSpan=2>light.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the light regions (light levels sent to clients). 
      See also regions.cfg.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Light       (int light level {default 0}]
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>This file is preferred over regions.cfg for the above 
      properties.</TD></TR>
  <TR>
    <TD colSpan=2>IMPORTANT: Regions are limited to POL's internal 64x64 tile 
      zones and will internally expand to fill all of these zones the Range is 
      contained in. This sucks, we know.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#regions.cfg">regions.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#menus.cfg>
    <TH align=middle colSpan=2>menus.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2>SelectMenuItem2()</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures old-style static menus for client selection (i.e. 
      tailoring, fletching, etc.)</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>ItemMenu
{
    Name    (string unique name)
    Title	(string title to show on menu)
    Entry	(objtype number to show)   (string description)
    [Entry...]
    [SubMenu    (string menuname)	(objtype number to show)    (Description Of SubMenu)]
    [SubMenu...]
}
[ItemMenu...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>The 'Name' property must exactly match with the 'SubMenu' 
      menuname for the submenu element.</TD></TR>
  <TR>
    <TD colSpan=2>Static menus in this file are used with 
    UO::SelectMenuItem2()</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#movecost.cfg>
    <TH align=middle colSpan=2>movecost.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the stamina cost to move based on percent maximum 
      weight carried.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>MovementCost
{
    [(integer percent max carried)   (real multiplier for movement)]...
    [Over                            (real multiplier for movement if over maximum)]
}
-or-
Walking
{
    {same as above}
}
Running
{
    {same as above}
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>You can specify a number of percentage capacity lines, and 
      values in between will be linearly interpolated. 'Over' defines cost if 
      maximum carrying capacity was exceeded.</TD></TR>
  <TR>
    <TD colSpan=2>Maximum carrying capacity is determined as ((Strength * 7) / 
      2) + 40. The multiplier used will be the current weight/max capacity. This 
      multiplier is multiplied by 8 to find the amount of stamina 'hundreths' to 
      consume per move. So a multiplier of 10 will consume 0.8 of a stamina 
      'point' per move.</TD></TR>
  <TR>
    <TD colSpan=2>The 'MovementCost' section overrides both the 'Walking' and 
      'Running' sections if present.</TD></TR>
  <TR>
    <TD colSpan=2>Used only of MovementUsesStamina=1 in 
    servspecopt[.local].cfg</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#servspecopt.cfg">servspecopt.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#multis.cfg>
    <TH align=middle colSpan=2>multis.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Maps the UO 'MultiID' number with the graphic number for the 
      multi.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>House (int multid)
{
    Graphic (int graphic)
}
[House...]

Boat (int multid)
{
    (int graphic)
}
[Boat...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Use InsideUO to get the MultiIDs. Multi Graphics start at 
      0x4000 and are equal to 0x4000 + MultiID.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#music.cfg>
    <TH align=middle colSpan=2>music.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the music regions. See also 
  regions.cfg.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Midi        (int music number)]
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>This file is preferred over regions.cfg for the above 
      properties.</TD></TR>
  <TR>
    <TD colSpan=2>IMPORTANT: Regions are limited to POL's internal 64x64 tile 
      zones and will internally expand to fill all of these zones the Range is 
      contained in. This sucks, we know.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#regions.cfg">regions.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#nocast.cfg>
    <TH align=middle colSpan=2>nocast.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the "no spell casting allowed" regions. See also 
      regions.cfg.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Nocast      (0/1 {default 0})]
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>This file is preferred over regions.cfg for the above 
      properties.</TD></TR>
  <TR>
    <TD colSpan=2>IMPORTANT: Regions are limited to POL's internal 64x64 tile 
      zones and will internally expand to fill all of these zones the Range is 
      contained in. This sucks, we know.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#regions.cfg">regions.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#npcdesc.cfg>
    <TH align=middle colSpan=2>npcdesc.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config and/or any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>at least 1 in /config, can be packaged.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2>CreateNpcFromTemplate</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures NPC Templates for creating new NPCs and assigning 
      properties to them.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>NpcTemplate (string unique templatename)
{
    Name                   (string paperdoll name)
    ObjType                (integer body model type)
    Script                 (string AI script)
    Gender                 (0=male 1=female)
    TrueColor              (int original body skin color)
    Color                  (int current body skin color)
    AR                     (die-string natural armor rating)
    Alignment              ('good' 'neutral' or 'evil)

    [(VitalName)           (die-string value)]
    [VitalName...]
    
    [(AttributeName)       (die-string value)]
    [AttributeName...]
    
    AttackDamage           (die-string damage for intrinsic weapon)
    AttackAttribute        (string attribute name used for intrinsic weapon)
    [AttackHitSound        (int sound ID for intrinsic weapon {default 0})]
    [AttackMissSound       (int sound ID for intrinsic weapon {default 0})]
    [AttackHitScript       (string script for intrinsic weapon hit)]
    [AttackMinRange        (int intrinsic weapon minimum range {default 0})]
    [AttackMaxRange        (int intrinsic weapon maximum range {default 0})]
    [MaxHp                 (int maximum hitpoints for intrinsic weapon {default 1}]
    
    [MoveMode              (movemode string {default 'L'})]
    [Privs                 (string privilage) [(more privs)]...]
    [Settings              (string priv set 'on') [(more privs)]...]
    
    [SpeechColor           (int speech color {default 0x3B2})]
    [SpeechFont            (int speech color {default 3})]
    
    [UseAdjustments        (0/1 {default 1})]
    [RunSpeed              (int 0-250 {default dexterity})]
}
[NpcTemplate...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Movemode string is 'L' for land 'S' for sea, and 'A' for 
      air. I.e. 'LS' would be good for a water elemental.</TD></TR>
  <TR>
    <TD colSpan=2>An 'intrinsic' weapon is used if the NPC does not have a 
      weapon item equipped. It represents (usually), the Wrestling 'weapon' for 
      the NPC. You can define sounds, damage etc.</TD></TR>
  <TR>
    <TD colSpan=2>Vital and Attribute names can use the aliases defined in 
      attributes.cfg and vitals.cfg, i.e. 'STR' instead of 'Strength'. A 
      Die-string may be used for the value of any of these.</TD></TR>
  <TR>
    <TD colSpan=2>Privs and settings can be like 'invul losany' and any more 
      seperated by spaces. Unless they also appear in 'Settings', the privilages 
      are not active.</TD></TR>
  <TR>
    <TD colSpan=2>UseAdjustments 1 means the NPC will adjust its facing while 
      moving to try to avoid small obsticles. If 0, the NPC will not move if it 
      cannot move forward, and the move function will return 0.</TD></TR>
  <TR>
    <TD colSpan=2>RunSpeed is only useful from 0-250, the higher the number, 
      the shorter delay between moves.</TD></TR>
  <TR>
    <TD colSpan=2>SpeechColor and Font are only used if NPC::Say() is 
  used.</TD></TR>
  <TR>
    <TD colSpan=2>Alignment determines NPC's name color and their 
      participation in the reputation system.</TD></TR>
  <TR>
    <TD colSpan=2>Of course, you may define other config properties and cprops 
      in this file that are not used by the core. npcdesc.cfg may be accessed 
      with the normal Config file access functions (ReadConfigFile, etc). Note 
      CProps in this file will be assigned to each NPC created with that 
      template. This takes extra memory than if you look up properties using the 
      config file access functions.</TD></TR>
  <TR>
    <TD colSpan=2>If you have npcdes.cfg in a package, the NPC's template name 
      becomes :packagename:templatename</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#resource.cfg">resource.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#pkg.cfg>
    <TH align=middle colSpan=2>pkg.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1 per package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Package descriptor file. One is required for every package. 
      It is read only on POL startup.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Enabled       (0/1)
Name          (string package name)
Requires      (string package name) [(int version)] ...
Replaces      (string package name) ...
Conflicts     (string package name) ...
[Version      (string version number)]
[CoreRequired (int core version without leading 0, or full version string)]
[ProvidesSystemHomePage (0/1)]

[Maintainer   (string name)]
[Email        (string email)]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Maintainer and Email aren't read by the core, but you should 
      still include them in your own packages.</TD></TR>
  <TR>
    <TD colSpan=2>Requires and Replaces refer to other package names that 
      relate to this packet. If a package is defined that is 'required' and is 
      not found, or is not a new enough version, an error will be printed.</TD></TR>
  <TR>
    <TD colSpan=2>Version is normal version syntax, i.e 1.0, 2.3, 0.1.1.2, 
    etc.</TD></TR>
  <TR>
    <TD colSpan=2>CoreVersion is the POL version that is required for the 
      package to function. Values should be formed like 94 or 95, not 094 or 
    095.</TD></TR>
  <TR>
    <TD colSpan=2>Enabled 0 causes none of the scripts or configs in this 
      package to be read</TD></TR>
  <TR>
    <TD colSpan=2>CoreRequired can take a full version string like 
      "POL095-2003-02-01"</TD></TR>
  <TR>
    <TD colSpan=2>ProvidesSystemHomePage lets a SINGLE pkg to act as directory 
      the root for the web server</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#pkgroots.cfg>
    <TH align=middle colSpan=2>pkgroots.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the local file system paths to the root directories 
      for packages. /pol/pkg is automatically checked. </TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>PackageRoot
{
    dir (string fully qualified path)
    [dir...]
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>If my path was D:\beer\morepol, then subdirectories of that 
      path would be searched for packages along with 
/pol/pkg</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#pol.cfg>
    <TH align=middle colSpan=2>pol.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>root directory only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Configures many critical options for the POL 
  server.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>UoDataFileRoot=(path to UO MUL files)
[ListenPort=(integer TCP port)]
[ClientEncryptionVersion=(string {default 1.26.4})]
[CheckIntegrity=(1/0 {default 1})]
[CountResourceTiles=(1/0 {default 1}]
[ClientVersion=(integer {default 37})] obselete
[Multithread=(1/0 {default 0})]
[WebServer=(1/0 {default 0})]
[WebServerPort=(int port {default 8080})]
[UseNewStaticsFile=(1/0 {default 0})]
[IgnoreLoadErrors=(1/0 {default 0})]
[DebugPort=(int port {default 0})]

[Verbose=(1/0 {default 0})]
[LogLevel=(int level {default 0})]
[SelectTimeout=(int {default 10})]
[WatchRpm=(1/0 {default 0})]
[WatchSysLoad=(1/0 {default 0})]
[LogSysLoad=(1/0 {default 0})]
[InhibitSaves=(1/0 {default 0})]
[LogScriptCycles=(1/0 {default 0})]
[WebServerLocalOnly=(1/0 {default 1})]
[WebServerDebug=(1/0 {default 0})]
[WebServerPassword=(string {default empty})]
[CacheInteractiveScripts=(1/0 {default 1})]
[ShowSpeechColors=(1/0 {default 0})]
[RequireSpellbooks=(1/0 {default 1})]
[EnableSecureTrading=(1/0 {default 0})]
[RunawayScriptThreshold=(long {default 5000})]
[InactivityWarningTimeout=(int minutes {default 4})]
[InactivityDisconnectTimeout=(int minutes {default 5})]
[MinCmdlevelToLogin=(int level {default 0})]
[MaxCallDepth=(int depth {default 100})]
[EnableAssertions=(1/0 {default 1})]
[DumpStackOnAssertionFailure=(1/0 {default 0})]
[DisplayUnknownPackets=(1/0 {default 0})]
[ExpLosChecksMap=(1/0 {default 1})]
[EnableDebugLog=(1/0 {default 0})]
[DebugPassword=(string {default empty})]
[DebugLocalOnly=(1/0 {default 1})]
[DebugLevel=(int level {default 0})]
[ReportRunToCompletionScripts=(1/0 {default 1})]
[ReportCriticalScripts=(1/0 {default 1})]
[MaximumClients=(int {default 300})]
[MaximumClientsBypassCmdLevel=(int cmdlevel {default 1})]
[MiniDumpType=(string small/large {default small})]
[RetainCleartextPasswords=(1/0 {default 1})]
[AssertionFailureAction=(abort/continue/shutdown/shutdown-nosave {default abort})]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Your own pol.cfg should give descriptions on most of these. 
      I'll describe them here if people want me to.</TD></TR>
  <TR>
    <TD colSpan=2>Clarification: for ClientEncryptionVersion, the allowable 
      values are '1.26.4', '2.0.0', 'ignition', 'uorice', and 'none'. Here, 
      'ignition', 'uorice', and 'none' all mean 'no encryption'.</TD></TR>
  <TR>
    <TD colSpan=2>ListenPort is now optional, use uoclient.cfg Listener 
      sections to define listening ports.</TD></TR>
  <TR>
    <TD colSpan=2>AssertionFailureAction options: abort: (like old behavior) 
      aborts immediately, without saving data. continue: allows execution to 
      continue. shutdown: attempts graceful shutdown. shutdown-nosave: attempts 
      graceful shutdown, without saving data. If the assertion occurred during 
      execution of a script, either 'shutdown', 'shutdown-nosave', or 'continue' 
      will abort that script, displaying the script name and 
PC.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#regions.cfg>
    <TH align=middle colSpan=2>regions.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the regions in the world and various settings on 
      each. See Explanation about splitting up this file.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Region (region name)
{
    Range        (x-west) (y-north) (x-east) (y-south)
    [Guarded     (0/1 {default 0})]
    [EnterText   (string message)]
    [LeaveText   (string message)]
    [Midi        (int music number)]
    [Nocast      (0/1 {default 0})]
    [Light       (int light level {default 0}]
    [WeatherType      (int type {default 0})]
    [WeatherSeverity  (int severity {default 0})]
    [WeatherAux       (int {default 0})]
    [LightOverride    (int light level override {default 1})]
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>'Guarded', 'EnterText', and 'LeaveText' are for 'justice' 
      regions, and may be split into /regions/justice.cfg. guard.cfg will be the 
      prefered location for these properties</TD></TR>
  <TR>
    <TD colSpan=2>'Midi' are for 'music' regions, and may be split into 
      /regions/music.cfg, the prefered location for these regions.</TD></TR>
  <TR>
    <TD colSpan=2>'Nocast' are for 'nocast' regions and may be split into 
      /regions/nocast.cfg, the prefered location for these regions.</TD></TR>
  <TR>
    <TD colSpan=2>'Light' are for 'light' regions and may be split into 
      /regions/light.cfg, the prefered location for these regions.</TD></TR>
  <TR>
    <TD colSpan=2>'WeatherType', 'WeatherSeverity', 'WeatherAux', and 
      'LightOverride' are for 'weather' regions and may be split into 
      /regions/weather.cfg, the prefered location for these regions.</TD></TR>
  <TR>
    <TD colSpan=2>IMPORTANT: Regions are limited to POL's internal 64x64 tile 
      zones and will internally expand to fill all of these zones the Range is 
      contained in. This sucks, we know.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#repsys.cfg>
    <TH align=middle colSpan=2>repsys.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines coloring and timeouts for the reputation 
  system.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>NameColoring
{
    Murderer        (int color 38 is red)
    Criminal        (int color 905 is grey)
    Attackable      (int color 905 is grey)
    Innocent        (int color 90 is blue)
    GuildAlly       (int color 68 is green)
    GuildEnemy      (int color 44 is something)
}

General
{
    CriminalFlagInterval (int seconds)
    AggressorFlagTimeout (int seconds)
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>NameColoring defines the single-click name colors for 
      mobiles with various reputation states.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#resource.cfg>
    <TH align=middle colSpan=2>resource.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the resource types in the world. Other .cfg files 
      are then read for specific resource configurations.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>ResourceSystem
{
    ResourceType        (string resource type)
    [ResourceType...]
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>If the resource type is 'ore', then 'ore.cfg' in the same 
      directory will be read for resource region configurations for the ore 
      resource.</TD></TR>
  <TR>
    <TD colSpan=2>Most of the configuration is done in these other files, so 
      please see resourcetype.cfg (note not an actual file, just denotes files 
      like ore.cfg)</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#resourcetype.cfg">resourcetype.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#resourcetype.cfg>
    <TH align=middle colSpan=2>resourcetype.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/regions only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the configuration for the resource filename. Note: 
      'resourcetype.cfg' does not exist, this only denotes files like 'ore.cfg' 
      or 'wood.cfg'. See resource.cfg for how to define these resource 
  types.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Global
{
    InitialUnits     (long number of resource units world has to start)
    [LandTile        (int landtile ID)]...
    [ObjType         (int arttile ID)]...
}
Region  (string regionname)
{
    Range               (x-west) (y-north) (x-east) (y-south)
    UnitsPerArea        (int resource units per tile)
    SecondsPerRegrow    (int seconds delay between regrows)
    Capacity            (int unit capacity for this region)
}
[Region...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Important: regions only override regions found earlier in 
      the file. So the first region should cover the entire map, and further 
      regions override portions of the world.</TD></TR>
  <TR>
    <TD colSpan=2>Landtiles are the 'map' tiles, and 'ObjType' is for static 
      art tiles. These numbers are used to know what tiles grow this type of 
      resource. I.e. a static tree type for wood.</TD></TR>
  <TR>
    <TD colSpan=2>Example: this file is for wood resources, and UnitsPerArea 
      is 15. This means I can get a maximum of 15 wood from a tree until the 
      resources 'regrow'. I could define another region that has very plentiful, 
      or fast growing trees and adjust the UnitsPerArea and SecondsPerRegrow 
      accordingly.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#resource.cfg">resource.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#servers.cfg>
    <TH align=middle colSpan=2>servers.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the Game Servers the login server will forward 
      clients to. Normally the game server and login server are the same machine 
      on a POL shard, but you could run a minimal POL server to act as a login 
      server for one or more game servers.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>GameServer
{
    Name     (string name of server)
    IP       (string ip address, or --ip-- or --lan--, see below)
    Port     (int TCP port number)
    [IPMatch (IPaddrr)/(netmask)]...
}
[GameServer...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>IP address must match the address in the clients' login.cfg 
      files. This means if your game server is on a LAN not accessable from the 
      internet (doing port forwarding from a router), you must define this game 
      server IP as your router's internet IP address.</TD></TR>
  <TR>
    <TD colSpan=2>--ip-- attempts to find your non-LAN, non-localhost IP 
      address. If you have a multihomed server, this may behave strangely.</TD></TR>
  <TR>
    <TD colSpan=2>--lan-- attempts to find you non-routable LAN IP address, if 
      any (i.e. '192.168.*.*' or '10.*.*.*').</TD></TR>
  <TR>
    <TD colSpan=2>Example IPMatch value: 192.168.0.0/255.255.255.0 would 
      prevent anyone with an IP address other than 192.168.0.* from seeing the 
      gameserver.</TD></TR>
  <TR>
    <TD colSpan=2>Port is the listening port of the Game Server, not the login 
      server (though they may be the same). See ListenPort in 
  pol.cfg</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#movecost.cfg">movecost.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#pol.cfg">pol.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#servspecopt.cfg>
    <TH align=middle colSpan=2>servspecopt.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>no</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines certain "Server Specific Options" that shard admins 
      can set. If the file 'servspecopt.local.cfg' exists, the entries will be 
      used in that file instead (to keep changes from being destroyed if a new 
      servspecopt.cfg is installed from, say, the official 
  distribution)</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>[AllowSecureTradingInWarMode	(0/1)]
[DefaultDecayTime	            (int minutes)]
[DefaultDoubleclickRange        (int range)]
[MovementUsesStamina            (0/1)]
[TotalStatsAtCreation           (string see below)]
[DefaultContainerMaxItems       (int 0-150)]
[DefaultContainerMaxWeight      (int 0-65535)]
[UOFeatureEnable                (int flags {default 0})]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>TotalStatsAtCreation takes a comma-delimited lists of values 
      and/or ranges (default = '65,80'). Example: 
      TotalStatsAtCreation=65,80,90-95,100-110</TD></TR>
  <TR>
    <TD colSpan=2>If MovementUsesStamina, stamina costs are defined in 
      movecost.cfg</TD></TR>
  <TR>
    <TD colSpan=2>DefaultContainerMaxItems default is 125, 
      DefaultContainerMaxWeight default is 250. itemdesc.cfg "MaxItems" and 
      "MaxWeight" override these defaults.</TD></TR>
  <TR>
    <TD colSpan=2>UOFeatureEnable will be sent as the last DWORD flag in the 
      0xA9 login message. See 095+ package for values and 
warnings.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#movecost.cfg">movecost.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#skills.cfg>
    <TH align=middle colSpan=2>skills.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config and/or any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the details for each UO skill.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Skill (int skillid)
{
    SkillID     (int skillid)
    Name        (string name)
    Delay       (int delay)
    UnHides     (0/1)
    Script      (string script name)
    [StrAdv     (percent chance to advance) (die-string amount to advance)]
    [IntAdv     (percent chance to advance) (die-string amount to advance)]
    [DexAdv     (percent chance to advance) (die-string amount to advance)]
}
[Skill...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>NOTE, the distro doesn't use this file, it uses 
      pkg/foundations/hooks/skillsdef.cfg instead, with the same 
structure.</TD></TR>
  <TR>
    <TD colSpan=2>Script is only meaningful for skills that are directly 
      useable like Hiding, but not for ones accessed from an item (like 
      Blacksmithing)</TD></TR>
  <TR>
    <TD colSpan=2>Only one entry for each skillid is allowed. Skillid can not 
      be higher than the maximum number of UO client skills.</TD></TR>
  <TR>
    <TD colSpan=2>Delay is number of seconds before the user can use another 
      skill.</TD></TR>
  <TR>
    <TD colSpan=2>If UnHides is 1, using the skill unhides the character if 
      hidden.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#uoskills.cfg">uoskills.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#spells.cfg>
    <TH align=middle colSpan=2>spells.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config and/or any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>yes (can be empty)</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2>SpeakPowerWords()</TD></TR>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>ConsumeReagents()</TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2>StartSpellEffect()</TD></TR>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>GetSpellDifficulty()</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the spells used by the UO Client</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Spell (int spellid)
{
    SpellID	    (int spellid)
    Name        (string name)
    PowerWords  (string power words)
    Script      (string script name)
    Animation   (int casting animation ID)
    [Circle     (int Circle number)]
    [Reagent    (string item name)]...
	
    [Mana       (int manacost)]
    [Difficulty (int difficulty)]
    [PointValue (int skillbonus)]
    [Delay      (int cast delay)]
}
[Spell...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Script is in current package or searches through 
  /scripts</TD></TR>
  <TR>
    <TD colSpan=2>Animation is less or equal to 0x22</TD></TR>
  <TR>
    <TD colSpan=2>If the Circle property is found, Mana,Difficulty,PointValue, 
      and Delay is gathered from circles.cfg.</TD></TR>
  <TR>
    <TD colSpan=2>Reagent name corresponds to the "Name" property for the 
      reagent's itemdesc.cfg entry.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#itemdesc.cfg">itemdesc.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#circles.cfg">circles.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#stacking.cfg>
    <TH align=middle colSpan=2>stacking.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package and/or /config</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>No</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core Item Stacking</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Specifies CProp names to ignore when stacking two 
  items.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Stacking
{
    IgnoreCprops  [(propname1) [(propname2)]...]  //space delimited
}
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>propnames are space-delimited, and are case-sensative.</TD></TR>
  <TR>
    <TD colSpan=2>This config may be packaged, so it's a good idea to only 
      specify the cprops in the package which "belong" to that 
  package.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#startloc.cfg>
    <TH align=middle colSpan=2>startloc.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>/config only</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the starting locations for new clients. They must be 
      in this order to match the character creation screens in the UO client: 
      Yew, Minoc, Britain, Moonglow, Trinsic, Magincia, Jhelom, Skara Brae, 
      Vesper</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>StartingLocation
{
    City		(string CityName)
    Description	(string Description)
    Coordinate	(int x),(int y),(int z)
}
[StartingLocation...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>CityName and Description are sent to the client! no larger 
      than 30 characters please.</TD></TR>
  <TR>
    <TD colSpan=2>x,y,z is where the character will be placed after created. 
      You could set all the locations to the same coordinate to force players to 
      start in one town.</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#syshook.cfg>
    <TH align=middle colSpan=2>syshook.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>no</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the hook scripts to be called by the core at certain 
      times.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>SystemHookScript (string script_name_with_ecl)
{
    (SyshookName) (string exported_func_name)
}
[SystemHookScript...]
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines the script file and function to call for the core to 
      call. The script should be in the same package as the syshook.cfg.</TD></TR>
  <TR>
    <TD colSpan=2>The script_name_with_ecl should define a 'program' which 
      will be run on server start.</TD></TR>
  <TR>
    <TD colSpan=2>The exported_func_name should be defined with the 'exported' 
      keyword.</TD></TR>
  <TR>
    <TD colSpan=2>The list of SyshookNames: CheckSkill, OpenSpellbook, 
      GetBookPage, CombatAdvancement, ParryAdvancement, Attack, 
  Pushthrough</TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#uoclient.cfg>
    <TH align=middle colSpan=2>uoclient.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>1</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Maps vital and attribute names onto UO Client idioms for 
      character status.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>General
{
    Strength        (string Strength)
    Intelligence    (string Intelligence)
    Dexterity       (string Dexterity)

    Hits            (string Life)
    Mana            (string Mana)
    Stamina         (string Stamina)
    MaxSkillID      (integer maximum UO client skill ID)
}
Protocol
{
    #
    # EnableFlowControlPackets: use the 0x33 (0x00 / 0x01) pause/restart packets.
    # Though OSI seems to no longer send these packets, they seem to help with smoothness,
    # particularly with boat movement.
    # NOTE: causes clients 4.0.0e and newer to fail login
    EnableFlowControlPackets    1   
}
Listener
{
    Port (int port number 1024..65535)
    Encryption (string encryption type)
}
[Listener ...]

</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>The right-hand-side "Strength", "Intelligence", and 
      "Dexterity" are Attribute names that MUST be defined in attributes.cfg. 
  </TD></TR>
  <TR>
    <TD colSpan=2>The right-hand-side "Life", "Mana", and "Stamina" are Vital 
      names that MUST be defined in vitals.cfg.</TD></TR>
  <TR>
    <TD colSpan=2>MaxSkillID allows you to use new client skills, but setting 
      it too high can crash older clients. You must define skills.cfg entries 
      for each skillID up to MaxSkillID (default 51).</TD></TR>
  <TR>
    <TD colSpan=2>The Protocol and Listener sections are optional.</TD></TR>
  <TR>
    <TD colSpan=2>Each Listener section allows you to listen for different 
      client encryption types on different ports. This means you can listen for 
      "1.26.4" clients on port 5003 and "ignition" clients on port 5555. Valid 
      encryption types are found in the pol.cfg section. If you use Listeners 
      set ListenPort in pol.cfg to 0.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#attributes.cfg">attributes.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#pol.cfg">pol.cfg</A></TD></TR>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#skills.cfg">skills.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#vitals.cfg">vitals.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#uoskills.cfg>
    <TH align=middle colSpan=2>uoskills.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Maps Attribute names onto the UO Skill ID 
  numbers.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Skill (SkillID)
{
    Attribute   (Attribute_name)
}
Additional entries required up to maximum UO skill id
</PRE></TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Explanation</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Attribute_name defines the Attribute associated with this UO 
      Skill. Only one attribute may be mapped to a skill id. Attribute_name must 
      be found in attributes.cfg!</TD></TR>
  <TR>
    <TD colSpan=2>SkillID must be an integer between 0 and 500, though any 
      entries past the maximum UO skill id will not be sent to the UO 
  client.</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Related Files</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2><A 
      href="configfiles.html#uoclient.cfg">uoclient.cfg</A></TD></TR>
  <TR bgColor=#e5e5e5>
    <TD colSpan=2><A 
      href="configfiles.html#attributes.cfg">attributes.cfg</A></TD></TR></TBODY></TABLE><BR><BR><BR>
<TABLE cellSpacing=0 cellPadding=1 rules=groups width="75%" align=center 
bgColor=#dddddd border=1 frame=box>
  <TBODY>
  <TR><A name=#vitals.cfg>
    <TH align=middle colSpan=2>vitals.cfg</TH></A></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Location:</TH>
    <TD align=left>Any Package</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left>Number Allowed</TH>
    <TD align=left>any</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left>Required to Start?</TH>
    <TD align=left>Yes</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#dddddd>
    <TH align=left colSpan=2>Required/Used by</TH></TR></TBODY>
  <TBODY>
  <TR bgColor=#f0f0f0>
    <TD colSpan=2>Core</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Purpose</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD colSpan=2>Defines Attribute names and aliases</TD></TR></TBODY>
  <TBODY>
  <TR bgColor=#cccccc>
    <TH align=left colSpan=2>Structure</TH></TR></TBODY>
  <TBODY>
  <TR>
    <TD bgColor=#e5e5e5 colSpan=2><PRE>Vital (Vital_Name)
{
    RegenRateFunction   (string scriptname:exported_func_name)
    MaximumFunction     (string scriptname:exported_func_name)
    [Alias              (string Alias_Name)]...
    [UnderflowFunction  (string scriptname