Sistema de daño
Este es un desglose exhaustivo de cómo escala la salud / el daño en EliteMobs. Debería usarse como referencia al diseñar mazmorras.
Se centra en los ataques normales que implican jefes personalizados. Los elites naturales usan las mismas curvas básicas, con las opciones de combate escalado y salud heredada explicadas más abajo. El daño bruto de scripts, las armas mágicas y las habilidades de clase pueden seguir otras rutas; consulta Daño personalizado y absorción.
¡Antes de empezar!
No necesitas leer todo esto si solo quieres hacer ajustes rápidos. ¡Salta a la sección "Usar estos datos para mazmorras" para ver cálculos rápidos muy simplificados y una serie de ajustes recomendados prefabricados!
Escalado (en general)
EliteMobs combina ajustes exponenciales de habilidad con modificadores de equipo. La fórmula de salud del jefe sin límites se duplica cada 5 niveles, mientras que los ajustes ofensivos y defensivos de habilidad se duplican cada 7,5 niveles de diferencia. La salud del jefe y el daño base del jugador dejan de crecer solo por el nivel del mob al alcanzar el límite de salud configurado de Minecraft. Estas curvas no garantizan combates idénticos en todos los rangos de nivel.
El poder del jugador combina dos capas calculadas de forma independiente:
- Nivel de Habilidad de Arma -- ganado matando Elite Mobs con un tipo de arma específico (espadas, hachas, arcos, ballestas, tridentes, azadas, mazas, lanzas, bastones o varitas).
- Nivel del Objeto -- el nivel de elite del arma o pieza de armadura que el jugador tiene equipada.
Los jugadores también obtienen XP de Armadura por bajas de elites que cumplen los requisitos. Usa un tercio de la cuota de XP base antes de sus propios modificadores y redondeos. Recibir golpes no concede esta XP. Armadura añade salud máxima, +1 corazón por nivel por encima de 1, cuando lo permiten la configuración y las reglas del mundo, y determina el escalado defensivo frente al daño del jefe.
Habilidades de arma
La XP de armas se reparte según la contribución de daño entre las habilidades registradas al golpear o lanzar proyectiles. Cambiar de arma al morir el mob no redirige la XP.
Las habilidades de arma disponibles son:
| Habilidad | Arma |
|---|---|
| Swords | Todos los tipos de espada |
| Axes | Todos los tipos de hacha |
| Bows | Arco |
| Crossbows | Ballesta |
| Tridents | Tridente |
| Hoes | Todos los tipos de azada |
| Maces | Maza (1.21+) |
| Spears | Todos los tipos de lanza (1.21.11+) |
| Bastones | Armas con modelo personalizado y weaponType: STAVES |
| Varitas | Armas con modelo personalizado y weaponType: WANDS |
| Armadura | Habilidad defensiva que progresa junto con las bajas de elites válidas |
La XP inicial es mobLevel^2, modificada por los multiplicadores de salud/daño del jefe, la contribución, los límites de nivel para recompensas y las ventajas de XP. El nivel 100 es un límite suave, no un máximo: la XP necesaria sigue aumentando. Consulta Sistema de habilidades.
Bonificaciones de habilidad
Las diez habilidades de armas y Armadura tienen bonificaciones de habilidad que se desbloquean al subir de nivel. Los jugadores seleccionan cuáles activar. Hay cinco tipos:
- Pasiva -- siempre activa cuando está equipada (p. ej., aumento de daño fijo).
- Condicional -- activa solo cuando se cumple una condición específica (p. ej., daño adicional cuando el objetivo está por debajo del 30% de salud).
- Proc -- activación basada en probabilidad en eventos específicos (p. ej., probabilidad de causar sangrado al golpear).
- Acumulable (Stacking) -- se acumula a lo largo de acciones consecutivas (p. ej., los golpes consecutivos aumentan el daño).
- Enfriamiento (Cooldown) -- efecto poderoso con un enfriamiento interno (p. ej., sobrevivir a un daño fatal una vez cada 60 segundos).
Las bonificaciones de habilidad ofensivas de las habilidades de arma se aplican como multiplicadores de daño aditivos sobre el daño base infligido a los jefes. Las bonificaciones de habilidad defensivas de la habilidad de armadura reducen el daño entrante del jefe a través de varios mecanismos (reducción fija, esquiva, escudos de daño, etc.).
Los jugadores pueden tener hasta 3 bonificaciones activas por tipo de arma o armadura. Las curvas de esta página no las incluyen; consulta Bonificaciones de habilidad en el cálculo de daño antes de usar estos valores para equilibrar un encuentro.
Daño infligido por los jefes personalizados
El daño del jefe en EliteMobs 10 usa tres capas multiplicativas sin precompensación. El sistema está diseñado para que un jugador con el equipo adecuado sobreviva aproximadamente 5 golpes de contenido del mismo nivel.
La fórmula de daño para los Jefes Personalizados es:
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)
Las tres capas son:
- Daño base -- cuánta salud por golpe se espera que pierda el jugador (
playerMaxHealth / 5). - Ajuste de habilidad -- escalado exponencial a partir de la diferencia entre el nivel del jefe y el nivel de Habilidad de Armadura del jugador.
- Ajuste de equipo -- reducción consciente del tipo de daño basada en la armadura equipada del jugador y los encantamientos de protección (consulta el Sistema de Defensa de Equipo más abajo).
El límite usa la salud máxima real menos 1 en combate normal. Con [Alpha] Advanced Combat System activo, primero resta su aumento fijo de 30 HP. Esa salud amplía la reserva sin aumentar el daño base recibido. El límite se aplica dentro de la fórmula, antes del bloqueo y de los listeners. El daño bruto personalizado lo omite y un jugador herido todavía puede morir de un golpe.
playerMaxHealth
Con los ajustes de salud de Armadura predeterminados, la base es 20 HP más 2 por nivel por encima de 1. El nivel 50 da 118 HP antes de otros modificadores. La bonificación puede desactivarse en skills.yml y no se aplica en mundos excluidos. La base de 20 HP es fija; ese archivo no ofrece un ajuste de salud base. Si [Alpha] Advanced Combat System está activado, también se aplican sus reglas de mundos de combate gestionados.
baseDamage
El daño base es simplemente playerMaxHealth / 5.0. Esta es la cantidad de daño que se espera que reciba por golpe un jugador del mismo nivel con el equipo adecuado. A diferencia del sistema antiguo, no hay precompensación -- el valor base es el daño objetivo, no un valor bruto inflado.
skillAdjustment
El ajuste de habilidad usa escalado exponencial para que la diferencia de nivel entre el jefe y la Habilidad de Armadura del jugador sea significativa:
skillAdjustment = 2 ^ ((bossLevel - armorSkillLevel) / 7.5)
Cada 7,5 niveles de diferencia se duplica o se reduce a la mitad el daño efectivo del jefe. Es una curva más lenta que la salud del jefe sin límites, que se duplica cada 5 niveles. El ajuste de equipo añade su propio escalado.
| Diferencia de Nivel | Ajuste de Habilidad | Golpes Aproximados para Matar (equipo igualado) |
|---|---|---|
| Mismo nivel (0) | 1.0x | ~5 golpes |
| +5 niveles | ~1.6x | ~3 golpes |
| +10 niveles | ~2.5x | ~2 golpes |
| +15 niveles | 4.0x | ~1.25 golpes |
Sistema de defensa de equipo
El sistema de defensa de equipo reemplaza la antigua rampa de equipo. En lugar de asumir un multiplicador de precompensación fijo basado en el nivel de habilidad, el sistema ahora lee el equipo realmente equipado del jugador y calcula una reducción de equipo consciente del tipo de daño.
Tipos de daño
El sistema clasifica el daño entrante en cinco categorías. El tipo de daño determina qué encantamientos de protección contribuyen a la puntuación de equipo:
| Tipo de Daño | Causas del Evento | Encantamientos de Protección Usados |
|---|---|---|
| MELEE | Ataque directo, ataque de barrido | Solo Protection |
| PROJECTILE | Flechas, bolas de fuego | Protection + Projectile Protection |
| EXPLOSION | Explosión de creeper, de ghast | Protection + Blast Protection |
| FIRE | Fuego, tick de fuego | Protection + Fire Protection |
| OTHER | Todo lo demás | Solo Protection |
Puntuación de equipo
La puntuación de equipo combina el nivel de armadura y las bonificaciones de encantamiento en un único valor que se puede comparar con el nivel del mob atacante:
gearScore = (sum of armorLevel for 4 armor slots) / 4
+ (sum of enchantBonus for all 6 slots) / 4
El nivel de armadura se determina por objeto:
- Los objetos de elite usan
materialTier + 4 * eliteDefenseAttribute. La armadura generada normalmente corresponde a su nivel previsto, pero cambiar solo la etiqueta de nivel no cambia esta defensa. Los rangos de material elite son 3 para cuero/oro/tortuga, 5 para cota de malla, 6 para hierro, 7 para diamante y 8 para netherita. Difieren de la tabla vanilla siguiente. - Los objetos vanilla usan una búsqueda basada en el material:
| Material | Nivel de Armadura |
|---|---|
| Leather | 1 |
| Gold | 2 |
| Chainmail | 3 |
| Iron | 4 |
| Turtle Shell | 4 |
| Diamond | 5 |
| Netherite | 7 |
| Copper (versiones del servidor que lo incluyen) | 2 |
Solo las 4 ranuras de armadura (casco, pechera, grebas, botas) contribuyen al nivel de armadura.
La bonificación de encantamiento convierte los niveles de encantamiento de protección en unidades equivalentes a nivel de armadura:
enchantBonus = (general Protection level + type-specific Protection level) * (1/3)
Las 6 ranuras de equipo (4 de armadura + mano principal + mano secundaria) contribuyen a la bonificación de encantamiento. Esto significa que los escudos o armas con encantamientos de Protection proporcionan defensa adicional. La normalización /4 sobre la suma significa que tener encantamientos en las 6 ranuras da hasta un 50% más de contribución de encantamiento que tenerlos solo en 4 piezas de armadura.
Ejemplo resuelto: Equipo igualado de Nv25 + Prot IV vs Nv25 (cuerpo a cuerpo)
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
Ejemplo resuelto: Diamante vanilla de Nv1 vs esqueleto de Nv5 (proyectil)
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
Si la armadura de diamante también tuviera Projectile Protection IV, cada pieza ganaría una bonificación de encantamiento de 4 * (1/3) = 1.333. La puntuación de equipo subiría a 5.0 + (1.333*4)/4 = 6.333, aumentando la reducción al 53.3% y mejorando notablemente la supervivencia contra las flechas.
Curva de reducción de equipo
La reducción de equipo usa una curva lineal de dos partes que cambia en el punto donde la puntuación de equipo es igual al nivel del mob:
Por debajo de la igualación (gearScore es menor o igual que mobLevel):
reduction = 0.50 * (gearScore / mobLevel)
Escala linealmente desde 0% (desnudo) hasta 50% (igualado). La pendiente depende del nivel del mob -- contra un mob de nivel 5 cada nivel de equipo da un 10% de reducción, mientras que contra un mob de nivel 50 cada uno da un 1%. Esto hace que, de forma natural, la armadura vanilla de nivel bajo sea efectiva contra mobs de nivel bajo pero irrelevante contra los de nivel alto.
Por encima de la igualación (gearScore es mayor que mobLevel):
reduction = 0.50 + (gearScore - mobLevel) * 0.025
Un 2.5% fijo por nivel de equipo por encima del mob. Alcanza el límite duro del 75% a +10 niveles de equipo por encima del mob.
El ajuste de equipo convierte la reducción en un multiplicador de daño:
gearAdjustment = 2.0 * (1 - gearReduction)
| Situación del Equipo | Reducción de Equipo | Ajuste de Equipo | Golpes para Matar (mismo nivel de habilidad) |
|---|---|---|---|
| Desnudo (sin equipo) | 0% | 2.0 | ~2.5 |
| Equipo a media igualación | 25% | 1.5 | ~3.3 |
| Equipo igualado (gearScore = mobLevel) | 50% | 1.0 | ~5.0 |
| +4 niveles por encima del mob | 60% | 0.8 | ~6.25 |
| +10 niveles por encima del mob (límite) | 75% | 0.5 | ~10.0 |
Tabla de escenarios
Las siguientes cantidades de golpes suponen salud completa con la base normal de 20 HP más la salud de la habilidad de armadura, multiplicadores de daño predeterminados y sin salud adicional, pociones ni bonificaciones de habilidad. [Alpha] Advanced Combat System añade 30 HP sin aumentar el daño base recibido, por lo que los jugadores en ese modo pueden recibir más golpes.
| Escenario | Ajuste Hab. | Red. Equipo | Ajuste Equipo | Golpes |
|---|---|---|---|---|
| Nv1 desnudo vs Nv1 | 1.0 | 0% | 2.0 | 2.5 |
| Nv1 desnudo vs Nv5 | 1.45 | 0% | 2.0 | ~1.7 |
| Nv1 diamante vanilla vs Nv5 | 1.45 | 50% | 1.0 | ~3.5 |
| Nv25 igualado vs Nv25 | 1.0 | 50% | 1.0 | 5.0 |
| Nv25 igualado+ProtIV vs Nv25 | 1.0 | 53.3% | 0.93 | 5.4 |
| Nv25 igualado vs Nv30 | 1.59 | 41.7% | 1.17 | 2.7 |
| Nv25 equipo máximo vs Nv25 | 1.0 | 75% | 0.50 | 10.0 |
| Nv50 igualado vs Nv50 | 1.0 | 50% | 1.0 | 5.0 |
Objetivos de diseño clave:
- 5 golpes a nivel igualado: Con la salud de referencia normal indicada arriba, un jugador bien equipado y con salud completa es derrotado en aproximadamente 5 golpes normales de un elite mob del mismo nivel.
- 2.5 golpes desnudo -- no tener equipo significa el doble de daño mediante el ajuste de equipo de 2.0. Incentivo inmediato para equipar cualquier armadura.
- La armadura vanilla importa -- un jugador de nivel 1 con armadura de diamante sobrevive ~3.5 golpes de un mob de nivel 5 en lugar de ~1.7 desnudo.
- Los encantamientos son significativos pero no dominantes -- Protection IV en las 4 piezas de armadura añade ~1.33 a la puntuación de equipo, empujando del 50% al 53.3% de reducción. Notable (~8% más de supervivencia) pero no rompe el juego.
- Referencia consistente por nivel: El combate igualado en los niveles 25 y 50 tiene como objetivo aproximadamente 5 golpes bajo esas condiciones. La salud adicional de [Alpha] Advanced Combat System cambia la cantidad real.
- Límite de equipo máximo a 10 golpes -- incluso con el mejor equipo posible (+10 niveles por encima del mob), los jugadores siguen recibiendo daño significativo.
potionMultiplier (defensivo)
El daño entrante combina Fuerza/Debilidad del elite atacante con Resistencia del jugador. La parte de Resistencia es:
potionMultiplier = max(0, 1.0 - (resistanceAmplifier + 1) * resistanceDamageMultiplier)
La clave de configuración es resistanceDamageMultiplierV2 en MobCombatSettings.yml (por defecto: 0.2). Esto coincide con el comportamiento vanilla: Resistencia I = 20% de reducción, Resistencia V = 100% de reducción (inmune).
customBossDamageMultiplier
Este es el multiplicador de daño en el archivo del Jefe Personalizado. Por defecto es 1.
configMultiplier (defensivo)
Este es el multiplicador en MobCombatSettings.yml. Para el combate normalizado, usa normalizedDamageToPlayerMultiplier (por defecto 1.0). Para el combate escalado, usa scaledDamageToPlayerMultiplier (por defecto 1.0). Para los mobs estándar, usa damageToPlayerMultiplierV2 (por defecto 1.0).
specialMultiplier
Es un multiplicador enviado por un poder del jefe para una llamada de daño concreta. El evento correspondiente lo consume una vez; los golpes posteriores ajenos o anidados no lo heredan. Su valor predeterminado es 1.0.
Atenuación del daño por explosión
El daño de creeper se atenúa según la distancia al creeper y su radio de explosión. La rama del ghast mide la distancia al ghast y usa el radio de la bola de fuego, no la distancia al impacto. Ambas usan max(0, 1 - distance / radius). Después, la fórmula eleva el resultado a un mínimo de 1 antes de otros multiplicadores; la distancia por sí sola no garantiza daño cero.
Salud máxima de los Jefes Personalizados
La fórmula de salud del jefe sin límites en EliteMobs 10 se duplica cada 5 niveles. La salud real está limitada por el máximo de Minecraft, aplicado antes y después de healthMultiplier, por lo que esa duplicación se detiene al alcanzar un límite de salud.
La fórmula de salud para los Jefes Personalizados es:
baseHealth = min(2.1875 * 2^(bossLevel / 5), minecraftMaxHealth)
health = max(1, min(baseHealth * customBossHealthMultiplier, minecraftMaxHealth))
Escalado exponencial
La constante base (2.1875) está ajustada para que un jefe de nivel 25 tenga aproximadamente 70 HP. Valores de salud de ejemplo (antes del techo de salud máxima descrito más abajo):
| Nivel del Jefe | Salud según la fórmula | Salud +5 Niveles |
|---|---|---|
| 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) |
El techo de salud máxima de Minecraft
El propio Minecraft se niega a dar a una entidad más salud que settings.attribute.maxHealth.max en spigot.yml. EliteMobs lee ese valor al arrancar y, si está por debajo de 2048, lo sube a 2048 y guarda el archivo. Llamemos MAX a ese valor.
El techo se aplica dos veces -- una a la fórmula de nivel desnuda, y otra después de aplicar healthMultiplier:
effectiveHealth = min( min(2.1875 * 2^(level / 5), MAX) * healthMultiplier, MAX )
El clamp interno es la razón por la que incluso un healthMultiplier por debajo de 1.0 acaba dejando de escalar: la fórmula desnuda cruza 2048 en el nivel 50 sin importar qué multiplicador uses, y todo lo posterior trabaja a partir de un número fijado desde ahí. El clamp externo muerde aún antes para multiplicadores por encima de 1.0.
En un servidor por defecto (MAX = 2048):
| healthMultiplier | Uso típico | La HP deja de crecer en | Fijada en |
|---|---|---|---|
| 0.25 | Refuerzos | Nivel 50 | 512 HP |
| 0.7 | Grupo de basura | Nivel 50 | ~1,434 HP |
| 1.0 | Mob de mazmorra estándar | Nivel 50 | 2,048 HP |
| 3.0 | Minijefe | Nivel 42 | 2,048 HP |
| 7.0 | Jefe | Nivel 36 | 2,048 HP |
| 40.0 | Jefe de mundo | Nivel 23 | 2,048 HP |
Por encima de esos niveles la salud deja de crecer: un jefe de mundo de nivel 60 y uno de 90 tienen los mismos HP. El cálculo final registra una advertencia cuando la multiplicación supera el límite. El límite previo de salud base es silencioso, así que la ausencia de advertencias no demuestra que no se haya alcanzado. Usa un healthMultiplier positivo y finito; los valores inválidos se sustituyen por 1.0.
Si estás construyendo contenido por encima de aproximadamente el nivel 35 con valores altos de healthMultiplier, sube tú mismo settings.attribute.maxHealth.max en spigot.yml. De lo contrario tus niveles de jefe se aplanan unos sobre otros -- los valores de healthMultiplier recomendados más adelante en esta página dejan de diferenciar encuentros en cuanto todos ellos se limitan al mismo número.
El daño base del jugador usa la salud de nivel limitada, dividida entre 3, por lo que deja de crecer solo por el nivel del mob al alcanzar el límite interno. Los multiplicadores de armas, habilidades y otros siguen aplicándose. Un healthMultiplier alto pierde su resistencia adicional al alcanzar el límite final de salud.
customBossHealthMultiplier
Este es el multiplicador en el archivo del Jefe Personalizado. Por defecto es 1.
Daño infligido a los jefes personalizados
El daño del jugador usa capas multiplicativas de escalado exponencial y lineal para mantener el combate consistente entre niveles, dejando al mismo tiempo que las distintas familias de armas se sientan diferentes. La fórmula separa el poder del jugador en dos ejes independientes -- nivel de habilidad de arma (ajuste de habilidad exponencial) y nivel de objeto del arma (ajuste de arma lineal) -- de modo que tanto la inversión en habilidad como el equipo contribuyen al poder de combate.
El cambio importante respecto a versiones anteriores es que la velocidad de las armas cuerpo a cuerpo ya no intenta hacer que cada tipo de arma tenga un DPS teórico idéntico. Las espadas siguen siendo el punto de referencia, mientras que las hachas, mazas y tridentes cuerpo a cuerpo reciben una compensación de ráfaga amortiguada. Las familias de armas que ya funcionaron bien en las pruebas, como las azadas y las lanzas, conservan el antiguo factor de velocidad de ataque.
Fórmula de daño
La fórmula completa de daño de jugador a elite es:
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 se explica a continuación. Las bonificaciones se aplican mediante un listener de prioridad HIGH durante el evento de daño de EliteMobs; los listeners posteriores aún pueden modificar el resultado. Consulta Bonificaciones de habilidad en el cálculo de daño.
baseDamage
El daño base por golpe se deriva del HP normalizado del mob (con healthMultiplier=1.0) dividido entre el número objetivo de golpes para matar:
baseDamage = normalizedMobHP / 3.0
Aquí normalizedMobHP = min(2.1875 * 2^(mobLevel / 5), minecraftMaxHealth), como se explica en la sección de salud máxima. La constante 3.0 (TARGET_HITS_TO_KILL_MOB) establece una referencia de unos 3 golpes de espada completamente cargados con habilidad y equipo del mismo nivel, antes de otros modificadores y redondeos.
Estas estimaciones requieren equipo y habilidades del mismo nivel y margen bajo el límite final de salud. healthMultiplier: 2.0 solo duplica la salud base mientras el resultado cabe bajo el límite; no garantiza seis golpes de espada a cualquier nivel.
attackSpeedFactor
Esta es la capa de ritmo de la velocidad de ataque cuerpo a cuerpo. Parte del antiguo factor heredado:
legacyFactor = 1.6 / weaponAttackSpeed
Se usa la velocidad del arma calculada por EliteMobs; el atributo de velocidad del jugador se usa por separado para la recarga. La referencia de 1.6 corresponde a la espada. El factor final depende de la familia del arma:
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
Esto significa que el sistema no intenta hacer que cada arma cuerpo a cuerpo tenga un DPS idéntico. Las armas lentas de ráfaga siguen golpeando más fuerte por golpe, pero las hachas, mazas y tridentes cuerpo a cuerpo ya no reciben el multiplicador de ráfaga completo 1.6 / speed. Las azadas y lanzas se mantienen intencionadamente con el factor antiguo porque las pruebas de juego mostraron que su ritmo ya era aceptable.
Ejemplos con nivel de habilidad y de arma igualados:
| Tipo de Arma | Velocidad de Ataque de Ejemplo | Factor | Golpes de Fórmula vs healthMultiplier: 1.0 |
|---|---|---|---|
| Espada | 1.6 | 1.00x | 3.0 |
| Hacha | 1.0 | 1.26x | ~2.4 |
| Maza | 0.6 | 1.63x | ~1.8 |
| Azada | 4.0 | 0.40x | 7.5 |
| Tridente, cuerpo a cuerpo | 1.1 | 1.21x | ~2.5 |
| Lanza, ejemplo de diamante | ~0.95 | ~1.68x | ~1.8 |
| Proyectil de arco/ballesta | N/A | 1.00x | la velocidad del proyectil decide la carga |
Para los ataques con proyectil, incluidos arcos, ballestas y tridentes lanzados, no se aplica el factor de velocidad de ataque cuerpo a cuerpo. La carga/fuerza del proyectil se representa con cooldownOrVelocity en su lugar.
Nota: Las armas exclusivamente a distancia (arcos, ballestas) usadas cuerpo a cuerpo se tratan como golpes desarmados -- nivel de arma 0 y nivel de habilidad 1, con una velocidad de ataque por defecto de 4.0 (velocidad de puño). Esto las hace muy débiles cuerpo a cuerpo, incentivando a los jugadores a usarlas a distancia.
skillAdjustment
Escalado exponencial a partir de la diferencia entre el nivel de habilidad de arma del jugador y el nivel del mob:
skillAdjustment = 2 ^ ((weaponSkillLevel - mobLevel) / 7.5)
Cada 7.5 niveles de diferencia se duplica (o se reduce a la mitad) el daño del jugador. Esto coincide con el ritmo de escalado de habilidad defensiva usado en el daño de jefe a jugador, produciendo un combate simétrico.
| Diferencia de Habilidad | Ajuste de Habilidad | Efecto |
|---|---|---|
| -15 | 0.25x | Un cuarto del daño |
| -7.5 | 0.50x | La mitad del daño |
| 0 (igualado) | 1.0x | Línea base |
| +7.5 | 2.0x | El doble del daño |
| +15 | 4.0x | El cuádruple del daño |
La salud del jefe tiene el límite del servidor, pero el ajuste ofensivo de habilidad no tiene un tope en el código actual. Diferencias grandes, superiores a unos +/-22 niveles, pueden producir valores extremos. El nivel 100 solo es un límite suave de progresión.
weaponAdjustment
Una curva lineal de dos partes basada en el nivel de objeto del arma vs el nivel del mob. Esto refleja la curva de reducción de equipo defensiva del Sistema de Defensa de Equipo.
El arma usa el nivel almacenado si existe. En caso contrario, EliteMobs calcula su nivel a partir del daño y la velocidad de ataque, recurriendo al nivel de armadura para valores bajos. Las armas vanilla pueden tener un nivel efectivo mayor que cero. Esto difiere del cálculo de defensa de armadura.
weaponAdjustment = 0.5 + bonus
Por debajo de la igualación (weaponLevel es menor o igual que mobLevel):
bonus = 0.50 * (weaponLevel / mobLevel)
Escala linealmente desde 0 (sin arma) hasta 0.50 (igualado). Sin un arma equipada, el ajuste es 0.50 (la mitad del daño).
Por encima de la igualación (weaponLevel es mayor que mobLevel):
bonus = 0.50 + (weaponLevel - mobLevel) * 0.025
bonus = min(bonus, 0.75)
Un 2.5% fijo por nivel de arma por encima del mob, con un límite de 0.75 de bonificación. Requiere +10 niveles de arma por encima del mob para alcanzar el límite.
| Escenario de Arma | Bonificación | Ajuste de Arma | Efecto en los Golpes |
|---|---|---|---|
| Arma de nivel 0, aislando este ajuste | 0.00 | 0.50 | 6 golpes (2x más lento) |
| Arma a medio nivel | 0.25 | 0.75 | 4 golpes |
| Arma igualada (weaponLevel = mobLevel) | 0.50 | 1.00 | 3 golpes (línea base) |
| +4 niveles por encima del mob | 0.60 | 1.10 | ~2.7 golpes |
| +10 niveles por encima del mob (límite) | 0.75 | 1.25 | ~2.4 golpes |
Los puñetazos también usan habilidad de nivel 1 y el factor de velocidad desarmado. La tabla aísla el ajuste de arma manteniendo los demás factores de referencia de la espada.
cooldownOrVelocity
En ataques cuerpo a cuerpo, EliteMobs mide los ticks desde el golpe principal anterior y los divide entre la recarga 20 / attackSpeed, con máximo 1.0. Los golpes a entidades no elite también actualizan el contador; golpear al aire no. El primer golpe registrado tiene carga completa. Se usa el atributo actual de velocidad del jugador, o la velocidad del objeto si el atributo falta, es inválido o sigue indicando el 4.0 base con un arma más lenta. Los golpes cuerpo a cuerpo con arco/ballesta usan 4.0.
Para los ataques a distancia/con proyectil (arcos, ballestas, tridentes lanzados y flechas generadas por habilidades), esta es la velocidad de lanzamiento normalizada. La velocidad de un arco a tensión completa es aproximadamente 3.0; el valor se normaliza a min(velocity / 3.0, 1.0), limitado al rango [0, 1].
En ataques a distancia normales, el nivel del arma, la identidad/nivel de habilidad y el resultado crítico se capturan al disparar, incluidos arcos/ballestas en la mano secundaria. Los tridentes lanzados aportan su propio nivel de objeto. Se prefiere la velocidad de lanzamiento; si falta, se usa la actual. Si faltan los datos de arma/habilidad, se usan niveles 0/1 sin adoptar la habilidad del arma sostenida al impactar. Otros datos, como las pociones y la suma de encantamientos de daño de las seis ranuras, sí se consultan al impactar.
sweepMultiplier
En ENTITY_SWEEP_ATTACK, el multiplicador es 0.25 y se usa carga completa sin actualizar el contador del golpe principal. Los demás factores se evalúan por objetivo, incluida una tirada crítica independiente; el daño final no tiene por qué ser exactamente el 25% del recibido por el objetivo principal:
sweepMultiplier = 0.25 (secondary sweep targets)
sweepMultiplier = 1.0 (primary target)
potionMultiplier (ofensivo)
Los efectos de las pociones de Fuerza y Debilidad modifican el daño saliente del jugador:
potionMultiplier = 1.0 + strengthBonus - weaknessPenalty
Aquí strengthBonus = (strengthAmplifier + 1) * strengthDamageMultiplier y weaknessPenalty = (weaknessAmplifier + 1) * weaknessDamageMultiplier. Ambos ajustes valen 0.2 por defecto: Fuerza I añade un 20% y Debilidad I resta un 20% en esta fórmula de EliteMobs. Niveles iguales se cancelan y el multiplicador tiene un mínimo de 0.
Las claves de configuración en MobCombatSettings.yml son:
| Clave | Por defecto | Descripción |
|---|---|---|
strengthDamageMultiplierV2 | 0.2 | Daño adicional por nivel de Fuerza |
weaknessDamageMultiplierV2 | 0.2 | Penalización de daño por nivel de Debilidad |
equipmentEnchantmentMultiplier
Los niveles de Sharpness y Power en los objetos equipados del jugador aportan una bonificación de daño porcentual. Cada nivel vale un 2.5%, y ambos encantamientos se cuentan en cada objeto:
perItemBonus = (Sharpness level + Power level) * 0.025
equipmentEnchantmentMultiplier = 1.0 + sum of perItemBonus across all six slots
La suma cubre las seis ranuras (4 de armadura + mano principal + mano secundaria), así que Sharpness en un escudo o en la armadura también aporta. Esta es una capa independiente de enchantmentMultiplier de más abajo, que solo cubre los encantamientos por tipo de mob (Smite, Bane of Arthropods).
enchantmentMultiplier
Los encantamientos de Smite y Bane of Arthropods proporcionan una pequeña bonificación de daño contra sus respectivos tipos de mob, pero solo cuando useEliteEnchantments está desactivado en ItemSettings.yml. Cuando los encantamientos de elite están activados, este multiplicador es siempre 1.0.
Solo se cuentan los niveles de encantamiento por encima del máximo vanilla (niveles exclusivos de elite):
enchantmentMultiplier = 1.0 + eliteLevelsAboveVanillaMax * 0.025
Cada nivel adicional aporta un 2.5%. Smite VIII, con máximo vanilla V, aporta tres: 1.0 + 3 * 0.025 = 1.075. Esta rama consulta la mano principal actual, también al impactar un proyectil. Bane comprueba Spider/Silverfish; Smite comprueba Zombie/Skeleton/Wither/SkeletonHorse/ZombieHorse/Zombified Piglin, incluidos subtipos de esas clases Java. No usa una etiqueta completa de categorías de mobs de Minecraft.
arrowDamageMultiplier
Las flechas generadas por las habilidades de habilidad de arma (como Multishot, Arrow Rain, etc.) llevan un multiplicador de daño almacenado en el contenedor de datos del proyectil. Esto permite que las flechas generadas por habilidades inflijan menos daño en comparación con un golpe de flecha estándar. Para las flechas normales disparadas por el jugador, este multiplicador es 1.0.
Daño de Thorns
Con useEliteEnchantments activado, la rama del evento THORNS usa el daño base del jugador contra elites, no la fórmula completa de armas. Solo cuentan los niveles por encima de Thorns III. Este cálculo no programa ni garantiza por sí solo una activación de espinas.
eliteThornsLevel = totalThornsLevel - vanillaMaxThornsLevel (per armor piece, summed across all 4 pieces)
thornsDamage = baseDamage * eliteThornsLevel * 0.02
Cada nivel adicional aporta el 2% del daño base. Thorns III vanilla no aporta daño de espinas elite. Cuatro piezas con Thorns V suman ocho niveles extra: baseDamage * 8 * 0.02 = 16% del daño base del jugador contra elites por activación.
El combate estándar/normalizado usa el nivel real del mob. El escalado usa la habilidad de arma actual del jugador y convierte el resultado a los HP reales del jefe. Después se aplican los modificadores de material del jefe, el multiplicador de combate y los críticos.
damageModifier
Modificador de daño por tipo de arma específico del jefe del archivo del Jefe Personalizado (damageModifiers). Esto permite que los jefes reciban más o menos daño de materiales de arma específicos (p. ej., un jefe que es resistente a las espadas pero débil a las hachas). Por defecto es 1.0 para todos los tipos de arma no configurados explícitamente.
El cuerpo a cuerpo consulta el material de la mano principal actual. Los proyectiles solo usan el material del arma de origen si figuran en los datos de proyectiles personalizados de EliteMobs; en caso contrario usan la consulta predeterminada. Capturar el nivel del arma no basta para proporcionar este modificador de material.
combatMultiplier
Multiplicador global de MobCombatSettings.yml (scaledDamageToEliteMultiplier, normalizedDamageToEliteMultiplier o damageToEliteMobMultiplierV2 según el modo de combate). Por defecto es 1.0.
critMultiplier
Los golpes críticos multiplican el daño final por 1.5x. La probabilidad de crítico se suma a lo largo de las seis ranuras de equipo (4 de armadura + mano principal + mano secundaria) a partir de las estadísticas de probabilidad de crítico del equipo de elite del jugador, y después se limita:
critChance = min(sum of all six slots, maximumCriticalStrikeChance)
maximumCriticalStrikeChance vive en MobCombatSettings.yml y por defecto vale 0.40 (40%). Sin el tope, acumular probabilidad de crítico en seis ranuras puede llegar al 100%, momento en el que cada golpe es un golpe "crítico" -- el crítico deja de leerse como un evento aunque siga pagando el 1.5x completo. Por esa razón no se recomiendan valores por encima de 0.5. El tope se limita al rango [0.0, 1.0] independientemente de lo que se configure.
Los golpes críticos se aplican antes de que se dispare el evento de daño, lo que los mantiene como un paso multiplicativo separado de la capa aditiva de bonificaciones de habilidad descrita más abajo, de modo que una bonificación de habilidad grande nunca puede tragarse el crítico.
Daño de bastones y varitas
Las bolas de fuego de bastón, los golpes cuerpo a cuerpo de bastón y los proyectiles de varita de las armas mágicas de FMM no usan la fórmula cuerpo a cuerpo ni la de arco anteriores. Cuando uno de ellos impacta a un elite, 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))
magicSkillLeveles el nivel de la habilidad Bastones o Varitas, capturado al lanzar el ataque (nivel 1 en mundos excluidos de habilidades).baseDamage, el ajuste de habilidad,weaponAdjustment,damageModifierycombatMultiplierson los elementos descritos anteriormente.damageModifierusa el material portador del arma.basePoweres la potencia configurada del ataque de FMM.impactScalevale 1 en un impacto directo; la explosión de un bastón lo escala desde 1 en el centro hasta 0.35 en el borde.scaledCombatRescalevale 1 fuera del combate escalado. Con combate escalado convierte el resultado a la reserva real de salud del jefe, como en Daño de jugador a jefe.- La tirada de crítico también se captura al lanzar el ataque; un golpe crítico multiplica el resultado por 1.5.
Esta ruta no tiene factor de velocidad de ataque, carga, barrido ni pociones. Después, el impacto ejecuta las bonificaciones de habilidad de Bastones o Varitas, como se describe en Bonificaciones de Habilidad en la Canalización de Daño. Contra un objetivo que no es elite, el impacto inflige el daño independiente de FMM multiplicado por el mismo factor de Sharpness/Power.
Límites de los modificadores
Los ajustes ofensivo y defensivo usan 2 ^ (levelDifference / 7.5) sin tope de multiplicador. El antiguo método getLevelModifierFromDifference y sus límites 0.125/8.0 ya no existen. No los apliques a los cálculos actuales.
La salud del jefe sí tiene el límite explicado anteriormente. El nivel 100 es un límite suave de XP y no limita ninguno de los ajustes de habilidad.
Los clamps que sí acotan la salida impulsada por habilidades son el tope de probabilidad de crítico y los dos techos de reducción defensiva, todos descritos en la siguiente sección.
Bonificaciones de Habilidad en la Canalización de Daño
Todo lo anterior describe las curvas sin bonificaciones. Un jugador real tiene además hasta tres bonificaciones de habilidad activas por tipo de arma, y esas se sitúan encima de la fórmula. Si balanceas un encuentro solo contra las curvas, subestimarás sistemáticamente cuánto daño hacen realmente los jugadores.
Los archivos skillbonuses/*.yml incluyen presentación, como nombre, descripción, nivel de desbloqueo, tipo, icono y plantillas de descripción, y las claves de balance baseValue, scalingPerLevel, procChance, cooldownSeconds, maxStacks y stackBonus. Las bonificaciones que consultan su configuración usan esos valores; otras usan constantes del código. Algunas, como Harvester, Legion's Discipline y Depth Charge, limitan lo configurado a una curva aprobada y solo permiten reducir su potencia.
El cálculo configurable de activación usa min(1, procChance + 0.002 * skillLevel). El de enfriamiento aplica un mínimo de la mitad del valor configurado a cooldownSeconds * (1 - 0.005 * skillLevel); los consumidores suelen redondear a segundos enteros con un mínimo de un segundo. Las bonificaciones con fórmulas propias pueden diferir. Consulta Bonificaciones de habilidad.
Dónde se ejecuta la capa ofensiva
Las bonificaciones ofensivas normales se aplican durante el evento de 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
El multiplicador crítico ya está presente cuando se ejecuta el listener de habilidades, por lo que la suma de bonificaciones lo conserva. El daño personalizado/bypass del jugador omite este listener de habilidades de arma para evitar activaciones recursivas. El impacto propio de un bastón o una varita es la excepción: es daño personalizado, pero sigue ejecutando sus bonificaciones de Bastones o Varitas. Las habilidades de clase tienen sus propias reglas.
Las bonificaciones ofensivas se suman
Cada bonificación activa aporta solo su fracción de bonificación, y esas fracciones se suman:
totalMultiplier = 1.0 + (m1 - 1.0) + (m2 - 1.0) + (m3 - 1.0) + ...
Tres bonificaciones de 1.2x cada una producen por tanto 1.6x, no el 1.73x que daría la composición multiplicativa. Esto se aplica de forma uniforme a todos los tipos de arma.
Esto es un cambio respecto al comportamiento anterior, en el que las hachas por sí solas usaban una regla de "gana el mayor": solo se aplicaba la bonificación individual más grande, y cualquier golpe de hacha en el que una habilidad superara 1.5x descartaba silenciosamente el golpe crítico por completo. Hacer funcionar una familia de armas con una regla de acumulación distinta también hacía imposible comparar el daño de las hachas con el de todo lo demás.
La misma suma incluye las penalizaciones del objetivo Hunter's Mark, Death Mark, Judgment, Expose Weakness, Hex Brand y Unravel. Un Riposte preparado actúa por separado: multiplica directamente el daño del evento y después se aplica el multiplicador aditivo combinado.
Consecuencia práctica: un jugador con tres bonificaciones ofensivas bien elegidas está haciendo de forma realista alrededor de 1.4x-2x la curva publicada antes de los procs, y más cuando entra una habilidad con cooldown. El objetivo de diseño de "3 golpes de espada" describe a un jugador sin ninguna bonificación seleccionada.
Las bonificaciones defensivas tienen dos límites
Las bonificaciones de la habilidad de armadura reducen el daño entrante y, a diferencia del lado ofensivo, se componen multiplicativamente -- cada una pasa el daño ya reducido por damage * (1 - reduction). Por eso hay dos límites separados:
| Límite | Valor | Alcance |
|---|---|---|
| Clamp por habilidad | 80% | Acota la reducción de una única habilidad |
| Techo agregado | 85% | Acota todas las fuentes de habilidad combinadas, por golpe |
El clamp por habilidad no basta por sí solo: tres fuentes al 80% cada una se multiplicarían hasta 0.2 x 0.2 x 0.2 = 99.2% de reducción total -- inmunidad efectiva, con cada clamp individual todavía intacto.
El techo agregado cierra eso. Se aplica una vez, justo al final, comparando el daño que entró en la canalización de habilidades con el que salió y negando que la proporción caiga por debajo de 1 - 0.85:
finalDamage = max(damageAfterSkills, incomingDamage * 0.15)
Trabajar sobre la proporción en lugar de sobre una suma acumulada de reducciones es lo que lo hace robusto. Las ramas individuales tienen formas distintas -- algunas multiplican, otras asignan un valor directamente, otras se acumulan, otras leen configuración -- y el orden y la cantidad de contribuyentes son irrelevantes para el resultado. Una construcción defensiva completamente apilada siempre come al menos el 15% de cada golpe entrante.
La negación total queda fuera del límite. Evasion, Last Stand, Spell Mirror, Death's Embrace, Divine Shield y Phoenix Mantle cancelan el evento en vez de aplicar una reducción parcial. El límite del 85% cubre este cálculo de habilidades, no establece un mínimo sobre el golpe original después de pociones, bloqueo, absorción y otros listeners.
Una vez alcanzado el límite agregado, otra reducción no puede disminuir más ese golpe.
Ejemplos resueltos
Los ejemplos de abajo excluyen deliberadamente las bonificaciones de habilidad para que la curva subyacente sea visible. Añade por encima el multiplicador aditivo de habilidad de la sección anterior para obtener números del mundo real.
Ejemplo 1: Espada igualada de Nv25 vs elite de Nv25 (cuerpo a cuerpo)
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
Ejemplo 2: Hacha de Nv25 vs elite de Nv25 (compensación de ráfaga amortiguada)
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
Ejemplo 3: Azada de Nv25 vs elite de Nv25 (factor heredado 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
Ejemplo 4: Arco de Nv20 vs elite de Nv25 con healthMultiplier=2.0 (a distancia, por debajo de nivel)
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)
Herramienta de depuración DamageBreakdown
Ejecuta /em debug como jugador con elitemobs.debug para activar el diagnóstico de combate. Reproduce el golpe y repite el comando para desactivarlo. La fórmula, modo de combate/multiplicador elegido, bloqueo/bypass y resultado del evento aparecen en el chat y el registro del servidor. Busca [EM-Debug: y [EM-Damage: en el registro.
La herramienta interna independiente DamageBreakdown, usada por herramientas de desarrollo, puede mostrar:
- Un desglose completo formateado que muestra todos los niveles, componentes de la fórmula, multiplicadores y el daño final calculado.
- Un resumen compacto de una línea para una referencia rápida en el juego.
- Una comparación de esperado vs real que señala discrepancias mayores del 10%, útil para diagnosticar conflictos de plugins o archivos de jefe mal configurados.
Su resultado reconstruido no mide de forma definitiva el daño final aplicado: impone un mínimo de 1 a la fórmula, omite el multiplicador posterior de habilidades y no reproduce todos los reescalados o cambios de listeners. Una discrepancia no demuestra por sí sola un conflicto de plugins. Para investigar un encuentro real, usa el diagnóstico de la ruta activa y observa el cambio de salud.
Progresión de XP de habilidad
Las habilidades de arma y de armadura suben de nivel ganando XP al matar elite mobs. El sistema de XP usa requisitos de nivel cúbicos para crear una progresión suave con un límite suave más allá del nivel 100.
XP por bajas: mobLevel^2 es el valor inicial antes de multiplicadores del jefe, cuotas de contribución, límites de recompensa por nivel y ventajas. Consulta Sistema de habilidades.
XP para el siguiente nivel:
Para los niveles 1 a 100:
xpToNextLevel = floor(8.5 * L^3)
Para los niveles por encima de 100 (límite suave):
xpToNextLevel = floor(floor(8.5 * L^3) * (1 + ((L - 100)^2 / 100)))
El multiplicador es continuo en el nivel 100, donde vale 1.0, y crece cuadráticamente después. En el nivel 150 vale aproximadamente 26x, lo que dificulta mucho seguir progresando. No hay un máximo fijo de nivel 100: el requisito cúbico se multiplica por el factor cuadrático mostrado.
Mecánicas de combate adicionales
Prevención de muertes de un golpe
La fórmula normal del jefe tiene un límite de salud máxima real menos 1. Con [Alpha] Advanced Combat System activo es max(1, actualMaxHealth - 30) - 1, excluyendo solo sus 30 HP adicionales. Otros modificadores de salud máxima sí cuentan. Se usa la salud máxima, no la actual, así que un jugador herido puede morir de un golpe. El daño bruto puede omitir este límite y los listeners pueden cambiar el resultado después.
Bloqueo con escudo
Si un golpe sin proyectil llega al manejador mientras el jugador bloquea, EliteMobs reduce el daño de la fórmula un 80% por defecto, según blockingDamageReduction en MobCombatSettings.yml. El daño bruto bypass sustituye ese valor reducido. Un proyectil bloqueado se elimina y el manejador termina antes de la fórmula, pero esa rama no cancela ni pone a cero el evento de Bukkit. No garantiza inmunidad a cualquier proyectil o golpe creado por plugins.
Cada bloqueo procesado intenta consumir 5 puntos de durabilidad del escudo; Unbreaking nativo reduce la frecuencia. Se elige el escudo de la mano principal antes que el de la secundaria.
Daño personalizado y absorción
Algunos poderes envían daño bruto. Este sustituye el resultado de la fórmula normal, incluido el límite de un golpe y la reducción del escudo, antes del evento de EliteMobs. Las habilidades defensivas aún pueden reducirlo o cancelarlo. El daño personalizado/bypass del jugador omite la fórmula de armas, los multiplicadores de material/globales y las activaciones de habilidades de arma. Un crítico capturado de un arma mágica o uno garantizado explícitamente por una clase todavía puede aplicarse, y el impacto propio de un bastón o una varita sigue ejecutando sus bonificaciones de arma (consulta Daño de bastones y varitas).
Tras el evento normal de elite a jugador, la absorción actual del jugador se aplica al daño final. Los modificadores vanilla de armadura y resistencia se eliminan porque la fórmula de EliteMobs ya los gestiona. La fórmula de jugador a elite también elimina las reducciones nativas, por lo que la armadura del jefe es cosmética en esa ruta.
Golpes cuerpo a cuerpo rápidos
El limitador de autoclic está activado por defecto. Más de 5 golpes principales a elites en una ventana móvil de un segundo provocan una penalización de 5 segundos en esa ruta. Los ajustes son autoclickerThrottleMaxHitsPerSecond y autoclickerThrottlePenaltySeconds en MobCombatSettings.yml; autoclickerThrottleEnabled lo activa o desactiva. Clics al aire, barridos, proyectiles, espinas y daño personalizado/bypass no cuentan ni pasan por esta comprobación. Reconectarse no elimina una penalización activa.
Bonificación de salud de Armadura
Cada nivel de Armadura por encima de 1 añade +2 HP, un corazón, a la salud máxima. El modificador depende de los ajustes de skills.yml, los mundos excluidos y las reglas de mundos de combate gestionados explicadas anteriormente.
Resumen del escalado por nivel
La siguiente tabla resume los modificadores de nivel antes de aplicar los límites de salud y otros modificadores de combate. Las proporciones de salud del jefe dejan de cumplirse al alcanzar cualquiera de los dos límites.
| Diferencia de Nivel | Modificador de HP del Jefe | Modificador de Daño del Jefe | Dificultad |
|---|---|---|---|
| -10 (jugador sobrenivel) | 0.25x HP | ~0.4x daño | Trivial |
| -5 (jugador sobrenivel) | 0.5x HP | ~0.6x daño | Muy fácil |
| 0 (mismo nivel) | 1.0x HP | 1.0x daño | Equilibrado |
| +5 (jugador por debajo de nivel) | 2.0x HP | ~1.6x daño | Desafiante |
| +10 (jugador por debajo de nivel) | 4.0x HP | ~2.5x daño | Muy difícil |
Combate escalado
El combate escalado simula al jefe con el nivel de habilidad de arma del atacante o de Armadura del defensor. Elimina el nivel almacenado del jefe del escalado de daño normal. El equipo, tipo de arma, bonificaciones, poderes y modificadores de salud todavía diferencian los encuentros entre jugadores. Sirve para elites naturales y ciertos jefes de evento; estos últimos necesitan scaledCombat: true en su archivo.
Diferencias entre combate escalado y normalizado
EliteMobs tiene tres modos de combate:
| Modo | Usado Para | ¿Importa el Nivel? | Clave de Config |
|---|---|---|---|
| Estándar | Mobs básicos sin flags especiales | Sí -- el daño y la salud escalan con el nivel real del mob | damageToEliteMobMultiplierV2 / damageToPlayerMultiplierV2 |
| Normalizado | Jefes de mazmorra y regionales (normalizedCombat: true) | Sí; mismas curvas básicas, con multiplicadores de configuración separados | normalizedDamageToEliteMultiplier / normalizedDamageToPlayerMultiplier |
| Escalado | Elites naturales del mundo superior y jefes de evento (scaledCombat: true o config global) | No -- el jefe se simula al nivel del jugador | scaledDamageToEliteMultiplier / scaledDamageToPlayerMultiplier |
Los ataques estándar y normalizados usan el nivel real del mob. La fórmula exponencial actual ignora los ajustes heredados normalizedBaselineDamageV3 y normalizedRegionalBossBaselineHealthV3. Los ataques escalados sustituyen el nivel por una habilidad del jugador; el nivel almacenado sigue existiendo para otros sistemas.
Cómo funciona
Daño de jefe a jugador
Cuando un jefe de combate escalado daña a un jugador, la fórmula de daño establece el nivel del jefe igual al nivel de habilidad de armadura del jugador:
mobLevel = armorSkillLevel (instead of the boss's actual level)
Esto significa que el ajuste de habilidad se vuelve 1.0 (ya que bossLevel - armorSkillLevel = 0), y el daño depende enteramente del equipo y la habilidad de armadura del jugador -- no del nivel almacenado del mob. El resto de la fórmula (daño base, ajuste de equipo, pociones, etc.) funciona exactamente igual que se describe en las secciones anteriores.
Daño de jugador a jefe
Cuando un jugador ataca a un jefe de combate escalado, la fórmula:
- Simula el jefe al nivel de habilidad de arma del jugador -- trata temporalmente al mob como si fuera del mismo nivel que la habilidad de arma del jugador.
- Ejecuta la fórmula de daño estándar contra ese nivel simulado, produciendo un resultado de "daño contra un mob del mismo nivel".
- Reescala al HP real del jefe -- convierte el daño de la fórmula de un porcentaje del HP del mob simulado al mismo porcentaje del conjunto de HP real del jefe.
simulatedMobLevel = playerWeaponSkillLevel
formulaDamage = playerToEliteDamageFormula(player, eliteEntity at simulatedMobLevel)
simulatedMobHP = baseHPAtSimulatedLevel * bossHealthMultiplier
damagePercentage = formulaDamage / simulatedMobHP
actualDamage = damagePercentage * actualBossMaxHP
Esto elimina el nivel almacenado del cálculo porcentual. Los multiplicadores de salud, armas y habilidades, los límites de salud y los redondeos siguen afectando al número de golpes. Con healthMultiplier: 1.0, la referencia es unos 3 golpes de espada; otras armas siguen su factor de velocidad.
Botín y recompensas
El cálculo de recompensas escaladas usa el nivel de combate del jugador, no el almacenado del mob. Lo usan el botín normal, el de clase, la XP de habilidades y las monedas extra, aplicando después sus propias reglas. Los objetos fijos, las recompensas explícitas, probabilidades, requisitos y límites de nivel siguen vigentes; consulta Tablas de botín y Sistema de habilidades.
Visualización del nivel
Las entidades de combate escalado muestran un símbolo en lugar de un nivel numérico en su placa de nombre, ya que su nivel real es irrelevante para el jugador:
- Entidades escaladas estándar (healthMultiplier 1.0 o inferior): muestra un símbolo de espada (por defecto:
「⚔」) - Entidades escaladas de alta amenaza (healthMultiplier superior a 1.0): muestra un símbolo de calavera (por defecto:
☠)
Estos símbolos se pueden personalizar en MobCombatSettings.yml mediante scaledStandardLevelSymbol y scaledHighThreatLevelSymbol.
Activar el combate escalado
Para elites naturales, configuración global
En MobCombatSettings.yml:
useScaledCombatForNaturalElites: true
Está activado por defecto para elites naturales en mundos válidos, no solo en la dimensión Overworld. En mundos con useDistanceBasedNaturalEliteLevels, los elites naturales usan su nivel real aunque este ajuste sea true. No afecta a jefes normalizados y un jefe personalizado/de evento no lo hereda simplemente por aparecer al aire libre.
Para jefes personalizados individuales
En un archivo de configuración de Jefe Personalizado:
scaledCombat: true
Esto fuerza a un jefe personalizado específico a usar el combate escalado independientemente del ajuste global. Útil para jefes de evento o encuentros personalizados del mundo superior que deberían sentirse igualmente justos para todos los jugadores.
Nota: Si un jefe tiene normalizedCombat: true (o es un jefe regional/instanciado con la normalización activada globalmente), el combate normalizado tiene prioridad y el jefe no usará el combate escalado -- a menos que se establezca explícitamente scaledCombat: true en el archivo del jefe, en cuyo caso gana el combate escalado.
Claves de configuración
Las siguientes claves de MobCombatSettings.yml controlan el comportamiento del combate escalado:
| Clave | Por defecto | Descripción |
|---|---|---|
useScaledCombatForNaturalElites | true | Activa el combate escalado para elites naturales, salvo los que usan niveles por distancia |
scaledDamageToEliteMultiplier | 1.0 | Multiplicador global del daño del jugador a los jefes de combate escalado |
scaledDamageToPlayerMultiplier | 1.0 | Multiplicador global del daño de los jefes de combate escalado a los jugadores |
scaledStandardLevelSymbol | 「⚔」 | Símbolo mostrado en la placa de nombre para las entidades escaladas estándar |
scaledHighThreatLevelSymbol | ☠ | Símbolo mostrado para las entidades escaladas con healthMultiplier superior a 1.0 |
useRecommendedHealthScaling | true | Usar el escalado de salud exponencial de EliteMobs 10 para los elites naturales (false = valores lineales heredados, ver más abajo) |
Cuándo usar cada modo de combate
- Combate normalizado (
normalizedCombat: true): Para mazmorras, instancias y jefes regionales donde quieres un control preciso sobre la dificultad y el jefe tiene un nivel fijo que se espera que los jugadores igualen. - Combate escalado (
scaledCombat: trueo ajuste global): Para simular niveles de habilidad igualados en ataques normales. El equipo y las habilidades siguen afectando a la dificultad. - Combate estándar (ningún flag): Para mobs donde el nivel bruto debería determinar directamente la dificultad, como los elites escalados por distancia cerca del spawn.
Escalado de salud heredado (useRecommendedHealthScaling: false)
Cuando useRecommendedHealthScaling se establece en false en MobCombatSettings.yml, los elite mobs naturales (no los jefes de mazmorra o regionales) usan una fórmula heredada simplificada en lugar del escalado exponencial:
baseDamage = level * 2
mobHealth = baseDamage * 3 (TARGET_HITS_TO_KILL_MOB)
Aquí level es como mínimo 1. La fórmula sustituye la salud de elites naturales y el daño base del jugador contra ellos, no la fórmula de Armadura para el daño a jugadores. Sus valores lineales se acercan a EliteMobs 9: son mayores que los exponenciales en algunos niveles bajos y mucho menores en los altos. La salud final conserva el multiplicador y el límite del servidor. Los jefes regionales personalizados no se ven afectados.
Usar estos datos para mazmorras
NOTA: ¡ESTO ASUME QUE ESTÁS USANDO LOS VALORES DE normalizedCombat! Esos valores se hicieron específicamente para balancear mazmorras más fácilmente.
Parte de la dificultad de un jefe es hacer que tenga la salud y el daño apropiados para el encuentro. Sin embargo, ten en cuenta que esto es solo una parte de ello, y que los poderes son igual de importantes.
Lo siguiente se presenta en el formato correcto para el archivo del Jefe Personalizado.
Cálculos rápidos
Con el sistema de escalado exponencial, healthMultiplier y damageMultiplier escalan directamente los valores base:
-
Un
healthMultiplierde 1.0 significa que el jefe necesita aproximadamente 3 golpes de espada para ser matado por un jugador del mismo nivel. Otras armas cuerpo a cuerpo varían según el factor de velocidad de ataque: las armas de ráfaga amortiguada como las hachas, mazas y tridentes cuerpo a cuerpo necesitan menos golpes que las espadas, mientras que las azadas necesitan más golpes porque conservan el antiguo factor de arma rápida. Un multiplicador de 2.0 duplica la salud, 0.5 la reduce a la mitad, y así sucesivamente. -
Un
damageMultiplierde 1.0 significa que el jefe mata a un jugador del mismo nivel con el equipo adecuado en aproximadamente 5 golpes. Los multiplicadores más altos hacen al jefe más letal, los más bajos lo hacen más seguro.
Estas estimaciones requieren equipo y habilidades del mismo nivel y margen bajo el límite final de salud. healthMultiplier: 2.0 solo duplica la salud base mientras el resultado cabe bajo el límite; no garantiza seis golpes de espada a cualquier nivel.
Ten en cuenta que los jugadores tienden a priorizar las armas, y a menudo acaban con una armadura mucho peor que sus armas. A menos que diseñes tipos de arenas muy específicos con combate a distancia, probablemente no quieras infligir mucho daño por golpe. ¡Haz pruebas de juego con tu contenido!
Estos recuentos tampoco incluyen:
- Las bonificaciones de habilidad. Todos los recuentos anteriores asumen cero bonificaciones activas. Un jugador con tres bonificaciones ofensivas mata notablemente más rápido, y un jugador con tres defensivas sobrevive notablemente más (hasta el techo agregado del 85%). Trata los números como un suelo del poder del jugador, no como una predicción.
- La salud de Advanced Combat. Sus 30 HP extra aumentan la supervivencia sin aumentar el daño base recibido.
- El techo de salud máxima. Por encima de los niveles listados en El techo de salud máxima de Minecraft,
healthMultiplierdeja de aumentar la HP en absoluto. El preajuste de jefe de mundo en particular se limita a partir del nivel 23 en un servidor por defecto.
Crear un mob de mazmorra promedio
Con el escalado de normalizedCombat, puedes aplicar una configuración muy minimalista:
normalizedCombat: true
healthMultiplier: 1.0 #~3 sword hits to slay
damageMultiplier: 1.0 #survives ~5 hits
Los dos multiplicadores valen 1.0 por defecto y pueden omitirse. Conserva normalizedCombat: true salvo que la configuración regional, de instancia o arena ya normalice al jefe.
Crear grupos de enemigos menores
Los grupos de basura son numerosos pero no muy peligrosos:
normalizedCombat: true
healthMultiplier: 0.7 #~2 sword hits to slay
damageMultiplier: 0.5 #survives ~10 hits
Crear refuerzos
Los refuerzos deberían morir muy fácilmente, pero suponer un peligro en cuanto a daño (estos valores se recomiendan para 4+ entidades cuerpo a cuerpo, el uso real puede variar):
normalizedCombat: true
healthMultiplier: 0.25 #~1 sword hit to slay
damageMultiplier: 0.6 #survives ~8 hits
Crear minijefes
Los minijefes deberían mantenerse firmes y suponer un desafío de mecánicas para los jugadores. Debería ser una prueba de habilidad que dure un rato, pero no algo extremadamente letal:
normalizedCombat: true
healthMultiplier: 3.0 #~9 sword hits to slay
damageMultiplier: 1.2 #survives ~4 hits
Crear jefes
Los jefes son un verdadero desafío, la culminación de una acumulación en una mazmorra y una verdadera prueba de habilidad con todo en juego. Los encuentros deberían ser largos y la muerte debería ser una amenaza presente.
normalizedCombat: true
healthMultiplier: 7.0 #~21 sword hits to slay
damageMultiplier: 1.4 #survives ~3.5 hits
Crear jefes de mundo
Los jefes de mundo son peligrosos, pero sobre todo tienen mucha salud e invocan muchos refuerzos / tienen muchos ataques de área de efecto. Estos están pensados para que los peleen grupos grandes de jugadores durante la mayor cantidad de tiempo que debería durar un encuentro de elite. No son muy letales, pero tienen muchas mecánicas que pueden abrumar a los jugadores poco preparados.
normalizedCombat: true
healthMultiplier: 40.0 #~120 sword hits to slay
damageMultiplier: 1.5 #survives ~3 hits
Estos son solo valores recomendados aproximados y cualquier valor final debería ajustarse en torno a los propios encuentros.