diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json index 3ab560c43..6933c08e2 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json @@ -10,9 +10,14 @@ "effects": [ { "type": "trigger", - "requirement": { - "type": "ringIsOn" - }, + "requirement": [ + { + "type": "ringIsOn" + }, + { + "type": "ringIsActive" + } + ], "trigger": { "type": "aboutToTakeWound", "filter": "hasAttached(self)" @@ -29,6 +34,9 @@ }, { "type": "activated", + "requirement": { + "type": "ringIsActive" + }, "phase": "maneuver", "cost": { "type": "choice", @@ -52,6 +60,71 @@ } ] }, + "40_2": { + "title": "The One Ring", + "subtitle": "The Ruling Ring", + "unique": true, + "type": "the one ring", + "strength": 1, + "effects": [ + { + "type": "trigger", + "requirement": [ + { + "type": "ringIsOn" + }, + { + "type": "phase", + "phase": "skirmish" + }, + { + "type": "ringIsActive" + } + ], + "trigger": { + "type": "aboutToTakeWound", + "filter": "hasAttached(self)" + }, + "effect": [ + { + "type": "negateWound", + "filter": "all(hasAttached(self))" + }, + { + "type": "addBurden" + } + ] + }, + { + "type": "activatedTrigger", + "trigger": { + "type": "aboutToTakeWound", + "filter": "hasAttached(self)" + }, + "requirement": [ + { + "type": "phase", + "phase": "skirmish" + }, + { + "type": "ringIsActive" + } + ], + "effect": [ + { + "type": "negateWound", + "filter": "all(hasAttached(self))" + }, + { + "type": "addBurden" + }, + { + "type": "putOnRing" + } + ] + } + ] + }, "40_3": { "title": "Balin's Lament", "unique": true, diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java index 45fac22f7..63e660a28 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_001.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.cards.set1; import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -9,10 +8,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; import java.util.Collections; @@ -74,15 +75,4 @@ public class Card1_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java index e02c2f3cd..5f4aae372 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/Card1_002.java @@ -9,10 +9,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; import java.util.Collections; @@ -67,15 +69,4 @@ public class Card1_002 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/Card11_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/Card11_001.java index 716b60491..d80585691 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/Card11_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/Card11_001.java @@ -1,7 +1,6 @@ package com.gempukku.lotro.cards.set11; import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.filters.Filter; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; @@ -9,10 +8,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; import java.util.Collections; @@ -67,15 +68,4 @@ public class Card11_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/Card15_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/Card15_001.java index c0799d75e..2aa615fa7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/Card15_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/Card15_001.java @@ -10,13 +10,15 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.KeywordModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -87,15 +89,4 @@ public class Card15_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set19/Card19_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set19/Card19_001.java index f83ddf9c9..d342e6b30 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set19/Card19_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set19/Card19_001.java @@ -13,7 +13,6 @@ import com.gempukku.lotro.logic.effects.*; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -72,15 +71,4 @@ public class Card19_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_001.java index 2fbccf2b2..c75f7a852 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_001.java @@ -12,7 +12,6 @@ import com.gempukku.lotro.logic.cardtype.AbstractAttachable; import com.gempukku.lotro.logic.effects.*; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -88,15 +87,4 @@ public class Card20_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_002.java index d1bca7f88..8ece1cfa7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_002.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set20/Card20_002.java @@ -9,10 +9,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; import java.util.Collections; @@ -67,15 +69,4 @@ public class Card20_002 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java index 5ca9e897c..5c7522479 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set30/shire/Card30_048.java @@ -7,13 +7,15 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachableFPPossession; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -89,15 +91,4 @@ public class Card30_048 extends AbstractAttachableFPPossession { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java index 7193bb2e1..9541d65e4 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/Card4_001.java @@ -9,13 +9,15 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.Condition; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -87,15 +89,4 @@ public class Card4_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_001.java index 1062725e9..900aadcb5 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_001.java @@ -13,7 +13,6 @@ import com.gempukku.lotro.logic.effects.*; import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -93,15 +92,4 @@ public class Card40_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_002.java index c2a44b673..7e1bbf98c 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_002.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set40/Card40_002.java @@ -9,10 +9,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.TriggerConditions; import java.util.Collections; @@ -70,15 +72,4 @@ public class Card40_002 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/Card7_002.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/Card7_002.java index ebddaad90..fe877a6da 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/Card7_002.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/Card7_002.java @@ -9,10 +9,12 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -68,15 +70,4 @@ public class Card7_002 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/Card9_001.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/Card9_001.java index 67aec60b2..f02ea0706 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/Card9_001.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set9/Card9_001.java @@ -10,12 +10,14 @@ import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.cardtype.AbstractAttachable; -import com.gempukku.lotro.logic.effects.*; +import com.gempukku.lotro.logic.effects.AddBurdenEffect; +import com.gempukku.lotro.logic.effects.NegateWoundEffect; +import com.gempukku.lotro.logic.effects.PutOnTheOneRingEffect; +import com.gempukku.lotro.logic.effects.WoundCharactersEffect; import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect; import com.gempukku.lotro.logic.effects.choose.ChooseAndPlayCardFromDeckEffect; import com.gempukku.lotro.logic.modifiers.ModifierFlag; import com.gempukku.lotro.logic.timing.Effect; -import com.gempukku.lotro.logic.timing.EffectResult; import com.gempukku.lotro.logic.timing.PlayConditions; import com.gempukku.lotro.logic.timing.TriggerConditions; @@ -85,15 +87,4 @@ public class Card9_001 extends AbstractAttachable { } return null; } - - @Override - public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { - if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) - && game.getGameState().isWearingRing()) { - RequiredTriggerAction action = new RequiredTriggerAction(self); - action.appendEffect(new TakeOffTheOneRingEffect()); - return Collections.singletonList(action); - } - return null; - } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/PhaseRequirement.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/PhaseRequirement.java new file mode 100644 index 000000000..5543bfb2c --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/PhaseRequirement.java @@ -0,0 +1,19 @@ +package com.gempukku.lotro.cards.build.field.effect.requirement; + +import com.gempukku.lotro.cards.build.CardGenerationEnvironment; +import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; +import com.gempukku.lotro.cards.build.Requirement; +import com.gempukku.lotro.cards.build.field.FieldUtils; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.logic.timing.PlayConditions; +import org.json.simple.JSONObject; + +public class PhaseRequirement implements RequirementProducer { + @Override + public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { + FieldUtils.validateAllowedFields(object, "phase"); + + final Phase phase = FieldUtils.getEnum(Phase.class, object.get("phase"), "phase"); + return (playerId, game, self, effectResult, effect) -> PlayConditions.isPhase(game, phase); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java index 61ea04007..aacea9f82 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RequirementFactory.java @@ -19,6 +19,8 @@ public class RequirementFactory { requirementProducers.put("twilightpoollessthan", new TwilightPoolLessThan()); requirementProducers.put("location", new Location()); requirementProducers.put("ringison", new RingIsOn()); + requirementProducers.put("phase", new PhaseRequirement()); + requirementProducers.put("ringisactive", new RingIsActive()); } public Requirement getRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RingIsActive.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RingIsActive.java new file mode 100644 index 000000000..541da4474 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/requirement/RingIsActive.java @@ -0,0 +1,17 @@ +package com.gempukku.lotro.cards.build.field.effect.requirement; + +import com.gempukku.lotro.cards.build.CardGenerationEnvironment; +import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; +import com.gempukku.lotro.cards.build.Requirement; +import com.gempukku.lotro.cards.build.field.FieldUtils; +import com.gempukku.lotro.logic.modifiers.ModifierFlag; +import org.json.simple.JSONObject; + +public class RingIsActive implements RequirementProducer { + @Override + public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { + FieldUtils.validateAllowedFields(object); + + return (playerId, game, self, effectResult, effect) -> !game.getModifiersQuerying().hasFlagActive(game, ModifierFlag.RING_TEXT_INACTIVE); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java index 3d94552d4..b6e172e85 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/RuleSet.java @@ -54,5 +54,7 @@ public class RuleSet { new PlayPermanentRule(_modifiersLogic).applyRule(); new PlayEventRule(_modifiersLogic).applyRule(); + + new TakeOffRingRule(_actionsEnvironment).applyRule(); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/TakeOffRingRule.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/TakeOffRingRule.java new file mode 100644 index 000000000..f7b8c8247 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/rules/TakeOffRingRule.java @@ -0,0 +1,40 @@ +package com.gempukku.lotro.logic.timing.rules; + +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.game.AbstractActionProxy; +import com.gempukku.lotro.game.PhysicalCard; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment; +import com.gempukku.lotro.logic.actions.RequiredTriggerAction; +import com.gempukku.lotro.logic.effects.TakeOffTheOneRingEffect; +import com.gempukku.lotro.logic.timing.EffectResult; +import com.gempukku.lotro.logic.timing.TriggerConditions; + +import java.util.Collections; +import java.util.List; + +public class TakeOffRingRule { + private DefaultActionsEnvironment actionsEnvironment; + + public TakeOffRingRule(DefaultActionsEnvironment actionsEnvironment) { + + this.actionsEnvironment = actionsEnvironment; + } + + public void applyRule() { + actionsEnvironment.addAlwaysOnActionProxy( + new AbstractActionProxy() { + @Override + public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult) { + if ((TriggerConditions.startOfPhase(game, effectResult, Phase.REGROUP) || TriggerConditions.endOfPhase(game, effectResult, Phase.REGROUP)) + && game.getGameState().isWearingRing()) { + final PhysicalCard ring = game.getGameState().getRing(game.getGameState().getCurrentPlayerId()); + RequiredTriggerAction action = new RequiredTriggerAction(ring); + action.appendEffect(new TakeOffTheOneRingEffect()); + return Collections.singletonList(action); + } + return null; + } + }); + } +}