spaceship/ui/menus/ResearchPointsMenu.gd
Loïc Wisniewski 8462099068 Teach where research data comes from, and say so when it runs out
The scanner quest moves ahead of the gas burner and gains the hunt it exists
for: a research lab world, which pays several times what an ordinary planet
does and is the only reliable source of research data. Finding one is what
the scanner is FOR, so the conquest record now remembers which kind of world
was taken and a quest can ask for that kind.

Bombers get a pair of quests after the transporters. That pulled the ship lab
up with them - a vessel is unlocked AT the lab, so asking for a bomber before
one exists would have been unfinishable, the same trap second_hull fell into.

And both research screens now explain a shortfall instead of hiding it. The
skill tree refused a doctrine in silence; the ship lab said "already queued
or complete", which is not why it refused and sends the player to look at the
wrong thing. Both open an explainer naming what was wanted, what is held, and
where data actually comes from.

#192's rule - a tool is taught immediately before the quest that needs it -
now points at the scanner's FIRST use rather than its only one, with the
world survey still required to follow it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
2026-09-06 16:24:09 +02:00

25 lines
1.2 KiB
GDScript

extends "res://ui/menus/ModalMenu.gd"
# Where research data comes from, said at the moment the player finds out they
# have none.
#
# Both research screens used to answer a shortfall badly: the skill tree
# refused the node and said nothing at all, and the ship lab said "already
# queued or complete", which is not why it refused. Research data is the one
# currency in the game with a single non-obvious source - you take it off
# planets, and lab worlds carry most of it - so a player short of it needs
# telling where to go, not a silent button.
@onready var have_label: Label = $HaveLabel
@onready var detail_label: Label = $DetailLabel
func open_for_shortfall(needed: int, subject: String) -> void:
open_menu()
have_label.text = "%s NEEDS %d - YOU HAVE %d" % [
subject.to_upper(), needed, GameState.research_points]
detail_label.text = ("Research data is not mined and not built. It comes off worlds "
+ "you take from whatever is holding them, and a research lab world pays "
+ "several times what an ordinary one does.\n\n"
+ "Build a planet scanner to find the nearest lab world, fly there, and "
+ "destroy its garrison. What they were working on becomes yours.")