A hull no maker offers is drawn by no generator, so fly now falls back to a catalog
Loadout of the named ship hull (Loadouts.Materialize with the game's chooser). The
authoring doc claimed a product-less package is console-only; it is unreachable
unless a Loadout fits it.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Writes <mods>/<id>/ship.cc and ship.glb: a shipped hull's stats, a 4x6 grid with two drives, a radiator, two energy guns and the internal modules, and a boxed model carrying every anchor. The package is read back through ShipModCatalog.ReadPackage, so the GLB's node ids and mesh roles are judged by the reader the game boots with. Refuses to overwrite a package.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
FindRoot keys on GameData/Aetheria.cc. ShipAuthoringStore.RequireShipId is the one ID rule
(Validate and create), refusing Windows device names and a trailing dot, naming no value.
The add-on's one preference is Game folder; _aetheria_repo, the repo preference and the
dotnet-run invocation are deleted. Smokes take SMOKE_GAME_FOLDER. Not yet built or tested
at this commit.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
smoke_package.py builds a primitive ship from role-tagged objects, creates it --like Djinni, saves a layout with an
internal reactor, packages it and requires validate to pass; then swaps the thruster disc for an empty and requires the
refusal naming the anchor; then restores and packages again so the left-behind package is good. Proof gate 2's
outstanding authoring action is now Package.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruling thrusters-radiators-are-meshes: thruster and radiator mounts are meshes;
the thruster's is not drawn and is the surface its exhaust emits from, the
radiator's is drawn. The assembler already required a mesh for both; it now
turns rendering off on the thruster emitter, and the preview smoke checks it.
The authoring doc states the mount rules and the mesh rule.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ShipModPlaySmoke.Run asserts thruster and weapon hardpoints, the hull MeshCollider and the map icon, prints
SHIP_MOD_PLAY_SMOKE and exits explicitly. The authoring doc gains a Unity batch smokes section.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Owner, shared-path and compose paragraphs describe the S1 shape: a ship
file holds a HullData and the ShipAuthoring visual it names through
HullData.Visual, and the derived catalog holds one hull per mod ship.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Applies corrections 1-4 of docs/moddable-ships-cut.md B.1 to
docs/moddable-ship-authoring.md: label the Quiet probe numbers as unrecorded,
name the double-held mod hull in the derived catalog, name the ShipAuthoring
catalog-routing invariant, and scope "same semantic validator" to C# callers.
The map's status header gains the S0 result (615 tests on the merge), the
S-Soul status, the corrected TradeMenu.cs path, and anchors re-taken against
the merged tree.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>