Releases: hybrasyl/server
Hybrasyl Server 0.9.4 ("Grinneal")
0.9.4 implements fear/charm/disarm statuses, adds cone-shaped spell intent, an absorb / shield mechanic, expands the functionality of traps, and adds a ton of features to the Lua API. We have also squashed a number of longstanding bugs and added a lot of new unit testing to help prevent new bugs from cropping up.
Features
- [HS-1024] Add ability to use caster stats in trap / reactor formulae, fix traps not expiring
- [HS-1280] Implement fear, disarm and charm conditions
- [HS-1293] Implement cone shape for spell intent / targeting (distinct shaped cone in specific direction from caster)
- [HS-1316] Allow creatures to be immune from statuses, specific spells and skills, elements
- [HS-1334] Implement absorb shield mechanic - castables can now grant shielding from all damage for a specific time
- [HS-1337] Allow
<Remove>
in xml to remove either a category of statuses or a specific named status - [HS-1341] Migrate constants from hardcoded server values to xml configuration
- [HS-1342] Allow castables to remove multiple quantities of statuses (eg remove all poison vs remove a poison)
- [HS-1346] Allow spawned monsters to define and be spawned with specific stats
- [HS-1439] Allow statuses to deal elemental damage (whether DoT or immediate)
- [HS-1451] Spells can now set whether they are visible at trainers, and whether they are learnable based on player cookie (a script-set value) along with a message if they cannot be learned
- [HS-1450] Add item tags
- Fully implement monsters killing each other
Lua API / Formula Support
- Fix timezone bug in
HasKilled
/HasKilledSince
- Access last thing said by a player or creature using
LastHeard
- Implement
IsPrivileged
(whether a player is admin) - Add ability to set a reactor as invisible or visible to a cookie
- Add
Direction
,GetTileInDirection
,GetMonstersInDirection
,GetUserInDirection
- Support updating / retrieving all player attributes & stats
- Allow reactors to use caster stats in formulas
- [HS-1430] Scripting needs ability to teleport creatures
- [HS-1438] Allow scripts to add / remove statuses on creatures
- [HS-1460] Reactor scripts should be able to play sfx / gfx
- [HS-1461] Creature scripts should be able to play sfx / gfx
- [HS-1462] Add ability for reactors to conditionally display themselves or change their sprites
- [HS-1463] Allow scripts to trigger / change spell / skill cooldowns
- [HS-1464] Expose item stackable max to API
Bugfixes
- Remove multiple statuses / allow multiple statuses of the same category to be applied
- [HS-1364] Fix longstanding bug where logout results in failure to reconnect
- [HS-1427] Fix a number of bugs in asynchronous dialogs (used for mentoring et al)
- [HS-1444] Bugreport / Feedback cease to function after one use
Miscellaneous
- Upgrade to .NET 8.0
- Introduce
IClient
/ socket / packet abstractions which are used to implement packet-level tests - Implement a number of new unit tests for a variety of server functionality
- Upgrade to Hybrasyl XML Library 0.9.4
- Massive cleanup / reorganization of files to make things clearer / more obvious / easier to work on
Hybrasyl Server 0.9.3.1
Server 0.9.3.1 is a point release in the Glioca series to address a few bugs that arose in testing.
Bugs
[HS-1359] Creatures are not always hostile
[HS-1356] Metafile handling of legacy stats is incorrect in item descriptions at vendors
[HS-1358] Creatures spawning with 1HP
Creation of new characters results in black forever screen
Hybrasyl Server 0.9.3 ("Glioca")
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 usingbegin
andend
- [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
Hybrasyl Server 0.9.2
0.9.2 ships a significant overhaul & simplification of Hybrasyl scripting, implements item and spell dialogs, and fixes bugs.
- Tickets
- [HS-1230] Add scripting support for spell casts (spell dialogs)
- [HS-1262] Add support for sending parcels and mail from scripts (eg NPCs can now send mail/parcels)
- [HS-1264] Item variants do not apply elements correctly
- [HS-1265]: Regen bonuses are not resulting in correct hp/mp regeneration calculations
- [HS-1266]: selling items gives different gold in chat vs menu
- [HS-1270]: add scaling to GiveExperience scripting function
- [HS-1271]: Allow scripting to set / read item flags
- New features
- Evaluate item formulas when they are added to inventory
- Significant refactoring of scripting - more efficient and performant, add interfaces, simplify usage, standardize usages
- Support complex item scripting (multiple dialogs, callbacks, functions)
- Bug fixes (thanks @kylespeck)
- PutGround packet fixes
- Default AoiDeparture should not have a transmit delay
- 0 second cooldowns interrupt consecutive spell casts
- Ensure targeted spells must have a valid target
- Viewport calculations should include tile player is currently standing on
Hybrasyl Server 0.9.1
Hybrasyl Server 0.9.1
We intend 0.9.x to be the last release series before 1.0; we will continue to make point releases, hopefully at least once a month, until we reach 1.0.
- Tickets
- HS-802: Address regression in 0.9.0 which made training dummies not work - they now work again
- HS-924: A player who confirms an exchange could still add items to the exchange
- HS-1113: Certain potions do not work if your max hp/mp is under the amount being given by the potion
- HS-1123: When looting a pile, loot gold first as opposed to items
- HS-1194: When a player's spellbook is full, they can continue to learn spells (and pay requirement costs) but nothing happens
- HS-1247: SetNPCDisplaySprite in Lua not working
- HS-1248: Add the ability to specify a number of recent kills to HasKilled in Lua
- HS-1250: Implement all NPC voice commands (repair / deposit / withdraw / buy)
- HS-1254: allow all cast costs to be specified as formulas
- HS-1261: implement OnDeath as a scripting hook
- Bug fixes
- Add locking to quadtree to address certain edge cases where spawn thread was causing multiple enumeration errors
- Fix various null reference edge cases in xml
- Address monsters not turning correctly
- Correctly address ability for lootsets to create an infinite roll scenario
- Code improvements
- Add unit tests for statuses, item slot requirements, merchant functions (deposit/withdraw/etc)
- New features
- Add lootset evaluator (whisper # as a privileged user), which allows you to evaluate multiple rolls on a loot set / table
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
Hybrasyl Server 0.8.0 ("Saoirse")
Hybrasyl Server 0.8.0 ("Saoirse")
- Complete refactoring of monster AI and pathfinding. Most AI can now be modeled entirely in XML without the usage of Lua scripting.
- Monsters now have stats, allocation of which can be controlled by a new XML type called
BehaviorSet
and happens automatically on spawn. - Monsters now have spell/skillbooks, the ability to use real castables, the ability to have weapons, and the ability to learn castables automatically on spawn.
- Monsters can now define base types and subtypes (for instance Kobold -> Kobold Sage, Kobold Wizard)
- Deprecate most usages of spawngroups. There is quite a lot of documentation for this in
docs
. - Begin refactoring how XML loading and ingesting occurs in Hybrasyl
- Break up XML extensions into separate files
- Add generic XML support for formulas, which will be used to define a variety of game effects that were previously statically defined
- Allow creatures to express a variety of attack priorities (low/high threat, attacking caster, healer, etc) in XML
- Add GRPC support for various functionality to integrate with new .NET account manager
- Add slash command support (currently privileged only) for mass & class casting
- Add support for social events (used initially for above)
- Update to .NET Core 5
- Refactor monster spawning to support new XML structures & new approach to spawns
- Allow maps to be muted (e.g. for class casting)
- Monsters will now prefix themselves based on level ("Trifling Goblin, Difficult Goblin, Deadly Goblin")
- XP allocation for groups refactored
- XP allocation for individual players refactored to be more reasonable and less grindy
- Allow all creatures to have cookies / session cookies set (was previously players only)
- Break up several monolithic files into separate components
- Add support for calculating difference between two timestamps easily in Lua scripting
- Add support for ignoring paths starting with
.ignore
in world directory - Replace formula parser / evaluator with NCalc now that it's available for .NET Core
- Fix status application bug that would result in black screen on login if statuses were applied
- Monsters now correctly respect statuses (freeze/sleep/etc)
The following tickets were addressed in this release - thanks to our intrepid and extremely patient testers
- HS-1209 Experience rewards are somewhat punitive & have low level ranges
- Corrected as part of combat revamp
- HS-1203 Dar's memory loss corrected (Dar has had his memory upgraded)
- HS-1202 Skill learning would take items even if multiple requirements were not met
- HS-1198 Music cuts out after casting certain skills
- Music corrected! Enjoy the tunes
- HS-1191 requirements for mor creag lamh too high
- mor creag lamh now has stat requirements in line with other stats
- HS-1180 Dar asking for things he does not actually want
- See HS-1203; corrected behavior
- HS-1177 Experience is not universally scaled
- Corrected as part of combat revamp
- HS-1175 Notify player when target is already buffed
- Status effects now inform you when player already has a similar buff
- HS-1127 Certain maps and spawning scenarios creating enormous message queue backlogs
- Corrected creature behavior that caused this
- HS-1124 Flame Breath missing sound effect
- Now with 100% more woosh
- HS-1141 Invincible monsters spawned & disconnects
- Related: HS-1127, HS-1209; Corrected creature behavior that caused this
- HS-1121 Add more ocean to Rucesion
- Now with more ocean
- HS-1115 broken mobs at zero HP but not dying
- Corrected queue issues
- HS-1112 Monsters cannot path to players correctly
- Corrected as part of combat update
- HS-1111 East Woodlands mobs not moving and not dying
- Corrected underlying behavior causing queueing issues
- HS-1107 Potions cannot be purchased (herbalism NYI)
- Potions available in Atavism Convention Hall until herbalism implemented
- HS-1094 Base weight of many items is ridiculous
- All item weights have been rebaselined to be less idiotic
- HS-823 Only title music plays
- HS-1198; enjoy the tunes
- HS-813 Replying to message board post crashes client
- Corrected, you may now reply without dying
- HS-1084 Occasionally receiving black screen on login
- Corrected login issue
- HS-1083 Mobs vanished and did not reappear until relogin
- Corrected queue issues
- HS-1133 Drop rate of finished coral increased
- Finished coral now available in Atavism Convention Hall
- HS-1100 Monsters not casting spells
- Corrected as part of combat updates
- HS-1059 Normalize level ranges in hunting areas
- Corrected as part of combat updates
- HS-1049 Items not appearing in sell list / not detectable by NPCs
- Corrected; NPCs will now see all items
- HS-733 Random massive experience in Crypt
- Corrected loot issue
- HS-965 Rubberbanding in certain areas of Mileth / Crypt
- Corrected queue issues
- HS-905 Rubberbanding in Farashyid Orchard
- Corrected queue issues
- HS-1189 kobald vs kobold
- Kobolds now have hair / corrected spelling
- HS-1187 ao ard cradh does not remove lower cradhs
- ao ard cradh now removes all curses
- HS-1182 intensity on some spells / skills is too high
- Reviewed existing buffs to match new intensity calculations
- HS-1122 Can't be born in Loures for mundane birth
- People can now indeed be born in Loures
- HS-1103 Riona's Greeting typo
- Riona talks gooder and stuff
- HS-1098 Hybrasyl armor is misgendered
- Corrected bank tab this is stored in
- HS-1085 Chants not displaying
- Chants now work for skills
Hybrasyl Server 0.7.3 ("Blanchefleur")
Bug Fixes
(Check out our active Alpha bug list at https://www.hybrasyl.com/bugs)
- HS-608/609: Skills can be spammed
- HS-605/HS-606 Messageboards accessible but messages cannot be posted
- HS-610 Assail hit rate is too high / can be spammed
- HS-611 skulling does not work when grouped
- HS-604 Boards not always responding to clicks
- HS-640 Cannot delete mail from mailbox
- HS-641 Incorrect rending of "special characters" in mail / board posts
- HS-642: Client will hang sending message to self or sending messages over a certain size
- HS-664 Exchange is not working
- HS-677 fix all items not repairing on repair all. also add new durability chat command
- HS-676 Don't allow users to buy items they can't carry (due to weight)
- HS-728 equipping armor doesn't show you stat changes
- HS-761 clarify why you can't equip certain heavy items
- HS-764 allow other items/gold to be picked up under ones that cannot be picked up
- HS-780 Opening mail / board menu while dead locks client
- HS-782 Item icon still on ground after being picked up
- HS-804 Spell lines not always displaying correctly / don't display at all
- HS-805 Black screen errors (gracefully handle user deserialization errors, display client message saying an error occurred)
- HS-817 Unable to move iventory items into empty spaces of inventory
- HS-828 can't learn a spell with exactly the right amount of gold
- HS-853 This fix also fixes spell prerequisites on paperdoll
- HS-889 spell chants not being displayed correctly
- HS-878 statuses do not appear to clear properly
- HS-879 fix incorrect icons on paperdoll display
- HS-855 fix withdrawing items when it would put you over weight limit.
- HS-858 prevent selling that would put you over gold cap
- HS-863 Prevent casting of spells while doing other actions.
- HS-835/HS-846/HS-848/HS-868/HS-884 Fix multiple problems with spell mastery / use count. Individual spell use count now tracked correctly
- HS-894 List required items for skills / spells in paperdoll
- HS-903 show stack quantity when depositing
- HS-916 default castable sound to 0xFF instead of 0x00
- HS-917 Removed doubled effect from heal effect
- HS-939/HS-941 if you somehow get a stack of 0 or negative, remove it on use.
- HS-940 fix missing trailing parentheses. change to brackets to follow stackable item pattern.
- HS-938 Update exchange to use newer item removal/add/update code.
- HS-972 exchange must be toggled on/off for new characters
- HS-973 Fix dragging items onto themselves.
- HS-975 add check for 0 quantity stacks on deposit.
- HS-1008 fix variants going over level 99.
- HS-1009 hp penalty at level 99 is broken
- HS-1019 fix user equipment check
- HS-1020 npcs with errors should not break maps
- HS-1021 Check for both skill/spell prerequisites
- HS-1022 fix item variants with minimum levels over 99
- HS-1026 enable negative mp/hp effects on items
- HS-1037 fix additem on user to actually insert into the world.
- HS-1038 adjust throttling
- HS-1045 Adjust level up animation speed
- HS-1050 Add casting checks for required costs to not throw on cooldown.
- HS-1071 Displaying pursuits as if a user was an npc is a bad time.
- HS-1091 handle blind
- Ensure messageboards are always loaded
- Don't require full map download on refresh
- Correct shield display bug
- Fix gold dupe / item dupe issues
- Display colored items correctly on ground
- Merchants now support having an inventory that replenishes on a timer
- Support multiple stacks of items in inventory; allow stacks to be drug on top of one another to collapse stacks
- Allow scripts to support changing and retrieving citizenship of a player
- XP: correctly distribute to on-map group members only in range of player who killed mob
- Correct invisible monster problem (occasionally invisible monsters would appear and savage players)
- Overhaul intent for spells to be more in line with sane expectations
- Add support for client settings (which are actually sent from server), implement exchange settings using this.
- Add parcel support (sending items to players)
- Various socket fixes and scaling fixes
- user can login multiple times under certain conditions
- socket exceptions / disconnects don't always result in user being removed / cleaned up from world
- Fix: shutdown implementation refactored / improved
- fix hashcode collision for worldmap points
- Fix potential for uint overflow on damage
- Don't allow nonexistent users to receive parcels
- Ensure monster AI respects freeze/paralyze/sleep
- Fix issue where hybrasyl could not be run behind NAT'ed networks
- Fix bug where OnDeath could run twice
- Fix duplicate assail sounds
New Features / Functionality
- Implement spell mastery
- Add Monster AI pathfinding & casting support
- Appmetrics integration for reporting # of control messages / opcodes received to Grafana Cloud (supports other targets)
- Add message plugin support for plugins which can do things with player or mail / board messages. Implement
Feedback
andBugreport
mail targets using this plugin support. - Add Sentry support for exception reporting
- Support administrative users requesting system shutdown, delayed shutdown request with job support (Chaos is rising up in N minutes)
- Add GRPC support for retrieving user count, requesting shutdown, checking if server shutdown is complete
- Add Monster support for complex aggro tables, healing now generates threat
- Add parcel support
- Add scripting resources for forcing threat change (e.g. rescue script)
- Add full support for durability for items
- Add support for loading/reloading xml into world data at runtime.
- Handle putground (0x0c) client packet
- Correct bugs in targeting under certain conditions (targeting now fixed for all known types of spells)
- Implement /forget and /clevel commands for testing spells (forget / change castable level)
- Add generate command
- Support limiting statuses applied by category (e.g. curses, armor buff, only one can be applied at a time)
- Add privileged chat using @ as whisper target
- Allow status intensity to affect stat bonuses
- Add diminishing returns on monster experience based on level
- Implement tick processing for monsters (statuses / etc)
- Item / spell / skill metafile support completed (paperdoll / etc client text)
- Add aggro table support to monsters
- Allow monsters to have their own Lua scripts
- Add OnHear, OnDamage, OnHeal to Lua scripting hooks
Hybrasyl Server 0.7.2
Hybrasyl Server 0.7.2
New / Improved Features
- Implement equipment restrictions for spells (e.g. "wield staff" to use staffs)
- Implement item requirements for spells (e.g. "Gramail Prayer Necklace" for Gramail prayer)
- Complete refactoring of spell intent to greatly simplify and improve spells
- Add support for map-wide spell effects
- Add plugin architecture for message handling. Initial implementation is for
BugReport
andFeedback
as mail targets. Arbitrary plugins can be defined to handle any type of message; currently, however, plugins are only evaluated for sent mail. - Add support for fixed coordinate spawns that don't move or react to spells (training dummies)
- Add full support for monster / spawn castables. Monsters now have defensive & offensive castables as well as spells they can cast on or when approaching death
- Full support for spell lines / staffs & equipment affecting lines
- Add GRPC support for future account manager integrations
- Add Sentry reporting support (sentry.io)
- Add version check / out of date check
- Default most slash commands to requiring privilege
- Refactor targeting to greatly simplify it
- Add OnHear handler for monsters (to react to player speech)
- Add support for monsters to have scriptables attached to them
- Add OnDamage / OnHeal handlers for monsters
- Add aggro table support for monsters
- Add support for tracking recent monster kills
- Support items being undamageable
- Add support for NPC repairs (all / specific items)
- Add significantly more error reporting & logging for Lua scripts
- Implement support for skill & spell metadata
Data / Schema Changes
- Allow spells to have multiple categories
- Document most usable dye colors
- Consolidate equipment booleans like master only, unique equipped, undamageable, etc into item flags
Bug fixes
- Fix packets being received out of order by the client
- Global dialogs not displaying NPC portraits or sprites
The following server tickets were resolved as part of this release:
HYB-6: Click to walk continues after hitting reactor
HYB-10: Quests do not populate on paperdoll Event tab
HYB-11: Spells/Skills do not populate on paperdoll Skill tab
HYB-20: PVP intent target does not always account for PVP status
HYB-23: Implement $RAND support for formula parser
HYB-32: Intent refactoring
HYB-61: Spell line reduction not yet implemented
HYB-62: Elemental damage modifiers not yet implemented
HYB-65: Implement rudimentary concept of durability
HYB-82: /legend usage results in a character that cannot login again
HYB-90: Status declarations in a castable do not override actual status
HYB-91: Castable adds status to caster, not target
HYB-92: Fix monster speech support for statuses
HYB-93: Improve privilege checks
HYB-94: Heavy item pickup bug (out of order packet problem)
HYB-95/96: Add RemoveLegendMark
, HasLegendMark
, GetLegendMark
to scripting API
HYB-102: Color Updates
HYB-105: Add master boolean requirement to flags
HYB-106: Track last N monsters killed, add HasKilled
function to scripting API
HYB-108: Add Skill Check to XML for items
HYB-109: Elemental variant is not a valid item flag
HYB-110: Null reference calculating some variants
HYB-112: Add GetScopedEphemeral
and SetScopedEphemeral
to NPC scripting API (supports storing player-scoped short-lived values in NPC memory)
Hybrasyl Server 0.7.1
Hybrasyl 0.7.1 Release Notes
New Features / Enhancements
-
Make Elemental bonuses (e.g fire -> water, light -> dark) configurable entirely via XML
-
Add beginning concepts of spell mastery, which adds different buffs (Reduce failure rate / +Dmg / +Heal / etc) to a base spell.
-
Asynchronously process outbound packets. This resolves a number of problems around large numbers of mobs dying or being impacted at once.
-
Add a lot of documentation in various places and produce and update documentation for scripting API on the Hybrasyl website (https://www.hybrasyl.com/docs/api/)
-
Add initial support for guilds, guild banks, and guild charters.
-
Add full support for banking (storing and retrieving items and gold with an NPC).
-
Add support for REPL-style Lua evaluation of scripting by whispering
$
. Allow arbitrarily created scripts to be evaluated. -
HYB-12: Add privileged command
/title
to set titles -
HYB-13: Add privileged command
/return
(functions similarly to recall scroll) -
HYB-14: Add privileged command
/resurrect
for testing / qa -
HYB-23: Add $RAND_10, $RAND_100, $RAND_1000 support to formula parser
-
HYB-64: Add quantity support to scripting functions TakeItem, HasItem, GiveItem
-
HYB-65: Implement durability
-
Add
/spawnx
command to spawn any number of random mobs on your map (for load testing) -
Add
/itemlist
command to search for items. -
Add
/version
command to display current running version of the server (server builds now also have githash embedded into the assembly). -
Implement full metafile support for banked / vendorable items.
-
Ensure targets are attackable before, you know, targeting them
-
Keep track of the map and exact position of player death.
-
Added
SendHome
function in scripting to send the player back to their national spawnpoint. -
Add
AddSpell
/AddSkill
to allow scripts to add skills and spells to be added to a player's spellbook. -
Add
IsInGuild
to allow scripts to check if a player is in a guild.
Bugs Squashed
-
HYB-3: Nylarlathotep will resurrect the living
-
HYB-5: /basemp has typo in response
-
HYB-7: Shout did not correctly implement range checking
-
HYB-17: Fix Sgrios Scar formatting
-
HYB-19: Fix dupe bug for rings and gauntlets on certain death conditions
-
HYB-36: Utility skills and spells not displayed on correct pane
-
HYB-79: Formulas with WEAPONDMG / WEAPONSDMG / WEAPONLDMG create errors if a weapon is not equipped
-
HYB-81: Update CastCost to accept and process percentages
-
HYB-82: /legend usage results in a character that cannot login a second time
-
HYB-78: Solid tiles not actually solid (add privileged command
/walls
to turn off collision checking) -
Fix occasional bug where encrypted packets were not processed correctly if received out of order.
-
NPC portraits now display correctly.