- FP player wins now in Second Edition, when Shadow player reconciles during regroup on site 9.

This commit is contained in:
marcins78
2013-03-13 12:16:52 +00:00
parent df37168a7c
commit ba08008a91
5 changed files with 22 additions and 38 deletions

View File

@@ -10,6 +10,7 @@
- "Gloin, Gimli's Father" can now pump itself (per card text).
- "Galadriel's Grove" should now allow to play Galadriel from deck.
- "Troll of Morannon" has lost its prowess (Damage +1) (per card text).
- FP player wins now in Second Edition, when Shadow player reconciles during regroup on site 9.
<b>12 Mar. 2013</b>
- "Flaming Brand" from set 20 should now correctly apply strength and damage bonus if bearer is skirmishing a Nazgul.

View File

@@ -14,7 +14,7 @@ public interface LotroFormat {
public boolean hasMulliganRule();
public boolean winAtEndOfRegroup();
public boolean winWhenShadowReconciles();
public boolean winOnControlling5Sites();

View File

@@ -2,7 +2,6 @@ package com.gempukku.lotro.logic.timing.processes.turn;
import com.gempukku.lotro.common.Phase;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
import com.gempukku.lotro.logic.timing.processes.GameProcess;
import com.gempukku.lotro.logic.timing.processes.turn.general.PlayersPlayPhaseActionsInOrderGameProcess;
import com.gempukku.lotro.logic.timing.processes.turn.general.StartOfPhaseGameProcess;
@@ -16,9 +15,8 @@ public class RegroupGameProcess implements GameProcess {
public void process(LotroGame game) {
_followingGameProcess = new StartOfPhaseGameProcess(Phase.REGROUP,
new PlayersPlayPhaseActionsInOrderGameProcess(game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(game.getGameState().getCurrentPlayerId(), true), 0,
new CheckForSpecialWinConditionGameProcess(
new ShadowPlayersReconcileGameProcess(
new FellowshipPlayerChoosesToMoveOrStayGameProcess()))));
new FellowshipPlayerChoosesToMoveOrStayGameProcess())));
}
@@ -26,25 +24,4 @@ public class RegroupGameProcess implements GameProcess {
public GameProcess getNextProcess() {
return _followingGameProcess;
}
private class CheckForSpecialWinConditionGameProcess implements GameProcess {
private GameProcess _followingProcess;
private CheckForSpecialWinConditionGameProcess(GameProcess followingProcess) {
_followingProcess = followingProcess;
}
@Override
public void process(LotroGame game) {
if (game.getGameState().getCurrentSiteNumber() == 9
&& game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE)) {
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving to Shadow Reconcile on site 9");
}
}
@Override
public GameProcess getNextProcess() {
return _followingProcess;
}
}
}

View File

@@ -10,6 +10,7 @@ import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
import com.gempukku.lotro.logic.timing.EffectResult;
import com.gempukku.lotro.logic.timing.results.ReconcileResult;
import java.util.List;
@@ -25,20 +26,20 @@ public class WinConditionRule {
new AbstractActionProxy() {
@Override
public List<? extends RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResults) {
if (game.getFormat().winAtEndOfRegroup()
&& effectResults.getType() == EffectResult.Type.END_OF_PHASE
&& game.getGameState().getCurrentPhase() == Phase.REGROUP
&& game.getGameState().getCurrentSiteNumber() == 9)
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving to end of Regroup phase on site 9");
else if (effectResults.getType() == EffectResult.Type.START_OF_PHASE
&& game.getGameState().getCurrentPhase() == Phase.REGROUP
&& game.getGameState().getCurrentSiteNumber() == 9
&& !game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE))
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9");
else if (game.getFormat().winOnControlling5Sites()
if (game.getGameState().getCurrentPhase() == Phase.REGROUP
&& game.getGameState().getCurrentSiteNumber() == 9) {
if (isWinAtReconcile(game)) {
if (effectResults.getType() == EffectResult.Type.RECONCILE
&& !((ReconcileResult) effectResults).getPlayerId().equals(game.getGameState().getCurrentPlayerId())) {
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving till Shadow player reconciles on site 9");
}
} else if (effectResults.getType() == EffectResult.Type.START_OF_PHASE) {
game.playerWon(game.getGameState().getCurrentPlayerId(), "Surviving to Regroup phase on site 9");
}
} else if (game.getFormat().winOnControlling5Sites()
&& effectResults.getType() == EffectResult.Type.TAKE_CONTROL_OF_SITE) {
for (String opponent : GameUtils.getOpponents(game, game.getGameState().getCurrentPlayerId())) {
if (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), CardType.SITE, Filters.siteControlled(opponent))>=5)
if (Filters.countActive(game.getGameState(), game.getModifiersQuerying(), CardType.SITE, Filters.siteControlled(opponent)) >= 5)
game.playerWon(opponent, "Controls 5 sites");
}
}
@@ -46,4 +47,9 @@ public class WinConditionRule {
}
});
}
private boolean isWinAtReconcile(LotroGame game) {
return (game.getModifiersQuerying().hasFlagActive(game.getGameState(), ModifierFlag.WIN_CHECK_AFTER_SHADOW_RECONCILE)
|| game.getFormat().winWhenShadowReconciles());
}
}

View File

@@ -65,7 +65,7 @@ public class DefaultLotroFormat implements LotroFormat {
}
@Override
public boolean winAtEndOfRegroup() {
public boolean winWhenShadowReconciles() {
return _winAtEndOfRegroup;
}