Repository navigation
Conversation
A corpse can stand because it was rebuilt for a leveled pick or got health back, and saves keep it that way. Keep those from happening to dead actors, and while connected check nearby bodies for a standing skeleton and ragdoll them, logging BodyStand lines. Also log a respawn caused by a save disagreeing with the server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018fvQxQEu7yvi9eRZyKsEur
The standing body check reads it, and on this branch only the padding was declared. Same layout as the name tags use on API-playtest. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018fvQxQEu7yvi9eRZyKsEur
RunRemoteUpdates called Kill() on every tick while the owner had an NPC dead and it was alive here. When the game refused the kill, that meant about 100 calls and log lines a second until ownership moved (1300 in 13 seconds in a playtest log). Retry once a second, give up after five tries with one warning, and start over when the body reloads or dies. Co-Authored-By: Claude Opus 5.5 <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.
Stacked on #25 (fix/reliability-porting), which holds the remote death system that
devdoesn't have yet. This ports the rest of urSovngarde's standing-corpse fix to non-VR.Changes
Files:
CharacterService.cpp/.h,ActorValueService.cpp,RemoteDeathSystem.hRagdollInstant, at most 3 tries per body.BodyStand:lines for every repair outcome,Not rebuilding dead actor …andRespawning actor … on spawnfor save/server mismatches.Verified in Ghidra on 1.6.1170
IsDeadreads only the life state at +0xC8, never health, so a body can be dead and on its feet.IsInRagdollState(37491) is true for any dead actor who isn't reanimating, so it can't detect a standing body. That's why the skeleton is measured.KillImpl(37896) returns early if already dead, so re-killing doesn't help.GetByNameis vtable slot 0x2A (0x140d1d9a0).RagdollInstantexists in0_master.hkx.On 1.7.104 I only checked that the IDs resolve.
Not verified yet
RagdollInstantactually lays a dead body down. It had only ever been sent by hand before.Test plan
BodyStand: … laying it downthen… is lying down, and the body falls.Respawning actor … on spawnis logged.BodyStand:lines.Generated by Claude Code