# Полная таблица вариантов волн, элита, серия и ярость

10 ноября 2026. Пакет 0.6.5. Новые экспедиции используют отдельный профиль prototype-solo50-variants-v8. Старые сохранённые партии продолжают прежнюю систему волн prototype-solo50-v7: основные противники и фиксированное число. Переход происходит только при новой экспедиции; существующий лабиринт не сбрасывается автоматически.

## Таблицы и случайные варианты

- Перенесены 75 выбранных определений: 50 основных NPC и 25 автоматических вариантов. Семь дополнительных NPC, доступных только предметам Race, в обычные волны не добавлены.
- 17 волн имеют выбор варианта на всю волну с вероятностью 50%. Выбор происходит один раз при старте и сохраняется вместе с партией.
- На волнах 35, 36 и 38 вариант выбирается отдельно для каждого противника. Флаги собираются заново из собственных способностей выбранного NPC и добавленных способностей данной волны. Свойства основного противника не переносятся на альтернативного по инерции.
- Например, 35-я волна сочетает летающих магически невосприимчивых противников с вариантом физической защиты; на 36-й вариант также заменяет магическую защиту физической; на 38-й вместо лечения может появиться невидимость. На 27-й альтернативный NPC имеет физическую защиту и не получает отсутствующее у него лечение.
- Полёт определяется исходным именем и режимом движения. Альтернатива 48-й летает, хотя отдельная intrinsic enemy_fly у неё отсутствует. Маршрут выбирается по фактическому типу, а не по основной строке волны.
- Числа HP, скорости, брони, сопротивления, древнего типа и intrinsic-способностей заново прочитаны из установленного пакета. Одиночные коэффициенты HP/скорости ×0,69 сохранены.

## Варианты боссов

- Босс 20: исходное календарное условие исключает последний день месяца, в феврале использует фиксированные 28 дней; до 21-го дня шанс 10%, с 21-го до предпоследнего гарантирован, но бросок всё равно расходуется.
- Боссы 30 и 40: по 10% для соответствующего варианта.
- Босс 50: вложенные независимые проверки дают 20% золотого, 8% платинового и 72% основного, а не 20/10/70.
- Для воспроизводимости дата UTC фиксируется при создании новой веб-партии. Оригинал берёт системную дату непосредственно при старте соответствующей волны; смена календарного дня во время длинной партии в веб-версии не меняет заранее заданные условия. Это явное решение, пригодное и для будущих одинаковых условий соревнования.

## Элита и награды

- На каждом появлении расходуется проверка 1 из 400, включая боссов, которым элитность не присваивается. Обычный подходящий противник получает HP ×((51 − min(волна,50))/50 × 6 + 2), размер ×2 и тёплую отметку. Дополнительные вымышленные способности не выдаются.
- Опыт элиты ×10. Золото сначала ×10; если результат ≥100, затем делится на два. Например, элита 11-й даёт 100 XP и 50 золота. Награда берётся из самого фактически созданного противника и не выдаётся повторно за уже погибшего.
- Обычный урон прорыва 1…3/7/11/15/19 по главам бросается при появлении и хранится в противнике. Повторного броска при выходе нет. От этого же значения зависит масштаб обычного существа от 0,7 до 1,3; элитный множитель применяется дополнительно. Босс использует процент оставшегося здоровья.
- Элитный противник выделен размером, тёплым оттенком собственной копии материала и золотой окантовкой уже существующей полоски HP. Общая модель/материалы остальных существ не перекрашиваются; отдельные текстуры и графические проходы для этого не создаются.

## Изменение числа противников

- Начальное количество — 10, минимум — 5. Число фиксируется при запуске волны; текущая волна не удлиняется от заработанной в ней серии. Ограничение сверху в оригинале не обнаружено и произвольно не добавлено в этот пятидесятиволновый профиль.
- Обычное убийство даёт +0,75 серии, элитное +1,5, босс +10. Проход пяти промежуточных маяков вычитает сохранённый урон прорыва ×0/0,05/0,10/0,20/0,40. Нормальному входу карты не присвоено ошибочное значение 0,02: оно относится к отдельному необязательному source-маркеру.
- Прорыв к сердцу вычитает ×3 от действительно потерянных жизней, с учётом оставшегося здоровья сердца. Например, при двух оставшихся жизнях противник с уроном три даёт штраф −6, а не −9.
- Одна проверка увеличивает количество на один при серии ≥50 и вычитает 50; отдельно уменьшает на один при ≤−50 и прибавляет 50. Это две проверки, а не цикл. Остаток может обработаться последующими событиями и периодической проверкой раз в секунду, как у OnThink.
- У боссов исходный счётчик уменьшается на 101 за создание одного: итог ceil(зафиксированное количество / 101), обычно один. Граничные случаи 101/102/202/203 проверены отдельно.

## Ярость

В одиночном бою первая подходящая целая секунда — 181. Все текущие и последующие враги получают +100% скорости и невосприимчивость к магии. На карте появляется заметная отметка «ЯРОСТЬ», памятка показывает действующее состояние. При переходе к новой волне состояние сбрасывается.

Ярость включается только в бою. Буквальный старый Lua мог включить её и во время долгого строительства, сохранив stop_watch прошлой волны; этот баг не переносится. Совместный профиль ещё не подключён; его исходные сроки 300/420/540 секунд требуют отдельной реализации вместе с количеством игроков и сервером.

## Интерфейс и сохранения

Памятка содержит все 50 волн, текущее адаптивное число и серию, возможные альтернативы и диапазон HP. Невидимость альтернативного варианта предупреждается до начала волны. Просмотр не выбирает вариант и не изменяет RNG. Для старого сохранения показывается пояснение о прежней системе; новая экспедиция включает v8.

Случайный поток волн отделён от генерации пятёрки и боевых попаданий. Семантический порядок выбора вариантов/элиты/урона прорыва перенесён, полный глобальный Lua RNG-поток с UI-событиями и движковыми вызовами не воспроизводится. Выбранная волна, дата, число, серия, элита, награды, урон прорыва и RNG сохраняются. Неизвестные версии и повреждённые новые поля отклоняются.

История партии записывает фактический вариант, число при запуске, элитные убийства и ярость. Статистика остаётся локальной до подключения серверного профиля.

## Проверка и границы результата

253 автоматических проверки, включая 19 новых для v8. Проверены все 17 общих веток, три индивидуальные, боссы, вероятности 20/8/72, календарные границы, элитные формулы и однократность награды, число боссов, серия и минимум, точные штрафы, сохранённый урон прорыва, граница ярости, независимость генерации камней и JSON-детерминизм.

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

Браузерный отчёт output/GemTD_wave_variants_UI_QA.json: новые партии v8, старый профиль без подмены, явный новый старт, 50 записей памятки, предупреждение невидимости, просмотр без изменения состояния, реальная элитная модель/полоска/сохранение, отображение ярости. Размеры 320×568, 390×844, 844×390 и 1440×1000 без переполнения и JS/HTTP ошибок. Производительность физического телефона ещё не измерена.

Это по-прежнему опытный веб-профиль, не заявление о завершённой Classic-совместимости. Физическая броня, MR-модификаторы, сложение скоростей, обработка всплесков, отдельные защитные/наградные ауры и движковый Blink имеют ранее перечисленные веб-контракты/неопределённости. Семь Race-предметных вариантов, аккаунтные/дневные слова и дополнительные магазинные системы не подмешиваются в обычную игру.

Дальше по одобренному плану: оставшиеся ауры и баланс обычных партий; настоящий endless после 50, с безопасным ростом чисел и решением заполнения поля; сервер, почтовый профиль и статистика; co-op 1–4; Last Survivor, общие рейтинги и сезоны. 50 индивидуальных моделей остаются отдельной художественной задачей.

Факты: data/wave-variants-audit-2026-11-09.json и data/wave-variant-facts-2026-11-10.json. Основной source.lua повторно прочитан ограниченными фрагментами; OnThink возвращает 1 s. Полный Lua и Valve-ассеты не публикуются.
