Files
fishing-game/tests
andrey aace2b130a Ещё пять озёрных видов (Этап 33): SPECIES 11→16 — плотва/густера/вьюн/линь/навага, чтобы «побольше разных рыб» не трогало Реку.
Новые виды добавлены СТРОГО в конец SPECIES (после crayfish этапа 5): SPECIES[0..7] пинятся тестами (§573/§1524/§2446 SPECIES[0], §9j/M4/M6 по id) и квестами (QUEST_TPLS индексы 0..2) — вставка в середину ломала их молча. Параметры: bleak r0 18🪙/кг 0.05–0.6, roundel r0 24 0.1–0.9, eelpout r1 55 0.05–0.4 (🐍), tench r2 80 0.3–4.0, navaga r3 250 0.3–2.5; minDist/strength вписаны в существующую кривую (0.05→0.75, 0.28→0.70), поэтому fishForce()/updateReel() не тронуты и Monte-Carlo по PHYSICS-RESEARCH не требовался.

Река не изменилась: RIVER_IDS не тронут → роллы реки прежние (pin lc3). NIGHT_WEIGHTS дополнен всеми пятью id — SPECIES_NIGHT строится как NIGHT_WEIGHTS[s.id], у пропущенного id вес стал бы undefined (упал бы lc2 и сам ролл).

Баланс Озёр удержан подъёмом дорогой рыбы: прикидка E[выручка/улов] (середина диапазона веса × цена) давала просадку 91.9→73.5 🪙 день (ночь 134.1→113.1) — мелочь размывает доход, а Река для сравнения 65.1. Компенсация в LAKE_*_WEIGHTS: gold 1.2→1.6, sturge 3→3.5 (день)/4→4.5 (ночь), crayfish 1.5→2/2→2.5 → стало 84.7/122.2 при доле gold 0.56%/0.68% (было 0.55%/0.64%): Озёра остаются доходнее Реки.

Emoji: четыре вида взяли 🐟/🐠 из уже покрытого субсета, только 🐍 потребовал перегенерации — субсет 57→58 глифов, woff2 80 КБ (+107 КБ base64). LOCATIONS[1].desc/descEn — перечисление озёрных рыб; комментарии «все 11» → «все 16» в pickSpecies() и у species_8 (check = SPECIES.every, масштабируется сам, id ради старых сейвов не тронут). Сейв-миграция не нужна: caught[id] создаётся в catchFish(), в старых сейвах новых записей нет — дневник показывает «???».

Тесты: lc1 — SPECIES.length 16, пины параметров пяти новых видов, порядок (slice(0,8) не сдвинут, slice(8) — ровно 8 озёрных) и заполненность всех полей включая nameEn (иначе EN-ветка trName()); lc2 — LAKE_SPECIES(_NIGHT) 16, SPECIES_NIGHT.length 16 + веса числа; lc3 без изменений; lc4 — текстовка «все 16» (состав из SPECIES.map, подстраивается сам); lc9 — строк дневника 16; lc10 — сетап «+3 новых» → «+8 озёрных». 178/178 PASS, exit 0; check.mjs OK; pack.mjs + pack-smoke 6/6 (115.1 КБ, один index.html в корне). Скриншоты RU/EN перегенерированы (дневник вырос).

Доки: README (16 видов + состав Озёр), AGENTS.md (раздел «Локации»: 16 видов + правило «новые виды только в конец SPECIES» и обязательность ключей во всех трёх таблицах весов), DEVLOG Этап 33 (включая флейку: lc4 зовёт pickSpecies() без аргумента → dist=undefined, штраф minDist не действует, значит на «каждый вид ≥1 за 3000 роллов» влияет только вес — новому озёрному виду нужно ≥ ~2).
2026-09-18 19:13:22 +03:00
..