diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json index 4959364d8..0c346cb3f 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set1/set1-gandalf.json @@ -477,7 +477,7 @@ } }, "1_84": { - "title": "Sleep Caradhas", + "title": "Sleep, Caradhras", "culture": "gandalf", "cost": 3, "type": "event", diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json index ef58b5ab1..b87c5d082 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-fp.json @@ -185,13 +185,23 @@ "type": "follower", "race": "dwarf", "strength": 2, - "effects": { - "type": "aidCost", - "cost": { - "type": "exert", - "filter": "choose(culture(dwarven),companion)" + "effects": [ + { + "type": "aidCost", + "cost": { + "type": "exert", + "filter": "choose(culture(dwarven),companion)" + } + }, + { + "type": "modifier", + "modifier": { + "type": "addKeyword", + "filter": "bearer", + "keyword": "damage+1", + } } - } + ] }, "30_8": { "title": "*Dori", @@ -299,7 +309,7 @@ "effect": { "type": "modifyStrength", "filter": "self", - "amount": 2 + "amount": 3 } } }, @@ -686,18 +696,18 @@ "effect": { "type": "choice", "texts": [ - "Wound a minion twice", - "Discard a Troll" + "Discard a Troll", + "Wound a minion twice" ], "effects": [ + { + "type": "discard", + "filter": "choose(troll)" + }, { "type": "wound", "filter": "choose(minion)", "times": 2 - }, - { - "type": "discard", - "filter": "choose(troll)" } ] } @@ -707,7 +717,7 @@ "title": "*Gandalf", "subtitle": "Leader of Dwarves", "culture": "gandalf", - "cost": 4, + "cost": 2, "type": "companion", "race": "wizard", "strength": 7, @@ -788,7 +798,7 @@ "type": "cantBeDiscarded", "condition": { "type": "canSpot", - "filter": "dwarf,follower", + "filter": "culture(dwarven),follower", "count": 2 }, "filter": "self" @@ -800,7 +810,7 @@ "cost": [ { "type": "discard", - "filter": "choose(dwarf,follower)" + "filter": "choose(culture(dwarven),follower)" }, { "type": "addBurdens", @@ -835,7 +845,7 @@ }, "effect": { "type": "wound", - "filter": "choose(minion)" + "filter": "choose(minion,not(name(Smaug)))" } }, { @@ -1267,4 +1277,4 @@ } ] } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json index fa8c5a919..2eb8039e8 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set30/set30-shadow.json @@ -398,6 +398,10 @@ "type": "location", "filter": "not(mountain)" } + }, + "effect": { + "type": "discard", + "filter": "self" } }, { @@ -428,4 +432,4 @@ } ] } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json index 1243173ba..21db154c9 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-fp.json @@ -25,45 +25,60 @@ "culture": "dwarven", "cost": 3, "type": "event", - "keyword": "regroup", + "keyword": "fellowship", "effects": { "type": "event", - "cost": { - "type": "discard", - "filter": "choose(culture(dwarven),follower,attachedTo(any))", - "memorize": "discardedFollower" - }, - "effect": { - "type": "choice", - "texts": [ - "Play possessions", - "Play artifacts" - ], - "effects": [ - { - "type": "duplicate", - "effect": { - "type": "playCardFromDrawDeck", - "filter": "choose(culture(dwarven),possession)" - }, - "amount": { - "type": "twilightCostInMemory", - "memory": "discardedFollower" - } + "cost": [ + { + "type": "conditional", + "condition": { + "type": "location", + "filter": "siteNumber(1-5),siteBlock(hobbit)" }, - { + "cost": { + "type": "discard", + "filter": "choose(culture(dwarven),follower,attachedTo(any))", + "memorize": "discardedFollower" + } + } + ], + "effect": [ + { + "type": "conditional", + "condition": { + "type": "location", + "filter": "siteNumber(1-5),siteBlock(hobbit)" + }, + "effect": { "type": "duplicate", "effect": { "type": "playCardFromDrawDeck", - "filter": "choose(culture(dwarven),artifact)" + "filter": "choose(culture(dwarven),not(event))" }, "amount": { "type": "twilightCostInMemory", "memory": "discardedFollower" } } - ] - } + }, + { + "type": "conditional", + "condition": { + "type": "location", + "filter": "not(siteNumber(1-5)),siteBlock(hobbit)" + }, + "effect": [ + { + "type": "heal", + "choose": "name(Thorin)" + }, + { + "type": "heal", + "choose": "name(Thorin)" + } + ] + } + ] } }, "31_3": { @@ -91,11 +106,11 @@ "phase": "regroup", "cost": { "type": "exert", - "filter": "choose(ally)" + "filter": "choose(culture(elven),ally)" }, "effect": { - "type": "stackCardsFromHand", - "filter": "choose(culture(dwarven),event)", + "type": "stackCardsFromDiscard", + "filter": "choose(or(and(culture(elven),event),name(Lore of Imladris)))", "where": "self" } } @@ -443,7 +458,11 @@ "modifier": { "type": "cantBeDiscarded", "filter": "self", - "by": "side(shadow)" + "by": "side(shadow)", + "condition": { + "type": "canSpot", + "filter": "self,attachedTo(any)" + } } }, { @@ -564,33 +583,23 @@ ], "effects": { "type": "event", - "cost": { - "type": "choice", - "texts": [ - "Discard Beorn", - "Discard 2 DWARVEN followers" - ], - "effects": [ - { - "type": "discard", - "filter": "choose(name(Beorn))" + "effect": [ + { + "type": "addModifier", + "modifier": { + "type": "modifyStrength", + "amount": 2, + "filter": "culture(dwarven),companion,hasStacked(follower)" }, - { - "type": "discard", - "count": 2, - "filter": "choose(culture(dwarven),follower)" - } - ] - }, - "effect": { - "type": "duplicate", - "amount": 3, - "effect": { - "type": "wound", - "player": "shadowPlayer", - "filter": "choose(minion,not(name(Smaug)))" + "until": "start(regroup)" + }, + { + "type": "addKeyword", + "keyword": "defender+1", + "filter": "culture(dwarven),companion,hasStacked(follower)", + "until": "start(regroup)" } - } + ] } }, "31_17": { @@ -850,4 +859,4 @@ } } } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-shadow.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-shadow.json index 48cf90ae3..b52644325 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-shadow.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-shadow.json @@ -245,6 +245,7 @@ "strength": 9, "vitality": 3, "site": 3, + "keyword": "damage+1", "effects": { "type": "trigger", "optional": true, @@ -259,7 +260,7 @@ }, "effect": { "type": "addBurdens", - "amount": 2 + "amount": 1 } } }, @@ -1103,7 +1104,9 @@ "type": "canSpot", "count": 6, "filter": "companion" - } + }, + "true":5, + "false":3 }, "until": "start(regroup)" } @@ -1141,6 +1144,7 @@ "optional": true, "trigger": { "type": "discarded", + "filter": "condition", "player": "fp" }, "effect": { @@ -1329,4 +1333,4 @@ } ] } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-sites.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-sites.json index 9b9550306..774151117 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-sites.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set31/set31-sites.json @@ -256,6 +256,13 @@ "filter": "orc", "memorize": "playedOrc" }, + "condition": { + "type": "not", + "condition": { + "type": "hasInZoneData", + "filter": "self" + } + }, "effect": { "type": "appendCardIdsToWhileInZone", "memory": "playedOrc" @@ -278,7 +285,7 @@ "type": "site", "block": "hobbit", "site": 7, - "keyword": "river", + "keyword": "mountain", "effects": { "type": "activated", "phase": "regroup", @@ -345,4 +352,4 @@ } } } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-fp.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-fp.json index dbf9ab6e3..fff5906c8 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-fp.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-fp.json @@ -211,7 +211,7 @@ ] }, "32_8": { - "title": "*Roäc", + "title": "*Roac", "subtitle": "Son of Carc", "culture": "dwarven", "cost": 1, @@ -271,7 +271,7 @@ "type": "aidCost", "cost": [ { - "type": "exert", + "type": "spot", "filter": "choose(name(Gandalf))" }, { @@ -550,7 +550,7 @@ }, "effect": { "type": "allyCanParticipateInArcheryFireAndSkirmishes", - "filter": "self", + "filter": "choose(name(Bard))", "until": "start(regroup)" } } @@ -784,7 +784,7 @@ "filter": "choose(minion)", "amount": { "type": "forEachYouCanSpot", - "filter": "or(name(Gandalf),name(Elrond),name(Galadriel))" + "filter": "or(name(Gandalf),name(Elrond),name(Galadriel))", "multiplier": -1 } } @@ -874,4 +874,4 @@ } ] } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json index 52949fa83..820389de9 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set32/set32-shadow.json @@ -157,7 +157,7 @@ "32_29": { "title": "*Azog's Mace", "culture": "moria", - "cost": 2, + "cost": 1, "type": "possession", "possession": "hand weapon", "strength": 2, @@ -357,7 +357,7 @@ "type": "minion", "race": "orc", "strength": 10, - "vitality": 4, + "vitality": 3, "site": 4, "effects": { "type": "trigger", @@ -943,6 +943,58 @@ } ] }, + "32_59": { + "title": "*Dragon's Malice", + "culture": "smaug", + "cost": 0, + "type": "condition", + "keyword": "support area", + "effects": [ + { + "type": "trigger", + "optional": true, + "trigger": { + "type": "losesSkirmish", + "filter": "or(companion,ally)", + "against": "name(Smaug)" + }, + "effect": { + "type": "addBurdens", + "amount": 1 + + } + }, + { + "type": "trigger", + "optional": true, + "trigger": { + "type": "killed", + "filter": "companion,culture(dwarven)" + }, + "effect": { + "type": "addBurdens", + "amount": 1 + + } + }, + { + "type": "modifier", + "modifier": { + "type": "cantTakeWounds", + "filter": "name(Bilbo)", + "condition": [ + { + "type": "ringIsOn", + }, + { + "type": "canSpot", + "filter": "name(Bilbo),inSkirmishAgainst(name(Smaug))" + } + ] + } + } + ] + }, "32_60": { "title": "Smaug's Awakening", "culture": "smaug", @@ -1576,4 +1628,4 @@ } ] } -} \ No newline at end of file +} diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cardFilter.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cardFilter.js index c487f99fc..2295cda7c 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cardFilter.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cardFilter.js @@ -39,6 +39,9 @@ var CardFilter = Class.extend({ $("#culture2").buttonset("option", "disabled", !enable); $("#cardType").prop("disabled", !enable); $("#keyword").prop("disabled", !enable); + $("#race").prop("disabled", !enable); + $("#itemClass").prop("disabled", !enable); + $("#phase").prop("disabled", !enable); }, setFilter: function (filter) { @@ -168,6 +171,7 @@ var CardFilter = Class.extend({ + "" + "" + "" + + "" + ""); this.fullFilterDiv.append(this.setSelect); @@ -273,6 +277,61 @@ var CardFilter = Class.extend({ + "" + "" + ""); + + combos.append(" "); + combos.append(" "); + combos.append(" "); this.filterDiv.append(combos); elem.append(this.filterDiv); @@ -297,10 +356,53 @@ var CardFilter = Class.extend({ that.getCollection(); return true; }; + + //Hide dynamic filters by default + $("#race").hide(); + $("#itemClass").hide(); + $("#phase").hide(); + + var changeDynamicFilters = function () { + var cardType = $("#cardType option:selected").prop("value"); + if (cardType.includes("COMPANION") || cardType.includes("ALLY") || cardType.includes("MINION")) { + $("#race").show(); + $("#itemClass").hide(); + $("#itemClass").val(""); + $("#phase").hide(); + $("#phase").val(""); + } else if (cardType.includes("POSSESSION") || cardType.includes("ARTIFACT")) { + $("#race").hide(); + $("#race").val(""); + $("#itemClass").show(); + $("#phase").hide(); + $("#phase").val(""); + } else if (cardType.includes("EVENT")) { + $("#race").hide(); + $("#race").val(""); + $("#itemClass").hide(); + $("#itemClass").val(""); + $("#phase").show(); + } else { + $("#race").hide(); + $("#race").val(""); + $("#itemClass").hide(); + $("#itemClass").val(""); + $("#phase").hide(); + $("#phase").val("") + } + that.filter = that.calculateNormalFilter(); + that.start = 0; + that.getCollection(); + return true; + + }; - $("#cardType").change(filterOut); + $("#cardType").change(changeDynamicFilters); $("#keyword").change(filterOut); $("#type").change(filterOut); + $("#race").change(filterOut); + $("#itemClass").change(filterOut); + $("#phase").change(filterOut); //Additional Hobbit Draft labels $("#labelDWARVEN,#labelELVEN,#labelGANDALF,#labelGONDOR,#labelROHAN,#labelSHIRE,#labelGOLLUM,#labelDUNLAND,#labelISENGARD,#labelMEN,#labelMORIA,#labelORC,#labelRAIDER,#labelSAURON,#labelURUK_HAI,#labelWRAITH,#labelESGAROTH,#labelGUNDABAD").click(filterOut); @@ -351,10 +453,22 @@ var CardFilter = Class.extend({ if (type != "") type = " type:" + type; + var race = $("#race option:selected").prop("value"); + if (race != "") + race = " race:" + race; + + var itemClass = $("#itemClass option:selected").prop("value"); + if (itemClass != "") + itemClass = " itemClass:" + itemClass + + var phase = $("#phase option:selected").prop("value"); + if (phase != "") + phase = " phase:" + phase; + if (cultures.length > 0) - return cardType + " culture:" + cultures + keyword + type; + return cardType + " culture:" + cultures + keyword + type + race + itemClass + phase; else - return cardType + keyword + type; + return cardType + keyword + type + race + itemClass + phase; }, calculateFullFilterPostfix: function () { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hobbit.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hobbit.js index 9e4e33570..9d557f997 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hobbit.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/hobbit.js @@ -24,8 +24,8 @@ var hobbit = { '30_23': 'http://hobbitdraftgame.free.fr/Cards_Good_def/A_wizard_is_never_late.png', '30_24': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dawn_take_you_all.png', '30_25': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gandalf.png', - '30_26': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf2.png', - '30_27': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf3.png', + '30_26': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gandalf2.png', + '30_27': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gandalf3.png', '30_28': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gandalf4.png', '30_29': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Glamdring.png', '30_30': 'http://hobbitdraftgame.free.fr/Cards_Good_def/He_gives_me_courage.png', @@ -58,8 +58,8 @@ var hobbit = { '30_57': 'http://hobbitdraftgame.free.fr/Cards_Good_def/9_Battle_of_the_five_armies.png', '30_58': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Smaug.png', '31_1': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dwarven_Axe.png', - '31_2': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dwarven_Song.png', - '31_3': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Emeralds_of_Girion.png', + '31_2': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Dwarven_Song.png', + '31_3': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Emeralds_of_Girion2.png', '31_4': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Great_Barricade.png', '31_5': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Mithril_Coat.png', '31_6': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Oakenshield.png', @@ -72,7 +72,7 @@ var hobbit = { '31_13': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Beorn.png', '31_14': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Eagles_Are_Coming.png', '31_15': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Gwaihir.png', - '31_16': 'http://hobbitdraftgame.free.fr/Cards_Good_def/His_Wrath_Was_Redoubled.png', + '31_16': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_His_Wrath_Was_Redoubled.png', '31_17': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Radagast.png', '31_18': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Wizard_Staff.png', '31_19': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Gollum_Better_Than_Nothing.png', @@ -134,7 +134,7 @@ var hobbit = { '32_6': 'http://hobbitdraftgame.free.fr/Cards_Good_def/King_Under_the_Mountain.png', '32_7': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Ring_of_Thror.png', '32_8': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Roac.png', - '32_9': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Thrain.png', + '32_9': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Thrain.png', '32_10': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Thror_s_Heirlooms.png', '32_11': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Thror_s_Key.png', '32_12': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Thror_s_Map.png', @@ -154,7 +154,7 @@ var hobbit = { '32_26': 'http://hobbitdraftgame.free.fr/Cards_Good_def/War_for_Gold.png', '32_27': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Assaulting_Goblin.png', '32_28': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Azog_Commander.png', - '32_29': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Azog_s_Mace.png', + '32_29': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Azog_s_Mace.png', '32_30': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dark_Bats.png', '32_31': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Demolition_Troll.png', '32_32': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Vicious_Warg.png', @@ -184,7 +184,7 @@ var hobbit = { '32_56': 'http://hobbitdraftgame.free.fr/Cards_Good_def/9_Northern_Slopes.png', '32_57': 'http://hobbitdraftgame.free.fr/Cards_Good_def/9_Ravenhill.png', '32_58': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dissension.png', - '32_59': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Dragon_Malice.png', + '32_59': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Dragon_Malice.png', '32_60': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Smaug_s_Awakening.png', '32_61': 'http://hobbitdraftgame.free.fr/Cards_Good_def/New_Terrifying_Legend.png', '32_62': 'http://hobbitdraftgame.free.fr/Cards_Good_def/Twisted_Gold_of_Dragon.png', diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set32/smaug/Card32_059.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set32/smaug/Card32_059.java index 64ef68a87..5ad71d63a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set32/smaug/Card32_059.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set32/smaug/Card32_059.java @@ -23,8 +23,8 @@ import java.util.List; * Culture: Smaug * Twilight Cost: 0 * Type: Condition • Support area - * Game Text: Each time Smaug wins a skirmish, you may add a doubt (or 2 doubts if a Dwarven companion he was - * skirmishing is killed). + * Game Text: Each time Smaug wins a skirmish or kills a [Dwarven] companion in a skirmish, you may add a doubt. + * While Bilbo wears The One Ring, he cannot be wounded by Smaug. */ public class Card32_059 extends AbstractPermanent { public Card32_059() { @@ -33,15 +33,12 @@ public class Card32_059 extends AbstractPermanent { @Override public List getOptionalAfterTriggers(String playerId, LotroGame game, EffectResult effectResult, PhysicalCard self) { - if (PlayConditions.checkPhaseLimit(game, self, 1) - && (TriggerConditions.forEachKilledBy(game, effectResult, Filters.name("Smaug"), Filters.and(CardType.COMPANION, Culture.DWARVEN)) - || TriggerConditions.losesSkirmishInvolving(game, effectResult, Filters.or(CardType.COMPANION, CardType.ALLY), Filters.name("Smaug")))) { + if (TriggerConditions.forEachKilledBy(game, effectResult, Filters.name("Smaug"), Filters.and(CardType.COMPANION, Culture.DWARVEN)) + || TriggerConditions.losesSkirmishInvolving(game, effectResult, Filters.or(CardType.COMPANION, CardType.ALLY), Filters.name("Smaug"))) { OptionalTriggerAction action = new OptionalTriggerAction(self); - action.appendEffect( - new IncrementPhaseLimitEffect(self, 1)); if (TriggerConditions.forEachKilledBy(game, effectResult, Filters.name("Smaug"), Filters.and(CardType.COMPANION, Culture.DWARVEN))) { action.appendEffect( - new AddBurdenEffect(game.getGameState().getCurrentPlayerId(), self, 2)); + new AddBurdenEffect(game.getGameState().getCurrentPlayerId(), self, 1)); } else if (TriggerConditions.losesSkirmishInvolving(game, effectResult, Filters.or(CardType.COMPANION, CardType.ALLY), Filters.name("Smaug"))) { action.appendEffect( new AddBurdenEffect(game.getGameState().getCurrentPlayerId(), self, 1)); diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java index bce153d11..39c2da085 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/PossessionClass.java @@ -3,8 +3,9 @@ package com.gempukku.lotro.common; public enum PossessionClass implements Filterable { HAND_WEAPON("Hand Weapon"), ARMOR("Armor"), HELM("Helm"), MOUNT("Mount"), RANGED_WEAPON("Ranged Weapon"), CLOAK("Cloak"), PIPE("Pipe"), SHIELD("Shield"), BRACERS("Bracers"), STAFF("Staff"), RING("Ring"), - BROOCH("Brooch"), GAUNTLETS("Gauntlets"), BOX("Box"), PALANTIR("Palantir"), PHIAL("Phial"), HORN("Horn"); - + BROOCH("Brooch"), GAUNTLETS("Gauntlets"), BOX("Box"), PALANTIR("Palantir"), PHIAL("Phial"), HORN("Horn"), + CLASSLESS("Classless"); + private String _humanReadable; private PossessionClass(String humanReadable) { diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java index 98de77ab2..fa37615f6 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java @@ -23,6 +23,9 @@ public class SortAndFilterCards { Set cultures = getEnumFilter(Culture.values(), Culture.class, "culture", null, filterParams); Set keywords = getEnumFilter(Keyword.values(), Keyword.class, "keyword", Collections.emptySet(), filterParams); Integer siteNumber = getSiteNumber(filterParams); + Set races = getEnumFilter(Race.values(), Race.class, "race", null, filterParams); + Set itemClasses = getEnumFilter(PossessionClass.values(), PossessionClass.class, "itemClass", Collections.emptySet(), filterParams); + Set phases = getEnumFilter(Keyword.values(),Keyword.class, "phase", Collections.emptySet(), filterParams); List result = new ArrayList(); Map cardBlueprintMap = new HashMap<>(); @@ -30,12 +33,12 @@ public class SortAndFilterCards { for (T item : items) { String blueprintId = item.getBlueprintId(); if (isPack(blueprintId)) { - if (acceptsFilters(cardLibrary, cardBlueprintMap, formatLibrary, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber)) + if (acceptsFilters(cardLibrary, cardBlueprintMap, formatLibrary, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber, races, itemClasses, phases)) result.add(item); } else { try { cardBlueprintMap.put(blueprintId, cardLibrary.getLotroCardBlueprint(blueprintId)); - if (acceptsFilters(cardLibrary, cardBlueprintMap, formatLibrary, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber)) + if (acceptsFilters(cardLibrary, cardBlueprintMap, formatLibrary, rarities, blueprintId, side, type, rarity, sets, cardTypes, cultures, keywords, words, siteNumber, races, itemClasses, phases)) result.add(item); } catch (CardNotFoundException e) { // Ignore the card @@ -74,7 +77,7 @@ public class SortAndFilterCards { private boolean acceptsFilters( LotroCardBlueprintLibrary library, Map cardBlueprint, LotroFormatLibrary formatLibrary, Map rarities, String blueprintId, Side side, String type, String[] rarity, String[] sets, - Set cardTypes, Set cultures, Set keywords, List words, Integer siteNumber) { + Set cardTypes, Set cultures, Set keywords, List words, Integer siteNumber, Set races, Set itemClasses, Set phases) { if (isPack(blueprintId)) { if (type == null || type.equals("pack")) return true; @@ -93,7 +96,10 @@ public class SortAndFilterCards { if (containsAllKeywords(blueprint, keywords)) if (containsAllWords(blueprint, words)) if (siteNumber == null || blueprint.getSiteNumber() == siteNumber) - return true; + if (races == null || races.contains(blueprint.getRace())) + if (containsAllClasses(blueprint, itemClasses)) + if (containsAllKeywords(blueprint, phases)) + return true; } } return false; @@ -240,6 +246,26 @@ public class SortAndFilterCards { return true; } + private boolean containsAllClasses(LotroCardBlueprint blueprint, Set possessionClasses) { + for (PossessionClass filterPossessionClass : possessionClasses) { + if (blueprint == null) + return false; + else { + if (blueprint.getPossessionClasses() == null) { + if (filterPossessionClass == PossessionClass.CLASSLESS) + return true; + return false; + } + for (PossessionClass blueprintPossessionClass : blueprint.getPossessionClasses()) { + if (filterPossessionClass == blueprintPossessionClass) + return true; + } + return false; + } + } + return true; + } + private boolean containsAllWords(LotroCardBlueprint blueprint, List words) { for (String word : words) { if (blueprint == null || !replaceSpecialCharacters(GameUtils.getFullName(blueprint).toLowerCase()).contains(word))