Pular para o conteúdo principal

MythicMobs

Gere mobs do MythicMobs, lance habilidades, crie objetivos de abate e spawners por região a partir do TypeWriter.

Gratuitasv0.12Integrações
RequerTypeWriter0.9Quest (TypeWriter extension)MythicMobsPacketEventsopcional

Visão geral​

A extensão MythicMobs conecta o plugin MythicMobs ao TypeWriter. Os mobs e as skills continuam sendo definidos no MythicMobs; o TypeWriter decide quando e para quem eles aparecem. Você pode invocar ou remover um mob a partir de uma sequence, lançar uma skill, reagir quando um jogador mata um mob ou interage com ele, contar abates como um objective de quest ou deixar que uma região invoque mobs enquanto houver jogadores por perto.

Os mobs podem ser privados. Um mob invocado com onlyVisibleForPlayer ou um visibilityGroup é exibido apenas ao jogador ou ao grupo, não pode ser ferido, alvejado nem clicado por mais ninguém, e seus sons e partículas ficam ocultos para os outros jogadores. É isso que torna possíveis lutas de boss pessoais e mobs de quest por jogador em um servidor compartilhado.

Desde a 0.12, a visibilidade também pode seguir facts do TypeWriter: com visibilityCriteria, um mob só é visto, alvejado e ferido pelos jogadores que atendem aos criteria, reavaliados continuamente. Uma arena privada controlada por facts não precisa de grupo.

A extensão roda no Paper e no Folia e precisa da extensão Quest do TypeWriter para o objective de abates. O repositório de código-fonte real é o Typewriter-MythicMobs.

Recursos​

  • Invocar e remover — invoque um mob em uma posição com um nível, ou remova todos os mobs ativos de um tipo.
  • Lançamento de skills — execute uma skill do MythicMobs como o jogador, a partir de uma action ou de um segmento de cinematic.
  • Eventos de mobs — inicie sequences quando um jogador mata um mob, é morto por um mob ou clica com o botão direito em um mob.
  • Kill objective — um objective de quest que conta abates do MythicMobs por nome ou expressão regular, e conta abates feitos por projéteis e pets domesticados.
  • Spawner por região — invoque mobs em uma ou várias caixas quando há jogadores próximos, com limite, cooldown e aquecimento. Um group opcional o restringe aos membros de um grupo, com cada grupo tendo seu próprio ciclo.
  • Mobs privados — visibilidade restrita a um jogador, a um grupo ou aos jogadores que atendem a criteria (facts), incluindo dano, alvo, interação, sons e partículas.
  • Mobs em cinematic — invoque um mob durante uma cinematic, oculto de todos os outros jogadores, e lance skills em uma linha do tempo.
  • Fact de contagem de mobs — quantos mobs de um tipo estão ativos no momento, para diálogos e condições.

Instalação​

  1. Instale o MythicMobs no servidor.
  2. Instale a extensão oficial Quest do TypeWriter.
  3. Recomendado: instale o PacketEvents. Ele é usado para ocultar os sons e as partículas dos mobs privados. Sem ele, a extensão registra PacketEvents not loaded — sound isolation disabled e os mobs privados continuam privados visualmente, mas não silenciosos.
  4. Coloque o JAR da extensão MythicMobs em plugins/Typewriter/extensions/.
  5. Reinicie o servidor.

Primeiros passos​

Faça um boss aparecer apenas para o jogador que aceitou uma quest e conclua um objective quando ele morrer:

  1. No MythicMobs, crie o mob, por exemplo CryptKing.
  2. No painel web do TypeWriter, abra uma página de sequence e adicione uma action Spawn Mob.
  3. Defina mobName como CryptKing, level como 1, spawnLocation com o local (capture a posição no jogo) e ative onlyVisibleForPlayer.
  4. Vincule um trigger ou um criteria para que a action seja executada quando a quest começar.
  5. Abra a página da quest e adicione um MythicMob Kill Objective. Vincule a quest, um fact (um fact armazenável em cache que guarda o progresso), defina mythicMobName como CryptKing, amount como 1 e escreva o texto de display.
  6. Opcionalmente, defina onComplete como uma sequence que entrega a recompensa.
  7. Publique e teste: os outros jogadores não conseguem ver, atingir nem ouvir o boss.
Reagir a um abate sem uma quest

Use o Mob Death Event com um mobName e vincule triggers à sequence a executar. Ele é disparado quando um jogador é o autor da morte do mob.

Combate visível apenas para alguns jogadores​

Uma arena privada: apenas os jogadores que atendem a certos facts veem o mob, são alvos dele e podem lutar contra ele.

  1. Crie um fact (por exemplo in_arena) e defina-o para os jogadores que entram na arena.
  2. Adicione uma ação Spawn Mob e preencha visibilityCriteria com esse fact. Os criteria são reavaliados a cada visibilityRefreshInterval (1 segundo por padrão): um jogador que sai da arena perde o mob na hora, e o mob larga o alvo.
  3. Inicie a luta a partir do trigger que preferir.
  4. Termine-a com uma ação Despawn Mob com scope em VISIBLE_TO_PLAYER (remove apenas os mobs que o jogador vê), ou deixe o mob sair sozinho com abandonRange (acima de 0) e abandonDelay: ele é removido quando nenhum jogador autorizado permanece ao alcance durante o atraso. O editor web preenche as novas durações com 1 segundo, então confira abandonDelay.
  5. Opcional: defina collidable como false para remover colisão e empurrões. Isso vale então para todos.

Todo o dano ligado a um mob restrito (corpo a corpo, projéteis, skills do MythicMobs, fogo) é bloqueado em relação aos jogadores não autorizados, e vice-versa. Os projéteis atravessam.

Skills sem dano (poção, arremesso...) não podem ser atribuídas a um jogador. Adicione a elas a condição de alvo do MythicMobs typewritervisible (alias twvisible): ela só é verdadeira quando o alvo tem permissão para ver o lançador.

Inline, como condição do targeter. Mantenha os dois espaços depois de [ e o espaço antes de ], o MythicMobs precisa deles:

Skills:
- potion{type=SLOW;duration=100} @PlayersInRadius{r=10;conditions=[ - twvisible true ]} ~onTimer:40

Não escreva ?twvisible no fim da linha: o MythicMobs verifica essas condições no mob, não nos jogadores que ele mira.

Ou em uma metaskill. As linhas dela não levam targeter: são executadas em cada alvo que passou na condição.

# Arquivo de mobs
Skills:
- skill{s=ArenaBossSlow} @PlayersInRadius{r=10} ~onTimer:40

# Arquivo de skills
ArenaBossSlow:
TargetConditions:
- twvisible
Skills:
- potion{type=SLOW;duration=100}

twvisible false no targeter é o oposto: apenas os jogadores que não podem ver o mob.

observação

O MythicMobs lê seus arquivos antes de o Typewriter carregar. Quando twvisible aparece neles, a extensão executa /mm reload uma vez na inicialização do servidor, então você não precisa fazer nada. A condição continua funcionando após um reload do Typewriter. Se o Typewriter estiver parado, ela deixa todos os jogadores passarem e registra um aviso pedindo um /mm reload.

Limites. A colisão é tudo ou nada. Skills sem dano não são filtradas sem twvisible. Sons e partículas tocados longe do mob não são ocultados. Um mob cuja entrada de origem é excluída continua oculto para todos. Após reiniciar o servidor, um mob com abandonRange é removido se nenhum jogador autorizado se aproximar dentro de abandonDelay.

Como funciona​

Configuração​

A maioria das configurações são campos das entries. Dois comportamentos merecem atenção:

  • Isolamento automático. No arquivo do mob do MythicMobs, defina Options.VisibilityGroup: nearby para que o mob seja visível apenas ao jogador mais próximo (a até 100 blocos) quando é invocado. Os mobs invocados com os motivos NATURAL, RANDOM ou RANDOM_SPAWN recebem o mesmo tratamento, mesmo sem a opção. Os mobs já restritos por uma entry do TypeWriter são deixados como estão.

  • Correspondência de mobs. Os campos mobName dos eventos são expressões regulares comparadas com o nome interno do MythicMobs, sem diferenciar maiúsculas de minúsculas no Mob Death Event e no MythicMob Interact Event. Use .* para corresponder a qualquer mob.

  • Formato de exibição do objetivo. A linha do MythicMob Kill Objective no rastreador de quests não é fixa no código. Ela é lida de dois snippets do TypeWriter, editados em plugins/Typewriter/snippets.yml: advancedQuest.display (em andamento, padrão <display> (<current>/<required>) em tons de cinza) e advancedQuest.completed (quantidade atingida, padrão ✔ e depois o <display> riscado e o progresso). Placeholders: <display> (o campo display do objetivo), <current> e <required>; os placeholders do PlaceholderAPI também são processados. As duas chaves são compartilhadas com as outras extensões de objetivos da BTC, então uma edição muda o estilo de todos os objetivos de contagem.

Entries​

14 entradas, geradas a partir do código-fonte da extensão.

Ações3
Eventos3
Objetivos1
Fatos4
Cinemáticas2
Definições1
Facts provisórios

MythicMob Faction, MythicMob Level e MythicMob Stance sempre retornam 0 na versão atual. Eles estão reservados para uma versão futura: não construa condições sobre eles.

Solução de problemas​

Nada é invocado. mobName deve ser o nome interno no MythicMobs de um mob existente. Se o mob for desconhecido, o Spawn Mob silenciosamente não faz nada. Compare com o nome do arquivo do mob no MythicMobs.

Erro "Skill ... not found" no log. O Execute Skill e o Skill Cinematic lançam esse erro quando skillName não é uma skill do MythicMobs. Se o log disser que a skill "is not usable at this time", ela está em cooldown ou suas condições falharam.

Um spawner nunca invoca nada. O jogador deve estar dentro de defaultActivationRange (24 blocos por padrão, medidos até o centro da região) de uma região. O spawner é verificado uma vez por segundo e começa cerca de cinco segundos após o servidor iniciar. Verifique também criteria, se warmup já passou, se o cooldown (defaultCooldown, em ticks) já passou e se a quantidade de mobs no alcance está abaixo de defaultMaxMobs. Defina mobType corretamente: caso contrário, o log diz Cannot find MythicMob ....

Outros jogadores ainda veem um mob privado. A visibilidade só se aplica a mobs invocados por entries do TypeWriter, pela opção nearby ou por spawns naturais. Os outros mobs permanecem públicos. A action de invocação também precisa de um jogador: com visibilityGroup definido mas o jogador em nenhum grupo, o mob recorre apenas ao jogador que disparou.

O kill objective não conta. O objective só conta enquanto a quest está ativa para o jogador e o jogador (ou seu projétil ou pet domesticado) dá o golpe final. Se mobs não estiver vazio, mythicMobName é ignorado. Verifique se o fact é uma entry de fact armazenável em cache.

O evento de matar jogador nunca é disparado. O MythicMob Kill Player Event compara mythicMobType como uma expressão regular que diferencia maiúsculas de minúsculas com o nome interno do mob que causou a morte. Deixe vazio para corresponder a qualquer MythicMob.

Extensões relacionadas​