Zombie Waves Codex

Как считается бой на арене — полный разбор

Разбор по игровому коду и конфигам: откуда берётся HP, от чего на самом деле считается урон, что из панели на арене не работает вообще и как в бой заходят роботы.

Коротко
  • Твоё HP на арене — это прочность машины, а не героя. Здоровье героя не участвует вообще.
  • Урон твоих пуль считается от БС (Боевая мощь), а не от атаки. Панель «Атака» в стрельбу не заходит.
  • Крит на арене выпадает, но бьёт как обычный выстрел. Если крит сработал, игра подсветит цифру жёлтым и покажет вспышку — а само число урона будет ровно таким же, каким было бы без крита. Того самого множителя, ради которого крит и качают (в обычных уровнях он удваивает урон), на арене нет: игра его считает, но в последний момент подменяет на обычный урон. При этом шанс крита сильнее всех прочих статов поднимает БС — а урон пуль считается именно от неё. Поэтому качать его всё равно стоит: урон вырастет не потому, что криты начнут бить, а потому что вырастет БС.

Плюс половина панели в самом бою помножена на ноль: скорострельность, перезарядка, уклонение, весь крит, урон по боссам. Стихии режутся до 20%. Но осторожно: «не работает в бою» не значит «бесполезно» — почти все эти статы поднимают БС, а от неё и считается урон персонажа. Не поднимает её только то, у чего вес нулевой.

1.HP на арене — это НЕ здоровье героя

Здоровье героя в дуэли не участвует вообще. HP берётся из машины и считается в два слоя:

HP = Прочность машины (по её уровню в гараже) × (1 + «Прочность штурмовой машины» %)

Главный слой — уровень машины, то есть чистый гараж. Разброс чудовищный:

УровеньПрочность
1300 000
1001.2 млрд
2006.9 млрд
50043.8 млрд
900450 млрд
950900 млрд
1000 (макс)4.5 трлн

Между 100-м и 200-м — почти ×6. Последние 50 уровней (950→1000) — ещё ×5. От первого до последнего — разница в 15 миллионов раз. Никакая атака это не компенсирует.

Второй слой — стат «Прочность штурмовой машины» (до +42%), он множит уже накопленную базу. Проценты приятные, но рядом с уровнем гаража это вишенка на торте. А стат «Начальные ОЗ» в дуэли просто не читается: HP целиком берётся из машины, здоровье героя движок в арене не спрашивает вообще.

Мелочь: машина меняет вид повреждений на 1/2 и 1/3 HP — чистый визуал.

2.Формула урона

УРОН = База × Множитель пули × (1 + % стихии) × (1 − «Вычет урона на арене» цели + «Урон на арене» атакующего) × Сопротивление машины цели

Крита в этой строке нет. Это не опечатка — см. пункт 3. А «База» — самое неожиданное место всей арены.

База урона персонажа = твоя БОЕВАЯ МОЩЬ + стихии с весом 20%

Не атака. Атака персонажа в стрельбу на арене не заходит вообще: оружие на арене инициализируется от БС. То есть панель «Атака», на которую все смотрят, к урону твоих пуль отношения не имеет.

Единственный, кто читает атаку персонажа — робот (пункт 5).

Отсюда и ответ на вечный вопрос «почему чувак с меньшей атакой меня разбирает»: на арене меряются не атакой, а БС, машиной и процентами. Атака — лишь одно из слагаемых БС, причём не главное.

А из чего собирается сама БС

Раз урон персонажа считается от БС, вопрос «сколько я бью» превращается в вопрос «как набирается БС». Собирается она предельно тупо: у каждого стата в конфиге прописан вес, а БС — это сумма всех статов, помноженных на их веса. Клиент считает её сам и сверяет с сервером: если расхождение больше 200, игра ругается в лог и отправляет отчёт на сервер. Значит формула у клиента и сервера одна.

Вес есть только у 16 статов из 130. Вот они все:

СтатВес в БСВ самом бою
Шанс смертельного удара500 000не работает
Шанс крита100 000не работает
Скорострельность · Скорость перезарядки40 000не работает
Урон пулей20 000работает на 20%
Стихии (остальные семь)10 000работает на 20%
Урон элите · Урон боссам10 000не работает
Начальные ОЗ1 000не работает
Общая атака1только через робота

Смотри, что получается. Самые тяжёлые веса — ровно у тех статов, которые в бою обнулены. Шанс смертельного удара весит 500 000, шанс крита — 100 000, а общая атака, на которую все молятся, весит единицу. Но атака берёт объёмом: её десятки тысяч, а шансы — это доли единицы.

Отсюда практический вывод. «Не работает в бою» и «не нужно на арене» — разные вещи. Крит-шансы, скорострельность, перезарядка и урон по боссам не участвуют в расчёте боя ни на грамм, но исправно превращаются в БС, а БС — прямо в урон твоих пуль. Проверять стоит по весу: если вес нулевой, стат не даёт ни боя, ни БС — вот это настоящий мусор. Так устроены крит-урон, смертельный урон и уклонение.

И зеркальный факт: у арена-статов — «Урон на арене», «Вычет урона», «Прочность штурмовой машины», всех трёх робо-статов — вес в БС нулевой. Они не поднимут тебе ни очка БС, но работают в бою напрямую. То есть панель БС и реальная сила на арене — это два разных набора статов, и они почти не пересекаются.

3.Крит на арене не даёт урона

Игра честно кидает роллы, рисует жёлтую цифру, играет вспышку — и выбрасывает результат. Множитель крита считается и тут же затирается единицей перед тем, как урон уйдёт в цель. Это видно тремя способами сразу, и все три сходятся:

  • в коде арены множитель крита обнуляется, а в коде обычных уровней — применяется. Разница именно в арене;
  • все четыре крит-стата (шанс крита, крит-урон, шанс смертельного, смертельный урон) помечены в конфиге нулевым PVP-коэффициентом;
  • то же самое лежит в актуальной версии клиента — обнуление на месте, хотя крит-код в ней недавно правили.

Крит-урон и смертельный урон на арене — настоящий балласт: они не дают ни множителя, ни БС. А вот шансы — другая история. Множителя они тоже не дают, но это два самых тяжёлых стата БС в игре: шанс смертельного удара весит в ней в 500 тысяч раз больше единицы атаки, шанс крита — в 100 тысяч. А урон твоих пуль на арене считается именно от БС. Получается парадокс: качать шансы крита под арену выгодно — просто не как крит, а как БС. Роботы, кстати, не критуют вовсе: в арене их крит-ветки просто нет.

4.Сколько можно набрать

«Урон на арене» и «Вычет урона» сидят в одной скобке и вычитаются: × (1 − Вычет_цели + Урон_атакующего). Линейно, без кривых. Клик по названию набора — покажет состав и эффекты резонанса.

🗡 Урон на арене

ИсточникСколько
Обвесы S-оружия: дуло + лазер + прицел (3 × 8%)24%
Коллекционки: 10% · 10% · 10%30%
Таланты гаража (80 узлов × 0.2%)16%
Скины лагеря (макс ступень)10%
Выжившая «Футбольная красотка», 5★10%
Альбом карт6%
Итого96%

🛡 Вычет урона на арене

ИсточникСколько
Обвесы S-оружия: рукоять + приклад + магазин (3 × 8%)24%
Коллекционки: 10% · 10% · 5%25%
Таланты гаража (80 узлов × 0.2%)16%
Альбом карт12.5%
Скины лагеря (макс ступень)10%
Затерянный город8%
Итого95.5%

🚗 Прочность штурмовой машины

ИсточникСколько
Коллекционки: 16% · 10%26%
Альбом карт10%
Скины лагеря (макс ступень)6%
Итого42%

Что из этого практически:

  • Самый жирный кусок урона — обвесы S-оружия: 24% + 24%, и это три слота на каждую сторону.
  • Коллекционки — второй по величине (30% / 25%), и они же дают основную долю множителя прочности.
  • Гараж бьёт со всех сторон разом: база HP (уровень), таланты (16 + 16), ранг машины (сопротивление, см. ниже). Отставание в гараже не закрывается ничем.
  • Вклад «Футбольной красотки» в панели не отображается — стат скрытый, работает молча.

5.Роботы: считаются отдельно от персонажа

Роботы на арене живут по своим правилам, и это самая недооценённая часть состава.

Во-первых, они не стреляют. Совсем. На арене робот паркуется далеко за пределами карты и вылезает только на свой скилл: телепортируется к машине врага, отрабатывает, уезжает обратно. Скиллы у роботов на арене отдельные от обычных — свои, PVP-шные, по два слота на робота, и открываются они по рангу (зелёный / фиолетовый / оранжевый / красный). Ранг робота на арене — это не «чуть больше статов», это какой скилл он вообще умеет.

Урон робота считается от ДРУГОЙ базы, чем урон персонажа

Персонаж бьёт от БС. Робот бьёт от своей собственной атаки по уровню плюс доля атаки персонажа. То есть атака персонажа, бесполезная для твоих пуль, работает — но только через роботов.

Три стата крутят эту связку, и все три встречаются в резонансе коллекционок:

СтатЧто делаетНа арене
Урон роботаМножитель на урон робота100%
Процент атаки робота от персонажаБольше доля твоей атаки, которую наследует робот100%
Атака персонажа от роботовМножитель на атаку, которую роботы отдают персонажу100%

Все три работают в полную силу. У «Урона робота» в конфиге прописан коэффициент 0.1 — то есть задумано было резать его до 10%. Но код, который реально считает урон робота, читает этот стат в обход того места, где коэффициент применяется. В итоге режущий множитель никогда не читается, и стат работает на все 100%.

Осторожно: «Урон робота» и «Процент атаки робота» усиливают и робота противника

Бой считает твой телефон — и в пет-ветке игра берёт эти два стата из ТВОЕГО профиля, не разделяя стороны. То есть они применяются и к твоим роботам, и к роботам врага одновременно. Качая их, ты усиливаешь обоих. Выгодно это или нет — зависит от того, чьи роботы бьют больнее: если у врага роботы сильнее твоих, ты работаешь на него.

Почему так — неизвестно. Видно только результат: пет-ветка читает эти два стата из общего профиля игрока, а не из профиля той стороны, которой робот принадлежит.

Обратная связь тоже есть: каждый робот в составе отдаёт персонажу плоскую прибавку к базовой атаке — по своему уровню и рангу, умноженную на «Атаку персонажа от роботов». Уровень и ранг робота читаются из одной таблицы, но из разных колонок: одна колонка — сколько робот бьёт сам, другая — сколько он отдаёт персонажу.

Что собирать под роботов

СтатКоллекционкиСколько
Атака персонажа от роботов 10% · 10% · 10%30%
Процент атаки робота от персонажа 10%10%
Урон робота 10% · 10%20%

Плюс таланты лагеря дают по 10% к «Урону робота» и к «Атаке персонажа от роботов».

6.Машина контрит конкретное оружие

Сопротивление = 1 − (общее + анти-оружейное, если оружие врага совпало) × Множитель ранга

Проценты — при красном ранге:

МашинаКонтритПротив прочихПротив своей цели
Штурмовой пикап10%10%
Лесной разбойникАвтомат10%25%
Пламя и мореДробовик10%25%
Граффити-патрульПулемет10%25%
Фиолетовый призракСВ10%25%
Синий зверьРакетомет10%25%
Старый клинокАрбалет10%25%
Шип изгнанияСВ12.5%37.5%
Каток разрушенияПулемет12.5%37.5%
Неоновая костяная акулаДробовик12.5%37.5%
Граф ДракулаАрбалет12.5%37.5%
Стальной потокРакетомет12.5%37.5%
Серебряный копейщикАвтомат12.5%37.5%
Жнец душСВ12.5%37.5%
Багровый потокПулемет12.5%37.5%
Крепость джунглейДробовик12.5%37.5%
Бездонная теньАрбалет12.5%37.5%
Мусорщик пустошейРакетомет12.5%37.5%

Ранг умножает сопротивление целиком: белый 0.3 · зелёный 0.4 · синий 0.5 · фиолет 0.6 · фиолет+1 0.63 · +2 0.66 · +3 0.7 · оранж 0.8 · +1 0.82 · +2 0.84 · +3 0.87 · +4 0.9 · красный 1.0. Промежуточные ступени фиолета и оранжа — полноценные ранги, а не косметика: оранж+4 (0.9) режет втрое лучше белого.

«Жнец душ» против снайперки: красный ранг → режет 37.5%; тот же на белом → всего 11%. Ранг утраивает защиту.

7.Что на арене НЕ работает

Тут два разных случая, и их стоит различать. Первый: у каждого стата в конфиге прописан свой PVP-коэффициент, на который стат молча множится при входе в бой — у части он равен нулю. Второй: стат не обнулён, но его просто никто не читает. И важная оговорка ко всей таблице: «не работает» здесь означает «не участвует в расчёте боя». Боевую БС эти статы всё равно качают, а урон персонажа считается от неё — так что вычёркивать их из сборки под арену нельзя.

СтатПочему не работает
СкорострельностьPVP-коэффициент 0. Причём арена этот стат читает — читает и всегда получает ноль
Скорость перезарядкиPVP-коэффициент 0, ровно так же
Шанс крита · Крит. урон · Смертельный уронPVP-коэффициент 0, и сам крит-множитель нейтрализован. Крит-урон и смертельный урон при этом мертвы полностью — у них и вес в БС нулевой
Шанс уклоненияPVP-коэффициент 0
Урон элите · Урон боссамPVP-коэффициент 0, веток в расчёте арены нет
Урон по типам оружия (все шесть)PVP-коэффициент 0
Атака от обвесовPVP-коэффициент 0. Проценты «Урон/Вычет на арене» с обвесов при этом работают — это разные статы
Начальные ОЗНе обнулён, но не читается: HP берёт машина, здоровье героя движок не спрашивает

Урезаны, но живы:

  • Стихии (все восемь) — работают на 20%.

Отдельный курьёз: в игре два разных стата с одинаковым названием «Урон на арене». Один — рабочий, тот самый, что качается обвесами и коллекционками. Второй — мёртвый: нулевой PVP-коэффициент и ноль обращений к нему во всём коде. Просто забытая пустышка с тем же именем.

И обратный курьёз: «Урону робота» коэффициент 0.1 прописали, но читать его забыли — стат работает на 100%. Конфиг говорит одно, код делает другое.

Прозрение (бонус за дистанцию) — вырезано.

8.Кто считает бой

Сейчас — твой телефон. Сервер выдаёт статы противника, бой крутится локально, в конце уходит результат.

Но в клиенте уже вшит рубильник на серверный бой: если сервер пришлёт готовый отчёт (посекундные снимки HP обеих сторон + назначенный победитель), локальная формула выбрасывается целиком. Бой станет мультиком с заранее известным концом. В Шахте это уже включено, в арене — пока нет.