• xtrn/syncduke/download.jssrc/doors/syncduke/.gitignore xtrn/syncduke/i

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Fri Jun 26 17:26:41 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/83e326fb7e847072d16d154b
    Added Files:
    xtrn/syncduke/download.js
    Modified Files:
    src/doors/syncduke/.gitignore xtrn/syncduke/install-xtrn.ini
    Log Message:
    syncduke: optional installer download of the shareware DUKE3D.GRP

    SyncDuke ships no game data, so a fresh install has no GRP to run. Add an optional installer step that fetches the freely-redistributable shareware Episode 1 GRP so the door is playable out of the box -- mirroring SyncDOOM's getwads.js Freedoom fetch.

    download.js downloads 3D Realms' original shareware install package and extracts DUKE3D.GRP from it. The GRP is two archive layers deep
    (3dduke13.zip -> DN3DSW13.SHR self-extractor -> DUKE3D.GRP); Synchronet's Archive (libarchive) reads both, and the result is byte-identical to the canonical 11,035,779-byte "SHAREWARE 1.3D" GRP. Idempotent (skips a GRP already present), non-fatal if offline, and SpiderMonkey 1.8.5-compatible. install-xtrn.ini runs it as a prompted, non-required [exec:download.js] step after the config copy, so it can read the [grp] dir from syncduke.ini.

    Named download.js (not getgrp/getmaps) so it can grow more options later
    (map packs, the registered GRP) once the door can load them -- today it only fetches the base game GRP. .gitignore also gains *.grp so a dropped-in GRP
    is never accidentally committed (it is proprietary game data, not ours to redistribute from the repo even though the shareware package is).

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

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