Saltar al contenido principal

Crear Refuerzos Personalizados

Usa entradas de refuerzo en la lista powers de un boss para invocar otros bosses personalizados durante el combate.

Pasos para crear un boss personalizado:​

  1. Crea tu boss personalizado principal que invocará a tu boss personalizado
  2. Crea un boss personalizado para los refuerzos. Ten en cuenta que los bosses personalizados pueden ser más fuertes que los mobs vanilla, pero también pueden ser más débiles.
  3. Añade la línea de refuerzo correcta al archivo de configuración

Crear la línea de refuerzo​

Supongamos que tienes un boss personalizado con este formato:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua

Y quieres añadirle refuerzos. Así es como podría verse uno de esos refuerzos:

- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

Y para hacerlo válido, añádelo a la lista de powers:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

El refuerzo ya está añadido a la entidad del boss. Sin embargo, como puedes ver, hay varias opciones aquí que puedes personalizar. Vamos a verlas.

Todas las opciones de Refuerzo Personalizado​

Consejo: También puedes usar EliteScript para invocar refuerzos, más sobre eso aquí.

summonType​

Este es un campo obligatorio. Establece cuándo debe aparecer el refuerzo.

KeyValuesDefault
summonTypeSpecial [1]none (mandatory)
Ejemplo
summonType: ON_HIT

Special [1]​

KeyDescription
ONCEIntenta un lote con cada golpe de jugador que cumpla los requisitos hasta superar la tirada de probabilidad. Consulta los requisitos más abajo.
ON_HITIntenta un lote con cada golpe de jugador que cumpla los requisitos, sujeto a chance.
ON_COMBAT_ENTERAparece el refuerzo cuando el boss entra en combate (1)
ON_COMBAT_ENTER_PLACE_CRYSTALEspecial: esto es específicamente para colocar cristales del End en las peleas contra dragones cuando el boss entra en combate (1)
ON_DEATHAparece el refuerzo cuando el boss muere
GLOBALPrograma amount refuerzos inmediatamente y cada 10 segundos mientras siga activo el ciclo de aparición del boss; no requiere entrar en combate. Cada refuerzo usa customSpawn para elegir jugador y ubicación en el mundo del boss. Cada invocación de un lote se omite en cuanto el número global registrado alcanza 30 veces los jugadores de ese mundo, así que el número no supera ese límite. Requiere customSpawn.

(1) La entrada en combate puede deberse a recibir daño de un jugador, dañarlo o adquirirlo como objetivo. Estos refuerzos pueden activarse otra vez si el boss sale y vuelve a entrar en combate; no son entradas ONCE.

ONCE registra la entrada analizada actual, no todo el encuentro con varias fases. Una transición que vuelva a analizar los poderes crea entradas nuevas. Cuando el lote llega al intento de spawn, un bloqueo del spawn puede consumir igualmente ONCE; no garantiza que haya aparecido un refuerzo vivo.


filename​

Este campo obligatorio indica qué refuerzo aparece. La excepción es summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL, que no requiere archivo porque los cristales del End no son elites.

KeyValuesDefault
filenameFilenamenone
Ejemplo
filename: test_boss.yml

Importante: filename debe referirse a un archivo de boss existente en custombosses. Una referencia no válida impide generar el refuerzo y produce una advertencia en la consola. Una entrada sin filename (salvo una entrada de cristal), con un chance que no sea un número finito o con un location que no sean tres números finitos se descarta cada vez que se crea el boss, con una advertencia Invalid reinforcement que indica el archivo del boss.


Viabilidad mínima

summonType: SUMMON_TYPE y filename: filename.yml son suficientes por sí solos para crear un Refuerzo Personalizado. El siguiente ejemplo lo demuestra.

Nota: Las claves no distinguen mayúsculas y minúsculas: funcionan summonType y SUMMONTYPE. Los valores enumerados, como ON_HIT, deben usar exactamente las mayúsculas indicadas. Los nombres de archivo deben coincidir con las definiciones referenciadas.

Ejemplo
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

Sin embargo, si quieres o necesitas algo más complejo, sigue leyendo a continuación para ver qué más puedes hacer con estas opciones.


chance​

Este campo opcional establece una tirada de probabilidad para todo el lote. Se aplica a ONCE, ON_HIT, ON_COMBAT_ENTER y ON_DEATH, pero no a GLOBAL ni a ON_COMBAT_ENTER_PLACE_CRYSTAL. En ONCE, fallar la tirada permite reintentar en otro golpe que cumpla los requisitos.

KeyValuesDefault
chanceDouble1.0
Ejemplo
chance: 0.5

Representa un 50% de probabilidad de generar un Refuerzo Personalizado.

Usa un chance finito entre 0.0 y 1.0. Para ON_HIT y una entrada ONCE sin consumir, el evento de daño del jugador debe estar sin cancelar, el boss debe tener entidad viva con IA activa, sus poderes no deben estar suprimidos y el daño del evento debe ser al menos 3. Cada golpe válido realiza una tirada independiente para todo el lote.

Refuerzos por golpe y tiempos de reutilización

ON_HIT y ONCE ignoran los tiempos de reutilización del poder y del boss, incluidos los iniciados por Cooldowns.global de EliteScript o cooldowns.set_global(...) de Lua. Siguen sujetos a los requisitos anteriores. Ajusta las invocaciones repetidas mediante chance y amount.

Diagnosticar un refuerzo que no aparece

Activa /em debug y golpea al boss. Los mensajes [CustomSummon] muestran rechazos del golpe, fallos de probabilidad, ubicaciones calculadas y si un spawn normal produjo una entidad viva. Los refuerzos regionales se programan para inicializarse después. La supresión de poderes muestra actualmente el rechazo genérico, sin explicar la supresión. Estos mensajes están desactivados cuando debug está apagado.


location​

location: x,y,z es un campo de configuración opcional que permite a los administradores desplazar la ubicación del refuerzo un número de bloques. Estos son los conceptos clave que necesitas saber sobre esta opción:

La ubicación de desplazamiento es relativa. Esto significa que location: 0,10,0 generará un boss exactamente 10 bloques por encima del boss, y no en las coordenadas del mundo 0,10,0.

La ubicación relativa es diferente para los bosses regionales. Los bosses regionales siempre usarán su punto de aparición como origen para la ubicación relativa, lo que significa que si sabes dónde está el punto de aparición del boss y cuentas los bloques, puedes hacer que los bosses de refuerzo aparezcan en ubicaciones específicas. La guarida del Binder of Worlds se basa en esto para generar a los bosses de la torre de desafío en posiciones de bloque extremadamente específicas, independientemente de dónde esté el boss dragón.

Los bosses aparecerán dentro de bloques si te equivocas al medir las distancias.

KeyValuesDefault
locationStringnone
Ejemplo
location: 0,10,0

Para un Boss Personalizado no regional, generará el refuerzo exactamente 10 bloques por encima del boss, independientemente de dónde esté.

Para un Boss Personalizado regional, generará el refuerzo exactamente 10 bloques por encima del punto de aparición del boss regional, independientemente de dónde esté el boss.

Nota importante: ¡Este es un campo obligatorio específicamente para summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL!


lightningRod​

Solo se usa con summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Mientras el boss y el cristal sean válidos, inicia un ataque inmediatamente y cada cinco segundos. Cada ataque muestra partículas de aviso durante unos tres segundos y luego crea un rayo y una bola de fuego explosiva descendente. Usa desplazamientos X/Z de -15 a 14 a la altura del cristal; no proyecta el punto sobre el suelo. El cristal se marca como elite y se registra como refuerzo; no hereda un objetivo de combate de mob.

No se puede usar con los otros Refuerzos Personalizados, ya que estos deberían depender de powers para este tipo de habilidades.

KeyValuesDefault
lightningRodBooleanfalse
Ejemplo
lightningRod: false

inheritAggro​

Es un campo de configuración opcional que hace que los Refuerzos Personalizados hereden los niveles de amenaza del boss.

Copia la tabla de amenaza del invocador para que los refuerzos puedan elegir su objetivo de mayor amenaza. Esta también incluye curación y provocaciones; no es una simple clasificación de daño. No copia el daño ni la contribución a recompensas.

KeyValuesDefault
inheritAggroBooleanfalse
Ejemplo
inheritAggro: false

amount​

Establece el número de bosses personalizados de un lote exitoso. Usa un entero positivo. El tipo de cristal coloca siempre un cristal por entrada e ignora amount.

KeyValuesDefault
amountInteger1
Ejemplo
amount: 1

spawnNearby​

Es un campo de configuración opcional que establece si el Refuerzo Personalizado debe aparecer cerca en lugar de encima del boss o en una ubicación relativa específica.

Prueba hasta 30 posiciones con desplazamientos enteros X/Z de -15 a 14 alrededor de la ubicación calculada, incluido el desplazamiento location. Cada intento busca hacia arriba desde esa Y, hasta dos bloques por debajo del límite de construcción del mundo, dos bloques de aire sobre un bloque no atravesable. Si todos fallan, usa la ubicación calculada original. Esta búsqueda no aplica los filtros de distancia a jugadores, luz ni mundo de Custom Spawn; siguen aplicándose las protecciones normales de spawn del boss.

KeyValuesDefault
spawnNearbyBooleanfalse
Ejemplo
spawnNearby: false

inheritLevel​

Es un campo de configuración opcional que establece si el Refuerzo Personalizado debe heredar el nivel del Boss Personalizado al que está reforzando.

KeyValuesDefault
inheritLevelBooleanfalse
Ejemplo
inheritLevel: false

customSpawn​

Es un campo de configuración que solo se usa para los refuerzos globales. Usa los ajustes de spawn personalizado para establecer dónde podrán aparecer los refuerzos.

Usa las comprobaciones de superficie, luz, altura y ubicación de Spawns Personalizados, incluidos su filtro de biomas y el comportamiento de espera horaria que se describe allí. Los refuerzos globales eligen directamente entre todos los jugadores del mundo de aparición del invocador. Omiten las comprobaciones normales de datos cargados, ValidWorlds.yml, validWorlds, validWorldEnvironments, instancia y regla de spawn de mobs. La ruta global usa filename, amount y customSpawn; no aplica chance, location, spawnNearby, inheritAggro ni inheritLevel.

KeyValuesDefault
customSpawnFilenamenone
Ejemplo
customSpawn: normal_surface_spawn.yml

difficultyID​

Restringe el refuerzo a dificultades de mazmorra instanciada. Acepta un nombre, un ID numérico o una lista de ambos; consulta la coincidencia de dificultades.

ClaveValoresPredeterminado
difficultyIDString o lista de cadenasnone

Si el boss tiene una mazmorra instanciada con dificultad activa y el filtro no coincide, se descarta toda la entrada antes de analizarla. Un filtro explícitamente vacío o inválido no coincide con ninguna dificultad. Omite la clave para no restringir la entrada. Fuera de una instancia asociada a una mazmorra, este filtro no tiene efecto.

Ejemplo
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic

Armando un gran refuerzo​

Vamos a crear un refuerzo de ejemplo usando la mayoría de los campos anteriores:

- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true

Esto hace lo siguiente:

  • Crea un Refuerzo Personalizado
  • El Refuerzo Personalizado aparecerá cuando el Boss Personalizado entre en combate (summonType: ON_COMBAT_ENTER)
  • El Refuerzo Personalizado invocado será el de test_boss.yml (filename: test_boss.yml)
  • El refuerzo usa la búsqueda de suelo descrita en spawnNearby, centrada en el boss en este ejemplo (spawnNearby: true).
  • El refuerzo copia la tabla de amenaza del invocador para seleccionar objetivo (inheritAggro: true).
  • Independientemente del ajuste en test_boss.yml, el Refuerzo Personalizado tendrá el mismo nivel que el Boss Personalizado al que está reforzando (inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

Esto hace lo siguiente:

  • Crea un Refuerzo Personalizado
  • El Refuerzo Personalizado será un Cristal del End que se coloca cuando comienza el combate (summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL)
  • El cristal crea repetidamente ataques retardados de rayos y bolas de fuego con desplazamientos X/Z cercanos (lightningRod: true).
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true

Esto hace lo siguiente:

  • Crea un Refuerzo Personalizado
  • El Refuerzo Personalizado aparecerá cuando el boss muera (summonType: ON_DEATH)
  • El Refuerzo Personalizado invocado será el de revenge_minion.yml (filename: revenge_minion.yml)
  • Aparecerán tres refuerzos (amount: 3)
  • Los refuerzos usan la búsqueda de suelo alrededor del lugar de la muerte (spawnNearby: true).

Ahora para aplicar esto al Boss Personalizado:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

¡Y listo! Aquí tienes algunos consejos más:

  • Los campos se pueden establecer en cualquier orden, ¡aunque se recomienda tener siempre summonType primero!
  • Para contenido nuevo, usa las entradas de mapa YAML mostradas aquí en lugar de los formatos de cadena antiguos summon: o summonable:. Esas cadenas se siguen cargando: EliteMobs las convierte en memoria y deja el archivo del boss tal como está escrito. Una cadena antigua con campos ausentes, vacíos o repetidos se descarta con una advertencia.