diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-dwarven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-dwarven.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-dwarven.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-dwarven.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-elven.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-elven.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-gandalf.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-gandalf.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gandalf.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-gondor.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-gondor.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-gondor.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-moria.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-moria.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-moria.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-moria.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-sauron.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-sauron.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-sauron.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-shire.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-shire.json similarity index 100% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40-shire.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-shire.json diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json new file mode 100644 index 000000000..813c18206 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40-wraith.json @@ -0,0 +1,57 @@ +{ + "40_184": { + "title": "Black Steed", + "subtitle": "Bred to Serve", + "side": "shadow", + "culture": "wraith", + "cost": 1, + "type": "possession", + "possession": "mount", + "strength": 2, + "target": "nazgul", + "effects": { + "type": "modifyStrength", + "filter": "hasAttached(self),inSkirmishAgainst(companion,resistanceLessThan(4))", + "amount": 2 + } + }, + "40_211": { + "title": "*The Witch-king", + "subtitle": "Greatest of the Nine", + "side": "shadow", + "culture": "wraith", + "cost": 8, + "type": "minion", + "race": "nazgul", + "strength": 14, + "vitality": 4, + "site": 3, + "keyword": "fierce", + "effects": { + "type": "trigger", + "trigger": { + "type": "winsSkirmish", + "filter": "self" + }, + "effect": { + "type": "choice", + "player": "fp", + "texts": [ + "Exert the Ring-bearer", + "Add a burden" + ], + "effects": [ + { + "type": "exert", + "player": "fp", + "filter": "choose(ring bearer)" + }, + { + "type": "addBurden", + "player": "fp" + } + ] + } + } + } +} \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json similarity index 68% rename from gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json rename to gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json index 356dea296..f82838db3 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set40/set40.json @@ -123,60 +123,5 @@ ] } ] - }, - "40_184": { - "title": "Black Steed", - "subtitle": "Bred to Serve", - "side": "shadow", - "culture": "wraith", - "cost": 1, - "type": "possession", - "possession": "mount", - "strength": 2, - "target": "nazgul", - "effects": { - "type": "modifyStrength", - "filter": "hasAttached(self),inSkirmishAgainst(companion,resistanceLessThan(4))", - "amount": 2 - } - }, - "40_211": { - "title": "*The Witch-king", - "subtitle": "Greatest of the Nine", - "side": "shadow", - "culture": "wraith", - "cost": 8, - "type": "minion", - "race": "nazgul", - "strength": 14, - "vitality": 4, - "site": 3, - "keyword": "fierce", - "effects": { - "type": "trigger", - "trigger": { - "type": "winsSkirmish", - "filter": "self" - }, - "effect": { - "type": "choice", - "player": "fp", - "texts": [ - "Exert the Ring-bearer", - "Add a burden" - ], - "effects": [ - { - "type": "exert", - "player": "fp", - "filter": "choose(ring bearer)" - }, - { - "type": "addBurden", - "player": "fp" - } - ] - } - } } } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/set40-rarity.txt b/gemp-lotr/gemp-lotr-cards/src/main/resources/set40-rarity.txt index da2d09aff..6f8d34899 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/set40-rarity.txt +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/set40-rarity.txt @@ -308,4 +308,6 @@ 40S308 40S309 40S310 -40S311 \ No newline at end of file +40S311 +40S312 +40S313 \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/ValidateCards.java b/gemp-lotr/gemp-lotr-logic/src/main/java/ValidateCards.java index d96f4761d..77eefea86 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/ValidateCards.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/ValidateCards.java @@ -17,9 +17,17 @@ public class ValidateCards { File path = new File(projectRoot + "/gemp-lotr-async/src/main/web/cards"); + processPath(cardBlueprintBuilder, path); + } + + private static void processPath(LotroCardBlueprintBuilder cardBlueprintBuilder, File path) { for (File file : path.listFiles()) { - loadCardsFromFile(cardBlueprintBuilder, file); - System.out.println("Finished loading file: " + file.getName()); + if (file.isFile()) { + loadCardsFromFile(cardBlueprintBuilder, file); + System.out.println("Finished loading file: " + file.getName()); + } else { + processPath(cardBlueprintBuilder, file); + } } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java index cf1ad50e0..59cb31cd7 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprintLibrary.java @@ -83,9 +83,11 @@ public class LotroCardBlueprintLibrary { } private void loadCards(File path) { - for (File file : path.listFiles()) { - loadCardsFromFile(file); - } + if (path.isFile()) + loadCardsFromFile(path); + else if (path.isDirectory()) + for (File file : path.listFiles()) + loadCards(file); } private void loadCardsFromFile(File file) { @@ -118,7 +120,7 @@ public class LotroCardBlueprintLibrary { () -> { try { WatchService watcher = FileSystems.getDefault().newWatchService(); - WatchKey registrationKey = path.register(watcher, + path.register(watcher, ENTRY_CREATE, ENTRY_MODIFY); @@ -153,7 +155,8 @@ public class LotroCardBlueprintLibrary { // the resolved name is "test/foo". Path child = path.resolve(filename); - loadCardsFromFile(child.toFile()); + final File file = child.toFile(); + loadCards(file); } // Reset the key -- this step is critical if you want to