Last Updated: 14. October, 2023
Written for UOX3 Version: v0.99.6
This document aims to gather all documentation related to UOX3 in one place, and you'll find a version-specific copy of it bundled along with any given version of the UOX3 all-in-one download.
The latest up-to-date version can always be found at https://www.uox3.org/docs/index.html!
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.
If you want to dive right in and get started with UOX3, hop on over to the Installation and Setup section.
If you're curious, but have some questions, try your luck by reading the Frequently Asked Questions section, or join the UOX3 Community on Discord for a quick chat!
To see what's new in the latest release build 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.
The core features listed below are the heart and soul of UOX3, and are what helps UOX3 stand out in the UO server emulator space:
Script that lets players tip cows over by double-clicking them:
function onCharDoubleClick( pUser, targChar ) // DoubleClick Event
{
// Generate random number from 0 to 100
var rndValue = RandomNumber( 0, 100 );
// If random number was lower than 5, tip the cow!
if( rndValue < 5 )
{
targChar.DoAction( 8 ); // Play falling over animation on cow
targChar.SoundEffect( 0x78, true ); // Cow goes moo!
}
}
Definition for a bag full of reagents, added in-game using the GM command 'add item bagofreagents:
[bagofreagents]
{
get=base_item
name=bag
id=0x0e76
weight=100
weightmax=40000
value=7 3
type=1
restock=10
decay=1
good=5
packitem=0x0f7a,30
packitem=0x0f7b,30
packitem=0x0f84,30
packitem=0x0f85,30
packitem=0x0f86,30
packitem=0x0f88,30
packitem=0x0f8c,30
packitem=0x0f8d,30
}
UOX3 has many settings and options that can be tweaked via the main configuration file, uox.ini, as well as in individual regions of the world. More in-depth tweaks are also possible by editing the included JS files for skills and items:
UOX3 comes pre-packed with a host of custom (and optional) features that can be customized and tweaked by shard admins:
UOX3 also supports features from regular UO:
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!
Why? Where? Who? When? What?
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.
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.
SpiderMonkey is the name of the JavaScript scripting engine that comes pre-baked into UOX3. It parses and interprets special JavaScript files written for UOX3 to extend the functionality of the server. All those scripts can be modified by shard admins during runtime without needing to restart the server, and entirely new scripts can be added on the fly, while the server is kept running.
For an in-depth dive into this topic, go to the Introduction to JS Engine in UOX3 section!
JS files are scripts written in JavaScript, which are read and interpreted by UOX3's embedded SpiderMonkey scripting engine. They are used to add specific behaviours to items, NPCs, skills, spells, and more. For a basic example and a more in-depth dive into this topic, go to the Introduction to JS Engine in UOX3 section!
DFN (or "Definition") files are essentially blueprints that define which properties and flags should be applied to objects like items and NPCs upon creation, or to persistent systems like Weather and Races. Check out the Introduction to DFN System in UOX3 section for more details!
Nothing. Anyone who wants can download and use UOX3 for free!
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."
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.
There can be a number of 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.
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.
The World Wide Web contains many sites with 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! :)
Some parts of UOX3 such as combat calculations, weapon/armor values, NPC stats etc. are based around Publish 15 of UO, from the time just before (archive.org) the Age of Shadows expansion was released. Not all features are exact replicas of this era, though, and usually options are provided to allow shard admins to put their own twist on a feature.
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.
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
The quick answer: Try the 'add command while logged in with a character on your admin account (account 0). This will bring up a menu from which you can select to add items, NPCs and even some basic spawners (Tip: If you end up with some items in your backpack that you cannot move, try the 'allmove on command. This will let you pick up and move items normal players cannot.)
For a more in-depth guide on adding items to your shard, try the Adding Items and NPCs section of the First Five Minutes portion of these docs!
"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!
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.
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...
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.
Refer to this Quick Start guide to get up and running with UOX3 in just a couple of minutes! If you run into any problems along the way, check the full setup guide below for more detailed instructions with additional information that might help you resolve your issue. Also feel free to jump onto our Discord server or post in the community forums for more hands-on support!
(Bonus tip: If you run into trouble launching the UO client using either ClassicUO or Razor, try running these tools in WinXP SP2/3 Compatibility mode. Also beware that connecting to UOX3 using the regular UO client and any Razor versions newer than ~1.6.8.15 will probably not work!)
Assuming the setup process went without a hitch, you can now skip ahead to the section titled Logging In and Creating a Character for a taking your first steps in your UOX3 shard! However, if you ran into any trouble along the way, refer to the full setup guide in the next few sections below!
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.
Default install size for UOX3 alone clocks in at under 8MB of disk space, 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 disk space recommended.
Default memory usage for an empty shard ranges starts off using around ~3.8GB of RAM, but can grow based on the amount of content added to the shard and the number of players connected at any given time. Minimum 6GB+ RAM recommended.
Historically UOX3 used to require less than 50MB of RAM to run an empty shard, which would maybe climb into the low-mid hundreds as shard content grows. The trade-off for such low memory consumption? Slower shard performance.
Current UOX3 versions, in comparison, can take nearly 4GB of RAM to run, but loads in all statics data, tiledata and multidata required for faster lookup speeds, which has benefits to the performance of NPC movement, spawn-systems, line-of-sight checks and more!
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.98.x, and requires the following minimum set of UO data files to run:
Additional map and statics data files are optional, and required only if you want the other worlds/facets to be available on your shard.
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 specific UO Client versions.
While you're at it, go grab ClassicUO, an open-source implementation of the UO client with many bells and whistles, which is the de-facto standard for connecting to private UO shards these days. It supports both Windows, Linux and macOS - though it still relies on the data files from the original UO client. You can also grab Razor Community Edition, which on its own can be used to run the original UO client and provides many quality of life options, though it can also be used in tandem with ClassicUO for the best of both worlds.
To get started with UOX3, you have a couple of options:
The first, and most straight-forward option is to download the latest release build of the 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.
If it has been some time since the last release build was updated, it might be a better approach to try out the development 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 build, but could also potentially contain additional bugs and errors due to the "cutting edge" nature. However, depending on time since last release, the development build might be only build available!
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 for Windows, or your home directory for Linux/macOS.
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, or just like to live life on the cutting edge and want to stay up-to-date with the most recent changes at any given point of time, this might be the option for you. See Additional UOX3 Info > Compiling UOX3 Source for further instructions!
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!
Open UOX.INI from the root UOX3 folder using your favourite text editor (Notepad, Notepad++, Sublime Text, Vim, nano, etc.)
Under the [system] section, look for the line similar to SERVERNAME=My UOX3 Shard.
Replace "My UOX3 Shard" with the name you'd like to use for your UOX3 shard. Keep the name short (preferably 16-20 chars); the longer it is, the less likely it will show up in the UO client's server list without being truncated.
By default, UOX3 will work for local connections with no further changes required in this step, i.e. when connecting with UO client on same computer as UOX3, or connecting across a home LAN/WiFi.
However, if you intend to have your UOX3 shard accessible to other people over the Internet, you need to replace 127.0.0.1 in the line EXTERNALIP=127.0.0.1 with your public Internet IP. An additional step that might be required here, is to configure your Internet router to forward incoming connections to your local computer via a concept called port forwarding (check linked FAQ answer on UOX3 forums for more info).
Speaking of ports - the ini setting PORT=2593 determines the port UOX3 will be listening for incoming connections on. Usually this can be left as the default value, unless you have specific reasons to use another port.
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 issues with multiple client versions behaving differently. Any client version you enable here also enable a range of versions up to the version in the next available setting.
If you're using the latest available version of the UO client, no need to make any changes here - the latest versions are allowed by default.
Scroll down to the [directories] section of the ini file, and locate this line:
DATADIRECTORY=C:\Program Files (x86)\Electronic Arts\Ultima Online Classic
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:
NOTE: The * in the above filenames indicate that there's more than one similarly named files, and the 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!
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 accounts.adm in your text editor, before locating this section of the file:
SECTION ACCOUNT 0
{
NAME admin
PASS admin
FLAGS 0x8000
PATH ./accounts/admin/
TIMEBAN 0x0
FIRSTLOGIN 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 and Admin 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! Note that 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.
Important Note: The maximum password length accepted by the UO client's password-entry field is 17 characters, and the minimum password length accepted by UOX3 is 5 characters - so your password should be between 5 to 17 characters long.
Additional accounts can be created by copying an existing SECTION ACCOUNT # (like the default guest 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), changing the username/password/contact info and ensuring all the character references are set to 0xffffffff [UNKNOWN].
If you make changes to this file while UOX3 is already running, you will have to reload the accounts from UOX3's console menu.
Tip #1 - Add accounts via in-game command
While your UOX3 shard is already running, you can add more accounts via the in-game Admin command 'addaccount. Any accounts added via this command are instantly available for use. Syntax: addaccount [username] [password] [flags]
Example: 'addaccount guest2 guest2 0x0
Tip #2 - Add accounts through newaccounts.adm
Another alternate way of adding new accounts is to edit - or create, if it doesn't already exist, a file called newaccounts.adm in the root accounts folder, and adding one line per account you want to create, matching the following syntax:
USER=[username],[password],[flags],[email]
Note that additions to newaccounts.adm only go into effect when the server is restarted.
Tip #3 - Enable 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). This will automatically create a new account for anyone who attempts to login to your shard with an unrecognized account-name. Beware that this could make it easier for someone to cause trouble for your shard, as even if you ban a problem user's account, they can just create a new account straight away. To solve this issue, you might need to ban them by IP via banlist.ini instead!
Navigate to the root of your UOX3 folder, and double-click on UOX3.exe to start UOX3.
Open a new terminal window, navigate to the root of your UOX3 directory, and start UOX3 by entering the following command: ./uox3
UOX3 should now start up, and a barrage of text should scroll off your screen as UOX3 loads the 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!
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.
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.
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. 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 UO client versions/expansions and compatibility with UOX3.
The de-facto standard way of connecting to private UO shards these days is using ClassicUO, an open-source, cross-platform implementation of the UO client that also works on both Windows, Linux and macOS (data from original UO client still required).
Download, install and launch it, and after a short wait you'll be greeted by a screen similar to this:
Follow the arrows in the above image; Add a new profile, select it, then fill in your shard's name, your shard username/password, the shard's IP and port, and the path to your UO client installation/data folder. Hit Save profile and then Back!
From the next window that shows up, make sure your new profile is selected, then hit the PLAY! button. At this point the ClassicUO client should start up, and you should be ready to log in to your shard!
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:
Check it out at the ClassicUO Website or @ GitHub!
If you want to experience UO in all its old-school nostalgia, your best bet might be to rely on an UO + Razor CE combination instead of a custom client. Razor Community Edition is able to disable the encryption in the regular UO client, which is required in order to log in to UOX3 shards. As a bonus, Razor also provides a whole host of additional bells, whistles and quality of life options.
Download, install and launch it. After a short wait, you'll be greeted by a screen similar to this:
Unless you encounter any issues, or you have multiple UO Client versions installed, just leave the Load Client part at 2D Client (Auto Detect) - otherwise, select the specific client.exe and UO Data Folder for the client version you want to use. Make sure Patch client encryption is checked, then hit New to create a new shard profile. Ensure 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 Save to save your shard profile, followed by the Launch UO button. At this point the UO client should start up, and you should be ready to enter your UOX3 username and password to log in to your shard!
(Note that in certain cases it might be advisable to run Razor in compatibility mode for Windows XP (Service Pack 3) to avoid some freezes/lockups on startup or login).
Razor Community Edition is an open-source assistant tool for Ultima Online, which also supports integration with the open-source client ClassicUO. Not only can it disable encryption in the original UO client if needed, it also provides a number of different features:
Check it out at the Razor CE Website or @ GitHub!
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!
The next step after logging on to your UOX3 shard will be to determine whether you want to start with an empty shard, or to apply default world decorations and NPC spawns! See the next section for more details!
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 will - on first login with a character on the admin account - get the option to automatically decorate your shard based on some default world templates (which themselves were based on the older "default UOX3 worldfiles") provided with UOX3, which generates items such as doors, signs, lights and more. For now, these templates cover all the UO towns on the Felucca facet (world 0).
Similarly, you'll get the option to supplement the world decorations with all kinds of NPCs, from animals and monsters to shopkeepers and townfolk. By default, UOX3 comes bundled with Spawn Region files (based on the old "community-based spawn.dfn file") that cover Britannia on the Felucca facet, as well as dungeons, forests and monster camps on that map.
These options are presented in a gump (UO term for menu) that pops up on login, where you can choose between starting with a blank shard and do your own thing, or to utilize the default UOX3 world to get a pre-defined starting point for your shard.
If you don't want to make this choice on your first login, you can always return to the welcome screen using the 'welcome command, or alternatively skip that altogether and rely on the 'decorate load command to get the job done for items, or the 'enablespawns [facetNum/facetName] and 'disablespawns [facetNum/facetName] commands to manually enable/disable Spawn Regions for each facet. Either way, any custom content you have added or changes you have made to your shard will not be overwritten!
Great! You have a character, and you have (potentially) decorated your world with items and populated it with NPCs. 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!
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! These powers can also be bestowed upon other players using the same command, but choose with care who you provide such unlimited power!
As an admin character who already has access to all commands, there's no requirement to use this command on yourself, it's more a formality to look the part than anything else. In fact, you could easily give yourself a different look using the 'make admin command instead!
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.
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.
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.
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
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!
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 or 'go
'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, but these basic few are your bread and butter, the ones you'll keep coming back to in order to get things done.
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.
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.
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
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
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 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.
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!
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 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.
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 available systems.
The JavaScript Engine section of this documentation provides information about the scripting engine used in UOX3, along with details of all the 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 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.
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.
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 '*'.
SERVERNAME=My UOX3 Server
The (preferably) unique name that you want for your UOX3 shard!
EXTERNALIP=127.0.0.1
Your external/WAN IP address. If you want others to be able to connect to your shard from across the world, you'll need to supply your public IP here! If you just want to connect locally with a client on the same computer as UOX3, or just want to connect from another computer on the same LAN/WiFi network, leave this at the default setting.
PORT=2593
Port number that server listens on for connections.
SECRETSHARDKEY=None
Secret key that can be used as a way to restrict which clients can connect to the shard, for instance via CUOWeb's 0xA4 packet, or other clients that can be configured to send that same secret key
SERVERLANGUAGE=0
Set default server dictionary language. Supported languages: 0 - None/language used by each client, 1 - English, 2 - German, 3 - Spanish, 4 - French, 5 - Portuguese, 6 - Italian, 7 - Czech, 8 - Polish
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 receive will be attempted before it throws an error.
CONSOLELOG=1
Toggles logging of console messages, warnings and errors
NETWORKLOG=1
Toggles logging of network traffic (packets)
SPEECHLOG=1
Toggles logging of player/staff speech
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.
FREESHARDSERVERPOLL=0
Determines if support for the Freeshard Server Poll Packet request 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.
JSENGINESIZE=256
gcMaxBytes limited in MB per JS Runtime. Must be between 16 and 4095! Essentially defines how much memory JS engine should be allowed to allocate before last-ditch GC kicks in. It's recommended to leave this setting alone unless there are specific reasons to change it.
USEUNICODEMESSAGES=1
If 1, UOX3 will send messages/text to client in Unicode mode, which changes the font used to display the text, but also ensures that characters with accents used in languages like Czech, French, Spanish, etc are displayed properly.
CONTEXTMENUS=1
If 1, context menus will be displayed when clicking on/hovering over dynamic objects. If 0, such context menus are disabled.
SYSMESSAGECOLOUR=72
Default colour of system messages sent to players.
MAXCLIENTBYTESIN=25000
Network budget for incoming traffic from a given connected client, usage beyond which they will receive warnings for, or temporary bans.
MAXCLIENTBYTESOUT=100000
Network budget for outgoing traffic to a given connected client, usage beyond which they will receive warnings for, or temporary bans.
NETTRAFFICTIMEBAN=30
Duration in minutes that an account will be banned after exceeding network budget three times in same session.
APSPERFTHRESHOLD=50
Performance threshold (measured in simulation cycles/sec) below which the APS kicks in
APSINTERVAL=100
How often (in milliseconds) the APS checks performance and makes adjustments (if needed) to balance out shard performance
APSDELAYSTEP=50
How much the delay timer is modified by (in milliseconds) each time APS makes adjustments
APSDELAYMAXCAP=2000
Max amount of of delay APS can introduce for NPC AI/movement handling when attempting to restore shard performance
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
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.
SKILLLEVEL=7
Global difficulty level for crafting exceptional quality items. 1=Easiest, 7=Default, 10=Difficult (estimated to around same difficulty as official UO shards in LBR era).
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=225
Total number of statpoints available for each player.
STATSAFFECTSKILLCHECKS=0
If 1, stats can provide bonuses to skill checks based on the weighting for those stats as setup in dfndata/skills/skills.dfn.
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
CORPSEDECAYTIMER=900
Amount of time in seconds for a corpse to decay.
WEATHERTIMER=60
Amount of time in seconds between changing light levels (day cycles).
SHOPSPAWNTIMER=300
Amount of time in seconds between shopkeeper restocks.
DECAYTIMER=300
Amount of time in seconds a decayable item will remain on the ground before disappearing.
DECAYTIMERINHOUSE=3600
Amount of time in seconds a decayable item will remain on the floor of a house before disappearing, if not locked down.
INVISIBILITYTIMER=60
Duration of the invisibility spell, in seconds.
OBJECTUSETIMER=1
Amount of time in seconds a player must wait between using objects.
GATETIMER=30
Duration of a summoned moongate, in seconds.
POISONTIMER=180
Duration of the poison effect on a character, in seconds.
LOGINTIMEOUT=300
Amount of time for an idle connection to time out, in seconds.
HITPOINTREGENTIMER=8
Amount of time in seconds required to regenerate a single point of health.
STAMINAREGENTIMER=3
Amount of time in seconds required to regenerate a single point of stamina.
MANAREGENTIMER=5
Amount of time in seconds required to regenerate a single point of mana.
BASEFISHINGTIMER=10
Base time in seconds for fishing skill to complete an attempt at fishing.
RANDOMFISHINGTIMER=5
Max random time in seconds for fishing skill to complete.
SPIRITSPEAKTIMER=30
Duration of the spirit speak skill, in seconds.
PETOFFLINECHECKTIMER=600
Sets the interval in seconds between checks for the player offline time.
NPCFLAGUPDATETIMER=5
Interval in seconds between each time NPC flags are updated.
BLOODDECAYTIMER=3
Time in seconds it takes small blood splatter on ground spawned during combat to decay. Defaults to 3 seconds.
BLOODDECAYCORPSETIMER=210
Time in seconds it takes larger blood splatter on ground spawned upon death to decay. Defaults to half the duration of the default corpse decay timer.
Supported era values: core, t2a, uor, td, lbr, pub15, aos, se, ml, sa, hs, tol
Note: A value of 'core' inherits whatever is set in CORESHARDERA
CORESHARDERA=pub15
Defines the "core" era of the shard. Defaults to pub15 (Publish 15).
ARMORCALCULATION=core
Defines era to base armor calculations on
STRENGTHDAMAGEBONUS=core
Defines era to base strength damage bonus on
TACTICSDAMAGEBONUS=core
Defines era to base tactics damage bonus on
ANATOMYDAMAGEBONUS=core
Defines era to base anatomy damage bonus on
LUMBERJACKDAMAGEBONUS=core
Defines era to base lumberjacking damage bonus on
RACIALDAMAGEBONUS=core
Defines era to base racial damage bonus on
DAMAGEBONUSCAP=core
Defines era to base damage bonus cap on
SHIELDPARRY=core
Defines era to base shield parry calculations on
WEAPONPARRY=core
Defines era to base weapon parry calculations on
WRESTLINGPARRY=core
Defines era to base wrestling parry calculations on
COMBATHITCHANCE=core
Defines era to base combat hit chance calculations on
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 (sounds based on tile types).
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 seconds) 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. Recommended to leave off.
SELLMAXITEMS=5
Maximum number of items that can be sold to a vendor at a time.
GLOBALRESTOCKMULTIPLIER=1
Global multiplier used to alter how many items NPC shopkeepers will restock. Defaults to 1, which means RESTOCK values in item definitions are taken at face value.
BANKBUYTHRESHOLD=2000
Defines the lower limit for when a purchase will withdraw money from bank instead of backpack
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, in seconds.
CLIENTFEATURES=1021183
Can be used to enable/disable specific expansion-related client-side features. See clientfeatures List for details:
(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:
(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.
SPAWNREGIONSFACETS=0
Can be used to enable/disable spawn regions for specific facets of the shard. See facet list for details:
(0x00) 0: All spawn regions disabled
(0x01) 1: Felucca enabled
(0x02) 2: Trammel enabled
(0x04) 4: Ilshenar enabled
(0x08) 8: Malas enabled
(0x10) 16: Tokuno enabled
(0x20) 32: Ter Mur enabled
The above flags can be mixed and matched to enable spawn regions for one or more facets on the server. Simply add together the decimal numbers of the desired facets, and put the end-result in the SPAWNREGIONSFACETS tag.
Examples: SPAWNREGIONSFACETS=1 means only Felucca has spawn regions enabled. A value of 3 means Felucca plus Trammel are enabled. A value of 10 means Malas plus Trammel (the only ones that add up to 10), and 63 equals ALL facets being enabled.
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
SHOWREPUTATIONTITLEINTOOLTIP=1
If enabled, shows player's reputation title in tooltip. Defaults to 1
SHOWGUILDINFOINTOOLTIP=1
If enabled, shows player's guild info in tooltip. Defaults to 1
SHOWITEMRESISTSTATS=0
If enabled, shows item resistance stats in item tooltip. Defaults to 0
SHOWNPCTITLESINTOOLTIPS=1
If enabled, shows NPC titles in tooltip. Defaults to 1
SHOWNPCTITLESOVERHEAD=1
If enabled, shows NPC titles over their heads. Defaults to 1
SHOWINVULNERABLETAGOVERHEAD=1
If enabled, shows invulnerable tags over the head of characters. Defaults to 0
SHOWRACEWITHNAME=1
If enabled, shows a character's race along with their name. Defaults to 1
SHOWRACEINPAPERDOLL=1
If enabled, shows a character's race in the paperdoll. Defaults to 1
SHOWWEAPONDAMAGETYPES=1
If enabled, shows weapon damage types in item tooltip. Defaults to 1
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
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.
ITEMSDETECTSPEECH=0
Toggles whether or not onSpeech JS events can trigger in scripts attached to items. Potentially has performance implications if enabled. Defaults to off.
MAXPLAYERPACKITEMS=125
Sets max amount of items players can keep in their backpack.
MAXPLAYERBANKITEMS=125
Sets max amount of items players can keep in their bank box.
MAXPLAYERPACKWEIGHT=40000
Sets max weight capacity in stones for player backpacks (including items in sub-containers). 40000 = 400.00 stones
MAXPLAYERBANKWEIGHT=160000
Sets max weight capacity in stones for player bankboxes (including items in sub-containers). 160000 = 1600.00 stones
FORCENEWANIMATIONPACKET=1
If enabled (default), forces the use of the new animation packet for playing various character animations for both NPCs in general and for player characters connected with client v7.0.0.0+
MAPDIFFSENABLED=0
If enabled, server will attempt to load diff files, and send "Enable Map-diff files" packet to client to also load these. Disabled by default.
TOOLUSELIMIT=1
If enabled, crafting and harvesting tools will have limited amount of uses, after which they can no longer be used. Enabled by default.
TOOLUSEBREAK=1
If enabled, tools for harvesting and crafting will break if they reach zero HP. Enabled by default.
ITEMREPAIRDURABILITYLOSS=1
If enabled, items will lose max durability when repaired. Enabled by default.
CRAFTCOLOUREDWEAPONS=0
If enabled, players can craft coloured weapons using coloured ingots with the Blacksmithing skill. Disabled by default.
MAXSAFETELEPORTSPERDAY=1
Defines the maximum amount of safe teleports players can use per day via the Help > Stuck menu, after which they'll need to rely on GM pages to get unstuck. Set to 1 by default.
TELEPORTTONEARESTSAFELOCATION=0
If enabled, players will always be teleported to their nearest safe location (town, or shrine). If disabled, they will be teleported to a random safe location within their current facet. Disabled by default.
ALLOWAWAKENPCS=0
If enabled, NPCs marked as awake will be checked by server (AI, timers, updates) regardless of whether the region they are in is inactive because of no nearby online players. If disabled, those NPCs are treated like any other NPCs. Disabled by default.
ENABLENPCGUILDDISCOUNTS=1
If enabled, players are granted a discount if they buy items from vendors that are members of the same NPC guild as the player.
ENABLENPCGUILDPREMIUMS=1
If enabled, players are granted premium prices if they sell items to vendors that are members of the same NPC guild as the player.
YOUNGPLAYERSYSTEM=1
If enabled, all newly created player accounts are automatically marked with Young flag, and all characters created under those accounts will be treated as Young players, with those restrictions that that entails.
MAXCONTROLSLOTS=5
Maximum number of pet control slots available to player. Disabled if 0
MAXFOLLOWERS=5
Maximum pets/followers a player can have active at the same time. Used if control slots are disabled
MAXPETOWNERS=10
Maximum number of unique owners a pet can have over its lifetime before it becomes impossible to retame
CHECKPETCONTROLDIFFICULTY=1
Enable/Disable pet control difficulty system
PETLOYALTYGAINONSUCCESS=1
Amount of pet loyalty gained on successful pet command use
PETLOYALTYLOSSONFAILURE=3
Amount of pet loyalty lost on failed pet command use
PETLOYALTYRATE=900
Amount of seconds between each time pet loyalty is automatically reduced by 1. Takes 25 hours to deplete completely from max
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
NPCMOUNTEDWALKINGSPEED=0.3
Allows customization of mounted NPC movement speed. Can be overridden by WALKINGSPEEDMOUNTED tag in NPC-DFNs
NPCMOUNTEDRUNNINGSPEED=0.12
Allows customization of mounted NPC running speed. Can be overridden by RUNNINGSPEEDMOUNTED tag in NPC-DFNs
NPCMOUNTEDFLEEINGSPEED=0.25
Allows customization of mounted NPC fleeing speed. Can be overridden by FLEEINGSPEEDMOUNTED 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
Multiplier used to adjust the attack speed globally for all characters. Defaults to 1. A value of 1.5 would make combat 50% faster globally, while a value of 0.5 would make it 50% slower globally. Can be finetuned per NPC via DEX stat in DFNs.
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.
ESCORTENABLED=1
If 1, NPC escorting is enabled.
ESCORTINITEXPIRE=900
Amount of time in seconds until an escort-NPC will vanish while waiting for someone to start escorting it.
ESCORTACTIVEEXPIRE=600
Amount of time in seconds until an escort NPC will vanish while a player is escorting it.
ESCORTDONEEXPIRE=600
Amount of time in seconds until an escort NPC will vanish when it has reached it's destination.
DUNGEONLEVEL=15
Specifies the light-level of Dungeon-areas.
BRIGHTLEVEL=0
Specifies the brightest light-level in the day/night cycles.
DARKLEVEL=12
Specifies the darkest light-level in the day/night cycles.
SECONDSPERUOMINUTE=5
Number of real seconds per UOX3 minute.
BASERANGE=10
Minimum range even a novice can track from.
BASETIMER=30
Tracking timer - maximum time in seconds 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.
MURDERDECAYTIMER=28800
Amount of time in seconds before a permanent murder count will decay. Defaults to 8 hours (28800 seconds)
MAXKILLS=4
Maximum number of kills before turning red.
CRIMINALTIMER=120
Amount of time in seconds a character remains criminal after committing a criminal act.
MINECHECK=1
Type of mining check performed - 0 = anywhere, 1 = mountains/cavefloors
RESOURCEAREASIZE=8
Affects the number of resource-areas the world is split into. A value of 8 splits the world into areas sized 8x8 tiles
OREPERAREA=10
Maximum number of ores in a given resource area.
ORERESPAWNTIMER=600
Amount of time in seconds it takes for 1 single ore to respawn in a resource area.
LOGSPERAREA=3
Maximum number of logs in a given resource area.
LOGSRESPAWNTIMER=600
Amount of time in seconds it takes for 1 single log to respawn in a resource area.
FISHPERAREA=3
Maximum number of fish in a given resource area.
FISHRESPAWNTIMER=600
Amount of time in seconds it takes for 1 single fish to respawn in a resource area.
HUNGERRATE=6000
Amount of time in seconds 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.
MAXRANGE=10
Maximum range (in tiles) at which combat can occur.
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.
ARCHERYHITBONUS=10
Bonus hit chance for Archery skill added to regular hit chance in combat. Defaults to 10%
ARCHERYSHOOTDELAY=0.5
Attack delay for archers; after coming to a full stop, they need to wait this amount of time in seconds before they can fire an arrow.
SHOOTONANIMALBACK=0
If 1, archery from horseback is possible.
COMBATEXPLODEDELAY=2
The amount of time in seconds 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.
ALCHEMYBONUSENABLED=0
Enables/disables bonus damage from Alchemy skill for explosion potions. Defaults to disabled.
ALCHEMYBONUSMODIFIER=5
The modifier used to add bonus damage based on Alchemy skill for explosion potions. Defaults to 1 bonus damage per 5 skill-points in Alchemy skill, using the following formula: bonusDamage = alchemySkill / modifier
ARMORCLASSDAMAGEBONUS=0
Enables/disables double damage from armour class bonuses. Defaults to disabled.
TRAVELSPELLSFROMBOATKEYS=1
Toggle being able to travel via Recall and Gate spells directly to a boat via its key
TRAVELSPELLSWHILEOVERWEIGHT=0
Toggle being able to travel via Recall and Gate spells when overweight
MARKRUNESINMULTIS=1
Toggle being able to mark runes while inside multis. If enabled, runes marked inside multis will be associated with the multi in question, rather than a specific set of coordinates. If multi no longer exists, travelling to it via Recall or Gate will be impossible
TRAVELSPELLSBETWEENWORLDS=0
Toggle being able to travel via Recall and Gate spells from one facet to another
TRAVELSPELLSWHILEAGGRESSOR=0
Toggle being able to travel via Recall and Gate spells when marked as an aggressor (if attacked an innocent first, or if criminal)
HIDESTATSFORUNKNOWNMAGICITEMS=1
Toggles whether item stats for unidentified magic items are hidden from tooltips
CASTSPELLSWHILEMOVING=0
Toggles whether spells can be cast while moving, without ever having to stop!
Start locations 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,0,1075072
LOCATION=Minoc,Tavern,2477,411,15,0,0,1075073
LOCATION=Britain,Sweet Dreams Inn,1495,1629,10,0,0,1075074
LOCATION=Moonglow,Docks,4406,1045,0,0,0,1075075
LOCATION=Trinsic,West Gate,1832,2779,0,0,0,1075076
LOCATION=Magincia,Docks,3675,2259,26,0,0,1075077
LOCATION=Jhelom,Docks,1492,3696,0,0,0,1075078
LOCATION=Skara Brae,Docks,639,2236,0,0,0,1075079
LOCATION=Vesper,Ironwood Inn,2771,977,0,0,0,1075080
Start locations used by the character-creation process in the client, but applied only to Young characters created on Young player accounts. Use either a single location (to make all Young players start there), or follow the fixed amount based on regular [start locations] and either re-use those locations or specify specific young-start locations for each town - using the following format: YOUNGLOCATION=TOWN,BUILDING,X,Y,Z,WORLD,INSTANCE,CLILOCMSG (description of town)
Default setup:
YOUNGLOCATION=Yew,Center,545,982,0,0,0,1075072
YOUNGLOCATION=Minoc,Tavern,2477,411,15,0,0,1075073
YOUNGLOCATION=Britain,Sweet Dreams Inn,1495,1629,10,0,0,1075074
YOUNGLOCATION=Moonglow,Docks,4406,1045,0,0,0,1075075
YOUNGLOCATION=Trinsic,West Gate,1832,2779,0,0,0,1075076
YOUNGLOCATION=Magincia,Docks,3675,2259,26,0,0,1075077
YOUNGLOCATION=Jhelom,Docks,1492,3696,0,0,0,1075078
YOUNGLOCATION=Skara Brae,Docks,639,2236,0,0,0,1075079
YOUNGLOCATION=Vesper,Ironwood Inn,2771,977,0,0,0,1075080
STARTGOLD=1000
Amount of gold a new PC starts with.
STARTPRIVS=0
Starting privileges of new characters (UNUSED).
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.
TRACKHOUSESPERACCOUNT=1
Toggles whether house ownership is tracked per account (1) or per character (0).
CANOWNANDCOOWNHOUSES=1
Toggles whether players can both own and co-own houses at the same time.
COOWNHOUSESONSAMEACCOUNT=1
Toggles whether all characters on the same account will be treated as co-owners of a house owned by any character on that account.
ITEMDECAYINHOUSES=0
Toggles default decay status of non-locked down items in multis (houses and boats). Defaults to off.
PROTECTPRIVATEHOUSES=1
Toggles whether players are able to enter private houses or not, if they're not a co-owner, friend or guest of the house.
MAXHOUSESOWNABLE=1
Sets the max amount of houses that is ownable per player, either per account (if TRACKHOUSESPERACCOUNT is enabled) or per character (if not).
MAXHOUSESCOOWNABLE=10
Sets the max amount of houses that is co-ownable per player.
SAFECOOWNERLOGOUT=1
Allow co-owners to safely and instantly log out inside house.
SAFEFRIENDLOGOUT=1
Allow friends to safely and instantly log out inside house.
SAFEGUESTLOGOUT=1
Allow guests to safely and instantly log out inside house.
KEYLESSOWNERACCESS=1
Allow owner of house to use locked doors in house without key in pack.
KEYLESSCOOWNERACCESS=1
Allow co-owners of house to use locked doors in house without key in pack.
KEYLESSFRIENDACCESS=1
Allow friends of house to use locked doors in house without key in pack.
KEYLESSGUESTACCESS=0
Allow guests of house to use locked doors in house without key in pack.
OFFERBODSFROMITEMSALES=1
If enabled, shopkeepers might offer BODs when players sell items to them.
OFFERBODSFROMCONTEXTMENU=1
If enabled, shopkeepers might offer BODs via context menu option.
BODSFROMCRAFTEDITEMSONLY=0
If enabled, only selling of crafted items will trigger BOD offers.
BODGOLDREWARDMULTIPLIER=1
Reward multiplier for Gold given for completing a BODs - defaults to 1.0.
BODFAMEREWARDMULTIPLIER=1
Reward multiplier for Fame given for completing a BOD - defaults to 1.0.
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.
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_AUTOBANDAGE=0
Automatically apply bandages when low on health (UOSteam)
AF_ENEMYTARGETSHARE=0
Share enemy target in party/guild/alliance chat (UOSteam)
AF_FILTERSEASON=0
Force client to display a fixed season (UOSteam)
AF_SPELLTARGETSHARE=0
Share spell target in party/guild/alliance chat (UOSteam)
AF_HUMANOIDHEALTHCHECKS=0
Check health of nearby humanoid characters? (UOSteam)
AF_SPEECHJOURNALCHECKS=0
Check journal for specific messages sent from server (UOSteam)
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.
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.
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
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. Accepts a value after numerical/hexdecimal item IDs to randomize (using provided value) item being added.
Command: 'add
Parameters: (nothing) / (h) / (h rndVal) / item (s) / item (s rndVal) /npc (s) / spawner (s)
Examples:
'add npc orc
'add 0x04a9 (add base wooden floor tile)
'add 0x04a9 3 (add random base wooden floor tile between 0x04a9 and 0x04ac)
'add item 0x171a (add scripted feathered hat)
'add item 0x04a9 3 (add random scripted wooden floor between 0x04a9 and 0x04ac)
Adds an account. First string is username, second is password, hex parameter is privs (if any).
Command: 'addAccount
Parameters: (s s h)
Example: 'addAccount testuser testpass 0x0
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 targeted player's backpack.
Command: 'addPack
Parameters: (target) / (s) / HEX (h)
Examples:
'addPack (add backpack to targeted character)
Adds a new raw item to your current location. Accepts a value after the itemID to specify Z height to spawn item at.
Command: 'addX
Parameters: (h) / (h z)
Example: 'addX 0x04a9
Example: 'addX 0x04a9 10
Broadcasts text to all players online with command level of 3 and above.
Command: 'adminYell
Parameters: (text)
Example: 'adminYell Hello fellow admins!
Enables or disables a GMs ability to pick up all objects.
Command: 'allMove
Parameters: on / off
Example: 'allMove on
Enables or disables global announcement of worldsaves.
Command: 'announce
Parameters: on / off
Example: 'announce off
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
Animates a harmless lightning bolt on target.
Command: 'bolt
Parameters: (target)
Opens a specified website in user's default browser.
Command: 'browse
Parameters: (s)
Sets the brightest lightlevel in the day/night-cycles (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)
Command: 'brightLight
Parameters: (d / h)
Opens the "buy"-gump for specified vendor.
Command: 'buy
Parameters: (target)
Deletes all corpses and temporary moongates in the world.
Command: 'cleanup
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!
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)
Just displays some colourful stuff in the UOX3 console, just a test command =)
Command: 'consoleTest
Shortcut command to make targeted item a container, and set it to nondecay and movable 2.
Command: 'cont
Parameters: (target)
Perform 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
Opens a gump displaying the stats of the targeted character.
Command: 'cStats
Parameters: (target)
Sets the darkest lightlevel in the day/night cycles (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)
Command: 'darkLight
Parameters: (d / h)
Enables decay for the targeted item, after which it will follow regular rules for item decay.
Command: 'decay
Parameters: (target)
Can be used to save/load world template files, which can be used to quickly decorate a shard with objects of different types across one or more facets. Supported sub-commands: save (save items to templates), load (load items from templates), clean (remove duplicate items) and copy (copy items from one facet to another).
World templates are saved to/loaded from a subfolder of SCRIPTDATADIRECTORY (set in uox.ini) titled "worldtemplates", which by default can be found at uox3/js/jsdata/worldtemplates.
Command: 'decorate
Sub-Commands: save (params) / load (params) / clean / copy (params)
Params (save): (none) / (objCategory facetName) / (objCategory) / (facetName) / (customFileName)
Params (load): (none) / (objCategory facetName) / (objCategory) / (facetName) / (customFileName)
Params (copy): (sourceFacetName targetFacetName
Examples:
Deletes the targeted player-character.
Command: 'deleteChar
Parameters: (target)
Deletes ALL items in the world with specified ID.
Command: 'delID
Parameters: (h)
Disable spawn regions for the specified facet (0 = Felucca, 1 = Trammel, 2 = Ilshenar, 3 = Malas, 4 = Tokuno, 5 = Ter Mur), using facet ID or name. Also see enablespawns command.
Command: 'disablespawns
Parameters: (facetID / facetName)
Disconnects player connected to the specified socket.
Command: 'disconnect
Parameters: (d)
Sets the default lightlevel for dungeon areas (Day: 0x00. Traditional OSI night: 0x09. Pitch black: 0x1F)
Command: 'dungeonLight
Parameters: (d / h)
Duplicates a targeted item either once (if no amount specified) or d times
Command: 'dupe
Parameters: (nothing / d) (target)
Dyes an item or character the specified colour, or brings up the dye menu if no colour is specified.
Command: 'dye
Parameters: (h) (target)
Enable spawn regions for the specified facet (0 = Felucca, 1 = Trammel, 2 = Ilshenar, 3 = Malas, 4 = Tokuno, 5 = Ter Mur), using facet ID or name. Also see disablespawns command.
Command: 'enablespawns
Parameters: (facetID / facetName)
Targeted character (and character being fought) will stop fighting.
Command: 'endFight
Parameters: (target)
Find item at specified layer on targeted character.
Command: 'findItem
Parameters: (d / h) (target)
Attempts to fix incorrect Z coordinates, or teleports character to specified Z.
Command: 'fix
Parameters: (nothing) / (h)
Replaces legacy spawner objects that have incorrect item type
Command: 'fixSpawn
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)
Brings up an interactive list of online users.
Command: 'forceWho
Freezes the targeted object to the ground so it cannot be moved/picked up (also see: unfreeze)
Command: 'freeze
Parameters: (target)
Sets all temporary stats (hp, mana, stamina) on targeted character to full.
Command: 'fullStats
Parameters: (target)
Creates a moongate using the location set on targeted rune.
Command: 'gate
Parameters: (target)
Gets property of targeted object, value displayed in a system message. See set command for a list of properties that can be retrieved using this command.
Command: 'get
Parameters: (variable) (target)
Returns serial of the multi that the targeted object belongs to (is inside), if any.
Command: 'getMulti
Parameters: (target)
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)
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)
Gets ammotype on a bow - the ID of the items the bow uses as ammo. Also see setAmmoType command.
Command: 'getAmmoType
Parameters: (target)
Displays the current ingame lightlevel.
Command: 'getLight
Parameters: (nothing)
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
Gives glowing property to a targeted object.
Command: 'glow
Parameters: (target)
Opens the specified "Help" menu from menus.dfn.
Command: 'gmMenu
Parameters: (d)
Displays a list of all online GMs.
Command: 'gms
Parameters: (nothing)
Broadcasts message to all online GMs.
Command: 'gmYell
Parameters: (text)
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)
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
Enables/Disables town guards globally.
Command: 'guards
Parameters: on / off
Opens the specified Gump menu from gumps.dfn.
Command: 'gumpMenu
Parameters: (d)
Fully heals targeted character.
Command: 'heal
Parameters: (target)
Permanently hides targeted character. Also see unhide command.
Command: 'hide
Parameters: (target)
Enables or disables the display of houses as houseicons (deeds) instead of multis.
Command: 'houseIcons
Parameters: on / off
Opens a list of commands, with explanations of how to use each specific command.
Command: 'howTo
Parameters: (nothing)
Increments the X value of target by specified amount (can be a negative number).
Command: 'incX
Parameters: (d) (target)
Increments the Y value of target by specified amount (can be a negative number).
Command: 'incY
Parameters: (d) (target)
Increments the Z value of target by specified amount (can be a negative number).
Command: 'incZ
Parameters: (d) (target)
Displays info about the targeted map tile.
Command: 'info
Parameters: (target)
Displays a gump with information on the targeted item.
Command: 'iStats
Parameters: (target)
Opens specified item-menu.
Command: 'itemMenu
Parameters: (d)
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)
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)
Kicks targeted player off the server.
Command: 'kick
Parameters: (target)
Kills character, or removes specified item from character.
Command: 'kill
Parameters: char (target) / hair (target) / beard (target) / pack (target) / layer (d / h) (target) /
Kills specified percentage of ALL characters in the world, and broadcasts text.
Command: 'killAll
Parameters: (d) (text)
Link two doors together so that if one is opened, both will open. Also see unLinkDoors command.
Command: 'linkDoors
Parameters: (target1) (target2)
Loads the default uox.ini settings.
Command: 'loadDefaults
Parameters: (nothing)
Changes privileges of targeted character to either gm, counselor or player
Command: 'make
Parameters: gm (target) / cns (target) / player (target)
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)
Refills mana of targeted character.
Command: 'mana
Parameters: (target)
Marks a recall rune at the character's current location.
Command: 'mark
Parameters: (target)
Opens a gump displaying useful information on UOX3's memory usage.
Command: 'memStats
Parameters: (nothing)
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)
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.98.x).
Set the server minecheck status to either 0 (everywhere), 1 (only on mountainsides and cave floors) or 2 (miningregions only).
Command: 'mineCheck
Parameters: (d)
Moves targeted item into your backpack.
Command: 'moveToBag
Parameters: (target)
Mutes targeted player for specific amount of time, if any. If character is already muted, unmutes.
Command: 'mute
Parameters: (target) / (d) (target)
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 /
Disables decay for targeted item. Also see decay command.
Command: 'noDecay
Parameters: (target)
Makes targeted character perform specified animation.
Command: 'npcAction
Parameters: (d) / (h)
Sets bounding circle (x y radius) for targeted NPC.
Command: 'npcCircle
Parameters: (d d d)
Sets bounding box (x1 y1 x2 y2) for targeted NPC.
Command: 'npcRect
Parameters: (x1 y1 x2 y2)
Opens targeted player's bank box.
Command: 'openBank
Parameters: (target)
Opens specified layer on character, or the backpack if none specified.
Command: 'openLayer
Parameters: (nothing) / (d / h) (target)
Displays some information about UOX3's performance.
Command: 'pDump
Parameters: (nothing)
Polymorph yourself into specified creature body.
Command: 'poly
Parameters: (d) / (h)
Displays the current bulletin board posting mode for the players.
Command: 'post
Parameters: (nothing)
Adds item of specific hex-id at multiple targeted locations. If another number is provided at end of command, UOX3 will randomize (using number provided) the item being added.
Command: 'rAdd
Parameters: (h) (multiple target locations) / (h rndVal) (multiple target locations)
Adds item of specified item-id from DFNs at multiple targeted locations. If another number is provided at end of command, UOX3 will randomize (using number provided) the item being added.
Command: 'rAddItem
Parameters: (s) (multiple target locations) / (s rndVal) (multiple target locations)
Adds npc of specified npc-id from DFNs at multiple targeted locations.
Command: 'rAddNpc
Parameters: (s) (multiple target locations)
Dyes multiple targeted objects with specified color.
Command: 'rDye
Parameters: (h) (multiple targets)
Teleports your character to the location marked on a targeted rune.
Command: 'recall
Parameters: (target)
Teleports character to its current location. Potentially useful for players to refresh screen if encountering any visual glitches.
Command: 'refresh
Parameters: (nothing)
Get information on current region player is in. Also see xRegionInfo command.
Command: 'regionInfo
Parameters: (nothing)
Forces either ALL or specified spawnregions to spawn new objects.
Command: 'regSpawn
Parameters: (d) / all
Releases targeted character from jail.
Command: 'release
Parameters: (target)
Reloads a specific JS script by the scriptID assigned to it in jse_fileassociations.scp.
Command: 'reloadjsfile
Parameters: (d)
Deletes targeted item/NPC (if no parameters provided), or remove all items of a specified itemID from a targeted container.
Command: 'remove
Parameters: (target) / (itemID) (target)
Turns the targeted shopkeeper back into a normal character, removing the specific backpacks used for buying and selling items.
Command: 'removeShop
Parameters: (target)
Renames targeted object to specified text.
Command: 'rename
Parameters: (text) (target)
Writes out a bugreport to a file.
Command: 'reportBug
Parameters: (text)
Teleports character to its current location, and resends self to all nearby players.
Command: 'resend
Parameters: (nothing)
Forces all spawners in the world to run through a respawn cycle and spawn new objects.
Command: 'respawn
Parameters: (nothing)
Forces a manual vendor restock. if all is specified, restocks all vendors to maximum. If not, does normal restock.
Command: 'restock
Parameters: all / (nothing)
Resurrects targeted character from the dead.
Command: 'resurrect
Parameters: (target)
Increases X value of multiple targets by specified amount (can be a negative number).
Command: 'rIncX
Parameters: (multiple targets)
Increases Y value of multiple targets by specified amount (can be a negative number).
Command: 'rIncY
Parameters: (multiple targets)
Increases Z value of multiple targets by specified amount (can be a negative number).
Command: 'rIncZ
Parameters: (multiple targets)
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)
Removes multiple targeted items without having to reenter command.
Command: 'rRemove
Parameters: (multiple targets)
Lets the player teleport to multiple targeted locations in a row without having to reenter command.
Command: 'rTele
Parameters: (multiple target locations)
Sets multiple targeted objects to specified type without having to reenter command.
Command: 'rType
Parameters: (d) (multiple targets)
Forces a worldsave.
Command: 'save
Parameters: (nothing)
Sets the number of real-world minutes that pass for each UO minute.
Command: 'secondsPerUoMinute
Parameters: (d)
Opens the sell-menu of targeted shopkeeper.
Command: 'sell
Parameters: (target)
Sets property of targeted object to specified value.
Command: 'set
Parameters: (variable, see below) (target)
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 (physical) armour level of the character.
ac/armorclass/armourclass (d) - Set the AC/armour class of the item. Can be used to set race-restrictions for which items can be equipped, or to identify armours as cloth vs leather vs plate, etc.
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)
hunger (d) - Sets the current hunger level of the targeted character (0 = max hungry, 6 = full, not hungry)
invulnerable (d) - Toggles the character's invulnerability (0 = false, 1 = true)
language (d) - Sets the (socket) language for a player, which determines which language UOX3 uses when sending dictionary messages to said player.
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 - the maximum spell circle from which an NPC will cast spells in combat.
spdelay (d) - Sets the SPDelay value of the character - the minimum number of seconds between each time an NPC will cast spells in combat.
split (d) - Amount of creatures an NPC can split into (if script 3203 is attached).
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).
Characters (Account properties)
comment (d) - Sets comment/contact info (such as an e-mail address) of account
isBanned (d) - Toggles whether account is banned (0 = false, 1 = true)
isSuspended (d) -Toggles whether account is suspended (0 = false, 1 = true)
isPublic (d) - Toggles whether account contact/comment details are public (0 = false, 1 = true)
isSlot1Blocked (d) - Toggles whether character slot 1 is blocked on account (0 = false, 1 = true)
isSlot2Blocked (d) - Toggles whether character slot 2 is blocked on account (0 = false, 1 = true)
isSlot3Blocked (d) - Toggles whether character slot 3 is blocked on account (0 = false, 1 = true)
isSlot4Blocked (d) - Toggles whether character slot 4 is blocked on account (0 = false, 1 = true)
isSlot5Blocked (d) - Toggles whether character slot 5 is blocked on account (0 = false, 1 = true)
isSlot6Blocked (d) - Toggles whether character slot 6 is blocked on account (0 = false, 1 = true)
isSlot7Blocked (d) - Toggles whether character slot 7 is blocked on account (0 = false, 1 = true)
unused9 (d) - Toggles unused9 flag (0 = false, 1 = true)
unused10 (d) - Toggles unused10 flag (0 = false, 1 = true)
isSeer (d) - Toggles whether account is marked as Seer account (0 = false, 1 = true)
isCounselor (d) - Toggles whether account is marked as Counselor account (0 = false, 1 = true)
isGM (d) - Toggles whether account is marked as GM account (0 = false, 1 = true)
timeban (d) - Sets ban duration for account in minutes
(Read-Only properties, fetch with 'get command) - character1, character2, character3, character4, character5, character6, character7, currentChar, flags, id, isonline, lastip, username, firstLogin
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 physical resist/armor rating.
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 (used for magical items and Item-ID, for naming corpses, and body parts).
newbie (target) - Makes targeted item a newbie/blessed item.
poison (d) - Sets the poison strength applied to an item (weapon, food).
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.
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)
Sets ammotype on a bow - the ID of the items the bow uses as ammo. Also see getAmmoType command.
Command: 'setAmmoType
Parameters: (h) (target)
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)
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
Sets your character's race to specified raceid.
Command: 'setRace
Parameters: (d)
Assigns specified scriptID to targeted object.
Command: 'setScpTrig
Parameters: (d)
Sets the restock rate of all shops in the world (in minutes)
Command: 'setShopRestockRate
Parameters: (d)
Used to assign a value to a specified tag on a targeted object.
Command: 'setTag
Parameters: (s) (d)
Sets the current UO time in hours and minutes.
Command: 'setTime
Parameters: (d d)
Plays the specified sound effect.
Command: 'sfx
Parameters: (d)
Displays type info for targeted dynamic item.
Command: 'showDetail
Parameters: (target)
Display the serial number of every character on screen.
Command: 'showIDs
Parameters: (nothing)
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)
Displays the current UO time.
Command: 'showTime
Parameters: (nothing)
Initiates server shutdown sequence in d minutes.
Command: 'shutdown
Parameters: (d)
Changes the hue of your character's skin to specified color.
Command: 'skin
Parameters: (d) / (h)
Kills all characters spawned by specified spawnregion.
Command: 'spawnKill
Parameters: (d)
Same as Mute command; it "squelches" (mutes) targeted character either indefinitely or for a specified amount of seconds.
Command: 'squelch
Parameters: (target) / (d) (target)
Rejuvinates targeted character's stamina to full.
Command: 'stamina
Parameters: (target)
Opens the HTML status information gump.
Command: 'status
Parameters: (nothing)
Teleports you to the targeted location.
Command: 'tele
Parameters: (target)
Moves targeted object to targeted location.
Command: 'teleStuff
Parameters: (target1) (target2)
Sends a message to the user logged into the specified socket slot.
Command: 'tell
Parameters: (d) (text)
Displays the current temperature.
Command: 'temp
Parameters: (nothing)
Tiles the specified item over a targeted area. If coordinates are specified(x1 x2 y1 y2 z), will tile the item inside those coordinates, at specified Z height. If another number is provided at end of command, UOX3 will randomize (using provided number) the item being tiled
Command: 'tile
Parameters: (h) (target1) (target2) / (h rndVal) (target1) (target2) / (h x1 x2 y1 y2 z) / (h x1 x2 y1 y2 z rndVal)
Displays the current in-game time.
Command: 'time
Parameters: (nothing)
Shortcut for opening itemMenu 6000 - which is the GM Travel-menu.
Command: 'travel
Parameters: (nothing)
Opens the tweak menu allowing you to modify many settings on the targeted object. Objects that can be tweaked: Items, Spawners, Characters, Accounts (via Character tweak), Skills (via Character tweak), Multis, Regions (by targeting ground),
Command: 'tweak
Parameters: (target)
Character will completely undress all equipped items.
Command: 'undress
Parameters: (nothing)
Allows targeted object to move/be moved. Also see freeze command.
Command: 'unfreeze
Parameters: (target)
Removes the glowing attribute from an object which has it. Also see glow command.
Command: 'unglow
Parameters: (target)
Shows a player who has previously been permanently hidden. Also see hide command.
Command: 'unhide
Parameters: (target)
Displays all valid commands for your character.
Command: 'validCmd
Parameters: (nothing)
Displays your current x, y, z coordinates as well as world number and instance ID.
Command: 'where
Parameters: (nothing)
Displays a list of all online players, what slot they're connected to, and their serial number.
Command: 'who
Parameters: (nothing)
Displays a gump of all online (if no parameter) or offline (if OFF) players on your shard.
Command: 'whoList
Parameters: off / (nothing)
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
Displays information on an NPC's wander mode.
Command: 'wStats
Parameters: (target)
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 object 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)
Opens a gate to a specified location from locations.dfn
Command: 'xGate
Parameters: (d)
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)
Get information on current region a target character is in. Also see regionInfo command.
Command: 'xRegionInfo
Parameters: (target)
Makes targeted character/item say specified text.
Command: 'xSay
Parameters: (text) (target)
Broadcasts text to all players online with command level of 0 and above.
Command: 'yell
Parameters: (text)
Example: 'yell Hello all players!
Resets all players' kills back to 0.
Command: 'zeroKills
Parameters: (nothing)
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.
* - 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.
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 account data. Normally done during world saves.
@ - Save world data, and import new accounts added to newaccounts.adm.
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.
D - Disconnect player connected to first socket connection on server.
K - Disconnect ALL players.
Z - Disable network logging.
This contains a list of item types supported by UOX3. Item types are assigned to items and essentially tells UOX3 what should happen when these items are double-clicked, or targeted. Item type can be set via the item DFNs, via JS, or with the set type # GM command.
The IT_[NAME] descriptions below are used in the source code to reference the item types, and is included here for visibility. Use the numeric values when setting item types via command, DFN or script.
0 - IT_NOTYPE
No item type specified.
1 - IT_CONTAINER
Container. Can be trapped by setting MOREZ property to a value of 0x01320000, which marks the container as trapped (01), sets damage to deal to 50 (hex: 32), and will trigger Magic Trap spell if someone opens it. Bank-boxes have a MOREX of 1.
2 - IT_CASTLEGATEOPENER
Causes linked IT_CASTLEGATE object to open. Link to castle gate established via storing item serial of gate on opener's MORE property.
3 - IT_CASTLEGATE
Castle gate, raised/lowered by interacting with IT_CASTLEGATE object
6 - IT_TELEPORTITEM
Teleporter item/rune. When used, allows player to choose where to teleport to. Triggered via jse_typeassociations.scp and js/item/teleportrune.js
7 - IT_KEY
Keys are used to lock/unlock objects with locks (doors, containers) that share an identical MORE property value with the key. For example, if both a key and a door have been given the same MORE value of 1, that door can be locked/unlocked with the key. the same MORE property value as the key. To ensure unique setup of keys and locks, use a unique MORE value such as the SERIAL of the key or the lock.
8 - IT_LOCKEDCONTAINER
Locked container. Can be trapped by setting MOREZ property to 1, which will trigger Magic Trap spell if someone opens it. Turns into IT_CONTAINER (1) if unlocked.
9 - IT_SPELLBOOK
Spellbook. Empty by default, drop magic scrolls on it to add spells to the spellbook.
10 - IT_MAP
Opens an in-game world map, where a course can be plotted.
11 - IT_BOOK
Used to setup books that are writeable by players and/or readable only. Use 'set morex 666 to make a writeable book, and 'set morez 32 to give it 32 pages. Once the page has been opened (and created, server side), it is no longer possible to adjust the amount of pages it contains. Also note that each page can only hold 8 lines of text.
To convert a book with text already written in it to readable only, change MOREX to 999. Be vary of giving writeable books too many pages, as entire book is sent each time a writeable book is opened, or changed.
12 - IT_DOOR
Unlocked door. Can be locked using a key with a matching MORE value, after which the item type will change to 13 - IT_LOCKEDDOOR.
13 - IT_LOCKEDDOOR
Locked door. Can be unlocked using a key with a matching MORE value, after which the item type will change to 12 - IT_DOOR.
14 - IT_FOOD
Food that can be eaten by double-clicking the item. Some can also be used to feed pets, based on the individual pet's list of acceptable foods, defined using the NPC DFN tag food, which links to foodlists in dfndata/items/itemlists/foodlists.dfn
15 - IT_MAGICWAND
Players can use magic wands to cast spells without requiring magery skills, simply by double-clicking the wand. Use 'set morex # to set the spell circle, 'set morey # to set the spell number within circle, and 'set morez # to set the amount of charges in the magic wand.
16 - IT_RESURRECTOBJECT
Resurrection objects will resurrect dead player characters when the object is double-clicked.
17 - IT_CRYSTALBALL
Unused item type.
18 - IT_POTION
Magic potion. Type of potion is determined by MOREX value, while MOREZ determines the potion strength, which ranges from 1-4 depending on the type of potion.
Agility - MOREX 1, MOREZ 1 (Normal) or 2 (Greater)
Cure - MOREX 2, MOREZ 1 (Lesser), 2 (Normal) or 3 (Greater)
Explosion - MOREX 3, MOREZ 1 (Lesser), 2 (Normal) or 3 (Greater)
Heal - MOREX 4, MOREZ 1 (Lesser), 2 (Normal) or 3 (Greater)
Night Sight - MOREX 5, MOREZ unused
Poison - MOREX 6, MOREZ 1 (Lesser), 2 (Normal), 3 (Greater) or 4 (Deadly)
Refresh - MOREX 7, MOREZ 1 (Lesser) or 2 (Normal)
Strength - MOREX 8, MOREZ 1 (Normal) or 2 (Greater)
Mana - MOREX 9, MOREZ 1 (Normal) or 2 (Greater)
19 - IT_TRADEWINDOW
Container type used for secure trading between players. When players trade items via the secure trade window, the items temporarily go into a container with this item type.
35 - IT_TOWNSTONE
Townstone Deed if itemID equals 0x14F0, otherwise it's an actual Townstone. See separate feature documentation for more info.
50 - IT_RECALLRUNE
Recall rune, used along with the Mark, Recall and Gate spells. Marked location can be set manually using 'set morex # (X coordinate), 'set morey # (Y coordinate), 'set morez # (Z coordinate) and 'set more # (worldnumber).
51 - IT_GATE
When a player steps into a gate, they are teleported to another gate's location. The gates are either spawned automatically when using the Gate spell, but can also be setup manually (and permanently) by linking two separate gate objects together by setting their MOREX values to the other gate's serial.
60 - IT_OBJTELEPORTER
Object teleporters are similar to gates (IT_GATE), with the primary difference of being one-way teleporters instead of two-way like gates. Teleport location can be set using 'set morex # (X coordinate), 'set morey # (Y coordinate) and 'set morez # (Z coordinate). Players can trigger the teleporter by walking onto it, or by double-clicking it.
61 - IT_ITEMSPAWNER
Item spawner object that will spawn - at the item spawner's location - a specified item or list of items ('set spawnsection itemSectionID/itemListID) at a given, randomized interval ('set mininterval # and 'set maxinterval #). Spawner object must be added using 'add spawner # instead of 'add item # command, or it won't work!
DFN Tags: spawnobj, spawnobjlist, amount, interval
62 - IT_NPCSPAWNER
Like item spawners, NPC spawners are objects that will spawn a specified NPC or list of NPCs ('set spawnsection npcSectionID/npcListID) at a given, randomized interval ('set mininterval # and 'set maxinterval #) with the amount of NPCs to spawn ('set amount #'). Spawner object must be added using 'add spawner # instead of 'add item # command, or it won't work!
DFN Tags: spawnobj, spawnobjlist, amount, interval
63 - IT_SPAWNCONT
Item Spawner (Container). A container added as a spawner that can spawn an item inside the container at random intervals ('set mininterval # and 'set maxinterval #), based on an itemSectionID ('set spawnsection itemSectionID) or an itemList ('set spawnsection itemListID). Each time a new item spawns inside, the item type of the spawner changes to 64 - IT_LOCKEDSPAWNCONT! Can be trapped by setting MOREZ property to a value of 0x01320000, which marks the container as trapped (01), sets damage to deal to 50 (hex: 32), and will trigger Magic Trap spell if someone opens it. See Spawn Objects feature info for more details and examples on how to set these up in DFNs.
DFN Tags: spawnobj, spawnobjlist, amount, interval, morez
64 - IT_LOCKEDSPAWNCONT
When a spawn container of type IT_SPAWNCONT spawns an item inside the container, the item type changes to IT_LOCKEDSPAWNCONT, locking the container. This lock can be opened using the Picklocking skill or the Magic Unlock spell - at which point it will return to type IT_SPAWNCONT until another item has spawned. Can be trapped by setting MOREZ property to a value of 0x01320000, which marks the container as trapped (01), sets damage to deal to 50 (hex: 32), and will trigger Magic Trap spell if someone opens it. See Spawn Objects feature info for more details and examples on how to set these up in DFNs.
DFN Tags: spawnobj, spawnobjlist, amount, interval, morez
65 - IT_UNLOCKABLESPAWNCONT
Similar to IT_SPAWNCONT spawn containers, except this won't automatically lock itself when a new item is spawned. Can be trapped by setting MOREZ property to a value of 0x01320000, which marks the container as trapped (01), sets damage to deal to 50 (hex: 32), and will trigger Magic Trap spell if someone opens it. See Spawn Objects feature info for more details and examples on how to set these up in DFNs.
DFN Tags: spawnobj, spawnobjlist, amount, interval, morez
69 - IT_AREASPAWNER
Same setup as IT_NPCSPAWNER, but with the addition of offsets for X and Y location to allow spawner to spawn the NPCs randomly in an area instead of directly on top of the spawner object. To set those offsets, use 'set more 0 0 # #' (or 'set more 0x00 0x00 0x## 0x##) where the last two digits represents the X and Y offsets, i.e. how far away from the spawn object in X direction and Y direction can NPCs spawn.
Note: If the NPCs being spawned are setup with an NPCWander type of 3 or 4, make sure that the FX1, FY1 and FZ1 DFN tags for the NPC is set to -1. This is their default value, if not otherwise specified. This way, the NPC will use the spawn location coordinates as center point for their wandering, and they will stick within the range defined in FX2.
80 - IT_ADVANCEGATE
Single-use Advancement Gate. Setting MOREX value determines which section of UOX3/dfndata/advance/advance.dfn to apply when player steps through.
81 - IT_MULTIADVANCEGATE
Multi-use Advancement Gate. Setting MOREX value determines which section of UOX3/dfndata/advance/advance.dfn to apply when player steps through.
82 - IT_MONSTERGATE
Items of type 82 are Monster Gates, that transform player characters into NPCs when they step onto the same tile as the monster gate item. Use 'set desc npcSectionID to set the type of NPC characters will transform into!
83 - IT_RACEGATE
Race Gate objects are similar to Monster Gates in that they transform players who step through the gate/collide with the object. However, instead of transforming the player to a monster, this changes the character's race! Simply use 'set morex # where # is a race ID from UOX3/dfndata/race/races.dfn. Additionally, set the MOREY property to 1 to allow players to make use of the race gate more than once, or 0 to make it single-use only.
85 - IT_DAMAGEOBJECT
Damage objects applies damage to the character using or colliding with them. Set the base damage dealt using the MOREX item property/tag, and add a random amount of damage on top of that using MOREY and MOREZ properties/tags. Useful for traps in dungeons!
87 - IT_TRASHCONT
By assigning type 87 to a container, you turn it into a trash container that instantly disposes/deletes any item dropped onto it, indiscriminately. For an alternative with many additional options, check out the trashbarrel script in UOX3/js/server/house/trashbarrel.js
88 - IT_SOUNDOBJECT
Plays a sound effect whenever a player comes within range. Specify which SFX to play using 'set morex soundID, the range at which the sound effect will trigger using 'set morey radiusInTiles, and the probability of the sound playing, in %.
89 - IT_MAPCHANGEOBJECT
Map change objects can be used to teleport to another map/world on the server, like from Felucca to Trammel, or vice versa. To specify which world to travel to, use 'set more worldNum. Like type 60 (IT_), the teleport location can be set using 'set morex # (X coordinate), 'set morey # (Y coordinate) and 'set morez # (Z coordinate). Players can trigger the teleporter by walking onto it, or by double-clicking it.
90 - IT_WORLDCHANGEGATE
World Change Gates can display the world with season visuals for players, based on the value of the MOREX property set on the gate object. Available MOREX values: 0 - Spring, 1 - Summer, 2 - Fall, 3 - Winter, 4 - Desolation
101 - IT_MORPHOBJECT
Morph objects allow players that use them to polymorph into a specified creature, based on the bodyID set in the morph object's MOREX property (Example: 'set morex 0x0011 to morph into an orc). Once the object is used, the item type changes to 102 - IT_UNMORPHOBJECT.
102 - IT_UNMORPHOBJECT
Using an unmorph object will reverse the effects of a previously used morph object, and return a player's body back to its original state. Once the object is used, the item type changes to 101 - IT_MORPHOBJECT.
105 - IT_DRINK
Items with the item type 105 are considered drinkable objects. Usage handled in JS (UOX3/js/server/resource/pitchers.js).
106 - IT_STANDINGHARP
Musical instrument for music-related skills. Usage handled in JS (UOX3/js/skill/musicianship.js).
111 - IT_ZEROKILLSGATE
If a player steps through/onto a "Zero Kills Gate", their murder count gets reset to zero. No other configuration is required for this object.
117 - IT_PLANK
Planks are automatically added to boats upon creation, and are used for boarding/disembarking. Can be locked using boat key.
118 - IT_FIREWORKSWAND
Fireworks wand. Will display fireworks effects on screen upon use. Amount of charges can be set via the object's MOREX property.
125 - IT_ESCORTNPCSPAWNER
Escort NPC spawner used to spawn NPCs for escort quests. Same setup as IT_NPCSPAWNER, but with the addition of offsets for X and Y location to allow spawner to spawn the NPCs randomly in an area instead of directly on top of the spawner object. To set those offsets, use 'set more 0 0 # #' where the last two digits represents the X and Y offsets, i.e. how far away from the spawn object in X direction and Y direction can NPCs spawn.
Note: If the NPCs being spawned are setup with an NPCWander type of 3 or 4, make sure that the FX1, FY1 and FZ1 DFN tags for the NPC is set to -1. This is their default value, if not otherwise specified. This way, the NPC will use the spawn location coordinates as center point for their wandering, and they will stick within the range defined in FX2.
These spawners are only active if the NPC escort quests have been enabled in uox.ini via the ESCORTENABLED setting. Every time a quest NPC spawns, any message boards setup to show escort quests will get a new post.
186 - IT_RENAMEDEED
Rename Deed. Lets the player who uses it enter a new name for their character. After use, the rename deed is deleted.
190 - IT_LEATHERREPAIRTOOL
Leather Repair Tool. Setting an item to this item type marks it as a tool that can be used to repair the durability of a piece of leather armor that has lost hitpoints in combat.
191 - IT_BOWREPAIRTOOL
Bow Repair Tool. Setting an item to this item type marks it as a tool that can be used to repair the durability of bows and crossbows that have lost hitpoints in combat.
200 - IT_TILLER
Tillerman. Automatically assigned to the tillerman on board boats upon creation of those boats.
201 - IT_HOUSEADDON
House Addon. Upon using an item (usually a deed) marked with this item type while inside a house owned or co-owned by the player, they are asked to select a location where they'd like to place the house addon associated with the item used.
202 - IT_GUILDSTONE
If itemID of object with this type is 0x14F0, it's a guildstone deed. If it's 0x1869, it's a guildstone that has already been placed. In deed-form, using the object will place a new guildstone at the player's location.
203 - IT_HOUSESIGN
House sign! This item type is automatically assigned to house signs added when placing new player houses. When used, it will bring up a house gump/menu with contents depending on the player's ownership status/access level with the house. Note: The serial of the house will be stored in the sign's MORE property, while the sign's serial will be stored in the house's MORE property.
204 - IT_TINKERTOOL
Tinker Tool. Required by the Tinkerer profession to craft items.
205 - IT_METALREPAIRTOOL
Metal Repair Tool. Allows players to repair durability of metal armours and weapons that have lost hitpoints in combat.
207 - IT_FORGE
Forge. Can be used to smelt ore into ingots.
208 - IT_DYE
Dye. When used, will change the colour of a targeted dye tub/vat to match the colour of the dye object.
209 - IT_DYEVAT
Dye tub/vat. When used, can apply the colour contained in the dye tub to targeted cloth, clothing and some armours.
210 - IT_MODELMULTI
The boat equivalent of a house deed! When player's pack up a boat, they receive this item in their inventory, which can then be used to deploy the boat when needed.
211 - IT_ARCHERYBUTTE
Archery Butte! Can be used to practice Archery skill early on by holding a bow/crossbow with appropriate ammunition in the backpack, then double-clicking the archery butte from a good distance away (~7 tiles). Usage handled in JS (UOX3/js/item/archerybutte.js).
212 - IT_DRUM
Musical instrument for music-related skills. Usage handled in JS (UOX3/js/skill/musicianship.js).
213 - IT_TAMBOURINE
Musical instrument for music-related skills. Usage handled in JS (UOX3/js/skill/musicianship.js).
214 - IT_HARP
Musical instrument for music-related skills. Usage handled in JS (UOX3/js/skill/musicianship.js).
215 - IT_LUTE
Musical instrument for music-related skills. Usage handled in JS (UOX3/js/skill/musicianship.js).
216 - IT_AXE
Axe. Apart from being used in combat, it can also be used to chop things, like trees, house addons, create resources for fletching, etc. Usage handled in JS (UOX3/js/item/axe.js).
217 - IT_PLAYERVENDORDEED
Player vendor deed. Can be used to place a player vendor in a house owned by the player, who can sell the player's items to other players even when not online.
218 - IT_SMITHYTOOL
Smithing tool. Required by the Blacksmithing profession to craft items.
219 - IT_CARPENTRYTOOL
Carpentry tool. Required by the Carpentry profession to craft items.
220 - IT_MININGTOOL
Mining tool. Required by the Mining profession to mine ore.
221 - IT_EMPTYVIAL
Empty vial. Can be used on corpses to create reagents for necromancy!
222 - IT_UNSPUNFABRIC
Unspun wool. Can be spun into balls of yarn used by the Tailoring profession using a spinning wheel.
223 - IT_UNCOOKEDFISH
Uncooked fish. Can be fed to pets who like that type of food, or cooked on a campfire or in an oven to create cooked fish.
224 - IT_UNCOOKEDMEAT
Uncooked meat. Can be fed to pets who like that type of food, or cooked on a campfire or in an oven to create cooked meat.
225 - IT_SPUNFABRIC
Spun wool. Can be woven into cloth by the Tailoring profession using a loom.
226 - IT_FLETCHINGTOOL
Fletching tool. Required by the Fletching profession to create bows and arrows.
227 - IT_CANNONBALL
Unused item type.
228 - IT_WATERPITCHER
Water pitcher. Can be filled with liquids like water, ale, wine. Can be used to pour liquids into other containers like bottles, glasses, mugs, etc. When filled with water, also used by the Cooking profession to create stuff like dough.
229 - IT_UNCOOKEDDOUGH
Unused item type.
230 - IT_SEWINGKIT
Sewing kit. Can be used by the Tailoring profession to craft clothes.
231 - IT_ORE
Ore. Item type is applied to ore mined from the ground. Can be combined with other ore items, or smelted on a forge.
232 - IT_MESSAGEBOARD
Message board. Can be used by players to post in-game messages for other players to read. Can also be used by NPC escort quest system to post automatic notices when there are quest NPCs awaiting escorts somewhere.
233 - IT_SWORD
Sword/Bladed weapon. Can be used for a variety of purposes like cutting fish into fish steaks, carving meat from corpses, crafting bows from logs, make kindling, etc.
234 - IT_CAMPING
Kindling. Used with Camping skill to create a campfire, which can be used to cook food or instantly log out in the wilderness when used along with a sleeping bag.
235 - IT_MAGICSTATUE
Magic statue. Drops axe if player passes Item Identification skill-check.
236 - IT_GUILLOTINE
Guillotine. Plays an animation if player passes Item Identification skill-check.
238 - IT_FLOURSACK
Sack of flour. Used by Cooking profession to create baked goods. Turns into open sack of flour when used.
239 - IT_OPENFLOURSACK
Open Sack of flour. Used by Cooking profession to create baked goods.
240 - IT_FISHINGPOLE
Fishing pole. Used by the Fishing profession to fish.
241 - IT_CLOCK
It's a clock. It shows the time.
242 - IT_MORTAR
Mortar and pestle. Used by Alchemy profession to grind magical reagents into potions!
243 - IT_SCISSORS
Scissors. Can be used to cut bolts of cloth into cut cloth, cut folded or cut cloth (or clothes!) into bandages, cut hides into leather, or to shear wool from sheep!
244 - IT_BANDAGE
Bandage. Can be used with the Healing skill to heal injured characters. Can be created by cutting up cloth using scissors!
245 - IT_SEXTANT
Sextant. Usable by anyone to display their in-game coordinates in the world.
246 - IT_HAIRDYE
Hair dye. When used, will bring up a gump menu with multiple colour choices, which the player can apply to their hair.
247 - IT_LOCKPICK
Lockpick. Can be used by characters with the Lockpicking profession to unlock locked doors and containers, if these are not associated with a player house. Consumed on use.
248 - IT_COTTONPLANT
Cotton plant. Can be harvested by anyone for cotton. Once harvested, requires some time to regrow.
249 - IT_TINKERAXLE
Axles and gears. Can be combined with one another by the Tinkerer profession to create Axle with Gears, needed for more advanced Tinkering. Consumed on use.
250 - IT_TINKERAWG
Springs, bolts and misc items used by the Tinkerer profession to craft parts needed for more advanced Tinkering. Consumed on use.
251 - IT_TINKERCLOCK
Clock parts. Can be combined with other clock parts by the Tinkerer profession to create clocks to show the current in-game time. Consumed on use.
252 - IT_TINKERSEXTANT
Sextant parts. Usable by Tinkerer profession to create sextants. Consumed on use.
253 - IT_TRAININGDUMMY
Training dummy. Can be used to practice the Tactics combat skill up until player reaches 25.0 skillpoints in that skill.
255 - IT_COUNT
The final item type in the list, and the one type that serves no gameplay function. However, it is used by some tools to identify items to "freeze" into the statics files.
This is a list of item layers supported by UOX3. Item layers says something about where items will ideally be equipped on a character, though this can also be dependent on what the client allows or not. Item layers can be set via item DFNs, JS or with the 'set layer # GM command.
Colours can be applied to objects via DFN tags (colour=#), GM commands ('dye #, 'set colour #) or JavaScript (myItem.colour = #). They can also be applied to text via parameters in JS Object Methods such as TextMessage and EmoteMessage, and in Gump Methods such as AddGump and AddText. Note that not all these colours can be set by the plain 'dye command and/or dye tubs in the game.
This list of colours that can be used to change the appearance of objects (and text) in the UO client is not by any stretch complete, but will hopefully serve as a quick-guide for what is possible to do with colours in the game.
Parts of this list was originally created/presented by Fearicon as far back as 1998! If a range of colours is listed, the first value in the range is generally a lighter shade of that colour, while the last value is a darker shade.
General
0x0000 // Default/Undyed
0x0001 // Solid/Pure Black
0x096d // Gold
0x096c // Dark Grey
0x066d // Dark Red
0x0599 // Dark Green
0x084e // Lime Green
0x054a // Teal Green
0x0544 // Blue-Green
0x084c // Medium Blue
0x052f // Dark Blue
0x084d // Yellow
0x051d // Purple Black
0x051e // Pearl Blue
0x83F8 // Flesh
Default Colours
0x0002 - 0x03E9 // Colours you get when using 'DYE without parameters
0xF000 // Transparent Skincolour
0x03EA - 0x0422 // Skincolours with dyed undewear
0x83EA - 0x8422 // Skincolours without dyed underwear
0x0423 - 0x044D // Multicoloured
Hair Colours
0x044E -> 0x0455 // Black
0x0456 -> 0x045D // Bronze
0x045E -> 0x0465 // Gold
0x0466 -> 0x046D // Yellow Gold
0x046E -> 0x0475 // Copper
0x0476 -> 0x047D // Dark Copper
Special Colours
0x0480 // Ice Blue
0x0481 // Snow White
0x0482 // Cold Flesh Colour
0x5555 // Smoke Colour
Misc Colours
0x0481 -> 0x04B0 // Multicoloured
0x04B1 -> 0x04B9 // Red
0x04BA -> 0x04C2 // Red
0x04C3 -> 0x04CB // Red
0x04CC -> 0x04D4 // Blueish Red
0x04D5 -> 0x04DD // Blueish Red
0x04DE -> 0x04E6 // Blue
0x04E7 -> 0x0514 // Multicoloured
0x0515 -> 0x051D // Blue
0x051E -> 0x0526 // Blue
0x0527 -> 0x052F // Blue
0x0530 -> 0x0538 // Blue
0x0539 -> 0x0541 // Blue
0x0542 -> 0x054A // Blue
0x054B -> 0x0578 // Multicoloured
0x0579 -> 0x0581 // Blueish Green
0x0582 -> 0x058A // Green
0x058B -> 0x0593 // Green
0x0594 -> 0x059C // Green
0x059D -> 0x05A5 // Brownish Green
0x05A6 -> 0x05AE // Brownish Green
0x05AF -> 0x05DC // Multicoloured
0x05DD -> 0x05E5 // Brown
0x05E6 -> 0x05EE // Brown
0x05EF -> 0x05F7 // Brown
0x05F8 -> 0x0600 // Brown
0x0601 -> 0x0609 // Brown
0x060A -> 0x0612 // Reddish Brown
0x0613 -> 0x0640 // Multicoloured
0x0641 -> 0x0649 // Pink
0x064A -> 0x0652 // Pink
0x0653 -> 0x065B // Pink
0x065C -> 0x0664 // Pink
0x0665 -> 0x066D // Red
0x066E -> 0x0676 // Red
0x0677 -> 0x06A4 // Multicoloured
0x06A5 -> 0x06AD // Greenish Brown
0x06AE -> 0x06B6 // Greenish Brown
0x06B7 -> 0x06BF // Greenish Brown
0x06C0 -> 0x06C8 // Brown
0x06C9 -> 0x06D1 // Brown
0x06D2 -> 0x06DA // Brown
0x0709 -> 0x0711 // Brownish Green
0x0712 -> 0x071A // Brownish Green
0x071B -> 0x0723 // Brownish Green
0x0724 -> 0x072C // Brown
0x072D -> 0x0735 // Brown
0x0736 -> 0x073E // Brownish Red
0x073F -> 0x0747 // Brownish Red
0x0748 -> 0x0750 // Brownish Red
0x0751 -> 0x0759 // Greyish Red
0x075A -> 0x0762 // Grey with a little red
0x0763 -> 0x076B // Grey with a little blue
0x076C -> 0x0774 // Greyish Blue
0x07D1 -> 0x07D6 // Green
0x07D7 -> 0x07DC // Beige
0x07DD -> 0x07E2 // Red
0x0835 -> 0x083A // Blue
0x083B -> 0x0840 // Beige
0x0841 -> 0x0846 // Red
0x0847 -> 0x084C // Blue
0x084D -> 0x0852 // Yellow - Green
0x0899 -> 0x089E // Red
0x089F -> 0x08A4 // Green
0x08A5 -> 0x08AA // Beige
0x08AB -> 0x08B0 // Blue
0x08FD -> 0x0902 // Silver
0x0903 -> 0x0908 // Gold
0x0909 -> 0x090E // Bronze/Copper
0x0961 -> 0x0966 // Silver
0x0967 -> 0x096C // Silver
0x096D -> 0x0972 // Gold
0x0973 -> 0x0978 // Silver-Gold
0x0979 -> 0x097E // Copper-Gold
For additional colours, experiment with the numbers - or check out one of the tools that can show an overview of all the colours in the game, such as UOFiddler!
Characters can be dyed with partial-hues, where only some parts of the character gets the selected colour, and other parts are left as the original colour. By adding 0x8000 to a colour you want to apply to a character, the partial-hue flag for said character will be enabled in the client. For instance... if you use 'dye 0x0279 on your human character, the entire character will receive that colour, including the loincloth. However, if you use 'dye 0x8279 (0x0279 + 0x8000), only the body receives the colour, while the loincloth is left at its original colour!
This applies to many other creatures in the game as well; with the partial-hue flag, a panther's eyes will remain glowing even if you dye the rest of the panther pink. A sheep's wool will stay white, even if the rest of the NPC is dyed green. Note that this only applies to characters - items don't support this partial-hue flag (although some items, like the jester suit, will only have some parts dyed by default).
Similarly, you can make any creature look "ethereal" by giving it the hue 0x4001 (actually, any hue between 0x4001 and 0x7fff should work, but they all look the same, so no point using anything else!). Example: 'dye 0x4001 on a forest ostard NPC will turn it ethereal.
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!
UOX3/dfndata/maps/tiles.dfn allows overriding flags/properties stored in tiledata.mul for different tiles in UO, which UOX3 uses for purposes such as determining whether a surface is walkable, climbable (ladders) or blocks line of sight. It is most commonly used to address 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)
}
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
// Additional flags added with High Seas expansion, purpose unknown:
ALPHABLEND - Unknown
USENEWART - Unknown
ARTUSED - Unknown
NOSHADOW - Unknown
PIXELBLEED - Unknown
PLAYANIMONCE - Unknown
MULTIMOVABLE - Unknown
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 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.
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:
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.
Second, download the latest version of UOFiddler from the link above, unzip it, and start 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.
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!
Follow the steps below for your preferred platform if you wish to download and compile the UOX3 source directly from GitHub yourself. These instructions are also available in UOX3's GitHub repository.
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
GitHub Desktop users can change the active branch via the Current Branch dropdown menu in GitHub Desktop.
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) in a Terminal. This also works on Windows/macOS as an alternative to compile with IDEs:
Replace "Release" with "Debug" in the above instructions to create a debug-build; delete make/cmake/build directory to do clean builds.
If you'd rather use GCC (v9.x or higher)/make (GNU Make 4.2.1 or higher) than CMake, you can follow these manual steps. Note that for FreeBSD, this approach requires installing gmake as an alternative to make: pkg install gmake
First, navigate to spidermonkey directory and run these commands:
make -f Makefile.ref DEFINES=-DHAVE_VA_LIST_AS_ARRAY CC=gcc (Linux)
ar -r libjs32.a Linux_All_DBG.OBJ/*.o (Linux)
cp Linux_All_DBG.OBJ/jsautocfg.h ./ (Linux)
gmake -f Makefile.ref DEFINES=-DHAVE_VA_LIST_AS_ARRAY CC=clang (FreeBSD)
ar rcs libjs32.a FreeBSD_DBG.OBJ/*.o (FreeBSD)
cp FreeBSD_DBG.OBJ/jsautocfg.h ./ (FreeBSD)
Next, head to the zlib directory:
cd ../zlib
make distclean
./configure
make
Finally, head to UOX3/source directory:
cd ../source
make (Linux)
gmake (FreeBSD)
If your version of gcc is below 9.x, you'll need to add -lstdc++fs in Makefile to include the experimental filesystem library from c++17.:
Change the following line (~34) from
$(CXX) $(CXXFLAGS) -o $(TARGET) $^ $(LDFLAGS)
to
$(CXX) $(CXXFLAGS) -o $(TARGET) $^ $(LDFLAGS) -lstdc++fs
When using VS2017, static libraries of the dependency projects (SpiderMonkey and zlib) need to be compiled prior to the UOX3 project. However, after those sub-projects have been compiled once, they never need to be compiled again, and from that point on only the build instructions for UOX3 itself applies:
Once done compiling, you can copy the compiled UOX3 binary/executable to the directory you intend to run your UOX3 shard from, along with all the files and folders contained in the UOX3/data subdirectory. Where you'll find the compiled UOX3 binary/executable depends on your platform and build method. Examples:
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.
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!
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, any of which can make a difference:
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 entirely new and exciting!
Before venturing on a grand coding adventure, pause for a moment and take a peek at the UOX3 Style Guide for Code. Sticking closely to the guidelines in that document increases the chance that one's code submissions can be included/merged into the main UOX3 codebase, and also helps ensure that all (new, if not all old) code follows a consistent style. This makes it easier to read and understand the codebase.
The Adaptive Performance System (APS) dynamically adjusts how often NPC AI/movement is checked based on overall shard performance.
If performance drops below a defined threshold, UOX3 gradually deprioritizes these checks in favor of player movement/speech/command responsiveness. Once performance climbs back up above the threshold, the balance gradually shifts back.
The overall intention of the feature is to ensure both players and GMs are not prevented from executing their actions despite potentially heavy load on the shard.
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.
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
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)
Once those tags have been added in the Item DFNs, the next step is to setup the "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.
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 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!
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):
// 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.
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.
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.
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)
This system allows players to earn gold, fame and special items by completing Bulk Order Deeds (BOD) that are randomly offered to players who sell goods to relevant shopkeepers. BODs are basically requests by shopkeepers for the player to craft a specific amount of items of a particular type and/or quality, such as 10 longswords, or 7 chainmail tunics, etc.
Currently, this is only implemented for the Blacksmithing skill, and BODs are only offered by and can be completed for the following NPCs, with the type of NPC determining the type of items being requested in the BOD: blacksmiths, armorsmiths and weaponsmiths.
When a BOD is offered, the player sees a gump with information about what kind of item is required to complete the BOD, and how many. At this point, the player can choose to decline or accept the offer.
If the player accepts the offer, they receive a BOD item, which can be double-clicked to see the requirements again. The player can also drag and drop items they have crafted onto the BOD item, which will be absorbed by the BOD if they meet the requirements.
Once the BOD has been filled with all the required items, the player can hand it into a NPC of the same type, and they'll receive some rewards in return.
Upon completion of a BOD, the player is rewarded with Gold, Fame and a special item. The amount of Gold/Fame, and how special the item they receive is, depends on the difficulty of filling the BOD.
If CoreShardEra setting in uox.ini is LBR or lower, these items are available:
If CoreShardEra setting is AoS or higher, a few additional items are available:
Relevant scripts:
The feature comes with some uox.ini settings for easy customization:
Character priv flags can be used to give additional privileges to certain characters, whether players or NPCs. These privs are stored in a 16-bit large bitset field for each character, where each bit represents a 0/1 flag that is either enabled or disabled for the character in question. Using this approach we can be more efficient when it comes to storing these flags in world saves, compared to storing each individual flag as its own data entry.
For example, an NPC with a PRIV=0x4 tag in its definition setup will have the Invulnerable flag enabled, while a player with a priv value of 0x40 would be allowed to snoop freely in other characters' backpacks without using the Snooping skill (usually a privilege restricted to GMs!).
Multiple priv flags can be set on a character at the same time. Example: When the 'make GM command is used to turn a regular player into a GM, that player also receives the following privs behind the scenes: GM (0x1), Broadcast (0x2), Invulnerable (0x4), SingleClickSerial (0x8), GM Pageable (0x20), Snoop Freely (0x40), NoNeedMana (0x800) and NoNeedReags (0x4000) for a combined priv value of 0x1 + 0x2 + 0x4 + 0x8 + 0x20 + 0x40 + 0x800 + 0x4000 = 0x486f
Another example would be an NPC that's both Frozen (0x200, unable to move) and Dispellable (0x1000, can be dispelled using the magic spell Dispel): 0x200 + 0x1000 = 0x1200
Note that privs listed in Red are specific to Players, while the ones listed in Blue are shared between both Players and NPCs.
0x1 - GM (Character is a GM)
0x2 - Broadcast (Character can broadcast globally on server)
0x4 - Invulnerable (Character is invulnerable to damage?)
0x8 - SingleClickSerial (Show character serials on single click/all-names)
0x10 - Show Skill Titles (Show skill titles in paperdoll)
0x20 - GM Pageable (Character can answer GM Pages from players)
0x40 - Snoop Freely (Character can snoop freely in backpacks independent of snooping skill)
0x80 - Counselor (Character is a Counselor)
0x100 - AllMove (Character can move any dynamic item)
0x200 - Frozen (Character is frozen and cannot move)
0x400 - ViewHouseAsIcon (Character views multis as item deeds instead of multis)
0x800 - NoNeedMana (Character doesn't need mana to cast spells)
0x1000 - Dispellable (Character can be dispelled by the Dispel spell)
0x2000 - TempReflected (Character has a temporary magic reflection spell active)
0x4000 - NoNeedReags (Character doesn't need reagents to cast spells)
0x8000 - PermReflected (Character has a permanent magic reflection spell active)
Priv flags can be pre-defined for NPCs via the PRIV=# DFN tag, or can be get/set dynamically via the Character JS property .priv in JS scripts.
The core of the crafting system in UOX3 is setup in a series of DFN files, usually one per crafting skill, that all exist in the UOX3/dfndata/create/ folder. Each of these files contain a number of references to menus, submenus, items and resources, which altogether are used by UOX3 to create the in-game crafting menus you see when using the appropriate crafting tools and skills.
When interpreting these files and creating the in-game crafting menus, UOX3 starts by looking up the first [SUBMENU #] section it can find, and by default that can be found in smithing.dfn, and looks like this:
[SUBMENU 1]
{ Blacksmithing
MENU=1 // armor
MENU=2 // shields
MENU=3 // weapons
}
Note: The ID used for a SUBMENU section must be unique (across all create DFN files), and the same is true for the other menu-specific sections in the create DFN system, like MENUENTRY and ITEM (see below).
The above sub-menu contains three MENU entries - for armor, shields and weapons respectively - which are references to [MENUENTRY #] sections defined in the same file. Here's an example of one of them, for shields:
[MENUENTRY 2]
{
NAME=Shields
ID=0x1b74
SUBMENU=3
}
Each such [MENUENTRY #] section contains both an item ID (for an item that is displayed to represent an "item/menu category" in the crafting menu), and another SUBMENU reference. Following said reference takes us to the [SUBMENU 3] section, which contains some ITEM entries:
[SUBMENU 3]
{ Shields
ITEM=367
ITEM=2
ITEM=3
ITEM=4
ITEM=5
ITEM=6
MENU=0
}
These entries refer directly to [ITEM #] sections defined further down in the same file, which contain all the requirements needed to craft an item, as well as the item properties that will be assigned to the crafted item after it has been made, such as colour, rank, etc. An example, let's look at the item referenced by the ITEM=2 entry:
[ITEM 2]
{
NAME=bronze
ID=0x1b72
RESOURCE=0x1bf2 12
SKILL=7 0 150
ADDITEM=0x1b72
MINRANK=1
MAXRANK=10
SOUND=0x002A
}
When one of these ITEM entries are selected in the crafting menu, UOX3 first checks that the player meets the crafting requirements as defined in the ITEM section, allows or denies the crafting attempt, and then returns either a failure or success to the player based on a combination of skill-checks and random luck.
Success will cause the defined amount of resources to be consumed as part of the crafting process, and in return the player is given the final crafted item. Failure will cause a small amount of resources to go to waste, with no crafted item being given to the player.
Named resource types such as WOOD, LEATHER or CLOTH can be used as resource requirements instead of direct references to specific resource IDs. This allows for a setup where crafting particular items can be done using any resource ID that belongs to a given, named resource type, rather than being restricted to any one particular resource ID.
For instance, instead of saying "this item requires a resource with ID 0x175d (folded cloth) to craft", which would make it impossible to craft the same item using a similar resource with ID 0x1768 (cut cloth), we can say "this item requires a resource of type CLOTH to craft". As an example, RESOURCE=CLOTH 12 would allow a player to craft an item using any CLOTH resource.
The named resource types, and the resource IDs that fit in under those types, are defined in UOX3/dfndata/create/resources.dfn. Here's an example of the CLOTH resource type from that file:
[RESOURCE CLOTH]
{
ID=0x175d
ID=0x175e
ID=0x175f
ID=0x1760
ID=0x1761
ID=0x1762
ID=0x1763
ID=0x1764
ID=0x1765
ID=0x1766
ID=0x1767
ID=0x1768
}
Any and all of the above listed resource IDs will be counted as CLOTH by the crafting system, allowing for a much more flexible and user-friendly crafting process!
MENU - menu-system tag that points to a MENUENTRY section.
SUBMENU - menu-system tag that points to a SUBMENU section.
ITEM - menu-system tag that points to an ITEM section.
NAME - the label applied to the item when shown in the crafting menu, which is not necessarily a reflection of the name of the actual item that will be crafted in the end.
ID - the artwork ID used to display the item in the crafting menu.
COLOUR - colour associated with item (unused, but present in Create entry generated - could be used by scripts).
RESOURCE - contains the ID and/or resource type (see below) of the resource required to craft the item, as well as optional amount and colour values. In this case the colour tag is omitted, but the amount is specified, so 12 items with the ID 0x1bf2 (and the colour 0) are required to craft this item. Each item entry can contain multiple RESOURCE tags, if more than one type of resource is required to craft an item.
SKILL - the skill ID of a skill required to craft the item, along with minimum (minimum skill-points to be able to attempt crafting the item) and maximum (skill-points higher than which player will always succeed) skill-point values. Each item entry can contain multiple SKILL tags, if more than one skill is required to craft an item.
ADDITEM - the tag pointing to the [section header] name of the actual item that will be crafted, as defined in the item DFNs in UOX3/dfndata/items/
MINRANK - represents the minimum item rank that can be randomly applied to the crafted item based on the rank system, which can cause items to become weaker or stronger than average.
MAXRANK - represents the maximum item rank that can be randomly applied to the crafted item based on the rank system, which can cause items to become weaker or stronger than average. If rank system is off, the default rank value is 10.
SOUND - the sound FX that plays when the item is being crafted.
In addition, there are some supported tags not used in the above example:
DELAY - the delay in milliseconds before the crafting process completes and the item has been crafted.
SPELL - the spell ID of a spell required to be in the player's possession (in a spellbook) in order to craft the item. Primarily used by the Inscription skill.
The rank system is an extension of the crafting system that calculates a "quality rank" for crafted items based on a player's average skill in all skills required to craft the item, and on the MINRANK and MAXRANK tags of the item's entry in the create DFNs, which by default ranges from 1 to 10. Depending on the calculated rank, a modifier is applied to some of the item's base properties. The system can be enabled/disabled via the RANKSYSTEM=1/0 setting in UOX.INI.
The item properties affected by the rank system, if enabled:
lodamage/hidamage
ar/physical resist
hp/maxhp
buyvalue/sellvalue/
These properties are modified according to the following formula:
newPropertyVal = (( rank * propertyVal ) / 10 )
Thus, an item with a calculated final rank of 10 will not be modified, while any rank below 10 will reduce the values of the above properties for the item by -10% per rank below 10.
Calculation of rank takes place as part of the crafting process. First, a range of potential ranks is determined based on the values of the MINRANK and MAXRANK tags for an item in the create DFNs. Then, for each skill required to craft the item, the system calculates a temporary rank based on the player's skill, random chance, and a UOX.INI setting (SKILLLEVEL=7) which acts as a global modifier to the system to make it easier (low SKILLLEVEL value) to get high rank items, or harder (high SKILLLEVEL value) to get high rank items. A value of 10 makes the difficulty roughly similar to the difficulty of the official UO shards around the LBR era.
When a temporary rank has been calculated for all skills required to craft the item, the average of all these is chosen as the item's final rank, and the modifiers are permanently applied to the item's properties.
UOX3 comes with a custom, multilingual dictionary system that allows shard admins to set up and translate their own system and script messages to any language supported by UOX3 and 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 - in any language supported by server and using any font displayable in the client - without needing to patch the client, 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.
By default, UOX3 will attempt to send messages to connected clients in whichever language is specified by the client, but will fall back to the default language (English) if the language set in the client is not supported, or if the message in question does not exist in the dictionary for that language.
However, via the UOX.INI setting SERVERLANGUAGE, shard admins can specify a fixed language for the server, and if set, all messages to connected clients will be sent in this language.
0 - ZRO (Default - English, used when unknown language code is returned from client )
1 - ENG (English - ENU, ENG, ENA, ENC, ENZ, ENI, ENS, ENJ, ENB, ENL, ENT, ENW, ENP)
2 - GER (German - DEU, DES, DEA, DEL, DEC)
3 - SPA (Spanish - ESP, ESM, ESN, ESG, ESC, ESA, ESD, ESV, ESO, ESR, ESS, ESF, ESL, ESY, ESZ, ESB, ESE, ESH, ESI, ESU)
4 - FRE (French - FRA, FRB, FRC, FRS, FRL, FRM)
5 - PTG (Portuguese - PTG, PTB)
6 - ITA (Italian - ITA, ITS)
7 - CSY (Czech - CSY)
8 - POL (Polish - POL)
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.
If using the ClassicUO client, the client language can be changed by changing the lang setting in that client's settings.json file. Supported language codes (as of 27/07/2021) in this client: "RUS", "FRA", "DEU", "ESP", "JPN", "KOR", "PTB", "ITA", "CHT".
Alternatively, it's also possible to set a specific language for a player's socket either through a script (for instance via a custom menu that could allow players to choose which language to use) or via the GM command 'set language #. See below for a full list of language IDs that can be set in this manner:
By default, UOX3 is setup with a very simple, yet customizable mining system, with some options in uox.ini to determine certain basic things. More extensive customizations can be done via the mining script (js/skill/mining.js).
[resources]
{
MINECHECK=1 // Determines where players can mine for ore (0 = Anywhere, 1 = Mountains and cave floors)
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
}
The 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]
{
Iron
DullCopper
ShadowIron
Copper
Bronze
Gold
Agapite
Verite
Valorite
}
Each ore type is then defined and fleshed out in more detail in a section of their own, just below the [ORE_LIST] section, in the same file. If adding new ore types to the list, remember to also add a definition for each one!
[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 // 0 skillpoints in mining required to mine this ore type
NAME=iron // Name of the ore, shown to player when they find some while mining
ORECHANCE=500 // Default chance (50.0%) of finding ore type while mining, if no OREPREF tags are present in region.
}
[DullCopper] // A second ore type, with a unique section ID
{
COLOUR=0x0973
MAKEMENU=200
MINSKILL=650 // 65.0 skillpoints in mining required to mine this ore type
NAME=dull copper
ORECHANCE=112 // 11.2% chance of finding ore type while mining, if no OREPREF tags are present in region
}
Note that the sum total of all ORECHANCE values for all ore types (including ones not listed in this example) does not have to add up to 1000, but doing that makes it easier to conceptualize the chance to mine each ore type: 500 becomes 50.0%, 112 becomes 11.2%, etc. Compare to a setup where the values all add up to 750 instead: 500 becomes (500/750)*100 = ~66.67%, 112 becomes (112/750)*100 = ~14.9%. Not so straight forward to calculate in the head!
By default, the MINECHECK=1 setting in uox.ini allows players to mine any ore from any mountain anywhere, as long as they meet the minimum skill requirement for mining a given type of ore. This means, however, that skilled miners can mine the most valuable ores from any old mountain/cave, even if it's just outside the safe zone of a major city.
However, the OREPREF tag supported by the Region system gives shard admins some extra control over where players can find the defined ore types.
For instance, the types of ore a player will find in a given region (UOX3/dfndata/regions/regions.dfn) can be regulated by attaching to those regions one or more OREPREF=[oreType,oreChanceWeight] tags - one per ore type to be found in the region, where oreType is one of the ores listed in [ORE_LIST] section, and oreChanceWeight is a weighted value from 0 to ~1000 indicating the chance to find that ore type in the region relative to other available ore types.
This is an example of a custom region setup in UOX3/dfndata/regions/regions.dfn with ore preferences that control what type of ore a player can find in the region, and what the likelihood of finding each ore is:
[REGION 12]
{
NAME=the town of Minoc
MUSICLIST=6
GUARDED=1
GUARDLIST=guard
GUARDOWNER=The Town
MAGICDAMAGE=1
MARK=1
GATE=1
RECALL=1
ESCORTS=1
X1=2395
Y1=430
X2=2555
Y2=573
...
X1=2485
Y1=650
X2=2575
Y2=695
OREPREF=DullCopper,500
OREPREF=Verite,300
OREPREF=Valorite,150
OREPREF=Iron,50
}
The four OREPREF tags in this example have values of 500, 300, 150 and 50, that by happy coincidence sums up to a total of 1000 (not a requirement, but makes calculating chance for each ore easier in one's brain). If we divide each of those values by the sum total and multiply the result by 100, we get the percentage chance for mining each of the ore types, given that the player has high enough skill. Example:
Note that for this example, players would only be able to find dull copper, verite, valorite and iron ores in this region, as there are no OREPREF tags present for any other ore types.
It is recommended to include an OREPREF for an ore type (like iron) that can be mined by anyone regardless of skill, so players who go to a region with OREPREFs setup can still mine something useful!
Note that if no OREPREF tags are present in a region, UOX3 will use the default chance defined for each ore type in skills.dfn to determine what type of ore the player will find when mining there. If no default chance is specified for the ore types, all ore types will have equal chance of being mined in a given region.
Monster gates are objects (doesn't have to be a gate) of type 82 that will transform players into monsters when they step onto the same tile as the object. More specifically, it will transform the player into whichever NPC is defined on the monster gate object via its DESC property. Simply point the DESC property towards a specific NPC Section ID from the NPC DFNs!
For instance, 'set desc orc would transform any player who steps through the monster gate into an orc - with the same skills, stats and other properties of regular orcs.
Race gates are objects (doesn't have to be a gate) of type 83 that can change the race of a character that step onto the same tile as the object. Which race to set is determined by the race gate's MOREX value, which can be set in DFN using the MOREX=raceID tag, or via the following GM command: 'set morex raceID. Additionally, use 'set morez 1 to make the gate reusable, or 0 to make it one-time-use only (per player).
For a list of races and raceIDs, check UOX3/dfndata/race/races.dfn.
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.
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 ;)
10 - AI_CASTER
Same as AI_FIGHTER (5), but will try to stay at casting range
11 - AI_EVIL_CASTER
Same as AI_EVIL (2), but will try to stay at casting range
12 - AI_ANIMAL_SCARED
Runs away from players if they get too close, even outside of combat.
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 allow players to earn a bit of extra gold by escorting NPCs from one location to another (gold paid upon safe arrival in a specified target region)! Basically, dedicated spawners are used to spawn quest NPCs that can be escorted. At the same time, quest messages are automatically posted in any bulletin board in the same region as the spawner, with details on the quest, the quest NPC and the target destination.
The Escort Quest system is controlled via a few settings in UOX.INI:
[escorts]
{
ESCORTENABLED=1
ESCORTINITEXPIRE=900
ESCORTACTIVEEXPIRE=600
ESCORTDONEEXPIRE=600
}
ESCORTENABLED is used to enable (1) or disable (1) the system, while ESCORTINITEXPIRE is the amount of time (in seconds) a quest NPC will wait for someone to initiate the quest, before vanishing. ESCORTACTIVEEXPIRE is the amount of time (in seconds) a player has available to bring the quest NPC to its desired destination before the quest is aborted. Finally, ESCORTDONEEXPIRE is the time in seconds until a quest NPC will vanish after having successfully reached its destination.
To actually spawn the quest NPCs required by the Escort Quest system, you need to setup and place out some Escort NPC Spawners. These are special spawner objects of type that are only active if the escort quest system itself is active via the above mentioned ini setting. Here's an example of how to set one up:
The rewards for completing an escort quest are based partly on a given quest NPC's fame, and partly on the amount of gold they're carrying. This setup provides some flexibility for how shard admins want to handle the NPC escorts and associated rewards. For instance, one could setup a Nobleman with high fame (but little gold), a merchant with low fame (but a lot of gold), or an adventurer (with random amount of fame and random amount of gold). The formulate used to calculate the final reward given to the player looks like this: rewardAmount = (( totalFame / 100 ) * 50 ) + ( totalGold * 0.25 )
These are special NPC Guilds players can join for benefits like discounts from certain vendors, access to extra services like being able to purchase disguise kits, etc.
A player can join thesee guilds by talking - and paying a joining fee - to any of the NPC Guildmasters belonging to a given guild. These guildmasters have attached the script that controls all aspects of NPC guilds: js/npc/ai/guildmaster.js
By default, only one guild - the Thieves Guild - has been setup with any special functionality, but the script should be extendible to easily support the setup of additional guilds.
Available speech triggers for NPC Guildmasters:
In order to steal from other players, a player must first join the Thieves Guild. To do so, the player can walk up to a Thieves Guild Guildmaster and say the word "join", and if they meet the requirements to join, pay the joining fee by dropping the requested amount of gold onto the NPC.
To add a new NPC Guild, first add it to the npcGuilds const near the top of the script. It already contains a bunch of NPC guilds that could potentially be used, but to add a new one, just give it a unique guildID, dictionaryEntry and throw it ino the list.
Example: 500: [20000, -1, []], // My Custom NPC Guild
Next, add the guild's unique ID to the enabledGuilds const found just below the list of NPC Guilds in the script, like so: const enabledGuilds = [3, 500];
Then, add any guild-specific requirements to join in the CheckJoinGuildRequirements() function, and any special services to HandleThievesGuildServices() function, following the examples set by the Thieves Guild (aka The Society of Thieves)
Finally, create an NPC Guildmaster and assign them to your custom NPC guild either...
The NPC Guildmaster script also supports options for setting up specific NPC guilds as enemies, or to give guilds a parent/child relationship with other guilds. This has no specific functionality currently, but those relationships could be used to make the interactions with various NPC guilds more dynamic and engaging.
Slaying monsters is all well and good, but surprisingly, most adventurers are not satisfied with just the feeling of ridding the world of evil; they desire something much more valuable: Epic Loot! To give NPCs in UOX3 some of this precious and much-sought-after loot, a couple of methods are at your disposal:
The GOLD tag will, when present in the definition for an NPC, add a fixed or random amount of gold to said NPC's backpack when they spawn. This gold will end up on the NPC's corpse when slain, unless it's stolen by a rogue before then! Examples of usage:
GOLD=50 - Adds 50 gold to NPC backpack
GOLD=50 100 - Adds between 50 to 100 gold to NPC backpack
The PACKITEM or LOOT DFN tags can be used to add items to a NPC's backpack when spawned. The PACKITEM tag can either point to specific items, or to itemlists (UOX3/dfndata/items/itemlists/itemlists.dfn) from which random items will be selected. The LOOT tag, meanwhile, can only point to specific type of itemlists called lootlists (UOX3/dfnata/items/lootlists.dfn), from which random items will be selected. Both tags support an extra, comma-separated parameter that determines the amount of items to add, though they differ a bit in how those extra parameters are handled. Some examples:
PACKITEM=0x0ff0 - Adds a book with a specific ID to backpack
PACKITEM=0x0eed,50 - Adds 50 gold to backpack
PACKITEM=listobject6 - Adds a random music instrument from itemlist that listobject6 points to
PACKITEM=listobject12,10 - Adds a random reagent from itemlist 12 (reagents), and sets the amount to 10
LOOT=reagents - Adds a random reagent from reagents lootlist to backpack
LOOT=reagents,10 - Adds 10 random reagents from reagents lootlist to backpack
These DFN tags can also be used to add items to containers defined in the Item DFNs! By adding a PACKITEM or LOOT tag to a container's item definition, said container will be created with items already in it. One useful example is [bagofreagents] (dfndata/items/magic/reagents.dfn), which is a bag that conveniently comes with 30 of each magic reagent already contained within, with the help of tags like PACKITEM=0x0f7a,30. In this example, a stack of 30 Black Pearls are added.
In the above example, LOOT=reagents points to a lootlist called reagents, configured in UOX3/dfndata/items/lootlists.dfn, which consists of a list of items from which UOX3 will randomly select one or more items - depending on whether or not an amount was specified with the LOOT tag. The lootlist in question:
[LOOTLIST reagents]
{
0x0f7a
0x0f7b
0x0f84
0x0f85
0x0f86
0x0f88
0x0f8c
0x0f8d
}
Adding LOOT=reagents,10 in the NPC definition of an orc would add 10 random reagents from the reagents lootlist to that orc when spawned, with an equal chance for any of the reagents to be chosen each of the 10 times a reagent would spawn.
In the above example, each and every orc in the game would have 10 random reagents in their inventory, every time. However, what if you only wanted the orcs to have reagents as loot some of the time, not all the time?
For additional control over drop-rates, a special entry is supported in lootlists, called "blank" (without the quotation marks). If UOX3 selects one of these special entries when making a random selection from a lootlist, it will interpret this as if no item should be spawned. Example:
[LOOTLIST reagents]
{
0x0f7a
0x0f7b
0x0f84
0x0f85
0x0f86
0x0f88
0x0f8c
0x0f8d
blank
blank
}
Any call to the above lootlist would have a 8/10 or 80% chance of spawning a reagent as loot, and a 2/10 or 20% chance of spawning nothing. However, inserting additional lines of specific entries just to adjust the drop rate in a particular lootlist feels a bit hacky, so... let's use weights instead!
Both LOOTLIST and ITEMLIST sections support weighted randomization, which basically means we can assign a "weight" to each entry in a list, to determine the probability of each entry being picked. This allows us to eliminate the need for multiple duplicate entries! Example:
[LOOTLIST gianticeserpent]
{
95|blank
5|glacialstaff
}
For this lootlist, which is used by Giant Ice Serpents to provide players who slay them with a chance to get a Glacial Staff, we've assigned a weight of 5 to the glacialstaff entry, and a weight of 95 to the blank entry. Since those conveniently sum up to 100, we can pretend the values represent the direct chance of each entry being selected, but that's not always the case. We could have used values like 324 and 92393 instead, and it would still work - but a bit harder to convert in our minds to percentages!
While lootlists serve only a specific purpose - adding loot to an NPC's backpack, the more general itemlists are multi-purpose, and are used in a variety of features in UOX3, such as when adding newbie items for freshly created player characters, by region spawners when spawning random items in specific regions of the game world.
Like lootlists, itemlists support the special "blank" entry, and weighted randomization, but unlike lootlists, items from itemlists can also be added directly in-game by GMs, using the 'add item [itemlist] command. Example: 'add item listobject6 will add a random musical instrument in-game.
Unlike the LOOT tag, which can add X amount of random items from a lootlist, the PACKITEM tag will, if supplied a number as additional parameter, add X amount of the same randomly chosen item from the specified itemlist. In other words, PACKITEM=reagents,10 would NOT add 10 random reagents, but a stack of 10 of one randomly selected reagent.
Itemlists are setup in pairs of lists and objects. Example:
//Instruments
[ITEMLIST 6]
{
0x0e9c
0x0e9d
0x0e9e
0x0eb1
0x0eb2
0x0eb3
0x0eb4
}
// Instruments
[listobject6]
{
itemlist=6
}
Instead of referring to the itemlist directly, one refers to an object associated with the itemlist, which in the above example would be listobject6, which then refers to the specified itemlist.
For a more custom approach to NPC loot, with more control over what kind of items drop and under which circumstances, you can make use the JS Event onDeath in a script attached to an NPC, which triggers for NPCs upon death and lets you defined your own rules for what should happen. For more information on how to setup JS scripts, check the Scripting - JS Engine section of this document!
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).
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.
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).
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).
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.
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 JSE Docs for more details on syntax and some examples!
The PvP Ruleset scripts are attached to all players who login to a UOX3 shard, and contain rules for how interactions between players are handled - both hostile and beneficial - in specific facets (Felucca/Trammel/etc). Those rules can be defined per-facet, though by default it's setup similar to the original PvP rules in UO during the LBR era, i.e. Felucca being more open, Trammel/Ilshenar/etc being more restricted. This is mainly controlled by two scripts:
The ruleset script itself checks a variety of interactions between players, like... initiating combat, being the target of a spell (hostile or friendly), stealing/being stolen from, snooping/being snooped, corpse-looting, player-collision, bard skills like provocation, etc.
Some other scripts also make calls into the ruleset script to check whether a player is allowed to do a particular action.
Rules configurable per facet near top of facetRules script:
Example: const facetCorpseCarveRestrict = [1, 2, 3, 4, 5]; restricts carving of player corpses in facets 1 through 5, but allows it (by exclusion) in facet 0!
The script also contains options to override each of these rules for specific regions within each facet. So a facet could in general restrict stealing from other players, but a specific region within that facet could still allow it.
Example: const regionStealOverride = [52]; would override the stealing restrictions for a hypothetical region 52 within whatever facet it's in.
The race system in UOX3 is integrated with both player and NPC characters, and offers numerous options for customizing the behaviour and properties of each race, like taking double damage from silver weapons, dealing more damage with a particular weapon skill, or being allied to or the sworn enemy of another race.
By default, UOX3 is setup to work with the default player races that can be selected in the UO client's character creation (depending on client version) - i.e. humans, elves and gargoyles - and will automatically assign players to the associated race in the race system, but there's nothing preventing a shard admin from creating multiple other player races, and to provide players with other means of selecting a race for their character.
Some default races have also been setup for monsters, like Orcs, Ratmen, Undead and Daemons (and more), while animals are generally divided into some predefined Predator and Animal races (with a few other special cases for Birds, Arachnids, etc).
Each race in UOX3 is setup in its own [RACE #] section of UOX3/dfndata/race/races.dfn, which contain the properties, bonuses and penalties associated with the race. For a full list of properties available in the race system, check the Race DFN Tags portion of the DFN Tag Overview section of this document.
[RACE 0]
{
NAME=Human
STRCAP=100
DEXCAP=100
INTCAP=100
PLAYERRACE=0
BANEQUIPLIST=1
BANEQUIPLIST=2
}
Race 0 is the "default" UOX3 player race, which is applied automatically to all newly created (human) player characters, as well as any NPCs that have no other race specified. Here it is setup with stat caps that define the max amount of strength, dexterity and intelligence a player can get, as well as some entries for banned equipment - stuff humans are not allowed to equip.
[RACE 1]
{
PARENTRACE=0
NAME=Elf
PLAYERRACE=0
BANEQUIPLIST=2
}
The second default player race is "Elf", which applies automatically to all newly created elf player characters. Whether this race is used or not is dependent on whether the shard uses a client version that has elves as part of the character creation process. This race is setup with a PARENTRACE tag that points to race 0, meaning that in addition to any custom properties defined, it will also inherit the properties of the parent race. Note that any inherited properties can be overridden by redefining the same property for the child race, and the terms "parent race" and "child race" in this context only applies to the logic of inheriting properties, and has no other gameplay or player-facing relevance.
[RACE 2]
{ // Player
PARENTRACE=0
NAME=Gargoyle
PLAYERRACE=0
RACIALAID=3
ALLOWEQUIPLIST=0
ALLOWEQUIPLIST=2
}
The third and last default player race is "Gargoyle", which applies automatically to all newly created gargoyle player characters. As with the elf race, this is dependent on the server supporting a client version that has this race included in the character creation process. This race has been setup with a RACIALAID tag, which points to the monster-version of the gargoyle race (see below). This means gargoyle players will see monster gargoyles as allies in the game, which will not automatically attack the players as they might players belonging to other races. Additionally, this race has some entries to whitelist certain equipment lists, allowing gargoyle players to equip any items from these lists.
[RACE 3]
{ // Monster
NAME=Gargoyle
PLAYERRACE=1
RACIALENEMY=1
RACIALAID=3
}
The first and only monster race listed in this example, the monster-variant of the gargoyle race has been setup as an ally to the player-variant of the gargoyle race, and as an enemy of the elven race. When two races are set as enemies of one another, members of those races can freely attack each other without any negative consequences to things like the reputation system and criminal flagging, and killing an enemy would not result in a murder count. NPC members of a race will attack members of enemy races on sight.
NPCs - whether monsters, animals, shopkeepers or adventurers - can be assigned as members of a particular race using the RACE=# DFN tag, which can be added to a given NPC's DFN section in its relevant file under UOX3/dfndata/npc/. For example, monster gargoyles (found in UOX3/dfndata/npc/gargoyles.dfn) are setup with a RACE=3 tag, with the value 3 referring to the race ID for the monster-variant of the gargoyle race. Similarly, any undead NPCs are setup with a RACE=11 tag, which matches up with the "undead" race in races.dfn - which has a race ID of 11.
Any weapon can be setup as a "slayer weapon" - i.e. a weapon that deals double damage against members of a particular race. Historically in UO, the first such weapons were weapons with a "silver" property, which dealt double damage to any undead NPCs. In UOX3, any weapon can be setup with this effect simply by adding a RACE=# tag to the weapon's item DFN section under UOX3/dfndata/items/, which will then cause said weapon to deal double damage to members of whichever race whose ID matches up with the value used in the weapon's RACE tag.
Racial combat mods are bonuses or penalties applied to skills during skill checks, or during calculations of base damage dealt when attacking someone with a given weapon-skill in combat. These modifiers apply to characters who are members of a race that has been setup with skill tags such as [SKILLNAME]G=# (bonus) or [SKILLNAME]L=# (penalty) - where # points to one of the MOD# entries in this section.
Example: A race setup with a SWORDSMANSHIPG=3 tag will have a 20% bonus applied to any Swordsmanship skill checks, and will also receive a 20% bonus to base damage during combat when wielding a sword, before any other damage modifiers are applied. If SWORDSMANSHIPL=3 was used instead, it would be a 20% penalty instead of a bonus.
Example of default [COMBAT MODS] setup in dfndata/race/races.dfn, along with a couple of examples how to make use of them:
[COMBAT MODS]
{
MODCOUNT=4
MOD0=0
MOD1=50
MOD2=100
MOD3=200
}
[RACE 0]
{
NAME=Human
STRCAP=100
DEXCAP=100
INTCAP=100
PLAYERRACE=0
BANEQUIPLIST=1
BANEQUIPLIST=2
SWORDSMANSHIPG=2 // Uses MOD2, i.e. 10.0% bonus to swordsmanship
FENCINGL=1 // Uses MOD1, i.e. 5.0% penalty to fencing
}
When setting up player races, it can be useful to have the option to restrict who can equip certain equipment - either because the equipment in question only works with certain character models (like Gargoyles), or to setup visual styles unique to each race. Either way, the race system supports this, via the ALLOWEQUIPLIST and BANEQUIPLIST tags, and associated [EQUIPLIST #] equipment lists.
The ALLOWEQUIPLIST and BANEQUIPLIST tags give shard admins the option to specify which equipment lists (see below) should be allowed or disallowed for each individual race in the race system. A given race can be setup with multiple of each tag, to allow or disallow multiple equipment lists.
By default, the "human" player race has been setup with two banned equipment lists (BANEQUIP=1 and BANEQUIP=2). Those lists contain items only usable by Elves (for traditional reasons), and items only usable by Gargoyles (for technical reasons):
[RACE 0]
{
NAME=Human
STRCAP=100
DEXCAP=100
INTCAP=100
PLAYERRACE=0
BANEQUIPLIST=1
BANEQUIPLIST=2
}
Equipment lists for races can by default be found at the bottom of UOX3/dfndata/race/races.dfn, and a typical list will consist of a [EQUIPLIST #] header, and a series of ITEMS tags that list out all the item IDs that make up the equipment list.
In the below example, each ITEMS tag contains a different "sub-category" of equipment, but this is just done to make it easier to find specific items in the list (in theory, all items in an equipmentlist could be setup in the same ITEMS tag). When UOX3 starts up, all the items in a given equipment-list are loaded into memory, and from there on referenced whenever a player attempts to equip a particular piece of equipment to see if the race they belong to allows it.
// Common Equipment, usable by all
[EQUIPLIST 0]
{
// whips
ITEMS=0xA289,0xA28A,0xA28B,0xA291,0xA292,0xA293
// Tools
ITEMS=0x0E85,0x0E86,0x13E3,0x13E4
// Robe & Arcane Robe
ITEMS=0x1F03,0x1F04,0x26AE
// Crook
ITEMS=0x0E81
// Rings/Bracelet
ITEMS=0x1086,0x108A,0x1F06,0x1F09
}
The above method of restricting/allowing equipment is based on raw item IDs, which means it's not possible to use that system to for instance allow a race to equip one set of leather armor, but ban them from equipping another - since both sets are based on the same IDs! Fret not, though. There's always Armor Classes!
All equippable items can be assigned an armor class (ac) via the item DFN tag ac=#. When a character attempts to equip such an item, UOX3 checks the character's Race to see if any armor class restrictions apply. Those restrictions are set via the armorrest=# tag for the race's definition in race.dfn, and if the ac in question matches the armorrest value, the character is restricted from equipping the item.
Note that multiple armor classes can be restricted simultaneously via the armorrest tag, by combining the values of each restrcted armor class. UOX3 uses bit comparison to check this, so this does require that the armor classes in question use values like these: 1, 2, 4, 8, 16, 32, 64, 128. Example setup:
// Leather armor, setup with armor class of 1 (ac=1):
[leather_sleeves]
{ left facing
get=base_item
name=leather sleeves
id=0x13c5
... // some tags snipped out
ac=1
}
// ... ringmail armor, setup with armor class of 1 (ac=4):
[ring_tunic]
{
get=base_item
name=ringmail tunic
id=0x13ec
... // some tags snipped out
ac=4
}
// ... and chainmail armor with armor class of 8 (ac=8):
[chain_leggings]
{ left facing
get=base_item
name=chainmail leggings
id=0x13be
... // some tags snipped out
ac=8
}
And finally, a race setup with armor restrictions that disallow using leather (1) and chainmail armor (8), but allows using ringmail (4, by omission):
[RACE 1]
{
PARENTRACE=0
NAME=Elf
PLAYERRACE=0
ARMORREST=9 // 1 + 8
}
When using the armor class system in this way, it is recommended to only make use of armor class values of 1, 2, 4, 8, 16, 32, 64 and 128, so they can be combined and mixed and matched in the armorrest value without causing any issues. Also note that this system can be combined with the equipment-list system from above for more granularity.
Did you know that if you enable a setting in UOX.INI called ARMORCLASSDAMAGEBONUS, any weapons with an AC of 1 will deal double damage if attempting to hit someone wearing armor with an AC of 1? Similarly, a weapon with AC 8 will deal double damage against armor with AC 8!
The Region System in UOX3 is generally used to help players identify and later recognize where in the world they are at any given point in time. When players move from one region to another, they will see system messages notifying them that they have "left region X" and "entered region Y". These messages also call out whether the region the player is headed into is protected by town guards or not.
Regions are setup via DFN files in the UOX3/dfndata/regions/ folder, and typically look something like this:
[REGION 5] // Unique region identifier
{
NAME=Lord British's castle // Name of region
MUSICLIST=4 // Music to play in region
GUARDED=1 // Region is protected by guards
GUARDLIST=guard // Guards are spawned from "guards" NPCLIST
GUARDOWNER=Lord British's Personal // Owner of guards
MAGICDAMAGE=1 // Magic damage is enabled
MARK=1 // Mark spell is enabled
GATE=1 // Gate spell is enabled
RECALL=1 // Recall spell is enabled
ABWEATH=6 // Weather system to apply in region
X1=1295 // Coordinates that make up region
Y1=1559 // Coordinates that make up region
X2=1407 // Coordinates that make up region
Y2=1695 // Coordinates that make up region
}
Each region can be setup with its own rules; one region might allow hostile spells being cast, while another disallows such spells, but at the same time bans the usage of magical travel spells such as Mark, Gate and Recall. For a full list of which DFN tags can be added to a region to customize its ruleset, check the Region DFN Tags portion of the DFN Tag Overview section of this document.
You can also check out existing regions that come with UOX3 by default (see above) for additional examples
Normally Regions and Spawn Regions are two completely separate systems that don't rely on or interact with one another, but check the Predefined Spawns portion of the Spawn Regions feature to see how some spawn sections can be applied/added to multiple regular regions at the same time!
Check the Region-based Ore Preferences portion of the Mining and Ore System to see how regions can be setup with preferences for different types of ore and chances of finding such ore in these regions.
Each region supports the placement of a Townstone, which can be used to set up player-run local governments in the regions around the game world. See the Townstones section for more details on how that system works!
Regions can be assigned weather systems that increase or lower the chance of rain, snow, thunder for players who enter those regions. The weather systems can also control the light levels and/or temperature in those regions, which can have effects like cause damage to character races that are weak to certain elements like light, heat, cold, etc. See the Weather System feature for more details on how that system works!
Each region can point to a [MUSICLIST #] entry to determine which music to player for players who enter a given region. These music lists can consist of one or more music IDs (randomizes if more than one), which refer to music entries from a file called Config.txt in the UO client's Music folder.
The exact music available depends on the client version you're using, but the config file will list out the music entries with IDs ranging 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.90.x).
[MUSICLIST 1]
{
MUSIC=09
}
// Tavern Music
[MUSICLIST 22]
{
MUSIC=34
MUSIC=35
MUSIC=36
MUSIC=37
}
Each music list has its own [MUSICLIST #] entry, with a unique ID. If there's more than one entry in a music list, UOX3 will randomize which one plays when a player enters a region using that music list.
Inns are buildings in UO where players can instantly log out without worrying about their character lingering behind in the world for other players (or NPCs) to see and/or interact with. These areas are setup as a sub-feature of the region system, under the [INSTALOG] ("instant logout") section of regions.dfn. Any time a player logs out in one of the areas listed in this section, they'll be instantly logged out (unless they've got a criminal flag active).
[INSTALOG]
{
// Britain (northeast of bank) - Part 1
X1=1492
Y1=1602
X2=1498
Y2=1624
WORLD=0
INSTANCEID=0
...
}
Each "instalog" area must consist of two sets of coordinates - X1, Y1 and X2, Y2 (forming the top-left and bottom-right corners of a square area), a world number and an instanceID.
The instanceID can be left at 0, but must still be present, as it determines the "end" of a given instalog area.
Similar in setup to instalog regions, are SOS Areas. These are areas of the map (in the ocean) the server can randomly pick from when generating shipwreck locations for players to discover via the SOS/Message in a Bottle feature.
These areas are setup in the [SOSAREAS] section of the same file, and follow the same pattern as above:
[SOSAREAS]
{
// FELUCCA
// Yew West
X1=55
Y1=100
X2=290
Y2=1300
WORLD=0
INSTANCEID=0
...
}
As with "instalog" areas, these must have two sets of coordinates, a world number and an instanceID (which marks the end of each SOS Area).
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
(optional)SKILLDELAY=10
}
The STR, DEX and INT tags determine how likely those stats are to increase when the skill is used, as well as how much impact they have on the potential success of skill checks if the UOX.INI setting STATSAFFECTSKILLCHECKS is enabled.
SKILLPOINT tags work in this way:
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
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 drop at any location where they want something to spawn. Examples of such predefined spawn objects can be found in the GM 'add menu, under GM Menu > Spawners. If adding spawn objects via this menu, drag and drop the spawn object from your backpack to the ground to activate the spawn cycle. If you are unable to move it from your inventory, try using the 'allmove on command first!
Unlike objects spawned via Spawn Regions, ones spawned from Spawn Objects have a persistent state and will be saved during world saves and are loaded again if server restarts.
Four main types of spawn objects are available:
Spawn Objects of item type 61 (IT_ITEMSPAWNER) will spawn items at the spawn object's exact location.
Here's an example of an Item spawner that could be defined in a DFN file like dfndata/items/gmmenu/spawners.dfn. Like other spawner objects, it inherits some properties from a base_spawner, to save on the need to redefine these common properties for each individual spawner (the base_spawner itself, meanwhile, inherits properties from a base_item object):
[base_spawner]
{
get=base_item // Inherit default properties from base_item object
id=0x1F14 // ID of spawner object's visuals (displayed for GMs only)
weight=50000 // Defines weight of spawn object (500.00 stones)
interval=1 5 // Defines how often spawn object spawns another Item
visible=1 // Marks spawn object as only being visible to GMs
decay=0 // Marks spawn object as non-decayable
movable=2 // Marks spawn object as only being movable by GMs
}
[reagentspawner]
{
get=base_spawner // Inherit properties from base_spawner
name=Reagent Spawner // Internal name of spawner object, for GM/Admin use only
type=61 // Type 61 marks object as an Item Spawner
spawnobj=bagofreagents // Specifies script section ID of Item to spawn
}
After a spawner has been setup in this manner (and DFNs have been reloaded), the spawn object ("reagentspawner" in this case) can be added to the 'add menu for GMs to access (via itemMenu.dfn and itemMenu.bulk.dfn), or can be added to the world directly using the 'add spawner reagentspawner command. The spawned object will be invisible and immovable to normal players, and will immediately start spawning bags of magical reagents. Note that Item Spawners, unlike NPC Spawners, do not support specifying an amount of items to spawn - these are restricted to 1 per Item Spawner, to avoid stacking multiple of same item on the same tile.
Spawn Objects of item type 62 (IT_NPCSPAWNER) will spawn NPCs at the spawn object's exact location.
Here's an example of an NPC spawner defined in dfndata/items/gmmenu/spawners.dfn. Like other spawner objects, it inherits some properties from a base_spawner, to save on the need to redefine these common properties for each individual spawner (the base_spawner itself, meanwhile, inherits properties from a base_item object):
[base_spawner]
{
get=base_item // Inherit default properties from base_item object
id=0x1F14 // ID of spawner object's visuals (displayed for GMs only)
weight=50000 // Defines weight of spawn object (500.00 stones)
interval=1 5 // Defines how often spawn object spawns another NPC
visible=1 // Marks spawn object as only being visible to GMs
decay=0 // Marks spawn object as non-decayable
movable=2 // Marks spawn object as only being movable by GMs
}
[orcspawn]
{
get=base_spawner // Inherit properties from base_spawner
name=Orc Spawner // Internal name of spawner object, for GM/Admin use only
type=62 // Type 62 marks object as a NPC Spawner
spawnobj=orc // Specifies script section ID of NPC to spawn
amount=3 // Max cap on amount of NPCs spawned and alive at the same time
}
After a spawner has been setup in this manner (and DFNs have been reloaded), the spawn object ("orcspawn" in this case) can be added to the 'add menu for GMs to access (via itemMenu.dfn and itemMenu.bulk.dfn), or can be added to the world directly using the 'add spawner orcspawn command. The spawned object will be invisible and immovable to normal players, and will immediately start spawning orcs.
Spawn Objects of item type 69 (IT_AREASPAWNER) will spawn NPCs in a radius centered on the spawn object's location.
Here's an example of an Area Spawner that could be defined in a DFN file like dfndata/items/gmmenu/spawners.dfn. Like other spawner objects, it inherits some properties from a base_spawner, to save on the need to redefine these common properties for each individual spawner (the base_spawner itself, meanwhile, inherits properties from a base_item object):
[base_spawner]
{
get=base_item // Inherit default properties from base_item object
id=0x1F14 // ID of spawner object's visuals (displayed for GMs only)
weight=50000 // Defines weight of spawn object (500.00 stones)
interval=1 5 // Defines how often spawn object spawns another Item
visible=1 // Marks spawn object as only being visible to GMs
decay=0 // Marks spawn object as non-decayable
movable=2 // Marks spawn object as only being movable by GMs
}
[ratman_area_spawner]
{
get=base_spawner // Inherit properties from base_spawner
name=Ratman Area Spawner // Internal name of spawner object, for GM/Admin use only
type=69 // Type 69 marks object as an Area Spawner
spawnobj=ratman // Specifies script section ID of NPC to spawn
amount=3 // Max cap on amount of NPCs spawned and alive at the same time
more=0x00000505 // Last 4 digits represent max x/y offsets for spawner, i.e. how far in each direction with spawner as center can NPCs be spawned (can also be specified as more=0x00 0x00 0x05 0x05 for better readability or using decimal values more=0 0 5 5)
}
After a spawner has been setup in this manner (and DFNs have been reloaded), the spawn object ("ratman_area_spawner" in this case) can be added to the 'add menu for GMs to access (via itemMenu.dfn and itemMenu.bulk.dfn), or can be added to the world directly using the 'add spawner ratman_area_spawner command. The spawned object will be invisible and immovable to normal players, and will immediately start spawning ratmen at a random interval between the min and max minutes specified in the interval tag.
Spawn Objects of type 63 (IT_SPAWNCONT), 64 (IT_LOCKEDSPAWNCONT) and 65 (IT_UNLOCKABLESPAWNCONT) are setup as containers with items spawning inside at regular intervals. Can be setup to auto-lock whenever an item respawns, or be set to never lock at all.
Here's an example of a Spawn Container that could be defined in a DFN file like dfndata/items/gmmenu/spawners.dfn. Like other spawner objects, it inherits some properties from a base_spawner, to save on the need to redefine these common properties for each individual spawner (the base_spawner itself, meanwhile, inherits properties from a base_item object). Note that a valid container ID must be used for Spawn Containers, or players will be unable to open them to get at the loot inside.
[base_spawner]
{
get=base_item // Inherit default properties from base_item object
id=0x1F14 // ID of spawner object's visuals (displayed for GMs only)
weight=50000 // Defines weight of spawn object (500.00 stones)
interval=1 5 // Defines interval for how often (in minutes) spawn object spawns another Item
visible=1 // Marks spawn object as only being visible to GMs
decay=0 // Marks spawn object as non-decayable
movable=2 // Marks spawn object as only being movable by GMs
}
[spawn_container]
{
get=base_spawner // Inherit properties from base_spawner
id=0x0e40 // ID of container to visually represent spawner object
visible=0 // Unlike other spawners, we want this one to be visible, so override tag!
name=Spawn Container // Internal name of spawner object, for GM/Admin use only
type=63 // Type 63 marks object as a Spawn Container
spawnobj=bagofreagents // Specifies script section ID of Item to spawn
spawnobjlist=listobject69 // Alternate way of specifying object to spawn. This points to a listobject for an itemlist in UOX3/dfndata/items/itemlists/itemlists.dfn, and will spawn random treasure inside the container each time it respawns.
amount=1 // Defines max amount of items to spawn in the container (1 per spawn interval)
morez=0x01 0x32 0x34 0x45 // If first value is set to 1, container is trapped. Second value (0x32 = 50) determines damage dealt if trap is sprung. Third value represents minimum skill to remove trap, while fourth value represents "max" skill beyond which removal is guaranteed.
}
After a spawner has been setup in this manner (and DFNs have been reloaded), the spawn object ("spawn_container" in this case) can be added to the 'add menu for GMs to access (via itemMenu.dfn and itemMenu.bulk.dfn), or can be added to the world directly using the 'add spawner spawn_container command. The spawned object will be visible, but immovable to normal players, and will immediately start spawning items inside the container at a random interval between the min and max minutes specified in the interval tag.
As soon as an item has spawned inside the Spawn Container, the item type of the spawn object will change from 63 (IT_SPAWNCONT) to 64 (IT_LOCKEDSPAWNCONT) and players will need to unlock it using lockpicks or the Magic Unlock spell before they can get to the treasure inside. Upon being unlocked, the type will reset back to 63 (IT_SPAWNCONT).
If you don't want the Spawn Container to be locked, even after spawning/respawning items, change it's type to 65 (IT_UNLOCKABLESPAWNCONT) instead. By doing this, the container will not automatically lock itself when a new item is spawned.
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.
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!
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 across multiple regions, and can piggy-back on the regions that already exist instead of having to create new dedicated spawn regions with coordinates etc.
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!
The spattack DFN tag in NPC DFN's defines the maximum spell circle from which an NPC will be able to cast spells in combat. A value of 8 means the NPC will be able to cast spells from circles 1 through 8, while a value of 5 means the NPC can cast spells from circles 1 to 5.
Notably, NPC's can currently only cast certain spells, and these will be chosen at random when the NPC is able to cast spells during its combat cycle - defined by the spdelay DFN tag, which defines the minimum amount of seconds between each time they can cast spells in combat. This can further be modified by a uox.ini setting - NPCSPELLCASTSPEED - which modifies the spellcasting delay for NPCs on a global basis.
Following is a list of spells an NPC can cast:
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:
UOX3 comes with a system for Townstones that allows players to setup their own player-run governments in different regions of the world.
More details being added soon!
The Young Player System (enabled/disabled through uox.ini setting YOUNGPLAYERSYSTEM) offers some protections (and restrictions) for characters on newly created player accounts. These accounts are flagged as Young, and any characters created on such accounts will have [Young] displayed over their head. The young player system is primarily handled in js/player/young_player.js, but checks for young players can be found in many different other scripts where necessary. The script includes some configurable options:
A player's Young status is checked and verified on every login + every stat/skill gain, and will be revoked if any of the following becomes true:
Additionally, Young players can manually revoke their Young status by saying the words "I renounce my young player status" with any character
Every character on a Young account get an additional item upon first login; a New Player Ticket which can be combined with any other players' New Player Ticket for both players to get a reward of their choice:
Young characters get the benefit of some additional protections (or restrictions) that normal characters don't:
A section of uox.ini - [young start locations] - can be used to define starting locations for Young players. If only one location is provided, all new players start there. Otherwise, it should match up with the regular starting location setup, with one entry per town in Britannia (as displayed in client during character creation)
Weather systems are setup in UOX3/dfndata/weather/weatherab.dfn, and can be referenced per Region in UOX3/dfndata/region/regions.dfn. This system allows individual regions to have their own setup for weather, temperature, light levels and more, which in turn can also have effects on members of specific character Races, if setup with appropriate strengths/weaknesses towards weather elements like rain, snow, cold and heat.
// Weather System for Lord British's Castle
[WEATHERAB 6] // Unique weather system ID
{
RAINCHANCE=40 // Chance of rain in next hour (if it fails to snow)
RAININTENSITY=35,70 // Min and max damage in percent rain can do, based on damage value in Race setup
RAINTEMPDROP=5 // Amount temperature will drop when it rains
SNOWCHANCE=5 // Chance of snow in the next hour (takes precedence over rain)
SNOWINTENSITY=20,100 // Min and max damage in percent snow can do, based on damage value in Race setup
SNOWTHRESHOLD=10 // Upper temperature limit for when snow can occur
STORMCHANCE=5 // Chance of a storm happening in next hour (takes precedence over snow)
STORMINTENSITY=5,30 // Min and max damage in percent storm can do, based on damage value in Race setup
STORMTEMPDROP=10 // Amount temperature will drop when it storms
MAXTEMP=25 // Max temperature of the day. Can be affected by heat waves
MINTEMP=5 // Min temperature of the day. Can be affected by cold snaps
COLDCHANCE=10 // Chance of there being a cold snap on the day. If it happens, temp is fixed between MINTEMP and COLDINTENSITY
COLDINTENSITY=0 // See above
HEATCHANCE=10 // Chance of there being a heat wave on the day. If it happens, temp is fixed between MAXTEMP and HEATINTENSITY
HEATINTENSITY=30 // See above
//LIGHTMIN=0 // Min light level of the day (at noon)
//LIGHTMAX=9 // Max light level of the day (at midnight)
}
For a full list of tags that can be set in a weather system, and what they do, check out the Weather System DFN Tags portion of the DFN Tag Overview section of this document.
World templates are files read and written by the 'decorate save/load/clean/copy commands (see 'decorate command in Command List for full details on syntax), and essentially work as blueprints for world decoration, which can be easily loaded, re-saved after changes/additions or even be transferred between shards.
These templates contain items such as doors, signs, lights, moongates, teleporters, containers, spawners and "misc" (any other item type), and each of these item types are saved to their own text file, per facet, with a .jsdata file extension. Examples:
felucca_doors.jsdata
felucca_containers.jsdata
trammel_doors.jsdata
trammel_spawners.jsdata
UOX3 already comes with a default set of such world template files stored in UOX3/js/jsdata/worldtemplates/, but they are optional to use, and new shard admins can choose between starting out with an empty world or to load the default templates - either select parts of them or in full.
Through the 'decorate command, shard admins can save out templates to pre-defined files per facet and object-type, or to custom template files where all objects are saved to the same file. Example: 'decorate save myCustomTemplate would save ALL items on ALL facets to a custom template file called "myCustomTemplate.jsdata", which is then stored in UOX3/js/jsdata/worldtemplates. Note that the location of these files might differ for a given UOX3 configuration, depending on whether the SCRIPTDATADIRECTORY in uox.ini has been modified from the default.
Once written to file, decorations can be loaded again at a different time using the 'decorate load command. See full list of supported commands below for details.
The 'decorate command also makes it easy to manage event-specific decorations for one's shard! Through a combination with the .event property on Items, decorations for specific events can be saved, loaded and unloaded using 'decorate saveevent [eventName], 'decorate loadevent [eventName] and 'decorate unloadevent [eventName]. The eventName used with these subcommands must match up with the name assigned in the .event property of items. Can be used to load festive decorations for specific festive occasions, and to unload them again after the event ends!
'decorate save
Save all items to the default templates, based on objectType and facet
'decorate save [objectType]
Save all items of objectType, regardless of facet
'decorate save [objectType] [facetName]
Save all items of objectType in the specified facet
'decorate save [customObjectType] [facetName] x1 y1 x2 y2
Save all items within specified coordinates on specified facet to file with same name as customObjectType
'decorate saveevent [eventName]
Save all items with .event property that match eventName to file named event_[eventName]
'decorate load
Load all items from the default templates, regardless of objectType and facet
'decorate load [objectType]
Load all items of objectType, regardless of facet
'decorate load [objectType] [facetName]
Load all items of objectType in the specified facet
'decorate load [customObjectType]
Load all items from file with same name as [customObjectType]
'decorate loadevent [eventName]
Load all items from file named event_[eventName], and assign eventName to their .event property
'decorate clean
Clean up duplicate decorations that might have been loaded/added by accident. Counts as duplicate if
item ID, location, type and hue are identical. BEWARE: Might affect player items on a live shard!
'decorate unloadevent [eventName]
Remove all items with .event property that matches eventName
'decorate copy [sourceFacetName] [targetFacetName]
Copy all items from one facet (sourceFacetName) to another (targetFacetName)
Each line inside a world template file represents data of one object. Example of such an object, with explanation of which values that represent which properties of the object:
1701|#|0|12|2891|655|0|0|0|2|0|0|0|0||0|1|0|0|0|0|0|0|0|0
id|name|hue|type|x|y|z|world|instance|movable|visible|dir| weight|weightmax|maxitems|amount|spawnsection|sectionalist| mininterval|maxinterval|more|morex|morey|morez|[|scriptid]
DFNs - or "definition files" are essentially "templates" or "blueprints" that define the properties of 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:
Location: UOX3\dfndata\advance\advance.dfn
Used to setup advancement gates/objects that can quickly boost players skills and stats to desired level. See separate feature documentation for more info.
Location: UOX3\dfndata\carve\carve.dfn
Used to setup lists of items that players will gain when carving particular creatures with bladed items.
Location: UOX3\dfndata\colors\colors.dfn
Contains random colorlists that can be used with color tags in other DFNs to provide random colors for items and NPCs.
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.
Location: UOX3\dfndata\create\*.dfn
Contains crafting menus with resource costs for crafting each individual item.
Location: UOX3\dfndata\creatures\creatures.dfn
Used to setup things like sound effects, movement types and more for each creature type in the game.
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.
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.
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.
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: 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.
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. separate feature documentation for more info.
Location: UOX3\dfndata\menus\menus.dfn / polymorph.dfn / tracking.dfn
Contains gump menus used in the game, such as menu used by polymorph spell, tracking skill and basic server info gumps.
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.
Location: UOX3\dfndata\msgboard\msgboard.dfn
Used to setup NPC escort quests. See separate feature documentation for more info.
Location: UOX3\dfndata\newbie\newbie.dfn
Used to setup newbie items given out to new characters upon creation, based on the skills they choose.
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.
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, or lookup Race DFN Tags in DFN Tag Overview for a full list of supported DFN tags for this system.
Location: UOX3\dfndata\regions\regions.dfn
Used to define the 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.
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.
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.
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.
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).
Location: UOX3\dfndata\weather\weather.dfn
Contains definitions of weather systems, used by the region system to setup variable weather across the regions in the game world. See separate feature documentation for more info.
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 '*'.
alchemy=[skillpoints] or [lowskill highskill]
Set Alchemy 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)
awake=[0/1]
Marks the NPC as permanently awake, which when combined with the ALLOWAWAKENPCS setting from UOX.INI being enabled, will have UOX3 always check on this NPC regardless of whether the region it is in is inactive due to no nearby online players
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
defbonus=[minDefenseBonus maxDefenseBonus]
Set defense/physical resistance bonus applied on top of standard def (maxDefenseBonus is optional, but if specified, randomizes). Should be applied after the def tag.
detectinghidden=[skillpoints] or [lowskill highskill]
Set Detecting Hidden skill (0 - 1000)
dex=[statpoints] or [lowstat highstat]
Set Dexterity stat for NPC - either fixed or random range
dir=[direction]
Set default direction upon spawning (NE, E, SE, S, SW, W, NW, N - or RND to randomize)
elementresist=[fire cold energy poison]
Set Element-resist stats (0 - 1000 for each stat)
erbonus=[fire cold energy poison]
Set elemental resistance bonus applied on top of standard elementresist. Should be applied after the elementresist tag.
emotecolour=[color]
Set the default colour (in hex or decimal) for the NPC's emote text
enticement=[skillpoints] or [lowskill highskill]
Set Enticement 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=[movementSpeed]
Set the speed at which the NPC flees (0.3 by default, lower = faster)
fleeingspeedmounted=[movementSpeed]
Set the speed at which the NPC flees when mounted (0.25 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
gett2a/gettd/getuor/getlbr/getpub15/getaos/getse/getml/getsa/gettol=[npcSectionID]
Inherit properties from NPC defined by npcSectionID in NPC DFNs, based on selected era in expansion settings of uox.ini
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.
origin=[text]
Store reference to which expansion/era of UO an item/NPC originated in (uo, t2a, uor, td, lbr, aos, se, ml, sa, hs, tol)
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
removetrap=[skillpoints] or [lowskill highskill]
Set Remove Trap 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 (uses default value from uox.ini setting if not set: 0.2, lower = faster)
runningspeedmounted=[movementspeed]
Defines running-speed for the NPC (uses default value from uox.ini setting if not set: 0.12, 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
sectionid=[text]
Override which [sectionID] is stored for an object
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 - if script 3203 is attached!
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 percentage]
Set minimum skill to succesfully use peacemaking against this NPC. The second (percentage) value determines the increase in chance for the NPC to break free from the peacemake effect each time they take damage; a value of 5 would increase the chance of them breaking free of the effects by 5% each time they take damage.
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 (uses default value from uox.ini setting if not set: 0.38, lower = faster)
walkingspeedmounted=[movementspeed]
Set NPC walk speed (uses default value from uox.ini setting if not set: 0.3, lower = faster)
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)
menu=[menuentry #]
Tag in crafting menu system that points to a menuentry section in crafting DFNs
submenu=[submenu #]
Tag in crafting menu system that points to a submenu section in crafting DNFs
item=[item #]
Tag in crafting menu system that points to an item section in crafting DFNs
name=[text]
Label applied to item when shown in the crafting menu. Not necessarily a reflection of the actual name of item being crafted.
id=[value]
Artwork ID to display in the crafting menu for a given item.
colour=[value]
Colour associated with item - unused by hard-coded crafting system, but could be used by scripts.
resource=[value/text]
Contains ID and/or resource type of resource required to craft a given item, as well as optional amount/colour values, to specify the amount (if more than 1) of resources to consume, and what colour the resource needs to be. Each item entry in crafting DFNs can contain multiple resource tags, if more than one type of resource is required to craft the item. Be aware that the primary resource needed should be listed first - this is also the resource returned to player in cases of smelting (smithing) or unravelling (tailoring) items.
skill=[value]
The skill ID of a skill required to craft a given item, along with minimum (minimum skill-points to be able to attempt crafting the item) and maximum (skill-points higher than which player will always succeed) skill-point values. Each item entry can contain multiple SKILL tags, if more than one skill is required to craft an item.
additem=[text]
The [section header] name of the actual item that will be crafted, as defined in the item DFNs in UOX3/dfndata/items/
minrank=[value]
Represents the minimum item rank (1-10) that can be randomly applied to the crafted item based on the rank system, which can cause items to become weaker or stronger than average.
maxrank=[value]
Represents the maximum item rank (1-10) that can be randomly applied to the crafted item based on the rank system, which can cause items to become weaker or stronger than average. If rank system is off, the default rank value is 10.
sound=[value]
The sound FX that plays when a given item is being crafted.
delay=[value]
The delay in milliseconds before the crafting process completes and the item has been crafted.
spell=[value]
The ID of a spell required to be in the player's possession (in a spellbook) in order to craft the item. Primarily used by the Inscription skill.
ac=[armourClass]
Set armour class of item. Can be used to restrict races from wearing items of certain armour classes, or to identify items as cloth, leather, plate, etc.
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. Rendermodes that can be used:
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
damageable=[0/1]
If enabled, allows client to display healthbar for object, using object's hp/maxhp values as basis. Any changes to a damageable object's health will not be reflected in the client until a stat update has been sent.
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 resist/armor rating value of item. Primarily used with wearables like clothes, armour, etc.
defbonus=[minDefenseBonus maxDefenseBonus]
Set defense/physical resistance bonus applied on top of standard def (maxDefenseBonus is optional, but if specified, randomizes). Should be applied after the def tag.
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)
erbonus=[fire cold energy poison]
Set elemental resistance bonus applied on top of standard elementresist. Should be applied after the elementresist tag.
get=[itemSectionID]
Inherit properties of item with specified itemSectionID from item DFNs
gett2a/gettd/getuor/getlbr/getpub15/getaos/getse/getml/getsa/gettol=[itemSectionID]
Inherit properties from Item defined by itemSectionID in Item DFNs, based on selected era in expansion settings of uox.ini
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:
morexyz=[morex],[morey],[morez]
Generic, comma separated variables whose purpose changes depending on context. For instance:
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 skill (also used to name corpses and body parts from corpses). Maximum length: 127 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.
origin=[text]
Store reference to which expansion/era of UO an item/NPC originated in (uo, t2a, uor, td, lbr, aos, se, ml, sa, hs, tol)
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
sectionid=[text]
Override which [sectionID] is stored for an object
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)
spells=[hex value for circles 1-4],[hex value for circles 5-8],[hex value - unused]
Define which spells a new spellbook starts out pre-filled with, using the following syntax: SPELLS=0x00000000,0x00000000,0x00000000
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
ALLOWEQUIPLIST=[number]
Members of the race can equip items listed in the specified EQUIPLIST section
ARMORREST=[number]
Sets the armor class restriction of the race (0-127). Race will be unable to equip any armor with the specified AC, or which contains an AC included in the ARMORREST value (which can combine multiple ac values, which are checked using bit comparison)
BANEQUIPLIST=[number]
Members of the race are forbidden from equipping items listed in the specified EQUIPLIST section
BEARDMIN=[hue]
Minimum value for beard colour allowed for race. Entered as a pair (min, max) along with BEARDMAX. Multiple pairs can be added to support multiple ranges of colours.
BEARDMAX=[hue]
Maximum value for beard colour allowed for race. Entered as a pair (min, max) along with BEARDMIN. Multiple pairs can be added to support multiple ranges of colours.
BLOODCOLOUR=[hue]
When blood-effects are spawned from a member of this race, their blood will be this colour (hexID of hue)
COLDAFFECT
If present, race will be affected by cold, based on weather, damage types, etc
COLDLEVEL=[number]
Cold level limit (temperature from weather system) where character of race will start taking damage
COLDDAMAGE=[number]
Max amount of damage caused by cold, before resistances
COLDSECS=[seconds]
How often cold damage can occur, in seconds
DEXCAP=[statValue]
Cap on Dexterity stat for the race
GENDER=[MALE/FEMALE]
Restrict membership in race to characters of specified gender. Leave out for no restriction.
HAIRMIN=[hue]
Minimum value for hair colour allowed for race. Entered as a pair (min, max) along with HAIRMAX. Multiple pairs can be added to support multiple ranges of colours.
HAIRMAX=[hue]
Maximum value for hair colour allowed for race. Entered as a pair (min, max) along with HAIRMIN. Multiple pairs can be added to support multiple ranges of colours.
HEATAFFECT
If present, race will be affected by heat, based on weather, damage types, etc
HEATDAMAGE=[number]
Max amount of damage caused by heat, before resistances
HEATLEVEL=[number]
Heat level limit (temperature from weather system) where character of race will start taking damage
HEATSECS=[seconds]
How often heat damage can occur, in seconds
HPMOD=[number]
Adjusts maximum hitpoints of member of the race by a percentage value of the character's strength. Example: 100 base hitpoints, 50 strength and HPMOD=50 will give a character max hitpoints of 100 + ( 50 * 0.50 ) = 125
HUNGER=[number,number]
The first number is the time in seconds between hunger checks, the second one is the damage taken when starving
INTCAP=[statValue]
Cap on Intelligence stat for the race
LIGHTAFFECT
If present, race will be affected by light, based on weather, damage types, etc
LIGHTDAMAGE=[number]
Base amount of damage caused by light, before resistances
LIGHTLEVEL=[number]
Light level that defines when character of race will take damage from light in world and dungeons. For world, character will take damage if race's LIGHTLEVEL is higher than current light value. If LIGHTLEVEL is set to 10, character will take damage from world light level if it's between 1 and 9 and character is not in a dungeon, but no damage if world light level is 10 or above. If character is in a dungeon, they will take damage if dungeon light level is 10 or higher.
LIGHTSECS=[seconds]
How often light damage is applied in seconds
LIGHTNINGAFFECT
If present, race will be affected by lightning, based on weather, damage types, etc
LIGHTNINGDAMAGE=[number]
Max amount of damage caused by lightning, before resistances
LIGHTNINGCHANCE=[number]
Chance to get hit by lightning during a storm
LANGUAGEMIN=[number]
Minimum skillpoints in Spirit Speak skill required for non-members of this race to understand speech from members of the race
MAGICRESISTANCE=[float]
Sets a magic resistance bonus for members of this race, between 0.0 and 100.0 % (not currently active)
MANAMOD=[number]
Adjusts maximum mana of member of the race by a percentage value of the character's intelligence. Example: 100 base mana, 50 intelligence and MANAMOD=50 will give a character max mana of 100 + ( 50 * 0.50 ) = 125
NAME=[text]
Name of the race
NOBEARD
If present, only characters with no beards can be members of this race, and any new characters joining it will have their beards (if any) removed.
NIGHTVIS=[number]
Light level at which night vision kicks in for members of the race. If world light level (or light level of weather system in a region, or dungeon light level) is brighter than this (i.e. lower value) nothing happens. If light level is darker (higher value) than this, the character's personal light level gets adjusted to raceLightLevel - worldLightLevel.
PLAYERRACE=[0/1]
Supposed to indicate whether a particular race is intended for players or not, but currently does nothing. Still, exposed to the JS engine if someone wants to make use of it!
POISONRESISTANCE=[number]
Sets a poison resistance bonus for members of this race, between 0.0 and 100.0 % (not currently active)
PARENTRACE=[raceID]
ID of parent race, from which the race will inherit properties. Inherited properties can be overridden by re-defining them in child race.
REQUIREBEARD
If present, members of the race are required to have facial hear of some sort. Anyone joining the race (for instance through a Race Gate) without having facial hair will be given facial hair.
RAINAFFECT
If present, race will be affected by rain, based on weather, damage types, etc
RAINDAMAGE=[number]
Max amount of damage caused by rain, before resistances
RAINSECS=[seconds]
How often rain damage is applied in seconds
RACERELATION=[raceID value]
Defines a race's relation with another race. raceID is the ID of the other race, while value is a number between -100 and 100, where a value of 0 means the relationship is neutral, a value under 0 is enemy, and a value above 0 is ally.
RACIALENEMY=[raceID]
Alternate way of setting race relation. Will set a race's relation with raceID equal to the smallest relation level that still counts as enemy, i.e. -1
RACIALAID=[raceID]
Alternate way of setting race relation. Will set a race's relation with raceID equal to the smallest relation level that still counts as ally, i.e. 1
[SKILLNAME]G=[combatModID]
Bonus applied to skill checks for specified SKILLNAME, based on percentage value provided in [COMBAT MODS] section for specified ID. For instance, SWORDSMANSHIPG=3 will apply a 20% bonus to swordsmanship skill checks for members of a race with that tag, if using the default [COMBAT MODS] section. The same bonus is also applied to base damage in combat, before other damage modifiers.
[SKILLNAME]L=[number]
Penalty applied to skill checks for specified SKILLNAME, based on percentage value provided in [COMBAT MODS] section for specified ID. For instance, SWORDSMANSHIPL=3 will apply a 20% penalty to swordsmanship skill checks for members of a race with that tag, if using the default [COMBAT MODS] section. The same penalty is also applied to base damage in combat, before other damage modifiers.
SKINMIN=[hue]
Minimum value for skin colour allowed for race. Entered as a pair (min, max) along with SKINMAX. Multiple pairs can be added to support multiple ranges of colours.
SKINMAX=[hue]
Maximum value for skin colour allowed for race. Entered as a pair (min, max) along with SKINMIN. Multiple pairs can be added to support multiple ranges of colours.
SNOWAFFECT
If present, race will be affected by snow, based on weather, damage types, etc
SNOWDAMAGE=[number]
Max amount of damage caused by snow, before resistances
SNOWSECS=[seconds]
How often snow damage can occur, in seconds
STAMMOD=[number]
Adjusts maximum stamina of member of the race by a percentage value of the character's dexterity. Example: 100 base stamina, 50 dexterity and STAMMOD=50 will give a character max stamina of 100 + ( 50 * 0.50 ) = 125
STORMAFFECT
If present, race will be affected by storms, based on weather, damage types, etc
STORMDAMAGE=[number]
Max amount of damage caused by storms, before resistances
STORMSECS=[seconds]
How often storms damage can occur, in seconds
STRCAP=[statValue]
Cap on Strength stat for the race
THIRST=[number,number]
The first number is the time in seconds between thirst checks, the second one is the damage taken when extremely thirsty
VISRANGE=[number]
Default visibility range of race. Defaults to 18
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=[oreType,oreChanceWeight]
Set one of these lines for each ore type you want players to be able to find in this region, with an optional weighted value behind representing the chance to find said ore in the region. If no chance is specified, will use default chance defined via DEFAULTCHANCE tag for said ore type in skills.dfn
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.
call=[amount]
Max amount of objects to spawn in one batch during respawns
defz=[value]
Defines a definite Z level to attempt to spawn an object at
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
coldchance=[percentage]
Chance for a cold day. If it passes, temperature will be fixed at a value between mintemp and coldintensity
coldintensity=[temperature]
Set min temperature that can be caused by a cold snap
heatchance=[percentage]
Chance for a hot day. If it passes, temperature will be fixed at a value between maxtemp and heatintensity
heatintensity=[temperature]
Set max temperature that can be caused by a heat wave
lightmin=[lightLevel]
Set minimum light level (0-20) of the day (at noon)
lightmax=[lightLevel]
Set maximum light level (0-20) of the day (at midnight)
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 max wind strength of the day. UNUSED
minwind=[npcSectionID]
Set min wind strength of the day. UNUSED
rainchance=[npcListID]
Set chance of rain in the next hour, if it doesn't already snow or storm.
rainintensity=[0/1]
Set min and max damage in percent that rain can cause, based on damage values for specific races in races.dfn
raintempdrop=[value]
Set amount that temperature will drop if it rains
snowchance=[x],[y],[z]
Set chance of snow in the next hour, if it does not already storm. Overrides rain
snowintensity=[x],[y],[z]
Set min and max damage in percent that snow can cause, based on damage values for specific races in races.dfn
snowthreshold=[worldNumber]
Set max temperature at which snow can take place. At temperatures above this threshold, it will never snow
stormchance=[x coordinate]
Set chance of storm happening in the next hour. Overrides snow and rain.
stormintensity=[x coordinate]
Set min and max damage in percent that storm can cause, based on damage values for specific races in races.dfn
stormtempdrop=[y coordinate]
Set amount that temperature will drop if it storms
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.
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.
UOX3's scripting engine is based on an embedded C++ implementation of JavaScript called SpiderMonkey (v1.8.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:
// The onUseChecked event triggers when the player double-clicks an item
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 result either as emote above player (if object is in a container) or 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;
}
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_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.
To handle an incoming network packet in the JS engine, first ensure that OVERLOADPACKETS is enabled in uox.ini, and that the script has been assigned a unique scriptID in the [PACKET_SCRIPTS] section of jse_fileassociations.scp.
Next, in the JS script handling the packet, register the packet in question with UOX3's packet handler, so it knows to direct any requests with this packet to the script in question:
function PacketRegistration() { // Leave the second value (subCmd) at 0x0, as it's not implemented yet RegisterPacket( packetNum, 0x0 ); } function onPacketReceive( pSocket, packetNum, subCommand ) { var cmd = pSocket.GetByte( 0 ); if( cmd != packetNum ) return; ... // Read packet data here, using ReadBytes, GetByte, GetWord, GetDWord, GetSByte, GetSWord, GetSDWord and GetString socket methods, and respond if needed, by creating a new packet object followed by WriteByte, WriteShort, WriteLong, Send and Free packet methods. See UOX3 JSE Docs for additional details and examples. return; }
Then, in the same script, use the onPacketReceive JS Event to handle the incoming packet. Note that once a script has been registered as handler of a network packet, said script is entirely responsible for reading the bytes associated with the packet and forming any/all responses that the client might expect. Not sending a response, or sending the wrong response, or reading an incorrect amount of bytes from the socket buffer can result in unpredictable behaviour by the client and/or server!
[CONSOLE_SCRIPTS]
Mapping of scriptIDs to scripts containing console events and functions. Scripts are executed when associated console actions/commands are used.
function ConsoleRegistration()
{
RegisterKey( '[key]', "[commandTitle]" );
}
function commandTitle()
{
...
}
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]
The UOX3 JSE Documentation covers all the UOX3-specific events, triggers, methods, functions and properties available to script writers. You can also find some tutorials and/or tips for achieving specific things with UOX3's scripting engine in this document!
UOX3 contains an embedded scripting engine based on SpiderMonkey v1.8.0-RC1, which offers an equivalent JavaScript feature set to JavaScript 1.8, though certain features (especially browser-specific ones) 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!
Check out The JScript Vault on the UOX3.org forums, which contains many scripts written by other UOX3 users that can be downloaded and added to any UOX3 shard, or used as references for writing new scripts.
Some examples of such scripts:
GitHub is the current home for UOX3's sourcecode, and where to go to check up on the latest, cutting-edge developments for UOX3.
For live chat, support and discussions with other UOX3 users and/or developers, head on over to the UOX3 Discord!
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, while originally written for an older era of UOX3, still offers a myriad of tips, tricks and advice for shard admins and GMs, as well as lists of data such as IDs, light-settings, etc. Recommended read for both novices and veterans - though be mindful that some of the details in this document might be out of date.
Legacy, ready-only CVS repositories for older versions of UOX3 can be found at OpenUO @ SourceForge and UOX3 @ SourceForge.
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. Removes the need to use Razor for encryption removal.
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.
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.
OrionUO is an alternative open source UO client that uses OpenGL for rendering. It's available for Windows and Linux, and comes with a metric ton of customization options on top of smoother performance compared to the original UO client.
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+ 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.
A home for discussion of non-Official Ultima Online Servers, also known as Freeshards - hosted by Stratics (who once upon a time also hosted the UOX3 website and IRC channels!)
The ShardPortal is a place for anyone to advertise their shard as well as search out other active shards.
(Possibly dead) A top site list for free UO shards made in the spirit of and in honor of Mr. Fixit's original UOGateway tool.
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).
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 ;)
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.
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.
In 2001, UOX3 went through a monumental shift as the code base moved from C-style code to C++. Many systems (like accounts, items and characters, map regions) went through an overhaul that reduced complexity and increased performance. Memory consumption was improved, file IO was reduced, data structures were streamlined and shrunk, and network bandwith utilisation was improved.
UOX3's scripting system was also upgraded - from the basic, trigger-based system used in the 0.68x and 0.70.x versions, to a fully fledged scripting engine based on Mozilla's SpiderMonkey JavaScript engine. These changes were spearheaded by Matthew Randall (EviLDeD, lead developer at the time) and Daniel Stratton (Abaddon), and prompted a change in version numbers, from 0.70.x to 0.95.x.
Due to the open-source nature of UOX3, there have been numerous spin-off projects over the years - like Wolfpack, Lonewolf or NOX-wizard - 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.
Release date: 24th of September 1997
Released by: Cironian
Fun Facts: Single player only!
Release date: 25th of September 1997
Released by: Cironian
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.
Release date: 22nd of October 1997
Released by: Cironian
Fun Fact: First multiplayer capable version of UOX released! It requires Windows 98 to run.
Release date: 24th of October, 1997
Released by: Cironian
Release date: 25th of October, 1997
Released by: Cironian
Fun Facts: /KILL and /RESURRECT commands implemented!
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.
Release date: 1st of November, 1997
Released by: Cironian
Release date: 4th of November, 1997
Released by: Cironian
Fun Facts: Maximum number of players raised to 32!
Release date: 17th of November, 1997
Released by: Cironian
Fun Facts: First introduction of corpses!
Release date: 22nd of November, 1997
Released by: Cironian
Release date: 24th of November, 1997
Released by: Cironian
Fun Facts: Basic scripting support added!
Release date: 26th of November, 1997
Released by: Cironian
Contributors: Drax
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!
Release date: 29th of November, 1997
Released by: Cironian
Fun Facts: First NPC reactions to player speech added!
Release date: 1st of December, 1997
Released by: Cironian
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.
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?)!
Release date: 2nd of January, 1998
Released by: Cironian
Release date: 6th of January, 1998
Released by: Cironian
Release date: 10th of January, 1998
Released by: Cironian
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!
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.
Release date: 10th of February, 1998
Released by: Cironian
Fun Facts: First parts of combat code goes in, but remains disabled.
Release date: 11th of February, 1998
Released by: Cironian
Release date: 16th of February, 1998
Released by: Cironian
Fun Facts: Corpses can wear clothes. No more naked corpses!
Release date: 18th of February, 1998
Released by: Cironian
Release date: 26th of February, 1998
Released by: Cironian
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!
Release date: 1st of April, 1998
Released by: Cironian
Release date: 8th of April, 1998
Released by: Cironian
Fun Facts: Offline/LAN mode now supports up to 4 players! First Linux port available!
Release date: 21st of April, 1998
Released by: Cironian
Release date: 22nd of April, 1998
Released by: Cironian
Release date: 3rd of May, 1998
Released by: Cironian
Fun Facts: First working doors! Can be locked.
Release date: 20th of May, 1998
Released by: Cironian
Fun Facts: 'SET command added!
Release date: 26th of May, 1998
Released by: Cironian
Fun Facts: First iteration of combat system enabled (melee only)! License update.
Release date: 28th of June, 1998
Released by: Cironian
Fun Facts: First edible food appears! Item type 14. First code contributions by third parties included!
Release date: 29th of June, 1998
Released by: Cironian
Release date: ~1-10th of July, 1998
Released by: Cironian
Release date: ~1-10th of July, 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!
Release date: ~1-10th of July, 1998
Released by: Jerrith
Fun Facts: NPCWander system introduced, as well as stamina cost for shoving characters!
Release date: ~1-10th of July, 1998
Released by: Anthracks
Release date: ~1-10th of July, 1998
Released by: Jerrith
Contributors: Morac
Fun Facts: Visibility modes added!
Release date: ~1-10th of July, 1998
Released by: Jerrith
Fun Facts: Functional spellbooks!
Release date: 10th of July, 1998
Released by: Cironian
Release date: 10th/11th of July, 1998
Released by: Jerrith
Contributors: Gitchigoomi, Monte Cristo, Okaria Dragon
Release date: 11th of July, 1998
Released by: Cironian
Fun Facts: TWEAK command added!
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.
Release date: July, 1998
Released by: Jerrith
Contributors: Zarn, Crimson Guard
Release date: July, 1998
Released by: Morac
Release date: July, 1998
Released by: Jerrith
Contributors: Drylock, Ash, Okaria Dragon
Release date: July, 1998
Released by: Jerrith
Contributors: Ash, Drylock, Gitchigoomi, El_Barto
Release date: July, 1998
Released by: Morac
Contributors: Ash, Rhuarc, Gitchigoomi
Fun Facts: First town regions!
Release date: July, 1998
Released by: RofGilead
Contributors: Ash
Fun Facts: Day & Night cycle added, and Lumberjacking!
Release date: July, 1998
Released by: Morac
Contributors: Rhuarc, zarn
Fun Facts: NPCs can flee in combat!
Release date: July, 1998
Released by: Morac
Contributors: El_Barto, TMB, Ash
Fun Facts: Characters will now become hungry!
Release date: July, 1998
Released by: Jerrith
Contributors: El_Barto, Okaria Dragon
Release date: July, 1998
Released by: Jerrith
Fun Facts: Light sources can have different light settings!
Release date: July, 1998
Released by: Morac
Release date: July, 1998
Released by: Jerrith
Contributors: Ash
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.
Release date: July, 1998
Released by: Morac
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!
Release date: 26th of July, 1998
Released by: Jerrith
Contributors: Pug
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.
Release date: 30. July 1998
Released by: Morac
Fun Facts: Fixed bugs introduced in 0.67x++ (yes, ++)!
Release date: August, 1998
Released by: Jerrith
Contributors: Ashran, Beosil
Fun Facts: Banker NPCs added! And death animations.
Release date: August, 1998
Released by: Tal Strake
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).
Release date: August, 1998
Released by: Krozy
Fun Facts: NPCLISTs, RANDOMNAMEs and LOOTLISTs make their appearance!
Release date: August, 1998
Released by: Jerrith
Fun Facts: BACKPACK and PACKITEM tags added for NPCs!
Release date: August, 1998
Released by: Anthracks
Release date: August, 1998
Released by: Jerrith
Contributors: Zarn, Krozy
Fun Facts: First NPC shopkeepers!
Release date: August, 1998
Released by: Ashran
Release date: August, 1998
Released by: Jerrith
Contributors: Drylock, Krozy, Morac, Maytrix
Release date: August, 1998
Released by: Jerrith
Release date: August, 1998
Released by: Jerrith
Contributors: Krozy, Morac
Release date: August, 1998
Released by: Jerrith
Contributors: Morac, Krozy, El_Barto
Fun Facts: Monster sounds!
Release date: August, 1998
Released by: Jerrith
Release date: August, 1998
Released by: Jerrith
Contributors: Morac
Fun Facts: Command to play music added!
Release date: August, 1998
Released by: Anthracks
Contributors: Jerrith
Fun Facts: Players can be jailed! Secure trading added!
Release date: August, 1998
Released by: Maytrix
Fun Facts: Wipe command added!
Release date: August, 1998
Released by: Jerrith
Fun Facts: In-game region system added!
Release date: August, 1998
Released by: Jerrith
Contributors: Krozy, Anthracks
Fun Facts: Scriptable skill and stat advancement added!
Release date: August, 1998
Released by: Morac
Fun Facts: NPCs can open doors! And collide with stuff.
Release date: August, 1998
Released by: Anthracks
Contributors: SirGonad, Jerrith
Fun Facts: Healing/Veterinary implemented!
Release date: August, 1998
Released by: Morac
Contributors: Milan Rabaa
Release date: August, 1998
Released by: Sir Joseph
Contributors: Anthracks
Release date: ~17 August, 1998
Released by: Cironian
Contributors: Beosil
Fun Facts: Item limit increased from 4096 to 16384!
Release date: ~17th-24th August, 1998
Released by: Morac
Release date: ~17th-24th August, 1998
Released by: Sir Joseph
Contributors: Krozy
Release date: ~17th-24th August, 1998
Released by: Sir Joseph
Contributors: Morac
Fun Facts: Combat with viking swords now has sound!
Release date: ~17th-24th August, 1998
Released by: Anthracks
Contributors: Morac, Jerrith, Halin Talismoon
Release date: ~17th-24th August, 1998
Released by: Maytrix
Release date: ~17th-24th August, 1998
Released by: Tal Strake
Release date: ~17th-24th August, 1998
Released by: Maytrix
Release date: ~17th-24th August, 1998
Released by: Maytrix
Contributors: Morac
Release date: ~17th-24th August, 1998
Released by: Maytrix
Fun Facts: Container spawners and ITEMLISTS implemented!
Release date: 24 August, 1998
Released by: Cironian
Fun Facts: No range checks for GMs!
Release date: ???, 1998
Released by: Polaris
Contributors: Tal Strake
Release date: ???, 1998
Released by: Kathrrak & Tal Strake
Release date: ???, 1998
Released by: SirGonads
Fun Facts: Reloading of server settings while server is running! Tracking, Begging and Animal Lore skills added!
Release date: ???, 1998
Released by: Tal Strake & Kathrrack
Release date: ???, 1998
Released by: TANiS
Release date: ???, 1998
Released by: TANiS
Release date: ???, 1998
Released by: Krazy, Jim, Polaris
Fun Facts: Townstones introduced!
Release date: ???, 1998
Released by: Morac
Contributors: Brad, Kathrrak, Jack, Friend
Release date: ???, 1998
Released by: Morac
Contributors: Drylock
Release date: ???, 1998
Released by: Sir Joseph
Contributors: Krozy, Morac
Release date: ???, 1998
Released by: Morac
Release date: ???, 1998
Released by: Morac
Contributors: Drylock, Beosil
Fun Facts: Divide by zero in combat fixed!
Release date: ???, 1998
Released by: Sir Joseph
Contributors: Tal Strake
Fun Facts: First combat with bows and arrows implemented!
Release date: ???, 1998
Released by: Polaris, Tal Strake
Contributors: Morac, Friend
Fun Facts: House deeds!
Release date: ???, 1998
Released by: Tal Strake
Release date: ???, 1998
Released by: The UOX Development Team
Fun Facts: More stable codebase!
Release date: ???, 1998
Released by: Cironian & Ridcully
Release date: ???, 1998
Released by: CVS system version
Contributors: Drylock, Anthracks, Ridcully, Maytrix
Fun Facts: First use of CVS!
Release date: ???, 1998
Released by: Maytrix
Release date: ???, 1998
Released by: Vagrant
Contributors: Maytrix
Fun Facts: Lockpicking added!
Release date: ???, 1998
Released by: McCleod
Fun Facts: Newbie Items!
Release date: ???, 1998
Released by: Hunter
Release date: ???, 1998
Released by: Friend (Brother Kane)
Fun Facts: Tailoring!
Release date: ???, 1998
Released by: Friend (Brother Kane)
Release date: ???, 1998
Released by: McCleod
Release date: ???, 1998
Released by: Tao
Contributors: DasRaetsel
Fun Facts: Sphere of influence introduced to help server performance!
Release date: ???, 1998
Released by: Bud
Release date: ???, 1998
Released by: Tao
Release date: ???, 1998
Released by: SpaceDog
Release date: ???, 1998
Released by: Bud
Contributors: Tao, SpaceDog
Fun Facts:
Release date: ???, 1998
Released by: TANiS
Fun Facts: Teleporting guards added!
Release date: ???, 1998
Released by: TANiS
Release date: ???, 1998
Released by: TANiS
Contributors: Bud
Fun Facts: Performance profiling added to console!
Release date: ~September, 1998
Released by: Friend (Brother Kane)
Fun Facts: Cannons!
Release date: ~September, 1998
Released by: TANiS
Release date: ~September, 1998
Released by: Vagrant
Release date: 26 September, 1998
Released by: Sir Joseph
Contributors: SpaceDog, Vagrant, Anthracks, Friend
Fun Facts: Advancement Objects! Poison attacks!
Release date: 3 October, 1998
Released by: Sir Joseph
Contributors: Bud, SpaceDog, Vagrant, Anthracks
Fun Facts: Mining regions within other regions!
Release date: 3 October, 1998
Released by: Tauriel
Release date: 4 October, 1998
Released by: Tauriel
Contributors: Dupois, TANiS, CyberCrusher
Release date: ~4-11 October, 1998
Released by: Cironian
Release date: ~4-11 October, 1998
Released by: TANiS
Fun Facts: Monsters can attack animals!
Release date: ~4-11 October, 1998
Released by: Moongraven
Release date: 11 October, 1998
Released by: Sir Joseph
Contributors: Gerry, Dupois, Vagrant, Anthracks, Jim Wright
Fun Facts: Scriptable global teleport locations
Release date: 11 October, 1998
Released by: Cironian
Fun Facts: INVUL and NOINVUL commands!
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!
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!
Release date: 5 November, 1998
Released by: Genesis
Fun Facts: Gravedigging!
Release date: 6 November, 1998
Released by: Genesis
Release date: 7 November, 1998
Released by: Gerry
Contributors: Gerry, Tauriel, SpaceDog, Myca, Bud, Armageddon, Cironian, Dupois
Fun Facts: Monster gates! Worldsave backups!
Release date: 8 November, 1998
Released by: Genesis
Release date: 8 November, 1998
Released by: Tauriel
Contributors: Anthracks
Release date: 9 November, 1998
Released by: Cironian
Release date: 10 November, 1998
Released by: Cironian
Contributors: Bud
Fun Facts: Tents! Accounts stored separately outside UOX3.INI!
Release date: 10 November, 1998
Released by: Bud
Contributors: McCleod, Tauriel, SpaceDog
Release date: 13 November, 1998
Released by: Genesis
Contributors: Bud
Release date: 13 November, 1998
Released by: Nattsorgh
Contributors: Bud, Okaria Dragon
Release date: 13 November, 1998
Released by: redbaron
Contributors: Bud
Release date: 13 November, 1998
Released by: Genesis
Contributors: Thunderstorm, Myth
Release date: 14 November, 1998
Released by: Genesis
Release date: 16 November, 1998
Released by: Nattsorgh
Contributors: Genesis, Thunderstorm
Release date: 17 November, 1998
Released by: Genesis
Contributors: SpaceDog, Thunderstorm, Genesis/Myth, Ripper, Zadius, McCleod, Thunderstorm
Release date: 30 November, 1998
Released by: Tauriel
Contributors: Myth, Moongraven, Thunderstorm, Anthracks, Zadius
Fun Facts: Trigger system added!
Release date: 30 November, 1998
Released by: Tauriel
Contributors: Zadius
Release date: 30 November, 1998
Released by: Tauriel
Release date: 30 November, 1998
Released by: Tauriel
Contributors: Beosil
Release date: ~November-December, 1998
Released by: ???
Contributors: Zadius, Zippy, Drax, Tauriel, Ray, Moongraven
Fun Facts: WF compatible item type! Ray's triggers!
Release date: ~November-December, 1998
Released by: Tauriel and the UOX Dev Team
Contributors: Ripper, EviLDeD,
Fun Facts: Color coded messages! Binary saves!
Release date: ~November-December, 1998
Released by: Tauriel and the UOX Dev Team
Contributors: Ripper, Pellinore Dragon
Fun Facts: Speed improvements! Tile command!
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!
Release date: 16 April, 1999
Released by: Tauriel
Contributors: Dupois, Revana, EviLDeD
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
Release date: 9 November, 1999
Released by: Freelancers?
Contributors: fur, Abaddon
Release date: 15 November, 1999
Released by: Freelancers?
Contributors: LB
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!
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!
Release date: 19 January, 2000
Released by: UOX Dev Team/Freelancers
Contributors: Dupois, Zippy, Abaddon, AntiChrist, JustMichael, Magius
Fun Facts: Moongates! Escort quests!
Release date: 4 February, 2000
Released by: UOX Dev Team/Freelancers
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!
Release date: 29 May, 2000
Released by: UOX Dev Team
Contributors: Abaddon
Fun Facts: Scriptable Port!
Release date: 30 May, 2000
Released by: UOX Dev Team
Release date: 15 June, 2000
Released by: UOX Dev Team
Release date: 1 August, 2000
Released by: UOX Dev Team
Fun Facts: Also included revamped scripts (v37)!
Release date: 22 August, 2000
Released by: UOX Dev Team
Contributors: Gunther
Release date: 11 September, 2000
Released by: UOX Dev Team
Contributors: Gunther, Thyme
Release date: 25 September, 2000
Released by: UOX Dev Team w/Freelancers
Contributors: Thyme, Chaos, Gunther, Knoxos, WIG
Release date: 9 October, 2000
Released by: UOX Dev Team w/Freelancers
Contributors: Dodger, Knoxos, Zippy, Thyme
Fun Facts: Binary based spellbook spell storage! NPCs from spawn regions not saved!
Release date: 24 October, 2000
Released by: UOX Dev Team w/Freelancers
Contributors: Thaliq, Gunther, Chaos, Abaddon
Release date: 25 October, 2000
Released by: UOX Dev Team w/Freelancers
Contributors: Knoxos
Release date: 26 October, 2000
Released by: UOX Dev Team
Release date: 6 November, 2000
Released by: UOX Dev Team w/Freelancers
Contributors: Oakwood, Knoxos
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!
Release date: 23 November, 2000
Released by: UOX Dev Team
Release date: 6 December, 2000
Released by: UOX Dev Team
Contributors: KKung, Xuri
Release date: 17 December, 2000
Released by: UOX Dev Team
Fun Facts: CLUOX support added!
Release date: 17 January, 2001
Released by: UOX Dev Team
Contributors: Xuri, Retalin, Jedda, Tom2, Correa, Knox
Fun Facts: Random combat animations!
Release date: 31 January, 2001
Released by: UOX Dev Team w/Freelancers & NW Devs
Contributors: Raftina, Jedda, Chaos, Thyme
Release date: 1 February, 2001
Released by: UOX Dev Team
Release date: 5 February, 2001
Released by: UOX Dev Team
Contributors: punt
Release date: 6 February, 2001
Released by: UOX Dev Team
Contributors: knox
Release date: 16 February, 2001
Released by: UOX Dev Team
Contributors: Thunderstorm
Release date: 28 February, 2001
Released by: UOX Dev Team
Fun Facts: Players can no longer beg from offline players!
Release date: 21 March, 2001
Released by: Freelancers Group
Release date: 9 April, 2001
Released by: UOX Dev Team
Fun Facts: Karma and Fame gain/loss for NPCs! Evil mongbats?
Release date: 10 April, 2001
Released by: UOX Dev Team
Fun Facts: Recursive races!
Release date: 15 April, 2001
Released by: UOX Dev Team
Fun Facts: NOHAIR race tag added, to ensure bald player monsters!
Release date: 3 July, 2001
Released by: UOX3 Dev Team
Release date: ~3-11 July, 2001
Released by: UOX3 Dev Team
Release date: ~3-11 July, 2001
Released by: UOX3 Dev Team
Release date: ~3-11 July, 2001
Released by: UOX3 Dev Team
Release date: 11 July, 2001
Released by: UOX3 Dev Team
Release date: 30 July, 2001
Released by: UOX3 Dev Team
Release date: 7 August, 2001
Released by: UOX3 Dev Team
Release date: 20 August, 2001
Released by: UOX3 Dev Team
Release date: 14 September, 2001
Released by: UOX3 Dev Team
Release date: 19 September, 2001
Released by: UOX3 Dev Team
Release date: 7 November, 2001
Released by: UOX3 Dev Team
Release date: 8 January, 2002
Released by: UOX3 Dev Team
Release date: 9 January, 2002
Released by: UOX3 Dev Team
Release date: 22 January, 2002
Released by: UOX3 Dev Team
Release date: 4 February, 2002
Released by: UOX3 Dev Team
Release date: 26 April, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 26 September, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 27 September, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 29 September, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 29 September, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: ~6 October, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 7 October, 2002
Released by: EviLDeD
Contributors: Brakhtus
Fun Facts: Addition of OnClick and OnLogout JS events!
Release date: 25 October, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 5 November, 2002
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 16 January, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 21 January, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team (Xuri, Maarc, Dreoth, Brakhtus)
Release date: 21 January, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 27 January, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 7 March, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 11 March, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 15 March, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 23 March, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 4 May, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 10 May, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 14 May, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 18 June, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 29 June, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 30 June, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 27 July, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 1 August, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 2 August, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 8 August, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 14 August, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 7 September, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 14 September, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 19 September, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 28 September, 2003
Released by: EviLDeD
Contributors: UOX3 Dev Team
Release date: 23 March, 2004
Released by: EviLDeD
Contributors: UOX3 Dev Team
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!
Release date: 31 December, 2004
Released by: EviLDeD
Release date: 1 January, 2005
Released by: EviLDeD
Contributors: giwo
Release date: 30 January, 2005
Released by: EviLDeD
Contributors: giwo, Maarc, Rynet
Release date: 7 February, 2005
Released by: giwo
Contributors: Maarc
Release date: 8 February, 2005
Released by: UOX3 Dev Team
Release date: 10 February, 2005
Released by: UOX3 Dev Team
Release date: 18 February, 2005
Released by: UOX3 Dev Team
Release date: 18 February, 2005
Released by: UOX3 Dev Team
Release date: 26 February, 2005
Released by: UOX3 Dev Team
Release date: 27 February, 2005
Released by: UOX3 Dev Team
Release date: 28 February, 2005
Released by: UOX3 Dev Team
Release date: 5 March, 2005
Released by: UOX3 Dev Team
Release date: 11 March, 2005
Released by: UOX3 Dev Team
Release date: 2 April, 2005
Released by: UOX3 Dev Team
Release date: 14 April, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Release date: 16 April, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Release date: 22 April, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Release date: 12 June, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Xuri, ShadowBranch
Release date: 15 June, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Release date: 16 June, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri, ShadowBranch
Release date: 14 July, 2005
Released by: UOX3 Dev Team
Contributors: giwo, ShadowBranch
Release date: 16 July, 2005
Released by: UOX3 Dev Team
Contributors: giwo
Release date: 4 August, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Maarc, Grimson, Xuri, Sydius
Release date: 7 August, 2005
Released by: UOX3 Dev Team
Contributors: giwo, punt
Release date: 13 August, 2005
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Release date: 13 September, 2005
Released by: UOX3 Dev Team
Release date: 13 September, 2005
Released by: UOX3 Dev Team
Release date: 20 September, 2005
Released by: UOX3 Dev Team
Release date: 23 September, 2005
Released by: UOX3 Dev Team
Release date: 27 September, 2005
Released by: UOX3 Dev Team
Release date: 27 September, 2005
Released by: UOX3 Dev Team
Release date: 29 September, 2005
Released by: UOX3 Dev Team
Release date: 5 October, 2005
Released by: UOX3 Dev Team
Release date: 15 October, 2005
Released by: UOX3 Dev Team
Release date: 17 October, 2005
Released by: UOX3 Dev Team
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!
Release date: 1 November, 2005
Released by: UOX3 Dev Team
Release date:31 November, 2005
Released by: UOX3 Dev Team
Release date: 5 November, 2005
Released by: UOX3 Dev Team
Release date: 20 November, 2005
Released by: UOX3 Dev Team
Release date: 23 November, 2005
Released by: UOX3 Dev Team
Release date: 13 December, 2005
Released by: UOX3 Dev Team
Release date: 16 December, 2005
Released by: UOX3 Dev Team
Release date: 28 January, 2006
Released by: UOX3 Dev Team
Release date: 28 January, 2006
Released by: UOX3 Dev Team
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!
Release date: 29 January, 2006
Released by: UOX3 Dev Team
Release date: 30 January, 2006
Released by: UOX3 Dev Team
Release date: 31 January, 2006
Released by: UOX3 Dev Team
Release date: 1 February, 2006
Released by: UOX3 Dev Team
Release date: 2 February, 2006
Released by: UOX3 Dev Team
Release date: 12 February, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Maarc, Xuri, Grimson
Release date: 20 February, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Maarc, Xuri
Release date: 8 March, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Maarc, Xuri
Release date: 5 April, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Maarc, Xuri
Release date: 7 April, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Grimson
Release date: 8 July, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Xuri
Release date: 9 July, 2006
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 10 July, 2006
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 15 July, 2006
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 18 July, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 24 July, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 11 August, 2006
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 12 August, 2006
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 25 January, 2007
Released by: UOX3 Dev Team
Contributors: Grimson, Maarc, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 25 January, 2007
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 28 January, 2007
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 3 March, 2007
Released by: UOX3 Dev Team
Contributors: giwo, Grimson
Fun Facts: Included in v0.98-4.0 release!
Release date: 9 April, 2007
Released by: Grimson
Fun Facts: Included in v0.98-4.0 release!
Release date: 25 May, 2007
Released by: UOX3 Dev Team
Contributors: giwo, Xuri, Grimson
Fun Facts: Included in v0.98-4.0 release!
Release date: 26 May, 2007
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 12 June, 2007
Released by: UOX3 Dev Team
Contributors: giwo, Grimson, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 23 July, 2007
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 20 June, 2008
Released by: UOX3 Dev Team
Contributors: giwo, Xuri, Grimson
Fun Facts: Included in v0.98-4.0 release!
Release date: 21 June, 2008
Released by: giwo
Fun Facts: Included in v0.98-4.0 release!
Release date: 22 June, 2008
Released by: UOX3 Dev Team
Contributors: giwo, Xuri
Fun Facts: Included in v0.98-4.0 release!
Release date: 12 November, 2008
Released by: Maarc
Fun Facts: Experimental OBDC database support! Included in v0.98-4.0 release!
Release date: 16 January, 2009
Released by: UOX3 Dev Team
Contributors: giwo, Xuri, Maarc
Fun Facts: Included in v0.98-4.0 release!
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!
Release date: 18 January, 2009
Released by: giwo
Fun Facts: Included in v0.99 release!
Release date: 19 January, 2009
Released by: giwo
Fun Facts: Included in v0.99 release!
Release date: 22 March, 2009
Released by: UOX3 Dev Team
Contributors: Xuri, Ghostwolf
Fun Facts: Included in v0.99 release!
Release date: 28 January, 2010
Released by: UOX3 Dev Team
Contributors: Xuri, Shudderz, Ghostwolf, dragon slayer, Jediman
Fun Facts: Included in v0.99 release!
Release date: 31 January, 2010
Released by: Xuri
Fun Facts: Included in v0.99 release!
Release date: 1 February, 2010
Released by: UOX3 Dev Team
Contributors: Xuri, Shudderz
Fun Facts: Included in v0.99 release!
Release date: 1 February, 2010
Released by: Xuri
Fun Facts: Included in v0.99 release!
Release date: 7 February, 2010
Released by: UOX3 Dev Team
Contributors: Xuri, Puck
Fun Facts: Included in v0.99 release!
Release date: 14 December, 2011
Released by: UOX3 Dev Team
Contributors: Xuri, giwo, spdddmn
Fun Facts: Included in v0.99 release!
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!
Release date: 21 March, 2012
Released by: UOX3 Dev Team
Contributors: Xuri, dragon slayer
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!
Release date: 4 November, 2012
Released by: Xuri
Release date: 10 November, 2012
Released by: Xuri
Fun Facts: Global modifiers for combat speed/NPC spellcast speed!
Release date: 13 September, 2018
Released by: Xuri
Release date: 24 November, 2019
Released by: UOX3 Dev Team
Contributors: Xuri, Kitiara
Fun Facts: Custom tags can have negative values! Safezone region tag!
Release date: 12 April, 2020
Released by: Xuri
Fun Facts: Included in v0.99.3 release!
Release date: 8 August, 2020
Released by: UOX3 Dev Team
Fun Facts: Included in v0.99.3 release!
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!
Release date: 16 September, 2020
Released by: UOX3 Dev Team
Contributors: Xuri
Release date: 8 November, 2020
Released by: UOX3 Dev Team
Contributors: Xuri, punt, dragon slayer
Fun Facts: Housing revamp!
Release date: 12 January, 2022
Released by: UOX3 Dev Team
Contributors: Xuri, punt, dragon slayer, giwo
Fun Facts: Big performance improvements! Object refresh bug fixed! Code modernization! Revamped JS docs! Streamlined shard setup! World Templates!
Release date: 24 January, 2022
Released by: UOX3 Dev Team
Contributors: Xuri, punt
Fun Facts: Pathfinding improvements! Special NPC AIs!
Release date: 14 October, 2023
Released by: UOX3 Dev Team
Contributors: Xuri, Dragon Slayer, punt, ldilley, Maarc, with additional thanks to Azzerhoden Razeri, Hughesbuddy and Humility
Fun Facts: Adaptive Performance System! Bulk Order Deeds! Young Player System! Stealing revamp! PvP Ruleset! Minor SpiderMonkey Upgrade to 1.8.0-RC1! Admins/GMs no longer dispellable!
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!
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 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.
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
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
Fred Robinson, 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, DevTeam Lead, Web Admin, CVS admin, v69.00-v0.98.x
Pellinore Dragon
Programmer, v69.01
Homey
Programmer, v69.02
Crwth
Wayne Pearson, Programmer, v69.02
Phantom
Programmer, v69.02
Wolfgang
Programmer, v69.02
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
Ison
Programmer, 20/02/1999
Solomon
Scripter, 25/02/1999
Sayter/Zophar
Scripter, 25/02/1999
Westy
Peter Westberg, Programmer, Encryption Guru, 18/03/1999
punt
Charles Kerr, Scripter/Programmer, Tool Programmer, 04/04/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
Banter
Programmer, ~1999
Xuri
Scripter/Programmer, Tool Programmer, Web Admin, 21/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
Leafbeach
Programmer, November-December 2000
KKung
Programmer, 06/12/2000, 0.70.03.20f
Rain-
Programmer, ~January 2000
Lord Vader
Programmer, ~2000
Grady
Programmer, ~2000
Rainman/Cobol Junky
Peter J. Macomber, 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, Freelancers, 17/01/2001, 0.70.03.21
anshil
Axel Kittenberger, Programmer, Freelancers, 25/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
Frank Lubber
Programmer, Freelancers, 24/02/2001, v0.0.70.03.21d
TTP
Programmer, Freelancers, 14/03/2001
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
Richard Meyer, 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
Zachary Torkelson, 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
Sebastian Hartte, Programmer, 20/12/2001
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
Jörg Stückler, 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
SlasHeR
Florian Maetschke, Scripter/Programmer, ~2003
Malketh
Bryan Hoover, Programmer, 19/03/2003
Philantrop
Programmer, 19/03/2003
almiller1963
Programmer, 07/05/2003, v0.97.5.2g
Rynet
David Jones, Programmer, 29/07/2004
xir
Programmer, 31/07/2004
Grimson
Programmer, 07/06/2005, 0.98.3-0
ShadowBranch
Daniel Moree, Programmer, 11/06/2005, 0.98-3.0
Sydius
Chris Ogden, Programmer, 04/08/2005, 0.98-3.0
lingo
Lingo Chen, Programmer, 05/08/2005, 0.98-3.0e
Fish
Scripter, 29/01/2006, 0.98-3.2
jr
Programmer, 05/05/2006, 0.98-3.6
supermoleet
Programmer, 17/01/2009, 0.98-4.0
Jediman
Erich Weihrauch, Programmer, 05/11/2009
Ghostwolf
Scripter, 19/03/2012, 0.99
dragon slayer
Scripter, 19/03/2012, 0.99
xantier
Programmer, 19/03/2012, 0.99
Eolirin
Matthew Solomon, 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
tuanhtrng
Tuan H. Truong, Programmer, 17/04/2020
Azzerhoden Razeri
Scripter, 24/10/2022
ldilley
Lloyd Dilley, Programmer, 24/10/2022
Chaos
Tool Programmer, the original CGMT chaos - https://web.archive.org/web/20010119120600//http://www.prodes.org/cgmt/
Decius
Daniel Paull, Tool Programmer, UOXSE
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
Coren
Mark A. Pelletier, UOR/OU emulator
Sheppard
Creator of UOOS emulator
Allmight
Mans Sjoberg, Documentation, ~November 1998
TeHb
Scripter, ~November 2002
Tim
???
Contributors active within last year (as of November 2023):
Xuri, punt, Dragon Slayer, Azzerhoden Razeri, ldilley
Docs revamp by Xuri @ Copyright 2020 - 2024
Built on FAQ Template framework by CodyHouse.