From 55145e3faf17cf6075eff4f6834d657b7f8a222d Mon Sep 17 00:00:00 2001 From: DramaticShape Date: Sat, 8 Aug 2026 13:49:26 -0400 Subject: [PATCH] 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. --- tests/shiny_one.lua | 6 +++++- tests/shiny_run.sh | 22 ++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) 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