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:
parent
296b49c8b8
commit
aca04ad4cf
3 changed files with 136 additions and 12 deletions
|
|
@ -3945,6 +3945,31 @@ func quest_progress(quest: Dictionary) -> Vector2i:
|
|||
QUESTS.GOAL_GARRISONED:
|
||||
var stationed: int = int(goal.get("count", 1))
|
||||
return Vector2i(mini(garrisoned_vessel_count(), stationed), stationed)
|
||||
QUESTS.GOAL_VESSEL_BUILT:
|
||||
# Counted ANYWHERE, not just in the fleet: a transporter never
|
||||
# joins one, and the step being taught here is "you built it".
|
||||
var built: int = int(goal.get("count", 1))
|
||||
return Vector2i(mini(vessel_census(String(goal.get("vessel", ""))), built), built)
|
||||
QUESTS.GOAL_BUILDING_STOCK:
|
||||
# The fullest one of its kind, not the total: the lesson is that
|
||||
# a SINGLE office has to be stocked, and summing across three
|
||||
# half-empty ones would credit it without teaching it.
|
||||
var stocked: int = int(goal.get("amount", 1))
|
||||
var resource_type: String = String(goal.get("resource", RESOURCE_ORE))
|
||||
var wanted_type: String = String(goal.get("building", ""))
|
||||
var fullest: int = 0
|
||||
for building in buildings:
|
||||
if String(building.get("type", "")) == wanted_type:
|
||||
fullest = maxi(fullest, building_resource(int(building.id), resource_type))
|
||||
return Vector2i(mini(fullest, stocked), stocked)
|
||||
QUESTS.GOAL_STATION_CREW:
|
||||
var crewed: int = int(goal.get("count", 1))
|
||||
var capability: String = String(goal.get("capability", "transport_hub"))
|
||||
var standing: int = 0
|
||||
for building in buildings:
|
||||
if building_has_capability(building, capability):
|
||||
standing += station_crew(int(building.id))
|
||||
return Vector2i(mini(standing, crewed), crewed)
|
||||
QUESTS.GOAL_BANKED:
|
||||
var banked: int = int(goal.get("amount", 1))
|
||||
return Vector2i(mini(banked_resource(String(goal.get("resource",
|
||||
|
|
|
|||
Loading…
Reference in a new issue