6 Elven cards

This commit is contained in:
marcin.sciesinski
2019-07-20 08:59:06 -07:00
parent a96225813a
commit a754667a32
6 changed files with 304 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package com.gempukku.lotro.cards.set40.elven;
import com.gempukku.lotro.cards.AbstractCompanion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.DoesNotAddToArcheryTotalModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Title: *Legolas, Sindarin Marksman
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 2
* Type: Companion - Elf
* Strength: 6
* Vitality: 3
* Resistance: 8
* Card Number: 1R51
* Game Text: Archer. At the beginning of the archery phase, you may exert Legolas to wound a minion. If you do, Legolas does not add to the fellowship archery total.
*/
public class Card40_051 extends AbstractCompanion{
public Card40_051() {
super(2, 6, 3, 8, Culture.ELVEN, Race.ELF, null, "Legolas", "Sindarin Marksman", true);
addKeyword(Keyword.ARCHER);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (TriggerConditions.startOfPhase(game, effectResult, Phase.ARCHERY)
&& PlayConditions.canSelfExert(self, game)) {
OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new DoesNotAddToArcheryTotalModifier(self, self)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,50 @@
package com.gempukku.lotro.cards.set40.elven;
import com.gempukku.lotro.cards.AbstractCompanion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.effects.AddUntilEndOfPhaseModifierEffect;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.ArcheryTotalModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import java.util.Collections;
import java.util.List;
/**
* Title: *Legolas, Swiftshot
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 2
* Type: Companion - Elf
* Strength: 6
* Vitality: 3
* Resistance: 8
* Card Number: 1C52
* Game Text: Archer. Archery: If Legolas is at a battleground, exert him to add 1 to the fellowship archery total.
*/
public class Card40_052 extends AbstractCompanion{
public Card40_052() {
super(2, 6, 3, 8, Culture.ELVEN, Race.ELF, null, "Legolas", "Swiftshot", true);
addKeyword(Keyword.ARCHER);
}
@Override
protected List<ActivateCardAction> getExtraInPlayPhaseActions(String playerId, LotroGame game, PhysicalCard self) {
if (PlayConditions.canUseFPCardDuringPhase(game, Phase.ARCHERY, self)
&& PlayConditions.location(game, Keyword.BATTLEGROUND)
&& PlayConditions.canSelfExert(self, game)) {
ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
new SelfExertEffect(action, self));
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new ArcheryTotalModifier(self, Side.FREE_PEOPLE, 1)));
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,57 @@
package com.gempukku.lotro.cards.set40.elven;
import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.RemoveBurdenEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Collections;
import java.util.List;
/**
* Title: *Lights of Caras Galadhon
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 1
* Type: Condition - Support Area
* Card Number: 1C53
* Game Text: To play, spot an Elf.
* Each time the fellowship moves to a sanctuary, you may exert an Elf to remove a burden (or 2 burdens if that Elf is Galadriel).
*/
public class Card40_053 extends AbstractPermanent{
public Card40_053() {
super(Side.FREE_PEOPLE, 1, CardType.CONDITION, Culture.ELVEN, Zone.SUPPORT, "Lights of Caras Galadhon", null, true);
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
&& PlayConditions.canSpot(game, Race.ELF);
}
@Override
public List<OptionalTriggerAction> getOptionalAfterTriggers(final String playerId, LotroGame game, EffectResult effectResult, final PhysicalCard self) {
if (TriggerConditions.movesTo(game, effectResult, Keyword.SANCTUARY)
&& PlayConditions.canExert(self, game, Race.ELF)) {
final OptionalTriggerAction action = new OptionalTriggerAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.ELF) {
@Override
protected void forEachCardExertedCallback(PhysicalCard character) {
int removeCount = (character.getBlueprint().getName().equals("Galadriel"))?2:1;
action.appendEffect(
new RemoveBurdenEffect(playerId, self, removeCount));
}
});
return Collections.singletonList(action);
}
return null;
}
}

View File

@@ -0,0 +1,43 @@
package com.gempukku.lotro.cards.set40.elven;
import com.gempukku.lotro.cards.AbstractAttachableFPPossession;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Filterable;
import com.gempukku.lotro.common.PossessionClass;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.Modifier;
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
import java.util.Collections;
import java.util.List;
/**
* Title: *Long-knives of Legolas, Dancing Blades
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 1
* Type: Possession - Hand Weapon
* Strength: +1
* Card Number: 1R54
* Game Text: Bearer must be Legolas. Each wounded minion skirmishing Legolas is strength -2.
*/
public class Card40_054 extends AbstractAttachableFPPossession{
public Card40_054() {
super(1, 1, 0, Culture.ELVEN, PossessionClass.HAND_WEAPON, "Long-knives of Legolas", "Dancing Blades", true);
}
@Override
protected Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
return Filters.legolas;
}
@Override
protected List<? extends Modifier> getNonBasicStatsModifiers(PhysicalCard self) {
StrengthModifier modifier = new StrengthModifier(self, Filters.and(CardType.MINION, Filters.wounded, Filters.inSkirmishAgainst(Filters.legolas)), -2);
return Collections.singletonList(modifier);
}
}

View File

@@ -0,0 +1,63 @@
package com.gempukku.lotro.cards.set40.elven;
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.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Side;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.effects.AddThreatsEffect;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
import java.util.Collection;
/**
* Title: Lorien Patrol
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 1
* Type: Event - Archery
* Card Number: 1U55
* Game Text: Exert an [ELVEN] ally and add a threat to wound a minion. If it is an [ISENGARD] minion, wound it again.
*/
public class Card40_055 extends AbstractEvent{
public Card40_055() {
super(Side.FREE_PEOPLE, 1, Culture.ELVEN, "Lorien Patrol", Phase.ARCHERY);
}
@Override
public boolean checkPlayRequirements(String playerId, LotroGame game, PhysicalCard self, int withTwilightRemoved, int twilightModifier, boolean ignoreRoamingPenalty, boolean ignoreCheckingDeadPile) {
return super.checkPlayRequirements(playerId, game, self, withTwilightRemoved, twilightModifier, ignoreRoamingPenalty, ignoreCheckingDeadPile)
&& PlayConditions.canExert(self, game, Culture.ELVEN, CardType.ALLY)
&& PlayConditions.canAddThreat(game, self, 1);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, final PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayEventAction action = new PlayEventAction(self);
action.appendCost(
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.ELVEN, CardType.ALLY));
action.appendCost(
new AddThreatsEffect(playerId, self, 1));
action.appendEffect(
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION) {
@Override
protected void cardsSelected(LotroGame game, Collection<PhysicalCard> cards) {
if (cards.size()>0) {
PhysicalCard minion = cards.iterator().next();
if (minion.getBlueprint().getCulture() == Culture.ISENGARD) {
action.appendEffect(
new WoundCharactersEffect(self, minion));
}
}
}
});
return action;
}
}

View File

@@ -0,0 +1,37 @@
package com.gempukku.lotro.cards.set40.elven;
import com.gempukku.lotro.cards.AbstractEvent;
import com.gempukku.lotro.cards.actions.PlayEventAction;
import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.cards.modifiers.evaluator.CountSpottableEvaluator;
import com.gempukku.lotro.cards.modifiers.evaluator.MultiplyEvaluator;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
/**
* Title: Might of the Last Homely House
* Set: Second Edition
* Side: Free
* Culture: Elven
* Twilight Cost: 1
* Type: Event - Skirmish
* Card Number: 1C56
* Game Text: Make a minion skirmishing an Elf strength -X, where X is the number of Rivendell allies you can spot.
*/
public class Card40_056 extends AbstractEvent {
public Card40_056() {
super(Side.FREE_PEOPLE, 1, Culture.ELVEN, "Might of the Last Homely House", Phase.SKIRMISH);
}
@Override
public PlayEventAction getPlayCardAction(String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
PlayEventAction action = new PlayEventAction(self);
action.appendEffect(
new ChooseAndAddUntilEOPStrengthBonusEffect(
action, self, playerId, new MultiplyEvaluator(-1, new CountSpottableEvaluator(CardType.ALLY, Keyword.RIVENDELL)),
CardType.MINION, Filters.inSkirmishAgainst(Race.ELF)));
return action;
}
}