Ir para o conteúdo

Funções de Efeito

GetMaxEffect(aIndex)

Retorna o número máximo de slots de efeito que um objeto pode ter.

local max = GetMaxEffect(player.Index)

AddEffect(lpObj, type, index, count, v1, v2, v3, v4, v5, v6, buffSendValue, attackerIndex, rmv)

Adiciona um efeito de buff/debuff a um objeto.

  • Parâmetros:
  • lpObj (GameObject) — objeto alvo
  • type (number) — tipo de efeito (0 ou 1)
  • index (number) — ID do efeito
  • count (number) — duração em segundos ou contagem de cargas
  • v1..v6 (number) — valores do efeito (dano, defesa, etc.)
  • buffSendValue (number) — valor do ícone de buff no cliente
  • attackerIndex (number) — índice da fonte do efeito
  • rmv (number) — chance de sucesso (0-100), ou -1 para garantido
  • Retorna: number — 1 em caso de sucesso, 0 em caso de falha
-- Add +50 physical damage buff for 60 seconds, guaranteed
AddEffect(player, 1, 15, 60, 50, 0, 0, 0, 0, 0, 0, player.Index, -1)

DelEffect(lpObj, index)

Remove um efeito específico pelo seu ID.

  • Retorna: boolean
if DelEffect(player, 1) then
    GCNoticeSend(player.Index, 1, "Poison cured!")
end

DelEffectByGroup(lpObj, group)

Remove todos os efeitos pertencentes a um grupo.

  • Retorna: boolean
DelEffectByGroup(player, 20) -- Remove all scroll buffs

GetEffect(lpObj, index)

Retorna o objeto GameCEffect para o ID de efeito fornecido, ou nil se não encontrado.

local eff = GetEffect(player, 1)
if eff then
    LogAdd(LOG_RED, "Poison remaining: " .. eff.m_time .. "s")
end

GetEffectByGroup(lpObj, group)

Retorna o primeiro GameCEffect no grupo fornecido, ou nil.

local scroll = GetEffectByGroup(player, 20)
if scroll then
    LogAdd(LOG_BLUE, "Scroll value: " .. scroll.m_value[1])
end

CheckEffect(lpObj, index)

Retorna true se o objeto possui o efeito ativo.

if CheckEffect(target, 16) then -- Mana Shield
    LogAdd(LOG_BLUE, "Target has Mana Shield active.")
end

CheckEffectByGroup(lpObj, group)

Retorna true se o objeto possui algum efeito do grupo fornecido.

if CheckEffectByGroup(player, 35) then
    GCNoticeSend(player.Index, 1, "You already have an event buff.")
end

CheckStunEffect(lpObj)

Retorna true se o objeto está atordoado.

if CheckStunEffect(target) then
    LogAdd(LOG_BLUE, "Target is stunned!")
end

CheckImmobilizeEffect(lpObj)

Retorna true se o objeto está imobilizado.

if CheckImmobilizeEffect(player) then
    GCNoticeSend(player.Index, 1, "You are frozen and cannot move!")
end

CheckDebuffSend(index)

Retorna true se o índice de efeito fornecido é classificado como debuff para exibição no cliente.

local isDebuff = CheckDebuffSend(5)

ClearAllEffect(lpObj)

Remove todos os efeitos do objeto.

ClearAllEffect(player)
GCNoticeSend(player.Index, 1, "All effects cleared.")

ClearDebuffEffect(lpObj, count)

Remove até count efeitos de debuff do objeto.

ClearDebuffEffect(player, 3)
GCNoticeSend(player.Index, 1, "Removed 3 debuffs.")

UpgradeDamageByClass(lpObj)

Calcula e retorna o bônus de dano baseado na classe e atributos do personagem.

  • Retorna: number
local bonus = UpgradeDamageByClass(player)
LogAdd(LOG_BLUE, "Class damage bonus: " .. bonus)