Skip to main content
forge-abilities owns what a character can cast. It holds ability definitions, per-character learned sets and hotbars, mana and cooldowns, and the cast pipeline, including a server-authoritative projectile resolution handshake.

Concepts

  • Definition. A stable ability:<name> with a cast type, cost, cooldown, requirements, and payloads (for example damage).
  • Learned + hotbar. A character learns abilities and binds them to hotbar slots.
  • Cast cue. Casting fires a cue event; for projectile abilities the content spawns the visual and reports the hit back with ReportProjectileHit/ReportProjectileMiss, keeping the server authoritative over the outcome.

Exports

Registry & query

ExportSignatureReturns
RegisterAbility / RegisterAbilitiesregister definitions
GetDefinitionGetDefinition(id)Result{ data = { definition } } (label, cooldownSec, payloads under .definition)
GetDefinitionsGetDefinitions()Result

Cast, mana, cooldowns

ExportSignature
CastCast(character_id, ability_id)
CancelCastCancelCast(character_id)
GetCastStateGetCastState(character_id)
GetMana / SetManaGetMana(cid){ current, max }
GetCooldowns / ClearCooldownsper-ability remaining cooldowns

Learning & hotbar

ExportSignatureReturns
LearnAbility / UnlearnAbilityLearnAbility(cid, ability_id, source)
GetLearnedGetLearned(character_id)learned set
SetHotbarSlotSetHotbarSlot(cid, slot, ability_id)
GetHotbarGetHotbar(cid)Result{ data = { slots = { [n] = abilityId } } }
ReportProjectileHit / ReportProjectileMissReportProjectileHit(token, { character_id }), resolve a cast

Definition shape

exports["forge-abilities"]:RegisterAbility({
  id = "ability:firebolt", label = "Firebolt", castType = "projectile",
  cost = { mana = 20 }, cooldownSec = 1.0,
  requires = { equippedTag = "focus.wand" },
  payloads = { { kind = "damage", amount = 25 } },
})

Events

EventPayloadWhen
forge-abilities:server:cue{ character_id, phase, token, ability_id }a cast reached a phase (for example projectile); content spawns the visual and reports the hit

Configuration

forge-abilities ships no content; abilities are creator-defined. Mana defaults and cast rules live in Config.