diff --git a/Assets/Scripts/Model/Actions/ActionsList/CancelCritAction.cs b/Assets/Scripts/Model/Actions/ActionsList/CancelCritAction.cs index 6dcef1c716..9f1a28cb13 100644 --- a/Assets/Scripts/Model/Actions/ActionsList/CancelCritAction.cs +++ b/Assets/Scripts/Model/Actions/ActionsList/CancelCritAction.cs @@ -24,6 +24,13 @@ public void Initialize(GenericDamageCard critCard) ImageUrl = critCard.ImageUrl; } + public override GenericAction Clone() + { + var clone = new CancelCritAction(); + clone.Initialize(CritCard); + return clone; + } + public override void ActionTake() { Selection.ActiveShip = Selection.ThisShip; diff --git a/Assets/Scripts/Model/Actions/ActionsList/GenericAction.cs b/Assets/Scripts/Model/Actions/ActionsList/GenericAction.cs index 76ca546474..05833a2300 100644 --- a/Assets/Scripts/Model/Actions/ActionsList/GenericAction.cs +++ b/Assets/Scripts/Model/Actions/ActionsList/GenericAction.cs @@ -209,6 +209,11 @@ public void DoOnlyEffect(Action callback) public virtual void RevertActionOnFail(bool hasSecondChance = false) {} + //override this for actions that require further initialization + public virtual GenericAction Clone() + { + return (GenericAction)Activator.CreateInstance(GetType()); + } } } diff --git a/Assets/Scripts/Model/Content/Core/Ship/GenericShipActions.cs b/Assets/Scripts/Model/Content/Core/Ship/GenericShipActions.cs index 12ba8ca0f9..b7309058ae 100644 --- a/Assets/Scripts/Model/Content/Core/Ship/GenericShipActions.cs +++ b/Assets/Scripts/Model/Content/Core/Ship/GenericShipActions.cs @@ -135,8 +135,7 @@ public List GetAvailableActionsWhiteOnly() private GenericAction GetActionAsRed(GenericAction action) { //Make a deep clone to avoid changing the original action to red - GenericAction instance = (GenericAction)Activator.CreateInstance(action.GetType()); - if (instance.IsCritCancelAction) ((CancelCritAction)instance).Initialize(((CancelCritAction)action).CritCard); + GenericAction instance = action.Clone(); instance.Color = ActionColor.Red; return instance; } diff --git a/Assets/Scripts/Model/Content/SecondEdition/Upgrades/Astromech/R5Astromech.cs b/Assets/Scripts/Model/Content/SecondEdition/Upgrades/Astromech/R5Astromech.cs index b934785f95..f1f77db70e 100644 --- a/Assets/Scripts/Model/Content/SecondEdition/Upgrades/Astromech/R5Astromech.cs +++ b/Assets/Scripts/Model/Content/SecondEdition/Upgrades/Astromech/R5Astromech.cs @@ -94,6 +94,11 @@ public RepairAction(CardFace face, CriticalCardType? type = null) DiceModificationName = Name = "Repair 1 " + face.ToString().ToLower() + (type != null ? " " + type.ToString() : "") + " damage"; } + public override GenericAction Clone() + { + return new RepairAction(damageCardFace, criticalCardType); + } + public override void ActionTake() { if (PayRepairCost())