Balance changes

This commit is contained in:
marcin.sciesinski
2019-08-13 23:25:11 -07:00
parent 44a7594a60
commit e670e220d4
5 changed files with 134 additions and 78 deletions

View File

@@ -10,10 +10,7 @@ import com.gempukku.lotro.logic.cardtype.AbstractAlly;
import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision;
import com.gempukku.lotro.logic.effects.*;
import com.gempukku.lotro.logic.effects.choose.ChooseAndDiscardCardsFromPlayEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.*;
import java.util.ArrayList;
import java.util.Collections;
@@ -29,11 +26,11 @@ import java.util.List;
* Strength: 8
* Vitality: 4
* Card Number: 1R41
* Game Text: At the start of each of your turns, heal each Rivendell ally or heal Elrond twice.
* Regroup: Exert Elrond twice to reveal the top card of any draw deck. If it is a Free Peoples card, you may heal
* a companion. If it is a Shadow card, you may discard a condition.
* Game Text: At the start of each of your turns, heal each Rivendell ally.
* Regroup: Exert Elrond twice to reveal the top card of your draw deck. If it is an [ELVEN] card, you may discard it
* to heal a companion. If it is a Shadow card, you may discard it to discard a Shadow condition.
*/
public class Card40_041 extends AbstractAlly{
public class Card40_041 extends AbstractAlly {
public Card40_041() {
super(4, SitesBlock.SECOND_ED, 0, 8, 4, Race.ELF, Culture.ELVEN, "Elrond", "Peredhil", true);
addKeyword(Keyword.RIVENDELL);
@@ -43,23 +40,13 @@ public class Card40_041 extends AbstractAlly{
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfTurn(game, effectResult)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
List<Effect> possibleEffects = new ArrayList<Effect>(2);
possibleEffects.add(
action.appendEffect(
new HealCharactersEffect(self, CardType.ALLY, Keyword.RIVENDELL) {
@Override
public String getText(LotroGame game) {
return "Heal each Rivendell ally";
}
});
possibleEffects.add(
new ChooseAndHealCharactersEffect(action, self.getOwner(), 1, 1, 2, self) {
@Override
public String getText(LotroGame game) {
return "Heal Elrond twice";
}
});
action.appendEffect(
new ChoiceEffect(action, self.getOwner(), possibleEffects));
return Collections.singletonList(action);
}
return null;
@@ -76,42 +63,50 @@ public class Card40_041 extends AbstractAlly{
new SelfExertEffect(action, self));
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new PlayoutDecisionEffect(playerId,
new MultipleChoiceAwaitingDecision(1, "Choose a player to reveal top card of deck of", allPlayers) {
@Override
protected void validDecisionMade(int index, String player) {
action.appendEffect(
new RevealTopCardsOfDrawDeckEffect(self, player, 1) {
@Override
protected void cardsRevealed(List<PhysicalCard> revealedCards) {
if (revealedCards.size()>0) {
PhysicalCard firstCard = revealedCards.get(0);
if (Filters.and(Side.FREE_PEOPLE).accepts(game,
firstCard)) {
action.appendCost(
new RevealTopCardsOfDrawDeckEffect(self, playerId, 1) {
@Override
protected void cardsRevealed(List<PhysicalCard> revealedCards) {
if (revealedCards.size() > 0) {
PhysicalCard firstCard = revealedCards.get(0);
if (Filters.and(Side.FREE_PEOPLE).accepts(game,
firstCard)) {
action.appendCost(
new OptionalEffect(action, playerId,
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
action.appendCost(
new DiscardTopCardFromDeckEffect(self, playerId, false));
action.appendEffect(
new OptionalEffect(action, playerId,
new ChooseAndHealCharactersEffect(action, playerId, 1, 1, CardType.COMPANION)) {
@Override
public String getText(LotroGame game) {
return "Heal a companion";
}
});
} else {
action.appendEffect(
new OptionalEffect(action, playerId,
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1,1, CardType.CONDITION) {
@Override
public String getText(LotroGame game) {
return "Discard a condition";
}
}));
new ChooseAndHealCharactersEffect(action, playerId, 1, 1, CardType.COMPANION));
}
}
@Override
public String getText(LotroGame game) {
return "Discard the revealed card to heal a companion";
}
}));
} else {
action.appendEffect(
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
action.appendCost(
new DiscardTopCardFromDeckEffect(self, playerId, false));
action.appendEffect(
new ChooseAndDiscardCardsFromPlayEffect(action, playerId, 1, 1, Side.SHADOW, CardType.CONDITION));
}
@Override
public String getText(LotroGame game) {
return "Discard the revealed card to discard a shadow condition";
}
});
}
}));
}
}
});
return Collections.singletonList(action);
}
return null;

View File

@@ -7,13 +7,12 @@ import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractAlly;
import com.gempukku.lotro.logic.effects.HealCharactersEffect;
import com.gempukku.lotro.logic.effects.RevealTopCardsOfDrawDeckEffect;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.effects.*;
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.UnrespondableEffect;
import java.util.Collections;
import java.util.List;
@@ -29,7 +28,8 @@ import java.util.List;
* Vitality: 3
* Card Number: 1R45
* Game Text: At the start of each of your turns, heal each Lothlorien ally.
* Skirmish: Exert Galadriel to reveal the top card of your draw deck. Make a minion skirmishing an Elf strength -X, where X is the twilight cost of the revealed card.
* Skirmish: Exert Galadriel to reveal the top card of your draw deck. If it is an [ELVEN] card, you may discard it
* to make a minion skirmishing an Elf strength -2.
*/
public class Card40_045 extends AbstractAlly {
public Card40_045() {
@@ -60,12 +60,26 @@ public class Card40_045 extends AbstractAlly {
@Override
protected void cardsRevealed(List<PhysicalCard> revealedCards) {
if (revealedCards.size() > 0) {
PhysicalCard revealedCard = revealedCards.get(0);
int twilightCost = revealedCard.getBlueprint().getTwilightCost();
if (twilightCost > 0)
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -twilightCost,
CardType.MINION, Filters.inSkirmishAgainst(Race.ELF)));
if (Filters.and(Culture.ELVEN).accepts(game,
revealedCards.get(0))) {
action.appendCost(
new OptionalEffect(action, playerId,
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
action.appendCost(
new DiscardTopCardFromDeckEffect(self, playerId, false));
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, -2,
CardType.MINION, Filters.inSkirmishAgainst(Race.ELF)));
}
@Override
public String getText(LotroGame game) {
return "Discard the revealed card to make a minion skirmishing an Elf strength -2";
}
}));
}
}
}
});

View File

@@ -4,15 +4,21 @@ import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Phase;
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.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
import com.gempukku.lotro.logic.effects.SelfExertEffect;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.OverwhelmedByMultiplierModifier;
import com.gempukku.lotro.logic.modifiers.RemoveKeywordModifier;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.PlayConditions;
import com.gempukku.lotro.logic.timing.TriggerConditions;
import com.gempukku.lotro.logic.timing.results.AssignAgainstResult;
@@ -30,29 +36,42 @@ import java.util.List;
* Vitality: 3
* Resistance: 9
* Card Number: 1R47
* Game Text: Glorfindel may not be overwhelmed unless his strength is tripled.
* Each time a Nazgul is assigned to skirmish Glorfindel, that Nazgul is prevented from being fierce until the regroup phase.
* Game Text: To play, spot 3 Elves.
* While skirmishing a Nazgul, Glorfindel may not be overwhelmed unless his strength is tripled.
* Skirmish: Exert Glorfindel to make a Nazgul he is skirmishing lose fierce and unable to gain fierce until the regroup phase.
*/
public class Card40_047 extends AbstractCompanion{
public class Card40_047 extends AbstractCompanion {
public Card40_047() {
super(4, 9, 3, 9, Culture.ELVEN, Race.ELF, null, "Glorfindel", "Emissary of the Valar", true);
}
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return Filters.canSpot(game, 3, Race.ELF);
}
@Override
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
OverwhelmedByMultiplierModifier modifier = new OverwhelmedByMultiplierModifier(self, self, 3);
OverwhelmedByMultiplierModifier modifier = new OverwhelmedByMultiplierModifier(self, Filters.and(self, Filters.inSkirmishAgainst(Race.NAZGUL)), 3);
return Collections.singletonList(modifier);
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.assignedAgainst(game, effectResult, null, self, Race.NAZGUL)) {
AssignAgainstResult assignedAgainst = (AssignAgainstResult) effectResult;
PhysicalCard nazgul = assignedAgainst.getAssignedCard();
RequiredTriggerAction action = new RequiredTriggerAction(self);
public List<? extends Action> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
&& PlayConditions.canSelfExert(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new RemoveKeywordModifier(self, nazgul, Keyword.FIERCE), Phase.REGROUP));
new ChooseActiveCardEffect(self, playerId, "Choose a Nazgul", Race.NAZGUL, Filters.inSkirmishAgainst(self)) {
@Override
protected void cardSelected(LotroGame game, PhysicalCard card) {
action.appendEffect(
new AddUntilStartOfPhaseModifierEffect(
new RemoveKeywordModifier(self, card, Keyword.FIERCE), Phase.REGROUP));
}
});
return Collections.singletonList(action);
}
return null;

View File

@@ -30,7 +30,7 @@ import java.util.List;
* Type: Condition - Companion
* Card Number: 1C216
* Game Text: To play, exert a [SAURON] tracker. Limit 1 per companion.
* Each time the fellowship moves, the Free Peoples player must add (1) or exert this companion.
* Each time the fellowship moves, the Free Peoples player must add (3) or exert this companion.
*/
public class Card40_216 extends AbstractAttachable {
public Card40_216() {
@@ -39,7 +39,7 @@ public class Card40_216 extends AbstractAttachable {
@Override
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.and(CardType.COMPANION, Filters.not(Filters.hasAttached(Filters.name("Ever Watchful"))));
return Filters.and(CardType.COMPANION, Filters.not(Filters.hasAttached(Filters.name(getName()))));
}
@Override
@@ -59,7 +59,7 @@ public class Card40_216 extends AbstractAttachable {
RequiredTriggerAction action = new RequiredTriggerAction(self);
List<Effect> possibleEffects = new ArrayList<Effect>(2);
possibleEffects.add(
new AddTwilightEffect(self, 1));
new AddTwilightEffect(self, 3));
possibleEffects.add(
new ExertCharactersEffect(action, self, self.getAttachedTo()));
action.appendEffect(

View File

@@ -1,16 +1,20 @@
package com.gempukku.lotro.cards.set40.sauron;
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.ActivateCardAction;
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
import com.gempukku.lotro.logic.effects.*;
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
import com.gempukku.lotro.logic.modifiers.evaluator.ForEachThreatEvaluator;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.PlayConditions;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -22,7 +26,9 @@ import java.util.List;
* Twilight Cost: 3
* Type: Condition - Support Area
* Card Number: 1U238
* Game Text: To play, spot a [SAURON] Orc. Shadow: Discard this condition to add (1) for each threat.
* Game Text: To play, exert a [SAURON] minion.
* Shadow: Discard this condition to add (1) for each threat.
* Maneuver: Spot a [SAURON] minion, 6 companions, and remove (2) (or 2 threats) to wound a companion (except the Ring-bearer.)
*/
public class Card40_238 extends AbstractPermanent {
public Card40_238() {
@@ -31,7 +37,13 @@ public class Card40_238 extends AbstractPermanent {
@Override
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
return PlayConditions.canSpot(game, Culture.SAURON, Race.ORC);
return PlayConditions.canExert(self, game, Culture.SAURON, CardType.MINION);
}
@Override
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlayModifiers(LotroGame game, PhysicalCard self) {
return Collections.singletonList(
new ExertExtraPlayCostModifier(self, self, null, Culture.SAURON, CardType.MINION));
}
@Override
@@ -45,6 +57,22 @@ public class Card40_238 extends AbstractPermanent {
new AddTwilightEffect(self, new ForEachThreatEvaluator()));
return Collections.singletonList(action);
}
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0)
&& PlayConditions.canSpot(game, Culture.SAURON, CardType.MINION)
&& PlayConditions.canSpot(game, 6, CardType.COMPANION)
&& (game.getGameState().getTwilightPool() >= 2 || PlayConditions.canRemoveThreat(game, self, 2))) {
ActivateCardAction action = new ActivateCardAction(self);
List<Effect> possibleCosts = new ArrayList<>(2);
possibleCosts.add(
new RemoveTwilightEffect(2));
possibleCosts.add(
new RemoveThreatsEffect(self, 2));
action.appendCost(
new ChoiceEffect(action, playerId, possibleCosts));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.COMPANION, Filters.not(Filters.ringBearer)));
return Collections.singletonList(action);
}
return null;
}
}