Sistema de dano
Esta é uma análise detalhada de como a vida / dano escala no EliteMobs. Deve ser usada como referência ao desenhar masmorras.
Esta página centra-se em ataques normais envolvendo Bosses Personalizados. Os elites naturais usam as mesmas curvas base, com as opções de combate escalado e vida legada descritas abaixo. Dano bruto de scripts, armas mágicas e habilidades de classe podem seguir outros cálculos; vê Dano personalizado e absorção.
Antes de começares!
Não precisas de ler tudo isto se só queres fazer ajustes rápidos. Salta para a secção "Usar estes dados para masmorras" para veres contas rápidas muito simplificadas e uma série de definições recomendadas pré-feitas!
Escalonamento (em geral)
O EliteMobs combina ajustes exponenciais de perícia com modificadores de equipamento. A fórmula de vida do boss sem limites duplica a cada 5 níveis, enquanto os ajustes ofensivos e defensivos de perícia duplicam a cada 7,5 níveis de diferença. A vida do boss e o dano base do jogador deixam de crescer apenas pelo nível do mob ao atingir o limite de vida configurado do Minecraft. Estas curvas não garantem combates idênticos em todos os intervalos de nível.
O poder do jogador combina duas camadas calculadas de forma independente:
- Nível de Perícia da Arma (Weapon Skill Level) -- obtido ao matar Elite Mobs com um tipo de arma específico (espadas, machados, arcos, bestas, tridentes, enxadas, maças, lanças, bastões ou varinhas).
- Nível do Item (Item Level) -- o nível elite da arma ou peça de armadura que o jogador tem equipada.
Os jogadores também ganham XP de Perícia de Armadura por mortes elegíveis de elites. Esta usa um terço da parcela base de XP antes dos seus próprios modificadores e arredondamento. Receber golpes, por si só, não concede esta XP. A perícia dá vida máxima adicional, um coração por nível acima de 1, quando as definições de vida e as regras do mundo o permitem, e determina o escalonamento defensivo contra dano de bosses.
Perícias de armas
A XP de armas é dividida pelas competências 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 a XP. A XP de armadura é atribuída a uma taxa reduzida.
As perícias de armas disponíveis são:
| Perícia | Arma |
|---|---|
| Espadas | Todos os tipos de espada |
| Machados | Todos os tipos de machado |
| Arcos | Arco |
| Bestas | Besta |
| Tridentes | Tridente |
| Enxadas | Todos os tipos de enxada |
| Maças | Maça (1.21+) |
| Lanças | Todos os tipos de lança (1.21.11+) |
| Bastões | Armas com modelo personalizado e weaponType: STAVES |
| Varinhas | Armas com modelo personalizado e weaponType: WANDS |
| Armadura | Perícia defensiva que progride com mortes elegíveis de elites |
O valor inicial de XP é mobLevel^2, alterado pelos multiplicadores de vida e dano do boss, contribuição, limites de nível das recompensas e bónus de XP. O nível 100 é um limite suave, não um máximo. A XP necessária continua a aumentar acima dele. Vê as regras das recompensas em Sistema de perícias.
Bónus de perícia
As dez perícias de armas e a de armadura têm bónus de perícia, habilidades especiais desbloqueadas ao subir de nível. Os jogadores escolhem quais ativar. Existem cinco tipos:
- Passivo (Passive) -- sempre ativo quando equipado (por exemplo, aumento de dano fixo).
- Condicional (Conditional) -- ativo apenas quando uma condição específica é cumprida (por exemplo, dano bónus quando o alvo está abaixo de 30% de vida).
- Proc -- acionamento baseado em probabilidade em eventos específicos (por exemplo, probabilidade de causar sangramento ao acertar).
- Acumulável (Stacking) -- acumula ao longo de ações consecutivas (por exemplo, acertos consecutivos aumentam o dano).
- Cooldown -- efeito poderoso com um cooldown interno (por exemplo, sobreviver a dano fatal uma vez a cada 60 segundos).
Os bónus de perícia ofensivos das perícias de armas são aplicados como multiplicadores de dano aditivos por cima do dano base causado aos bosses. Os bónus de perícia defensivos da perícia de armadura reduzem o dano recebido do boss através de vários mecanismos (redução fixa, esquiva, escudos de dano, etc.).
Os jogadores podem ter até 3 bónus ativos por tipo de arma ou armadura. Todas as curvas desta página excluem esses bónus. Antes de as usares para equilibrar um encontro, vê como afetam o dano real em Bónus de perícia no cálculo de dano.
Dano causado por Bosses Personalizados
O dano do boss no EliteMobs 10 usa três camadas multiplicativas sem pré-compensação. O sistema foi concebido para que um jogador devidamente equipado sobreviva a aproximadamente 5 acertos de conteúdo do mesmo nível.
A fórmula de dano para Bosses Personalizados é:
1. playerMaxHealth = 20 + (armorSkillLevel - 1) * 2
2. baseDamage = playerMaxHealth / 5.0
3. skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
4. gearAdjustment = 2.0 * (1 - gearReduction)
5. scaledDamage = baseDamage * skillAdjustment * gearAdjustment
6. [explosion distance attenuation, if applicable]
7. potionMultiplier = source Strength/Weakness multiplier * player Resistance multiplier
8. finalDamage = max(scaledDamage, 1) * potionMultiplier * customBossDamageMultiplier * specialMultiplier * configMultiplier
9. capHealth = [Alpha] Advanced Combat System active ? max(1, actualMaxHealth - 30) : actualMaxHealth
10. finalDamage = min(finalDamage, capHealth - 1)
As três camadas são:
- Dano base -- quanta HP por acerto o jogador deverá perder (
playerMaxHealth / 5). - Ajuste de perícia -- escalonamento exponencial a partir da diferença entre o nível do boss e o nível da Perícia de Armadura do jogador.
- Ajuste de equipamento -- redução consciente do tipo de dano com base na armadura equipada do jogador e nos encantamentos de proteção (ver Sistema de Defesa de Equipamento abaixo).
O limite por golpe usa a vida máxima real menos 1 em combate normal. Com [Alpha] Advanced Combat System ativo, retira primeiro o seu aumento fixo de 30 HP. Essa vida adicional aumenta a reserva do jogador sem aumentar o dano base recebido. O limite aplica-se dentro da fórmula, antes do bloqueio e dos listeners de eventos. Dano bruto personalizado ignora-o. Um jogador já ferido ainda pode morrer num golpe.
playerMaxHealth
Com as definições de vida da armadura predefinidas ativas, a base é 20 HP mais 2 HP por nível de Armadura acima de 1. O nível 50 dá assim 118 HP antes de outros modificadores. O bónus pode ser desativado em skills.yml e não se aplica a mundos excluídos. A base é fixa em 20 HP; esse ficheiro não tem uma definição de vida base. Quando [Alpha] Advanced Combat System está ativo, as suas regras de mundos de combate geridos também determinam onde o bónus se aplica.
baseDamage
O dano base é simplesmente playerMaxHealth / 5.0. Esta é a quantidade de dano que se espera que um jogador devidamente equipado, do mesmo nível, receba por acerto. Ao contrário do sistema antigo, não há pré-compensação -- o valor base é o dano-alvo, não um valor bruto inflacionado.
skillAdjustment
O ajuste de perícia usa escalonamento exponencial para tornar significativa a diferença de nível entre o boss e a Perícia de Armadura do jogador:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
Cada 7,5 níveis de diferença duplica ou reduz para metade o dano efetivo do boss. Esta curva é mais lenta do que a vida do boss sem limites, que duplica a cada 5 níveis. A camada de equipamento acrescenta outro ajuste.
| Diferença de nível | Ajuste de perícia | Golpes aproximados para matar, com equipamento correspondente |
|---|---|---|
| Mesmo nível (0) | 1.0x | ~5 acertos |
| +5 níveis | ~1.6x | ~3 acertos |
| +10 níveis | ~2.5x | ~2 acertos |
| +15 níveis | 4.0x | ~1.25 acertos |
Sistema de defesa de equipamento
O sistema de defesa de equipamento substitui a antiga rampa de equipamento. Em vez de assumir um multiplicador de pré-compensação fixo com base no nível de perícia, o sistema agora lê o equipamento realmente equipado do jogador e calcula uma redução de equipamento consciente do tipo de dano.
Tipos de dano
O sistema classifica o dano recebido em cinco categorias. O tipo de dano determina quais encantamentos de proteção contribuem para a pontuação de equipamento:
| Tipo de dano | Causas do evento | Encantamentos de proteção usados |
|---|---|---|
| MELEE | Ataque direto, ataque de varrimento | Apenas Protection |
| PROJECTILE | Flechas, fireballs | Protection + Projectile Protection |
| EXPLOSION | Explosão de creeper, de ghast | Protection + Blast Protection |
| FIRE | Fogo, tick de fogo | Protection + Fire Protection |
| OTHER | Tudo o resto | Apenas Protection |
Pontuação de equipamento
A pontuação de equipamento combina o nível de armadura e os bónus de encantamento num único valor que pode ser comparado com o nível do mob atacante:
gearScore = (sum of armorLevel for 4 armor slots) / 4
+ (sum of enchantBonus for all 6 slots) / 4
O nível de armadura é determinado por item:
- Itens elite usam
materialTier + 4 * eliteDefenseAttribute. A armadura gerada normalmente corresponde ao nível pretendido, mas alterar apenas a etiqueta de nível do item não altera esta defesa. As categorias de material elite valem 3 para couro/ouro/tartaruga, 5 para cota de malha, 6 para ferro, 7 para diamante e 8 para netherite. Diferem da tabela vanilla abaixo. - Itens vanilla usam uma consulta baseada no material:
| Material | Nível de armadura |
|---|---|
| Couro | 1 |
| Ouro | 2 |
| Cota de malha | 3 |
| Ferro | 4 |
| Carapaça de tartaruga | 4 |
| Diamante | 5 |
| Netherite | 7 |
| Cobre (nas versões do servidor que o têm) | 2 |
Apenas os 4 slots de armadura (capacete, peitoral, calças, botas) contribuem para o nível de armadura.
O bónus de encantamento converte os níveis dos encantamentos de proteção em unidades equivalentes a nível de armadura:
enchantBonus = (general Protection level + type-specific Protection level) * (1/3)
Todos os 6 slots de equipamento (4 de armadura + mão principal + mão secundária) contribuem para o bónus de encantamento. Isto significa que escudos ou armas com encantamentos de Protection fornecem defesa adicional. A normalização /4 sobre a soma significa que ter encantamentos em todos os 6 slots dá até 50% mais contribuição de encantamento do que tê-los apenas nas 4 peças de armadura.
Exemplo prático: equipamento correspondente Nv25 + Prot IV vs Nv25 (corpo a corpo)
Player: armorSkillLevel=25, maxHP = 20 + 24*2 = 68
4 elite armor pieces each at armorLevel=25, each with Protection IV
Mob: level=25, melee attack
Step 1 -- Armor level per piece: 25 (material tier + 4 * elite defense attribute)
Step 2 -- Enchant bonus per piece: Protection IV = 4 * (1/3) = 1.333
(melee damage type, so only general Protection applies)
Step 3 -- Gear score:
armorLevelSum = 25*4 = 100, /4 = 25.0
enchantBonusSum = 1.333*4 = 5.333 (no mainhand/offhand enchants), /4 = 1.333
gearScore = 25.0 + 1.333 = 26.333
Step 4 -- Gear reduction (above matching):
reduction = 0.50 + (26.333 - 25) * 0.025 = 0.533 (53.3%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.533) = 0.933
Step 6 -- Final damage: baseDamage(13.6) * skillAdj(1.0) * gearAdj(0.933) = 12.69
Hits to kill: 68 / 12.69 = 5.36, approximately 5.4 hits
Exemplo prático: diamante vanilla Nv1 vs esqueleto Nv5 (projétil)
Player: armorSkillLevel=1, maxHP = 20
Full vanilla diamond armor (no enchants), no mainhand/offhand enchants
Mob: level=5, skeleton arrow (PROJECTILE damage type)
Step 1 -- Armor level per piece: 5 (vanilla diamond from lookup table)
Step 2 -- Enchant bonus: 0 (no enchants on any piece)
Step 3 -- Gear score: (5+5+5+5)/4 + 0/4 = 5.0
Step 4 -- Gear reduction (matching): 0.50 * (5/5) = 0.50 (50%)
Step 5 -- Gear adjustment: 2.0 * (1 - 0.50) = 1.0
Step 6 -- Final damage: baseDamage(4) * skillAdj(1.447) * gearAdj(1.0) = 5.79
Hits to kill: 20 / 5.79 = 3.45, approximately 3.5 hits
Se a armadura de diamante também tivesse Projectile Protection IV, cada peça ganharia um bónus de encantamento de 4 * (1/3) = 1.333. A pontuação de equipamento subiria para 5.0 + (1.333*4)/4 = 6.333, aumentando a redução para 53.3% e melhorando notavelmente a sobrevivência contra flechas.
Curva de redução de equipamento
A redução de equipamento usa uma curva linear de duas partes que transita no ponto em que a pontuação de equipamento é igual ao nível do mob:
Abaixo do correspondente (gearScore é menor ou igual a mobLevel):
reduction = 0.50 * (gearScore / mobLevel)
Escala linearmente de 0% (nu) a 50% (correspondente). O declive depende do nível do mob -- contra um mob de nível 5 cada nível de equipamento dá 10% de redução, enquanto contra um mob de nível 50 cada um dá 1%. Isto torna naturalmente a armadura vanilla de nível baixo eficaz contra mobs de nível baixo, mas irrelevante contra os de nível alto.
Acima do correspondente (gearScore é maior do que mobLevel):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
2.5% fixos por nível de equipamento acima do mob. Atinge o limite rígido de 75% com +10 níveis de equipamento acima do mob.
O ajuste de equipamento converte a redução num multiplicador de dano:
gearAdjustment = 2.0 * (1 - gearReduction)
| Equipamento | Redução de equipamento | Ajuste de equipamento | Golpes para matar, com igual nível de perícia |
|---|---|---|---|
| Nu (sem equipamento) | 0% | 2.0 | ~2.5 |
| Equipamento a meio correspondente | 25% | 1.5 | ~3.3 |
| Equipamento correspondente (gearScore = mobLevel) | 50% | 1.0 | ~5.0 |
| +4 níveis acima do mob | 60% | 0.8 | ~6.25 |
| +10 níveis acima do mob (limite) | 75% | 0.5 | ~10.0 |
Tabela de cenários
Os números de acertos seguintes pressupõem vida completa com a base normal de 20 HP mais a vida da perícia de armadura, multiplicadores de dano predefinidos e sem vida adicional, poções ou bónus de perícia. O [Alpha] Advanced Combat System acrescenta 30 HP sem aumentar o dano base recebido, pelo que os jogadores nesse modo podem receber mais acertos.
| Cenário | Ajuste de perícia | Redução de equipamento | Ajuste de equipamento | Golpes |
|---|---|---|---|---|
| Nv1 nu vs Nv1 | 1.0 | 0% | 2.0 | 2.5 |
| Nv1 nu vs Nv5 | 1.45 | 0% | 2.0 | ~1.7 |
| Nv1 diamante vanilla vs Nv5 | 1.45 | 50% | 1.0 | ~3.5 |
| Nv25 correspondente vs Nv25 | 1.0 | 50% | 1.0 | 5.0 |
| Nv25 correspondente+ProtIV vs Nv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Nv25 correspondente vs Nv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Nv25 equipamento de pico vs Nv25 | 1.0 | 75% | 0.50 | 10.0 |
| Nv50 correspondente vs Nv50 | 1.0 | 50% | 1.0 | 5.0 |
Objetivos-chave de design:
- 5 acertos com nível correspondente: Com a vida normal de referência acima, um jogador devidamente equipado e com vida completa é derrotado em aproximadamente 5 acertos normais de um elite mob do mesmo nível.
- 2.5 acertos nu -- não ter equipamento significa o dobro do dano através do ajuste de equipamento de 2.0. Incentivo imediato para equipar qualquer armadura.
- A armadura vanilla importa -- um jogador de nível 1 com armadura de diamante sobrevive a ~3.5 acertos de um mob de nível 5 em vez de ~1.7 nu.
- Os encantamentos são significativos mas não dominantes -- Protection IV nas 4 peças de armadura adiciona ~1.33 à pontuação de equipamento, empurrando de 50% para 53.3% de redução. Notável (~8% mais sobrevivência) mas não desequilibrante.
- Referência consistente por nível: O combate correspondente nos níveis 25 e 50 tem como objetivo aproximadamente 5 acertos nessas condições. A vida adicional do [Alpha] Advanced Combat System altera o número real.
- Limite de equipamento de pico em 10 acertos -- mesmo com o melhor equipamento possível (+10 níveis acima do mob), os jogadores ainda recebem dano significativo.
potionMultiplier (defensivo)
O dano recebido combina o multiplicador de Strength/Weakness do elite atacante com a redução de Resistance do jogador. A parcela de Resistance é:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
A chave de configuração é resistanceDamageMultiplierV2 em MobCombatSettings.yml (predefinição: 0.2). Isto corresponde ao comportamento vanilla: Resistance I = 20% de redução, Resistance V = 100% de redução (imune).
customBossDamageMultiplier
Este é o multiplicador de dano no ficheiro do Boss Personalizado. Predefinição 1.
configMultiplier (defensivo)
Este é o multiplicador em MobCombatSettings.yml. Para combate normalizado, usa normalizedDamageToPlayerMultiplier (predefinição 1.0). Para combate escalado, usa scaledDamageToPlayerMultiplier (predefinição 1.0). Para mobs padrão, usa damageToPlayerMultiplierV2 (predefinição 1.0).
specialMultiplier
Uma power do boss fornece este multiplicador para uma chamada de dano específica. O evento correspondente consome-o uma vez. Golpes posteriores independentes ou aninhados não o herdam. A predefinição é 1.0.
Atenuação de dano de explosão
O dano de creeper é atenuado pela distância ao creeper e pelo seu raio de explosão. O ramo do ghast mede atualmente a distância ao ghast, usando a potência de explosão da bola de fogo, não a distância ao impacto. Ambos usam max(0, 1 - distance / radius). Depois, a fórmula eleva o valor atenuado para pelo menos 1 antes dos restantes multiplicadores. A distância, por si só, não garante dano nulo.
Vida máxima dos Bosses Personalizados
A fórmula de vida do boss sem limites no EliteMobs 10 duplica a cada 5 níveis. A vida real é limitada pelo máximo do Minecraft, aplicado antes e depois de healthMultiplier, pelo que essa duplicação termina quando um limite de vida é atingido.
A fórmula de vida para Bosses Personalizados é:
baseHealth = min(2.1875 * 2^(bossLevel / 5), minecraftMaxHealth)
health = max(1, min(baseHealth * customBossHealthMultiplier, minecraftMaxHealth))
Escalonamento exponencial
A constante base (2.1875) está ajustada para que um boss de nível 25 tenha aproximadamente 70 HP. Valores de vida de exemplo, antes do limite de vida máxima descrito abaixo:
| Nível do boss | Vida pela fórmula | Vida com +5 níveis |
|---|---|---|
| 1 | ~2.5 | ~5 (2x) |
| 5 | ~4.4 | ~8.75 (2x) |
| 10 | ~8.75 | ~17.5 (2x) |
| 25 | ~70 | ~140 (2x) |
| 50 | ~2,240 | ~4,480 (2x) |
| 100 | ~2,293,760 | ~4,587,520 (2x) |
O Teto de Vida Máxima do Minecraft
O próprio Minecraft recusa-se a dar a uma entidade mais vida do que settings.attribute.maxHealth.max no spigot.yml. O EliteMobs lê esse valor no arranque e, se estiver abaixo de 2048, eleva-o para 2048 e grava o ficheiro. Chamemos a esse valor MAX.
O teto é aplicado duas vezes -- uma à fórmula de nível pura, e outra depois de o healthMultiplier ter sido aplicado:
effectiveHealth = min( min(2.1875 * 2^(level / 5), MAX) * healthMultiplier, MAX )
O limite interior é a razão pela qual mesmo um healthMultiplier abaixo de 1.0 acaba por deixar de escalar: a fórmula pura ultrapassa 2048 ao nível 50, independentemente do multiplicador que usar, e tudo a jusante passa a trabalhar a partir de um número fixo. O limite exterior morde ainda mais cedo para multiplicadores acima de 1.0.
Num servidor predefinido (MAX = 2048):
| healthMultiplier | Uso típico | A HP deixa de crescer ao | Fixada em |
|---|---|---|---|
| 0.25 | Reforços | Nível 50 | 512 HP |
| 0.7 | Grupo de trash | Nível 50 | ~1,434 HP |
| 1.0 | Mob de masmorra padrão | Nível 50 | 2,048 HP |
| 3.0 | Miniboss | Nível 42 | 2,048 HP |
| 7.0 | Boss | Nível 36 | 2,048 HP |
| 40.0 | World boss | Nível 23 | 2,048 HP |
Acima desses níveis a reserva de vida deixa de crescer. Um world boss de nível 60 e um de nível 90 têm HP idêntica. O cálculo final regista um aviso quando a multiplicação excede o teto. O limite anterior da vida base é silencioso, por isso a ausência de aviso não prova que o boss esteja abaixo do teto. Usa um healthMultiplier positivo e finito; valores inválidos passam a 1.0.
Se está a construir conteúdo acima de aproximadamente o nível 35 com valores de healthMultiplier grandes, aumente você mesmo settings.attribute.maxHealth.max no spigot.yml. Caso contrário, os seus escalões de boss achatam-se uns nos outros -- os valores de healthMultiplier recomendados mais adiante nesta página deixam de diferenciar os confrontos assim que todos eles ficam limitados ao mesmo número.
O dano base do jogador usa a vida de nível limitada, dividida por 3, deixando de crescer apenas pelo nível do mob quando atinge o limite interno. Os multiplicadores de armas, competências e outros continuam a aplicar-se. Um healthMultiplier elevado perde a resistência adicional no limite final de vida.
customBossHealthMultiplier
Este é o multiplicador no ficheiro do Boss Personalizado. Predefinição 1.
Dano causado aos Bosses Personalizados
O dano do jogador usa camadas multiplicativas de escalonamento exponencial e linear para manter o combate consistente entre níveis, permitindo ainda assim que diferentes famílias de armas se sintam diferentes. A fórmula separa o poder do jogador em dois eixos independentes -- nível de perícia da arma (ajuste de perícia exponencial) e nível do item da arma (ajuste de arma linear) -- para que tanto o investimento em perícia como o equipamento contribuam para o poder de combate.
A mudança importante em relação a versões mais antigas é que a velocidade das armas corpo a corpo já não tenta fazer com que cada tipo de arma tenha um DPS teórico idêntico. As espadas mantêm-se como ponto de referência, enquanto machados, maças e tridentes corpo a corpo recebem compensação de rajada amortecida. As famílias de armas que já testaram bem, como enxadas e lanças, mantêm o antigo fator de velocidade de ataque.
Fórmula de dano
A fórmula completa de dano de jogador-para-elite é:
formulaDamage = baseDamage * attackSpeedFactor * skillAdjustment * weaponAdjustment * cooldownOrVelocity * sweepMultiplier * potionMultiplier * equipmentEnchantmentMultiplier * enchantmentMultiplier * arrowDamageMultiplier
finalDamage = roundToTwoDecimals(formulaDamage * damageModifier * combatMultiplier) * critMultiplier
damageAfterSkills = finalDamage * (1 + sum of every active skill bonus fraction)
Cada componente é descrito abaixo. Os bónus de perícia são aplicados por um listener de prioridade HIGH durante o evento de dano do EliteMobs. Listeners posteriores ainda podem alterar o resultado. Vê Bónus de perícia no cálculo de dano.
baseDamage
O dano base por acerto é derivado da HP normalizada do mob (com healthMultiplier=1.0) dividida pelo número-alvo de acertos para matar:
baseDamage = normalizedMobHP / 3.0
Aqui, normalizedMobHP = min(2.1875 * 2^(mobLevel / 5), minecraftMaxHealth), como descrito acima em Vida máxima dos Bosses Personalizados. A constante 3.0 (TARGET_HITS_TO_KILL_MOB) aponta para cerca de 3 golpes de espada totalmente carregados contra um elite padrão, com nível correspondente, antes de modificadores adicionais e arredondamento.
Estas estimativas exigem equipamento e competências do mesmo nível e margem abaixo do limite final de vida. healthMultiplier: 2.0 só duplica a vida base enquanto o resultado cabe nesse limite; não garante seis golpes de espada em todos os níveis.
attackSpeedFactor
Esta é a camada de ritmo da velocidade de ataque corpo a corpo. Começa a partir do antigo fator legado:
legacyFactor = 1.6 / weaponAttackSpeed
A velocidade usada aqui é a da arma devolvida pelo EliteMobs. O atributo atual de velocidade de ataque do jogador determina separadamente o tempo de recarga. A referência 1.6 é a velocidade de uma espada. O fator final depende da família de armas:
Swords, hoes, spears, unknown melee, and bow/crossbow melee:
attackSpeedFactor = legacyFactor
Axes, maces, and melee tridents:
attackSpeedFactor = sqrt(legacyFactor)
Ranged projectile attacks:
attackSpeedFactor = 1.0
Isto significa que o sistema não está a tentar fazer com que cada arma corpo a corpo tenha um DPS idêntico. As armas de rajada lentas ainda batem com mais força por golpe, mas machados, maças e tridentes corpo a corpo já não recebem o multiplicador de rajada completo de 1.6 / speed. As enxadas e lanças mantêm-se intencionalmente no antigo fator porque os testes de jogo mostraram que o seu ritmo já era aceitável.
Exemplos com perícia e nível de arma correspondentes:
| Tipo de arma | Exemplo de velocidade de ataque | Fator | Golpes pela fórmula contra healthMultiplier: 1.0 |
|---|---|---|---|
| Espada | 1.6 | 1.00x | 3.0 |
| Machado | 1.0 | 1.26x | ~2.4 |
| Maça | 0.6 | 1.63x | ~1.8 |
| Enxada | 4.0 | 0.40x | 7.5 |
| Tridente, corpo a corpo | 1.1 | 1.21x | ~2.5 |
| Lança, exemplo diamante | ~0.95 | ~1.68x | ~1.8 |
| Arco/besta projétil | N/A | 1.00x | a velocidade do projétil decide a carga |
Para ataques de projétil, incluindo arcos, bestas e tridentes lançados, o fator de velocidade de ataque corpo a corpo não é aplicado. A carga/força do projétil é representada por cooldownOrVelocity em vez disso.
Nota: As armas exclusivamente à distância (arcos, bestas) usadas em corpo a corpo são tratadas como golpes desarmados -- nível de arma 0 e nível de perícia 1, com uma velocidade de ataque predefinida de 4.0 (velocidade do punho). Isto torna-as muito fracas em combate corpo a corpo, incentivando os jogadores a usá-las à distância.
skillAdjustment
Escalonamento exponencial a partir da diferença entre o nível de perícia da arma do jogador e o nível do mob:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
Cada 7.5 níveis de diferença duplica (ou reduz para metade) o dano do jogador. Isto corresponde à taxa de escalonamento de perícia defensiva usada no dano de boss-para-jogador, produzindo um combate simétrico.
| Diferença de perícia | Ajuste de perícia | Efeito |
|---|---|---|
| -15 | 0.25x | Um quarto do dano |
| -7.5 | 0.50x | Metade do dano |
| 0 (correspondente) | 1.0x | Base |
| +7.5 | 2.0x | Dobro do dano |
| +15 | 4.0x | Quádruplo do dano |
A vida do boss é limitada pelo teto do servidor, mas o ajuste ofensivo de perícia não é limitado no código atual. Diferenças muito grandes, para além de +/-22 níveis, podem produzir valores extremos. O nível de perícia 100 é apenas um limite suave de progressão.
weaponAdjustment
Uma curva linear de duas partes com base no nível do item da arma vs o nível do mob. Isto espelha a curva de redução de equipamento defensiva do Sistema de Defesa de Equipamento.
A arma usa o nível de item armazenado, quando existe. Caso contrário, o EliteMobs calcula um nível a partir do dano e da velocidade de ataque, recorrendo ao nível de armadura para valores baixos. Armas vanilla podem, assim, ter um nível efetivo acima de zero. Este cálculo difere do cálculo defensivo da armadura descrito acima.
weaponAdjustment = 0.5 + bonus
Abaixo do correspondente (weaponLevel é menor ou igual a mobLevel):
bonus = 0.50 * (weaponLevel / mobLevel)
Escala linearmente de 0 (sem arma) a 0.50 (correspondente). Sem arma equipada, o ajuste é 0.50 (metade do dano).
Acima do correspondente (weaponLevel é maior do que mobLevel):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
2.5% fixos por nível de arma acima do mob, limitado a 0.75 de bónus. Requer +10 níveis de arma acima do mob para atingir o limite.
| Situação da arma | Bónus | Ajuste da arma | Efeito nos golpes |
|---|---|---|---|
| Arma de nível 0, isolando este ajuste | 0.00 | 0.50 | 6 acertos (2x mais lento) |
| Arma a meio nível | 0.25 | 0.75 | 4 acertos |
| Arma correspondente (weaponLevel = mobLevel) | 0.50 | 1.00 | 3 acertos (base) |
| +4 níveis acima do mob | 0.60 | 1.10 | ~2.7 acertos |
| +10 níveis acima do mob (limite) | 0.75 | 1.25 | ~2.4 acertos |
Ataques com punhos usam também perícia de nível 1 e o fator de velocidade de ataques desarmados. A tabela isola o ajuste da arma e mantém os restantes fatores de referência da espada.
cooldownOrVelocity
Para armas corpo a corpo, o EliteMobs conta os ticks desde o último golpe primário e divide-os pela janela de recarga 20 / attackSpeed, até um máximo de 1.0. Golpes contra não-elites também atualizam esta contagem; ataques no ar não. O primeiro golpe registado tem carga completa. O atributo atual de velocidade de ataque determina a recarga. Se estiver indisponível, inválido ou ainda indicar os 4.0 originais para uma arma mais lenta, usa-se a velocidade do item. Arcos e bestas usados corpo a corpo usam 4.0.
Para ataques à distância/projétil (arcos, bestas, tridentes lançados e flechas geradas por perícias), esta é a velocidade de lançamento normalizada. A velocidade de um arco com tração total é aproximadamente 3.0; o valor é normalizado para min(velocity / 3.0, 1.0), limitado ao intervalo [0, 1].
Nos ataques normais à distância, o nível da arma, a identidade e o nível da perícia e o resultado do crítico são guardados no lançamento, incluindo arcos e bestas na mão secundária. Tridentes lançados fornecem o seu próprio nível de item. Usa-se preferencialmente a velocidade de lançamento; sem esses dados, usa-se a velocidade atual. Sem dados de arma/perícia, os níveis são 0/1, sem recorrer à perícia da arma no momento do impacto. Outros valores, incluindo poções e a soma dos encantamentos de dano dos seis slots, continuam a ser lidos no impacto.
sweepMultiplier
Para ENTITY_SWEEP_ATTACK, o multiplicador é 0.25 e a carga é considerada completa sem atualizar a contagem do golpe primário. Os restantes valores são calculados por alvo, incluindo um sorteio de crítico separado. Por isso, o resultado final não é necessariamente 25% do dano do alvo principal:
sweepMultiplier = 0.25 (secondary sweep targets)
sweepMultiplier = 1.0 (primary target)
potionMultiplier (ofensivo)
Os efeitos das poções de Strength e Weakness modificam o dano de saída do jogador:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
Aqui, strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier e weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier. Ambos os valores têm predefinição 0.2. Nesta fórmula do EliteMobs, Strength I dá +20% de dano e Weakness I dá -20%. Níveis iguais anulam-se exatamente. O multiplicador nunca fica abaixo de 0.
As chaves de configuração em MobCombatSettings.yml são:
| Chave | Predefinição | Descrição |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | Dano bónus por nível de Strength |
weaknessDamageMultiplierV2 | 0.2 | Penalização de dano por nível de Weakness |
equipmentEnchantmentMultiplier
Os níveis de Sharpness e Power nos itens equipados pelo jogador contribuem com um bónus percentual de dano. Cada nível vale 2.5%, e ambos os encantamentos são contados em todos os itens:
perItemBonus = (Sharpness level + Power level) * 0.025
equipmentEnchantmentMultiplier = 1.0 + sum of perItemBonus across all six slots
A soma abrange todos os seis slots (4 de armadura + mão principal + mão secundária), por isso Sharpness num escudo ou na armadura também contribui. Esta é uma camada separada do enchantmentMultiplier abaixo, que cobre apenas os encantamentos por tipo de mob (Smite, Bane of Arthropods).
enchantmentMultiplier
Os encantamentos Smite e Bane of Arthropods fornecem um pequeno bónus de dano contra os respetivos tipos de mob, mas apenas quando useEliteEnchantments está desativado em ItemSettings.yml. Quando os encantamentos elite estão ativados, este multiplicador é sempre 1.0.
Apenas os níveis de encantamento acima do máximo vanilla são contados (níveis exclusivos de elite):
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
Cada nível exclusivo de elite acrescenta 2,5% de dano. Por exemplo, Smite VIII, acima do máximo vanilla V, contribui com 3 níveis: 1.0 + 3 * 0.025 = 1.075. Este ramo lê a mão principal atual, incluindo no impacto de projéteis. Bane verifica Spider/Silverfish; Smite verifica Zombie/Skeleton/Wither/SkeletonHorse/ZombieHorse/Zombified Piglin, incluindo subclasses dessas classes Java. Não usa uma etiqueta completa de categoria de mobs do Minecraft.
arrowDamageMultiplier
As flechas geradas por habilidades de perícia de armas (como Multishot, Arrow Rain, etc.) carregam um multiplicador de dano armazenado no contentor de dados do projétil. Isto permite que as flechas geradas por perícias causem dano reduzido em comparação com um acerto de flecha padrão. Para flechas normais disparadas pelo jogador, este multiplicador é 1.0.
Dano de Thorns
Com useEliteEnchantments ativo, o ramo de eventos de dano THORNS usa o dano base de jogador para elite, em vez da fórmula completa da arma. Só contam níveis de Thorns acima do máximo vanilla III. Este cálculo não agenda nem garante uma ativação de Thorns.
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel (per armor piece, summed across all 4 pieces)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
Cada nível elite de Thorns acima do máximo vanilla contribui com 2% do dano base. Thorns III não produz dano elite de Thorns. Se as 4 peças tiverem Thorns V, com 2 níveis elite cada, a soma é 8: baseDamage * 8 * 0.02 = 16% do dano base de jogador para elite por ativação.
O combate padrão e normalizado usa o nível real do mob. O combate escalado usa o nível atual de perícia de arma do jogador e converte o resultado para a vida real do boss. Os modificadores de material do boss, o multiplicador do modo de combate e os críticos continuam a ser aplicados depois deste cálculo base.
damageModifier
Modificador de dano por tipo de arma específico do boss, vindo do ficheiro do Boss Personalizado (damageModifiers). Isto permite que os bosses recebam mais ou menos dano de materiais de arma específicos (por exemplo, um boss resistente a espadas mas fraco a machados). Predefinição 1.0 para todos os tipos de arma não explicitamente configurados.
O corpo a corpo consulta o material atual da mão principal. Os projéteis só usam o material da arma de lançamento quando este consta dos dados de projétil personalizado do EliteMobs. Caso contrário, usam o valor predefinido. Guardar apenas o nível da arma do projétil não fornece este modificador de material.
combatMultiplier
Multiplicador global de MobCombatSettings.yml (scaledDamageToEliteMultiplier, normalizedDamageToEliteMultiplier, ou damageToEliteMobMultiplierV2 consoante o modo de combate). Predefinição 1.0.
critMultiplier
Os golpes críticos multiplicam o dano final por 1.5x. A probabilidade de crítico é somada em todos os seis slots de equipamento (4 de armadura + mão principal + mão secundária) a partir das estatísticas de probabilidade de crítico do equipamento elite do jogador, e depois limitada:
critChance = min(sum of all six slots, maximumCriticalStrikeChance)
O maximumCriticalStrikeChance fica em MobCombatSettings.yml e tem a predefinição 0.40 (40%). Sem o limite, acumular probabilidade de crítico nos seis slots pode chegar a 100%, ponto em que cada golpe é um golpe "crítico" -- o crítico deixa de se ler como um acontecimento, embora continue a pagar o 1.5x completo. Valores acima de 0.5 não são recomendados por essa razão. O limite é restringido ao intervalo [0.0, 1.0], independentemente do que estiver configurado.
Os golpes críticos são aplicados antes de o evento de dano disparar, o que os mantém como um passo multiplicativo separado da camada aditiva de bónus de perícia descrita abaixo, por isso um bónus de perícia grande nunca pode engolir o crítico.
Dano de cajados e varinhas
As bolas de fogo e os golpes corpo a corpo dos cajados e os projéteis mágicos das varinhas das armas mágicas do FMM não usam a fórmula corpo a corpo ou de arco acima. Quando um deles atinge um elite, o EliteMobs calcula:
formulaLevel = scaled combat ? magicSkillLevel : mobLevel
magicDamage = baseDamage(formulaLevel)
* 2 ^ ((magicSkillLevel - formulaLevel) / 7.5)
* weaponAdjustment(itemLevel, formulaLevel)
* basePower * impactScale
* scaledCombatRescale
* damageModifier
* combatMultiplier
* (1 + 0.025 * (Sharpness + Power levels on the weapon))
magicSkillLevelé o nível da perícia de Cajados ou Varinhas, guardado no momento em que o ataque é lançado (nível 1 em mundos excluídos das perícias).baseDamage, o ajuste de perícia,weaponAdjustment,damageModifierecombatMultipliersão os elementos descritos acima.damageModifierconsulta o material que serve de suporte à arma.basePoweré a potência configurada do ataque no FMM.impactScaleé 1 num golpe direto; numa explosão de cajado, desce de 1 no centro até 0.35 na periferia.scaledCombatRescaleé 1 fora do combate escalado. No combate escalado, converte o resultado para a reserva de vida real do boss, tal como em Dano de jogador para boss.- O sorteio de crítico também é guardado no momento do lançamento; um golpe crítico multiplica o resultado por 1.5.
Este percurso não tem fator de velocidade de ataque, carga, varrimento ou poções. O golpe executa depois os bónus de perícia de Cajados ou Varinhas, como descrito em Bónus de Perícia no Pipeline de Dano. Contra um alvo que não seja elite, o golpe causa o dano autónomo do FMM multiplicado pelo mesmo fator de Sharpness/Power.
Limitação de modificadores
Os ajustes ofensivo e defensivo de perícia usam 2 ^ (levelDifference / 7.5) sem limite de multiplicador. O antigo auxiliar getLevelModifierFromDifference e os seus limites 0.125/8.0 já não existem. Não apliques esses limites aos cálculos atuais de combate.
A vida do boss segue o teto de vida máxima descrito acima. O nível 100 é um limite suave de XP e não impõe um limite rígido a nenhum dos ajustes de perícia.
Os limites que de facto delimitam a produção guiada por perícias são o limite de probabilidade de crítico e os dois tetos de redução defensiva, todos descritos na secção seguinte.
Bónus de Perícia no Pipeline de Dano
Tudo o que está acima descreve as curvas sem bónus. Um jogador real tem também até três bónus de perícia ativos por tipo de arma, e esses assentam por cima da fórmula. Se balancear um confronto apenas contra as curvas, vai subestimar consistentemente o dano que os jogadores realmente causam.
Os valores dos bónus de perícia estão divididos. Os ficheiros skillbonuses/*.yml contêm apresentação, como nome, descrição, escalão de desbloqueio, tipo de bónus, ícone e modelos de descrição, e também baseValue, scalingPerLevel, procChance, cooldownSeconds, maxStacks e stackBonus. Os bónus que consultam a configuração usam esses valores; os restantes usam constantes no código. Alguns, como Harvester, Legion's Discipline e Depth Charge, limitam o valor configurado a uma curva definida, pelo que só podem ser enfraquecidos pela configuração.
O auxiliar comum de probabilidade usa min(1, procChance + 0.002 * skillLevel). O auxiliar de cooldown limita cooldownSeconds * (1 - 0.005 * skillLevel) a pelo menos metade do valor configurado. Os chamadores costumam arredondar para segundos inteiros com um mínimo de um segundo. Bónus com fórmulas próprias podem diferir. Vê os detalhes de cada um em Bónus de perícia.
Onde a camada é aplicada (ofensiva)
Os bónus ofensivos normais são aplicados durante o evento do EliteMobs:
... formula → damageModifier × combatMultiplier → critical hit (×1.5)
→ EliteMobDamagedByPlayerEvent listeners run
→ HIGH-priority skill-bonus listener applies bonuses
→ remaining listeners can modify or cancel
→ final damage set
O multiplicador de crítico já está presente quando o listener de perícias é executado, pelo que o multiplicador aditivo o preserva. Dano personalizado ou de bypass do jogador ignora este listener normal de perícias de armas para evitar ativações recursivas. O golpe próprio de um cajado ou de uma varinha é a exceção: é dano personalizado, mas continua a executar os bónus de Cajados ou Varinhas. As habilidades de classe têm regras próprias.
Os bónus ofensivos acumulam-se de forma aditiva
Cada bónus ativo contribui apenas com a sua fração de bónus, e essas frações são somadas:
totalMultiplier = 1.0 + (m1 - 1.0) + (m2 - 1.0) + (m3 - 1.0) + ...
Três bónus de 1.2x cada produzem, portanto, 1.6x, e não os 1.73x que a composição multiplicativa daria. Isto aplica-se uniformemente a todos os tipos de arma.
Esta é uma mudança em relação ao comportamento anterior, em que só os machados usavam uma regra de "o maior vence": apenas o maior bónus se aplicava, e qualquer golpe de machado em que uma perícia superasse 1.5x descartava silenciosamente o golpe crítico por completo. Ter uma família de armas a correr com uma regra de acumulação diferente também tornava o dano dos machados impossível de comparar com tudo o resto.
A mesma soma inclui debuffs de outras perícias lidos no alvo: Hunter's Mark, Death Mark, Judgment, Expose Weakness, Hex Brand e Unravel. Um Riposte pronto é separado. Multiplica diretamente o dano do evento, e o multiplicador aditivo combinado multiplica depois esse resultado.
Consequência prática: um jogador com três bónus ofensivos bem escolhidos está realisticamente a fazer algo em torno de 1.4x-2x a curva publicada antes dos procs, e mais quando uma habilidade de cooldown acerta. O objetivo de design dos "3 golpes de espada" descreve um jogador sem bónus selecionados.
Os bónus defensivos têm dois tetos
Os bónus de perícia de armadura reduzem o dano recebido e, ao contrário do lado ofensivo, compõem-se de forma multiplicativa -- cada um faz passar o dano já reduzido por damage * (1 - reduction). É por isso que existem dois limites separados:
| Limite | Valor | Âmbito |
|---|---|---|
| Limite por perícia | 80% | Delimita a redução de qualquer perícia isolada |
| Teto agregado | 85% | Delimita todas as fontes de perícia combinadas, por golpe |
O limite por perícia, por si só, não chega: três fontes, cada uma nos 80%, multiplicar-se-iam até 0.2 x 0.2 x 0.2 = 99.2% de redução total -- imunidade efetiva, com cada limite individual ainda intacto.
O teto agregado fecha essa brecha. É aplicado uma vez, mesmo no fim, comparando o dano que entrou no pipeline de perícias com o dano que saiu e recusando-se a deixar a razão cair abaixo de 1 - 0.85:
finalDamage = max(damageAfterSkills, incomingDamage * 0.15)
Trabalhar sobre a razão em vez de sobre uma soma corrente de reduções é o que o torna robusto. Os ramos individuais têm formas diferentes -- uns multiplicam, outros atribuem um valor diretamente, outros acumulam, outros leem configuração -- e a ordem e o número de contribuidores são irrelevantes para o resultado. Uma build defensiva totalmente acumulada come sempre pelo menos 15% de cada golpe recebido.
A anulação total fica deliberadamente fora do teto. Evasion, Last Stand, Spell Mirror, Death's Embrace, Divine Shield e Phoenix Mantle cancelam o evento em vez de aplicar uma redução parcial. O limite de 85% cobre este processamento de perícias. Não é um mínimo sobre o golpe original depois de poções, bloqueio, absorção e outros listeners.
Quando as reduções combinadas atingem o teto agregado, outra redução já não diminui esse golpe.
Exemplos práticos
Os exemplos abaixo excluem os bónus de perícia para mostrar a curva base. Aplica também o multiplicador aditivo da secção anterior para obter valores com esses bónus.
Exemplo 1: espada correspondente Nv25 vs elite Nv25 (corpo a corpo)
Player: weaponSkillLevel=25, weapon=elite sword (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: mobHP(25) = 2.1875 * 2^5 = 70.0, baseDamage = 70.0/3 = 23.33
Step 2 -- Attack speed factor: sword speed=1.6, factor = 1.6/1.6 = 1.0
Step 3 -- Skill adjustment: 2^((25-25)/7.5) = 2^0 = 1.0
Step 4 -- Weapon adjustment: weaponLevel(25) == mobLevel(25), bonus=0.50, adj = 1.0
Step 5 -- Cooldown: full charge = 1.0
Step 6 -- Sweep: primary target = 1.0
formulaDamage = 23.33 * 1.0 * 1.0 * 1.0 * 1.0 * 1.0 = 23.33
Mob HP = 70.0 -> hits to kill = 70.0 / 23.33 = 3.0
Exemplo 2: machado Nv25 vs elite Nv25 (compensação de rajada amortecida)
Player: weaponSkillLevel=25, weapon=elite axe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Legacy attack speed factor: 1.6/1.0 = 1.6
Step 3 -- Axe burst damping: sqrt(1.6) = 1.265
Step 4 -- Skill adjustment: 1.0 (matched)
Step 5 -- Weapon adjustment: 1.0 (matched)
Step 6 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 1.265 * 1.0 * 1.0 * 1.0 = 29.52
Hits to kill = 70.0 / 29.52 = 2.37
Exemplo 3: enxada Nv25 vs elite Nv25 (fator legado de arma rápida)
Player: weaponSkillLevel=25, weapon=elite hoe (itemLevel=25)
Mob: level=25, healthMultiplier=1.0
Step 1 -- Base damage: 23.33 (same as above)
Step 2 -- Attack speed factor: hoe speed=4.0, factor = 1.6/4.0 = 0.4
Step 3 -- Skill adjustment: 1.0 (matched)
Step 4 -- Weapon adjustment: 1.0 (matched)
Step 5 -- Cooldown: full charge = 1.0
formulaDamage = 23.33 * 0.4 * 1.0 * 1.0 * 1.0 = 9.33
Hits to kill = 70.0 / 9.33 = 7.5
Exemplo 4: arco Nv20 vs elite Nv25 com healthMultiplier=2.0 (à distância, abaixo do nível)
Player: weaponSkillLevel=20, weapon=elite bow (itemLevel=20)
Mob: level=25, healthMultiplier=2.0, actual HP = 70.0 * 2 = 140.0
Step 1 -- Base damage: 23.33 (from normalized HP, NOT actual HP)
Step 2 -- Attack speed factor: ranged, N/A = 1.0
Step 3 -- Skill adjustment: 2^((20-25)/7.5) = 2^(-0.667) = 0.63
Step 4 -- Weapon adjustment: weaponLevel(20) < mobLevel(25), bonus = 0.5*(20/25) = 0.4, adj = 0.9
Step 5 -- Arrow velocity: full draw = 1.0
formulaDamage = 23.33 * 1.0 * 0.63 * 0.9 * 1.0 = 13.23
Hits to kill = 140.0 / 13.23 = 10.6 hits
(Under-leveled skill AND weapon, fighting a healthMultiplier=2.0 mob)
Ferramenta de diagnóstico DamageBreakdown
Executa /em debug como jogador com elitemobs.debug para alternar os diagnósticos de combate. Reproduz o golpe e executa o comando novamente para terminar. A fórmula, o modo e multiplicador de combate escolhidos, o percurso de bloqueio/bypass e o resultado do evento aparecem no chat e no registo do servidor. Procura [EM-Debug: e [EM-Damage: nesse registo.
O auxiliar interno separado DamageBreakdown, usado por ferramentas de desenvolvimento, pode produzir:
- Uma análise formatada completa que mostra todos os níveis, componentes da fórmula, multiplicadores e o dano final calculado.
- Um resumo compacto de uma linha para referência rápida no jogo.
- Uma comparação entre o esperado e o real que assinala discrepâncias superiores a 10%, útil para diagnosticar conflitos de plugins ou ficheiros de boss mal configurados.
O resultado reconstruído não mede de forma definitiva o dano aplicado. Impõe um mínimo de 1 ao dano da fórmula, omite o multiplicador posterior de perícias e não reproduz todas as conversões do combate escalado nem todas as alterações dos listeners. Uma diferença, por si só, não prova um conflito entre plugins. Para investigar um encontro real, usa os diagnósticos durante o combate e observa a alteração de vida.
Progressão de XP de perícia
As perícias de armas e de armadura sobem de nível ao obter XP de matar elite mobs. O sistema de XP usa requisitos de nível cúbicos para criar uma progressão suave com um limite suave para além do nível 100.
XP de mortes: mobLevel^2 é o valor inicial antes dos multiplicadores do boss, parcelas de contribuição, limites de nível de recompensa e bónus. Vê Sistema de perícias.
XP para o próximo nível:
Para os níveis 1 a 100:
xpToNextLevel = floor(8.5 * L^3)
Para níveis acima de 100 (limite suave):
xpToNextLevel = floor(floor(8.5 * L^3) * (1 + ((L - 100)^2 / 100)))
O multiplicador do limite suave é contínuo no nível 100, onde vale 1.0, e cresce quadraticamente acima dele. No nível 150 é aproximadamente 26x, tornando a progressão muito difícil. Não há um máximo rígido de nível 100. Acima dele, o requisito cúbico é multiplicado pelo fator quadrático mostrado.
Mecânicas de combate adicionais
Prevenção de morte de um só golpe
A fórmula normal de dano do boss é limitada à vida máxima real menos 1. Com [Alpha] Advanced Combat System ativo, o limite é max(1, actualMaxHealth - 30) - 1, excluindo apenas o aumento fixo de 30 HP desse modo. Os restantes modificadores de vida máxima continuam a contar. O limite usa a vida máxima, não a atual, pelo que um jogador ferido pode morrer num golpe. Dano bruto pode ignorar o limite e os listeners podem alterar o valor posteriormente.
Bloqueio com escudo
Num golpe que não seja de projétil e chegue a este handler enquanto o jogador bloqueia, o EliteMobs reduz o dano da fórmula em 80% por predefinição, através de blockingDamageReduction em MobCombatSettings.yml. Dano bruto de bypass substitui esse valor reduzido. Um projétil bloqueado é removido e o handler termina antes de aplicar a fórmula, mas este ramo não cancela nem anula por si só o dano do evento Bukkit. Não garante imunidade a todos os projéteis ou golpes criados por plugins.
Cada bloqueio processado tenta retirar 5 pontos de durabilidade ao escudo, com Unbreaking nativo a reduzir a frequência. Um escudo na mão principal tem prioridade sobre outro na mão secundária.
Dano personalizado e absorção
Algumas powers fornecem dano bruto. Este substitui o resultado normal da fórmula, incluindo o limite por golpe e a redução do escudo, antes de executar o evento de dano do EliteMobs. Os listeners defensivos de perícia ainda o podem reduzir ou cancelar. Por outro lado, dano personalizado ou de bypass do jogador ignora a fórmula normal da arma, os multiplicadores de material/globais do boss e as ativações de perícias de armas. Um crítico guardado de arma mágica ou um crítico de classe explicitamente garantido ainda pode aplicar-se, e o golpe próprio de um cajado ou de uma varinha continua a executar os bónus da sua arma (consulta Dano de cajados e varinhas).
Depois de terminar um evento normal de elite para jogador, a absorção é calculada sobre o dano final usando a quantidade atual de absorção do jogador. Os modificadores vanilla de armadura e resistência são removidos, pois a fórmula do EliteMobs trata dessas reduções. A fórmula de jogador para elite também remove reduções nativas, pelo que a armadura do boss é cosmética nesse percurso.
Golpes corpo a corpo rápidos
A limitação separada de autoclicker está ativa por predefinição. Mais de 5 golpes primários corpo a corpo em elites numa janela móvel de um segundo desencadeiam uma penalização de 5 segundos nesse percurso. Os valores são autoclickerThrottleMaxHitsPerSecond e autoclickerThrottlePenaltySeconds em MobCombatSettings.yml; autoclickerThrottleEnabled controla a ativação. Cliques no ar, varrimentos, projéteis, Thorns e golpes personalizados ou de bypass não contam nem passam por esta verificação de penalização. Voltar a ligar ao servidor não remove uma penalização ativa.
Bónus de vida da perícia de armadura
Os jogadores ganham vida máxima adicional conforme o nível de Perícia de Armadura. Cada nível acima de 1 dá +2 HP, ou um coração. Este modificador de atributo respeita as definições de ativação em skills.yml, os mundos excluídos e a elegibilidade dos mundos de combate geridos descrita acima.
Resumo do escalonamento por nível
A tabela seguinte resume os modificadores de nível antes de aplicar os limites de vida e os outros modificadores de combate. As proporções de vida do boss deixam de se verificar quando qualquer um dos dois limites é atingido.
| Diferença de nível | Modificador de vida do boss | Modificador de dano do boss | Dificuldade |
|---|---|---|---|
| -10 (jogador acima do nível) | 0.25x HP | ~0.4x dano | Trivial |
| -5 (jogador acima do nível) | 0.5x HP | ~0.6x dano | Muito Fácil |
| 0 (mesmo nível) | 1.0x HP | 1.0x dano | Equilibrado |
| +5 (jogador abaixo do nível) | 2.0x HP | ~1.6x dano | Desafiante |
| +10 (jogador abaixo do nível) | 4.0x HP | ~2.5x dano | Muito Difícil |
Combate escalado
O combate escalado simula o boss ao nível da perícia de arma do atacante ou da perícia de armadura do defensor. Isto retira o nível armazenado do boss do cálculo normal de dano. Equipamento, família de armas, bónus, powers e modificadores de vida continuam a tornar os combates diferentes entre jogadores. É útil para elites naturais e certos bosses de evento; um boss de evento precisa da sua própria definição scaledCombat: true.
Diferenças entre combate escalado e normalizado
O EliteMobs tem três modos de combate:
| Modo | Utilização | O nível importa? | Chave de configuração |
|---|---|---|---|
| Padrão | Mobs básicos sem flags especiais | Sim, dano e vida escalam com o nível real do mob | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| Normalizado | Bosses de masmorra e regionais (normalizedCombat: true) | Sim; as mesmas curvas base, com multiplicadores de configuração separados | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| Escalado | Elites naturais do overworld e bosses de evento (scaledCombat: true ou configuração global) | Não, o boss é simulado ao nível do jogador | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
Os ataques padrão e normalizados usam o nível real do mob. A sua fórmula exponencial atual de vida ignora os valores legados normalizedBaselineDamageV3 e normalizedRegionalBossBaselineHealthV3. Os ataques escalados substituem o nível por uma perícia do jogador. O nível armazenado continua a existir para outros sistemas.
Como funciona
Dano de boss para jogador
Quando um boss de combate escalado causa dano a um jogador, a fórmula de dano define o nível do boss igual ao nível de perícia de armadura do jogador:
mobLevel = armorSkillLevel (instead of the boss's actual level)
Isto significa que o ajuste de perícia se torna 1.0 (uma vez que bossLevel - armorSkillLevel = 0), e o dano depende inteiramente do equipamento e da perícia de armadura do jogador -- não do nível armazenado do mob. A restante fórmula (dano base, ajuste de equipamento, poções, etc.) funciona exatamente da mesma forma que descrito nas secções acima.
Dano de jogador para boss
Quando um jogador ataca um boss de combate escalado, a fórmula:
- Simula o boss ao nível de perícia de arma do jogador -- trata temporariamente o mob como se estivesse no mesmo nível que a perícia de arma do jogador.
- Executa a fórmula de dano padrão contra esse nível simulado, produzindo um resultado de "dano contra um mob do mesmo nível".
- Reescala para a HP real do boss -- converte o dano da fórmula de uma percentagem da HP do mob simulado para a mesma percentagem do total de HP real do boss.
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
simulatedMobHP = baseHPAtSimulatedLevel * bossHealthMultiplier
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
Isto retira o nível armazenado do boss do cálculo percentual. Multiplicadores de vida do boss, modificadores de armas e perícias, limites de vida e arredondamento continuam a afetar o número de golpes. Com healthMultiplier: 1.0, a referência é cerca de 3 golpes de espada; outras famílias seguem o fator de velocidade de ataque descrito acima.
Loot e recompensas
O cálculo escalado de recompensas usa o nível de combate do jogador, não o nível armazenado do mob. Loot normal, loot de classe, XP de perícia e moedas bónus usam este nível e depois aplicam as suas próprias regras. Itens personalizados fixos, recompensas explicitamente definidas, probabilidades, elegibilidade e limites de nível não desaparecem automaticamente. Vê Tabelas de loot e Sistema de perícias.
Apresentação do nível
As entidades de combate escalado apresentam um símbolo em vez de um nível numérico na sua placa de nome, uma vez que o seu nível real é irrelevante para o jogador:
- Entidades escaladas padrão (healthMultiplier 1.0 ou inferior): apresenta um símbolo de espada (predefinição:
「⚔」) - Entidades escaladas de alta ameaça (healthMultiplier acima de 1.0): apresenta um símbolo de caveira (predefinição:
☠)
Estes símbolos podem ser personalizados em MobCombatSettings.yml através de scaledStandardLevelSymbol e scaledHighThreatLevelSymbol.
Ativar o combate escalado
Para todos os elites naturais, na configuração global
Em MobCombatSettings.yml:
useScaledCombatForNaturalElites: true
Está ativo por predefinição e aplica-se a elites naturais em mundos elegíveis, não apenas à dimensão Overworld. Em mundos com useDistanceBasedNaturalEliteLevels, os elites naturais usam o nível real mesmo com este interruptor ativo. Bosses de masmorra com normalizedCombat não são afetados. Bosses personalizados ou de evento não herdam a definição só por surgirem ao ar livre.
Para bosses personalizados individuais
Num ficheiro de configuração de Boss Personalizado:
scaledCombat: true
Isto força um boss personalizado específico a usar combate escalado independentemente da definição global. Útil para bosses de evento ou encontros personalizados do overworld que devem sentir-se igualmente justos para todos os jogadores.
Nota: Se um boss tiver normalizedCombat: true (ou for um boss regional/instanciado com a normalização ativada globalmente), o combate normalizado tem prioridade e o boss não usará combate escalado -- a menos que scaledCombat: true seja explicitamente definido no ficheiro do boss, caso em que o combate escalado prevalece.
Chaves de configuração
As seguintes chaves do MobCombatSettings.yml controlam o comportamento do combate escalado:
| Chave | Predefinição | Descrição |
|---|---|---|
useScaledCombatForNaturalElites | true | Ativa o combate escalado para elites naturais, exceto os que usam níveis por distância |
scaledDamageToEliteMultiplier | 1.0 | Multiplicador global para o dano do jogador a bosses de combate escalado |
scaledDamageToPlayerMultiplier | 1.0 | Multiplicador global para o dano de bosses de combate escalado aos jogadores |
scaledStandardLevelSymbol | 「⚔」 | Símbolo mostrado na placa de nome para entidades escaladas padrão |
scaledHighThreatLevelSymbol | ☠ | Símbolo mostrado para entidades escaladas com healthMultiplier acima de 1.0 |
useRecommendedHealthScaling | true | Usa o escalonamento de vida exponencial do EliteMobs 10 para elites naturais (false = valores lineares legados, ver abaixo) |
Quando usar cada modo de combate
- Combate normalizado (
normalizedCombat: true): Para masmorras, instâncias e bosses regionais onde queres um controlo preciso sobre a dificuldade e o boss tem um nível fixo que se espera que os jogadores igualem. - Combate escalado (
scaledCombat: trueou definição global): Para conteúdo cujos ataques normais devem simular perícias do mesmo nível. Equipamento e habilidades continuam a afetar a dificuldade. - Combate padrão (nenhuma das flags): Para mobs onde o nível bruto deve determinar diretamente a dificuldade, como elites escalados por distância perto do spawn.
Escalonamento de vida legado (useRecommendedHealthScaling: false)
Quando useRecommendedHealthScaling é definido como false em MobCombatSettings.yml, os elite mobs naturais (não os bosses de masmorra ou regionais) usam uma fórmula legada simplificada em vez do escalonamento exponencial:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
Aqui, level é pelo menos 1. A fórmula substitui a vida dos elites naturais e o dano base dos jogadores contra eles. Não substitui a fórmula de perícia de armadura para dano recebido pelos jogadores. Produz valores lineares próximos do EliteMobs 9, maiores que os exponenciais em certos níveis baixos e muito menores em níveis altos. A vida final continua sujeita ao multiplicador de vida e ao teto do servidor. Bosses personalizados regionais não são afetados.
Usar estes dados para masmorras
NOTA: ISTO ASSUME QUE ESTÁS A USAR OS VALORES DE normalizedCombat! Esses valores foram especificamente feitos para balancear masmorras mais facilmente.
Parte da dificuldade de um boss é fazê-lo ter a vida e o dano apropriados para o encontro. No entanto, tem em conta que isto é apenas uma parte, e que os powers são igualmente importantes.
O que se segue é apresentado no formato correto para o ficheiro do Boss Personalizado.
As contas rápidas fáceis
Com o sistema de escalonamento exponencial, o healthMultiplier e o damageMultiplier escalam diretamente os valores base:
-
Um
healthMultiplierde 1.0 significa que o boss leva aproximadamente 3 acertos de espada a ser morto por um jogador do mesmo nível. Outras armas corpo a corpo variam pelo fator de velocidade de ataque: armas de rajada amortecida como machados, maças e tridentes corpo a corpo levam menos acertos do que as espadas, enquanto as enxadas levam mais acertos porque mantêm o fator legado de arma rápida. Um multiplicador de 2.0 duplica a vida, 0.5 reduz-a para metade, e assim por diante. -
Um
damageMultiplierde 1.0 significa que o boss mata um jogador do mesmo nível devidamente equipado em aproximadamente 5 acertos. Multiplicadores mais altos tornam o boss mais mortal, multiplicadores mais baixos tornam-no mais seguro.
Estas estimativas exigem equipamento e competências do mesmo nível e margem abaixo do limite final de vida. healthMultiplier: 2.0 só duplica a vida base enquanto o resultado cabe nesse limite; não garante seis golpes de espada em todos os níveis.
Tem em conta que os jogadores tendem a dar prioridade às armas, e muitas vezes acabam com armaduras muito piores do que as armas. A menos que desenhes tipos muito específicos de arenas com combate à distância, provavelmente não queres causar muito dano por acerto. Testa o teu conteúdo!
Estas contagens de golpes também não têm em conta:
- Os bónus de perícia. Todas as contagens acima assumem zero bónus ativos. Um jogador com três bónus ofensivos mata visivelmente mais depressa, e um jogador com três defensivos sobrevive visivelmente mais tempo (até ao teto agregado de 85%). Trate os números como um piso do poder do jogador, não como uma previsão.
- A vida do Advanced Combat. Os seus 30 HP adicionais aumentam a sobrevivência sem aumentar o dano base recebido.
- O teto de vida máxima. Acima dos níveis listados em O Teto de Vida Máxima do Minecraft, o
healthMultiplierdeixa de aumentar a HP por completo. A predefinição de world boss, em particular, fica limitada a partir do nível 23 num servidor predefinido.
Criar um mob de masmorra médio
Com o escalonamento do normalizedCombat, podes aplicar uma configuração muito minimalista:
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #survives ~5 hits
Os dois multiplicadores têm predefinição 1.0 e podem ser omitidos. Mantém normalizedCombat: true, exceto se o boss já estiver normalizado pela configuração regional, de instância ou de arena.
Criar grupos de mobs comuns
Os trash packs são numerosos mas não muito perigosos:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #survives ~10 hits
Criar reforços
Os reforços devem morrer muito facilmente, mas representar um perigo em termos de dano (estes valores recomendados para 4+ entidades corpo a corpo, o uso real pode variar):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #survives ~8 hits
Criar minibosses
Os minibosses devem aguentar-se, e representar um desafio mecânico para os jogadores. Deve ser um teste de perícia que dura algum tempo, mas não algo extremamente mortal:
normalizedCombat: true
healthMultiplier: 3.0 #~9 sword hits to slay
damageMultiplier: 1.2 #survives ~4 hits
Criar bosses
Os bosses são um verdadeiro desafio, a conclusão de uma escalada numa masmorra e um verdadeiro teste de perícia com tudo em jogo. Os encontros devem ser longos e a morte deve ser uma ameaça presente.
normalizedCombat: true
healthMultiplier: 7.0 #~21 sword hits to slay
damageMultiplier: 1.4 #survives ~3.5 hits
Criar world bosses
Os world bosses são perigosos, mas acima de tudo têm muita vida e invocam muitos reforços / têm muitos ataques de área de efeito. Estes destinam-se a ser combatidos por grandes grupos de jogadores ao longo do maior período de tempo que um encontro de elite deve durar. Não são muito mortais, mas têm muitas mecânicas que podem sobrecarregar jogadores mal preparados.
normalizedCombat: true
healthMultiplier: 40.0 #~120 sword hits to slay
damageMultiplier: 1.5 #survives ~3 hits
Estes são apenas valores recomendados aproximados e quaisquer valores finais devem ser ajustados em torno dos próprios encontros.