From 131a5bf022e9318278cc8a4e08ccf2542c066a8e Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Mon, 21 Nov 2011 21:59:22 +0000 Subject: [PATCH] Putting played event on top or bottom of deck. --- .../PutPlayedEventOnBottomOfDeckEffect.java | 40 +++++++++++++++++++ .../PutPlayedEventOnTopOfDeckEffect.java | 40 +++++++++++++++++++ .../lotro/cards/set10/elven/Card10_010.java | 15 +------ .../lotro/cards/set6/dwarven/Card6_011.java | 11 +++-- .../lotro/cards/set7/elven/Card7_029.java | 16 ++------ .../lotro/cards/set7/gollum/Card7_061.java | 24 +---------- .../lotro/cards/set8/raider/Card8_066.java | 15 +------ 7 files changed, 95 insertions(+), 66 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnBottomOfDeckEffect.java create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnTopOfDeckEffect.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnBottomOfDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnBottomOfDeckEffect.java new file mode 100644 index 000000000..a54e5e163 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnBottomOfDeckEffect.java @@ -0,0 +1,40 @@ +package com.gempukku.lotro.cards.effects; + +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.timing.AbstractEffect; + +public class PutPlayedEventOnBottomOfDeckEffect extends AbstractEffect { + private PlayEventAction _action; + + public PutPlayedEventOnBottomOfDeckEffect(PlayEventAction action) { + _action = action; + } + + @Override + public String getText(LotroGame game) { + return "Put " + GameUtils.getCardLink(_action.getActionSource()) + " on bottom of your deck"; + } + + @Override + public Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return true; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + if (isPlayableInFull(game)) { + game.getGameState().sendMessage(_action.getPerformingPlayer() + " puts " + GameUtils.getCardLink(_action.getActionSource()) + " on bottom of his/her deck"); + _action.skipDiscardPart(); + game.getGameState().putCardOnBottomOfDeck(_action.getActionSource()); + return new FullEffectResult(null, true, true); + } + return new FullEffectResult(null, false, false); + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnTopOfDeckEffect.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnTopOfDeckEffect.java new file mode 100644 index 000000000..618f8753a --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/effects/PutPlayedEventOnTopOfDeckEffect.java @@ -0,0 +1,40 @@ +package com.gempukku.lotro.cards.effects; + +import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.timing.AbstractEffect; + +public class PutPlayedEventOnTopOfDeckEffect extends AbstractEffect { + private PlayEventAction _action; + + public PutPlayedEventOnTopOfDeckEffect(PlayEventAction action) { + _action = action; + } + + @Override + public String getText(LotroGame game) { + return "Put " + GameUtils.getCardLink(_action.getActionSource()) + " on top of your deck"; + } + + @Override + public Type getType() { + return null; + } + + @Override + public boolean isPlayableInFull(LotroGame game) { + return true; + } + + @Override + protected FullEffectResult playEffectReturningResult(LotroGame game) { + if (isPlayableInFull(game)) { + game.getGameState().sendMessage(_action.getPerformingPlayer() + " puts " + GameUtils.getCardLink(_action.getActionSource()) + " on top of his/her deck"); + _action.skipDiscardPart(); + game.getGameState().putCardOnTopOfDeck(_action.getActionSource()); + 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/set10/elven/Card10_010.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java index a4dba5e0e..1451210b1 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/elven/Card10_010.java @@ -3,12 +3,12 @@ package com.gempukku.lotro.cards.set10.elven; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.OptionalEffect; +import com.gempukku.lotro.cards.effects.PutPlayedEventOnTopOfDeckEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; /** * Set: Mount Doom @@ -32,18 +32,7 @@ public class Card10_010 extends AbstractEvent { if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), CardType.SITE, Zone.SUPPORT)) action.appendEffect( new OptionalEffect(action, playerId, - new UnrespondableEffect() { - @Override - public String getText(LotroGame game) { - return "Place this event on top of your draw deck"; - } - - @Override - protected void doPlayEffect(LotroGame game) { - action.skipDiscardPart(); - game.getGameState().putCardOnTopOfDeck(self); - } - })); + new PutPlayedEventOnTopOfDeckEffect(action))); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dwarven/Card6_011.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dwarven/Card6_011.java index 3af910157..c1b7e2bc8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dwarven/Card6_011.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/dwarven/Card6_011.java @@ -2,9 +2,7 @@ package com.gempukku.lotro.cards.set6.dwarven; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; -import com.gempukku.lotro.cards.effects.ChoiceEffect; -import com.gempukku.lotro.cards.effects.PutCardFromHandOnBottomOfDeckEffect; -import com.gempukku.lotro.cards.effects.PutCardFromHandOnTopOfDeckEffect; +import com.gempukku.lotro.cards.effects.*; import com.gempukku.lotro.cards.effects.choose.ChooseCardsFromHandEffect; import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.common.Culture; @@ -62,11 +60,12 @@ public class Card6_011 extends AbstractEvent { new MultipleChoiceAwaitingDecision(1, "Where to put \"Toss Me\"?", new String[]{"Top of deck", "Bottom of deck"}) { @Override protected void validDecisionMade(int index, String result) { - action.skipDiscardPart(); if (index == 0) - game.getGameState().putCardOnTopOfDeck(self); + action.insertEffect( + new PutPlayedEventOnTopOfDeckEffect(action)); else - game.getGameState().putCardOnBottomOfDeck(self); + action.insertEffect( + new PutPlayedEventOnBottomOfDeckEffect(action)); } }) { @Override diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/elven/Card7_029.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/elven/Card7_029.java index e0c3a2b85..c1c43e804 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/elven/Card7_029.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/elven/Card7_029.java @@ -2,6 +2,8 @@ package com.gempukku.lotro.cards.set7.elven; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.OptionalEffect; +import com.gempukku.lotro.cards.effects.PutPlayedEventOnTopOfDeckEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.common.Culture; import com.gempukku.lotro.common.Phase; @@ -9,8 +11,6 @@ import com.gempukku.lotro.common.Race; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; -import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; /** * Set: The Return of the King @@ -31,16 +31,8 @@ public class Card7_029 extends AbstractEvent { action.appendEffect( new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Race.ELF)); action.appendEffect( - new PlayoutDecisionEffect(playerId, - new MultipleChoiceAwaitingDecision(1, "Do you want to place this even on top of your draw deck?", new String[]{"Yes", "No"}) { - @Override - protected void validDecisionMade(int index, String result) { - if (index == 0) { - action.skipDiscardPart(); - game.getGameState().putCardOnTopOfDeck(self); - } - } - })); + new OptionalEffect(action, playerId, + new PutPlayedEventOnTopOfDeckEffect(action))); return action; } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gollum/Card7_061.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gollum/Card7_061.java index ff41ed5ed..6695b183b 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gollum/Card7_061.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/gollum/Card7_061.java @@ -3,16 +3,14 @@ package com.gempukku.lotro.cards.set7.gollum; import com.gempukku.lotro.cards.AbstractEvent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; +import com.gempukku.lotro.cards.effects.PutPlayedEventOnBottomOfDeckEffect; import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.AbstractSuccessfulEffect; import com.gempukku.lotro.logic.timing.Action; -import com.gempukku.lotro.logic.timing.EffectResult; -import java.util.Collection; import java.util.Collections; import java.util.List; @@ -52,25 +50,7 @@ public class Card7_061 extends AbstractEvent { && checkPlayRequirements(playerId, game, self, 0, false)) { final PlayEventAction playCardAction = getPlayCardAction(playerId, game, self, 0, false); playCardAction.appendEffect( - new AbstractSuccessfulEffect() { - @Override - public String getText(LotroGame game) { - return null; - } - - @Override - public Type getType() { - return null; - } - - @Override - public Collection playEffect(LotroGame game) { - playCardAction.skipDiscardPart(); - game.getGameState().putCardOnBottomOfDeck(self); - return null; - } - } - ); + new PutPlayedEventOnBottomOfDeckEffect(playCardAction)); return Collections.singletonList(playCardAction); } return null; diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_066.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_066.java index c70b3d29f..fe753afd9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_066.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/raider/Card8_066.java @@ -5,6 +5,7 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.actions.PlayEventAction; import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.cards.effects.OptionalEffect; +import com.gempukku.lotro.cards.effects.PutPlayedEventOnTopOfDeckEffect; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; @@ -14,7 +15,6 @@ import com.gempukku.lotro.logic.decisions.IntegerAwaitingDecision; import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect; import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; import com.gempukku.lotro.logic.modifiers.StrengthModifier; -import com.gempukku.lotro.logic.timing.UnrespondableEffect; /** * Set: Siege of Gondor @@ -49,18 +49,7 @@ public class Card8_066 extends AbstractEvent { if (PlayConditions.hasInitiative(game, Side.SHADOW)) action.appendEffect( new OptionalEffect(action, playerId, - new UnrespondableEffect() { - @Override - public String getText(LotroGame game) { - return "Place this event on top of your draw deck"; - } - - @Override - protected void doPlayEffect(LotroGame game) { - action.skipDiscardPart(); - game.getGameState().putCardOnTopOfDeck(self); - } - })); + new PutPlayedEventOnTopOfDeckEffect(action))); } }; spotDecision.setDefaultValue(count);