From e189543699faa45774a1d7a83fd010b73bd24d2d Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sat, 12 Feb 2011 23:21:20 +0300 Subject: [PATCH] Fixed AI doesn't play spells that targets creatureOrPlayer. The fix applied to ai-ma only, other ai jar still needs to be recompiled. --- .../src/mage/player/ai/ComputerPlayer4.java | 65 ++++++++++++------ .../src/mage/player/ai/ComputerPlayer5.java | 17 +++-- .../java/mage/player/ai/ComputerPlayer.java | 34 +++++++-- Mage.Tests/config/config.xml | 2 +- Mage.Tests/plugins/mage-player-ai-ma.jar | Bin 41438 -> 41983 bytes 5 files changed, 88 insertions(+), 30 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java index 8e606aed33..52b80e504f 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer4.java @@ -48,6 +48,7 @@ import mage.abilities.Ability; import mage.abilities.ActivatedAbility; import mage.abilities.effects.Effect; import mage.abilities.effects.SearchEffect; +import mage.cards.Card; import mage.cards.Cards; import mage.choices.Choice; import mage.filter.FilterAbility; @@ -55,6 +56,7 @@ import mage.game.Game; import mage.game.combat.Combat; import mage.game.combat.CombatGroup; import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; import mage.game.stack.StackAbility; import mage.game.stack.StackObject; import mage.game.turn.BeginCombatStep; @@ -136,18 +138,39 @@ public class ComputerPlayer4 extends ComputerPlayer implements pass(); break; case PRECOMBAT_MAIN: - case BEGIN_COMBAT: - case DECLARE_ATTACKERS: - case DECLARE_BLOCKERS: - case COMBAT_DAMAGE: - case END_COMBAT: case POSTCOMBAT_MAIN: + if (game.getActivePlayerId().equals(playerId)) { + Player player = game.getPlayer(playerId); + System.out.println("Turn::"+game.getTurnNum()); + System.out.println("[" + game.getPlayer(playerId).getName() + "] " + game.getTurn().getStepType().name() +", life=" + player.getLife()); + String s = "["; + for (Card card : player.getHand().getCards(game)) { + s += card.getName() + ";"; + } + s += "]"; + System.out.println("Hand: " + s); + s = "["; + for (Permanent permanent : game.getBattlefield().getAllPermanents()) { + if (permanent.getOwnerId().equals(player.getId())) { + s += permanent.getName() + ";"; + } + } + s += "]"; + System.out.println("Permanents: " + s); + } if (actions.size() == 0) { calculateActions(game); } act(game); break; + case BEGIN_COMBAT: + case DECLARE_ATTACKERS: + case DECLARE_BLOCKERS: + case COMBAT_DAMAGE: + case END_COMBAT: case END_TURN: + pass(); + break; case CLEANUP: pass(); break; @@ -181,8 +204,11 @@ public class ComputerPlayer4 extends ComputerPlayer implements addActionsTimed(new FilterAbility()); if (root.children.size() > 0) { root = root.children.get(0); - actions = new LinkedList(root.abilities); - combat = root.combat; + int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); + if (bestScore > currentScore) { + actions = new LinkedList(root.abilities); + combat = root.combat; + } } } } @@ -243,11 +269,11 @@ public class ComputerPlayer4 extends ComputerPlayer implements if (bestChild != null) node.children.add(bestChild); if (!currentPlayerId.equals(playerId)) { - logger.info("returning minimax beta: " + beta); + //logger.info("returning minimax beta: " + beta); return beta; } else { - logger.info("returning minimax alpha: " + alpha); + //logger.info("returning minimax alpha: " + alpha); return alpha; } } @@ -311,7 +337,7 @@ public class ComputerPlayer4 extends ComputerPlayer implements } protected int addActions(SimulationNode2 node, FilterAbility filter, int depth, int alpha, int beta) { - logger.info("addActions: " + depth + ", alpha=" + alpha + ", beta=" + beta); + logger.fine("addActions: " + depth + ", alpha=" + alpha + ", beta=" + beta); Game game = node.getGame(); int val; if (Thread.interrupted()) { @@ -320,16 +346,16 @@ public class ComputerPlayer4 extends ComputerPlayer implements return GameStateEvaluator2.evaluate(playerId, game); } if (depth <= 0 || SimulationNode2.nodeCount > maxNodes || game.isGameOver()) { - logger.info("simulating -- reached end state, node count="+ SimulationNode2.nodeCount + ", depth="+depth); + logger.fine("simulating -- reached end state, node count="+ SimulationNode2.nodeCount + ", depth="+depth); val = GameStateEvaluator2.evaluate(playerId, game); } else if (node.getChildren().size() > 0) { - logger.info("simulating -- somthing added children:" + node.getChildren().size()); + logger.fine("simulating -- somthing added children:" + node.getChildren().size()); val = minimaxAB(node, filter, depth-1, alpha, beta); } else { if (logger.isLoggable(Level.FINE)) - logger.info("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + (node.getPlayerId().equals(playerId)?"yes":"no")); + logger.fine("simulating -- alpha: " + alpha + " beta: " + beta + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + (node.getPlayerId().equals(playerId)?"yes":"no")); if (allPassed(game)) { if (!game.getStack().isEmpty()) { resolve(node, depth, game); @@ -350,10 +376,9 @@ public class ComputerPlayer4 extends ComputerPlayer implements val = GameStateEvaluator2.evaluate(playerId, game); } else if (node.getChildren().size() > 0) { - throw new RuntimeException("This shouldn't happen."); //declared attackers or blockers or triggered abilities - ///logger.info("simulating -- attack/block/trigger added children:" + node.getChildren().size()); - ///val = minimaxAB(node, filter, depth-1, alpha, beta); + logger.fine("simulating -- attack/block/trigger added children:" + node.getChildren().size()); + val = minimaxAB(node, filter, depth-1, alpha, beta); } else { val = simulatePriority(node, game, filter, depth, alpha, beta); @@ -361,7 +386,7 @@ public class ComputerPlayer4 extends ComputerPlayer implements } if (logger.isLoggable(Level.FINE)) - logger.info("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); + logger.fine("returning -- score: " + val + " depth:" + depth + " step:" + game.getTurn().getStepType() + " for player:" + game.getPlayer(node.getPlayerId()).getName()); return val; } @@ -378,7 +403,7 @@ public class ComputerPlayer4 extends ComputerPlayer implements SimulationNode2 bestNode = null; List allActions = currentPlayer.simulatePriority(game, filter); if (logger.isLoggable(Level.FINE)) - logger.info("simulating -- adding " + allActions.size() + " children:" + allActions); + logger.fine("simulating -- adding " + allActions.size() + " children:" + allActions); for (Ability action: allActions) { Game sim = game.copy(); if (sim.getPlayer(currentPlayer.getId()).activateAbility((ActivatedAbility) action.copy(), sim)) { @@ -390,7 +415,7 @@ public class ComputerPlayer4 extends ComputerPlayer implements } SimulationNode2 newNode = new SimulationNode2(sim, action, depth, currentPlayer.getId()); if (logger.isLoggable(Level.FINE)) - logger.info("simulating -- node #:" + SimulationNode2.getCount() + " actions:" + action); + logger.fine("simulating -- node #:" + SimulationNode2.getCount() + " actions:" + action); sim.checkStateAndTriggered(); int val = addActions(newNode, filter, depth-1, alpha, beta); if (!currentPlayer.getId().equals(playerId)) { @@ -416,7 +441,7 @@ public class ComputerPlayer4 extends ComputerPlayer implements break; } if (SimulationNode2.nodeCount > maxNodes) { - logger.info("simulating -- reached end-state"); + logger.fine("simulating -- reached end-state"); break; } } diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java index 9ab60808bd..f320a1da3d 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ComputerPlayer5.java @@ -112,6 +112,7 @@ public class ComputerPlayer5 extends ComputerPlayer4 implements Player { case PRECOMBAT_MAIN: if (game.getActivePlayerId().equals(playerId)) { Player player = game.getPlayer(playerId); + System.out.println("Turn:"+game.getTurnNum()); System.out.println("[" + game.getPlayer(playerId).getName() + "] Precombat Main, life=" + player.getLife()); String s = "["; for (Card card : player.getHand().getCards(game)) { @@ -181,8 +182,11 @@ public class ComputerPlayer5 extends ComputerPlayer4 implements Player { addActionsTimed(new FilterAbility()); if (root.children.size() > 0) { root = root.children.get(0); - actions = new LinkedList(root.abilities); - combat = root.combat; + int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); + if (bestScore > currentScore) { + actions = new LinkedList(root.abilities); + combat = root.combat; + } } //} } @@ -197,8 +201,11 @@ public class ComputerPlayer5 extends ComputerPlayer4 implements Player { addActionsTimed(new FilterAbility()); if (root.children.size() > 0) { root = root.children.get(0); - actions = new LinkedList(root.abilities); - combat = root.combat; + int bestScore = GameStateEvaluator2.evaluate(playerId, root.getGame()); + if (bestScore > currentScore) { + actions = new LinkedList(root.abilities); + combat = root.combat; + } } } } @@ -240,7 +247,7 @@ public class ComputerPlayer5 extends ComputerPlayer4 implements Player { logger.fine("step finished"); int testScore = GameStateEvaluator2.evaluate(playerId, game); if (game.getActivePlayerId().equals(playerId)) { - if (testScore < currentScore) { + if (testScore <= currentScore) { // if score at end of step is worse than original score don't check further logger.fine("simulating -- abandoning check, no immediate benefit"); val = testScore; diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index 4f1a120d7f..358572660f 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -64,6 +64,7 @@ import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.TrampleAbility; import mage.abilities.mana.ManaAbility; import mage.abilities.mana.ManaOptions; +import mage.filter.common.*; import mage.game.draft.Draft; import mage.player.ai.simulators.CombatGroupSimulator; import mage.player.ai.simulators.CombatSimulator; @@ -73,10 +74,6 @@ import mage.cards.Cards; import mage.cards.decks.Deck; import mage.choices.Choice; import mage.filter.FilterPermanent; -import mage.filter.common.FilterCreatureForCombat; -import mage.filter.common.FilterCreaturePermanent; -import mage.filter.common.FilterLandCard; -import mage.filter.common.FilterNonlandCard; import mage.game.Game; import mage.game.Table; import mage.game.combat.CombatGroup; @@ -90,6 +87,7 @@ import mage.target.TargetAmount; import mage.target.TargetCard; import mage.target.TargetPermanent; import mage.target.TargetPlayer; +import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetDiscard; import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetCreatureOrPlayerAmount; @@ -271,6 +269,34 @@ public class ComputerPlayer> extends PlayerImpl i } } } + if (target instanceof TargetCreatureOrPlayer) { + List targets; + TargetCreatureOrPlayer t = ((TargetCreatureOrPlayer)target); + if (outcome.isGood()) { + targets = threats(playerId, ((FilterCreatureOrPlayer)t.getFilter()).getCreatureFilter(), game); + } + else { + targets = threats(opponentId, ((FilterCreatureOrPlayer)t.getFilter()).getCreatureFilter(), game); + } + for (Permanent permanent: targets) { + if (((TargetPermanent)target).canTarget(playerId, permanent.getId(), source, game)) { + target.addTarget(permanent.getId(), source, game); + return true; + } + } + if (outcome.isGood()) { + if (target.canTarget(playerId, source, game)) { + target.addTarget(playerId, source, game); + return true; + } + } + else { + if (target.canTarget(playerId, source, game)) { + target.addTarget(opponentId, source, game); + return true; + } + } + } return false; } diff --git a/Mage.Tests/config/config.xml b/Mage.Tests/config/config.xml index b3ae1e8072..763e09187a 100644 --- a/Mage.Tests/config/config.xml +++ b/Mage.Tests/config/config.xml @@ -4,7 +4,7 @@ - + diff --git a/Mage.Tests/plugins/mage-player-ai-ma.jar b/Mage.Tests/plugins/mage-player-ai-ma.jar index a7d5b0a71df0a702bb11ba299467ce0bafc90880..8792f2746e5327201c3dd440fa01359f1760c57b 100644 GIT binary patch delta 21728 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 Z$X^-B+x|8CpE-C?&94OLYI4Y<{|8*4w~_z= delta 21188 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 W-(jj4^XkC~VWx`2*wVB2JO2-Q$e@n^