Cooldowns do Elite Script
Os cooldowns definem a quantidade de tempo que deve passar antes que o boss seja elegível para executar tanto o mesmo script quanto qualquer outro poder*.
- nota: alguns poderes atualmente não são afetados por cooldowns.
Localização de Configuração
Os cooldowns são configurados dentro da seção Cooldowns de um elite script:
eliteScript:
ScriptName:
Events:
- [configuração do evento]
Actions:
- [configuração da ação]
Cooldowns:
local: [valor ou intervalo]
global: [valor ou intervalo]
Nota: As chaves de configuração não diferenciam maiúsculas de minúsculas (local, Local, LOCAL todos funcionam).
Nota sobre Unidades: Todos os valores de cooldown são especificados em ticks. No Minecraft, existem 20 ticks por segundo, então:
- 20 ticks = 1 segundo
- 60 ticks = 3 segundos
- 100 ticks = 5 segundos
- 99999 ticks ≈ 83 minutos
Valores Padrão
Se a seção Cooldowns for omitida, tanto local quanto global são definidos como 0 por padrão, o que significa que o script ignora completamente o sistema de cooldown.
Desvio de Cooldown
Scripts sem uma seção Cooldowns, ou com local e global definidos como 0, irão ignorar completamente o sistema de cooldown. Isso permite comportamentos acionados por eventos que devem sempre ser executados independentemente do estado de cooldown do boss.
Exemplo:
eliteScript:
AlwaysTeleportOnLowHealth:
Events:
- EliteMobEnterCombatEvent
Actions:
- action: TELEPORT
Target:
targetType: SELF_SPAWN
# Sem seção Cooldowns - o script sempre executa quando o evento dispara
Os cooldowns têm dois valores:
local
local define o tempo, em ticks, antes que o mesmo script possa acontecer novamente. Exemplo:
Exemplo
local: 60
Define que o poder poderá ser executado novamente após 3 segundos.
global
global define o tempo, em ticks, antes que qualquer outro script ou poder possa acontecer novamente[1]. Exemplo:
Exemplo
global: 20
Define que todos os outros poderes não poderão iniciar por 1 segundo.
[1] Nota: Isso se aplica a implementações de poderes legados (não EliteScripts). Todos os poderes baseados em EliteScript suportam adequadamente cooldowns globais. Alguns dos poderes mais antigos atualmente não são afetados por isso, é um trabalho em andamento.
Nota: ao tornar o cooldown local mais longo e o cooldown global mais curto, você pode garantir que o boss alternará entre seus poderes disponíveis! Nunca torne o cooldown global mais longo, e eu recomendo deixar pelo menos um segundo de cooldown local para dar a outros poderes uma chance de serem acionados.
Além disso, se o seu poder tiver uma duração específica durante a qual está ativo, você deve usar este sistema para evitar que outros poderes sejam executados simultaneamente e potencialmente arruinem seu poder.
Aleatorização
Tanto os cooldowns local quanto global suportam aleatorização usando sintaxe de intervalo. Isso permite que as durações de cooldown variem, adicionando imprevisibilidade ao comportamento do boss.
Exemplo:
Cooldowns:
local: 40-80
global: 10-30
Define o cooldown local para ser aleatoriamente entre 40 e 80 ticks (2-4 segundos) e o cooldown global para ser aleatoriamente entre 10 e 30 ticks (0,5-1,5 segundos).
Nota: Os valores são selecionados aleatoriamente cada vez que o cooldown é aplicado.
Executar Scripts Uma Vez com Cooldowns
Para garantir que os scripts sejam acionados apenas uma vez enquanto ainda usa um Event que pode ocorrer várias vezes durante uma luta, defina o cooldown local para um número alto, como 99999. Este exemplo demonstra o conceito:
Exemplo
eliteScript:
SetMeOnFireOnlyOnce:
Events:
- EliteMobDamagedByPlayerEvent
Actions:
- action: SET_ON_FIRE
duration: 60
Target:
targetType: DIRECT_TARGET
Cooldowns:
local: 99999
# global: 20 # Opcional: Prevenir outros poderes por 1 segundo
Neste cenário, o EliteMobDamagedByPlayerEvent aciona a ação SET_ON_FIRE. Sem cooldowns, a ação seria ativada toda vez que o jogador acertar o mob.
No entanto, com um cooldown local definido para 99999, a ação será acionada apenas a cada 99999 ticks (83 minutos). Como o combate raramente dura tanto tempo, isso efetivamente faz com que o script seja executado apenas uma vez por encontro de combate.
O cooldown global é opcional neste caso - se omitido ou definido como 0, não impedirá que outros poderes sejam executados.
Solução de Problemas
Chaves de Cooldown Inválidas
Se você usar uma chave não reconhecida na seção Cooldowns, um aviso aparecerá nos logs do servidor:
Failed to parse cooldown entry for script name [ScriptName] in config file [FileName]
Chaves válidas são: local, global (não diferenciam maiúsculas de minúsculas)