andrey pushed tag 1.1.0 to andrey/fishing-game 2026-11-06 14:29:28 +03:00
andrey pushed to main at andrey/fishing-game 2026-11-06 14:23:28 +03:00
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).
andrey pushed to main at andrey/fishing-game 2026-11-06 13:36:57 +03:00
3a88674696 Этап 62: диалог улучшений аквариума #aqShop — вкладки «Слоты»/«Апгрейды» вместо пилюль в баре сцены. Слоты: все 12 строк в стиле #aqPick (жилец — SVG-портрет с вариантом, пустой +, покупаемый — «Купить N 🪙» по AQ_SLOT_COSTS, дальние 🔒); Апгрейды: секции «Грунт»/«Декор» строками по образцу skinRow (иконки — поле icon в AQ_FLOORS/AQ_DECOS, паттерн Э60) + «🚫 Без декора» (aqEquipDeco(-1) вместо прежнего цикла к -1). Вход пилюлей #btnAqShop из #aqBar (убраны #btnAqSlot/#btnAqFloor/#btnAqDeco), z-index 27 (выше бара 26), делегированный клик #aqShopBody (паттерн shopClick), покупки — общие aqBuySlot/aqEquipFloor/aqEquipDeco (их же зовёт aqPickBuySlot), backdropClose, закрытие вместе со сценой/при сбросе, setLang — пере-рендер. Удалены aqCycleFloor/aqCycleDeco/aqDecorName/aq_floor_short/aq_deco_short. Новые emoji (🫙🪸🏖️🪨🟫💰🪵🏰🚫) — субсет 65→73 глифов (🏖️ с FE0F). Тесты: §59-v переписан на диалог, слот — через «Слоты» + backdrop, бар из 3 элементов; 255/255 PASS exit 0; check.mjs OK; emoji-font --check OK. Миграция сейва не нужна. Доки: AGENTS.md (новая строка «Диалог улучшений аквариума (Этап 62)» + актуализация Этапов 46/52/59, тест-глобалов, backdropClose), DEVLOG (Этап 62).
andrey pushed to main at andrey/fishing-game 2026-11-06 13:08:18 +03:00
386cdf25ba gitignore: .opencode/ → .opencode*/ — закрывает и служебные каталоги вида .opencode.old/
andrey pushed to main at andrey/fishing-game 2026-11-06 13:07:59 +03:00
bf1f7f0944 Этап 61 (доки): AGENTS.md — строка «Ночь (M3)» дополнена гейтом фонаря в drawBoat() (hasLight) и приёмкой в gen-screenshots (rodLv=2 в ночных кадрах)
andrey pushed to main at andrey/fishing-game 2026-11-06 13:07:43 +03:00
a705aa40ec Этап 61: фонарь на носу лодки горит только с апгрейдом «фонарик» (чистый визуал). drawBoat(): световой блок с nightMix()>0.35 → hasLight()&&nightMix()>0.35 — тот же гейт, что у ночного клёва в ветке WAIT (фонарик = апгрейд 1 текущей удочки, 2+ ур.); фонарь становится честным сигналом «ночная рыбалка текущей снастью работает» (при смене удочки на Lv1 гаснет — как и клёв). gen-screenshots.js: ночные кадры ставят save.rodLv[save.rod]=2 до setDayTime(0.85) — в скриптах фонарь горит (установка живёт до конца прогона, болотно-ночной кадр тоже в ночи). Пиксельных пинов нет; тесты hasLight() (§9j(c)/(d), §10b) не затронуты. Проверки: check.mjs OK; test.js 248/248 PASS exit 0. Доки: AGENTS.md (строка «Ночь (M3)»), DEVLOG (Этап 61).
andrey pushed to main at andrey/fishing-game 2026-11-06 13:02:31 +03:00
8757d6dbf1 Этап 60: иконки лавки — апгрейды снастей, локации, скины (чистый визуал). (1) Данные: поле icon у записей LOCATIONS/BOAT_SKINS/BOBBER_SKINS/LINE_SKINS (по образцу RODS/LURES) — локации Река 🏞️/Озёра 🛶/Море ⛵/Океан 🌊/Болото 🐸; лодки 🛶🔴🏠🐉🚤; поплавки ⚪🔴💚✨🔔 (неоновый — 💚 по желанию владельца); лески 🪢💚🪡; геймплей/цены не тронуты. (2) Отрисовка: skinRow/locationRow выводят <span class='itemicon'> ДО .itemname (внутри нельзя — тесты §скины(4)/(7) сверяют текст .itemname строго); кнопка апгрейда itemRow вместо generic ⬆ показывает item.icon (fallback ⬆) — вариант B владельца, тест M3(e) на indexOf, зелёный; CSS .itemicon — колонка 26px, строки не едут. (3) Emoji-шрифт: 12 новых глифов, субсет 53→65 (woff2 85КБ, +113КБ base64), для ⛵/⚪/🏞️ FE0F (текстовая презентация по умолчанию — приём 🗺️/⚠️). (4) Проверки: check.mjs OK; tests/test.js 248/248 PASS exit 0 без правок тестов; emoji-font --check OK; minify 6/6 (639→423КБ, блок шрифта побайтово сохранён). (5) Доки: AGENTS.md (строка «Иконки лавки (Этап 60)»), DEVLOG (Этап 60).
andrey pushed to main at andrey/fishing-game 2026-10-30 22:51:14 +03:00
81be60d5ec Этап 57–59: скины для лески, новые стили лодки/поплавка, ночной и погодный декор, декор аквариума
andrey pushed to main at andrey/fishing-game 2026-10-30 20:32:26 +03:00
482bdec145 Этап 56: Которыбка — болотный босс переименован и перерисован из целаканта (идея «кошачьей рыбы» — милая вымышленная рыба-кот, не окаменелость). (1) Ренейм coelacanth→meowfish «Которыбка»/Meowfish: SPECIES[37] (hue 28, glow #ff9ecb — розовая аура вместо сине-стальной), NIGHT_WEIGHTS, SWAMP_IDS, SWAMP_DAY/NIGHT_WEIGHTS, BOSS_BY_LOCATION[4], ачивка swamp_boss («Победа над Которыбкой»/Meowfish Tamer, check=bosses.meowfish; id/без coinPct — пин 0.18 жив). Числа (цена 50🪙/кг, 20–80 кг, ролл 4, статы) не менялись — баланс Этапа 55 сохранён 1:1 (Болото 302.9/342.3). Сейв: bosses — динамический словарь, миграция не нужна (целакант не выходил в релизе), выданная ach не отзывается. (2) Портрет: новый fish-meowfish.svg — пухлое рыжее тельце с кремовым брюшком и полосками «табби», ушки с розовым внутренним, большой зелёный глаз, носик-треугольничек, ротик-«бантик», усики, щёчка, лапки, пушистый полосатый хвост-плавник; fish-coelacanth.svg удалён; embed-fish IDS обновлён, спрайт перегенерирован (38 symbol). (3) Тесты 234/234 (счётчик тот же): §9k2 Болото → Которыбка (карточка «Которыбка-БОСС», bosses.meowfish), lc1 (mwf='Которыбка,4,50,20,80', swampOrder …,meowfish), lc2/lc10, тексты. (4) Проверки: check.mjs OK; test.js 234/234 exit 0; balance.mjs — 302.9/342.3 без изменений, целостность зелёная; emoji --check OK; minify 6/6 (583→386 КБ); pack 5/5; pack-smoke 6/6. (5) Доки: AGENTS.md/README — Которыбка/meowfish, DEVLOG (Этап 56).
andrey pushed to main at andrey/fishing-game 2026-10-30 20:01:22 +03:00
4ebb6be82c Этап 55: целакант — самая крупная и дорогая рыба Болота, новый босс локации. (1) Данные: 38-й вид в конец SPECIES — coelacanth «Целакант» r4 50🪙/кг 20–80 кг, minDist 0.90, glow #6fb8ff (шестой светящийся цвет Болота); ключ coelacanth:4 в NIGHT_WEIGHTS; SWAMP_IDS → 6 id, SWAMP_DAY/NIGHT_WEIGHTS += coelacanth:4 (день/ночь). BOSS_BY_LOCATION[4]='coelacanth' — боссом Болота стал целакант, Дух болота — обычная редкая рыба (ролл 7/3 не тронут). Ачивка swamp_boss переиспользована: id/bonus:{}/без coinPct (пин 0.18 жив), тексты «Победа над Целакантом»/Coelacanth Slayer, check=bosses.coelacanth; уже выданная в save.ach не отзывается. Правило веса босса 20–50 кг, startBite/hook/catchFish — без правок; миграция сейва не потребовалась. (2) Портрет: assets/fish/fish-coelacanth.svg (трёхлопастный хвост-копьё, лопастные плавники, белые пятна, hue 215) + coelacanth в IDS embed-fish.mjs, спрайт перегенерирован (38 symbol). (3) Баланс (решение владельца — осознанный дисбаланс): Болото 133.9/162.5 → 302.9/342.3 🪙 (вклад целаканта ≈192/95), Болото/Озёра ×1.56/×1.37, днём обгоняет и Море; остальные пины не сдвинуты; босс-награда ≈8750 (у духа было ≈12250). Прогрессия: Титан ~38 мин, Море 1 ч 29, Океан 3 ч 14. (4) Тесты 234/234 (счётчик тот же, обновлены пины): lc1 (37→38, ca-строка, swampOrder/swampRar, 38 symbol), lc2 (SWAMP 5→6, SPECIES_NIGHT 38), lc4d (6 видов ≥1), lc9 (дневник 38), lc10 (mid30), lc11 (6 glow), §9k2 Болото → coelacanth. (5) Проверки: check.mjs OK; test.js 234/234 exit 0; balance.mjs зелёный; emoji --check OK; minify 6/6 (582→386 КБ); pack 5/5; pack-smoke 6/6. (6) Доки: AGENTS.md (Босс/Локации/Баланс/Прогрессия/Портреты), README (38 видов, босс Болота, размеры), DEVLOG (Этап 55).