From 08b890e8baffe220024f287b122414e49cf6082d Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 5 Jan 2012 12:02:28 +0000 Subject: [PATCH] "Can be wounded X times check" now takes into account "can't take more than X wounds" effects into account. --- .../main/java/com/gempukku/lotro/cards/PlayConditions.java | 2 +- .../cards/modifiers/CantTakeMoreThanXWoundsModifier.java | 4 ++-- .../lotro/cards/modifiers/CantTakeWoundsModifier.java | 2 +- .../src/main/java/com/gempukku/lotro/filters/Filters.java | 2 +- .../gempukku/lotro/logic/effects/WoundCharactersEffect.java | 2 +- .../com/gempukku/lotro/logic/modifiers/AbstractModifier.java | 2 +- .../java/com/gempukku/lotro/logic/modifiers/Modifier.java | 2 +- .../com/gempukku/lotro/logic/modifiers/ModifiersLogic.java | 4 ++-- .../com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java | 2 +- 9 files changed, 11 insertions(+), 11 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java index 675dd408b..cc218a840 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/PlayConditions.java @@ -215,7 +215,7 @@ public class PlayConditions { public boolean visitPhysicalCard(PhysicalCard physicalCard) { if (filter.accepts(gameState, modifiersQuerying, physicalCard) && modifiersQuerying.getVitality(gameState, physicalCard) > times - && modifiersQuerying.canTakeWound(gameState, physicalCard)) + && modifiersQuerying.canTakeWounds(gameState, physicalCard, times)) _woundableCount++; return _woundableCount >= count; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeMoreThanXWoundsModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeMoreThanXWoundsModifier.java index 442cc0bfe..ad1dee2b2 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeMoreThanXWoundsModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeMoreThanXWoundsModifier.java @@ -32,7 +32,7 @@ public class CantTakeMoreThanXWoundsModifier extends AbstractModifier { } @Override - public boolean canTakeWound(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int woundsAlreadyTaken) { - return woundsAlreadyTaken < _count; + public boolean canTakeWounds(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int woundsAlreadyTaken, int woundsToTake) { + return woundsAlreadyTaken + woundsToTake <= _count; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeWoundsModifier.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeWoundsModifier.java index efc0f8667..a1813c8ec 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeWoundsModifier.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/modifiers/CantTakeWoundsModifier.java @@ -18,7 +18,7 @@ public class CantTakeWoundsModifier extends AbstractModifier { } @Override - public boolean canTakeWound(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int woundsAlreadyTaken) { + public boolean canTakeWounds(GameState gameState, ModifiersQuerying modifiersLogic, PhysicalCard physicalCard, int woundsAlreadyTaken, int woundsToTake) { return false; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java index 3948e4251..14cc52597 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java @@ -339,7 +339,7 @@ public class Filters { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.canTakeWound(gameState, physicalCard) && modifiersQuerying.getVitality(gameState, physicalCard) >= count; + return modifiersQuerying.canTakeWounds(gameState, physicalCard, count) && modifiersQuerying.getVitality(gameState, physicalCard) >= count; } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/WoundCharactersEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/WoundCharactersEffect.java index b5a40c8b7..b4dd20237 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/WoundCharactersEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/WoundCharactersEffect.java @@ -54,7 +54,7 @@ public class WoundCharactersEffect extends AbstractPreventableCardEffect { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return modifiersQuerying.canTakeWound(gameState, physicalCard); + return modifiersQuerying.canTakeWounds(gameState, physicalCard, 1); } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java index f0eb122d2..6ee00fa6e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/AbstractModifier.java @@ -132,7 +132,7 @@ public abstract class AbstractModifier implements Modifier { } @Override - public boolean canTakeWound(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int woundsAlreadyTaken) { + public boolean canTakeWounds(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int woundsAlreadyTaken, int woundsToTake) { return true; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java index c07351bd9..952e46e0d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/Modifier.java @@ -54,7 +54,7 @@ public interface Modifier { public int getOverwhelmMultiplier(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard); - public boolean canTakeWound(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int woundsAlreadyTakenInPhase); + public boolean canTakeWounds(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int woundsAlreadyTakenInPhase, int woundsToTake); public boolean canTakeArcheryWound(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index c7622e15c..589f743bb 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -444,14 +444,14 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { } @Override - public boolean canTakeWound(GameState gameState, PhysicalCard card) { + public boolean canTakeWounds(GameState gameState, PhysicalCard card, int woundsToTake) { LoggingThreadLocal.logMethodStart(card, "canTakeWound"); try { for (Modifier modifier : getModifiersAffectingCard(gameState, ModifierEffect.WOUND_MODIFIER, card)) { Integer woundsTaken = _woundsPerPhaseMap.get(card.getCardId()); if (woundsTaken == null) woundsTaken = 0; - if (!modifier.canTakeWound(gameState, this, card, woundsTaken)) + if (!modifier.canTakeWounds(gameState, this, card, woundsTaken, woundsToTake)) return false; } return true; diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java index fde4c36e7..88eb5597f 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersQuerying.java @@ -53,7 +53,7 @@ public interface ModifiersQuerying { public boolean isAdditionalCardType(GameState gameState, PhysicalCard card, CardType cardType); // Wounds/exertions - public boolean canTakeWound(GameState gameState, PhysicalCard card); + public boolean canTakeWounds(GameState gameState, PhysicalCard card, int woundsToTake); public boolean canTakeArcheryWound(GameState gameState, PhysicalCard card);