DramaticShapeVoxelMod archival mirror · read-only
55145e3faf17cf6075eff4f6834d657b7f8a222d

cave lineup: Mewtwo and Articuno, each where it lives

DramaticShape · 2026-08-08 · parent 0091e6d93b

cave lineup: Mewtwo and Articuno, each where it lives

Cerulean Cave B1F and Seafoam Islands B4F. The RUNS rows gain a rung column
because a cave is where the choice actually matters: STADIUM A stages the
fight on the map and wants clear ground, and a cave floor often has none,
which is what STADIUM B's carried discs exist for. Both are on A -- checked
rather than assumed, and Cerulean Cave stages fine (noArena=0), with the
walls framing the model better than open ground does.

Worth noting for anyone reading the shot: shiny Mewtwo does NOT come out lime
green here. The Stadium values rotate its purple toward blue instead, which
is the fidelity:poor case the guide flags -- the model is right, the
divergence is Stadium's own.

Changed files

tests/shiny_one.lua |  6 +++++-
 tests/shiny_run.sh  | 22 ++++++++++++----------
 2 files changed, 17 insertions(+), 11 deletions(-)

Diff

diff --git a/tests/shiny_one.lua b/tests/shiny_one.lua
index c0cd678..b4933b6 100644
--- a/tests/shiny_one.lua
+++ b/tests/shiny_one.lua
@@ -86,7 +86,11 @@ return function(game)
     end
   end
 
-  OverworldBattle.setting:setValue("stadium", game)
+  -- STADIUM A stages the fight on the MAP, which wants clear ground. A cave
+  -- floor often has none, and the mode's answer there is STADIUM B: the two
+  -- carried discs, which work anywhere. DS_RUNG picks between them per
+  -- encounter rather than forcing one choice on every location.
+  OverworldBattle.setting:setValue(os.getenv("DS_RUNG") or "stadium", game)
 
   -- THE PARTY IS BUILT FIRST, at ordinary odds, and the roll is only pinned
   -- afterwards. Pokemon.new is where shininess is decided, so setting the
diff --git a/tests/shiny_run.sh b/tests/shiny_run.sh
index 225d927..6719585 100644
--- a/tests/shiny_run.sh
+++ b/tests/shiny_run.sh
@@ -18,16 +18,18 @@ set -u
 LOVE=${LOVE:-/c/Program Files/LOVE/lovec.exe}
 DRIVER=mods/DramaticShapeVoxelMod/tests/shiny_one.lua
 
-# species | level | map | cell x | cell y
+# species | level | map | cell x | cell y | rung
 #
-# Each in its own outdoor place so no two takes look alike. A species
-# or map this dataset does not have is skipped with a line rather than
-# failing the run, so trimming this list is just deleting rows.
+# Each legendary in the cave it actually lives in. A species or map this
+# dataset does not have is skipped with a line rather than failing the run,
+# so trimming this list is just deleting rows.
+#
+# The rung column picks STADIUM A (the fight staged on the map itself) or
+# STADIUM B (the two carried discs). A cave floor is cramped and often has no
+# clear ground to stage on, which is precisely what B exists for.
 RUNS=(
-  "CHARIZARD|50|ROUTE_4|10|5"
-  "ELECTRODE|40|VIRIDIAN_CITY|20|20"
-  "VAPOREON|42|ROUTE_25|12|5"
-  "DRATINI|30|ROUTE_3|10|5"
+  "MEWTWO|70|CERULEAN_CAVE_B1F|7|4|stadium"
+  "ARTICUNO|50|SEAFOAM_ISLANDS_B4F|7|4|stadium"
 )
 
 OPTS="$APPDATA/LOVE/pokemon-love2d/options.lua"
@@ -39,12 +41,12 @@ fi
 i=0
 for row in "${RUNS[@]}"; do
   i=$((i + 1))
-  IFS='|' read -r SPECIES LEVEL MAP CX CY <<< "$row"
+  IFS='|' read -r SPECIES LEVEL MAP CX CY RUNG <<< "$row"
   echo ""
   echo "=== $i/${#RUNS[@]}  $SPECIES  at  $MAP  ==="
   echo "    close the window when you are done recording it"
   DS_SPECIES="$SPECIES" DS_LEVEL="$LEVEL" DS_MAP="$MAP" \
-  DS_CX="$CX" DS_CY="$CY" \
+  DS_CX="$CX" DS_CY="$CY" DS_RUNG="${RUNG:-stadium}" \
   POKEPORT_DRIVER="$DRIVER" "$LOVE" .
 done