Class BuffTickEvent
ECA trigger fired on each tick of a buff, driving damage-over-time, heal-over-time, and any other periodic effect.
[CreateAssetMenu(fileName = "New Buff Tick Event", menuName = "FishMMO/Character/Buff/Events/Buff Tick Event", order = 0)]
public class BuffTickEvent : Trigger, ICachedObject
- Inheritance
-
ObjectScriptableObjectBuffTickEvent
- Implements
- Inherited Members
-
ScriptableObject.SetDirty()ScriptableObject.CreateInstance<T>()Object.GetEntityId()Object.GetInstanceID()Object.GetHashCode()Object.InstantiateAsync<T>(T)Object.InstantiateAsync<T>(T, Transform)Object.InstantiateAsync<T>(T, Vector3, Quaternion)Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion)Object.Instantiate(Object, Vector3, Quaternion, Transform)Object.Instantiate(Object)Object.Instantiate(Object, Scene)Object.Instantiate<T>(T, InstantiateParameters)Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)Object.Instantiate(Object, Transform)Object.Instantiate<T>(T)Object.Instantiate<T>(T, Vector3, Quaternion)Object.Instantiate<T>(T, Vector3, Quaternion, Transform)Object.Instantiate<T>(T, Transform)Object.Destroy(Object)Object.DestroyImmediate(Object)Object.DontDestroyOnLoad(Object)Object.DestroyObject(Object)Object.FindObjectsOfType<T>()Object.FindObjectsByType<T>(FindObjectsSortMode)Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)Object.FindObjectOfType<T>()Object.FindFirstObjectByType<T>()Object.FindAnyObjectByType<T>()Object.FindFirstObjectByType<T>(FindObjectsInactive)Object.FindAnyObjectByType<T>(FindObjectsInactive)Object.FindObjectsByType<T>()Object.FindObjectsByType<T>(FindObjectsInactive)Object.ToString()Object.nameObject.hideFlags
Remarks
The event is fired with the buff's carrier as the target and the character that applied the buff as the initiator, so an ApplyDamageAction attached here behaves exactly like the same action on an ability's on-hit event: resistance is applied, threat is generated against the caster, the target can die of it, and the caster is credited.
This is why a DoT does not need a bespoke buff-template subclass. Damage, healing, resource drain, chained debuffs, dispels and summons are all already ECA actions; a periodic version of any of them is this event plus the action, with no new C# to write. The condition branches work too — a poison that only ticks while its victim is moving is a condition, not a new template type.
Fires on the server only, once per tick. An action here is a side effect — damage credit, threat, a chained debuff, achievement progress — and must happen exactly once, so InvokeTickEvents(Buff, ICharacter) suppresses it on every client pass and on the server's reconcile replays alike. The owning client still runs the buff's resource mutation for prediction; its health is corrected by the attribute reconcile.