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

@ -408,6 +408,27 @@ func _process(delta: float) -> bool:
print("the vortex took %d vessels and left one interceptor" % (convoy_size - 1))
if not director.whiteout_teleported:
return _fail("the screen reached white without teleporting the fleet")
# #209: the prologue's charted space belongs to a place 16000
# units away. Carried over, it also completed "chart 30 sectors"
# before the player had flown anywhere.
#
# Not "empty": the tracker charts the neighbourhood around the
# fleet the moment it arrives, so what is asserted is that
# nothing REMOTE survived - every chunk still on the map is one
# the survivors can see from where they now are.
# Measured from where the fleet actually IS: the tracker charts a
# neighbourhood around the formation's centroid, which sits a
# little off the spawn point, and the survivor drifts after
# arriving. Two sectors of slack over the sensor's own radius
# covers both without admitting anything from the convoy's route,
# which is thousands of sectors away.
var here: Vector2i = WorldGen.chunk_coords(fleet.get_centroid())
var reach: int = 1 + 2
for chunk in game_state.explored_chunks:
var away: int = maxi(absi(chunk.x - here.x), absi(chunk.y - here.y))
if away > reach:
return _fail("chunk %s, %d sectors from the survivors, survived the breach" \
% [chunk, away])
if fleet.get_formation_origin().distance_to(director.DEFAULT_SPAWN) > 1.0:
return _fail("whiteout revealed the fleet at %s instead of default spawn %s" \
% [fleet.get_formation_origin(), director.DEFAULT_SPAWN])