Skip to content

Releases: hybrasyl/server

Hybrasyl Server 0.9.3.1

26 Jul 21:14
Compare
Choose a tag to compare

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")

16 Jul 22:20
Compare
Choose a tag to compare

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

Hybrasyl Server 0.9.2

02 Oct 20:31
e1ed845
Compare
Choose a tag to compare

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

24 Apr 21:31
bd00850
Compare
Choose a tag to compare

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")

26 Mar 03:30
7dc88c7
Compare
Choose a tag to compare

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

Hybrasyl Server 0.8.0 ("Saoirse")

25 Sep 04:52
96db1a9
Compare
Choose a tag to compare

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")

25 Sep 15:41
Compare
Choose a tag to compare

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 and Bugreport 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

28 Aug 18:48
Compare
Choose a tag to compare

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 and Feedback 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

07 Jul 21:32
Compare
Choose a tag to compare

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.

Hybrasyl Server 0.7.0 ("Daithi")

24 Apr 16:37
8fe2611
Compare
Choose a tag to compare

Hybrasyl 0.7.0 builds on the 0.6.0 release, implementing reactors, a fully complete and complex loot implementation, full spawning support with mob items/xp/gold, expanded dialog support, and complex Lua scripting support for dialogs and castables (spells and skills). We've greatly expanded the scripting support and API as we continue to implement the beginning of the game (from the player perspective).

Features

  • Reactors (map tiles that can react to nearby events, such as dropped items or a player or monster moving into the tile) implemented.
  • Full spawning implementation. SpawnGroups, Spawns now spawn and populate correctly with loot/xp/gold.
  • Loot implemented (Loot tables, loot sets, etc). New LootBox class for handling loot calculations.
  • Castables can now use and fire Lua scripts and start dialog sequences.
  • New dialog types: JumpDialogs and FunctionDialogs. Jump dialogs can be used in an NPC dialog tree to start new sequences or jump to different dialogs. Function dialogs can be used to run arbitrary Lua scripting code in between two dialogs (potentially to take an action - such as spawning a monster, dropping an item, starting a dialog, etc).
  • New dialog types for ease of scriptable dialog construction: TextAndJump, SimpleDialogSequence.
  • Asynchronous dialog support (dialogs between two players, or a player and an NPC) implemented.
  • Global dialog support implemented (reusable, scriptable dialogs)
  • Scripting support improved and extended as was needed to support various beginning game NPCs.
  • Hybrasyl time system reworked a bit (simplified). Legend marks updated to support "timestamp" and "creation" date; timestamp being what is displayed in the legend.
  • Significant functionality improvements to scripting API. NPCs can now have temporary "memory" they can use to remember general information.
  • Add support to transition between two active dialog sequences.
  • Add support for dialog options to trigger new sequences.
  • Implement TakeItem for scripts, so that NPCs can remove items from a player's inventory
  • Add support for setting and clearing permanent and session cookies (arbitrary player information which can be used by scripts).
  • XML/XSD overhaul. Duplicate types removed, many things cleaned up & fixed. XML objects and typing are in a much better, cleaner state than previously. No impact to end user XML besides some namespacing changes.

Bug Fixes

  • Items that are generated by scripting or other events can now be picked up correctly.
  • Coma handling in groups now works as you would expect.
  • Creature death no longer results in 0-gold piles.
  • EndDialog scripting function should not only end dialog, but also close open dialog windows
  • Correct bug in spawn calculations where it would take longer for initial spawns to populate than usual
  • Fix several bugs in grouping (player death would be immediate, etc)
  • Fix a number of dialog and NPC bugs (sequences would terminate inappropriately; NPC would lose state)

Technology / System Improvements

  • Hybrasyl upgraded to .NET Core. As a result, Hybrasyl Server can now run on GNU/Linux and OSX, among others.
  • MoonScript now used for Lua runtime instead of nLua.
  • Serilog now used for logging (log4net replaced). Logging is now much cleaner. Game activity / scripting / spawning now have separate logfiles.
  • Upgrade to xsd2code 5.