Criar Fases de Boss
As Fases de Boss permitem que um Boss Personalizado mude a sua configuração durante um encontro.
Como funcionam as Fases de Boss?
As Fases de Boss podem ser adicionadas a qualquer Boss Personalizado no EliteMobs usando o seguinte formato de configuração:
phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y
Nota: O boss que faz spawn originalmente (que contém a entrada phases: listando todas as outras fases) é o boss da fase 1. O ficheiro do boss da fase 1 NÃO deve listar-se a si próprio na sua própria entrada phases:.
Cada entrada segue o formato filename:healthFraction. A fração tem de ser pelo menos 0 e inferior a 1, como 0.60 ou 0.30, e o ficheiro de boss referenciado tem de estar carregado e ativado. O EliteMobs verifica a lista sempre que cria o boss: uma entrada inválida impede o spawn desse boss, e a mensagem na consola indica qual é a entrada.
Cada fase referencia outro ficheiro de boss, permitindo alterar poderes, multiplicadores de dano e vida, tipo de entidade, disfarce e equipamento. O estado do encontro e as definições regionais indicadas abaixo continuam partilhados.
O EliteMobs substitui o corpo do boss pelo da fase seguinte, preservando o estado do encontro. Quando um evento de dano cruzaria o limite da fase seguinte, esse evento é cancelado e a nova fase começa com a percentagem de vida configurada. O dano excedente não passa para a nova fase. Em seguida, o boss recebe 20 ticks de carência de combate.
Se o chunk de destino ainda não puder processar entidades, o EliteMobs carrega-o e espera até 100 ticks (5 segundos) antes de substituir o corpo. O dano ao boss é cancelado durante essa espera. Se o mundo do destino não estiver carregado, ou se o chunk não ficar pronto a tempo, a transição é recusada: o boss mantém a fase atual e a consola regista um aviso.
Exemplo
Veja este exemplo de boss de fase:
Ficheiro: phase_1_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.lua
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30
Ficheiro: phase_2_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.lua
- arrow_fireworks.lua
Ficheiro: phase_3_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain.lua
Isto constitui um Boss de Fase válido. Se fizer spawn de phase_1_boss.yml, este fará spawn de um Stray com os atributos listados acima. Depois de receber dano até 60% da sua vida, será imediatamente substituído na mesma localização pelo Boss Personalizado formado em phase_2_boss.yml, uma vez que o ficheiro de configuração indica - phase_2_boss.yml:0.60 (phase_2_boss.yml é o nome do ficheiro desse boss personalizado, 0.60 é 60% de vida). Note que o boss da fase 2 fará spawn com 60% da sua vida, já que é nesse ponto que muda para essa fase. O boss terá os poderes listados no ficheiro phase_2_boss.yml. Assim que o boss da fase 2 receber dano até 30% da sua vida, fará spawn do boss definido para a fase 3. Note que os poderes da fase 3 não têm relação com os anteriores - pode mudar completamente os poderes entre as fases, assim como quase todos os outros atributos.
Avançado
Mecânicas herdadas
Aqui está uma lista de coisas que não mudam de fase para fase:
-
O primeiro Boss de Fase na cadeia determina por que fases o boss passará, o que significa que não deve colocar uma entrada phases nos outros bosses da fase.
-
A tabela de ameaça / tabela de dano permanece a mesma, o que significa que a distribuição de loot e o sistema de aggro avançado não são afetados por uma mudança de fase
-
A mudança usa a percentagem de vida configurada para a fase seguinte. Se a fase 2 começa com 50%, recebe 50% da própria vida máxima, mesmo que o golpe que iniciou a transição deixasse a fase anterior abaixo desse limite. Cada fase pode ter uma vida máxima diferente.
A vida do boss é limitada pelo settings.attribute.maxHealth.max do servidor (2048 por predefinição). Se várias fases forem configuradas com level e healthMultiplier suficientemente altos para atingir esse limite, todas acabam com exatamente 2048 de vida e as diferenças de vida por fase que pretendia desaparecem. Os exemplos desta página (level: 50, healthMultiplier: 10) estão nesse intervalo — consulte healthMultiplier para saber em que nível cada multiplicador atinge o limite.
-
Os bosses de fase não instanciados que cumprem as condições voltam à fase 1 quando a regeneração fora de combate chama
fullHeal(). Isto exigeregenerateCustomBossHealthOnCombatEnd; esse caminho do evento exclui phantoms. Os bosses instanciados ignoramfullHeal(). A cura comum até à vida máxima não provoca, por si só, um reinício de fase. -
Os bosses regionais mantêm o raio de trela e o cooldown de respawn definidos pela fase 1 e reaparecem como fase 1 após esse prazo. Uma transição usa spawn silencioso e não inicia um novo temporizador de fuga; configure o
timeoutdo encontro na fase 1. -
A fase 1 também determina
normalizedCombatpara toda a sequência. Uma fase comlevel: -1mantém o nível já resolvido do encontro, incluindo o nível selecionado para uma instância; um nível explícito na nova fase substitui-o.
Localizações de Spawn Específicas de Fase
Por predefinição, os bosses permanecem na sua localização atual ao fazer a transição entre fases. No entanto, pode fazer com que um boss se teletransporte para uma localização específica ao entrar numa fase usando a definição phaseSpawnLocation:
Ficheiro: phase_2_boss.yml
isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.lua
- arrow_fireworks.lua
phaseSpawnLocation: world_name,100,64,100,0,0
Também pode teletransportar o boss mantendo-o no mesmo mundo:
phaseSpawnLocation: same_as_boss,100,64,100,0,0
Isto é útil para criar transições de fase dramáticas em que o boss se teletransporta para uma arena ou localização diferente.
Avisos
Aqui está uma lista de mecânicas que funcionam de uma forma que pode ser, inicialmente, contraintuitiva:
-
O dano normal do EliteMobs não pode saltar uma fase seguinte válida com um só golpe: cruzar o seu limite cancela o golpe e avança uma fase. O loot vem da configuração ativa quando o boss morre de facto. Configure as recompensas da fase final. Quando uma transição é recusada, por exemplo porque
phaseSpawnLocationindica um mundo que não está carregado, o golpe que cruza o limite continua cancelado, pelo que o dano normal não consegue levar o boss abaixo desse limite até o problema ser corrigido. -
Cada fase executa a sua rotina de spawn, incluindo os
onSpawnCommandsaplicáveis. As transições e os reinícios após regeneração completa usam spawn silencioso, suprimindo o anúncio normal. Os respawns regionais após o cooldown podem ser anunciados novamente. Uma mudança de fase não é uma morte e não executa comandos de morte. -
Os bosses regionais aplicam os blocos transitivos
ON_REMOVEda fase anterior antes de avançar. A nova fase aplica então os seus blocos de spawn. A morte real ou o comando kill aplica os blocos de remoção da fase final. Os descarregamentos comuns de chunks e os reinícios após regeneração completa não contam como derrotas para essa limpeza. -
As mudanças de fase removem a montaria rastreada da fase anterior; a nova fase cria a sua montaria configurada. Um reinício após regeneração completa também remove a montaria atual e usa a configuração de montaria da fase 1.
-
Cada fase recarrega os seus poderes. O estado dos reforços
ONCEdo podercustom_summoné, portanto, reiniciado ao mudar de fase ou voltar à fase 1; não é um limite de uma vez por encontro.
Dicas e truques
-
Pode tirar partido do facto de o equipamento e os tipos de entidade poderem ser alterados ao longo do combate para fazer o boss parecer cada vez mais (ou cada vez menos) perigoso ao longo da luta
-
Embora seja possível, a menos que exista um objetivo de design específico em mente, provavelmente é melhor que os poderes do Boss de Fase não mudem de forma demasiado drástica entre as fases, pois os jogadores tendem a apreciar mais uma progressão que pareça natural ao longo da luta.
-
Pode usar comandos onSpawn para executar comandos entre as fases
-
Defina
songem cada fase que deve mudar a música. Um valor diferente substitui a faixa; o mesmo valor mantém-na. Omitirsongnuma fase posterior não interrompe a faixa anterior. -
As fases podem ser usadas para alternar o boss entre o modo corpo a corpo (melee) e o modo à distância (ranged) e vice-versa
-
Os Bosses de Fase foram concebidos para serem bosses difíceis com muita vida. Normalmente são mais bem aproveitados como encontro de boss final de masmorras ou como grandes Bosses de Mundo (World Bosses).
-
Os reforços podem continuar vivos entre as fases.
cullReinforcementsna fase anterior controla a limpeza; um reinício para a fase 1 também solicita a limpeza dos reforços. -
Os bosses podem ter quantas fases quiser, mas quanto mais fases tiverem, mais vida precisarão para que cada fase tenha importância.
Integração com a API
Para programadores de plugins: o EliteMobs dispara um ElitePhaseSwitchEvent quando um boss faz a transição entre fases. Este evento pode ser usado para criar comportamentos ou efeitos personalizados durante as transições de fase:
O evento também dispara ao voltar à fase 1. Dispara assim que o corpo da nova fase faz spawn, depois de aplicadas a percentagem de vida e a carência de combate de 20 ticks. Uma transição que espera pelo chunk de destino só dispara o evento quando o corpo aparece.
@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// Your custom logic here
}