using RobotAndDonkey.Game.Cards; using RobotAndDonkey.Game.Data; using RobotAndDonkey.Game.Execution.Results; using RobotAndDonkey.Game.GameState; using RobotAndDonkey.Game.Intents; namespace RobotAndDonkey.Game.Modifiers; public record EffectiveModifier(EModifierDuration Duration) : Modifier(EModifierKind.Card, EModifierId.Effective, Duration) { protected override EffectiveModifier CreateInstance() => new(Duration); public override void Before(Guid requestId, ReadOnlySpan intents, CoreLoop coreLoop, Entity owner, List newIntents, List results) { if (coreLoop.Random.NextSingle() <= Balancing.Instance.EffectiveChance) { if (owner is Card card) results.Add(new ModifyCardResult(requestId, card.DeepClone(), EModifierId.Effective, ECardLocation.Tape)); newIntents.AddRange(intents); } } public override string ToolTip => $"Has a {Balancing.Instance.EffectiveChance * 100:N0}% chance of working twice"; }