Phase 1 A/C/D: void room fixed, authored portal + spawn FX, verbs finally taught

SLICE A - rooms become places: ExpeditionBiome duplicated to sub-slot 1
(X+1500) - ground, 205 decor children, rim cliffs, ambience; collider ring +
3 landmark colliders duplicated in the subscene; NEW in-room cover at BOTH
slots (4 collidable rocks each: Environment-layer box colliders in the
subscene + matching Synty rock meshes in Game.unity, placed clear of the
landing point, portal spot, spawn ring and boss spawn). Half of all rooms
previously played on a literal void.

SLICE C - owned FX wired: VFXConfig gains Portal + EnemySpawn slots
(FX_Portal_Round_01 / FX_Dust_Big_01 from PolygonParticleFX); the portal
beacon prefers the authored effect (procedural pillar stays as fallback);
enemies get a spawn-emerge cue on the ghost add-edge (primed-scan guard
skips the connect flood).

SLICE D (teaching) - the two undiscoverable verbs are now taught: dash on
the Move step, class ability + attack on the Rooms step (scheme-aware
glyphs); How-to-Play Controls adds Class ability + Dash rows and fixes the
wrong RT glyph; Loop step 1 mentions class pick + prep; the stale '50
starting Ore' now interpolates Tuning.StartingOre.

456/456 EditMode.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 12:45:25 -07:00
parent fefd7168ec
commit a482a9c4ed
8 changed files with 25039 additions and 5 deletions
@@ -107,11 +107,11 @@ namespace ProjectM.Client
switch (step)
{
case Welcome: return "CLEAR 2 EXPEDITIONS to charge the Engine, then survive the FINAL SIEGE. (Space to continue · Esc → How to Play)";
case Move: return move + " — Move";
case Build: return build + " — open Build, place a Turret by your Core (your 50 starting Ore covers it)";
case Move: return move + " — Move " + (gamepad ? "B" : "LShift") + " — Dash (brief invulnerability)";
case Build: return build + " — open Build, place a Turret by your Core (your " + ProjectM.Simulation.Tuning.StartingOre + " starting Ore covers it)";
case Fabricator: return "Build a Fabricator — turrets need Charge (Ore → ammo)";
case ReadyUp: return "Press T (or click READY UP) — when everyone is ready, the party launches";
case Rooms: return "Fight through the rooms — attack the glowing crystals to haul resources home";
case Rooms: return (gamepad ? "X attack · LT class ability" : "LMB attack · RMB class ability") + " — clear the room; shoot the glowing crystals for your haul";
case Boon: return "Clear the room — pick 1 of 3 BOONS, then choose your path on the map";
case Return: return "Fell the ALPHA HUSK, then return home — your haul + the Engine charge (+1) come with you";
case Defend: return "Defend the Core! — a completed run provokes a retaliation siege";