Remove some of the clunky limits implementations.

This commit is contained in:
marcins78@gmail.com
2012-03-26 11:29:26 +00:00
parent cfe16d330d
commit afea313e1c
10 changed files with 18 additions and 72 deletions

View File

@@ -1,38 +0,0 @@
package com.gempukku.lotro.cards.modifiers.evaluator;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.LimitCounter;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.modifiers.evaluator.Evaluator;
public class CardTurnLimitEvaluator implements Evaluator {
private Integer _evaluated;
private Evaluator _evaluator;
private LotroGame _game;
private PhysicalCard _source;
private int _limit;
public CardTurnLimitEvaluator(LotroGame game, PhysicalCard source, int limit, Evaluator evaluator) {
_game = game;
_source = source;
_limit = limit;
_evaluator = evaluator;
}
private int evaluateOnce(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
LimitCounter limitCounter = modifiersQuerying.getUntilEndOfTurnLimitCounter(_source);
int internalResult = _evaluator.evaluateExpression(gameState, modifiersQuerying, cardAffected);
return limitCounter.incrementToLimit(_limit, internalResult);
}
@Override
public int evaluateExpression(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard cardAffected) {
if (_evaluated == null)
_evaluated = evaluateOnce(gameState, modifiersQuerying, cardAffected);
return _evaluated;
}
}

View File

@@ -2,14 +2,12 @@ package com.gempukku.lotro.cards.set1.site;
import com.gempukku.lotro.cards.AbstractSite;
import com.gempukku.lotro.cards.modifiers.MoveLimitModifier;
import com.gempukku.lotro.cards.modifiers.evaluator.CardTurnLimitEvaluator;
import com.gempukku.lotro.common.Block;
import com.gempukku.lotro.common.Keyword;
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.modifiers.evaluator.ConstantEvaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.List;
@@ -31,8 +29,8 @@ public class Card1_327 extends AbstractSite {
if (game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Keyword.RANGER)) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MoveLimitModifier(self, null,
new CardTurnLimitEvaluator(game, self, 1, new ConstantEvaluator(1))));
new MoveLimitModifier(self, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
return null;
}

View File

@@ -10,7 +10,6 @@ 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.modifiers.evaluator.ConstantEvaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.List;
@@ -35,8 +34,8 @@ public class Card1_342 extends AbstractSite {
&& game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Keyword.RANGER)) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MoveLimitModifier(self, null,
new CardTurnLimitEvaluator(game, self, 1, new ConstantEvaluator(1))));
new MoveLimitModifier(self, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
return null;
}

View File

@@ -11,7 +11,6 @@ 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.modifiers.evaluator.ConstantEvaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.List;
@@ -33,8 +32,8 @@ public class Card4_326 extends AbstractSite {
if (game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Culture.ROHAN, PossessionClass.MOUNT)) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MoveLimitModifier(self, null,
new CardTurnLimitEvaluator(game, self, 1, new ConstantEvaluator(1))));
new MoveLimitModifier(self, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
return null;
}

View File

@@ -10,7 +10,6 @@ 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.modifiers.evaluator.ConstantEvaluator;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.List;
@@ -33,8 +32,8 @@ public class Card4_330 extends AbstractSite {
if (game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1
&& Filters.canSpot(game.getGameState(), game.getModifiersQuerying(), Race.HOBBIT, Filters.unboundCompanion)) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MoveLimitModifier(self, null,
new CardTurnLimitEvaluator(game, self, 1, new ConstantEvaluator(1))));
new MoveLimitModifier(self, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
return null;
}

View File

@@ -27,10 +27,10 @@ public class Card7_334 extends AbstractSite {
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if (self.getData() == null) {
self.storeData(new Object());
if (game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new KeywordModifier(self, Filters.and(Culture.GONDOR, CardType.COMPANION), Keyword.DEFENDER, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
return null;
}

View File

@@ -2,7 +2,6 @@ package com.gempukku.lotro.cards.set7.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndAddUntilEOPStrengthBonusEffect;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
@@ -57,7 +56,7 @@ public class Card7_197 extends AbstractMinion {
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return self.getData() == null;
return self.getWhileInZoneData() == null;
}
}), self));
}
@@ -81,7 +80,7 @@ public class Card7_197 extends AbstractMinion {
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
self.storeData(new Object());
self.setWhileInZoneData(new Object());
}
});
}
@@ -89,8 +88,6 @@ public class Card7_197 extends AbstractMinion {
}));
return Collections.singletonList(action);
}
if (TriggerConditions.endOfPhase(game, effectResult, Phase.ASSIGNMENT))
self.removeData();
return null;
}

View File

@@ -2,13 +2,11 @@ package com.gempukku.lotro.cards.set7.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.cards.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
@@ -52,7 +50,7 @@ public class Card7_200 extends AbstractMinion {
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return self.getData() == null;
return self.getWhileInZoneData() == null;
}
}), self));
}
@@ -74,7 +72,7 @@ public class Card7_200 extends AbstractMinion {
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
self.storeData(new Object());
self.setWhileInZoneData(new Object());
}
});
}
@@ -82,8 +80,6 @@ public class Card7_200 extends AbstractMinion {
}));
return Collections.singletonList(action);
}
if (TriggerConditions.endOfPhase(game, effectResult, Phase.ASSIGNMENT))
self.removeData();
return null;
}
}

View File

@@ -2,13 +2,11 @@ package com.gempukku.lotro.cards.set7.wraith;
import com.gempukku.lotro.cards.AbstractMinion;
import com.gempukku.lotro.cards.PlayConditions;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.choose.ChooseAndExertCharactersEffect;
import com.gempukku.lotro.cards.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
import com.gempukku.lotro.cards.modifiers.conditions.AndCondition;
import com.gempukku.lotro.common.CardType;
import com.gempukku.lotro.common.Culture;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.GameState;
@@ -52,7 +50,7 @@ public class Card7_201 extends AbstractMinion {
new Condition() {
@Override
public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) {
return self.getData() == null;
return self.getWhileInZoneData() == null;
}
}), self));
}
@@ -74,7 +72,7 @@ public class Card7_201 extends AbstractMinion {
new UnrespondableEffect() {
@Override
protected void doPlayEffect(LotroGame game) {
self.storeData(new Object());
self.setWhileInZoneData(new Object());
}
});
}
@@ -82,8 +80,6 @@ public class Card7_201 extends AbstractMinion {
}));
return Collections.singletonList(action);
}
if (TriggerConditions.endOfPhase(game, effectResult, Phase.ASSIGNMENT))
self.removeData();
return null;
}
}

View File

@@ -43,10 +43,10 @@ public class Card9_026 extends AbstractCompanion {
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
if ((TriggerConditions.played(game, effectResult, self) || effectResult.getType() == EffectResult.Type.START_OF_TURN)
&& self.getData() == null) {
self.storeData(new Object());
&& game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).getUsedLimit() < 1) {
game.getModifiersEnvironment().addUntilEndOfTurnModifier(
new MoveLimitModifier(self, 1));
game.getModifiersQuerying().getUntilEndOfTurnLimitCounter(self).incrementToLimit(1, 1);
}
if (effectResult.getType() == EffectResult.Type.WHEN_FELLOWSHIP_MOVES
&& PlayConditions.isPhase(game, Phase.REGROUP)) {