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