Phase 9: Iris and Complementary Reimagined, off by default

Adrian, 2026-11-09: set up the shader but keep it disabled by default. Iris
1.8.14-beta.1 (built for the pack's Sodium 0.8.13) and Complementary Reimagined
r5.9.3, both client only and fetched from Modrinth. Default Options' extra
folder ships config/iris.properties with shaders off and Complementary
preselected, copied only when a player has none. Toggle Shaders is on M, the
only free letter; Iris's other keys are unbound. tools/build.py fails if the
settings name a shader file the pack doesn't install.

Smoke test passes; client dependencies are satisfied. Not launched on a client.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
claudeandClaude Opus 5.5 committed 2026-11-09 13:08:14 +01:00
1 parent f7ea371862
commit 0741c84077
13 files changed
+71 -3

No files matched your search

+2
View File
@@ -331,6 +331,8 @@ Adrian's choices: Pokémon with no biome on the island become rare spawns in fit
- 67 species in 31 lines that spawn only in biomes the island lacks, or not at all (Rotom): each line gets a home in the closest-fitting zone (`world/zones.json` → `homeless`), as a rare spawn anywhere in that zone at its levels. Conditions tied to the missing biomes are dropped. Existing spawns and homes don't move. They show in `docs/zone-species.md` and in JEI.
- 23 legendaries, mythicals, Ultra Beasts and Paradox Pokémon, with no spawn data: crafted summons (below). Naganadel comes from evolving Poipole, so 22 Sigils.
**Shaders** (Adrian, 2026-11-09: set up, off by default). Iris (client only, the beta built for the pack's Sodium 0.8.13) and Complementary Reimagined are installed; the pack's default `config/iris.properties` (`pack/config/defaultoptions/extra/`) has shaders off with Complementary preselected, and Default Options copies it only when the player has none, so nobody's own choice is overwritten. The Toggle Shaders key is M, the only free letter; Iris's Reload and Selection keys are unbound (their defaults R, O and K are taken; the selection screen is in Video Settings). `tools/build.py` fails if the named shader file isn't the one the pack installs.
**Crafted summons** (Adrian, 2026-11-09). Each legend has a Sigil (`cobblesurvival:summon_sigil`, one item told apart by its custom data), crafted from four of a zone material, four of a ring item and a core: tier 1 (Lv 70) diamond and netherite ingot, tier 2 (Lv 80) diamond and nether star, tier 3 (Lv 90: Rayquaza, Mewtwo, Eternatus) netherite ingots and nether star. Used in the zone written on it, it summons a wild one six blocks ahead, one at a time within 96 blocks. It fights like a boss (`bosses/summon_<species>.json`: area attacks by level and type, a 32-block arena, the Guardian's Ward, so at most a quarter of its HP per attack), except it can be caught: the pack's usual catching rules apply. On capture it loses every boss mark and is an ordinary Pokémon. If it's knocked out, the Sigil is spent; if the fight is lost it heals and stays. Which zone, tier and material: `world/summons.json` → `tools/summons.py` (recipes and data, with the name and "use in" text on the recipe's result so the client needs no server data). The quest book has a Legends chapter with a quest per Sigil; JEI lists each Sigil as its own item, and the Island Drops pages say where a legend is summoned. Moltres, Regigigas and Eternatus are guardians too: those stay uncatchable, the summoned ones are separate.
Self-tests: `every_implemented_pokemon_is_obtainable` (every implemented species' line spawns, comes from a fossil or has a Sigil; a new Cobblemon version adding species fails it until they have a home), `sigil_summons_a_catchable_legend`.