Repository navigation
Record one warp attempt per call in CLIENTS_NotifyWarpAttempt - #252
Open
ResurrectedTrader wants to merge 1 commit into
Open
ResurrectedTrader wants to merge 1 commit into
ResurrectedTrader wants to merge 1 commit into
Conversation
CLIENTS_NotifyWarpAttempt wrote the current frame into every empty or expired slot of aLastWarpAttemptsFrame instead of only the first one. A single attempt could fill all five slots, so the next CLIENTS_ShouldDelayWarpAttempt saw five recent attempts and delayed the warp after one sync warp instead of after five. 1.10f (D2Game.0x6FC34700) walks the slots, skips the ones that are set and within 2250 frames (0x6FC34769-0x6FC34786), and writes only the first empty or expired one before returning (0x6FC3478C-0x6FC3479C). 1.14d (Game.exe 0x539360) is the same. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
CLIENTS_NotifyWarpAttemptwrites the current frame into every empty or expired slot ofaLastWarpAttemptsFrame, not just the first one. One sync warp on a fresh client therefore fills all five slots, and the nextCLIENTS_ShouldDelayWarpAttemptsees five recent attempts and delays the warp after one sync warp instead of five.1.10f
The whole of
D2Game.0x6FC34700(edi=pGame,[edi+0xa8]=dwGameFrame,eax=pClient,+0x3c0=aLastWarpAttemptsFrame[5]). The loop moves past slots that are set and within 2250 frames (0x8ca,90 * DEFAULT_FRAMES_PER_SECOND). The first empty or expired slot exits the loop, gets the current frame, and the function returns:1.14d
The same in
Game.exe0x539360:Change
breakafter recording the attempt, and add the 1.14d addresses ofCLIENTS_NotifyWarpAttempt(0x00539360) andCLIENTS_ShouldDelayWarpAttempt(0x005393F0). Not version-gated, since 1.10f and 1.14d agree.🤖 Generated with Claude Code