• src/doors/syncdoom/syncdoom.c src/doors/syncduke/Game/src/config.c pla

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jul 3 18:20:46 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/ea7b94702b931de835f5ab17
    Modified Files:
    src/doors/syncdoom/syncdoom.c src/doors/syncduke/Game/src/config.c player.c src/doors/syncduke/syncduke_input.c
    Log Message:
    SyncDOOM & SyncDuke: terminal-mouse FOLLOW (relative mouse-look) mode

    Terminals report only absolute, screen-clamped cell coordinates -- no
    relative motion, and the host can't recenter the pointer -- so the
    existing STEER model turns the player by the pointer's offset from the
    image centre (a virtual joystick). That never runs out of travel but
    keeps turning while the pointer sits off-centre, which some players
    dislike.

    Add FOLLOW as a second, opt-in style: turn by the pointer's change in
    column since the last game tic, so the view stops the instant the
    pointer stops -- the DOS-game mouse-look feel. Because the coordinates
    are absolute and clamped, a pointer pinned at the window edge would
    otherwise stall; a slow edge-creep (bounded by the idle timeout) lets a
    big turn finish anyway. The delta reference re-anchors after an idle gap
    so a resumed pointer doesn't lurch.

    Ctrl-O now cycles OFF -> STEER -> FOLLOW -> OFF (was on/off), and the
    mode persists per-user: SyncDOOM [input] mouse = off|steer|follow (with
    "on" accepted as a legacy alias for steer); SyncDuke [SyncDuke] MouseMode (legacy MouseSteering still honored). SyncDuke's existing sensitivity
    slider scales both styles.

    SyncDuke's player.c getinput() drains a per-tic delta accumulator (syncduke_mouse_turn_tic) rather than reading the steer level; config.c persists MouseMode; the on-screen flash names the mode.

    Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net