Habilidades ativas/passivas com cooldown, custos múltiplos e efeitos vinculados a Modificadores.

skills#

Modela habilidades do jogo: feitiços, ataques especiais, passivas, ultimates. Cada skill conhece seu próprio cooldown, custos (moeda/atributo/cargas), efeitos (referencias a Modificadores na mesma página) e condições de desbloqueio.

Por que importa#

Skills são uma das estruturas mais densas de qualquer GDD: elas tocam economia (custo), atributos (efeito), progressão (unlock), tempo (cooldown, duration de DoT) e às vezes itens (custo em consumível). Sem schema dedicado você acaba duplicando essa informação em prosa solta e o motor implementa cada uma à mão.

Onde costuma viver#

  • Página de tipo ⚡ Habilidades (vem com Skills + AttributeModifiers vinculados).
  • Páginas em branco quando você quer agrupar skills de outro jeito.

Singleton — 1 addon por página. Múltiplas skills moram nas entries[] do mesmo addon.

Schema#

CampoTipoPadrãoDescrição
idSimstringID interno do addon.
nameSimstringNome amigável (ex.: Habilidades de Combate).
entriesSimSkillEntry[]Lista de skills.

SkillEntry#

CampoTipoPadrãoDescrição
idSimstringID interno.
nameSimstringNome amigável (ex.: Fireball).
descriptionstringDescrição da skill (UI tooltip).
kindSim"active" | "passive"active: precisa ser disparada (Fireball). passive: efeito permanente (Iron Skin).
cooldownSecondsnumberTempo mínimo entre usos. Sub-segundo OK (0.5s). Vazio = sem limite (autofire).
costsSkillCost[]Custos pagos a cada uso. Vazio = grátis.
effectsSkillEffectRef[]Refs pra entries do attributeModifiers da mesma página.
unlockSkillUnlockCondições pra desbloquear (level + currency + item). Reusa o tipo CraftTableUnlock.
tagsstring[]Tags livres (fire, single-target, magical).

SkillCost#

Cada entry da lista de custos:

CampoTipoPadrãoDescrição
idSimstringID interno.
typeSim"currency" | "attribute" | "charges"currency: paga uma moeda do projeto. attribute: paga um stat (ex.: mana). charges: cargas locais (sem ref externa).
amountSimnumberQuantidade a pagar.
currencyRefstring (sectionId)Quando type=currency. Aponta pra página da moeda.
definitionsRefstring (sectionId)Quando type=attribute. Página de Atributos que define a key. Cada custo pode usar uma página diferente.
attributeKeystringQuando type=attribute. Key existente em definitionsRef.

SkillEffectRef#

Cada entry da lista de efeitos:

CampoTipoPadrãoDescrição
idSimstringID interno.
attributeModifiersSectionIdSimstring (sectionId)Seção que tem o addon de modifiers. Em geral, a mesma página da skill.
attributeModifiersAddonIdSimstringID do addon de modifiers naquela seção.
modifierEntryIdSimstringID da entry específica dentro do modifiers.

Exemplo: Fireball completo#

{
  "id": "skill-fireball",
  "name": "Fireball",
  "description": "Bola de fogo que causa impacto + queimadura.",
  "kind": "active",
  "cooldownSeconds": 5,
  "costs": [
    {
      "id": "c1",
      "type": "attribute",
      "amount": 30,
      "definitionsRef": "section-attrs",
      "attributeKey": "mana"
    }
  ],
  "effects": [
    {
      "id": "e1",
      "attributeModifiersSectionId": "section-fireball",
      "attributeModifiersAddonId": "mods-fireball",
      "modifierEntryId": "mod-impact"
    },
    {
      "id": "e2",
      "attributeModifiersSectionId": "section-fireball",
      "attributeModifiersAddonId": "mods-fireball",
      "modifierEntryId": "mod-burn"
    }
  ],
  "unlock": {
    "level": { "enabled": true, "level": 5 }
  },
  "tags": ["fire", "magical", "aoe"]
}

Lê-se: skill ativa, 5s de cooldown, custa 30 de mana, dispara 2 modifiers (impacto + queimadura), desbloqueia no nível 5, tagged como fogo/magia/área.

Wizard#

A page type ⚡ Habilidades cria automaticamente:

  1. Este addon skills (vazio)
  2. Um attributeModifiers (vazio, com definitionsRef preenchido)

A AttributeDefinitions usada vem do diálogo de requires que abre quando você cria a página. Você pode escolher uma existente ou criar uma nova no mesmo fluxo.

UX importante: cooldown rica#

O painel de cooldown de cada skill mostra:

  • Label derivada ao vivo: digitando 1.5 aparece "≈ 0.67 usos por segundo (autofire limitado)"
  • Presets: chips clicáveis (Sem limite / Ataque 1s / Skill 5s / Ultimate 60s)
  • Timeline: barra do caster (recarga) e barra do alvo (efeito), proporcional. Mostra divisórias de tick quando o efeito é DoT.
  • Hint de stacking: avisa se a regra de stacking dos modifiers vinculados pode causar comportamento inesperado (ex.: stack com cooldown curto = potencial broken).

Export pro Remote Config#

Skills tem 3 sources dedicadas no Remote Config:

  • source: "skills" — itera todas as skills do addon
  • source: "skillCosts" (dentro de skills) — itera os custos da skill atual
  • source: "skillEffects" (dentro de skills) — itera os efeitos da skill atual

E 3 binding sources correspondentes (skillField, skillCostField, skillEffectField) com dezenas de campos resolvidos (resolvedName, resolvedAttributeKey, resolvedDefinitionsRef, resolvedDurationSeconds, resolvedStacking, etc.) que seguem refs e devolvem dados prontos pro motor.

Veja Remote Config pra exemplos completos.

Veja também#