- "Realm of Dwarrowdelf" now has two separate limits (for str and dmg).

This commit is contained in:
marcins78@gmail.com
2012-04-30 10:27:11 +00:00
parent 2677aa5a30
commit 2fb31f526d
5 changed files with 23 additions and 9 deletions

View File

@@ -11,6 +11,7 @@ import com.gempukku.lotro.logic.timing.UnrespondableEffect;
public class CheckPhaseLimitEffect extends UnrespondableEffect {
private Action _action;
private PhysicalCard _card;
private String _limitPrefix;
private int _limit;
private Phase _phase;
private Effect _limitedEffect;
@@ -20,7 +21,12 @@ public class CheckPhaseLimitEffect extends UnrespondableEffect {
}
public CheckPhaseLimitEffect(Action action, PhysicalCard card, int limit, Phase phase, Effect limitedEffect) {
this(action, card, "", limit, phase, limitedEffect);
}
public CheckPhaseLimitEffect(Action action, PhysicalCard card, String limitPrefix, int limit, Phase phase, Effect limitedEffect) {
_card = card;
_limitPrefix = limitPrefix;
_limit = limit;
_phase = phase;
_limitedEffect = limitedEffect;
@@ -33,7 +39,7 @@ public class CheckPhaseLimitEffect extends UnrespondableEffect {
if (phase == null)
phase = game.getGameState().getCurrentPhase();
int incrementedBy = game.getModifiersQuerying().getUntilEndOfPhaseLimitCounter(_card, phase).incrementToLimit(_limit, 1);
int incrementedBy = game.getModifiersQuerying().getUntilEndOfPhaseLimitCounter(_card, _limitPrefix, phase).incrementToLimit(_limit, 1);
if (incrementedBy > 0) {
SubAction subAction = new SubAction(_action);
subAction.appendEffect(

View File

@@ -44,12 +44,12 @@ public class Card2_012 extends AbstractPermanent {
@Override
protected void cardSelected(LotroGame game, PhysicalCard dwarf) {
action.appendEffect(
new CheckPhaseLimitEffect(action, self, 3, Phase.SKIRMISH,
new CheckPhaseLimitEffect(action, self, "str", 3, Phase.SKIRMISH,
new AddUntilEndOfPhaseModifierEffect(
new StrengthModifier(self, Filters.sameCard(dwarf), 1), Phase.SKIRMISH)));
if (PlayConditions.location(game, Keyword.UNDERGROUND))
action.appendEffect(
new CheckPhaseLimitEffect(action, self, 3, Phase.SKIRMISH,
new CheckPhaseLimitEffect(action, self, "dmg", 3, Phase.SKIRMISH,
new AddUntilEndOfPhaseModifierEffect(
new KeywordModifier(self, Filters.sameCard(dwarf), Keyword.DAMAGE), Phase.SKIRMISH)));
}

View File

@@ -18,7 +18,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
private Set<Modifier> _skipSet = new HashSet<Modifier>();
private Map<Phase, Map<Integer, LimitCounter>> _phaseLimitCounters = new HashMap<Phase, Map<Integer, LimitCounter>>();
private Map<Phase, Map<String, LimitCounter>> _phaseLimitCounters = new HashMap<Phase, Map<String, LimitCounter>>();
private Map<Integer, LimitCounter> _turnLimitCounters = new HashMap<Integer, LimitCounter>();
private int _drawnThisPhaseCount = 0;
@@ -26,15 +26,20 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
@Override
public LimitCounter getUntilEndOfPhaseLimitCounter(PhysicalCard card, Phase phase) {
Map<Integer, LimitCounter> limitCounterMap = _phaseLimitCounters.get(phase);
return getUntilEndOfPhaseLimitCounter(card, "", phase);
}
@Override
public LimitCounter getUntilEndOfPhaseLimitCounter(PhysicalCard card, String prefix, Phase phase) {
Map<String, LimitCounter> limitCounterMap = _phaseLimitCounters.get(phase);
if (limitCounterMap == null) {
limitCounterMap = new HashMap<Integer, LimitCounter>();
limitCounterMap = new HashMap<String, LimitCounter>();
_phaseLimitCounters.put(phase, limitCounterMap);
}
LimitCounter limitCounter = limitCounterMap.get(card.getCardId());
LimitCounter limitCounter = limitCounterMap.get(prefix + card.getCardId());
if (limitCounter == null) {
limitCounter = new DefaultLimitCounter();
limitCounterMap.put(card.getCardId(), limitCounter);
limitCounterMap.put(prefix + card.getCardId(), limitCounter);
}
return limitCounter;
}
@@ -128,7 +133,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying {
removeModifiers(list);
list.clear();
}
Map<Integer, LimitCounter> counterMap = _phaseLimitCounters.get(phase);
Map<String, LimitCounter> counterMap = _phaseLimitCounters.get(phase);
if (counterMap != null)
counterMap.clear();

View File

@@ -15,6 +15,8 @@ import java.util.Set;
public interface ModifiersQuerying {
public LimitCounter getUntilEndOfPhaseLimitCounter(PhysicalCard card, Phase phase);
public LimitCounter getUntilEndOfPhaseLimitCounter(PhysicalCard card, String prefix, Phase phase);
public LimitCounter getUntilEndOfTurnLimitCounter(PhysicalCard card);
public Collection<Modifier> getModifiersAffecting(GameState gameState, PhysicalCard card);

View File

@@ -1,6 +1,7 @@
<pre style="font-size:80%">
<b>30 Apr. 2012</b>
- "Pillage of Rohan" should now work correctly.
- "Realm of Dwarrowdelf" now has two separate limits (for str and dmg).
<b>27 Apr. 2012</b>
- "Morning Came" now correctly adds +2 Strength to the character if shadow player puts card from hand beneath his/her