diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DeckInvalidException.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/DeckInvalidException.java similarity index 100% rename from gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DeckInvalidException.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/DeckInvalidException.java diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormat.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java similarity index 64% rename from gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormat.java rename to gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java index adc8bba61..cd09ffc1b 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/LotroFormat.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java @@ -1,10 +1,11 @@ -package com.gempukku.lotro.game.formats; +package com.gempukku.lotro.game; -import com.gempukku.lotro.game.DeckInvalidException; import com.gempukku.lotro.logic.vo.LotroDeck; public interface LotroFormat { public boolean isOrderedSites(); + public boolean hasMulliganRule(); + public void validateDeck(LotroDeck deck) throws DeckInvalidException; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java index 714bc77a9..ddb6983a3 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/LotroGame.java @@ -2,6 +2,7 @@ package com.gempukku.lotro.game.state; import com.gempukku.lotro.communication.UserFeedback; import com.gempukku.lotro.game.ActionsEnvironment; +import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.logic.modifiers.ModifiersEnvironment; import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; @@ -23,4 +24,6 @@ public interface LotroGame { public void playerLost(String currentPlayerId, String reason); public String getWinnerPlayerId(); + + public LotroFormat getFormat(); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java index 7f1da8bd5..327916b13 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/DefaultLotroGame.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.communication.UserFeedback; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.ActionsEnvironment; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; @@ -31,6 +32,7 @@ public class DefaultLotroGame implements LotroGame { private ActionStack _actionStack; private Map _gameStateListeners = new HashMap(); + private LotroFormat _format; private GameResultListener _gameResultListener; private Set _allPlayers; @@ -39,7 +41,8 @@ public class DefaultLotroGame implements LotroGame { private String _winReason; private Map _losers = new HashMap(); - public DefaultLotroGame(Map decks, UserFeedback userFeedback, GameResultListener gameResultListener, final LotroCardBlueprintLibrary library) { + public DefaultLotroGame(LotroFormat format, Map decks, UserFeedback userFeedback, GameResultListener gameResultListener, final LotroCardBlueprintLibrary library) { + _format = format; _gameResultListener = gameResultListener; _actionStack = new ActionStack(); @@ -80,6 +83,11 @@ public class DefaultLotroGame implements LotroGame { ruleSet.applyRuleSet(); } + @Override + public LotroFormat getFormat() { + return _format; + } + public void startGame() { _turnProcedure.carryOutPendingActionsUntilDecisionNeeded(); } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/MulliganProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/MulliganProcess.java new file mode 100644 index 000000000..7e070ac9f --- /dev/null +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/MulliganProcess.java @@ -0,0 +1,57 @@ +package com.gempukku.lotro.logic.timing.processes.pregame; + +import com.gempukku.lotro.common.Zone; +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.PlayOrder; +import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; +import com.gempukku.lotro.logic.timing.processes.GameProcess; +import com.gempukku.lotro.logic.timing.processes.turn.StartOfTurnGameProcess; + +import java.util.HashSet; +import java.util.Set; + +public class MulliganProcess implements GameProcess { + private LotroGame _game; + private PlayOrder _playOrder; + + private GameProcess _nextProcess; + + public MulliganProcess(LotroGame game, PlayOrder playOrder) { + _game = game; + _playOrder = playOrder; + } + + @Override + public void process() { + final String nextPlayer = _playOrder.getNextPlayer(); + if (nextPlayer != null) { + _game.getUserFeedback().sendAwaitingDecision(nextPlayer, + new MultipleChoiceAwaitingDecision(1, "Do you wish to mulligan? (Shuffle cards back and draw 6)", new String[]{"No", "Yes"}) { + @Override + protected void validDecisionMade(int index, String result) { + if (result.equals("Yes")) { + final GameState gameState = _game.getGameState(); + Set hand = new HashSet(gameState.getHand(nextPlayer)); + gameState.removeCardsFromZone(hand); + for (PhysicalCard card : hand) + gameState.addCardToZone(card, Zone.DECK); + + gameState.shuffleDeck(nextPlayer); + for (int i = 0; i < 6; i++) + gameState.playerDrawsCard(nextPlayer); + } + } + }); + _nextProcess = new MulliganProcess(_game, _playOrder); + } else { + _nextProcess = new StartOfTurnGameProcess(_game); + } + } + + @Override + public GameProcess getNextProcess() { + return _nextProcess; + } +} diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java index 4ef3f0894..552502cb4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayRingBearerRingAndAddBurdersGameProcess.java @@ -44,6 +44,6 @@ public class PlayRingBearerRingAndAddBurdersGameProcess implements GameProcess { @Override public GameProcess getNextProcess() { GameState gameState = _game.getGameState(); - return new PlayStartingFellowshipGameProcess(_game, gameState.getPlayerOrder().getClockwisePlayOrder(_firstPlayer, false)); + return new PlayStartingFellowshipGameProcess(_game, gameState.getPlayerOrder().getClockwisePlayOrder(_firstPlayer, false), _firstPlayer); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayStartingFellowshipGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayStartingFellowshipGameProcess.java index a1e374088..936d1396c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayStartingFellowshipGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayStartingFellowshipGameProcess.java @@ -10,12 +10,14 @@ import java.util.List; public class PlayStartingFellowshipGameProcess implements GameProcess { private LotroGame _game; private PlayOrder _playOrder; + private String _firstPlayer; private GameProcess _nextProcess; - public PlayStartingFellowshipGameProcess(LotroGame game, PlayOrder playOrder) { + public PlayStartingFellowshipGameProcess(LotroGame game, PlayOrder playOrder, String firstPlayer) { _game = game; _playOrder = playOrder; + _firstPlayer = firstPlayer; } @Override @@ -34,9 +36,9 @@ public class PlayStartingFellowshipGameProcess implements GameProcess { for (PhysicalCard physicalCard : attachedToRingBearer) _game.getGameState().startAffecting(_game, physicalCard, _game.getModifiersEnvironment()); - _nextProcess = new PlayerPlaysStartingFellowshipGameProcess(_game, nextPlayer, new PlayStartingFellowshipGameProcess(_game, _playOrder)); + _nextProcess = new PlayerPlaysStartingFellowshipGameProcess(_game, nextPlayer, new PlayStartingFellowshipGameProcess(_game, _playOrder, _firstPlayer)); } else { - _nextProcess = new PlayersDrawEightCardsGameProcess(_game); + _nextProcess = new PlayersDrawEightCardsGameProcess(_game, _firstPlayer); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayersDrawEightCardsGameProcess.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayersDrawEightCardsGameProcess.java index 76d85b064..a0ebe75d0 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayersDrawEightCardsGameProcess.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/processes/pregame/PlayersDrawEightCardsGameProcess.java @@ -7,9 +7,11 @@ import com.gempukku.lotro.logic.timing.processes.turn.StartOfTurnGameProcess; public class PlayersDrawEightCardsGameProcess implements GameProcess { private LotroGame _game; + private String _firstPlayer; - public PlayersDrawEightCardsGameProcess(LotroGame game) { + public PlayersDrawEightCardsGameProcess(LotroGame game, String firstPlayer) { _game = game; + _firstPlayer = firstPlayer; } @Override @@ -24,6 +26,9 @@ public class PlayersDrawEightCardsGameProcess implements GameProcess { @Override public GameProcess getNextProcess() { - return new StartOfTurnGameProcess(_game); + if (_game.getFormat().hasMulliganRule()) + return new MulliganProcess(_game, _game.getGameState().getPlayerOrder().getClockwisePlayOrder(_firstPlayer, false)); + else + return new StartOfTurnGameProcess(_game); } } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java index 45ec4e6df..06951c5ea 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroGameMediator.java @@ -2,7 +2,6 @@ package com.gempukku.lotro.game; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.common.Phase; -import com.gempukku.lotro.game.formats.LotroFormat; import com.gempukku.lotro.logic.decisions.AwaitingDecision; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.modifiers.Modifier; @@ -42,7 +41,7 @@ public class LotroGameMediator { _playerClocks.put(participantId, 0); _playersPlaying.add(participantId); } - _lotroGame = new DefaultLotroGame(decks, _userFeedback, gameResultListener, library); + _lotroGame = new DefaultLotroGame(lotroFormat, decks, _userFeedback, gameResultListener, library); } public Set getPlayersPlaying() { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java index d36639478..4ac5d6f1b 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/LotroServer.java @@ -8,7 +8,6 @@ import com.gempukku.lotro.db.DbAccess; import com.gempukku.lotro.db.DeckDAO; import com.gempukku.lotro.db.PlayerDAO; import com.gempukku.lotro.db.vo.Player; -import com.gempukku.lotro.game.formats.LotroFormat; import com.gempukku.lotro.logic.timing.GameResultListener; import com.gempukku.lotro.logic.vo.LotroDeck; import org.apache.log4j.Logger; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java index 315faaca9..0bc73e007 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/DefaultLotroFormat.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.common.Side; import com.gempukku.lotro.game.DeckInvalidException; import com.gempukku.lotro.game.LotroCardBlueprint; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; +import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.logic.vo.LotroDeck; import java.util.HashMap; @@ -19,17 +20,24 @@ public abstract class DefaultLotroFormat implements LotroFormat { private Block _siteBlock; private boolean _validateShadowFPCount = true; private int _maximumSameName = 4; + private boolean _mulliganRule; private int _minimumDeckSize = 60; private Set _bannedCards = new HashSet(); private Set _restrictedCards = new HashSet(); private Set _validSets = new HashSet(); - public DefaultLotroFormat(LotroCardBlueprintLibrary library, Block siteBlock, boolean validateShadowFPCount, int minimumDeckSize, int maximumSameName) { + public DefaultLotroFormat(LotroCardBlueprintLibrary library, Block siteBlock, boolean validateShadowFPCount, int minimumDeckSize, int maximumSameName, boolean mulliganRule) { _library = library; _siteBlock = siteBlock; _validateShadowFPCount = validateShadowFPCount; _minimumDeckSize = minimumDeckSize; _maximumSameName = maximumSameName; + _mulliganRule = mulliganRule; + } + + @Override + public boolean hasMulliganRule() { + return _mulliganRule; } protected void addBannedCard(String baseBlueprintId) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java index d0aa53c55..8742cd526 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FotRBlockFormat.java @@ -4,8 +4,8 @@ import com.gempukku.lotro.common.Block; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; public class FotRBlockFormat extends DefaultLotroFormat { - public FotRBlockFormat(LotroCardBlueprintLibrary library) { - super(library, Block.FELLOWSHIP, true, 60, 4); + public FotRBlockFormat(LotroCardBlueprintLibrary library, boolean mulliganRule) { + super(library, Block.FELLOWSHIP, true, 60, 4, mulliganRule); addRestrictedCard("1_248"); addValidSet(1); addValidSet(2); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FreeFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FreeFormat.java index 54437c01d..8461a4b24 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FreeFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/FreeFormat.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.game.LotroCardBlueprintLibrary; public class FreeFormat extends DefaultLotroFormat { public FreeFormat(LotroCardBlueprintLibrary library) { - super(library, Block.FELLOWSHIP, false, 0, Integer.MAX_VALUE); + super(library, Block.FELLOWSHIP, false, 0, Integer.MAX_VALUE, false); } @Override diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java index 667f7bac0..92196d7c9 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TTTBlockFormat.java @@ -4,8 +4,8 @@ import com.gempukku.lotro.common.Block; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; public class TTTBlockFormat extends DefaultLotroFormat { - public TTTBlockFormat(LotroCardBlueprintLibrary library) { - super(library, Block.TWO_TOWERS, true, 60, 4); + public TTTBlockFormat(LotroCardBlueprintLibrary library, boolean mulliganRule) { + super(library, Block.TWO_TOWERS, true, 60, 4, mulliganRule); addValidSet(4); addValidSet(5); addValidSet(6); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java index cbb1b0558..072d45b03 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/formats/TowersStandardFormat.java @@ -5,7 +5,7 @@ import com.gempukku.lotro.game.LotroCardBlueprintLibrary; public class TowersStandardFormat extends DefaultLotroFormat { public TowersStandardFormat(LotroCardBlueprintLibrary library) { - super(library, Block.TWO_TOWERS, true, 60, 4); + super(library, Block.TWO_TOWERS, true, 60, 4, true); addBannedCard("1_40"); addBannedCard("1_45"); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/AwaitingTable.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/AwaitingTable.java index 802fd0bcb..614978d47 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/AwaitingTable.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/AwaitingTable.java @@ -1,7 +1,7 @@ package com.gempukku.lotro.hall; +import com.gempukku.lotro.game.LotroFormat; import com.gempukku.lotro.game.LotroGameParticipant; -import com.gempukku.lotro.game.formats.LotroFormat; import java.util.*; diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java index d07e5d360..fb887f499 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/hall/HallServer.java @@ -6,7 +6,10 @@ import com.gempukku.lotro.db.CollectionDAO; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.db.vo.Player; import com.gempukku.lotro.game.*; -import com.gempukku.lotro.game.formats.*; +import com.gempukku.lotro.game.formats.FotRBlockFormat; +import com.gempukku.lotro.game.formats.FreeFormat; +import com.gempukku.lotro.game.formats.TTTBlockFormat; +import com.gempukku.lotro.game.formats.TowersStandardFormat; import com.gempukku.lotro.league.LeagueService; import com.gempukku.lotro.logic.vo.LotroDeck; @@ -40,9 +43,12 @@ public class HallServer extends AbstractServer { _collectionDao = collectionDao; _chatServer.createChatRoom("Game Hall"); - addFormat("fotr_block", "Fellowship block", "default", new FotRBlockFormat(_lotroServer.getLotroCardBlueprintLibrary())); - addFormat("ttt_block", "Two Towers block", "default", new TTTBlockFormat(_lotroServer.getLotroCardBlueprintLibrary())); + addFormat("fotr_block", "Fellowship block", "default", new FotRBlockFormat(_lotroServer.getLotroCardBlueprintLibrary(), false)); + addFormat("c_fotr_block", "Community Fellowship block", "default", new FotRBlockFormat(_lotroServer.getLotroCardBlueprintLibrary(), true)); + addFormat("ttt_block", "Two Towers block", "default", new TTTBlockFormat(_lotroServer.getLotroCardBlueprintLibrary(), false)); + addFormat("c_ttt_block", "Community Two Towers block", "default", new TTTBlockFormat(_lotroServer.getLotroCardBlueprintLibrary(), true)); addFormat("towers_standard", "Towers Standard", "default", new TowersStandardFormat(_lotroServer.getLotroCardBlueprintLibrary())); + addFormat("whatever", "Format for testing", "default", new FreeFormat(_lotroServer.getLotroCardBlueprintLibrary())); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueFormat.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueFormat.java index 5f3382deb..74aa6bceb 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueFormat.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueFormat.java @@ -8,7 +8,7 @@ public class LeagueFormat extends DefaultLotroFormat { private boolean _orderedSites; public LeagueFormat(LotroCardBlueprintLibrary library, boolean orderedSites) { - super(library, Block.FELLOWSHIP, true, 60, Integer.MAX_VALUE); + super(library, Block.FELLOWSHIP, true, 60, Integer.MAX_VALUE, true); _orderedSites = orderedSites; } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java index 27a370334..2e6a3be8e 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/LeagueService.java @@ -7,7 +7,7 @@ import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.db.vo.Player; import com.gempukku.lotro.game.CardCollection; import com.gempukku.lotro.game.LotroCardBlueprintLibrary; -import com.gempukku.lotro.game.formats.LotroFormat; +import com.gempukku.lotro.game.LotroFormat; import java.util.Set; diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java index f3e0916d6..eba7074c9 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/ServerResource.java @@ -12,7 +12,6 @@ import com.gempukku.lotro.db.PlayerDAO; import com.gempukku.lotro.db.vo.League; import com.gempukku.lotro.db.vo.Player; import com.gempukku.lotro.game.*; -import com.gempukku.lotro.game.formats.LotroFormat; import com.gempukku.lotro.hall.HallException; import com.gempukku.lotro.hall.HallInfoVisitor; import com.gempukku.lotro.hall.HallServer; diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/formatRules.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/formatRules.html index d838410e3..07c2062d6 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/formatRules.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/formatRules.html @@ -4,7 +4,17 @@
  • sites from Fellowship block are used,
  • Ring-bearer skirmish CAN be cancelled,
  • there is no X-list,
  • -
  • R-list has one card - Forces of Mordor.
  • +
  • R-list has one card - Forces of Mordor,
  • +
  • Mulligan rule IS NOT in effect.
  • + +Community Fellowship block +
      +
    • cards from sets 01-03 are legal,
    • +
    • sites from Fellowship block are used,
    • +
    • Ring-bearer skirmish CAN be cancelled,
    • +
    • there is no X-list,
    • +
    • R-list has one card - Forces of Mordor,
    • +
    • Mulligan rule IS in effect.
    Two Towers block
      @@ -12,5 +22,29 @@
    • sites from The Two Towers block are used,
    • Ring-bearer skirmish CAN be cancelled,
    • there is no X-list,
    • -
    • there is no R-list.
    • +
    • there is no R-list,
    • +
    • Mulligan rule IS NOT in effect.
    • +
    +Community Two Towers block +
      +
    • cards from sets 04-06 are legal,
    • +
    • sites from The Two Towers block are used,
    • +
    • Ring-bearer skirmish CAN be cancelled,
    • +
    • there is no X-list,
    • +
    • there is no R-list,
    • +
    • Mulligan rule IS in effect.
    • +
    +Towers Standard +
      +
    • cards from sets 01-06 are legal,
    • +
    • sites from The Two Towers block are used,
    • +
    • Ring-bearer skirmish CAN be cancelled,
    • +
    • X-list contains following cards: Elrond, Lord of Rivendell, Galadriel, Lady of Light, Ottar, + Man of Laketown, No Stranger to the Shadows, Savagery to Match Their Numbers, Ulaire + Nertea, Messenger of Dol Guldur, Forces of Mordor, Sting, Flaming Brand, Filibert + Bolger, Wily Rascal, O Elbereth! Gilthoniel!, Aragorn, Heir to the White City, Horn of + Boromir, Saruman, Keeper of Isengard, Uruk Regular, +
    • +
    • there is no R-list,
    • +
    • Mulligan rule IS in effect.