- "Shire Countryside" should only trigger when it's the FP player that removes the token.

This commit is contained in:
marcins78@gmail.com
2011-11-24 20:23:33 +00:00
parent bfeaba173b
commit 318ecc9eb8
44 changed files with 68 additions and 59 deletions

View File

@@ -9,9 +9,11 @@ import com.gempukku.lotro.logic.timing.results.RemoveBurdenResult;
import java.util.Collections;
public class RemoveBurdenEffect extends AbstractEffect {
private String _performingPlayerId;
private PhysicalCard _source;
public RemoveBurdenEffect(PhysicalCard source) {
public RemoveBurdenEffect(String performingPlayerId, PhysicalCard source) {
_performingPlayerId = performingPlayerId;
_source = source;
}
@@ -40,7 +42,7 @@ public class RemoveBurdenEffect extends AbstractEffect {
if (isPlayableInFull(game)) {
game.getGameState().sendMessage("Removed a burden");
game.getGameState().removeBurdens(1);
return new FullEffectResult(Collections.singleton(new RemoveBurdenResult(_source)), true, true);
return new FullEffectResult(Collections.singleton(new RemoveBurdenResult(_performingPlayerId, _source)), true, true);
}
return new FullEffectResult(null, false, false);
}

View File

@@ -38,7 +38,7 @@ public class Card1_039 extends AbstractOldEvent {
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(new RemoveBurdenEffect(self));
action.appendEffect(new RemoveBurdenEffect(playerId, self));
return action;
}
}

View File

@@ -30,7 +30,7 @@ public class Card1_061 extends AbstractPermanent {
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, Filters.and(Culture.ELVEN, Keyword.TALE))) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(new RemoveBurdenEffect(self));
action.appendEffect(new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -50,7 +50,7 @@ public class Card1_074 extends AbstractAttachableFPPossession {
public void decisionMade(String result) throws DecisionResultInvalidException {
int spotCount = getValidatedResult(result);
for (int i = 0; i < spotCount; i++)
action.appendEffect(new RemoveBurdenEffect(self));
action.appendEffect(new RemoveBurdenEffect(playerId, self));
}
}));
return Collections.singletonList(action);

View File

@@ -36,7 +36,7 @@ public class Card1_245 extends AbstractOldEvent {
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendCost(new RemoveBurdenEffect(self));
action.appendCost(new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new DiscardTopCardFromDeckEffect(self, game.getGameState().getCurrentPlayerId(), true));
action.appendEffect(

View File

@@ -43,7 +43,7 @@ public class Card1_287 extends AbstractResponseOldEvent {
action.appendCost(
new PreventCardEffect(healEffect, Filters.findFirstActive(game.getGameState(), game.getModifiersQuerying(), Keyword.RING_BEARER)));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -43,7 +43,7 @@ public class Card1_307 extends AbstractCompanion {
final RequiredTriggerAction action = new RequiredTriggerAction(self);
List<Effect> possibleEffects = new LinkedList<Effect>();
possibleEffects.add(new RemoveBurdenEffect(self) {
possibleEffects.add(new RemoveBurdenEffect(self.getOwner(), self) {
@Override
public String getText(LotroGame game) {
return "Remove a burden";

View File

@@ -43,7 +43,7 @@ public class Card1_311 extends AbstractCompanion {
&& PlayConditions.canExert(self, game, self)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(new ExertCharactersEffect(self, self));
action.appendEffect(new RemoveBurdenEffect(self));
action.appendEffect(new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -38,7 +38,7 @@ public class Card1_312 extends AbstractOldEvent {
final PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.HOBBIT, CardType.COMPANION));
action.appendEffect(new RemoveBurdenEffect(self));
action.appendEffect(new RemoveBurdenEffect(playerId, self));
return action;
}
}

View File

@@ -35,7 +35,7 @@ public class Card10_108 extends AbstractPermanent {
&& PlayConditions.canSpot(game, 2, Culture.SHIRE, CardType.COMPANION)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -46,7 +46,7 @@ public class Card10_112 extends AbstractEvent {
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.SHIRE, Filters.character));
List<Effect> possibleEffects = new LinkedList<Effect>();
possibleEffects.add(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
possibleEffects.add(
new RemoveThreatsEffect(self, 2) {
@Override

View File

@@ -41,7 +41,7 @@ public class Card10_118 extends AbstractSite {
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, game.getGameState().getCurrentPlayerId(), 1, 1, CardType.CONDITION, Filters.owner(game.getGameState().getCurrentPlayerId())));
return Collections.singletonList(action);

View File

@@ -42,7 +42,7 @@ public class Card3_034 extends AbstractAttachableFPPossession {
action.appendCost(
new AddTwilightEffect(self, 3));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -38,7 +38,7 @@ public class Card3_113 extends AbstractPermanent {
if (effectResult.getType() == EffectResult.Type.REMOVE_BURDEN) {
RemoveBurdenResult removeBurdenResult = (RemoveBurdenResult) effectResult;
PhysicalCard source = removeBurdenResult.getSource();
if (source != null && source.getOwner().equals(playerId) && source.getBlueprint().getRace() != Race.HOBBIT) {
if (source != null && removeBurdenResult.getPerformingPlayerId().equals(playerId) && source.getBlueprint().getRace() != Race.HOBBIT) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, CardType.COMPANION));

View File

@@ -35,7 +35,7 @@ public class Card3_119 extends AbstractSite {
&& Filters.countSpottable(game.getGameState(), game.getModifiersQuerying(), Race.ELF) >= 2) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -43,7 +43,7 @@ public class Card4_298 extends AbstractAttachableFPPossession {
action.appendCost(
new DiscardCardsFromPlayEffect(self, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -47,7 +47,7 @@ public class Card4_299 extends AbstractPermanent {
int count = getValidatedResult(result);
for (int i = 0; i < count; i++)
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(self.getOwner(), self));
}
}));
return Collections.singletonList(action);

View File

@@ -38,7 +38,7 @@ public class Card4_302 extends AbstractCompanion {
action.appendCost(
new ChooseAndPlayCardFromHandEffect(playerId, game, CardType.COMPANION, Keyword.RING_BOUND));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -56,7 +56,7 @@ public class Card4_303 extends AbstractAttachableFPPossession {
action.appendCost(
new DiscardCardsFromPlayEffect(self, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new HealCharactersEffect(self, self.getAttachedTo()));
}

View File

@@ -49,7 +49,7 @@ public class Card4_305 extends AbstractPermanent {
ActivateCardAction action = new ActivateCardAction(self);
for (int i = 0; i < tokenCount; i++)
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new DiscardCardsFromPlayEffect(self, self));
return Collections.singletonList(action);

View File

@@ -61,7 +61,7 @@ public class Card4_307 extends AbstractEvent {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.setVirtualCardAction(true);
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -34,9 +34,9 @@ public class Card4_363 extends AbstractSite {
&& PlayConditions.canPlayFromDiscard(playerId, game, CardType.MINION)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, CardType.MINION));
return Collections.singletonList(action);

View File

@@ -38,11 +38,11 @@ public class Card5_112 extends AbstractEvent {
action.appendCost(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Filters.gollumOrSmeagol));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return action;
}
}

View File

@@ -36,9 +36,9 @@ public class Card6_043 extends AbstractResponseEvent {
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, Filters.smeagol));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -47,7 +47,7 @@ public class Card6_100 extends AbstractMinion {
PlayPermanentAction action = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty);
List<Effect> possibleCosts = new LinkedList<Effect>();
possibleCosts.add(
new RemoveBurdenEffect(self) {
new RemoveBurdenEffect(playerId, self) {
@Override
public String getText(LotroGame game) {
return "Remove a burden";

View File

@@ -35,7 +35,7 @@ public class Card6_115 extends AbstractSite {
action.appendCost(
new ChooseAndPlayCardFromHandEffect(playerId, game, CardType.COMPANION, Signet.FRODO));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -39,7 +39,7 @@ public class Card7_140 extends AbstractMinion {
&& game.getGameState().getBurdens() >= 1) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new ExertCharactersEffect(self, self));
boolean hasInitiative = PlayConditions.hasInitiative(game, Side.SHADOW);

View File

@@ -40,9 +40,9 @@ public class Card7_147 extends AbstractMinion {
&& game.getGameState().getBurdens() >= 2) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndHealCharactersEffect(action, playerId, 1, 1, Filters.not(self), Keyword.EASTERLING));
return Collections.singletonList(action);

View File

@@ -71,7 +71,7 @@ public class Card7_262 extends AbstractEvent {
@Override
protected void doPlayEffect(LotroGame game) {
action.insertCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndPlayCardFromDiscardEffect(playerId, game, Culture.SAURON, Race.ORC));
}

View File

@@ -44,7 +44,7 @@ public class Card7_326 extends AbstractCompanion {
action.appendCost(
new ChooseAndPlayCardFromHandEffect(playerId, game, CardType.COMPANION, Race.HOBBIT));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -67,9 +67,9 @@ public class Card7_328 extends AbstractAttachable {
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, CardType.MINION));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return Collections.singletonList(action);
}
return null;

View File

@@ -37,7 +37,7 @@ public class Card7_341 extends AbstractSite {
&& PlayConditions.canRemoveBurdens(game, self, 1)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Filters.owner(playerId), CardType.MINION));
return Collections.singletonList(action);

View File

@@ -38,9 +38,9 @@ public class Card7_342 extends AbstractSite {
&& PlayConditions.canRemoveBurdens(game, self, 2)) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose your minion", Filters.owner(playerId), CardType.MINION) {
@Override

View File

@@ -35,11 +35,11 @@ public class Card7_343 extends AbstractSite {
&& PlayConditions.canRemoveBurdens(game, self, 3)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new ArcheryTotalModifier(self, Side.SHADOW, 3), Phase.ARCHERY));

View File

@@ -73,7 +73,7 @@ public class Card7_188 extends AbstractMinion {
&& PlayConditions.canRemoveBurdens(game, self, 1)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, self, 3), Phase.SKIRMISH));

View File

@@ -52,7 +52,7 @@ public class Card8_028 extends AbstractPermanent {
}
});
possibleCosts.add(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(

View File

@@ -31,7 +31,7 @@ public class Card8_093 extends AbstractPermanent {
}
@Override
protected List<? extends Action> getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
protected List<? extends Action> getExtraPhaseActions(final String playerId, LotroGame game, final PhysicalCard self) {
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.REGROUP, self, 0)
&& PlayConditions.canDiscardFromPlay(self, game, Culture.SAURON, CardType.MINION)
&& PlayConditions.canSpot(game, CardType.COMPANION, Filters.not(Keyword.RING_BEARER), Filters.lessVitalityThan(game.getGameState().getBurdens() + 1))) {
@@ -45,7 +45,7 @@ public class Card8_093 extends AbstractPermanent {
int vitality = game.getModifiersQuerying().getVitality(game.getGameState(), card);
for (int i = 0; i < vitality; i++)
action.insertCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ReturnCardsToHandEffect(self, card));
}

View File

@@ -42,7 +42,7 @@ public class Card8_098 extends AbstractMinion {
&& PlayConditions.canPlayFromStacked(playerId, game, Filters.siteControlled(playerId), Keyword.BESIEGER)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new ChooseAndPlayCardFromStackedEffect(playerId, Filters.siteControlled(playerId), Keyword.BESIEGER));
return Collections.singletonList(action);

View File

@@ -39,9 +39,9 @@ public class Card8_118 extends AbstractSite {
&& PlayConditions.canRemoveBurdens(game, self, 2)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
List<Effect> possibleEffects = new LinkedList<Effect>();
possibleEffects.add(
new ChooseAndPlayCardFromDeckEffect(playerId, CardType.MINION, Keyword.ENDURING) {

View File

@@ -55,7 +55,7 @@ public class Card9_028 extends AbstractMinion {
ActivateCardAction action = new ActivateCardAction(self);
action.setText("Add (1)");
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new AddTwilightEffect(self, 1));
actions.add(action);
@@ -66,7 +66,7 @@ public class Card9_028 extends AbstractMinion {
&& PlayConditions.canRemoveBurdens(game, self, 1)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new AddTwilightEffect(self, 2));
return Collections.singletonList(action);
@@ -77,7 +77,7 @@ public class Card9_028 extends AbstractMinion {
ActivateCardAction action = new ActivateCardAction(self);
action.setText("Add (3)");
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new AddTwilightEffect(self, 3));
actions.add(action);

View File

@@ -46,13 +46,13 @@ public class Card9_052 extends AbstractAlly {
}
@Override
public PlayPermanentAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
public PlayPermanentAction getPlayCardAction(final String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayPermanentAction action = super.getPlayCardAction(playerId, game, self, twilightModifier, ignoreRoamingPenalty);
List<Effect> possibleCosts = new LinkedList<Effect>();
if (PlayConditions.canRemoveBurdens(game, self, 2)) {
possibleCosts.add(
new RemoveBurdenEffect(self) {
new RemoveBurdenEffect(playerId, self) {
@Override
public String getText(LotroGame game) {
return "Remove 2 burdens";
@@ -62,7 +62,7 @@ public class Card9_052 extends AbstractAlly {
protected FullEffectResult playEffectReturningResult(LotroGame game) {
FullEffectResult effectResult = super.playEffectReturningResult(game);
action.insertCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
return effectResult;
}
});

View File

@@ -50,7 +50,7 @@ public class Card9_044 extends AbstractAttachable {
&& PlayConditions.canRemoveBurdens(game, self, 1)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new RemoveBurdenEffect(self));
new RemoveBurdenEffect(playerId, self));
action.appendEffect(
new HealCharactersEffect(self, Race.NAZGUL));
return Collections.singletonList(action);

View File

@@ -4,13 +4,19 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.timing.EffectResult;
public class RemoveBurdenResult extends EffectResult {
private String _performingPlayerId;
private PhysicalCard _source;
public RemoveBurdenResult(PhysicalCard source) {
public RemoveBurdenResult(String performingPlayerId, PhysicalCard source) {
super(EffectResult.Type.REMOVE_BURDEN);
_performingPlayerId = performingPlayerId;
_source = source;
}
public String getPerformingPlayerId() {
return _performingPlayerId;
}
public PhysicalCard getSource() {
return _source;
}

View File

@@ -7,6 +7,7 @@ at a time (because of the Rule of 4 rule).
- "Ring of Asperity" can now wound an unwounded companion when played.
- "What Are We Waiting For?" should now correctly skip Shadow phase, if such option is chosen.
- If there is a choice of number involved of 0-1 range (i.e. one token on "Grond"), it will be now possible to choose 1.
- "Shire Countryside" should only trigger when it's the FP player that removes the token.
<b>23 Nov. 2011</b>
- "Jarnsmid" now modifies the twilight cost of the itmes by -1, rather than +1.