Take planets by killing what defends them

#211 conquest is the fight now: a planet registers the garrison its setup
authors, each defender's own death counts against it, and the last one takes
the world. The capture points - stand in a ring, wait out a timer, once per
ring - are gone, along with the editor palette that placed them.
#212 conquest opens a dialog on the surface naming the research points
recovered; the award travels with the signal, after it is banked.
#209 the prologue's charted sectors go with the breach, so the map the
survivors keep is of where they now are - and "chart 30 sectors" is no
longer complete before they have flown anywhere.
#218 enemy variety is gated on the FLEET, not on wave strength: a starting
fleet meets chasers only at any wave number, and each vessel past three
opens one more kind.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
This commit is contained in:
Loïc Wisniewski 2026-09-05 13:31:25 +02:00
commit 6e13b6397c
42 changed files with 540 additions and 749 deletions

View file

@ -14,7 +14,7 @@ extends SceneTree
# C. landing on a black hole spawns no resource provider and no capture
# points at all (void's features_scene is null, and it has no
# authored PlanetSetup) - yet the planet is immediately conquered
# (register_capture_points treats zero required points as vacuous),
# (a garrison of zero is vacuously already beaten),
# so an extractor is buildable there right away
# D. an extractor on a black hole mines dark matter locally exactly like
# any other extractor, and a hub transporter banks it through the
@ -132,7 +132,7 @@ func _process(delta: float) -> bool:
# resolved at compile time, before autoloads are registered. Same
# hazard the header of test_planet_setups.gd documents.
if not game_state.is_planet_conquered(game_state.planet_id) \
and int(game_state.total_capture_points(game_state.planet_id)) == 0:
and int(game_state.garrison_total(game_state.planet_id)) == 0:
return _fail("a black hole with no capture points required is not marked conquered")
print("no resource provider; %d authored feature host(s)" % feature_host.get_child_count())