Hybrasyl Server 0.9.0 ("Danaan")
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
andRotationEntry
). 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).
- Implement monster castable rotations with new controller logic (
- Add XML call/response support for NPCs (eg
What is your name
/ etc)
- New status support
- 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 inStatInfo
and refactor - Add control message handler for updating stats (used to process reflect / steals)
- Add locking to object caches in maps
- Add
WorldObject
index toWorldDataStore
- Add support for running Hybrasyl in Docker, including a
Dockerfile
- Remove
- 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)
- Move gold to
- 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
- Ensure
- 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