Phase 6 done: see-through cores, faint on sacrifice and rebirth; Phase 7 design

Adrian (2026-11-02): the cores should be transparent so the Pokémon
shows; the Pokémon's death sound when a sacrifice is made or a rebirth
ends; then start the next phase (Phase 6 approved).

- Cores drawn as a solid frame around tinted glass, rendered
  translucent, no occlusion (tools/machine_assets.py).
- The shown Pokémon plays Cobblemon's faint animation and its cry
  pitched down (Cobblemon has no death sounds), vanishes after 2 s; a
  reborn Pokémon then shows in its new form. Tests check the new form.
- Phase 7 decisions (every guardian gets area attacks, Groudon for the
  Basalt Furnace, Giratina replaces the Ender Dragon, dying or leaving
  the arena loses) and design in docs/design.md; README status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
claudeandClaude Opus 5.5 committed 2026-11-02 15:58:01 +01:00
1 parent c2a87f178e
commit dc4568e023
29 files changed
+116 -42

No files matched your search

@@ -58,8 +58,8 @@ object MachineTests {
SelfTestCase("heat_core_cooks_with_hoppers", 800, ::heatCore),
SelfTestCase("dynamo_core_powers_cables", 100, ::dynamo),
SelfTestCase("synthesis_core_rolls_drops", 100, ::synthesis),
SelfTestCase("altar_core_sacrifice_needs_confirmation", 60, ::altar),
SelfTestCase("rebirth_core_makes_a_shiny_first_stage", 100, ::rebirth),
SelfTestCase("altar_core_sacrifice_needs_confirmation", 120, ::altar),
SelfTestCase("rebirth_core_makes_a_shiny_first_stage", 200, ::rebirth),
SelfTestCase("machine_preview_shows_the_shell", 300, ::preview),
SelfTestCase("machine_showcase_builds_every_machine", 100, ::showcase),
)
@@ -348,6 +348,13 @@ object MachineTests {
s.helper.startSequence()
.thenExecute { core.rebirthAt = level.gameTime }
.thenWaitUntil { s.check(core.reborn) { "the rebirth didn't finish" } }
.thenWaitUntil {
// The old form faints first; then the chamber shows the new one.
val shown = displays(level, core.blockPos)
s.check(shown.size == 1 && shown.single().pokemon.species.name == "Charmander") {
"after the rebirth the chamber shows ${shown.map { it.pokemon.species.name }}, not one Charmander"
}
}
.thenExecute {
core.use(player)
val back = Cobblemon.storage.getParty(player).firstOrNull { it.uuid == pokemon.uuid }