Buffs e debuffs que alteram atributos. Suporta one-shot, durativo e DoT/HoT.

attributeModifiers#

Define alterações nos atributos: o +10 ATK da Espada de Ferro, o -5 HP/s por 6s do Veneno, o ×1.5 SPD do buff de velocidade.

Por que importa#

Sem um modelo único pra modifier, cada feature implementa o seu (item, skill, evento, classe). Resulta em motor com 5 sistemas de buff incompatíveis. Aqui você define uma vez, e qualquer feature que precise de "alterar atributo" referencia uma entry deste addon.

Onde costuma viver#

  • Página de Equipamento (⚔️ Itens com efeito) — efeitos do item ao equipar.
  • Página de Habilidade (⚡ Habilidades) — efeitos da skill no alvo.
  • Página de Personagem (👤 Personagens) — efeitos passivos da classe.
  • Página em branco — pool genérico de modifiers reutilizáveis.

Singleton — 1 addon por página. Cada addon pode ter N entries, então uma página de Habilidades segura todos os efeitos das skills dela.

Schema#

CampoTipoPadrãoDescrição
idSimstringID interno do addon.
nameSimstringNome amigável.
definitionsRefstring (sectionId)Página com attributeDefinitions. Filtra quais keys o painel oferece.
modifiersSimAttributeModifierEntry[]Lista de entries — cada uma é um efeito atômico.

AttributeModifierEntry#

CampoTipoPadrãoDescrição
idSimstringID interno.
namestringNome humano (ex.: Fireball Impact). Quando ausente, a UI gera um label automático tipo +10 ATK 30s.
attributeKeySimstringKey do atributo a alterar (vem da definitionsRef).
modeSim"add" | "mult" | "set"add: soma (negativo = dano). mult: multiplica (×1.5 = +50%). set: força valor exato.
valueSimnumber | booleanO valor a aplicar. Boolean só faz sentido com mode=set em atributos boolean.
temporarybooleanfalseQuando true, o modifier expira depois de durationSeconds. Quando false, é permanente (ex.: dano em HP que não regenera).
durationSecondsnumberDuração total do efeito (em segundos). Aceita decimais (1.5s).
tickIntervalSecondsnumberIntervalo entre aplicações pra DoT/HoT. Convenção trailing tick: primeiro tick em t=N, total = floor(duration/interval).
stackingRule"unique" | "refresh" | "stack"unique: 2º cast ignorado se ainda ativo. refresh: cada cast renova duração. stack: empilha como instâncias separadas.
category"buff" | "debuff" | "neutral"Para sistemas de dispel/resistência no motor.
tagsstring[]Tags livres pra agrupar (fire, poison, magical). Lower-cased e dedup automaticamente.

Exemplos#

One-shot: dano instantâneo#

{
  "id": "fire-impact",
  "name": "Fireball Impact",
  "attributeKey": "hp",
  "mode": "add",
  "value": -30,
  "stackingRule": "stack"
}

Sem temporary, então é permanente — o dano em HP fica até o jogador curar.

Durativo: buff de 30s#

{
  "id": "berserk",
  "name": "Berserk",
  "attributeKey": "atk",
  "mode": "mult",
  "value": 1.5,
  "temporary": true,
  "durationSeconds": 30,
  "stackingRule": "refresh",
  "category": "buff"
}

mult: 1.5 = +50% ATK por 30s. refresh significa que recastear renova o timer.

DoT: queimadura#

{
  "id": "burn",
  "name": "Burn",
  "attributeKey": "hp",
  "mode": "add",
  "value": -2,
  "temporary": true,
  "durationSeconds": 6,
  "tickIntervalSeconds": 1,
  "stackingRule": "unique",
  "category": "debuff",
  "tags": ["fire", "dot"]
}

Aplica -2 HP a cada 1s por 6s = 6 ticks × -2 = -12 HP total. unique impede multiplicação descontrolada quando o jogador spammar a skill.

Convenção do tick#

DoT/HoT segue trailing tick:

  • Duration = 10s, tick = 1s → 10 ticks aplicados em t=1, 2, ..., 10
  • Total ticks = floor(durationSeconds / tickIntervalSeconds)

Não dispara em t=0. Se o seu motor implementar leading tick (t=0, 1, ..., 10 = 11 ticks), ele vai entregar 10% mais dano do que o GDD diz. Documente bem essa convenção pro time de programação.

Quem aponta pra este addon#

  • skills.SkillEffectRef — efeitos de skill apontam pra entries específicas aqui (mesma página, por design).
  • Equipamento (via equipmentItem page type) — modifiers se aplicam ao equipar.

Wizard#

Não tem wizard próprio (não é page-type principal). Mas é seedado automaticamente por:

  • 👤 Personagens
  • ⚔️ Itens com efeito
  • ⚡ Habilidades

Todos seedam o addon vazio com definitionsRef já preenchido pra você só adicionar entries.

Comportamento na UI#

  • Painel: bloco por entry colapsável, drag-and-drop pra reordenar, dropdowns dependentes (key → values disponíveis).
  • Read-only: lista as entries com badge de categoria + chips de tags + breakdown de timing (s, tick).
  • Skills checklist: cada entry aparece no picker de efeitos de uma skill na mesma página. O name (quando setado) é destacado em bold.

Veja também#