From ad1f593ca4a3eca860dc9c39e7245748fd5449a4 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Tue, 17 Sep 2019 23:59:33 -0700 Subject: [PATCH] Some FotR cards --- .../main/web/cards/set1/set1-isengard.json | 597 ++++++++++++++++++ .../lotro/cards/set1/isengard/Card1_126.java | 41 -- .../lotro/cards/set1/isengard/Card1_127.java | 50 -- .../lotro/cards/set1/isengard/Card1_128.java | 46 -- .../lotro/cards/set1/isengard/Card1_129.java | 41 -- .../lotro/cards/set1/isengard/Card1_130.java | 40 -- .../lotro/cards/set1/isengard/Card1_131.java | 25 - .../lotro/cards/set1/isengard/Card1_132.java | 46 -- .../lotro/cards/set1/isengard/Card1_133.java | 50 -- .../lotro/cards/set1/isengard/Card1_134.java | 71 --- .../lotro/cards/set1/isengard/Card1_135.java | 72 --- .../lotro/cards/set1/isengard/Card1_136.java | 40 -- .../lotro/cards/set1/isengard/Card1_137.java | 58 -- .../lotro/cards/set1/isengard/Card1_138.java | 70 -- .../lotro/cards/set1/isengard/Card1_139.java | 53 -- .../lotro/cards/set1/isengard/Card1_140.java | 68 -- .../lotro/cards/set1/isengard/Card1_141.java | 37 -- .../lotro/cards/set1/isengard/Card1_142.java | 45 -- .../lotro/cards/set1/isengard/Card1_143.java | 37 -- .../lotro/cards/set1/isengard/Card1_144.java | 46 -- .../lotro/cards/set1/isengard/Card1_145.java | 63 -- .../modifier/CancelStrengthBonusFrom.java | 26 + .../modifier/CancelStrengthBonusTo.java | 29 + ...layPhaseEventsOrPhaseSpecialAbilities.java | 28 + .../modifier/ModifierSourceFactory.java | 3 + .../effect/trigger/ConditionTrigger.java | 13 +- 26 files changed, 694 insertions(+), 1001 deletions(-) delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_126.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_127.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_128.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_130.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_131.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_132.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_133.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_134.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_136.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_137.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_138.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_141.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_142.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_143.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_144.java delete mode 100644 gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_145.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusFrom.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusTo.java create mode 100644 gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json index 2cd47c60e..13c9f5d4c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-isengard.json @@ -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", diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_126.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_126.java deleted file mode 100644 index 689bab581..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_126.java +++ /dev/null @@ -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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_127.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_127.java deleted file mode 100644 index a9b001e80..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_127.java +++ /dev/null @@ -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 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_128.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_128.java deleted file mode 100644 index 434d65cc5..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_128.java +++ /dev/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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java deleted file mode 100644 index 3b56dbbae..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_129.java +++ /dev/null @@ -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 getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, Race.URUK_HAI)); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new TwilightCostModifier(self, CardType.COMPANION, -new NotCondition(new LocationCondition(Keyword.SANCTUARY)), 2)); -} -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_130.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_130.java deleted file mode 100644 index 4c24d9cab..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_130.java +++ /dev/null @@ -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 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_131.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_131.java deleted file mode 100644 index 27bd601d5..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_131.java +++ /dev/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); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_132.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_132.java deleted file mode 100644 index 6b9336381..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_132.java +++ /dev/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.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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_133.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_133.java deleted file mode 100644 index 9f9542052..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_133.java +++ /dev/null @@ -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 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 getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new TwilightCostModifier(self, Filters.and(Culture.ISENGARD, CardType.EVENT, Filters.owner(self.getOwner())), -1)); -} -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_134.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_134.java deleted file mode 100644 index d5bb3cacc..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_134.java +++ /dev/null @@ -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 getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, Culture.ISENGARD, CardType.MINION)); - } - - @Override - public List 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java deleted file mode 100644 index a62a59b2c..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_135.java +++ /dev/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 getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION)); - } - - @Override - public List 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 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_136.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_136.java deleted file mode 100644 index fc8dae511..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_136.java +++ /dev/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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_137.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_137.java deleted file mode 100644 index 438c34d7c..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_137.java +++ /dev/null @@ -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 possibleEffects = new LinkedList(); - 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_138.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_138.java deleted file mode 100644 index df55dc17e..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_138.java +++ /dev/null @@ -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 getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION)); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList(new PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(self, new LocationCondition(Filters.hasAttached(self)), Phase.SKIRMISH)); - } - - @Override - public List 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java deleted file mode 100644 index dff4cea51..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_139.java +++ /dev/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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java deleted file mode 100644 index ceb0e59af..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_140.java +++ /dev/null @@ -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 getExtraCostToPlay(LotroGame game, PhysicalCard self) { - return Collections.singletonList( - new ExertExtraPlayCostModifier(self, self, null, 1, Culture.ISENGARD, CardType.MINION)); - } - - @Override - public List getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList(new ShouldSkipPhaseModifier(self, new LocationCondition(Filters.hasAttached(self)), Phase.ARCHERY)); - } - - @Override - public List 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_141.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_141.java deleted file mode 100644 index 8e7ca8e9f..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_141.java +++ /dev/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 getInPlayModifiers(LotroGame game, PhysicalCard self) { -return Collections.singletonList(new StrengthModifier(self, Filters.and(Keyword.ARCHER, Filters.or(CardType.COMPANION, CardType.ALLY)), -1)); -} -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_142.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_142.java deleted file mode 100644 index dd13e6918..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_142.java +++ /dev/null @@ -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 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; - - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_143.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_143.java deleted file mode 100644 index bbd3b3096..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_143.java +++ /dev/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 getInPlayModifiers(LotroGame game, PhysicalCard self) { - return Collections.singletonList(new CancelStrengthBonusTargetModifier(self, Filters.inSkirmishAgainst(self), Filters.weapon)); - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_144.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_144.java deleted file mode 100644 index 489afdc33..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_144.java +++ /dev/null @@ -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 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; - } -} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_145.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_145.java deleted file mode 100644 index 341e0ebd3..000000000 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_145.java +++ /dev/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 � 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 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; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusFrom.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusFrom.java new file mode 100644 index 000000000..affdad98a --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusFrom.java @@ -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)); + } + }; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusTo.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusTo.java new file mode 100644 index 000000000..a12be25d9 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CancelStrengthBonusTo.java @@ -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)); + } + }; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java new file mode 100644 index 000000000..6b93b169a --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantPlayPhaseEventsOrPhaseSpecialAbilities.java @@ -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); + } + }; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java index cc99d738c..7176146fc 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/ModifierSourceFactory.java @@ -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 { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/ConditionTrigger.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/ConditionTrigger.java index 0b7d532cd..b1e6e80c3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/ConditionTrigger.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/ConditionTrigger.java @@ -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; } }; }