Создание мировых боссов
Мировых боссов (World Bosses) иногда также называют региональными боссами (Regional Bosses).
Что это?
Мировые боссы — это пользовательские боссы, настроенные на появление в определённом месте с определённой задержкой. Это также боссы, используемые в подземельях. Хотя в этом разделе мы будем говорить именно о создании мировых боссов для использования вне подземелий.
Для чего они?
Мировые боссы позволяют игрокам столкнуться с фиксированным испытанием, зная, что добыча будет того стоить.
Что нужно для создания мирового босса?
- Местоположение. Рекомендуется комната босса с радиусом примерно 15 блоков (30 блоков в поперечнике) из-за радиуса агрессии в Minecraft. Кроме того, убедитесь, что территория защищена регионом WorldGuard (чтобы игроки не могли строить ловушки) и что рельеф нельзя использовать в свою пользу в бою.
- Время возрождения (respawn). Таймер возрождения крайне важен. Я не рекомендую делать таймер возрождения меньше 30 минут, иначе возрождение босса будет менее значимым событием. 1 час — довольно хорошее время, но вы также можете сделать так, чтобы босс возрождался раз в день или даже раз в неделю.
- Время побега (escape). Чем дольше возрождение, тем дольше должно быть время побега. Также учитывайте, что время побега должно быть достаточно долгим, чтобы люди могли спокойно бросить боссу вызов. Таймеры побега важны, если вы не хотите позволять игрокам уничтожать босса камикадзе-тактикой. Это не обязательно и даже не рекомендуется, если вы хотите делать масштабных боссов с возрождением раз в неделю.
- Пользовательский босс. Мировые боссы — это, по сути, просто пользовательские боссы с особыми правилами появления. Убедитесь, что вы выбрали способности (powers) с хорошей совместимостью для рейдового боя.
- Интересная добыча. Главная привлекательность мировых боссов, помимо вызова, — это добыча. Убедитесь, что игроки могут получить с них что-то, чего они просто не могут получить нигде больше.
- Тематика. У хорошего регионального босса должна быть тематика, с тематическим местоположением и тематической добычей.
Параметры конфигурации пользовательского босса для мировых боссов:
Эти настройки добавляются в обычные конфигурационные файлы пользовательского босса. Подробную страницу вики о них можно найти здесь.
isRegionalBoss
Устанавливает, является ли босс региональным. Региональные боссы — это другое название мировых боссов, поэтому нужно установить значение true.
| Key | Values | Default |
|---|---|---|
isRegionalBoss | Boolean | false |
Пример
isRegionalBoss: true
spawnLocations
Места появления следует задавать прямо в игре с помощью команды /em place boss <filename.yml>.
Хотя можно добавлять местоположения вручную из конфигурации, я не рекомендую этого делать, поскольку слишком легко допустить ошибку.
| Key | Values | Default |
|---|---|---|
spawnLocations | String List | none |
Пример
Местоположения в конфигурационных файлах (для продвинутых пользователей). Конфигурационные файлы регионального босса хранят все экземпляры этого регионального босса в одном файле, сохраняя несколько мест появления, а также таймеры возрождения.
На практике это означает, что эта запись:
spawnLocations:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
- elitemobs_sewer_maze,-135.02262355317436,168.2,-153.28849346821508,-98.53906,60.750263:1609026066482
- elitemobs_sewer_maze,-70.43846307626053,168.2,-174.13499832314378,-271.24023,64.19999:1610710886530
- elitemobs_sewer_maze,-130.39762674971664,168.2,-171.67396911490718,-47.532227,51.900173:1609026066482
- elitemobs_sewer_maze,-117.12782160766056,162.2,-166.40989416757444,-71.37402,-1.4997427:1610710974882
- elitemobs_sewer_maze,-105.13138759611667,168.2,-169.85898023126538,-124.34766,41.24988:1610710945331
- elitemobs_sewer_maze,-106.21847515732084,169.2,-152.3609257554766,-170.86523,21.450315:1610537606222
содержит 7 разных региональных боссов в разных местах и с разными таймерами возрождения.
Давайте разберём детали, взглянув на первого регионального босса:
- elitemobs_sewer_maze,-70.17178578884845,168.2,-173.17112099568718,-271.24023,64.19999:1610710903931
Поскольку это соответствует формату world,x,y,z,pitch,yaw:unixTimeStamp, босс появляется в мире под названием elitemobs_sewer_maze на x = -70.17178578884845, y = 168.2, z = -173.17112099568718, pitch = -271.24023, yaw = 64.19999.
Метка времени unix хранит время в формате unix, в которое босс возродится. Это используется для сохранения времени возрождения между перезапусками. Если вы хотите узнать, какому времени это соответствует, в интернете есть бесчисленное множество инструментов для конвертации unix-времени в обычное.
Если вы хотите, чтобы определённый босс возродился после перезагрузки или перезапуска, всё, что нужно сделать — удалить часть :unixTimeStamp (включая двоеточие), чтобы запись выглядела так: world,x,y,z,pitch,yaw
spawnCooldown
Устанавливает, сколько времени требуется боссу для возрождения, в минутах.
Примечание: для крупных боссов рекомендуется более длительное возрождение!
| Key | Values | Default |
|---|---|---|
spawnCooldown | Integer | 0 |
Пример
spawnCooldown: 20
timeout
Устанавливает, сколько времени босс остаётся активным до автоматического побега/исчезновения, в минутах. При значении 0 у босса никогда не будет тайм-аута.
Примечание: это значение должно быть достаточно большим, чтобы игроки могли спокойно завершить бой.
| Key | Values | Default |
|---|---|---|
timeout | Integer | 0 |
Пример
timeout: 60
Заставляет босса сбежать через 60 минут, если он не побеждён.
leashRadius
Устанавливает радиус от spawnLocation, на который мировой босс может отойти, прежде чем будет телепортирован обратно к своей точке появления. Это не позволяет игрокам утаскивать босса в место, где с ним было бы легче сражаться.
Примечание: старайтесь не создавать боевые зоны, требующие привязки (leash) короче 20 блоков, так как это ухудшит бой.
| Key | Values | Default |
|---|---|---|
leashRadius | Double | none |
Пример
leashRadius: 30
escapeMessage
Устанавливает сообщение, рассылаемое игрокам, когда босс сбегает из-за тайм-аута. Работает совместно с настройками timeout и announcementPriority.
| Key | Values | Default |
|---|---|---|
escapeMessage | String | none |
Пример
escapeMessage: "&cThe World Boss has escaped!"
announcementPriority
Устанавливает уровень приоритета для оповещений о появлении/смерти/побеге босса. Более высокие значения показывают больше оповещений и включают дополнительные функции.
| Уровень | Поведение |
|---|---|
0 | Без звука (нет оповещений, нет отслеживания) |
1 | Только сообщения в чате (оповещения о появлении/смерти/побеге) |
2 | Уровень 1 + возможность отслеживания игроками через меню /em |
3 | Уровень 2 + уведомления в Discord (если настроено) |
| Key | Values | Default |
|---|---|---|
announcementPriority | Integer | 0 |
Пример
announcementPriority: 3
Заставляет босса оповещать в чате и Discord, а также позволяет игрокам отслеживать его.
isPersistent
Управляет тем, переживает ли босс выгрузку чанков. Для всех мировых боссов следует устанавливать true, чтобы они не исчезали при выгрузке чанка.
Примечание: слишком большое количество постоянных боссов (сотни) может вызвать проблемы с производительностью.
| Key | Values | Default |
|---|---|---|
isPersistent | Boolean | false |
Пример
isPersistent: true
removeAfterDeath
Определяет, удаляется ли мировой босс навсегда после поражения. Полезно для одноразовых боссов событий или особых столкновений, которые не должны возрождаться.
При false (по умолчанию) босс возродится после периода spawnCooldown.
При true босс навсегда удаляется из списка мест появления.
| Key | Values | Default |
|---|---|---|
removeAfterDeath | Boolean | false |
Пример
removeAfterDeath: true
Переходные блоки (Transitive Blocks)
Также известны как onSpawnBlockStates и onRemoveBlockStates.
Эти значения позволяют региональным боссам появлять блоки, когда они входят в бой, и удалять их, когда боссы исчезают, то есть когда они либо сбегают из-за тайм-аута, либо когда умирают.
Именно так вы можете заставлять боссов открывать или закрывать двери / зоны или даже изменять арену во время боя, если используете это с фазовыми боссами!
| Key | Values | Default |
|---|---|---|
onSpawnBlockStates | См. подробное объяснение | none |
| Key | Values | Default |
|---|---|---|
onRemoveBlockStates | См. подробное объяснение | none |
Подробное объяснение
Все блоки задаются относительно места появления. Убедитесь, что у вас есть окончательное место появления, прежде чем начинать задавать какие-либо блоки.
Если вы уже создали большую область переходных блоков, а теперь вам нужно переместить босса, но вы не хотите переделывать переходные блоки, то вы можете использовать действие EliteScript Teleport, чтобы переместить босса в нужное место после его появления. Учтите, что вам придётся соответствующим образом скорректировать привязку (leash).
Из-за сложности задания блоков не рекомендуется делать это вручную. Вместо этого следует использовать следующие команды:
- /em transitiveBlocks register
<regional_boss_file.yml><on_spawn/on_remove> - /em transitiveBlocks edit
<regional_boss_file.yml><on_spawn/on_remove> - /em transitiveBlocks registerArea
<regional_boss_file.yml><on_spawn/on_remove> - /em transitiveBlocks editArea
<regional_boss_file.yml><on_spawn/on_remove> - /em transitiveBlocks cancel
Давайте разберём это.
/em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
Самая базовая команда. Это переключатель, который вы запускаете один раз, чтобы начать, и снова, чтобы зафиксировать. Как и во всех остальных командах, вы выбираете, задаёте ли вы эти блоки для изменения в состоянии ON_SPAWN или ON_REMOVE.
При регистрации ON_SPAWN это будет изменять блоки, когда босс появляется или возрождается. При регистрации ON_REMOVE это будет изменять блоки, когда босс умирает или у него истекает тайм-аут с помощью механики тайм-аута пользовательского босса.
Чтобы зарегистрировать блоки, просто размещайте или убирайте блоки, которые вы хотите изменить, пока этот режим включён.
/em transitiveBlocks edit <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
Если вы хотите изменить уже заданные блоки, можно использовать эту команду. Работает очень похоже на /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>.
/em transitiveBlocks registerArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
Как и /em transitiveBlocks register <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>, это позволяет регистрировать блоки, но даёт возможность выбирать их, задавая два диаметрально противоположных угла (так же, как выбор региона в worldedit / worldguard), вместо выбора блоков по отдельности.
В целях безопасности для региональных выделений действует лимит в 500 блоков (по умолчанию, изменяется через defaultTransitiveBlockLimiter в config.yml). Учтите, что каждый блок изменяется в один и тот же тик, поэтому, если вы изменяете большой участок рельефа, вы, вероятно, начнёте замечать сильные лаги при выполнении этих изменений.
/em transitiveBlocks editArea <regional_boss_file.yml> <ON_SPAWN/ON_REMOVE>
Работает так же, как /em transitiveBlocks edit, но для областей. Может использоваться для превышения лимита регистрации в 500 (по умолчанию) блоков для областей.
/em transitiveBlocks cancel
В любой момент, если при регистрации блоков допущена ошибка, вы можете выполнить эту команду, чтобы отменить регистрацию. Она откатит любые изменения, которые вы начали регистрировать в этой правке / регистрации.
Профессиональные советы по созданию хорошего, большого боя с региональным боссом
-
Действительно подумайте о том, как способности (powers) вашего пользовательского босса дополняют друг друга. Вы не хотите, чтобы ваш босс большую часть времени стоял на месте, потому что он что-то применяет, так как это может сделать бой действительно лёгким. Также вы не хотите, чтобы у босса были только дальние атаки и не было ближних способностей или наоборот, если только вы не создаёте что-то очень специфическое. Тестирование игрой важно.
-
Здоровье — много его. Множитель здоровья, вероятно, должен быть на солидном уровне 10, если вы хотите, чтобы люди действительно объединялись для боя с боссом.
-
Урон — не слишком много. EliteMobs уже чрезвычайно смертоносны по умолчанию, а способности обычно экспоненциально смертоноснее. Вместо того чтобы взвинчивать урон до потолка, рассмотрите использование способностей, чтобы босс бил сильнее.
-
Эксплойты повсюду. Особенно тщательно убедитесь, что рельеф нельзя использовать в свою пользу. Поместите босса в закрытую комнату, чтобы люди не пытались отстреливать его издалека. Способность неуязвимости к стрелам, вероятно, чрезвычайно важна для многих мировых боссов, поскольку мобы Minecraft не могут противостоять отстрелу за несколько чанков, поэтому, если вы хотите разрешить атаки из лука, убедитесь, что луки нельзя использовать как эксплойт.
-
Знайте плагин. Существует множество маленьких хитростей для победы над EliteMobs, например, как некоторые способности можно отразить щитами, тогда как другие следует отражать уклонением или даже временным бегством от босса. Чем лучше вы знаете, как работают способности и как им противостоять, тем лучше будут боссы, которых вы создаёте.
Полный пример мирового босса
Вот полный пример конфигурации мирового босса с использованием всех настроек, рассмотренных в этом руководстве:
isEnabled: true
entityType: ZOMBIE
name: "&cThe Zombie King"
level: 50
healthMultiplier: 10.0
damageMultiplier: 2.0
# Настройки, специфичные для мирового босса
isRegionalBoss: true
isPersistent: true
# Настройки появления
spawnLocations:
- world,100,64,100,0,0
spawnCooldown: 60
# Границы боя
leashRadius: 30
timeout: 20
# Сообщения и оповещения
spawnMessage: "&cThe Zombie King has risen!"
deathMessage: "&aThe Zombie King has been defeated by $players!"
escapeMessage: "&eThe Zombie King has escaped..."
announcementPriority: 2
# Изменение арены
onSpawnBlockStates:
- 0,0,0,BARRIER
onRemoveBlockStates:
- 0,0,0,AIR
# Особенности босса
powers:
- zombie_reinforcements.yml
- ground_pound.yml
uniqueLootList:
- magmaguys_toothpick.yml
Этот босс будет:
- Появляться в указанном месте каждые 60 минут после поражения
- Сбегать через 20 минут, если не побеждён
- Оповещать о появлении/смерти/побеге в чате и позволять игрокам отслеживать себя
- Переживать выгрузку чанков
- Изменять блоки арены при появлении и смерти
- Выбрасывать уникальную добычу при поражении