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:

Post by Xuri »

Code: Select all

01/08/2021 - Dragon Slayer
	Added AOS Bone cutting to create bones
	Added AOS toggle switch for the bone cutting.
	Fixed So cutting clothing up will give back cloth and not bandages.
	Fixed so the material will keeps its color when cut up.
	Added Scissor sound to cutting up the material.
	Made 5 new functions for ids so it can easily be expanded on to without having to edit any of the main function.
	Added a Newbie Check so you can not cut up your starting items.
	Added new Character JS property to detect if a character is running, which also accounts for sprinting while mounted, or fast flying for characters who can fly (Xuri):
		.isRunning 		// Returns true if character is running, false if they're walking
	Updated scissors script to verify that scissors still exist and are within range upon targeting an object, and a check to ensure characters cannot use scissors while running (Xuri)
	Updated scissors script to base the amount of returned cloth/leather from cut up clothes/leather armor on the amount of resources used to craft the items, as well as on the player's Tailoring skill. The higher the player's skill, the more resources returned, capped at half the amount of resources used to craft the item. If the item was not crafted by a player, it returns 1 resource only. (Xuri)
	Updated Tailoring script (js/skills/tailoring.js) to accept cut leather as a valid tailoring resource
-= 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

01/08/2021 - Xuri
	Added Fish as another resource type (in addition to logs and ore) for UOX3 to keep track of and respawn based on resource areas
	Added new UOX.INI settings to control the availability of and respawn times for fish:
		FISHPERAREA=10 			// Maximum number of fish in a given resource area
		FISHRESPAWNTIMER=600 	// Amount of time it takes for 1 single fish to respawn in a resource area
		FISHRESPAWNAREA=10 		// Number of fish-areas to split the world into
	Exposed the fish resource type to Resource JS functions, which now take "FISH" as an additional resource type on top of "LOGS" and "ORE:
		ResourceTime( resourceType ) 		// Return respawn timer for specified resource type
		ResourceTime( resourceType, int ) 	// Set respawn timer (in seconds) for specified resource type
		ResourceAmount( resourceType ) 		// Get max amount of resources per resource area for specified resource type
		ResourceAmount( resourceType, int ) // Set max amount of resources per resource area for specified resource type
		ResourceArea( resourceType ) 		// Get number of resource areas that world has been split into for specified resource type
		ResourceArea( resourceType, int ) 	// Set number of resource areas to split the world into for specified resource type
	Updated Resource JS properties with properties to get current amount of fish in a region, and the current respawn timer for fish:
		.fishAmount		// Returns/Sets the amount of fish in given resource object
		.fishTime		// Returns/Sets the respawn timer of fish in given resource object
	Updated fishinglist.dfn (dfndata/items/itemlists/fishinglist.dfn) with list objects that can be referenced by in-game ADD command or scripts to add random items from the fishing itemlists
-= 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/08/2021 - Xuri (0.99.4w)
	Added support for new Skills DFN tag:
		SKILLDELAY=# 	// Delay in seconds before another skill can be used after using this skill. Overrides global delay from UOX.INI
	Updated skill cSkills::SkillUse() to use skill-specific skill delays if set for a given skill, or global delay from ini if not. Also added a check to see if skill delay timer has been modified by onSkill JS event before attempting to set a default timer
	Updated skill delays to better match ~pub15 era:
		Reduced global SKILLDELAY setting in UOX.INI from 2 to 1 second
		Detecting Hidden skill now has a default skill delay of 10 seconds
		Herding skill now has a default skill delay of 10 seconds
		Hiding skill now has a default skill delay of 10 seconds, with shorter delays (global skill delay) for trying to hide while in combat or for successfully hiding
		Meditation skill now has a default skill delay of 10 seconds, with shorter delays (global skill delay) for failing due to hands being occupied or already being at max mana
		Peacemaking skill now has a default skill delay of 10 seconds for failed skill checks, and 5 seconds delay for successful ones
		Poisoning skill now has a default skill delay of 10 seconds
		Provocation skill now has a default skill delay of 10 seconds
		Remove Trap skill now has a default skill delay of 10 seconds
		Stealing skill now has a default skill delay of 10 seconds
		Stealth skill now has a default skill delay of 10 seconds
		Tracking skill now has a default skill delay of 10 seconds
		Veterinary skill now has a default skill delay of 10 seconds
	Fixed an issue with global JS Timer object that would reference the wrong timerIDs
	Extended global JS timer object to include timers from socket as well (marked with SOCK_ prefix):
		.SOCK_SKILLDELAY	// Delay before the next time player can use another skill
		.SOCK_OBJDELAY		// Delay before next time player can use another object
		.SOCK_SPIRITSPEAK 	// Timer that tracks remaining duration of player's Spirit Speak
		.SOCK_TRACKING		// Timer that tracks remaining duration for player's Tracking skill
		.SOCK_FISHING		// Timer that tracks remaining duration for player's Fishing skill
		.SOCK_MUTETIME 		// Timer that tracks remaining duration a player remains muted
		.SOCK_TRACKINGDISPLAY 	// Timer that tracks interval between each time tracking display is updated
	Updated various JS scripts to use the new Timer.TIMERNAME with .GetTimer()/.SetTimer() JS Methods for Characters and Sockets
	Updated Persecution ability for player ghosts to use the skill delay of the Spirit Speak skill, if set
	Updated Persecution ability to base mana damage primarily on player's Spirit Speak skill rather than their Intelligence
	In order to cut down on the amount of messages sent from server to players trying to spam-use objects/skills, UOX3 now only sends a maximum of one message for object use delay and one message for skill use delay while the delay timers for these are in effect. This resets on the next successful use of an object or skill. This is tracked via bools in cSocket class:
		bool objDelayMsgShown
		bool skillDelayMsgShown
	Converted DELAY tag in spells.dfn to use seconds (with decimals) instead of tenths of a second, which was not precise enough. This controls the cast time of spells. What would previously say DELAY=10 (10/10ths of a second) now says DELAY=1.0 (1 second)
	Added support for new Spells DFN tag to control delay until damage takes place after casting a spell, replacing UOX.INI setting COMBATEXPLODEDELAY, which is no longer used:
		DAMAGEDELAY=# 		// Delay in seconds (decimal) until a direct damage spell deals its damage
	Added support for a new Spells DFN tag to control cast recovery time, during which additional spells cannot be cast:
		RECOVERYDELAY=# 	// Delay in seconds (decimal) until player can cast another spell
	Added new setting in UOX.INI to control whether player spellcasting gets interrupted upon equipping/picking up items:
		ITEMSINTERRUPTCASTING=1 	// If enabled, spellcasting gets interrupted by equipping/picking up items. Defaults to enabled.
	All direct damage spells by default have a 1.0s delay before damage (and VFX) is applied, except Explosion which has a 2.5s delay
	All spells by default have a cast recovery duration of 1.0s; from the moment a spellcast is completed/moment targeting cursor appears, the player will be unable to cast any other spell for the duration of the cast recovery
	Reagent checks and skill-check now take place AFTER the spellcast animation, not before!
	Spell cast times now follow this formula, though values set per spell and can be modified: 0.25 + ( spellCircle * 0.25 )
	Overhauled spell sound FX and VFX for for all spells
	Players can no longer cast spells while holding items on the cursor
	Fixed Magic Trap, Magic Untrap, Magic Lock and Magic Unlock not being usable on containers in one's own backpack
	Fixed an issue that caused Magic Trap to deal between 50 to 100 damage to the player. New damage: 5 to 10, depending on Magery skill
	Fixed an issue where Magic Untrap spell would completely remove traps from spawn containers instead of disable them
	Fixed an issue where Telekinesis spell would not set off traps on containers properly
	Added additional FX for Teleport spell played at player's original location before the teleport took place
	Fixed a bug where creatures summoned with the Summon Creature spell were not dispellable
	Fixed an issue where the Reveal spell would not reveal players hidden using the Hiding skill
	Dispel and Mass Dispel spells are no longer guaranteed to succeed at dispelling summoned creatures. Instead, the chance to dispel is based on the following simple formula, with dispelChance capped at 95% to always leave some chance for a creature to resist a dispel:
		dispelChance = ( 50 - ( targetResistSkill - casterMagerySkill )) / 1.5
			The targetResistSkill is based on the highest value of the summoned creature's spell resistance skill and the spell resistance skill of its summoner
	Fixed an issue where the Create Food spell attempted to create an invalid item
	Fixed issue where code that checked for valid drop locations for items didn't allow negative z values (Dragon Slayer)
	Fixed issue where players could drop items on blocking map tiles like water or mountains (Dragon Slayer)
	Fixed issue where some JS functions like CheckStaticFlag, CheckDynamicFlag, DoesStaticBlock, DoesDynamicBlock and DoesMapBlock would not work correctly when passed negative Z values
	Fixed issue where context menu were listing skills to train from NPCs based on effective skill rather than base skill
	Fixed issue where NPCs would offer skills for training even if those skills were not above the minimum 60 skillpoints
	Updated clilocID used for Gump JS Method AddToolTip - as well as for some item/character tooltip data - from 1050045 to 1042971 for improved client compatibility
	Human/Elf/Gargoyle NPCs with spellcasting capabilities will now play a casting animation and briefly stop moving when they cast spells
	Updated NPC spellcasting code to help NPCs make a bit better choices of what spells to cast during combat. Now they take their own health percentage into account, and cast more offensive spells when at near full health vs more defensive spells as their health drops
	Fixed an issue where Hirelings wouldn't always immediately start following their new owners
	Fixed a bug where the Earthquake spell could incorrectly add NPC characters marked for deletion to the refresh queue
	Updated skills and stats of all implemented human NPCs (including vendors) to better match the state of those NPCs around the time of Pub15
	Fixed SPATTACK values for a couple of NPCs that were still using values based on spell bitmask instead of spell circle value
	Updated stats of Jukan and Meer NPCs (dfndata/npc/lbrraces.dfn) to match stats from official LBR guide
	Added support for an optional third parameter for Character/Socket JS Method .CustomTarget() to allow highlighting targeting cursors as neutral (0, default aura), harmful (1, red aura), helpful (2, blue aura). A value of 3 will cancel the currently active targeting cursor. New syntax:
		myChar/mySock.CustomTarget( targetID, txtToSay, cursorType ) 	// supported cursorTypes: 0 = neutral, 1 = harmful, 2 = helpful, 3 = cancel current target cursor
	Various target cursors triggered by code (like hard-coded spells, some pet commands) also make use of these cursorTypes
	Fixed a bug that caused segmentation fault on Linux, related to item tooltips and socket language
-= 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/08/2021 - Xuri
	Fixed an issue where AF_ALL option in [disabled assistant features] of UOX.INI would override (duh) the setting for all the other assistant features, essentially leaving the shard admin with only two options (all features disabled, or none). The AF_ALL option has now been removed entirely.
	Extended support for negotiating with assistant tools to disable these additional assistant tool features (from UOS) via the [disabled assistant features] section of UOX.INI:
		AF_AUTOBANDAGE=0/1 			// Automatically apply bandages when low on health
		AF_ENEMYTARGETSHARE=0/1 	// Share enemy target in party/guild/alliance chat
		AF_FILTERSEASON=0/1 		// Force client to display a fixed season
		AF_SPELLTARGETSHARE=0/1 	// Share spell target in party/guild/alliance chat
		AF_HUMANOIDHEALTHCHECKS=0/1 // Check health of nearby humanoid characters?
		AF_SPEECHJOURNALCHECKS=0/1 	// Check journal for specific messages sent from server
	Applied a potential fix for an issue that could cause players to get disconnected immediately without delay before assistant tool had a chance to respond to feature negotiation request
	Addressed a couple of minor code issues that caused some warnings
-= 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

02/08/2021 - Dragon Slayer
	Moved fishing skill out of code and into js for more user friendly control
	Added js/item/magicfish.js for the magic fish food
	
20/09/2021 - Xuri
	Extended Character JS Method DoAction() to support two additional parameters - frameCount and playBackwards - which define the length of the animation (defaults to 7) and whether the animation should be played backwards (defaults to false). Note that this only works for old-style animations, and thus is not available for Gargoyle characters. Updated method syntax:
		.DoAction( actionID ) // Old animation packet
		.DoAction( actionID, null, frameCount) // Old animation packet with frameCount
		.DoAction( actionID, null, frameCount, frameDelay ) // Old animation packet with frameCount, frameDelay
		.DoAction( actionID, null, frameCount, frameDelay, playBackwards) // Old animation packet with frameCount, frameDelay, playBackwards
		.DoAction( actionID, subActionID ) // New animation packet
	Extended fishing JS script to include:
		Fishing special fishing nets, big fish, messages in a bottle/SOS messages and associated shipwreck treasures, with chances of attracting sea serpents, deep sea serpents, water elementals and krakens while fishing.
		Enhanced detection of fishing in shallow vs deep water, with deep water now being defined as any water tile that's 16 or more tiles away from the nearest land area.
		Updated timer system, LoS checks,
	Implemented SOS messages and shipwreck locations, with areas valid for potential shipwreck locations being defined in a new section of regions.dfn named [SOSAREAS], which follows the same syntax as the INSTALOG section in the same file. Once a message in a bottle is opened, a SOS message is generated with coordinates for a random shipwreck location, which players can sail to and fish near in order to find a sunken treasure (and other items).
	Implemented shipwreck treasures, which come in 3 levels of quality (with an optional 4th quality level available), with increasing amount of gold, gems, scrolls, reagents and magic items (coming in next commit!) per quality level of treasure
	Implemented special fishing nets, which can be used to fish up a variety of sea creatures (sea serpents, deep sea serpents, water elementals, kraken), which have a high chance of having SOS bottles on their corpses when defeated
	Updated fishinglist.dfn, itemlist.dfn and lootlist.dfn to support new fishing updates
	Updated movable state of various items that can be fished up (pillows, some pieces of furniture) to ensure players can move them!
	Renamed ORERESPAWNAREA ini setting to RESOURCEAREASIZE (it's also used for ore, and logs) and reduced it from 10 to 8 to divide each world into 8x8 sized resource areas
	Fixed a bug where the new fish resource type was not getting regenerated or saved properly
	Added INSTANCEID support to INSTALOG section of regions.dfn, and added default WORLD and INSTANCEID entries to all areas
	Fixed an issue with Runebooks (js/item/runebook.js) where the coordinates of a rune location would not be displayed properly
	Separated map coordinate function from Runebook script to its own script (js/server/data/map_coordinates.js), which other scripts can call upon to get map coords using TriggerEvent() JS function
	Ported sextant implementation from code to JS (5033=js/item/sextant.js), and removed the hard-coded version of this.
	Updated Item DFN entry for sextants to include script=5033 tag
	Fixed a bug in handling of the LOOT tag for NPCs where server would crash if a number was specified behind the item/itemlist to add as loot
	The DFN tags PACKITEM and LOOT are now handled similarly when used for NPCs and Items respectively. PACKITEM can be used for adding items with specific IDs, or "list objects" from itemlists.dfn, while LOOT can be used to add items from lootlists.dfn. One big difference between these is that if the optional amount parameter is specified for either tag when used with itemlists/lootlists (PACKITEM=listObject,amount vs LOOT=lootlist,amount), PACKITEM will add the specified amount of the specified/randomly chosen item, while LOOT will add X amount of random items.
	Updated implementation of ITEMLISTs and LOOTLISTs to support an optional weighting system, which can be used to adjust the probability of some items being chosen from these lists over other items. In the below example, specialfishingnet has a weight of 10, while the blank entry has a weight of 90, making it 9 times more likely for the blank entry to be chosen than the specialfishingnet! Note that higher weighted items should be sorted first for this to be accurate:
		[LOOTLIST shipwreck_treasure_special]
		{
		90|blank
		10|specialfishingnet
		}
	Using bladed weapons on stacks of fish will now cut the entire stack at once, instead of one fish at a time
	Updated DFN entries for various sea creatures (dfndata/npc/seacreatures.dfn) to adjust color of NPCs, loot and NPC AI
	Extended functionality of JS Function DoMovingEffect() to allow a set of coordinates as source location, without having to specify a character as either the source or target of the effect
	Fixed an issue with sea creatures being unable to pathfind in shallow water due to underwater land tiles being treated as blocking
-= 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

20/09/2021 - Xuri (0.99.4x)
	Fixed an issue where the color of NPC corpse names would not always match up with the NPC's flag color
	Fixed a bug where the baseRange and maxRange properties of ranged weapons would not get saved to world files. These values are now saved in the format of RANGE=baseRange,maxRange
	Changed the way items are added to containers, to ensure that the order in which the items are displayed to the player always reflects the order in which they were added; now the most recent item added/moved in a container will always be rendered on top of older items.
	Made adjustments to how items are randomly added to containers; should use more of a given container gump's available area now
	Exposed Item property to JS engine, which contains serial of the creator of an item:
		.creator 	// contains serial of the creator of an item. If set, maker's marks will show up in the item's tooltip
	Fixed an issue where JS engine would lose track of script context if one script used CreateDFNItem() or SpawnNPC() functions and the new objects had events that triggered upon creation. UOX3 now restores the original script context at the tail end of these functions.
	Added new JS Event to allow inserting custom tooltip text for objects, which will be displayed in tooltips right after the object name. Any text returned from the event will be displayed, and the text can make use of the same HTML tags as gumps to make changes to color, font, etc.
		onTooltip( myObj ) 		// Triggers for objects right before the object's tooltip properties are sent to client
	Updated 'tweak and 'set commands to refresh item being modified if movable state of item changes, so the change is reflected in nearby clients
	Fixed an issue with NPC vendors and items bought from players not being properly removed from the vendor's "bought container" when players buy them again
	Ported Item Identification skill from code to JS (js/skill/itemid.js) and removed hard-coded version
	Implemented magic item generator in JS (js/item/magic_item.js). When this script is attached to an NPC, it has a chance to generate magic weapons, armors, wands/staffs and rings as loot on the NPC's corpse when slain. The chance of getting quality magical items increases with the fame level of the NPC in question. The types of magical items generated follows the pattern of such items as implemented in UO prior to the AoS expansion.
		Examples:
			exceedingly accurate war hammer of vanquishing
			substantial, accurate axe of power and Daemon's Breath
			silver long sword
			massive platemail arms of Protection
			metal shield of defense
			durable ringmail tunic of guarding
		All magic items have a chance to have spell effects attached (with rings/wands being guaranteed to have these), with a limited amount of charges available. For weapons, these effects activate on successful hits in combat, while for armors they activate on equip, and then periodically as long as the item is worn. Rings and wands/staffs have to be manually activated and targeted - with the exception of rings of invisibility, which activate the moment you equip them!
		Related scripts:
			js/item/magic_armor_equipeffects.js
			js/item/magic_weapon_accbonus.js
			js/item/magic_weapon_equip.js
			js/item/magic_weapon_spell_attack.js
		The magic item loot generation script has been attached to a number of different NPCs, all of which now have a chance to drop magic items as loot when defeated.
	A bonus magical item - the glacial staff - has also been implemented (js/item/magic_glacial_staff.js), and has a chance to drop as loot from Giant Ice Serpents!
	Fixed an issue with CustomTarget where the target message would not be displayed if the cursorType parameter was provided
	Fixed bug with 'rename command, which referenced a non-existing variable that caused a script crash
	Added additional object properties to 'get and 'set commands:
		.shouldSave 		// Determines if an item should be saved in worldfiles or not
		.baseRange 			// Determines the base range of a ranged weapon, less than which it becomes less effective
		.maxRange 			// Determines the max range of a ranged weapon, beyond which it cannot reach its target
	The feature that allows stats like Strength, Dexterity and Intelligence to provide bonuses to skill checks has been turned into a UOX.INI setting, which is disabled by default. The bonuses have also been nerfed; they will no longer contribute more to the success of a skill check than the actual skill being checked!
		STATSAFFECTSKILLCHECKS=0/1 	// If enabled, stats can provide bonuses to skill checks based on the weighting for those stats as setup in dfndata/skills/skills.dfn
	Updated damage tracking code to include the type of damage that was dealt (PHYSICAl vs HEAT vs COLD, etc)
	Updated Character JS Method Damage() to include a new parameter that can specify the type of damage that was dealt to the character. The new parameter must always be included if other optional parameters are used. Note that updates might be required for scripts making use of this method.Updated syntax:
		.Damage( amount )
		.Damage( amount, damageType )
		.Damage( amount, damageType, attacker )
		.Damage( amount, damageType, attacker, doRepsys )
		Supported damageTypes:
			PHYSICAL 	= 1
			LIGHT 		= 2
			RAIN 		= 3
			COLD 		= 4
			HEAT 		= 5
			LIGHTNING 	= 6 // magic damage
			POISON 		= 7
			SNOW 		= 8
	Updated JS Event OnDamage to include an additional parameter that describes the type of damage that was dealt. New syntax:
		onDamage( damaged, attacker, damageValue, damageType )
	Updated JS Event OnSpellTarget to allow rejecting a spell being cast on a target by returning a value of 2 from the script
	Split the character priv flag for magic reflection into a temporary one (one-time magic reflection spell) and a permanent one (innate permanent reflection ability). The temporary effect is put in place by Magic Reflection spell, and is removed after a successful spell reflect. The permanent one is an innate ability of a character and is not removed even after a spell is reflected.
	Added new Character JS property to get/set state of a character's permanent magic reflect ability:
		.permanentMagicReflect 		// 0 = disable, 1 = enable
	Added special abilities/effects for the following NPCs:
		Acid Elementals now have a chance to damage the melee weapons of their attackers
		Dull Copper Elementals now explode on death
		Shadow Iron Elemental is immune to targeted spell damage
		Copper Elementals have permanent magic reflect, and reflect some physical damage back at their attacker
		Bronze Elementals deal passive area damage to nearby players every 5 to 10 seconds
		Valorite Elementals have permanent magic reflect, reflect some physical damage back at their attacker
		Snow/Ice Elementals deal passive area damage to nearby players every 5 to 10 seconds
		Lava Serpents deal passive area damage to nearby players every 5 to 10 seconds
		Phoenixes deal passive area damage to nearby players every 5 to 10 seconds
		Pixies have a chance to cast a random spell upon receiving a death blow:
			Bless (target)
			Curse (target)
			Explosion (target)
			Greater Poison (target)
			Greater Heal (self, prevents death)
		Ethereal Warriors will now resurrect dead players with positive karma
		Ethereal Warriors now have a chance to drain target's health, stamina or mana on hit
		Fire Breath special ability added to the following NPCs, with the random ability damage scaling with the NPCs current health:
			Hell Cat, 5 to 8 dmg at max health
			Fire Steed, 6 to 9 dmg at max health
			Hell Hounds, 8 to 11 dmg at max health
			Lava Lizard, 8 to 11 dmg at max health
			Predator Hell Cat, 9 to 14 dmg at max health
			Sea Serpent, 11 to 17 dmg at max health
			Swamp Dragon, 15 to 22 dmg at max health
			Armored Swamp Dragon, 15 to 22 dmg at max health
			Fire Gargoyle, 20 to 30 dmg at max health
			Deep Sea Serpent, 21 to 32 dmg at max health
			Serpentine Dragon, 22 to 32 dmg at max health
			Drake (Gray), 22 to 32 dmg at max health
			Drake (Red), 22 to 32 dmg at max health
			Nightmare, 26 to 39 dmg at max health
			Dark Steed, 26 to 39 dmg at max health
			Silver Steed, 26 to 39 dmg at max health
			Kraken, 39 to 59 dmg at max health
			Dragon (Red), 41 to 62 dmg at max health
			Dragon (Gray), 41 to 62 dmg at max health
			Shadow Wyrm, 50 to 75 dmg at max health
			Reptalon, 51 to 77 dmg at max health
			Skeletal Dragon, 52 to 77 dmg at max health
			Ancient Wyrm, 60 to 90 dmg at max health
	Update stats, skills and loot for all currently implemented NPCs
	Removed an ancient piece of code that prevented corpses from being generated for various elementals and blade spirits on death. This was originally put in place because these creatures had no corpses, and would replace it with a backpack instead, but these creatures now all have corpses in all client versions supported by UOX3
	Updated potions script (js/item/potion.js) with updated formula for amount of hitpoints healed by healing potions, and added restrictions for using them when at full health and/or if poisoned (Dragon Slayer)
	Fixed a bug where creatures (and humans, if FORCENEWANIMATIONPACKET was disabled in uox.ini) would play animations with wrong frame count, causing the animations to either freeze for a few frames at the end, or get cut off a couple of frames early
	Implemented bonus hit chance for Archery skill, based on mention of such a bonus in Publish 5 patch notes and related UO House of Commons chat. This has been exposed as a UOX.INI setting where this bonus can be tweaked:
		ARCHERYHITBONUS=10 	// Bonus hit chance for Archery skill added to regular hit chance in combat. Defaults to 10%
	Implemented optional extra delay between moving and being able to shoot with ranged weapons in combat (in addition to whatever delay is there due to speed of the ranged weapon). This is exposed as a UOX.INI setting:
		ARCHERYSHOOTDELAY=0.5 // Minimum delay in seconds from a player stops moving until they can start to fire their ranged weapon. Defaults to 0.5s
	Fixed a bug where players who never entered combat mode could fire ranged weapons while moving
	Updated Add-menu with some improvements for usability:
		Menu now directly on the Objects (previously "Shard") tab for quicker access, with a small welcome text and quick-link button for UOX3 docs
		Settings tab contains some (persistent, will be saved with character) options for how the Add-menu behaves, along with a few quick-access buttons to some useful commands. Available options:
			Option to add chosen item at specific location instead of in GM's backpack
			Option to add chosen item repeatedly until cancelled
			Option to automatically reopen Add-menu on last menu that was open when a selection is made
			Option to force decayable state of all added items to either off (doesn't decay), on (decays) or nothing (use item default)
			Option to force movable state of all added items to either off (not movable), on (movable) or nothing (use item default)
		Added a Home button at the bottom of the menu, that takes the user back to the front page of the Add-menu regardless of which menu page they're on
	Updated Character/Socket JS Method SysMessage() with an optional parameter to specify the color used to display the system message. Updated syntax:
		.SysMessage( "Text" ) 									// Display "Text" to user as a system message with default system message color from ini
		.SysMessage( "Text %s %s", txtArg1, txtArg2 ) 			// Display "Text" to player with string arguments injected into text
		.SysMessage( txtColor, "Text" ) 						// Display "Text" to user with a specified color
		.SysMessage( txtColor, "Text %s %s", txtArg1, txtArg2 ) // Combination of text color, text and string arguments
	Fixed a bug where hair/beard items could show up inside corpses
	Fixed a bug where items could sometimes vanish (visually) from containers when bouncing back because player was not able to pick them up
	Fixed a bug where players would be unable to pick up a freely movable item from a locked down container
	Updated handling of item bouncing on pickup to use UOX3 dictionary messages instead of hard-coded client messages
	Added support for new Dictionary language:
		dictionary.POL - Polish (SERVERLANGUAGE=8 in uox.ini, or client language 83 if SERVERLANGUAGE is set to 0)
	Added taming restrictions for Unicorn, Ki-Rin and Cu Sidhe (js/skill/taming.js)
	Added modification of some creatures stats after they've been tamed (js/skill/taming.js)
	Added restrictions for who can ride certain creatures (Unicorn, Ki-Rin, Cu Sidhe)
	Updated words of power for Meteor Swarm spell to follow the same logic as other spells using Kal (Summon): Kal Des Flam Ylem
	Added new Item/Character JS Methods to get/set temporary custom tags which don't persist across worldsaves (or across reconnects, for players):
		.GetTempTag( "tagName" )
		.SetTempTag( "tagName", tagValue )
	When applying HPMAX, STAMINAMAX AND MANAMAX DFN tags to new NPCs, their current HP, STAMINA and MANA properties will now be automatically updated to match
	Fixed a server crash caused by empty speech messages sent from certain clients
	Fixed a bug that prevented teleport locations in Felucca/Trammel from working properly
	Updated calculations in code for duration and damage of existing poison strengths (1 - Lesser, 2 - Normal, 3 - Greater, 4 - Deadly) to match with ~Publish 15 (LBR/pre-AoS), and added another poison strength for monster usage (5 - Lethal)
	The strength of the Poison and Poison Field spells is now based on the average of the caster's Magery and Poisoning skills, the distance from the target (Poison spell only) and the target's Resisting Spells skill. If caster is further away than 2 tiles from target, the poison strength always equals Lesser Poison, otherwise the following rules apply:
		If caster's combined skill is higher than 100.0, poison strength equals Greater Poison, with 5% chance of Deadly Poison (if Poison spell) or Deadly Poison (if Poison Field spell)
		If caster's combined skill is higher than 70.2, poison strength equals Greater Poison
		If caster's combined skill is higher than 30.2, poison strength equals Normal Poison
		If caster's combined skill is 30.2 or lower, poison strength equals Lesser Poison
		If target resists spell, poison strength is reduced by 1 level, unless it's already at the lowest level
	Fixed an issue that would would let players move faster than they should have been allowed to
	Fixed misc issues with Party System:
		Mana and Stamina should now update for Party Members when added to the party, when going in/out of range and when their stats update while in range
		Players who get disconnected or relog should now find themselves back in the same party they were in previously
		Added system messages to inform party members about updates to their party, and to let invited players know they've successfully joined a party (or rejoined, if relogging)
	World saves now operate on the principle of only saving changes done since the last world save. Combined with the fact that NPCs in UOX3 are only active if there are players in the same/neighbouring map regions, shard owners may expect to see a decrease in world save times ranging from ~11% to ~99%, depending on how active and how spread out their player base is. If no changes have taken place since last save, saves are virtually instantaneous!
-= 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

21/09/2021 - Xuri (0.99.4x+)
	Updated entry for Wisp in creatures.dfn to mark them as animals to stop monsters from attacking them (and dying)
	Removed some debug messages from pixie_death.js
	Fixed some lines of text in new 'add menu that would display incorrectly in regular UO client
	Disabled tooltips for admin welcome gump; too much for regular UO client to handle
-= 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/09/2021 - Xuri
	Fixed bug where player might get stuck as frozen in ghost form and unable to move if dying in the midst of casting a spell
	Fixed bug where reagents could not be dropped directly from ground and into newbie reagents bag, as the bag didn't have the proper setup for a container. Now inherits its setup from a regular bag (dfndata/items/magic/reagents.dfn)
	Fixed two broken timer references in JS: Timer.SPELLRECOVERYTIME and Timer.LOYALTYTIME
	Fixed a bug where players could gain points in Evaluating Intelligence skill by targeting themselves (js/skills/evaluateintel.js)
	Updated Evaluating Intelligence skill to show more detailed information about targets (js/skills/evaluateintel.js)
	Fixed some issues with sound effects in JS based spells
	UOX3 console should now show 100% when done saving, regardless of the amount of data it has to save
	Earthquake spell can no longer harm invulnerable characters
	Fixed issue where NPC would evade instead of change to a different nearby target if unable to pathfind to current target
	Damage dealt by Fire Field spell is now determined by BASEDMG tag (defaults to 2, if resisted, half of that) in spells.dfn
	The rate at which the effects of field spells (Fire Field, Poison Field and Paralyze Field) are applied is now determined via the DAMAGEDELAY tag in spells.dfn, which defaults to 1.0 seconds
	Added missing reference to wand_item_id.js in jse_fileassociations.scp
	Removed debug message from magic item generation script
	Fixed an issue with fishing script that prevented fishing up random sea serpents
	Adjusted how updates are sent to clients when TurnToward JS Method is used, to prevent an issue where animations triggered immediately after would not play properly in the client
-= 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/09/2021 - Xuri
	Added new system that lets shard admins assign a "network" budget to connected clients, which determines the maximum amount of bytes clients are allowed to send to/receive from server over a period of ten seconds. If a client exceeds these limits three times in the same connected session, they'll receive a temporary ban and get kicked from the server. The following new UOX.INI settings under the [system] section can be used to control this feature:
		MAXCLIENTBYTESIN=25000		// Max bytes client can send to server over 10 seconds
		MAXCLIENTBYTESOUT=100000 	// Max bytes client can receive from server over 10 seconds
		NETTRAFFICTIMEBAN=30 		// Duration (in minutes) of temporary ban for exceeding these limits
	Fixed an issue that prevented GMs from using CSTATS and TWEAK buttons in 'wholist
	Updated documentation with most recent changes to UOX.INI settings
	Minor code cleanup
-= 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

27/09/2021 - Dragon Slayer
	Split food2.dfn into new dfn files: cooking.dfn, vegetables.dfn, meats.dfn, fruits.dfn
	Fixed pitcher of water so it can be poured onto the bag of flour and remove one content and set 20 contents for flour bag
	Fixed four bag can be double clicked and target water and use one content of water. and give it self 20 uses for dough
	Added all dough baking
	Added all meat cooking
	Added Heatsources
	Fixed Flourmill to have animation and give bag of flour when double clicked
	Cleaned up baking and cooking - not every thing needed a skill check
	Misc style cleanup and bugfixes (Xuri)
	Tweaked flour mill usage and animation setup to make it more resistant to breaking (Xuri)
	Added tooltip with uses remaining for pitchers of water and sacks of flour (Xuri)
	Randomized the type of bread created when baking dough (Xuri)
	Updated dictionaries with cooking-specific messages (Xuri)
	Finalized implementation of GetTempTag and SetTempTag (Xuri)
-= 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

30/09/2021 - Xuri
	Fixed an issue with DoTempEffect JS function which prevented compilation on macOS (and potentially had unintended consequences)
	Cleaned up a warning in sound.cpp
	Added a bunch of additional door IDs to js/item/doors.js and dfndata/harditems/harditems.dfn
	Fixed a few issues with various dictionary files
-= 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

12/10/2021 - Dragon Slayer
	Healing someone with bandages now unhides player
	Updated calculations for duration it takes to heal self/another target, and for the amount of health healed
	Added karma gain for healing innocent players
	Added ability to heal various humanoid monsters with bandages and Healing skill
	Added ability to heal various animals with bandages and Veterinary skill (Xuri)
	Added chance for healer's fingers to slip if taking damage while healing (js/skill/healing_slip.js), with amount of health healed being reduced with each slip, though this effect is countered somewhat by healer's Healing skill and Dexterity stat (Xuri)
	Added some opening effects to some containers like armoires, chests of drawers and dressers
	Added new command to allow shard admins and GMs to quickly add signs to their world: 'addsign
-= 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/10/2021 - Xuri
	Updated onSkillGain, onSkillLoss and onSkillChange JS events:
		Additional parameters now supported by events - skillGainAmount and skillLossAmount
			onSkillGain( player, skillID, skillGainAmount ) 	// skillGainAmount is always positive
			onSkillLoss( player, skillID, skillLossAmount ) 	// skillLossAmount is always positive
			onSkillChange( player, skillID, skillChangeAmount ) // skillChangeAmount can be negative or positive
		The return value from onSkillGain and onSkillLoss events can now be used to control behavior:
			return true - skill gain/loss is allowed, and server will go through with the skill update
			return false - skill gain/loss is not allowed, and server will prevent the skill update, but will not block additional scripts with same event from running
		onSkillChange will now run as long as onSkillGain or onSkillLoss events return true, and if those events are not defined
	Updated JS Docs
-= 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

18/10/2021 - Xuri (0.99.4y)
	Shifted [directories] section of UOX.INI further up in the file, to make it easier to find
	Added new UOX.INI setting to control for which facets spawn regions are enabled (defaults to none):
		SPAWNREGIONSFACETS=#	// # is a bitmask that determines which facets to enable spawn regions for. Supported values:
			0 = No facets enabled (default)
			1 = Felucca
			2 = Trammel
			4 = Ilshenar
			8 = Malas
			16 = Tokuno
			32 = Ter Mur
				Examples: A value of 1 = only Felucca is enabled, value of 3 = Felucca + Trammel, 10 = Malas + Ilshenar, 63 = all facets enabled, etc.
	Added new Admin commands to enable/disable spawn regions in specific facets (note that this does not affect already spawned objects):
		'enablespawns <facetNum/facetName>
		'disablespawns <facetNum/facetName>
	Updated CSpawnRegion::doRegionSpawn() function to only spawn objects in spawn region if world associated with spawn region is enabled in SPAWNREGIONSFACET uox.ini setting
	The community-based spawn file now comes bundled with UOX3, and shard admins can choose whether to activate the spawns from this file during the welcome gump that pops up first time they log in
	Updated main UOX3 docs to add a simple filter feature, to make it easier to find stuff in the docs
-= 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/10/2021 - Xuri
	Added an [ADMIN] section to dfndata/commands/commands.dfn to make it easier to give shard admins (via 'make admin) a different default look than other GMs
	Stackable items given to newly created characters will no longer by default be marked as newbiefied/blessed items
	Added new Character JS Properties
		.actualDexterity 		// Returns the actual dexterity (minus temporary mods) of the character
		.actualIntelligence 	// Returns the actual intelligence (minus temporary mods) of the character
		.actualStrength 		// Returns the actual strength (minus temporary mods) of the character
	Updated 'get command (js/commands/targeting/get.js) to support fetching actualDexterity, actualIntelligence and actualStrength properties for Characters
	Fixed an issue where 'wipe command could wipe NPCs and/or multis despite those being set as "unwipable"
	Fixed an issue where NPCs would be stuck not moving if they ended up trying to flee from non-existent targets
-= 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/10/2021 - Xuri (0.99.4z)
	Providing an invalid spellID with CastSpell() Character JS Method will no longer crash the server
	Fixed an issue where ranged weapons bought from NPC vendors would not have their baserange/maxrange properties set properly
	Added missing maxrange DFN tags to Item definitions for ranged weapons (dfndata/items/gear/weapons/archery.dfn, aos_weapons.dfn and se_weapons.dfn)
	Removed some dummy data that snuck into dfndata/items/gmmenu/spawners.dfn
Experimental build based on develop branch:
https://www.uox3.org/files/uox3_all-in-one_0_99_4z.zip
-= 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

28/10/2021 - Xuri
	Updated onStatGained, onStatLoss and onStatChange JS events:
		Additional parameters now supported by events - statGainAmount and statLossAmount
			onStatGained( player, statID, statGainAmount ) 	// statGainAmount is always positive
			onStatLoss( player, statID, statLossAmount ) 	// statLossAmount is always positive
			onStatChange( player, statID, statChangeAmount ) // statChangeAmount can be negative or positive
		The return value from onStatGain and onStatLoss events can now be used to control behaviour:
			return true - stat gain/loss is allowed, and server will go through with the stat update
			return false - stat gain/loss is not allowed, server will prevent the stat update, and will prevent additional scripts with same event and/or hard code from running
		onStatChange will now run as long as onStatGain or onStatLoss events return true, and if those events are not defined
	Fixed an issue where Healing script (js/skills/healing.js) would break because Math.Round() was used instead of Math.round() (Thanks, HeyYaNITO!)
	Fixed an issue where players would experience higher than expected delays for firing ranged weapons after moving
-= 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

31/10/2021 - Xuri (0.99.4z+)
	Fixed incorrect non-combat music entry [MUSICLIST COMBAT] section of dfndata/regions/regions.dfn
	Added new music section to dfndata/regions/regions.dfn
		[MUSICLIST DEATH]	// Plays music from this list for players who are in the realm of the dead
	Assigned different MOREZ value to each explosion potion (dfndata/item/magic/potions.dfn) to make distinguishing between them easier
	Updated item stacking code to disallow stacking items that have different more, morex, morey, morez, buyvalue or sellvalue
	Fixed issue where monsters would erroneously show context menu entries with skill training options
	Fixed issue where some iron ore in GM add menu was showing up and being added as a brazier instead
	Added baseRange and maxRange to 'tweak menu (js/command/targeting/tweak.js)
	Added new Item property that can be used to associate an item with a custom server event:
		DFN Tag:
			EVENT=eventName	// Name of event in one word, with no spaces
		JS Property:
			.event
	Updated 'get, 'set, 'tweak and 'areacommand commands to support the new event property
	Extended 'decorate command with some additional features to support saving, loading and unloading event decorations (example: xmas, halloween, etc):
		'decorate saveevent eventName	// Save all items with event property matching eventName to event_[eventName].jsdata
		'decorate loadevent eventName 	// Load all items from event_[eventName].jsdata and assign eventName to their event property
		'decorate unloadevent eventName	// Clear up all items associated with eventName
	Added some new house addons to house.dfn, and in the 'add menu, under Deeds > Houseaddon Deeds:
		loom (south)
		small forge
		anvil (south/east)
		spinning wheel (north/south/east/west)
		small bed 1 (south/east)
		small bed 2 (south/east)
		large bed 1 (south/east)
		large bed 2 (south/east)
		training dummy (east)
		training dummy (south)
		pickpocket dip 1 (east)
		pickpocket dip 2 (east)
		dresser (east) // Disabled, doesn't work as container after being turned into addon
		dresser (south) // Disabled, doesn't work as container after being turned into addon
		abattoir (stone pentagram)
		flour mill (east)
		flour mill (south)
		oven (east)
		oven (south)
		large forge (east)
		large forge (west)
		large forge (north)
		large forge (south)
	Updated some house addons (bear rugs, pentagram) to be added from top-left to bottom right, for more consistency when placing items
	Added a code-check when placing house-addons to see if there's space in multi to place addon at selected location, starting from coordinates of target location and checking tiles east and south of that location based on the addon's SPACEX and SPACEY settings in house.dfn
	Added new script (js/server/house/houseAddonUse.js) that will restore the double-click functionality of some house addons that would lose their regular functionality in the process of becoming house addons, as their item type changed. The same script also adds some extra functionality to a couple of other house addons (looms and spinning wheels), allowing players to choose between using the addons and then targeting materials like yarn or wool or using the materials and then targeting the addons
	Fixed an issue with the interior decorator tool that would allow using it outside one's house
	Updated dictionary files
-= 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

02/11/2021 - Xuri (0.99.4z++)
		Updated 'decorate save command to not save items that are inside multis (the multis themselves are not saved anyway!)
		Fixed some issues that would crash decorate script when attempting to use event subcommands without event names
		Renamed 'fixcontweight command to 'fixcont and updated it to also fix maxItems property for containers that don't already have that set
		Updated container world file template for Felucca with containers with proper maxWeight and maxItems seet
		Updated admin welcome gump (js/server/misc/admin_welcome.js) to also include containers (previously missing) and disable facets that don't have any decorations yet. Anyone who already used the admin welcome gump to place default decorations for their shards can use 'decorate load containers to add the missing containers.
		Changed how house addons are marked as addons; they will no longer have their item type set to 201 (IT_HOUSEADDON), as this would override any existing item type functionality of the items being setup as addons (like the dresser, which is a container). Instead, house addons are now marked with a custom tag "addon", which is used by scripts like axe.js to identify them as house addons instead of relying on the item type.
		Uncommented the dresser house-addon from 'add menu, as it now works as intended
		Added house-addons to ArchitectShopping SHOPLIST so they can be bought from Architect shopkeepers for roughly the cost of the material it would have taken to craft them. This is a temporary solution until crafting these have been implemented.
		Updated default region spawn file to evict the beekeeper from Skara Brae bank to make room for some actual bankers! The beekeeper is now tending to the bees outside the bank instead.
		Fixed issue where NPC vendors would not restock more than 1 leather tunic and/or leather gloves, because of a missing restock tag in the DFN entries for those items
		Removed kindling from the shoplist of Armourer vendors
		Bananas are now edible
		Bowyer shopkeepers will now restock more than 1 shaft and/or feather
		Provisioner shopkeepers will now restock more than 1 candle, lantern, various masks, kindling, flour
		Jeweler shopkeepers will now buy some gems (star sapphire and tourmaline) they were previously not so interested in
		Bowyer shopkeepers now sell fletching tools
		Added fletcher's tools as newbie item for players starting with Bowcraft/Fletching skill
		NPC shopkeepers now spawn with full stocks of goods, instead of the bare minimum
		Fixed item weight tooltip for pileable items appearing in vendor shoplists
		Fixed an issue where selling items to NPC shopkeepers would sometimes not visually remove the items from player's backpack
		Fixed missing base_item inheritance and missing restock property for mount statues sold by animal trainers/stablekeepers, which prevented them from being presented for sale
		Hairs and Beards no longer count towards the total item count showing for corpses
		All leather containers are now dyable
		Animals that belong in the Arctic (polar bears, snow leopards, walrus) will no longer spawn in forests and jungles
		Hellhounds will no longer spawn in forest and jungles; they can now only be found in dungeons
		Silver Serpents have been removed from the "weakforestlist" NPCLIST, because they are anything but
		GM/Admin characters can now drag immovable items out of their own backpack even with "allmove" disabled
		A tip to enable "allmove" or modify item's movable property now shows for GMs attempting to pick up immovable items from the ground
		Hungry creatures with AI type 6 (AI_ANIMAL) will no longer suicide by indiscriminately attacking creatures with AI type 2 (AI_EVIL), but will instead only attack "peaceful" animals, or - if really hungry - other types of predatory animals (including humans...)
-= 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/11/2021 - Xuri (0.99.4z+++)
	Added new JS Item Methods to get/set the value (0-255) for specific parts (1-4) of temp variables ("more", "morex", "morey", "morez"):
		.GetMoreVar( moreVarName, moreVarPart )
		.SetMoreVar( moreVarName, moreVarPart, moreVarValue )
	Updated Remove Trap script (js/skill/removetrap.js) to make use of GetMoreVar() and SetMoreVar methods
	Updated inRange JS event to also trigger for Items with this event attached, when player characters come within update range. Updated syntax:
		inRange( srcItem, pCharInRange )
		inRange( srcChar, objInRange )
	When UOX3 retrieves data from the onToolTip() JS event to potentially display custom object tooltips, it will use the ID specified in a temporary JS tag ("tooltipCliloc") on the object as the clilocID being sent to the client with the tooltip text returned from the script. If no such tag exists on the object, it defaults to cliloc ID 1042971.
	Added new JS event that triggers _after_ an item has been removed from a container (no return values supported):
		onContRemoveItem( iCont, objRemoved, pChar )
	The JS Function SpawnNPC() can now spawn NPCs from NPCLISTS if provided with a boolean parameter flag (useNpcList). Updated syntax:
		CChar SpawnNPC( npcSection/npclist, x, y, z, worldnumber, instanceID, useNpcList )
	Added new JS Event to allow detection of movement near an object (items only, for now). Distance at which it triggers determined by part 1 of the item's MORE property. Use long ranges with care! Syntax:
		onMoveDetect( srcObj, pChar, rangeToChar, oldCharX, oldCharY )
	Added new JS script (js/server/misc/dungeon_traps.js) for handling trap mechanics in (primarily) dungeons. The traps all trigger on collision, and use different parts of the "morez" property to determine enabled/disabled status, damage, min skill required to disarm, max skill at which player can still gain skill from disarming. Disarming renders trap inactive for 60 seconds. Implemented trap types:
		Spike Traps 		// Active for ~5 seconds after triggered, deals damage every 1 second.
		Giant Spike Trap 	// Active for ~1 second after triggered, deals high instant damage one time
		Saw Traps			// Active for ~5 seconds after triggered, deals damage every 1 second.
		Gas Traps			// Active for ~5 seconds after triggered, applies poison to target every 1 second
		Fire Column Trap 	// Active for ~5 seconds after triggered, deals damage every 1 second after initial delay of 1 second
		Stone Face Traps	// Active for ~3 seconds after triggered, deals damage every 1 second after initial delay of 1 second
		Mushroom Trap 		// Active for ~2 seconds after triggered, applies poison to target every 1 second after an initial delay of 1 second
	Added dungeon traps to 'add menu, under Buildings > Decs > Dungeon Traps
	Added new commands to make modifying IDs of items (and NPCs) easier:
		'incid #	// Increment/decrement ID of target by specified amount
		'rincid #	// Repeatedly increment/decrement ID of target/multiple targets by specified amount
	Updated 'add and 'radd commands with new, optional syntax to make adding trees easier (potentially with GM tools/macros), as it will add both trunk and leaf at same location with a single command:
		'add tree [trunkID] [leafID]
		'radd tree [trunkID] [leafID]
	Updated AreaCommand GM command to include support for setting the .decayable property on multiple items at once. Also updated the script with appropriate system messages throughout, which now also show how many items were affected by use of the command
	Added new item script (js/item/gate_opener.js) that can be used to make switches/levers raise/lower multiple nearby gates. See script comments for details on setup
	Updated various JS scripts that used GetSByte() to retrieve Z of last targeted location from Socket to manually add height of targeted tile for client version below 7.0.9 only
	Fixed an issue where items created with 'decorate load command could be set as decayable
	Fixed an issue where multiple timers could be running on a single door by manually opening and closing it repeatedly. Closing a door will now kill the associated timer on said door.
	Fixed incorrect IDs for secret doors in Item DFNs (they were off by 1, so would not work properly)
	Updated name of all secret doors in dfndata/items/building/doors.dfn to inherit name from tiledata instead
	Added secret door IDs to dfndata/harditems/harditems.dfn
	Item and NPC definitions can now make use of randomization for the ID tag, for more variety. Syntax:
		id=[id1] [id2] [etc] // Example: id=0x0e42 0x0e43
	Fixed MORE values of "hard scripted" books in dfndata/items/misc/books.dfn
	Added Ice and Fire dungeon locations (dfndata/location/location.dfn) and added these to the GM travel menu (dfndata/item/travelmenu.dfn/travelmenu.bulk.dfn)
	Fixed body ID for ancient wyrm NPCs, which also fixes their name (dfndata/npc/dragons.dfn)
	Added more pre-defined books to dfndata/misc/books.dfn (and dfndata/items/misc/books.dfn):
		Quest of the Virtues – Volume 1 	// [quest_of_the_virtues_vol1]
		Fropoz's Journal 					// [fropoz_journal]
		Translated Gargoyle Journal 		// [translated_gargoyle_journal]
		Kabur's Journal 					// [kaburs_journal]
	Updated code for spawn containers to allow spawning more than one item per container; by default, a spawn container will now spawn every item from an itemlist if set as the spawnobjlist property for that spawn container. These itemlists can contain direct item references, references to other itemlists or even lootlists
	Added 4 levels of dungeon treasure chests that can be placed out as spawn objects in dungeons, with items and valuables spawning inside on a regular interval. These can be found in dfndata/items/gmmenu/dungeon_treasure_spawners.dfn, with associated itemlists being found in dfndata/items/itemlists/itemlists.dfn (dungeontreasureloot1, dungeontreasureloot2, dungeontreasureloot3 and dungeontreasureloot4). They can also be located in the 'add menu under GM Menu > Dungeon Treasures
	Added spawn regions for dungeon treasure chests in the following areas:
		Covetous, Deceit, Despise, Destard, Fire, Hythloth, Ice, Shame, Wrong, Yew Crypts, Daemon Temple, Trinsic Passage, Cove Orc Fort, Terathan Keep, Vesper Bank, Trinsic Bank
	Updated Lockpicking skill to check for the existence of skill difficulty on locks, and use those to perform skill checks when attempting to pick those locks. Difficulty on a lock can be setup using the morey property using this syntax:
		morey=[0x00] [0x00/0x01] [0x##] [0x##] // the first part is unused, the second is used with Unlock spell, the third and fourth are the minimum skill to unlock and the max skill that can be gained from picking the lock
	Updated Unlock spell to check for existence of morey property value on lock. If there's a value, and the second part of the value is not 0x01, Unlock cannot be used to unlock the lock. By default, dungeon treasure containers level 1 and 2 are unlockable with the Unlock spell, while levels 3 and 4 are not, and require Lockpicking skill to unlock.
	Fixed an issue where player characters would "skip a step" when moving under certain circumstances (like coming out of hiding)
	Added new decorations in default world templates for the following areas:
		Covetous, Deceit, Despise, Destard, Fire, Hythloth, Ice, Shame, Wrong, Hedge Maze, Wind (city), Terathan Keep, Orc Caves, Ilshenar facet, Ilshenar dungeons
	Updated decorations in default world templates for the following areas:
		All cities in Britannia and the Lost Lands
	Updated decorations in default world templates to address issues like missing water/swamp tiles, floor/roof tiles, etc. in various places
	Added special behaviours in some areas:
		Lever puzzle in Covetous
		Monster-spawning brazier in Deceit
		Switch/portcullis behaviour in Hedge Maze
	Updated teleport.scp with teleport locations for:
		Hedge maze, Hythloth lvl 2 teleport maze, Wrong dungeon, Buccaneer's Den to/from mainland, various Ilshenar teleport locations
	Players flagged as criminals or non-innocent aggressors in PvP combat can no longer use public moongates
	Pets will now teleport along with the player both when using moongates (public or spell-based), recall, object-based teleporters or hard-defined teleport locations from teleport.scp
-= Ho Eyo He Hum =-
Locked