Skip to main content
Euca splits “active skills” from “things happening to you.” A status effect is a tagged, timed bundle of stat modifiers plus an optional damage/heal-over-time tick — you apply it to any entity over HTTP. An ability lives in an AbilitySet slot (Q/W/E/R) with a cooldown, a mana cost, and a composable effect; the /ability/* routes drive whatever ability set an entity already carries. Attaching an AbilitySet is done only in Rust (by the MOBA example game’s spawn_hero), which the shipped world does not currently call — so the ability routes are dormant over HTTP today (see Active abilities). Both advance only when the simulation ticks — you queue or apply them over HTTP, then /step. This page applies a poison and a slow to a freshly spawned unit and watches them tick; every command is real and runnable against a local server, and the outputs below are captured from one.

Apply a poison and a slow, then cleanse

1. Spawn a unit. A generic unit is enough — status effects work on any entity.
2. Apply a poison DoT and a slow. A status effect is a tag, a duration, a list of "stat:op:value" modifiers, an optional tick_effect (dps:N / hps:N / custom:name), and a stack_policy (replace or stack:N). Apply two — one that ticks damage, one that only modifies a stat.
3. Step one second and watch them tick. remaining counts down by the elapsed time; the poison’s dps drains health.
4. Cleanse. /effect/cleanse removes effects whose tag matches filter; an empty filter clears everything.

Active abilities

The /ability/* routes operate on any entity that carries an AbilitySet (with the Mana and base/growth stats that go with it). There is no generic HTTP route to attach one — an AbilitySet is inserted only in Rust, by the MOBA example game’s spawn_hero. And the shipped MOBA world does not currently invoke spawn_hero (its level data carries no ability sets), so on every entity you can reach over HTTP today, /ability/list returns an empty set. The routes are wired and correct; the ability data to drive them is, for now, dormant. /ability/list/{id} always answers — it reports each slot’s cooldown, mana cost, and ready flag for an ability-carrying unit, or an empty set otherwise:
/ability/use queues a use-ability event for the next tick. On a unit with no ability in that slot it returns ok:true but does nothing (the event is queued, then dropped); on a unit that does carry the slot, the cooldown starts and the mana is spent when the ability system runs on the next /step:

Behavior and gotchas

The things you only learn by running it:
  • Status effects work on any entity; abilities need an AbilitySet that nothing currently attaches over HTTP. /effect/* applies to a bare /spawn unit. /ability/use and /ability/list answer for any entity, but every reachable entity lists "abilities":[] and "mana":null, and /ability/use is a no-op on them — the use event is queued, then dropped because there’s no ability to fire.
  • The deleted hero routes are gone. /hero/define and /hero/select (the old way to stamp an AbilitySet) 404. The only path that attaches abilities is the MOBA game’s Rust spawn_hero, which the shipped world does not call — so the ability routes are dormant over HTTP until a game wires it.
  • Cooldown and mana resolve on a tick, not on the call. /ability/use queues a UseAbilityEvent; read /ability/list immediately and it’s still ready:true at full mana. /step once, then read.
  • The poison’s DoT double-drains like direct damage. One second of dps:10 took health from 600 to about 580.16, not 590 — the same event-buffer double-drain documented on Gameplay & combat. The countdown of remaining is exact; treat the DoT magnitude from a manual apply as approximate.
  • modifiers are recorded on the effect; this page verifies the bookkeeping, not movement. The move_speed:multiply:0.5 string is stored and returned verbatim by /effect/list. Whether the unit actually moves slower is the movement system’s job.
  • Cleansing leaves an empty effect set, not a missing one. After clearing everything, /effect/list/{id} returns {"count":0,"effects":[]} — the StatusEffects component still exists. The "Entity not found or has no status effects" error is for an entity that never had one.

Endpoints

An AbilitySet reaches a unit only through the MOBA game’s Rust spawn_hero (not yet called by the shipped world); the health and damage abilities move live on Gameplay & combat.

Status

  • Shipped, all headless — status-effect durations, set/add/multiply modifiers, DoT/HoT ticks, stacking, and cleanse (on any entity); ability cooldowns, mana cost and regen, per-level scaling, and channel state (on entities that carry an AbilitySet).
  • Game-side — attaching an AbilitySet is done in-engine by the MOBA example game’s spawn_hero; there is no generic HTTP route for it.
  • Known issue — a DoT (like direct damage) resolves on two consecutive ticks, so a manual apply removes roughly twice the per-second amount; see the combat double-drain note.

Ability & effect endpoints

Every ability and status-effect endpoint, with request and response schemas.