Tiempos de Reutilización de Elite Script
Los tiempos de reutilización establecen la cantidad de tiempo que debe pasar antes de que el jefe pueda ejecutar tanto el mismo script como cualquier otro poder*.
- Nota: algunos poderes actualmente no se ven afectados por los tiempos de reutilización.
Ubicación de Configuración
Los tiempos de reutilización se configuran dentro de la sección Cooldowns de un elite script:
eliteScript:
ScriptName:
Events:
- [event configuration]
Actions:
- [action configuration]
Cooldowns:
local: [value or range]
global: [value or range]
Nota: Las claves de configuración no distinguen entre mayúsculas y minúsculas (local, Local, LOCAL todas funcionan).
Nota sobre Unidades: Todos los valores de tiempo de reutilización se especifican en ticks. En Minecraft, hay 20 ticks por segundo, por lo tanto:
- 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 el sistema de tiempos de reutilización por completo.
Omisión de Tiempo de Reutilización
Los scripts sin una sección Cooldowns, o con ambos local y global establecidos en 0, omitirán completamente el sistema de tiempos de reutilización. Esto permite comportamientos activados por eventos que siempre deben ejecutarse independientemente del estado de tiempo de reutilización 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 reutilización tienen dos valores:
local
local establece el tiempo, en ticks, antes de que el mismo script pueda ejecutarse de nuevo. Ejemplo:
Ejemplo
local: 60
Permite que el poder se ejecute de nuevo después de 3 segundos.
global
global establece el tiempo, en ticks, antes de que cualquier otro script o poder pueda ejecutarse de nuevo[1]. Ejemplo:
Ejemplo
global: 20
Impide que todos los demás poderes puedan iniciarse 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 reutilización globales. Algunos de los poderes más antiguos actualmente no se ven afectados por esto, es un trabajo en progreso.
Nota: al hacer el tiempo de reutilización local más largo y el global más corto, ¡puedes garantizar que el jefe alternará entre sus poderes disponibles! Nunca hagas el tiempo de reutilización global más largo, y recomiendo dejar al menos un segundo de tiempo de reutilización 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 evitar que otros poderes se ejecuten simultáneamente y potencialmente arruinen tu poder.
Aleatorización
Tanto los tiempos de reutilización local como global soportan aleatorización usando sintaxis de rango. Esto permite que las duraciones de los tiempos de reutilización varíen, añadiendo imprevisibilidad al comportamiento del jefe.
Ejemplo:
Cooldowns:
local: 40-80
global: 10-30
Establece el tiempo de reutilización local aleatoriamente entre 40 y 80 ticks (2-4 segundos) y el global 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 reutilización.
Ejecutar Scripts Una Sola Vez con Tiempos de Reutilización
Para asegurar que los scripts se activen solo una vez mientras se usa un Evento que puede ocurrir múltiples veces durante un combate, establece el tiempo de reutilización local en 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 durante 1 segundo
En este escenario, el EliteMobDamagedByPlayerEvent activa la acción SET_ON_FIRE. Sin tiempos de reutilización, la acción se activaría cada vez que el jugador golpea al mob.
Sin embargo, con un tiempo de reutilización local establecido en 99999, la acción solo se activará una vez cada 99999 ticks (83 minutos). Dado que el combate raramente dura tanto, esto efectivamente hace que el script se ejecute solo una vez por encuentro de combate.
El tiempo de reutilización global es opcional en este caso - si se omite o se establece en 0, no impedirá que otros poderes se ejecuten.
Solución de Problemas
Claves de Tiempo de Reutilización 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 (sin distinción de mayúsculas)