Перейти к основному содержимому

Создание фаз босса

Фазы босса — это субмеханика Кастомных боссов. Система, стоящая за этими фазами, настолько гибкая и мощная, что требует отдельного объяснения, чтобы вы могли как следует ею воспользоваться.

Как работают фазы босса?

Фазы босса можно добавить к любому Кастомному боссу в EliteMobs, используя следующий формат конфигурации:

phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y

Примечание: босс, которого вы изначально спавните (тот, что содержит запись phases: со списком всех остальных фаз), является боссом фазы 1. Файл босса фазы 1 НЕ должен указывать сам себя в своей записи phases:.

Основная идея этой механики — позволить администраторам менять атрибуты Кастомного босса во время боя. Используя формат конфигурации выше, вы можете полностью менять конфигурационные файлы от фазы к фазе, то есть вы можете менять 99.99% атрибутов — такие как способности, множители урона, множители здоровья, тип сущности, маскировка, надетая броня...

Чтобы этого добиться, EliteMobs удаляет вашего босса во время боя и мгновенно заменяет его версией из следующей фазы. Процесс за этим мгновенный, поэтому он, как правило, довольно бесшовный — если только вы не хотите специально сделать его эффектным. Босс получает 1-секундный боевой льготный период после перехода, чтобы обеспечить плавные визуальные эффекты.

Пример

Возьмём такого примерного фазового босса:

Файл: phase_1_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.yml
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

Файл: phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml

Файл: phase_3_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain.yml

Это представляет собой корректного Фазового босса. Если вы заспавните phase_1_boss.yml, он заспавнит Странника (Stray) с перечисленными выше атрибутами. После того как ему нанесут урон до 60% его здоровья, он немедленно будет заменён в том же месте Кастомным боссом, описанным в phase_2_boss.yml, поскольку конфигурационный файл указывает - phase_2_boss.yml:0.60 (phase_2_boss.yml — имя файла этого кастомного босса, 0.60 — это 60% здоровья). Учтите, что босс фазы 2 заспавнится с 60% своего здоровья, поскольку именно при этом значении происходит переход к этой фазе. У босса будут способности, перечисленные в файле phase_2_boss.yml. Как только боссу фазы 2 нанесут урон до 30% его здоровья, он спавнит босса, заданного для фазы 3. Учтите, что способности фазы 3 не связаны с предыдущими — вы можете полностью менять способности между фазами, как и почти все остальные атрибуты.

Продвинутое

Наследуемые механики

Вот список вещей, которые не меняются от фазы к фазе:

  • Первый Фазовый босс в цепочке определяет, через какие фазы пройдёт босс, то есть вам не следует добавлять запись phases для других боссов в фазе.

  • Таблица угрозы / Таблица урона остаётся прежней, то есть распределение добычи и продвинутая система агро не затрагиваются сменой фазы

  • Смена фаз основана на % потерянного здоровья, который сохраняется от фазы к фазе. Это означает, что если ваш босс настроен входить в фазу 2 на 50% здоровья, появляющийся на замену боссу фазы 1 босс всё ещё будет на 50% здоровья. Это также означает, что у каждой фазы может быть совершенно разное количество здоровья без каких-либо проблем.

  • Фазовые боссы возвращаются к Фазе 1, если их вылечивают обратно до полного здоровья через стандартную систему регенерации босса вне боя

  • Фазовые боссы, которые также являются Региональными боссами, имеют одинаковые радиус привязи и механику таймаута на всех фазах и будут возрождаться как босс фазы 1 после завершения таймера возрождения. Перезарядка возрождения и другие настройки регионального босса всегда берутся из конфигурации босса фазы 1.

Местоположения спавна для конкретных фаз

По умолчанию боссы остаются на своём текущем местоположении при переходе между фазами. Однако вы можете заставить босса телепортироваться в определённое место при входе в фазу, используя настройку phaseSpawnLocation:

Файл: phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.yml
- arrow_fireworks.yml
phaseSpawnLocation: world_name,100,64,100,0,0

Вы также можете телепортировать босса, оставив его в том же мире:

phaseSpawnLocation: same_as_boss,100,64,100,0,0

Это полезно для создания драматичных переходов между фазами, когда босс телепортируется на другую арену или в другое место.

Предупреждения

Вот список механик, которые работают так, что поначалу может показаться неинтуитивным:

  • Если Фазовый босс убит во время любой фазы, он выронит добычу из этой фазы. Это означает, что если кому-то удастся убить фазового босса слишком быстро (с одного удара), он действительно умрёт и выронит добычу, настроенную для этого файла босса, которая не обязательно является финальной фазой. Вы можете это исправить, задав одинаковую таблицу добычи для всех файлов боссов этого фазового босса, или убедившись, что у ваших Фазовых боссов достаточно HP, чтобы убить их за несколько ударов было невозможно. В качестве альтернативы вы можете сделать особые таблицы добычи для тех, кто способен пропускать фазы.

  • Поскольку Фазовые боссы фактически вызывают спавн Кастомных боссов во время боя, они выполняют всю свою процедуру спавна при появлении. Поэтому будьте осторожны с сообщениями о спавне и командами, выполняющимися при спавне. Кроме того, фазовые боссы не умирают при смене фаз, они просто заменяются чем-то другим. Это означает, что команды, выполняющиеся при смерти, выполнятся только для последнего Фазового босса, или если игроку удастся пропустить фазу, нанеся достаточно урона. Команды, выполняющиеся при спавне, можно использовать, чтобы зацепиться за смену фаз. Примечание: сообщение о спавне не будет отправлено, когда босс сбрасывается на фазу 1 из-за регенерации до полного здоровья. Однако сообщения о спавне ОТПРАВЛЯЮТСЯ при переходе на фазы 2, 3 и т. д. во время боя, а также когда региональные боссы возрождаются после своей перезарядки.

  • Фазовые боссы могут появляться верхом на ездовом животном или переставать быть верхом между фазами. Если фазовый босс убит до того, как ездовое животное мертво, ездовое животное сохранится в следующей фазе. Если босс регенерирует до полного здоровья, ездовое животное удаляется, и босс становится не верхом, если только он не настроен садиться на сущность во время фазы 1.

  • Поскольку между фазами спавнятся новые Кастомные боссы, механика одноразового спавна сбрасывается между фазами и при полном исцелении.

Советы и приёмы

  • Вы можете использовать тот факт, что снаряжение и типы сущностей можно менять на протяжении боя, чтобы сделать босса всё более и более (или всё менее и менее) опасным на вид по ходу боя

  • Хотя это возможно, если только нет конкретной дизайнерской цели, вероятно, лучше, чтобы способности Фазового босса не менялись слишком резко между фазами, поскольку игрокам, скорее всего, понравится прогрессия, которая ощущается естественной на протяжении всего боя.

  • Вы можете использовать команды onSpawn для выполнения команд между фазами

  • Вы можете задать разную музыку для каждой фазы с помощью параметра конфигурации song. Музыка автоматически сменится, когда босс войдёт в новую фазу.

  • Фазы можно использовать для переключения босса из ближнего боя в дальний и наоборот

  • Фазовые боссы создавались как крутые боссы с большим количеством HP. Обычно они лучше всего служат финальным столкновением для подземелий или большими Мировыми боссами.

  • При проектировании столкновений учитывайте, что подкрепления, возможно, не будут убиты игроками между фазами.

  • У боссов может быть любое количество фаз, какое вы захотите, но чем больше у них фаз, тем больше здоровья им понадобится, чтобы каждая фаза была значимой.

Интеграция с API

Для разработчиков плагинов: EliteMobs вызывает событие ElitePhaseSwitchEvent, когда босс переходит между фазами. Это событие можно использовать для создания кастомного поведения или эффектов во время переходов между фазами:

@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// Ваша кастомная логика здесь
}