Pular para o conteúdo principal

Entidades nas dungeons

Uma dungeon tem dois tipos de seres vivos, e eles são tratados de forma diferente.

NPCMob de combate
EntryDungeon NPC InstanceDungeon Mob Spawn
O que éQualquer entity definition do Typewriter (as entidades do próprio Typewriter, MythicMobsNPC, BetterModel e assim por diante)Um mob vanilla real
Quem vêApenas os membros da runTodos no mundo, mas ele pertence à run
Quando apareceEnquanto a run existeUma vez por run, na primeira vez que um membro entra na sala dele
PosicionamentospawnLocation (fixa) ou um marcador NPC (gerada)room + positions (fixa) ou marcadores MOB (gerada)

NPCs de uma run​

Um Dungeon NPC Instance exibe um NPC por run, no mundo dessa run, apenas para os membros dessa run. Um jogador que não é membro (outra run no mesmo mundo compartilhado, ou um jogador que saiu) não vê nada. Um membro que sai da run perde o NPC imediatamente.

  1. Crie a entity definition normalmente (uma entidade do Typewriter, um MythicMobsNPC, um BetterModel...). Escolha-a sempre por referência, nunca digitando um id.
  2. Adicione um Dungeon NPC Instance e defina definition.
  3. Em uma dungeon fixa, defina spawnLocation: a posição no mundo modelo. O slot da run a desloca. Em uma dungeon gerada, coloque um marcador NPC em um modelo de sala e aponte o campo npc dele para a instance. O spawnLocation é ignorado.

allowedDungeonIds lista as dungeon instances cujas runs exibem o NPC. Vazio significa todas as runs de todas as dungeons. Em uma dungeon fixa, o mesmo spawnLocation vale para todas as dungeons envolvidas, então restrinja a lista quando as dungeons forem diferentes. Em uma dungeon gerada, o NPC é exibido apenas em uma run cujo layout tem um marcador NPC apontando para ele. Se vários marcadores (ou várias salas) nomeiam a mesma instance, só o primeiro conta, na ordem do layout.

group é vazio por padrão: a audiência são os membros da run, um NPC por run. Escolha uma entry de group apenas para compartilhar um NPC entre os membros desse group dentro da mesma run.

Limites dos NPCs​

  • As activities usam posições absolutas. Uma entity activity (um caminho a percorrer, uma patrulha) não é deslocada para o slot nem para o mundo da run. Deixe activity vazio (o NPC fica parado), a menos que você saiba que a activity usa apenas movimento relativo.
  • MythicMobsNPC: use ticking desativado e uma build recente. Uma definition do MythicMobsNPC com ticking ativado cria um mob real por espectador. Nas dungeons, defina ticking como desativado na definition. O servidor então mantém um mob portador por membro, cada um oculto de todos que não sejam aquele membro, e um clique gera exatamente uma interação para o jogador certo. Isso exige o MythicMobsNPC 5.0 ou posterior (correção de visibilidade por run); builds mais antigas mostram o portador para todos ou duas vezes.
  • Uma cinematic reproduzida por um MythicMobsNPC em uma dungeon não foi testada.
  • O NPC fica oculto além do alcance de exibição (showRange, ou o padrão das entidades) e volta quando o membro se aproxima. Isso é normal.
  • Âncoras de NPC dos baús: um Dungeon Loot Chest com posicionamento NPC abre quando a entidade npcAnchor dele recebe um clique direito.

Mobs de combate​

Um Dungeon Mob Spawn faz mobs vanilla reais aparecerem.

Quando. Uma vez por run, na primeira vez que um membro entra na sala (dungeon fixa) ou na sala do marcador (dungeon gerada). Eles nunca renascem. As ondas são feitas pela action Dungeon Spawn Mobs. Em uma dungeon fixa, a entrada na sala os faz aparecer mesmo que o enterOnce da sala esteja desativado, e apenas uma vez por run.

Onde.

  • Dungeon gerada: em cada marcador MOB de um modelo de sala que aponta para a entry. room e positions são ignorados.
  • Dungeon fixa: em positions, quando um membro entra em room. Com room vazio, nada acontece automaticamente: apenas a action Spawn Mobs faz a entry aparecer. dungeonInstance restringe a entry às runs de uma dungeon.

O quê. entityType (qualquer mob; ENDER_DRAGON e WITHER são recusados com um aviso no log), count (1 a 50 por posicionamento), spread (0 a 32 blocos), nome, equipment com uma chance de drop por slot, attributes (vida, dano, velocidade...) e randomizeData.

Seguro por padrão. blockDamage, dropVanillaLoot e dropExperience estão todos desativados. Os mobs não quebram nem queimam nada (uma explosão ainda fere jogadores), largam apenas o equipamento que você deu a eles (com chance de drop 0 a menos que você a aumente) e não dão experiência. O loot de uma dungeon vem dos seus baús. Itens largados permanecem no mundo depois da run, então mantenha dropVanillaLoot desativado em uma dungeon SHARED_WORLD_SLOTS.

Eles pertencem à run. Eles são removidos quando a run termina. Um mob de uma run nunca mira nem fere os jogadores de outra run, e os jogadores de outra run não podem feri-lo. O que um mob divide ou vira (slimes, magma cubes, um zumbi afogado, um vex invocado por um evoker) também pertence à run.

Pacífico. O jogo remove imediatamente os mobs hostis em um mundo definido como Pacífico, então a extensão não os invoca lá: apenas mobs da classe hostil são recusados (zumbis, mas também slimes, ghasts, phantoms, shulkers...). Mobs neutros e passivos ainda aparecem. O ponto continua devido, a recusa é registrada no log uma vez por ponto, e os mobs aparecem em uma entrada posterior depois que a dificuldade for aumentada. Aumente a dificuldade do mundo ou escolha um tipo não hostil. Esse comportamento ainda não foi verificado no jogo.

Itens e portais. Um mob de dungeon nunca pega itens (o equipamento largado por um jogador fica no chão) e não pode sair por um portal: ele permanece no mundo da run e ainda conta para o teto.

Jogadores de outras runs. Um mob de uma run nunca mira nem fere os jogadores de outra run, e os jogadores de outra run não devem feri-lo. Em um mundo compartilhado (SHARED_WORLD_SLOTS), isso se apoia em filtros e não em mundos separados, então use um modo isolado quando isso importar.

O teto​

maxAliveMobs na Dungeon Instance é o máximo de mobs vivos ao mesmo tempo em uma run (padrão 150, no máximo 500; 0 significa que nenhum mob aparece). Um posicionamento que ultrapassaria o teto faz aparecer apenas os mobs que cabem e diz isso no log do servidor. O restante fica devido (guardado com a run, através de reloads) e aparece, na medida em que o teto então permitir, na próxima vez que um membro entrar na sala, nunca mais do que o count da entry no total.

Morte​

  • onDeath na entry: os triggers são executados cada vez que um dos mobs dela morre, para os jogadores escolhidos por deathRecipients (padrão KILLER_OR_MEMBERS).
  • Quando um mob de dungeon morre (on_dungeon_mob_death): um evento que você pode escutar de qualquer lugar, filtrado por dungeon e por entry de mob.
  • Contam apenas os mobs que a entry criou. Um slime que se divide gera uma recompensa e um evento, não um por pedaço. O que sai de um mob (pedaços, vexes, filhotes, reforços) acompanha a run, mas não executa nada.

Saber que uma sala foi limpa​

Dungeon Mobs Alive (dungeon_mobs_alive) conta os mobs vivos da run, ou de uma entry. 0 não significa que a sala foi limpa: o teto pode ter retido alguns, e os mobs são contados de novo após um reload. Use o evento de morte e depois uma action Dungeon Clear Room para dizer que uma sala foi limpa.

Ondas e adaptação ao número de jogadores​

Por padrão, uma única onda aparece de uma vez e o número de mobs não depende dos jogadores. Três grupos de campos mudam isso.

  • Jogadores. perExtraPlayer adiciona mobs em cada posição para cada jogador além do primeiro: count + perExtraPlayer × (jogadores − 1). maxCount é o teto (0 = sem teto próprio; 50 por posição e o maxAliveMobs da dungeon continuam valendo). playerCountSource diz quem conta: PRESENT_IN_ROOM (padrão) os membros da run presentes na sala no disparo, RUN_MEMBERS os membros da run que estão online.
  • Ritmo. maxSimultaneous é o máximo de mobs de um local vivos ao mesmo tempo (0 = todos de uma vez). Os seguintes aparecem conforme os primeiros morrem. Vale para o local inteiro, não para cada posição.
  • Ondas. waves é uma lista ordenada. Cada onda tem seu count e seu perExtraPlayer, um entityType opcional (senão o da entrada; equipamento, atributos e nome vêm sempre da entrada), um start e um delayTicks. AFTER_PREVIOUS_CLEARED inicia a onda delayTicks depois de as anteriores serem derrotadas; AFTER_DELAY inicia delayTicks depois do começo da anterior, derrotada ou não. Com ondas, o count da entrada deixa de ser usado. Uma onda cujo tipo é recusado é ignorada com um aviso e a seguinte continua. A ação Dungeon Spawn Mobs inicia imediatamente a próxima onda de uma entrada com ondas.

Gatilhos: onWaveStart e onWaveCleared em uma onda, onWaveCleared na entrada (após cada onda) e onCleared na entrada quando o local inteiro é limpo. Rodam para cada membro online da run, uma vez por local e por evento. Os gatilhos de morte rodam primeiro. Um local é limpo quando todas as ondas começaram e nenhum mob está vivo nem esperando vaga sob o teto.

Recarga

As ondas não sobrevivem a uma recarga. Um local que ainda devia mobs os faz aparecer em um único lote (o count da entrada) na próxima vez que um membro entrar na sala, sem evento. As ondas que não tinham começado são perdidas.

Um baú aparece quando todos os mobs são derrotados​

  1. Crie um Dungeon Loot Chest onde o baú deve ficar e ative manualMode, para que ele não seja colocado no início da run.
  2. Crie uma ação Loot Chest Trigger cujo chestEntry seja esse baú. Mantenha triggerMode em ONCE (uma vez por run, mesmo que os gatilhos rodem para cada membro). Adicione um som e um particleEffect se quiser.
  3. No Dungeon Mob Spawn, coloque a ação em onCleared. Para reagir de outro lugar, crie um evento On Dungeon Mobs Cleared, filtre-o com mob e ponha a ação em seus triggers.

O baú aparece no mundo da run quando o último mob do local é derrotado. Para um baú após cada onda, use onWaveCleared da onda.

Limites em resumo​

LimiteValor
Mobs por posicionamento (count)1 a 50
Raio de dispersão (spread)0 a 32 blocos
Mobs vivos por run (maxAliveMobs)150 por padrão, 500 no máximo
Tipos de mob recusadosENDER_DRAGON, WITHER
AparecimentoUma vez por run por ponto, sem respawn
allowedDungeonIds do NPC vazioTodas as runs de todas as dungeons
Definition do MythicMobsNPCticking desativado, MythicMobsNPC 5.0 ou posterior
Mobs vivos = 0Não é "sala limpa": o teto ou um reload podem ocultar mobs devidos
PlataformaSomente Paper, sem Folia
Activity do NPCPosições absolutas, não deslocadas
Mundo pacíficoMobs hostis são recusados

Relacionado​