Habilidades activas/pasivas con cooldowns, costos múltiples y efectos vinculados a Modificadores.
skills#
Modela las habilidades del juego: hechizos, ataques especiales, pasivas, ultimates. Cada habilidad conoce su propio cooldown, costos (moneda/atributo/cargas), efectos (referencias a Modificadores en la misma página) y condiciones de desbloqueo.
Por qué importa#
Las habilidades son una de las estructuras más densas de cualquier GDD: tocan economía (costo), atributos (efecto), progresión (desbloqueo), tiempo (cooldown, duración de DoT) y a veces ítems (costo en consumible). Sin un esquema dedicado terminas duplicando esta información en prosa suelta y el motor implementa cada una a mano.
Dónde suele vivir#
- Página de tipo
⚡ Habilidades(incluye Skills + AttributeModifiers vinculados). - Páginas en blanco cuando quieres agrupar habilidades de otra manera.
Singleton — 1 addon por página. Múltiples habilidades viven en los entries[] del mismo addon.
Esquema#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno del addon. | |
nameSí | string | Nombre amigable (ej.: Habilidades de Combate). | |
entriesSí | SkillEntry[] | Lista de habilidades. |
SkillEntry#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno. | |
nameSí | string | Nombre amigable (ej.: Fireball). | |
description | string | Descripción de la habilidad (tooltip de UI). | |
kindSí | "active" | "passive" | active: debe activarse (Fireball). passive: efecto permanente (Iron Skin). | |
cooldownSeconds | number | Tiempo mínimo entre usos. Sub-segundo permitido (0.5s). Vacío = sin límite (autofire). | |
costs | SkillCost[] | Costos pagados en cada uso. Vacío = gratis. | |
effects | SkillEffectRef[] | Referencias a entradas del attributeModifiers en la misma página. | |
unlock | SkillUnlock | Condiciones para desbloquear (nivel + moneda + ítem). Reutiliza el tipo CraftTableUnlock. | |
tags | string[] | Etiquetas libres (fire, single-target, magical). |
SkillCost#
Cada entrada de la lista de costos:
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno. | |
typeSí | "currency" | "attribute" | "charges" | currency: paga una moneda del proyecto. attribute: paga un stat (ej.: mana). charges: cargas locales (sin referencia externa). | |
amountSí | number | Cantidad a pagar. | |
currencyRef | string (sectionId) | Cuando type=currency. Apunta a la página de la moneda. | |
definitionsRef | string (sectionId) | Cuando type=attribute. Página de Atributos que define la clave. Cada costo puede usar una página diferente. | |
attributeKey | string | Cuando type=attribute. Clave existente en definitionsRef. |
SkillEffectRef#
Cada entrada de la lista de efectos:
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSí | string | ID interno. | |
attributeModifiersSectionIdSí | string (sectionId) | Sección que tiene el addon de modificadores. Generalmente la misma página de la habilidad. | |
attributeModifiersAddonIdSí | string | ID del addon de modificadores en esa sección. | |
modifierEntryIdSí | string | ID de la entrada específica dentro de los modificadores. |
Ejemplo: Fireball completo#
{
"id": "skill-fireball",
"name": "Fireball",
"description": "Bola de fuego que causa impacto + quemadura.",
"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"]
}
Se lee como: habilidad activa, 5s de cooldown, cuesta 30 de mana, activa 2 modificadores (impacto + quemadura), se desbloquea en el nivel 5, etiquetada como fuego/magia/área.
Wizard#
El tipo de página ⚡ Habilidades crea automáticamente:
- Este addon
skills(vacío) - Un
attributeModifiers(vacío, condefinitionsRefcompletado)
El AttributeDefinitions utilizado viene del diálogo de requisitos que se abre al crear la página. Puedes elegir uno existente o crear uno nuevo en el mismo flujo.
Detalle de UX: panel de cooldown enriquecido#
El panel de cooldown de cada habilidad muestra:
- Etiqueta derivada en vivo: al escribir
1.5aparece "≈ 0.67 usos por segundo (autofire limitado)" - Presets: chips clicables (Sin límite / Ataque 1s / Habilidad 5s / Ultimate 60s)
- Línea de tiempo: barra del lanzador (recarga) y barra del objetivo (efecto), proporcional. Muestra divisores de tick cuando el efecto es un DoT.
- Aviso de stacking: alerta si la regla de apilamiento de los modificadores vinculados puede causar comportamiento inesperado (ej.: stack con cooldown corto = potencialmente roto).
Exportar a Remote Config#
Skills tiene 3 fuentes dedicadas en Remote Config:
source: "skills"— itera todas las habilidades del addonsource: "skillCosts"(dentro de skills) — itera los costos de la habilidad actualsource: "skillEffects"(dentro de skills) — itera los efectos de la habilidad actual
Y 3 fuentes de binding correspondientes (skillField, skillCostField, skillEffectField) con docenas de campos resueltos (resolvedName, resolvedAttributeKey, resolvedDefinitionsRef, resolvedDurationSeconds, resolvedStacking, etc.) que siguen referencias y devuelven datos listos para el motor.
Consulta Remote Config para ejemplos completos.