You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Confirm on a real client that the breath bar starts when the head goes under #142
Expected (1.12.1). When a player's head goes under water, the breath bar appears and drains over about a minute. It clears the moment the head breaks the surface. At zero breath the player takes drowning damage, which the combat log names, and can die.
Actual (at 87109e3c). The server side is done. Air drains, health falls, and the timer packets go out (breath.rs#L42). A Headless Client dive adapter in the wire-harness checks the timer start, the health drop, the drowning combat-log line and the timer stop. "Submerged" means the water surface is more than UNDERWATER_HEAD_HEIGHT (2.0 yd) above the feet (env.rs#L10). No behavioural reference gives that value, and nobody has checked it against a real client.
How to check. On a local Realm with imported liquid data, dive in Crystal Lake and Stone Cairn Lake on a real 1.12.1 client:
The bar appears when the head goes under, not the feet, drains smoothly, and clears on surfacing.
Drowning damage reads correctly in the combat log, and a drowning death shows the ordinary Release Spirit screen.
A partial dive that surfaces mid-drain, and a zone change while submerged, leave no stuck bar.
If the bar starts early or late, tune UNDERWATER_HEAD_HEIGHT and dive again.
Done when. The results and the final UNDERWATER_HEAD_HEIGHT value are recorded here, with the client build and the commit.
The Headless Client dive adapter is merged in wire-harness #10 and adopted by core #454, which pins alpha.8.
It checks the Breath timer start, waits through the advertised duration before accepting drowning damage, matches the damage log to observed health loss, then requires the timer stop after surfacing. The LyraCore adapter checks imported liquid before fixture changes and verifies durable damage and surface position. Seventy-five tests, offline checks, strict clippy, release builds, ShellCheck and CI passed. No existing Realm was used.
Remaining acceptance: choose suitable imported liquid coordinates, run the adapter on an approved development Realm, and use the stock client to check the mirror bar, submerge threshold, partial dives, death and zone/Transfer behavior. This issue and parent #12 remain open.
changed the title [-]Drowning 4/4: live-client calibration + wire-harness dive[/-][+]Confirm on a real client that the breath bar starts when the head goes under[/+]on Oct 8, 2026
Activity
Mathih13 commentedon Sep 7, 2026
The Headless Client dive adapter is merged in wire-harness #10 and adopted by core #454, which pins alpha.8.
It checks the Breath timer start, waits through the advertised duration before accepting drowning damage, matches the damage log to observed health loss, then requires the timer stop after surfacing. The LyraCore adapter checks imported liquid before fixture changes and verifies durable damage and surface position. Seventy-five tests, offline checks, strict clippy, release builds, ShellCheck and CI passed. No existing Realm was used.
Remaining acceptance: choose suitable imported liquid coordinates, run the adapter on an approved development Realm, and use the stock client to check the mirror bar, submerge threshold, partial dives, death and zone/Transfer behavior. This issue and parent #12 remain open.
[-]Drowning 4/4: live-client calibration + wire-harness dive[/-][+]Confirm on a real client that the breath bar starts when the head goes under[/+]