diff --git a/res/cardsfolder/b/black_vise.txt b/res/cardsfolder/b/black_vise.txt index 875ddf82e8d..794b2321b64 100644 --- a/res/cardsfolder/b/black_vise.txt +++ b/res/cardsfolder/b/black_vise.txt @@ -3,9 +3,9 @@ ManaCost:1 Types:Artifact Text:no text T:Mode$ ChangesZone | ValidCard$ Card.Self | Origin$ Any | Destination$ Battlefield | Execute$ ChooseP | Static$ True | TriggerDescription$ As CARDNAME enters the battlefield, choose an opponent. -SVar:ChooseP:AB$ ChoosePlayer | Cost$ 0 | Defined$ You | Choices$ Opponent | AILogic$ Curse +SVar:ChooseP:AB$ ChoosePlayer | Cost$ 0 | Defined$ You | Choices$ Player.Opponent | ChoiceTitle$ Choose an opponent | AILogic$ Curse T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ Player.Chosen | TriggerZones$ Battlefield | Execute$ TrigDamage | TriggerDescription$ At the beginning of the chosen player's upkeep, CARDNAME deals X damage to that player, where X is the number of cards in his or her hand minus 4. -SVar:TrigDamage:AB$DealDamage | Cost$ 0 | Defined$ ChosenPlayer | NumDmg$ X | References$ X +SVar:TrigDamage:AB$ DealDamage | Cost$ 0 | Defined$ ChosenPlayer | NumDmg$ X | References$ X SVar:X:Count$InChosenHand/Minus.4 SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/black_vise.jpg diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 4ad6be53881..9db5f460ce9 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -2063,6 +2063,12 @@ public class Card extends GameEntity implements Comparable { } } + if (this.chosenPlayer != null) { + sb.append("\r\n[Chosen player: "); + sb.append(this.getChosenPlayer()); + sb.append("]\r\n"); + } + if (this.hauntedBy.size() != 0) { sb.append("Haunted by: "); for (final Card c : this.hauntedBy) { diff --git a/src/main/java/forge/card/abilityfactory/effects/ChoosePlayerEffect.java b/src/main/java/forge/card/abilityfactory/effects/ChoosePlayerEffect.java index b581dba105a..10a14c7c20e 100644 --- a/src/main/java/forge/card/abilityfactory/effects/ChoosePlayerEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/ChoosePlayerEffect.java @@ -34,7 +34,7 @@ public class ChoosePlayerEffect extends SpellEffect { final Target tgt = sa.getTarget(); - final ArrayList choices = sa.hasParam("Choices") ? AbilityFactory.getDefinedPlayers( + final List choices = sa.hasParam("Choices") ? AbilityFactory.getDefinedPlayers( sa.getSourceCard(), sa.getParam("Choices"), sa) : new ArrayList(Singletons.getModel().getGame().getPlayers()); final String choiceDesc = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : "Choose a player"; @@ -55,7 +55,19 @@ public class ChoosePlayerEffect extends SpellEffect { } else { if (sa.hasParam("AILogic")) { if (sa.getParam("AILogic").equals("Curse")) { - card.setChosenPlayer(p.getOpponent()); + int curseChoice; + for (curseChoice = 0; curseChoice < choices.size(); curseChoice++) { + System.out.println("Current player iterated: " + choices.get(curseChoice)); + if (choices.get(curseChoice).isHostileTo(p)) { + card.setChosenPlayer(choices.get(curseChoice)); + System.out.println("Set chosen player to " + card.getChosenPlayer()); + break; + } + } + if (card.getChosenPlayer() == null) { + System.out.println("No good curse choices. Picking first available: " + choices.get(0)); + card.setChosenPlayer(choices.get(0)); + } } else { card.setChosenPlayer(p); }