Skip to content

Hybrasyl Server 0.9.0 ("Danaan")

Compare
Choose a tag to compare
@baughj baughj released this 26 Mar 03:30
· 226 commits to main since this release
7dc88c7

Hybrasyl Server 0.9.0 (”Danaan”)

Release notes for Danaan, the beginning of the “viable” releases for Hybrasyl Server.

  • Upgrade to .NET 6.0
    • Migrate to file-scoped namespaces
    • Use Random.Shared for randomness
  • Add new stats along with status support & general implementation:
    • reflect magical / physical damage
    • XP/Gold/Item find bonus
    • life/mana steal
    • dodge
    • inbound/outbound heal/damage modifiers
    • crit / magic crit
    • dodge / magic dodge
  • Remove intensity, as it was duplicative of above
  • Items
    • Allow items to have permanent stat effects
    • Add item metadata support for new stats
    • Add item support for formulas, which are now evaluated right before being equipped
  • Allow spells and skills to redirect damage to mana
  • Fully implement hit / dmg / MR
  • Implement damage flags (NoCrit / No Threat / No Resistance)
  • Implement regeneration bonus as a percentage, versus current implementation
  • Fix bug in TakeItem (wasn’t, uh, taking items)
  • Implement reloading of spawngroups
  • Expose Elements / elemental attributes easily in Lua for scripting
  • Implement randomness for spawns
  • Add category support for inventory (”junk”, “weapons”, etc) & add NPC support for buy all my junk
  • New implementation / features
    • New status support
      • Mute
      • Invulnerability
      • Invisibility
      • Sight
      • Item usage / equipment change prohibitions
    • Implement traps
    • Implement support for group recruiting
    • Implement support for basic manufacturing system
    • Creature behaviors
      • Implement monster castable rotations with new controller logic (CastableController, Rotation and RotationEntry). Monsters can now have spell rotations defined in XML, along with one-off casts (eg HP < 10%), which can also have a variety of targeting priorities (healer, direct attacker, etc).
    • Add XML call/response support for NPCs (eg What is your name / etc)
  • XML improvements
    • Unify stats for items and statuses
    • Clean up & remove old unused object files
    • Use existing StatInfo structure for items and statuses
    • Unification of C# / XML creature attributes
    • Update item durability / weight / value to be floats (to match variants)
    • Upgrade to xsd2code 6
  • Scalability / server architecture improvements
    • Remove Lockable usage in StatInfo and refactor
    • Add control message handler for updating stats (used to process reflect / steals)
    • Add locking to object caches in maps
    • Add WorldObject index to WorldDataStore
    • Add support for running Hybrasyl in Docker, including a Dockerfile
  • General refactoring
    • Move gold to StatInfo structure
    • Add support for OnInsert for world objects, which is run on an object’s insertion into the world
    • Remove hardcoded sell prompts
    • Add support for alternate Redis DB (used by testing)
    • Completely refactor inventory (remove 1 vs 0 index confusions)
  • Code improvements
    • Allow startup directory to be set in config.xml
    • Remove redis migrations entirely until rewritten in C# / needed again
    • Various updates to tuples in lots of places to take advantage of .NET 6
    • Add unit tests 🎉
      • Equipment & new stats, bonuses, consumable bonuses
      • Inventory
      • Variants (variant generation and equip)
      • Serializing / deserializing characters (verify that stats / etc are identical after deserialization)
      • Monster casting / rotations, threshold casts
      • Traps (reactors and castable reactors)
    • WorldObjects now keep track of their creation time and their “alive” time
  • Bug fixes
    • Ensure .ignore is ignored in xml directories
    • Never send system messages for assail skill use by monsters
    • Base damage modifiers for weak monsters were not being applied correctly
    • Ensure direct damage ignores ac/mr/crit/dodge/etc
  • Tickets
    • HS-734: profiles not working
    • HS-758: implement ability for items to require or prohibit other items from being equipped, along with generic slot restrictions (eg monk no boots case)
    • HS-765: /recentkills should display 25 most recent kills
    • HS-961: fix mana recovery issue with armor when total mana is reduced to 1
    • HS-1024: traps are not implemented
    • HS-1044: tab map zoom does not work for rogues
    • HS-1201: Can’t sell more than one of the same item to an NPC
    • HS-1208: NPCs will now respond to “buy my x” prompts
    • HS-1224: ensure spells are removed in client interface when removed by scripts
    • HS-1227: implement parcel send & fix duplicate usage messages
    • HS-1236: STR resets to 1 on login
    • HS-1237: reactors eat items
    • HS-1238: regression in hp/mp stats
    • HS-1114: castable cooldowns are triggered even if mana is too low