From 5ae42b4c714f267e4feb580bf63e097e0652c063 Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Thu, 26 Jan 2023 10:15:53 +0100 Subject: [PATCH] Clean up --- forge-ai/src/main/java/forge/ai/AiController.java | 2 ++ forge-ai/src/main/java/forge/ai/AiCostDecision.java | 4 ++-- forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java | 2 ++ forge-ai/src/main/java/forge/ai/PlayerControllerAi.java | 2 +- forge-game/src/main/java/forge/game/card/CardProperty.java | 4 ---- forge-game/src/main/java/forge/game/cost/CostEnlist.java | 7 +++---- .../src/main/java/forge/player/HumanCostDecision.java | 2 +- 7 files changed, 11 insertions(+), 12 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiController.java b/forge-ai/src/main/java/forge/ai/AiController.java index 39c1c6c8d80..9fc800776ef 100644 --- a/forge-ai/src/main/java/forge/ai/AiController.java +++ b/forge-ai/src/main/java/forge/ai/AiController.java @@ -1637,6 +1637,8 @@ public class AiController { return false; } + // TODO needed to pay propaganda + return true; } diff --git a/forge-ai/src/main/java/forge/ai/AiCostDecision.java b/forge-ai/src/main/java/forge/ai/AiCostDecision.java index 60df89a9da1..168d5974951 100644 --- a/forge-ai/src/main/java/forge/ai/AiCostDecision.java +++ b/forge-ai/src/main/java/forge/ai/AiCostDecision.java @@ -240,9 +240,9 @@ public class AiCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(final CostEnlist cost) { - CardCollection choices = cost.getCardsForEnlisting(player, source, ability); + CardCollection choices = CostEnlist.getCardsForEnlisting(player); CardLists.sortByPowerDesc(choices); - return PaymentDecision.card(choices.getFirst()); + return choices.isEmpty() ? null : PaymentDecision.card(choices.getFirst()); } @Override diff --git a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java index 308cc5bbb6d..c249824032a 100644 --- a/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java +++ b/forge-ai/src/main/java/forge/ai/ComputerUtilCombat.java @@ -1208,6 +1208,8 @@ public class ComputerUtilCombat { theTriggers.addAll(blocker.getTriggers()); } + // TODO consider Exert + Enlist + // look out for continuous static abilities that only care for attacking creatures if (!withoutCombatStaticAbilities) { final CardCollectionView cardList = CardCollection.combine(game.getCardsIn(ZoneType.Battlefield), game.getCardsIn(ZoneType.Command)); diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index aceeaa77065..769e98069be 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -341,7 +341,7 @@ public class PlayerControllerAi extends PlayerController { @Override public List enlistAttackers(List attackers) { - CardCollection cards = CostEnlist.getCardsForEnlisting(brains.getPlayer(), null, null); + CardCollection cards = CostEnlist.getCardsForEnlisting(brains.getPlayer()); ComputerUtilCard.sortByEvaluateCreature(new CardCollection(attackers)); // do not enlist more than available payment choices attackers = attackers.subList(0, cards.size()); diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index a8276aa1391..2201efef817 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1081,10 +1081,6 @@ public class CardProperty { if (card.isFirstTurnControlled()) { return false; } - } else if (property.startsWith("sick")) { - if (!card.isSick()) { - return false; - } } else if (property.startsWith("startedTheTurnUntapped")) { if (!card.hasStartedTheTurnUntapped()) { return false; diff --git a/forge-game/src/main/java/forge/game/cost/CostEnlist.java b/forge-game/src/main/java/forge/game/cost/CostEnlist.java index 7f882c3bcf9..1fd69cf5bb8 100644 --- a/forge-game/src/main/java/forge/game/cost/CostEnlist.java +++ b/forge-game/src/main/java/forge/game/cost/CostEnlist.java @@ -26,7 +26,6 @@ import forge.game.card.CardLists; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.trigger.TriggerType; -import forge.game.zone.ZoneType; /** * The Class CostExert. @@ -70,7 +69,7 @@ public class CostEnlist extends CostPartWithTrigger { */ @Override public final boolean canPay(final SpellAbility ability, final Player payer, final boolean effect) { - return true; + return !getCardsForEnlisting(payer).isEmpty(); } @Override @@ -101,8 +100,8 @@ public class CostEnlist extends CostPartWithTrigger { return visitor.visit(this); } - public static CardCollection getCardsForEnlisting(Player active, Card source, SpellAbility paySA) { - return CardLists.getValidCards(active.getCardsIn(ZoneType.Battlefield), "Creature.notattacking+untapped+!sick", active, source, paySA); + public static CardCollection getCardsForEnlisting(Player active) { + return CardLists.filter(active.getCreaturesInPlay(), c -> c.isUntapped() && !c.isSick() && !c.isAttacking()); } } diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 3e08639a5de..555dea22daa 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -468,7 +468,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { @Override public PaymentDecision visit(final CostEnlist cost) { - CardCollectionView list = cost.getCardsForEnlisting(player, source, ability); + CardCollectionView list = CostEnlist.getCardsForEnlisting(player); if (list.isEmpty()) { return null; }