VERSION 1.0.30 - SINGLE SNIPER SCOPE (28 OCTOBER 2026)
Sniper zoom draws one centered scope, even when both the server layout and
automatic fallback request artwork. ch_scopescale controls its size separately
from HUD scaling. OpenGL and Vulkan are covered. Only the client EXE changes;
the game DLL, asset pack and updater retain their 1.0.29 hashes.

VERSION 1.0.29 - LOOPBACK AND EIGHT RACE COURSES (26 OCTOBER 2026)
Refresh Play > Race to load barnyard, bomba2, bwcity2, country, country2,
junkke2, murder and torabora. Install each matching map BSP locally. Local
map startup now has the full internal 4096-byte loopback packet budget,
preventing large first updates from leaving the client on the loading screen.
Remote legacy packet limits are unchanged. Only the client EXE changes; the
game DLL, asset pack and updater are unchanged from 1.0.28.

VERSION 1.0.28 - THREE RACE COURSES AND TEXTURES (24 OCTOBER 2026)
Refresh Play > Race for desertsun, forest and dbtrk1 with new medal targets;
each matching map BSP must be installed locally. Solid map surfaces no longer
show holes or green speckles when an original or replacement texture has
transparent pixels; explicit map cutouts remain transparent. Custom alpha
on a plain solid face needs a map alpha-test flag for cutout behavior.
Only the client EXE changes. The game DLL, asset pack and updater are unchanged.

VERSION 1.0.27 - RACE UPGRADES AND JUNGLE1 (22 OCTOBER 2026)
Options > Race adds Race-only footstep/checkpoint sound controls, checkpoint
flash colour/opacity/duration, and a four-second split-time display with
cloud personal-best differences when those splits are available. Multiplayer
hosts need the updated game DLL for exact checkpoint splits and to remove
world pickups during Race. Play > Race includes global standings with
scrollable ranks, completion, records and medals. jungle1 is an additional
Race course; install its map to play. r_maxfps 0 removes the asynchronous
render cap in OpenGL and Vulkan; VSync/hardware may still limit FPS. Only
the client EXE and game DLL change; asset pack and updater are unchanged.
VERSION 1.0.26 - INPUT, DEMO VIEWPOINT AND FPS LIMIT (19 OCTOBER 2026)
Attack and use commands and incoming packets are processed sooner, before
client frame-rate limits; Vulkan also sends input before its GPU fence wait.
This reduces avoidable client-side input delay without changing server weapon
timing or guaranteeing network latency. Classic .dm2 playback now hides the
recorder's own model using the correct player slot. Set cl_fps2 1 to show the
current cl_maxfps limit, including changes from binds. It is off by default
and uses the existing FPS display style and position. No config migration is
needed. Only the executable changes; game DLL, asset pack and updater do not.

VERSION 1.0.25 - RACE PLAYER VALIDITY AND GRENADES (14 OCTOBER 2026)
Solo Race disables spectator mode and prevents observer movement from completing a timed run.
Race enforces non-team spawn rules and disables grenades to prevent grenade boosts.
Solo Race enforces non-team player rules and disables spectator 1, including
inherited configs and console requests. Course editing remains separate.
Observer/non-solid movement cancels solo checkpoint progress; returning to
player mode cannot resume that attempt. Multiplayer spectators remain allowed
but cannot record finishes. Grenades cannot be picked up, equipped or thrown
in Race, and existing grenades cannot explode while Race rules are active.
Update both the client executable and host game DLL. Normal games are unchanged.
Previously submitted records are not modified or automatically removed.

VERSION 1.0.24 - LOCAL GAME PACKET FIX (12 OCTOBER 2026)
Fixed local-game disconnects when menu messages and game updates exceed a packet limit.
Reliable messages are still sent when the current game update will not fit.
The expendable update is skipped instead of disconnecting. No settings or
protocol changes are required; game DLL, assets and updater are unchanged.

VERSION 1.0.23 - CONSOLE FONT STARTUP FIX (12 OCTOBER 2026)
The essential console font falls back to PNG when PCX is unavailable, even
with gl_replacepcx 0. This fixes startup on PNG-only AQtion installations
in OpenGL and Vulkan. Existing PCX font preference is retained. Other image
replacement settings are unchanged; game data is still required.
Vulkan also uses the built-in palette when colormap.pcx is absent, matching
OpenGL and supporting the stock AQtion base assets.

VERSION 1.0.22 - RACE PRACTICE SPOTS (11 OCTOBER 2026)
race_set saves your current position and view direction while standing on solid
ground. race_recall returns you there, heals you and stops your movement. The
attempt becomes practice: no time or ghost is submitted. Use race_restart to
begin a valid timed attempt again. Saving alone does not invalidate your run.
Each player has one spot per map, retained through restarts/deaths and cleared
on map change/disconnect. Blocked spots cannot be recalled. No default binds
are changed; optional Race-only bindings (enter these while in Race):
  bind F3 "race_set"
  bind F4 "race_recall"
Works in solo and multiplayer Race; multiplayer hosts need the updated game
DLL and players need the updated client. No cloud deployment is needed.

VERSION 1.0.21 - CEL OUTLINE COLOR (9 OCTOBER 2026)
Saved gl_celshading_color "R G B" sets outline color immediately in OpenGL
and Vulkan. Components use 0-255; default "0 0 0" is black. For example,
gl_celshading_color "255 0 0" gives red outlines. Enable outlines with
gl_celshading 1 (or a desired width). Out-of-range components are clamped;
malformed tuples fall back to black. Distance fading is unchanged.

VERSION 1.0.21 - CEL OUTLINES AND Q2PRO PARTICLES (9 OCTOBER 2026)
Cel outlines now render in Vulkan (including GPU-animated GLB weapons) and
OpenGL, including models at the camera origin. gl_celshading 0 disables them;
1 retains the existing gl_celshading_width setting (default 4). Other positive
values set the width directly, up to 10. Outlines fade with distance and do
not apply to translucent or shell overlays. Vulkan needs non-solid polygon
support; without wide-line support the GPU uses one-pixel lines.

gl_partscale 2: Q2PRO particle size; 0 hides particles and larger values enlarge
them. gl_particle_scale remains an additional multiplier (normally 1).
gl_partstyle 0: normal alpha blending; 1: brighter additive blending.
gl_particle remains a compatible spelling for this blend setting.
gl_partshape 0: faded circle; 1: square; 2: fuller, less faded circle.
All three controls apply immediately in OpenGL and Vulkan, including blood.
These replace the OpenGL-only point-particle drawing path; use gl_partscale
instead of gl_particle_size/min_size/max_size/att_* for visible size changes.
Default size/shape now follow Q2PRO. Existing explicit legacy blend settings
are retained. These controls affect regular effect particles, not decals,
weather or arbitrary blood hue. Additive style brightens the existing color;
it does not select a new blood color. All three new controls are saved.

VERSION 1.0.20 - 7 OCTOBER 2026 - RACE UPDATES
The Race crosshair is visible again except behind the times board. Stealth
Slippers appear on the ground in local games. inputrec and inputrec_stop can
save movement inputs separately from demos for run analysis.

RACE GHOST LINES AND FINISH FIX
A movement hitch after a completed run no longer changes the result to
"attempt invalid". The 100 ms guard before/during a run and original landing
physics remain unchanged. Multiplayer hosts should update their game DLL too.

race_ghost_line 1 replaces ghost bodies with thin green route lines; 0 keeps
models (default). race_ghost_line_lenght defaults to 2. Values 1-99 set the
trailing distance in player-model lengths (56 map units each): 10 means 560
units. 100 shows the full recorded route, including before starting a run.
Very long full routes use bounded sampling and retain both endpoints.
The command spelling is race_ghost_line_lenght, as requested.

Open cmd help / race_scores (F1 by default) and click the SHOW GHOSTS checkboxes
to select any of the available top-five ghosts plus your own best. Your own
entry appears even outside the top 20. Uncheck everyone else to follow only
your ghost. Selections apply to both models and lines, follow stable player IDs
rather than names/ranks, and save in the Race profile. F2 remains the master
visibility toggle; hiding ghosts never disables recording or upload.
Arrow/Enter first-person viewing remains available independently of visibility.
Newly downloaded moving ghosts join playback on the next attempt; full routes
can be displayed immediately. No cloud API change or deployment is required.

SEPARATE RACE CONFIG
Race automatically loads action/race.cfg on entering single-player or multiplayer
Race. Mouse1 restart, F1 scores and F2 ghost visibility are ordinary Race bindings.
Use unbind mouse1 while racing to remove restart, or bind another key to
race_restart. Changes to bindings and archived client settings save to race.cfg
when leaving Race, quitting, or using race_writeconfig (also writeconfig race).
Your previous normal settings and bindings return on exit; normal config and
options-menu saves use the pre-Race values. Map changes retain the Race profile.

The file stores overrides, so other settings inherit your current normal setup.
Edit race.cfg while outside Race; it is generated again when saved. Use one
bind, unbind, set/seta, or existing client-cvar assignment per line. For example:
  unbind MOUSE1
  bind r "race_restart"
  bind F1 "race_scores"
  bind F2 "race_toggleghosts"
  sensitivity "2.5"
Server rules, cheats, game switching, startup scripts/exec and alias definitions
are not loaded from this settings file. Bindings may call existing aliases.
Subsystem settings still follow their normal restart requirements. Normal
startup configs continue to load normally when launching the client.

VERSION 1.0.19 - 5 OCTOBER 2026 - CUTOUT PLANT TRANSPARENCY
Fixed black rectangles behind Rantasauna plants: gl_emptywalls preserves
explicit alpha-tested surfaces. The solid-wall hole fix remains enabled.
Reload the map after updating; no asset or setting changes are needed.

VERSION 1.0.18 - 5 OCTOBER 2026 - RACE LANDINGS AND GHOST SHORTCUT
Original AQ2 landing damage restored in Race, with slow movement updates
invalidating attempts instead of adding damage. F2 hides/shows ghosts in Race
only.

Update both the client and multiplayer host: this release replaces the
executable and game DLL. Asset pack and updater are unchanged. Movement
updates longer than 100 ms, including long FPS hitches, invalidate the timed
attempt; restore FPS and press Mouse1 / race_restart. Existing FPS settings,
key bindings, cloud times, medals and ghosts are preserved. F2 changes ghost
visibility only; recording continues and first-person viewing remains
available.

VERSION 1.0.17 - 5 OCTOBER 2026 - RACE FIRST-PERSON GHOSTS
Race F1 top-20 personal bests and first-person top-five ghost viewing. Invalid
Urban, Riot and Cloud runs and ghosts removed.

Arrow keys start an available ghost; Enter watches the selected row, F1
toggles the list and Esc returns to your own start. Watching cancels your
current attempt. Playback uses recorded movement, looking and crouching with a
90-degree camera, without weapon animations. Older times without recordings
cannot be watched. This update changes the executable only; the game module,
assets and updater are unchanged. Existing settings are preserved.

VERSION 1.0.16 - 4 OCTOBER 2026 - MENUS AND LASER SIGHT
Menus are easier to browse, settings show their actual values, reset asks
first, and keybinds cover Action commands. A new optional laser-sight setting
keeps your own dot aligned with the crosshair.

This update changes the executable only; the game module, asset pack and
updater are unchanged. Laser prediction is off by default and can be enabled
in Options > Network or with cl_laser_predict 1. It changes only the display
of your own dot, not hit detection. Menu reset asks before changing settings;
Gameplay & Mouse and Audio resets now affect only their own pages.

VERSION 1.0.15 - 30 SEPTEMBER 2026 - MAP FIXES, DEMOS, M4 AND MEMORY
Map, demo and memory fixes: no see-through holes on maps such as rcity,
building walls restored when old replacement textures are broken, the camera
no longer sits inside the spectated player in older demos, Vulkan weapons use
far less memory, a smaller M4 sight without the foregrip, sounds skipped
instead of a crash when memory runs out, and a saved report file for
unreadable server messages.

The updater downloads the new executable and asset pack (pre-compressed weapon
textures and the rebaked M4). Solid map faces with a fully transparent texture
are drawn black as in AQtion; gl_emptywalls 0 restores the old see-through
look on the next map load. Demos recorded before 1.0.13 still have a fixed
view while alive, because their view angles were never recorded. If you are
disconnected with an unreadable server message, send action/badpacket.txt with
your report. Protocol 38 and extended limits remain opt-in; warmup wall-
sticking remains unresolved.

VERSION 1.0.14 - 29 SEPTEMBER 2026 - RACE FALL-DAMAGE HOTFIX
Race fall-damage hotfix: prevent low-FPS and mid-fall FPS changes from
avoiding leg damage, and enforce timed Race rules. Existing records are
retained.

Update both the client and game module on Race hosts. The updater downloads
the changed executable and DLL; the asset pack is unchanged. Existing times,
medals and ghosts are retained. Older clients are not remotely blocked, and
the service still trusts clients and hosts. Exact damage can vary with command
timing. The unranked solo course editor retains authoring cheats. Teamjungle
remains available; refresh the Race course list.

VERSION 1.0.13 - 29 SEPTEMBER 2026 - SKINS, NETWORKING, DEMOS AND TEAMJUNGLE
New selectable weapon skins, Q2PRO/AQtion networking improvements, demo
seeking and recording fixes, scope controls, console history, Vulkan
preview/left-hand fixes, and Teamjungle Race.

Choose skins in Weapons with the SKIN arrows or [ and ]; choices apply
immediately and are saved. Skins affect first-person weapons only; OpenGL
shows base colours and Vulkan adds PBR. Use ch_scopescale for scope size,
ch_legacy_numbering 1 for direct chN numbering, and con_history 0 to disable
saved console history. seek 1:30, seek +10 and seek -5.5 navigate .dm2 demos;
timescale 0.1 enables slow motion. New recordings retain view angles; old
fixed-view recordings cannot be repaired. net_maxmsglen now defaults to 1390
with enhanced fragmentation; saved overrides remain in effect. Teamjungle
appears after refreshing the Race course list; the map must be installed
locally. Medal targets: author 79s, gold 86s, silver 95s, bronze 110s.

Protocol 38 (cl_protocol 38) and extended limits (cl_extlimits 1) remain
experimental and opt-in. Automatic selection uses protocol 36. Extended-limits
v2 is unsupported; scale/morefx/loop sound extensions are parsed but not fully
rendered. Full match testing of limp, extrapolation, high-rate animation and
hit markers remains pending. Demo recordings remain classic protocol 34 and
omit assets/entities beyond its limits. Warmup wall-sticking remains
unresolved.

UNRELEASED - Optional AQtion crosshair numbering
ch_legacy_numbering 1 makes crosshair 1-50 load ch1-ch50 directly.
Default 0 preserves Battery built-ins 1-10 and images 11-50 = ch1-ch40.
The menu labels and preview follow the selected mode. Missing images do not
fall back to another crosshair. Existing crosshair values are not rewritten.

UNRELEASED - Scope sizing
ch_scopescale 1 preserves scope scale; 0.5 halves it, 2 doubles it.
Range 0.1-9; saved independently of ch_scale. Scopes remain centered.
Matching PCX bounds control replacement-image display size in both renderers,
including dimension-only 128-byte headers. Restart video after changing assets.
Default crosshair numbering: 1-10 built-in, 11-50 use ch1-ch40.

VERSION 1.0.16 - Menu overhaul
Options lists start below the neon logo and scroll when longer than the
screen (arrow keys or mouse wheel). Values are shown as values: sensitivity
2.00, volume 0.7, sizes in % or px. YES is pale green, NO pale red. Opening a
menu only reads settings; a setting is written when you change it there.
Gameplay & Mouse adds acceleration, raw input, field of view, footsteps and
scope sensitivity (cl_zoom_autosens, cl_zoom_2x/4x/6x). Audio adds Mute
ambient sound, Force LLsound off, Swap stereo and Show Spotify track. HUD &
Crosshair has Crosshair, HUD sheet and HUD sections with health colour, scope
options, hit markers, lagometer and chat lines/time; sets show their names.
Console adds notify time and Save history. Visual effects adds world/model
brightness, weapon PBR, decals and dynamic lights. Video adds Frame rate cap
(r_maxfps). Demos adds Auto-record matches and Auto screenshot. New Network
page: protocol, update rate, extended limits and the AQtion protocol 38
options. Keybinds lists Action commands (weapons, bandage, IR vision, say,
radio messages); keys bound through aliases such as +f_forward still show.
Every Reset defaults asks first (press Y to confirm). Page resets only reset
that page; only Options > Reset defaults also resets key bindings.
Mouse hover selects menu entries over the whole word. Installing an update
shows DOWNLOADING... until the files are ready, then INSTALLING... before
the game closes; the updater restarts it.

VERSION 1.0.16 - Laser sight prediction
The laser dot is placed by the server, so it trails your crosshair by your
ping. cl_laser_predict 1 (Options > Network > Predict laser sight) draws
your own dot where your current view aims. Other players' dots and hit
detection are unchanged. Default 0.

VERSION 1.0.12 - BRIGHTNESS AND SCOREBOARDS
Removed the bottom-left scoreboard loading and unavailable-roster notices.
Live brightness adjustments, broader match scoreboard compatibility and quieter automatic scoreboard queries.
Manual players/playerlist commands normally print. A manual query sent while
an automatic scoreboard query is pending may be hidden for up to five seconds.
Brightness changes rebuild lightmaps and may briefly hitch on large maps.
Texture settings such as intensity still need vid_restart.

Scoreboard update in 1.0.11: team rows follow server frag/tie order.
Known substitutes remain separate. Incomplete/hidden ranking replies retain
the original server scoreboard. Keyboard selection stays on the player ID.

VERSION 1.0.11 - CONFIGS, SKY AND WEAPON SOUNDS
Normal custom weapon sounds on low-lag servers, black-sky controls, AQtion config import and Q2PRO script compatibility, quieter GLB loading.
Use s_force_llsoundoff 1 for normal custom firing sounds on llsound 1 servers
(default 0). Server event range is unchanged. Use cl_blacksky 1 or Options >
Visual effects > Always black sky for every map; sky black affects this map.
Config order: BSCdefaults, q2config, BSCconfig, autoexec, BSCcustom,
BSCmenuoverrides. Later values win. Q2PRO support remains partial; it adds
seta/setu/sets, quoted if branches, multi-word set values and macros.

BATTERY SUPER CLIENT - WINDOWS X64

Included in 1.0.11: s_force_llsoundoff 1 uses normal custom Action firing WAVs for
pistol/dual pistols, MP5, M4, shotgun, handcannon and sniper events, even when
the server uses low-lag sounds. Default 0 keeps legacy behavior. Normal server
shots are not duplicated. Reloads, knives, grenades and footsteps already use
normal sound paths. This does not change server settings or sound visibility.

Included in 1.0.11: Routine successful GLB weapon-load statistics are no longer printed.
Warnings for invalid GLB models remain visible in both renderers.

VERSION 1.0.10 - INPUT, SCOREBOARDS AND MULTIPLAYER RACE
Type version in the console to see the actual Battery release number.
m_rawinput 1 enables Windows Raw Input; m_directinput must be 0.
Raw Input defaults to 0 and may change sensitivity if Windows pointer speed
was customized. The reported Raw Accel dropouts were fixed in tester use.
sv_strafejump_hack defaults to 1: no landing lockout for the hosted local player.
0 restores classic landings. 2 affects all hosted clients, but legacy protocol
34 clients cannot be informed and may mispredict. Remote servers decide movement.
The pickup scoreboard retains its artwork, shows 20 players per team including
subs, and scrolls longer lists. Arrows select, Enter opens stats, Backspace returns.
HUD icons stay visible. Unknown assignments show ?; unavailable frags/time show -.
cl_pickupscoreboard 0 disables it; unsupported server rosters keep the old screen.
Multiplayer Race supports Discord login, cloud records/medals/eligible PB ghosts,
Create Server for 12 players, and direct joining. Update hosts and clients together
(protocol 2). Host firewall/router must allow the configured UDP port. Timing is
100 ms at default 10 Hz. Cloud results trust the host/client, not anti-cheat proof.
Optional r_frametimestats view-stall diagnostics can flag ordinary stops.
Experimental texture precaching is not in this release. Personal configs preserved.

VERSION 1.0.10: Player stats capture their closing bar without flashing a console notification.
VERSION 1.0.10: Expanded rosters preserve the original team artwork, font and transparent layout.
Player stats use compact, centered scoreboard-sized text. HUD icons remain visible.
Extra-column layouts retain supplied stats; unavailable frags/time show dashes.


VERSION 1.0.10 - PICKUP SCOREBOARD
TNG matchmode team rosters support 12 players per team plus substitutes, with
scrolling for longer lists. Arrows select; Enter opens server stats; Backspace
returns. Subs lists known substitutes; ? marks assignments hidden by the server.
Requires a complete playerlist with team numbers; unsupported or ambiguous
responses keep the original scoreboard. cl_pickupscoreboard 0 disables it.

VERSION 1.0.9 - NETWORK MESSAGE DEFAULT
Version 1.0.9 defaults to 4086 payload bytes in its 4096-byte network buffer,
matching net_maxmsglen 4096 after clamping. This addresses the reproduced
world freezes and movement snapping on the vrol server. An explicit
net_maxmsglen setting in your own config still overrides the default.

WHAT'S NEW
Included in 1.0.11: Local Action servers default to llsound 0, including when using
older game DLLs. Explicit settings in configs override this default. Change
any llsound 1 line to 0 if desired. Remote servers control their own setting.
Included in 1.0.11: Imported q2pro scripts support seta and ${qt}/${sc}. Custom
kill messages require the script's trigger/counter commands as well as its
say_team alias. This change is not part of the current 1.0.10 download.
After installing a new version, a text screen shows its changes on startup.
Dismiss it once to hide it for that version. Notes also work offline.
Use Previous/Next, arrow keys, Page Up/Down or the wheel to read every page.
Type whatsnew in the console while disconnected to read them again.
See CHANGELOG.txt for release changes, upcoming plans and known issues.
Latest notes: https://batterysuperclient.com/changelog

WEAPONS - VERSION 1.0.8
The Weapons menu shows eight detailed weapons without hands or loose parts.
Drag to rotate, scroll to zoom, and use R or Reset View to reset.
The pack includes Ember, Temper, Crimson, Nightshift, Jade, Walnut, Olive
and Borealis finishes, plus detailed gloves. Skin switching is not available.
Vulkan supports metal/roughness, normal and AO maps, preloaded with the map.
Studio lighting adds reflections on first-person and inspected weapons.
vk_weapon_pbr, vk_weapon_studio and gl_replace_md2_weap default to 1.
Existing saved settings still take priority. OpenGL displays base colours
without Vulkan PBR lighting. Some hand/weapon clipping remains.

UNRELEASED LOCAL FOLLOW-UP - SNIPER HANDS
Sniper hands use the current shared gloves with the original sniper MD2 hand
animation and finger poses (verified against the raw MD2). The transferred hand animation is fixed; fitting
adjusts only whole-hand position, never finger positions, movement or posture.
The 96 game-driven frames and shared rifle/hand breathing remain supported.
The approved front-stock and reload hand positions are applied throughout the
local sniper animation set. Withdrawal is smoother, and the loading cartridge
follows the grip into the chamber. Finger poses and rifle geometry are retained.
Native surface checks and offline first-person poses/transitions are reviewed
before local installation.
Rifle geometry and textures are unchanged. This local asset fix is not part
of public 1.0.8.

INSTALLATION
Close the game and back up your existing Battery executable and configuration.
Extract this package into an existing AQtion / Action Quake 2 installation.
For Steam AQtion: Manage > Browse local files opens the correct folder.
Run "Launch Battery Super Client.cmd" or aq2-x64.exe +set game action.
The original game's data is required and is not included in this package.
Battery reads AQtion's baseaq assets without renaming the folder.
The included action/gamex86_64.dll provides the x64 local Race Mode game code.

SETTINGS
Drydock_b1 fix in 1.0.7: larger lightmap faces fit the renderer's existing
128x128 atlas. The public 1.0.6 client does not contain this fix yet.
Version 1.0.6: large maps such as Nightwalk can load without the old 16 MB
Hunk_Alloc overflow in the OpenGL and Vulkan map loader.
Version 1.0.5: m_autosens preserves slow mouse aiming, including while
scoped. Autosensitivity now uses AQtion horizontal/vertical reference FOVs and ignores widescreen adjustment.
Version 1.0.4: chat HUD messages remain in one aligned vertical column.
Your action/BSCconfig.cfg and BSCcustom.cfg are not supplied or overwritten.
Battery saves its settings separately from AQtion's original configuration.
Factory defaults are included in action/zz_battery.pkz.
Included in 1.0.11: Optional q2config.cfg loads after factory defaults and before
BSCconfig.cfg. The full order is BSCdefaults, q2config, BSCconfig, autoexec,
BSCcustom, BSCmenuoverrides (all .cfg). Later binds/settings take priority;
imported settings absent from later configs remain active. Battery does not
write q2config.cfg. Unsupported AQtion commands/settings may be ineffective.
Version 1.0.4: autoexec.cfg loads automatically after BSCconfig.cfg.
Keep it in action, or use the existing baseaq copy when action has none.
BSCcustom.cfg loads next, then saved menu overrides take priority.
You do not need to add exec autoexec.cfg to another configuration file.

VERSION CHECK
On startup, the client checks the Battery website in the background.
If a newer version exists, a prompt appears in the disconnected menu.
Accepting downloads only changed files, verifies SHA-256 checksums, then closes
the game normally, installs the update and restarts. Unchanged assets are skipped.
Cancel while downloading to leave installed files unchanged. Backups and logs
are kept in .bsc-update. Failed replacements roll back earlier changes.
Version 1.0.0 users must install this full package once to enable the new updater.
No prompt appears for the same/older version or an unreachable server.
cl_updatecheck 0 disables checks; cl_updatecheck 1 enables them.
bsc_release_version shows the installed release version in the console.

https://battery-super-client.antti-raaterova.workers.dev/downloads

SOURCE
Engine/game source and third-party source archives are a separate download at:
https://batterysuperclient.com/downloads
Choose Source code for the matching release version.
See SOURCE_BUILD.txt inside that archive for build instructions, and LICENSE.txt and
licenses/ for license notices. Game assets retain their original licenses.

ASSET CREDITS - FIRST-PERSON HANDS
The hands used in Battery Super Client come from:
"Makarov PM FPS animations", uploaded by Cransh (@ccransh).
https://sketchfab.com/3d-models/makarov-pm-fps-animations-d02ebd58e3cf44acb7af73e3f156be28
Creator profile: https://sketchfab.com/ccransh
The original upload credits the FPS hands to @bumstrum.
It also credits Martin Trafas (@Bexxie) for the Makarov pistol model.
The upload notes a modification to the rig.

License: Creative Commons Attribution 4.0 International (CC BY 4.0).
https://creativecommons.org/licenses/by/4.0/
Battery adaptation: the hands are reused and integrated into this client's
weapon model setup. These adapted assets retain their CC BY 4.0 license;
the engine's GPL license does not replace the asset license.
No endorsement by the original creators is implied.


OPTIONAL EXPLOSIONS - INCLUDED IN 1.0.3
Version 1.0.3 includes JangaFX grenade/rocket fire and smoke at twice
its initial visual size; original effects are the default (cl_grenade_effects 0); use 1 to opt in.
See CHANGELOG.txt for release changes. Damage and underwater effects remain unchanged.

VULKAN WATER - INCLUDED IN 1.0.3
Vulkan water has animated ripples and shine, including supported calm ponds.
vk_water 1 is enabled by default; vk_water 0 restores the old appearance.
vk_water_experimental 1 optionally adds displaced waves, local camera-centered
ripples and underwater caustics; it defaults to 0. Caustic strength is controlled
by vk_water_caustics_strength (default 0.8). Experimental waves can show seams
at water boundaries. This is visual only and does not change collision.

RACE IN 1.0.3
Race requires Discord login; logout ends an active race.
Race menu shows medal targets and your earned medals.
Urban2 race is available from Play > Race > Refresh.

RACE GHOSTS (1.0.4)
Available top-five and personal-best ghosts show during Race attempts in the 1.0.17 ghost-view update (older clients use the top three).
Toggle them in the Race menu or with race_ghosts. Older times without
recordings remain valid; new personal bests supply new recordings.
Remove redundant exec autoexec.cfg lines from BSCcustom.cfg to avoid
running the same personal commands twice.


Version 1.0.5 Windows m_autosens: 1 uses AQtion's 90-degree reference; values
above 90 through 179 select a custom reference FOV. 0 disables scaling.


Version 1.0.5: Mesto Race is available from Play > Race > Refresh.
Its 17-checkpoint route and medal targets are published with this update.


VERSION 1.0.7
Drydock_b1 loads without the Bad s_blocklights size error.
The M3 shotgun keeps its real shape in first person instead of looking bent at the receiver.
Mouse1 correctly respawns you at the Race start when pressed immediately after death.
The updated M3 is included in action/zz_battery.pkz.

VERSION 1.0.8 - WEAPON DEFAULTS
vk_weapon_pbr, vk_weapon_studio and gl_replace_md2_weap default to 1.
Factory settings enable weapon replacements, Vulkan weapon PBR and studio
lighting. Saved BSCconfig.cfg and personal overrides retain priority, including
explicit 0 values. Set any of these options to 0 to disable it.


VERSION 1.0.9 - PERFORMANCE AND SNIPER ANIMATIONS
Vulkan reduces world/weapon CPU work. vk_weapon_gpu 1 blends cached weapon
poses on supported GPUs; vk_world_static 1 reuses map geometry. Both default
to 1. Set either to 0 for its previous CPU/dynamic path. Unsupported devices
automatically keep CPU poses; PBR-off and Weapons inspection use that path.
GPU poses use additional device memory. Performance gains vary with hardware
and map; the existing main-loop 1000 FPS cap is unchanged.
Use r_frametimestats for detailed CPU/GPU timing and timerefresh for finer
benchmark timing. These are diagnostics, not gameplay changes.
The network default is 4086 payload bytes; explicit personal net_maxmsglen
settings still override it. This addresses reproduced server snapshot stalls;
it does not add fragmented Q2Pro transport.
The pack contains the approved V36 sniper support/reload hand placements and
cartridge motion, retaining original MD2 finger poses and timing. Earlier
V28-V35 fitting notes are authoring history, not separate selectable options.

VERSION 1.0.10 - MULTIPLAYER RACE
- Opt-in servers support up to 12 independent runners, server-owned checkpoints
  and timers, individual Mouse1 restarts, and no player blocking or damage.
- Signed-in players upload server-measured records and PB ghosts on matching
  published courses. Play > Race offers Single Player and Multiplayer. See
  game_race/MULTIPLAYER_RACE.md for separate-server setup and remaining work.


VERSION 1.0.10 - RACE CLIENT COMPATIBILITY CHECK
Multiplayer Race requires a compatible Battery Super Client multiplayer build.
Missing or incompatible identifiers are rejected with a client requirement message.
This is a compatibility gate, not proof against modified clients copying the ID.


VERSION 1.0.10 - RACE MODE MENU
Play > Race now offers Single Player (existing cloud maps, medals and Discord
login) or Multiplayer (join by address or create a Race server).
The last server address is remembered. Each player signs in with Discord.

VERSION 1.0.10 - AUDIO RESTART FIX
Prevent repeated window activation from leaking a looping DirectSound buffer
during Race/game-directory transitions. Reset mixer timing on sound restart.
No audio settings are changed. Restart the client once after installing this
fix to clear any buffers leaked by the previous executable.

VERSION 1.0.10 - MULTIPLAYER CLOUD RECORDS AND GHOSTS
Every signed-in player uploads their own server-measured times, medal progress
and eligible personal-best ghost to the shared cloud leaderboard. Existing
Discord login is reused; hosts never receive player login tokens. Private
hosts are trusted. The hosted course must match the published geometry and
medal thresholds. Old queued solo runs and ghosts remain compatible.
Both host and clients need the updated multiplayer protocol (battery-race/2).
Server timing remains 100 ms at the default 10 Hz. Ghosts retain the existing
ten-minute limit. The 1.0.17 ghost-view update expands playback selection from the top three plus your best to the top five plus your best.
Cloud upload queues now support long installation paths without truncating or colliding time/ghost filenames.

VERSION 1.0.10 - CREATE RACE SERVER
Play > Race > Multiplayer > Create server opens the published course picker.
Select a locally installed map to host up to 12 players, including yourself.
The course is copied from the cloud cache automatically. The server uses your
configured UDP port (27910 by default); Internet guests need that port reachable
through the router/firewall. No network rules are changed automatically.
Temporary hosting settings are restored when you leave; config saves preserve
the previous settings while hosting. Hosting ends when you disconnect or quit.

VERSION 1.0.10 - RACE HOST DISCORD LOGIN
Create server requires Discord sign-in before opening the course picker.
If signed out, selecting it highlights Discord login. Starting a host also
checks sign-in, and signing out ends the hosted Race session.

1.0.14 - RACE FALL DAMAGE RULES
Timed Race forces jump 0, dmflags 256, cheats 0 and gravity 800 before map
setup and movement. Jump/cheat commands cannot enable protection or noclip.
In 1.0.14, fall/leg damage was resolved per movement command, including low movement FPS
and commands arriving together. Godmode, spawn shields, no-falling flags,
grapple grace and enhanced slippers cannot suppress Race fall/leg damage.
Normal water cushioning, bandaging and race_restart recovery remain available.
The solo course editor (race_edit 1) is unranked and retains authoring cheats.
Internal solo teleport/heal commands cannot be forwarded to bypass race_restart.
Existing cloud times, medals and ghosts are retained. This is a local rules fix,
not proof against modified clients or untrusted hosts; older clients must update.

In 1.0.14, Race also checked height lost during a fall, so long movement commands could not
reduce impact below the normal gravity-based speed for that drop. Teleport
and restart clear the fall history; safe short drops remain safe.


VERSION 1.0.17 - RACE FIRST-PERSON GHOSTS
- In Race only, F1 / cmd help shows the cloud top 20, one personal best per player.
- Arrow keys select an available top-five ghost and start first-person playback. Enter watches the selected entry; F1 reopens/hides the list, and Esc restarts your own attempt.
- Watching cancels your current attempt and cannot submit a time. Playback loops and uses recorded position, look direction and crouching with a 90-degree view; weapon animations are not recorded.
- Downloaded Race ghosts now include the top five plus your own PB. Older times without recordings remain on the list, but cannot be watched. Existing records, medals and ghosts are retained.
- The Race service keeps its legacy top-ten/top-three response for older clients.

VERSION 1.0.18 - RESTORE ORIGINAL RACE LANDING DAMAGE
Race again uses the original AQ2 server-frame falling-damage calculation.
The 1.0.14 height-derived speed floor and extra gravity impulse are removed;
normal movement, damage thresholds and safe near-limit drops match normal AQ2.
Timed Race still enforces jump 0, cheats 0 and normal fall-damage protection rules.
Movement commands longer than 100 ms (for example cl_maxfps 5, or a long hitch)
invalidate the current timed attempt instead of adding artificial damage.
Restore FPS and use race_restart (Mouse1) to start a fresh attempt. Physics and
FPS settings are not rewritten. Client and multiplayer host must both update.
No existing times, medals, courses or ghosts are changed by this fix.

VERSION 1.0.18 - RACE GHOST SHORTCUT
Press F2 while playing Race to hide/show ghost runners. This uses the same
race_ghosts setting as the Race menu. Your normal-game F2 binding is preserved.
It changes visibility only; recording and first-person ghost viewing remain available.

