- summary: A fighter casts a spell, or hits with its weapon, at a cell: what was cast, where, its outcome, and the caster's new cast counters.
- area: Game.Action
A fighter casts a spell, or hits with its weapon, at a cell: what was cast, where, its outcome, and the caster's new cast counters.
Kind struct · Area Game.Action
The targeted_ability action of GameActionFightEvent: one cast. The caster is
GameActionFightEvent.source_id; GameActionFightEvent.action_id is the cast action
(300 in the captures). Everything the spell DOES (damage, buffs, moves...) arrives as further
GameActionFightEvents of the same sequence.
READ IT LIKE THIS
1. SPELL OR WEAPON: exactly one member of the fight oneof is set.
TargetedAbility.spell_cast is a spell (see SpellCast: spell id, level, portals);
TargetedAbility.weapon_generic_id is a weapon hit with that weapon item.
2. WHERE: TargetedAbility.destination_cell is the targeted cell and
TargetedAbility.target_id the fighter that was aimed at.
3. OUTCOME: TargetedAbility.critical (FightSpellCastCritical) says whether the cast
was a normal one, a critical hit, or the third outcome (beta: critical failure).
4. DISPLAY: TargetedAbility.verbose_cast set means the cast is announced;
TargetedAbility.silent_cast set means the client plays no spell visual for it.
5. CAST COUNTERS: for each AbilityRefreshInfo in TargetedAbility.ability_refresh_infos,
replace that fighter's counters for this spell (casts this turn, casts per target,
cooldown). TargetedAbility.ability_refresh_info_team (AbilityRefreshInfoTeam) carries
the global (team-wide) cast counters of the spell.
6. SEND NOTHING BACK. When it is your cast, this is the server's confirmation of
GameActionFightCastRequest.
WHAT THE CLIENT DOES. It builds a spell-cast context (caster, cell, spell data and level, portal cells, critical flags), counts the cast in the caster's per-spell cast manager unless the outcome is the third value, refreshes every listed fighter's counters, then queues the cast step (spell or weapon) and the critical-effect step in the fight sequence.
CAPTURE (3.7.10.10, 2026-10-14): your own cast, action 300, destination_cell 370, target_id = you, verbose_cast true, spell_cast {spell_id 12718, spell_level 43038}, one refresh entry with your id.
Not sent on its own — it travels inside GameActionFightEvent.targeted_ability. proven
Used by
Fields
| # | Field | Type | Meaning | You set it |
|---|---|---|---|---|
| 1 | ability_refresh_info_team | AbilityRefreshInfoTeam | The spell's global (team-wide) cast counters after this cast. See AbilityRefreshInfoTeam.Name after the record type (type-name table: TargetedAbility+Types+AbilityRefreshInfoTeam). Present from 3.6.10.10 on. | never |
| 3 | verbose_cast | bool | Set when the cast is announced. Observed: trueHanded to the cast step as its 'verbose' flag. | never |
| 4 | silent_cast | bool | Set when the cast plays no spell visual. The client's spell-script gfx routine checks this flag first and builds nothing when it is set. | never |
| 5 | destination_cell | int32 | The targeted cell. (cell id) Observed: 370Bounds-checked as a map cell, then used as the cast step's cell and the spell context's cell. | never |
| 6 | target_id | int64 | The fighter the cast was aimed at. (fighter (entity) id) The client looks this fighter up and reads its cell. | never |
| 7 | ability_refresh_infos | repeated AbilityRefreshInfo | Per fighter, the spell's new cast counters and cooldown after this cast. See AbilityRefreshInfo.Name after the record type (type-name table: TargetedAbility+Types+AbilityRefreshInfo). | never |
| 8 | critical | FightSpellCastCritical | The cast's outcome: normal, critical hit, or the third outcome. See FightSpellCastCritical.Absent (0) in an ordinary cast. With the third value the client does not count the cast in the caster's cast counters. | never |
| 2 | spell_cast | SpellCast | Set for a spell: which spell, at which level, through which portals. See SpellCast.Member of the fight oneof, exclusive with TargetedAbility.weapon_generic_id. | never |
| 9 | weapon_generic_id | int32 | Set for a weapon hit: the weapon's item id. (item template id) Member of the fight oneof. When it is non-zero the client queues a weapon step instead of a spell step. | never |