Files
fishing-game/tests
andrey f88627bfd4 Этап 63: внешний вид снасти — бланк от RODS.look, крючок от LURES.hook (чистый визуал). Оснастка на воде теперь меняется от экипированной снасти: удочка рисовалась хардкодом (#5d4023 w3), крючок тоже (серый) — покупка «Титана»/«Блёстки» была невидима. Четвёртый класс скинов сознательно НЕ вводили (два источника истины на пиксель + миграция сейва/ачивки/пины). Данные только в записях таблиц (паттерн Э57): RODS.look={c,w,band?,fx:'glint'?} — Дедова как раньше, Стеклопластик зелёный, Карбон чёрный+кольцо, Титан стальной+мерцание; LURES.hook={c,fx:'gold'?,bait?,bead?} — Червь с розовым червём на цевье, Воблер — хром+красная бусина, Блёстка — золото с мерцанием. Хелперы rodLook()/hookRec() (паттерн lineSkinRec: clamp+fallback), effRod/effLure — Object.assign-копии, косметика проходит через rod()/lure(). drawBoat(): glint/band в save/restore (тень не перетекает), длина бланка и tip НЕ тронуты (tip якорит леску); drawRig(): gold — паттерн lineShadow(). Баланс/сейв/ачивки/i18n/emoji не тронуты, миграция не нужна. Тесты §10e2: данные look/hook + rod()/lure() + смоук rod/lure 0..3 в WAIT. Проверки: check.mjs OK; test.js 258/258 PASS exit 0. Доки: AGENTS.md (новая строка «Внешний вид снасти», тест-глобалы), DEVLOG (Этап 63).
2026-11-06 14:01:16 +03:00
..
Рыба-босс в каждой локации (Этап 37): BOSS_BY_LOCATION={0:'sturge',1:'crayfish',2:'swordfish',3:'whale'} — босс = существующий вид текущей локации (Осётр/Гигантский рак/Рыба-меч/Синий кит, новых видов в SPECIES нет), условие в startBite() по save.location, тот же паттерн M4 (клон с boss:true, 30% или forceBoss). Единое правило веса: любой босс 20–50 кг (hook(): w=sp.boss?20+rand*30:rollWeight(sp), до d0/ov/st0, тот же w в reel.w/catchFish) — карманного рака нет, но босс до 50 кг > maxW Титана 40: при w>40 в режиме «держи кнопку» возможен настоящий обрыв (вываживается контролем натяжения) — зафиксировано в DEVLOG как материал баланс-этапа. Награда ×5/фазы/карточка «-БОСС» — без изменений, все вид-независимы; старые M4-пины (§9k/§9l(3)/M6(4)) прошли байт-в-байт без правок (награда читает фактический w, фазы нормированы на d0). Ачивки: boss_first — нейтральный текст «Победи рыбу-босса», +3 новые lake_boss 🦞 / sea_boss 🦈 / ocean_boss 🐳 (check по save.bosses[id], БЕЗ coinPct — пин §10c(8) achBonus 0.16 жив; bonus:{} — bonusText/achBonus корректны) — 31→34. save.bosses={} — дефолт save/freshSave + миграция loadSave + запись в boss-ветке catchFish. Тесты: новый блок §9k2 (3 локации × старт/вес 20–50 по фактическому reel.w/улов ×5/save.bosses/ачивка/карточка) + миграция сейва, a22d 31→34 — 193/193 PASS (2 прогона); check.mjs OK; emoji-font --check OK (🦞/🦈/🐳 уже в субсете); balance.mjs — без сдвига (босс вне ролла). Доки: README/AGENTS/KODA/DEVLOG (Этап 37), BROWSER-TESTING и orca-playtest — цифры босса 5–40→20–50 кг.
2026-09-19 21:31:54 +03:00
Этап 63: внешний вид снасти — бланк от RODS.look, крючок от LURES.hook (чистый визуал). Оснастка на воде теперь меняется от экипированной снасти: удочка рисовалась хардкодом (#5d4023 w3), крючок тоже (серый) — покупка «Титана»/«Блёстки» была невидима. Четвёртый класс скинов сознательно НЕ вводили (два источника истины на пиксель + миграция сейва/ачивки/пины). Данные только в записях таблиц (паттерн Э57): RODS.look={c,w,band?,fx:'glint'?} — Дедова как раньше, Стеклопластик зелёный, Карбон чёрный+кольцо, Титан стальной+мерцание; LURES.hook={c,fx:'gold'?,bait?,bead?} — Червь с розовым червём на цевье, Воблер — хром+красная бусина, Блёстка — золото с мерцанием. Хелперы rodLook()/hookRec() (паттерн lineSkinRec: clamp+fallback), effRod/effLure — Object.assign-копии, косметика проходит через rod()/lure(). drawBoat(): glint/band в save/restore (тень не перетекает), длина бланка и tip НЕ тронуты (tip якорит леску); drawRig(): gold — паттерн lineShadow(). Баланс/сейв/ачивки/i18n/emoji не тронуты, миграция не нужна. Тесты §10e2: данные look/hook + rod()/lure() + смоук rod/lure 0..3 в WAIT. Проверки: check.mjs OK; test.js 258/258 PASS exit 0. Доки: AGENTS.md (новая строка «Внешний вид снасти», тест-глобалы), DEVLOG (Этап 63).
2026-11-06 14:01:16 +03:00