using OTGIntegrated.Stats; using UnityEngine; namespace OTGIntegrated.Abilities { public readonly struct AbilityContext { public readonly AbilityData Ability; public readonly Transform Caster; public readonly PlayerStats Stats; public readonly Vector3 Origin; public readonly Vector3 Forward; public AbilityContext(AbilityData ability, Transform caster, PlayerStats stats, Vector3 origin, Vector3 forward) { Ability = ability; Caster = caster; Stats = stats; Origin = origin; Forward = forward.sqrMagnitude > 0.001f ? forward.normalized : Vector3.forward; } } public abstract class AbilityEffect : MonoBehaviour { public abstract void Activate(AbilityContext context); } }