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#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno do addon. | |
nameSim | string | Nome amigável (ex.: Habilidades de Combate). | |
entriesSim | SkillEntry[] | Lista de skills. |
SkillEntry#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
nameSim | string | Nome amigável (ex.: Fireball). | |
description | string | Descrição da skill (UI tooltip). | |
kindSim | "active" | "passive" | active: precisa ser disparada (Fireball). passive: efeito permanente (Iron Skin). | |
cooldownSeconds | number | Tempo mínimo entre usos. Sub-segundo OK (0.5s). Vazio = sem limite (autofire). | |
costs | SkillCost[] | Custos pagos a cada uso. Vazio = grátis. | |
effects | SkillEffectRef[] | Refs pra entries do attributeModifiers da mesma página. | |
unlock | SkillUnlock | Condições pra desbloquear (level + currency + item). Reusa o tipo CraftTableUnlock. | |
tags | string[] | Tags livres (fire, single-target, magical). |
SkillCost#
Cada entry da lista de custos:
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
typeSim | "currency" | "attribute" | "charges" | currency: paga uma moeda do projeto. attribute: paga um stat (ex.: mana). charges: cargas locais (sem ref externa). | |
amountSim | number | Quantidade a pagar. | |
currencyRef | string (sectionId) | Quando type=currency. Aponta pra página da moeda. | |
definitionsRef | string (sectionId) | Quando type=attribute. Página de Atributos que define a key. Cada custo pode usar uma página diferente. | |
attributeKey | string | Quando type=attribute. Key existente em definitionsRef. |
SkillEffectRef#
Cada entry da lista de efeitos:
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
attributeModifiersSectionIdSim | string (sectionId) | Seção que tem o addon de modifiers. Em geral, a mesma página da skill. | |
attributeModifiersAddonIdSim | string | ID do addon de modifiers naquela seção. | |
modifierEntryIdSim | string | ID 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:
- Este addon
skills(vazio) - Um
attributeModifiers(vazio, comdefinitionsRefpreenchido)
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.5aparece "≈ 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 addonsource: "skillCosts"(dentro de skills) — itera os custos da skill atualsource: "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.