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
Physics label bridge & contact-edge SFX — fixes and hardening
Physics-driven labels (controller)
Physics label changes now signal through their own channel instead of the stage-change latch, so the scene tracker, velocity SFX loops and SOSBend calibration no longer misread mid-stage physics updates as stage advances.
Label overlay derives from per-stage tag baselines: labels revert when contact ends, and posture info (cowgirl etc.) can no longer be destroyed by a single misdetected frame.
S/F intensity prefix is latched with hysteresis (new physicsslowfactor config key, default 0.65) — no more flapping against sub-second thrust cycles.
Rewritten around GetCurrentInteractionFlags: ~4-12 native calls per tick instead of ~72 in a 4-actor scene.
Contact-edge SFX
All edges (penetration, kissing, oral) debounce by elapsed time (0.5s) instead of poll counts; kissing/oral no longer re-fire on detection dropouts.
Edge one-shots get a dedicated sound channel that stops the previous edge sound without cutting off body SFX.
New victim reactions (usecontactvictimreactions, default on): forced insertion on a submissive deposits resistance/trauma damage (victiminsertiontrauma, default 5, scaled by victim/HugePP multipliers), and the tender kiss cue is suppressed when either actor is a victim.
Cleanup fixes
Facial expressions and FHU tongue no longer stay stuck after a scene: cleanup is now event-driven (AnimationEnd) with an OnEffectFinish last resort, instead of depending on a single OnUpdate tick surviving.
Lingering moans after scene end are silenced: all four voice SoundCategories mute at scene end for a 4s window while in-flight lines run out.
Performance
Intense-phase SFX polling capped at 10Hz (was 20Hz), halving the busiest script's load with no audible difference.
Update (2026-07-17)
Tracker PlaySound refuses to start voice lines once the scene has ended (closes the queued-behind-pre-delay window).
Expression reset runs at near-instant speed instead of a slow smooth glide.