diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-shire.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-shire.hjson index 091d7b599..37cd7662e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-shire.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set03/set3-shire.hjson @@ -163,6 +163,7 @@ optional: true trigger: { type: discardFromHandBy + player: you by: side(shadow) forced: true } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson index 9165dea5f..c00607a79 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set10/set10-Dwarven.hjson @@ -178,6 +178,9 @@ select: choose(minion,notAssignedToSkirmish) } } + { + type: consumeSurplusDamage + } ] } gametext: If a Dwarf kills a minion in a skirmish and that minion did not take all wounds caused by that Dwarf's damage bonus, assign those remaining wounds to minions not assigned to a skirmish. diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Sites.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Sites.hjson index 2062f9ec1..3ecacf28d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Sites.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Sites.hjson @@ -168,13 +168,9 @@ keywords: Plains effects: [ { - type: modifier + type: controlledSiteModifier modifier: { type: modifyStrength - requires: { - type: canSpot - filter: self,controlledByShadowPlayer - } filter: hunter,minion amount: 1 } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/EffectFieldProcessor.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/EffectFieldProcessor.java index 277c6c4cf..2daa3e78e 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/EffectFieldProcessor.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/EffectFieldProcessor.java @@ -19,6 +19,7 @@ public class EffectFieldProcessor implements FieldProcessor { effectProcessors.put("activatedindiscard", new ActivatedInDiscardEffectProcessor()); effectProcessors.put("aidcost", new AidCost()); effectProcessors.put("assignmentcost", new AssignmentCost()); + effectProcessors.put("controlledsitemodifier", new ControlledSiteModifier()); effectProcessors.put("copycard", new CopyCard()); effectProcessors.put("deckbuildingrestriction", new DeckBuildingRestrictionGameTextProcessor()); effectProcessors.put("discardedfromplaytrigger", new DiscardedFromPlayTriggerEffectProcessor()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/AssignmentCost.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/AssignmentCost.java index a998baea2..ec70e5ba8 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/AssignmentCost.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/AssignmentCost.java @@ -14,8 +14,8 @@ import com.gempukku.lotro.logic.decisions.YesNoDecision; import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect; import com.gempukku.lotro.logic.effects.StackActionEffect; +import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier; import com.gempukku.lotro.logic.modifiers.Condition; -import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier; import com.gempukku.lotro.logic.modifiers.Modifier; import com.gempukku.lotro.logic.modifiers.PaidAssignmentCostModifier; import com.gempukku.lotro.logic.modifiers.condition.AndCondition; @@ -44,7 +44,7 @@ public class AssignmentCost implements EffectProcessor { new ModifierSource() { @Override public Modifier getModifier(ActionContext actionContext) { - return new FreePeoplePlayerMayNotAssignCharacterModifier(actionContext.getSource(), + return new CantBeAssignedToSkirmishModifier(actionContext.getSource(), new AndCondition( RequirementCondition.createCondition(requirements, actionContext), new Condition() { @@ -53,7 +53,7 @@ public class AssignmentCost implements EffectProcessor { return !game.getModifiersQuerying().assignmentCostWasPaid(game, actionContext.getSource()); } } - ), actionContext.getSource()); + ), actionContext.getGame().getGameState().getCurrentPlayerId(), actionContext.getSource()); } }); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ControlledSiteModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ControlledSiteModifier.java new file mode 100644 index 000000000..5e3309585 --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/ControlledSiteModifier.java @@ -0,0 +1,21 @@ +package com.gempukku.lotro.cards.build.field.effect; + +import com.gempukku.lotro.cards.build.BuiltLotroCardBlueprint; +import com.gempukku.lotro.cards.build.CardGenerationEnvironment; +import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; +import com.gempukku.lotro.cards.build.ModifierSource; +import com.gempukku.lotro.cards.build.field.EffectProcessor; +import com.gempukku.lotro.cards.build.field.FieldUtils; +import org.json.simple.JSONObject; + +public class ControlledSiteModifier implements EffectProcessor { + @Override + public void processEffect(JSONObject value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { + FieldUtils.validateAllowedFields(value, "modifier"); + + JSONObject jsonObject = (JSONObject) value.get("modifier"); + final ModifierSource modifier = environment.getModifierSourceFactory().getModifier(jsonObject, environment); + + blueprint.appendControlledSiteModifier(modifier); + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java index 05fbb29d8..f04ad6ee4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/EffectAppenderFactory.java @@ -45,6 +45,7 @@ public class EffectAppenderFactory { effectAppenderProducers.put("choosehowmanytwilighttokenstospot", new ChooseHowManyTwilightTokensToSpot()); effectAppenderProducers.put("chooseyesorno", new ChooseYesOrNo()); effectAppenderProducers.put("conditional", new ConditionalEffect()); + effectAppenderProducers.put("consumesurplusdamage", new ConsumeSurplusDamage()); effectAppenderProducers.put("corruptringbearer", new CorruptRingBearer()); effectAppenderProducers.put("costtoeffect", new CostToEffect()); effectAppenderProducers.put("disablearcherytotalcontribution", new DisableArcheryTotalContribution()); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ConsumeSurplusDamage.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ConsumeSurplusDamage.java new file mode 100644 index 000000000..dbaf832fe --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ConsumeSurplusDamage.java @@ -0,0 +1,36 @@ +package com.gempukku.lotro.cards.build.field.effect.appender; + +import com.gempukku.lotro.cards.build.ActionContext; +import com.gempukku.lotro.cards.build.CardGenerationEnvironment; +import com.gempukku.lotro.cards.build.InvalidCardDefinitionException; +import com.gempukku.lotro.cards.build.field.FieldUtils; +import com.gempukku.lotro.cards.build.field.effect.EffectAppender; +import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer; +import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.actions.CostToEffectAction; +import com.gempukku.lotro.logic.actions.ResolveSkirmishDamageAction; +import com.gempukku.lotro.logic.timing.Effect; +import com.gempukku.lotro.logic.timing.UnrespondableEffect; +import org.json.simple.JSONObject; + +public class ConsumeSurplusDamage implements EffectAppenderProducer { + @Override + public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException { + FieldUtils.validateAllowedFields(effectObject); + return new DelayedAppender() { + @Override + protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { + return new UnrespondableEffect() { + @Override + protected void doPlayEffect(LotroGame game) { + final ResolveSkirmishDamageAction resolveSkirmishDamageAction = game.getActionsEnvironment().findTopmostActionOfType(ResolveSkirmishDamageAction.class); + if (resolveSkirmishDamageAction != null + && resolveSkirmishDamageAction.getRemainingDamage() > 0) { + resolveSkirmishDamageAction.consumeRemainingDamage(); + } + } + }; + } + }; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/EndPhase.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/EndPhase.java index 39a2f9e2e..8fbfdb549 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/EndPhase.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/EndPhase.java @@ -8,7 +8,7 @@ import com.gempukku.lotro.cards.build.field.effect.EffectAppender; import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer; import com.gempukku.lotro.logic.actions.CostToEffectAction; import com.gempukku.lotro.logic.effects.AddUntilEndOfPhaseModifierEffect; -import com.gempukku.lotro.logic.modifiers.PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier; +import com.gempukku.lotro.logic.modifiers.CantPlayPhaseEventsOrphaseSpecialAbilitiesModifier; import com.gempukku.lotro.logic.timing.Effect; import org.json.simple.JSONObject; @@ -21,7 +21,7 @@ public class EndPhase implements EffectAppenderProducer { @Override protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) { return new AddUntilEndOfPhaseModifierEffect( - new PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(actionContext.getSource(), null, actionContext.getGame().getGameState().getCurrentPhase())); + new CantPlayPhaseEventsOrphaseSpecialAbilitiesModifier(actionContext.getSource(), null, actionContext.getGame().getGameState().getCurrentPhase(), null)); } }; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java index 796c87de6..8103e824d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/modifier/CantUseSpecialAbilities.java @@ -6,8 +6,6 @@ import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResol import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.logic.modifiers.CantUseSpecialAbilitiesModifier; import com.gempukku.lotro.logic.modifiers.Modifier; -import com.gempukku.lotro.logic.modifiers.PlayerCantUseCardSpecialAbilitiesModifier; -import com.gempukku.lotro.logic.modifiers.PlayersCantUseCardSpecialAbilitiesModifier; import org.json.simple.JSONObject; public class CantUseSpecialAbilities implements ModifierSourceProducer { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/DiscardFromHandBy.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/DiscardFromHandBy.java index bc5a4c71a..7a05d1839 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/DiscardFromHandBy.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/trigger/DiscardFromHandBy.java @@ -39,8 +39,8 @@ public class DiscardFromHandBy implements TriggerCheckerProducer { } if (result && playerSource != null) { // Need to check if it was that player discarding the card - final String performingPlayer = ((DiscardCardFromHandResult) actionContext.getEffectResult()).getSource().getOwner(); - if (performingPlayer == null || !performingPlayer.equals(playerSource.getPlayer(actionContext))) + final String handPlayerId = ((DiscardCardFromHandResult) actionContext.getEffectResult()).getHandPlayerId(); + if (handPlayerId == null || !handPlayerId.equals(playerSource.getPlayer(actionContext))) result = false; } if (result && memorize != null) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishResistanceStrengthOverrideModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishResistanceStrengthOverrideModifier.java deleted file mode 100644 index 67ec2f829..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishResistanceStrengthOverrideModifier.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; - -public class FPSkirmishResistanceStrengthOverrideModifier extends AbstractModifier { - private static final Evaluator _resistanceEvaluator = - new Evaluator() { - @Override - public int evaluateExpression(LotroGame game, PhysicalCard cardAffected) { - return game.getModifiersQuerying().getResistance(game, cardAffected); - } - }; - - public FPSkirmishResistanceStrengthOverrideModifier(PhysicalCard source, Filterable affectFilter, Condition condition) { - super(source, null, affectFilter, condition, ModifierEffect.SKIRMISH_STRENGTH_EVALUATOR_MODIFIER); - } - - @Override - public String getText(LotroGame game, PhysicalCard self) { - return "Uses resistance instead of strength when resolving skirmish"; - } - - @Override - public Evaluator getFpSkirmishStrengthOverrideEvaluator(LotroGame game, PhysicalCard fpCharacter) { - return _resistanceEvaluator; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishVitalityStrengthOverrideModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishVitalityStrengthOverrideModifier.java deleted file mode 100644 index 5c3760ae4..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FPSkirmishVitalityStrengthOverrideModifier.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; - -public class FPSkirmishVitalityStrengthOverrideModifier extends AbstractModifier { - private static final Evaluator _vitalityEvaluator = - (game, cardAffected) -> game.getModifiersQuerying().getVitality(game, cardAffected); - - public FPSkirmishVitalityStrengthOverrideModifier(PhysicalCard source, Filterable affectFilter, Condition condition) { - super(source, null, affectFilter, condition, ModifierEffect.SKIRMISH_STRENGTH_EVALUATOR_MODIFIER); - } - - @Override - public String getText(LotroGame game, PhysicalCard self) { - return "Uses vitality instead of strength when resolving skirmish"; - } - - @Override - public Evaluator getFpSkirmishStrengthOverrideEvaluator(LotroGame game, PhysicalCard fpCharacter) { - return _vitalityEvaluator; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FreePeoplePlayerMayNotAssignCharacterModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FreePeoplePlayerMayNotAssignCharacterModifier.java deleted file mode 100644 index 1a1fcf5a4..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/FreePeoplePlayerMayNotAssignCharacterModifier.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.common.Side; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; - -public class FreePeoplePlayerMayNotAssignCharacterModifier extends AbstractModifier { - public FreePeoplePlayerMayNotAssignCharacterModifier(PhysicalCard source, Condition condition, Filterable affectFilter) { - super(source, "Free people player may not assign character to skirmish", affectFilter, condition, ModifierEffect.ASSIGNMENT_MODIFIER); - } - - @Override - public boolean isPreventedFromBeingAssignedToSkirmish(LotroGame game, Side sidePlayer, PhysicalCard card) { - if (sidePlayer == Side.FREE_PEOPLE) - return true; - return false; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayerCantUseCardSpecialAbilitiesModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayerCantUseCardSpecialAbilitiesModifier.java deleted file mode 100644 index 7cb1df734..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayerCantUseCardSpecialAbilitiesModifier.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -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.timing.Action; - -public class PlayerCantUseCardSpecialAbilitiesModifier extends AbstractModifier { - private final String playerId; - private final Filter _sourceFilters; - - public PlayerCantUseCardSpecialAbilitiesModifier(PhysicalCard source, String playerId, Condition condition, Filterable... sourceFilters) { - super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER); - this.playerId = playerId; - _sourceFilters = Filters.and(sourceFilters); - } - - @Override - public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) { - if (action.getType() == Action.Type.SPECIAL_ABILITY - && _sourceFilters.accepts(game, action.getActionSource()) - && performingPlayer.equals(playerId)) - return false; - return true; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier.java deleted file mode 100644 index 7f92509f0..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.timing.Action; - -public class PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier extends AbstractModifier { - private final Phase _phase; - - public PlayersCantPlayPhaseEventsOrPhaseSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Phase phase) { - super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER); - _phase = phase; - } - - @Override - public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) { - if ((action.getType() == Action.Type.PLAY_CARD || action.getType() == Action.Type.SPECIAL_ABILITY) - && action.getActionTimeword() == _phase) - return false; - return true; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantUseCardSpecialAbilitiesModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantUseCardSpecialAbilitiesModifier.java deleted file mode 100644 index 2a4a4efb8..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/PlayersCantUseCardSpecialAbilitiesModifier.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -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.timing.Action; - -public class PlayersCantUseCardSpecialAbilitiesModifier extends AbstractModifier { - private final Filter _sourceFilters; - - public PlayersCantUseCardSpecialAbilitiesModifier(PhysicalCard source, Condition condition, Filterable... sourceFilters) { - super(source, null, null, condition, ModifierEffect.ACTION_MODIFIER); - _sourceFilters = Filters.and(sourceFilters); - } - - @Override - public boolean canPlayAction(LotroGame game, String performingPlayer, Action action) { - if (action.getType() == Action.Type.SPECIAL_ABILITY - && _sourceFilters.accepts(game, action.getActionSource())) - return false; - return true; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ShadowSkirmishVitalityStrengthOverrideModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ShadowSkirmishVitalityStrengthOverrideModifier.java deleted file mode 100644 index d7ea6ef96..000000000 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ShadowSkirmishVitalityStrengthOverrideModifier.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.gempukku.lotro.logic.modifiers; - -import com.gempukku.lotro.common.Filterable; -import com.gempukku.lotro.game.PhysicalCard; -import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator; - -public class ShadowSkirmishVitalityStrengthOverrideModifier extends AbstractModifier { - private static final Evaluator _vitalityEvaluator = - (game, cardAffected) -> game.getModifiersQuerying().getVitality(game, cardAffected); - - public ShadowSkirmishVitalityStrengthOverrideModifier(PhysicalCard source, Filterable affectFilter, Condition condition) { - super(source, null, affectFilter, condition, ModifierEffect.SKIRMISH_STRENGTH_EVALUATOR_MODIFIER); - } - - @Override - public String getText(LotroGame game, PhysicalCard self) { - return "Uses vitality instead of strength when resolving skirmish"; - } - - @Override - public Evaluator getShadowSkirmishStrengthOverrideEvaluator(LotroGame game, PhysicalCard fpCharacter) { - return _vitalityEvaluator; - } -} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java index 445099e96..5a6a584c7 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/TriggerConditions.java @@ -15,12 +15,12 @@ import java.util.Objects; public class TriggerConditions { public static boolean startOfPhase(LotroGame game, EffectResult effectResult, Phase phase) { return (effectResult.getType() == EffectResult.Type.START_OF_PHASE - && game.getGameState().getCurrentPhase() == phase); + && ((StartOfPhaseResult) effectResult).getPhase() == phase || phase == null); } public static boolean endOfPhase(LotroGame game, EffectResult effectResult, Phase phase) { return (effectResult.getType() == EffectResult.Type.END_OF_PHASE - && (game.getGameState().getCurrentPhase() == phase || phase == null)); + && ((EndOfPhaseResult) effectResult).getPhase() == phase || phase == null); } public static boolean startOfTurn(LotroGame game, EffectResult effectResult) { diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_311_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_311_Tests.java index a1c1eb26d..e62835654 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_311_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_311_Tests.java @@ -9,7 +9,8 @@ import org.junit.Test; import java.util.HashMap; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class Card_01_311_Tests { @@ -64,18 +65,22 @@ public class Card_01_311_Tests assertEquals(Signet.ARAGORN, card.getBlueprint().getSignet()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void SamTest1() throws DecisionResultInvalidException, CardNotFoundException { - //Pre-game setup + @Test + public void samPicksUpTheRing() throws DecisionResultInvalidException, CardNotFoundException { var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); - + var sam = scn.GetFreepsCard("card"); + scn.FreepsMoveCharToTable(sam); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(2, scn.GetTwilight()); + PhysicalCardImpl frodo = scn.GetRingBearer(); + scn.AddWoundsToChar(frodo, 4); + scn.FreepsPassCurrentPhaseAction(); + + assertTrue(scn.FreepsHasOptionalTriggerAvailable()); + scn.FreepsAcceptOptionalTrigger(); + + assertEquals(scn.GetRingBearer(), sam); + assertEquals(Zone.DEAD, frodo.getZone()); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set04/Card_04_001_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set04/Card_04_001_Tests.java index 2950686de..dc8feb574 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set04/Card_04_001_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set04/Card_04_001_Tests.java @@ -1,15 +1,15 @@ package com.gempukku.lotro.cards.official.set04; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; import com.gempukku.lotro.game.CardNotFoundException; -import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; import java.util.HashMap; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class Card_04_001_Tests { @@ -23,7 +23,7 @@ public class Card_04_001_Tests }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, - GenericCardTestHelper.RulingRing + "4_1" ); }