Extend profiles from 280 to 312 bytes with legacy compatibility. Keep tower relics run-local and share the profile bankroll.
8.4 KiB
Артефакты и Адская башня
Магазин Сидоровича
Магазин открывается на вкладке артефактов. Стрелки вверх/вниз выбирают предмет,
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% прохождений освоившим правила игроком пока не подтверждены статистикой; полноценная оценка требует серий забегов с указанной стратегией на каждом этаже. Эта переработка добавляет страховку и повторы, но не подменяет случайные исходы.