|
|
@@ -26,6 +26,7 @@ public abstract class ICardEffect
|
|
|
SetCanActivateCondition(null);
|
|
|
|
|
|
SetIsOptional(false);
|
|
|
+ SetIsOptionalOverride(null);
|
|
|
SetUseOptional(false);
|
|
|
SetIsDeclarative(false);
|
|
|
SetIsInheritedEffect(false);
|
|
|
@@ -294,6 +295,29 @@ public abstract class ICardEffect
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
+ #region Override IsOptional with a function
|
|
|
+
|
|
|
+ Func<Hashtable, bool> _isOptionalFunction = null;
|
|
|
+
|
|
|
+ public Func<Hashtable, bool> IsOptionalOverride
|
|
|
+ {
|
|
|
+ get { return _isOptionalFunction; }
|
|
|
+ private set { _isOptionalFunction = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void SetIsOptionalOverride(Func<Hashtable, bool> isOptionalOverride)
|
|
|
+ {
|
|
|
+ _isOptionalFunction = isOptionalOverride;
|
|
|
+ }
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ public bool IsOptionalCondition(Hashtable hashtable)
|
|
|
+ {
|
|
|
+ if (IsOptionalOverride != null) return IsOptionalOverride(hashtable);
|
|
|
+ return IsOptional;
|
|
|
+ }
|
|
|
+
|
|
|
#region Whether this triggering effect triggers
|
|
|
|
|
|
public bool CanTrigger(Hashtable hashtable)
|
|
|
@@ -986,7 +1010,7 @@ public static class ActivateICardEffectExtensionClass
|
|
|
|
|
|
public static IEnumerator Activate_Optional(this ActivateICardEffect activateICardEffect, Hashtable hash)
|
|
|
{
|
|
|
- if (((ICardEffect)activateICardEffect).IsOptional)
|
|
|
+ if (((ICardEffect)activateICardEffect).IsOptionalCondition(hash))
|
|
|
{
|
|
|
yield return ContinuousController.instance.StartCoroutine(GManager.instance.GetComponent<OptionalSkill>().SelectOptional((ICardEffect)activateICardEffect, hash));
|
|
|
}
|
|
|
@@ -1052,7 +1076,7 @@ public static class ActivateICardEffectExtensionClass
|
|
|
|
|
|
public static IEnumerator Activate_Execute(this ActivateICardEffect activateICardEffect, Hashtable hash)
|
|
|
{
|
|
|
- if (((ICardEffect)activateICardEffect).UseOptional || !((ICardEffect)activateICardEffect).IsOptional)
|
|
|
+ if (((ICardEffect)activateICardEffect).UseOptional || !((ICardEffect)activateICardEffect).IsOptionalCondition(hash))
|
|
|
{
|
|
|
((ICardEffect)activateICardEffect).OnProcessCallbuck?.Invoke();
|
|
|
((ICardEffect)activateICardEffect).SetOnProcessCallbuck(null);
|
|
|
@@ -1126,7 +1150,7 @@ public static class ActivateICardEffectExtensionClass
|
|
|
{
|
|
|
UnityEngine.Debug.Log($"Activate_Optional_Effect_Execute: {((ICardEffect)activateICardEffect).EffectSourceCard.BaseENGCardNameFromEntity}");
|
|
|
//Optional effect activation selection
|
|
|
- if (((ICardEffect)activateICardEffect).IsOptional)
|
|
|
+ if (((ICardEffect)activateICardEffect).IsOptionalCondition(hash))
|
|
|
{
|
|
|
if (isCheckOptional)
|
|
|
{
|
|
|
@@ -1181,7 +1205,7 @@ public static class ActivateICardEffectExtensionClass
|
|
|
public static IEnumerator Activate_Effect_Execute(this ActivateICardEffect activateICardEffect, Hashtable hash, UnityAction<ICardEffect> useEffectCallback)
|
|
|
{
|
|
|
//cost → effect processing
|
|
|
- if (((ICardEffect)activateICardEffect).UseOptional || !((ICardEffect)activateICardEffect).IsOptional)
|
|
|
+ if (((ICardEffect)activateICardEffect).UseOptional || !((ICardEffect)activateICardEffect).IsOptionalCondition(hash))
|
|
|
{
|
|
|
useEffectCallback?.Invoke((ICardEffect)activateICardEffect);
|
|
|
|
|
|
@@ -1210,13 +1234,6 @@ public static class ActivateICardEffectExtensionClass
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
-
|
|
|
- #region remove a usage of an X Per Turn
|
|
|
- public static void RemoveUse(this ActivateICardEffect activateICardEffect)
|
|
|
- {
|
|
|
- ((ICardEffect)activateICardEffect).EffectSourceCard.cEntity_EffectController.RemoveUseEffectThisTurn((ICardEffect)activateICardEffect);
|
|
|
- }
|
|
|
- #endregion
|
|
|
}
|
|
|
|
|
|
#endregion
|