diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
index dd7c44984..fa6f57a42 100644
--- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
+++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java
@@ -91,6 +91,11 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri
format.validateDeck(deck);
valid.append("" + format.getName() + ": valid
");
} catch (DeckInvalidException exp) {
+ if (!format.getErrataCardMap().isEmpty()) {
+ LotroDeck deckWithErrata = format.applyErrata(deck);
+ format.validateDeck(deckWithErrata);
+ valid.append("" + format.getName() + ": valid (with PC errata)
");
+ }
invalid.append("" + format.getName() + ": " + exp.getMessage() + "
");
}
}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java
index e3cee71e4..95145a0e8 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroFormat.java
@@ -27,6 +27,8 @@ public interface LotroFormat {
public void validateDeck(LotroDeck deck) throws DeckInvalidException;
+ public LotroDeck applyErrata(LotroDeck deck);
+
public List getValidSets();
public List getBannedCards();
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 cd1f1f3a7..51e7b28d5 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
@@ -237,11 +237,6 @@ public class DefaultLotroFormat implements LotroFormat {
if (bannedBlueprintId.equals(blueprintId) || (allAlternates != null && allAlternates.contains(bannedBlueprintId)))
throw new DeckInvalidException("Deck contains a copy of an X-listed card: " + GameUtils.getFullName(_library.getLotroCardBlueprint(bannedBlueprintId)));
}
- // Errata
- for (String originalBlueprintId : _errataCardMap.keySet()) {
- if (originalBlueprintId.equals(blueprintId) || (allAlternates != null && allAlternates.contains(originalBlueprintId)))
- throw new DeckInvalidException("Deck contains non-errata of an errata'd card: " + GameUtils.getFullName(_library.getLotroCardBlueprint(originalBlueprintId)));
- }
} catch (CardNotFoundException e) {
// Ignore this card
@@ -330,6 +325,20 @@ public class DefaultLotroFormat implements LotroFormat {
}
}
+ @Override
+ public LotroDeck applyErrata(LotroDeck deck) {
+ LotroDeck deckWithErrata = new LotroDeck(deck.getDeckName());
+ deckWithErrata.setRingBearer(_errataCardMap.getOrDefault(deck.getRingBearer(), deck.getRingBearer()));
+ deckWithErrata.setRing(_errataCardMap.getOrDefault(deck.getRing(), deck.getRing()));
+ for (String card : deck.getAdventureCards()) {
+ deckWithErrata.addCard(_errataCardMap.getOrDefault(card, card));
+ }
+ for (String site : deck.getSites()) {
+ deckWithErrata.addSite(_errataCardMap.getOrDefault(site, site));
+ }
+ return deckWithErrata;
+ }
+
private void validateDeckStructure(LotroDeck deck) throws DeckInvalidException, CardNotFoundException {
if (deck.getAdventureCards().size() < _minimumDeckSize)
throw new DeckInvalidException("Deck contains below minimum number of cards: " + deck.getAdventureCards().size() + "<" + _minimumDeckSize);
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 3d485d247..056bc9fe9 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
@@ -529,6 +529,7 @@ public class HallServer extends AbstractServer {
throw new HallException("You don't have a deck registered yet");
try {
+ lotroDeck = format.applyErrata(lotroDeck);
lotroDeck = validateUserAndDeck(format, player, collectionType, lotroDeck);
} catch (DeckInvalidException e) {
throw new HallException("Your selected deck is not valid for this format: " + e.getMessage());