[INFO] Changelog for next version (post 0.99.5a)
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
26/08/2022 - Xuri (0.99.5b-7)
Windows x64
Linux x64
Again, mac users, follow build instructions on GitHub and checkout the develop branch.
- Fixed a missing definition for GetStartTime JS function which would cause an error in the help menu script
- Tweaked some messages output to the UOX3 console during startup for improved clarity
Windows x64
Linux x64
Again, mac users, follow build instructions on GitHub and checkout the develop branch.
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
24/10/2022 - ldilley
- Fixed cPlayerAction.cpp case in source/CMakeLists.txt (was cplayeraction.cpp).
- Added FreeBSD build support for SpiderMonkey, zlib, and UOX3.
- Updated README.md with FreeBSD build instructions.
- Fixed a compile error due to NULL being defined as nullptr (non-int type) and not 0 (zero)
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
24/10/2022 - Xuri (0.99.6-RC1)
Misc cleanup and standardization of style and naming conventions in code and scripts
Added comments for all dictionary-based system messages in code for maintainability reasons
Fixed an issue where line of sight checks for dynamic items would fail
Fixed an issue where items being picked up by a player would not be added to the correct mapregion if bouncing back to its original location when dropped
Fixed an issue where NPC spellcasters would damage/kill themselves by attempting to cast Mind Blast at their target. Now they'll only cast this if they're actually smarter than their target
Fixed an issue where NPC spellcasters would damage and kill members of their own species/ai/race via AoE spells
Fixed an issue where the max spellcast range defined in UOX.INI was off for NPCs by 1 tile
Added spoken words of power for spells cast by human NPCs
Fixed an exploit with the Dispel Field spell
Admins and GMs are no longer dispellable...
Fixed a bug where spell effects would get stuck on caster if they cast a spell with a moving effect at themselves
Added two new NPC AI types that can be used for NPCs that are primarily casters:
AI_CASTER (10) // Same as AI_FIGHTER (5), but will try to stay at casting range
AI_EVIL_CASTER (11) // Same as AI_EVIL (2), but will try to stay at casting range
Changed the NPCAI tags of some NPCs from 5 to 10 and from 2 to 11
Added some visual flair to let NPCs play idle/fidget animations from time to time
Added some visual flair to let NPCs play casting animations when using magic spells
Added support for new tags in creatures.dfn to define some animation behaviour for non-player creatures in combat (ANTIBLINK tag no longer needed):
ANIM_CASTAREA=#,frameCount // Animation to use when casting area-targeted spells
ANIM_CASTTARGET=#,frameCount // Animation to use when casting target-based spells
ANIM_ATTACK1=#,frameCount // First attack animation
ANIM_ATTACK2=#,frameCount // (optional) Second attack animation
ANIM_ATTACK3=#,frameCount // (optional) Third attack animation
Updated creatures.dfn with entries for all known creatures in the UO client, as well as icons, sounds and combat/casting animations for all of those.
Fixed an issue with creature DFN setup for Elf ghosts which prevented paperdoll context menu from working
Added new JS Events:
onCarveCorpse( pUser, iCorpse ) // Triggers for iCorpse when being carved by pUser
onFacetChange( mChar, oldFacet, newFacet ) // Triggers for character when moving between facets
onDyeTarget( pUser, dyeTub, targItem ) // Triggers for dyeTub when player tries dying an item
Added new JS Functions to create houses (from house.dfn) and base multis (using raw multi IDs):
CreateHouse( houseID, x, y, z, worldNum, instanceID );
CreateBaseMulti( multiID, x, y, z, worldNum, instanceID );
Added new JS Character/Item Method:
.HasScriptTrigger( scriptID ) // Returns true if script with scriptID is present on object
Added new JS commands for GMs in js/commands/custom/misc-cmd.js
'addhouse houseID // Add house from house.dfn at target location
'addmulti multiID // Add base multi from client multi files at target location
Added new INI settings:
SHOWRACEWITHNAME=1 // If enabled, shows a character's race along with their name. Defaults to 1
SHOWITEMRESISTSTATS=0/1 // If enabled, shows item resistance stats in item tooltip. Defaults to 0
SHOWWEAPONDAMAGETYPES=1/0 // If enabled, shows weapon damage types in item tooltip. Defaults to 1
CASTSPELLSWHILEMOVING=0/1 // If enabled, players can cast spells while moving, without having to stop
SHOWREPUTATIONTITLEINTOOLTIP=1/0 // If enabled, shows player's reputation title in tooltip. Defaults to 1
SHOWGUILDINFOINTOOLTIP=1/0 // If enabled, shows player's guild info in tooltip. Defaults to 1
SHOWRACEINPAPERDOLL=1/0 // If enabled, shows a character's race in the paperdoll. Defaults to 1
SHOWNPCTITLESINTOOLTIPS=1/0 // If enabled, shows NPC titles in tooltip. Defaults to 1
Renamed 0xf1_connectUOServerPoll.js to 0xf1_freeshardServerPoll.js, and updated script to respond to the "standard" freeshard server poll request rather than the more specific (and now dead) ConnectUO one.
Renamed INI setting CUOENABLED to FREESHARDSERVERPOLL
Added new INI settings under [expansion settings] section to help shard admins customize some key behaviours of their shard, based on their preferred "era" of UO. Note that a value of "core" means the setting inherits the chosen era from the CORESHARDERA setting:
CORESHARDERA=pub15
Defines the "core" era of the shard. Defaults to pub15 (Publish 15).
any - determines which Item/NPC DFNs gets loaded, based on tags like GETT2A, GETPUB15
uor or later - enables bonus hit chance for archery via ARCHERYHITBONUS setting
pub15 or earlier - final combat damage value reduced by half
ARMORCALCULATION=core
Defines era to base armor calculations on
pub15 or earlier - different armor pieces contribute different percentage of the total Armor Rating
aos or later - each armor piece contribute to sum total of Physical Resistance, and other elemental resistance stats
STRENGTHDAMAGEBONUS=core
Defines era to base strength damage bonus on
uor or earlier - 20% damage bonus based on strength, capped at 200 strength
td or later - 35% damage bonus based on strength if 100 strength or more, otherwise 30% damage bonus
TACTICSDAMAGEBONUS=core
Defines era to base tactics damage bonus on
pub15 or earlier - bonus = Tactics skill + 50
aos or later - 68.75% damage bonus if GM Tactics, 62.5% bonus if below
ANATOMYDAMAGEBONUS=core
Defines era to base anatomy damage bonus on
uor or earlier - bonus = Anatomy / 5 vs NPCs, Anatomy / 2.5 vs Players
td or later - 30% damage bonus at GM anatomy, up to 20% below GM
ml or later - 50% + 5 damage bonus at GM anatomy, up to 50% below GM
LUMBERJACKDAMAGEBONUS=core
Defines era to base lumberjacking damage bonus on
uor or earlier - 35% damage bonus at GM skill, up to 25% below GM
td or later - 30% damage bonus at GM skill, up to 20% below GM
hs or later - 10% chance of 100% damage bonus
RACIALDAMAGEBONUS=core
Defines era to base racial damage bonus on
sa or later - Gargoyles gain +15% damage bonus per each 20 HP lost
DAMAGEBONUSCAP=core
Defines era to base damage bonus cap on
pub15 or earlier - No cap on damage bonus multiplier
aos or later - Total damage bonus multiplier capped at 300% higher than base damage
SHIELDPARRY=core
Defines era to base shield parry calculations on
t2a - chance to block is parryskill / 2. shield absorbs damage equivalent of AR/2 for melee, or equivalent of AR for archery
uor to pub15 - higher AR equals lower block chance, but more damage absorbed.
aos or later - chance to block dependent on parry skill vs bushido skill, with dex modifier
WEAPONPARRY=core
Defines era to base weapon parry calculations on
aos or later - chance to parry with weapon based on parry skill and bushido skill, with a dex modifier, 16.6% chance weapon will take damage from parrying
ml or later - chance to parry with weapon based on parry skill and bushido skill, with a dex modifier, 5% chance weapon will take damage from parrying, or 75% if opponent has mace
WRESTLINGPARRY=core
Defines era to base wrestling parry calculations on
tol or later - From 12.5% chance (at GM wrestling, increases with higher skill) that an NPC will parry an attack
COMBATHITCHANCE=core
Defines era to base combat hit chance calculations on
t2a to pub15 - hit chance based on attacker's skill vs defender's skill. No minimum chance to hit
uor to pub15 - Additional bonus hit chance for archery
aos to tol - hit chance based on attacker's skill (and hit chance increase) vs defender's skill (and defense chance increase). Minimum 2% chance to hit
Supported era values:
t2a, uor, td, lbr, pub15, aos, se, ml, sa, hs, tol and core (inherits era defined in CORESHARDERA)
Added (optional) new Item/NPC DFN tags to help determine which variants of Items/NPCs to load from DFNs, based on chosen era in CORESHARDERA setting:
GETT2A=<sectionID> // Inherit DFN section if core shard era is The Second Age
GETTD=<sectionID> // Inherit DFN section if core shard era is Third Dawn
GETUOR=<sectionID> // Inherit DFN section if core shard era is UO Renaissance
GETLBR=<sectionID> // Inherit DFN section if core shard era is Lord Blackthorn's Revenge
GETPUB15=<sectionID> // Inherit DFN section if core shard era is Pub15
GETAOS=<sectionID> // Inherit DFN section if core shard era is Age of Shadows
GETSE=<sectionID> // Inherit DFN section if core shard era is Samurai Empire
GETML=<sectionID> // Inherit DFN section if core shard era is Mondain's Legacy
GETSA=<sectionID> // Inherit DFN section if core shard era is Stygian Abyss
GETTOL=<sectionID> // Inherit DFN section if core shard era is Time of Legends
Added new Item/Character DFN tags that provide defensive bonuses on top of existing DEF/ELEMENTALRESIST values:
DEFBONUS=minVal [maxVal] // Def/Physical resistance bonus (maxVal optional)
ERBONUS=heat cold energy poison // Elemental resistance bonus
Crafted armor made from coloured ingots now provide additional defensive bonuses based on color of ingots (for AoS/ToL variant of items)
Fixed a bug where players not a member of a guild could still interact with the guildstone of said guild
Guild masters can no longer dismiss themselves from their own guild; if they want to leave they'll have to resign
Fixed a bug where cancelling text input for various guild functions could blank out the guild name, abbreviation, guildmaster title, charter or website
Fixed a bug where guild abbreviations (and titles) would show when turned off, and would not show when turned on
Added guild master ability to grant guild titles to targeted guild members
Added system message feedback various guild interactions, including: inviting players to join, swearing fealty, declaring war, entering alliances, granting titles
Added support for showing guild titles and guild names in character tooltips
Guild titles, names and abbreviations are now hidden for players who are incognito
Players invited to join a guild by the Guild Master directly will now automatically be accepted into the guild
Fixed a potential null-reference exception related to moving Townstones
Fixed a bug where adding or removing friends for a pet would not properly inform the involved players
Traps in dungeons will now only trigger for player characters, and will ignore all NPCs
Tweaked HTML templates for server status pages; shard name shown more prominently, names of GMs/Counselors hidden from regular player list, information on UOX3 build version hidden in player-facing pages, and a few other small adjustments
Fixed an issue with archery butte script (js/item/archerybutte.js) where chance of hitting a bullseye was not calculated correctly
UOX3 now responds correctly to logout requests from the client
Fixed reagent requirements for inscribing Explosion spell (thanks, Azzerhoden Razeri)
Removed redundant VALUE tags from JewlerShopping shoplist (thanks, Azzerhoden Razeri)
Reduced combat hit message spam by increasing the lower damage threshold for when they can show up
Added NPC definitions for savage shaman, savage warrior (male and female) and savage rider in dfndata/npc/savages.dfn.
Added special AI scripts for savages and savage shamans, to handle their special abilities
Added tribal paint consumable item (dfndata/items/misc/consumables.dfn)
Added ability to cook tribal paint via flour and tribal berries (js/skill/cooking/flour.js)
Added some helper scripts for magic:
js/magic/helper/check_resist.js (6000) // Test target's resist versus caster and spell circle
js/magic/helper/calc_final_spell_damage.js (6001) // Calculate spell damage from provided base damage
Added a timer-related script that can be used to keep track of long-term timers (up to 49 days) on objects, and which will remove itself from the object when there are no more active timers left. Currently used to keep track of tribal paint applied to players:
js/server/timer/long_term_timers.js (3)
Fixed an issue where player backpacks did not have a max weight set, which could cause issues for scripts that relied on checking max weight of backpack to work
Added new UOX.INI settings to let shard admins control the maximum weight that player backpacks and bankboxes can hold:
MAXPLAYERPACKWEIGHT=40000 // 400.00 stones by default
MAXPLAYERBANKWEIGHT=160000 // 1600.00 stones by default
Fixed an issue where spells setup in JS did not correctly consume reagents when cast (thanks, Azzerhoden Razeri)
Fixed a bug where casting spells would sometimes leave the player in a "frozen" state client-side
Fixed a bug where RECALL=1 was missing from town of Vesper in regions.dfn
Fixed an issue where runebooks did not keep correct count of runes added/dropped (thanks, Azzerhoden Razeri, Dragon Slayer
Fixed an issue where the runebook script would crash because of a misspelled object variable (thanks, Azzerhoden Razeri)
Added missing spell scrolls to the MageShopping shoplist
Added new property for Items and NPCs loaded from DFNs (also available as a JS object property):
sectionID // Keeps track of the [sectionID] an item or NPC originated from
Added support for getting/setting new sectionID property via 'get and 'set commands
Exposed Character properties to JS engine:
.fleeAt // Percentage health threshold for NPC fleeing in combat
.reAttackAt // Percentage health threshold for NPC re-attacking in combat if fleeing
Added new character timer (also available in JS engine) for time between each time a character plays an idle animation
Added 'move as an alias command for 'telestuff (js/commands/targeting/tele.js)
Fixed missing socket reference in bankcheck.js
Added missing tribal paint (js/item/tribal_paint.js), spear (js/item/tribal_spear.js) and bola (js/npc/special/bola_ability.js) scripts
Updated js/item/oilcloth.js to support wiping away tribal paint from the player
Updated js/npc/ai/monster/orc.js AI script to make sure owners of pets attacking the orc will get their orcish kin masks destroyed
Players can no longer use Polymorph spell while incognitoed, or while under effect of tribal paint
Players can no longer use Incognito spell while polymorphed, or while under effect of tribal paint
Facial hair is now removed from players who are under the effects of Incognito spell that changes their gender for female
Expanded the amount of possible house entries in dfndata/house/house.dfn from 255 to 65535
Added comments for all dictionary-based system messages in code for maintainability reasons
Fixed an issue where line of sight checks for dynamic items would fail
Fixed an issue where items being picked up by a player would not be added to the correct mapregion if bouncing back to its original location when dropped
Fixed an issue where NPC spellcasters would damage/kill themselves by attempting to cast Mind Blast at their target. Now they'll only cast this if they're actually smarter than their target
Fixed an issue where NPC spellcasters would damage and kill members of their own species/ai/race via AoE spells
Fixed an issue where the max spellcast range defined in UOX.INI was off for NPCs by 1 tile
Added spoken words of power for spells cast by human NPCs
Fixed an exploit with the Dispel Field spell
Admins and GMs are no longer dispellable...
Fixed a bug where spell effects would get stuck on caster if they cast a spell with a moving effect at themselves
Added two new NPC AI types that can be used for NPCs that are primarily casters:
AI_CASTER (10) // Same as AI_FIGHTER (5), but will try to stay at casting range
AI_EVIL_CASTER (11) // Same as AI_EVIL (2), but will try to stay at casting range
Changed the NPCAI tags of some NPCs from 5 to 10 and from 2 to 11
Added some visual flair to let NPCs play idle/fidget animations from time to time
Added some visual flair to let NPCs play casting animations when using magic spells
Added support for new tags in creatures.dfn to define some animation behaviour for non-player creatures in combat (ANTIBLINK tag no longer needed):
ANIM_CASTAREA=#,frameCount // Animation to use when casting area-targeted spells
ANIM_CASTTARGET=#,frameCount // Animation to use when casting target-based spells
ANIM_ATTACK1=#,frameCount // First attack animation
ANIM_ATTACK2=#,frameCount // (optional) Second attack animation
ANIM_ATTACK3=#,frameCount // (optional) Third attack animation
Updated creatures.dfn with entries for all known creatures in the UO client, as well as icons, sounds and combat/casting animations for all of those.
Fixed an issue with creature DFN setup for Elf ghosts which prevented paperdoll context menu from working
Added new JS Events:
onCarveCorpse( pUser, iCorpse ) // Triggers for iCorpse when being carved by pUser
onFacetChange( mChar, oldFacet, newFacet ) // Triggers for character when moving between facets
onDyeTarget( pUser, dyeTub, targItem ) // Triggers for dyeTub when player tries dying an item
Added new JS Functions to create houses (from house.dfn) and base multis (using raw multi IDs):
CreateHouse( houseID, x, y, z, worldNum, instanceID );
CreateBaseMulti( multiID, x, y, z, worldNum, instanceID );
Added new JS Character/Item Method:
.HasScriptTrigger( scriptID ) // Returns true if script with scriptID is present on object
Added new JS commands for GMs in js/commands/custom/misc-cmd.js
'addhouse houseID // Add house from house.dfn at target location
'addmulti multiID // Add base multi from client multi files at target location
Added new INI settings:
SHOWRACEWITHNAME=1 // If enabled, shows a character's race along with their name. Defaults to 1
SHOWITEMRESISTSTATS=0/1 // If enabled, shows item resistance stats in item tooltip. Defaults to 0
SHOWWEAPONDAMAGETYPES=1/0 // If enabled, shows weapon damage types in item tooltip. Defaults to 1
CASTSPELLSWHILEMOVING=0/1 // If enabled, players can cast spells while moving, without having to stop
SHOWREPUTATIONTITLEINTOOLTIP=1/0 // If enabled, shows player's reputation title in tooltip. Defaults to 1
SHOWGUILDINFOINTOOLTIP=1/0 // If enabled, shows player's guild info in tooltip. Defaults to 1
SHOWRACEINPAPERDOLL=1/0 // If enabled, shows a character's race in the paperdoll. Defaults to 1
SHOWNPCTITLESINTOOLTIPS=1/0 // If enabled, shows NPC titles in tooltip. Defaults to 1
Renamed 0xf1_connectUOServerPoll.js to 0xf1_freeshardServerPoll.js, and updated script to respond to the "standard" freeshard server poll request rather than the more specific (and now dead) ConnectUO one.
Renamed INI setting CUOENABLED to FREESHARDSERVERPOLL
Added new INI settings under [expansion settings] section to help shard admins customize some key behaviours of their shard, based on their preferred "era" of UO. Note that a value of "core" means the setting inherits the chosen era from the CORESHARDERA setting:
CORESHARDERA=pub15
Defines the "core" era of the shard. Defaults to pub15 (Publish 15).
any - determines which Item/NPC DFNs gets loaded, based on tags like GETT2A, GETPUB15
uor or later - enables bonus hit chance for archery via ARCHERYHITBONUS setting
pub15 or earlier - final combat damage value reduced by half
ARMORCALCULATION=core
Defines era to base armor calculations on
pub15 or earlier - different armor pieces contribute different percentage of the total Armor Rating
aos or later - each armor piece contribute to sum total of Physical Resistance, and other elemental resistance stats
STRENGTHDAMAGEBONUS=core
Defines era to base strength damage bonus on
uor or earlier - 20% damage bonus based on strength, capped at 200 strength
td or later - 35% damage bonus based on strength if 100 strength or more, otherwise 30% damage bonus
TACTICSDAMAGEBONUS=core
Defines era to base tactics damage bonus on
pub15 or earlier - bonus = Tactics skill + 50
aos or later - 68.75% damage bonus if GM Tactics, 62.5% bonus if below
ANATOMYDAMAGEBONUS=core
Defines era to base anatomy damage bonus on
uor or earlier - bonus = Anatomy / 5 vs NPCs, Anatomy / 2.5 vs Players
td or later - 30% damage bonus at GM anatomy, up to 20% below GM
ml or later - 50% + 5 damage bonus at GM anatomy, up to 50% below GM
LUMBERJACKDAMAGEBONUS=core
Defines era to base lumberjacking damage bonus on
uor or earlier - 35% damage bonus at GM skill, up to 25% below GM
td or later - 30% damage bonus at GM skill, up to 20% below GM
hs or later - 10% chance of 100% damage bonus
RACIALDAMAGEBONUS=core
Defines era to base racial damage bonus on
sa or later - Gargoyles gain +15% damage bonus per each 20 HP lost
DAMAGEBONUSCAP=core
Defines era to base damage bonus cap on
pub15 or earlier - No cap on damage bonus multiplier
aos or later - Total damage bonus multiplier capped at 300% higher than base damage
SHIELDPARRY=core
Defines era to base shield parry calculations on
t2a - chance to block is parryskill / 2. shield absorbs damage equivalent of AR/2 for melee, or equivalent of AR for archery
uor to pub15 - higher AR equals lower block chance, but more damage absorbed.
aos or later - chance to block dependent on parry skill vs bushido skill, with dex modifier
WEAPONPARRY=core
Defines era to base weapon parry calculations on
aos or later - chance to parry with weapon based on parry skill and bushido skill, with a dex modifier, 16.6% chance weapon will take damage from parrying
ml or later - chance to parry with weapon based on parry skill and bushido skill, with a dex modifier, 5% chance weapon will take damage from parrying, or 75% if opponent has mace
WRESTLINGPARRY=core
Defines era to base wrestling parry calculations on
tol or later - From 12.5% chance (at GM wrestling, increases with higher skill) that an NPC will parry an attack
COMBATHITCHANCE=core
Defines era to base combat hit chance calculations on
t2a to pub15 - hit chance based on attacker's skill vs defender's skill. No minimum chance to hit
uor to pub15 - Additional bonus hit chance for archery
aos to tol - hit chance based on attacker's skill (and hit chance increase) vs defender's skill (and defense chance increase). Minimum 2% chance to hit
Supported era values:
t2a, uor, td, lbr, pub15, aos, se, ml, sa, hs, tol and core (inherits era defined in CORESHARDERA)
Added (optional) new Item/NPC DFN tags to help determine which variants of Items/NPCs to load from DFNs, based on chosen era in CORESHARDERA setting:
GETT2A=<sectionID> // Inherit DFN section if core shard era is The Second Age
GETTD=<sectionID> // Inherit DFN section if core shard era is Third Dawn
GETUOR=<sectionID> // Inherit DFN section if core shard era is UO Renaissance
GETLBR=<sectionID> // Inherit DFN section if core shard era is Lord Blackthorn's Revenge
GETPUB15=<sectionID> // Inherit DFN section if core shard era is Pub15
GETAOS=<sectionID> // Inherit DFN section if core shard era is Age of Shadows
GETSE=<sectionID> // Inherit DFN section if core shard era is Samurai Empire
GETML=<sectionID> // Inherit DFN section if core shard era is Mondain's Legacy
GETSA=<sectionID> // Inherit DFN section if core shard era is Stygian Abyss
GETTOL=<sectionID> // Inherit DFN section if core shard era is Time of Legends
Added new Item/Character DFN tags that provide defensive bonuses on top of existing DEF/ELEMENTALRESIST values:
DEFBONUS=minVal [maxVal] // Def/Physical resistance bonus (maxVal optional)
ERBONUS=heat cold energy poison // Elemental resistance bonus
Crafted armor made from coloured ingots now provide additional defensive bonuses based on color of ingots (for AoS/ToL variant of items)
Fixed a bug where players not a member of a guild could still interact with the guildstone of said guild
Guild masters can no longer dismiss themselves from their own guild; if they want to leave they'll have to resign
Fixed a bug where cancelling text input for various guild functions could blank out the guild name, abbreviation, guildmaster title, charter or website
Fixed a bug where guild abbreviations (and titles) would show when turned off, and would not show when turned on
Added guild master ability to grant guild titles to targeted guild members
Added system message feedback various guild interactions, including: inviting players to join, swearing fealty, declaring war, entering alliances, granting titles
Added support for showing guild titles and guild names in character tooltips
Guild titles, names and abbreviations are now hidden for players who are incognito
Players invited to join a guild by the Guild Master directly will now automatically be accepted into the guild
Fixed a potential null-reference exception related to moving Townstones
Fixed a bug where adding or removing friends for a pet would not properly inform the involved players
Traps in dungeons will now only trigger for player characters, and will ignore all NPCs
Tweaked HTML templates for server status pages; shard name shown more prominently, names of GMs/Counselors hidden from regular player list, information on UOX3 build version hidden in player-facing pages, and a few other small adjustments
Fixed an issue with archery butte script (js/item/archerybutte.js) where chance of hitting a bullseye was not calculated correctly
UOX3 now responds correctly to logout requests from the client
Fixed reagent requirements for inscribing Explosion spell (thanks, Azzerhoden Razeri)
Removed redundant VALUE tags from JewlerShopping shoplist (thanks, Azzerhoden Razeri)
Reduced combat hit message spam by increasing the lower damage threshold for when they can show up
Added NPC definitions for savage shaman, savage warrior (male and female) and savage rider in dfndata/npc/savages.dfn.
Added special AI scripts for savages and savage shamans, to handle their special abilities
Added tribal paint consumable item (dfndata/items/misc/consumables.dfn)
Added ability to cook tribal paint via flour and tribal berries (js/skill/cooking/flour.js)
Added some helper scripts for magic:
js/magic/helper/check_resist.js (6000) // Test target's resist versus caster and spell circle
js/magic/helper/calc_final_spell_damage.js (6001) // Calculate spell damage from provided base damage
Added a timer-related script that can be used to keep track of long-term timers (up to 49 days) on objects, and which will remove itself from the object when there are no more active timers left. Currently used to keep track of tribal paint applied to players:
js/server/timer/long_term_timers.js (3)
Fixed an issue where player backpacks did not have a max weight set, which could cause issues for scripts that relied on checking max weight of backpack to work
Added new UOX.INI settings to let shard admins control the maximum weight that player backpacks and bankboxes can hold:
MAXPLAYERPACKWEIGHT=40000 // 400.00 stones by default
MAXPLAYERBANKWEIGHT=160000 // 1600.00 stones by default
Fixed an issue where spells setup in JS did not correctly consume reagents when cast (thanks, Azzerhoden Razeri)
Fixed a bug where casting spells would sometimes leave the player in a "frozen" state client-side
Fixed a bug where RECALL=1 was missing from town of Vesper in regions.dfn
Fixed an issue where runebooks did not keep correct count of runes added/dropped (thanks, Azzerhoden Razeri, Dragon Slayer
Fixed an issue where the runebook script would crash because of a misspelled object variable (thanks, Azzerhoden Razeri)
Added missing spell scrolls to the MageShopping shoplist
Added new property for Items and NPCs loaded from DFNs (also available as a JS object property):
sectionID // Keeps track of the [sectionID] an item or NPC originated from
Added support for getting/setting new sectionID property via 'get and 'set commands
Exposed Character properties to JS engine:
.fleeAt // Percentage health threshold for NPC fleeing in combat
.reAttackAt // Percentage health threshold for NPC re-attacking in combat if fleeing
Added new character timer (also available in JS engine) for time between each time a character plays an idle animation
Added 'move as an alias command for 'telestuff (js/commands/targeting/tele.js)
Fixed missing socket reference in bankcheck.js
Added missing tribal paint (js/item/tribal_paint.js), spear (js/item/tribal_spear.js) and bola (js/npc/special/bola_ability.js) scripts
Updated js/item/oilcloth.js to support wiping away tribal paint from the player
Updated js/npc/ai/monster/orc.js AI script to make sure owners of pets attacking the orc will get their orcish kin masks destroyed
Players can no longer use Polymorph spell while incognitoed, or while under effect of tribal paint
Players can no longer use Incognito spell while polymorphed, or while under effect of tribal paint
Facial hair is now removed from players who are under the effects of Incognito spell that changes their gender for female
Expanded the amount of possible house entries in dfndata/house/house.dfn from 255 to 65535
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
27/10/2022 - Xuri
- Fixed an issue with onDyeTarget event where the dyetub and target object parameters were not set properly
- Fixed some incorrect casting animation-related variable assignments for AI_HEALER and AI_EVIL_HEALER
- Fixed an issue with pets not going wild from lack of loyalty to their owners when at zero loyalty
- Addressed issues with idle/fidget animation setup that could cause NPCs to blink out of existence
- Removed stray semicolon behind control statement related to triggering of OnFacetChange JS event
- Fixed an issue with Bless spell when cast from item
- Some minor code cleanup
- Added aliases in item definitions for containers
- Consolidated all light item scripts into one, with options for auto-lights (lampposts) based on environment brightness level and more
- Removed old light scripts (Xuri)
- Updated consolidated lights.js script to handle custom dir values on lights, modified source of sound effects when turning lights on/off and made a few other minor adjustments (Xuri)
- Revamped region spawn system
- Added some code to assist with preventing/debugging houses potentially decaying
- Fixed an issue with freeshard server poll script, which attempted to fetch wrong ini setting
- Fixed a server crash related to applying invalid prices for player vendor items
- Neglecting to give item in player vendor pack a description now defaults to item name
- Items in player vendor packs are now refreshed properly when players update price and name
- Players can no longer issue pet control commands to player vendors via context menus
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
30/10/2022 - Xuri
- Player vendors in existing houses no longer teleport to new houses placed by owner nearby
- Fixed script issue with demolishing house with player vendors in them
- Fixed an issue where setting prices for items on player vendors would permanently overwrite the buy-value of the item. Player vendor prices are now stored as a separate property (but saved as part of the VALUE tag), also accessible by the following JS Item property:
.vendorPrice - Item description and vendor price are now cleared from items bought from player vendors
- Tooltips for items with new descriptions or vendor prices in player vendor backpacks are now correctly updated
- Only books, keyrings and unlocked containers can now be marked 'Not for Sale' in a player vendor's main/root backpack
- Any items on player vendors can now be marked as 'Not for Sale' if placed within a container that has a price tag
- Added additional feedback messages to players for various interactions with player vendors
- Fixed a bug where player vendors would lose loyalty and 'go wild' like pets when not fed regularly
- Split up some of the longer item lists in the 'add menu to prevent freezes on original 2D client
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
1/11/2022 - Xuri
- Base multis created with CreateBaseMulti() JS function or BuildBaseMulti() C++ function no longer require valid 'house/boat' locations to spawn
- Fixed an issue where no reagents were consumed when casting recall/gate spells via spell icons in runebooks (js/item/runebook.js)
- Spawn Regions will now more accurately spawn objects near desired heights supplied via PREFZ tags. Using PREFZ=20 will attempt to spawn NPCs on the second floor of a building with ground level at Z 0, for instance.
- Added a new DFN tag usable in Spawn Regions to define a definite Z level at which to attempt to spawn objects (skips some steps in the process and assumes the defined Z is a valid Z):
DEFZ=# // Defines a definite Z level to attempt to spawn an object at - Updated banker AI script (js/npc/ai/banker.js) with some extra validation checks, system messages and to take max weight capacity of bankbox into account
- The sectionID property of NPCs are now transferred to their corpses upon death, to make it easier to identify in scripts from which NPC a corpse really originated
- Updated spawn regions in Yew with NPCs for Empath Abbey
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
06/11/2022 - Dragon Slayer/Xuri
- Implemented Taxidermy Kits for creating trophy house addons (Dragon Slayer)
- Fixed an issue related to open doors in houses that would prevent the placement of house-addons because of an incorrect distance check (Xuri)
- Fixed an issue with placement of house addons that would allow them to be placed in locations blocked either by other items or by parts of the multi itself (such as walls) (Xuri)
- Added item definition (misc/consumables.dfn), JS script (item/hairdye.js) and dictionary entries for hair dye
- Added hair dyes (and tribal paint) to new consumables menu in add-menu (Xuri)
- Cleaned up hair dye script based on style guidelines, addressed a few issues (Xuri)
- Removed hard-coded hairdye functionality (Xuri)
- Added item definition (in misc/consumables.dfn), JS script (item/bearddye.js) and dictionary entries for hair dye
- Combined hair and beard dye scripts into one, since they shared most code (Xuri)
- Added dyes to alchemist shoplist (items/shoplist.dfn) (Xuri)
- Removed old hair dye menu from legacy gump DFN (dfndata/misc/gumps.dfn) (Xuri)
- Selling items to NPC shopkeepers now relies on sectionID of items instead of their ID/Type/Morex values (Xuri)
- Tinkerers can now craft Fletching Tools (Dragon Slayer)
- Added hair-only and beard-only variants of hair dyes
- Added hair stylist vendors that sell all types of dye
- When buying items from NPC shopkeepers where the total cost is higher than the buy threshold set in uox.ini, UOX3 will now check the player's bankbox for gold first, then their backpack second, instead of just failing outright if bank didn't have the required amount
- Minor cleanup of some UO era-specific code for better maintainability
- Adjusted default light-settings in UOX.INI:
- DUNGEONLIGHTLEVEL changed from 3 to 15
- WORLDDARKLEVEL changed from 5 to 12
- Added special hair dyes
- Updated item menu in dfndata/items/ItemMenu.bulk.dfn with dyes (Xuri)
- Added hairstylist NPC alias to dfndata/npc/vendors.dfn (Xuri)
- Implemented potion kegs; these can be crafted by carpenters/tinkerers, and can be used to store potions at a fraction of their original weight (Dragon Slayer)
- Only the owner (if locked down), the current holder (if in backpack) or someone who have previously taste identified a potion keg may add additional potions to it (Xuri)
- Potions dropped from monsters and bought from stores are unidentified by default, but can be identified by players using the taste identification skill. (Xuri)
- Potions crafted by players are identified by default for all to see (Xuri)
- Releasing locked down items in houses now set the items as movable (1) instead of client default (0) (Xuri)
- Added socket as another parameter to the onToolTip JS event
- Fixed many compile-time warnings (closes Fix compile warnings #131).
- Clang and GCC builds were both successful and completely clean using -Wall, -Wextra, and -Werror. The following various problems were corrected:
- Fix reasonable warnings reported by MSVC using /W4 /W3 /D_CRT_SECURE_NO_WARNINGS.
- Returning final without virtual
- Comparison of values with differing signedness
- Assignment order
- memset() expecting a multiple of a data type
- A plethora of unused variables (commented or voided)
- Comparisons always resulting in true
- Failure to initialize missing members
- Static methods (inlined)
- Instances of case fallthrough (denoted)
- Incompatible casts
- Mismatching macros/methods requiring variable number of arguments
- Bit shifting in bool contexts
- Inappropriate pointer use
- Potentially incorrect initialization of class/struct instances using memcpy()/memset()
- Removed some instances of extraneous spaces/tabs.
- Added some validation checks for attacker object in onDamage JS event in several scripts
- Enabled onSellToVendor, onSoldToVendor, onBuyFromVendor and onBoughtFromVendor JS events to also run if attached to NPCs
- Disabled location check for 'addmulti command
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
03/12/2022 - ldilley
- Comment line in jsconfig.mk that attempts to cat a non-existent Version file. This causes an error otherwise during the SpiderMonkey build.
- Initialize totalPlayerGold in vendor.cpp.
- Flag unused variable in gumps.cpp.
- Update README.md to include references to FreeBSD and also alter the command (libtool instead of ar) used to generate the JavaScript library on macOS.
- Improve automake.sh.
- GM and Counselors can now go though the wind teleporter
- Updated .ResourceCount() and .UseResource() JS Object Methods to include optional parameter for sectionId. New supported syntax:
- int ResourceCount( realId, colour )
- int ResourceCount( realId, colour, moreVal )
- int ResourceCount( realId, colour, moreVal, sectionId )
- int UseResource( amount, realItemId )
- int UseResource( amount, realItemId, colour )
- int UseResource( amount, realItemId, colour, moreVal )
- int UseResource( amount, realItemId, colour, moreVal, sectionId )
- Fixed an issue where the bit flag for the HirelingCombatTraining setting was not set properly
- Fixed an issue in SpiderMonkey VS project that prevented compiling a x64 debug build (thanks, punt!)
- Some minor cleanup
- Replaced orc Spawns with Savages in T2A orc fort. this would bring the spawns up to date with LBR.
- Added support for a SCRIPT tag in ore definitions in dfndata/skills/skills.dfn, which will be applied to any ore of that type that's mined
- When a player says "vendor buy" or "vendor sell", NPC shopkeepers (and related JS events) will now respond in priority of distance to the player
- CMake is now default build system on Linux/FreeBSD, and an alternative for Windows/macOS-users instead of VS/XCode, though the old GCC/Make build process is still intact (for now)
- Resource files (uox3.rc and uox3.ico) have been moved from UOX3/source to UOX3/assets
- Build/project-related files have been moved to /make/[buildsystem] sub-directories, for both UOX3 and sub-projects:
- UOX3/make/cmake
- UOX3/make/VS2017
- UOX3/make/VS2022
- UOX3/make/XCode
- spidermonkey/make/cmake
- spidermonkey/make/VS2017
- spidermonkey/make/VS2022
- spidermonkey/make/XCode
- zlib/make/cmake
- zlib/make/VS2017
- zlib/make/VS2022
- zlib/make/XCode
- CMake, VS2022 and XCode will compile sub-projects automatically when UOX3 is compiled, while VS2017 requires compiling sub-projects prior to UOX3
- automake.sh script (still in root of repository) now uses CMake instead of GCC/Make, and supports optional arguments for creating debug/clean builds
- Updated instructions on compiling UOX3 can be found on GitHub and/or in the UOX3 documentation
- Some redundant files have been deleted from the repository (like DLL folder and file)
- Code style guide added to UOX3/docs directory (styleguide.html)
- Updated GitHub workflows to use cmake for Linux and to ignore changes to .txt/.html/.sln/.vcxproj files for both Linux & Windows workflows
- Extended GetSpawnRegion JS Function to fetch spawn region reference based on a set of coordinates. Supported syntax are now:
- GetSpawnRegion( spawnRegionID )
- GetSpawnRegion( x, y, worldNum, instanceID )
- Added new DFN tags for Items and NPC:
- SECTIONID // Override which [sectionID] is stored for an object
- ORIGIN // Store reference to which expansion/era of UO an item/NPC originated in
- Added new Item/Character JS property:
- .origin // Get reference to expansion/era of UO an item/NPC originated in
- Fixed an issue with IsInBuilding JS Function which could only handled a limited subset of instance ID values
- Corrected name of tag used to attach scripts to ore types - from SCRIPTID to SCRIPT
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
04/03/2023 - Xuri (0.99.6-RC3)
- Updated Item DFNs with ORIGIN and SECTIONID tags for relevant items
- Added JS Function to make comparing eras (based on object origin or server settings) easier:
- EraStringToNum( eraString ) // Takes an era string (uo, t2a, uor, td, lbr, aos, etc) and returns an int
- Updated some JS scripts to use EraStringToNum() for era comparisons (potionkeg.js)
- Default CORESHARDERA setting is now LBR
- Removed PUB15 as a separate "era" - it's identical to late stage LBR anyway:
- Removed support for GETPUB15 tag
- Added support for GETUO tag for items/NPCs:
- GETUO=<sectionID> // Inherit DFN section if core shard era is Ultima Online (original release, before T2A)
- Rewrote portions of MsgBoardQuestEscortCreate() function in msgboard.cpp to ensure only escort regions within same world as NPC can be selected as destinations
- Increased maximum number of possible escort regions that can exist from 255 to 65535
- Added region definitions for all shrines in Britannia (Fel & Trammel), and marked them as valid destinations for NPC escorts (uox3/regions/regions.dfn)
- Moved bankers from vendor to human DFN files, and made them inherit basehuman instead of basevendor - since they are not vendors
- To address an issue with escorted NPCs not timing out and vanishing if they are left in a "dormant" area of the world with no player activity, the NPCs are marked as "always awake" the moment they arrive at their destination. Note that the uox.ini setting ALLOWAWAKENPCS needs to be enabled for this to work.
- Fixed an issue where spawnsection of spawners did not show up correctly in tweak menu
- Fixed an issue where the generic Orc AI script didn't have a return true at end of onDamage() event, which prevented all orcs from taking damage in combat (js/npc/ai/monster/orc.js)
- Moved Anatomy skill-check in healing script (js/skill/healing.js) from onCallback1() function to onTimer() to prevent the skill-check from being spammable
- Added mount ID for Frost Mite in creatures.dfn, allowing it to be used as mount
- Exposed the following character properties to JS engine, which can be used to view/adjust the permanent hair/beard options for a character:
- .hairStyle
- .hairColour
- .beardStyle
- .beardColour
- Updated 'kill hair, 'shavehair, 'shavebeard and 'remove commands to clear permanent hair/beard colour and style properties in addition to removing the item itself
- Added a GM override to let GMs place as many houses as they want (js/server/house/houseDeed.js)
- Fixed an issue where attempting to sell items to NPC shopkeepers could result in client crashing
- Added a new JS Event:
- onMultiLogout( iMulti, cPlayer ) // Handles players logging out while inside multis
- Updated house script (js/server/house/house.js) with onMultiLogout event, which allows owners (always) and co-owners/friends/guests (if option enabled in uox.ini) to safely log out inside the house (without getting booted).
- Added a "keyless" option for interacting with locked doors (js/item/doors.js) of player-owned houses, which lets owners/co-owners/friends/guests of a house use locked doors in the house without requiring a key in their backpack, if the options for that are enabled in UOX.INI. Enabled for owners/co-owners and friends by default (but not for guests)
- Note that if option to safely log out is enabled, but keyless option is NOT enabled, then the server will check if the player has a key to the house in their backpack, and eject them from the house upon logging out if not. This is to make sure players don't get stuck inside a house they can't get out of because they lack the rights to open doors etc.
- Added new UOX.INI options, under the [houses] section:
- SAFECOOWNERLOGOUT=1 // Allow co-owners to safely and instantly log out inside house
- SAFEFRIENDLOGOUT=1 // Allow friends to safely and instantly log out inside house
- SAFEGUESTLOGOUT=1 // Allow guests to safely and instantly log out inside house
- KEYLESSOWNERACCESS=1 // Allow owner of house to use locked doors in house without key in pack
- KEYLESSCOOWNERACCESS=1 // Allow co-owners of house to use locked doors in house without key in pack
- KEYLESSFRIENDACCESS=1 // Allow friends of house to use locked doors in house without key in pack
- KEYLESSGUESTACCESS=0 // Allow guests of house to use locked doors in house without key in pack
- Fixed NOHAIR tag from races.dfn not being loaded correctly
- Fixed an issue where houses could lose track of locked down items on server restart
- Fixed an issue where items could be accidentally dropped through the floor of houses/boats
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
10/03/2023 - Xuri
- Fixed an issue where EraStringToNum JS Function would return incorrect values and lead to unexpected behaviour
- Added some safeguards against server crashes in onNameRequest() and onTooltip() JS Events
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
17/03/2023 - Xuri
- Fixed an issue where casting Wall of Stone inside a multi would lead to the wall of stone never expiring, because it was not correctly marked as a field spell
- Reduced combat message spam; attacking messages now only appear when attacking targets who are not already fighting the attacker
- Added a new character state - "passive combat mode" - primarily used by players when they tab out of combat. Tabbing out of combat will prevent the character from retaliating in combat if they're already fighting someone
- Fixed several issues with dropping items through floors, tables and generally not being placed correctly when dropped inside multis
- Hard-defined the Z-level at which some jewellers in Britain spawn to deny them rooftop access (spawn_felucca_town_britain.dfn and spawn_trammel_town_britain.dfn)
- Added system messages informing shard staff with elevated command privileges why they are getting 100% skill check success, and no spellcast delay
- Created framework, gumps, initial system for Bulk Order Deeds (Dragon Slayer)
- Expanded BOD system to include gold, fame and special item rewards (Xuri)
- Added optional support for triggering BOD offers from shopkeepers via context menus (Xuri)
- Added new UOX.INI section with settings for Bulk Order System: (Xuri)
- OFFERBODSFROMITEMSALES=1 // If enabled, shopkeepers might offer BODs when players sell items to them
- OFFERBODSFROMCONTEXTMENU=0 // If enabled, shopkeepers might offer BODs via context menu option
- BODSFROMCRAFTEDITEMSONLY=0 // If enabled, only selling of crafted items will trigger BOD offers
- BODGOLDREWARDMULTIPLIER=1 // Reward multiplier for Gold given for completing a BODs - defaults to 1.0
- BODFAMEREWARDMULTIPLIER=1 // Reward multiplier for Fame given for completing a BOD - defaults to 1.0
- Updated smithing-related create DFNs (dfndata/create/*) with proper names for entries (Xuri)
- Added special BOD item rewards: (Xuri)
- Sturdy Pickaxe - More uses than normal pickaxes
- Sturdy Shovel - More uses than normal shovels
- Mining Gloves +1/+3/+5 - Boosts mining skill when equipped
- Runic Hammers - Adds bonuses to crafted weapons and armors, applied after crafting the items (js/skill/craft/crafting_complete.js)
- Colored Anvils - No unique property other than color, but can be added to houses as decoration/functional anvils
- Ancient Smithy Hammers +10/+15/+30/+60 - Boosts blacksmithy skill when equipped
- (Not fully implemented, AoS feature) Gargoyle's Pickaxe
- (Not fully implemented, AoS feature) Prospector's Tool
- (Not fully implemented, AoS feature) Powder of Temperament
- (Not fully implemented, AoS feature) Blacksmith Power Scrolls +5/+10/+15/+20
- Updated onMakeItem() JS event to always include the create entry ID as a parameter, even when crafting an item failed (Xuri)
-= Ho Eyo He Hum =-
- Xuri
- Site Admin
- Posts: 3704
- Joined: Mon Jun 02, 2003 9:11 am
- Location: Norway
- Has thanked: 48 times
- Been thanked: 8 times
- Contact:
21/05/2023 - Dragon Slayer, Xuri
- Added initial pass for supporting Trammel PvP ruleset, which can be applied to and/or customized per facet and optionally overridden per region via js/server/misc/facetRulset.js (Dragon Slayer)
- Misc script cleanup and extension of pvp ruleset script to include target handling for Blade Spirits/Energy Vortex, as well as the Provoke barding skill (Xuri)
- Added custom AI scripts for summoned Blade Spirits (js/npc/ai/summon/blade_spirit.js) and Energy Vortexes (js/npc/ai/summon/energy_vortex.js) with updated target selection rules (based on target stats) and checks for active pvp ruleset (Xuri)
- Added JS Function to check for existence of a JS event in another file (Xuri):
- DoesEventExist( scriptID, eventToCheck )
- Updated scripted magic spells to check for facet ruleset before allowing casting hostile and/or beneficial spells on other players (Xuri)
- Added new JS Method for Guilds to check if they are "at peace", i.e. NOT at war with any other guilds (Xuri):
- .IsAtPeace() // Returns true if guild is at peace, and not at war with any other guilds
- Added support for triggering onPickup JS event for Characters, and not just items (Xuri)
-= Ho Eyo He Hum =-