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:
- Crea tu boss personalizado principal que invocará a tu boss personalizado
- 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.
- 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.
| Key | Values | Default |
|---|---|---|
summonType | Special [1] | none (mandatory) |
Ejemplo
summonType: ON_HIT
Special [1]
| Key | Description |
|---|---|
ONCE | Intenta un lote con cada golpe de jugador que cumpla los requisitos hasta superar la tirada de probabilidad. Consulta los requisitos más abajo. |
ON_HIT | Intenta un lote con cada golpe de jugador que cumpla los requisitos, sujeto a chance. |
ON_COMBAT_ENTER | Aparece el refuerzo cuando el boss entra en combate (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | Especial: esto es específicamente para colocar cristales del End en las peleas contra dragones cuando el boss entra en combate (1) |
ON_DEATH | Aparece el refuerzo cuando el boss muere |
GLOBAL | Programa 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.
| Key | Values | Default |
|---|---|---|
filename | Filename | none |
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.
| Key | Values | Default |
|---|---|---|
chance | Double | 1.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.
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.
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.
| Key | Values | Default |
|---|---|---|
location | String | none |
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.
| Key | Values | Default |
|---|---|---|
lightningRod | Boolean | false |
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.
| Key | Values | Default |
|---|---|---|
inheritAggro | Boolean | false |
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.
| Key | Values | Default |
|---|---|---|
amount | Integer | 1 |
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.
| Key | Values | Default |
|---|---|---|
spawnNearby | Boolean | false |
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.
| Key | Values | Default |
|---|---|---|
inheritLevel | Boolean | false |
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.
| Key | Values | Default |
|---|---|---|
customSpawn | Filename | none |
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.
| Clave | Valores | Predeterminado |
|---|---|---|
difficultyID | String o lista de cadenas | none |
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
summonTypeprimero! - Para contenido nuevo, usa las entradas de mapa YAML mostradas aquí en lugar de los formatos de cadena antiguos
summon:osummonable:. 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.