Sistema de Habilidades
O EliteMobs usa um sistema de progressão baseado em habilidades, onde os jogadores sobem de nível ao lutar contra elite mobs. Em vez de um único nível global, os jogadores desenvolvem habilidades individuais de armas e uma habilidade de armadura que, em conjunto, determinam o seu poder geral.
Existem 11 tipos de habilidade:
| Habilidade | Arma | Notas |
|---|---|---|
| Espadas | Qualquer _SWORD | |
| Machados | Qualquer _AXE | |
| Arcos | BOW | |
| Bestas | CROSSBOW | |
| Tridentes | TRIDENT | |
| Enxadas (Foices) | Qualquer _HOE | |
| Maças | MACE | Requer Minecraft 1.21+ |
| Lanças | Qualquer _SPEAR | Requer Minecraft 1.21.11+ (com resource pack) |
| Bastões | experimental_arcane_staff | |
| Varinhas | experimental_arcane_wand | |
| Armadura | Capacetes, peitorais, calças, botas | Sobe de nível passivamente |
As habilidades sobem de nível ao usar a arma associada para matar elite mobs. O seu Nível de Combate -- calculado a partir das suas habilidades -- determina a que conteúdo pode aceder, que equipamento pode equipar e que dificuldade de mobs surge à sua volta.
Como as Habilidades Sobem de Nível
Quando mata um elite mob, ganha XP com base no nível do mob. O XP é distribuído da seguinte forma:
- O XP de armas é dividido pelas habilidades registadas nos golpes ou no lançamento de projéteis, conforme a contribuição de dano. Trocar de arma quando o mob morre não redireciona o XP.
- O XP de armadura é atribuído automaticamente com um multiplicador de 1/3 sobre a sua parte de XP. Pode ultrapassar uma habilidade de arma individual se usar vários tipos de armas.
- Combates em grupo: Quando vários jogadores causam dano ao mesmo elite, o XP é dividido proporcionalmente à contribuição de dano de cada jogador. Se causou 60% do dano, recebe 60% do XP base.
XP Base dos Mobs
O XP base ganho ao matar um mob é:
mob_xp = mob_level ^ 2
| Nível do Mob | XP Ganho |
|---|---|
| 1 | 1 |
| 10 | 100 |
| 25 | 625 |
| 50 | 2,500 |
| 100 | 10,000 |
Multiplicador de XP de Boss
Mobs mais duros valem mais. O XP base acima é multiplicado por um fator derivado do healthMultiplier e do damageMultiplier do mob:
bossXPMultiplier = healthMultiplier^0.6 * (1 + (damageMultiplier - 1) * 0.15)
O componente de HP usa um expoente sublinear (0.6) para que lutas mais longas paguem mais sem tornar os bosses de vida elevada desproporcionalmente lucrativos de farmar. O componente de dano é fortemente amortecido, porque mesmo pequenos aumentos de dano elevam muito a dificuldade e uma recompensa linear empurraria os jogadores para alvos suicidas.
| healthMultiplier | damageMultiplier | Multiplicador de XP |
|---|---|---|
| 1.0 | 1.0 | 1.00x |
| 3.0 (miniboss) | 1.2 | 1.99x |
| 7.0 (boss) | 1.4 | 3.41x |
| 40.0 (world boss) | 1.5 | 9.83x |
A ordem completa das operações numa morte é: nível efetivo do mob (após os limites antiexploit abaixo) → XP base → multiplicador de boss → divisão pela contribuição de dano → XP de arma e XP de armadura.
Proteções Antiexploit
Todas as três são configuradas em AntiExploit.yml e são totalmente ignoradas quando enableFarmingProtection é false. Veja Proteção contra Farming para a tabela de configuração completa.
- Mobs de nível baixo (por habilidade): Cada habilidade de arma ou armadura só ganha XP se o mob estiver, no máximo,
farmingProtectionLevelDifferenceníveis abaixo do nível dessa habilidade específica (padrão15). Esta verificação usa o nível individual da habilidade, não o nível de combate, e é totalmente ignorada no combate escalado, onde o mob é normalizado ao jogador e não faz sentido considerá-lo de nível demasiado baixo. - Mobs de nível alto: O XP de habilidade usa um nível efetivo de recompensa limitado a
combat_level + farmingProtectionLevelDifference(padrão15). O mesmo limite aplica-se ao saque de elites naturais; o saque de bosses personalizados não usa este limite de nível da proteção contra farming. Os restantes requisitos para receber XP continuam a aplicar-se. - Limite natural de farming de elites: As mortes de elites naturais (que não sejam bosses personalizados) são contadas numa janela deslizante com a duração de
farmingProtectionMinutes(padrão30). UltrapassarfarmingProtectionKillsmortes (padrão20) dentro dessa janela bloqueia-o das recompensas de elites naturais durante uma janela completa. É informado no chat quando o bloqueio começa e novamente quando termina. Os bosses personalizados estão isentos.
Progressão de XP
O XP necessário para avançar do seu nível atual para o nível seguinte segue esta fórmula:
Níveis 1-100:
xp_to_next_level = 8.5 * current_level ^ 3
Níveis acima de 100 (limite suave):
xp_to_next_level = 8.5 * current_level ^ 3 * (1 + ((current_level - 100) ^ 2 / 100))
O multiplicador do limite suave é 1.0 no nível 100 (sem penalização extra) e cresce de forma quadrática. Ao nível 150, o multiplicador atinge 26x, tornando o progresso adicional extremamente difícil.
Tabela de XP Por Nível
A tabela abaixo mostra o XP necessário para passar de um dado nível para o seguinte, e aproximadamente quantas mortes de mobs do mesmo nível isso requer (habilidade de arma, não armadura):
| Nível | XP até ao Nível Seguinte | Mortes de Mobs do Mesmo Nível |
|---|---|---|
| 10 | 8,500 | 85 |
| 25 | 132,812 | 213 |
| 50 | 1,062,500 | 425 |
| 75 | 3,585,937 | 638 |
| 100 | 8,500,000 | 850 |
A armadura ganha XP a 1/3 da taxa das armas, por isso são precisas aproximadamente 3x mais mortes para subir a armadura de nível em comparação com os números acima. Ao nível 50, isso significa cerca de 1,275 mortes do mesmo nível só para a armadura.
Nível de Combate
O seu Nível de Combate é a medida geral do seu poder. É calculado como:
combat_level = (highest_weapon_skill + second_highest_weapon_skill + armor_skill) / 3
O resultado é arredondado para baixo (divisão inteira).
O Nível de Combate determina:
- O nível dos elite mobs que surgem à sua volta
- Que equipamento pode equipar (o nível do equipamento tem de ser igual ou inferior ao nível da sua habilidade correspondente)
- A que masmorras e conteúdo instanciado pode aceder
- A elegibilidade para XP e saque (as verificações antiexploit usam o nível de combate)
Exibição do Nível de Combate
O seu nível de combate é mostrado como um número flutuante acima da sua cabeça, visível para os outros jogadores. Isto usa exibições de texto baseadas em pacotes (packets) e atualiza-se automaticamente sempre que as suas habilidades mudam. O formato de exibição é configurável (padrão: Combat Lv. X).
Barra de XP
Quando ganha XP de habilidade, surge uma boss bar animada que mostra o seu progresso até ao nível seguinte. A barra apresenta:
- Animação suave que sobe lentamente à medida que o XP é ganho
- Uma cor diferente por tipo de habilidade (ex.: vermelho para Espadas, verde para Arcos, azul para Armadura)
- Efeitos especiais de partículas e som ao subir de nível
- Esconde-se automaticamente após 5 segundos de inatividade
Restrições de Equipamento
O equipamento do EliteMobs tem requisitos de nível ligados ao sistema de habilidades. Para equipar um item elite, o seu nível de habilidade para esse tipo de arma ou armadura tem de ser igual ou superior ao nível do item.
Exceção: Os itens de nível 20 ou inferior podem ser equipados por qualquer pessoa, independentemente do nível de habilidade. Isto garante que os novos jogadores podem usar livremente o equipamento de início de jogo sem ficarem bloqueados.
Se tentar equipar um item acima do seu nível de habilidade, receberá uma mensagem de aviso e o item não fornecerá quaisquer bónus elite.
Bónus de Habilidade
À medida que sobe de nível as suas habilidades, desbloqueia habilidades de combate especiais em quatro níveis. Cada nível desbloqueia um conjunto de bónus para essa habilidade, e não apenas um:
| Nível | Desbloqueia ao |
|---|---|
| 1 | Nível 10 |
| 2 | Nível 25 |
| 3 | Nível 50 |
| 4 | Nível 75 |
Desbloquear um nível não concede um slot. Pode ter até 3 bónus ativos por tipo de arma ou armadura de cada vez, escolhidos entre tudo o que desbloqueou. Os bónus de habilidade são geridos através do menu /em ou visitando o NPC de Bónus de Habilidade na Guilda dos Aventureiros.
Os ficheiros skillbonuses/*.yml controlam a apresentação (nome de exibição, descrição, nível de desbloqueio, tipo de bónus, ícone de menu e modelos de lore) e parte do equilíbrio. O plugin lê baseValue, scalingPerLevel, procChance, cooldownSeconds, maxStacks e stackBonus quando um bónus consulta a sua configuração. Os bónus que não leem estas chaves usam constantes fixadas no código. Consulte Bónus de Habilidade para saber que valores cada bónus obtém da configuração.
Veja Bónus de Habilidade para a lista completa de todos os 84 bónus e o que fazem.
Notificações e UI
O sistema de habilidades fornece várias formas de feedback:
- Subir de Nível: Mensagem de título, som de desafio completo e explosão de partículas de totem-da-imortalidade em cada subida de nível.
- Marcos: É enviada uma transmissão para todo o servidor apenas quando um jogador atinge um nível marcante (a cada 5 níveis: 5, 10, 15, ...). As subidas de nível normais não são transmitidas. A transmissão pode ser desligada em
dungeons.yml. - Exibição do Nível de Combate: Número flutuante acima da sua cabeça, visível para os outros jogadores. Atualiza-se automaticamente ao subir de nível.
- Barra de XP: Boss bar animada que mostra o progresso de XP de habilidade durante o combate.
- Mensagens de Ganho de XP: Mensagens opcionais de XP por morte (desativadas por padrão, pois podem ser repetitivas).
A maioria do acima é configurada em skills.yml; a transmissão de subida de nível marcante e a sua mensagem ficam em dungeons.yml.
Comandos de Admin
| Comando | Permissão | Descrição |
|---|---|---|
/em skill check <player> | elitemobs.skill.check | Ver os níveis de habilidade, progresso de XP e percentagens de um jogador |
/em skill set <player> <skillType> <level> | elitemobs.skill.admin | Definir uma habilidade específica para um determinado nível |
/em skill setAll <player> <level> | elitemobs.skill.admin | Definir todas as habilidades para o mesmo nível |
/em debug combat start | elitemobs.admin | Iniciar o teste automatizado do sistema de combate |
/em debug combat test <type> | elitemobs.admin | Testar um tipo de arma específico (ex.: swords, bows) |
/em debug combat results | elitemobs.admin | Ver os resultados do último teste de combate |
/em debug combat cancel | elitemobs.admin | Cancelar um teste de combate ativo |
O argumento skillType de /em skill set aceita: ARMOR, SWORDS, AXES, BOWS, CROSSBOWS, TRIDENTS, HOES, MACES, SPEARS, STAVES, WANDS.
Configuração do Servidor
O sistema de habilidades é configurado em skills.yml. Definições principais:
| Definição | Padrão | Descrição |
|---|---|---|
skillSystemEnabled | true | Ativa ou desativa todo o sistema de habilidades |
armorSkillHealthBonusEnabled | true | Se a habilidade de Armadura concede vida máxima bónus (+1 coração por nível acima de 1) |
scalePlayerHealthDisplayToVanilla | false | Mantém a HP máxima do EliteMobs, mas escala visualmente o HUD do jogador de volta aos 10 corações vanilla |
forceDefaultHealthWhenArmorSkillHealthBonusDisabled | false | Quando o bónus de vida da armadura está desativado, força os jogadores aos 20 de vida máxima vanilla ao entrar |
skillWorldExclusions | (vazio) | Lista de nomes de mundos onde o sistema de habilidades está inativo. Os jogadores nestes mundos não recebem XP de habilidade, bónus de vida da armadura, barras de XP nem exibição de nível de combate. Útil para mundos de eventos onde todos devem ser iguais. A correspondência não diferencia maiúsculas de minúsculas |
skillsMenuTitle | &5&lYour Skills | Título do menu de habilidades |
showCombatLevelDisplay | true | Mostrar o número do nível de combate acima dos jogadores |
showXPBar | true | Mostrar a barra animada de progresso de XP durante o combate |
skillBarTitleFormat | &6$skillName &7Lv.$level$xpText | Formato do título da barra de XP |
skillLevelUpTitleFormat | &e&l✦ $skillName LEVEL UP! &7→ &eLv.$level &e&l✦ | Formato do título da boss bar de subida de nível |
combatLevelFormat | &6&lCombat Lv. $level | Formato de exibição do nível de combate |
Para a referência completa de configuração, veja a página Configuração do EliteMobs.
Combate experimental
As compilações atuais incluem um sistema experimental de classes separado. Em plugins/EliteMobs/Experimental Combat.yml, enabled é true por predefinição; usa false e recarrega EliteMobs para o desativar. As classes e o equilíbrio estão fixados no plugin durante esta fase. Confirma a versão instalada e a configuração gerada antes de aplicar esta secção a um servidor antigo.
/em class abre o perfil, /em class info <class> explica uma forma e /em class select <class> seleciona uma forma desbloqueada. Exigem elitemobs.command. As classes base são paladin, berserker, ranger, cleric e spellcaster. Spellcaster exige FreeMinecraftModels compatível com o bastão e a varinha incluídos; permanece bloqueado sem esse conteúdo. Bastões e varinhas usam identidades de itens registadas: um pau, lança ou vara de blaze normal não é automaticamente uma arma mágica.
/em class input java_hotbar_layer usa F seguido de 1/2/3 para Mobility, Signature e Utility. /em class input focus_item seleciona os controlos alternativos do item Focus, obtido com /em class focus. Os controlos estão ativos no conteúdo de combate EliteMobs. allowClassAbilitiesOutsideEliteMobsWorlds é true por predefinição e permite ativá-los fora durante a sessão premindo F duas vezes enquanto te agachas.
Com o módulo ativo, GUILD_GREETER abre Guild Training; desativado, abre a seleção de bónus de armas. A progressão de classes é separada da de armas e armadura. Dano de habilidades de classe sem identidade de arma não dá XP de armas.