Pular para o conteúdo principal

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)