Tiempos de Reutilización de Elite Script
Los tiempos de reutilización (cooldowns) establecen el tiempo que debe transcurrir antes de que el jefe pueda volver a ejecutar tanto el mismo script como cualquier otro poder*.
- nota: algunos poderes no se ven afectados actualmente por los tiempos de reutilización.
Ubicación de la 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 funcionan todas).
Nota sobre las unidades: Todos los valores de tiempo de reutilización se especifican en ticks. En Minecraft, hay 20 ticks por segundo, por lo que:
- 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 toman el valor predeterminado de 0, lo que significa que el script omite por completo el sistema de tiempos de reutilización.
Omisión del tiempo de reutilización
Los scripts sin una sección Cooldowns, o con local y global establecidos ambos en 0, omitirán por completo el sistema de tiempos de reutilización. Esto permite comportamientos activados por eventos que deben ejecutarse siempre, independientemente del estado de tiempo de reutilización del jefe.
Ejemplo:
eliteScript:
AlwaysTeleportOnLowHealth:
Events:
- EliteMobEnterCombatEvent
Actions:
- action: TELEPORT
Target:
targetType: SELF_SPAWN
# No Cooldowns section - script always executes when event fires
Los tiempos de reutilización tienen dos valores:
local
local establece el tiempo, en ticks, antes de que el mismo script pueda volver a ocurrir. Ejemplo:
Ejemplo
local: 60
Establece que el poder pueda volver a ejecutarse en 3 segundos.
global
global establece el tiempo, en ticks, antes de que cualquier otro script o poder pueda volver a ocurrir[1]. Ejemplo:
Ejemplo
global: 20
Establece que todos los demás poderes no puedan iniciarse durante 1 segundo.
[1] Nota: Esto se aplica a las implementaciones de poderes antiguas (no a los EliteScripts). Todos los poderes basados en EliteScript admiten correctamente los tiempos de reutilización globales. Algunos de los poderes más antiguos no se ven afectados por esto actualmente; es un trabajo en curso.
Nota: ¡al hacer que el tiempo de reutilización local sea más largo y el tiempo de reutilización global más corto, puedes garantizar que el jefe alterne entre sus poderes disponibles! Nunca hagas que el tiempo de reutilización global sea 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, debes 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 admiten la aleatorización usando la 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 para que sea aleatoriamente entre 40 y 80 ticks (2-4 segundos) y el tiempo de reutilización 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 reutilización.
Ejecutar scripts una sola vez con tiempos de reutilización
Para asegurarte de que los scripts se activen solo una vez mientras sigues usando un Evento que puede ocurrir varias veces durante una pelea, 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 # Optional: Prevent other powers for 1 second
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 rara vez dura tanto, esto hace que efectivamente 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 se ejecuten otros poderes.
Solución de problemas
Claves de tiempo de reutilización no vá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)