Page 1 of 2
Changelog for next version (post 0.99.5a)
Posted: Sat Jan 15, 2022 4:35 am
by Xuri
Latest stable UOX3 release version:
UOX3 v0.99.5a (
Changelog)
This thread is for changelog updates for the next UOX3 version, the source for which is always available on
GitHub.
Experimental builds
Windows x64 - 0.99.5b-7 (26/08/2022)
Linux x64 - 0.99.5b-7 (26/08/2022)
For Mac users, please follow build instructions on GitHub and checkout the develop branch.
Re: Changelog for next version (post 0.99.5a)
Posted: Sun Jan 30, 2022 2:34 pm
by Xuri
Code: Select all
30/01/2022 - Dragon Slayer, Xuri
Added speech scripts for Wisps, Orcs, Lizardmen and Ratmen (Dragon Slayer)
Merged monster speech scripts into one common script (Xuri)
Extended monster speech script to allow monsters to respond to specific keywords (Xuri)
Extended monster speech script to allow monster speech to trigger from them being damaged, dying or performing a killing blow (Xuri)
Adjusted monster speech script's sentence building to allow wisps to have more than one-letter words, and also include word-enders such as exclamation marks, full stops, question marks (Xuri)
Added monster speech script (ID 3001) to all orc, lizardmen, ratmen and wisps in DFNs (Xuri)
Implemented Taste ID skill in JS (Dragon Slayer)
Extended Taste ID skill to provide some extra messages for potion-testing (Xuri)
Fixes for Animal Lore skill, with updates to dictionaries (Xuri)
Re: Changelog for next version (post 0.99.5a)
Posted: Sun Feb 13, 2022 3:50 pm
by Xuri
Code: Select all
13/02/2022 - Xuri (0.99.5b)
Fixed an issue where karma titles would inadvertently have the space behind the title trimmed before being displayed in paperdoll, resulting in erroneous display of title + name there
Fixed an issue with a cooking script (js/skill/cooking/cooking.js) where sweet dough would not get consumed properly on cooking (Dragon Slayer)
Updated C++ function calcRegionFromXY to work with CBaseObject instead of CChar, so it also works for Items
Items now have current town region stored as an object property during runtime. This is calculated on load, when container property is updated, and when an item is picked up or dropped. The region is also accessible via the (read-only) JS Item property .region
Added new JS Event to allow capturing button presses from the old-school gump displayed by client via packet 0x76, which was originally used by the old-school crafting menus in T2A. The requirement for this to work is that the gump in question must have a gumpID between 0x4000 and 0xffff (which can be set when manually creating a packet with this ID via JS), and the Event itself must be in the global script:
onScrollingGumpPress( pSock, gumpID, buttonID )
Added new JS Event to allow better control over which names UOX3 sends to the client for characters:
onNameRequest( myObj, requestedBy ) // return custom string, or return empty string/nothing/true/false to use default name
Updated JS Events to also work for Items (previously only worked for Characters)
onLightChange( myObj, lightLevel )
onTempChange( myObj, temp )
onWeatherChange( myObj, weatherType )
Adjusted default temperature for town regions with no weather systems defined from 0 to 20 degrees Celsius
Updated some JS scripts (fishing.js, baking.js and cooking.js) to make use of GetTempTag/SetTempTag rather than GetTag/SetTag
Added cancel-checks to targeting functions in command script for add-commands (js/commands/targeting/add.js)
Updated get command script (js/commands/targeting/get.js) to allow retrieving region ID and name using 'get region
Updated misc command script (js/commands/custom/misc-cmd.js) to add 'gettemptag and 'settemptag commands, used to retrieve/set temporary custom tags from/on objects
Fixed a bug where Spirit Speak skill would be checked for race languages even if the race had LANGUAGEMIN defined as 0 (or not defined at all)
Fixed an issue where players using regular UO client would get stuck in a black void after teleporting between worlds, by adding an additional character refresh after the teleport
Fixed an issue where crafting tools for Blacksmithing and Carpentry would attempt to fetch the value of an incorrectly named INI setting to handle durability loss for the tools
Added new setting under [settings] section of UOX.INI to control whether it should be possible to craft weapons from coloured ingots or not:
CRAFTCOLOUREDWEAPONS=0/1 // If enabled(1), players can craft coloured weapons. Defaults to disabled(0)
Fixed an issue where the correct ingots were not consumed when attempting to craft items using colored ingots
Fixed a rogue debug message leftover in the scissor script
Experimental build available here:
https://www.uox3.org/files/uox3all-in-o ... 5b_x64.zip
Re: Changelog for next version (post 0.99.5a)
Posted: Fri Feb 25, 2022 1:32 pm
by Xuri
Code: Select all
25/02/2022 - Xuri (0.99.5b-1)
Fixed an issue with monster speech script that prevented orcs, lizardmen, ratmen and wisps from taking damage in combat
Fixed an issue where the body ID for Shadow Lords (0x2c0) was missing the 0x prefix in its Creature DFN entry, causing UOX3 to overwrite the data (primarily sounds) for the Ettin (0x2) entry
Fixed an issue where the [longpants] definition (dfndata/items/gear/clothes/clothes.dfn) did use the get= tag correctly (Dragon Slayer)
Fixed an issue with the 'addpack command where it would try to add a pack/items to user of command instead of targeted character
Extended the .PlaceInPack() Item JS Method to support an optional boolean argument. If true, UOX3 will attempt to automatically stack the item in question with similar items in the item's current container. New syntax:
.PlaceInPack( autoStackFlag ) // autoStackFlag can be true/false
Reduced the default maxSteps properties of advanced NPC pathfinding to improve server performance. As a result, pathfinding calculations for NPCs that are out of combat will now take ~90% less time than before, though this still takes more time than is ideal. For NPCs in combat, the improvements are not as dramatic.
Re: Changelog for next version (post 0.99.5a)
Posted: Sat Feb 26, 2022 9:16 am
by Xuri
25/02/2022 - punt
- Timing instrumentation added to allow obtaining information to aid in analyzing performance issues
26/02/2022 - punt
- Added some error checking for sockets
26/02/2022 - Dragon Slayer
- Added JS-based help menu accessible via character paperdoll, with modernized style and UI, ability for players to change their password
Minor cleanup and addition of a few extra features to help menu, like a safe teleport option for players who are potentially stuck, updated server info details and integration with UOX3's existing GM paging system as support options (Xuri)
Added new JS functions to retrieve server data used for server stats in help menu:
- GetItemCount() // Gets number of items on server
GetMultiCount() // Gets number of multis on server
GetCharacterCount() // Gets number of characters on server
GetServerVersionString() // Gets server version as a string
Added new UOX.INI settings to control safe teleport for stuck players via the Help menu in Paperdoll:
- MAXSAFETELEPORTSPERDAY=1 // Max teleports per day, defaults to 1
TELEPORTNEARESTSAFELOC=1 // Teleport player to nearest safe location (1) or random safe location (0)
Re: Changelog for next version (post 0.99.5a)
Posted: Sat Feb 26, 2022 10:37 am
by Xuri
26/02/2022 - Xuri
- Fixed a server crash caused by a couple of items in "stone walls 4" section of add-menu that were missing their ID in ItemMenu.bulk.dfn (thanks, Humility)
- Fixed an issue where items added to house (multi) definition would not be attached to the house if their coordinates were not within the boundaries of the house. This prevented the usage of house foundation multis with custom stairs, for instance.
Re: Changelog for next version (post 0.99.5a)
Posted: Sun Feb 27, 2022 12:14 pm
by Xuri
27/02/2022 - Xuri
- Fixed a server crash related to attempting to play music for non-existent sockets
Re: Changelog for next version (post 0.99.5a)
Posted: Mon Feb 28, 2022 5:20 pm
by Xuri
28/02/2022 - Xuri
- Updated UOX.INI setting NETWORKLOG to actually control logging of network traffic for all connected clients, without needing each socket to have logging enabled via the manual console command 'Z'. This console command can still be used, however, to override a disabled INI setting and enable network traffic logging for connected clients.
- Updated 'get and 'set commands to support getting/setting a range of socket properties for a targeted (online) player:
- tempInt // int (temporary value)
tempInt2 // int (temporary value)
xText // string (temporary string)
clickX // int (x coordinate of where player clicked with targeting cursor)
clickY // int (y coordinate of where player clicked with targeting cursor)
clickZ // int (z coordinate of where player clicked with targeting cursor)
walkSequence // int (movement sequence number, between 0 and 255)
currentSpellType // int (current spell being cast by a player)
logging // bool (enable to override disabled NETWORKLOG setting)
pickupX // int (x coordinate of where player picked up an item from)
pickupY // int (y coordinate of where player picked up an item from)
pickupZ // int (z coordinate of where player picked up an item from)
pickupSpot // int (0 = nowhere, 1 = ground, 2 = ownpack, 3 = otherpack, 4 = paperdoll, 5 = bank)
language // string (language code)
- Fixed an issue where CUSTOMINTTAG in NPC DFNs would not get read properly, but would instead print an (incorrect) warning about how the tag was formatted
Re: Changelog for next version (post 0.99.5a)
Posted: Wed Mar 02, 2022 1:08 pm
by Xuri
02/03/2022 - Xuri (0.99.5b-2)
- Added a new feature that allows shard admins/scripters to mark specific NPCs as "permanently awake", in order to keep UOX3 running scripts, timers and updates for these NPCs even if they are in regions that are "asleep" because of no nearby online players.
- A new UOX.INI setting has been added which can turn this feature on/off:
- ALLOWAWAKENPCS=0/1 // If disabled, NPCs marked as awake are treated as regular NPCs
New NPC DFN tag added to mark an NPC as awake or not:
- AWAKE=0/1 // 0 = disabled (default), 1 = enabled
New Character JS Property added to toggle an NPC's awake state via JS:
- .isAwake // 0 = disabled (default), 1 = enabled
'get and 'set commands updated with the new awake property:
- 'get awake
'set awake 0/1
- IP of shard in shard list is now sent to client in little endian instead of big endian, which should correct the ping displayed in shard list, which previously showed a timeout (punt)
Re: Changelog for next version (post 0.99.5a)
Posted: Tue Mar 22, 2022 4:43 am
by Xuri
07/03/2022 - punt
- Added all-in-one solution and project files for VS2022 that compiles both UOX3, Spidermonkey and zlib at the same time
- Updated cmake project to compile static version of Spidermonkey library
- Various source changes made to address warnings
- Updated project files and filters to be more consistent between VS2017 and VS2022 solutions (Xuri)
22/03/2022 - Xuri
- Reverted from using strncpy_s to strncpy due to some unforeseen side effects that could cause script errors and crashes. Additional work might be required in order to safely convert to strncpy_s
- Updated 'radd command to provide better feedback when using incorrect syntax. Also added redirects to 'radditem and 'raddnpc commands when "item" or "npc" is detected as a parameter of this command
Re: Changelog for next version (post 0.99.5a)
Posted: Sun Apr 03, 2022 6:45 am
by Xuri
03/04/2022 - Xuri
- Fixed a bug with skill check code that resulted in much lower than expected success rate at using skills (non-crafting ones in particular)
- Updated code for how the minimum 50% success-rate is calculated for crafters who meet all minimum skill requirements for crafting an item, which previously incorrectly gave crafters a much higher chance of success!
- Tweaked how rank is calculated for crafted items to modify the final rank based on base chance of success at crafting item. This brings the chance of crafting exceptional (10/10 rank) items more in line with how difficult this was in LBR era on official shards
- Adjusted how estimated chance for crafting exceptional items is calculated in crafting script (js/skill/craft/itemdetailgump.js) to be more in line with what actually takes place in code
Re: Changelog for next version (post 0.99.5a)
Posted: Wed May 11, 2022 5:37 pm
by Xuri
08/05/2022 - Xuri
- Fixed an issue where non-mounted NPCs didn't get proper default values set for mounted walking, running and fleeing speeds
12/05/2022 - Xuri
- Fixed an issue where slips counted while using the Healing skill (js/skill/healing_slip.js) would never be reset (thanks Hughesbuddy!)
- Adjusted fishing script (js/skill/fishing.js) to reduce the chance of fishing up sea serpents on failure in shallow and deep waters, and also added a chance for players to fish up deep sea serpents while in deep waters
- Adjusted scissors script (js/skill/tailoring/scissors.js) to stop preventing use of scissors while the system thinks the player is running, but just show the associated message without any other impact
Re: Changelog for next version (post 0.99.5a)
Posted: Sat May 21, 2022 12:46 pm
by Xuri
21/05/2022 - Xuri
- The TOOLUSELIMIT and TOOLUSEBREAK ini settings now also properly affect mining tools when enabled
Re: Changelog for next version (post 0.99.5a)
Posted: Sat May 21, 2022 8:12 pm
by Xuri
22/05/2022 - Xuri
- Exposed the NPC wander properties FX1, FY1, FX2, FY2 and FZ to the JS engine, and updated get, set and tweak JS commands to handle these
- Updated dictionary files with tweak-menu specific messages for NPC wander properties
- Fixed an issue with weight calculation when picking up partial piles of items - now uses weight of the specific amount of items picked up on cursor, and not the weight of the full pile
- Fixed an issue with weight calculation of bank box contents, which didn't take into account the amount of items in item piles
Re: Changelog for next version (post 0.99.5a)
Posted: Sun May 22, 2022 8:06 pm
by Xuri
23/05/2022 - Xuri
- Fix for logic error that prevented stamina loss when shoving past other characters
Re: Changelog for next version (post 0.99.5a)
Posted: Sat May 28, 2022 7:05 am
by Xuri
28/05/2022 - Xuri
- Fixed issue in js/server/house/houseCommands.js that caused any attempts to create secure containers in houses to fail (thanks Hughesbuddy!)
Re: Changelog for next version (post 0.99.5a)
Posted: Tue May 31, 2022 6:34 am
by Xuri
31/05/2022 - Xuri
- Fixed an issue with the provocation skill (skill/js/provocation.js) that prevented successfully provoked creatures from attacking one another
Re: Changelog for next version (post 0.99.5a)
Posted: Fri Jul 15, 2022 12:36 pm
by Xuri
03/06/2022 - punt
- Modernized ObjectFactory and replaced external hash with use of unordered_map
12/06/2022 (on or about) - punt
- Modernized and replaced all mul handling
- Changed dynamic allocation of basic classes to static
- Perhaps speed improvement
04/07/2022 - Xuri
- Fixed an issue with mining that allowed mining on non-valid static tiles
- Fixed an issue that prevented boats from moving
- Fixed an issue that prevented boats from being blocked by blocking tiles
- Fixed an issue where salute and bow emotes got reversed
05/07/2022 - Xuri
- Wrapped some debug messages related to sockets in debug defines
- Adjusted fix for mining to be more flexible with name of tiles
- Fixed an issue that caused double saves on shutdown, with second shutdown wiping out some objects because they'd already been unloaded from system after first save
05/07/2022 - punt
- Fix for invalid uo directory causing crash
- Address an error in the using the error prone generic list (push/pop). Had an additional push, without a corresponding pop
05/07/2022 - Xuri (0.99.5b-3)
- Fixed an issue where multis could vanish because multi data was not always correctly saved out to house.wsc; now multi data is saved to the same wsc files as other items instead. UOX3 still reads house.wsc content on world load, but will delete the file on the first world save, as it's no longer needed.
11/07/2022 - Xuri (0.99.5b-4)
- Fixed an issue with incorrect sized Stat Window Info packet (0x11) being sent for clients when only T2A client/server features are enabled, which could cause client to freeze on login
15/07/2022 - Xuri
- Added new JS Methods for Characters and Items, for getting/setting expiry time for a specific timer belonging to a specific script attached to an object, or to kill said timer completely:
- .GetJSTimer( timerID, scriptID )
- .SetJSTimer( timerID, timeInMilliseconds, scriptID )
- .KillJSTimer( timerID, scriptID )
Added new JS commands:
- 'getjstimer timerID,scriptID // Spits out remaining time before timer expires
- 'setjstimer timerID,timeInMilliseconds,scriptID // Updates expiry time for specified timer
- 'killjstimer timerID,scriptID // Kills specific timer completely
- Updated JS Docs with info on the new JS timer-related methods
- Updated dictionaries with new lines used by new JS timer-related commands
Re: Changelog for next version (post 0.99.5a)
Posted: Wed Aug 10, 2022 3:48 am
by Xuri
10/08/2022 - Xuri (0.99.5b-5)
- Fixed an issue involving player deaths and moving items from backpacks to corpses
- Fixed NPC Carpenters not selling carpentry tools
- Fixed an issue with trashbarrel script (js/server/house/trashbarrel.js) that prevented it from working on stand-alone containers not in a house
- Fixed a logic issue that resulted in some crafted items not having full item details show up in tooltips
- Fixed an issue where reloading ini file would keep loading in the same starting locations over and over without ever clearing the list, making it grow in size with every reload
Re: Changelog for next version (post 0.99.5a)
Posted: Wed Aug 24, 2022 7:21 pm
by Xuri
25/08/2022 - Xuri (0.99.5b-6)
- Increased world load speed by almost 20% by reducing how often loading progress is written to the console
- Increased world save speed by almost 50% through the use of binary mode and buffer tweaks for ofstream combined with a cached newline char and std::to_string instead of static_cast
- Fixed a server crash involving killing NPCs of a specific spawn region using the 'spawnkill # command
- Fixed a server crash involving moving items from decaying corpses to the ground
- Fixed a server crash involving carving up human corpses
- Fixed a server crash related to AreaCharacterFunction JS function, which could trigger for any script that potentially kills any NPC this function iterates over (like explosion potions)
- Fixed a server crash related to GMs attempting to add items from add-menu while having no backpack
- Fixed a client crash issue caused by attempting to sell house deeds back to architect NPCs
- Fixed an issue where players would get incorrect amounts of gold for selling house deeds back to architect NPCs
- Fixed an issue with characters dying onboard boats which prevented players from packing up the boats later
- Added new item property in code (via bools bitset) that can be used to enable/disable maker's mark on crafted items. This property can be set to true for items crafted at exceptional quality by GM craftsmen
- Exposed the new item property to JS engine:
- .isMarkedByMaker // If true, maker's mark will be displayed
- Updated default item tooltip to display " of exceptional quality" for items crafted with exceptional quality
- Updated default item tooltip to display "[Crafted] by [Crafter's Name]" for exceptional quality items crafted by GM craftsmen. The [Crafted] text comes from the MADEWORD defined in dfndata/skills/skills.dfn for the primary skill used to craft the item
- Updated old-school single-click names for items (when AoS bit is disabled in client/server features) to display exceptional status and/or maker's mark for appropriate items
- Fixed an issue with the display of titles for NPCs that used dictionary lookups for their title
- Added new UOX.INI settings under the [settings] section:
- DISPLAYMAKERSMARK=1/0 // Controls if maker's marks on crafted items are shown on a global level
- SHOWNPCTITLESOVERHEAD=1/0 // Controls whether NPC titles are shown over their heads
- SHOWINVULNERABLETAGOVERHEAD=0/1 // Controls whether invulnerable tags are shown overhead
- GLOBALRESTOCKMULTIPLIER=1.0 // Global multiplier applied to RESTOCK property of items when loaded from DFNs
- Added new UOX.INI settings under the [combat] section:
- 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=0/1 // Controls whether NPCs in general can gain skills/stats from combat
- Fixed an issue where a player meeting the exact minimum requirements for crafting an item would always fail
- Fixed a bug with teleporting off boats to valid nearby locations when double-clicking boat planks while standing on it
- Updated behaviour of planks on boats:
- Boat key can unlock plank, but won't automatically open it
- Boat key used on an open, unlocked plank will lock and automatically close the plank
- Boat key used on an open, locked plank will unlock the plank and leave it open
- Player using an unlocked plank now opens it
- Player using an open plank will disembark (if onboard) or embark (if not) the boat
- Player can always open a locked plank if they're on the boat, even with no key, to allow disembarking the boat.
- Planks that are open, but locked cannot be accessed from outside the boat, and will close automatically after five of seconds
- Updated behaviour of Magic Lock/Unlock spells:
- Magic Lock cannot be used on objects inside a multi
- Magic Lock applies difficulty to lock based on caster's Magery skill
- Magic Lock effect will last between 7 to 50 seconds (depending on caster's Magery skill)
- Any object that can be locked via Magic Lock spell can also be unlocked via Magic Unlock spell, if caster has high enough Magery skill
- Fixed a bug where certain JS Functions, Methods and Properties would occasionally pass incorrect values to scripts that called upon them. Scripts that rely on the GetCurrentClock() Function, the .GetTimer() Method, .decayTime, .logTime, .oreTime and .fishTime Properties might need to be updated to account for the fix, which causes larger values to be passed in than before.
- Fixed a bug related to GetCurrentClock() that caused decay and respawning of dungeon chests from working properly
- Fixed a bug related to GetCurrentClock() and .logTime/.fishTime that prevented consumption and regeneration of log/fish resources from working properly
- Added a new JS Function:
- GetStartTime() // Returns a timestamp for when server started up
- Fixed a bug related to GetCurrentClock() where server uptime stats in help menu was showing up incorrectly
- Fixed a bug related to GetCurrentClock() and purging of registrations of visitors in public houses so their visits can be counted again later
- Fixed a bug related to GetCurrentClock() that caused monster speech to not work properly
- Fixed a Z-related issue that sometimes prevented players from fishing when standing on the shoreline next to the sea
- Fixed an issue with Animal Lore skill that would always return a pet's loyalty level as "Wild"
- Increased max range pets can be from their owner in order to still be included in moongate/teleporter travel from 12 to 24 tiles
- Fixed an issue where the alchemy bonus damage for explosion potions was off by an order of magnitude
- Fixed an issue where food IDs from foodlists referenced by other foodlists was not detected as valid food for tamed pets or NPCs
- Fixed an issue where Alchemy crafting skill did not properly check for the existence of the crafting tool before proceeding with the crafting process
- Fixed an issue that prevented the Teleport spell from working as intended
- Fixed an issue where players would still get 1 gold even if STARTGOLD in uox.ini was set to 0
- Fixed an issue with mount restrictions script that prevented players from mounting Unicorns, Ki-rins and Cu Sidhes
- Fixed an issue where aggressive creatures wouldn't stop attacking player after being tamed (js/skill/taming.js)
- Added a system message to inform the player when they've dropped out of stealth due to taking too many steps
- Fixed an issue where hunger level of NPCs instantly dropped upon spawning because hunger timer was not active yet
- Fixed a bug where character corpses would appear with a [unidentified] tag attached
- Fixed an issue where the [unidentified] tag did not show up for unidentified magic items
- Added ANIMAL tag to a small bunch of creature definitions (dfndata/creatures/creatures.dfn)
- Fixed an issue with Bowcraft skill where player could not gain enough skill from crafting bows to reach min requirement for crossbows, and similiarly could not reach min requirement for heavy crossbows from crossbows
- Updated default value of MURDERDECAYTIMER INI setting from 60 seconds to 28800 seconds (8 hours), to match the amount of time it would take for one (short term) murder count to decay on LBR-era OSI shards.