"Thror's Map"

This commit is contained in:
marcins78@gmail.com
2011-09-06 09:36:13 +00:00
parent 97f1f71bbb
commit 63d057c4a8
4 changed files with 96 additions and 7 deletions

View File

@@ -7,11 +7,11 @@ import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.timing.UnrespondableEffect;
public class ReplaceOpponentSiteEffect extends UnrespondableEffect {
public class PlaySiteEffect extends UnrespondableEffect {
private String _playerId;
private int _siteNumber;
public ReplaceOpponentSiteEffect(String playerId, int siteNumber) {
public PlaySiteEffect(String playerId, int siteNumber) {
_playerId = playerId;
_siteNumber = siteNumber;
}
@@ -20,9 +20,11 @@ public class ReplaceOpponentSiteEffect extends UnrespondableEffect {
public void playEffect(LotroGame game) {
GameState gameState = game.getGameState();
PhysicalCard card = gameState.getSite(_siteNumber);
gameState.stopAffecting(card);
gameState.removeCardFromZone(card);
gameState.addCardToZone(card, Zone.DECK);
if (card != null) {
gameState.stopAffecting(card);
gameState.removeCardFromZone(card);
gameState.addCardToZone(card, Zone.DECK);
}
PhysicalCard newSite = Filters.filter(gameState.getAdventureDeck(_playerId), game.getGameState(), game.getModifiersQuerying(), Filters.siteNumber(_siteNumber)).get(0);
gameState.addCardToZone(newSite, Zone.ADVENTURE_PATH);
gameState.startAffecting(newSite, game.getModifiersEnvironment());

View File

@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.set1.shire;
import com.gempukku.lotro.cards.AbstractAlly;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.ExertCharacterEffect;
import com.gempukku.lotro.cards.effects.ReplaceOpponentSiteEffect;
import com.gempukku.lotro.cards.effects.PlaySiteEffect;
import com.gempukku.lotro.cards.modifiers.ProxyingModifier;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
@@ -97,7 +97,7 @@ public class Card1_295 extends AbstractAlly {
&& PlayConditions.canExert(game.getGameState(), game.getModifiersQuerying(), self)) {
DefaultCostToEffectAction action = new DefaultCostToEffectAction(self, Keyword.FELLOWSHIP, "Exert this ally and to replace opponent's site 1 with your site 1.");
action.addCost(new ExertCharacterEffect(self));
action.addEffect(new ReplaceOpponentSiteEffect(playerId, 1));
action.addEffect(new PlaySiteEffect(playerId, 1));
actions.add(action);
}
LotroCardBlueprint copied = getCopied(game, self);

View File

@@ -16,6 +16,9 @@ import com.gempukku.lotro.logic.modifiers.ModifierEffect;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Fellowship of the Ring
* Side: Free
@@ -49,6 +52,15 @@ public class Card1_316 extends AbstractLotroCardBlueprint {
return action;
}
@Override
public List<? extends Action> getPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canPlayFPCardDuringPhase(game, Phase.FELLOWSHIP, self)
&& checkPlayRequirements(playerId, game, self)) {
return Collections.singletonList(getPlayCardAction(playerId, game, self, 0));
}
return null;
}
@Override
public Modifier getAlwaysOnEffect(PhysicalCard self) {
return new AbstractModifier(self, "Spot 2 Hobbit companions to make the shadow number -1 (or spot 4 to make it -2)",

View File

@@ -0,0 +1,75 @@
package com.gempukku.lotro.cards.set1.shire;
import com.gempukku.lotro.cards.AbstractLotroCardBlueprint;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.actions.PlayPermanentAction;
import com.gempukku.lotro.cards.effects.ExertCharacterEffect;
import com.gempukku.lotro.cards.effects.PlaySiteEffect;
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.actions.DefaultCostToEffectAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardsEffect;
import com.gempukku.lotro.logic.effects.DiscardCardFromPlayEffect;
import com.gempukku.lotro.logic.timing.Action;
import java.util.Collections;
import java.util.List;
/**
* Set: The Fellowship of the Ring
* Side: Free
* Culture: Shire
* Twilight Cost: 0
* Type: Possession
* Game Text: Plays to your support area. Fellowship or Regroup: Exert 2 Hobbits and discard Thror's Map to play the
* fellowship's next site (replacing opponent's site if necessary).
*/
public class Card1_318 extends AbstractLotroCardBlueprint {
public Card1_318() {
super(Side.FREE_PEOPLE, CardType.POSSESSION, Culture.SHIRE, "Thror's Map", true);
}
@Override
public int getTwilightCost() {
return 0;
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self) {
return PlayConditions.checkUniqueness(game.getGameState(), game.getModifiersQuerying(), self);
}
@Override
public Action getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier) {
return new PlayPermanentAction(self, Zone.FREE_SUPPORT);
}
@Override
public List<? extends Action> getPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canPlayFPCardDuringPhase(game, Phase.FELLOWSHIP, self)
&& checkPlayRequirements(playerId, game, self)) {
return Collections.singletonList(getPlayCardAction(playerId, game, self, 0));
}
if ((PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.FELLOWSHIP, self)
|| PlayConditions.canUseFPCardDuringPhase(game.getGameState(), Phase.REGROUP, self))
&& Filters.countActive(game.getGameState(), game.getModifiersQuerying(), Filters.keyword(Keyword.HOBBIT), Filters.canExert()) >= 2) {
Keyword phaseKeyword = (game.getGameState().getCurrentPhase() == Phase.FELLOWSHIP) ? Keyword.FELLOWSHIP : Keyword.REGROUP;
final DefaultCostToEffectAction action = new DefaultCostToEffectAction(self, phaseKeyword, "Exert 2 Hobbits and discard Thror's Map to play the fellowship's next site (replacing opponent's site if necessary)");
action.addCost(
new ChooseActiveCardsEffect(playerId, "Choose Hobbit", 2, 2, Filters.keyword(Keyword.HOBBIT), Filters.canExert()) {
@Override
protected void cardsSelected(List<PhysicalCard> cards) {
action.addCost(new ExertCharacterEffect(cards.get(0)));
action.addCost(new ExertCharacterEffect(cards.get(1)));
}
});
action.addCost(new DiscardCardFromPlayEffect(self, self));
action.addEffect(new PlaySiteEffect(playerId, game.getGameState().getCurrentSiteNumber() + 1));
return Collections.singletonList(action);
}
return null;
}
}