09-July-2022

More changes in Gielinor
ryannathans
Lead Developer

09-July-2022

Greetings Explorers

Highlights of this release include achievement diary reworks, many bug and stability fixes, slayer expansion, optimisations and more.

Full list of changes in Gielinor:

  • Part 1 of achievement diary rewrite, the following diaries have been partially or totally rewritten

    Lumbridge Beginner
    Lumbridge Easy
    Lumbridge Medium
    Falador Easy
    Falador Hard
    Fremennik Easy
    Fremennik Medium
    Karamja Easy
    Karamja Medium
    Karamja Hard
    Seers' Village Easy
    Seers' Village Medium
    Varrock Easy
    Varrock Medium
  • Items with destroy option can no longer be sold to stores
    Items that cannot be traded can no longer be sold to stores
  • Results of ::ge command now sorted by item name
  • Converted clue scroll rewards to JSON weighted tables
  • Fixed the duplicated sound effects when cutting trees
  • Improved POH lecterns

    More authentic animations
    More authentic tick timing
    Fixed off-by-one that resulted in spurious full inventory errors
    Made lecterns take rune-providing staves into account
    Made the buttons light up based on the lectern tier
    Converted TeleTabInterface from a Plugin to a Listener
  • Build process now fetches latest const lib when required
  • Changed guard NPCs in Yanille watchtower to the authentic watchmen NPCs
  • Refactored mining

    Converted to content API
    Corrected the prospecting text of gem rocks
    Corrected the full-inventory text when mining gem rocks
  • Converted SummoningTabPlugin to SummoningTabListener
    Implemented "Dismiss now" for familiars
  • Equipping an item into an occupied equipment slot now places the swapped item into the inventory slot of the item being equipped
  • Added ability to define custom varbits via JSON
    Fixed the bank note/unnote and insert/swap toggle buttons not persisting between logins
  • Fixed hardcoded database credentials in unit tests
  • Reworked commands

    ::commands now very pretty, paged and documents each command user has access to including privilege required
    Command definitions now support adding documentation in-place.
    Adds new command to hot-reload JSON while server is running (::reloadjson)
  • Added additional safety when cleaning up cutscene attributes
  • Moved demon slayer cutscene trigger to its own MapArea
  • Fixed bug that could cause bank to throw index out of bounds and vanish items when rearranging tabs with completely full bank
  • Fixed seemingly random server crashes caused by ArrayIndexOutOfBoundsException on unsafe type during threaded operations by synchronizing add/remove logic for PulseRunner.TASKS
  • Added the missing sound effect for when a tree is felled after a successful woodcutting attempt

    Sound can be heard by other players nearby
  • Fixed the long missing Lumbridge Achivement Diary store-browsing task
  • Fixed an exception thrown by the equipment interface
  • Converted EnchantedGemPlugin to Listener
    Converted EnchantedGemDialogue to DialogueFile
  • Reworked grand exchange offer processing

    Now much more efficient
    Offers will appear to complete almost instantaneously
    Players can no longer hoard bot offers as they will only be allocated at time of offer placement
  • Fixed incorrect banker NPC look-up behavior for bank booths
    Banker interactions are now properly restricted for Ultimate Ironmen
    Added theme-appropriate banker NPCs to booths at Void Knights' Outpost Island
    Added missing Canifis banker NPCs
    Fixed incorrect handling of Arnold Lydspor banking-related logic
    Added Arnold Lydspor dialogue
    Consolidated banker NPC listener logic into BankerNPC class itself
    Added ContentAPI call to check if a node offers an interaction option
  • Fixed exception thrown by an interaction with Ahab's beer
  • Fixed exception occurring when an NPC has no jobs that can be assigned to the player
    Fixed an issue that caused killing jobs not to work without relogging first
  • Fixed a bug where an NPC could not attack an entity that was already set as their target
    Fixed a regression that prevents some NPCs from walking back to their spawn point
    Fixed a longstanding issue that didn't properly reset NPCs who wandered too far out of their natural movement radius (now disables combat + walks them back to their spawn point + fully heals them)
  • Fixed bug where trying to buy-x too many items from a shop would not fill available inventory slots
  • Rewrote animal magnetism cutscene in the new cutscene system

    Fixes bug where the player could not progress
  • Fixed Rock Golem random event not spawning for low level players
  • Fixed an issue where lighting a lantern (or other light source) inside a dark area wouldn't be recognised
  • Rewrote enchanted jewellery

    Fixes the funny bug that gets you stuck as a tiny person when teleporting sometimes
  • Fixed exception thrown when invalid fairy ring codes are entered
    Fixed unhandled hairdresser button that lead to OOB exception
    Fixed oversight in ::loc that causes exceptions to be thrown in headless environments
  • Increased server stability
    Fixed NPE in IoEventHandler
    Fixed NPEs in PacketWriteQueue
    Reworked PacketWriteQueue slightly so that instead of breaking at first null packet we continue past it and pop the whole queue along the way
  • Refactored item note/unnote on bank booth handling
    QoL - only applies to bank booth, not banker NPCs
    Added server config world.bank_booth_note_enabled (enabled by default) to toggle the QoL globally
    Added server config world.bank_booth_note_uim (enabled by default) to toggle the QoL on ultimate ironmen only
  • ContentAPI methods now all take 2nd bank into account
  • Fixed a bug where NPCs couldn't be attacked against walls
  • Made wilderness NPCs immune to aggression tolerance
    Unified wilderness and standard death code, wilderness death code now only rolls the extra loot drops
    Fixed a bug that would cause revenant/player combat levels to sometimes be calculated incorrectly
  • Set user join date in database again on account creation
  • Fixed shield of arrav progression getting stuck, can now talk to tramp if you haven't joined a gang
  • Fremennik Easy Diary is now completable and Fremennik sea boots 1 can now be obtained
    PickUpEvent Event Hook created, for events that need to fire when player picks up a specific item
    All currently implemented Diary tasks where the player must pick up items have been converted to use the new PickUpEvent event hook
    New zone created for the windswept tree (highest tree in the Fremennik area task) for its diary task
    Rough dialogue created for obtaining your completed diary reward from Council Worker
  • Slayer expansion
    Sumona (NPC ID 7880) now implemented as a Slayer Master
    Sumona slayer task pool created, 1:1 with the task weights on the RSWiki
    Sumona NPC spawn added
    All slayer master task pools have been re-ordered alphabetically to match both live game wiki's task ordering
    Slayer task pools have been audited to ensure weights are correct
    Unimplemented tasks added to task tables but disabled
    Elves now added as a Slayer task, players can find them at Elf Camp and Lletya
    Elf slayer task added to task pool of Chaeldar and Duradel (as well as the new Sumona pool)
    Added Fremennik easy diary NPCs
  • Disabled aggression tolerance for GWD minion NPCs
  • New server config option to preload the world map on boot, removes lag caused by lazy loading (server.preload_map = true)
    Cached region clipping flags for faster lookups
    Minor optimizations to setAttribute codepath which avoids unnecessary checks
    Fixed a bug that would allow entities to attack through walls
    Fixed two separate bugs that would cause odd behavior attacking large entities from certain angles
    Removed unnecessary schema from global.sql
    Ensured that all but the `members` and `worlds` tables could be safely dropped out of the DB
    Better automatic handling for creating the default server account and creating the default server clan
    Fixed bugs related to interfaces flagged as uncloseable that would cause stack overflows
    Fixed premature home teleport while in tutorial
    Fixed getting stuck by going back up ladder in tutorial
    Fixed bug that prevented bots from taking damage
    Fixed a bug where players would not be in the default clan after completion of the tutorial
    Green Dragon bots reintroduced, no longer buy any items (these bots sell loot from green dragons in the wilderness on the GE)
  • Teleblock now persists across login sessions
  • Added support for many common variations of the jagex coordinate format for admin command ::tele, including:
    regionX_regionY
    plane_regionX_regionY
    regionX_regionY_localX_localY
    plane_regionX_regionY_localX_localY
  • Fixed tree spirit random event not spawning for some players
  • ::rolldrops admin/testing command now clears container between invocations
  • Implemented pelting of rotten tomatoes
    Added ability to define listeners for Player interactions and usewith interactions
    Added ability to flag listeners instant (no path walking) execution
  • Add slayer task content API functions in preparation for coming work
  • Rewrote entire banking system (aside from dialogue), converted to listener system
  • Fixed many issues with login
    Reconnecting to an existing session can no longer cause an account wipe
    Player saves can no longer be saved unless they've already been parsed
    Sessions now have their most recent ping properly set
    Sessions can now recover from a hypothetical scenario where the session's player reference becomes null but the player is still in-game
    Players now disconnected properly if no packets have been received from the client in the last 20 seconds
  • Reduced revenant spawn burst size to stop them getting stuck
    Fixed unit test NPE
    New admin command clearrevs to clear revenants
  • GE offer notification system now supports opt-in privacy to remove username from messages
    Opt-in to GE privacy with new in-game command ::geprivacy on
    Removed discord GE offer update notifications (only new buy/sell offers shown)
    Limited in-game GE notifications to player offers only