No description
  • GDScript 96.3%
  • GDShader 2%
  • Shell 0.8%
  • Python 0.6%
  • HTML 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Loïc Wisniewski 721913c040 Guard the definition catalog against silent .tres property loss
Opening the project in the Godot editor re-saves .tres files, and its writer
DROPS properties it considers default-valued. An empty-looking
PackedStringArray is the usual casualty, and it has now cost this project
twice - both times silently, and both times the damage surfaced somewhere
else entirely:

  GasBurnerBuildingDefinition lost `capabilities` and `collected_outputs`,
  which took the burner's whole conversion with it.

  InterceptorVesselDefinition lost `capabilities`, `hull_points`,
  `build_time`, `icon` and `glow_color` - so the starting vessel had no
  cargo hold, and a full suite came back with ten unrelated tests broken
  because nothing anywhere could mine.

Neither raised an error. The resource still loaded; it was just quietly less
than it had been.

test_definitions_intact asserts the SHAPE of the catalog rather than any one
value: every vessel has a name, stats, a hull and its components; a hold and
a "cargo" capability imply each other; every building has a description, a
price, hit points, its build-menu wiring and at least one capability; and a
converter keeps the fields its conversion needs. Whatever the editor eats
now fails here, next to the thing that was eaten.

Verified against both real incidents by reproducing them: deleting the
interceptor's capabilities line fails with "cargo_capacity 20.0 but
capabilities []", and deleting the burner's collected_outputs fails with
"converts but lists no collected outputs".

The first draft of that last check looked for the conversion fields on the
DEFINITION, where they are not - they live on its logistics sub-resource -
so it answered null and never fired. It passed while the burner sat there
broken, which is the same class of quiet as the bug it is guarding.

Also restores what the editor took from the gas burner this time round.
2026-08-29 14:38:51 +02:00
android Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
audio #148: keep the theme's master in the repository 2026-08-29 13:54:37 +02:00
buildings Guard the definition catalog against silent .tres property loss 2026-08-29 14:38:51 +02:00
controllers #147: one resource per line, and the price back under its button 2026-08-29 13:05:46 +02:00
core #145, #144, #143: a quest that could not be finished, and two boxes that overhung 2026-08-29 12:51:09 +02:00
enemies #114: the enemy bomber flies, and its bombs arrive 2026-08-23 21:58:56 +02:00
fonts Skill tree, node-based building animation, bigger UI, and a 19x faster test suite 2026-08-11 15:00:41 +02:00
logistics Add the .uid files Godot generated for the newest scripts 2026-08-24 12:10:41 +02:00
planets #129 (#131, #132, #133): a quest chain, and a World Ship out of reach 2026-08-28 14:41:03 +02:00
PlanetSetups #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
resources #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
shaders Add the .uid files for the newest tests 2026-08-24 20:50:51 +02:00
shots Remove the one-way ore API superseded by the transfer menu 2026-08-12 13:07:52 +02:00
surface #140: the objective moves behind a button next to the map's 2026-08-28 15:37:13 +02:00
tests Guard the definition catalog against silent .tres property loss 2026-08-29 14:38:51 +02:00
ui #147: one resource per line, and the price back under its button 2026-08-29 13:05:46 +02:00
vessels #146: shots, deaths and collapses are heard 2026-08-29 13:05:47 +02:00
vfx #130, #135: a vessel's death takes a moment, and leaves an interceptor 2026-08-28 15:05:02 +02:00
world #140: the objective moves behind a button next to the map's 2026-08-28 15:37:13 +02:00
.gitignore Add a WSL path to the test runner 2026-08-22 14:40:44 +02:00
export_presets.cfg Fix the web build: a wasm trap on integer % 0, and buttons that never fired 2026-08-19 01:08:09 +02:00
icon.svg Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
icon.svg.import Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
project.godot #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
ui_theme.tres Skill tree, node-based building animation, bigger UI, and a 19x faster test suite 2026-08-11 15:00:41 +02:00
web_shell.html Fix the web build: a wasm trap on integer % 0, and buttons that never fired 2026-08-19 01:08:09 +02:00