In the file races.dfn in the UOX3/DFNDATA/RACE/ folder, it's possible to set up new races that the players can be, as well as define NPC races and relations (allies & enemies) inbetween. By default, races.dfn already has a number of races set up for the various NPCs you'll find in UOX3. The first race definition in the file, however, is "Human", and is by default assigned to all new characters that are created. If you want to set up a system of different playable races, like humans, elves, dwarves, etc, it's adviced to create new sections for all of these (including humans), and use the first entry as a "no-race" - the one used by new characters before they've chosen a new race.
The simplest way of creating new races, is by copying & pasting an existing section to the bottom of the file (before the EOF line though!) and then change the race section identifier and any properties that race should have. If you're creating a new race for NPCs, make sure to give said NPCs a new entry in their definition-files; RACE=# where # is the section number of the race you want to assign them.
There are however a number of different settings for races, most of which are not used by the default races. Here follows a list:
[RACE #] //Race Identifier Value, must be unique
{
NAME=Dwarf // Name of race
STRCAP=100 // Cap on strength
DEXCAP=100 // Cap on dexterity
INTCAP=100 // intelligence cap
REQUIREBEARD // Males must have beards, will add if needed
NOBEARD // Must have no beard, will delete if they have it
GENDER=MALE // Only males can be this race, acceptable values MALE, and FEMALE
BEARDMIN=0440 // Min beard colour, must have max also, if 0, then disabled
BEARDMAX=0480 // Max beard colour, must have min also, if 0, then disabled
SKINMIN=0480 // Skin min colour, must have max also, if 0, then disabled
SKINMAX=0520 // Skin max colour, must have min also, if 0, then disabled
HAIRMIN=0440 // Hair min colour, must have max also, if 0, then disabled
HAIRMAX=0520 // Hair max colour, must have min also, if 0, then disabled
SKILLNAMEG=2 // Skill name gain and how much (SKILLNAME = MAGERY or whatever skill you want)
SKILLNAMEL=2 // skill name loss and how much
RACIALENEMY=1 // Racial enemy number... can be more than one entry
RACIALAID=2 // Racial aid number... can be more than one entry
LIGHTDAMAGE=5 // take 5 damage from light
LIGHTAFFECT // if here, take damage from light
LIGHTSECS=5 '/ take damage from light every 5 secs
HEATDAMAGE=5 // take 5 damage from heat
HEATAFFECT // if here, take damage from heat
HEATSECS=5 // take damage from heat every 5 secs
COLDDAMAGE=5 // take 5 damage from cold
COLDAFFECT // if here, take damage from cold
COLDSECS=5 // take damage from cold every 5 secs
LIGHTNINGDAMAGE=5 // take 5 damage from lightning
LIGHTNINGAFFECT // if here, take damage from lightning
LIGHTNINGSECS=5 // take damage from lightning every 5 secs
RAINDAMAGE=5 // take 5 damage from rain
RAINAFFECT // if here, take damage from rain
RAINSECS=5 // take damage from rain every 5 secs
SNOWDAMAGE=5 // take 5 damage from snow
SNOWAFFECT // if here, take damage from snow
SNOWSECS=5 // take damage from snow every 5 secs
NIGHTVIS=3 // night vision bonus... the number is the light level bonus you get at ANY time
PLAYERRACE=0 // 0 is nonplayer race, 1 is player race
LANGUAGEMIN=500 // skill value(Spirit Speak) needed to interpret that races speech
}
Skill gain/loss information can be adjusted dynamically now, though it still can default to:
For skill gain:
0=None
1=Slight
2=Moderate
3=Significant
and for skill loss:
0=None
1=Slight
2=Moderate
3=Significant
Basically, add a new section called COMBAT MODS like this:
(If you don't have at least 4 entries, the defaults are used.)
[COMBAT MODS]
{
MOD0=0 // % bonus for mod 0
MOD1= 5
MOD2=10
MOD3=25
MOD4=50
}
Then use SKILLNAMEL=0 to 4 or SKILLNAMEG=0 to 4 to define the penalty or bonus added to the specified skills of the race you add these lines to. Example:
MAGERYL=3
SWORDSMANSHIPG=2
The above will give a MOD3 (25%) penalty to a race's Magery-skill, and a MOD2 (10%) bonus to a race's Swordsmanship-skill. This means that the efficient skill-value is lowered or raised by the apropriate amount in skill-checks. It does NOT affect skill-gain or skill-atropy at all.
Any Racial Enemies will show up as orange to eachother, and NPCs of such opposing races will attack eachother. Any Racial Aids (Allies) will show up as green to eachother, and any allied NPC races will not attack eachother. Murderers still flag red though, no matter what the racial enemy/aid settings are. Race names will show up in the paperdoll as well as above the animated character when you click on them, as long as the character doesn't belong to the default race (which is RACE 0).
A simple way of letting players choose which race to become, is to create "Race Gates" at the starting location of new characters, then when the players walk through any given race gate, they'll be turned into that race. Then place a teleporter to that race's starting location behind the gate, so they'll be teleported to that race's starting location (if different per race).
To add a new Race Gate, you need to add a new item-section to the ITEM-DFNs, located in the UOX3/DFNDATA/ITEMS/ folder. You can either add this new section to one of the existing .DFN-files there, or create a new .DFN file to hold your race gates specifically. In this example, we'll create a new file using Notepad, which we'll save as racegates.dfn in the above mentioned folder.
The contents of the file should be as follows (without the comments, they're not vital for the functionality of the race gates ;):
[elvish_racegate]
{
NAME=Elvish Racegate // name of the gate
ID=0x0dda // moongate ID
COLOR=0x0015 // color of moongate
TYPE=83 // MUST be type 83, otherwise it won't work
MOREX=1 // Race to convert to
MOREY=0 // 0 means it's not reusable by the same player, 1 means it is
}
EOF
You can also create "Racial weapons", which do double damage against specific races. To do this, simply give the weapons a new entry in their section of the DFN files, saying RACE=# where # is the Race section ID of the race you want the weapon to do double damage against!