Batch 55 · Ordered damage and player death/revive flow¶
2026-10-27. Starting HEAD a6c95c2a; implementation 50a33027, with documentation committed separately. A grouped R3 checkpoint; not completed gameplay or full player lifecycle migration.
Change¶
Player.TakeDamage now forwards a readonly hit to PlayerDamageResolver. It preserves reflection before the live immunity gate, shield early returns, mitigation/HP work, reaction order, LastStand/death handling and the immunity tail. LegacyPlayerDamageHooks keeps existing character/perk effects and service/field dependencies in explicit stages for later R4 migration. The adapter is deliberately temporary, not a completed ability/shield owner. Damage presentation remains on the player. Original source/attack/type/knockback values survive the boundary without giving previously ignored arguments new behavior.
PlayerLifeCycle owns death sequencing and the existing revive transaction. The REVIVE upgrade now calls Player.TryRevive instead of directly restoring actor fields. ActiveSelf eligibility, activation/resource/camera/reset order, half HP/stamina, acquired state, retained timers/ammo and drone master restoration remain. The run callback still uses the old GameManager.CheckGame; shared-run registry/participation is not complete. No Entity-base, EnemyFunc, ability implementation, companion motion, scene, prefab or authored data change.
Lightweight evidence¶
Before extracting damage, actual Player.TakeDamage/EnemyFunc calls capture 28 cases, exit 0 in 33.720 seconds. The reference records shield absorption/break/explosion outputs, exact immunity boundary, UniqueCons strict/negative cases, pre-immunity reflection, same-frame repeated hits, selected reactions/LastStand/lethal handling and poison/stun delivery after immune/absorbed hits versus dash rejection. It does not exercise every perk combination or visual/audio output. Temporary in-memory services/pool objects use no normal saves or online initialization; selected ability admission is blocked to observe synchronous caller behavior without starting unrelated effects.
Original damage reference SHA256: dea255512387f19d1c2f770c0aa931ce139ecf819b473faabe356c8b5ab7c247. The first extraction compilation found a private damage-feedback access; a player-owned internal feedback entry fixes that boundary without widening the private coroutine. Corrected damage/pipeline checks exit 0 in 31.894 seconds.
Before moving REVIVE, the unchanged original upgrade path captures four active/inactive slot combinations and repeated calls, exit 0 in 52.798 seconds. Damage extraction is already present in that capture; the upgrade source itself is still the original pinned bytes and no damage is invoked. Original life reference SHA256: 4907c1481b14a5d10da1d99bd056e8ea7ff28acef2d43bccb2ace482647b7a24.
Final combined headless run exits 0 in 37.955 seconds, Unity 6000.2.8f1, Linux64: 28 original damage/status cases, eight pipeline groups, four original upgrade/revive cases, and two lifecycle callback groups pass. Pipeline checks include attribution, reflection changing immunity, shield/LastStand return points, nested hits, failure propagation and isolated owners. Direct lifecycle checks observe activation/resources before camera callback, reset after callback, retained actor/ability/timer state, drone restoration and death notification after deactivation. The existing CS8785 generator warning remains; accepted logs contain no exception heading.
The revive fixtures keep an inactive parent, so they do not qualify live OnEnable/Start, actual gameplay death/revive, animation or coroutine cancellation. No native build/control test or new physical-device/Windows qualification. Batch 52 remains the latest native smoke and predates these changes. Original references are not regenerated from the extraction.
Preservation and continuation¶
All 7,787 pre-captured project files outside two intentional edits match; fourteen source/reference/metadata files are added. The rest of UpgradeFunction and Player's resource methods are byte-preserved. Reviewed generated Linux-toolchain package entries and shared Unity session prefs were archived/restored to original bytes; normal game-profile files/membership match. Unresolved audio deletions and untracked Linux.meta remain excluded. Raw logs/backups stay outside Git.
All 27 workstream follow-ups remain open. In particular PC-04's inactive/unjoined eligibility, partial reset and live activation remain unresolved rather than silently changed. Continue R3 minimum dash execution/admission, status/timer ownership and shared-scene capability activation; migrate character effects and their service callers with AbilityHolder in R4. Preserve the source-backed character-specific attack routes and use the grouped lightweight-verification workflow.