Saltar al contenido principal

Tiempos de Enfriamiento de Elite Script

Los tiempos de enfriamiento establecen la cantidad de tiempo que debe pasar antes de que el jefe sea elegible para hacer tanto el mismo script como cualquier otro poder*.

  • nota: algunos poderes actualmente no se ven afectados por los tiempos de enfriamiento.

Ubicación de Configuración

Los tiempos de enfriamiento se configuran dentro de la sección Cooldowns de un elite script:

eliteScript:
ScriptName:
Events:
- [configuración del evento]
Actions:
- [configuración de la acción]
Cooldowns:
local: [valor o rango]
global: [valor o rango]

Nota: Las claves de configuración no distinguen entre mayúsculas y minúsculas (local, Local, LOCAL todos funcionan).

Nota sobre Unidades: Todos los valores de tiempo de enfriamiento se especifican en ticks. En Minecraft, hay 20 ticks por segundo, entonces:

  • 20 ticks = 1 segundo
  • 60 ticks = 3 segundos
  • 100 ticks = 5 segundos
  • 99999 ticks ≈ 83 minutos

Valores Predeterminados

Si se omite la sección Cooldowns, tanto local como global se establecen en 0 por defecto, lo que significa que el script omite completamente el sistema de tiempo de enfriamiento.

Omisión de Tiempo de Enfriamiento

Los scripts sin una sección Cooldowns, o con tanto local como global establecidos en 0, omitirán completamente el sistema de tiempo de enfriamiento. Esto permite comportamientos activados por eventos que siempre deben ejecutarse independientemente del estado de tiempo de enfriamiento del jefe.

Ejemplo:

eliteScript:
AlwaysTeleportOnLowHealth:
Events:
- EliteMobEnterCombatEvent
Actions:
- action: TELEPORT
Target:
targetType: SELF_SPAWN
# Sin sección Cooldowns - el script siempre se ejecuta cuando el evento se dispara

Los tiempos de enfriamiento tienen dos valores:

local

local establece el tiempo, en ticks, antes de que el mismo script pueda ocurrir de nuevo. Ejemplo:

Ejemplo

local: 60

Establece el poder para poder ejecutarse de nuevo en 3 segundos.

global

global establece el tiempo, en ticks, antes de que cualquier otro script o poder pueda ocurrir de nuevo[1]. Ejemplo:

Ejemplo

global: 20

Establece todos los demás poderes para que no puedan iniciar durante 1 segundo.

[1] Nota: Esto se aplica a las implementaciones de poderes heredados (no EliteScripts). Todos los poderes basados en EliteScript soportan correctamente los tiempos de enfriamiento globales. Algunos de los poderes más antiguos actualmente no se ven afectados por esto, es un trabajo en progreso.

Nota: ¡haciendo el tiempo de enfriamiento local más largo y el tiempo de enfriamiento global más corto, puedes garantizar que el jefe alternará entre sus poderes disponibles! Nunca hagas el tiempo de enfriamiento global más largo, y recomiendo dejar al menos un segundo de tiempo de enfriamiento local para dar a otros poderes la oportunidad de activarse.

Además, si tu poder tiene una duración específica durante la cual está activo, deberías usar este sistema para prevenir que otros poderes se ejecuten simultáneamente y potencialmente arruinen tu poder.

Aleatorización

Tanto los tiempos de enfriamiento local como global soportan aleatorización usando sintaxis de rango. Esto permite que las duraciones de tiempo de enfriamiento varíen, añadiendo imprevisibilidad al comportamiento del jefe.

Ejemplo:

Cooldowns:
local: 40-80
global: 10-30

Establece el tiempo de enfriamiento local para que sea aleatoriamente entre 40 y 80 ticks (2-4 segundos) y el tiempo de enfriamiento global para que sea aleatoriamente entre 10 y 30 ticks (0.5-1.5 segundos).

Nota: Los valores se seleccionan aleatoriamente cada vez que se aplica el tiempo de enfriamiento.

Ejecutar Scripts Una Vez con Tiempos de Enfriamiento

Para asegurar que los scripts se activen solo una vez mientras aún usan un Evento que puede ocurrir múltiples veces durante una pelea, establece el tiempo de enfriamiento local a un número alto, como 99999. Este ejemplo demuestra el concepto:

Ejemplo
eliteScript:
SetMeOnFireOnlyOnce:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 60
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 99999
# global: 20 # Opcional: Prevenir otros poderes por 1 segundo

En este escenario, el EliteMobDamagedByPlayerEvent activa la acción SET_ON_FIRE. Sin tiempos de enfriamiento, la acción se activaría cada vez que el jugador golpea al mob.

Sin embargo, con un tiempo de enfriamiento local establecido en 99999, la acción solo se activará cada 99999 ticks (83 minutos). Ya que el combate rara vez dura tanto tiempo, esto efectivamente hace que el script se ejecute solo una vez por encuentro de combate.

El tiempo de enfriamiento global es opcional en este caso - si se omite o se establece en 0, no evitará que otros poderes se ejecuten.

Solución de Problemas

Claves de Tiempo de Enfriamiento Inválidas

Si usas una clave no reconocida en la sección Cooldowns, aparecerá una advertencia en los registros del servidor:

Failed to parse cooldown entry for script name [ScriptName] in config file [FileName]

Las claves válidas son: local, global (no distinguen entre mayúsculas y minúsculas)