Skip to content

Hybrasyl Server 0.9.3 ("Glioca")

Compare
Choose a tag to compare
@baughj baughj released this 16 Jul 22:20
· 87 commits to main since this release

0.9.3 is jam packed full of bug fixes and features (item procs, combat log, religious faith, elemental resistances & augments, new Lua scripting hooks, and more).

New Features

  • Combat log - This can be enabled or disabled using /combatlog and is displayed as a guild/party equivalent message
  • Localizations can now define locales and the server can define a locale at startup which is recognized by world
  • Add proc support (either castables or scripted events) for items and equipment, initially supporting on use, on hit, and on cast events
  • The $ whisper target (which can be used to run arbitrary scripting commands) now supports the execution of multiline adhoc scripts using begin and end
  • [HS-1130] Implement bind on pickup and handle many edge cases related to weight / etc as a result
  • [HS-1246] Allow vendors to run checks to determine whether they provide training / vendor / mail / repair / bank services to a player
  • [HS-1250] Implement merchant voice triggers for repair, deposit, withdraw, selling, and asking how much gold or items are on deposit
  • [HS-1253] Lua scripts can now spawn monsters
  • [HS-1261] Lua scripts can register custom death handlers for monsters
  • [HS-1269] Enable formulas for reactor calculations
  • [HS-1270] Add scaling support to GiveExperience() in scripting
  • [HS-1271] Give scripts enhanced ability to access item properties
  • [HS-1275] Signs can display effects when they enter a user's field of view
  • [HS-1276] Enable resistances & augments (elemental buff/debuff for both attackers and defenders)
  • [HS-1277] Support religious faith fully as an attribute (stat, formulas, etc)
  • [HS-1288] Scripts can now register quest metadata (client quest display support)
  • [HS-1290] Reactor number of uses can be a formula
  • [HS-1291] Weapons and creatures can override default assail sounds
  • [HS-1297] Castables can inherit element from equipment or buff/debuffs
  • [HS-1298] Monsters can declare immunities to spells in XML

Bugs / Tickets Addressed

  • Correct issues where mail flag (flashing icon on client) was not always correctly set
  • Formulas for statuses were not evaluated if a castable was not responsible for applying the status
  • Correct error in OnHear where scripted events were no longer receiving SpokenEvent events
  • Item names were not always accessible via scripting
  • Ensure procs run when castables are used for all cases
  • Update MR/Damage/Regen/Hit to be percentages with appropriate display on client side
  • [HS-758] Fix certain edge cases with slot restrictions for items
  • [HS-802] Training dummy issues
  • [HS-847] /group command now uses popup similar to group invites
  • [HS-1024] Fixes to traps & trap abilities
  • [HS-1051] Caoin Cath doesn't stun nearby monsters
  • [HS-1130] Fix force drop exploit for certain edge cases
  • [HS-1224] Monks can learn and see multiple forms
  • [HS-1230] Fix various errors with spell dialogs
  • [HS-1247] SetNPCDisplaySprite() in scripting not functioning correctly
  • [HS-1248] Implement HasKilled support in Lua scripts for quests to use
  • [HS-1256] Logging into a map with a non-existent NPC results in infinite loading screen
  • [HS-1265] Regeneration not really working at all even remotely like expected
  • [HS-1266] Selling items via chat gives different gold than selling directly to merchant
  • [HS-1267] Improve implementation of regen / mr / hit / damage and client display of such
  • [HS-1272] Creatures do not respect hostility settings
  • [HS-1273] Selling stacked items doesn't remove them from inventory
  • [HS-1282] Dropped items no longer appearing on ground
  • [HS-1283] Fix unevaluated $TOKENS used by $NPCs
  • [HS-1285] Spawngroups with coordinate spawns defined should use the number of coordinate pairs defined as a maximum
  • [HS-1286] Bonus experience is overly generous & also doesn't display penalty / bonus exp
  • [HS-1287] RemoveSpell() in scripts does not remove spells correctly
  • [HS-1294] Handle removal of invisibility correctly
  • [HS-1305] Random strings appear in chat window
  • [HS-1307] Castables should prefer closest targets first
  • [HS-1308] Fix log filtering & add admin command to allow logging levels to be changed
  • [HS-1309] Reloading a map results in it not being able to be loaded again by a player
  • [HS-1311] Expose element in damage to scripting
  • [HS-1317] Fix certain rubberbanding effects on transitions
  • [HS-1318] Combat log cannot be disabled
  • [HS-1324] Reactor sprites do not disappear when reactor expires

Code Improvements & Refactoring

  • [HS-1315] Simplify variant expressions in XML and unify handling of itemvariants
  • [HS-1331] Simplify heal expressions in XML
  • [HS-1332] Simplify damage expression in XML
  • Upgrade to .NET 7
  • Upgrade to latest version of xsd2code
  • Unit tests can now test and use packet handlers
  • Enforce separation between WorldState / WorldData using new IStatestorable interface
  • Separate out all XML entity access to XmlManager (using Hybrasyl.Xml library)
  • Rename WorldDataStore -> WorldStateStore & remove XML entity support from it
  • Update code as needed to match new IWorldDataManager API
  • Fix failing tests here and there
  • Remove Hybrasyl WorldMap object, as it is no longer needed
  • Rename Hybrasyl Map object to MapObject (similar to ItemObject) and update to use new patterns
  • Disable XML reloading for now (to be reimplemented before 1.0)
  • Update world constructor to allow IWorldDataManager to be injected into it at runtime
  • Remove LoadData / etc from Hybrasyl as it is now handled by the data manager
  • Update Hybrasyl to support setting data dir / log dir / world data dir from command line or env variables
  • Clean up Map.cs and move classes to where they belong
  • Remove ResolveVariant as it is now handled by the data manager
  • Remove path helpers as they are now obsolete