// *********************************************************************************************
// * 
// *  Prologue:
// *  I thought long and hard about making races flexible and dynmamic. Especially thinking 
// *  about having this script used by multiple servers and the UO-3D chances to finaly add
// *  Dwarves and goblins or whatever made it a good idea to have all classes configurable 
// *  dynamically - and if we're at that preferable in game too - after all if I have to use
// *  datafiles anyway, the editor for that wouldn't really be the issue.
// *  But in the end I decided against it. The reasons are that races are a vital factor in 
// *  many scripts. Making them configurable online would results in huge problems - especially
// *  where other datafiles have to update themself dynamically according to the changes in
// *  the races datafile (and those are packages of which the race package is unaware of). Now 
// *  I don't say that this is impossible, but does the outcome justify the effords? I say no.
// *  After all, thinking about it, how many races do we want? Thinking that on a well-going
// *  shard most of the time the number of players is between 10-30, what use would it be to
// *  have like 30 races? Matrixshard was traditionally meant to have 7 races. Now that 
// *  should have been enough for now - but one always can use some spares. Thus I decided 
// *  to go for a compromise and set the number to 15. The attributes of these races will be 
// *  configurable in game though.
// *
// *  First of all there are the traditional matrix-shard races: 
// *  (all of those were chosen because they either look human or because they have
// *  existing graphics in UO for their races)
// * 
// *   1 - Dark Elves (since Moony doesn't want Drow) 
// *   2 - Elves 	
// *   3 - Gargoyle				
// *   4 - Human
// *   5 - Lizzardman
// *   6 - Ork
// *   7 - Ratman
// * 
// *  Now in order to have spare-races I have added these:
// *    
// *   8 - Undead	(added this as I felt they may not represent any mortal races anymore)
// *   9 - spare 1	(e.g. ogres or ettin. Not planned to be used normally)
// *   10 - spare 2	(e.g. Daemons. Not planned to be used normally)
// *   11 - spare 3	(e.g. Elementals. Not planned to be used normally)
// *   12 - spare 4	
// *   13 - spare 5
// *   14 - spare 6
// *   15 - spare 7
// *   
// * 
// *********************************************************************************************
// * 
// * The datafiles will be in the following format:
// *
// * ----------------------------------------------------------
// *  
// * "races"
// * 
// * race**
// * {
// *   playable		[0/1, nonplayable races cannot be hired for townguards etc. unless
// * 			 the player him/herself is of that specific race]
// *   active		[0/1, inactive races will be hidden from the view of the player]
// *   raceid		[1-15, the id of the race]
// *   racename		[string, name of the race]
// *   npcoverride	[integer, historic, not to be used anymore!]
// *   npcoverridef	[integer, historic, not to be used anymore!]
// *   bodymale         [integer, graphic id for male bodies]
// *   bodyfemale       [integer, graphic id for female bodies]
// *   namesmale	[{name1, name2}, an array of male names]
// *   namesfemale	[{name1, name2}, an array of female names]
// *   ---the following values affect HP,Stamina and Mana Caps & Regeneration---
// *   startmana        [integer, the int value at which a player starts gaining mana]
// *   capsmana         [integer, a factor by which INT influences the mana cap (will max. 500)]
// *   capsstam         [integer, a factor by which DEX influences stamina cap (will max. 250)]
// *   capshp           [integer, a factor by which STR influences the HP cap (will max. 250)]
// *   regenmana        [integer, a factor at which speed mana is regained]
// *   regenstam        [integer, a factor at which speed stamina is regained]
// *   regenhp          [integer, a factor at which speed HP are regained]
// *   ---that's it... for racial abilities check abilities.cfg in the skill package---
// *   ------------------------------------------------------------------------------
// *   --- The following Section now is only important to character creation: -------
// *   ------------------------------------------------------------------------------
// *   startstatcap     [{strcaps,dexcaps,intcaps,totalcaps} caps for stats]
// *   startskillcap    [integer, amount of points to use for total skill purchase]
// *   description      [{"line1","line2",...,"line8"}, description for char creation]
// *   specialsdesc     [{"line1","line2",...,"line5"}, description of special abilities]
// *                     WARNING: This ability list is just a description for the
// *                              reacegate gump. In order to work, abilities must
// *                              still be configured in skills/activities.cfg
// *   hairmale         [{integer, ...},  array: itemid's of legal hairstyles for male]
// *   hairfemale       [{integer, ...},  array: itemid's of legal hairstyles for female]
// *   beardmale        [{integer, ...},  array: itemid's of legal beard styles for male]
// *   beardfemale      [{integer, ...},  array: itemid's of legal beard styles for female]
// *   skincolmale	[{integer, ...},  array:  #ids of legal skinncolor for male]
// *   skincolfemale	[{integer, ...},  array:  #ids of legal skinncolors for female]
// *   haircolmale      [{integer, ...},  array:  #ids of legal haircolor for male]
// *   haircolfemale      [{integer, ...},  array:  #ids of legal haircolor for female]
// *   --- Note: individual startup skill limits are stored in the skills datafile---
// *   specialability   [{0/1,0/1,...}, array of flags for each ability yes/no]
// *                      1: Can this race eat raw meat unharmed?
// *   ------------------------------------------------------------------------------
// * }
// *
// *********************************************************************************************
