Teach the crews and the berths the game now asks the player to keep

#216 and #219 turned two things into player work without saying so anywhere:
transporters are built and assigned by hand, and a berth in the fleet is a
structure that has to be supplied. Five quests now teach both.

For the hub: build a transporter at a crafter, then assign it. Two steps,
because they happen in different places and one quest covering both strands
whoever misses the second in front of a hub that does nothing. The closing
line warns that they wear out, since the alternative is finding out when a
route quietly stops.

For the fleet: research Berth Authority, build an office, PUT ORE IN IT, and
only then crew the berth. The stocking step comes before the vessel on
purpose - the other way to learn it is to watch a vessel you paid for be
destroyed.

And a campaign-breaking bug of my own: #219 moved capacity onto the office,
so "fly two vessels at once" - sixth in the chain, six quests before
anything that could hold a second - could not be finished at all. It sits
after the office now, and a new rule in the chain test refuses any quest
that asks for more hulls than the player can yet hold. Verified by putting
the bug back: it fails, naming both steps.

Also: the conquest quest still said "take every capture point", which #211
deleted from the game.

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-06 14:43:35 +02:00
commit aca04ad4cf
3 changed files with 136 additions and 12 deletions

View file

@ -247,6 +247,34 @@ func _catalogue_cases() -> bool:
print("a second hull at %d and banking at %d, both before anything costing more than one %d-unit hold" \
% [grew_fleet, taught_banking, one_hold])
# --- T. a fleet the player cannot yet hold ---------------------------
# #219 moved fleet capacity onto the Fleet Office, and the chain went on
# asking for a second hull six quests before anything that could hold one
# - an unfinishable quest that stalls the whole campaign. Rule S already
# says a second hull comes before expensive structures; this says it
# comes AFTER the one that makes it possible at all.
var capacity_at: int = -1
for i in range(QUESTS.count()):
var goal_t: Dictionary = QUESTS.at(i).goal
if String(goal_t.kind) == QUESTS.GOAL_BUILDING \
and String(goal_t.building) == GameState.BUILDING_FLEET_OFFICE:
capacity_at = i
break
if capacity_at < 0:
return _fail("no quest ever builds a Fleet Office, so the fleet can never grow past %d" \
% GameState.BASE_FLEET_SIZE)
for i in range(QUESTS.count()):
var goal_v: Dictionary = QUESTS.at(i).goal
if String(goal_v.kind) != QUESTS.GOAL_FLEET_VESSEL:
continue
if int(goal_v.get("count", 1)) <= GameState.BASE_FLEET_SIZE:
continue
if i < capacity_at:
return _fail("quest %s wants %d vessels at step %d, but the fleet cannot hold more than %d until step %d builds a Fleet Office" \
% [QUESTS.at(i).id, int(goal_v.count), i, GameState.BASE_FLEET_SIZE, capacity_at])
print("the fleet is grown at %d, before any quest asks for more than %d vessels" \
% [capacity_at, GameState.BASE_FLEET_SIZE])
# --- Q. #141: research is taught before it is assumed ----------------
# The first structure in the chain that needs a doctrine must have that
# doctrine as a quest of its own first. Only the FIRST one: once the