using System; namespace YachtDice.Modifiers { [Serializable] public class ModifierRuntime { public string ModifierId; public bool IsActive; public int RemainingUses; [NonSerialized] public ModifierData Data; public bool IsExpired => Data != null && Data.Durability == ModifierDurability.LimitedUses && RemainingUses <= 0; public void ConsumeUse() { if (Data == null) return; if (Data.Durability != ModifierDurability.LimitedUses) return; RemainingUses--; } public static ModifierRuntime Create(ModifierData data) { return new ModifierRuntime { ModifierId = data.Id, IsActive = false, RemainingUses = data.Durability == ModifierDurability.LimitedUses ? data.MaxUses : -1, Data = data }; } } }