Варианты рыб: медные/кварцевые/изумрудные/алмазные + буст шансов особых (Этап 30). Лестница VARIANTS — 8 вариантов, порядок ролла = порядок массива: copper ×1.5 @0.12 → silver ×2 @0.08 → quartz ×2.5 @0.07 → gold ×3 @SHINY_CHANCE (0.03→0.06, живая) → emerald ×4 @0.01 → diamond ×4.5 @0.007 → rainbow ×5 @0.005 (топ: самая редкая и наибольший множитель), иначе normal; P(особой) ≈31% (было ≈8.5%), E[mult] ≈1.36 (было ≈1.13); rollVariant() обобщён — ролл по массиву VARIANS без хардкода id. Счётчики улова: карта VARIANT_KEY={copper:'cp',silver:'sv',quartz:'qz',gold:'sn',emerald:'em',diamond:'dm',rainbow:'rb'} (sn = «shiny» = gold — семантика не тронута); catchFish() пишет caught[id] обобщённо (дефолты всех счётчиков + инкремент по ключу), миграция loadSave() — дефолт 0 для всех VARIANT_KEY-ключей (старые сейвы читаются). Дневник — обобщённые мини-чипы (обычная + 7 особых в порядке лестницы, подписи trName), новые цвета jv-cp/jv-qz/jv-em/jv-dm. Карточка улова — оформление copper-card/quartz-card/emerald-card/diamond-card (медь — бронза, кварц — молочно-сиреневый, изумруд — зелёный, алмаз — ледяной голубой: бейдж+панель+свечение), showCard() тоглит классы по всем VARIANTS. full_variants «Полная коллекция» — check на все 8 вариантов (награда прежняя +5000 разово, coinPct 0.05; ачивок по-прежнему 29, сумма achBonus().coinPct 0.16). Дождь M8 — уже обобщён в variantChance() (все особые ×2,5), тост «шанс особых рыб». Тесты: §10c(1) пин 8 вариантов/множителей/шансов, (2) +cp/qz/em/dm=0, (5) границы ролла под новый порядок (в eval сброс погоды — дождь ×2.5 сдвинул бы границы), (6) миграция всех счётчиков, (7) probe всех 8 вариантов, (8) full_variants 8×8; M8(2) — ×2.5 всех 7 особых (tol 1e-9); §lc10 — сетап 8 счётчиков; флейка-фикс: медь роллится ПЕРЕД gold — тест «золотая рыба» (§9a) и orca-шаг 8 получили forceVariant='gold', восстановление SHINY_CHANCE во всех тестах 0.03→0.06. 177/177 PASS, exit 0; check.mjs OK. Доки: README (лестница/дождь/тесты), AGENTS.md (M6/M2-пин), DEVLOG Этап 30, BROWSER-TESTING (шаг 8).
This commit is contained in:
@@ -46,7 +46,7 @@ node tests/orca-playtest.js # скриншоты orca-*.png кладутся
|
||||
| 7 | «Отлично!» → «🛒» → polling `#shop` → скриншот → вкладка «📔» → скриншот → вкладка «🎯» → скриншот → вкладка «🏅» → скриншот → «×» | лавка открыта/закрыта, дневник/квесты/достижения рендерятся |
|
||||
| 7c | вкладка «🎨» → polling рендера → `save.coins = 200000` (выдача) → покупка поплавка «Красный» (**клик и чтение состояния в одном eval**) | группы «Лодка»/«Поплавок», списание (−500), авто-экипировка `save.bobberSkin=1` |
|
||||
| 7d | вкладка «🗺️» → покупка «Озёра» (**клик + состояние + тост в одном eval**) → скриншот → возврат на «Реку» | авто-переход `save.location=1`, тост «Добро пожаловать на Озёра!», списание (−100000), выбор купленной |
|
||||
| 8 | `forceWeather = "rain"` → пилюля 🌧️ → ratio `variantChance(gold)` дождь/ясно (**в одном eval**) → `SHINY_CHANCE = 1` → полный цикл → скриншот → проверка DOM → ачивки → `SHINY_CHANCE = 0.03; forceWeather = null` | бейдж «ЗОЛОТАЯ» + `gold-card`; ×2,5 (M8); ачивки Этап 22 `first_shiny`+`rain_variant` (wxRainV=1)+`skin_first`+`lake_first` — выдаются НА УЛОВЕ (checkAchievements в catchFish, не в лавке) |
|
||||
| 8 | `forceWeather = "rain"` → пилюля 🌧️ → ratio `variantChance(gold)` дождь/ясно (**в одном eval**) → `SHINY_CHANCE = 1; forceVariant = "gold"` → полный цикл → скриншот → проверка DOM → ачивки → `SHINY_CHANCE = 0.06; forceVariant = null; forceWeather = null` | бейдж «ЗОЛОТАЯ» + `gold-card`; ×2,5 (M8); ачивки Этап 22 `first_shiny`+`rain_variant` (wxRainV=1)+`skin_first`+`lake_first` — выдаются НА УЛОВЕ (checkAchievements в catchFish, не в лавке) |
|
||||
| 8b | `forceWeather = "fog"` → пилюля 🌫️ → ratio `biteChance()` туман/ясно (**в одном eval**) → снятие форса → polling скрытия пилюли | клёв ×1,5 (M8), пилюля показ/скрытие |
|
||||
| 9 | цикл до `REEL` → `reel.d = reel.d0 * 1.45 + 2` → polling `WAIT` **с чтением тоста в том же eval** | тост содержит «Сбежала» |
|
||||
| 9e | хаб «Меню» (Э29): монеты → лавка → × → ⏸ → «В меню» → «Магазин»/«Достижения»/«Дневник» (× шаг назад в хаб) → «Инструкции» → «Играть» → ⏸ → «В меню» → 🔊 ×2 → «Продолжить»; скриншот `orca-gamemenu.png` | монеты открывают лавку на «Лавке» (tabTackle), из хаба — свои вкладки 🏅/📔, × возвращает в хаб (`uiOpen=true`, геймплей не стартует), Инструкции = `#menu`, mute-тогл на каждом клике, «Продолжить» → `uiOpen=false`, `state=IDLE` |
|
||||
|
||||
Reference in New Issue
Block a user