Враги MegaBlock Survivors
Каждый враг в MegaBlock Survivors — это пользовательская модель, управляемая собственным кодом движения и столкновений плагина, а не ванильный моб Bukkit. Они полностью игнорируют ванильный ИИ: каждый спавнится с текущим уровнем волны, выводит свои характеристики из этого уровня и обрабатывается инстансом матча.
О том, как формируются волны и как уровень волны выводится из прошедшего времени матча, см. Геймплей.
Общая база характеристик
Все мобы используют один и тот же вывод характеристик, применяемый при спавне на основе уровня волны:
| Характеристика | Формула | Переопределения по типам |
|---|---|---|
| Максимум HP | round(waveLevel * 1.6 - 1.0, 1dp) | Боссы x10, Артиллерия x0.5, Призрак x5 |
| Контактный урон | max(1, floor(waveLevel / 2.5)) | Боссы x2 |
| Ускорение | 0.15 * baseMul + 0.0163296 * slopeMul * sqrt(waveLevel) | Volatile x2, Призрак нарастает со временем, Скорпион нарастает с расстоянием |
| Максимальная скорость | acceleration * 1.1 | Следует за ускорением |
| Хитбокс | 2 блока (ENTITY_SIZE) | Боссы отображаются с масштабом x2 и более |
baseMul / slopeMul берутся из сложности матча — см. таблицу сложности на странице Геймплей.
Враги волн
Эти четыре типа — единственное, что может выбрать составитель волн. Их относительные веса по диапазонам волн и стоимость в бюджете указаны на странице Геймплей.
Shadow Slime
Базовый враг и единственное, что спавнится в волнах 1-2. Идёт прямо на игрока и наносит контактный урон при пересечении. Никакого особого поведения, никакого предупреждения — это давление, под которое сбалансированы все остальные механики. Стоимость в бюджете 1.
Volatile
Смертник в стиле крипера. Двигается примерно в 2 раза быстрее Shadow Slime, и как только сближается на 2 блока, резко останавливается и запускает 30-тиковый обратный отсчёт подрыва, рисуя расширяющееся кольцо, которое меняет цвет с красного на оранжевый и затем на белый, а сама модель по ходу отсчёта окрашивается в добела раскалённый оттенок. Если отсчёт завершается, он взрывается, нанося 5 урона в радиусе 2.0 + waveLevel * 0.15 блоков, и исчезает.
Взрыв — его единственный источник урона: Volatile не наносит контактного урона, поэтому прикосновение к нему до подрыва по задумке переживаемо. Убийство во время подготовки к взрыву полностью отменяет взрыв и приносит 5 бонусных теневых фрагментов, что превращает рывок к ним в настоящую игру «риск-награда», а не в наказание. Стоимость в бюджете 2.
Artillery
Дальнобойный моб, запускающий сферическую атаку по игроку матча в пределах 30 блоков с минимальным интервалом 101 тик, около 5 секунд. Атака упреждает горизонтальное движение на 2 блока. Код движения использует предпочтительную дистанцию 18–22 блока, но общая тяга преследования продолжает действовать: ближе 18 блоков импульс отступления лишь отменяет это ускорение, не гарантируя отхода, а в предпочтительном диапазоне моб продолжает приближаться. Не рассчитывайте на постоянную дистанцию в 20 блоков.
Каждый удар сферы имеет 40-тиковое (2-секундное) предупреждение: жёлтая стеклянная оболочка при касте, оранжевая через +20 тиков и красная через +40 тиков — урон проходит только на красном кадре и только в пределах 1,5 блока от отмеченной точки. Мобы Artillery платят за свою дальность половиной обычного запаса HP. Стоимость в бюджете 2.
Laser Sentinel
Четырёхфазный снайпер-кайтер, который циклически проходит AIM -> LOCK -> FIRE -> COOLDOWN:
| Фаза | Длительность | Поведение |
|---|---|---|
| AIM | 30 тиков | Луч непрерывно следует за игроком |
| LOCK | 20 тиков | Луч замирает на своей текущей конечной точке — последний момент, чтобы уйти из него |
| FIRE | мгновенно (вспышка 5 тиков) | Хитскан в зафиксированном направлении; наносит max(1, contactDamage), если позиция игрока матча на высоте груди находится в пределах 1 блока от проверяемой точки луча |
| COOLDOWN | 80 тиков | Бездействие, затем повтор |
В ожидании и во время восстановления он отступает при дистанции менее 15 блоков, а в AIM входит только в диапазоне 15–60 блоков. Если уйти дальше 60 блоков во время AIM, эта попытка отменяется. После начала LOCK выстрел завершается вдоль зафиксированного луча с дальностью до 60 блоков. Твёрдые блоки обрезают луч и его урон, поэтому укрытие защищает от выстрела. Во время AIM, LOCK и FIRE горизонтальное движение останавливается. Выйдите из зафиксированного луча до выстрела. Стоимость в бюджете 2.
Враги вне составителя волн
Эти никогда не появляются при обычном наборе волны.
Ghost
Призраки имеют 5-кратный обычный запас HP и не дают дропа, зачёта убийства, опыта или прогресса жертвоприношения порталу. Поведение зависит от источника появления:
- Армия призраков по таймеру: управляется отдельным контроллером и при контакте запускает обработку смертельного удара по игроку. Доступная дополнительная жизнь позволяет воскреснуть. Эти призраки отсутствуют в коллекции целей текущего оружия и не затрагиваются очисткой Nuke, Ghost Army Banner или Second Wind. Перейдите в следующий мир, чтобы убрать армию; текущий код не позволяет избавиться от неё боем.
- Прислужник финального босса: при двух или более Boss Tribute босс может призвать ту же модель призрака. Эти призраки используют обычный учёт врагов, наносят нормальный контактный урон по уровню, получают урон от оружия и удаляются эффектами очистки. Ускорения армии по таймеру на них не действуют.
После начала призыва армии по таймеру один призрак появляется каждые 5 секунд, а вся эта армия, включая текущих и будущих призраков, ускоряется в 1,2 раза каждые 30 секунд. Таймер срабатывания см. в разделе «Армия призраков» на странице Геймплей.
Death Orb
Создаётся финальным боссом, только если игрок приносит в бой 3 Boss Tribute. Death Orb — не моб, а отслеживаемая позиция, движущаяся к игроку со скоростью 0,14 блока/тик, примерно вдвое медленнее бега. Настроены радиус контакта 1,5 блока и интервал в 1 секунду для нанесения урона босса с учётом уровня. Игрок не может выбрать сферу целью, повредить или уничтожить её; она существует до смерти босса. Две сферы появляются у босса, вторая со смещением на 2 блока по X, и независимо преследуют игрока. Они не вращаются вокруг босса и не возвращаются к нему.
Текущий код задаёт предыдущий тик урона как Integer.MIN_VALUE. При вычитании его из неотрицательного тика матча возникает переполнение целого числа, поэтому первая проверка интервала в обычном забеге не проходит и не обновляет эту отметку. Сферы продолжают двигаться и отображаться, но ветка контактного урона не выполняется. Это ограничение установлено по исходному коду, а не проверено испытанием урона на работающем сервере.
Боссы
Scorpion (босс портала)
Босс-страж для каждого из миров 1-3. Атакует очередями: три сферических удара с интервалом в несколько тиков, затем короткая пауза, и так по кругу. Каждый удар использует то же 40-тиковое жёлто-оранжево-красное предупреждение, что и моб Artillery, упреждает движение игрока на 2 блока и наносит урон в пределах 1,5 блока на красном кадре.
При спавне он получает редкость (2% Nightmare / 10% Elite / иначе Normal), которая умножает HP, урон, масштаб модели и добычу. Он также постепенно ускоряется, когда игрок находится дальше 50 блоков, линейно масштабируясь с расстоянием и достигая предела в 4-кратную скорость на 200+ блоках, поэтому увести его кайтом по бесконечному миру не получится. Полная таблица редкостей — на странице Геймплей.
Angel of Death (финальный босс)
Только в режиме испытания, спавнится в центре арены WORLD_4. Неподвижен, имеет 2,5-кратный базовый запас HP босса и каждые 5 секунд выбирает одну из двух атак в зависимости от вашей дистанции — 9-блочный размах в пределах 10 блоков или залп из трёх столбов на большем расстоянии. Boss Tribute накладывают на него «трофейные силы». Полные подробности — на странице Геймплей.
Оба босса невосприимчивы к дропу Nuke и к очистке поля при возрождении через Second Wind — кнопки паники стирают поле вокруг них, но никогда самого босса. Мобы волн также продолжают спавниться во время финального боя, поэтому арена никогда не превращается в чистую дуэль.