From 30b106910be6503c1e37048b355a7e8d06f3325d Mon Sep 17 00:00:00 2001 From: slapshot5 Date: Mon, 5 Dec 2011 03:10:42 +0000 Subject: [PATCH] 1) Add source of poisoning for players. 2) Add poisoning to GameLog (shown by default) --- src/main/java/forge/GameAction.java | 2 +- src/main/java/forge/GameActionUtil.java | 13 ++++++------- src/main/java/forge/GameLog.java | 1 + src/main/java/forge/Player.java | 5 +++-- .../abilityfactory/AbilityFactoryAlterLife.java | 2 +- .../card/abilityfactory/AbilityFactoryCounters.java | 6 +++--- src/main/java/forge/view/match/ViewTabber.java | 4 ++-- 7 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/forge/GameAction.java b/src/main/java/forge/GameAction.java index 5162d0c66a9..f04c418ce9d 100644 --- a/src/main/java/forge/GameAction.java +++ b/src/main/java/forge/GameAction.java @@ -388,7 +388,7 @@ public class GameAction { } if (c.hasKeyword("If CARDNAME is put into a graveyard this turn, its controller gets a poison counter.")) { - c.getController().addPoisonCounters(1); + c.getController().addPoisonCounters(1, c); } // must put card in OWNER's graveyard not controller's diff --git a/src/main/java/forge/GameActionUtil.java b/src/main/java/forge/GameActionUtil.java index 38fae7174ac..ce549281148 100644 --- a/src/main/java/forge/GameActionUtil.java +++ b/src/main/java/forge/GameActionUtil.java @@ -906,12 +906,7 @@ public final class GameActionUtil { public void resolve() { final Player player = crd.getController(); final Player opponent = player.getOpponent(); - - if (opponent.isHuman()) { - AllZone.getHumanPlayer().addPoisonCounters(poison); - } else { - AllZone.getComputerPlayer().addPoisonCounters(poison); - } + opponent.addPoisonCounters(poison, c); } }; @@ -921,7 +916,11 @@ public final class GameActionUtil { sb.append(c.getController().getOpponent()); sb.append(" gets "); sb.append(poison); - sb.append(" poison counters."); + sb.append(" poison counter"); + if (poison != 1) { + sb.append("s"); + } + sb.append("."); ability.setStackDescription(sb.toString()); final ArrayList keywords = c.getKeyword(); diff --git a/src/main/java/forge/GameLog.java b/src/main/java/forge/GameLog.java index f4466d30307..7098e517fec 100644 --- a/src/main/java/forge/GameLog.java +++ b/src/main/java/forge/GameLog.java @@ -12,6 +12,7 @@ import java.util.ArrayList; * Logging level: * 0 - Turn * 2 - Stack items + * 3 - Poison Counters * 4 - Mana abilities * 6 - All Phase information * diff --git a/src/main/java/forge/Player.java b/src/main/java/forge/Player.java index cfd795439dc..910fff442f4 100644 --- a/src/main/java/forge/Player.java +++ b/src/main/java/forge/Player.java @@ -470,7 +470,7 @@ public abstract class Player extends GameEntity { final int damageToDo = damage; if (source.hasKeyword("Infect")) { - this.addPoisonCounters(damageToDo); + this.addPoisonCounters(damageToDo, source); } else { // Worship does not reduce the damage dealt but changes the effect // of the damage @@ -841,9 +841,10 @@ public abstract class Player extends GameEntity { * @param num * a int. */ - public final void addPoisonCounters(final int num) { + public final void addPoisonCounters(final int num, final Card source) { if (!this.hasKeyword("You can't get poison counters")) { this.poisonCounters += num; + AllZone.getGameLog().add("Poison", this + " receives a poison counter from " + source, 3); this.updateObservers(); } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java index 6fc38201fe1..dfee08faeb3 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryAlterLife.java @@ -985,7 +985,7 @@ public class AbilityFactoryAlterLife { for (final Player p : tgtPlayers) { if ((tgt == null) || p.canBeTargetedBy(sa)) { - p.addPoisonCounters(amount); + p.addPoisonCounters(amount, sa.getSourceCard()); } } } diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index 488acd35ac4..d972b430422 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -1355,13 +1355,13 @@ public class AbilityFactoryCounters { if (player.isHuman() && (!this.selHuman)) { this.selHuman = true; if (AllZone.getHumanPlayer().getPoisonCounters() > 0) { - AllZone.getHumanPlayer().addPoisonCounters(1); + AllZone.getHumanPlayer().addPoisonCounters(1, sa.getSourceCard()); } } if (player.isComputer() && (!this.selComputer)) { this.selComputer = true; if (AllZone.getComputerPlayer().getPoisonCounters() > 0) { - AllZone.getComputerPlayer().addPoisonCounters(1); + AllZone.getComputerPlayer().addPoisonCounters(1, sa.getSourceCard()); } } } @@ -1452,7 +1452,7 @@ public class AbilityFactoryCounters { // give human a poison counter, if he has one if (AllZone.getHumanPlayer().getPoisonCounters() > 0) { - AllZone.getHumanPlayer().addPoisonCounters(1); + AllZone.getHumanPlayer().addPoisonCounters(1, sa.getSourceCard()); } } // comp diff --git a/src/main/java/forge/view/match/ViewTabber.java b/src/main/java/forge/view/match/ViewTabber.java index 716f33a9d33..426b45ac123 100644 --- a/src/main/java/forge/view/match/ViewTabber.java +++ b/src/main/java/forge/view/match/ViewTabber.java @@ -299,9 +299,9 @@ public class ViewTabber extends FRoundedPanel { final Font font = this.skin.getFont1().deriveFont(Font.PLAIN, 14); final Border border = new MatteBorder(0, 0, 1, 0, this.skin.getClrBorders()); - //by default, grab everything logging level 2 or less + //by default, grab everything logging level 3 or less //TODO - some option to make this configurable is probably desirable - JTextArea tar = new JTextArea(gl.getLogText(2)); + JTextArea tar = new JTextArea(gl.getLogText(3)); tar.setOpaque(false); tar.setBorder(border); tar.setFont(font);