Changelog for next UOX3 version (post v0.99.4)

Where we archive the version changelog threads
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Changelog for next UOX3 version (post v0.99.4)

Post by Xuri »

Latest stable UOX3 release version: UOX3 v0.99.4 (Changelog)

This thread is for changelog updates for the next UOX3 version, the source for which is always available on GitHub.

Experimental build
If experimental all-in-one builds are available, they will be listed here:
v0.99.4c Experimental All-In-One (Win x64)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

13/11/2020 - Xuri
	Fixed an edge case with 'time command that would not display time correctly (UOX3/js/commands/time.js)
	Updated UseDoor() JS function - now called UseItem() instead, and now supports both socket and character as first argument, to allow NPC use.
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

14/11/2020 - Xuri (0.99.4a)
	Improved JS NPC methods WalkTo()/RunTo() so path is recalculated when blocked by other characters after original calculation took place. Only applies while advanced pathfinding is enabled in uox.ini.
	Added new JS event that triggers when pathfinding comes to an end after using WalkTo/RunTo JS methods:
		onPathfindEnd( mNPC, pathfindResult ) // pathfindResult returns result of pathfinding (-1 = failure, 0 = partial success, 1 = success)
	Disallowed invulnerable players/admins from attacking other characters, with a complimentary system message explaining why they can't attack
	Fixed a bug where NPC's original npvWander mode could get overwritten if multiple pathfinding actions overlapped
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

15/11/2020 - Xuri (0.99.4b)
	Fixed an issue with NPC trainers where they would list incorrectly the available skills players could train
	Fixed an issue where house key could not be used to open locked doors if key was not contained in root of player's backpack (UOX3/js/item/doors.js)
	When NPCs in wanderTypes WT_BOX, WT_CIRCLE or WT_FREE are blocked too many times from moving by other characters, they will now pause for 60 seconds before attempting to move again
	Exposed .oldWanderType NPC property to JS engine, and updated 'set command to also update this property when manually changing NPC wanderType
	Reduced max attempts at calculating path for NPCs in wanderTypes WT_BOX, WT_CIRCLE or WT_FREE to 25 steps, unless they are evading and attempting to move back into their original wander box/circle
	NPCs who enter "evasion" state because they are unable to find a valid path to an attacker will now have their health reset to maximum, to prevent an exploit to take down any NPCs without risk of taking any damage in return
	JS Methods WalkTo() and RunTo() now actually make use of the provided maxSteps parameter when advanced pathfinding is enabled; previously it would default to 500 steps.
	Added new JS event that triggers when an NPC enters evasion state in combat due to being unable to reach their target
		onEnterEvadeState( mNPC, enemyChar ) // enemyChar would be the character they are unable to reach
	Added a new command - 'cure - that can cure a targeted character of any poisons (UOX3/js/commands/targeting/stats.js)
	NPCs of same race will no longer attack one another if hit by each other's AoE spells
	Fixed an issue with NPC pathfinding in combat that prevented ranged NPCs from closing in on their targets when losing LoS
	Spellcasting NPCs that cannot pathfind all the way to their target in combat will now attempt to pathfind to an area near the target instead
	Fixed an issue that prevented tiller-men from being correctly associated with their boats after a server restart
	Fixed an issue with combat where ranged characters could shoot bows further than the allowed max range for archery specified in uox.ini
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

15/11/2020 - Xuri
	Fixed a compiler issue with GCC versions below 9.x in various Linux distros, by including iomanip library in UOPInterface.cpp and adding -lstdc++fs to the Makefile
(Updated)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

16/11/2020 - Xuri
	Fixed an issue with the 'tweak command that would set an item's movable property instead of type if used on non-spawnerobjects
	Fixed an issue with the 'tweak command that would trigger the wrong gump dialog when attempting to set an item's name, name2 and creator properties
	Fixed an issue with the 'tweak command where clicking ok in gump dialog with no value entered would reset chosen property to default value
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

19/11/2020 - Xuri (0.99.4c)
	Exposed Item properties to JS Engine:
		.dexterity // dexterity required to equip item
		.intelligence // intelligence required to equip item
	Fixed issue where changing worldnumber of an item via tweak command would not remove the item from sight of nearby players in the original location
	Fixed issue where characters teleporting to a new world would sometimes not be removed from sight of nearby players in the original location
	Fixed issue where being released from jail cells to a location in a different world would not send map change packet
	Fixed issue where changing worldnumber of a player character via tweak command would not send map change packet
	Fixed issue where teleporting GM/Counselor to a player's location when responding to a help request would not send map change packet
	Fixed issue where recalling off a recall rune in a different world would not send map change packet
	Fixed issue where using travel menu or 'go place # command would not send map change packet when going to a location in a different world
	When marking recall runes, they will now get a hue reflecting the facet they were marked in (UOX3/js/commands/targeting/magic.js)
	Tooltips for recall runes will now show the name of the facet they were marked in, with facet names being pulled from entries 1975 to 1980 in the dictionary files
OP updated with new experimental build for Windows.
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

22/03/2021 - Xuri (0.99.4d)
	Added new option in UOX.INI under [settings] section:
		MAPDIFFSENABLED=0/1 // If enabled, server will attempt to load diff files, and send "Enable Map-diff files" packet to client to also load these. Disabled by default.
	Server no longer loads map/statics diff files by default, nor does it send packet to client to request loading these files, as only client versions below 7.0.8.2 will actively load these files. Can be re-enabled with new UOX.INI setting mentioned above!
	Fixed incorrect ID for gargish dagger in CHandleCombat::getWeaponType()
	Added missing weapon entries in CHandleCombat::getWeaponType(): bladed whip, barbed whip, spiked whip, gargish talwar
	Fixed an issue that would show the end part of some tiledata names as garbled text instead of cutting off the text(!) at 20 characters
	Fixed an issue with advanced character creation template when using ClassicUO client, which sends a profession value of 255 instead of 0 when no profession template has been selected.
	Fixed an issue where clones of NPCs that can split in combat didn't get the NPC flag correctly set
	Guild titles are now removed for players who leave their guilds
	Enabled closing some hard-coded gump menus using right-click (howto, guild, towns, wholist, addmenu, craftmenu, info)
	Fixed an issue where adding base items using 'add [itemID] would sometimes get false positive hits from harditems.dfn, depending on the length of the itemID
	Fixed an issue where items added using 'add [itemID] would not get names applied properly from harditems.dfn
	Item/NPC DFN tag GET can now inherit a random parent by adding additional values separated by spaces. Syntax:
		GET=parent1 parent2 parent3 (etc)
	Fixed an issue where NPC backpacks would not have the max item capacity set properly
	Added new properties for CItem objects (also exposed as JS Item Properties):
		maxRange // max distance a ranged weapon can fire at (replaces ARCHERRANGE ini setting)
		baseRange // base distance throwing weapons (when implemented) can be used at
	Added support for new Item DFN tag that replaces global UOX.INI setting ARCHERRANGE:
		MAXRANGE=# 				// Specifies max range of ranged weapon
	Added support for new Item/NPC DFN tags to support randomizing elemental resistances:
		RESISTFIRE=#/# #		// Set NPC's poison resistance; fixed or random value
		RESISTCOLD=#/# #		// Set NPC's poison resistance; fixed or random value
		RESISTLIGHTNING=#/# # 	// Set NPC's poison resistance; fixed or random value
		RESISTPOISON=#/# #		// Set NPC's poison resistance; fixed or random value
	Added support for two new DFN tags in dfndata/race/races.dfn that can be used to allow/ban lists of equipment for specific races
		ALLOWEQUIPLIST=#
		BANEQUIPLIST=#
	Added support for new section in dfndata/race/races.dfn - [EQUIPLIST #], which can be used to define lists of equipment that is whitelisted or banned for specific races.
	Fixed a bug that would report incorrect weight in tooltips for Item/NPC spawner objects
	ScriptSections are now reapplied for items bought by players from NPC vendors
	Fixed an issue where players could drop an item on the ground and other players would still see the item after it was picked up, because of a failed distance check vs old location coordinates (in pack) instead of vs current location on ground
	Fixed a bug with players being able to use last-target macro to target objects picked up and held by other players on their cursor
	Updated all references to "devinelock" to be "divinelock" instead - this includes the name of the JS Item property
	Fixed house commands triggering (useless) targeting cursors for players onboard boats
	Changed default statcap in UOX.INI from 325 to 225
	Fixed a out-of-range error for players attempting to combine ore inside their own backpack
	Fixed various issues with distance checks and container checks when using/target objects
	Added optional 4th "hue" parameter to AddGump JS method
	Added JS Function to get total amount of accounts on server - GetAccountCount()
	Added JS Function to get total amount of players online - GetPlayerCount()
	onSwing JS Event can now trigger in scripts attached to items, not just items attached to characters
	Added some JS Functions to expose some hard-coded constants to JS scripts:
		BASEITEMSERIAL() // Base item serial
		INVALIDSERIAL() // Invalid serial
		INVALIDID() // Invalid ID
		INVALIDCOLOUR() // Invalid colour
	Fixed an issue where JS character property .colour would modify origSkin property instead of colour
	Fixed an issue where JS character property .guildTitle returned the name of the character instead of the guild title
	Character JS property .poison can now also be used to set a character's poisoned level, not just read it
	Exposed Item property to JS engine:
		.ac // armour class for item (0-128). Primarily used for setting race-restrictions for equippable items, i.e. race X cannot equip items of armour class Y.
		.def // defensive value of item (Physical resistance post-AoS, AR in older UO)
		// NOTE: The following properties don't actually do anything yet, but can still be used in custom JS scripts if desired
		.resistCold // Cold resistance of item 0-1000, where 1000 equals 100.0%
		.resistHeat // Heat/Fire resistance of item 0-1000, where 1000 equals 100.0%
		.resistLight // Light resistance of item 0-1000, where 1000 equals 100.0%
		.resistLightning // Energy/Lightning resistance of item 0-1000, where 1000 equals 100.0%
		.resistPoison // Poison resistance of item 0-1000, where 1000 equals 100.0%
		.resistRain // Rain resistance of item 0-1000, where 1000 equals 100.0%
		.resistSnow // Snow resistance of item 0-1000, where 1000 equals 100.0%
		.damageHeat // Weapon deals Heat/Fire elemental damage (true/false)
		.damageCold // Weapon deals Cold elemental damage (true/false)
		.damageLight // Weapon deals Light elemental damage (true/false)
		.damageLightning // Weapon deals Lightning elemental damage (true/false)
		.damagePoison // Weapon deals Poison elemental damage (true/false)
		.damageRain // Weapon deals Rain/Water elemental damage (true/false)
		.damageSnow // Weapon deals Snow/Ice elemental damage (true/false)
	Added new UOX.INI setting under [server] to enable/disable shard response to ConnectUO server polling (disabled by default)
	Sub-commands are no longer included when registering packets to be overloaded via RegisterPacket function, as that part was never fully implemented. Packet-hook scripts can be setup for specific packet IDs, but any sub-command checking will need to be done in the script itself
	JS Packet Method GetDWord() now uses JS_NewNumberValue instead of INT_TO_JSVAL to read from the socket buffer, to better handle large numbers, which could previously be returned with wrong values.
	JS Function CalcItemFromSer() now uses a JS_GetStringBytes() and str_value() combo instead of JSVAL_TO_INT() to read the data provided in the function argument. This allows JS scripts to provide item serials to the function directly without needing to split it into four parts first (though that still works)
	Fixed issue where JS properties for multis didn't always return correct values
	The 'set command can now be used to set the armour class of items ('set ac #)
	Reimplemented 'tweak command in JS engine (js/commands/targeting/tweak.js) - can be used to view and modify properties of characters, character skills, items, multis and regions (target ground)
	Added placeholder packet-hook script (js/server/network/0xf1_connectUoServerPoll.js) to handle responses to ConnectUO server polling. By default this script does nothing, but serves as a placeholder for drop-in replacement scripts generated specifically for each shard by the ConnectUO service.
	Updated some commands to support an alternate STATIC keyword (can also be ommitted) to add base items:
		'add static itemID
		'tile static itemID
	Updated some commands with support for randomization. Provided itemID will be randomized based on provided rndValue:
		/js/commands/targeting/add.js:
			'add itemID rndValue
		cmdtable.cpp and targeting.cpp:
			'tile itemID rndValue
			'tile itemID x1 x2 y1 y2 z rndValue
	Updated js/commands/custom/repeatingcmds.js to support 'm delete as an alias for 'rremove
	Added 'props as an alias for the 'tweak command
	Added 'teleport as an alias for the 'tele command (js/commands/targeting/tele.js)
	Added 'shavehair and 'shavebeard as aliases for 'kill hair and 'kill beard (js/commands/targeting/kill.js)
	Added 'noinvul and 'mortal aliases for the 'invul false command (js/commands/custom/misc-cmds.js)
	Added 'immortal and 'invul (without parameter) as aliases for the 'invul true command
	Added 'bringtopack as an alias of 'movetobag command (js/commands/targeting/movetobag.js)
	Updated check for cancelling of target cursor in various JS scripts
	Minor updates to various JS scripts
	Fixed issue where some item definitions in dfndata/harditems/harditems.dfn and dfndata/items/building/lighting.dfn used comma instead of space as delimiter for the VALUE tag, which thus never got applied
	Updated all NPC definitions to let NPCs spawn facing in random directions
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

24/03/2021 - Xuri
	Custom tags can now be set for multis in dfndata/house/house.dfn via the DFN tags CUSTOMSTRINGTAG and CUSTOMINTTAG, which can be read later for a placed multi via JS Item method GetTag( tagName ). Syntax is identical to custom tags in Item/NPC definitions:
		CUSTOMSTRINGTAG=tagName stringValue
		CUSTOMINTTAG=tagName intValue
	Definitions for multis in dfndata/house/house.dfn now support the COLOUR and COLOURLIST tags, which will (if present) be applied to new multis that are added in-game. Colour for existing multis can be modified via the 'tweak command.
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

26/03/2021 - Xuri
	Re-implemented DoStaticEffect() as a stand-alone JS function that takes a location as a target instead of an object
	Fixed an issue with potions where entire stacks of potions would get consumed instead of just one potion
	Added missing entries for normal and greater explosion potions to dfndata/items/magic/potions.dfn, and added them to the item menu
	Potions are now marked as stackable in dfndata/items/magic/potions.dfn
	Moved countdown and explosion handling of explosion potions from code to JS (js/item/potion.js)
	Added LoS and Z distance checking for explosion potions
	Added optional randomization of countdown timer for explosion potions. Can be enabled via a boolean at the top of the potions script
	Damage of explosion potions is now defined via DAMAGE/LODAMAGE/HIDAMAGE tags in Item DFNs, and the time before exploding is defined via the SPEED tag
	Added optional Alchemy skill bonus damage modifier for explosion potions, defaults to 1 additional damage per 5 skillpoints
	Added new UOX.INI settings under [combat] to control the bonus damage modifier in explosion potions:
		ALCHEMYBONUSENABLED=0/1	// enable/disable bonus damage, defaults to disabled
		ALCHEMYBONUSMODIFIER=5 	// bonusDamage = alchemySkill / alchemyBonusModifier
	Exposed speechType as an additional 7th optional parameter for the JS TextMessage function, and the other optional parameters (speechTarget, speechTargetSerial, speechFontType) can now be supplied as -1 if one just want to use the default values. Supported speechTypes:
		TALK			= 0,	// normal system message
	    PROMPT			= 1,	// Display as system prompt
	    EMOTE			= 2,	// : text
	    SAY				= 3,	// character speaking
	    OBJ				= 4,	// at object
	    NOTHING			= 5,	// does not display
	    SYSTEM			= 6,	// text labelling an item
	    NOSCROLL		= 7,	// status msg, does not scroll
	    WHISPER			= 8,	// only those close can here
	    YELL			= 9,	// can be heard 2 screens away
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

08/04/2021 - Xuri (0.99.4e)
	Added support for packet 0xE2 (New Character Animation, used to play animations in client v7.0.0.0+) via cEffects::PlayNewCharacterAnimation( CChar *mChar, UI16 actionID, UI16 subActionID, UI08 subSubActionID )
	Added support for new animation packet in JS Character method DoAction() using a second parameter that specifies animation variation, which if present forces server to send new animation packet instead of old. This means the 'action/npcaction commands can now be used to play animations on gargoyles/humans in client v7.0.0.0+ using the following syntax: 'action [action subAction]
	Created new enums for character actions and sub-actions, and updated code to refer to these instead of using "magic" numbers
	Added new options in UOX.INI under [settings] section:
		FORCENEWANIMATIONPACKET=0/1 // If enabled (default), forces the use of the new animation packet for playing various character animations for both NPCs in general and for player characters connected with client v7.0.0.0+
	Updated various actions performed by players and NPCs to use new animation packet (combat, spellcasting, mining) if connected with client v7.0.0.0+ and ini setting to force new animation packet is enabled
	Added basic support for gargoyle flying ability. Can now use flying ability itself to enter/exit flying state, and the state change will also get sent to nearby players. Flying players are treated the same way as mounted players; polymorph spells will auto-dismounts mounted/flying player, same rules for stealth applies to flying as riding, etc.
	Exposed Character property to JS engine:
		.isFlying // returns true if character is flying
	Moved Orc and Ratman races from RACE 1 and 2 to RACE 22 and 23 in dfndata/race/races.dfn to make room for two new player races, that are applied to new player characters during character creation:
		[RACE 1] - Elf
		[RACE 2] - Gargoyle
	Updated orcs and ratmen in dfndata/npc/humanoids.dfn with race IDs 22 and 23 respectively
	Added items in dfndata/items/skills/tools/cooking.dfn to item menu under Skills > Tools > Cooking
	Fixed an issue where moving items around within a container at max item capacity was not allowed
	The GM command 'set can now modify a character's current mana using 'set mana #
	Added JS command to get specific object property values (using same property names as 'set command):
		'get [objectProperty]
	Exposed Item/Character properties to JS:
		.oldX // Previous X coordinate for object
		.oldY // Previous Y coordinate for object
		.oldZ // Previous Z coordinate for object
	Exposed Character properties to JS:
		.mana // Character's current amount of mana
	Updated version of Winsock requested by UOX3 from 2.0 to 2.2
	Exposed timer for updating NPC flags to [timers] section of UOX.INI:
		NPCFLAGUPDATETIMER=5 // Interval in seconds between each time NPC flags are updated. Default adjusted down from 30 to 5 seconds
	Fixed an issue where UOX3 was trying to output some debug/warning messages to console using the wrong console method
	Made some small tweaks to NPC pathfinding to make NPCs more likely to pick a new target location when their old one is blocked
	Added HP DFN tag to guard NPCs to prevent them from spawning with half health
	Removed -lstdc++fs from Makefile and replaced with special instructions for users of gcc below v9.x
	Fixed a buffer overrun issue with tiledata item names
	Eliminated a bunch of compilation warnings in VS2017
	Updated JS Method CreateDFNItem to allow creating items without referencing a socket/character. Syntax:
		var myItem = CreateDFNItem( null, null, itemSectionID, amount, "ITEM", false, worldNumber, instanceID );
	Added functional chessboard that operates on standard chess rules. Pieces cannot be removed from the board, snap to the chessboard grid when dropped, are subject to movement restrictions per chesspiece, will capture opponent pieces if landing on their square. Board can be reset by dragging king-piece off to the side of the board (js/item/gameboards.js and js/item/chesspiece.js)
	Added functional checkerboard, with pieces that cannot be removed, can only move in diagonals, can jump across opponent pieces to capture them. Board can be reset by ??? (js/item/gameboards.js and js/item/checkerpiece.js)
	Using the 'go command without any additional parameters will now open the GM travel menu (js/commands/go.js)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

13/04/2021 - Xuri (0.99.4f)
	Option to define how much memory JS engine should be allowed to allocate before last-ditch GC kicks in has been moved from engine.dat to a new UOX.INI setting under [server]. Note that too low values can lead to server instability, especially if doing a lot of JS engine reloads, so default value has been increased from 16 to 256 MB per JS Runtime:
		JSENGINESIZE=256 // gcMaxBytes limit in MB per JS Runtime. Must be between 16 and 4095
	Reduced stackchunksize value provided for JS_NewContext from 0x500000 to the recommended default of 8192
	Updated how players are paid for completing NPC escort quests; instead of hard-coded random amount between 0-600 gold, the reward is now based partly on the NPC escort's fame, and partly on the amount of gold the NPC is carrying. The formula for quest rewards thus look like this: rewardAmount = (( totalFame / 100 ) * 50 ) + ( totalGold * 0.25 )
	Fixed healthbars of nearby characters not showing correctly for players who have just logged in. Cause seems to have been UOX3 reading more bytes from network buffer than required when (not) handling packets 0xB5 and 0xFB. Added basic handling of these packets to avoid that problem.
	Fixed an issue where UOX3 would send full status updates (packet 0x11) for each character on the screen, rather than just sending the minimum required for each character. Client doesn't need to know the weight of an NPC, or how much gold an opponent player is carrying!
	Fixed an issue with tooltips for characters and/or items not always appearing, caused by UOX3 not responding correctly to certain tooltip requests (packet 0xD6)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

16/04/2021 - Xuri
	Fixed long-standing issue with UOX3 console not resetting terminal properly after shutdown on Linux, after updating cConsole.cpp/h to conform to standard unix terminal commands/settings for certain features (punt)
	Fixed an issue that could cause a crash on Windows when attempting to broadcast system messages from the UOX3 console (punt)
	Fixed an issue that prevented text input in UOX3 console for system broadcasts from being displayed on Linux and MacOS (punt)
	Added support for new JS Object - IUE_ACCOUNT - which can be accessed via character property .account. The following account properties have been exposed to the JS engine:
		.id 				// Account ID (Read-Only)
		.username 			// Account Username (Read-Only)
		.flags 				// Flags set on account (Read-Only)
		.comment 			// Comment/contact info
		.character1 		// Character in account slot 1 (Read-Only)
		.character2 		// Character in account slot 2 (Read-Only)
		.character3 		// Character in account slot 3 (Read-Only)
		.character4 		// Character in account slot 4 (Read-Only)
		.character5 		// Character in account slot 5 (Read-Only)
		.character6 		// Character in account slot 6 (Read-Only)
		.character7 		// Character in account slot 7 (Read-Only)
		.currentChar 		// Currently logged in character (if any) (Read-Only)
		.lastIP 			// Last IP used to connect to account (Read-Only)
		// Flag shortcuts
		.isBanned 			// Is account banned?
		.isSuspended 		// Is account suspended?
		.isPublic			// Is comment/contact info to be considered public info?
		.isOnline			// Is account online?
		.isSlot1Blocked 	// Is character slot 1 blocked?
		.isSlot2Blocked 	// Is character slot 2 blocked?
		.isSlot3Blocked 	// Is character slot 3 blocked?
		.isSlot4Blocked 	// Is character slot 4 blocked?
		.isSlot5Blocked 	// Is character slot 5 blocked?
		.isSlot6Blocked 	// Is character slot 6 blocked?
		.isSlot7Blocked 	// Is character slot 7 blocked?
		.unused9 			// Unused flag
		.unused10 			// Unused flag
		.isSeer 			// Is account marked as Seer account?
		.isCounselor 		// Is account marked as Counselor account?
		.isGM 				// Is account marked as GM account?
	Fixed 'addaccount command - can now once again be used to add a new user account to the server from in-game. See accounts.adm for info on available flags. Syntax:
		'addaccount [username] [password] [(optional)flags]
	Updated 'get command to allow retrieving certain account properties for targeted player characters:
		username, flags, comment, character1, character2, character3, character4, character5, character6, character7, lastIP, isBanned, isSuspended, isPublic, isOnline, isSlot1Blocked, isSlot2Blocked, isSlot3Blocked, isSlot4Blocked, isSlot5Blocked, isSlot6Blocked, isSlot7Blocked, unused9, unused10, isSeer, isCounselor and isGM
	Updated 'set command to allow setting certain account properties for targeted player characters:
		comment, password, isBanned, isSuspended, isPublic, isOnline, isSlot1Blocked, isSlot2Blocked, isSlot3Blocked, isSlot4Blocked, isSlot5Blocked, isSlot6Blocked, isSlot7Blocked, unused9, unused10, isSeer, isCounselor, isGM
	Updated 'tweak command to allow viewing and modifying of certain account properties for targeted player characters
		Note that any changes to account properties will not go into effect until a worldsave or manual save of accounts via console has taken place.
	Updated AI for AI_HEALER_G and AI_HEALER_E to check for multi-ownership and line of sight before resurrecting dead players
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

17/04/2021 - Xuri
	Added new helper function to get amount of minutes that have passed since midnight 01/01/1970 UTC - GetMinutesSinceEpoch()
	Converted wTimeBan property of CAccountBlock from UI16 to UI32
	Added check during login for timeban account property. If a timeban is in place, player will be unable to login until after the ban is over.
	Added JS property for Account JS Object:
		.timeban 			// Time in minutes that user is banned
	Updated .get command to allow retrieving timeban value from account of player characters
	Updated .set command to allow setting timeban value on account of player characters. If set to higher than 0, player will also be marked as banned, and disconnected
	Added two new commands in js/commands/targeting/disconnect.js:
		'ban [durationInMinutes]	// Ban targeted player for specified duration in minutes, or for a default 24 hours if no duration is specified
		'unban 						// Unban targeted player
	Updated 'tweak command (js/commands/targeting/tweak.js) to support viewing and modifying .timeban account property
	Updated dictionary files with additional messages used in relation to banning/unbanning players
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

19/04/2021 - Xuri (0.99.4g)
	Completed implementation of onDecay JS event, which was not actually hooked up to anything! Can now be used to interrupt decay for items. Returning false will prevent code from deleting the decaying item, while returning true will continue running the decay code as normal.
	Fixed an issue with .brkPeaceChance JS Character property, which erroneously called on the GetBrkPeaceChanceGain()/SetBrkPeaceChanceGain() functions instead of GetBrkPeaceChance()/SetBrkPeaceChance()
	Fixed issue with loading of UOP map files that was introduced in a previous commit while attempting to get rid of some warnings when compiling UOX3 on Windows!
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

23/04/2021 - Xuri (0.99.4h)
	Exposed a (read-only) JS property for characters to fetch their hunger rate. Uses race's hunger rate if defined, otherwise uses HUNGERRATE form uox.ini:
		.hungerRate 		// Seconds between becoming hungrier
	Updated 'get command to allow retrieving a character's hungerRate property
	Added some details to console during UOX3 startup about which IPs and Ports UOX3 is listening to
	Added new JS event that triggers when a player clicks on the Quest button in the paperdoll. Triggers from character script if present, or global script if not:
		onQuestGump( pUser )
	Added new JS event that triggers when player toggles a special move from a combat book. See packet 0xBF, subCmd 0x19 in packet guides for details on the special moves, whose IDs range from 0x00 to 0x1D:
		onSpecialMove( pUser, abilityID )
	Fixed invalid ID for items [0x0174] and [0x0175] in dfndata/items/building/walls/stone_walls.dfn
	Updated FileSize() function in regions.cpp to fetch file size using std::filesystem::file_size() instead of creating an input stream, opening a file and then trying to seek the last position in the file
	Added findNearbyObjects() function to findfuncs.cpp, to find all objects (characters and items) of CBaseObject class near a specified location
	Improved performance when initializing multis on startup; now checks for items near multis, instead of checking for multis near every single item!
	Improved performance when loading items and characters from worldfiles during startup; around 33% faster for release builds, around ~50% faster when running in debug mode through visual studio (punt)
	Updated createSection() in ssection.cpp to use std::string and StringUtility functions instead of UString, and added some error handling (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

23/04/2021 - Xuri (0.99.4i)
	Fixed an error in tweak command (js/commands/targeting/tweak.js) when attempting to use it on characters with no backpacks
	Updated a bunch of casts to use UOX3-specific typedefs for consistency
	Startup performance is now faster by an additional 70% over the previous commit, primarily due to modernization of HandleLine() functions in cBaseobject.cpp, cChar.cpp, cItem.cpp and cMultiObj.cpp (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

24/04/2021 - Xuri
	More UString instances replaced by std::string and associates (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

25/04/2021 - Xuri
	Additional work done to modernize string handling in gumps.cpp, commands.cpp, cmdtable.cpp, commands.h, CJSMapping.cpp, scriptc.cpp and scriptc.h (punt)
-= Ho Eyo He Hum =-
User avatar
Xuri
Site Admin
Posts: 3704
Joined: Mon Jun 02, 2003 9:11 am
Location: Norway
Has thanked: 48 times
Been thanked: 8 times
Contact:

Post by Xuri »

Code: Select all

26/04/2021 - Xuri
	Fixed an issue where 'get command attempts to retrieve incorrect property when isonline parameter is provided
	Fixed an issue where 'set weightmax # would fail because script used an incorrect property name
	Fixed an issue with check for allowed/banned equipment for races; if a list of allowed equipment existed, it would never check the banned list
	Additional string handling modernization in cHTMLSystem.cpp, cRaces.cpp, gumps.cpp, townregion.cpp and uox3.cpp (punt)
-= Ho Eyo He Hum =-
Locked