From ed12534517b821e88e0d047eb5a6ddb1fff7e5b2 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Thu, 13 Oct 2011 16:32:24 +0000 Subject: [PATCH] "Ceorl" --- ...ventEffect.java => PreventCardEffect.java} | 4 +- .../effects/TakeControlOfASiteEffect.java | 20 ++++++- .../gempukku/lotro/cards/set1/Card1_001.java | 4 +- .../gempukku/lotro/cards/set1/Card1_002.java | 4 +- .../lotro/cards/set1/gandalf/Card1_076.java | 4 +- .../lotro/cards/set1/gandalf/Card1_085.java | 4 +- .../lotro/cards/set1/moria/Card1_173.java | 4 +- .../lotro/cards/set1/shire/Card1_287.java | 4 +- .../lotro/cards/set1/wraith/Card1_203.java | 4 +- .../lotro/cards/set2/dwarven/Card2_003.java | 4 +- .../lotro/cards/set2/elven/Card2_018.java | 4 +- .../lotro/cards/set2/gondor/Card2_034.java | 4 +- .../lotro/cards/set2/shire/Card2_106.java | 4 +- .../lotro/cards/set2/wraith/Card2_077.java | 4 +- .../lotro/cards/set3/elven/Card3_007.java | 4 +- .../lotro/cards/set3/elven/Card3_014.java | 4 +- .../lotro/cards/set3/gandalf/Card3_036.java | 4 +- .../lotro/cards/set3/isengard/Card3_059.java | 4 +- .../lotro/cards/set3/isengard/Card3_068.java | 4 +- .../gempukku/lotro/cards/set4/Card4_001.java | 2 +- .../lotro/cards/set4/dunland/Card4_019.java | 4 +- .../lotro/cards/set4/elven/Card4_063.java | 4 +- .../lotro/cards/set4/rohan/Card4_264.java | 58 +++++++++++++++++++ .../lotro/logic/effects/PreventEffect.java | 38 ++++++++++++ .../lotro/logic/timing/EffectResult.java | 2 + .../lotro/logic/timing/Preventable.java | 7 +++ 26 files changed, 163 insertions(+), 44 deletions(-) rename gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/{PreventEffect.java => PreventCardEffect.java} (77%) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_264.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PreventEffect.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Preventable.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventCardEffect.java similarity index 77% rename from gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventEffect.java rename to gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventCardEffect.java index 2ded50351..5491a44b0 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PreventCardEffect.java @@ -5,11 +5,11 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.effects.AbstractPreventableCardEffect; import com.gempukku.lotro.logic.timing.UnrespondableEffect; -public class PreventEffect extends UnrespondableEffect { +public class PreventCardEffect extends UnrespondableEffect { private AbstractPreventableCardEffect _effect; private PhysicalCard _card; - public PreventEffect(AbstractPreventableCardEffect effect, PhysicalCard card) { + public PreventCardEffect(AbstractPreventableCardEffect effect, PhysicalCard card) { _effect = effect; _card = card; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TakeControlOfASiteEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TakeControlOfASiteEffect.java index 20940c5c2..9ecc5bef7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TakeControlOfASiteEffect.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/TakeControlOfASiteEffect.java @@ -6,11 +6,14 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.timing.AbstractEffect; import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.Preventable; -public class TakeControlOfASiteEffect extends AbstractEffect { +public class TakeControlOfASiteEffect extends AbstractEffect implements Preventable { private PhysicalCard _source; private String _playerId; + private boolean _prevented; + public TakeControlOfASiteEffect(PhysicalCard source, String playerId) { _source = source; _playerId = playerId; @@ -42,15 +45,26 @@ public class TakeControlOfASiteEffect extends AbstractEffect { @Override public EffectResult.Type getType() { - return null; + return EffectResult.Type.TAKE_CONTROL_OF_A_SITE; + } + + @Override + public void prevent() { + _prevented = true; + } + + @Override + public boolean isPrevented() { + return _prevented; } @Override protected FullEffectResult playEffectReturningResult(LotroGame game) { PhysicalCard site = getFirstControllableSite(game); - if (site != null) { + if (site != null && !_prevented) { game.getGameState().takeControlOfCard(_playerId, site, Zone.SUPPORT); game.getGameState().sendMessage(_playerId + " took control of " + GameUtils.getCardLink(site)); + return new FullEffectResult(null, true, true); } return new FullEffectResult(null, false, false); } 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 f13d9e11d..14f0c4d13 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 @@ -65,7 +65,7 @@ public class Card1_001 extends AbstractAttachable { List actions = new LinkedList(); ActivateCardAction action = new ActivateCardAction(self); - action.appendEffect(new PreventEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo())); action.appendEffect(new AddBurdenEffect(self, 2)); action.appendEffect(new PutOnTheOneRingEffect()); action.appendEffect(new AddUntilStartOfPhaseActionProxyEffect( @@ -98,7 +98,7 @@ public class Card1_001 extends AbstractAttachable { WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect; if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) { RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new PreventEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo())); action.appendEffect(new AddBurdenEffect(self, 2)); return Collections.singletonList(action); } 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 cb380c83d..903ea4f6d 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 @@ -64,7 +64,7 @@ public class Card1_002 extends AbstractAttachable { List actions = new LinkedList(); ActivateCardAction action = new ActivateCardAction(self); - action.appendEffect(new PreventEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo())); action.appendEffect(new AddBurdenEffect(self, 1)); action.appendEffect(new PutOnTheOneRingEffect()); action.appendEffect(new AddUntilStartOfPhaseActionProxyEffect( @@ -98,7 +98,7 @@ public class Card1_002 extends AbstractAttachable { if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) { List actions = new LinkedList(); RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new PreventEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo())); action.appendEffect(new AddBurdenEffect(self, 1)); return actions; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_076.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_076.java index 54b7e3e4f..fcdd76712 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_076.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_076.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set1.gandalf; import com.gempukku.lotro.cards.AbstractResponseEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; @@ -58,7 +58,7 @@ public class Card1_076 extends AbstractResponseEvent { @Override protected void cardSelected(PhysicalCard companion) { action.appendEffect( - new PreventEffect(woundEffect, companion)); + new PreventCardEffect(woundEffect, companion)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_085.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_085.java index 68032df03..c390adb4e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_085.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/gandalf/Card1_085.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set1.gandalf; import com.gempukku.lotro.cards.AbstractResponseEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; @@ -51,7 +51,7 @@ public class Card1_085 extends AbstractResponseEvent { @Override protected void cardSelected(PhysicalCard card) { action.appendEffect( - new PreventEffect(exertEffect, card)); + new PreventCardEffect(exertEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_173.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_173.java index 208b9ba52..6f79964a9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_173.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/moria/Card1_173.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set1.moria; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -59,7 +59,7 @@ public class Card1_173 extends AbstractPermanent { @Override protected void cardSelected(PhysicalCard moriaOrc) { action.appendEffect( - new PreventEffect(woundEffect, moriaOrc)); + new PreventCardEffect(woundEffect, moriaOrc)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_287.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_287.java index 77016c44a..2d8e0bb68 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_287.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/shire/Card1_287.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set1.shire; import com.gempukku.lotro.cards.AbstractResponseEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.effects.RemoveBurdenEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; @@ -42,7 +42,7 @@ public class Card1_287 extends AbstractResponseEvent { if (Filters.filter(healEffect.getAffectedCardsMinusPrevented(game), game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)).size() > 0) { final PlayEventAction action = new PlayEventAction(self); action.appendCost( - new PreventEffect(healEffect, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)))); + new PreventCardEffect(healEffect, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.RING_BEARER)))); action.appendEffect( new RemoveBurdenEffect(self)); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_203.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_203.java index 8ce174b93..0807f3415 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_203.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_203.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set1.wraith; import com.gempukku.lotro.cards.AbstractResponseEvent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; import com.gempukku.lotro.common.Side; @@ -48,7 +48,7 @@ public class Card1_203 extends AbstractResponseEvent { @Override protected void cardSelected(PhysicalCard nazgul) { action.appendEffect( - new PreventEffect(woundEffect, nazgul)); + new PreventCardEffect(woundEffect, nazgul)); } } ); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java index 89eb5faf5..97ea845fc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/dwarven/Card2_003.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set2.dwarven; import com.gempukku.lotro.cards.AbstractAttachableFPPossession; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; @@ -47,7 +47,7 @@ public class Card2_003 extends AbstractAttachableFPPossession { action.appendCost( new DiscardCardsFromPlayEffect(self)); action.appendEffect( - new PreventEffect((WoundCharactersEffect) effect, self.getAttachedTo())); + new PreventCardEffect((WoundCharactersEffect) effect, self.getAttachedTo())); return Collections.singletonList(action); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_018.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_018.java index c53cc625d..dfe6ef369 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_018.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/elven/Card2_018.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set2.elven; import com.gempukku.lotro.cards.AbstractPermanent; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -61,7 +61,7 @@ public class Card2_018 extends AbstractPermanent { @Override protected void cardSelected(PhysicalCard elf) { action.appendEffect( - new PreventEffect(woundEffect, elf)); + new PreventCardEffect(woundEffect, elf)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_034.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_034.java index 667dc531e..fffb9ee82 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_034.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/gondor/Card2_034.java @@ -4,7 +4,7 @@ import com.gempukku.lotro.cards.AbstractResponseEvent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Side; @@ -54,7 +54,7 @@ public class Card2_034 extends AbstractResponseEvent { @Override protected void cardSelected(PhysicalCard card) { action.appendEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java index e37e6d4c1..965e677a6 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/shire/Card2_106.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set2.shire; import com.gempukku.lotro.cards.AbstractPermanent; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -46,7 +46,7 @@ public class Card2_106 extends AbstractPermanent { new ChooseActiveCardEffect(self, playerId, "Choose Hobbit", Filters.in(woundedCharacters), Filters.race(Race.HOBBIT)) { @Override protected void cardSelected(PhysicalCard card) { - action.insertEffect(new PreventEffect(woundEffect, card)); + action.insertEffect(new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_077.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_077.java index 742674b85..9bf8e862b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_077.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set2/wraith/Card2_077.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set2.wraith; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -47,7 +47,7 @@ public class Card2_077 extends AbstractPermanent { new ChooseActiveCardEffect(self, playerId, "Choose twilight Nazgul", Filters.in(woundedCards), Filters.race(Race.NAZGUL), Filters.keyword(Keyword.TWILIGHT)) { @Override protected void cardSelected(PhysicalCard card) { - action.insertEffect(new PreventEffect(woundEffect, card)); + action.insertEffect(new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_007.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_007.java index c5bea3e1e..0666b4565 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_007.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_007.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set3.elven; import com.gempukku.lotro.cards.AbstractCompanion; import com.gempukku.lotro.cards.effects.ChooseAndDiscardCardsFromHandEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Race; @@ -55,7 +55,7 @@ public class Card3_007 extends AbstractCompanion { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_014.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_014.java index 949ad21a8..f6b600c12 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_014.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/elven/Card3_014.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set3.elven; import com.gempukku.lotro.cards.AbstractAlly; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.Block; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; @@ -60,7 +60,7 @@ public class Card3_014 extends AbstractAlly { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_036.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_036.java index c61a5575c..768c56252 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_036.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/gandalf/Card3_036.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set3.gandalf; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Side; @@ -52,7 +52,7 @@ public class Card3_036 extends AbstractPermanent { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_059.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_059.java index d8538e4c3..3952d713e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_059.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_059.java @@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.set3.isengard; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Race; @@ -47,7 +47,7 @@ public class Card3_059 extends AbstractMinion { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_068.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_068.java index 5d26ce57b..3b7689ffa 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_068.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set3/isengard/Card3_068.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set3.isengard; import com.gempukku.lotro.cards.AbstractMinion; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ExertCharactersEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.modifiers.CantBeAssignedToSkirmishModifier; import com.gempukku.lotro.cards.modifiers.CantTakeWoundsModifier; import com.gempukku.lotro.common.Culture; @@ -90,7 +90,7 @@ public class Card3_068 extends AbstractMinion { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java index 40e3acde9..4672e1b97 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java @@ -100,7 +100,7 @@ public class Card4_001 extends AbstractAttachable { WoundCharactersEffect woundEffect = (WoundCharactersEffect) effect; if (woundEffect.getAffectedCardsMinusPrevented(game).contains(self.getAttachedTo())) { RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new PreventEffect(woundEffect, self.getAttachedTo())); + action.appendEffect(new PreventCardEffect(woundEffect, self.getAttachedTo())); action.appendEffect(new AddBurdenEffect(self, 1)); return Collections.singletonList(action); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_019.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_019.java index 0002def78..1ab308d62 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_019.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/dunland/Card4_019.java @@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set4.dunland; import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.ChoiceEffect; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; @@ -70,7 +70,7 @@ public class Card4_019 extends AbstractPermanent { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(woundEffect, card)); + new PreventCardEffect(woundEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_063.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_063.java index 834576d93..ff8894297 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_063.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/elven/Card4_063.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.cards.set4.elven; import com.gempukku.lotro.cards.AbstractAttachableFPPossession; -import com.gempukku.lotro.cards.effects.PreventEffect; +import com.gempukku.lotro.cards.effects.PreventCardEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; @@ -63,7 +63,7 @@ public class Card4_063 extends AbstractAttachableFPPossession { @Override protected void cardSelected(PhysicalCard card) { action.insertEffect( - new PreventEffect(discardEffect, card)); + new PreventCardEffect(discardEffect, card)); } }); return Collections.singletonList(action); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_264.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_264.java new file mode 100644 index 000000000..733d92491 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/rohan/Card4_264.java @@ -0,0 +1,58 @@ +package com.gempukku.lotro.cards.set4.rohan; + +import com.gempukku.lotro.cards.AbstractCompanion; +import com.gempukku.lotro.cards.PlayConditions; +import com.gempukku.lotro.cards.effects.ChooseAndExertCharactersEffect; +import com.gempukku.lotro.cards.effects.ExertCharactersEffect; +import com.gempukku.lotro.cards.effects.TakeControlOfASiteEffect; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Keyword; +import com.gempukku.lotro.common.Race; +import com.gempukku.lotro.filters.Filters; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.ActivateCardAction; +import com.gempukku.lotro.logic.effects.PreventEffect; +import com.gempukku.lotro.logic.timing.Action; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.EffectResult; + +import java.util.Collections; +import java.util.List; + +/** + * Set: The Two Towers + * Side: Free + * Culture: Rohan + * Twilight Cost: 2 + * Type: Companion • Man + * Strength: 6 + * Vitality: 3 + * Resistance: 6 + * Game Text: Response: If your opponent is about to take control of a site, exert Ceorl and a villager to prevent this. + */ +public class Card4_264 extends AbstractCompanion { + public Card4_264() { + super(2, 6, 3, Culture.ROHAN, Race.MAN, null, "Ceorl", true); + } + + @Override + public List getOptionalBeforeActions(String playerId, LotroGame game, Effect effect, PhysicalCard self) { + if (effect.getType() == EffectResult.Type.TAKE_CONTROL_OF_A_SITE) { + TakeControlOfASiteEffect takeControlEffect = (TakeControlOfASiteEffect) effect; + if (!takeControlEffect.isPrevented() + && PlayConditions.canExert(self, game, Filters.sameCard(self)) + && PlayConditions.canExert(self, game, Filters.keyword(Keyword.VILLAGER))) { + ActivateCardAction action = new ActivateCardAction(self); + action.appendCost( + new ExertCharactersEffect(self, self)); + action.appendCost( + new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.keyword(Keyword.VILLAGER))); + action.appendEffect( + new PreventEffect(takeControlEffect)); + return Collections.singletonList(action); + } + } + return null; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PreventEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PreventEffect.java new file mode 100644 index 000000000..96bc1727f --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/PreventEffect.java @@ -0,0 +1,38 @@ +package com.gempukku.lotro.logic.effects; + +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.timing.AbstractEffect; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.Preventable; + +public class PreventEffect extends AbstractEffect { + private Preventable _preventable; + + public PreventEffect(Preventable preventable) { + _preventable = preventable; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + if (isPlayableInFull(game)) { + _preventable.prevent(); + return new FullEffectResult(null, true, true); + } + return new FullEffectResult(null, false, false); + } + + @Override + public String getText(LotroGame game) { + return null; + } + + @Override + public EffectResult.Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return !_preventable.isPrevented(); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java index a1d43d625..56754cb67 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/EffectResult.java @@ -14,6 +14,8 @@ public abstract class EffectResult { START_OF_TURN, END_OF_TURN, + TAKE_CONTROL_OF_A_SITE, + PLAY, ACTIVATE, DRAW_CARD_OR_PUT_INTO_HAND, PUT_ON_THE_ONE_RING, REMOVE_BURDEN, ADD_BURDEN, diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Preventable.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Preventable.java new file mode 100644 index 000000000..d14768850 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/Preventable.java @@ -0,0 +1,7 @@ +package com.gempukku.lotro.logic.timing; + +public interface Preventable { + public void prevent(); + + public boolean isPrevented(); +}