spaceship/surface/PlanetSetup.gd
Loïc Wisniewski 6e13b6397c 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
2026-09-05 13:31:25 +02:00

24 lines
1.3 KiB
GDScript

class_name PlanetSetup
extends Resource
# A hand-authored enemy layout for a planet surface. Chosen
# deterministically per planet (see PlanetSetups.setup_for_planet) rather
# than generated - #40 wants curated setups, not procedural ones - and
# stored as a committed .tres under res://PlanetSetups/, not in a save.
@export var setup_id: String = ""
@export var display_name: String = ""
# Which PlanetSurfaceProfiles id (e.g. "rocky", "gas") this setup was
# authored for; only setups matching a planet's own profile are eligible.
@export var surface_profile_id: String = "rocky"
# Surface-local positions (the fleet lands at Vector2.ZERO). #211 removed the
# capture_points that used to sit beside these: the garrison IS the objective
# now, so the enemies are the whole of what a setup places.
@export var enemy_spawns: Array[Resource] = []
# Research points awarded for conquering this map, set in the map editor.
# A harder lab is worth more, and how hard a lab IS depends on the layout
# authored here - how many and what kind of defenders - which the planet
# type cannot know. 0 means "use whatever the
# planet type awards", so every setup written before this existed keeps its
# old value rather than silently dropping to nothing.
@export var research_point_reward: int = 0