The original Ultima Online server emulator (Est. 1997)

UOX3 News

Saturday, October 14, 2023

UOX3 v0.99.6 - Unleashed!

Another year, another UOX3 release. This version comes packed with additional stability and performance upgrades, new gameplay features, enhancements to the scripting engine, enhanced player support tools and more! Read the highlights below, or dive deep into full changelog for all the juicy details!

Performance Improvements

  • New
    Added Adaptive Performance System (APS) that dynamically adjusts how often NPC AI/movement is checked based on overall shard performance. If performance drops below defined threshold, UOX3 gradually slows down (temporarily) how often these are checked to prioritize player movement/speech/command responsiveness. Configurable in uox.ini!
  • Update
    Performance improvements for out-of-combat NPC pathfinding
  • Update
    Further improvements to world loading speed (~20% faster)
  • Update
    Further improvements to world save speed (~50% faster)
  • Update
    Networking performance for shards on Windows now much improved

Improved Server Stability

  • Fix
    Fixes for server crashes related to GM add-menu, music, spawnkill command, moving items from corpses to ground, carving up corpses, AreaCharacterFunction JS function, invalid item prices for items on player vendors, items being unequipped from characters no longer strong enough to equip them, onNameRequest/onTooltip JS Events, clients disconnecting while running server in debug mode
  • Fix
    Fixes for client crashes related to selling items to NPC vendors, logging in under certain circumstances involving older UO client versions
  • Fix
    Fixed client freeze for sub-7.x clients caused by an unsupported animation packet
  • Fix
    Fixed client freeze on login when only T2A client/server features are enabled, due to an incorrectly sized Stat Window Info packet
  • Fix
    Fixed a potential memory leak related to world saves
  • Fix
    Fixed an issue where UOX3 would fail to load pre-HS multi.mul files

Gameplay Improvements

  • New
    Added first version of Young Player System, which protects players on new/young accounts from being targeted by other players with hostile spells and actions, and also provides some protection versus monsters in the overworld. This is a system that spans across many sub-features of UOX3!
  • New
    Added initial setup for Trammel PvP ruleset, which can be applied to and customized for (any) facet
  • New
    Added (easily expandable) script for NPC Guilds, with one guild setup by default - Thieves Guild - which if joined grants players the ability to steal from other players and buy Disguise Kits. Membership also comes with discount/premium prices when buying/selling goods to NPCs from the same guild!
  • New
    UOX3 now tracks playtime per individual character and in total per account, accessible to players using the command 'playtime, and to scripts via new character/account properties
  • New
    Added support for (small) Bulk Order Deeds - for Blacksmithing skill. Includes special pre-aos BOD item rewards like mining gloves, functional runic hammers, etc.
  • New
    Added monster speech script that handles speech for Orcs, Ratmen, Lizardmen and Wisps in combat
  • New
    Added scripted special abilities for NPCs:
    • Savage Shaman - Chance to start tribal dance when being hit, which can link up with other shamans to heal nearby savages, or cast chain lightning or mass poison at nearby enemies
    • Savage Warrior/Rider - Bonus damage against various large tamed creatures
  • New
    Added Power Generators that spawn in certain locations in Ilshenar facet, with random puzzles that reward players with diamonds/arcane gems/shadow iron ore when solved
  • New
    Added new NPC AIs:
    • AI_CASTER (10) - Same as AI_FIGHTER (5), but will try to stay at casting range
    • AI_EVIL_CASTER (11) - Same as AI_EVIL (2), but will try to stay at casting range
    • AI_ANIMAL_SCARED (12) - Runs away from players if they get too close. Applied to hind, rabbits, squirrels, ferrets and various birds by default
  • New
    Added missing AI scripts for summoned Blade Spirits and Energy Vortexes
  • New
    Added new character state - passive combat mode - used by players when they tab out of combat. While in this state they will not retaliate towards omeone they're already engaged in combat with
  • New
    Added "keyless" option for interacting with locked doors of player-owned houses, letting owners/co-owners/friends/guests of a house use locked doors without requiring a key in their backpack, if this option is enabled in uox.ini
  • New
    Added functionality for crafting and using potion kegs, which can be used to store potions at a fraction of their original weight
  • New
    Added ability to create trophy house addons using Taxidermy Kits
  • New
    Added JS-based help/player support menu accessible via character paperdoll, with modernized style, UI and functionality
  • Update
    Stealing skill moved from code to script, and revamped entirely in the process, with updated rules on stealing, bugfixes and additions like town rare stealing, monster stealing, tracking of stolen items, some optional features from AoS, etc. Many aspects of the skill now also configurable in the script.
  • Update
    Snooping skill moved from code to script, with some fixes to rules for who can snoop what, where, when - and with which consequences. Also, the deeper inside a bag someone is snooping, the harder it becomes to succeed!
  • Update
    Mini-revamp of notoriety flagging, now with aggressor tracking, permagrey tracking, stealing flags, etc. on a per-target basis
  • Update
    NPCs can now temporarily ignore unreachable targets in combat, and might enter evade state and try to move away from those targets if needed
  • Update
    Updated how pets and followers are tracked for players to a more robust system, and exposed this to scripting engine
  • Update
    NPC Escort quests will now only pick target locations within the same facet as the NPC
  • Update
    NPC Shopkeepers now respond in priority of distance to the player - the nearest NPCs will respond first
  • Update
    Added hair/beard dyes to some NPC vendors (like alchemists), and moved functionality from code to script
  • Update
    Updated NPC animation setup in creatures.dfn to play idle/fidget animations from time to time, and to play casting animations when using magic spells
  • Update
    Updated behaviour of planks on boats; should now be more robust, secure and more in line with player expectations based on original UO experience
  • Update
    Updated behaviour of Magic Lock/Unlock spells; should now be more in line with player expectations based on original UO experience
  • Fix
    Fixed an issue of vanishing houses/boats due to data not being correctly saved
  • Fix
    Fixed a bug that caused skill checks to fail at a much higher rate than expected
  • Fix
    Animal Lore is now used instead of Anatomy as supplementary skill for Veterinary
  • Fix
    Fixed some issues with boats where they could be incorrectly prevented from moving, or incorrectly allowed to move through blocking tiles
  • Fix
    Murderous brigand NPCs will no longer teach players skills
  • Fix
    Fixed a number of cases where players would incorrectly remain in frozen state, or incorrectly be released from frozen state, in relation to spellcasting
  • Fix
    Earthquake spell will no longer cause caster to become criminal when there are no targets nearby, nor will they be affected by the spell themselves
  • Fix
    Fixed an issue with NPC evasion pathfinding where the direction wasn't always set correctly
  • Fix
    Fixed several issues with NPCs that would never stop fleeing, or get stuck in flee/don't flee loop
  • Fix
    Fixed an issue where NPCs could attempt to attack targets in other world/instances
  • Fix
    Fixed some issues with weight calculation of stackable items and partial pickups of item piles
  • Fix
    Pets should now teleport along with owner properly when within range
  • Fix
    Fixed known issues with placement of items (including especially tall items) on ground/floor/in houses, and with stacking of items
  • Fix
    Fixed an issue where UOX3 could lose track of locked down items in houses on server restart
  • Fix
    Fixed a bug where players dying onboard boats would prevent those boats from being packed up later, even after corpse decayed
  • Fix
    Fixed issues with NPC spellcasters killing themselves when casting Mind Blast, or killing members of their own species/race with AoE spells
  • Fix
    Fixed issue where tamed pets would not recognize certain items as food when fed
  • Fix
    Fixed players being able to dispel Admins and GMs o_O
  • Fix
    Fixed numerous issues related to guildstones that could leave guilds leaderless, blank out guild name/abbreviation/titles/charter, cause guild titles to show up incorrectly, etc.
  • Fix
    Fixed misc issues related to runebooks
  • Fix
    Fixed misc issues with player vendors

Enhancements for Shard Admins

  • New
    Added script with packet hook for packet 0xA4 to support CUOWeb client's user info/secret key feature, which can be used to restrict modified clients from connecting to the shard
  • New
    Added new GM commands: rmovable, rnodecay, listpets, listfollowers, gettagmap, gettemptagmap, useitem, addhouse, addmulti, getjstimer, setjstimer, killjstimer
  • New
    Added optional Item/NPC tags that can be used to inherit properties from other Items/NPCs depending on chosen era in CORESHARDERA uox.ini setting (GETUO, GETT2A, GETTD, GETUOR, GETLBR, GETAOS, GETSE, GETML, GETSA, GETTOL). Works same way as GET tag.
  • New
    New INI settings added:
    • [settings]
      • ALLOWAWAKENPCS=0/1 - If enabled, NPCs marked as awake are kept active even if the region they are in have no players
      • CASTSPELLSWHILEMOVING=0/1 - If enabled, players can cast spells while moving, without having to stop
      • CRAFTCOLOUREDWEAPONS=0/1 - If enabled, players can craft coloured weapons from colored ingots. Defaults to disabled.
      • DISPLAYMAKERSMARK=1/0 - Controls if maker's marks on crafted items are shown on a global level
      • GLOBALRESTOCKMULTIPLIER=1/0 - Global multiplier applied to RESTOCK property of items when loaded from DFNs
      • MAXPLAYERPACKWEIGHT=40000 // Control max weight player backpack can hold, defaults to 400.00 stones
      • MAXPLAYERBANKWEIGHT=160000 // Control max weight player bankbox can hold, defaults to 1600.00 stones
      • MAXSAFETELEPORTSPERDAY=1/0 // Max safe teleports per day for stuck players via help menu
      • TELEPORTNEARESTSAFELOC=1/0 // Teleports player to nearest safe location (1) or random safe location (0) when using stuck feature in help menu
      • SHOWGUILDINFOINTOOLTIP=1/0 - If enabled, shows player's guild info in tooltip. Defaults to 1
      • SHOWINVULNERABLETAGOVERHEAD=0/1 - Controls whether invulnerable tags are shown overhead
      • SHOWITEMRESISTSTATS=0/1 - If enabled, shows item resistance stats in item tooltip. Defaults to 0
      • SHOWNPCTITLESINTOOLTIPS=1/0 - If enabled, shows NPC titles in tooltip. Defaults to 1
      • SHOWNPCTITLESOVERHEAD=1/0 - Controls whether NPC titles are shown over their heads
      • SHOWRACEINPAPERDOLL=1/0 - If enabled, shows a character's race in the paperdoll. Defaults to 1
      • SHOWRACEWITHNAME=1/0 - If enabled, shows a character's race along with their name. Defaults to 1
      • SHOWREPUTATIONTITLEINTOOLTIP=1/0 - If enabled, shows player's reputation title in tooltip. Defaults to 1
      • SHOWWEAPONDAMAGETYPES=1/0 - If enabled, shows weapon damage types in item tooltip. Defaults to 1
    • [combat]
      • PETCOMBATTRAINING=1/0 - Controls whether pets can gain skills/stats from combat
      • HIRELINGCOMBATTRAINING=1/0 - Controls whether hirelings can gain skills/stats from combat
      • NPCCOMBATTRAINING=1/0 - Controls whether NPCs in general can gain skills/stats from combat
    • [expansion settings]
      • CORESHARDERA=lbr
          Defines the "core" era of the shard. Defaults to lbr (Publish 15).
        • any - determines which Item/NPC DFNs gets loaded, based on tags like GETT2A, GETPUB15
        • uor or later - enables bonus hit chance for archery via ARCHERYHITBONUS setting
        • lbr or earlier - final combat damage value reduced by half
      • ARMORCALCULATION=core
          Defines era to base armor calculations on
        • lbr or earlier - different armor pieces contribute different percentage of the total Armor Rating
        • aos or later - each armor piece contribute to sum total of Physical Resistance, and other elemental resistance stats
      • STRENGTHDAMAGEBONUS=core
          Defines era to base strength damage bonus on
        • uor or earlier - 20% damage bonus based on strength, capped at 200 strength
        • td or later - 35% damage bonus based on strength if 100 strength or more, otherwise 30% damage bonus
      • TACTICSDAMAGEBONUS=core
          Defines era to base tactics damage bonus on
        • lbr or earlier - bonus = Tactics skill + 50
        • aos or later - 68.75% damage bonus if GM Tactics, 62.5% bonus if below
      • ANATOMYDAMAGEBONUS=core
          Defines era to base anatomy damage bonus on
        • uor or earlier - bonus = Anatomy / 5 vs NPCs, Anatomy / 2.5 vs Players
        • td or later - 30% damage bonus at GM anatomy, up to 20% below GM
        • ml or later - 50% + 5 damage bonus at GM anatomy, up to 50% below GM
      • LUMBERJACKDAMAGEBONUS=core
          Defines era to base lumberjacking damage bonus on
        • uor or earlier - 35% damage bonus at GM skill, up to 25% below GM
        • td or later - 30% damage bonus at GM skill, up to 20% below GM
        • hs or later - 10% chance of 100% damage bonus
    • [expansion settings]
      • 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
  • Update
    Replaced script for responding to ConnectUO (dead) server poll request, with one that works with the 'standard' freeshard server poll request instead
  • Update
    Enhanced GM 'add menu to allow clicking directly on images of items/NPCs to add them
  • Update
    Admin Welcome gump now includes decoration and spawn options for Trammel and Ilshenar (in addition to Felucca), and admin can choose between optional "addon" decorations per facet, depending on what fits for their client/shard era
  • Update
    Starter items for new players added via PACKITEM and EQUIPITEM tags in newbie.dfn can now be given a flag in said file that will override the newbie-property for said items without having to modify their base item definitions
  • Update
    The 'go command can now be used to teleport to specifically named locations from locations.dfn. Example: 'go CastleBritish or 'go DestardLevel2
  • Update
    Updated locations definitions with numerous new entries accessible with 'goplace # command for teleporting to key locations in Ilshenar, Malas, Tokuno Islands and Ter Mur facets, and added these to travel-menu portion of GM menu
  • Update
    Spawn Regions now support spawning NPCs from NPCLISTS with weighted entries for better control of what kind of NPCs will spawn more/less commonly
  • Update
    Updated default HTML templates for server status page, showing shard name more prominently, hiding shard staff from regular player list, hiding UOX3 version from players, and more
  • Update
    Updated NETWORKLOG uox.ini setting to always log network traffic for connected clients if enabled, without needing to specifically enable it for individual sockets
  • Fix
    Fixed a bug where 'make admin/gm/cns would not properly keep track of a targeted character's physical appearance, which is now restored upon using 'make player command
  • Fix
    Removing locked down items in a house using 'remove or 'rremove will now correctly update the lockdown count of the house
  • Fix
    Fixed an issue with travel-commands in GM menu which handled travelling between facets incorrectly

Era-based Customization Options

  • New
    Added new INI settings under [expansion settings] section to help shard admins customize some key behaviours of their shards, based on their preferred "era" of UO. Defaults to LBR. See Additional INI Settings section above for details
  • New
    Added (optional) new Item/NPC DFN tags to help determine which properties to load from DFNs, based on chosen era in CORESHARDERA INI setting: GETUO, GETT2A, GETTD, GETUOR, GETLBR, GETAOS, GETSE, GETML, GETSA, GETTOL. These tags work similar to the existing GET tag, and inherits the properties of the specified sectionID.

JS Engine Updates

  • New
    Exposed numerous additional object properties to JS engine, and to get/set/tweak GM commands
  • New
    Added new JS Events:
    • onCarveCorpse() - Triggers for iCorpse when being carved by pUser
    • onCreatePlayer() - Triggers in global script for newly created characters (in place of onCreateDFN, which is now exclusive to NPCs/Items)
    • onDamageDeal() - Triggers for character about to deal damage in combat
    • onDyeTarget() - Triggers for dyeTub when player tries dying an item
    • onFacetChange() - Triggers for character when moving between facets
    • onMultiLogout() - Triggers when players log out inside multis, and can override certain relatd behaviors
    • onNameRequest() - Triggers when name of object is being requested, can be used to return custom text. Source of request also provided
    • onScrollingGumpPress() - override default gump menu when pressing Help button in paperdoll
    • onSpellTargetSelect() - Triggers for character selecting a target with a spell
  • New
    Added new JS Functions:
    • CreateBaseMulti() - Create base multis based on raw multi IDs
    • CreateHouse() - Create houses from house.dfn based on house section ID
    • DoesCharacterBlock() - Can check if a character exists at given coordinates
    • DoesEventExist() - Can check for the existence of a JS event in another script
    • EraStringToNum() - Can convert an era string to int value representing said era
    • GetCharacterCount() - Gets number of characters on server
    • GetItemCount() - Gets number of items on server
    • GetMultiCount() - Gets number of multis on server
    • GetServerVersionString() - Gets server version as a string
    • GetStartTime() - Returns timestamp for when server started up
  • New
    Added new JS Object Methods:
    • .GetOrePrefs() - Returns ore preference data for town region associated with Region object
    • .GetOreChance() - Returns base chance of finding any ore in town region associated with Region object
    • .GetFollowerList() - Get list of followers Character has
    • .AddFollower() - Add an NPC as follower of Character
    • .RemoveFollower() - Remove an NPC as follower of Character
    • .IsAtPeace() - Returns true if Guild is at peace and not at war with any other guilds
    • .GetTagMap() - Gets list of persistent custom tags associated with object
    • .GetTempTagMap() - Gets list of temporary custom tags associated with object
    • .SetRandomName() - Apply a random name from a namelist to Character
    • .FindItemSection() - Search player's backpack for an item with specified sectionID
    • .OpenContainer() - Opens specified container for Socket
    • .GetJSTimer() - Gets expiry time for a specific timer from a script on object
    • .SetJSTimer() - Sets expiry time for a specific timer in a script on object
    • .KillJSTimer() - Kill a specific timer in a script on object
    • .HasScriptTrigger() - Returns true if script with scriptID is present on object
    • .AddAggressorFlag() - Adds aggressor flag for character towards target character
    • .RemoveAggressorFlag() - Removes character's aggressor flag towards target character
    • .CheckAggressorFlag() - Check if character has an aggressor flag towards target character
    • .UpdateAggressorFlagTimestamp() - Updates the expiry timestamp of character's aggressor flag towards target character
    • .IsAggressor() - Returns true/false depending on whether character has any active aggressor flags
    • .ClearAggressorFlags() - Clears all the character's aggressor flags towards other characters
    • .AddPermaGreyFlag() - Adds permagrey flag for character towards target character
    • .RemovePermaGreyFlag() - Removes character's permagrey flag towards target character
    • .CheckPermaGreyFlag() - Check if character has an active permagrey flag towards target character
    • .UpdatePermaGreyFlagTimestamp() - Updates the expiry timestamp of character's permagrey flag towards target character
    • .IsPermaGrey() - Returns true/false depending on whether character has any active permagrey flags
    • .ClearPermaGreyFlags() - Clears all the character's aggressor flags towards other characters
  • Update
    Updated numerous JS Events, Functions/Methods with fixes and additional options
  • Update
    Improved error-reporting for scripting engine
  • Update
    SpiderMonkey upgraded from 1.7 to 1.8.0-RC1, which adds support for Array.reduce() and reduceRight(), expression closures, and generator expressions
  • Fix
    Fixed a critical issue with script context sometimes changing while executing a script, because of events in other scripts being triggered. Affected scripts can be safeguarded against this by the addition of a dummy callback function anywhere in the script: function _restorecontext_() {}

Misc Code/Script Changes

  • New
    Added new Item DFN tag which specifies which spells a spellbook starts with (see DFN Tag Overview -> Item DFN Tags for more details!): SPELLS=0x00000000,0x00000000,0x00000000
  • New
    Added a "permanently awake" option for NPCs, which causes UOX3 to always check them for AI/movement/script updates regardless of whether they're in "dormant" areas of the world with no player activity. Can be set via NPC DFN tag AWAKE=0/1, or Character JS property .isAwake
  • New
    Added FreeBSD build support for SpiderMonkey, zlib and UOX3
  • New
    Added support for adding scripts in ore definitions, which is automatically applied to any ore of those types that's mined
  • New
    Added new property for Items and NPCs loaded from DFNs: sectionID (keeps track of [sectionID] an item or NPC originated from)
  • New
    Added all-in-one solution and project files for VS2022 that compiles both UOX3, Spidermonkey and zlib
  • Update
    Moved Taste ID skill implementation from hard code to JS
  • Update
    Moved Mining/Gravedigging skill implementation from hard code to JS
  • Update
    MAXRANGE item property can now be used to define max combat range for melee weapons as well (not just ranged ones)
  • Update
    Build system revamp across all supported platforms, with streamlined process and reorganization of build files. Cmake project now compiles static version of Spidermonkey, same as VS
  • Update
    Cleanup and standardization of style and naming conventions in code and scripts
  • Update
    Misc code fixes, modernization and improvements
  • Fix
    Fixed many compile-time warnings across different compilers
  • Fix
    Fixed issues with idle/fidget animation setup that could cause some NPCs to blink out of existence randomly

Misc DFN Changes

  • New
    Added Item DFN entries for spellbook pre-filled with circles 1 to 4, and for spellbook pre-filled with all spells, and added these to GM 'add menu (dfndata/items/magic/misc_magic.dfn)
  • New
    Added region spawners for dungeons, towns and overworld in Ilshenar facet
  • New
    Added additional NPC definitions related to Ilshenar facet
  • New
    Added region definitions for Sea Market, Blackthorn Dungeon and Lakeshire
  • New
    Added spawn regions for missing banker NPCs in Serpent's Hold
  • New
    Added new NPC definitions for: f_executioner, f_chaosdragoon, f_chaosdragoonelite, f_gypsybanker, f_gypsymaiden, f_gypsyanimaltrainer, f_gypsyfortuneteller, f_vagabond, f_ironworker, m_executioner, m_chaosdragoon, m_chaosdragoonelite, m_gypsybanker, m_gypsyanimaltrainer, m_vagabond, m_ironworker, darkwisp, ancientlich, savageshaman, m_savagewarrior, f_savagewarrior, savagerider
  • Update
    Revamp of default spawn region setup, should be more accurate to the UO experience
  • Update
    Updated region definitions of several regions with incorrect coordinates
  • Misc minor DFN fixes and improvements

Grab your copy of UOX3 0.99.6 for your preferred platform - Windows, Linux or macOS - while it's still hot!

Monday, January 24, 2022

UOX3 v0.99.5a Released!

This update to 0.99.5 is on the smaller side, but contains some important fixes and performance improvements, in addition to several gameplay and JS engine improvements!

Additional Performance Improvements

  • NPC Pathfinding performance improvements (up to 60% more efficient)
  • Optimized system for activating NPCs in map regions around online players; instead of all 9 map regions surrounding a player being active, now only 3 to 6 will be active, based on the player's position within these regions - leading to fewer overall NPC pathfinding request
  • UOX3 now adapts the time between each time it checks Spawn Regions based on how "full" the Spawn Regions are on average - the nearer they are to max capacity, the longer time between each time Spawn Regions are checked
  • Reloading spawn regions will now "unload" already spawned NPCs and items as part of the reload process
  • Fixed an issue where information on newly spawned characters would get sent twice to each nearby player
  • Adjusted default values for some INI speed/timers settings for improved server performance

JS Engine Updates

  • Extended the amount of JS events supported by UOX3's JS engine from 96 to 192
  • Added new JS Events:
    • onHelpGump() - override default gump menu when pressing Help button in paperdoll
    • onWarModeToggle() - return false to prevent war mode toggling
    • onAICombatTarget() - return true to select current target, or false to skip and look for another
  • Updated JS Events and Methods:
    • onDamage() - can now return false to override and prevent damage dealt to a character. Must return true to allow damage
    • onSwing() - also works for characters with no weapons equipped
    • .KillTimers() - now also works for Characters (previously Items only)

Gameplay Improvements

  • NPCs can now engage other NPCs in combat if setup as racial enemies. Ophidians vs Terathans have been setup as an example of this.
  • Fixed an issue with initialization of wander areas for NPCs spawned via object spawners, which caused NPCs to not stick to their assigned areas, but wander according to their own free will. Can't have that!
  • Fixed some issues with itemlists pointing to non-existing items (a turnip and 10 of each magical reagent)
  • Updated Provocation skill to disallow directing provoked creatures at targets with the custom tag provImmune present
  • Added script that allows Tinkerers to craft golem followers via Clockwork Assembly items
  • Misc fixes to DFN entries for Bascinet, Helmet, Sai weapon, Wands
  • Reduced the default amount of town folk, poor folk and rich folk NPCs spawning in Britain
  • Misc fixes to JS scripts (NPC speech, moongates)
  • Players can no longer gain Anatomy skill from targeting themselves

Misc Other Stuff

  • Added reusable scripts that renders characters immune to either physical or magical damage
  • Added pre-defined book: A Welcome, by Blackthorn
  • Added definitions (and scripted special abilities) for additional NPCs:
    • Orc Brute - throws orc lords at nearby targets
    • Orc Chopper - basic attacks deal AoE damage
    • Betrayer - Colossal blow, AoE poison
    • Golem - Colossal blow
    • Golem Controller
    • Crafted Golem - Tinker-crafted version of golem
    • Exodus Overseer - magical shield that makes NPC immune to physical damage
    • Exodus Minion Lord - magical shield that makes NPC immune to physical damage
    • Exodus Minion - magical shield (like above), periodic AoE burst
  • Skill titles no longer show in paperdolls of characters turned into Counselors and GMs
  • Default titles of Counselors, GMs and Admins can now be customized via commands.dfn
  • Fixed a client crash on first login caused by issues with the admin welcome gump
  • Minor console cleanup

Grab your copy of UOX3 0.99.5a for your preferred platform - Windows, Linux or macOS - while it's still hot!

Monday, January 12, 2022

UOX3 v0.99.5 Released!

This update has been a year in the making, and contains many new features, some serious performance improvements under the hood and bugfixes galore. Check out the highlights below, or dive deep into the full changelog for all the juicy details!

Massive Performance Improvements

  • Substantial reduction in server startup time for large worlds due to updated handling of multi initialization
  • Worldfiles now load ~73% faster than before on startup!
    • Previously: ~206 seconds to load 1 million items. Now: ~56 seconds. Tested on Windows, results may vary.
  • Worldfiles now save ~11% to ~99% faster than before!
    • Actual time depends on amount of changes since previous world save. If no changes have taken place, world saves will be instant. Note that first save after startup is a full save.
  • Performance improvements for seeking in map, statics and multis
  • Several improvements to NPC pathfinding to address functionality and performance
  • Regional spawning system improved and optimized, with much higher success-rate for finding valid spawn locations on both land and water (also self-improves over repeated spawn cycles)

Improved Server Stability

  • Several server crashes fixed, including some deep-rooted, hard-to-debug issues with JS timers, temp effects, object handling in regions, etc.
  • Hardened server against worldfile corruption by adding some measures to prevent UOX3 from being shut down/closed in the middle of a world save

Object Refresh/Update Improvements

  • Fixed long-standing (20+ years old) issues with objects not updating/refreshing properly, where those objects would vanish from view and appear to have "gone missing"
  • Fixed issues with objects moving between different worlds/instances not updating properly

JS Scripting Engine Improvements

  • JS engine is now more robust, after a ton of fixes, improvements and additions
  • Support added for attaching multiple scripts to individual objects, which makes it much easier to do modular (and third party/custom) scripts
  • Lots of new JS events, functions and object properties have been added to increase the flexibility of the JS engine
  • Many existing JS events updated to support return values from script
  • Revamped JS Docs with updated syntax, examples, search function
  • TriggerEvent JS function updated to support returning a value (int, string, bool, array) or object from the called upon script
  • Exposed crafting system to JS engine to give scripters access to entries in create DFN files and associated properties
  • Added support for specifying custom target cursors as neutral, harmful or helpful
  • Temporary custom tags can now be set on objects via JS; these tags are not saved along with other object properties, and only last until server is restarted (for NPCs/items) or until a player logs out (for Player characters)
  • Revamped, searchable JS Documentation with up-to-date details and examples for each Event, Function, Method and Property in UOX3

Modernization and Cleanup of Code Base

  • Many parts of the source code modernized to make use of c++11/17 features, especially with regards to string handling, conversion between strings and numbers, usage of standard filesystem, null pointer handling and more
  • Cleanup of several areas of code to reduce complexity, fix logic errors and improve readability
  • Addressed numerous compiler warnings on all supported platforms
  • Fixes to long-standing issue with UOX3 console not resetting terminal properly after shutdown on Linux

Easier Shard Setup Process

  • The setup process for new UOX3 shard has been simplified; the serverlist in ini file has been done away with, and UOX3 now automatically accepts and responds to connections on both local and LAN IPs, with a new optional setting to specify a shard's external IP
  • A new welcome gump now displays for fresh shard admins, allowing them to choose between starting with a blank slate or to load world templates and/or enable spawn regions for specific (or all) facets, for a smoother first-time-user-experience
UOX3 Admin Welcome Gump - part 1UOX3 Admin Welcome Gump - part 2

World Templates

  • A new command ('decorate) allows saving/loading of world templates, text files that contain the bare minimum amount of details needed to decorate an entire game world, facet or specific area of a facet.
  • These world templates can be saved and loaded on the fly without impacting existing data on a shard.
  • A default set of such world templates with decorations (doors, signs, basic decorations) for Felucca, Trammel and Ilshenar - with associated dungeons - are bundled with UOX3
  • An additional feature of this command is the ability to save, load and unload event-specific decorations - for instance for Christmas, Halloween or shard-specific events - based on a new item property (.event) that can be used to associate items with such events

Doubling down on Dictionaries

  • UOX3 has doubled down on its custom dictionary system, and every system message in the game has now been converted from raw strings to dictionary entries which can be displayed in different languages
  • A new ini setting has been added allowing shard admins to specify a default language for their server, which will determine the language of dictionary messages sent to connected clients, instead of the default option, which is to use the client's specified language
  • Due to improvements for UTF8 character handling in the dictionary system, UOX3 now comes bundled with language support and dictionary files for the following languages: English (default), Czech, French, German, Italian, Polish, Portuguese and Spanish

Customizable Network Budgets

  • Shard admins can now assign a "network budget" to connected clients via UOX.INI, specifying the max amount of traffic each client is allowed to send/request from the server, with temporary account bans for players who exceed these limits repeatedly in the same session.

Revamp of Boats

  • Greatly improved handling of boats, with all known bugs fixed and some previously missing features implemented (like collision with other boats and dynamic items). Note that the boat implementation is based on the ~Publish 15 era of UO
  • All classic boat commands implemented (including aliases, as it's based on triggerwords from client)

Fish as Server-Tracked Resource

  • Fish has been setup as an additional server-tracked resource, in addition to the existing ore and logs, with new ini settings to allow specifying the amount of fish resources per resource-region, and how often this resource "respawns"

Revamp of Fishing Skill

  • Fishing skill has been moved out of code and into JS, and updated to support all functionality present in ~Publish 15 (LBR/pre-AoS era), including things like shallow vs deep water fishing, magic fish, big fish, sea serpents, special fishing nets, messages in a bottle/SOS and shipwreck treasures - with valid shipwreck locations being definable in a new, special regions.dfn section

Revamp of Taming skill and Pets

  • Animal Taming skill updated to match functionality and ruleset of ~Publish 15 era of UO, with some additional options that go beyond that era
  • Pet ownership now works as players expect it to, with fully functional pet commands, ownership restrictions, controlslots, friend-lists, secure pet trading, pet loyalty and "orneriness" and a ton of bugfixes
  • Taming restrictions have been put in place for certain creatures like Unicorns, Ki-Rins and Cu Sidhe

Revamp of Cooking Skill

  • Cooking skill has received an overhaul to ensure players can cook all food-items available in ~Publish 15 era of UO
  • Flour mills are now animated, and take a few seconds to grind wheat into flour

Revamp of Crafting Skills

  • Crafting menus have been revamped and "modernized" via JS for skills like Alchemy, Blacksmithing, Carpentry, Cooking, Fletching, Tailoring and Tinkering - with new features such as resource-requirements, crafting chances, and more
  • Create DFNs updated with additional craftable items, including house-addons
  • Crafting tools now come with limited amount of uses per tool (optional feature, enabled by default)

Other Improvements to Skills

  • Skill delay can now be specified per skill, which overrides the global skill delay from uox.ini, and the delay for all skills have been updated to match ~Publish 15 (LBR/pre-AoS) era of UO
  • Enhancements/fixes to several skills, with implementation now being closer to pre-AoS era: Animal Lore, Animal Taming, Cooking, Healing, Tailoring, Tracking
  • Item Identification skill has been ported from code to JS, and received some updates
  • Remove Trap skill has been implemented in JS, and allows players with appropriate skills to remove traps from containers, depending on skill vs difficulty of trap
  • Herding skill has been implemented in JS, and allows players with a Shepherd's Crook and appropriate skills to herd non-tamed animals
  • Players can now heal various humanoid monsters with bandages using the Healing skill
  • UOX3 has a system that allows a player's stats to affect the chance of success when performing a skill check. This system is no longer in effect by default, but has turned into an uox.ini setting for those who wish to use it

Enhanced Context Menu Support

  • Support for context menus has been greatly improved, with ~publish 15-era (pre-AoS) context menu functionality fully implemented for players, NPC bankers, pets, hirelings, stablemasters, escort NPCs, NPC trainers
  • New ini setting added for enabling/disabling context menus
UOX3 Context Menus

Improvements to Magic Systems

  • Delay between casting a spell and damage/effects being applied can now be specified per spell in spells.dfn, replacing a similar global setting from uox.ini, and all relevant spells have been updated with appropriate delay timings based on ~Publish 15 (LBR/pre-AoS) era of UO
  • Recovery time from casting a spell until being able to cast another can now be defined per spell in spells.dfn
  • New ini setting toggles whether player spellcasting gets interrupted upon equipping/picking up items. Defaults to enabled
  • Overhauled rules for spellcasting, so reagent checks and skill-checks take place at appropriate times
  • Overhauled casting times, SFX and VFX for all spells
  • Fixes for several spells (Magic Trap/Untrap, Magic Lock/Unlock, Telekinesis, Summon Creature, Dispel, Mass Dispel, Reveal, Earthquake, Field spells)
  • NPC spellcasters now make more informed decisions on what type of spells to cast in combat, based on the situation

Updated Combat Mechanics

  • Various combat mechanics (parrying, damage calculations) have been updated to be in line with ~Publish 15 (LBR/pre-AoS) era of UO
  • A new optional combat system has been added allowing shard admins to define armor classes and have specific weapons be more effective against some armor classes than others
  • Damage tracker that keeps track of damage being dealt to a given creature/player now also tracks the type of damage being applied, and this information has been exposed to the JS engine. Damage() method and onDamage() event have also been updated to provided an optional parameter to specify the type of damage being done.
  • Special JS-based AI behaviour (like fire breath, damage auras, spell reflection, basic pack behaviour) have been added to numerous monsters
  • Based on research from UO patch notes, an accuracy bonus has been implemented for the Archery skill, which can be defined (or disabled) via a new ini setting
  • Archers now have to stop and stand still for a minimum amount of time before they can fire their ranged weapon. This delay has been added as a new ini setting

Pre-AoS Magic Items

  • A new JS script has been created which can generate magic items (weapons, armor, wands/staffs, rings) of the pre-AoS variety as loot for NPCs with the script attached, or created on demand with GM commands
  • The quality of the magic items generated depend on the fame of the NPC, with higher fame resulting in improved chances of magic loot, as well as higher quality of said loot
  • The type of magic properties that can be generated for a given magic item match up with those that could be found in the pre-AoS era of UO. Examples:
    • supremely accurate katana of vanquishing
    • substantial silver spear
    • durable ringmail tunic of guarding
  • Magic items can also receive spell enchantments, which come with a limited number of charges that activate on successful hits in combat for weapons, on equip for armors and on use for jewlery/wands/staffs. Examples:
    • surpassingly accurate dagger of power and Wounding
    • substantial axe of force and daemon's breath
    • platemail arms of protection
    • wand of identification
    • ring of teleportation
  • A new ini setting allows controlling whether item stats for unidentified magic items are hidden (default) or always shown

Upgraded Add/Item-menus

  • The GM add-menu has received some updates to increase usability and flexibility while adding items. GMs can now choose from various settings such as adding items at a location instead of in backpack, automatically reopen the last menu that was open, enabling "repeat add" to add same item over and over, and adjust the default decay/movable state of items added, overriding whatever values they might have in the DFNs
UOX3 Add Menu - part 1UOX3 Add Menu - part 2

House-Addon Extravaganza

  • Improvements have been made to how house-addons are added, to prevent scenarios like multi-item addons extending beyond the allowed space in a multi
  • Additional house-addons have been implemented and are available from the GM add-menu, or crafted by players:
    • Loom (south)
    • Small Forge
    • Large Forge (north/south/east/west)
    • Anvil (south/east)
    • Spinning Wheel (north/south/east/west
    • Small Bed variant 1 (south/east)
    • Small Bed variant 2 (south/east)
    • Large Bed variant 1 (south/east)
    • Large Bed variant 2 (south/east)
    • Training Dummy (south/east)
    • Pickpocket Dip (south/east)
    • Abattoir
    • Flour Mill (south/east)
    • Sandstone Oven (south/east)
    • Brick Oven (south/east)

Misc Updates to DFNs

  • All NPCs (including townsfolk, shopkeepers, monsters and animals) in UOX3 have had their stats, skills, loot and other settings updated to match the state of these according to the official LBR guide (~Publish 15/pre-AoS) in combination with data from the stratics network from around the same time
  • New itemlists and lootlists have been added, and existing ones have been updated with more variety and more randomness
  • Item and NPC DFN sections can now inherit a random parent, if more than one parent is defined when using the GET tag
  • Named aliases have been added for all definitions of weapons, armors and clothes, to allow adding items with GM commands using the names of these items
  • Definitions for weapons and armors added from AoS to ToL UO expansion added, with stats balanced for Pub15
  • Races can now be setup with functional combat damage modifications based on weapon skills, so different races can have bonuses/penalties with different weapon types
  • Races can now be setup with equipment restrictions, either as whitelists or blacklists, that can allow/prevent certain races from equipping certain gear

Spawn Containers and Dungeon Chests

  • Spawn containers can now spawn more than one item per container - in fact, by default they now spawn every item in a specified itemlist in a given container
  • Default spawn files provided with UOX3 spawns locked and trapped chests and containers in dungeons on a regular basis. The contents of these chests varies (4 levels), as does the skill required to unlock and/or remove the traps associated with the chests.

Various Hard-Coded Functionality Ported to Scripts

  • Tweak command has been ported to JS, and has been overhauled with a new UI, improved usability, support for additional properties for Characters, Accounts, Skills, Items, Multis and Regions
  • The ability to split in combat now exists as a stand-alone JS script that can be attached to any NPC, and is thus no longer the exclusive domain of slimes
  • Implementation of sextants moved from code to JS, and updated to return proper longitude and latitude coordinates
  • Various skills ported to JS: Fishing, Item ID

Many Additional Improvements

  • Hireling AI! A variety of NPCs can now be hired with gold and commanded like pets via commands or context menu options
  • Thirst system added to complement the existing hunger system
  • Blood splatter effects now spawn in combat!
  • Improvements to spawn containers and traps on containers in general
  • Accounts now have a firstLogin timestamp property that is set the first time a player logs in to their account. This property is accessible via JS.
  • Player characters now have a createdOn timestamp property that is set when a character is created. This property is accessible via JS.
  • Added interior decorator tool for houses, hairstyle deeds
  • Tents can be demolished and converted back to deeds by chopping the tent chest with an axe
  • Dictionary files can now be reloaded with a new command ('reloaddictionaries)
  • Fixes for Line-of-Sight code to address issues with LoS checks between different floors of buildings, through terrain, etc
  • Improvements to skill training from NPCs (now triggerword based)
  • Improvements to interactions with banker NPCs (now triggerword based)
  • Fully functional Runebook script has now been integrated into UOX3
  • Several human NPCs added to DFNs, npclists and spawners for more variety in the type of NPCs that spawn in towns when using something like the community-based spawn files
  • Fixes for feature negotiation system to ensure the options work as intended, and to avoid players being disconnected without delay before assistant tool had a chance to respond to negotiation request
  • Items are now layered in containers by the order in which they are added, with latest added items shown on top of older items
  • Support added for responding to server polls from UO shard portals
  • Custom tag support added for multis, which can be set with in-game commands or via DFNs
  • Support added for New Character Animation packet, for improved character animations in client v7.0.x and beyond
  • Better client compatibility with both regular UO client and open-source clients
  • Improvements to teleport.scp, both with regards to content and organization; entries no longer required to be sorted in file!
  • All known issues with in-game bulletin boards resolved, and players can now view, post and reply to messages properly. Bulletin board maintenance has been re-enabled to clear out deleted player messages and/or NPC escort quest entries.
  • Quick-access to any object property using 'get [propertyName] command
  • Playable chess and checkers-boards (with enforced rules and turn-handling!)
  • Numerous fixes to healthbar updates and character flagging
  • Improved object tooltip support, with UOX3 responding to new client requests for object information, support for custom object tooltips via JS, and more
  • Exposed additional Region/Townregion properties to JS
  • Exposed account system and account properties to JS engine, allowing server admins to view and/or modify account properties of players from in-game
  • Improved accounts system to support time-limited or permanent account bans
  • Improved handling of NPC AIs in combat; NPCs will now look for new targets nearby if they are unable to reach their current target
  • Support for "sub-regions" that can be used to override which music is playing in a given area (useful for locations like taverns)
  • Pets will now teleport along with the player when moongates, recall spells, object-based or hard-defined teleporters are used.

Grab your copy of UOX3 0.99.5 for your preferred platform - Windows, Linux or macOS - while it's still hot!

(Check News Archive for older news)
-

Shards

Want to see your UOX3 shard listed on this page? Share your shard with us in Discord, or in the Community Forums!

UOX3 Shards

UOX3 Test-shard

Banner for UOX3 Test Shard

Public test shard for UOX3, running on the latest publicly available source from GitHub.

Host: 51.81.186.68
Port: 2593
Discord | Shard Status

Distant Land

Distant Land is a Shard best on Pub 15 ruleset, no custom items or anything custom will be added. this will be purely pub 15 shard.

Host: 216.117.173.13
Port: 2593

-

About UOX3 - Frequently Asked Questions

What is UOX3?

UOX3 stands for Ultima Offline eXperiment 3, and can basically be described as an Ultima Online server-emulator.

It allows anyone and everyone to run their own private Ultima Online shard (either offline or online) which they may then connect to using either the official UO Client or a custom one.

UOX3 Logo
What is the purpose of UOX3?

One of UOX3's goals is to emulate the functionality of official Ultima Online servers and allow anyone to run a UO server of their own.

At the same time, we aim to enable shard creators to tweak all aspects of their shard, and to create new functionality altogether - whether through UOX3's scripting engine or through UOX3's open-source code.

Why should I choose UOX3 over [insert other emulator]?

Each UO server emulator have their own pros and cons; some are easier to setup out of the box, some are better at emulating current day UO, some are better at giving shard admins the tools to create their own unique shards. Some of UOX3's strengths:

  • Quick to get up and running with only a few easy to follow steps - see the UOX3 Quick Start Guide
  • High-quality documentation that improves with every update
  • Open Source (C/C++)
  • 64-bit cross-platform support across Windows, Linux and macOS
  • Easy-to-learn JavaScript-based Scripting Engine
  • DFN Files - easily editable textfiles that act as blueprints for items, NPCs, regions, skills and more
  • Dynamic reloading of scripts and DFNs at any time in seconds for faster iteration
  • Custom object tags that can persist across server restarts
  • UO client support from 4.x to the latest 7.0.x series
  • Custom language dictionary system that supports English, Czech, French, German, Italian, Polish, Portuguese and Spanish
  • Extensive Log System - UOX3 comes with an extensive log system that tracks server errors, warnings, network packets sent and received for each client, commands used, spells cast, combat events, player speech and more.

For a more complete feature list that includes customization options and gameplay features, check out the Feature Highlights in the UOX3 Docs.

How much does UOX3 cost?

Nothing! UOX3 is free to download and/or modify, and anyone who wants to can run their own UOX3 shard.

Some shards accept donations to help keep the lights on and server costs under control, but there's always a risk that the involvement of real-world money might bring very real lawyers into play, and what the individual shard owner does after downloading UOX3 is not under our control.

Is UOX3 Open-Source?

Yes. UOX3 is Open-Source. Anyone can download, modify & re-distribute it at will, as long as they follow the terms of the GNU General Public License AND the specific addition for UOX3 saying:

"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."

What? I have to share my shard?

Technically, yes. According to the UOX3-specific portion of the GPL license we use, if you're operating a UOX3 shard on a public system, you are obligated to make the source (and scripts required to run your version of it) available for the public to download. If you run a private shard that is not available to the public, this does not apply.

The reason for UOX3's amendment to GPL license is to encourage shard owners to share their specific enhancements, fixes and innovations with the wider UOX3 community, so we can all grow together. Of course, this being an open-source project ran by volunteers, we cannot force anyone to abide by the license. In the end, it comes down to each shard owner's own morals and ethics.

Where's UOX and UOX2?

UOX was the first ever UO server emulator, and was created by Jaegermeister (Denny Zuko). However, it was short-lived, and Cironian aka Marcus Rating rewrote it from scratch and released it as UOX2.

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

Where can I get help with UOX3?

If you need any help with UOX3, you have several options:

  • You can peruse the UOX3 Documentation and help files (also available in your local UOX3/docs folder).
  • You can post your problem on the UOX3 forums, or look up the solutions to similar problems experienced by other users.
  • You can come visit us in our Discord server and talk with users and developers of UOX3 directly.
  • You can check out Xuri's UOX3 Guide, which contains information on how to use many of the features available in UOX3.
-

UOX3 History and News Archive

UOX3 History 101

The UOX3 Story

The original background story for the UOX3 project - tells the story about why you wake up in a new world with a clean slate when installing and/or playing on an UOX3 shard for the first time! A MUST read :)

History of UOX3

The History of UOX3 section of the UOX3 documentation contains a breakdown of virtually all UOX3 versions that have been released since the first public release of UOX3.

The UOX3 Hall of Fame

An unofficial list of people who have contributed to UOX3 codewise over the years. If you have done any coding for UOX3 that has ever been in the "official" UOX3 releases and your name is not on this list, let me know!

General UO Emulator Timeline

A general timeline of all known (to me) UO Emulators/Servers, including who started each one, and when. (Text-only version here)

UOX3 Changelogs (Oldest first)

Updates from 0.37 to 0.70.02

Contains all source-changes made from version 0.37 to 0.70.02

Updates from 0.70.03 to 0.70.03.24b

Contains all source-changes made from v0.70.03 to v0.70.03.24b, which was the last released version of UOX3 before the JavaScript-Engine was implemented.

Updates from 0.95.00 to 0.97.00

Contains all source-changes made from v0.95.00 to v0.97.00

Updates from Feb 2003 until present day

Contains all source-changes made from February 2003 to present day. UOX3 version number uncertain, but estimated version at start of this file is around 0.97.06.1j.

UOX3.org News Archives

July '05 -> May '06

Archived news from July 2005 to May 2006

Feb -> July '05

Archived news from February 2005 to July 2005

Sept '03 -> Jan '05

Archived news from September 2003 to January 2005

May -> Aug '03

Archived news from May to August 2003

Jan -> April '03

Archived news from January to April 2003

Sept -> Dec '02

Archived news from September to December 2002

-

UOX3 Quick Start Guide

Step 1 - Download the UO Client

First, download and install the UO client, as well as either ClassicUO (open source client) or Razor (assistant tool with encryption removal), or both if you want to use them together (setup instructions here).

Note: While ClassicUO is available for Linux and macOS platforms, the UO client's data files are still needed. Try installing UO using Wine, or bring over the files from an existing install on Windows.

Step 2 - Download UOX3

Next, if you haven't already done so, go ahead and download UOX3:

Step 3 - Configure UOX3

Adjust UOX.INI Settings

Extract the downloaded UOX3 package, then open UOX.INI and modify the following settings:

  • SERVERNAME - Name of your shard
  • EXTERNALIP - Your shard's Internet IP (if any)
  • CLIENTSUPPORT# - Client ranges allowed on your shard. Keep as specific as possible.
  • DATADIRECTORY - Path to UO Client folder, or UO data files

Setup Admin Account

Next, open UOX3/accounts/accounts.adm and change the default NAME (username) and PASS (password) of account 0 to something other than admin/admin, and save the file.

Example of account setup
Step 4 - Starting up UOX3

Start your shard by double-clicking UOX3.exe (Windows) or running terminal command ./uox3 (Linux/macOS).

Step 5 - Start UO Client and Login

UO + ClassicUO

Start ClassicUO, add a new profile with your shard's IP, path to UO client, etc. Save and hit "BACK", then select newly added profile and start UO!

Guide to ClassicUO profile setup

UO + Razor

Right-click on Razor.exe, choose Properties > Compatibility tab > Run this program in compatibility mode for Windows XP (Service Pack 3). Apply and close file properties, then start Razor.exe. Load the default profile, then enter your shard's details (name, IP, port), the path to your UO folder. Hit "Launch UO" to start UO!

Guide to Razor profile setup

Logging in to your shard

Finally, with the client open, enter the username and password you set in accounts.adm, login and create your first character!

What's Next?

Additional resources to look at to get you going with your shard administration:

  • First Five Minutes - Short guided tour of UOX3 found in the UOX3 Documentation (Recommended)
  • UOX3 Command List - List of commands usable by Admins/GMs
  • Feature Documentation - Section of UOX3 Docs that provide details about the various features supported by UOX3
  • Community Forums - Browse thousands of posts by other users for inspiration, extensions and support
  • Discord - Connect with other UOX3 users (and devs) in the UOX3 Discord server
-
[an error occurred while processing this directive]

UOX3 Downloads

UOX3 - Latest Stable Release
UOX3 v0.99.5 (08/11/2021)

(Changelog for this version)

Clone UOX3's GitHub repository to get the source, or download it from this mirror in zipped form.

NB! Remember to check out the UOX3 Docs, which can be found online or locally in your UOX3's docs folder!

UOX3 Extensions/Addons
The JScript Vault

The The JScript Vault is a section of the UOX3 Community Forums dedicated to sharing JS scripts with other UOX3 users. Here you can find many interesting and useful scripts, any of which you can download and use for your own UOX3 shard.

The DFN Vault

The The DFN Vault is a section of the UOX3 Community Forums dedicated to sharing DFN files (blueprints/templates for items/NPCs/other content) with other UOX3 users. Here you can find many interesting and useful DFN files, any of which you can download and use for your own UOX3 shard.

UOX3 Related Utilities
Xuri's WorldBuilder

Xuri's WorldBuilder
v0.23 - July 20th, 2008

Xuri's WorldBuilder is a combined GM-Tool and worldbuilding utility for both UOX3 and UOXClassic, with limited functionality for Lonewolf.

SectionSyntaxChecker

SectionSyntaxChecker
Created by Charles Kerr on 7/6/21

A command line tool that can scan section-based files such as DFN and INI files in UOX3, and check for syntax errors such as misplaced/missing brackets and braces. Check included readme.txt for details on available command line parameters and examples.

Freeze

Freeze
Created by Charles Kerr on 9/22/20

A command line tool that can freeze items (and multis) with TYPE=255 from UOX3's 0.99.x .wsc worldfiles into staidx#/statics#.mul files based on the worldnumber of the items in question. At the same time, it will remove affected items from the wsc files. Updated files are saved with .frozen file extension, and original files are not modified.

-

Other Downloads

Other Downloads
Mapsize

Mapsize
Created by Charles Kerr on 9/20/20

A command line tool that can adjust the size of any map#.mul and staidx#.mul files to a user-specified new size - smaller or larger. Resized files are saved with .resized file extension, and original files are not modified.

WorldForge (RadStart Edition)

RadMap WorldForge (Mirror)
(RadStar Edition of WorldForge)

RadStar's Edition of WF builds on the below versions and includes support for maps 0 through 5, an UNDO function(!), new fast-move overview map, 64-bit support, performance improvements and many other quality of life changes.

WorldForge (grimson Edition)

dl-iconWorldForge
(v6.4r4 - Aeon Edition/grimson Edition)

Same as above, except grimson has added support for map-sizes of 7168x4096, and has also included some small fixes to the overview map.

WorldForge (POL Build)

dl-iconWorldForge
(v6.4r4 - Aeon Edition/Pol Build)

WorldForge is a tool originally written by Ridcully(Jan Luëbbe), and it's main purpose is to help you edit the three UO Client files MAP0.MUL, STATICS0.MUL and STAIDX0.MUL. Through a map-editor and some other useful tools you can change every aspect of how the UO client's mapfiles appear ingame.

After Ridcully put the WF source on the shelf, he open-sourced it resulting in a number of improvements through additional releases from various people (6.0 Xuri/Kasreyn, 6.1-6.2 Infymus, 6.3-6.4 Welf, 6.4r4 Shinigami/Birdy), and even some other custom versions. The mapeditor now features extras like... zooming, different "brush"-sizes (+ ability to set up your own brushes; there are for instance some helpful brushes for cave entrances!), tons of random draw modes(+ ability to set up own random draw modes), can use ALL texture ids(including swamps!) copy parts of one map-file from/to locations within the same map-file or to a different map-file, overview-map for speedily moving about, selecting texture id from map by right-clicking, random-altitude option, altitude-color-map, generate OSI-Diff-files, and more! (View update-log)

UOX3 Worldfiles / Spawns
Default UOX3 Worldfiles (OUTDATED)
(Replaced by in-game world template system and default world templates that ship with UOX3!)

dl-iconDefault UOX3 Worldfiles v0.16 (11/03/2012)

Currently contains basic decorations, doors and signs for all mainland Britannia towns, plus Nujel'm, Moonglow, Serpents Hold, Magincia, Ocllo, Jhelom, Papua, Delucia and Buccaneers Den. To use, download and unzip to the UOX3/SHARED/ folder, overwriting any existing files there.

Note that this will also overwrite any existing worldfiles you may have, including characters and any items placed in your world either manually or by a spawner.

Linux/MacOS users: When downloading this zip file, be sure to run the files within the zip through a quick "dos2unix *" to convert line breaks in the files to the proper format for your platform, or UOX3 might not be able to load the worldfiles properly on startup. This only applies when downloading the zip file, if you got these through cloning the UOX3 repo on GitHub this should be handled automatically.

Note that you can also find this in the UOX3 Resources GitHub repository!

Community-made Spawn.dfn (OUTDATED)
(Now bundled with UOX3, but disabled by default, with ini settings controlling whether to spawn objects from spawn regions or nott!)

dl-iconCommunity-made Spawn.dfn v2.0 (10/07/2005)

This community-made spawn.dfn file was originally created by Grimson, and was then based on Ripper's World for Lonewolf. Since then it has received several updates from both Grimson and other people, and now offers a world filled with all kinds of NPCs (monsters, animals, shopkeepers, townfolk) as well as reagent spawns.

Linux/MacOS users: When downloading this zip file, be sure to run the files within the zip through a quick "dos2unix *" to convert line breaks in the files to the proper format for your platform, or UOX3 might not be able to load the spawn-files properly on startup. This only applies when downloading the zip file, if you got these through cloning the UOX3 repo on GitHub this should be handled automatically.

Note that you can also find this in the UOX3 Resources GitHub repository!

Archived/Old Downloads
PkgInstaller (OUTDATED)

(Works with UOX3 0.99.x, but might be unstable - use at own risk!)

PkgInstaller
v0.02 - March 12th, 2006

PkgInstaller is a utility created to make it easier to share and/or install custom script packages (JS, DFN or both).

  • Takes a zip file and installs the JS/DFN details appropriately
  • Will display a readme.txt if it is included in the JS file
  • Ability to peruse the contents of the package before installing it

NOTE: PkgInstaller requires .NET Framework 2.0 to work.

UOX3 Account Manager (OUTDATED)

(Works with UOX3 0.99.x, but might be unstable - use at own risk!)

UOX3 Account Manager
v0.4 - May 6th, 2007

Account Manager is a utility built specifically for UOX3 to help shard admins easily add, remove, and manipulate Accounts entries from Accounts.adm.

NOTE: UOX3 Account Manager requires .NET Framework 2.0 to work.

UOX3 Character Viewer (OUTDATED)

(Works with UOX3 0.99.x, but might be unstable - use at own risk!)

UOX3 Character Viewer
v0.7 - Aug 1st, 2006

UOX3 Character Viewer is a .NET utility that lets you load UOX3 worldfiles, view all Characters in those worldfiles, and then export said characters (and their belongings) to an external file, which can later be imported back into a different set of worldfiles (for instance). Features include:

  • Load UOX3 Worldfiles, Displaying any Characters (and the items they contain).
  • Save UOX3 worldfiles as a single file, which UOX3 will load.
  • Export Selected character, with optional items, to an export file.
  • Import character files checking for valid Serial numbers to a loaded worldfile.

NOTE: UOX3 Character Viewer requires .NET Framework 2.0 to work.

UOX3 INI Editor (OUTDATED)

(Not compatible with UOX3 0.99 and above)

UOX3 INI Editor
v0.3 - May 4th, 2007

INI Editor is a utility built specifically for UOX3 to help shard admins do the following:

  • Load UOX3-generated UOX.ini files
  • Easily modify all the various ini file settings
  • Save modified ini files in a format readable by UOX3

NOTE: UOX3 INI Editor requires .NET Framework 2.0 to work.

cluox 1.4 (OUTDATED)

(Not compatible with UOX3 0.99.3 and above)

dl-iconcluox 1.4

dl-iconcluox 1.4 Sourcecode

This is a Windows-GUI Wrapper for UOX3 originally created by knoxos. It lets you minimize UOX3 to the sys-tray, and gives Win9x users a scrollbar in the console (Win2k/XP has this by default). It also contains a "watchdog"-feature, which can check at specified intervals to see if the UOX3 server is still running properly, and will automatically restart the UOX3 server if not. By default it looks for "uox3.exe", so if you're using UOX-Classic or a version with a different filename, either rename the EXE-file or change the default filename in the cluox-sourcecode yourself.

Updates in versions 1.3 & 1.4 were done by ShadowBranch.

UOX3 GumpStudio Plugin (OUTDATED)

dl-iconUOX3 GumpStudio plugin

This is a (probably outdated) plugin (.dll) for GumpStudio which enables the exporting of gumps from this tool to UOX3's JavaScript format. It's not included in the default download of GumpStudio.

UO3D Map-Viewer/Editor v6.0

dl-iconUO3D MVE 6.0

dl-iconSourcecode

A mapeditor in full 3D! View and edit your landscapes (and to a limited extent, your statics) from a 3D perspective! Though it can be slightly buggy if you're unlucky - it's a damn impressive program nevertheless. The sourcecode is fully available, and it's in C++ - so there's no reason why someone couldn't pick it up & continue the work of the original author... A good mapeditor that has a lot of potential if someone dedicate themselves to improving it...

-
-==============================-
-= 08/11/2020 - UOX3 0.99.4  =-
-==============================-
Contributors: Xuri, punt, dragon slayer

Source Changes/Fixes:
	Updated warning messages printed in UOX3 when attempting to inherit an invalid/non-existent item or character script entry using the GET tag, to also include the name of the script entry being inherited
	Added new tag for ore types in skills.dfn that determines default chance of finding a particular ore (can be overridden via OREPREFS tag in regions.dfn):
		ORECHANCE - takes a value from 0 to 1000, where 1000 equals 100.0%
	OREPREFS tag in regions.dfn now uses [sectionName] of ore type from skills.dfn instead of actual name of the ore
	OREPREFS tag in regions.dfn now uses comma as separator instead of space. New syntax: OREPREFS=[oreType,oreChance]
	Added chance of getting different ore sizes when mining
	Added functionality to combine and transform larger ores into smaller ores by double-clicking some ore and targeting other ore instead of a forge
	Added functionality to return different amount of ingots when smelting ore, based on the size of ore being melted
	Fixed a bug introduced in 0.99.3 that would set invalid values for certain properties on newly created items and NPCs if the tag for that property in the DFNs accepted random values, but only supplied one value. Example: Amount=1, vs Amount=10 20. As part of the fix for this, added sanity checking for all item and character DFN tags that accept two values.
	Fixed weapon damage not appearing in status gump
	Fixed a spidermonkey compilation issue with xcode 12.0.1/Apple clang v 12.0.0 (clang-1200.0.32.2) (punt)
	Updated JS item properties MORE, MOREX, MOREY, MOREZ and SERIAL, and character property SERIAL, to pass values to JS scripts using JS_NewNumberValue() instead of INT_TO_JSVAL if the property value cannot fit inside JSVAL (checked with INT_FITS_IN_JSVAL)
	Added support in CResponse.cpp for client trigger word for securing containers in houses - TW_HOUSESECURE
	Updated CMulHandler::CheckStaticFlag() to match with statics that cover/extend across the specified Z coordinate, not just ones that have the same base Z level
	Updated CMulHandler::DoesMapBlock() to not deem map tiles as blocking if they are more than 16 Z (height of a character) higher than the specified Z coordinate to check
	Exposed method for finding corners of a multi to JS engine:
		.GetMultiCorner( cornerID ) - Gets coordinates for specified corner of multi (0 = NW, 1 = NE, 2 = SW, 3 = SE)
	Exposed various functions related to map, statics and multis to JS engine:
		CalcMultiFromSer( serial ) - Find a multi from a provided serial
		GetMapElevation( x, y, z, world) - Returns the map elevation at specified coordinates
		IsInBuilding( x, y, z, world, instance, checkHeight ) - Returns true if the specified location is inside a static building (underneath static items), or if player is inside a multi. If the checkHeight argument is true, player is only deemed inside a multi if there are multi-items above the player's head. If player is in a courtyard/on a rooftop, they will be deemed to be NOT in the building. checkHeight is not used for the static part of the function.
		CheckStaticFlag( x, y, z, world, tileFlagID ) - Checks to see if any statics at given coordinates has specified tile flag
		DoesStaticBlock( x, y, z, world, checkWater ) - Checks if statics at/above given location blocks characters
		DoesDynamicBlock( x, y, z, world, instance, checkWater, waterWalk ) - Checks if dynamics at/above given location blocks characters
		DoesMapBlock( x, y, z, world, checkWater, waterWalk ) - Checks if map tile at/above given location blocks characters
	Fixed an issue with validation of DFN tags for items and NPCs being loaded from scripts
	Fixed UOX3 not writing out names of item/NPC DFN sections with invalid data in tags
	Fixed an issue where non-GM characters could not open their own backpacks or take items from other containers or corpses due to some flawed comparisons of worldnumber/instanceID between character and items
	Updated JS SysMessage function to accept up to 10 extra, optional arguments, which can be used with dictionary messages that require additional parameters like %s or %i
	Added new type of house privilege in cMultiObj.cpp to keep track of friends of the multi - HOUSEPRIV_FRIEND - which is stored during worldsaves as one or more Friend= tags in house.wsc
	Added new type of house privilege in cMultiObj.cpp to keep track of guests of the multi - HOUSEPRIV_GUEST - which is stored during worldsaves as one or more Guest= tags in house.wsc
	When items are created for houses upon house placement, a reference to the multi's serial is now stored in the house sign's MORE property to allow easier tracking of which house a particular sign belongs to
	Added tracking of new, persistent properties for houses via cMultiObj.cpp/h:
		lockdowns, secure containers, vendors, guests, friends, owners, ban location, public status, number of visits, timestamps
	Added a multitude of  new methods in cMultiObj.cpp/h to assist in improving the functionality of houses
	Added new tags for houses in house.dfn (default values applied if tag not specified):
		MAXSECURECONTAINERS=4 - Max amount of secure containers allowed in a multi
		MAXLOCKDOWNS=256 - Max amount of lockdowns allowed in a multi
		MAXVENDORS=10 - Max amount of vendors allowed in a multi
		MAXBANS=50 - Max amount of bans in a multi's ban list
		MAXFRIENDS=50 - Max amount of friends in a multi's friend list
		MAXGUESTS=50 - Max amount of guests in a multi's guest list
		MAXOWNERS=8 - Max amount of owners and co-owners in a multi's owner list
		MAXTRASHCONTAINERS=1 - Max amount of trash containers allowed in multi
		SCRIPT=[scriptID] - Assign a JS script-ID directly to a multi
		FRONTDOOR - indicates that a door is the front door of a house. Cannot be locked in public houses!
		INTERIORDOOR - indicates that a door is an interior door of a house. Can be locked in public houses.
		BANX - Location X offset for multi's ban location, if not used, will try to use SE corner of multi instead
		BANY - Location Y offset for multi's ban location, if not used, will try to use SE corner of multi instead
GitHub Mark IconGitHub Logo Discord Logo and Wordmark Trello Logo and Wordmark

Copyright © 2003 - 2022, Geir Ove Alnes