Some FotR cards
This commit is contained in:
@@ -181,6 +181,603 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_126": {
|
||||
"title": "Hunt Them Down!",
|
||||
"culture": "isengard",
|
||||
"cost": 3,
|
||||
"type": "event",
|
||||
"keyword": "maneuver",
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"keyword": "fierce",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_127": {
|
||||
"title": "*Lurtz",
|
||||
"subtitle": "Servant of Isengard",
|
||||
"culture": "isengard",
|
||||
"cost": 7,
|
||||
"type": "minion",
|
||||
"race": "uruk-hai",
|
||||
"strength": 13,
|
||||
"vitality": 3,
|
||||
"site": 5,
|
||||
"keyword": [
|
||||
"archer",
|
||||
"damage+1"
|
||||
],
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "maneuver",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "another,uruk-hai"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "self",
|
||||
"keyword": "fierce",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_128": {
|
||||
"title": "Lurtz's Battle Cry",
|
||||
"culture": "isengard",
|
||||
"cost": 1,
|
||||
"type": "event",
|
||||
"keyword": "skirmish",
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"effect": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"amount": -1,
|
||||
"memorize": "chosenUrukHai"
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"filter": "memory(chosenUrukHai)",
|
||||
"keyword": "damage+1"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"1_129": {
|
||||
"title": "The Misadventure of Mr. Underhill",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(uruk-hai)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "companion",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "not(sanctuary)"
|
||||
},
|
||||
"amount": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_130": {
|
||||
"title": "No Ordinary Storm",
|
||||
"culture": "isengard",
|
||||
"cost": 1,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "played",
|
||||
"filter": "your,weather,condition"
|
||||
},
|
||||
"effect": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(gandalf),or(companion,ally))"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_131": {
|
||||
"title": "*Orthanc Assassin",
|
||||
"culture": "isengard",
|
||||
"cost": 5,
|
||||
"type": "minion",
|
||||
"race": "uruk-hai",
|
||||
"strength": 10,
|
||||
"vitality": 3,
|
||||
"site": 5,
|
||||
"keyword": [
|
||||
"archer",
|
||||
"damage+1"
|
||||
]
|
||||
},
|
||||
"1_132": {
|
||||
"title": "Parry",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "event",
|
||||
"keyword": "maneuver",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "uruk-hai"
|
||||
},
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"effect": [
|
||||
{
|
||||
"type": "chooseActiveCards",
|
||||
"filter": "choose(possession)",
|
||||
"text": "Choose possession to cancel strength bonuses from",
|
||||
"memorize": "chosenPossession"
|
||||
},
|
||||
{
|
||||
"type": "addModifier",
|
||||
"modifier": {
|
||||
"type": "cancelStrengthBonusFrom",
|
||||
"filter": "memory(chosenPossession)"
|
||||
},
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"1_133": {
|
||||
"title": "Saruman's Ambition",
|
||||
"culture": "isengard",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "your,culture(isengard),event",
|
||||
"amount": -1
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "activated",
|
||||
"phase": "skirmish",
|
||||
"cost": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "modifyStrength",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"amount": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_134": {
|
||||
"title": "Saruman's Chill",
|
||||
"culture": "isengard",
|
||||
"cost": 1,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"spell",
|
||||
"weather"
|
||||
],
|
||||
"target": "site,not(hasAttached(name(Saruman's Chill)))",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "movesFrom",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "exert",
|
||||
"filter": "all(hobbit,companion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "endOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_135": {
|
||||
"title": "Saruman's Frost",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"spell",
|
||||
"weather"
|
||||
],
|
||||
"target": "site,not(hasAttached(name(Saruman's Frost)))",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyStrength",
|
||||
"filter": "hobbit,companion",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "hasAttached(self)"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "endOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_136": {
|
||||
"title": "Saruman's Power",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "event",
|
||||
"keyword": [
|
||||
"spell",
|
||||
"shadow"
|
||||
],
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "all(condition)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_137": {
|
||||
"title": "Saruman's Reach",
|
||||
"culture": "isengard",
|
||||
"cost": 0,
|
||||
"type": "event",
|
||||
"keyword": [
|
||||
"search",
|
||||
"maneuver"
|
||||
],
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(uruk-hai)"
|
||||
},
|
||||
"effect": {
|
||||
"type": "choice",
|
||||
"player": "fp",
|
||||
"texts": [
|
||||
"Exert 2 companions",
|
||||
"Put on The One Ring"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "exert",
|
||||
"filter": "choose(companion)",
|
||||
"count": 2
|
||||
},
|
||||
{
|
||||
"type": "putOnRing"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_138": {
|
||||
"title": "Saruman's Snows",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"spell",
|
||||
"weather"
|
||||
],
|
||||
"target": "site",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cantPlayPhaseEventsOrPhaseSpecialAbilities",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "hasAttached(self)"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "endOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_139": {
|
||||
"title": "Savagery To Match Their Numbers",
|
||||
"culture": "isengard",
|
||||
"cost": 0,
|
||||
"type": "event",
|
||||
"keyword": "skirmish",
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"effect": {
|
||||
"type": "choice",
|
||||
"texts": [
|
||||
"Make an Uruk-hai strength +2",
|
||||
"Make an Uruk-hai strength +4 and fierce until the regroup phase"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"amount": 2
|
||||
},
|
||||
{
|
||||
"type": "conditional",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"count": 5,
|
||||
"filter": "companion"
|
||||
},
|
||||
"effect": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"amount": 4,
|
||||
"until": "start(regroup)",
|
||||
"memorize": "chosenUrukHai"
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"filter": "memory(chosenUrukHai)",
|
||||
"keyword": "fierce",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_140": {
|
||||
"title": "Spies of Saruman",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"target": "site",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "skipPhase",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "hasAttached(self)"
|
||||
},
|
||||
"phase": "archery"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "endOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"1_141": {
|
||||
"title": "Their Arrows Enrage",
|
||||
"culture": "isengard",
|
||||
"cost": 1,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "or(name(Saruman),uruk-hai)"
|
||||
},
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyStrength",
|
||||
"filter": "archer,or(companion,ally)",
|
||||
"amount": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_142": {
|
||||
"title": "Traitor's Voice",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"search",
|
||||
"support area"
|
||||
],
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "uruk-hai"
|
||||
},
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "condition",
|
||||
"condition": [
|
||||
{
|
||||
"type": "perTurnLimit",
|
||||
"limit": 1
|
||||
},
|
||||
{
|
||||
"type": "or",
|
||||
"condition": [
|
||||
{
|
||||
"type": "canSpotBurdens",
|
||||
"amount": 5
|
||||
},
|
||||
{
|
||||
"type": "canSpot",
|
||||
"filter": "exhausted,ring bearer"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"effect": [
|
||||
{
|
||||
"type": "incrementPerTurnLimit",
|
||||
"limit": 1
|
||||
},
|
||||
{
|
||||
"type": "addModifier",
|
||||
"modifier": {
|
||||
"type": "modifyMoveLimit",
|
||||
"amount": -1
|
||||
},
|
||||
"until": "endOfTurn"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"1_143": {
|
||||
"title": "Troop of Uruk-hai",
|
||||
"culture": "isengard",
|
||||
"cost": 5,
|
||||
"type": "minion",
|
||||
"race": "uruk-hai",
|
||||
"strength": 9,
|
||||
"vitality": 4,
|
||||
"site": 5,
|
||||
"keyword": "damage+1",
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cancelStrengthBonusTo",
|
||||
"filter": "character,inSkirmishAgainst(self)",
|
||||
"from": "weapon"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_144": {
|
||||
"title": "Uruk Bloodlust",
|
||||
"culture": "isengard",
|
||||
"cost": 3,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"effects": {
|
||||
"type": "activatedTrigger",
|
||||
"trigger": {
|
||||
"type": "winsSkirmish",
|
||||
"filter": "your,uruk-hai",
|
||||
"memorize": "winner"
|
||||
},
|
||||
"cost": {
|
||||
"type": "removeTwilight"
|
||||
},
|
||||
"effect": {
|
||||
"type": "heal",
|
||||
"filter": "memory(winner)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_145": {
|
||||
"title": "Uruk Brood",
|
||||
"culture": "isengard",
|
||||
"cost": 4,
|
||||
"type": "minion",
|
||||
"race": "uruk-hai",
|
||||
"strength": 9,
|
||||
"vitality": 2,
|
||||
"site": 5,
|
||||
"keyword": "damage+1",
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "skirmish",
|
||||
"cost": {
|
||||
"type": "removeTwilight",
|
||||
"amount": 2
|
||||
},
|
||||
"effect": [
|
||||
{
|
||||
"type": "chooseHowManyToSpot",
|
||||
"filter": "another,uruk-hai",
|
||||
"memorize": "spottedUrukHai"
|
||||
},
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "self",
|
||||
"amount": {
|
||||
"type": "forEachInMemory",
|
||||
"memory": "spottedUrukHai"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"1_158": {
|
||||
"title": "Uruk-hai Raiding Party",
|
||||
"culture": "isengard",
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 3
|
||||
* Type: Event
|
||||
* Game Text: Maneuver: Make an Uruk-hai fierce until the regroup phase.
|
||||
*/
|
||||
public class Card1_126 extends AbstractEvent {
|
||||
public Card1_126() {
|
||||
super(Side.SHADOW, 3, Culture.ISENGARD, "Hunt Them Down!", Phase.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Uruk-hai", Race.URUK_HAI) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard urukHai) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new KeywordModifier(self, Filters.sameCard(urukHai), Keyword.FIERCE), Phase.REGROUP));
|
||||
}
|
||||
}
|
||||
);
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.cardtype.AbstractMinion;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 7
|
||||
* Type: Minion • Uruk-Hai
|
||||
* Strength: 13
|
||||
* Vitality: 3
|
||||
* Site: 5
|
||||
* Game Text: Archer. Damage +1. Maneuver: Spot another Uruk-hai to make Lurtz fierce until the regroup phase.
|
||||
*/
|
||||
public class Card1_127 extends AbstractMinion {
|
||||
public Card1_127() {
|
||||
super(7, 13, 3, 5, Race.URUK_HAI, Culture.ISENGARD, "Lurtz", "Servant of Isengard", true);
|
||||
addKeyword(Keyword.ARCHER);
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.MANEUVER, self, 0)
|
||||
&& Filters.canSpot(game, Race.URUK_HAI, Filters.not(self))) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new KeywordModifier(self, self, Keyword.FIERCE), Phase.REGROUP));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 1
|
||||
* Type: Event
|
||||
* Game Text: Skirmish: Make an Uruk-hai strength -1 and damage +1.
|
||||
*/
|
||||
public class Card1_128 extends AbstractEvent {
|
||||
public Card1_128() {
|
||||
super(Side.SHADOW, 1, Culture.ISENGARD, "Lurtz's Battle Cry", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Uruk-hai", Race.URUK_HAI) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard urukHai) {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, Filters.sameCard(urukHai), -1)));
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new KeywordModifier(self, Filters.sameCard(urukHai), Keyword.DAMAGE)));
|
||||
}
|
||||
}
|
||||
);
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.TwilightCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.NotCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: To play, exert an Uruk-hai. Plays to your support area. The twilight cost of each companion played to a site which is not a sanctuary is +2.
|
||||
*/
|
||||
public class Card1_129 extends AbstractPermanent {
|
||||
public Card1_129() {
|
||||
super(Side.SHADOW, 2, CardType.CONDITION, Culture.ISENGARD, "The Misadventure of Mr. Underhill");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, Race.URUK_HAI));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new TwilightCostModifier(self, CardType.COMPANION,
|
||||
new NotCondition(new LocationCondition(Keyword.SANCTUARY)), 2));
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition
|
||||
* Game Text: Plays to your support area. Each time you play a weather condition, exert a [GANDALF] companion or [GANDALF] ally.
|
||||
*/
|
||||
public class Card1_130 extends AbstractPermanent {
|
||||
public Card1_130() {
|
||||
super(Side.SHADOW, 1, CardType.CONDITION, Culture.ISENGARD, "No Ordinary Storm");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.played(game, effectResult, Filters.and(Keyword.WEATHER, CardType.CONDITION, Filters.owner(self.getOwner())))) {
|
||||
final RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseAndExertCharactersEffect(action, self.getOwner(), 1, 1, Culture.GANDALF, Filters.or(CardType.COMPANION, CardType.ALLY)));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractMinion;
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Race;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 5
|
||||
* Type: Minion • Uruk-Hai
|
||||
* Strength: 10
|
||||
* Vitality: 3
|
||||
* Site: 5
|
||||
* Game Text: Archer. Damage +1.
|
||||
*/
|
||||
public class Card1_131 extends AbstractMinion {
|
||||
public Card1_131() {
|
||||
super(5, 10, 3, 5, Race.URUK_HAI, Culture.ISENGARD, "Orthanc Assassin", null, true);
|
||||
addKeyword(Keyword.ARCHER);
|
||||
addKeyword(Keyword.DAMAGE);
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusSourceModifier;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Event
|
||||
* Game Text: Maneuver: Spot an Uruk-hai to cancel the strength bonus from a possession until the regroup phase.
|
||||
*/
|
||||
public class Card1_132 extends AbstractEvent {
|
||||
public Card1_132() {
|
||||
super(Side.SHADOW, 2, Culture.ISENGARD, "Parry", Phase.MANEUVER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return Filters.canSpot(game, Race.URUK_HAI);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose possession", CardType.POSSESSION) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard possession) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new CancelStrengthBonusSourceModifier(self, Filters.sameCard(possession)), Phase.REGROUP));
|
||||
}
|
||||
}
|
||||
);
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.TwilightCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 0
|
||||
* Type: Condition
|
||||
* Game Text: Plays to your support area. The twilight cost of your [ISENGARD] events is -1. Skirmish: Discard this
|
||||
* condition to make an Uruk-hai strength +2.
|
||||
*/
|
||||
public class Card1_133 extends AbstractPermanent {
|
||||
public Card1_133() {
|
||||
super(Side.SHADOW, 0, CardType.CONDITION, Culture.ISENGARD, "Saruman's Ambition");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 0)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.appendCost(new SelfDiscardEffect(self));
|
||||
action.appendEffect(
|
||||
new ChooseAndAddUntilEOPStrengthBonusEffect(action, self, playerId, 2, Race.URUK_HAI));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new TwilightCostModifier(self, Filters.and(Culture.ISENGARD, CardType.EVENT, Filters.owner(self.getOwner())), -1));
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.ExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition
|
||||
* Game Text: Spell. Weather. To play, exert a [ISENGARD] minion. Plays on a site. Limit 1 per site. Each Hobbit who
|
||||
* moves from this site must exert. Discard this condition at the end of the turn.
|
||||
*/
|
||||
public class Card1_134 extends AbstractAttachable {
|
||||
public Card1_134() {
|
||||
super(Side.SHADOW, CardType.CONDITION, 1, Culture.ISENGARD, null, "Saruman's Chill");
|
||||
addKeyword(Keyword.SPELL);
|
||||
addKeyword(Keyword.WEATHER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.and(CardType.SITE, Filters.not(Filters.hasAttached(Filters.name(getTitle()))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, Culture.ISENGARD, CardType.MINION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.movesFrom(game, effectResult, Filters.hasAttached(self))) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new ExertCharactersEffect(action, self, Filters.and(CardType.COMPANION, Race.HOBBIT)));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
if (TriggerConditions.endOfTurn(game, effectResult)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new SelfDiscardEffect(self));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: Spell. Weather. To play, exert a [ISENGARD] minion. Plays on a site. Limit 1 per site. Each Hobbit at
|
||||
* this site is strength -2. Discard this condition at the end of the turn.
|
||||
*/
|
||||
public class Card1_135 extends AbstractAttachable {
|
||||
public Card1_135() {
|
||||
super(Side.SHADOW, CardType.CONDITION, 2, Culture.ISENGARD, null, "Saruman's Frost");
|
||||
addKeyword(Keyword.SPELL);
|
||||
addKeyword(Keyword.WEATHER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return Filters.and(CardType.SITE, Filters.not(Filters.hasAttached(Filters.name(getTitle()))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new StrengthModifier(self, Filters.and(Race.HOBBIT, CardType.COMPANION),
|
||||
new LocationCondition(Filters.hasAttached(self)), -2));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.endOfTurn(game, effectResult)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new SelfDiscardEffect(self));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Event
|
||||
* Game Text: Spell. Shadow: Exert a [ISENGARD] minion to discard all conditions.
|
||||
*/
|
||||
public class Card1_136 extends AbstractEvent {
|
||||
public Card1_136() {
|
||||
super(Side.SHADOW, 2, Culture.ISENGARD, "Saruman's Power", Phase.SHADOW);
|
||||
addKeyword(Keyword.SPELL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, LotroGame game, PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Culture.ISENGARD, CardType.MINION));
|
||||
action.appendEffect(
|
||||
new DiscardCardsFromPlayEffect(self.getOwner(), self, CardType.CONDITION));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.ChoiceEffect;
|
||||
import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 0
|
||||
* Type: Event
|
||||
* Game Text: Search. Maneuver: Exert an Uruk-hai to make the opponent choose to either exert 2 companions or make the
|
||||
* Ring-bearer put on The One Ring until the regroup phase.
|
||||
*/
|
||||
public class Card1_137 extends AbstractEvent {
|
||||
public Card1_137() {
|
||||
super(Side.SHADOW, 0, Culture.ISENGARD, "Saruman's Reach", Phase.MANEUVER);
|
||||
addKeyword(Keyword.SEARCH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Race.URUK_HAI);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(final String playerId, LotroGame game, PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Race.URUK_HAI));
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||
possibleEffects.add(
|
||||
new ChooseAndExertCharactersEffect(action, game.getGameState().getCurrentPlayerId(), 2, 2, CardType.COMPANION) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Exert 2 companions";
|
||||
}
|
||||
});
|
||||
|
||||
possibleEffects.add(new PutOnTheOneRingEffect());
|
||||
|
||||
action.appendEffect(
|
||||
new ChoiceEffect(action, game.getGameState().getCurrentPlayerId(), possibleEffects));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: Spell. Weather. To play, exert a [ISENGARD] minion. Plays on a site. No player may play skirmish events
|
||||
* or use skirmish special abilities during skirmishes at this site. Discard this condition at the end of the turn.
|
||||
*/
|
||||
public class Card1_138 extends AbstractAttachable {
|
||||
public Card1_138() {
|
||||
super(Side.SHADOW, CardType.CONDITION, 2, Culture.ISENGARD, null, "Saruman's Snows");
|
||||
addKeyword(Keyword.SPELL);
|
||||
addKeyword(Keyword.WEATHER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return CardType.SITE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(self, new LocationCondition(Filters.hasAttached(self)), Phase.SKIRMISH));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.endOfTurn(game, effectResult)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new SelfDiscardEffect(self));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.PlayEventAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractEvent;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilStartOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 0
|
||||
* Type: Event
|
||||
* Game Text: Skirmish: Make an Uruk-hai strength +2, or spot 5 companions to make an Uruk-hai strength +4 and fierce
|
||||
* until the regroup phase.
|
||||
*/
|
||||
public class Card1_139 extends AbstractEvent {
|
||||
public Card1_139() {
|
||||
super(Side.SHADOW, 0, Culture.ISENGARD, "Savagery to Match Their Numbers", Phase.SKIRMISH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PlayEventAction getPlayEventCardAction(String playerId, final LotroGame game, final PhysicalCard self) {
|
||||
final PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose an Uruk-hai", Race.URUK_HAI) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard urukHai) {
|
||||
if (PlayConditions.canSpot(game, 5, CardType.COMPANION)) {
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, Filters.sameCard(urukHai), 4), Phase.REGROUP));
|
||||
action.appendEffect(
|
||||
new AddUntilStartOfPhaseModifierEffect(
|
||||
new KeywordModifier(self, Filters.sameCard(urukHai), Keyword.FIERCE), Phase.REGROUP));
|
||||
} else {
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, Filters.sameCard(urukHai), 2)));
|
||||
}
|
||||
}
|
||||
});
|
||||
return action;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractAttachable;
|
||||
import com.gempukku.lotro.logic.effects.SelfDiscardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.AbstractExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.ShouldSkipPhaseModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.condition.LocationCondition;
|
||||
import com.gempukku.lotro.logic.modifiers.cost.ExertExtraPlayCostModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: To play, exert a [ISENGARD] minion. Plays on a site. While the fellowship is at this site, skip the
|
||||
* archery phase. Discard this condition at the end of the turn.
|
||||
*/
|
||||
public class Card1_140 extends AbstractAttachable {
|
||||
public Card1_140() {
|
||||
super(Side.SHADOW, CardType.CONDITION, 2, Culture.ISENGARD, null, "Spies of Saruman");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filterable getValidTargetFilter(String playerId, LotroGame game, PhysicalCard self) {
|
||||
return CardType.SITE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return PlayConditions.canExert(self, game, Culture.ISENGARD, CardType.MINION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends AbstractExtraPlayCostModifier> getExtraCostToPlay(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new ShouldSkipPhaseModifier(self, new LocationCondition(Filters.hasAttached(self)), Phase.ARCHERY));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.endOfTurn(game, effectResult)) {
|
||||
RequiredTriggerAction action = new RequiredTriggerAction(self);
|
||||
action.appendEffect(new SelfDiscardEffect(self));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 1
|
||||
* Type: Condition
|
||||
* Game Text: To play, spot Saruman or an Uruk-hai. Plays to your support area. Each archer companion and archer ally
|
||||
* is strength -1.
|
||||
*/
|
||||
public class Card1_141 extends AbstractPermanent {
|
||||
public Card1_141() {
|
||||
super(Side.SHADOW, 1, CardType.CONDITION, Culture.ISENGARD, "Their Arrows Enrage");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return Filters.canSpot(game, Filters.or(Race.URUK_HAI, Filters.saruman));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new StrengthModifier(self, Filters.and(Keyword.ARCHER, Filters.or(CardType.COMPANION, CardType.ALLY)), -1));
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.RequiredTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.modifiers.MoveLimitModifier;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* et: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 2
|
||||
* Type: Condition
|
||||
* Game Text: Search. To play, spot an Uruk-hai. Plays to your support area. While the Ring-bearer is exhausted or you
|
||||
* can spot 5 burdens, the move limit for this turn is -1 (to a minimum of 1).
|
||||
*/
|
||||
public class Card1_142 extends AbstractPermanent {
|
||||
public Card1_142() {
|
||||
super(Side.SHADOW, 2, CardType.CONDITION, Culture.ISENGARD, "Traitor's Voice");
|
||||
addKeyword(Keyword.SEARCH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
return Filters.canSpot(game, Race.URUK_HAI);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1
|
||||
&& (game.getGameState().getBurdens() >= 5 || Filters.canSpot(game, Filters.ringBearer, Filters.exhausted))) {
|
||||
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
|
||||
new MoveLimitModifier(self,-1));
|
||||
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.common.Culture;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
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.cardtype.AbstractMinion;
|
||||
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 5
|
||||
* Type: Minion • Uruk-Hai
|
||||
* Strength: 9
|
||||
* Vitality: 4
|
||||
* Site: 5
|
||||
* Game Text: Damage +1. A character skirmishing this minion does not gain strength bonuses from weapons.
|
||||
*/
|
||||
public class Card1_143 extends AbstractMinion {
|
||||
public Card1_143() {
|
||||
super(5, 9, 4, 5, Race.URUK_HAI, Culture.ISENGARD, "Troop of Uruk-hai");
|
||||
addKeyword(Keyword.DAMAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(new CancelStrengthBonusTargetModifier(self, Filters.inSkirmishAgainst(self), Filters.weapon));
|
||||
}
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractPermanent;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTwilightEffect;
|
||||
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.GameUtils;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.effects.HealCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.CharacterWonSkirmishResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 3
|
||||
* Type: Condition
|
||||
* Game Text: Plays to your support area. Response: If your Uruk-hai wins a skirmish, remove (1) to heal him.
|
||||
*/
|
||||
public class Card1_144 extends AbstractPermanent {
|
||||
public Card1_144() {
|
||||
super(Side.SHADOW, 3, CardType.CONDITION, Culture.ISENGARD, "Uruk Bloodlust");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getOptionalInPlayAfterActions(final String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) {
|
||||
if (TriggerConditions.winsSkirmish(game, effectResult, Filters.and(Race.URUK_HAI, Filters.owner(playerId)))
|
||||
&& game.getGameState().getTwilightPool() >= 1) {
|
||||
CharacterWonSkirmishResult skirmishResult = ((CharacterWonSkirmishResult) effectResult);
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
action.setText("Heal " + GameUtils.getFullName(skirmishResult.getWinner()));
|
||||
action.appendCost(new RemoveTwilightEffect(1));
|
||||
action.appendEffect(
|
||||
new HealCharactersEffect(self, skirmishResult.getWinner()));
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
package com.gempukku.lotro.cards.set1.isengard;
|
||||
|
||||
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.cardtype.AbstractMinion;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.decisions.ForEachYouSpotDecision;
|
||||
import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect;
|
||||
import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
|
||||
import com.gempukku.lotro.logic.effects.RemoveTwilightEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Set: The Fellowship of the Ring
|
||||
* Side: Shadow
|
||||
* Culture: Isengard
|
||||
* Twilight Cost: 4
|
||||
* Type: Minion <20> Uruk-Hai
|
||||
* Strength: 9
|
||||
* Vitality: 2
|
||||
* Site: 5
|
||||
* Game Text: Damage +1. Skirmish: Remove (2) to make this minion strength +1 for each other Uruk-hai you spot.
|
||||
*/
|
||||
public class Card1_145 extends AbstractMinion {
|
||||
public Card1_145() {
|
||||
super(4, 9, 2, 5, Race.URUK_HAI, Culture.ISENGARD, "Uruk Brood");
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, final PhysicalCard self) {
|
||||
if (PlayConditions.canUseShadowCardDuringPhase(game, Phase.SKIRMISH, self, 2)) {
|
||||
final ActivateCardAction action = new ActivateCardAction(self);
|
||||
|
||||
action.appendCost(new RemoveTwilightEffect(2));
|
||||
action.appendEffect(
|
||||
new PlayoutDecisionEffect(playerId,
|
||||
new ForEachYouSpotDecision(1, "Choose number of minions you wish to spot", game, Integer.MAX_VALUE, Filters.and(Race.URUK_HAI, Filters.not(self))) {
|
||||
@Override
|
||||
public void decisionMade(String result) throws DecisionResultInvalidException {
|
||||
int spotCount = getValidatedResult(result);
|
||||
action.appendEffect(
|
||||
new AddUntilEndOfPhaseModifierEffect(
|
||||
new StrengthModifier(self, self, spotCount)));
|
||||
}
|
||||
}
|
||||
));
|
||||
|
||||
return Collections.singletonList(action);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusSourceModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class CancelStrengthBonusFrom implements ModifierSourceProducer {
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter");
|
||||
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
return new CancelStrengthBonusSourceModifier(actionContext.getSource(),
|
||||
filterableSource.getFilterable(actionContext));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.CancelStrengthBonusTargetModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class CancelStrengthBonusTo implements ModifierSourceProducer {
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "filter", "from");
|
||||
|
||||
final String filter = FieldUtils.getString(object.get("filter"), "filter");
|
||||
final String from = FieldUtils.getString(object.get("from"), "from");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final FilterableSource fromFilterableSource = environment.getFilterFactory().generateFilter(from, environment);
|
||||
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
return new CancelStrengthBonusTargetModifier(actionContext.getSource(),
|
||||
filterableSource.getFilterable(actionContext),
|
||||
fromFilterableSource.getFilterable(actionContext));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class CantPlayPhaseEventsOrPhaseSpecialAbilities implements ModifierSourceProducer {
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "phase", "condition");
|
||||
|
||||
final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase");
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("condition"), "condition");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
return new PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(actionContext.getSource(),
|
||||
new RequirementCondition(requirements, actionContext), phase);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,9 @@ public class ModifierSourceFactory {
|
||||
modifierProducers.put("cantplaycards", new CantPlayCards());
|
||||
modifierProducers.put("canplaystackedcards", new CanPlayStackedCards());
|
||||
modifierProducers.put("addsignet", new AddSignet());
|
||||
modifierProducers.put("cantplayphaseeventsorphasespecialabilities", new CantPlayPhaseEventsOrPhaseSpecialAbilities());
|
||||
modifierProducers.put("cancelstrengthbonusfrom", new CancelStrengthBonusFrom());
|
||||
modifierProducers.put("cancelstrengthbonusto", new CancelStrengthBonusTo());
|
||||
}
|
||||
|
||||
public ModifierSource getModifier(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
|
||||
@@ -11,7 +11,11 @@ public class ConditionTrigger implements TriggerCheckerProducer {
|
||||
@Override
|
||||
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "condition");
|
||||
final Requirement condition = environment.getRequirementFactory().getRequirement((JSONObject) value.get("condition"), environment);
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(value.get("condition"), "condition");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
return new TriggerChecker() {
|
||||
@Override
|
||||
public boolean isBefore() {
|
||||
@@ -20,7 +24,12 @@ public class ConditionTrigger implements TriggerCheckerProducer {
|
||||
|
||||
@Override
|
||||
public boolean accepts(ActionContext actionContext) {
|
||||
return condition.accepts(actionContext);
|
||||
for (Requirement requirement : requirements) {
|
||||
if (!requirement.accepts(actionContext))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user