Enum AbilityActivationFlags
Flags representing the activation state of an ability. Stored as bit positions in an int and manipulated via IntBitExtensions.
Bit position 0 (IsActualData) is used as a sentinel to distinguish real input from
FishNet's default-filled replicate data. Data without this bit set does NOT stop the
replicate: AbilityController.ReplicateInternal clears the queued ability, carries the
held flag over from the replicated state, and goes on simulating — a tick with no new input
still has to advance an active cast, its cooldowns and its resource drain, or the owner and
the server diverge whenever a packet is late. This lets bit 0 double as a "data present"
marker without consuming an extra field in the replicate struct.
Constraint: All enum values are bit positions and must remain in the range 0–15 (bits 0–15 after shifting). Pack(int, int) stores flags in the lower 16 bits. Values at or above 16 will be silently truncated during reconcile.
public enum AbilityActivationFlags
Fields
Server-authoritative denial flag. Set in OnCreateReconcile(ref CharacterReconcileData) when the server rejected the last queued activation (TryStartAbility/TryStartConsumable failed but input had a queued ability). Clients check this in OnReconcile to fire OnAbilityDenied accurately instead of relying on the heuristic (currentAbilityID != NO_ABILITY && rd.AbilityID == NO_ABILITY) which false-fires on zero-duration abilities that complete before the reconcile tick.
Indicates the ability was interrupted.
Bit 0: Indicates the data is actual activation data (not a default-filled gap). Set by HandleCharacterInput before packaging; checked at the top of Replicate. Using position 0 means a default int (0) will never have this flag set.
Indicates the activation is for a consumable item.
Indicates the activation key is held (for charged/channeled abilities).
Indicates the activation is for a mount.
Server-authoritative "no object was spawned at this tick" flag.
Distinct from Denied, which means the activation was refused outright. This means the activation ran to completion — cost paid, cooldown started, seed advanced — and still produced nothing, because the server's own target resolution came up empty for an ability that requires a target. The owner, resolving against its own view of the world, had already spawned an object: the seeds match and there is no denial, so nothing told it to take that object back and it flew its full lifetime hitting nothing. This flag is what tells it. It does not fire
OnAbilityDenied— the cast was not denied.