The shield glow (display.shield_glow and its Light Show intensity) and the
overshield effect (display.overshield_effect) were each player's own, in
network games too. The glow lights what is around a shield as it flares,
so a player who had it saw enemies a player without it did not, and the
overshield effect keeps an overshielded player lit: anyone who did not
turn them on was at a disadvantage.
Now a network game's are the host's, for every machine: SHIELD EFFECTS in
Server Setup > Player Options (network.shield_effects): STOCK (the
default), GLOW, LIGHT SHOW, OVERSHIELD, GLOW+OVERSHIELD or
SHOW+OVERSHIELD. Each player's own settings apply offline only (the
campaign, split screen), and Video Setup's helps say so.
- network_shield_effects.c: the host sends its choice to each client
reliably when it is ready (distributed message 91) and to them all when
it changes, as the aim assist policy is sent; a client takes it only
from the host's stream, whole and valid, and draws stock until it has it.
shield_glow.c and overshield_effect.c draw what it says in a network
game.
- Network version 36: a build that would draw its player's own cannot
join. network_format.txt recorded.
- Player Options' rows 27 apart in place of 30 (ce_menus.py's
CHILD_OFFSETS), so that the tenth fits above the help, which keeps its
three lines, and the screen's divider and buttons stay where they were;
test_aim_assist.py's layout check follows.
Checked: ninja android builds, the changed files compile for the web, and
CI's tests pass (936). On the Android emulator, Player Options shows the
row and steps through its values with each value's help, and Extra
Effects shows its new helps. Not played as a network game.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>