diff --git a/forge-game/src/main/java/forge/game/CardTraitBase.java b/forge-game/src/main/java/forge/game/CardTraitBase.java
index 401161dc378..37b2d5508e9 100644
--- a/forge-game/src/main/java/forge/game/CardTraitBase.java
+++ b/forge-game/src/main/java/forge/game/CardTraitBase.java
@@ -168,14 +168,6 @@ public abstract class CardTraitBase extends GameObject {
if ("True".equalsIgnoreCase(params.get("Bloodthirst")) && !hostController.hasBloodthirst()) return false;
if ("True".equalsIgnoreCase(params.get("FatefulHour")) && hostController.getLife() > 5) return false;
- if ("You".equalsIgnoreCase(params.get("PlayersPoisoned")) && hostController.getPoisonCounters() == 0) return false;
- if ("Opponent".equalsIgnoreCase(params.get("PlayersPoisoned")) && hostController.getOpponent().getPoisonCounters() == 0) return false;
- if ("Each".equalsIgnoreCase(params.get("PlayersPoisoned"))) {
- for( Player p : game.getPlayers())
- if( p.getPoisonCounters() == 0 )
- return false;
- }
-
if (params.containsKey("LifeTotal")) {
final String player = params.get("LifeTotal");
String lifeCompare = "GE1";
@@ -184,8 +176,11 @@ public abstract class CardTraitBase extends GameObject {
if (player.equals("You")) {
life = hostController.getLife();
}
- if (player.equals("Opponent")) {
- life = hostController.getOpponent().getLife();
+ if (player.equals("OpponentSmallest")) {
+ life = hostController.getOpponentsSmallestLifeTotal();
+ }
+ if (player.equals("OpponentGreatest")) {
+ life = hostController.getOpponentsGreatestLifeTotal();
}
if (player.equals("ActivePlayer")) {
life = game.getPhaseHandler().getPlayerTurn().getLife();
diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java
index 5844c507c80..141725d26c8 100644
--- a/forge-game/src/main/java/forge/game/Game.java
+++ b/forge-game/src/main/java/forge/game/Game.java
@@ -461,44 +461,6 @@ public class Game {
return card;
}
- /**
- *
- * compareTypeAmountInPlay.
- *
- *
- * @param player
- * a {@link forge.game.player.Player} object.
- * @param type
- * a {@link java.lang.String} object.
- * @return a int.
- */
- public static int compareTypeAmountInPlay(final Player player, final String type) {
- // returns the difference between player's
- final Player opponent = player.getOpponent();
- final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Battlefield), type);
- final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Battlefield), type);
- return (playerList.size() - opponentList.size());
- }
-
- /**
- *
- * compareTypeAmountInGraveyard.
- *
- *
- * @param player
- * a {@link forge.game.player.Player} object.
- * @param type
- * a {@link java.lang.String} object.
- * @return a int.
- */
- public static int compareTypeAmountInGraveyard(final Player player, final String type) {
- // returns the difference between player's
- final Player opponent = player.getOpponent();
- final List playerList = CardLists.getType(player.getCardsIn(ZoneType.Graveyard), type);
- final List opponentList = CardLists.getType(opponent.getCardsIn(ZoneType.Graveyard), type);
- return (playerList.size() - opponentList.size());
- }
-
public List getCardsInGame() {
final List all = new ArrayList();
for (final Player player : getPlayers()) {
diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java
index 2cd77b28627..c561d7ef6fa 100644
--- a/forge-game/src/main/java/forge/game/player/Player.java
+++ b/forge-game/src/main/java/forge/game/player/Player.java
@@ -308,6 +308,15 @@ public class Player extends GameEntity implements Comparable {
return result;
}
+ /**
+ * Find the smallest life total amongst this player's opponents.
+ *
+ * @return the life total of the opponent with the least life.
+ */
+ public final int getOpponentsSmallestLifeTotal() {
+ return Aggregates.min(this.getOpponents(), Accessors.FN_GET_LIFE_TOTAL);
+ }
+
/**
* Find the greatest life total amongst this player's opponents.
*
diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java
index c8eba13fe3e..d43e375aa50 100644
--- a/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java
+++ b/forge-game/src/main/java/forge/game/trigger/TriggerAttacks.java
@@ -93,6 +93,12 @@ public class TriggerAttacks extends Trigger {
}
}
+ if (this.mapParams.containsKey("DefendingPlayerPoisoned")) {
+ if (((Player) runParams2.get("Attacked")).getPoisonCounters() == 0) {
+ return false;
+ }
+ }
+
return true;
}
diff --git a/forge-gui/res/cardsfolder/l/lurking_jackals.txt b/forge-gui/res/cardsfolder/l/lurking_jackals.txt
index 05e08793605..a020794f4b9 100644
--- a/forge-gui/res/cardsfolder/l/lurking_jackals.txt
+++ b/forge-gui/res/cardsfolder/l/lurking_jackals.txt
@@ -1,7 +1,7 @@
Name:Lurking Jackals
ManaCost:B
Types:Enchantment
-T:Mode$ Always | LifeTotal$ Opponent | LifeAmount$ LE10 | TriggerZones$ Battlefield | Execute$ TrigLurkingJackalsAnimate | IsPresent$ Card.Self+Enchantment | ResolvingCheck$ IsPresent | TriggerDescription$ When an opponent has 10 or less life, if CARDNAME is an enchantment, CARDNAME becomes a 3/2 Hound creature.
+T:Mode$ Always | LifeTotal$ OpponentSmallest | LifeAmount$ LE10 | TriggerZones$ Battlefield | Execute$ TrigLurkingJackalsAnimate | IsPresent$ Card.Self+Enchantment | ResolvingCheck$ IsPresent | TriggerDescription$ When an opponent has 10 or less life, if CARDNAME is an enchantment, CARDNAME becomes a 3/2 Hound creature.
SVar:TrigLurkingJackalsAnimate:AB$ Animate | Cost$ 0 | Types$ Creature,Hound | Power$ 3 | Toughness$ 2 | OverwriteTypes$ True | Permanent$ True
SVar:Picture:http://www.wizards.com/global/images/magic/general/lurking_jackals.jpg
-Oracle:When an opponent has 10 or less life, if Lurking Jackals is an enchantment, it becomes a 3/2 Hound creature.
+Oracle:When an opponent has 10 or less life, if Lurking Jackals is an enchantment, it becomes a 3/2 Hound creature.
\ No newline at end of file
diff --git a/forge-gui/res/cardsfolder/s/septic_rats.txt b/forge-gui/res/cardsfolder/s/septic_rats.txt
index f2efe3bac08..f11f978e8df 100644
--- a/forge-gui/res/cardsfolder/s/septic_rats.txt
+++ b/forge-gui/res/cardsfolder/s/septic_rats.txt
@@ -3,7 +3,7 @@ ManaCost:1 B B
Types:Creature Rat
PT:2/2
K:Infect
-T:Mode$ Attacks | ValidCard$ Creature.Self | TriggerZones$ Battlefield | PlayersPoisoned$ Opponent | Execute$ TrigPump | TriggerDescription$ When CARDNAME attacks, if defending player is poisoned, it gets +1/+1 until end of turn.
+T:Mode$ Attacks | ValidCard$ Creature.Self | TriggerZones$ Battlefield | DefendingPlayerPoisoned$ True | Execute$ TrigPump | TriggerDescription$ When CARDNAME attacks, if defending player is poisoned, it gets +1/+1 until end of turn.
SVar:TrigPump:AB$Pump | Cost$ 0 | NumAtt$ 1 | NumDef$ 1 | Defined$ Self
SVar:Picture:http://www.wizards.com/global/images/magic/general/septic_rats.jpg
Oracle:Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)\nWhenever Septic Rats attacks, if defending player is poisoned, it gets +1/+1 until end of turn.