KAZIK/docs/ARTIFACTS_AND_TOWER.md
Игорь Федосеев eaac8b861e feat: rework artifacts and tower relics
Extend profiles from 280 to 312 bytes with legacy compatibility.
Keep tower relics run-local and share the profile bankroll.
2026-10-30 23:22:19 +03:00

8.4 KiB
Raw Permalink Blame History

Артефакты и Адская башня

Магазин Сидоровича

Магазин открывается на вкладке артефактов. Стрелки вверх/вниз выбирают предмет, E включает или выключает эффект. Покупка требует двух нажатий Enter: первое запрашивает подтверждение, второе оплачивает набор. Смена выбранного предмета отменяет подтверждение. Поддерживается мышь. Tab возвращает рубашки, Esc — холл.

Артефакт Цена набора Зарядов Эффект
Клевер 900 3 Возвращает 50% фактической потери раунда, округляя вверх; максимум 10000
Подкова 1800 5 Добавляет 35% чистой прибыли; максимум 5000, минимум 1 при положительной прибыли
Череп 3500 1 Отменяет смертельный выстрел в русской рулетке или Buckshot
Контракт 4000 2 Добавляет 100% чистой прибыли, максимум 10000; проигрыш тоже расходует заряд

Лимит — 99 зарядов каждого вида. При недостатке денег или превышении лимита набор не покупается даже частично. Заряды не имеют срока действия. Выключенный эффект не расходуется. Контракт несовместим с клевером и подковой: его включение выключает оба эффекта. Череп может работать вместе с контрактом.

Возвращённая ставка не считается прибылью. Частичный проигрыш страхуется только на сумму потери. Ничья не расходует денежные эффекты. Клевер и подкова расходуют заряд только при фактическом зачислении. Банк ограничен 1000000000. Режим наблюдателя не расходует инвентарь и не начисляет личные бонусы.

Адская башня

Банк общий с профилем. Ставки, проигрыши и выплаты меняют обычный банк; выход не восстанавливает прежнюю сумму. Денежный приз за шестой этаж — 66600, однократно, с общим ограничением банка.

Обычные артефакты внутри башни не работают и не расходуются. Вместо них перед стартом и после каждого из первых пяти этажей выбирается одна из трёх временных реликвий. 1/2/3 берут соответствующую карточку; стрелки влево/вправо и Enter выбирают выделенную. Также можно нажать карточку мышью.

Реликвия Действие
Сердце Один повтор любого проигранного этажа
Часы Два повтора предстоящего этажа; остаток сгорает при переходе дальше
Патрон Две отмены смертельного выстрела
Печать Дважды удаляет последнюю карту, вызвавшую перебор в блэкджеке; затем ходит крупье
Око палача Показывает игроку следующий патрон Buckshot на протяжении забега
Кошель Дважды возвращает потерю проигранного этажа, максимум 5000 за возврат

Кошель не даёт дополнительную попытку. При поражении сначала возвращаются деньги, затем расходуются часы соответствующего этажа, затем сердце. Если повторов нет, забег завершается. Ничья в блэкджеке позволяет переиграть без расхода повтора.

Предложения: сердце, кошель и ситуационная реликвия. Перед блэкджеком доступна печать, перед русской рулеткой — патрон, перед Buckshot — око, иначе — часы. Заряды остальных реликвий складываются. Выбор нельзя получить повторным нажатием.

Все реликвии сбрасываются при победе, окончательном поражении, выходе в холл и начале нового забега. В сохранение они не записываются. Выход во время оплаченного раунда соблюдает правила соответствующей игры: например, монета доигрывает результат, а карточный стол считает незавершённую руку проигранной.

Счётчики СЕР, ЧАС, ПАТ, ПЕЧ, ОКО, КОШ показывают остаток реликвий. Внутри игры они находятся сверху, между этажами — снизу.

Сохранения

Именованный профиль: 312 байт. Первые 280 байт сохраняют старый формат и подпись; расширение ARF2 хранит четыре счётчика, маску включения, версию и контрольную сумму. Старый профиль загружается с пустым новым инвентарём. При смене или создании профиля инвентарь сбрасывается перед загрузкой. Preview-сохранение: 40 байт, версия C3D4, маска эффектов и контрольная сумма; старые preview-версии по-прежнему читаются.

Контрольные суммы обнаруживают случайное повреждение; это не криптографическая защита от редактирования владельцем компьютера.

Проверки и ограничения

python -B tools/tests/check_artifacts.py
python -B tools/tests/test_hell_tower_runthrough.py
python -B tools/tests/check_casino_actions.py
python -B tools/tests/check_hall_expansion.py

Для общих тестов нужны Pillow, treys и capstone. Это офлайн-зависимости тестов, не зависимости игры. Игра и все перечисленные эффекты реализованы на MASM x86.

Тест артефактов исполняет настоящие процедуры игры, проверяет покупки, лимиты, отключение, чистую прибыль Buckshot, повторные выплаты, реликвии, выходы, сохранения и их повреждение. Снимки UI и отчёт — build/artifacts/. Проверяются длины строк карточек и очистка предыдущего кадра.

Шестиступенчатый smoke-тест действительно открывает игровые сцены, но подставляет победные исходы. Он не измеряет вероятность прохождения. Целевые 40–60% прохождений освоившим правила игроком пока не подтверждены статистикой; полноценная оценка требует серий забегов с указанной стратегией на каждом этаже. Эта переработка добавляет страховку и повторы, но не подменяет случайные исходы.