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