diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory.java b/src/main/java/forge/card/abilityFactory/AbilityFactory.java index 9b2d7080b94..462d6a546e2 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory.java @@ -501,6 +501,16 @@ public class AbilityFactory { SA = AbilityFactory_Combat.createDrawbackFog(this); } } + + else if (API.equals("RemoveFromCombat")) { + if (isAb) { + SA = AbilityFactory_Combat.createAbilityRemoveFromCombat(this); + } else if (isSp) { + SA = AbilityFactory_Combat.createSpellRemoveFromCombat(this); + } else if (isDb) { + SA = AbilityFactory_Combat.createDrawbackRemoveFromCombat(this); + } + } else if (API.equals("Untap")) { if (isAb) { diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java index 79bb426491d..d0e734ecb61 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Combat.java @@ -9,6 +9,7 @@ import forge.CombatUtil; import forge.ComputerUtil; import forge.Constant; import forge.Player; +import forge.card.cardFactory.CardFactoryUtil; import forge.card.spellability.Ability_Activated; import forge.card.spellability.Ability_Sub; import forge.card.spellability.Spell; @@ -466,5 +467,204 @@ public final class AbilityFactory_Combat { } } //mustAttackResolve() + + //************************************************************** + //********************* RemoveFromCombat *********************** + //************************************************************** + + /** + *
createAbilityRemoveFromCombat.
+ * + * @param af a {@link forge.card.abilityFactory.AbilityFactory} object. + * @return a {@link forge.card.spellability.SpellAbility} object. + * + * @since 1.1.6 + */ + public static SpellAbility createAbilityRemoveFromCombat(final AbilityFactory af) { + final SpellAbility abRemCombat = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { + private static final long serialVersionUID = -2472319390656924874L; + + @Override + public String getStackDescription() { + return removeFromCombatStackDescription(af, this); + } + + @Override + public boolean canPlayAI() { + return removeFromCombatCanPlayAI(af, this); + } + + @Override + public void resolve() { + removeFromCombatResolve(af, this); + } + + @Override + public boolean doTrigger(final boolean mandatory) { + return removeFromCombatDoTriggerAI(af, this, mandatory); + } + + }; + return abRemCombat; + } + + /** + *createSpellRemoveFeomCombat.
+ * + * @param af a {@link forge.card.abilityFactory.AbilityFactory} object. + * @return a {@link forge.card.spellability.SpellAbility} object. + */ + public static SpellAbility createSpellRemoveFromCombat(final AbilityFactory af) { + final SpellAbility spRemCombat = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { + private static final long serialVersionUID = 4086879057558760897L; + + @Override + public String getStackDescription() { + return removeFromCombatStackDescription(af, this); + } + + @Override + public boolean canPlayAI() { + return removeFromCombatCanPlayAI(af, this); + } + + @Override + public void resolve() { + removeFromCombatResolve(af, this); + } + + }; + return spRemCombat; + } + + /** + *createDrawbackRemoveFromCombat.
+ * + * @param af a {@link forge.card.abilityFactory.AbilityFactory} object. + * @return a {@link forge.card.spellability.SpellAbility} object. + */ + public static SpellAbility createDrawbackRemoveFromCombat(final AbilityFactory af) { + final SpellAbility dbRemCombat = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { + private static final long serialVersionUID = 5080737903616292224L; + + @Override + public void resolve() { + removeFromCombatResolve(af, this); + } + + @Override + public boolean chkAI_Drawback() { + return removeFromCombatPlayDrawbackAI(af, this); + } + + @Override + public boolean doTrigger(final boolean mandatory) { + return removeFromCombatDoTriggerAI(af, this, mandatory); + } + + }; + return dbRemCombat; + } + + private static String removeFromCombatStackDescription(final AbilityFactory af, final SpellAbility sa) { + HashMap