Last Updated: 16. September, 2020

UOX3 Version: v0.99.3a

- About UOX3
- Installation and Setup
- First Five Minutes
- Additional UOX3 Info
- Feature Documentation
- Scripting - DFN System
- Scripting - JS Engine
- Resources and Links
- History and Credits

- # About UOX3

- Introduction to UOX3

  UOX3 - or Ultima Offline eXperiment 3 - is an open-source server emulator for Ultima Online that allows you to run your own private (or public) UO server where you are in control of what rules apply, what features are available and what type of players will inhibit Britannia.

  ### Getting Started

  If you want to dive right in and get started with UOX3, hop on over to the Installation and Setup section.

  ### UOX3 History and Changelog

  To see what's new in the latest stable release of UOX3, or to do an in-depth dive into the history of the UOX3 project itself, check out the History and Credits section of this document.

- Feature Highlights

  The core features listed below are the heart and soul UOX3, and are what helps UOX3 stand out from the other UO server emulators out there:

  Core UOX3 Features
  - Open Source (C/C++) - You can download, experiment with and make changes to the source code to fit the particular needs of your UOX3 shard, or branch off to create a spin-off emulator that can be successful in its own right (see UO Emulator timeline for a history of such spin-offs).
  - Cross-Platform Support UOX3 strives to maintain cross-platform support, so it can run on a variety of Windows, Linux and macOS versions and configurations (including 64-bit ones).
  - JavaScript-based Scripting Engine - UOX3's JS-based scripting engine is a powerful tool that allows anyone with a rudimentary understanding of JavaScript to create new features or enhance existing ones, all without having to dig deep into the C/C++ core of UOX3. Also includes a "packet hook" system that allows intercepting network packets sent by connected clients, and to send custom network packets in response.
  - Dynamic Reloading of Scripts - Any scripts, definition files and config files used by UOX3 can be reloaded on the fly while the server is already running. This makes it easy for shard admins and developers to quickly iterate on changes and additions, without having to restart the server from scratch and reconnect the client to see each change.
  - UO Client Support - UOX3 supports a wide range of UO client versions, all the way from the 4.x versions originally introduced with the Age of Shadows expansion in 2003, to the most recent 7.0.x series available today.
  - Multi-Language Support - UOX3 comes with a custom dictionary system that allows for sending script and system messages to connected clients in the client's default language.
  - Extensive Log System - UOX3 comes with an extensive log system that tracks server errors, warnings, network packets sent and received for each client, commands used, spells cast, combat events, player speech and more.

  Aside from the UO-specific features listed in the next section, UOX3 also comes with a host of custom (and optional) gameplay features that can be customized and tweaked by shard admins to their content:

  Custom Gameplay Features
  - Region System & Player-run Towns -
  - Regional Weather System - A region-specific weather system allows each region of the game world to have its own unique weather setup, with temperature swings, heat waves, cold snaps, rain, snow and wind - all of which ties into a race system where specific races can have weaknesses or strengths tied to specific weather or temperatures.
  - Regional Spawning System - The regional spawning system allows UOX3 shards to spawn an enormous amount of NPCs and items in the game world without significantly increased world-save and load times, since the objects spawned through this system are only kept in memory for as long as the server is running, and will respawn upon startup.
  - Advanced Trade System - The advanced trade system in UOX3 can be used to setup dynamic prices for goods with NPC vendors across the game world, with prices fluctuating based on the amount of items sold to or bought from players in each region.
  - Customizable Ore System -
  - Rank and Quality Crafting System -
  - Race System - The race system in UOX3 is an extensive and customizable system that can be applied to both players and NPCs. Through this system, races can be setup as allies or enemies, can be given skill bonuses or penalties, have different skill and stat caps, can take extra damage from specific weapons (undead race vs silver weapons, for instance), and more.
  - Advancement Gates - Shard admins can setup "advancement gates" which sets up players who step through them with specific skills, stats and equipment, and can be used to give players a head start or to setup predefined "classes" beyond what the UO client's character creation options allow for.

  Aside from the UO-specific features listed in the next section, UOX3 also comes with a host of custom (and optional) gameplay features that can be customized and tweaked by shard admins to their content:

  UO-Specific Gameplay Features
  - Combat - UOX3's default values for monsters, equipment, spell damage and combat tries to align closely with the official UO shards around the time of "publish 16", just before the release of the Age of Shadows expansion. None of this is set in stone, however, and shard admins can easily modify and/or extend this ruleset to their specific preferences.
  - Party System -
  - Guildstones -
  - -
- UOX3 Support and Community

  If at any point during your adventures with UOX3 you feel you could use someone to talk to, whether to help you resolve an issue you've encountered or just to have someone to share your journey with, feel free to join and post at the community forums at UOX3.org, or hop onto the UOX3 Discord server if you'd rather have a more direct line of communication with fellow UOX3 users and developers. Or do both!

  #### Contributing to UOX3

  So, you want to contribute to UOX3, and have your name written into the history books - well, at least into the UOX3 Hall of Fame - for all eternity? Then read on, because you've come to the right place!

  It doesn't matter if you're not the world's best programmer, or if you are not well versed in scripting - contributions to UOX3 can come in many forms, and all are equally well received and appreciated.

  Examples of areas where contributions can be made, either of which can make a difference:

  - Code
  - JavaScript
  - DFNs
  - Documentation
  - Forum Support
  - Discord Discussions

  Any contributions that involve making changes to UOX3 can either be posted in the Submissions - Fixes & Improvements section of the UOX3.org forums, or can be submitted as a Pull Request on UOX3's GitHub page, for those familiar with that workflow. Do note that any such contributions will be reviewed for quality and fit with the project before being accepted and merged into the core UOX3 project.

  If it so happens, that your code or script contribution is not approved for inclusion in the core UOX3 project, you can still post it as custom additions/tweaks in other parts of the UOX3.org forums, for other users to download! Alternatively, if your changes are extensive enough, you can do what many others have done before you and branch off the main UOX3 project to create something else entirely!

- UOX3 Story

  "Story? You mean UOX3 has LORE?"

  Yep! As the only UO Server Emulator, UOX3 comes with its own background story, originally written by Cironian back in 1997/1998. Check it out below!

  Chapter One - Death

  You knew that the world was ending right now before your eyes, and there was nothing you could do about it anymore. Lord British was dead and the Guardians demon legions were swarming all through the once proud city of Britain. Bodies were lying all around the streets, thieves next to nobles and the former castle guards.

  That body which you used to call your own is still bleeding at your slightly transparent feet but it is obviously too late for any kind of medical treatment. Your spells have allowed you to take two of those red abnormities with you, but when the Shadowlord Astaroth approached you, you knew that your last minute has come. You stood paralysed as his dark finger stretched out to your chest and when it touched you, you had left your body even before it hit the ground. You notice that some of those who are falling to the assault of the demons don't even leave a spirit behind anymore; it seems like after his death the magic that Lord British gave to his citizens to survive past their own death is beginning to fade.

  Having wandered through the bloody streets for some time you see that there is still some light spilling through the windows of one of the nearby houses. You glance up to the sign above the door and note the symbol of the virtues, the ankh, painted onto it. Even though you ghostly state denies all colors of the world reach you, somehow you still recognize the golden color of the symbol. After thinking for only a moment you reach for the doorknob, only to see your hand go right through it. "Oh, I forgot...", you smile to yourself, these words being only a whisper in the storm of the fighting to those still standing locked in combat with the demonic hordes.

  Despite your current disembodied state you take a deep breath and then step right through the closed door.

  Chapter Two - End of the world

  Inside the building you can make out a few people in grey robes, sitting around a candle like it could protect them from the Guardians assault outside. One of the people seems to note your presense and turns around:

  "Ah, another lost soul that has found the way here. With the forces of chaos drawing into this realm, my healing powers are fading from minute to minute, but I might try to give you a new body if you assist me". The healer is beginning to make arcane gestures and you feel a wave of restoring energy rush through your astral body. With the rest of your powers you finally succeed to become physical again.

  "This is it", the healer says, "my powers are now completely gone". You place your weak body among the others and listen to the screams outside, although those are becoming less and less by now.

  You know that this new life will certainly only last for a couple of minutes, as the magic forces which bind this world together are beginning to fail, with obvious consequences: Lightnings are striking down from the sky by the dozen, giant earthquakes are threatening to tear the land apart and you can almost feel the pure evil power of the Guardian condensing in the air, converting this world to - what? You remember hearing one of the court mages whisper with his dying breath that the Guardian would use conquered worlds to create the Shadowlords. If that is true, then this world is really lost.

  You glance out through the window and see one of the black moongates open with more demons stepping out of it. A thought crosses your mind: There can be no place worse than this one, so it might be worth the try. You tell the others that you intend to go through one of those gates to survive the end of this world and most of them agree to try it. You walk over to the door and silently unlock it and open it just so much that you can get a look at a part of the road outside. What you see is terrible. Sweet Dreams Inn is already completely burned down and the ground seems to be painted with blood.

  "Now!", you scream as you see another of the black gates open just a few steps away from the door. You hit the door open and start to run, but just a second before you would have reached the gate a demon steps out of it, looking down at you in a quite angry way. You signal the other to run into the gate while you divert the creature, even though you have no idea on how to do that. As it rushes toward you, you notice one of Lord Britishs personal castle guards lying on the ground here. Still in his hand you see one of the famous order shields, magically treated by the King himself. You reach for it and with all your strength hold it in front of you as the demon brings his fist down on you.

  The shield is shattered in two under the might of the blow, but by that the magic still inherent in it is released in a brilliant flash of light; not enough to kill the demon, but enough to render it helpless for a moment and you do not need any more time to run between its legs and towards the black gate. Knowing that this world could die any second now you jump through the gate...

  You find yourself flying through some sort of dark tunnel; at the end of which you see another world. But you can't say that world appears much better to you than the one you just left, because it looks like the homeland of the demons. Thousands of them are waiting at the exit of the gate and it seems like they have already taken care of those that entered the gate before you. You look back over your shoulder at the place you came from and at the same moment that world ends. Suddendly the gate, having lost one of its exits vanishes, leaving you suspended in the Ethereal Void.

  You see millions of stars all around you, except that those are no stars but worlds; just like the one you were born and lived in until this day, and another one of them is now serving the Guardian...

  Chapter Three - The lost splinter

  You awaken. You are lying on a perfectly ordinary bed in an absolutely normal room of an inn. You rise to your feet and look out of the window to see the wonderful town of Britain, still quite unharmed as if that which you remember never happened. You get dressed and walk down the stairs of the inn. The first thing you notice is the lack of people that are usually shoving past each other here. On the street you see that this phenomenon is not limited to the inn, but seems to be present all around Britain.

  You spin around as you notice a movement in the corner of your eye. Your eyes widen as you see Lord Blackthorne himself standing there as if the Guardians attack on Britannia never happened.

  "I guess thou hast questions on your mind", your hear him,"like why thou art here when your memories tell thee that everything must be quite different. The reason for that is that thou art no longer in the world that thou knowest - nor one even like it. As thou possibly knowest, there are thousands of copies of the land called Britannia existing in the shards of Mondains foul gem of immortality. Now, for some reason when the worlds were split from each other, this special world was created without any inhabitants. Now, as the creature calling himself the Guardian conquered other worlds like yours, some people always entered one of the black moongates in the moment of destruction and thus ending up here. Thou mightest call this world the Lost Splinter. Well, I would really like to discuss this matter further with thee, but I am due for a game of chess with Lord British."

  "He lives?", you exclaim. "Well, in fact the two of us ended up here when we were fleeing from the world that later became the Shadowlord Nosfentor." His face turns sad: "How fitting to run away from that world which became the embodiment of cowardice... But now I must hasten to the castle. Feel free to take a look around this world. There are not many people here, but at least the ecology yield more than enough food and resources for us few."

  As you watch the Lord disappear down the street you start to think. At least you would be safe from the Guardian here - for now. You start to walk through an unusually empty Britain; there is so much to learn about this world, so you might as well start right now.

- # Installation and Setup

- Requirements

  ### OS / Platform

  UOX3 comes with cross-platform support for running on a variety of Windows (~Win7 to Win10), Linux and macOS versions, in both 32bit and 64bit.

  ### Hardware

  Default install size for UOX3 alone clocks in at under 8MB, with an additional 400-500 MB being required for data files from Ultima Online. Total size will grow based on amount of content added to shard. Minimum 1+ GB free storage space recommended.

  Default memory usage for an empty shard ranges from 35-50 MB, but will grow based on amount of content added to shard and number of players connected at any given time. Minimum 1+ GB RAM recommended.

  ### Ultima Online Client

  It is highly recommended to use the same data files for your UOX3 shard as found in the Ultima Online client you will be connecting to UOX3 with, to minimize the chance of issues related to mismatching files.

  UOX3 currently supports client versions ranging from 4.0.0p to at least 7.0.86.x, and requires the following minimum set of UO data files to run: map0.mul/map0LegacyMUL.uop (depending on client version), staidx0.mul, statics0.mul, multi.mul, multi.idx and tiledata.mul. Additional map and statics data files are optional, and required only if you want the other worlds/facets to be available on your shard.

  Bonus Tip - MUL vs UOP Map Files

  Clients after v7.0.24.2 started using new file format for map files - uop - that previously required conversion to mul format in order to be loaded by UOX3, leading to a recommendation of using a client version earlier than this. However, starting with v0.99.3, UOX3 can now load these uop files directly. No need to convert! If for whatever reason you still want to convert files between the .mul and .uop formats, check out the Additional UOX3 Info > Converting UOP to MUL section!

  It is strongly recommended that you download and install a version of Ultima Online before continuing with the download and setup of UOX3 itself. You can either download the latest available Classic Client from the official UO website, or you can head on over to the community forums to read more about UOX3's compatibility with various UO Client versions.

  While you're at it, go grab the UO:R Community Edition of Razor, a tool you'll need later to remove the encryption from the UO client, allowing it to connect to UOX3 - which only accepts encryption-less connections.

  ### Linux/macOS Platforms

  While UOX3 supports both Linux and macOS, neither the UO client nor Razor run natively on these platforms. As an alternative, have a look at ClassicUO, an open-source, cross-platform client that supports both Linux and macOS, and which does not rely on Razor to work.

- Downloading UOX3

  To get started with UOX3, you have a couple of different options:

  ### 1) Stable All-in-One

  The first, and most straight-forward option is to download the latest stable All-in-One UOX3 package for your platform (Windows/Linux/macOS) from the Downloads page at UOX3.org. It contains all the files you need to get a bare-bones version of UOX3 up and running; a clean slate for you to build on.

  ### 2) Experimental Build

  If it has been some time since the stable All-in-One package was updated, it might be a better approach to try out the "Experimental Build" sometimes posted on the forums at UOX3.org. These versions contain all the latest changes and additions that have been made to UOX3 since the previous stable release, but could also potentially contain additional bugs and errors due to the "cutting edge" nature.

  Note: For either of the two above options, unzip the downloaded file to a folder of your choice, preferably something easy to find and access, like C:\UOX3.

  ### 3) Compile Source Yourself

  The third option, for more advanced users, would be to download the UOX3 source-code directly from GitHub and compile it yourself. If you're interested in the inner workings of UOX3 and/or potentially want to contribute code-wise, this might be the option for you. See Additional UOX3 Info > Compiling UOX3 Source for further instructions!

- Configuring Your UOX3 Shard
  tldr; - Quick Start Guide

  If you think the detailed instructions below are too wordy, try this quick start guide instead, and refer to the full setup guide if you run into any problems along the way:

  1. Download the UO Client, and Razor. For Linux/macOS users, find a way of copying the installed UO directory on a Windows machine over to your Linux/macOS one, and then rely on ClassicUO client instead of the UO+Razor combination.
  2. Download UOX3.
  3. Set client versions allowed on your shard via CLIENTSUPPORT# lines in [clientsupport] section of UOX.INI.
  4. Update shard name and IP (if other than local) in [play server list] section of UOX.INI
  5. Update DATADIRECTORY path in [directories] section of UOX.INI; point it to UO folder, or folder with UO data files.
  6. Change default username/password for account 0 in UOX3/accounts/accounts.adm.
  7. Start UOX3!
  8. Start Razor, and use it to load up the UO client, then log in!

  Assuming you now have a UOX3 folder that contains UOX3.exe (Windows only), uox3 binary (Linux/macOS only), some .ini files and a bunch of folders like accounts, dfndata and js, it's time to dig in and get your hands dirty with some ini editing!

  ### Step 1) Open UOX.INI

  Open UOX.INI from the root UOX3 folder using your favourite text editor (Notepad, Notepad++, Sublime Text, Vim, nano, etc.)

  ### Step 2) Limit Allowed Client Versions

  Under the [clientsupport] section, enable or disable specific UO client version ranges to determine which versions of the UO client are allowed to connect to your UOX3 shard. As a general rule, try to keep the allowed ranges as narrow as possible to avoid potential issues with different client versions behaving differently. Any clientversion you enable here also enable a range of versions up to the version in the next available setting.

  ### Step 3) Name your Shard

  Locate the section called [play server list], which should contain a line similar to this:

  SERVERLIST=Default UOX3 Server,127.0.0.1,2593

  Replace "Default UOX3 Server" with the name you'd like to use for your UOX3 shard. Keep the name short (below 30 chars); the longer it is, the less likely it will show up in the UO client's server list without being truncated.

  ### Step 4) Set the IP Address

  If you are running UOX3 on the same computer as your UO client, and you only intend to access the server locally, you can leave the IP address in the SERVERLIST line as is (127.0.0.1). If you intend to have the shard accessible over LAN or the Internet, you need to replace 127.0.0.1 with with your LAN or public Internet IP.

  However, instead of replacing the local IP with a LAN/Internet IP, which will restrict you from connecting to the shard locally, you can alternatively add multiple SERVERLIST= lines in the .ini file, each one with a different IP assigned. The below example would allow connections from both local, LAN and Internet sources:

  [play server list]
  {
  SERVERLIST=Local UOX3 Shard,127.0.0.1,2593
  SERVERLIST=LAN UOX3 Shard,192.168.1.X,2593
  SERVERLIST=Online UOX3 Shard,X.X.X.X,2593
  }

  2593 is the Port address that your UOX3 shard will be listening for connections on, and can be left as the default value unless you have a specific reason to use another Port.

  ### Step 5) Set the path to UO files

  Scroll down to the [directories] section of the ini file, and locate this line:

  DATADIRECTORY=c:/program files/ultima online/

  If you're running UOX3 on the same computer as your UO client, point the DATADIRECTORY filepath to the folder where you installed Ultima Online.

  If you're running UOX3 on a computer without the UO client installed, point the DATADIRECTORY filepath to a folder that contains the following data-files, copied from the UO Client:

  List of Required UO Data Files
  - map*.mul/map*LegacyMUL.uop (Depending on client version)
  - mapdif*.mul (Only certain older client versions)
  - multi.idx
  - multi.mul
  - stadif*.mul (Only certain older client versions)
  - staidx*.mul
  - statics*.mul
  - tiledata.mul

  NOTE: The * in the above filenames indicate that there's more than one similarly named files, and the different numbers in each filename represents a different world/facet. If you want your shard to support all the available worlds/facets in the client, make sure to copy all of these files. Alternatively, just copy the files with a 0 in the name, if you just want the original UO map and nothing else - although be aware that in this case players will be unable to go to those additional worlds!

  ### Step 6) Setting up the Admin Account

  The final step in the UOX3 setup process is to setup the administrator account for your shard! Save and close UOX.INI, and instead navigate your way to the UOX3/accounts/ folder, where you open the file called accounts.adm in your text editor, before locating this section of the file:

  accounts.adm
  ...

  SECTION ACCOUNT 0
  {
  NAME admin
  PASS admin
  FLAGS 0x8000
  PATH ./accounts/admin/
  TIMEBAN 0x0
  LASTIP 127.0.0.1
  CONTACT unknown
  CHARACTER-1 0xffffffff [UNKNOWN]
  CHARACTER-2 0xffffffff [UNKNOWN]
  CHARACTER-3 0xffffffff [UNKNOWN]
  CHARACTER-4 0xffffffff [UNKNOWN]
  CHARACTER-5 0xffffffff [UNKNOWN]
  CHARACTER-6 0xffffffff [UNKNOWN]
  CHARACTER-7 0xffffffff [UNKNOWN]
  }

  ...

  This is account #0 on your shard, also known as the administrator account. Any character created on this account will automatically be granted all GM powers. As such, it would be a good idea to change the username and password from the default ADMIN/ADMIN to something more original, creative and most importantly - secure!

  Additional accounts can be created by copying an existing SECTION ACCOUNT # and pasting it at the bottom of the file, followed by manually incrementing the account number of the new account to the next available number (1 higher than the previous one). It can be a good idea to create a second, non-admin account to use for testing purposes, as GM/admin characters are often not subject to the same gameplay rules as regular players.

  If you make changes to this file while UOX3 is already running, you will have to reload the accounts from UOX3's console menu.

  Bonus Tips - Additional Account Creation Methods

  Tip #1 - Adding accounts through newaccounts.adm

  A second, alternate way of adding new accounts is to edit - or create, if it doesn't already exist, a file called newaccounts.adm in the same folder, and adding in one line of the following lines (pressing Enter after each) for each account you want to create:

  USER=username,password,flags,email

  Note that additions to newaccounts.adm only go into effect when the server is restarted.

  Tip #2 - Enabling auto-creation of accounts

  Finally, you can enable auto-creation of accounts on login by setting the UOX.INI setting INTERNALACCOUNTCREATION from 0 to 1 and restarting your UOX3 shard (or reloading the INI from the UOX3 console menu).

  Bonus Tips - UOX3 Directory Structure Overview
  /UOX3/
  | Root folder that contains .exe and .ini files
  |
  |--/accounts/
  | Contains all user account data
  |
  |--/archives/
  | Automatic worldfile backups are stored here
  |
  |--/books/
  | Used to store data about books written by players on the shard
  |
  |--/dfndata/
  | Contains DFN files that define attributes and properties of various aspects of the shard
  |
  |--/dictionaries/
  | Dictionaries with script-and system messages translated into languages supported by the UO client.
  |
  |--/docs/
  | Various documentation related to running an UOX3 shard
  |
  |--/help/
  | Help files accessible via in-game 'help command
  |
  |--/html/
  | Server status pages are saved here, with details about server performance and population
  |
  |--/js/
  | The home of all scripts read by UOX3's JavaScript Engine
  |
  |--/logs/
  | Output folder for various shard log files; error log, combat log, network log, etc
  |
  |--/msgboards/
  | This is where data for posts on in-game bulletin boards is stored
  |
  |--/shared/
  | Where world data about characters, items, time, resource regions etc is stored
  |
  | banlist.ini
  | uox.ini
  | UOX3.exe (Windows only)
  | uox3 (Linux only)
- (Optional) Populating Your UOX3 Shard

  By default, UOX3 comes as a blank slate - a tabula rasa - on which you can build and craft your own unique UO shard. However, should you wish to get a head-start, you can use of the "Default UOX3 Worldfiles" to add basic decorations such as doors and signs for all the mainland UO towns on the Felucca facet (world 0), and/or the "Community-made Spawn.dfn" file that will populate your world with all kinds of NPCs, from animals and monsters to shopkeepers and townfolk.

  ### Default UOX3 Worldfiles

  Note: It is recommended that you download and add these default worldfiles to your shard BEFORE your first startup and before you create your first character, as applying these will essentially overwrite your existing worldfiles and erase any characters or items you might have created already.

  Click the Default UOX3 Worldfiles link over at the UOX3.org Downloads-page to download a zip-file containing a default set of world decorations for your shard. Once the download is complete, unzip this file into your UOX3/shared/ folder, overwriting any existing files in that folder.

  ### Community-made Spawn.dfn

  Click the Community-made Spawn.dfn link over at the UOX3.org Downloads-page to download a zip-file with regional spawns setup to spawn a variety of NPCs across the Felcuca facet (world 0) of your UOX3 shard. Unzip this file into the UOX3/dfndata/spawn/ folder, overwriting any existing (and presumably empty) spawn.dfn file in that folder.

- Starting Up Your UOX3 Shard

  ### Windows

  Navigate to the root of your UOX3 folder, and double-click on UOX3.exe to start UOX3.

  ### Linux/macOS

  Open a new terminal window, navigate to the root of your UOX3 directory, and start UOX3 by entering the following command: ./uox3

  ### Common

  UOX3 should now start up, and a barrage of text should scroll off your screen as UOX3 loads the various UO data files, DFNs and scripts. Barring any errors during this process, the scrolling should come to a halt with the following lines displayed at the bottom:

  | UOX: Startup Complete
  o------------------------------------------------------------------------------o
  | Thread: CheckConsoleThread has started

  If you see these lines, and there were no errors highlighted with a red [failed] during the startup process, your UOX3 shard is now ready to accept its first client connection!

  Bonus Tip - Shutting down UOX3

  Should you ever need to shut down UOX3 for any reason, it's important that you do it correctly to avoid any loss of data. If you simply close UOX3 using the 'x' in the corner of the window, any changes made since the last worldsave will be permanently lost.

  Instead, either use the in-game GM command 'shutdown # (where # is the number of seconds until shutdown), or press * in the UOX3 console to disable safe-mode, followed by either Q or Esc. This will prompt UOX3 to initiate the shutdown process, saving the game world and freeing up used memory.

- Connecting to UOX3

  A couple of things are required to connect and login to your UOX3 shard; an Ultima Online client, and a tool that can remove encryption from said client. Such a tool is needed since UOX3 does not accept connections from encrypted clients.

  ### Ultima Online

  If you followed the recommendations in the Requirements section up above, you will already have an Ultima Online client installed, and can skip to the next step about Razor. If not - don't panic! Go grab the latest client download - titled Classic Client - from the official UO website and install it, or visit the UOX3 community forums to read more about different UO client versions/expansions and compatibility with UOX3.

  ### Removing the Client Encryption with Razor

  With a UO client downloaded and installed, it's time to take care of the encryption. Go grab the UO:R Community Edition of Razor if you haven't already. It's being regularly maintained and updated, unlike the original Razor. Once installed, start it!

  After a short wait, you'll be greeted by a welcome screen. Unless you encounter any issues, or you have multiple UO Client versions installed, just leave the Load Client part at 2D Client (Auto Detect). Make sure Patch client encryption is checked, and that the IP and Port matches what you setup for UOX3 in UOX.INI. If running client and server on same computer, the default UOX3 settings are 127.0.0.1 as IP and 2593 as Port.

  Once basic setup of Razor is complete, click the Okay button to launch the UO client. At this point you are now ready to enter your UOX3 username and password and log in!

  ### Alternative for Linux/macOS users - Use ClassicUO Client

  Note for Linux/macOS (and even Windows) users: An alternative to the regular UO client and Razor, neither of which run natively on Linux or macOS, is the ClassicUO client - an open-source, cross-platform client that can be used to connect to UOX3 without Razor - though it still requires the original UO data files to run, so you'll need to figure out a way to get those files over to your Linux/macOS machine.

  ClassicUO Client

  ClassicUO is a cross-platform (Windows, Linux, macOS), open source implementation of the Ultima Online Classic Client that runs faster, smoother and with more features and customizability than the original UO client. Some of the interesting features it offers:

  - Run client at up to 250 FPS
  - Run at any resolution, and any window size
  - Customize zoom level
  - Show lightsources even at max light level
  - Show custom aura colors under feet of all characters
  - Show network stats
  - Various quality of life features that have been available in various assist tools for decades... like showing stumps instead of trees, hiding roofs (a bit dubious...), etc.

  Check it out at the ClassicUO Website or @ GitHub!

- # First Five Minutes

- Logging In and Creating a Character

  Once your UOX3 shard has successfully started up (and importantly, remains running), and the UO client has loaded the login screen after you started it using a tool like Razor, you are ready to log in to your UOX3 shard for the first time.

  Enter the same username and password that you added in UOX3/accounts/accounts.adm during the initial UOX3 setup, and click Login. Select your UOX3 shard from the server listing that appears, and proceed through character creation to create your first character. Note that if you are logging in using the first account listed in accounts.adm - account 0 - all characters created on this account will automatically receive GM powers!

- Using Your First GM Commands

  Great! You have a character. Now what?

  If you're playing on the first account listed in UOX3\ACCOUNTS\accounts.adm (as you should), your characters will be classified as "admin" characters with automatic access to all Game Master and Admin powers and commands. However, the character doesn't quite look the part yet!

  ### Becoming a GM

  Let's start by turning your character into a proper Game Master. Type the following command into the UO client (don't forget the command prefix at the start of the command!):
  'make gm

  Once you hit Enter, your regular UO mouse cursor (a hand) will be replaced by a targeting cursor, so go ahead and target your own character, who should now get a nice, new, shiny red GM robe, which also grants the awesome, ultimate destructive power of... being able to walk through doors. For admin characters, who already have access to all commands, this is more of a formality than anything else.

  Bonus Tip - Changing the Command Prefix

  By default, the command prefix character used at the start of every GM command in UOX3 is set to '. You can change this command prefix via a setting called COMMANDPREFIX in UOX.INI if you'd rather use something else.

  ### Changing Colour of GM Robe

  Should you not be happy with the colour of your new robe, you can give it a facelift using the following command:
  'dye

  Once you target your character - or any other dynamic object in the game world - a menu (referred to in UO as a GUMP) will pop up, allowing you to choose a colour to apply to the targeted object.

  Bonus Tip - Dynamic vs Static Items

  Items you see in-game can usually be divided into two broad categories - dynamic and static items.

  Static items are a permanent addition to the map, and can be seen even when logged into an otherwise empty shard. These items cannot be removed, modified or moved around without the use of specialized, 3rd party map-editing tools.

  Dynamic items, on the other hand, are items you add to the game world, ones you can remove, move and manipulate. These are the decorations you place out, the doors that can be opened and the items in your backpack and equipped on your character's paperdoll. Some other emulators refer to these items (and characters) under the umbrella term mobiles.

  ### Becoming a Player Again

  If you want to revert back to looking like a normal player, or if you want to strip another player of their GM powers, you can use this command to reverse the process (don't worry, as an admin you'll still retain all your GM powers!):
  'make player

  Bonus Tip - Counselors

  The make command has a third variant, which allows you to assign someone as a Counselor for your shard. Like for GMs, the role of Counselor comes with a fancy robe, but a blue one instead of the GM's red:
  'make cns

  Someone who has been made a Counselor will have access to some - but not all - GM powers, in particular those that involve responding to player help requests and travelling around the game world.

  As with the command to turn someone into a GM, be careful who you deal out such power to. Remember: Power tends to corrupt, and absolute power corrupts absolutely!

- Getting Around the World

  Some of the most important GM commands to learn are the ones that allow you to traverse across Britannia and other realms in the blink of an eye, and the ones that provide you with information about where you are at any given point of time.

  The 'where command will show you the current in-game coordinates of your character, in the format of x, y, z, worldNumber, instanceID. If you walk around for a bit in the game, and use the command a couple more times, you might notice these coordinates changing. Before moving on to the next step, use where again, but this time make a note of the first three values. You'll need them soon!

  Next, as an exercise, try out the following GM commands to see what they do:
  'tele
  'travel
  'goplace 1
  'goplace 20

  Now that you have travelled the world, been places, maybe seen things you can never forget... it's time to return to your roots. Let's go back to the starting point, the location you were at when you used the where command earlier:
  'go x y z (replace x y and z with the values you got from the 'where command)

  UOX3 has many other commands that allow you to manipulate the coordinates of both characters and items in various ways, but these basic few are your bread and butter, the ones you'll keep coming back to in order to get things done.

- Adding Items and NPCs

  With the basics of travel commands under your belt already, it's time to move on to something a bit more interesting: Learning how to add objects like items and NPCs to your UOX3 shard! Your go-to tool for this will be the add command, which is a multi-purpose command that can be used in a variety of ways.

  ### Adding Items via Add-menu

  Let's jump right in using the following command:
  'add

  A GUMP menu system should now pop up, listing items and NPCs categorized by function and purpose. Select "Gear" from the menu, then "Clothing" from the next sub-menu, then "Headwear", before finally selecting "feathered hat". This last selection will close the GUMP menu, and add the selected object - in this case a feathered hat - into your character's backpack.

  Open the backpack by double-clicking your character, then double-clicking the backpack in the character paperdoll that pops up, or by using the default UO shortcut key - alt+i. Next, click and drag the feathered hat out of your backpack and onto the character paperdoll to equip it. Congratulations! You are now a GM wearing a feathered hat.

  This "add-menu" can be used to add a variety of items to the game. Some are gear, like the feathered hat, some are decorations that you drag out of your backpack and place in the game-world somewhere, and some are tools or resources used by your character's skills - like a pickaxe for mining, or a hammer for blacksmithing.

  Bonus Tip - Moving Immovable Items

  While adding items to your world, you might encounter a situation where the items you add won't highlight when you move your mouse cursor over them, and they cannot be picked up or dragged around, perhaps due to the item's movable state makes it immovable. The quickest way to overcome this issue is to use the following command, which will allow you to move all dynamic objects regardless of their immovable state:
  'allmove on

  ### Adding NPCs via Add-menu

  You can also add NPCs using the same command. Open the add-menu again using the same 'add command, and select "NPCs" from the menu. Next, select "Monsters", followed by "Humanoids", and finally "Orc". A targeting cursor will be presented, and once you select a spot in the game world, an Orc will appear.

  Since you're a GM with unlimited power, you are by default invulnerable to damage, so the Orc won't even bother attacking you, but will just start wandering around aimlessly. However, should you wish to engage the Orc in a fight, you can disable your invulnerability through the make player command from earlier, or the following command:
  'invul false

  Bonus Tip - Resurrecting Players (or yourself)

  If you bit off more than you could chew, and the Orc actually ended up killing your character, and you're now stuck in the bleak, grey realm of the dead - despair not! There's a command for that:
  'resurrect

  Target the ghost of any dead player character using this command to instantly bring them back to life!

  ### Adding Items or NPCs Directly

  Adding objects through the add-menu is all swell and good, but it can be a bit cumbersome and slow, especially if the items you need are nested deep inside some sub-menu! Thankfully there are faster ways of adding these objects. As long as you know the ID of the object you want to add, you can use the add command to add these objects directly without needing to slog through any menus!

  Try the following two commands:
  'add item 0x171A
  'add npc orc

  Both of the above examples should provide you with a targeting cursor to let you choose exactly where to add the item with ID 0x171a (feathered hat) or the NPC with id "orc" (Orc, duh). What if you don't know the ID of the object, though?

  To find the ID of an object that you want to add, you can either look it up in the DFN files under the UOX3\DFNDATA\ITEM or UOX3\DFNDATA\NPC folders, or you can use an in-game command that is also a powerful GM tool for adjusting the properties of objects - the tweak command.

  Try using this command to find the ID of the feathered hat or the Orc that you previously added:
  'tweak

  Take note of the ID displayed in the GUMP menu that pops up, and compare it to the ID you supplied to the add command above.

  Bonus Tip - Removing Items and NPCs

  Both items and NCPs can be removed using the remove command, which will bring up a targeting cursor to let you select which object to remove. Try it now, and target either the Orc or the feathered hat you previously dragged to your character's paperdoll:
  'remove

  As soon as you target an object, said object will be instantly and permanently removed from view and deleted from the game world!

- Next Steps to Master UOX3

  What is covered in the previous few sections of this document just barely scratches the surface of all there is to learn, know and do in UOX3, and it would be impossible to cover everything without writing a long novel of an instruction manual.

  From here on out, it's up to you to really dig into the guts of UOX3 to explore, discover, learn and eventually grok UOX3 completely. Fret not, however! You still have tools like these your disposal to ease your journey:

  ### The UOX3 Command List

  The command list contains detailed information on each and every command available in UOX3. If you're unsure about the specifics of a certain command, this is where you go. It can be found in the next section below, titled Additional UOX3 Info.

  ### The Feature Documentation

  Extensive documentation is also available for each major feature supported by UOX3. Go to the Feature Documentation section of this document if you want to dig into the various systems.

  ### The JS Engine Docs

  The JS Engine docs provide details of all the various events/triggers, methods, functions and properties that you can make use of in your JS scripts to make your shard come to life.

  ### The Community Forums

  The community forums at UOX3.org contains many resources for both coding, scripting and managing your UOX3 shard. It can also be a great place to have a discussion on topics that don't require an immediate and instant response.

  ### The Community Discord

  Join the UOX3 community on Discord for a more direct line of communication with fellow UOX3 users and developers. Forums are great, but often it can be more efficient to have direct, near real-time conversations with other people.

  Using the above tools, and through the magic of friendship and community, there is nothing you cannot accomplish in UOX3 if you set your mind to it.

- # Additional UOX3 Info

- UOX.INI Settings

  The settings listed below can be found in uox.ini in the root UOX3 data folder, and can be modified and reloaded dynamically while UOX3 is running. After making a change, simply use the 'reloadini command in-game, or console command '1' after unlocking the UOX3 console by pressing '*'.

  [system]

  SERVERNAME=Default UOX3 Server
  Servername used to support UOG Info Request.

  PORT=2593
  Port number that server listens on for connections.

  NETRCVTIMEOUT=0
  The time it takes for a connection to be dropped if no packets are received.

  NETSNDTIMEOUT=3
  Not in use.

  NETRETRYCOUNT=0
  The number of times a network recieve will be attempted before it throws an error.

  CONSOLELOG=1
  Allows various levels of logging; 0 = none, 1 = errors/warnings, 2 = errors/warnings + all speech

  CRASHPROTECTION=1
  Number of crash restart attempts before stopping - Not in use.

  COMMANDPREFIX='
  Character that acts as the command prefix.

  ANNOUNCEWORLDSAVES=1
  Determines if world-saves are announced.

  JOINPARTMSGS=1
  Determines if player join/part messages are enabled.

  BACKUPSENABLED=0
  Determines if backups are enabled.

  BACKUPSAVERATIO=5
  Number of saves before a backup occurs.

  SAVESTIMER=300
  Number of seconds between world saves.

  ACCOUNTISOLATION=1
  Not in use.

  UOGENABLED=0
  Determines if support for the UOGateway Info Request Service is enabled.

  RANDOMSTARTINGLOCATION=0
  If 1, new player characters start in a random starting location instead of one they choose during character creation.

  ASSISTANTNEGOTIATION=0
  If 1, UOX3 will attempt to negotiate features with the player's assist-tool (Razor, AssistUO, etc). Negotiate, in this context, means tell the assist tool what features to disable! See [disabled assistant features] for a list of features that can be disabled.

  KICKONASSISTANTSILENCE=0
  If 1, UOX3 will disconnect players who's clients (or assist tools, rather) don't respond to the request to negotiate features.

  CLASSICUOMAPTRACKER=0
  If 1, UOX3 will respond to ClassicUO client's WorldMap packet request for party/guild member location info.

  [clientsupport]

  Note that each of these settings represents a range of client versions, ranging from the one specified to the next one just before the next available setting. So CLIENTSUPPORT4000 ranges from v4.0.0.0 until whichever the last version before v5.0.0.0 (CLIENTSUPPORT5000) was.

  NOTE: While it is possible to enable login-support for all the ranges of client-versions listed below, how well they will work depends very much on what version of the datafiles are used on the server. It is highly recommended to restrict client-support to whichever range of versions is closest to the client-version the datafiles in use on the server are from.

  CLIENTSUPPORT4000=0
  Enables login-support for all clients in the 4.0.x range

  CLIENTSUPPORT5000=0
  Enables login-support for all clients in the 5.0.x range

  CLIENTSUPPORT6000=0
  Enables login-support for clients from 6.0.0 to 6.0.4.x

  CLIENTSUPPORT6050=0
  Enables login-support for clients from 6.0.5.0 to 6.0.14.x

  CLIENTSUPPORT7000=0
  Enables login-support for clients from 7.0.0.0 to 7.0.8.x

  CLIENTSUPPORT7090=0
  Enables login-support for clients from 7.0.9.0 to 7.0.15.x

  CLIENTSUPPORT70160=0
  Enables login-support for clients from 7.0.16.0 to 7.0.23.x

  CLIENTSUPPORT70240=0
  Enables login-support for clients from 7.0.24.0 to 7.0.29.x

  CLIENTSUPPORT70300=0
  Enables login-support for clients from 7.0.30.0 to 7.0.33.0

  CLIENTSUPPORT70331=1
  Enables login-support for clients from 7.0.33.1 to 7.0.45.64

  CLIENTSUPPORT704565=1
  Enables login-support for clients from 7.0.45.65 to 7.0.60.x

  CLIENTSUPPORT70610=1
  Enables login-support for clients from 7.0.61.0 and above

  [play server list]

  SERVERLIST=Default UOX3 Server,127.0.0.1,2593
  Series of server entries for shard list. Multiple entries supported, each with different name, IP and Port.

  [skill & stats]

  SKILLLEVEL=5
  Global difficulty level for crafting items. 1=Easiest, 5=Default, 10=Difficult.

  SKILLCAP=7000
  Total number of skillpoints available for each player.

  SKILLDELAY=5
  Number of seconds that must pass after a skill is used, before another skill can be used.

  STATCAP=325
  Total number of statpoints available for each player.

  EXTENDEDSTARTINGSTATS=1
  Toggles whether to allow the extended starting stats (90 statpoints in total) for new characters created with client versions 7.0.16+

  EXTENDEDSTARTINGSKILLS=1
  Toggles whether to allow the fourth starting skill (and 120 skillpoints in total) for new characters created with client versions 7.0.16+

  MAXSTEALTHMOVEMENTS=10
  Max number of steps allowed with stealth skill at 100.0

  MAXSTAMINAMOVEMENTS=15
  Max number of steps allowed while running before stamina is reduced.

  SNOOPISCRIME=0
  Determines if snooping is a crime or not.

  ARMORAFFECTMANAREGEN=1
  Toggles whether or not armor affects mana regeneration rate

  [timers]

  CORPSEDECAYTIMER=900
  Amount of time for a corpse to decay.

  WEATHERTIMER=60
  Amount of time between changing light levels (day cycles).

  SHOPSPAWNTIMER=300
  Amount of time between shopkeeper restocks.

  DECAYTIMER=300
  Amount of time a decayable item will remain on the ground before disappearing.

  INVISIBILITYTIMER=60
  Duration of the invisibility spell.

  OBJECTUSETIMER=1
  Amount of time a player must wait between using objects.

  GATETIMER=30
  Duration of a summoned moongate.

  POISONTIMER=180
  Duration of the poison effect on a character.

  LOGINTIMEOUT=300
  Amount of time for an idle connection to time out.

  HITPOINTREGENTIMER=8
  Amount of time required to regenerate a single point of health.

  STAMINAREGENTIMER=3
  Amount of time required to regenerate a single point of stamina.

  MANAREGENTIMER=5
  Amount of time required to regenerate a single point of mana.

  BASEFISHINGTIMER=10
  Base time for fishing skill to complete an attempt at fishing.

  RANDOMFISHINGTIMER=5
  Max random time for fishing skill to complete.

  SPIRITSPEAKTIMER=30
  Duration of the spirit speak skill.

  PETOFFLINECHECKTIMER=600
  Sets the interval in seconds between checks for the player offline time.

  [directories]

  DIRECTORY=./
  Root UOX3 directory

  DATADIRECTORY=C:/Program Files/Ultima Online/
  Where UOX3 looks for the UO data files.
  Minimum required data files: map0.mul/map0LegacyMUL.uop, multi.idx, multi.mul, staidx0.mul, statics0.mul, tiledata.mul
  Optional data files: map(1-5).mul/map(1-5)LegacyMUL.uop, mapdif(0-2).mul, mapdifl(0-2).mul, stadif(0-2).mul, stadifi(0-2).mul, stadifl(0-2).mul, staidx(1-5).mul, statics(1-5).mul

  DEFSDIRECTORY=./dfndata/
  Where UOX3 looks for the DFN-files.

  BOOKSDIRECTORY=./books/
  Where UOX3 saves the .bok files for books.

  ACTSDIRECTORY=./accounts/
  Where UOX3 looks for/saves account files.

  SCRIPTSDIRECTORY=./js/
  Where UOX3 looks for Javascripts

  BACKUPDIRECTORY=./archives/
  Where UOX3 backs up worldsaves.

  MSGBOARDDIRECTORY=./msgboards/
  Where UOX3 stores bulletin-board messages.

  SHAREDDIRECTORY=./shared/
  Where UOX3 stores the worldfiles.

  ACCESSDIRECTORY=./accounts/
  Where UOX3 looks for/saves account files.

  HTMLDIRECTORY=./html/
  Where UOX3 generates serverstatus-HTML-files

  LOGSDIRECTORY=./logs/
  Where UOX3 saves server logs.

  DICTIONARYDIRECTORY=./dictionaries/
  Where UOX3 looks for dictionary-files.

  [settings]

  LOOTDECAYSWITHCORPSE=1
  Determines if loot decays along with corpses or not.

  GUARDSACTIVE=1
  Determines if guards are enabled globally or not.

  DEATHANIMATION=1
  Determines if the Deathanimation is played when a player dies.

  AMBIENTSOUNDS=5
  Ambient sounds, from 1 - 10. Higher value means ambient sounds are played less often.

  AMBIENTFOOTSTEPS=0
  Determines if the footstep-sounds hardcoded in UOX3 are used or not (different sounds on different tiles).

  INTERNALACCOUNTCREATION=0
  If enabled, new accounts are created automatically when someone logs in with an unknown username.

  SHOWOFFLINEPCS=1
  If enabled, offline PCs can be seen by GMs.

  ROGUESENABLED=1
  If enabled, then the stealing skill is enabled.

  PLAYERPERSECUTION=0
  If enabled, dead players can attack living ones, and thus drain their mana.

  ACCOUNTFLUSH=0
  How often (in minutes) online accounts are checked to see if they really ARE online.

  HTMLSTATUSENABLED=-1
  If > 0 then UOX3 generates server-status pages in the HTML directory.

  SELLBYNAME=0
  Determines if items are sold by their name, not just ID/Colour.

  SELLMAXITEMS=5
  Maximum number of items that can be sold to a vendor at a time.

  TRADESYSTEM=0
  Determines if the Tradesystem is enabled or not (fluctuation of vendor prices across regions - check documentation for Advanced Trade System.)

  RANKSYSTEM=1
  If enabled, item creation allows for variable quality of items.

  CUTSCROLLREQUIREMENTS=1
  If enabled, there is no skill requirements for casting spells from scrolls.

  NPCTRAININGENABLED=1
  If enabled, NPCs can train player-characters.

  HIDEWILEMOUNTED=1
  If enabled, a character can hide/stealth while mounted.

  WEIGHTPERSTR=3.5
  How much weight per point of STR a character can hold.

  POLYDURATION=90
  Duration of the polymorph spell.

  CLIENTFEATURES=1021183
  Can be used to enable/disable specific expansion-related client-side features. See clientfeatures List for details:

  clientfeatures List

  (0x01) 1: Enable T2A support (chat-button, lost lands)
  (0x02) 2: Enable UO:R support (Felucca/Trammel)
  (0x04) 4: Enable TD support (First 3D client, Ilshenar)
  (0x08) 8: Enable LBR support (skills, maps, MP3s, LBR monsters in 2D client)
  (0x10) 16: Enable AoS support (necro/palas, malas map, resistances, weapon abilities, AoS monsters, detailed tooltips) (Not implemented)
  (0x20) 32: Enable Sixth Character Slot support
  (0x40) 64: Enable SE support (ninja/samurai, spells, skills, tokuno-map)
  (0x80) 128: Enable ML support (elves, spells, skills)
  (0x100) 256: Enable (basic) KR support (2D client only, up to 6.0.14.1)
  (0x200) 512:Enable the Ninth Age splash screen and crystal/shadow housing tiles
  (0x400) 1024:Enable the Tenth Age
  (0x800) 2048:Enable increased housing and bank-storage
  (0x1000) 4096:Enable 7th character slot
  (0x2000) 8192:Enable KR faces (Not implemented)
  (0x4000) 16384:Enable Trial Account (Not implemented)
  (0x8000) 32768: Live (non-trial) Account. Since client 4.0 this bit has to be set, otherwise bits 3..14 are ignored.
  (0x10000) 65536: Enable SA features: gargoyle race, spells, skills, housing tiles (Partially implemented)
  (0x20000) 131072: Enable HS features (Not implemented)
  (0x40000) 262144: Enable Gothing housing tiles
  (0x80000) 524288: Enable Rustic housing tiles
  (0x100000) 1048576: Enable Jungle housing tiles
  (0x200000) 2097152: Enable Shadowguard housing tiles
  (0x400000) 4194304: Enable Time of Legends features (Not implemented)
  (0x800000) 8388608: Enable Endless Journey account (Not implemented)

  The above flags can be mixed and matched to enable specific features on the client (depending on client version). Simply add together the decimal numbers of the desired features, and put the end-result in the CLIENTFEATURES tag.

  SERVERFEATURES=4584
  Can be used to enable/disable specific expansion-related server-side features. See serverfeatures List for details:

  serverfeatures List

  (0x01) 1: Unknown
  (0x02) 2: IGR
  (0x04) 4: OneChar - One char per account only, Siege Perilious style,
  (0x08) 8: ContextMenus
  (0x10) 16: LimitChar - Limit amount of chars, combine with OneChar
  (0x20) 32: AoS - Enable Tooltips, fight system book
  (0x40) 64: SixChars - Six character slots
  (0x80) 128: SE
  (0x100) 256: ML
  (0x200) 512: Unknown2 - added with UO:KR launch
  (0x400) 1024: Send UO3D client type? client sends 0xE1?)
  (0x800) 2048: Unknown3 - added sometime between UO:KR and UO:SA
  (0x1000) 4096: SeventhCharacterSlot
  (0x2000) 8192: Unknown4 - added with UO:SA launch
  (0x4000) 16384: new movement system (Not implemented)
  (0x8000) 32768: Unlock new Felucca faction-areas (Not implemented)

  The above flags can be mixed and matched to enable specific features on the server. Simply add together the decimal numbers of the desired features, and put the end-result in the SERVERFEATURES tag.

  OVERLOADPACKETS=1
  Toggles whether or not JS can handle incoming/outgoing network packets

  ADVANCEDPATHFINDING=1
  Enables/disables the A* Pathfinding routine for NPCs

  LOOTINGISCRIME=1
  Toggles whether looting (innocent/blue) corpses is a crime or not

  BASICTOOLTIPSONLY=0
  If enabled, tooltips will only show name and weight of items

  GLOBALITEMDECAY=1
  Toggles decay on/off on a global scale. Does not remove decay flag from items, only stops them from decaying

  SCRIPTITEMSDECAYABLE=1
  Toggles default decay status of DFN items. Can be overriden by DECAY tag in item-DFNs

  BASEITEMSDECAYABLE=0
  Toggles default decay status of base items. Can be overriden by DECAY tag in harditems.dfn

  ITEMDECAYINHOUSES=0
  Toggles default decay status of non-locked down items in multis (houses and boats). Defaults to off.

  PAPERDOLLGUILDBUTTON=1
  Toggles whether or not the Guild-button on the paperdoll can be used as a shortcut for interacting with guildstones. Defaults to on.

  FISHINGSTAMINALOSS=2
  Sets the amount of stamina lost when fishing.

  [speedup]

  CHECKITEMS=1.5
  How often (in seconds) items are checked for decay and other things.

  CHECKBOATS=0.65
  How often (in seconds) boats are checked for motion and so forth.

  CHECKNPCAI=1
  How often (in seconds) NPCs can execute an AI routine.

  CHECKSPAWNREGIONS=30
  How often (in seconds) spawn regions are checked for new spawns.

  NPCMOVEMENTSPEED=0.6
  Allows customization of NPC movement speed. Can be overridden by WALKINGSPEED tag in NPC-DFNs

  NPCRUNNINGSPEED=0.2
  Allows customization of NPC running speed. Can be overridden by RUNNINGSPEED tag in NPC-DFNs

  NPCFLEEINGSPEED=0.4
  Allows customization of NPC fleeing speed. Can be overridden by FLEEINGSPEED tag in NPC-DFNs

  NPCSPELLCASTSPEED=1
  Used to adjust how often NPCs cast spells in combat. Global setting, defaults to 1. Can be finetuned per NPC using SPADELAY DFN tag.

  GLOBALATTACKSPEED=1
  Used to adjust the attack speed globally for all characters. Defaults to 1. Can be finetuned per NPC via DEX stat in DFNs.

  [message boards]

  POSTINGLEVEL=0
  If 0, only GMs can post on Bulletin Boards, otherwise free for all.

  REMOVALLEVEL=0
  If 0, only GMs can remove posts on Bulletin Boards, otherwise free for all.

  [escorts]

  ESCORTENABLED=1
  If 1, NPC escorting is enabled.

  ESCORTINITEXPIRE=900
  Amount of time until an escort-NPC will vanish while waiting for someone to start escorting it.

  ESCORTACTIVEEXPIRE=600
  Amount of time until an escort NPC will vanish while a player is escorting it.

  ESCORTDONEEXPIRE=600
  Amount of time until an escort NPC will vanish when it has reached it's destination.

  [worldlight]

  DUNGEONLEVEL=3
  Specifies the light-level of Dungeon-areas.

  BRIGHTLEVEL=0
  Specifies the brightest light-level in the day/night cycles.

  DARKLEVEL=5
  Specifies the darkest light-level in the day/night cycles.

  SECONDSPERUOMINUTE=5
  Number of real seconds per UOX3 minute.

  [tracking]

  BASERANGE=10
  Minimum range even a novice can track from.

  BASETIMER=30
  Tracking timer - maximum time a GrandMaster can track someone.

  MAXTARGETS=20
  Maximum number of targets that can be tracked.

  MSGREDISPLAYTIME=30
  How often (in seconds) the tracking message is redisplayed.

  [reputation]

  MURDERDECAYTIMER=60
  Amount of time before a permanent murder count will decay.

  MAXKILLS=4
  Maximum number of kills before turning red.

  CRIMINALTIMER=120
  Amount of time a character remains criminal after committing a criminal act.

  [resources]

  MINECHECK=1
  Type of mining check performed - 0 = anywhere, 1 = mountains/cavefloors, 2 = region based (not working)

  OREPERAREA=10
  Maximum number of ores in a given resource area.

  ORERESPAWNTIMER=600
  Amount of time it takes for 1 single ore to respawn in a resource area.

  ORERESPAWNAREA=10
  Number of ore-areas to split the world into.

  LOGSPERAREA=3
  Maximum number of logs in a given resource area.

  LOGSRESPAWNTIMER=600
  Amount of time it takes for 1 single log to respawn in a resource area.

  LOGSRESPAWNAREA=10
  Number of log-areas to split the world into.

  [hunger]

  HUNGERRATE=6000
  Amount of time a player has before his hunger level decreases.

  HUNGERDMGVAL=2
  Amount of damage applied if hungry and below threshold.

  PETHUNGEROFFLINE=1
  Toggles whether pets should hunger while the player (owner) is offline or not.

  PETOFFLINETIMEOUT=5
  Sets the time in days for when an offline player's pet becomes wild again.

  [combat]

  MAXRANGE=10
  Maximum range (in tiles) at which combat can occur.

  ARCHERRANGE=7
  The range at which NPC archers stop charging their target in combat (default 7).

  SPELLMAXRANGE=10
  Maximum range (in tiles) at which spells can be cast.

  DISPLAYHITMSG=1
  If 1, hit messages are displayed in combat.

  DISPLAYDAMAGENUMBERS=1
  If 1, damage numbers are displayed above characters in combat.

  MONSTERSVSANIMALS=1
  If 1, monsters can attack animals.

  ANIMALATTACKCHANCE=15
  The chance of animals being attacked by monsters (0-100)

  ANIMALSGUARDED=0
  If 1, animals are under the protection of town guards.

  NPCDAMAGERATE=2
  NPC Damage divisor - PCs sustain less than NPCs. If a PC, damage is 1/value.

  NPCBASEFLEEAT=20
  % of HP where an NPC will flee from combat, if it's not defined for it already in the DFNs.

  NPCBASEREATTACKAT=40
  % of HP where an NPC will resume attacking, if it's not defined for it already in the DFNs.

  ATTACKSTAMINA=-2
  Amount of stamina lost when hitting an opponent.

  ATTACKSPEEDFROMSTAMINA=1
  If 1, attack speed in combat is derived from stamina instead of dexterity.

  SHOOTONANIMALBACK=0
  If 1, archery from horseback is possible.

  COMBATEXPLODEDELAY=2
  The amount of time it takes for the damage from the Explosion spell to be inflicted on the target.

  WEAPONDAMAGECHANCE=17
  The chance (in %) of weapons taking damage in combat.

  WEAPONDAMAGEMIN=0
  The min amount of damage (randomized) weapons can take if it takes damage in combat.

  WEAPONDAMAGEMAX=1
  The max amount of damage (randomized) weapons can take if it takes damage in combat.

  ARMORDAMAGECHANCE=33
  The chance (in %) of armor taking damage in combat.

  ARMORDAMAGEMIN=0
  The min amount of damage (randomized) armor can take if it takes damage in combat.

  ARMORDAMAGEMAX=1
  The max amount of damage (randomized) armor can take if it takes damage in combat.

  [start locations]

  Startlocations used by the character-creation process in the client. Fixed amount of locations, using the following format: LOCATION=TOWN,BUILDING,X,Y,Z,WORLD,INSTANCE,CLILOCMSG (description of town)

  Default setup:
  LOCATION=Yew,Center,545,982,0,0,1075072
  LOCATION=Minoc,Tavern,2477,411,15,0,1075073
  LOCATION=Britain,Sweet Dreams Inn,1495,1629,10,0,1075074
  LOCATION=Moonglow,Docks,4406,1045,0,0,1075075
  LOCATION=Trinsic,West Gate,1832,2779,0,0,1075076
  LOCATION=Magincia,Docks,3675,2259,26,0,1075077
  LOCATION=Jhelom,Docks,1492,3696,0,0,1075078
  LOCATION=Skara Brae,Docks,639,2236,0,0,1075079
  LOCATION=Vesper,Ironwood Inn,2771,977,0,0,1075080

  [startup]

  STARTGOLD=1000
  Amount of gold a new PC starts with.

  STARTPRIVS=0
  Starting privileges of new characters (UNUSED).

  [gumps]

  TITLECOLOUR=0
  Default text colour for titles in gumps.

  LEFTTEXTCOLOUR=0
  Default text colour for left text in gumps (2 column ones).

  RIGHTTEXTCOLOUR=0
  Default text colour for right text in gumps (2 column ones).

  BUTTONCANCEL=4017
  Default Button ID for cancel button in gumps.

  BUTTONLEFT=4014
  Default Button ID for left button (navigation) in gumps.

  BUTTONRIGHT=4005
  Default Button ID for right button (navigation) in gumps.

  BACKGROUNDPIC=2600
  Default Gump ID for background gump.

  [towns]

  POLLTIME=3600
  Time (in seconds) for which a town voting poll is open.

  MAYORTIME=36000
  Time (in seconds) that a PC would be a mayor.

  TAXPERIOD=1800
  Time (in seconds) between periods of taxes for PCs.

  GUARDSPAID=3600
  Time (in seconds) between payments for guards.

  [disabled assistant features]

  AF_FILTERWEATHER=0
  Weather Filter

  AF_FILTERLIGHT=0
  Light Filter

  AF_SMARTTARGET=0
  Smart Last Target

  AF_RANGEDTARGET=0
  Range Check Last Target

  AF_AUTOOPENDOORS=0
  Automatically Open Doors

  AF_DEQUIPONCAST=0
  Unequip Weapon on spell cast

  AF_AUTOPOTIONEQUIP=0
  Un/Re-equip weapon on potion use

  AF_POISONEDCHECKS=0
  Block heal If poisoned/Macro IIf Poisoned condition/Heal or Cure self

  AF_LOOPEDMACROS=0
  Disallow Looping macros, For loops, and macros that call other macros

  AF_USEONCEAGENT=0
  The use once agent

  AF_RESTOCKAGENT=0
  The restock agent

  AF_SELLAGENT=0
  The sell agent

  AF_BUYAGENT=0
  The buy agent

  AF_POTIONHOTKEYS=0
  All potion hotkeys

  AF_RANDOMTARGETS=0
  All random target hotkeys (Not target next, last target, target self)

  AF_CLOSESTTARGETS=0
  All closest target hotkeys

  AF_OVERHEADHEALTH=0
  Health and Mana/Stam messages shown over player's heads

  AF_AUTOLOOTAGENT=0
  The autoloot agent (AssistUO)

  AF_BONECUTTERAGENT=0
  The bone cutter agent (AssistUO)

  AF_JSCRIPTMACROS=0
  Javascript macro engine (AssistUO)

  AF_AUTOREMOUNT=0
  Auto remount after dismount (AssistUO)

  AF_ALL=0
  Every feature possible

- Command List

  Most of the commands below can be executed by GameMasters or Administrators only, but some are also usable by regular players. To make changes to who can access a particular command, check the RegisterCommand() line at the top of every command script in the UOX3\js\commands folder, or the UOX3\dfndata\commands\commands.dfn file for commands that are still hardcoded.

  In both cases, the number associated with a given command makes it available to either admins (5), GMs (2), Counselors (1) or Players (0). These default command levels can be modified in UOX3\dfndata\commands\commands.dfn.

  Legacy

  d - Decimal number
  x, y, z - Coordinates in decimal numbers
  h - Hexdecimal number, often in the form of 0x####
  s - String
  text - Text to send with the command
  target - A target is required.
  on / off - Used to toggle settings
  nothing - Command that accepts params, but can function without them

  Note that commands are non-case-sensitive, and are shown in camelCase here just for readability's sake.

  A
  action

  The character of the player using this command performs the specified animation. See NPCAction list for possible actions!

  Command: 'action
  Parameters: (h/d) (hex or decimal)

  Example: 'action 1

  add

  Opens GM Add-menu if no parameters provided, or adds raw item if provided with hex-id, while item adds specified item from item-dfns, npc adds specified NPC from npc-dfns, and spawner adds a specified item from the item-dfns, to function as a spawner.

  Command: 'add
  Parameters: (nothing) / (h) / item (s) / npc (s) / spawner (s)

  Examples:
  'add npc orc
  'add 0x04a9 (add raw wooden floor tile)
  'add item 0x171a (add feathered hat)

  addAccount

  Adds an account. First string is username, seconds is password, hex parameter is privs (if any).

  Command: 'addAccount
  Parameters: (s s h)

  Example: 'addAccount testuser testpass 0x0

  addPack

  With no parameters, it adds a backpack (if missing) to any targeted character. Using either string or HEX hexid will add the specified item (string = from dfns, hex = from tiledata) to targetted player's backpack.

  Command: 'addPack
  Parameters: (target) / (s) / HEX (h)

  Examples:
  'addPack (add backpack to targeted character)

  'addPack 0x04a9 (add raw wooden tile in backpack)
  addX

  Adds a new raw item to your current location.

  Command: 'addX
  Parameters: (h)

  Example: 'addX 0x04a9

  adminYell

  Broadcasts text to all players online with command level of 3 and above.

  Command: 'adminYell
  Parameters: (text)

  Example: 'adminYell Hello fellow admins!

  allMove

  Enables or disables a GMs ability to pick up all objects.

  Command: 'allMove
  Parameters: on / off

  Example: 'allMove on

  announce

  Enables or disables global announcement of worldsaves.

  Command: 'announce
  Parameters: on / off

  Example: 'announce off

  areaCommand

  Used to perform other commands on all items within a targeted area.

  Command: 'areaCommand
  Parameters: dye (h) / wipe / incX (d) / incY (d) / incZ (d) / setX (d) / setY (d) / setZ (d) / setType (d) / newbie (d) / setScpTrig (d) / movable (d)

  Example: 'areaCommand dye 0x83ea

  B
  bolt

  Animates a harmless lightning bolt on target.

  Command: 'bolt
  Parameters: (target)

  browse

  Opens a specified website in user's default browser.

  Command: 'browse
  Parameters: (s)

  brightLight

  Sets the brightest lightlevel in the day/night-cycles (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)

  Command: 'brightLight
  Parameters: (d / h)

  buy

  Opens the "buy"-gump for specified vendor.

  Command: 'buy
  Parameters: (target)

  C
  cleanup

  Deletes all corpses and temporary moongates in the world.

  Command: 'cleanup

  cnsYell

  Counselor Yell - Announces a message to all with Counselor privileges or above.

  Command: 'cnsYell
  Parameters: (text)

  Example: 'cnsYell Everyone meet up at Counselor HQ in 10 minutes!

  command

  Manually executes commands normally triggered from scripts like menus.dfn, item DFNs, etc. Most are already available as stand-alone commands.

  Command: 'command
  Parameters: (cmd param)

  > addItem (itemID)
  > addSpawner (spawner ID)
  > cPage (text)
  > gmMenu (menu ID)
  > gmPage (text)
  > gCollect
  > goPlace (location ID)
  > guiInformation
  > itemMenu (item menu ID)
  > information
  > makeMenu (crafting menu ID)
  > polymorph (skin ID)
  > sysMessage (text)
  > skin (colour)
  > version
  > webLink (url)

  Examples:
  'command addItem 0x171a (add a feathered hat in inventory)
  'command cPage Hello, anyone there? (adds a help request in Counselor queue)
  'command gmMenu 1 (opens gmMenu 1 from menus.dfn - same as gmMenu command)
  'command guiInformation (shows same server info gump as from help menu)
  'command makeMenu 1 (opens makeMenu 1 from create DFNs)
  'command sysMessage Event starts in 10 minutes, at Castle British! (sends system message to all players)

  consoleTest

  Just displays some colourful stuff in the UOX3 console, just a test command =)

  Command: 'consoleTest

  cont

  Shortcut command to make targeted item a container, and set it to nondecay and movable 2.

  Command: 'cont
  Parameters: (target)

  cq

  Perform various tasks relating to the Counselor Queue; Go to next call in the queue, clear the current call, go to current call, transfer current call to GM queue.

  If nothing is specified, the Counselor Queue will be displayed.

  Command: 'cq
  Parameters: (nothing) / next / clear / curr / transfer

  cStats

  Opens a gump displaying the stats of the targeted character.

  Command: 'cStats
  Parameters: (target)

  D
  darkLight

  Sets the darkest lightlevel in the day/night cycles (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)

  Command: 'darkLight
  Parameters: (d / h)

  decay

  Enables decay for the targeted item, after which it will follow regular rules for item decay.

  Command: 'decay
  Parameters: (target)

  deleteChar

  Deletes the targeted player-character.

  Command: 'deleteChar
  Parameters: (target)

  delID

  Deletes ALL items in the world with specified ID.

  Command: 'delID
  Parameters: (h)

  disconnect

  Disconnects player connected to the specified socket.

  Command: 'disconnect
  Parameters: (d)

  dungeonLight

  Sets the default lightlevel for dungeon areas (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)

  Command: 'dungeonLight
  Parameters: (d / h)

  dupe

  Duplicates a targeted item either once (if no amount specified) or d times

  Command: 'dupe
  Parameters: (nothing / d) (target)

  dye

  Dyes an item or character the specified colour, or brings up the dye menu if no colour is specified.

  Command: 'dye
  Parameters: (h) (target)

  E
  endFight

  Targeted character (and character being fought) will stop fighting.

  Command: 'endFight
  Parameters: (target)

  F
  findItem

  Find item at specified layer on targeted character.

  Command: 'findItem
  Parameters: (d / h) (target)

  fix

  Attempts to fix incorrect Z coordinates, or teleports character to specified Z.

  Command: 'fix
  Parameters: (nothing) / (h)

  fixSpawn

  Replaces legacy spawner objects that have incorrect item type

  Command: 'fixSpawn

  follow

  Used to specify which player (target 1) an NPC (target 2) should follow when in NPCWANDER-mode 1.

  Command: 'follow
  Parameters: (target 1) > (target 2)

  forceWho

  Brings up an interactive list of online users.

  Command: 'forceWho

  freeze

  Freezes the targeted object to the ground so it cannot be moved/picked up (also see: unfreeze)

  Command: 'freeze
  Parameters: (target)

  fullStats

  Sets all temporary stats (hp, mana, stamina) on targeted character to full.

  Command: 'fullStats
  Parameters: (target)

  G
  gate

  Creates a moongate using the location set on targeted rune.

  Command: 'gate
  Parameters: (target)

  getMulti

  Returns serial of the multi that the targeted object belongs to (is inside), if any.

  Command: 'getMulti
  Parameters: (target)

  gCollect

  Forces "Garbage Collection" routine to delete objects in the deletion queue. May cause unstability when used manually, be careful about using this command on a live server!

  Command: 'gCollect
  Parameters: (nothing)

  getAmmoEffect

  Gets ammoeffect on a bow - the ID of the moving effect that is played when bow is fired at a target. Also see setAmmoEffect command.

  Command: 'getAmmoEffect
  Parameters: (target)

  getAmmoType

  Gets ammotype on a bow - the ID of the items the bow uses as ammo. Also see setAmmoType command.

  Command: 'getAmmoType
  Parameters: (target)

  getLight

  Displays the current ingame lightlevel.

  Command: 'getLight
  Parameters: (nothing)

  getTag

  Retrieves and displays value of the specified tagname from a target, if such a tag has been set. Also see settag.

  Command: 'getTag
  Parameters: (s) (target)

  Example: 'getTag tempTag

  glow

  Gives glowing property to a targeted object.

  Command: 'glow
  Parameters: (target)

  gmMenu

  Opens the specified "Help" menu from menus.dfn.

  Command: 'gmMenu
  Parameters: (d)

  gms

  Displays a list of all online GMs.

  Command: 'gms
  Parameters: (nothing)

  gmYell

  Broadcasts message to all online GMs.

  Command: 'gmYell
  Parameters: (text)

  go

  Teleports you to specified coordinates, or to a specific character based on their serial (in 4 parts) or to a location (place) from locations.dfn.

  Command: 'go
  Parameters: (x y z) / (x y z world) / (x y z world instance) / char (h h h h) / place (d)

  Examples:
  'go 5600 1200 0 0 (teleports you to Green Acres - the expansive, empty, grassy fields in the dungeon/lost lands area of the Felucca map)
  'go 0 0 0 1 (teleports you to the top left corner of the map on Trammel - ocean as far as the eye can see!)
  'go place 1 (Go straight to jail, do not pass go, do not collect 200 gold coins)

  gq

  Opens GM Queue if no parameters are used. next goes to next call in the queue, clear clears the call you are currently on, curr goes to the call you are currently on.

  Command: 'gq
  Parameters: (nothing) / next / clear / curr

  guards

  Enables/Disables town guards globally.

  Command: 'guards
  Parameters: on / off

  gumpMenu

  Opens the specified Gump menu from gumps.dfn.

  Command: 'gumpMenu
  Parameters: (d)

  H
  heal

  Fully heals targeted character.

  Command: 'heal
  Parameters: (target)

  hide

  Permanently hides targeted character. Also see unhide command.

  Command: 'hide
  Parameters: (target)

  houseIcons

  Enables or disables the display of houses as houseicons (deeds) instead of multis.

  Command: 'houseIcons
  Parameters: on / off

  howTo

  Opens a list of commands, with explanations of how to use each specific command.

  Command: 'howTo
  Parameters: (nothing)

  I
  incX

  Increments the X value of target by specified amount (can be a negative number).

  Command: 'incX
  Parameters: (d) (target)

  incY

  Increments the Y value of target by specified amount (can be a negative number).

  Command: 'incY
  Parameters: (d) (target)

  incZ

  Increments the Z value of target by specified amount (can be a negative number).

  Command: 'incZ
  Parameters: (d) (target)

  info

  Displays info about the targeted map tile.

  Command: 'info
  Parameters: (target)

  iStats

  Displays a gump with information on the targeted item.

  Command: 'iStats
  Parameters: (target)

  itemMenu

  Opens specified item-menu.

  Command: 'itemMenu
  Parameters: (d)

  iWipe

  Deletes all items NOT inside the specified area (coordinates or target area if no coordinates specified).

  Command: 'iWipe
  Parameters: (x1 y1 x2 y2) / (nothing) (target)

  J
  jail

  Jails the targeted character for specified amount of time in seconds (defaults to 100000s if no value provided). Also see release command.

  Command: 'jail
  Parameters: (target) / (d) (target)

  K
  kick

  Kicks targeted player off the server.

  Command: 'kick
  Parameters: (target)

  kill

  Kills character, or removes specified item from character.

  Command: 'kill
  Parameters: char (target) / hair (target) / beard (target) / pack (target) / layer (d / h) (target) /

  killAll

  Kills specified percentage of ALL characters in the world, and broadcasts text.

  Command: 'killAll
  Parameters: (d) (text)

  L
  linkDoors

  Link two doors together so that if one is opened, both will open. Also see unLinkDoors command.

  Command: 'linkDoors
  Parameters: (target1) (target2)

  loadDefaults

  Loads the default uox.ini settings.

  Command: 'loadDefaults
  Parameters: (nothing)

  M
  make

  Changes privileges of targeted character to either gm, counselor or player

  Command: 'make
  Parameters: gm (target) / cns (target) / player (target)

  makeShop

  Turns a basic NPC into a shopkeeper, adding in the appropriate layers all the required bags needed for buying and selling items

  Command: 'makeShop
  Parameters: (target)

  mana

  Refills mana of targeted character.

  Command: 'mana
  Parameters: (target)

  mark

  Marks a recall rune at the character's current location.

  Command: 'mark
  Parameters: (target)

  memStats

  Opens a gump displaying useful information on UOX3's memory usage.

  Command: 'memStats
  Parameters: (nothing)

  moveSpeed

  Sets speed of targeted character to specified hex value (0x0 Normal, 0x1 Mounted, 0x2 Slow (walk only), 0x3 Hybrid ("jog"?), 0x4 Frozen).

  Command: 'moveSpeed
  Parameters: (h)

  music

  Plays the specified midi/mp3 file. Note that you can only switch what music plays every so often.

  Command: 'music
  Parameters: (d)

  The exact music available is dependent on which UO client version you're using. No matter which version you're using, you will find a file called Config.txt under the [path to UO]\Music\Digital\ subfolder, which lists out the available music, from 0-67 (v5.0.0b to v6.0.1.10?), 0-87 (v7.0.8.2 to v7.0.20.0+) or 0-102 (v7.0.30.1 to v7.0.86.2).

  mineCheck

  Set the server minecheck status to either 0 (everywhere), 1 (only on mountainsides and cave floors) or 2 (miningregions only).

  Command: 'mineCheck
  Parameters: (d)

  moveToBag

  Moves targeted item into your backpack.

  Command: 'moveToBag
  Parameters: (target)

  mute

  Mutes targeted player for specific amount of time, if any. If character is already muted, unmutes.

  Command: 'mute
  Parameters: (target) / (d) (target)

  N
  nAcct

  Account Management. No parameters will open a list of all accounts. Or would, rather, if it was fully implemented. :P

  Command: 'nAcct
  Parameters: (nothing) / add / ban edit / view / list /

  noDecay

  Disables decay for targeted item. Also see decay command.

  Command: 'noDecay
  Parameters: (target)

  npcAction

  Makes targeted character perform specified animation.

  Command: 'npcAction
  Parameters: (d) / (h)

  npcCircle

  Sets bounding circle (x y radius) for targeted NPC.

  Command: 'npcCircle
  Parameters: (d d d)

  npcRect

  Sets bounding box (x1 y1 x2 y2) for targeted NPC.

  Command: 'npcRect
  Parameters: (x1 y1 x2 y2)

  O
  openBank

  Opens targeted player's bank box.

  Command: 'openBank
  Parameters: (target)

  openLayer

  Opens specified layer on character, or the backpack if none specified.

  Command: 'openLayer
  Parameters: (nothing) / (d / h) (target)

  P
  pDump

  Displays some information about UOX3's performance.

  Command: 'pDump
  Parameters: (nothing)

  poly

  Polymorph yourself into specified creature body.

  Command: 'poly
  Parameters: (d) / (h)

  post

  Displays the current bulletin board posting mode for the players.

  Command: 'post
  Parameters: (nothing)

  R
  rAdd

  Adds item of specific hex-id at multiple targeted locations.

  Command: 'rAdd
  Parameters: (h) (multiple target locations)

  rAddItem

  Adds item of specified item-id from DFNs at multiple targeted locations.

  Command: 'rAddItem
  Parameters: (s) (multiple target locations)

  rAddNpc

  Adds npc of specified npc-id from DFNs at multiple targeted locations.

  Command: 'rAddNpc
  Parameters: (s) (multiple target locations)

  rDye

  Dyes multiple targeted objects with specified color.

  Command: 'rDye
  Parameters: (h) (multiple targets)

  recall

  Teleports your character to the location marked on a targeted rune.

  Command: 'recall
  Parameters: (target)

  refresh

  Teleports character to its current location. Potentially useful for players to refresh screen if encountering any visual glitches.

  Command: 'refresh
  Parameters: (nothing)

  regionInfo

  Get information on current region player is in. Also see xRegionInfo command.

  Command: 'regionInfo
  Parameters: (nothing)

  regSpawn

  Forces either ALL or specified spawnregions to spawn new objects.

  Command: 'regSpawn
  Parameters: (d) / all

  release

  Releases targeted character from jail.

  Command: 'release
  Parameters: (target)

  remove

  Deletes targeted item/NPC.

  Command: 'remove
  Parameters: (target)

  removeShop

  Turns the targeted shopkeeper back into a normal character, removing the specific backpacks used for buying and selling items.

  Command: 'removeShop
  Parameters: (target)

  rename

  Renames targeted object to specified text.

  Command: 'rename
  Parameters: (text) (target)

  reportBug

  Writes out a bugreport to a file.

  Command: 'reportBug
  Parameters: (text)

  resend

  Teleports character to its current location, and resends self to all nearby players.

  Command: 'resend
  Parameters: (nothing)

  respawn

  Forces all spawners in the world to run through a respawn cycle and spawn new objects.

  Command: 'respawn
  Parameters: (nothing)

  restock

  Forces a manual vendor restock. if all is specified, restocks all vendors to maximum. If not, does normal restock.

  Command: 'restock
  Parameters: all / (nothing)

  resurrect

  Resurrects targeted character from the dead.

  Command: 'resurrect
  Parameters: (target)

  rIncX

  Increases X value of multiple targets by specified amount (can be a negative number).

  Command: 'rIncX
  Parameters: (multiple targets)

  rIncY

  Increases Y value of multiple targets by specified amount (can be a negative number).

  Command: 'rIncY
  Parameters: (multiple targets)

  rIncZ

  Increases Z value of multiple targets by specified amount (can be a negative number).

  Command: 'rIncZ
  Parameters: (multiple targets)

  rndTile

  Tiles a random item from [startID] to [endID] of the specified [hue] at the (optional) specified [Z], with an (optional) [movable true/false] state.

  Command: 'rndTile
  Parameters: (d / h) (d / h) (d / h) (z) (true / false) (target location 1) (target location 2)

  Syntax: 'rndTile [startID] [endID] [hue] [z](optional] [movable true/false](optional)
  Examples:
  'rndTile 0x04a9 0x04ac 0 (tiles random wooden floors between target location 1 and 2)
  'rndTile 0x04a9 0x04ac 0x0042 (tiles random green wooden floors between target location 1 and 2)
  rRemove

  Removes multiple targeted items without having to reenter command.

  Command: 'rRemove
  Parameters: (multiple targets)

  rTele

  Lets the player teleport to multiple targeted locations in a row without having to reenter command.

  Command: 'rTele
  Parameters: (multiple target locations)

  rType

  Sets multiple targeted objects to specified type without having to reenter command.

  Command: 'rType
  Parameters: (d) (multiple targets)

  S
  save

  Forces a worldsave.

  Command: 'save
  Parameters: (nothing)

  secondsPerUoMinute

  Sets the number of real-world minutes that pass for each UO minute.

  Command: 'secondsPerUoMinute
  Parameters: (d)

  sell

  Opens the sell-menu of targeted shopkeeper.

  Command: 'sell
  Parameters: (target)

  set

  Sets property of targeted object to specified value.

  Command: 'set
  Parameters: (variable, see below)

  Syntax:

  Base Objects (Characters, Items, Spawners)
  color/colour (h) - Sets the hue of the object.
  dex (d) - Sets dex of targeted character/dex-requirement for wielding targeted item.
  fame (d) - Sets the fame of the object.
  id (h) - Sets the ID (art) of the object.
  int (d) - Sets int of targeted character/int-requirement for wielding targeted item.
  karma (d) - Sets the karma of the object.
  kills (d) - Sets the number of kills of the object.
  name (s) - Sets the name of the object.
  owner (target x 2) - Sets the owner of the object.
  str (d) - Sets str of targeted character/str-requirement for wielding targeted item.
  tempdex (d) - Debug command to fix erroneous dexterity bonus on a character
  tempint (d) - Debug command to fix erroneous intelligence bonus on a character
  tempstr (d) - Debug command to fix erroneous strength bonus on a character
  visible (d) - Sets the visibility level of the object (0=Visible, 1=Hidden, 2=Magically Invisible, 3=Visible to GMs only).
  x (d) - Sets the X coordinate of the object.
  y (d) - Sets the Y coordinate of the object.
  z (d) - Sets the Z coordinate of the object.

  Characters
  advobj (d) - Sets the advancement type the character has used.
  allskills (d) - Sets all of the character's skills to specified value.
  armor/armour (d) - Set the armour level of the character.
  dir (d) - Sets the direction of a character, or lightradius of a lightsource-item.
  cantrain (d) - Toggle NPC's ability to train PCs (0 = false, 1 = true)
  commandlevel (d) - Sets the commandlevel of the targeted player.
  font (d) - Sets the speech font type of the character.
  frozen (d) - Toggles characters ability to move (0 = not frozen, 1 = frozen)
  invulnerable (d) - Toggles the character's invulnerability (0 = false, 1 = true)
  maxhp (d) - Sets the maximum HP of the character.
  maxmana (d) - Sets the maximum MANA of the character.
  maxstamina (d) - Sets the maximum STAMINA of the character.
  npcai (d) - Sets the NPCAI type of the character
  npcwander (d) - Sets the NPCWander mode of the character (0 = none, 1 = follow, 2 = free, 3 = box, 4 = circle)
  orgskin (h) - Sets the original skin of the character.
  poison (d) - Sets the poison strength of the character.
  [skillname] (d) - Sets the specified skillpoints for specified skillname.
  spattack (d) - Sets the SPAttack value of the character.
  spdelay (d) - Sets the SPDelay value of the character.
  split (d) - Amount of creatures an NPC can split into.
  splitchance (d) - Chance of NPC splitting when hit.
  title (s) - Sets the title of the character.
  totame (d) - Sets the skill required to tame a creature.
  toprov (d) - Sets the skill required to provoce a creature.
  topeace (d) - Sets the skill required to peacemaking a creature.
  vulnerable (d) - Makes a creature vulnerable or not (0=invulnerable, 1=vulnerable).

  Items
  amount (d) - Sets the amount in a pile of items.
  buyvalue (d) - Sets item buy value.
  decayable (d) - Toggles item's decay status (0 = not decayable, 1 = decayable)
  desc (d) - Sets the item description (as displayed on tooltips, on player vendors)
  def (d) - Sets the item's armorvalue.
  devinelock (d) - Toggles item's devine lock status (0 = not locked, 1 = locked)
  hidamage (d) - Sets the maximum amount of damage done with a weapon.
  layer (d) - Sets the layer this item will be equipped at.
  lodamage (d) - Sets the minimum amount of damage done with a weapon.
  more (h) - Sets item's "more" value.
  morex (h) - Sets item's "morex" value.
  morey (h) - Sets item's "morey" value.
  morez (h) - Sets item's "morez" value.
  morexyz (h h h) - Sets item's morex, morey and morez values.
  movable (d) - Toggles items ability to be moved (0 = default, 1 = movable, 2 = not movable, 3 = locked down)
  name2 (s) - Sets items name2 value (for use with Item-ID).
  newbie (target) - Makes targeted item a newbie/blessed item.
  restock (d) - Sets amount of a targeted item to restock on a shopkeeper.
  sellvalue (d) - Sets item sell value
  type (d) - Sets item's TYPE.
  weight (d) - Sets an item's weight (100 = 1.00 stone)
  wipable (d) - Toggles items wipeable status (0 = false, 1 = true)

  Spawners
  spawnsection (s) - Sets the script section for spawner to pull data from.
  mininterval (d) - Sets the minimum spawn interval.
  maxinterval (d) - Sets the maximum spawn interval.

  setAmmoEffect

  Sets ammoeffect on a bow - the ID of the moving effect that is played when bow is fired at a target. Also see getAmmoEffect command.

  Command: 'setAmmoEffect
  Parameters: (h) (target)

  setAmmoType

  Sets ammotype on a bow - the ID of the items the bow uses as ammo. Also see getAmmoType command.

  Command: 'setAmmoType
  Parameters: (h) (target)

  setPoisoned

  Sets the level of poison a character is infected with.

  0 - not poisoned
  1 - lesser poison
  2 - poison
  3 - greater poison
  4 - deadly poison

  Command: 'setPoisoned
  Parameters: (d)

  setPost

  Sets your bulletin board posting type.

  global - makes your next post appear in all bulletin boards.
  regional - makes your next post appear in all bulletin boards in your current region.
  local - makes your next post appear only on the next bulletin board you use.

  Command: 'setPost
  Parameters: global / regional / local

  setRace

  Sets your character's race to specified raceid.

  Command: 'setRace
  Parameters: (d)

  setScpTrig

  Assigns specified scriptID to targeted object.

  Command: 'setScpTrig
  Parameters: (d)

  setShopRestockRate

  Sets the restock rate of all shops in the world (in minutes)

  Command: 'setShopRestockRate
  Parameters: (d)

  setTag

  Used to assign a value to a specified tag on a targeted object.

  Command: 'setTag
  Parameters: (s) (d)

  setTime

  Sets the current UO time in hours and minutes.

  Command: 'setTime
  Parameters: (d d)

  sfx

  Plays the specified sound effect.

  Command: 'sfx
  Parameters: (d)

  showDetail

  Displays type info for targeted dynamic item.

  Command: 'showDetail
  Parameters: (target)

  showIDs

  Display the serial number of every character on screen.

  Command: 'showIDs
  Parameters: (nothing)

  showSkills

  Opens a gump displaying the skills of targeted character.

  If parameter is 0, will use base skill and display only those skills greater than 0.
  If 1, will use base skill and display all skills.
  If 2, will use actual skill and display only those skills greater than 0.
  If 3, will use actual skill and display all skills.

  Command: 'showSkills
  Parameters: (d)

  showTime

  Displays the current UO time.

  Command: 'showTime
  Parameters: (nothing)

  shutdown

  Initiates server shutdown sequence in d minutes.

  Command: 'shutdown
  Parameters: (d)

  skin

  Changes the hue of your character's skin to specified color.

  Command: 'skin
  Parameters: (d) / (h)

  spawnKill

  Kills all characters spawned by specified spawnregion.

  Command: 'spawnKill
  Parameters: (d)

  squelch

  Same as Mute command; it "squelches" (mutes) targeted character either indefinitely or for a specified amount of seconds.

  Command: 'squelch
  Parameters: (target) / (d) (target)

  stamina

  Rejuvinates targeted character's stamina to full.

  Command: 'stamina
  Parameters: (target)

  status

  Opens the HTML status information gump.

  Command: 'status
  Parameters: (nothing)

  T
  tele

  Teleports you to the targeted location.

  Command: 'tele
  Parameters: (target)

  teleStuff

  Moves targeted object to targeted location.

  Command: 'teleStuff
  Parameters: (target1) (target2)

  tell

  Sends a message to the user logged into the specified socket slot.

  Command: 'tell
  Parameters: (d) (text)

  temp

  Displays the current temperature.

  Command: 'temp
  Parameters: (nothing)

  tile

  Tiles the specified item over a targeted area. If coordinates are specified(x1 x2 y1 y2), will tile the item inside those coordinates.

  Command: 'tile
  Parameters: (h) (target1) (target2) / (h x1 y1 x2 y2)

  time

  Displays the current in-game time.

  Command: 'time
  Parameters: (nothing)

  travel

  Shortcut for opening itemMenu 6000 - which is the GM Travel-menu.

  Command: 'travel
  Parameters: (nothing)

  tweak

  Opens the tweak menu allowing you to modify many settings on the targeted object.

  Command: 'tweak
  Parameters: (target)

  U
  undress

  Character will completely undress all equipped items.

  Command: 'undress
  Parameters: (nothing)

  unfreeze

  Allows targeted object to move/be moved. Also see freeze command.

  Command: 'unfreeze
  Parameters: (target)

  unglow

  Removes the glowing attribute from an object which has it. Also see glow command.

  Command: 'unglow
  Parameters: (target)

  unhide

  Shows a player who has previously been permanently hidden. Also see hide command.

  Command: 'unhide
  Parameters: (target)

  V
  validCmd

  Displays all valid commands for your character.

  Command: 'validCmd
  Parameters: (nothing)

  W
  where

  Displays your current x, y, z coordinates as well as world number and instance ID.

  Command: 'where
  Parameters: (nothing)

  who

  Displays a list of all online players, what slot they're connected to, and their serial number.

  Command: 'who
  Parameters: (nothing)

  whoList

  Displays a gump of all online (if no parameter) or offline (if OFF) players on your shard.

  Command: 'whoList
  Parameters: off / (nothing)

  wipe

  Wipes items inside specified area, or everything in the game world of specific type. If no parameters are provided, area can be chosen with targeting cursors.

  Command: 'wipe
  Parameters: (nothing) (target1) (target2) / (x1 y1 x2 y2) / all / items / npcs

  wStats

  Displays information on an NPC's wander mode.

  Command: 'wStats
  Parameters: (target)

  X
  xTeleport

  If you specify a single number, teleports player logged into that slot to you. If you specify nothing it brings up targeting cursor to target player to tele to you. If you specify a serial number, teleports player wih that serial to you.

  Command: 'xTeleport
  Parameters: (d) / (nothing) / (h h h h)

  xGate

  Opens a gate to a specified location from locations.dfn

  Command: 'xGate
  Parameters: (d)

  xGo

  Sends targeted player to specified location from location.dfn, or to a specific set of coordinates with optional world and instance parameters.

  Command: 'xGo
  Parameters: (d) / (x y z) / (x y z world) / (x y z world instance)

  xRegionInfo

  Get information on current region a target character is in. Also see regionInfo command.

  Command: 'xRegionInfo
  Parameters: (target)

  xSay

  Makes targeted character/item say specified text.

  Command: 'xSay
  Parameters: (text) (target)

  Y
  yell

  Broadcasts text to all players online with command level of 0 and above.

  Command: 'yell
  Parameters: (text)

  Example: 'yell Hello all players!

  Z
  zeroKills

  Resets all players' kills back to 0.

  Command: 'zeroKills
  Parameters: (nothing)

- Console Command List

  The UOX3 server console provides some useful commands for shard admins that can be executed locally without logging onto the shard with a client. These commands can be executed with shortcut keys after the console has been unlocked by pressing the * key on your keyboard. Note that the shortcut keys below are not case-sensitive.

  ShardOP

  * - Locks/Unlocks Console.

  ? - Displays console command list.

  C - Displays some basic server setting information.

  Y - Console broadcast. Will broadcast a system message entered in console, to all online players.

  Load Commands

  1 - Reloads uox.ini.

  2 - Reload user accounts to import new accounts added to newaccounts.adm

  3 - Reload regions from regions.dfn.

  4 - Reload spawn regions from spawn.dfn.

  5 - Reload spells from spells.dfn.

  6 - Reload commands.

  7 - Reload all DFN files.

  8 - Reload all JavaScripts.

  9 - Reload HTML Templates.

  0 - Reload everything that can be reloaded.

  Save Commands

  ! - Save account data. Normally done during world saves.

  @ - Save world data, and import new accounts added to newaccounts.adm.

  Server Maintenance

  P - Display performance dump with details about server performance.

  W - Display list of players currently online.

  M - Display information about UOX3's memory usage.

  T - Schedule a server shutdown in 10 minutes, with in-game announcement.

  F - Dump information about DFN Priority Maps to file in root UOX3 folder.

  Network Maintenance

  D - Disconnect player connected to first socket connection on server.

  K - Disconnect ALL players.

  Z - Disable network logging.

- Item Types

  TODO

  List of Item Types
- Item Layers

  TODO

  List of Item Layers
- Maps, Statics and Tiledata

  ### Maps and Statics

  Upon startup, UOX3 will attempt to load map and statics files based on the parameters provided in UOX3/dfndata/maps/maps.dfn. It is important that the map sizes (in height and width) defined in this file match up to the actual files being loaded. Note that the default sizes match up with map files present in v5.0.0a and newer.

  To make UOX3 load maps of a different size, make sure to update the X and Y sizes in this file accordingly!

  ### Tiledata

  UOX3/dfndata/maps/tiles.dfn allows overriding flags/properties stored in tiledata.mul for different tiles in UO, which UOX3 uses for various purposes such as determining whether a surface is walkable, climbable (ladders) or blocks line of sight. It is most commonly used to address various issues with tiles, such as missing or incorrect flags, without having to modify the tiledata.mul file itself.

  Example of syntax:
  [TILE 0x0AA4] // Tile ID
  {
  BLOCKING=1 // Tiledata flag, on (1)
  STANDABLE=0 // Tiledata flag, off (0)
  }

  Full List of Tiledata Flags

  CTile Properties
  WEIGHT - Default weight
  HEIGHT - Default height
  LAYER - Default layer
  HUE - Default hue
  QUANTITY - Default quantity
  ANIMATION - Default animation
  NAME - Default name

  BaseTile Flag 1
  ATFLOORLEVEL - Background
  HOLDABLE - Weapon
  SIGNGUILDBANNER - Transparent
  WEBDIRTBLOOD - Translucent
  WALLVERTTILE - Wall
  DAMAGING - Damaging
  BLOCKING - Impassable
  LIQUIDWET - Wet

  // BaseTile Flag 2
  UNKNOWNFLAG1 - Unknown
  STANDABLE - Surface
  CLIMBABLE - Bridge
  STACKABLE - Generic/Stackable
  WINDOWARCHDOOR - Window
  CANNOTSHOOTTHRU - No Shoot
  DISPLAYASA - Prefix A
  DISPLAYASAN - Prefix An

  // BaseTile Flag 3
  DESCRIPTIONTILE - Internal (things like hair, beards, etc)
  FADEWITHTRANS - Foliage
  PARTIALHUE - Partial Hue
  UNKNOWNFLAG2 - Unknown
  MAP - Map
  CONTAINER - Container
  EQUIPABLE - Wearable
  LIGHTSOURCE - LightSource

  // BaseTile Flag 4
  ANIMATED - Animated
  NODIAGONAL - No Diagonal
  UNKNOWNFLAG3 - Unknown
  WHOLEBODYITEM - Armour
  WALLROOFWEAP - Roof
  DOOR - Door
  CLIMBABLEBIT1 - Stair Back
  CLIMBABLEBIT2 - Stair Right

- (Bonus) Converting UOP to MUL

  ### Brief History of UOP Format

  In UO Client v7.0.24.2, a new fileformat was introduced - UOP, that would eventually replace some of the files using the old MUL format. Amongst the files converted were the various map*.mul files, which became map*LegacyMUL.uop files. At the time, and before the different UO emulators (including UOX3) added support to load this new fileformat, prospective shard admins had to convert those .uop files back to .mul files before they could be used.

  Thankfully, creative souls came up with several tools that could be used to convert UO data files between these two file formats, for instance UOFiddler and LegacyMULConverter-N.

  #### Conversion not Needed for UOX3 v0.99.3 and Above

  Do take note, that starting with UOX3 v0.99.3, these .uop files can be read by UOX3 directly without a need to convert them to back to the original format first. No need to convert! Should you for whatever reason still want to convert the map files back to .mul files, for instance to use them with an older version of UOX3, or to load them in a map-editing tool that doesn't support the newer format, here follows a quick guide on how you can do just that, using UOFiddler:

  ### Step 1 - Backup UOP Files

  Before doing anything else, locate your UO folder and copy all the .UOP files from that folder and into a new folder of your choice, so you don't mess with the original files in the UO client - just in case something goes horribly wrong.

  ### Step 2 - Download UOFiddler

  Second, download the latest version of UOFiddler from the link above, unzip it, and start UOFiddler.

  ### Step 3 - Setup Data Paths in UOFiddler

  Second, click Settings > Path Settings and make sure that the path to your UO folder is correct in the window that pops up. If you need to correct the path, use the Set path manual button and locate your UO folder.

  Next, hit Settings > Reload Files to have UOFiddler reload the data files from the path you selected.

  ### Step 4 - Convert UOP Files to MUL

  Once this is done, either use the small arrow buttons in the top right corner of UOFiddler to navigate to the far right tab called UOP Packer, or expand the size of the window until you see and can click that tab.

  Select the folder you copied the .UOP files into previously, using the file picker or by typing the path into the text-field, then select Extract UOP to MUL and hit Start.

  After around 15-30 seconds, UOFiddler should have finished converting the UOP files in your temporary folder to MUL files!

  Note that this process also works in reverse! If you have made any changes to the .mul files and want to convert them back to .uop to have them be read by the client, just follow the same procedure except choose Pack MUL to UOP in the last step instead!

- Compiling UOX3 Source

  Follow the steps below for your preferred platform if you wish to download and compile the UOX3 source directly from GitHub yourself.

  ### Windows Users

  #### Step 1 - Clone the UOX3 Git Repository

  Using GitHub Desktop
  1. Download and install GitHub Desktop. If you already have another tool for git installed, you can use that instead.
  2. Run GitHub Desktop (or your preferred git tool) and click File->Clone Repository from the menu.
  3. Click the URL tab, enter https://github.com/UOX3DevTeam/UOX3.git, then provide a local path for where you want the UOX3 git repository cloned on your drive.
  4. Hit the Clone button to clone the stable branch of the UOX3 git repository to the specified local path, along with the latest verified compatible version of SpiderMonkey (v1.7.0).
  Checking out Other Branches

  If you'd rather grab another branch of the git repository, like the develop branch where most updates get pushed first before being merged into the master branch, you can click the Current branch dropdown menu in GitHub Desktop and select the branch you wish to check out.

  #### Step 2 - Compile UOX3

  Option A - Visual Studio 2017/2019

  This option will let you use Visual Studio solution/project files to compile both UOX3 and SpiderMonkey with Visual Studio's default VC++ compiler. Note that you can download the Free Community Edition of Visual Studio if you don't have it already. This approach also embeds SpiderMonkey directly inside UOX3 for a slightly larger (~1-2MB) executable, instead of requiring a separate DLL file, and comes with options for compiling either 32-bit or 64-bit (default) versions of UOX3.

  #### SpiderMonkey

  1. Navigate to the UOX3\spidermonkey folder and open SpiderMonkey.sln in Visual Studio.
  2. Make sure you have js32 selected in the Solution Explorer, then select Release and either x64 (64-bit) or Win32 (32-bit) in the Solution Configuration/Platform dropdown menus
  3. Click Build > Build js32 from the menu.
  4. Visual Studio will compile SpiderMonkey and create spidermonkey\Release\x64 (64-bit) or spidermonkey\Release\x86 (32-bit) folders with the compiled js32.lib library file contained within. No further actions are necessary here, so you can close the SpiderMonkey VS Solution.

  #### UOX3

  1. Open UOX3_Official.sln from the UOX3\source folder.
  2. Make sure you have UOX3_Official selected in the Solution Explorer, then select either Release or Debug, and either x64 (64-bit) or Win32 (32-bit) in the Solution Configuration/Platform dropdown menus, or via Build -> Configuration Manager.
  3. Select Build -> Build UOX3_Official to start compiling UOX3. When done, you'll find UOX3.exe in either UOX3\source\Release\x64 (or \x86) or UOX3\source\Debug\x64 (or \x86), depending on your choices in the previous step.
  Adding Missing SpiderMonkey References

  If VS give you link errors when attempting to build UOX3, references to SpiderMonkey might have gone missing! Try the following steps to add them back.

  1. Right click on UOX3_Official in the Solution Explorer, and select Properties.
  2. With the desired configuration (ex: Release, x64) selected at the top of the panel, add references to SpiderMonkey in these sections:
  - VC++ Directories > Include Directories (add path to SpiderMonkey root folder)
  - VC++ Directories > Library Directories (add path to SpiderMonkey release\x64 or \x86 folder depending on desired configuration)
  - VC++ Directories > Source Directories (add path to SpiderMonkey root folder)
  - Linker > Additional Library Dependencies (add path to SpiderMonkey release\x64 or \x86 folder depending on desired configuration)
  3. Press apply!
  4. Repeat process for both Release and Debug configurations (chosen at top of panel), then retry the UOX3 build process!
  Option B - Visual Studio 2017/2019 and CMake

  This option requires installing the Visual Studio toolset named Linux development with C++ and the component called Visual C++ tools for CMake and Linux. Use the Visual Studio Installer to modify your install of Visual Studio if you don't already have these installed! This approach compiles SpiderMonkey to a separate DLL (js32.dll) file that needs to live inside the same folder as the main UOX3 executable, and currently only supports compiling a 32-bit version of UOX3.

  1. Start Visual Studio and use File > Open > CMake and select CMakeLists.txt in the root project folder (Example: D:\UOX3). Don't open the similarly named file in the source folder directly.
  2. After Visual Studio is done loading the project and has generated some necessary files, select CMake > Change CMake Settings > UOX3 from the toolbar menu, and select either x86-Debug or x86-Release depending on what kind of build you want to make - or do this using the Solution Configuration select menu.
  3. When Visual Studio is done switching to the new configuration, select CMake > Build All from the toolbar menu to start compiling UOX3.
  4. When done, you'll find UOX3.exe and js32.dll in a subfolder named out of the root project folder, more specifically /UOX3/out/build/x86-Debug or x86-Release, based on the selected configuration.
  5. Note that the js32.dll file must be copied to the same folder as UOX3.exe.

  Once this process is done, you can copy your new UOX3.exe (and if using CMake, js32.dll) file from the appropriate output folders (depending on which method and configuration you used) to the root folder of your actual UOX3 project. You'll also need to copy the files and folders contained within the data subfolder of the UOX3 repository, if you don't already have these.

  It is recommended to run your UOX3 shard from a separate, dedicated folder instead of the data folder in your local UOX3 git repository, to avoid potential git conflicts and accidental overwrites when pulling updates to UOX3 from GitHub in the future.

  Once you have all the files in place, you can follow the regular steps listed under Installation and Setup > Configuring Your UOX3 Shard to finish your UOX3 setup!

  ### Linux/macOS Users

  #### Step 1 - Clone the UOX3 Git Repository

  Using git and Terminal

  First step, open a new terminal and enter the following commands:

  1. (Linux) sudo apt install git - This will install git if not already installed (Ubuntu/Debian-based Linux variants). If you're using a non-Debian flavour of Linux, use the default package manager that comes with it to install git instead.
  2. (macOS) xcode-select --install - This will install git if not already installed, along with required make and gcc tools
  3. git clone https://github.com/UOX3DevTeam/UOX3.git - This will clone the stable branch of the UOX3 git repository into a subdirectory of the current directory you're in, named UOX3. The latest verified compatible version of SpiderMonkey (v1.7.0) is also included.
  Checking out Other Branches

  If you'd rather grab another branch of the git repository, like the develop branch where most updates get pushed first before being merged into the master branch, you can use the following command *after* completing the previous step: git checkout develop

  (macOS alternative) Using GitHub Desktop
  1. Download and install the macOS version of GitHub Desktop.
  2. Run GitHub Desktop and click File->Clone Repository from the menu.
  3. Click the URL tab, enter https://github.com/UOX3DevTeam/UOX3.git, then provide a local path for where you want the UOX3 git repository cloned on your drive.
  4. Hit the Clone button!

  #### Step 2 - Compile UOX3

  GNU Make and GCC

  You'll need a couple tools before you can compile UOX3 on Linux, like GNU Make (4.2.1 or higher recommended) and gcc. Install these through your favourite package manager or through your flavour of Linux' variant of the following terminal command (specific to Debian/Ubuntu Linux flavours):

  - (Linux only) sudo apt install build-essential

  Once these tools are in place, navigate to the UOX3 project directory in your terminal and execute the following commands from the project's root directory, in order:

  1. chmod +x automake.sh - Makes the automake.sh bash script executable.
  2. ./automake.sh - First compiles the SpiderMonkey JS library bundled with UOX3, then compiles the actual UOX3 build, before copying the compiled binary to the root UOX3 project directory.
  Manual Instructions

  If you don't wish to rely on the automake.sh script, but want control over the process yourself, follow these steps (same as what automake.sh does):

  - cd spidermonkey
  - make -f Makefile.ref DEFINES=-DHAVE_VA_LIST_AS_ARRAY CC=gcc
  - Linux
  - ar -r libjs32.a Linux_All_DBG.OBJ/*.o
  - cp Linux_All_DBG.OBJ/jsautocfg.h ./
  - macOS
  - ar rcs libjs32.a Darwin_DBG.OBJ/*.o
  - cp Darwin_DBG.OBJ/jsautocfg.h ./
  - cd ../source
  - make

  Once this process is done, you will find the compiled uox3 binary in the root UOX3 directory. You can copy this binary to the directory you intend to run your UOX3 shard from, along with all the files and folders contained in the UOX3/data/ subdirectory.

  It is recommended to run your UOX3 shard from a separate, dedicated directory instead of the data directory in your local UOX3 git repository, to avoid potential git conflicts and accidental overwrites when pulling updates to UOX3 from GitHub in the future.

  Copying Required Files to Dedicated UOX3 Directory

  This is an example of how to copy all required files to a directory called UOX3 in your user account's home directory

  1. navigate to root UOX3 project directory
  2. mkdir ~/UOX3
  3. cp uox3 ~/UOX3
  4. cp -r data/* ~/UOX3
  5. cd ~/UOX3

  Once you have all the files in place, you can follow the regular steps listed under Installation and Setup > Configuring Your UOX3 Shard to finish your UOX3 setup.

- Frequently Asked Questions

  Why? Where? Who? When? What?

  What is the purpose of UOX3?

  While one of UOX3's goals is to emulate the functionality and features of the official Ultima Online servers and allow anyone to run a server of their own, another is to allow its users to tweak all aspects those features, and even to create new ones altogether - either through UOX3's JavaScript scripting engine (based on a SpiderMonkey-implementation of JavaScript) or by modifying the source-code for UOX3 directly.

  How much does UOX3 cost?

  Nothing. Anyone who wants can download and use UOX3 for free!

  What license is UOX3's source code released under?

  UOX3 is licensed under v2 of the GNU General Public License (GPL), with the following addendum:

  "In addition to that license, if you are running this program or modified versions of it on a public system you HAVE TO make the complete source of the version used by you available or provide people with a location to download it."

  Full GNU General Public License Text
  What happened to UOX1 and UOX2?

  UOX was the first incarnation of the UO Server emulator, and was created by a fellow nicknamed Jaegermeister. It was short-lived, however, and Cironian aka Marcus Rating rewrote it and released it as UOX2.

  Later on he rewrote UOX2 completely and released UOX3 - which he eventually also open-sourced - which is still the same version we're using now, though quite a lot has changed since then, and a lot of people have contributed to what we're using right now.

  Is UOX3 Legal?

  Disclaimer: This should not be considered as legal advice - it was not written by and is not the opinion or the advice of a lawyer

  Running an UOX3 shard, developing the UOX3 code, distributing the UOX3 program - all that is perfectly legal. There are some more complicated issues however, when it comes to client-files distribution (custom maps, specific versions of client.exe, etc). I suggest you read up on the following document, written by Knox: legality.txt (Note that this should not be considered as legal advice!)

  Why am I getting connection-errors when trying to log in?

  There can be a number of different reasons for why you are unable to connect to a UOX3 shard. Here are some of the most common ones:

  You're trying to connect to UOX3 using an encrypted UO client
  Make sure you remove/patch away the UO client encryption through the use of Razor or a similar programs before trying to connect to a UOX3 shard. UOX3 will only accept clients with no encryption.

  You set the IP and/or Port incorrectly in UOX.INI
  Having the wrong IP or Port in UOX.INI will give you a connection-error when you try to select the UOX3 shard in your client's server-list. The initial connection that checks for user-name/password might still go through, but not the server-selection part.

  You set the IP and/or Port incorrectly in Razor/other tool used to start the client
  If you set the wrong IP to connect to in Razor/other tool you use to start the client, you will not be able to connect to the UOX3 shard at all, it will just give a connection-error immediately. If you set the correct IP but the wrong Port, you will be able to connect and verify your user-name/password, but will not be able to connect to the chosen server in the client's server-list.

  The UO client computer's firewall is blocking outgoing connections
  The computer you're running the UO client on might be blocking outgoing connections, either through firewalls (like the built-in Windows firewall) or through 3rd-party security/antivirus-software. Try to disable whichever software might be blocking the outgoing connection temporarily to see if the connection is then allowed to go through, and/or include the UO client-executable and/or outgoing IP/Port in the exclusion-rules for these softwares.

  The UOX3 shard computer's firewall is blocking incoming connections
  The computer that's running the UOX3 software might be blocking incoming connections, either through software firewalls (like the built-in Windows firewall) or through 3rd-party security/antivirus-software. Try to disable whichever software might be blocking the incoming connection temporarily to see if the connection is then allowed to go through, and/or include the UOX3 software and/or incoming IP/Port in the exclusion-rules for these softwares.

  The UOX3 shard computer's router is not setup to forward incoming connections properly
  If you're trying to connect to the UOX3 shard from an external computer through the Internet, you might have to setup the UOX3 shard computer's Internet-router (if one is present) to forward incoming connections on the specified UOX3 port (2593 by default), to the internal LAN/local-IP of the UOX3 shard computer.

  What era of UO is UOX3 based on?

  Various parts of UOX3 such as combat calculations, weapon/armor values etc are roughly based around UO from the time just before (archive.org) the Age of Shadows expansion (Publish 17) was released. NPC stats less so, due to the lack of accurate data on such stats from back then.

  Note that the combat calculations are hardcoded, but can be overridden through the JavaScript system (or changed in code, of course). The stats of gear and NPCs can be easily tweaked with any text editor, and there are UOX.INI settings that can globally increase/decrease combat difficulty and/or speed.

  Why aren't NPCs fighting back?

  If NPCs aren't fighting back when you attack them, chances are that you are playing on either a GM character, or a character on the admin-account (which all have GM privileges by default). One of the privileges of being a GM (or an admin-character) is that you are flagged as "invulnerable" by default. Since NPCs (and players) can't attack invulnerable characters, this means they will never fight back when you try to attack them. In fact, UOX3 might not allow you to attack them at all.

  Try turning off your invulnerability by using either of these commands:

  'invul false
  'set vulnerable 1

  How do I setup Port Forwarding on my router?

  If the server you intend to run your UOX3 shard on is behind a NAT router, then you might have to forward any incoming connections on port 2593 (or whichever other port you decided to use for UOX3) to the internal LAN-IP given to your server by the router. This is called Port Forwarding (Wikipedia), and whether or not it is required depends on the router and how it is setup. The easiest way to find out is to have someone try to connect to your UOX3 server over the Internet. If they are unable to connect, and you've ruled out all other options (mis-configuration of UOX3/UO Client, firewalls running on host/client computers, etc), then you might have to setup port-forwarding on your router.

  How do I do Port Forwarding?

  The exact procedure varies from router to router, but in general it involves connecting to the router's IP through your browser/Windows Explorer/Linux equivalent, entering the user-name and password required to log on to the router (these can either be default to the router-brand, or custom depending on your Internet-provider), and then adding the UOX3 port to whatever port-forwarding configuration exists for your router.

  Various sites on the World Wide Web include step-by-step instructions for how to setup port-forwarding on different types of routers. One such site is PortForward.com. If the default username/password specific to your router (usually mentioned on these sites) is not working, you might have to consult the documentation that came along with the router, or contact your ISP to get them to provide the username and password.

  How can I check if I set it up correctly?

  To quickly check if you setup your port-forwarding correctly, you can visit CanYouSeeMe.org (Open Port Check Tool) and just enter the port you're trying to forward. Click the 'check' button, and the tool should tell you whether or not it can see a service running on your server through said port.

  The other option is of course to have someone actually try to connect to your shard! :)

- # Feature Documentation

- Advanced Trade System

  The Advanced Trade System was originally created by Magius(CHE), and can be used to set up a system with fluctuating prices for goods (items bought and sold by NPC vendors) across different regions of the game world. Every time the vendors restock their goods, the prices will be adjusted positively or negatively depending on a random range set for each type of good.

  By default, UOX3 comes with categories for goods already assigned to a multitude of items, ready to be used in the trade system, but you'll need to setup the regions portion of the system yourself. See list of Default Goods Categories below.

  Default Goods Categories

  You can add your own custom categories of goods by just adding good=# tags to items with values not already in use below. You can also create your own categories from scratch by removing all existing good tags from the item DFNs, for instance if you want to go with something less complex (or more complex!).

  1 - Chairs

  2 - Tables

  3 - Mushrooms

  4 - Kitchenware

  5 - Leather Containers

  6 - Metal Containers

  7 - Baskets, Kegs, Barrels, Tubs

  8 - Wooden Containers

  9 - House/Boat/Playervendor Deeds

  10 - Ringmail Armor

  11 - Chainmail Armor

  12 - Platemail Armor

  13 - Leather Armor

  14 - Bone Armor

  15 - Helmets

  16 - Shields

  18 - Clothes

  19 - Footwear

  20 - Headwear

  21 - Swords

  22 - Fencing Weapons/Staves and Polearms

  23 - Missile Weapons

  24 - Axes

  25 - Daggers

  26 - Hammers

  27 - Wands

  28 - Magic Items

  29 - Potions

  30 - Magic Reagents

  31 - Scrolls

  32 - Books

  33 - Drinks

  34 - Food

  35 - Games

  36 - Gems

  37 - Jewelry

  38 - Keys

  39 - Mounts

  40 - Raw Food

  41 - Music Instruments

  42 - Carpentry Resources

  43 - Fletching Resources

  44 - Leatherworking Resources

  45 - Lumberjacking Resources

  46 - Mining Resources

  47 - Misc Resources

  48 - Blacksmithing Resources

  49 - Tailoring Resources

  50 - Tinkering Resources

  51 - Alchemy Resources

  52 - Blacksmithing Tools

  53 - Carpentry Tools

  54 - Fishing Tools

  55 - Healing Tools

  56 - Inscription Tools

  57 - Mining Tools

  58 - Tailoring Tools

  59 - Thieving Tools

  60 - Tinkering Tools

  #### Item Setup

  Each item to be affected by the fluctuating prices in the trade system need to have a value and a category of goods assigned to them in the item DFNs. This is done by adding the following tags to the items in question, if they're not already present:

  value=buyPrice sellPrice - base price of item when buying or selling from/to NPC vendors. Required for trade system to be able to make any adjustments to value of item!
  good=goodCategory - the category of goods to associated a given item with (see list above)

  #### Region Setup

  Once those tags have been added in the Item DFNs, the next step is to setup the various "regions" in regions.dfn. This is done by adding the following tags to the regions that should impact the trade system:

  good=goodCategory - a category of goods (see list above) that the region should have an impact on the prices for. A region can affect multiple goods, and each such tag should be immediately followed by the following two tags:
  buyable=# / # # - Fixed or random % modifier (accepts negative numbers) by which the baseValue of items belonging to the associated category of goods will be modified when bought from NPC vendors in the region.
  sellable=# / # # - Fixed or random modifier value (accepts negative numbers) by which the baseValue of items belonging to the associated category of goods will be modified when sold to NPC vendors in the region.
  randomvalue=# Random modifier value (accepts negative numbers) by which the baseValue of items belonging to the associated category of goods will be modified when vendors restock the item.

  Trade System Example

  A feathered hat ([0x171A] in headwear.dfn) is setup with value=27 13 and good=20 (the goods category for headwear). Normally, this item is sold by NPC vendors for 27 gold, and they'll buy the same item from players at a price of 13 gold.

  A region - for instance Britain - is setup with good=20, buyable=100 (+10.0%) and sellable=-100 (-10.0%) and finally randomvalue=-50 50.

  Meanwhile, another region - for instance Trinsic - is setup with good=20, buyable=-100 (-10.0%) and sellable=1500 (+150.0%) and finally randomvalue=-50 50 (-5.0% to 5.0%).

  A player goes to a tailor NPC in Britain, buys a feathered hat for a price of 27 * 1.1 (+10.0%) = 30 gold, then heads off to Trinsic, where they sell the feathered hat to another tailor NPC for the price of 13 * 2.5 (+150.0%) = 33 gold. Profit! The player then makes the mistake of buying another feathered hat in Trinsic for the price of 27 * 0.9 (-10.0%) = 24 gold, heads back to Britain and sells it to the vendor there for 13 * 0.9 (-10.0%) = 12 gold! Ouch.

  A little while later, the vendors restock their goods, and randomvalue=-50 50 kicks in and adjusts the overall price of feathered hats by +5% in Britain and -3% in Trinsic. Feathered hats can now be bought and sold in Britain for 28 gold and 14 gold respectively, while they go for 26 gold and 13 gold respectively in Trinsic. The selling price in Trinsic remains the same, because an adjustment of -3% is not enough to overcome the powers of rounding (12.61 gold = 13).

- Advancement Gates

  Advancement Gates is a concept in UOX3 that allows you to set up automated shortcuts for giving players a boost to stats, skills and items in-game without GM intervention. They can for instance be used to create custom class templates beyond what is offered during character creation in the client, can be used for events where you'd like to give players some special items, and can even be combined with another concept such as Monster Gates and the Race System to allow players to take on the roles of monsters on your shard.

  Note: Although they're called advancement "gates", they can actually be any object the player is able to walk onto/collide with!

  ### advance.dfn

  The basis for the advancement gates lies in DFNDATA/ADVANCE/advance.dfn. Below is an example of an entry from that file, with explanations for what each line does (click to expand):

  Advancement Gate in advance.dfn

  // Master Smith Label for easy identification of advancement gates
  [ADVANCEMENT 1] Unique identifier
  {
  STR=95 Sets Strength to 95
  DEX=80 Sets Dexterity to 80
  INT=60 Sets Intelligence to 60
  BLACKSMITHING=940 Sets Blacksmithing skill to 94.0
  MINING=940 Sets Mining skill to 94.0
  TINKERING=940 Sets Tinkering skill to 94.0
  EQUIPITEM=0x13e3 Adds an equips a smith's hammer
  PACKITEM=0x0fbc Adds tongs in backpack
  PACKITEM=0x1bf2,30 Adds 30 iron ingots in backpack
  PACKITEM=0x0e85 Adds a pick-axe in backpack
  PACKITEM=0x1ebc Adds Tinker's Tools in backpack
  }

  An additional tag that is supported, but not used in the above example, is the SKIN=0x#### tag, which allows you to modify the skincolor of a character to the specified hue.

  Once a player steps into a gate with the above advancement setup, they'll have their stats and skills set as defined, and will get any items listed added to their inventory.

  ### Setting Up an Advancement Gate

  To actually set up an advancement gate in-game, there are two paths you can take. You can either add them by hand, in-game, using GM commands, or you can set up predefined items in the item DFNs that can be quickly added anywhere at any time with a single GM command. Let's look at each option.

  Manual Setup

  1) Add a gate item (or another item players can walk over) where you want your advancement gate to be.

  For a blue moongate, try 'add 0x0f6c
  For a red moongate, use 'add 0x0dda

  You can also dye these a different color using the 'dye command.

  2a) If you want players to only able to make use of the advancement gate a single time, use 'set type 80 and targeting the gate to set it up as a "single use" advancement gate.

  2b) Alternatively, use 'set type 81 to make it a "multiple use" advancement gate that can be used over and over again.

  3) Use 'set morex # to point the advancement gate to a unique identifier already setup in advance.dfn (see above). For example, 'set morex 1 would assign the [ADVANCEMENT 1] gate setup from advance.dfn to the item, and players stepping onto the gate will become a Master Smith, based on the example from above.

  4) To make sure your gate item doesn't vanish into thin air, use the 'nodecay command on it to stop it from decaying.

  5) To make sure your players can't pick it up and run away with it, use the 'set movable 3 command on it.

  6) Finally, use the 'tweak command on the gate to give it an identifying name so players can tell what it is if they click on it.

  Predefined Item Setup

  If you want to create re-usable definitions (templates, if you will) for advancement gates that let you quickly add them in multiple areas without having to set up each one from scratch, you can add items like this to a custom .dfn file inside the DFNDATA/ITEMS/ folder:

  [adv_gate_mastersmith] Name of custom item
  {
  get=base_item Inherit basic item properties from base item so we don't have to re-add them here
  name=Master Smith Advancement Gate Name that shows when players click on the gate
  id=0x0f6c ID of the item to be used as a gate; a blue moongate in this example
  type=80 Sets item to "single use advancement gate" itemType (use 81 for multi-use gates)
  morex=1 Assigns the advancement ID from advance.dfn
  decay=0 Makes item not decay
  movable=3 Makes item immovable
  }

  For each advancement gate setup you have in advance.dfn, set up one such item definition. Once done, either restart UOX3 or reload DFNs using the UOX3 console menu (press * to deactivate safe mode, followed by 7 to reload DFNs or ? to see menu).

  The next time you log into your shard, you can use the following GM command to add your custom advancement gate item anywhere you want:

  'add item adv_gate_mastersmith (replace name with name you give your custom gate item)

- Dictionaries

  UOX3 comes with a custom dictionary system that allows shard admins to set up and translate their own system and script messages to any language supported by the UO client. This system has some pros and cons over the usual "cliloc" (client localization, also supported!) system UO uses, in that it allows shard admins to send completely customized messages to the client (even if not setting up for multiple languages), at the cost of using more bandwith than the built-in cliloc system in the client.

  The dictionaries are set up in the UOX3/dictionaries/ folder, with each language contained in its own dictionary file with a file-ending matching a group of language codes used in the UO client. ENG, for instance, covers all English language codes, and FRE does the same for French ones. The exceptions are the files with a .ZRO and .UNK extensions. These are used as default files when no/an unknown language is returned from the client.

  #### Language Groups supported in UOX3's Dictionary System:

  UNK (Unknown - Used when unknown language code is returned from client)
  ZRO (Default - Used )
  ENG (English - ENU, ENG, ENA, ENC, ENZ, ENI, ENS, ENJ, ENB, ENL, ENT, ENW, ENP)
  GER (German - DEU, DES, DEA, DEL, DEC)
  SPA (Spanish - ESP, ESM, ESN, ESG, ESC, ESA, ESD, ESV, ESO, ESR, ESS, ESF, ESL, ESY, ESZ, ESB, ESE, ESH, ESI, ESU)
  FRE (French - FRA, FRB, FRC, FRS, FRL, FRM)
  JAP (Japanese - JPN)

  #### Language Codes supported by UO client via cliloc system (depending on client version):

  ENG (English)
  DEU (German)
  ESP (Spanish)
  FRA (French)
  CHT (Chinese)
  CHS (Non-Traditional Chinese)
  JPN (Japanese)
  KOR (Korean)

  In older client versions, it is possible to change the client language by changing a setting - UserLanguageCodeString - in the uo.cfg file. Example: UserLanguageCodeString=DEU. In modern client versions, this seems to instead be dictated automatically by the regional settings in Windows, meaning the above uo.cfg setting might not work.

- Mining and Ore System

  By default, UOX3 is setup with a very simple, yet customizable mining system, with some options in uox.ini to determine certain basic things.

  Mining Settings in uox.ini

  [resources]
  {
  MINECHECK=1 // Determines where players can mine for ore (0 = Anywhere, 1 = Mountains and cave floors, 2 = Region based)
  OREPERAREA=10 // Maximum number of ores to spawn in a given resource area
  ORERESPAWNTIMER=600 // Amount of time it takes for 1 ore to respawn/regenerate in a resource area
  ORERESPAWNAREA=10 // Number of resource areas to split the world into
  LOGSPERAREA=3
  LOGSRESPAWNTIMER=600
  LOGSRESPAWNAREA=10
  }

  #### Customizable Ore Types

  The different types of ore a player can mine are defined at the bottom of skills.dfn, in a section called [ORE_LIST]. Shard admins can easily add or remove ore types to/from this list.

  Ore List in skills.dfn

  [ORE_LIST]
  {
  Iron
  DullCopper
  ShadowIron
  Copper
  Bronze
  Golden
  Agapite
  Verite
  Valorite
  }

  Each of the ores in that list is then defined and fleshed out in more detail in a section of their own, below the list. If adding new ore types to the above list, remember to add a definition for your ore here, as well!

  Ore Definitions in skills.dfn

  [Iron] // Section ID of ore type, matching the name given in ORE_LIST
  {
  COLOUR=0x0 // Color of the ore
  MAKEMENU=1 // Crafting menu to open when smelting this ore type?
  MINSKILL=0 // Minimum skill needed to mine this ore type
  NAME=iron // Name of the ore, shown to player when they find some while mining
  }
  [DullCopper] // A second ore type, with a different section ID
  {
  COLOUR=0x0973
  MAKEMENU=200
  MINSKILL=650
  NAME=dull copper
  }

  #### Region Based Mining

  By default, players can mine any ore from anywhere, as long as their Mining skill surpasses the minimum skill requirement for mining a given type of ore. This means, however, that high level miners can mine the most valuable ore from any old mountain/cave, even if it's just outside the safe zone of a major city.

  For shard admins who want it to require some more effort than that, there's the regional based mining option. Firstly, change the MINECHECK setting in uox.ini (see Mining Settings in uox.ini section above) to 2. Secondly, go to UOX3/dfndata/regions/regions.dfn and make use of the "orepref" and "chanceforbigore" tags to setup ore type preferences and chances in various regions.

  Example Setup in regions.dfn
- NPC AI

  NPCs can be assigned an AI type that will make them behave or react to events around them in particular ways. Some of these AI types are combat-oriented (guards, monsters), and some are more service-oriented (bankers, healers, playervendors).

  NPC AI types can be assigned at spawn-time through the npcai=# tag in NPC DFNs, or at run-time via the 'set npcai # GM command or the aitype JS character property.

  Example: The Orc NPC contains the tag npcai=2 in its definition in DFNDATA/NPC/humanoids.dfn. This assigns it the "evil" AI that most monsters use, which makes it attack innocent characters (including players) on sight.

  ### Available NPC AI types

  0 - AI_NONE
  Default - no AI.

  1 - AI_HEALER_G
  Will resurrect dead (non-criminal) players who come within range.

  2 - AI_EVIL
  Will attack all good monsters/animals and players.

  4 - AI_GUARD
  Will attack all evil monsters, and players that commit crimes within town limits.

  5 - AI_FIGHTER
  Same as a guard, minus the teleporting and yelling of "Halt!"

  6 - AI_ANIMAL
  Predatory animal AI that grow hungry over time and has a chance to attack other creatures (and humans) when hungry.

  7 - AI_DUMMY
  Passive AI that doesn't fight back or react to being attacked.

  8 - AI_BANKER
  Bankers give players access to their bank boxes when saying the word "bank" nearby. Tip: This can also be used on players to ALWAYS give them access to their bankbox ;)

  17 - AI_PLAYERVENDOR
  Used by playervendors placed by players at their houses to sell items to other players.

  32 - AI_PET_GUARD
  Guarding AI used by pets when responding to the "guard" pet command.

  88 - AI_CHAOTIC
  This AI does not discriminate, and attacks anything from innocents to monsters (Blade Spirit/Energy Vortexes use this AI).

  666 - AI_HEALER_E
  Evil version of the regular Healer AI, except it resurrects murderers and criminals instead of innocents.

- NPC Escort Quests

  NPC Escort Quests allow players to earn a bit of extra gold by escorting NPCs from one location to another (gold paid upon safe arrival in target region). More details on this system coming soon!

- NPC Movement and Pathfinding

  ### WanderModes Overview

  The movement of NPCs in UOX3 is largely controlled by a property of NPCs called wanderMode. This property can be controlled to some degree through NPC setup in the DFNs (more on that below), but it's also dynamically altered at run-time based on the state of the NPC and what they're supposed to be doing.

  For instance, a player's pet who is given the pet command "follow me", will have its wanderMode altered to follow (wanderMode 1), and will follow that player until another command is used or another event takes place that cause its wanderMode to be altered.

  An Orc that sees and wants to attack a player also goes into the follow wanderMode, and will attempt to follow the player until they get into range and can perform their attack. However, should the player deal enough damage to the Orc, it might instead enter the flee wanderMode (wanderMode 6) and try to escape with its life.

  Another wanderMode - pathfind (wanderMode 7) - is a temporary wanderMode set by UOX3 that functions similarly to the follow mode, but instead of continuing to follow someone indefinitely, it stops and reverts back to its original wanderMode (whatever that might be) when it reaches the intended target (or if it fails to pathfind there).

  Basic vs Advanced (A*) Pathfinding

  By default, the advanced pathfinding setting is enabled for NPCs in UOX3. This mode of pathfinding utilizes the popular A* algorithm to find the shortest paths NPCs need to take in order to reach their intended location. This setting can be enabled or disabled via the ADVANCEDPATHFINDING flag in UOX.INI, though it is recommended to leave this setting enabled unless experiencing performance drops due to too many/too heavy pathfinding calculations.

  ### Controlling NPC WanderMode through DFNs

  Some of these wanderModes are used almost exclusively by UOX3's internal code (like the pathfind and follow modes), while others can be set as default modes for NPCs in the DFNs via the npcwander DFN tag. Let's look at the most common options for that tag:

  npcwander=0 (None)
  The most basic of wanderModes. Essentially, the NPC has no default mode of movement and will stand still on the spot after spawning until something causes its wanderMode to be altered (like being attacked). Once such an event stand, they once again become motionless.

  npcwander=2 (Free)
  The popular wanderMode for free-spirited NPCs who like to roam wherever the wind takes them. NPCs with this wanderMode will move around randomly, with no restrictions on direction or distance. There's no saying where they'll end up!

  npcwander=3 (Box)
  NPCs with this wanderMode are unable to 'think outside the box'. The box is their entire life; if there's a world beyond the box, the NPC either doesn't know about it - or doesn't care! However, if provoked, they might leave their box for a limited time, before returning should the situation calm down. This wanderMode requires some additional setup (see below).

  Additional Setup for Box WanderMode

  Usage of the "box" wanderMode (3) requires the following additional tags setup in the DFN, in order to define a bounding box that restricts the NPC's movement:

  fx1=-1 / fixedXCoordinate
  Set to -1 to use the NPC's spawn location combined with a "radius" (fx2 if specified, otherwise defaults to 10) to determine the farthest number of tiles NPC is allowed to move in directions east and west from spawn point. Can also be given a positive value to set a fixed X1 coordinate for the bounding box.

  fy1=-1 / fixedYCoordinate
  Set to -1 to use the NPC's spawn location combined with a "radius" (fx2 if specified, otherwise defaults to 10) to determine the farthest number of tiles NPC is allowed to move in direction north and south from spawn point. Can also be given a positive value to set a fixed Y1 coordinate for the bounding box.

  fx2=radius / fixedXCoordinate
  If fx1 and fy1 are set to -1, any positive value given for fx2 will act as a "radius" determining how far in each direction from the spawn point (east, west, north, south) NPC is allowed to move. If fx1 and fy1 have positive values (fixed coordinates), fx2 will be used to set a fixed X2 coordinate for the bounding box.

  fy2=fixedYCoordinate
  Only used when setting up bounding box with fixed coordinates, and is used to set the Y2 coordinate for said bounding box.

  npcwander=4 (Circle)
  Unlike their 'square' peers in wandermode 3, NPCs setup with wanderMode 4 have a more rounded taste, and embrace a lifestyle entirely without corners. They're all about circles! However, if provoked, they might leave their precious circle for a limited time, before returning should the situation calm down. This wanderMode requires some additional setup (see below).

  Additional Setup for Circle WanderMode

  Usage of the "circle" wanderMode (4) requires the following additional tags setup in the DFN, in order to define a bounding circle that restricts the NPC's movement:

  fx1=#
  Determines the X coordinate for the center of the bounding circle that restricts the NPC's wandering. If set to -1, will instead get the X coordinate from the NPC's spawn point.

  fy1=#
  Determines the Y coordinate for the center of the bounding circle that restricts the NPC's wandering. If set to -1, will instead get the Y coordinate from the NPC's spawn point.

  fz1=#
  Determines the Z (height) coordinate for the center of the bounding circle that restricts the NPC's wandering. NPC's bounding circle is considered valid if NPC is within a Z of 5 from this defined value.

  fx2=#
  Radius (in tiles) of the bounding circle that restricts the NPC's wandering.

  npcwander=5 (Frozen)
  NPCs in wanderMode 5 are cool as cucumbers, so cool, in fact, that they remain frozen in place on the same spot, unable to move. Come hell or high water, they will remain steadfast and stick to their spot no matter what.

  ### Altering WanderMode through JavaScript

  In addition to DFNs and code, an NPC's wanderMode can also be adjusted in JavaScripts used with UOX3's JS Engine, either via JS Methods for characters like Wander( x1, y1, x2 (radius), y2 ) and Wander ( x1, y1, radius ), or the wandertype JS property for characters. See the UOX3 JS Docs for more details on syntax and some examples!

- Race System

  More details on UOX3 race system coming here soon! Check out UOX3/dfndata/race/races.dfn for examples.

- Regions

  More details on UOX3 region system coming here soon! Until then, check out UOX3/dfndata/regions/regions.dfn for examples.

- Skill and Stat Gain

  The gain of skills and stats in UOX3 is governed by a system setup in UOX3/dfndata/skills/skills.dfn, where each skill has a setup similar to this:

  // Alchemy
  [SKILL 0]
  {
  NAME=ALCHEMY
  STR=0
  DEX=50
  INT=50
  SKILLPOINT=0,75,50
  SKILLPOINT=100,60,30
  SKILLPOINT=200,45,25
  SKILLPOINT=300,40,20
  SKILLPOINT=400,35,15
  SKILLPOINT=500,30,5
  SKILLPOINT=600,25,5
  SKILLPOINT=700,20,0
  SKILLPOINT=800,15,0
  SKILLPOINT=900,10,0
  SKILLPOINT=990,5,0
  SKILLPOINT=1000,0,0
  MADEWORD=mixed
  }

  SKILLPOINT Entries work in this way:

  - The first value is the skill level at which this entry takes effect.
  - The second value is the chance to gain skill on success.
  - The third value is the chance to gain skill on failure.
  - The fourth (optional) value is the amount to gain on success.

  Each additional SKILLPOINT entry sets a ceiling for the previous one. Thus entries should be created for every step you wish there to be, to gradually slow down skill gain. By default these steps are: 0-100, 100-200, 200-300, 300-400, 400-500, 500-600, 600-700, 700-800, 800-900, 900-990, 990-1000. Note that all skill values are *10, thus 100 instead of 10.0

- Spawn Objects

  UOX3's Spawn Object system lets shard admins setup item or NPC spawns in-game using GM commands, or setup predefined spawn objects in the DFNs that GMs can then add anywhere they want something to spawn.

  Unlike objects spawned via Spawn Regions, ones spawned from Spawn Objects have a persistent state and will be saved during world saves and will be loaded again if server restarts.

  More details coming soon!

- Spawn Regions

  #### Spawn Regions

  UOX3's regional spawning system allows the spawning of thousands of NPCs and items without affecting world saving or loading times negatively, as anything spawned through this system is not saved, and will not persist through a server restart, but will respawn on every server startup. This is useful for generic monster spawns, NPC shopkeepers and townsfolk, random item spawns like magic reagents, etc.

  The spawning system is setup through UOX3/dfndata/spawn/spawn.dfn, and an example of a setup for this can be seen below, or by examining the Community-made spawn.dfn file.

  Example Setup for a Spawn Region

  The following spawn region was taken from the above-mentioned Community-made spawn.dfn file, and is responsible for spawning orcs in the Yew Orc Fort:

  [REGIONSPAWN 283]
  {
  NAME=Yew Orc fort // Internal name for spawn region
  NPC=orc // npcSectionID to spawn from NPC DFNs
  MAXNPCS=10 // Max amount of NPCs spawn region is allowed to spawn
  X1=626 // Top left corner of coordinate set
  Y1=1481 // Top left corner of coordinate set
  X2=638 // Bottom right corner of coordinate set
  Y2=1487 // Bottom right corner of coordinate set
  WORLD=0 // Worldnumber to apply spawn region in
  MINTIME=5 // Min time between respawns
  MAXTIME=15 // Max time between respawns
  CALL=5 // Max amount of orcs to spawn during each respawn
  }

  For a full list of DFN tags supported in Spawn Regions, take a look at DFN Tag Overview > SpawnRegion DFN Tags!

  #### Predefined Spawns

  In addition to dedicated spawn regions, this system also supports setting up generic, predefined spawns that can be applied directly in regions in UOX3/dfndata/regions/regions.dfn. The benefit of such predefined spawns is that they can be re-used in different regions, and can piggy-back on the regions that already exist instead of having to create new dedicated spawn regions with coordinates etc.

  Example Setup for a Predefined Spawn

  The following section is added either at the bottom of an existing DFN file in UOX3/dfndata/spawn/ (below spawnregion entries), or in its own, separate file in the same folder:

  [PREDEFINED_SPAWN orcInvasion]
  {
  NAME=Orc Spawn
  NPCLIST=allorc
  MAXNPCS=50
  MINTIME=0
  MAXTIME=1
  CALL=10
  }

  This is then applied to specific sets of coordinates (X1, Y1 -> X2, Y2) within a region in UOX3/dfndata/regions/regions.dfn by adding a SPAWN=orcInvasion tag below the coordinate sets in question:

  [REGION 4]
  {
  NAME=Britain's farmlands
  MUSICLIST=21
  GUARDED=1
  GUARDLIST=guard
  GUARDOWNER=The Town
  MAGICDAMAGE=0
  MARK=1
  GATE=1
  RECALL=1
  X1=1085
  Y1=1530
  X2=1200
  Y2=1695
  SPAWN=orcs
  X1=1200
  Y1=1555
  X2=1295
  Y2=1695
  SPAWN=orcs
  X1=1295
  Y1=1695
  X2=1330
  Y2=1850
  SPAWN=orcs
  X1=1100
  Y1=1695
  X2=1295
  Y2=1915
  SPAWN=orcs
  }

  Note that in this case, the guards have also been disabled via the GUARDED=0 line, to prevent the orcs spawning in the Britain farmlands from getting instant-killed by the town guards!

- Spellcasting NPCs

  The spattack= setting in npc.dfn's matches the circle you want an NPC to be able to cast up to (IE a setting of 8 means he can cast any spell from Circle 1 all the way to circle 8 ). Notably, NPC's can currently only cast certain spells, and theese will be chosen at random when the NPC is able to cast spells during its combat cycle.

  Following is a list of spells an NPC can cast:

  - Circle 1: Clumsy, Feeble Mind, Heal (Self), Magic Arrow, Reactive Armor (self ), Cure (Self if poisoned), Weaken
  - Circle 2: Harm
  - Circle 3: Fireball, Poison
  - Circle 4: Curse, Greater Healing (Self), Lightning, Mana Drain
  - Circle 5: Blade Spirits, Magic Reflection (Self), Mind Blast, Paralyze
  - Circle 6: Dispel (if fighting a summoned creature), Energy Bolt, Explosion, Mass Curse
  - Circle 7: Chain Lightning, FlameStrike, Mana Vampire, Meteor Swarm
  - Circle 8: Earthquake, Energy Vortex
- Teleport Locations

  Fixed teleport locations can be setup via UOX3/js/teleport.scp using the following format:

      		From 			To 		Optional
      		X,Y,Z(or ALL), 	X,Y,Z  	[,World,World]

  Example:

      		[TELEPORT ENTRIES]
      		{
      		ENTRY=3,        128,    All,    257,    784,    64,     3,4 //  [Yomotsu_Mines_Exit]
      		ENTRY=3,        1267,   All,    666,    928,    -80,    2,2 //  [Ankh_Dunegon_Exit]
      		}

  Notes:

  - Entries without world-coordinates will work in _all_ worlds!!!1one.Entries marked with have been verified as working
  - Entries marked with ???? need to be verified by someone who knows the location
  - Entries with _mg_ in the description are moongate locations. Comment out if you plan to use actual moongates
- Townstones

  UOX3 comes with a system for townstones that allows players to setup their own player-run governments in different regions of the world.

  The basics of the system is as follows:

  - Player gets hold of a Townstone Deed, and uses it while in a given region of the world to found a new Town.
  - Using the Townstone Deed will place a Townstone on the ground, which the player can interact with to see details of the newly established Town

  List of features in Townstones System:

  - Townstones are based on regions
  - Multiple Townstones may be placed in one region, but they all give info about the same region.
  - Townstones are of two types (automatically determined) based on the information in regions.scp file.
  - Players may become a resident of a town, wilderness, or none at all.
  - Residents of a town may freely leave residency to none.
  - If a player is a resident of another town then the one he/she wants to join, then they will automatically leave the prior town upon their joining the new town.
  - Residents of a town (other then wilderness type) may vote for mayor.
  - Residents of a town may vote however often they wish, but votes are not tallied until the 'election day'.
  - Residents of a town may opt to display the town they are from on their paperdoll. If they choose to display their town title, their reputation title will not be shown (may be changed at a future date).
  - The elected Mayor is forced to display their town title on their paperdoll. It is in the format of "Mayor of , "
  - The elected Mayor has "Mayor" prefixed to their displayname from allnames.
  - If a mayor leaves residency of the town for either none, or another, then a new mayor is automatically detected based on number of votes at that time.
  - Townstones display the current mayor on them.
  - Townstones display the total population for that town.
  - Wilderness regions display 'unruled region' for mayor.
  - Wilderness regions display 'unknown' for population.
  - To cast a vote for Mayor, the person whom the player wants to vote for must be online, and preferably onscreen. (Target based).
  - If voting is 'mis-targeted' then the previous vote is unchanged.
  - Residents may not vote for players who are not a resident of their same town.
  - The player whom a person is currently voting for is displayed on the townstone.

  More details being added soon!

- Weather System

  UOX3 comes with an extensive weather system that ties in with regions and player races.

  More details being added soon!

- # Scripting - DFN System

- Introduction to DFN System in UOX3

  DFNs - or "definition files" are essentially "templates" or "blueprints" that define the properties of various objects and systems in UOX3, which can be customized by shard admins with any text editor and be reloaded by UOX3 on the fly (only applies to select types of DFNs).

  List of DFN types available in UOX3, and what they are used for:

  advance

  Location: UOX3\dfndata\advance\advance.dfn
  Used to setup advancement gates/objects that can quickly boost players skills and stats to desired level.

  carve

  Location: UOX3\dfndata\carve\carve.dfn
  Used to setup lists of items that players will gain when carving particular creatures with bladed items.

  colors

  Location: UOX3\dfndata\colors\colors.dfn
  Contains random colorlists that can be used with color tags in various other DFNs to provide random colors for items and NPCs.

  command

  Location: UOX3\dfndata\command\commands.dfn
  Contains setup of roles like Administrator, GM, Counselor and Player, as well as the privileges and access to commands that each role will have.

  create

  Location: UOX3\dfndata\create\*.dfn
  Contains crafting menus with resource costs for crafting each individual item.

  creatures

  Location: UOX3\dfndata\creatures\creatures.dfn
  Used to setup things like sound effects, movement types and more for each creature type in the game.

  harditems

  Location: UOX3\dfndata\harditems\harditems.dfn
  Used to override properties of "hard/raw" (non-scripted) items added to the world. Normally they get all their properties directly from tiledata.mul, but this file allows overriding the properties for such items, to ensure they all get the proper weight they should have, etc.

  house

  Location: UOX3\dfndata\house\house.dfn
  Contains the setup for multis/houses/boats in UOX3, and what items (like doors, or signs) are added along with these when players place them in the world using deeds.

  html

  Location: UOX3\dfndata\html\default_templates.dfn / *.htf
  Used to setup HTML templates for server status, information pages, etc. that can be automatically written by the server on worldsaves. Useful to show status of server on shard homepage, for instance.

  items

  Location: UOX3\dfndata\items\*.dfn
  Contains all item definitions in the game - the scripted versions of "hard" items, these get all their properties set in these definition files instead of from tiledata.mul. Also contains the contents of the menu shown when using the 'add command, lootlists for NPCs, shoplists for NPC shopkeepers, and more.

  location

  Location: UOX3\dfndata\location\location.dfn
  Contains definitions of locations in the world - points of interest that GMs can travel directly to using the 'goplace # command, where # aligns with location IDs in this file.

  maps

  Location: UOX3\dfndata\maps\maps.dfn / tiles.dfn
  maps.dfn is used to define what kind of mapfiles UOX3 should be attempting to load - their names, their sizes, etc. tiles.dfn is used to override tiledata properties of items in the game world - useful for marking unclimbable ladders as climbable, for instance.

  menus

  Location: UOX3\dfndata\menus\menus.dfn / polymorph.dfn / tracking.dfn
  Contains various gump menus used in the game, such as menu used by polymorph spell, tracking skill and basic server info gumps.

  misc

  Location: UOX3\dfndata\misc\books.dfn / gumps.dfn / motdtips.dfn
  Contains hardcoded books, message of the day login tips, housing/guild/account management gump menus.

  msgboard

  Location: UOX3\dfndata\msgboard\msgboard.dfn
  Used to setup NPC escort quests. See separate feature documentation for more info.

  newbie

  Location: UOX3\dfndata\newbie\newbie.dfn
  Used to setup newbie items given out to new characters upon creation, based on the skills they choose.

  npc

  Location: UOX3\dfndata\npc\*.dfn
  Contains definitions for all NPCs that can be added in-game; their body IDs, their names, their skills and stats, items equipped (if human), etc. Also contains namelists (namelists.dfn) with random NPC names for humans, orcs, lizardmen, etc.

  race

  Location: UOX3\dfndata\race\races.dfn
  Used to define races in the game (including player-accessible ones); their strengths and weaknesses, their skill bonuses and penalties, and so forth. See separate feature documentation for more info.

  regions

  Location: UOX3\dfndata\regions\regions.dfn
  Used to define the various regions of the game world and their properties, like whether they are considered safe zones where no harm can befall the players, whether travel spells are enabled or not, whether the guard system is enabled or not. See separate feature documentation for more info.

  skills

  Location: UOX3\dfndata\skills\skills.dfn
  Contains definitions for all the skills in the game, and their skill/stat advancement rates. See separate feature documentation for more info.

  spawn

  Location: UOX3\dfndata\spawn\spawn.dfn
  Used to setup spawn regions - areas in the world where NPCs of a particular type will spawn, how many of them will spawn, how often, and so forth. See separate feature documentation for more info.

  spells

  Location: UOX3\dfndata\spells\spells.dfn
  Contains definitions for all spells in the game, their requirements in skills, stats and resources, their words of power and other special properties.

  titles

  Location: UOX3\dfndata\titles\titles.dfn
  Used to define skill titles (such as Blacksmith, Tailor, Swordsman), proficiency titles (such as Apprentice, Master, Grandmaster) and fame/karma related titles (such as Glorious, Infamous, Dread).

  weather

  Location: UOX3\dfndata\weather\weather.dfn
  Contains definitions of weather systems, used by the region system to setup different weather across different regions in the game world. See separate feature documentation for more info.

- DFN Tag Overview

  Here you'll find an overview of all DFN tags that can be used in UOX3, depending on context (characters, items, regions, etc.). The DFNs can be safely modified and dynamically reloaded while UOX3 is running, as the only other time UOX3 reads from these files (and never writes) is on server startup. After making a change, simply use the 'reloaddefs command in-game, or console command '7' after unlocking the UOX3 console by pressing '*'.

  Character DFN Tags

  alchemy=[skillpoints] or [lowskill highskill]
  Set Alchstrongy skill (0 - 1000)

  anatomy=[skillpoints] or [lowskill highskill]
  Set Anatomy skill (0 - 1000)

  animallore=[skillpoints] or [lowskill highskill]
  Set Animal Lore skill (0 - 1000)

  archery=[skillpoints] or [lowskill highskill]
  Set Archery skill (0 - 1000)

  armslore=[skillpoints] or [lowskill highskill]
  Set Arms Lore skill (0 - 1000)

  backpack
  If tag is present, add backpack to NPC

  begging=[skillpoints] or [lowskill highskill]
  Set Begging skill (0 - 1000)

  blacksmithing=[skillpoints] or [lowskill highskill]
  Set Blacksmithing skill (0 - 1000)

  bowcraft=[skillpoints] or [lowskill highskill]
  Set Bowcraft/Fletching skill (0 - 1000)

  bushido=[skillpoints] or [lowskill highskill]
  Set Bushido skill (0 - 1000)

  camping=[skillpoints] or [lowskill highskill]
  Set Camping skill (0 - 1000)

  carpentry=[skillpoints] or [lowskill highskill]
  Set Carpentry skill (0 - 1000)

  cartography=[skillpoints] or [lowskill highskill]
  Set Cartography skill (0 - 1000)

  carve=[carvelist-ID]
  Set section from UOX3/dfndata/carve/carve.dfn to use when adding items for carved/butchered corpses

  chivalry=[skillpoints] or [lowskill highskill]
  Set Chivalry skill (0 - 1000)

  color/colour=[color]
  Set Color by hex-id or decimal value

  colorlist/colourlist=[colorlist-ID]
  Set Colorlist from UOX3/dfndata/colors/colors.dfn to pick random color from list

  colormatchhair/colourmatchhair
  If tag is present, makes color of character's beard (if they have one) same as for their hair

  cooking<=[skillpoints] or [lowskill highskill]
  Set Cooking skill (0 - 1000)

  custominttag=[tagname] [value]
  Adds custom JS int tag to character.

  customstringtag=[tagname] [text]
  Adds custom JS string tag to character.

  damage/att=[damage] or [lowdmg highdmg]
  Set damage/attack values - either fixed or random range

  def=[defense] or [lowdef highdef]
  Set Physical-resist/defense value - either fixed or random range

  detectinghidden=[skillpoints] or [lowskill highskill]
  Set Detecting Hidden skill (0 - 1000)

  dex=[statpoints] or [lowstat highstat]
  Set Dexterity stat for NPC - either fixed or randomg range

  dir=[direction]
  Set default direction upon spawning (NE, E, SE, S, SW, W, NW, N - or RND to randomize)

  elstrongentresist=[fire cold energy poison]
  Set Elstrongent-resist stats (0 - 1000 for each stat)

  strongotecolour==[color]
  Set the default color (in hex or decimal) for the NPC's strongote text

  enticstrongent=[skillpoints] or [lowskill highskill]
  Set Enticstrongent skill (0 - 1000)

  equipitem=[itemSectionID]
  Equip item with specified itemSectionID from item DFNs

  evaluatingintel=[skillpoints] or [lowskill highskill]
  Set Evaluating Intelligence skill (0 - 1000)

  fame=[fame value]
  Set amount of fame given to/taken from the player if they kill the NPC

  fencing=[skillpoints] or [lowskill highskill]
  Set Fencing skill (0 - 1000)

  fishing=[skillpoints] or [lowskill highskill]
  Set Fishing skill (0 - 1000)

  flag=[neutral/innocent/evil]
  Flag NPC as Neutral, Innocent or Evil

  fleeat=[percentage]
  Set percentage of health at which NPC will start to flee in combat

  fleeingspeed=[movstrongentspeed]
  Set the speed at which the NPC flees (0.4 by default, lower = faster)

  focus=[skillpoints] or [lowskill highskill]
  Set Focus skill (0 - 1000)

  food=[foodlist-ID]
  Define which food this NPC eats, from UOX3/dfndata/items/foodlists.dfn (primarily used to feed pets)

  forensics=[skillpoints] or [lowskill highskill]
  Set Forensics skill (0 - 1000)

  fx1=[X coordinate]
  Coordinate used with NPC Wander-modes

  fx2=[X coordinate]
  Coordinate used with NPC Wander-modes

  fy1=[Y coordinate]
  Coordinate used with NPC Wander-modes

  fy2=[Y coordinate]
  Coordinate used with NPC Wander-modes

  fz1=[Z coordinate]
  Coordinate used with NPC Wander-modes

  get=[npcSectionID]
  Inherit properties from NPC defined by npcSectionID in NPC DFNs

  gold=[gold] or [mingold maxgold]
  Set the amount of gold this NPC carries - either fixed or random range

  haircolor/haircolour=[color]
  Set the haircolor of the NPC in hex or decimal

  healing=[skillpoints] or [lowskill highskill]
  Set Healing skill (0 - 1000)

  herding=[skillpoints] or [lowskill highskill]
  Set Herding skill (0 - 1000)

  hidamage=[hidamage]
  Set max damage/attack value

  hiding=[skillpoints] or [lowskill highskill]
  Set Hiding skill (0 - 1000)

  hp=[hitpoints] or [lowhp highhp]
  Set starting Hitpoints of NPC when spawned - either fixed or random range

  hpmax=[hitpoints] or [lowhp highhp]
  Set maximum Hitpoints of NPC when spawned - either fixed or random range

  id=[bodyID]
  Set body ID of creature, in hex. Also determines origID property.

  imbuing=[skillpoints] or [lowskill highskill]
  Set Imbuing skill (0 - 1000)

  inscription=[skillpoints] or [lowskill highskill]
  Set Inscription skill (0 - 1000)

  intelligence=[statpoints] or [lowstat highstat]
  Set Intelligence stat for NPC - either fixed or random range

  itemid=[skillpoints] or [lowskill highskill]
  Set Item Identification skill (0 - 1000)

  karma=[karma value]
  Set amount of Karma given to/taken from the player if they kill the NPC

  lockpicking=[skillpoints] or [lowskill highskill]
  Set Lockpicking skill (0 - 1000)

  lodamage=[lodamage]
  Set minimum damage/attack value

  loot=[lootlist-ID] or [lootlist-ID],[amount] or [lootlist-ID],[minamount maxamount]
  Add random loot to NPC based on specified lootlist from UOX3/dfndata/items/lootlists.dfn. Supports (optionally) specifying a fixed amount or a random amount of the specified ID.

  lumberjacking=[skillpoints] or [lowskill highskill]
  Set Lumberjacking skill (0 - 1000)

  macefighting=[skillpoints] or [lowskill highskill]
  Set Macefighting skill (0 - 1000)

  magery=[skillpoints] or [lowskill highskill]
  Set Magery skill (0 - 1000)

  magicresistance=[skillpoints] or [lowskill highskill]
  Set Magic Resistance skill (0 - 1000)

  mana=[statpoints] or [lowstat highstat]
  Set starting Mana of NPC - either fixed or random range

  manamax=[statpoints] or [lowstat highstat]
  Set maximum Mana of NPC - either fixed or random range

  meditation=[skillpoints] or [lowskill highskill]
  Set Meditation skill (0 - 1000)

  mining=[skillpoints] or [lowskill highskill]
  Set Mining skill (0 - 1000)

  musicianship=[skillpoints] or [lowskill highskill]
  Set Musicianship skill (0 - 1000)

  mysticism=[skillpoints] or [lowskill highskill]
  Set Mysticism skill (0 - 1000)

  name=[text]
  Set NPC name

  namelist=[namelistID]
  Set random NPC name based on specified namelist from UOX3/dfndata/npc/namelists.dfn

  necromancy=[skillpoints] or [lowskill highskill]
  Set Necromancy skill (0 - 1000)

  ninjitsu=[skillpoints] or [lowskill highskill]
  Set Ninjitsu skill (0 - 1000)

  notrain
  If tag is present, NPC won't train skills to players

  npcai=[npcAI]
  Set AI of NPC (0 = none, 1 = Healer, 2 = Evil/Monster, 4 = Guard, 5 = Fighter, 6 = Animal, 7 = Dummy, 8 = Banker, 17 = PlayerVendor, 32 = Pet Guard, 88 = Chaotic, 666 = Evil Healer)

  npcwander=[wanderMode]
  Set NPC wander-mode (0 = immobile, 1 = follow target, 2 = wander freely, 3 = wander in box, 4 = wander in circle, 5 = frozen). See NPC Movement and Pathfinding for more details.

  packitem=[itemSectionID] or [itemSectionID],[amount] or [itemSectionID],[minamount maxamount]
  Add specified item from Item DFNs to NPC's backpack (must come after backpack tag!). Supports optional value for amount, or random amount values.

  parrying=[skillpoints] or [lowskill highskill]
  Set Parrying skill (0 - 1000)

  peacemaking=[skillpoints] or [lowskill highskill]
  Set Peacemaking skill (0 - 1000)

  poisoning=[skillpoints] or [lowskill highskill]
  Set Poisoning skill (0 - 1000)

  poisonstrength=[poisonStrength]
  Set poison strength for NPC (1 = weak, 4 = deadly)

  priv=[priv]
  Used to set the NPC's starting privileges. Not working at the moment.

  provocation=[skillpoints] or [lowskill highskill]
  Set Provocation skill (0 - 1000)

  race=[raceID]
  Set Race ID of NPC, from UOX3/dfndata/race/races.dfn.

  reattackat=[percentage]
  Defines percentage of health at which NPC will return to combat if fleeing

  removetraps=[skillpoints] or [lowskill highskill]
  Set Remove Traps skill - either fixed value or random range

  rshopitem=[itemSectionID]
  NPC will purchase item defined here. itemSectionID is from the Item DFNs

  runningspeed=[movementspeed]
  Defines running-speed for the NPC (0.2 by default, lower = faster)

  runs
  If tag is present, NPC will play running animations during combat, and will move at runningspeed instead of walkingspeed

  saycolor/saycolour=[color]
  Set NPC speech color in hex or decimal

  script=[scriptID]
  Set scriptID of JS to attach to NPC on creation

  sellitem=[itemSectionID]
  NPC will sell item defined here. itemSectionID comes from Item DFNs

  shopitem=[itemSectionID]
  NPC will have item defined here added to their "already bought"-items pack. itemSectionID from item DFNs

  shopkeeper
  If tag is present, NPC will be turned into a shopkeeper on creation

  shoplist=[NPC will buy/sell items defined in the shoplist from UOX3/dfndata/items/shoplist.dfn]
  Not in use.

  skill=[skillNum] [skillValue]
  Set specified skill for NPC (skillValue 0 - 1000)

  skin=[color]
  Defines skin-color for NPC

  skinlist=[colorlistID]
  Randomly set NPC skincolor based on colorlist in UOX3/dfndata/colors/colors.dfn

  snooping=[skillpoints] or [lowskill highskill]
  Set Snooping skill (0 - 1000)

  spadelay=[seconds]
  Set minimum delay in seconds between each time an NPC can cast spells in combat

  spattack=[spellCircle]
  Defines which spellcircles of spells the NPC has access to.

  spellweaving=[skillpoints] or [lowskill highskill]
  Set Spellweaving skill (0 - 1000)

  spiritspeak=[skillpoints] or [lowskill highskill]
  Set Spirit Speak skill (0 - 1000)

  split=[0/1]
  If set to 1, NPC will split into two NPCs when hit in combat

  splitchance=[percentage]
  Set the chance for NPC to split when hit, if split tag is enabled

  stamina=[statpoints] or [lowstat highstat]
  Set starting Stamina for NPC on creation - either fixed value or random range

  staminamax=[statpoints] or [lowstat highstat]
  Set maximum Stamina for NPC on creation - either fixed value or random range

  stealing=[skillpoints] or [lowskill highskill]
  Set Stealing skill (0 - 1000)

  stealth=[skillpoints] or [lowskill highskill]
  Set Stealth skill (0 - 1000)

  strength=[statpoints] or [lowstat highstat]
  Set Strength of NPC on creation - either fixed value or random range

  swordsmanship=[skillpoints] or [lowskill highskill]
  Set Swordsmanship skill (0 - 1000)

  tactics=[skillpoints] or [lowskill highskill]
  Set Tactics skill (0 - 1000)

  tailoring=[skillpoints] or [lowskill highskill]
  Set Tailoring skill (0 - 1000)

  tamedhunger=[hungerrate percentage]
  Set hunger-rate and chance to become wild (600 default for hungerrate, 30 for chance to go wild!)

  taming<=[skillpoints] or [lowskill highskill]
  Set Animal Taming skill (0 - 1000)

  tasteid=[skillpoints] or [lowskill highskill]
  Set Taste Identification skill (0 - 1000)

  throwing=[skillpoints] or [lowskill highskill]
  Set Throwing skill (0 - 1000)

  tinkering=[skillpoints] or [lowskill highskill]
  Set Tinkering skill (0 - 1000)

  title=[text]
  Set NPC's title

  topeace=[skillpoints]
  Set minimum skill to succesfully use peacemaking against this NPC

  toprov=[skillpoints]
  Set minimum skill to succesfully use provocation against this NPC

  totame=[skillpoints]
  Set minimum skill to succesfully tame this NPC

  tracking=[skillpoints] or [lowskill highskill]
  Set Tracking skill (0 - 1000)

  veterinary=[skillpoints] or [lowskill highskill]
  Set Veterinary skill (0 - 1000)

  walkingspeed=[movementspeed]
  Set NPC walk speed (0.7 default, uses global uox.ini settings if not set)

  willhunger=[0/1]
  If 1, NPC is affected by hunger, and will never need food.

  wrestling=[skillpoints] or [lowskill highskill]
  Set Wrestling skill (0 - 1000)

  Item DFN Tags

  ac=[armorclass]
  Set armorclass of item (higher = better)

  addmenuitem=[itemmenuID,tileID,weightPosition,objectFlags,sectionItemID]
  Automatically add item to add-menu when said menu is generated. Needs to be combined with insertaddmenuitems tag in associated itemmenu inside UOX3/dfndata/ItemMenu.bulk.dfn (BROKEN)

  ammo=[id] or [id][color]
  Used with ranged weapons to specify required ammo. Color is optional

  ammofx=[id] or [id][color][rendermode]
  Used with ranged weapons to specify missile-FX

  amount=[amount] or [minamount maxamount]
  Set amount of items - either fixed amount or random range

  att=[lodamage hidamage]
  Used to set minimum and maximum damage values for weapons

  baseweight=[weight]
  Set base-weight of item (100 = 1 stone). Primarily used to keep a reference to the weight of empty containers, before they contain any items

  cold=[0/1]
  If set to 1, marks item with elemental type Cold, which defines the type of damage dealt if it's a weapon

  color/colour=[color]
  Color of item in hex or decimal

  colorlist/colourlist=[colorListID]
  Color of item randomly picked from specified colorList in UOX3/dfndata/colors/colors.dfn

  corpse=[0/1]
  If set to 1, defines item as a corpse!

  creator=[character serial]
  Serial of character that created item. Primarily applied during crafting

  custominttag=[tagname][value]
  Adds custom JS int tag to character.

  customstringtag=[tagname][text]
  Adds custom JS string tag to character.

  damage=[lodamage hidamage]
  Same as Att tag. Used to set minimum and maximum damage values for weapons

  decay=[0/1]
  If set to 1, item decays based on normal item decay rules. If set to 0, it never decays

  def=[defense]
  Set physical defense value of item. Primarily used with wearables like armor

  dex=[statpoints]
  Minimum dexterity required to equip item

  dexadd<=[statpoints]
  Temporary dexterity bonus applied to character while they have item equipped

  dir=[direction]
  Direction, but used to define light pattern/radius (0-56?) for light sources

  disabled=[0/1]
  If set to 1, item is disabled. Primarily used in code to make some items temporarily disabled so they cannot be used again for a short amount of time.

  dispellable
  If tag is present, marks the item as dispellable. Primarily applied to things like magical field spells that can be dispelled (firefields, poisonfields, etc)

  dye
  If tag is present, marks the item as dyeable (with dye tubs)

  elementresist=[fire cold energy poison]
  Set fire, cold, energy and poison resistance values (0 - 1000, where 1000 = 100.0)

  get=[itemSectionID]
  Inherit properties of item with specified itemSectionID from item DFNs

  glow=[0/1]
  Attaches a hidden lightsource to the item to make it appear to glow

  glowbc=[glowColor]
  Sets the color (in decimal or hex) of the glow effect (same as color tag on regular light sources)

  glowtype=[glowType]
  Set the type of glow-effect to use (same as direction tag on regular light sources)

  good=[goodValue]
  Set a category of goods used for the Advanced Trade System

  heat=[0/1]
  If set to 1, marks item with elemental type Heat, which defines the type of damage dealt if it's a weapon

  hidamage=[hidamage]
  Maximum damage value of a weapon (randomized between this and lodamage)

  hp=[hitpoints] or [lowhp highhp]
  Set hitpoints of item - either fixed value or random range

  id=[tileID]
  Set tileID of item art in decimal or hex

  intadd=[statpoints]
  Temporary intelligence bonus applied to character while they have item equipped

  intelligence=[statpoints]
  Minimum intelligence required to equip item

  interval=[mintime maxtime]
  Used by Spawner Objects to determine interval (in minutes) between the spawning of objects

  layer=[layer]
  Defines which layer (See Layer List NPC should equip item on - if it's equippable

  light=[0/1]
  If set to 1, marks item with elemental type Light, which defines the type of damage dealt if it's a weapon

  lightning=[0/1] or [lowskill highskill]
  If set to 1, marks item with elemental type Lightning, which defines the type of damage dealt if it's a weapon

  lodamage=[lodamage]
  Minimum damage value of a weapon (randomized between this and hidamage)

  loot=[lootListID]
  Adds random loot to a container based on specified lootListID in UOX3/dfndata/items/lootlists.dfn

  maxhp=[hitpoints]
  Set maximum hitpoints of item - generally used as durability for armor or items with a limited number of uses.

  more=[hex value]
  Generic variable whose purpose changes depending on context. For instance:

  - Spellbooks can be locked by setting their more variable to 1. Locked spellbooks cannot have spells added to them
  - Order/Chaos Gate openers store the serial of the associated castle gates in the more variable
  - The more variable is used by books to specify which pre-defined book text to load from UOX3/dfndata/misc/books.dfn. Such books cannot be altered in-game.
  - Guildstones use a more value to store the ID/guild number of the guild it belongs to
  - House keys store the serial of the house they belong to in their more variable

  morexyz=[morex],[morey],[morez]
  Generic, comma separated variables whose purpose changes depending on context. For instance:

  - Light sources store their "on" direction value in the morex portion of this variable when the light source is turned off, and applies it to the direction variable again when turned back on
  - For compatibility with older worldfiles, Spawner Objects alternatively use the value of morex to determine object to spawn if the spawnsection variable is not set.
  - morez is used to store "flag colors" of characters on the corpses created when they die, to indicate to other players whether the corpse is safe to loot or not (belonged to a red player, a criminal player, etc)
  - Containers used as bank boxes are only valid as bank boxes if their morex value is set to 1
  - Morex, morey, morez (and more) are used to store destination x, y and z (and world) coordinates on recall runes using the Mark spell, later to be used by the Recall/Gate spells
  - Morex, morey and morez are used by magic wands and items with magical spell charges to store spell circle, spell number and spell charges, respectively
  - Containers with a morez value set to 1 are trapped containers that will damage players who open them
  - Order/Chaos Gate openers use morez to indicate whether the linked castle gates (serial stored on more variable) are closed (1) or open (1)
  - Books use the morey value to set the number of pages of the book, and this has to be set before the book is opened and written. They also use a morex value of 666 to indicate that they're writable, or a value of 999 to indicate that they're read-only (most often set AFTER the book has been written)
  - Object Teleporters (type 60) use morex, morey and morez to store teleport destination coordinates (x, y and z) on the item
  - Items of morphobject type use morex to store bodyID of creature to morph into when the item is used
  - Items of type fireworks wands use morex to store the number of charges on the item
  - House signs use morez to define which gump from UOX3/dfndata/misc/misc.dfn to open when item is used
  - Moongates store the serial of the linked moongate on the other end in the morex variable
  - Field spells such as firefield, poisonfield store the caster's magery skill in the morex variable to use for damage calculations, and the caster's serial in the morey variable
  - Advancement Gates (types 80/81) use morex to store a reference to the advancementSectionID from UOX3/dfndata/advance/advance.dfn
  - Damage Objects (type 85) use morex to store base damage value applied to characters, and adds a randomized amount on top based on values in morey and morez
  - Sound Objects (type 88) use morex to store the sound effect ID to play, and morez to store the percentage chance of a sound effect playing for nearby players
  - WorldChange Gates (type 90) use morex to store the destination world number

  movable=[movable]
  Set movable status of item (0 = Default according to tiledata, 1 = Movable, 2 = GM only, 3 = Locked down, 4 = Owner only)

  name=[text]
  Name of item. Maximum length: 128 characters

  name2=[text]
  Secondary, hidden name of item. Revealed with Item Identification. Maximum length: 128 characters

  newbie
  If present, marks item as a blessed/newbie item that cannot be stolen, and will stay with player even after they die and get resurrected.

  offspell=[value]
  Can be set to a value between -128 and 127, but is currently not used for anything. In the olden days, this was a part of UOX3's unique armor/weapon engraving system that allowed you to engrave spells on equipment with the Inscription skill.

  packitem=[itemSectionID]
  Add specified item from item DFNs to container

  pileable=[0/1]
  If set to 1, item is pileable/stackable. Not all items can be stacked, however!

  poisondamage=[0/1]
  If set to 1, marks item with elemental type Poison, which defines the type of damage dealt if it's a weapon

  poisoned=[poisonStrength]
  Sets poison strength applied to item such as weapons and food (1 to 4, where 1 = Weak, 4 = Deadly)

  priv=[value]
  Set priv value for item - primarily set via code to make item decayable, blessed or dispellable

  race=[raceID]
  Set ID of race that a weapon will deal double damage against in combat

  rain=[0/1]
  If set to 1, marks item with elemental type Rain, which defines the type of damage dealt if it's a weapon

  rank=[rank]
  Used by crafting system to determine quality of item made

  restock=[amount]
  Shopkeepers who stock this item will restock specified amount of it

  script=[scriptID]
  Set scriptID of JS to attach to item on creation

  sk_made=[skillID]
  Defines the skill that is used to create the item

  snow=[0/1]
  If set to 1, marks item with elemental type Snow, which defines the type of damage dealt if it's a weapon

  spawnobj=[itemSectionID] or [npcSectionID]
  Used by Spawner Objects to determine which object to spawn from item or NPC DFNs

  spawnobjlist=[itemListID] or [npcListID]
  Used by Spawner Objects to determine which item or NPC from itemlists in UOX3/dfndata/items/itemlists.dfn or NPClists in UOX3/dfndata/npc/npclists.dfn to spawn

  spd=[speed]
  Set attack speed of weapon (higher is faster)

  stradd=[statpoints]
  Set how much strength the item temporarily grants players who equip it

  strength=[statpoints]
  Set Strength requirement for equipping item

  type=[itemType]
  Set itemType of item. See Item Types section

  value=[buyValue sellValue]
  Set item's buyvalue (how much shopkeepers will pay for item from players) and sellvalue (how much shopkeepers will sell item to players for)

  visible=[visibility]
  Set visibility of item (0 = Visible, 1 = Temporary hidden but visible to owner, 2 = Invisible by magic, 3 = Permanently hidden by GM)

  weight=[weight]
  Set weight of item (100 = 1 stone)

  weightmax=[weight]
  Maximum weight-capacity of a container (100 = 1 stone)

  wipe=[0/1]
  Determines if item is affected by item-wipes or not

  Region DFN Tags

  abweath=[weatherSystemID]
  Assign a weather system from UOX3/dfndata/weather/weather.dfn to this region

  appearance=[value]
  Set the appreanace of this region (0 = Spring, 1 = Summer, 2 = Autumn, 3 = Winter, 4 = Desolation)

  buyable=[number]
  See Advanced Trade System for details

  chanceforbigore=[percentage]
  Chance from 0 to 100 of finding 5 ores instead of 1 while mining in this region

  dungeon=[0/1]
  If set to 1, marks this region as a dungeon, which is used to determine light level for players who enter

  escorts=[0/1]
  If set to 1, marks this region as a potential target region for NPC Escort Quests

  gate=[0/1]
  If set to 1, allows players to Gate in and out of this region

  good=[goodID]
  See Advanced Trade System for details

  guarded=[0/1]
  If set to 1, this region is protected by guards

  guardlist=[npcListID]
  If region is guarded, this sets the NPC list (from UOX3/dfndata/npc/npclists.dfn) to choose from when spawning guards

  guardowner=[text]
  Set name of guard owner, which is used in a system message to players who enter/leave the region, in the shape of "You are now under the protection of [text] guards"

  instanceid=[instanceID]
  Set which instance of a world this region should exist in

  magicdamage=[0/1]
  If set to 1, hostile spells are castable in this region

  mark=[0/1]
  If set to 1, the Mark spell is usable to mark recall runes in this region

  musiclist=[musicListID]
  Specifies default music to play in this region, based on sections of music lists (MUSICLIST #) setup in regions.dfn based on entries from config.txt in UO client's music folder

  name=[text]
  Set name of this region

  orepref=[oreName percentage]
  Set one of these lines for each ore-type you want players to be able to find in this region, with an optional percentage chance from 0 to 100 of finding said ore

  race<=[raceID]
  Set the ID of the race this region belongs to. Members of a race can freely perform hostile actions against enemies of said race within this region

  randomvalue=[lowvalue highvalue]
  See Advanced Trade System for details

  recall=[0/1]
  If set to 1, players are able to recall in and out of this region

  safezone=[0/1]
  If set to 1, any and all hostile actions are disallowed within this region

  script=[scriptID]
  Specifies JS script to assign to this region

  sellable=[lowvalue highvalue]
  See Advanced Trade System for details

  spawn=[predefinedSpawnID]
  Set ID of a predefined spawn section setup in UOX3/dfndata/spawn/. See Spawn Regions for details

  teleport=[0/1]
  If set to 1 (default if not specified), Teleport spell is enabled within this region

  world=[worldNumber]
  Specifies which world number the region belongs in

  x1=[x coordinate]
  Defines boundary of region. Multiple X1 Y1 -> X2 Y2 blocks can be set for a single region.

  x2=[x coordinate]
  Defines boundary of region. Multiple X1 Y1 -> X2 Y2 blocks can be set for a single region.

  y1=[y coordinate]
  Defines boundary of region. Multiple X1 Y1 -> X2 Y2 blocks can be set for a single region.

  y2=[y coordinate]
  Defines boundary of region. Multiple X1 Y1 -> X2 Y2 blocks can be set for a single region.

  Spawn Region DFN Tags

  call=[amount]
  Max amount of objects to spawn in one batch during respawns

  instanceid=[instanceID]
  Set ID of instance of a world this spawnregion should be spawning objects in

  item=[itemSectionID]
  Set sectionID of item to spawn from Item DFNs

  itemlist=[itemListID]
  Set which itemlist from UOX3/dfndata/items/itemlists.dfn to randomly spawn an item from. Can be used instead of item tag

  maxitems=[amount]
  Total amount of items spawn region is allowed to spawn

  maxnpcs=[amount]
  Total amount of NPCs spawn region is allowed to spawn

  maxtime=[maxTime]
  Max time between respawns for this spawn region

  mintime=[minTime]
  Min time between respawns for this spawn region

  name=[text]
  Set name of the spawn region

  npc=[npcSectionID]
  Set sectionID of NPC to spawn from NPC DFNs

  npclist=[npcListID]
  Set which npclist from UOX3/dfndata/npc/npclists.dfn to randomly spawn an NPC from. Can be used instead of npc tag

  onlyoutside=[0/1]
  If set to 1, UOX3 will attempt to only spawn objects from this spawn region outside buildings

  prefz=[value]
  Set the maximum Z influence a dynamic or static item can have on spawning

  validlandpos=[x],[y],[z]
  Can be used to pre-define valid spawn locations on land for this spawn region. Useful in case it's an area with few valid spawn locations, to ensure the server can always find one

  validwaterpos=[x],[y],[z]
  Can be used to pre-define valid spawn locations on water for this spawn region. Useful in case it's an area with few valid spawn locations, to ensure the server can always find one

  world=[worldNumber]
  Set the world that this spawn region should be spawning objects in

  x1=[x coordinate]
  Upper left corner of coordinate set

  x2=[x coordinate]
  Lower right corner of coordinate set

  y1=[y coordinate]
  Upper left corner of coordinate set

  y2=[y coordinate]
  Lower right corner of coordinate set

  Weather System DFN Tags

  coldchance=[percentage]
  Chance for a cold day. If it passes, temperature will be fixed at a value between mintemp and coldintensity

  coldintensity=[temperature]
  ???

  heatchance=[percentage]
  Chance for a hot day. If it passes, temperature will be fixed at a value between maxtemp and heatintensity

  heatintensity=[temperature]
  ???

  lightmin=[lightLevel]
  Set minimum light level (0-20)

  lightmax=[lightLevel]
  Set maximum light level (0-20)

  maxtemp=[temperature]
  Set maximum temperature of the day. Can be affected by heat waves

  mintemp=[temperature]
  Set minimum temperature of the day. Can be affected by cold snaps.

  maxwind=[text]
  Set name of the spawn region

  minwind=[npcSectionID]
  Set sectionID of NPC to spawn from NPC DFNs

  rainchance=[npcListID]
  Set which npclist from UOX3/dfndata/npc/npclists.dfn to randomly spawn an NPC from. Can be used instead of npc tag

  rainintensity=[0/1]
  If set to 1, UOX3 will attempt to only spawn objects from this spawn region outside buildings

  raintempdrop=[value]
  Set the maximum Z influence a dynamic or static item can have on spawning

  snowchance=[x],[y],[z]
  Can be used to pre-define valid spawn locations on land for this spawn region. Useful in case it's an area with few valid spawn locations, to ensure the server can always find one

  snowintensity=[x],[y],[z]
  Can be used to pre-define valid spawn locations on water for this spawn region. Useful in case it's an area with few valid spawn locations, to ensure the server can always find one

  snowthreshold=[worldNumber]
  Set the world that this spawn region should be spawning objects in

  stormchance=[x coordinate]
  Upper left corner of coordinate set

  stormintensity=[x coordinate]
  Lower right corner of coordinate set

  stormtempdrop<=[y coordinate]
  Upper left corner of coordinate set

- DFN Priority System

  Say you, as a shard admin, want to customize some of the DFNs that come with UOX3, but you worry about those changes being overwritten when time comes to update the default UOX3 package with a newer version, or about going through conflict/merge hell trying to weave all your custom changes into a newer version of the scripts.

  Enter, the DFN Priority System, the purpose of which is to allow DFNs to be loaded in a specific order, allowing shard admins to potentially override the default script packages by ensuring their custom DFNs get loaded last, aka get priority treatment.

  ### How to Use the DFN Priority System

  In the root folder of the type of DFNs you wish to override, create a new file using your favourite text-editor, and name it "priority.nfo". For instance, if you wish to override parts of carve.dfn with the contents of a custom file named customcarve.dfn, place the priority.nfo file in the DFNDATA\CARVE\ folder, right alongside the carve.dfn and customcarve.dfn files.

  The contents of customcarve.dfn would in this case be a copy & paste of one of the entries from carve.dfn, but with some minor changes applied - carving an alligator gives 24 meat instead of 12:

  // alligator [CARVE 1]
  {
  ADDITEM=0x09f1
  ADDITEM=0xc002,24
  }

  Next, inside the priority.nfo file, copy paste the following default setup:

  [priority]
  {
  DEFAULTPRIORITY=0
  customcarve.dfn=1
  }

  The DEFAULTPRIORITY line determines the base priority level of all DFN files, which is normally left at zero. In this example, this would assign a default priority of 0 to carve.dfn, while next line would assign a priority of 1 to customcarve.dfn - ensuring that the contents of customcarve.dfn get priority over the default DFN file and is loaded last. Now, if there are any entries in these DFN files that conflict with each other, the copy in customcarve.dfn would take presedence, since it's loaded last!

  You can use this method to override any DFN file inside the DFNDATA folder.

- # Scripting - JavaScript Engine

- Introduction to JS Engine in UOX3

  UOX3's scripting engine is based on an embedded C++ implementation of JavaScript called SpiderMonkey (v1.7.0). It allows UOX3 to load, read and interpret JavaScript files containing JS events, methods, functions, objects and properties written specifically for UOX3 in order to expose the inner workings of the server to prospective shard admins and script writers.

  UOX3's JavaScripts can be reloaded dynamically without restarting the server, making it very easy to iterate on new features or modify existing ones.

  Example of a simple JavaScript in UOX3, used with the Dice and Cup object to allow players to roll a dice and have the number displayed for others to see:

      function onUseChecked( pUser, iUsed )
      {
      	// Generate two random numbers from 1-6
      	var iDice1 = RandomNumber( 1, 6 );
      	var iDice2 = RandomNumber( 1, 6 );

      	// Fetch the name of the player using the object
      	var pName = pUser.name;

      	// Display the result either as an emote above player (if object is in a container) or a message above item (if on ground)
      	if( iUsed.container != null )
      		pUser.EmoteMessage( pName+" rolls the dice and gets a "+iDice1+" and a "+iDice2+"." );
      	else
      		iUsed.TextMessage( pName+" rolls the dice and gets a "+iDice1+" and a "+iDice2+"." );
      	return false;
      }

- JS Engine Documentation

  The UOX3 JS documentation documents all the various events, triggers, methods, functions and properties available to script writers.

  UOX3 comes with SpiderMonkey v1.7.0, which offers an equivalent JavaScript feature set to JavaScript 1.7 or ECMAScript 5, though certain features (such as let, or browser-specific features) might not be fully supported.

  For additional help with or discussion around any of these, don't hesitate to make use of the UOX3.org forums or the UOX3 Discord chat!

- JSE File, Object and Type-associations

  In the UOX3/js/ folder, you can find three files that are used to map UOX3 JavaScript files to script IDs, and map item IDs or item Types to script IDs.

  jse_fileassociations.scp
  Through this file you can assign script IDs to JavaScripts for use either with objects, commands, spells, skills, network packets or the console. You'll need to assign your script a scriptID in here before you can assign it to an object or use it in either of the other two files mentioned below. Syntax: [scriptID]=[filepath and name]

  Script Sections in jse_fileassociations.scp

  SCRIPT_LIST
  General mapping of scripts to scriptIDs. Can be assigned to objects in-game, via DFNs, or via other scripts.

  COMMAND_SCRIPTS
  Mapping of scriptIDs to scripts containing command events and functions. Scripts are executed when using associated commands in-game.

  MAGIC_SCRIPTS
  Mapping of scriptIDs to scripts containing spell events and functions. Scripts are executed when casting associated spells in-game.

  SKILLUSE_SCRIPTS
  Mapping of scriptIDs to scripts containing skill events and functions. Scripts are executed when using associated skills in-game.

  PACKET_SCRIPTS
  Mapping of scriptIDs to scripts containing networking packet events and functions. Scripts are executed when associated network packets are received.

  CONSOLE_SCRIPTS
  Mapping of scriptIDs to scripts containing console events and functions. Scripts are executed when associated console actions/commands are used.

  jse_objectassociations.scp
  Items whose IDs have been mapped to scripts via this file will execute the OnUse() JS event in the associated script when the items are used (double-clicked) in-game. Syntax: [itemID]=[scriptID]

  jse_typeassociations.scp
  Instead of relying on item IDs or directly assigning scripts to items, you can also use this file to map the scripts to specific item types, which when used in-game will execute the onUse() JS event for the associated script. Syntax: [itemType]=[scriptID]

- # Resources and Links

- Community Links

  #### UOX3 @ GitHub

  GitHub is the current home for UOX3's sourcecode, and where to go to check up on the latest, cutting-edge developments for UOX3.

  #### UOX3 @ Discord

  For live chat, support and discussions with other UOX3 users and/or developers, head on over to the UOX3 Discord!

  #### UOX3.org

  Main community site for UOX3 can be found at UOX3.org. There you'll find downloads, support forums, useful tools and guides beyond what is covered by these docs.

  #### Xuri's UOX3 Guide

  Xuri's UOX3 Guide, while originally written for a different era of UOX3, still offers a myriad of tips, tricks and advice for shard admins and GMs, as well as lists of various data such as IDs, light-settings, etc. Recommended read for both novices and veterans.

  #### Legacy SourceForge Repositories

  Legacy, ready-only CVS repositories for older versions of UOX3 can be found at OpenUO @ SourceForge and UOX3 @ SourceForge.

- Third Party Tools

  #### Xuri's WorldBuilder

  Xuri's WorldBuilder is a GM Tool for UOX3 that allows GMs to easily create custom houses, add decorations and even plant entire forests. Mainly focusing on worldbuilding, it also functions as a traditional GM Tool, giving the user easy access to all the most used commands in UOX3.

  #### UO:R Community Edition of Razor

  Razor is both a necessary tool to remove encryption from the UO client, allowing you to actually connect to UOX3, as well as a tool that can provide many quality-of-life improvements over the regular old UO client.

  #### ClassicUO

  ClassicUO is a cross-platform (Windows, Linux, macOS), open source implementation of the Ultima Online Classic Client that runs faster, smoother and with more features and customizability than the original UO client.

  #### UOFiddler

  UOFiddler is the spiritual successor of InsideUO, though it has gone far beyond that by now. Tool that can be used to view and alter almost every file in the UO client.

  #### CentrED+

  CentrED+ is a Client/Server based map-editor, which gives the ability for several people to work on both terrain and statics together at the same time.

- Other UO Emulator Resources

  #### Ryandor.com

  Ryandor.com is the homepage of Ryandor, a true artist when it comes to map-making for UO. His forums are crawling with map-makers from all corners of the world, and if you have a question about map-editing that you cannot get an answer for on these forums - there is no answer ;)

  #### UO-Pixel

  Another nice (German) website focusing on providing custom artwork for UO shards. Amongst other things, it has some very nice animated item artwork (including a moving water-mill).

- # History and Credits

- UOX3 Changelog

  Click the changelog below to view the detailed update notes for the latest UOX3 version (and many, many versions before that). To stay up-to-date with developments outside of stable releases, check out the sticky topic in the UOX3.org forums titled Changelog for next UOX3 version. It is continuously updated with details of the latest commits to GitHub.

  UOX3 Changelog - Current
  Archived UOX3 Changelogs

  Updates from 0.95.00 to 0.97.00

  Updates from 0.70.03 to 0.70.03.24b

  Updates from 0.37 to 0.70.02

- History of UOX3

  ### UOX3 History Crash Course

  UOX was originally created by Denny Zuko aka Jaegermeister in 1997 for the pre-alpha version of Ultima Online, and was subsequently abandoned, rewritten from scratch by Marcus Rating aka Cironian and released in closed-source form as UOX2 the same year.

  UOX3 is, as the number in the name implies, the third iteration of UOX, and when released by Cironian in 1998 it become the first open-source UO server emulator. While he is no longer involved with the project, hundreds of other people have since contributed to updating and maintaining UOX3, and those efforts are still ongoing, with UOX3.org now acting as a central hub for ongoing development and support.

  Due to the open-source nature of UOX3, there have been numerous spin-off projects over the years, all with their own rich history. Most of these have gone dormant, but the "main UOX3 branch" has been around for nearly 22 years (as of 2020), and is here for the long run.

  ### UOX Version Timeline

  UOX2 Version Timeline
  UOX2 v0.85

  Release date: 24th of September 1997

  Released by: Cironian

  Fun Facts: Single player only!

  UOX2 v0.86

  Release date: 25th of September 1997

  Released by: Cironian

  UOX3 Version Timeline

  Bonus Fact: Work on UOX3 started on 24th of September 1997... the same day UO launched! 5 days later, on 29th of September, the first 2 player session was successfully tested.

  Alpha Versions (1997 - 1998)

  #### October 1997

  UOX3 v0.37 Alpha

  Release date: 22nd of October 1997

  Released by: Cironian

  Fun Fact: First multiplayer capable version of UOX released! It requires Windows 98 to run.

  UOX3 v0.38 Alpha

  Release date: 24th of October, 1997

  Released by: Cironian

  UOX3 v0.39 Alpha

  Release date: 25th of October, 1997

  Released by: Cironian

  Fun Facts: /KILL and /RESURRECT commands implemented!

  UOX3 v0.40 Alpha

  Release date: 31st of October, 1997

  Released by: Cironian

  Fun Facts: Special Halloween Edition! New characters automatically get one of 7 halloween masks. Support for UO Beta client dropped due to protocol changes.

  #### November 1997

  UOX3 v0.41 Alpha

  Release date: 1st of November, 1997

  Released by: Cironian

  UOX3 v0.42 Alpha

  Release date: 4th of November, 1997

  Released by: Cironian

  Fun Facts: Maximum number of players raised to 32!

  UOX3 v0.43 Alpha

  Release date: 17th of November, 1997

  Released by: Cironian

  Fun Facts: First introduction of corpses!

  UOX3 v0.44 Alpha

  Release date: 22nd of November, 1997

  Released by: Cironian

  UOX3 v0.45 Alpha

  Release date: 24th of November, 1997

  Released by: Cironian

  Fun Facts: Basic scripting support added!

  UOX3 v0.46 Alpha

  Release date: 26th of November, 1997

  Released by: Cironian

  Contributors: Drax

  UOX3 v0.47 Alpha

  Release date: 27th of November, 1997

  Released by: Cironian

  Fun Facts: Max players increased to 128! Max items raised to 4096! First NPC (Orc) added!

  UOX3 v0.48 Alpha

  Release date: 29th of November, 1997

  Released by: Cironian

  Fun Facts: First NPC reactions to player speech added!

  #### December 1997

  UOX3 v0.49 Alpha

  Release date: 1st of December, 1997

  Released by: Cironian

  UOX3 on hold, Possible deal with OSI

  On 3rd of December, 1997, work on UOX3 was temporarily put on hold to explore the possibility of UOX3 becoming an officially authorized add-on product for Ultima Online. Cironian would later resume work on it as no progress was made on such a deal.

  UOX3 v0.50 Alpha

  Release date: 24th of December, 1997

  Released by: Cironian

  Fun Facts: Garbage collection implemented! UOX3 icon added! First readable book added! First bunch of third party tools arrive on the scene in the shape of UOXSetup and MapMaker (later to evolve into WorldForge?)!

  #### January 1998

  UOX3 v0.51 Alpha

  Release date: 2nd of January, 1998

  Released by: Cironian

  UOX3 v0.52 Alpha

  Release date: 6th of January, 1998

  Released by: Cironian

  UOX3 v0.53 Alpha

  Release date: 10th of January, 1998

  Released by: Cironian

  UOX3 v0.54 Alpha

  Release date: 17th of January, 1998

  Released by: Cironian

  Fun Facts: Mounts added! Cironian hints about this being the last release of UOX3 as he wants to rewrite everything from scratch - again!

  #### February 1998

  UOX3 v0.55 Alpha

  Release date: 6th of February, 1999

  Released by: Cironian

  Fun Facts: Cironian loses source to his UOX4 rewrite in a harddrive crash, decides to scrap the idea and implement the same concepts in UOX3 instead.

  UOX3 v0.56 Alpha

  Release date: 10th of February, 1998

  Released by: Cironian

  Fun Facts: First parts of combat code goes in, but remains disabled.

  UOX3 v0.57 Alpha

  Release date: 11th of February, 1998

  Released by: Cironian

  UOX3 v0.58 Alpha

  Release date: 16th of February, 1998

  Released by: Cironian

  Fun Facts: Corpses can wear clothes. No more naked corpses!

  UOX3 v0.59 Alpha

  Release date: 18th of February, 1998

  Released by: Cironian

  UOX3 v0.60 Alpha

  Release date: 26th of February, 1998

  Released by: Cironian

  UOX3 is dead, Long live UOX4!

  On 3rd of March, 1998, Cironian announces that he's halting further development of UOX3 to work on UOX4 - again, and will now longer be providing any support for UOX3. However, by the start of the next month, another version of UOX3 is released!

  #### April 1998

  UOX3 v0.61 Alpha

  Release date: 1st of April, 1998

  Released by: Cironian

  UOX3 v0.62 Alpha

  Release date: 8th of April, 1998

  Released by: Cironian

  Fun Facts: Offline/LAN mode now supports up to 4 players! First Linux port available!

  UOX3 v0.63 Alpha

  Release date: 21st of April, 1998

  Released by: Cironian

  UOX3 v0.63a Alpha

  Release date: 22nd of April, 1998

  Released by: Cironian

  #### May - July 1998

  UOX3 v0.64 Alpha

  Release date: 3rd of May, 1998

  Released by: Cironian

  Fun Facts: First working doors! Can be locked.

  UOX3 v0.65 Alpha

  Release date: Unknown, 1998

  Released by: Cironian

  UOX3 v0.66 Alpha

  Release date: Unknown, 1998

  Released by: Cironian

  Fun Facts: First iteration of combat system enabled! License update.

  UOX3 v0.67 Alpha

  Release date: Unknown, 1998

  Released by: Cironian

  Fun Facts: First edible food appears! Item type 14. First code contributions by third parties included!

  UOX3 v0.67a Alpha

  Release date: Unknown, 1998

  Released by: Cironian

  0.67 Versions - 1998
  UOX3 v0.67a Original

  Release date: Unknown, 1998

  Released by: Cironian

  UOX3 v0.67c

  Release date: Unknown, 1998

  Released by: Morac

  Contributors: Jerrith the Healer, Anthtracks, TMB, Cray XMP1

  Fun Facts: First version release coordinated by someone other than Cironian! Teleporters, create food and NPC movement appears!

  UOX3 v0.67d

  Release date: Unknown, 1998

  Released by: Jerrith

  Fun Facts: NPCWander system introduced, as well as stamina cost for shoving characters!

  UOX3 v0.67e

  Release date: Unknown, 1998

  Released by: Anthracks

  UOX3 v0.67f

  Release date: Unknown, 1998

  Released by: Jerrith

  Contributors: Morac

  Fun Facts: Visibility modes added!

  UOX3 v0.67g

  Release date: Unknown, 1998

  Released by: Jerrith

  Fun Facts: Functional spellbooks!

  #### July 1998

  UOX3 v0.67h

  Release date: 10th of July, 1998

  Released by: Cironian

  UOX3 v0.67i

  Release date: 10th/11th of July, 1998

  Released by: Jerrith

  Contributors: Gitchigoomi, Monte Cristo, Okaria Dragon

  UOX3 v0.67j

  Release date: 11th of July, 1998

  Released by: Cironian

  Fun Facts: TWEAK command added!

  UOX3 v0.67k *UNRELEASED*

  Release date: July, 1998

  Released by: Morac

  Fun Facts: Due to bugs and inefficient code, 0.67k went unreleased. Parts of it was fixed and merged into 0.67l.

  UOX3 v0.67l

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Zarn, Crimson Guard

  UOX3 v0.67m

  Release date: July, 1998

  Released by: Morac

  UOX3 v0.67n

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Drylock, Ash, Okaria Dragon

  UOX3 v0.67o

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Ash, Drylock, Gitchigoomi, El_Barto

  UOX3 v0.67p

  Release date: July, 1998

  Released by: Morac

  Contributors: Ash, Rhuarc, Gitchigoomi

  Fun Facts: First town regions!

  UOX3 v0.67q

  Release date: July, 1998

  Released by: RofGilead

  Contributors: Ash

  Fun Facts: Day & Night cycle added, and Lumberjacking!

  UOX3 v0.67r

  Release date: July, 1998

  Released by: Morac

  Contributors: Rhuarc, zarn

  Fun Facts: NPCs can flee in combat!

  UOX3 v0.67r+

  Release date: July, 1998

  Released by: Morac

  Contributors: El_Barto, TMB, Ash

  Fun Facts: Characters will now become hungry!

  UOX3 v0.67s

  Release date: July, 1998

  Released by: Jerrith

  Contributors: El_Barto, Okaria Dragon

  UOX3 v0.67t

  Release date: July, 1998

  Released by: Jerrith

  Fun Facts: Light sources can have different light settings!

  UOX3 v0.67u

  Release date: July, 1998

  Released by: Morac

  UOX3 v0.67v

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Ash

  UOX3 v0.67w

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Ash, Morac, Maytrix

  Fun Facts: Time system now keeps track of the two moons, Felucca and Trammel! Object limit raised to 8192.

  UOX3 v0.67w+

  Release date: July, 1998

  Released by: Morac

  UOX3 v0.67x

  Release date: July, 1998

  Released by: Jerrith

  Contributors: Morac, Pug, Fearicon

  Fun Facts: 41/64 spells working! Basic NPC AIs added - healer, monster and guard!

  UOX3 v0.67x+

  Release date: 26th of July, 1998

  Released by: Jerrith

  Contributors: Pug

  UOX3 v0.67y

  Release date: July, 1998

  Released by: Tal Strake

  Fun Facts: Heartbeat added! Let's third party tools detect server if server is up or not.

  UOX3 v0.67y+

  Release date: 30. July 1998

  Released by: Morac

  Fun Facts: Fixed bugs introduced in 0.67x++ (yes, ++)!

  #### August, 1998

  UOX3 v0.67.026

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Ashran, Beosil

  Fun Facts: Banker NPCs added! And death animations.

  UOX3 v0.67.027

  Release date: August, 1998

  Released by: Tal Strake

  UOX3 v0.67.028

  Release date: August, 1998

  Released by: Jerrith

  Fun Facts: Introduction of magic potions and alchemy skill! Basic combat highlighting of innocents (blue) and monsters (red).

  UOX3 v0.67.029

  Release date: August, 1998

  Released by: Krozy

  Fun Facts: NPCLISTs, RANDOMNAMEs and LOOTLISTs make their appearance!

  UOX3 v0.67.030

  Release date: August, 1998

  Released by: Jerrith

  Fun Facts: BACKPACK and PACKITEM tags added for NPCs!

  UOX3 v0.67.031

  Release date: August, 1998

  Released by: Anthracks

  UOX3 v0.67.032

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Zarn, Krozy

  Fun Facts: First NPC shopkeepers!

  UOX3 v0.67.033

  Release date: August, 1998

  Released by: Ashran

  UOX3 v0.67.034

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Drylock, Krozy, Morac, Maytrix

  UOX3 v0.67.035

  Release date: August, 1998

  Released by: Jerrith

  UOX3 v0.67.036

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Krozy, Morac

  UOX3 v0.67.37

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Morac, Krozy, El_Barto

  Fun Facts: Monster sounds!

  UOX3 v0.67.38

  Release date: August, 1998

  Released by: Jerrith

  UOX3 v0.67.39

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Morac

  Fun Facts: Command to play music added!

  UOX3 v0.67.40

  Release date: August, 1998

  Released by: Anthracks

  Contributors: Jerrith

  Fun Facts: Players can be jailed! Secure trading added!

  UOX3 v0.67.41

  Release date: August, 1998

  Released by: Maytrix

  Fun Facts: Wipe command added!

  UOX3 v0.67.42

  Release date: August, 1998

  Released by: Jerrith

  Fun Facts: In-game region system added!

  UOX3 v0.67.43

  Release date: August, 1998

  Released by: Jerrith

  Contributors: Krozy, Anthracks

  Fun Facts: Scriptable skill and stat advancement added!

  UOX3 v0.67.44

  Release date: August, 1998

  Released by: Morac

  Fun Facts: NPCs can open doors! And collide with stuff.

  UOX3 v0.67.45

  Release date: August, 1998

  Released by: Anthracks

  Contributors: SirGonad, Jerrith

  Fun Facts: Healing/Veterinary implemented!

  UOX3 v0.67.45a

  Release date: August, 1998

  Released by: Morac

  Contributors: Milan Rabaa

  UOX3 v0.67.45b

  Release date: August, 1998

  Released by: Sir Joseph

  Contributors: Anthracks

  0.68 Versions - 1998

  #### August, 1998

  UOX3 v0.68

  Release date: ~17 August, 1998

  Released by: Cironian

  Contributors: Beosil

  Fun Facts: Item limit increased from 4096 to 16384!

  UOX3 v0.68.001

  Release date: ???, 1998

  Released by: Morac

  UOX3 v0.68.002

  Release date: ???, 1998

  Released by: Sir Joseph

  Contributors: Krozy

  UOX3 v0.68.003

  Release date: ???, 1998

  Released by: Sir Joseph

  Contributors: Morac

  Fun Facts: Combat with viking swords now has sound!

  UOX3 v0.68.004

  Release date: ???, 1998

  Released by: Anthracks

  Contributors: Morac, Jerrith, Halin Talismoon

  UOX3 v0.68.005

  Release date: ???, 1998

  Released by: Maytrix

  UOX3 v0.68.006

  Release date: ???, 1998

  Released by: Tal Strake

  UOX3 v0.68.007

  Release date: ???, 1998

  Released by: Maytrix

  UOX3 v0.68.008

  Release date: ???, 1998

  Released by: Maytrix

  Contributors: Morac

  UOX3 v0.68.009

  Release date: ???, 1998

  Released by: Maytrix

  Fun Facts: Container spawners and ITEMLISTS implemented!

  UOX3 v0.68.010

  Release date: 24 August, 1998

  Released by: Cironian

  Fun Facts: No range checks for GMs!

  UOX3 v0.68.011

  Release date: ???, 1998

  Released by: Polaris

  Contributors: Tal Strake

  UOX3 v0.68.012

  Release date: ???, 1998

  Released by: Kathrrak & Tal Strake

  UOX3 v0.68.013

  Release date: ???, 1998

  Released by: SirGonads

  Fun Facts: Reloading of server settings while server is running! Tracking, Begging and Animal Lore skills added!

  UOX3 v0.68.014

  Release date: ???, 1998

  Released by: Tal Strake & Kathrrack

  UOX3 v0.68.015

  Release date: ???, 1998

  Released by: TANiS

  UOX3 v0.68.016

  Release date: ???, 1998

  Released by: TANiS

  UOX3 v0.68.017

  Release date: ???, 1998

  Released by: Krazy, Jim, Polaris

  Fun Facts: Townstones introduced!

  UOX3 v0.68.018

  Release date: ???, 1998

  Released by: Morac

  Contributors: Brad, Kathrrak, Jack, Friend

  UOX3 v0.68.019

  Release date: ???, 1998

  Released by: Morac

  Contributors: Drylock

  UOX3 v0.68.019a

  Release date: ???, 1998

  Released by: Sir Joseph

  Contributors: Krozy, Morac

  UOX3 v0.68.020 (Failed release)

  Release date: ???, 1998

  Released by: Morac

  UOX3 v0.68.021

  Release date: ???, 1998

  Released by: Morac

  Contributors: Drylock, Beosil

  Fun Facts: Divide by zero in combat fixed!

  UOX3 v0.68.022

  Release date: ???, 1998

  Released by: Sir Joseph

  Contributors: Tal Strake

  Fun Facts: First combat with bows and arrows implemented!

  UOX3 v0.68.023

  Release date: ???, 1998

  Released by: Polaris, Tal Strake

  Contributors: Morac, Friend

  Fun Facts: House deeds!

  UOX3 v0.68.024

  Release date: ???, 1998

  Released by: Tal Strake

  UOX3 v0.68.025.001

  Release date: ???, 1998

  Released by: The UOX Development Team

  Fun Facts: More stable codebase!

  UOX3 v0.68.025.002

  Release date: ???, 1998

  Released by: Cironian & Ridcully

  UOX3 v0.68.025.003

  Release date: ???, 1998

  Released by: CVS system version

  Contributors: Drylock, Anthracks, Ridcully, Maytrix

  Fun Facts: First use of CVS!

  UOX3 v0.68.025.004 (Unreleased)

  Release date: ???, 1998

  Released by: Maytrix

  UOX3 v0.68.025.005

  Release date: ???, 1998

  Released by: Vagrant

  Contributors: Maytrix

  Fun Facts: Lockpicking added!

  UOX3 v0.68.025.006

  Release date: ???, 1998

  Released by: McCleod

  Fun Facts: Newbie Items!

  UOX3 v0.68.025.007

  Release date: ???, 1998

  Released by: Hunter

  UOX3 v0.68.025.008

  Release date: ???, 1998

  Released by: Friend (Brother Kane)

  Fun Facts: Tailoring!

  UOX3 v0.68.025.008b

  Release date: ???, 1998

  Released by: Friend (Brother Kane)

  UOX3 v0.68.025.009

  Release date: ???, 1998

  Released by: McCleod

  UOX3 v0.68.025.010

  Release date: ???, 1998

  Released by: Tao

  Contributors: DasRaetsel

  Fun Facts: Sphere of influence introduced to help server performance!

  UOX3 v0.68.025.011

  Release date: ???, 1998

  Released by: Bud

  UOX3 v0.68.025.012

  Release date: ???, 1998

  Released by: Tao

  UOX3 v0.68.025.012a

  Release date: ???, 1998

  Released by: SpaceDog

  UOX3 v0.68.025.013

  Release date: ???, 1998

  Released by: Bud

  Contributors: Tao, SpaceDog

  Fun Facts:

  UOX3 v0.68.025.014

  Release date: ???, 1998

  Released by: TANiS

  Fun Facts: Teleporting guards added!

  UOX3 v0.68.025.014a

  Release date: ???, 1998

  Released by: TANiS

  UOX3 v0.68.025.015

  Release date: ???, 1998

  Released by: TANiS

  Contributors: Bud

  Fun Facts: Performance profiling added to console!

  #### September, 1998

  UOX3 v0.68.025.016

  Release date: ~September, 1998

  Released by: Friend (Brother Kane)

  Fun Facts: Cannons!

  UOX3 v0.68.025.016a

  Release date: ~September, 1998

  Released by: TANiS

  UOX3 v0.68.025.017

  Release date: ~September, 1998

  Released by: Vagrant

  UOX3 v0.68.025.018

  Release date: 26 September, 1998

  Released by: Sir Joseph

  Contributors: SpaceDog, Vagrant, Anthracks, Friend

  Fun Facts: Advancement Objects! Poison attacks!

  #### October, 1998

  UOX3 v0.68.025.019

  Release date: 3 October, 1998

  Released by: Sir Joseph

  Contributors: Bud, SpaceDog, Vagrant, Anthracks

  Fun Facts: Mining regions within other regions!

  UOX3 v0.68.025.020

  Release date: 3 October, 1998

  Released by: Tauriel

  UOX3 v0.68.025.020a

  Release date: 4 October, 1998

  Released by: Tauriel

  Contributors: Dupois, TANiS, CyberCrusher

  UOX3 v0.68.025.021

  Release date: ~4-11 October, 1998

  Released by: Cironian

  UOX3 v0.68.025.022

  Release date: ~4-11 October, 1998

  Released by: TANiS

  Fun Facts: Monsters can attack animals!

  UOX3 v0.68.025.023

  Release date: ~4-11 October, 1998

  Released by: Moongraven

  UOX3 v0.68.025.024

  Release date: 11 October, 1998

  Released by: Sir Joseph

  Contributors: Gerry, Dupois, Vagrant, Anthracks, Jim Wright

  Fun Facts: Scriptable global teleport locations

  UOX3 v0.68.025.025

  Release date: 11 October, 1998

  Released by: Cironian

  Fun Facts: INVUL and NOINVUL commands!

  UOX3 v0.68.025.026

  Release date: 11 October, 1998

  Released by: Gerry & Sir Joseph

  Contributors: Gerry, SpaceDog, Anthracks, Bud, Ash, Dupois, Sir Joseph and Lord Slayer

  Fun Facts: Training Dummies added!

  UOX3 v0.68.025.027

  Release date: 26 October, 1998

  Released by: Gerry

  Contributors: Sir Joseph, Friend, SpaceDog, Bud, Vagrant, Moongraven, Max Wulf, Dupois, Lord Slayer, Tauriel, Anthracks, Zadius

  Fun Facts: Weight system appears!

  #### November, 1998

  UOX3 v0.68.025.027a

  Release date: 5 November, 1998

  Released by: Genesis

  Fun Facts: Gravedigging!

  UOX3 v0.68.025.027b

  Release date: 6 November, 1998

  Released by: Genesis

  UOX3 v0.68.025.028

  Release date: 7 November, 1998

  Released by: Gerry

  Contributors: Gerry, Tauriel, SpaceDog, Myca, Bud, Armageddon, Cironian, Dupois

  Fun Facts: Monster gates! Worldsave backups!

  UOX3 v0.68.025.028b

  Release date: 8 November, 1998

  Released by: Genesis

  UOX3 v0.68.025.028c

  Release date: 8 November, 1998

  Released by: Tauriel

  Contributors: Anthracks

  UOX3 v0.68.026.00

  Release date: 9 November, 1998

  Released by: Cironian

  UOX3 v0.68.026.01

  Release date: 10 November, 1998

  Released by: Cironian

  Contributors: Bud

  Fun Facts: Tents! Accounts stored separately outside UOX3.INI!

  UOX3 v0.68.026.02

  Release date: 10 November, 1998

  Released by: Bud

  Contributors: McCleod, Tauriel, SpaceDog

  UOX3 v0.68.026.03

  Release date: 13 November, 1998

  Released by: Genesis

  Contributors: Bud

  UOX3 v0.68.026.03a

  Release date: 13 November, 1998

  Released by: Nattsorgh

  Contributors: Bud, Okaria Dragon

  UOX3 v0.68.026.03b

  Release date: 13 November, 1998

  Released by: redbaron

  Contributors: Bud

  UOX3 v0.68.026.03c

  Release date: 13 November, 1998

  Released by: Genesis

  Contributors: Thunderstorm, Myth

  UOX3 v0.68.026.03d

  Release date: 14 November, 1998

  Released by: Genesis

  UOX3 v0.68.026.03e

  Release date: 16 November, 1998

  Released by: Nattsorgh

  Contributors: Genesis, Thunderstorm

  UOX3 v0.68.026.05

  Release date: 17 November, 1998

  Released by: Genesis

  Contributors: SpaceDog, Thunderstorm, Genesis/Myth, Ripper, Zadius, McCleod, Thunderstorm

  UOX3 v0.68.026.06

  Release date: 30 November, 1998

  Released by: Tauriel

  Contributors: Myth, Moongraven, Thunderstorm, Anthracks, Zadius

  Fun Facts: Trigger system added!

  UOX3 v0.68.026.06a

  Release date: 30 November, 1998

  Released by: Tauriel

  Contributors: Zadius

  UOX3 v0.68.026.06b

  Release date: 30 November, 1998

  Released by: Tauriel

  UOX3 v0.68.026.06c

  Release date: 30 November, 1998

  Released by: Tauriel

  Contributors: Beosil

  UOX3 v0.68.026.07

  Release date: ~November-December, 1998

  Released by: ???

  Contributors: Zadius, Zippy, Drax, Tauriel, Ray, Moongraven

  Fun Facts: WF compatible item type! Ray's triggers!

  0.69 Versions (1998 - 1999)
  UOX3 v0.69.00

  Release date: ~November-December, 1998

  Released by: Tauriel and the UOX Dev Team

  Contributors: Ripper, EviLDeD,

  Fun Facts: Color coded messages! Binary saves!

  UOX3 v0.69.01

  Release date: ~November-December, 1998

  Released by: Tauriel and the UOX Dev Team

  Contributors: Ripper, Pellinore Dragon

  Fun Facts: Speed improvements! Tile command!

  UOX3 v0.69.02

  Release date: ~November-December, 1998

  Released by: Tauriel and the UOX Dev Team

  Contributors: Homey, Crwth, McCleod, Phantom, Wolfgang, Zippy

  Fun Facts: Line of Sight added!

  UOX3 v0.69.03

  Release date: 16 April, 1999

  Released by: Tauriel

  Contributors: Dupois, Revana, EviLDeD

  UOX3 v0.69.03 - v0.69.04.04t

  Release date: 29 October, 1999

  Released by: ????

  Contributors: fur, Abaddon, Krazyglue, JustMichael, Kashyyyk, Zippy, Tseramed, Ripper, Revana

  Fun Facts: Weather System! Player Races! Running NPCs

  UOX3 v0.69.04.05t

  Release date: 9 November, 1999

  Released by: Freelancers?

  Contributors: fur, Abaddon

  0.70 Versions (1999 - 2001)

  #### November, 1999

  UOX3 v0.70.01.01

  Release date: 15 November, 1999

  Released by: Freelancers?

  Contributors: LB

  #### January, 2000

  UOX3 v0.70.01.02 to v0.70.01.06t

  Release date: 10 December, 1999

  Released by: UOX Dev Team/Freelancers

  Contributors: Abaddon, fur, Zippy, Eagle, Krazyglue, Homey, Quippl, Eagle, Mithos, LB, JustMichael, Tseramed, Kashyyyk, Daemar, Mike,

  Fun Facts: Murder counts! Item lockdowns! Fireworks wands! Scriptable command privileges!

  UOX3 v0.70.01.07t

  Release date: ~16 January, 2000

  Released by: UOX Dev Team/Freelancers

  Contributors: Abaddon, fur, Zippy, Eagle, Krazyglue, Homey, Quippl, Eagle, Mithos, LB, JustMichael, Tseramed, Kashyyyk, Daemar, Mike,

  Fun Facts: Murder counts! Item lockdowns! Fireworks wands! Scriptable command privileges!

  UOX3 v0.70.02

  Release date: 19 January, 2000

  Released by: UOX Dev Team/Freelancers

  Contributors: Dupois, Zippy, Abaddon, AntiChrist, JustMichael, Magius

  Fun Facts: Moongates! Escort quests!

  UOX3 v0.70.02t+

  Release date: 4 February, 2000

  Released by: UOX Dev Team/Freelancers

  #### March, 2000

  UOX3 v0.70.02.x to v0.70.03.15g

  Release date: 8 March, 2000

  Released by: UOX Dev Team/Freelancers

  Contributors: Abaddon, EviLDeD, Homey, Ripper, Zippy, Eagle, punt, Westy, AntiChrist, JustMichael, Xuri, Dupois, Magius

  Fun Facts: Boat improvements! Context-sensitive footstep sounds! Many many fixes!

  #### May, 2000

  UOX3 v0.70.03.16 to v0.70.03.18

  Release date: 29 May, 2000

  Released by: UOX Dev Team

  Contributors: Abaddon

  Fun Facts: Scriptable Port!

  UOX3 v0.70.03.18a

  Release date: 30 May, 2000

  Released by: UOX Dev Team

  #### June, 2000

  UOX3 v0.70.03.18b

  Release date: 15 June, 2000

  Released by: UOX Dev Team

  #### August, 2000

  UOX3 v0.70.03.18c

  Release date: 1 August, 2000

  Released by: UOX Dev Team

  UOX3 v0.70.03.19

  Release date: 22 August, 2000

  Released by: UOX Dev Team

  Contributors: Gunther

  #### September, 2000

  UOX3 v0.70.03.19a

  Release date: 11 September, 2000

  Released by: UOX Dev Team

  Contributors: Gunther, Thyme

  UOX3 v0.70.03.19b

  Release date: 25 September, 2000

  Released by: UOX Dev Team

  Contributors: Thyme, Chaos, Gunther, Knoxos, WIG

  #### October, 2000

  UOX3 v0.70.03.19c

  Release date: 9 October, 2000

  Released by: UOX Dev Team

  Contributors: Dodger, Knoxos, Zippy, Thyme

  Fun Facts: Binary based spellbook spell storage!

  UOX3 v0.70.03.20

  Release date: 24 October, 2000

  Released by: UOX Dev Team

  Contributors: Thaliq, Gunther, Chaos, Abaddon

  UOX3 v0.70.03.20a

  Release date: 25 October, 2000

  Released by: UOX Dev Team

  Contributors: Knoxos

  #### November, 2000

  UOX3 v0.70.03.20e TR1

  Release date: 22 November, 2000

  Released by: UOX Dev Team

  Fun Facts: Customizable delay for Explosion spell! Characters can fall forward AND backward when dying!

  UOX3 v0.70.03.20e TR2

  Release date: 23 November, 2000

  Released by: UOX Dev Team

  #### December, 2000

  UOX3 v0.70.03.20f

  Release date: 6 December, 2000

  Released by: UOX Dev Team

  Contributors: KKung, Xuri

  UOX3 v0.70.03.20g

  Release date: 20 December, 2000

  Released by: UOX Dev Team

  Fun Facts: CLUOX support added!

  #### January, 2001

  UOX3 v0.70.03.21

  Release date: 17 January, 2001

  Released by: UOX Dev Team

  Contributors: Xuri, Retalin, Jedda, Tom2, Correa, Knox

  UOX3 v0.70.03.21a

  Release date: 31 January, 2001

  Released by: UOX Dev Team

  Contributors: Raftina, Jedda, Chaos, Thyme

  #### February, 2001

  UOX3 v0.70.03.21b

  Release date: 1 February, 2001

  Released by: UOX Dev Team

  UOX3 v0.70.03.21c

  Release date: 5 February, 2001

  Released by: UOX Dev Team

  Contributors: punt

  UOX3 v0.70.03.21c2

  Release date: 6 February, 2001

  Released by: UOX Dev Team

  Contributors: knox

  UOX3 v0.70.03.21d

  Release date: 16 February, 2001

  Released by: UOX Dev Team

  Contributors: Thunderstorm.

  UOX3 v0.70.03.22

  Release date: 28 February, 2001

  Released by: UOX Dev Team

  Fun Facts: Players can no longer beg from offline players!

  UOX3 v0.70.03.23

  Release date: 21 March, 2001

  Released by: UOX Dev Team

  UOX3 v0.70.03.24

  Release date: 9 April, 2001

  Released by: UOX Dev Team

  Fun Facts: Karma and Fame gain/loss for NPCs! Evil mongbats?

  UOX3 v0.70.03.24a

  Release date: 10 April, 2001

  Released by: UOX Dev Team

  Fun Facts: Recursive races!

  UOX3 v0.70.03.24b

  Release date: 15 April, 2001

  Released by: UOX Dev Team

  Fun Facts: NOHAIR race tag added, to ensure bald player monsters!

  0.95 Versions (2001 - 2002)

  #### June, 2001

  UOX3 v0.95.00 Build 1

  Release date: 3 June, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.00 Build 2

  Release date: ~3-11 June, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.00 Build 3

  Release date: ~3-11 June, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.01

  Release date: ~3-11 June, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.02 Build 1

  Release date: 11 June, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.03 Build 1

  Release date: 30 June, 2001

  Released by: UOX3 Dev Team

  #### August, 2001

  UOX3 v0.95.03 Build 2

  Release date: 7 August, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.04 Build 0

  Release date: 20 August, 2001

  Released by: UOX3 Dev Team

  #### September, 2001

  UOX3 v0.95.04 Build 1

  Release date: 14 September, 2001

  Released by: UOX3 Dev Team

  UOX3 v0.95.04 Build 2

  Release date: 19 September, 2001

  Released by: UOX3 Dev Team

  #### November, 2001

  UOX3 v0.95.07 Build 0

  Release date: 7 November, 2001

  Released by: UOX3 Dev Team

  #### January, 2002

  UOX3 v0.95.10 Build 0

  Release date: 8 January, 2002

  Released by: UOX3 Dev Team

  UOX3 v0.95.11 Build 0

  Release date: 9 January, 2002

  Released by: UOX3 Dev Team

  0.96 Versions - 2002

  #### January, 2002

  UOX3 v0.96.00 Build 0

  Release date: 22 January, 2002

  Released by: UOX3 Dev Team

  UOX3 v0.96.01 Build 0

  Release date: 4 February, 2002

  Released by: UOX3 Dev Team

  0.97 Versions (2002 - 2004)

  #### April, 2002

  UOX3 v0.97.0

  Release date: 26 April, 2002

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### October, 2002

  UOX3 v0.97.1

  Release date: ~6 October, 2002

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### December, 2002

  UOX3 v0.97.01.16a

  Release date: 18 December, 2002

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### March, 2003

  UOX3 v0.97.03.1

  Release date: 7 March, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.03.1f

  Release date: 11 March, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.03.1h

  Release date: 15 March, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.04.1a

  Release date: 23 March, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### May, 2003

  UOX3 v0.97.05.1b

  Release date: 4 May, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.05.3a

  Release date: 10 May, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.05.3e

  Release date: 14 May, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### June, 2003

  UOX3 v0.97.06.1c

  Release date: 18 June, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.1e

  Release date: 29 June, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.1f

  Release date: 30 June, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### July, 2003

  UOX3 v0.97.06.1i

  Release date: 27 July, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### August, 2003

  UOX3 v0.97.06.1j

  Release date: 1 August, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.1j(b)

  Release date: 2 August, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.1l

  Release date: 8 August, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.1m

  Release date: 14 August, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### September, 2003

  UOX3 v0.97.06.3d

  Release date: 7 September, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.5f

  Release date: 14 September, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.8g

  Release date: 19 September, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  UOX3 v0.97.06.9r

  Release date: 28 September, 2003

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  #### March, 2004

  UOX3 v0.97.06.9u

  Release date: 23 March, 2004

  Released by: EviLDeD

  Contributors: UOX3 Dev Team

  0.98 Versions (2004 - 2009)

  #### December, 2004

  UOX3 v0.98-2.5a

  Release date: 30 December, 2004

  Released by: EviLDeD

  Contributors: giwo, Xuri, che, Maarc

  Fun Facts: Support for new door types! Many GM commands move to JS!

  UOX3 v0.98-2.5b

  Release date: 31 December, 2004

  Released by: EviLDeD

  #### January, 2005

  UOX3 v0.98-2.5d

  Release date: 1 January, 2005

  Released by: EviLDeD

  Contributors: giwo

  UOX3 v0.98-2.6f

  Release date: 30 January, 2005

  Released by: EviLDeD

  Contributors: giwo, Maarc, Rynet

  #### February, 2005

  UOX3 v0.98-2.7

  Release date: 7 February, 2005

  Released by: giwo

  Contributors: Maarc

  UOX3 v0.98-2.7a

  Release date: 8 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.7b

  Release date: 10 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.7c

  Release date: 18 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.7d

  Release date: 18 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.8

  Release date: 26 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.8a

  Release date: 27 February, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.8b

  Release date: 28 February, 2005

  Released by: UOX3 Dev Team

  #### March, 2005

  UOX3 v0.98-2.8c

  Release date: 5 March, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.8d

  Release date: 11 March, 2005

  Released by: UOX3 Dev Team

  #### April, 2005

  UOX3 v0.98-2.8e

  Release date: 2 April, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-2.8f

  Release date: 14 April, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  UOX3 v0.98-2.8g

  Release date: 16 April, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  UOX3 v0.98-2.8h

  Release date: 22 April, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  #### June, 2005

  UOX3 v0.98-3.0

  Release date: 12 June, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Xuri, ShadowBranch

  UOX3 v0.98-3.0a

  Release date: 15 June, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  UOX3 v0.98-3.0b

  Release date: 16 June, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri, ShadowBranch

  #### July, 2005

  UOX3 v0.98-3.0c

  Release date: 14 July, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, ShadowBranch

  UOX3 v0.98-3.0d

  Release date: 16 July, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo

  #### August, 2005

  UOX3 v0.98-3.0e

  Release date: 4 August, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Maarc, Grimson, Xuri, Sydius

  UOX3 v0.98-3.0f

  Release date: 7 August, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, punt

  UOX3 v0.98-3.0g

  Release date: 13 August, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  #### September, 2005

  UOX3 v0.98-3.0h

  Release date: 13 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0i

  Release date: 13 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0j

  Release date: 20 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0k

  Release date: 23 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0l

  Release date: 27 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0m

  Release date: 27 September, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0n

  Release date: 29 September, 2005

  Released by: UOX3 Dev Team

  #### October, 2005

  UOX3 v0.98-3.0o

  Release date: 5 October, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0p

  Release date: 15 October, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.0q

  Release date: 17 October, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1

  Release date: 22 October, 2005

  Released by: UOX3 Dev Team

  Contributors: giwo, Maarc, Xuri

  Fun Facts: Improved map support! World save optimizations! 5.0.x clients supported!

  #### November, 2005

  UOX3 v0.98-3.1a

  Release date: 1 November, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1b

  Release date:31 November, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1c

  Release date: 5 November, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1d

  Release date: 20 November, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1e

  Release date: 23 November, 2005

  Released by: UOX3 Dev Team

  #### December, 2005

  UOX3 v0.98-3.1f

  Release date: 13 December, 2005

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1g

  Release date: 16 December, 2005

  Released by: UOX3 Dev Team

  #### January, 2006

  UOX3 v0.98-3.1h

  Release date: 28 January, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.1i

  Release date: 28 January, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.2

  Release date: 29 January, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri, Maarc, Grimson, longshot

  Fun Facts: Elven characters! LoS checks in JS engine!

  UOX3 v0.98-3.2a

  Release date: 29 January, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.2b

  Release date: 30 January, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.2c

  Release date: 31 January, 2006

  Released by: UOX3 Dev Team

  #### February, 2006

  UOX3 v0.98-3.2d

  Release date: 1 February, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.2e

  Release date: 2 February, 2006

  Released by: UOX3 Dev Team

  UOX3 v0.98-3.3

  Release date: 12 February, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Maarc, Xuri, Grimson

  UOX3 v0.98-3.4

  Release date: 20 February, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Maarc, Xuri

  #### March, 2006

  UOX3 v0.98-3.5

  Release date: 8 March, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Maarc, Xuri

  #### April, 2006

  UOX3 v0.98-3.6

  Release date: 5 April, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Maarc, Xuri

  UOX3 v0.98-3.6b

  Release date: 7 April, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson

  #### July, 2006

  UOX3 v0.98-3.7

  Release date: 8 July, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Xuri

  UOX3 v0.98-3.7a (CVS only)

  Release date: 9 July, 2006

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7b (CVS only)

  Release date: 10 July, 2006

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7c (CVS only)

  Release date: 15 July, 2006

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7d (CVS only)

  Release date: 18 July, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7e (Experimental Build)

  Release date: 24 July, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  #### August, 2006

  UOX3 v0.98-3.7f (CVS Only)

  Release date: 11 August, 2006

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7g (CVS only)

  Release date: 12 August, 2006

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  #### January, 2007

  UOX3 v0.98-3.7i (CVS only)

  Release date: 25 January, 2007

  Released by: UOX3 Dev Team

  Contributors: Grimson, Maarc, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7j (CVS only)

  Release date: 25 January, 2007

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7k (CVS only)

  Release date: 28 January, 2007

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  #### March, 2007

  UOX3 v0.98-3.7l (CVS only)

  Release date: 3 March, 2007

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson

  Fun Facts: Included in v0.98-4.0 release!

  #### April, 2007

  UOX3 v0.98-3.7m (CVS only)

  Release date: 9 April, 2007

  Released by: Grimson

  Fun Facts: Included in v0.98-4.0 release!

  #### May, 2007

  UOX3 v0.98-3.7n (CVS only)

  Release date: 25 May, 2007

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri, Grimson

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7o (CVS only)

  Release date: 26 May, 2007

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  #### June, 2007

  UOX3 v0.98-3.7p (CVS only)

  Release date: 12 June, 2007

  Released by: UOX3 Dev Team

  Contributors: giwo, Grimson, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  #### July, 2007

  UOX3 v0.98-3.7q (Experimental Build)

  Release date: 23 July, 2007

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  #### June, 2008

  UOX3 v0.98-3.7r (Experimental Build)

  Release date: 20 June, 2008

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri, Grimson

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7s (CVS only)

  Release date: 21 June, 2008

  Released by: giwo

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-3.7t (CVS only)

  Release date: 22 June, 2008

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri

  Fun Facts: Included in v0.98-4.0 release!

  #### November, 2008

  UOX3 v0.98-3.7u (Experimental Build)

  Release date: 12 November, 2008

  Released by: Maarc

  Fun Facts: Experimental OBDC database support! Included in v0.98-4.0 release!

  #### January, 2009

  UOX3 v0.98-3.7v (CVS only)

  Release date: 16 January, 2009

  Released by: UOX3 Dev Team

  Contributors: giwo, Xuri, Maarc

  Fun Facts: Included in v0.98-4.0 release!

  UOX3 v0.98-4.0

  Release date: 17 January, 2009

  Released by: UOX3 Dev Team

  Contributors: Grimson, Xuri, giwo, Maarc, Cavalier, supermoleet

  Fun Facts: First iteration of Parties! Customizable Client/Server Features! Movement speed per NPC!

  UOX3 v0.98-4.0a (CVS only)

  Release date: 18 January, 2009

  Released by: giwo

  Fun Facts: Included in v0.99 release!

  UOX3 v0.98-4.0b (CVS only)

  Release date: 19 January, 2009

  Released by: giwo

  Fun Facts: Included in v0.99 release!

  #### March, 2009

  UOX3 v0.98-4.0c (CVS only)

  Release date: 22 March, 2009

  Released by: UOX3 Dev Team

  Contributors: Xuri, Ghostwolf

  Fun Facts: Included in v0.99 release!

  #### January, 2010

  UOX3 v0.98-4.0d (CVS only)

  Release date: 28 January, 2010

  Released by: UOX3 Dev Team

  Contributors: Xuri, Shudderz, Ghostwolf, dragon slayer, Jediman

  Fun Facts: Included in v0.99 release!

  UOX3 v0.98-4.0e (Experimental Build)

  Release date: 31 January, 2010

  Released by: Xuri

  Fun Facts: Included in v0.99 release!

  #### February, 2010

  UOX3 v0.98-4.0f (Experimental Build)

  Release date: 1 February, 2010

  Released by: UOX3 Dev Team

  Contributors: Xuri, Shudderz

  Fun Facts: Included in v0.99 release!

  UOX3 v0.98-4.0g (Experimental Build)

  Release date: 1 February, 2010

  Released by: Xuri

  Fun Facts: Included in v0.99 release!

  UOX3 v0.98-4.0h (CVS only)

  Release date: 7 February, 2010

  Released by: UOX3 Dev Team

  Contributors: Xuri, Puck

  Fun Facts: Included in v0.99 release!

  #### December, 2011

  UOX3 v0.98-4.0i (Experimental Build)

  Release date: 14 December, 2011

  Released by: UOX3 Dev Team

  Contributors: Xuri, giwo, spdddmn

  Fun Facts: Included in v0.99 release!

  0.99 Versions (2012 - 2020)

  #### March, 2012

  UOX3 v0.99

  Release date: 19 March, 2012

  Released by: UOX3 Dev Team

  Contributors: Xuri, giwo, Ghostwholf, dragon slayer, xantier, Eolirin, puck, spdddmn, Shudderz, Jediman

  Fun Facts: New vendor related JS Events! Support for item names up to 128 characters! Revamped spell-damage and resist system! CombatExplodeDelay setting! Gargoyles!

  UOX3 v0.99.1

  Release date: 21 March, 2012

  Released by: UOX3 Dev Team

  Contributors: Xuri, dragon slayer

  #### November, 2012

  UOX3 v0.99.2

  Release date: 3 November, 2012

  Released by: UOX3 Dev Team

  Contributors: Xuri, dragon slayer

  Fun Facts: NPCs can spawn facing in random directions! Max region count increased from 255 to 65535! Amount support for LOOT and PACKITEM tags!

  UOX3 v0.99.2b

  Release date: 4 November, 2012

  Released by: Xuri

  UOX3 v0.99.2c

  Release date: 10 November, 2012

  Released by: Xuri

  Fun Facts: Global modifiers for combat speed/NPC spellcast speed!

  #### September, 2018

  UOX3 v0.99.2d

  Release date: 13 September, 2018

  Released by: Xuri

  #### November, 2019

  UOX3 v0.99.2h

  Release date: 24 November, 2019

  Released by: UOX3 Dev Team

  Contributors: Xuri, Kitiara

  Fun Facts: Custom tags can have negative values! Safezone region tag!

  #### April, 2020

  UOX3 v0.99.2i (Experimental Build)

  Release date: 12 April, 2020

  Released by: Xuri

  Fun Facts: Included in v0.99.3 release!

  #### August, 2020

  UOX3 v0.99.2m (Experimental Build)

  Release date: 8 August, 2020

  Released by: UOX3 Dev Team

  Fun Facts: Included in v0.99.3 release!

  #### September, 2020

  UOX3 v0.99.3

  Release date: 10 September, 2020

  Released by: UOX3 Dev Team

  Contributors: Xuri, punt, tuanhtrng

  Fun Facts: 64-bit cross-platform support across Windows, Linux and macOS! Full UOP map support! Instances! Revamped documentation!

- History of UO Emulation

  ### How it Got Started

  Emulation of the Ultima Online servers started all the way back in the days of the Alpha version of UO, when Denny Zuko (Jaegermeister) created the initial version of UOX (now lost to time). Since then, a great number of different emulators have come into existence, and although some of them were like fireflies that faded away after only a brief existence, others stuck around longer, spawned derivatives, forks and alternate versions along the way.

  For a more extensive and detailed overview, check out the General UO Emulator Timeline over at UOX3.org!

- Credits / UOX3 Hall of Fame

  The UOX3 Hall of Fame is simply a list of people (or their nicknames) known to have contributed to UOX3, in what capacity they (primarily) contributed, sorted in chronological order based on the estimated time of their first contribution.

  This list was written and is updated with the help of various UOX3 documents such as changelogs, news updates, code comments and some educated guesses, and errors might occur. If you spot a mistake, or a missing name, let us know and we'll do our best to correct the issue.

  ### 1997

  Jaegermeister
  Denny Zuko, Programmer, Creator of original UOX

  Cironian
  Marcus Rating, Programmer, Creator of original UOX2/UOX3

  Drax
  Original Scripter, 26/11/1997, v0.46

  Jason Koon
  Designed original UOX3 logo, 06/11/1997

  ### 1998

  Morac
  Programmer, 0.67c)

  Jerrith the Healer
  AR Schelicher, Programmer, UO Packet Guide - 0.67c)

  Tracker/Traker
  Programmer, ~June 1998)

  Fafnir/Aagorn/Delorim
  Programmer, ~June 1998)

  Anthracks
  Jonathan Henry, Scripter/Programmer, Keeper of Code Snippets - 0.67c)

  TBM
  Programmer, 0.67c

  Cray XMP1
  Programmer, 0.67c

  Gitchigoomi
  Scripter - 0.67i

  Monte Cristo
  Programmer, 0.67i

  Okaria Dragon
  Programmer, 0.67i

  Zarn
  Programmer, 0.67l

  Crimson Guard
  Programmer, 0.67l

  Drylock
  Erwin S. Andreasen, Programmer, 0.67n

  Ash
  Programmer, 0.67n

  El Barto
  Programmer, 0.67r+

  RofGilead
  Programmer, 0.67q

  Maytrix
  Programmer, 0.67w

  Tal Strake
  Programmer

  Fearicon
  Scripter, 0.67x

  Ashran
  Programmer, creator of EQ Emu, and UOisc, a tool that allowed copying items to UOX3 worldfiles by walking around on OSI servers

  Beosil
  Bruno Heidelberger, Programmer, Encryption Guru

  Krozy
  Lucas Moten, Programmer

  SirGonads
  Programmer

  Milan Rabaa
  Programmer

  Sir Joseph
  Programmer

  Halin Talismoon
  Programmer

  Polaris
  Programmer

  Kathrrack/Kathrakk
  Programmer

  TANis/Quintoxis
  Valerio Santinelli, Programmer

  Jim/Jim Wright
  Programmer

  Brad
  Programmer

  Friend/Brother Kane
  Programmer

  Ridcully
  Jan Lübbe, Programmer, Tool Programmer

  Armageddon
  Programmer

  Pug
  Scripter, The Script Team, < 07/31/98

  Concerned Watcher
  Lee Brown, Scripter, The Script Team, < 07/31/98

  Cruoris
  Scripter, The Script Team, < 07/31/98

  NoFx
  Scripter, < 07/31/98

  Rootdown
  Scripter, < 07/31/98

  Nevets
  Scripter, < 07/31/98

  Dante
  Scripter, The Script Team, 8/31/98

  Vagrant
  Programmer, ~September 1998

  Mad Hatter
  Michael De Piazzi, Programmer, ~September 1998

  Fizz
  Programmer, ~1998

  McCleod
  Programmer

  Hunter
  Programmer

  Tao
  Programmer

  DasRaetsel
  Programmer

  Bud
  Programmer,

  SpaceDog
  Kasper K. Andersen, Programmer

  Tauriel
  Karl Kirk, Programmer

  Dupois
  Programmer, MsgBoard/Escort System

  CyberCrusher
  Programmer

  Moongraven
  Programmer

  Gerry
  Gerry Thibodeau, Programmer

  Lord Slayer
  Programmer

  Zadius
  Programmer, Trigger System

  Max Wulf
  Programmer

  Genesis
  Scripter/Programmer

  Myca
  Programmer

  Algaran
  Scripter/Programmer, 12/09/1998

  Rin'thral
  Scripter, ~November 1998

  HellRaider
  Scripter, The Script Team, 10/05/1998

  Dupre the Fighter
  Scripter, 10/05/1998

  Danath
  Scripter, The Script Team, 10/05/1998

  Nattsorgh
  Programmer, 13/11/1998, Ran UOX3 Snippet Repository at http://home3.swipnet.se/~w-36372/

  redbaron
  Programmer, 13/11/1998

  Thunderstorm
  Programmer, 13/11/1998

  Myth
  Programmer, 13/11/1998

  Ripper
  Scripter/Programmer, 17/11/1998 - eventually founded Wolfpack Emu (https://web.archive.org/web/20000818115820/http://members.home.net/farmrr/)

  Zippy
  Bryan Pass, Programmer, v0.68.026.07

  Ray
  Programmer, ??/??/98, v0.68.026.07

  EvilDeD
  Matthew Randall, Programmer, v69.00

  Pellinore Dragon
  Programmer, v69.01

  Homey
  Programmer, v69.02

  Crwth
  Programmer, v69.02

  Phantom
  Programmer, v69.02

  Wolfgang
  Programmer, v69.02

  ### 1999

  Revana
  Adrian Balij, Programmer, v0.69.03

  Retalin
  Ryan McAdams, Scripter/Programmer, Web Admin, 04/01/1999

  Sephiroth
  Sean Hogberg, Scripter - 16/01/1999

  GM Santa's Helper
  Scripter, 28/01/1999

  Ashen Gray
  Scripter, 01/02/1999

  Cork
  Scripter, 07/02/1999

  Klick
  Scripter, 15/02/1999

  Solomon
  Scripter, 25/02/1999

  Sayter/Zophar
  Scripter, 25/02/1999

  Westy
  Peter Westberg, Programmer, Encryption Guru, 18/03/1999

  Darkness
  Scripter, 04/04/1999

  Magius
  Scripter/Programmer, 25/05/1999, Advanced Trade System

  Sir Pedro
  Scripter/Programmer, 25/05/1999

  Bug
  Scripter/Programmer, 25/05/1999

  Mark
  Scripter/Programmer, 25/05/1999

  Morrolan
  Programmer, 20/07/1999

  Crackerjack
  Programmer, 09/08/1999

  AntiChrist
  Programmer, ??/10/1999

  Abaddon/Maarc
  Daniel Stratton, Programmer, v0.69.03 -> v0.70.01.07t

  fur
  Programmer, 27.10.1999, v0.69.03 -> v0.70.01.07t

  Eagle
  Brandon Holtsclaw, Scripter/Programmer/Web Admin, v0.69.03 -> v0.70.01.07t

  Krazyglue
  Programmer, 03/10/1999, v0.69.03 -> v0.70.01.07t

  Quippl
  Programmer, v0.69.03 -> v0.70.01.07t

  Mithos
  Programmer, v0.69.03 -> v0.70.01.07t

  Lord Binary
  Programmer, v0.69.03 -> v0.70.01.07t

  JustMichael
  Michael Horton, Programmer, Tool Programmer, v0.69.03 -> v0.70.01.07t

  Tseramed
  Programmer, 04/10/1999, v0.69.03 -> v0.70.01.07t

  Terrin
  Programmer, 08/10/1999, v0.69.03 -> v0.70.01.07t

  Kashyyyk
  Programmer, v0.69.03 -> v0.70.01.07t

  Daemar
  Programmer, v0.69.03 -> v0.70.01.07t

  Mike
  Programmer, v0.69.03 -> v0.70.01.07t

  Cestle
  Scripter, 29/11/1999

  RevalutionShadow
  Scripter, 29/11/1999

  Infinity
  Scripter, 29/11/1999

  Folci
  Scripter, 29/11/1999

  ### 2000

  Xuri
  Geir Ove Alnes, Scripter/Programmer, Tool Programmer, Web Admin, 21/01/2000

  punt
  Charles Kerr, Programmer, Tool Programmer, 28/01/2000

  Skyfire
  Scripter/Programmer, ~March 2000, 0.70.x era

  Shrike
  Scripter, 12/04/2000

  Jerelith
  Scripter, 12/04/2000

  Hanse
  Thomas Edison, Programmer, 04/05/2000

  Frazurbluu
  Scripter, 01/08/2000

  Unseen
  Scripter/Programmer, ~06/08/2000

  Gunther
  Programmer, 22/08/2000, 0.70.03.19

  Thyme
  Programmer, 11/09/2000, 0.70.03.19a

  Chaos
  Michael Weis, Programmer, 25/09/2000, 0.70.03.19b

  Knoxos
  Programmer, 25/09/2000, 0.70.03.19b

  WIG
  Programmer, 25/09/2000, 0.70.03.19b

  Dodger
  Programmer, 09/10/2000, 0.70.03.19c

  Thaliq
  Programmer, 24/10/2000, 0.70.03.20

  GM Azrael
  Scripter, 24/10/2000

  Oakwood
  Programmer, 06/11/2000, 0.70.03.20d

  KKung
  Programmer, 06/12/2000, 0.70.03.20f

  Rain-
  Programmer, ~January 2000

  Lord Vader
  Programmer, ~2000

  Grady
  Programmer, ~2000

  ### 2001

  Rainman/Cobol Junky
  Web Admin, ~Jan-Sept 2001

  Jedda
  Programmer, 17/01/2001, 0.70.03.21

  Tom2
  Programmer, 17/01/2001, 0.70.03.21

  Correa
  Thiago A. Corrêa, Programmer, 17/01/2001, 0.70.03.21

  Raftina
  Scripter, 31/01/2001, 0.70.03.21a

  RostamTheGrey
  Daniel K. Olds, Programmer, ~early 2001

  Calvin
  Scripter, < February 2001, < v0.0.70.03.21d

  Yeshe
  Carsten Germer, Scripter, 08/05/2001

  Zane/Giwo
  Scott Thompson, Scripter/Programmer, Web Admin, 03/07/2001

  seank
  Programmer, 04/07/2001

  Gimli
  Programmer, 12/07/2001

  Dreoth
  Scripter/Programmer, ~2001-2003

  harkon
  Programmer, 0.95.01 Build 1

  Mr_Fixit
  Daniel Storjordet, Programmer, Tool Programmer, 0.95.01 Build 1, UOGateway

  JoeMC
  Programmer, 0.95.01 Build 1

  Spud
  Programmer, 05/08/2001

  Shadowlord
  Programmer, 01/11/2001

  Krrios
  Programmer, 05/11/2001, creator of KUOC - Krrios UO Client, ModifyUO and RunUO

  Bel-CMC
  Programmer, 12/11/2001

  silver2000
  Programmer, 19/12/2001

  DarkStorm
  Programmer, 20/12/2001

  ### 2002

  Rukus
  Programmer, 0.97.00 Build 20

  kot_Leopold
  Programmer, 0.97.00 Build 20

  Norfic
  Scripter, 0.97.00 Build 20

  Weazel
  Scripter, 0.97.00 Build 20

  duckhead
  Programmer, 0.97.00 Build 20

  SwamiHajjiJoe
  Scripter, 02/01/2002

  Cavalier
  Chris Bailey, Scripter, 12/01/2002

  sereg
  Scripter/Programmer, 15/02/2002

  §ymb!ot!c
  Ben Bellert, Scripter, 17/03/2002

  Lynxx
  Scripter, 11/03/2002

  MACTEP
  Programmer, 18/04/2002

  avtotar
  Programmer, 16/09/2002

  Brakhtus
  Programmer, 25/09/2002, 0.97-1.7

  ### 2003

  Malketh
  Programmer, 19/03/2003

  Philantrop
  Programmer, 19/03/2003

  almiller1963
  Programmer, 07/05/2003, v0.97.5.2g

  #### 2004

  xir
  Programmer, 31/07/2004

  ### 2005

  Grimson
  Programmer, 07/06/2005, 0.98.3-0

  ShadowBranch
  Daniel Moree, Programmer, 11/06/2005, 0.98-3.0

  lingo
  Lingo Chen, Programmer, 05/08/2005, 0.98-3.0e

  ### 2006

  Fish
  Scripter, 29/01/2006, 0.98-3.2

  jr
  Programmer, 05/05/2006, 0.98-3.6

  ### 2007

  supermoleet
  Programmer, 17/01/2009, 0.98-4.0

  Jediman
  Programmer, 05/11/2009

  ### 2008

  Ghostwolf
  Scripter, 19/03/2012, 0.99

  dragon slayer
  Scripter, 19/03/2012, 0.99

  xantier
  Programmer, 19/03/2012, 0.99

  Eolirin
  Programmer, 19/03/2012, 0.99

  Puck
  Scripter, 19/03/2012, 0.99

  spddmn
  Programmer, 19/03/2012, 0.99

  Shudderz
  Programmer, 19/03/2012, 0.99

  ### 2020

  tuanhtrng
  Tuan H. Truong, Programmer, 17/04/2020

  ### Additional Tool Programmers

  Chaos
  Tool Programmer, the original CGMT chaos - https://web.archive.org/web/20010119120600//http://www.prodes.org/cgmt/

  Decius
  Daniel Paull, Tool Programmer, UOXSE

  ### Honorable Mention

  Fallo
  Encryption Guru)

  Terry Denham
  Fileformat Analytic

  Krazow
  Provided early web server for UOX3 at Warlords.com

  Danny Thomas
  Helped fix No-IP client crash

  Alkiser
  Web Designer/Admin of uoxdev.com, ~early 2000

  Infymus
  Michael Hoenie, Tool Programmer, ~2001

  Duke
  Lonewolf developer

  Mark A. Pelletier
  UOR/OU emulator

  Sheppard
  Creator of UOOS emulator

  ### To Place in Timeline

  Allmight
  Documentation, ~November 1998

  TeHb
  Scripter, ~November 2002

  Tim
  ???

Close

Documentation revamp by Geir Ove Alnes @ Copyright 2020

Built upon FAQ Template framwork provided by CodyHouse.