diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json index 4716f68b1..1883f1dcf 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-wraith.json @@ -232,6 +232,10 @@ "type": "startOfPhase", "phase": "fellowship" }, + "condition": { + "type": "canSpot", + "filter": "self,attachedTo(any)" + }, "effect": [ { "type": "wound", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json index 1e33ef398..d3a26435b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json @@ -79,6 +79,10 @@ "type": "startOfPhase", "phase": "fellowship" }, + "condition": { + "type": "canSpot", + "filter": "self,attachedTo(any)" + }, "effect": [ { "type": "wound", diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ExtraPossessionClassEffectProcessor.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ExtraPossessionClassEffectProcessor.java index be2569e24..90f60325d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ExtraPossessionClassEffectProcessor.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ExtraPossessionClassEffectProcessor.java @@ -20,7 +20,7 @@ public class ExtraPossessionClassEffectProcessor implements EffectProcessor { (game, self, attachedTo) -> { DefaultActionContext actionContext = new DefaultActionContext(self.getOwner(), game, self, null, null); final Filterable attachedFilterable = attachedFilterableSource.getFilterable(actionContext); - return Filters.and(attachedFilterable).accepts(game, self); + return Filters.and(attachedFilterable).accepts(game, attachedTo); }); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/RemoveTokens.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/RemoveTokens.java index a51fa4c1f..5a2c43f81 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/RemoveTokens.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/RemoveTokens.java @@ -35,7 +35,7 @@ public class RemoveTokens implements EffectAppenderProducer { final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "self"); final String memory = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp"); - final Token token = Token.findTokenForCulture(culture); + final Token token = (culture != null) ? Token.findTokenForCulture(culture) : null; MultiEffectAppender result = new MultiEffectAppender(); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AttachAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AttachAtTest.java new file mode 100644 index 000000000..8f120afe8 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/AttachAtTest.java @@ -0,0 +1,29 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class AttachAtTest extends AbstractAtTest { + @Test + public void extraPossessionClassAttachedTo() throws DecisionResultInvalidException, CardNotFoundException { + initializeSimplestGame(); + + PhysicalCardImpl aragorn = createCard(P1, "1_89"); + PhysicalCardImpl rangersSword = createCard(P1, "1_112"); + PhysicalCardImpl knifeOfTheGaladhrim = createCard(P1, "9_17"); + + _game.getGameState().addCardToZone(_game, aragorn, Zone.FREE_CHARACTERS); + _game.getGameState().attachCard(_game, rangersSword, aragorn); + _game.getGameState().addCardToZone(_game, knifeOfTheGaladhrim, Zone.HAND); + + skipMulligans(); + + playerDecided(P1, getCardActionId(P1, "Play Knife")); + assertEquals(Zone.ATTACHED, knifeOfTheGaladhrim.getZone()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CultureTokenAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CultureTokenAtTest.java new file mode 100644 index 000000000..4ee6093d4 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/CultureTokenAtTest.java @@ -0,0 +1,25 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import static org.junit.Assert.assertNull; + +public class CultureTokenAtTest extends AbstractAtTest { + @Test + public void removeCultureTokenWithoutOne() throws DecisionResultInvalidException, CardNotFoundException { + initializeSimplestGame(); + + PhysicalCardImpl sauronsMight = createCard(P2, "19_27"); + + _game.getGameState().addCardToZone(_game, sauronsMight, Zone.HAND); + + skipMulligans(); + + playerDecided(P1, ""); + assertNull(getCardActionId(P2, "Play Sauron's Might")); + } +}