Fix slayer assignment names and silent mausoleum gates - #1154
Merged
Conversation
The enchanted gem and ring of slaying "Kills-left" option printed `slayerTask.lowercase()`, which is the raw variable key, so the chat message read "moss_giants" instead of "moss giants". Use `toLowerSpaceCase()`, the same conversion the slayer master dialogue already applies. The reassign/block panel in the slayer rewards interface read `slayer_assignment`, a key nothing writes, so both lines always showed "You must have an assignment to use this." even with a task active. Read `slayerTask` instead and format it with `toSentenceCase()`, so the lines read "Cancel task of Moss giants." and "Never assign Moss giants again." matching the blocked task list above them. Closes GregHib#1153
`Door.sound` builds the sound name as `${material}_${gate|door}_${suffix}`,
so the two underground gates below the mausoleum (objects 3444 and 3445,
`material = "grate"`, named "Gate") asked for `grate_gate_open`. No such
sound is defined, and `Character.sound` returns silently on an unknown
id, so opening or closing them played nothing.
Material names follow two conventions: some name the door type
(`iron_door_open`, `barrows_door_open`), others name the sound itself
(`grate_open`). Fall back through `${material}_${type}_$suffix`,
`${material}_$suffix`, then the generic `${type}_$suffix`, so a material
without a dedicated sound plays the plain door or gate sound instead of
nothing.
Add the missing `grate_close`, sfx 68, next to the existing `grate_open`
67, and set the material on the opened variants of both gates so closing
matches opening. Only `grate` changes behaviour; `iron` and `barrows`
already resolved on the first candidate.
Reverting a temporary object still plays no sound, so a gate that shuts
itself after `enterDoor` is silent. That affects every door in the game
and needs a revert callback through `GameObjects.replace`, left for a
separate change.
Closes GregHib#1140
Doors opened by `enterDoor` revert after a few ticks, and the 5 minute reset does the same for doors left open. Neither played a sound, so walking through the mausoleum gates was silent from the moment the player stepped past them. `GameObjects.replace` and `Replace.objects` take an optional `onRevert` callback, invoked once the original objects are back. `Door` passes the opposite sound to whichever transition it made, as an area sound at the door tile so anyone nearby hears it rather than only the player who opened it. `resetExisting` fires that same timer early when a player manually closes a door that was going to reset on its own, so the explicit sound in that branch is dropped; the revert now plays it, and keeping both would play it twice.
GregHib
approved these changes
Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes two reported bugs.
Slayer assignment names showing underscores (#1153)
The enchanted gem and ring of slaying "Kills-left" option printed
slayerTask.lowercase(), which is the raw variable key, so the message read "moss_giants". UsestoLowerSpaceCase()now, the same conversion the slayer master dialogue already applies.While in there: the reassign/block panel of the slayer rewards interface read
slayer_assignment, a key nothing writes, so both lines always showed "You must have an assignment to use this." even with a task active. It readsslayerTasknow and formats withtoSentenceCase(), matching the blocked task list above it.No gate sound in the mausoleum (#1140)
Two problems, both silent.
The sound name never existed.
Door.soundbuilds${material}_${gate|door}_${suffix}, so the two gates below the mausoleum (objects 3444 and 3445,material = "grate", named "Gate") asked forgrate_gate_open. Nothing defines that, andCharacter.soundreturns silently on an unknown id.Material names follow two conventions: some name the door type (
iron_door_open,barrows_door_open), others name the sound itself (grate_open). The lookup falls back through${material}_${type}_$suffix,${material}_$suffix, then the generic${type}_$suffix, so a material without a dedicated sound plays the plain door or gate sound instead of nothing. Onlygratechanges behaviour;ironandbarrowsalready resolved on the first candidate.Also adds the missing
grate_close, sfx 68, next to the existinggrate_open67, and sets the material on the opened variants of both gates so closing matches opening.Reverting a temporary object played nothing. Doors opened by
enterDoorrevert after a few ticks, and the 5 minute reset does the same for doors left open, so the gate was silent again the moment the player stepped past it.GameObjects.replaceandReplace.objectstake an optionalonRevertcallback, invoked once the original objects are back.Doorpasses the opposite sound to whichever transition it made, as an area sound at the door tile so anyone nearby hears it rather than only the player who opened it. Threaded throughDoubleDoorandGateso double doors behave the same.resetExistingfires that same timer early when a player manually closes a door that was going to reset on its own, so the explicit sound in that branch is dropped; the revert plays it now, and keeping both would play it twice.Sfx ids verified against the rev 634 sound table (GRATE_CLOSE 68, GRATE_OPEN 69).
Testing
DoorSoundTestwalks a player through the first mausoleum gate and asserts agrate_closezone sound lands once the gate reverts. Full./gradlew testpasses.Closes #1153
Closes #1140