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