Repository navigation
fix(scp049): load the cooldown receiver in FinishingSense - #869
Merged
louis1706 merged 2 commits intoOct 19, 2026
Merged
Conversation
Niruri
force-pushed
the
fix-scp049-sense-cooldown-receiver
branch
from
October 18, 2026 08:06
42d7db8 to
7d93a5f
Compare
louis1706
approved these changes
Oct 18, 2026
|
that look like a big skill issue nice spot |
Someone-193
approved these changes
Oct 18, 2026
Someone-193
left a comment
Collaborator
There was a problem hiding this comment.
Really niche bug. Sorry you had to deal with it
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.
Description
Describe the changes
Load
Scp049SenseAbility.Cooldownbefore callingAbilityCooldown.Trigger(double)in the allowed branch emitted byFinishingSense3.What is the current behavior?
When
FinishingSenseis patched,ServerProcessCmdcan enter this branch withHasTarget == true. The generated IL currently pushesthis(aScp049SenseAbility) andev.CooldownTime, then invokesAbilityCooldown.Trigger(double). The receiver is not anAbilityCooldown, so this call is incorrectly typed.This was investigated after intermittent SCP-049 sense-related disconnects on an EXILED 9.15.2 server. The relevant production stack was:
The server uses dynamic patching, and the affected game mode subscribes to
Scp049.FinishingSense. The same missing field load exists in upstreamdev. The invalid receiver was independently confirmed by invoking the framework's transpiler without loading the server's gameplay plugin. A clean client/server reproduction and the precise Mono dispatch behavior behind the observed stack have not yet been verified.What is the new behavior?
The generated call now loads
this.Cooldownas its receiver:The event-provided duration is retained, and the allowed branch still enters before the receiver load.
Does this PR introduce a breaking change?
No. This is a one-instruction correction; no public API changes.
Other information
Validation:
Exiled.Events.csprojand its project dependencies using the officialSL-References/Dev.zip: passed with 0 warnings and 0 errors.FinishingSense3.Transpilerwith a minimal IL fixture containing the realCooldownandSubroutineBase.ServerSendRpc(bool)anchors.devassembly and passed after this change. It checks that the single emittedTrigger(double)call loads an assignable receiver fromthis.Cooldown, retainsev.CooldownTime, and keeps the allowed branch label before the receiver load.git diff --check: passed.IsAllowed = true, a subscriber changingCooldownTime, cancellation, and rapid/repeated sense input.Types of changes
Submission checklist
Patches (if there are any changes related to Harmony patches)
Other