Files
andrey 3905693487 Э64-fix: подтверждение выпуска в диалоге «Слоты» — под строкой жильца, а не внизу панели. #aqShopConfirm лежал после #aqShopBody — при 12 слотах блок оказывался вдали от нажатой кнопки «Выпустить». renderAqShop() теперь ПЕРЕНОСИТ узел (не пересоздаёт — слушатели кнопок живут): перед innerHTML-пересборкой вынимается из #aqShopBody, при pending вставляется сразу после подсвеченной строки .replace — ДО заполнения текстов (иначе после вынимания $('aqShopConfirmText') вернул бы null), при снятии pending возвращается на место после списка; в обработчике askrelease — scrollIntoView({block:'nearest'}) (блок может выглядывать за край панели). Перетыкание «Выпустить» на другой строке без «Отмены» — рабочий кейс (при приёмке всплыл крах первой версии правки — суита его не ловила, пин добавлен). Тесты: §AQ(8) +1 проверка (узел жив, previousElementSibling — .replace-строка, текст новой рыбы) — 262/262 PASS exit 0; check.mjs OK; визуально 390×844 (row0/смена на row2/отмена/нижняя строка со скроллом). Геймплей/сейв/i18n/emoji не тронуты. Доки: AGENTS.md (пункт «Диалог улучшений аквариума», Э64).
2026-11-06 17:08:09 +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
Э64-fix: подтверждение выпуска в диалоге «Слоты» — под строкой жильца, а не внизу панели. #aqShopConfirm лежал после #aqShopBody — при 12 слотах блок оказывался вдали от нажатой кнопки «Выпустить». renderAqShop() теперь ПЕРЕНОСИТ узел (не пересоздаёт — слушатели кнопок живут): перед innerHTML-пересборкой вынимается из #aqShopBody, при pending вставляется сразу после подсвеченной строки .replace — ДО заполнения текстов (иначе после вынимания $('aqShopConfirmText') вернул бы null), при снятии pending возвращается на место после списка; в обработчике askrelease — scrollIntoView({block:'nearest'}) (блок может выглядывать за край панели). Перетыкание «Выпустить» на другой строке без «Отмены» — рабочий кейс (при приёмке всплыл крах первой версии правки — суита его не ловила, пин добавлен). Тесты: §AQ(8) +1 проверка (узел жив, previousElementSibling — .replace-строка, текст новой рыбы) — 262/262 PASS exit 0; check.mjs OK; визуально 390×844 (row0/смена на row2/отмена/нижняя строка со скроллом). Геймплей/сейв/i18n/emoji не тронуты. Доки: AGENTS.md (пункт «Диалог улучшений аквариума», Э64).
2026-11-06 17:08:09 +03:00