Entidades nas dungeons
Uma dungeon tem dois tipos de seres vivos, e eles são tratados de forma diferente.
| NPC | Mob de combate | |
|---|---|---|
| Entry | Dungeon NPC Instance | Dungeon 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 run | Todos no mundo, mas ele pertence à run |
| Quando aparece | Enquanto a run existe | Uma vez por run, na primeira vez que um membro entra na sala dele |
| Posicionamento | spawnLocation (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.
- Crie a entity definition normalmente (uma entidade do Typewriter, um MythicMobsNPC, um BetterModel...). Escolha-a sempre por referência, nunca digitando um id.
- Adicione um Dungeon NPC Instance e defina
definition. - Em uma dungeon fixa, defina
spawnLocation: a posição no mundo modelo. O slot da run a desloca. Em uma dungeon gerada, coloque um marcadorNPCem um modelo de sala e aponte o camponpcdele para a instance. OspawnLocationé 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
activityvazio (o NPC fica parado), a menos que você saiba que a activity usa apenas movimento relativo. - MythicMobsNPC: use
tickingdesativado e uma build recente. Uma definition do MythicMobsNPC comtickingativado cria um mob real por espectador. Nas dungeons, definatickingcomo 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
NPCabre quando a entidadenpcAnchordele 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
MOBde um modelo de sala que aponta para a entry.roomepositionssão ignorados. - Dungeon fixa: em
positions, quando um membro entra emroom. Comroomvazio, nada acontece automaticamente: apenas a action Spawn Mobs faz a entry aparecer.dungeonInstancerestringe 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
onDeathna entry: os triggers são executados cada vez que um dos mobs dela morre, para os jogadores escolhidos pordeathRecipients(padrãoKILLER_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.
perExtraPlayeradiciona 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 omaxAliveMobsda dungeon continuam valendo).playerCountSourcediz quem conta:PRESENT_IN_ROOM(padrão) os membros da run presentes na sala no disparo,RUN_MEMBERSos 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 seucounte seuperExtraPlayer, umentityTypeopcional (senão o da entrada; equipamento, atributos e nome vêm sempre da entrada), umstarte umdelayTicks.AFTER_PREVIOUS_CLEAREDinicia a ondadelayTicksdepois de as anteriores serem derrotadas;AFTER_DELAYiniciadelayTicksdepois do começo da anterior, derrotada ou não. Com ondas, ocountda 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.
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
- 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. - Crie uma ação Loot Chest Trigger cujo
chestEntryseja esse baú. MantenhatriggerModeemONCE(uma vez por run, mesmo que os gatilhos rodem para cada membro). Adicione um som e umparticleEffectse quiser. - No Dungeon Mob Spawn, coloque a ação em
onCleared. Para reagir de outro lugar, crie um evento On Dungeon Mobs Cleared, filtre-o commobe ponha a ação em seustriggers.
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
| Limite | Valor |
|---|---|
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 recusados | ENDER_DRAGON, WITHER |
| Aparecimento | Uma vez por run por ponto, sem respawn |
allowedDungeonIds do NPC vazio | Todas as runs de todas as dungeons |
| Definition do MythicMobsNPC | ticking desativado, MythicMobsNPC 5.0 ou posterior |
| Mobs vivos = 0 | Não é "sala limpa": o teto ou um reload podem ocultar mobs devidos |
| Plataforma | Somente Paper, sem Folia |
| Activity do NPC | Posições absolutas, não deslocadas |
| Mundo pacífico | Mobs hostis são recusados |