Прежние пять операций были СЛЕПЫМИ: перековка бросала всё заново,
прививка ставила случайный тег, отсечение снимало последний аффикс,
возвышение поднимало случайный. Игрок не принимал ни одного решения - жал
кнопку и смотрел, что выпало. Это не крафт, это второй бросок предмета за
материалы.
Теперь половина операций направленные: игрок показывает пальцем, какой
аффикс трогать, и платит за это вдвое - вот это уже решение
("перебросить всё дёшево или снять один дорого").
Два новых глагола:
ЗАКАЛКА двигает рулон выбранного аффикса к максимуму его тира на треть
остатка. Дёшево, понятно, повторяемо - то самое "доработать почти
хорошую вещь". Тир не трогает: за ступень платят возвышением.
ОТПЕЧАТОК переносит лучший аффикс с ДРУГОЙ вещи, сжигая её. Именно он
превращает хлам из схрона в ресурс, а не в мусор, который лежит.
Правило "один тег один раз" им не обходится, бюджет проверяется.
В мастерской: клик по вещи кладёт её на верстак, повторный клик по той же
назначает донором (помечается кровью - он сгорит, и видеть это надо ДО
нажатия). Строки аффиксов стали кнопками: по ним выбирается цель.
Проверка меряет НАПРАВЛЕННОСТЬ, а не факт срабатывания:
направленность: отсечение по цели, возвышение по цели,
закалка двигает рулон, отпечаток перенёс и сжёг донора
Отсечение пробуется на СРЕДНЕМ аффиксе из трёх: операция, которая
"работает", снимая последний, прошла бы и слепую версию.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
284 lines
21 KiB
Markdown
284 lines
21 KiB
Markdown
# 22 — Добыча: редкости, аффиксы, артефакты, зачарования
|
||
|
||
Продолжение [20-gdd.md](20-gdd.md). Боевые формулы — [21-damage.md](21-damage.md).
|
||
|
||
Правило, из которого всё растёт: **находка должна быть решением, а не
|
||
прибавкой**. Предмет, который просто «лучше на 7%», не стоит того, чтобы за ним
|
||
идти в темноту, — а идти в темноту и есть игра.
|
||
|
||
## 1. Редкости
|
||
|
||
Сделано в M25. Числа ниже — **замеренные** (`--tool drops 1 100`, по 10000
|
||
бросков на глубину), а не задуманные:
|
||
|
||
| Редкость | Аффиксов | D1 | D28 | D55 | D100 |
|
||
|---|---|---|---|---|---|
|
||
| Обычное | 0 | 96.9% | 67.5% | 38.4% | 12.3% |
|
||
| Меченое | 1–2 | 2.9% | 21.3% | 23.5% | 21.9% |
|
||
| Разработка | 3–4 | 0.1% | 7.1% | 25.1% | 39.6% |
|
||
| Реликт | 5–6 | ~0.01% | 4.1% | 13.1% | 26.2% |
|
||
| **Артефакт** | уникальное правило + 2 | — | — | — | — |
|
||
|
||
Кривая редкости:
|
||
```
|
||
P(не обычное) = 0.02 + 0.011·d (до 0.88)
|
||
```
|
||
|
||
**Наклон 0.011, а не 0.0075.** В первой редакции этого документа формула и
|
||
таблица рядом с ней противоречили друг другу: формула давала на первом этаже
|
||
2.7% находок с аффиксами, таблица — 22%. Выбрана формула (первый этаж обязан
|
||
быть скучным, [20-gdd.md](20-gdd.md) §1), а наклон поднят так, чтобы сойтись с
|
||
таблицей на дне: 12% обычных на сотом этаже. Проверяется инструментом.
|
||
|
||
Реликт на первом этаже возможен — примерно один на восемь тысяч находок. Это
|
||
намеренно не запрещено: тир там всё равно первый, то есть пять рулонов по пять
|
||
процентов. Лотерейный выигрыш, а не сломанное начало.
|
||
|
||
**Артефактов пока нет** — они не «ещё не выкачены», а следующая веха: артефакт
|
||
даёт ПРАВИЛО, а не число, и для этого нужны триггеры (on-hit, on-kill), которых
|
||
в игре ещё нет.
|
||
|
||
**Пити на артефакт:** 60 этажей без артефакта → следующий гарантирован. Без
|
||
пити распределение даёт игроку без артефакта на восьмидесятом этаже, и это не
|
||
«не повезло», а сломанная сессия на двадцать часов.
|
||
|
||
## 2. Слоты и что в них лежит
|
||
|
||
| Слот | Что | Личное/общее |
|
||
|---|---|---|
|
||
| Руки | ствол или клинок | личное |
|
||
| Броня | костюм | личное |
|
||
| Карман | оберег/фонарь/модуль | личное |
|
||
| Сумка | всё остальное | **общее на отряд** |
|
||
| Гнёзда артефактов | 1 → 3 по глубине рекорда | общее на отряд |
|
||
|
||
Гнёзда артефактов открываются рекордом: первое сразу, второе на D40, третье на
|
||
D75. Артефакты общие намеренно — они правила, а не снаряжение, и делить их по
|
||
бойцам значило бы прятать главное решение сборки в подменю.
|
||
|
||
## 3. Аффиксы
|
||
|
||
Аффикс = `тег + тир + рулон`. Тег определяет, ЧТО он даёт; тир — насколько
|
||
сильный доступен; рулон — конкретное число в диапазоне тира.
|
||
|
||
```
|
||
доступный тир на глубине: T_max(d) = 1 + floor(d / 12) (до 9)
|
||
диапазон тира T: [lo·T^1.35, hi·T^1.35]
|
||
цена аффикса в бюджете: cost(T) = 4 + 5·T
|
||
бюджет предмета: B(ilvl) = 45 + 2.5·ilvl
|
||
```
|
||
|
||
Из этого следует потолок: на предмете с ilvl 100 бюджет 295, шесть аффиксов
|
||
девятого тира стоят 294, седьмой — уже 343. То есть предельная вещь существует
|
||
ровно на дне и ровно одна.
|
||
|
||
**Цифры пересчитаны против первой редакции.** Там стояло `cost = 6 + 4·T` при
|
||
`B = 40 + 3·ilvl` и утверждалось то же самое — «шесть и ни одним больше». На
|
||
деле влезало восемь (340 / 42 = 8.1), а предельная вещь собиралась уже к
|
||
семидесятому этажу. Обещание документа не выполнялось его же арифметикой; это
|
||
нашёл `--tool affix`, а не чтение.
|
||
|
||
Выше по глубине потолок держит бюджет, ниже — счётчик аффиксов: на сороковом
|
||
этаже доступен только четвёртый тир, шесть таких стоят 144 при бюджете 145.
|
||
Это нормально и не является поломкой: редкость там и обещает не больше шести.
|
||
|
||
### 3.1. Группы аффиксов
|
||
|
||
| Группа | Примеры | На чём |
|
||
|---|---|---|
|
||
| Урон | +% урона, +% стихии, +крит, +критмножитель | оружие |
|
||
| Пробитие | +PEN стихии, −сопротивление цели | оружие, карман |
|
||
| Стихия | конверсия X% урона в стихию | оружие |
|
||
| Статус | +стаки, +длительность, +шанс наложения | оружие, карман |
|
||
| Реакция | +% силы реакций, −ICD реакции | карман, артефакт |
|
||
| Защита | +HP, +броня, +сопротивление, +уклонение | броня |
|
||
| Снабжение | +патроны, −вес, +ёмкость, +заряд фонаря | броня, сумка |
|
||
| Триггер | on-hit / on-kill / on-hurt эффекты | любое, дорого |
|
||
|
||
**Правило одной группы.** На предмете не может быть двух аффиксов одной группы
|
||
с одинаковым тегом. Иначе «+урон» шесть раз становится единственной правильной
|
||
сборкой, и весь остальной список превращается в мусор.
|
||
|
||
### 3.2. Конверсия стихий
|
||
|
||
Конверсия — самый важный аффикс в игре, потому что он превращает оружие в
|
||
инструмент против конкретного врага:
|
||
|
||
```
|
||
share(KIN) = 1 − Σ конверсий, Σ конверсий ≤ 0.85
|
||
```
|
||
|
||
Полностью убрать кинетику нельзя: оружие без физического урона перестало бы
|
||
работать по целям, у которых нет сопротивлений вовсе.
|
||
|
||
## 4. Артефакты
|
||
|
||
Артефакт не даёт процентов. Он даёт **правило**, которое меняет то, как отряд
|
||
играет. Их около 60 к моменту выхода акта VI; ниже — восемь, задающих диапазон.
|
||
|
||
| Артефакт | Правило | Цена правила |
|
||
|---|---|---|
|
||
| **Стеклянный кулак** | +140% урона | −60% макс. HP всему отряду |
|
||
| **Двойное сердце** | реакции срабатывают дважды | −35% силы реакции |
|
||
| **Пепельный ход** | убийство даёт +12% скорости, стак 8 | вне боя стаки сгорают за 2 с |
|
||
| **Долг** | павший оперативник встаёт через 20 с | каждое воскрешение −5 макс. HP навсегда |
|
||
| **Счётчик Гейгера** | RAD не тратит стаки на реакции | весь отряд получает 3 RAD/сек на этаже |
|
||
| **Тихий шаг** | твари замечают на 45% ближе | фонарь садится вдвое быстрее |
|
||
| **Заём** | +1 гнездо артефакта | −25% опыта за вылазку |
|
||
| **Пустая рука** | оперативник без брони: +90% урона и +50% скорости | без брони |
|
||
|
||
Каждый артефакт — **сделка**, и ни один не является чистым улучшением. Артефакт
|
||
без цены превращается в обязательный предмет: его надевают все и всегда, и одно
|
||
гнездо сборки выпадает из игры навсегда.
|
||
|
||
## 5. Материалы и зачарование
|
||
|
||
### 5.1. Материалы
|
||
|
||
Сделано в M27.
|
||
|
||
| Материал | Откуда | Куда |
|
||
|---|---|---|
|
||
| Лом | разбитая обстановка, любая глубина | перековка |
|
||
| Био-ядро | твари на этажах FLESH, D21+ | прививка, возвышение |
|
||
| Крио-ядро | твари на этажах FROST, D36+ | отсечение, возвышение |
|
||
| Осколок реактора | твари, D53+ | возвышение |
|
||
| Пустотный шлак | твари, D73+ | залом |
|
||
|
||
Материал добывается только в своей полосе — это и есть причина возвращаться на
|
||
средние глубины после того, как рекорд ушёл вниз. Без этого весь контент, кроме
|
||
последнего акта, умирает.
|
||
|
||
Полосы проверяются в `--descend` прямым опросом таблицы: в игре протечка была бы
|
||
заметна часов через двадцать, когда выяснилось бы, что возвращаться незачем.
|
||
|
||
```
|
||
плоть на 25 лом 0, био 2, крио 0, осколок 0, шлак 0
|
||
сталь на 25 лом 0, био 0, крио 0, осколок 0, шлак 0
|
||
мороз на 40 лом 0, био 0, крио 2, осколок 0, шлак 0
|
||
```
|
||
|
||
**Материалы — валюта, а не предметы:** не занимают ячеек, не весят, в схроне не
|
||
лежат. Иначе поход за материалами превратился бы в тот же поход с сумкой. Но
|
||
теряются они так же, как добыча: заработанное зачисляется только при эвакуации.
|
||
|
||
С твари падает **одно ядро, с крупной — два**, и это не «сколько она стоит».
|
||
Первая версия роняла по её danger, и `--tool craft` показал, что вылазка на
|
||
восьмидесятом этаже приносит тысячу ядер при цене доводки вещи в шестьсот:
|
||
материалы не стоили ничего, а мастерская из ставки превращалась в кнопку.
|
||
|
||
### 5.2. Операции
|
||
|
||
| Операция | Что делает | Цена | Цель |
|
||
|---|---|---|---|
|
||
| Перековка | заново бросает значения (теги и тиры на месте) | 4 лома × тир | слепо |
|
||
| **Закалка** | двигает рулон ВЫБРАННОГО аффикса к максимуму его тира | 6 лома × тир | по выбору |
|
||
| Прививка | добавляет аффикс нового тега, если есть бюджет | 2 био × тир | слепо |
|
||
| Отсечение | снимает ВЫБРАННЫЙ аффикс | 2 крио × тир | по выбору |
|
||
| Возвышение | +1 тир ВЫБРАННОМУ аффиксу | 3 био + 3 крио × тир, 1 осколок | по выбору |
|
||
| **Отпечаток** | переносит лучший аффикс с ДРУГОГО предмета; донор сгорает | 4 био + 4 крио × тир, 2 осколка | по выбору вещи |
|
||
| **Залом** | +2 тира всем, но на один аффикс меньше | 3 шлака | 12%: предмет рассыпается |
|
||
|
||
### Чего не хватало первой версии: ВЫБОРА
|
||
|
||
Все пять прежних операций были слепыми: перековка бросала всё заново, прививка
|
||
ставила случайный тег, отсечение снимало ПОСЛЕДНИЙ аффикс, возвышение поднимало
|
||
случайный. Игрок не принимал ни одного решения — он жал кнопку и смотрел, что
|
||
выпало. Это не крафт, это второй бросок предмета за материалы.
|
||
|
||
Теперь половина операций **направленные**: игрок показывает пальцем, какой аффикс
|
||
трогать. Плата за это — цена: направленная операция вдвое дороже слепой, и вот
|
||
это уже решение — «перебросить всё дёшево или снять один дорого».
|
||
|
||
И появились два глагола, которых не было вовсе:
|
||
|
||
- **Закалка** двигает рулон к верху его тира на треть остатка. Дёшево, понятно,
|
||
повторяемо — то самое «доработать почти хорошую вещь». Тир она не трогает: за
|
||
ступень платят возвышением;
|
||
- **Отпечаток** переносит лучший аффикс с другой вещи, сжигая её. Именно он
|
||
превращает хлам из схрона в ресурс, а не в мусор, который лежит. Правило «один
|
||
тег один раз» им не обходится, и бюджет предмета проверяется как везде.
|
||
|
||
Три уточнения, каждое против конкретного обхода:
|
||
|
||
- перековка меняет **только значения**. Меняй она ещё и теги — это был бы новый
|
||
бросок предмета, то есть способ обойти редкость;
|
||
- прививка не ставит тег, который уже есть;
|
||
- отпечаток берёт **лучший** аффикс донора, а не выбранный: игрок и так жертвует
|
||
целой вещью, и просить два решения за одну цену — перебор.
|
||
|
||
Проверяется в `--descend` направленностью, а не фактом срабатывания:
|
||
|
||
```
|
||
направленность: отсечение по цели, возвышение по цели, закалка двигает рулон,
|
||
отпечаток перенёс и сжёг донора
|
||
```
|
||
|
||
Отсечение проверяется на СРЕДНЕМ аффиксе из трёх: операция, которая «работает»,
|
||
снимая последний, прошла бы и слепую версию.
|
||
|
||
Залом — единственная операция с риском, и он настоящий: предмет исчезает, а
|
||
плата снимается всё равно. Замерено на тысяче попыток: **рассыпалось 11.6% при
|
||
заявленных 12%**, платят всегда, слот теряется всегда. Проверять это иначе
|
||
нельзя — «у меня трижды не рассыпалось» не доказательство ни в какую сторону.
|
||
Именно поэтому лучшая вещь в игре всегда чуть хуже, чем могла бы быть, — почти
|
||
никто не заламывает то, что собирал двадцать часов. Это и задумано: разрыв между
|
||
«хорошей сборкой» и «идеальной» держит лейтгейм живым.
|
||
|
||
### 5.3. Стоимость полной сборки
|
||
|
||
Считается инструментом, а не на глаз: `--tool craft 80`.
|
||
|
||
```
|
||
на глубине 80: ядер за вылазку 104, полная доводка вещи 648 ядер
|
||
то есть 6.2 вылазок на предмет (в документе заявлено около 8)
|
||
```
|
||
|
||
Доход **упирается в потолок расстановки**: на этаж влезает не больше
|
||
`MAX_LEVEL_SPAWNS` тварей, поэтому с сорокового этажа и глубже вылазка приносит
|
||
примерно одно и то же. Глубина даёт не количество материалов, а КАЧЕСТВО
|
||
предметов — а вместе с ним и цену доводки, которая растёт с тиром. Отсюда и
|
||
кривая: вещь сорокового этажа доводится за три вылазки, вещь сотого — за шесть с
|
||
лишним.
|
||
|
||
Первая версия расчёта брала доход из бюджета опасности этажа и завысила его
|
||
впятеро: бюджет уходит не в количество тварей, а в их силу.
|
||
|
||
## 6. Как это не превращается в кашу
|
||
|
||
Три правила, которые придётся защищать от самих себя при любом расширении:
|
||
|
||
1. **Ни одного чистого улучшения.** Каждый артефакт — сделка, каждый высокий
|
||
тир — вес или риск. Предмет без цены обязателен, а обязательный предмет — это
|
||
вырезанный слот.
|
||
2. **Бюджет вместо запретов.** Ограничивает арифметика, а не список исключений.
|
||
Список исключений разрастается и однажды противоречит сам себе.
|
||
3. **Находка — решение.** Если новая вещь не заставляет игрока хоть раз
|
||
задуматься «а что снять», её не должно быть в таблице дропа вообще.
|
||
|
||
## 7. Проверки
|
||
|
||
| Утверждение | Инструмент | Статус |
|
||
|---|---|---|
|
||
| кривая редкости: первый этаж скучный, сотый щедрый | `--tool drops 1 100` | есть |
|
||
| бюджет пускает ровно шесть высших аффиксов и только на дне | `--tool affix <глубина>` | есть |
|
||
| выкатанное доезжает до бойца и до правил урона | `--descend` | есть |
|
||
| редкость и рулоны переживают запись профиля | `--descend`, круговой прогон | есть |
|
||
| материалов хватает на сборку за ~8 вылазок | `--tool economy` | материалов ещё нет |
|
||
| ни один артефакт не является чистым плюсом | ревью-чеклист | артефактов ещё нет |
|
||
| TTK не выходит из коридора с лучшими вещами | `--tool ttk --best` | нет |
|
||
|
||
Проверка «доезжает до бойца» — главная. Механика, которая есть в каталоге, но не
|
||
доходит до правил боя, выглядит снаружи как работающая, и на этом уже дважды
|
||
попадались вес и стихии ([07-milestones.md](07-milestones.md)). Поэтому в
|
||
`--descend` подкладывается карабин с известными рулонами и сверяется всё:
|
||
|
||
```
|
||
аффиксы: урон 12.0 -> 18.0, здоровье 100 -> 140, броня 0.10 -> 0.25, пробитие 0.20
|
||
стихии карабина: KIN 1.00 -> 0.60, CRY 0.40, сумма долей 1.000
|
||
```
|
||
|
||
Последнее число тут не украшение: конверсия обязана ПЕРЕВОДИТЬ урон, а не
|
||
добавлять седьмую долю сверх единицы. Иначе стихии стали бы каналом наращивания
|
||
чисел — ровно тем, чем они не должны быть ([21-damage.md](21-damage.md)).
|