From 02a5997810d61dc905e3672b54974b98a0472aa7 Mon Sep 17 00:00:00 2001 From: Sloth Date: Sat, 25 Oct 2014 21:35:46 +0000 Subject: [PATCH] - Improved stack description of FlipCoinEffect. - Added AI support for Orcish Captain. --- .../java/forge/ai/ability/FlipACoinAi.java | 19 +++++++++++++++++-- .../game/ability/effects/FlipCoinEffect.java | 5 +++++ .../res/cardsfolder/o/orcish_captain.txt | 3 +-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java b/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java index d4234b7dff7..3d98fc7e986 100644 --- a/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/FlipACoinAi.java @@ -2,6 +2,8 @@ package forge.ai.ability; import forge.ai.ComputerUtil; import forge.ai.SpellAbilityAi; +import forge.game.card.Card; +import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.spellability.SpellAbility; @@ -14,12 +16,25 @@ public class FlipACoinAi extends SpellAbilityAi { protected boolean canPlayAI(Player ai, SpellAbility sa) { if (sa.hasParam("AILogic")) { - if (sa.getParam("AILogic").equals("Never")) { + String AILogic = sa.getParam("AILogic"); + if (AILogic.equals("Never")) { return false; - } else if (sa.getParam("AILogic").equals("PhaseOut")) { + } else if (AILogic.equals("PhaseOut")) { if (!ComputerUtil.predictThreatenedObjects(sa.getActivatingPlayer(), sa).contains(sa.getHostCard())) { return false; } + } else if (AILogic.equals("KillOrcs")) { + if (ai.getGame().getPhaseHandler().getPhase().isBefore(PhaseType.END_OF_TURN) ) { + return false; + } + sa.resetTargets(); + for (Card c : ai.getOpponent().getCreaturesInPlay()) { + if (c.canBeTargetedBy(sa)) { + sa.getTargets().add(c); + return true; + } + } + return false; } } return true; diff --git a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java index af756f70c9c..9f994d54fc1 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/FlipCoinEffect.java @@ -1,5 +1,6 @@ package forge.game.ability.effects; +import forge.game.GameObject; import forge.game.ability.AbilityFactory; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; @@ -24,10 +25,14 @@ public class FlipCoinEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final Card host = sa.getHostCard(); final Player player = host.getController(); + final List tgts = getTargets(sa); final StringBuilder sb = new StringBuilder(); sb.append(player).append(" flips a coin."); + if (tgts != null && !tgts.isEmpty()) { + sb.append(" Targeting: " + tgts + "."); + } return sb.toString(); } diff --git a/forge-gui/res/cardsfolder/o/orcish_captain.txt b/forge-gui/res/cardsfolder/o/orcish_captain.txt index 564c41ef9d0..ee41a2667a2 100644 --- a/forge-gui/res/cardsfolder/o/orcish_captain.txt +++ b/forge-gui/res/cardsfolder/o/orcish_captain.txt @@ -2,9 +2,8 @@ Name:Orcish Captain ManaCost:R Types:Creature Orc Warrior PT:1/1 -A:AB$ FlipACoin | Cost$ 1 | ValidTgts$ Creature.Orc | TgtPrompt$ Select target Orc creature | WinSubAbility$ DBPumpPlus | LoseSubAbility$ DBPumpMinus | SpellDescription$ Flip a coin. If you win the flip, target Orc creature gets +2/+0 until end of turn. If you lose the flip, it gets -0/-2 until end of turn. +A:AB$ FlipACoin | Cost$ 1 | ValidTgts$ Creature.Orc | TgtPrompt$ Select target Orc creature | WinSubAbility$ DBPumpPlus | LoseSubAbility$ DBPumpMinus | AILogic$ KillOrcs | SpellDescription$ Flip a coin. If you win the flip, target Orc creature gets +2/+0 until end of turn. If you lose the flip, it gets -0/-2 until end of turn. SVar:DBPumpPlus:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ 2 | NumDef$ 0 SVar:DBPumpMinus:DB$ Pump | Cost$ 0 | Defined$ Targeted | NumAtt$ 0 | NumDef$ -2 -SVar:RemRandomDeck:True SVar:Picture:http://www.wizards.com/global/images/magic/general/orcish_captain.jpg Oracle:{1}: Flip a coin. If you win the flip, target Orc creature gets +2/+0 until end of turn. If you lose the flip, it gets -0/-2 until end of turn.