diff --git a/src/forge/card/abilityFactory/AbilityFactory_Turns.java b/src/forge/card/abilityFactory/AbilityFactory_Turns.java index 570c742327f..4b2a3ba4ef9 100644 --- a/src/forge/card/abilityFactory/AbilityFactory_Turns.java +++ b/src/forge/card/abilityFactory/AbilityFactory_Turns.java @@ -4,10 +4,8 @@ import java.util.ArrayList; import java.util.HashMap; import forge.AllZone; -import forge.Card; import forge.ComputerUtil; 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; @@ -15,21 +13,22 @@ import forge.card.spellability.SpellAbility; import forge.card.spellability.Target; public class AbilityFactory_Turns { + // ************************************************************************* // ************************* ADD TURN ************************************** // ************************************************************************* - public static SpellAbility createAbilityAddTurn(final AbilityFactory AF){ + public static SpellAbility createAbilityAddTurn(final AbilityFactory af) { - final SpellAbility abAddTurn = new Ability_Activated(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()){ + final SpellAbility abAddTurn = new Ability_Activated(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = -3526200766738015688L; - final AbilityFactory af = AF; @Override - public String getStackDescription(){ + public String getStackDescription() { return addTurnStackDescription(af, this); } + @Override public boolean canPlayAI() { return addTurnCanPlayAI(af, this); } @@ -48,21 +47,17 @@ public class AbilityFactory_Turns { return abAddTurn; } - public static SpellAbility createSpellAddTurn(final AbilityFactory AF){ - final SpellAbility spAddTurn = new Spell(AF.getHostCard(), AF.getAbCost(), AF.getAbTgt()){ + public static SpellAbility createSpellAddTurn(final AbilityFactory af) { + final SpellAbility spAddTurn = new Spell(af.getHostCard(), af.getAbCost(), af.getAbTgt()) { private static final long serialVersionUID = -3921131887560356006L; - final AbilityFactory af = AF; @Override public String getStackDescription(){ return addTurnStackDescription(af, this); } - public boolean canPlayAI() - { - // if X depends on abCost, the AI needs to choose which card he would sacrifice first - // then call xCount with that card to properly calculate the amount - // Or choosing how many to sacrifice + @Override + public boolean canPlayAI() { return addTurnCanPlayAI(af, this); } @@ -75,13 +70,12 @@ public class AbilityFactory_Turns { return spAddTurn; } - public static SpellAbility createDrawbackAddTurn(final AbilityFactory AF){ - final SpellAbility dbAddTurn = new Ability_Sub(AF.getHostCard(), AF.getAbTgt()){ + public static SpellAbility createDrawbackAddTurn(final AbilityFactory af) { + final SpellAbility dbAddTurn = new Ability_Sub(af.getHostCard(), af.getAbTgt()) { private static final long serialVersionUID = -562517287448810951L; - final AbilityFactory af = AF; @Override - public String getStackDescription(){ + public String getStackDescription() { return addTurnStackDescription(af, this); } @@ -104,7 +98,7 @@ public class AbilityFactory_Turns { return dbAddTurn; } - private static String addTurnStackDescription(AbilityFactory af, SpellAbility sa){ + private static String addTurnStackDescription(AbilityFactory af, SpellAbility sa) { StringBuilder sb = new StringBuilder(); int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), af.getMapParams().get("NumTurns"), sa); @@ -116,7 +110,7 @@ public class AbilityFactory_Turns { ArrayList tgtPlayers; Target tgt = af.getAbTgt(); - if (tgt != null) + if(tgt != null) tgtPlayers = tgt.getTargetPlayers(); else tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa); @@ -136,47 +130,31 @@ public class AbilityFactory_Turns { sb.append(" after this one."); Ability_Sub abSub = sa.getSubAbility(); - if (abSub != null) { + if(abSub != null) { sb.append(abSub.getStackDescription()); } return sb.toString(); } - private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa){ - if (!ComputerUtil.canPayCost(sa)) - return false; - - Target tgt = sa.getTarget(); - - if (sa.getTarget() != null){ - tgt.resetTargets(); - sa.getTarget().addTarget(AllZone.ComputerPlayer); - } - else{ - ArrayList tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa); - for (Player p : tgtPlayers) - if (p.isHuman()) - return false; - // not sure if the AI should be playing with cards that give the Human more turns. - } - return true; + private static boolean addTurnCanPlayAI(final AbilityFactory af, final SpellAbility sa) { + return addTurnTriggerAI(af, sa, false); } - private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory){ + private static boolean addTurnTriggerAI(final AbilityFactory af, final SpellAbility sa, boolean mandatory) { if (!ComputerUtil.canPayCost(sa)) return false; Target tgt = sa.getTarget(); - if (sa.getTarget() != null){ + if(sa.getTarget() != null){ tgt.resetTargets(); sa.getTarget().addTarget(AllZone.ComputerPlayer); } else{ ArrayList tgtPlayers = AbilityFactory.getDefinedPlayers(sa.getSourceCard(), af.getMapParams().get("Defined"), sa); - for (Player p : tgtPlayers) - if (p.isHuman() && !mandatory) + for(Player p : tgtPlayers) + if(p.isHuman() && !mandatory) return false; // not sure if the AI should be playing with cards that give the Human more turns. } @@ -185,7 +163,6 @@ public class AbilityFactory_Turns { private static void addTurnResolve(final AbilityFactory af, final SpellAbility sa){ HashMap params = af.getMapParams(); - Card card = af.getHostCard(); int numTurns = AbilityFactory.calculateAmount(af.getHostCard(), params.get("NumTurns"), sa); ArrayList tgtPlayers; @@ -204,17 +181,12 @@ public class AbilityFactory_Turns { } } - if (af.hasSubAbility()){ + if(af.hasSubAbility()) { Ability_Sub abSub = sa.getSubAbility(); - if (abSub != null){ + if(abSub != null) { abSub.resolve(); } - else{ - String DrawBack = params.get("SubAbility"); - if (af.hasSubAbility()) - CardFactoryUtil.doDrawBack(DrawBack, numTurns, card.getController(), card.getController().getOpponent(), tgtPlayers.get(0), card, null, sa); - } } } -} +}//end class AbilityFactory_Turns