diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java index cfe5b072a..0d83d4818 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java @@ -93,11 +93,6 @@ public abstract class AbstractLotroCardBlueprint implements LotroCardBlueprint { return null; } - @Override - public int getTwilightCost() { - throw new UnsupportedOperationException("This method should not be called on this card"); - } - @Override public int getStrength() { throw new UnsupportedOperationException("This method should not be called on this card"); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/TransferPermanentAction.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/TransferPermanentAction.java index 0b453fddf..198a3a207 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/TransferPermanentAction.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/actions/TransferPermanentAction.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.cards.actions; import com.gempukku.lotro.cards.effects.PayTwilightCostEffect; -import com.gempukku.lotro.cards.effects.RemoveCardFromHandEffect; import com.gempukku.lotro.cards.effects.TransferPermanentEffect; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.game.PhysicalCard; @@ -16,7 +15,6 @@ public class TransferPermanentAction extends CostToEffectAction { addCost(new ChooseActiveCardEffect(card.getOwner(), "Choose target to attach to", filter) { @Override protected void cardSelected(LotroGame game, PhysicalCard target) { - addCost(new RemoveCardFromHandEffect(card)); addCost(new PayTwilightCostEffect(card)); addCost(new TransferPermanentEffect(card, target)); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TransferPermanentEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TransferPermanentEffect.java index 14488e901..c785e2d85 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TransferPermanentEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TransferPermanentEffect.java @@ -17,6 +17,6 @@ public class TransferPermanentEffect extends UnrespondableEffect { @Override public void playEffect(LotroGame game) { GameState gameState = game.getGameState(); - gameState.attachCard(_physicalCard, _targetCard); + gameState.transferCard(_physicalCard, _targetCard); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java index 733f46638..0ccc137ec 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java @@ -47,7 +47,7 @@ public class Card1_001 extends AbstractLotroCardBlueprint { modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER)); modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND)); - return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers); + return new CompositeModifier(self, Filters.attachedTo(self), modifiers); } @Override @@ -84,4 +84,9 @@ public class Card1_001 extends AbstractLotroCardBlueprint { return null; } } + + @Override + public int getTwilightCost() { + throw new UnsupportedOperationException("This method should not be called on this card"); + } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java index 1844f3cf8..9a2067af6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java @@ -45,7 +45,7 @@ public class Card1_002 extends AbstractLotroCardBlueprint { modifiers.add(new KeywordModifier(null, null, Keyword.RING_BEARER)); modifiers.add(new KeywordModifier(null, null, Keyword.RING_BOUND)); - return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers); + return new CompositeModifier(self, Filters.attachedTo(self), modifiers); } @Override @@ -82,4 +82,8 @@ public class Card1_002 extends AbstractLotroCardBlueprint { } } + @Override + public int getTwilightCost() { + throw new UnsupportedOperationException("This method should not be called on this card"); + } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_008.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_008.java index fec7aa644..38d4ae215 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_008.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_008.java @@ -42,6 +42,6 @@ public class Card1_008 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new OverwhelmedByMultiplierModifier(self, Filters.sameCard(self.getAttachedTo()), 3); + return new OverwhelmedByMultiplierModifier(self, Filters.attachedTo(self), 3); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_009.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_009.java index 324ccd2e7..1e487d532 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_009.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_009.java @@ -51,7 +51,7 @@ public class Card1_009 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), 2); + return new StrengthModifier(self, Filters.attachedTo(self), 2); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_014.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_014.java index 816d32b44..84f9d8252 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_014.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_014.java @@ -55,7 +55,7 @@ public class Card1_014 extends AbstractAttachableFPPossession { List modifiers = new LinkedList(); modifiers.add(new StrengthModifier(null, null, 2)); modifiers.add(new KeywordModifier(null, null, Keyword.DAMAGE)); - return new CompositeModifier(self, Filters.sameCard(self.getAttachedTo()), modifiers); + return new CompositeModifier(self, Filters.attachedTo(self), modifiers); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_017.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_017.java index 86ae11685..e54fb21f3 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_017.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/dwarven/Card1_017.java @@ -39,6 +39,7 @@ public class Card1_017 extends AbstractAlly { appendHealAllyActions(actions, game, self); if (game.getGameState().getCurrentPhase() == Phase.FELLOWSHIP + && self.getZone() == Zone.FREE_SUPPORT && PlayConditions.canExert(game.getGameState(), game.getModifiersQuerying(), self)) { CostToEffectAction action = new CostToEffectAction(self, "Exert Grimir to shuffle a DWARVEN event from your discard pile into draw deck"); action.addCost(new ExertCharacterEffect(self)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java index 771d082f3..fe9927d3c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_031.java @@ -51,7 +51,7 @@ public class Card1_031 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new AbstractModifier(self, "Strength +2, if at Plains another +2", Filters.sameCard(self.getAttachedTo())) { + return new AbstractModifier(self, "Strength +2, if at Plains another +2", Filters.attachedTo(self)) { @Override public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) { return modifiersQuerying.hasKeyword(gameState, gameState.getCurrentSite(), Keyword.PLAINS) ? 4 : 2; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_033.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_033.java index d1dda50a8..07d34d72d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_033.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_033.java @@ -50,7 +50,7 @@ public class Card1_033 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), 1); + return new StrengthModifier(self, Filters.attachedTo(self), 1); } @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_041.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_041.java index 3e266c869..a9f68fd7a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_041.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_041.java @@ -42,6 +42,6 @@ public class Card1_041 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new KeywordModifier(self, Filters.sameCard(self.getAttachedTo()), Keyword.ARCHER); + return new KeywordModifier(self, Filters.attachedTo(self), Keyword.ARCHER); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java index 6ec2cd39e..cbfe51ea5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_047.java @@ -93,6 +93,6 @@ public class Card1_047 extends AbstractAttachableFPPossession { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new StrengthModifier(self, Filters.sameCard(self.getAttachedTo()), 2); + return new StrengthModifier(self, Filters.attachedTo(self), 2); } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_049.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_049.java index ae6be39a9..bf4d53295 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_049.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_049.java @@ -46,7 +46,7 @@ public class Card1_049 extends AbstractAttachable { @Override public Modifier getAlwaysOnEffect(PhysicalCard self) { - return new AbstractModifier(self, "Streng +1 for each Elf you can spot (limit +3)", Filters.sameCard(self.getAttachedTo())) { + return new AbstractModifier(self, "Streng +1 for each Elf you can spot (limit +3)", Filters.attachedTo(self)) { @Override public int getStrength(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard, int result) { int count = Math.min(3, Filters.countActive(gameState, modifiersQuerying, Filters.keyword(Keyword.ELF))); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_059.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_059.java index 0003d6615..0a16b140b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_059.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/elven/Card1_059.java @@ -34,6 +34,11 @@ public class Card1_059 extends AbstractLotroCardBlueprint { super(Side.FREE_PEOPLE, CardType.CONDITION, Culture.ELVEN, "Shoulder to Shoulder", "1_59"); } + @Override + public int getTwilightCost() { + return 1; + } + @Override public List getPlayablePhaseActions(final String playerId, LotroGame game, PhysicalCard self) { if (PlayConditions.canPlayFromHandDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)) { 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 cbb7183d6..eae315d02 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 @@ -163,11 +163,11 @@ public class Filters { }; } - public static Filter attachedTo(final int cardId) { + public static Filter attachedTo(final PhysicalCard attachment) { return new Filter() { @Override public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return physicalCard.getZone() == Zone.ATTACHED && physicalCard.getAttachedTo().getCardId() == cardId; + return physicalCard == attachment.getAttachedTo(); } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java index de55030c0..28e4026e0 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/GameState.java @@ -133,10 +133,13 @@ public class GameState { return zone == Zone.DISCARD || zone == Zone.HAND; } + public void transferCard(PhysicalCard card, PhysicalCard transferTo) { + ((PhysicalCardImpl) card).attachTo((PhysicalCardImpl) transferTo); + } + public void attachCard(PhysicalCard card, PhysicalCard attachTo) { ((PhysicalCardImpl) card).attachTo((PhysicalCardImpl) attachTo); - if (card.getZone() != Zone.ATTACHED) - addCardToZone(card, Zone.ATTACHED); + addCardToZone(card, Zone.ATTACHED); } public void setRingBearer(PhysicalCard card) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java index 36a3db01c..b712918e3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java @@ -30,6 +30,7 @@ public class PlayRingBearerRingAndAddBurdersGameProcess implements GameProcess { gameState.setRingBearer(ringBearer); PhysicalCard ring = Filters.filter(gameState.getDeck(playerId), gameState, _game.getModifiersQuerying(), Filters.type(CardType.THE_ONE_RING)).get(0); + gameState.removeCardFromZone(ring); gameState.attachCard(ring, ringBearer); gameState.addBurdens(playerId, _bids.get(playerId));