Table of Contents

Struct AbilityObjectRedirectBroadcast

Namespace
FishMMO.Shared
Assembly
FishMMO.Shared.dll

Tells observers that an ability object's OnHit chain turned it onto a new heading — the fork case, where the hit was accepted and its events redirected the survivor.

public struct AbilityObjectRedirectBroadcast : IBroadcast
Implements
IBroadcast
Inherited Members

Remarks

The deflect redirect rides AbilityObjectHitBroadcast because a deflection IS the whole outcome; a fork's redirect happens INSIDE the OnHit events, after that message has already gone (it is deliberately sent before the events so a hit is reported even when an authored action destroys the object handling it). So the post-chain heading travels as its own message, on the same reliable ordered channel, and therefore always lands after the hit it belongs to.

An ABSOLUTE heading, for the same reason the deflect's is. A peer that ran the fork itself — the owner predicting with its reconciled RNG, or an observer that resolved the hit locally — already holds this exact heading and applies the message as a no-op (the receiver compares before re-anchoring, because Redirect resets the trajectory leg). The peer this exists for is the one that could NOT resolve the victim: it dropped the hit, skipped the fork's RNG draw, and without this flew the old line until the destroy caught up — re-deriving the heading there was impossible by construction, its generator having missed the draw.

Fields

AbilityID

Ability the object belongs to.

public long AbilityID

Field Value

long

CasterObjectID

NetworkObject id of the casting character.

public int CasterObjectID

Field Value

int

ContainerID

Deterministic container id the object lives in (identical on every peer).

public int ContainerID

Field Value

int

ObjectID

Object id within the container (identical on every peer).

public int ObjectID

Field Value

int

PackedHeading

The heading the object left on, packed by AimDirectionCompression.

public uint PackedHeading

Field Value

uint

ServerTick

Server tick the turn happened on.

public uint ServerTick

Field Value

uint

Remarks

AbilityObject.Redirect resets the trajectory leg to zero elapsed ticks, and the closed-form pose reads that counter — so a receiver applying this message without advancing it restarts the new leg from the corner at the moment of ARRIVAL, and its copy trails the server's by the transit delay for the rest of the object's life. The receiver subtracts its own render lag the same way every other observer clock does; see AbilityController.ComputeObserverFastForwardTicks.