Criar Reforços Personalizados
Usa entradas de reforço na lista powers de um boss para invocar outros bosses personalizados durante o combate.
Passos para criar um boss personalizado:
- Cria o teu boss personalizado principal que invocará o teu boss personalizado
- Cria um boss personalizado para os reforços. Tem em mente que os bosses personalizados podem ser mais fortes do que os mobs vanilla, mas também podem ser mais fracos.
- Adiciona a linha de reforço correta ao ficheiro de configuração
Criar a linha de reforço
Vamos assumir que tens um boss personalizado com este formato:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
E queres adicionar-lhe reforços. Eis como poderia ser um desses reforços:
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
E para o tornar válido, adiciona-o à lista de powers:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
O reforço está agora adicionado à entidade do boss. No entanto, como podes ver, há várias opções aqui que podes personalizar. Vamos abordá-las.
Todas as opções de Reforço Personalizado
Dica: Também podes usar EliteScript para invocar reforços, mais sobre isso aqui.
summonType
Este é um campo obrigatório. Define quando o reforço deve aparecer.
| Key | Values | Default |
|---|---|---|
summonType | Especial [1] | nenhum (obrigatório) |
Exemplo
summonType: ON_HIT
Especial [1]
| Key | Description |
|---|---|
ONCE | Tenta um lote nos golpes de jogador que cumpram os requisitos até passar a verificação de probabilidade. Consulta os requisitos abaixo. |
ON_HIT | Tenta um lote em cada golpe de jogador que cumpra os requisitos, sujeito a chance. |
ON_COMBAT_ENTER | Faz aparecer o reforço quando o boss entra em combate (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | Especial: isto serve especificamente para colocar end crystals em lutas de dragão quando o boss entra em combate (1) |
ON_DEATH | Faz aparecer o reforço quando o boss morre |
GLOBAL | Agenda amount reforços imediatamente e a cada 10 segundos enquanto o ciclo de spawn do boss estiver ativo; não exige combate. Cada reforço usa customSpawn para escolher jogador e localização no mundo do boss. Cada invocação de um lote é ignorada assim que a contagem global registada atinge 30 vezes o número de jogadores desse mundo, pelo que a contagem não ultrapassa esse limite. Exige customSpawn. |
(1) A entrada em combate pode resultar de receber dano de um jogador, causar-lhe dano ou adquiri-lo como alvo. Estes reforços podem voltar a ser ativados quando o boss sai e regressa ao combate; não são entradas ONCE.
ONCE acompanha a entrada atualmente analisada, não todo o encontro com várias fases. Uma transição que volte a analisar os poderes cria entradas novas. Quando o lote chega à tentativa de spawn, um spawn bloqueado pode consumir ONCE na mesma; não garante que tenha aparecido um reforço vivo.
filename
Este é um campo obrigatório, pois define qual reforço deve aparecer. A única exceção a este campo ser obrigatório é ao usar a definição summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL, uma vez que os end crystals não são elites.
| Key | Values | Default |
|---|---|---|
filename | Filename | nenhum |
Exemplo
filename: test_boss.yml
Importante: filename deve referir um ficheiro de boss existente em custombosses. Uma referência inválida impede o spawn do reforço e produz um aviso na consola. Uma entrada sem filename (exceto uma entrada de cristal), com um chance que não seja um número finito, ou com uma location que não sejam três números finitos é descartada sempre que o boss é criado, com um aviso Invalid reinforcement que indica o ficheiro do boss.
Viabilidade Mínima
summonType: SUMMON_TYPE e filename: filename.yml são suficientes por si só para criar um Reforço Personalizado. O exemplo seguinte demonstra isto.
Nota: As chaves não distinguem maiúsculas e minúsculas: summonType e SUMMONTYPE funcionam. Valores enumerados como ON_HIT exigem a grafia exata em maiúsculas apresentada acima. Os nomes de ficheiro têm de corresponder às definições referenciadas.
Exemplo
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
No entanto, se quiseres ou precisares de algo mais complexo, continua a ler abaixo para veres o que mais podes fazer com estas opções.
chance
Este campo opcional define uma verificação de probabilidade para todo o lote. Aplica-se a ONCE, ON_HIT, ON_COMBAT_ENTER e ON_DEATH, mas não a GLOBAL nem a ON_COMBAT_ENTER_PLACE_CRYSTAL. Em ONCE, falhar a verificação permite tentar novamente noutro golpe elegível.
| Key | Values | Default |
|---|---|---|
chance | Double | 1.0 |
Exemplo
chance: 0.5
Representa uma probabilidade de 50% de fazer aparecer um Reforço Personalizado.
Usa um chance finito entre 0.0 e 1.0. Para ON_HIT e uma entrada ONCE por consumir, o evento de dano do jogador não pode estar cancelado, o boss tem de ter entidade viva com IA ativa, os poderes não podem estar suprimidos e o dano do evento tem de ser pelo menos 3. Cada golpe elegível faz uma verificação independente para todo o lote.
ON_HIT e ONCE ignoram os tempos de recarga do poder e do boss, incluindo os iniciados por Cooldowns.global do EliteScript ou cooldowns.set_global(...) do Lua. Os requisitos acima continuam a aplicar-se. Ajusta as invocações repetidas através de chance e amount.
Ativa /em debug e atinge o boss. As mensagens [CustomSummon] mostram golpes rejeitados, falhas de probabilidade, localizações calculadas e se um spawn normal produziu uma entidade viva. Um reforço regional fica agendado para inicialização posterior. A supressão de poderes produz atualmente a mensagem genérica de rejeição, sem explicar a supressão. Estas mensagens estão desativadas quando debug está desligado.
location
location: x,y,z é um campo de configuração opcional que permite aos administradores deslocar a localização do reforço por um número de blocos. Eis os conceitos-chave que precisas de saber sobre esta opção:
A localização de deslocamento é relativa. Isto significa que location: 0,10,0 fará aparecer um boss exatamente 10 blocos acima do boss, e não nas coordenadas de mundo 0,10,0.
A localização relativa é diferente para bosses regionais. Os bosses regionais usarão sempre o seu ponto de spawn como origem da localização relativa, o que significa que, se souberes onde está o ponto de spawn do boss e contares os blocos, podes fazer com que os bosses de reforço apareçam em localizações específicas. O covil do Binder of Worlds depende disto para fazer aparecer os bosses da torre de desafio em posições de bloco extremamente específicas, independentemente de onde o boss dragão se encontra.
Os bosses aparecerão dentro de blocos se errares ao medir as distâncias.
| Key | Values | Default |
|---|---|---|
location | String | nenhum |
Exemplo
location: 0,10,0
Para um Boss Personalizado não-regional, fará aparecer o reforço exatamente 10 blocos acima do boss, independentemente de onde ele esteja.
Para um Boss Personalizado regional, fará aparecer o reforço exatamente 10 blocos acima do ponto de spawn do boss regional, independentemente de onde o boss esteja.
Nota importante: Este é um campo obrigatório especificamente para summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL!
lightningRod
Usado apenas com summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Enquanto o boss e o cristal forem válidos, inicia um ataque imediatamente e a cada cinco segundos. Cada ataque mostra partículas de aviso durante cerca de três segundos e depois cria um relâmpago e uma bola de fogo explosiva descendente. O alvo usa deslocamentos X/Z de -15 a 14 à altura do cristal, sem projeção no chão. O cristal é marcado como elite e acompanhado como reforço; não herda um alvo de combate de mob.
Não pode ser usada com os outros Reforços Personalizados, pois esses devem depender de powers para este tipo de habilidades.
| Key | Values | Default |
|---|---|---|
lightningRod | Boolean | false |
Exemplo
lightningRod: false
inheritAggro
É um campo de configuração opcional que faz os Reforços Personalizados herdarem os níveis de ameaça do boss.
Copia a tabela de ameaça do invocador, permitindo aos reforços escolher o seu alvo de maior ameaça. A ameaça também considera cura e provocações; não é apenas uma classificação de dano. Não copia o dano nem a contribuição para recompensas.
| Key | Values | Default |
|---|---|---|
inheritAggro | Boolean | false |
Exemplo
inheritAggro: false
amount
Define o número de bosses personalizados num lote bem-sucedido. Usa um inteiro positivo. O tipo de cristal coloca sempre um cristal por entrada e ignora amount.
| Key | Values | Default |
|---|---|---|
amount | Integer | 1 |
Exemplo
amount: 1
spawnNearby
É um campo de configuração opcional que define se o Reforço Personalizado deve aparecer nas proximidades em vez de em cima do boss ou numa localização relativa específica.
Tenta até 30 localizações com deslocamentos inteiros X/Z de -15 a 14 em torno da posição calculada, incluindo o deslocamento location. Cada tentativa procura para cima desde essa Y, parando dois blocos abaixo do limite de construção do mundo, dois blocos de ar sobre um bloco não atravessável. Se todas falharem, usa a posição calculada original. Esta pesquisa não aplica os filtros de distância a jogadores, luz ou mundo do Custom Spawn; as proteções normais de spawn do boss continuam a aplicar-se.
| Key | Values | Default |
|---|---|---|
spawnNearby | Boolean | false |
Exemplo
spawnNearby: false
inheritLevel
É um campo de configuração opcional que define se o Reforço Personalizado deve herdar o nível do Boss Personalizado que está a reforçar.
| Key | Values | Default |
|---|---|---|
inheritLevel | Boolean | false |
Exemplo
inheritLevel: false
customSpawn
É um campo de configuração que só é usado para reforços globais. Usa as definições de spawn personalizado para definir onde os reforços poderão aparecer.
Usa as verificações de superfície, luz, altura e localização de Spawns Personalizados, incluindo o filtro de biomas e o comportamento de espera horária aí descritos. Os reforços globais escolhem diretamente entre todos os jogadores do mundo de spawn do invocador. Ignoram as verificações normais de dados carregados, ValidWorlds.yml, validWorlds, validWorldEnvironments, instância e regra de spawn de mobs. O caminho global usa filename, amount e customSpawn; não aplica chance, location, spawnNearby, inheritAggro nem inheritLevel.
| Key | Values | Default |
|---|---|---|
customSpawn | Filename | nenhum |
Exemplo
customSpawn: normal_surface_spawn.yml
difficultyID
Restringe o reforço a dificuldades de masmorra instanciada. Aceita um nome, um ID numérico ou uma lista de ambos; consulta a correspondência de dificuldades.
| Key | Values | Default |
|---|---|---|
difficultyID | String ou lista de strings | nenhum |
Se o boss tiver uma masmorra instanciada com dificuldade ativa e o filtro não corresponder, toda a entrada é descartada antes de ser analisada. Um filtro explicitamente vazio ou inválido não corresponde a nenhuma dificuldade. Omite a chave para não restringir a entrada. Fora de uma instância associada a uma masmorra, o filtro não tem efeito.
Exemplo
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic
Montar um grande reforço
Vamos criar um reforço de exemplo usando a maioria dos campos anteriores:
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
Isto faz o seguinte:
- Cria um Reforço Personalizado
- O Reforço Personalizado aparecerá quando o Boss Personalizado entrar em combate (
summonType: ON_COMBAT_ENTER) - O Reforço Personalizado invocado será o de
test_boss.yml(filename: test_boss.yml) - O reforço usa a procura de chão descrita em
spawnNearby, centrada no boss neste exemplo (spawnNearby: true). - O reforço copia a tabela de ameaça do invocador para escolher o alvo (
inheritAggro: true). - Independentemente da definição em
test_boss.yml, o Reforço Personalizado terá o mesmo nível do Boss Personalizado que está a reforçar (inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
Isto faz o seguinte:
- Cria um Reforço Personalizado
- O Reforço Personalizado será um End Crystal que é colocado quando o combate começa (
summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL) - O cristal cria repetidamente ataques atrasados de relâmpagos e bolas de fogo com deslocamentos X/Z próximos (
lightningRod: true).
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true
Isto faz o seguinte:
- Cria um Reforço Personalizado
- O Reforço Personalizado aparecerá quando o boss morrer (
summonType: ON_DEATH) - O Reforço Personalizado invocado será o de
revenge_minion.yml(filename: revenge_minion.yml) - Aparecerão três reforços (
amount: 3) - Os reforços usam a procura de chão em torno do local da morte (
spawnNearby: true).
Agora, para aplicar isto ao Boss Personalizado:
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
E está feito! Eis mais algumas dicas:
- Os campos podem ser definidos em qualquer ordem, embora seja recomendado ter sempre o
summonTypeprimeiro! - Para conteúdo novo, usa as entradas de mapa YAML aqui apresentadas em vez dos antigos formatos de texto
summon:ousummonable:. Esses textos continuam a carregar: o EliteMobs converte-os em memória e deixa o ficheiro do boss tal como foi escrito. Um texto antigo com campos em falta, vazios ou repetidos é descartado com um aviso.