Added additional cards to JSON card definition
This commit is contained in:
@@ -47,7 +47,7 @@
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addStrength",
|
||||
"type": "modifyStrength",
|
||||
"filter": "self",
|
||||
"amount": 2
|
||||
}
|
||||
@@ -67,12 +67,32 @@
|
||||
"effects": {
|
||||
"type": "event",
|
||||
"effect": {
|
||||
"type": "addArcheryTotal",
|
||||
"type": "modifyArcheryTotal",
|
||||
"side": "free people",
|
||||
"amount": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"1_51": {
|
||||
"title": "Legolas",
|
||||
"subtitle": "Prince of Mirkwood",
|
||||
"unique": true,
|
||||
"side": "free people",
|
||||
"culture": "elven",
|
||||
"cost": 2,
|
||||
"type": "companion",
|
||||
"race": "elf",
|
||||
"strength": 6,
|
||||
"vitality": 3,
|
||||
"resistance": 6,
|
||||
"signet": "gandalf",
|
||||
"keyword": "archer",
|
||||
"effects": {
|
||||
"type": "modifyStrength",
|
||||
"filter": "self,inSkirmishAgainst(nazgul)",
|
||||
"amount": 3
|
||||
}
|
||||
},
|
||||
"1_94": {
|
||||
"title": "Athelas",
|
||||
"side": "free people",
|
||||
|
||||
17
gemp-lotr/gemp-lotr-async/src/main/web/cards/set10.json
Normal file
17
gemp-lotr/gemp-lotr-async/src/main/web/cards/set10.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"10_121": {
|
||||
"title": "Frodo",
|
||||
"subtitle": "Resolute Hobbit",
|
||||
"unique": true,
|
||||
"side": "free people",
|
||||
"culture": "shire",
|
||||
"cost": 0,
|
||||
"type": "companion",
|
||||
"race": "hobbit",
|
||||
"strength": 3,
|
||||
"vitality": 4,
|
||||
"resistance": 12,
|
||||
"signet": "frodo",
|
||||
"keyword": "can start with ring"
|
||||
}
|
||||
}
|
||||
71
gemp-lotr/gemp-lotr-async/src/main/web/cards/set4.json
Normal file
71
gemp-lotr/gemp-lotr-async/src/main/web/cards/set4.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"4_138": {
|
||||
"title": "Band of Uruk Bowmen",
|
||||
"side": "shadow",
|
||||
"culture": "isengard",
|
||||
"cost": 5,
|
||||
"type": "minion",
|
||||
"race": "uruk-hai",
|
||||
"strength": 7,
|
||||
"vitality": 3,
|
||||
"site": 5,
|
||||
"keyword": [
|
||||
"archer",
|
||||
"damage+1"
|
||||
],
|
||||
"effects": {
|
||||
"type": "archeryTotal",
|
||||
"condition": {
|
||||
"type": "controlsSite",
|
||||
"player": "owner"
|
||||
},
|
||||
"side": "shadow",
|
||||
"amount": 1
|
||||
}
|
||||
},
|
||||
"4_218": {
|
||||
"title": "Desert Legion",
|
||||
"unique": true,
|
||||
"side": "shadow",
|
||||
"culture": "raider",
|
||||
"cost": 6,
|
||||
"type": "minion",
|
||||
"race": "man",
|
||||
"strength": 13,
|
||||
"vitality": 3,
|
||||
"site": 4,
|
||||
"keyword": [
|
||||
"southron",
|
||||
"ambush+1"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"condition": {
|
||||
"type": "canSpotBurdens",
|
||||
"amount": 4
|
||||
},
|
||||
"filter": "self",
|
||||
"amount": 5
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"condition": {
|
||||
"type": "canSpotBurdens",
|
||||
"amount": 5
|
||||
},
|
||||
"filter": "self",
|
||||
"keyword": "fierce"
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"condition": {
|
||||
"type": "canSpotBurdens",
|
||||
"amount": 6
|
||||
},
|
||||
"filter": "self",
|
||||
"keyword": "damage+1"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,7 @@
|
||||
"with": "memory(exertedGimli)"
|
||||
},
|
||||
{
|
||||
"type": "addStrength",
|
||||
"type": "modifyStrength",
|
||||
"filter": "memory(exertedGimli)",
|
||||
"amount": 2
|
||||
},
|
||||
@@ -144,7 +144,7 @@
|
||||
"strength": 2,
|
||||
"target": "nazgul",
|
||||
"effects": {
|
||||
"type": "addStrength",
|
||||
"type": "modifyStrength",
|
||||
"filter": "hasAttached(self),inSkirmishAgainst(companion,resistanceLessThan(4))",
|
||||
"amount": 2
|
||||
}
|
||||
|
||||
29
gemp-lotr/gemp-lotr-async/src/main/web/cards/set5.json
Normal file
29
gemp-lotr/gemp-lotr-async/src/main/web/cards/set5.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"5_7": {
|
||||
"title": "Gimli",
|
||||
"subtitle": "Skilled Defender",
|
||||
"unique": true,
|
||||
"side": "free people",
|
||||
"culture": "dwarven",
|
||||
"cost": 2,
|
||||
"type": "companion",
|
||||
"race": "dwarf",
|
||||
"strength": 6,
|
||||
"vitality": 3,
|
||||
"resistance": 6,
|
||||
"signet": "theoden",
|
||||
"keyword": "damage+1",
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"optional": true,
|
||||
"trigger": {
|
||||
"type": "winsSkirmish",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "wound",
|
||||
"filter": "choose(minion,assignedToSkirmish(unbound,companion))"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card4_089 extends AbstractCompanion {
|
||||
public Card4_089() {
|
||||
super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, Signet.THÉODEN, "Gandalf", "Greyhame", true);
|
||||
super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, Signet.THEODEN, "Gandalf", "Greyhame", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card4_267 extends AbstractCompanion {
|
||||
public Card4_267() {
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.eomer, "Third Marshal of Riddermark", true);
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.eomer, "Third Marshal of Riddermark", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
package com.gempukku.lotro.cards.set4.rohan;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.PreventCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.SelfExertEffect;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.ActivateCardAction;
|
||||
import com.gempukku.lotro.logic.effects.AddTwilightEffect;
|
||||
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
|
||||
import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.*;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -33,7 +29,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card4_270 extends AbstractCompanion {
|
||||
public Card4_270() {
|
||||
super(2, 6, 3, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.eowyn, "Lady of Rohan", true);
|
||||
super(2, 6, 3, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.eowyn, "Lady of Rohan", true);
|
||||
addKeyword(Keyword.VALIANT);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Card4_275 extends AbstractEvent {
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.name(Names.theoden)));
|
||||
action.appendEffect(
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion", CardType.COMPANION, Signet.THÉODEN) {
|
||||
new ChooseActiveCardEffect(self, playerId, "Choose companion", CardType.COMPANION, Signet.THEODEN) {
|
||||
@Override
|
||||
protected void cardSelected(LotroGame game, PhysicalCard card) {
|
||||
action.insertEffect(
|
||||
|
||||
@@ -35,7 +35,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card4_365 extends AbstractCompanion {
|
||||
public Card4_365() {
|
||||
super(2, 6, 2, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.theoden, "Lord of the Mark", true);
|
||||
super(2, 6, 2, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.theoden, "Lord of the Mark", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.gempukku.lotro.cards.set5.dwarven;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -28,7 +28,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card5_007 extends AbstractCompanion {
|
||||
public Card5_007() {
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.THÉODEN, "Gimli", "Skilled Defender", true);
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.THEODEN, "Gimli", "Skilled Defender", true);
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package com.gempukku.lotro.cards.set5.elven;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.ChooseAndHealCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card5_121 extends AbstractCompanion {
|
||||
public Card5_121() {
|
||||
super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.THÉODEN, "Legolas", "Archer of Mirkwood", true);
|
||||
super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.THEODEN, "Legolas", "Archer of Mirkwood", true);
|
||||
addKeyword(Keyword.ARCHER);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,9 +34,9 @@ public class Card5_084 extends AbstractEvent {
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, 2, Filters.name(Names.theoden)));
|
||||
action.appendEffect(
|
||||
new HealCharactersEffect(self, Filters.and(CardType.COMPANION, Filters.not(Filters.name(Names.theoden)), Signet.THÉODEN)));
|
||||
new HealCharactersEffect(self, Filters.and(CardType.COMPANION, Filters.not(Filters.name(Names.theoden)), Signet.THEODEN)));
|
||||
action.appendEffect(
|
||||
new HealCharactersEffect(self, Filters.and(CardType.COMPANION, Filters.not(Filters.name(Names.theoden)), Signet.THÉODEN)));
|
||||
new HealCharactersEffect(self, Filters.and(CardType.COMPANION, Filters.not(Filters.name(Names.theoden)), Signet.THEODEN)));
|
||||
return action;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card6_050 extends AbstractCompanion {
|
||||
public Card6_050() {
|
||||
super(4, 8, 4, 6, Culture.GONDOR, Race.MAN, Signet.THÉODEN, "Aragorn", "Defender of Free Peoples", true);
|
||||
super(4, 8, 4, 6, Culture.GONDOR, Race.MAN, Signet.THEODEN, "Aragorn", "Defender of Free Peoples", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,7 +33,7 @@ public class Card6_118 extends AbstractSite {
|
||||
@Override
|
||||
public List<? extends ActivateCardAction> getPhaseActionsInPlay(String playerId, LotroGame game, PhysicalCard self) {
|
||||
if (PlayConditions.canUseSiteDuringPhase(game, Phase.FELLOWSHIP, self)
|
||||
&& PlayConditions.canSpot(game, 3, CardType.COMPANION, Signet.THÉODEN)) {
|
||||
&& PlayConditions.canSpot(game, 3, CardType.COMPANION, Signet.THEODEN)) {
|
||||
ActivateCardAction action = new ActivateCardAction(self);
|
||||
Set<PhysicalCard> hand = new HashSet<PhysicalCard>(game.getGameState().getHand(playerId));
|
||||
action.appendCost(
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_006 extends AbstractCompanion {
|
||||
public Card7_006() {
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.THÉODEN, "Gimli", "Faithful Companion", true);
|
||||
super(2, 6, 3, 6, Culture.DWARVEN, Race.DWARF, Signet.THEODEN, "Gimli", "Faithful Companion", true);
|
||||
addKeyword(Keyword.DAMAGE, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_026 extends AbstractCompanion {
|
||||
public Card7_026() {
|
||||
super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.THÉODEN, "Legolas", "Nimble Warrior", true);
|
||||
super(2, 6, 3, 6, Culture.ELVEN, Race.ELF, Signet.THEODEN, "Legolas", "Nimble Warrior", true);
|
||||
addKeyword(Keyword.ARCHER);
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_037 extends AbstractCompanion {
|
||||
public Card7_037() {
|
||||
super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, Signet.THÉODEN, "Gandalf", "Manager of Wizards", true);
|
||||
super(4, 7, 4, 6, Culture.GANDALF, Race.WIZARD, Signet.THEODEN, "Gandalf", "Manager of Wizards", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_090 extends AbstractCompanion {
|
||||
public Card7_090() {
|
||||
super(3, 7, 3, 6, Culture.GONDOR, Race.MAN, Signet.THÉODEN, "Faramir", "Stout Captain", true);
|
||||
super(3, 7, 3, 6, Culture.GONDOR, Race.MAN, Signet.THEODEN, "Faramir", "Stout Captain", true);
|
||||
addKeyword(Keyword.RANGER);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_228 extends AbstractCompanion {
|
||||
public Card7_228() {
|
||||
super(2, 6, 3, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.eowyn, "Dernhelm", true);
|
||||
super(2, 6, 3, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.eowyn, "Dernhelm", true);
|
||||
addKeyword(Keyword.VALIANT);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.gempukku.lotro.cards.set7.rohan;
|
||||
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.common.*;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
|
||||
import com.gempukku.lotro.logic.cardtype.AbstractCompanion;
|
||||
import com.gempukku.lotro.logic.effects.choose.ChooseAndExertCharactersEffect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -29,7 +29,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_254 extends AbstractCompanion {
|
||||
public Card7_254() {
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.theoden, "Leader of Spears", true);
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.theoden, "Leader of Spears", true);
|
||||
addKeyword(Keyword.VALIANT);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_365 extends AbstractCompanion {
|
||||
public Card7_365() {
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THÉODEN, Names.eomer, "Valiant Warchief", true);
|
||||
super(3, 7, 3, 6, Culture.ROHAN, Race.MAN, Signet.THEODEN, Names.eomer, "Valiant Warchief", true);
|
||||
addKeyword(Keyword.VALIANT);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.List;
|
||||
*/
|
||||
public class Card7_321 extends AbstractCompanion {
|
||||
public Card7_321() {
|
||||
super(1, 3, 4, 6, Culture.SHIRE, Race.HOBBIT, Signet.THÉODEN, "Merry", "Swordthain", true);
|
||||
super(1, 3, 4, 6, Culture.SHIRE, Race.HOBBIT, Signet.THEODEN, "Merry", "Swordthain", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -32,7 +32,7 @@ public class Card8_090 extends AbstractEvent {
|
||||
PlayEventAction action = new PlayEventAction(self);
|
||||
action.appendCost(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, Filters.name(Names.theoden)));
|
||||
int count = Filters.countActive(game, CardType.COMPANION, Signet.THÉODEN);
|
||||
int count = Filters.countActive(game, CardType.COMPANION, Signet.THEODEN);
|
||||
for (int i = 0; i < count; i++)
|
||||
action.appendEffect(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION));
|
||||
|
||||
@@ -43,7 +43,7 @@ public class Card9_045 extends AbstractAttachableFPPossession {
|
||||
@Override
|
||||
public List<? extends Modifier> getInPlayModifiers(LotroGame game, PhysicalCard self) {
|
||||
return Collections.singletonList(
|
||||
new AddSignetModifier(self, Filters.hasAttached(self), Signet.THÉODEN));
|
||||
new AddSignetModifier(self, Filters.hasAttached(self), Signet.THEODEN));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
package com.gempukku.lotro.common;
|
||||
|
||||
public enum Signet implements Filterable {
|
||||
ARAGORN, FRODO, GANDALF, THÉODEN
|
||||
}
|
||||
package com.gempukku.lotro.common;
|
||||
|
||||
public enum Signet implements Filterable {
|
||||
ARAGORN("Aragorn"), FRODO("Frodo"), GANDALF("Gandalf"), THEODEN("Théoden");
|
||||
|
||||
private String displayText;
|
||||
|
||||
Signet(String displayText) {
|
||||
this.displayText = displayText;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return displayText;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint {
|
||||
private Set<PossessionClass> possessionClasses;
|
||||
private Direction direction;
|
||||
|
||||
private List<PlayRequirement> playRequirements;
|
||||
private List<Requirement> requirements;
|
||||
private List<FilterableSource> targetFilters;
|
||||
|
||||
private List<ActionSource> requiredBeforeTriggers;
|
||||
@@ -98,10 +98,10 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint {
|
||||
optionalAfterTriggers.add(actionSource);
|
||||
}
|
||||
|
||||
public void appendPlayRequirement(PlayRequirement playRequirement) {
|
||||
if (playRequirements == null)
|
||||
playRequirements = new LinkedList<>();
|
||||
playRequirements.add(playRequirement);
|
||||
public void appendPlayRequirement(Requirement requirement) {
|
||||
if (requirements == null)
|
||||
requirements = new LinkedList<>();
|
||||
requirements.add(requirement);
|
||||
}
|
||||
|
||||
public void appendInPlayModifier(ModifierSource modifierSource) {
|
||||
@@ -368,11 +368,11 @@ public class BuiltLotroCardBlueprint implements LotroCardBlueprint {
|
||||
|
||||
@Override
|
||||
public boolean checkPlayRequirements(LotroGame game, PhysicalCard self) {
|
||||
if (playRequirements == null)
|
||||
if (requirements == null)
|
||||
return true;
|
||||
|
||||
for (PlayRequirement playRequirement : playRequirements) {
|
||||
if (!playRequirement.accepts(null, game, self, null, null))
|
||||
for (Requirement requirement : requirements) {
|
||||
if (!requirement.accepts(null, game, self, null, null))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@ import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
public interface PlayRequirement {
|
||||
public interface Requirement {
|
||||
boolean accepts(String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect);
|
||||
}
|
||||
@@ -8,7 +8,9 @@ import com.gempukku.lotro.cards.build.field.effect.ActivatedEffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.effect.ActivatedTriggerEffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EventEffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.effect.TriggerEffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.effect.modifier.AddStrength;
|
||||
import com.gempukku.lotro.cards.build.field.effect.modifier.AddKeyword;
|
||||
import com.gempukku.lotro.cards.build.field.effect.modifier.ArcheryTotal;
|
||||
import com.gempukku.lotro.cards.build.field.effect.modifier.ModifyStrength;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -22,7 +24,9 @@ public class EffectFieldProcessor implements FieldProcessor {
|
||||
effectProcessors.put("activatedtrigger", new ActivatedTriggerEffectProcessor());
|
||||
effectProcessors.put("activated", new ActivatedEffectProcessor());
|
||||
effectProcessors.put("event", new EventEffectProcessor());
|
||||
effectProcessors.put("addstrength", new AddStrength());
|
||||
effectProcessors.put("modifystrength", new ModifyStrength());
|
||||
effectProcessors.put("addkeyword", new AddKeyword());
|
||||
effectProcessors.put("archerytotal", new ArcheryTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -56,7 +56,7 @@ public class FieldUtils {
|
||||
if (value == null)
|
||||
return null;
|
||||
final String string = getString(value, key);
|
||||
return Enum.valueOf(enumClass, string.toUpperCase().replace(' ', '_'));
|
||||
return Enum.valueOf(enumClass, string.toUpperCase().replace(' ', '_').replace('-', '_'));
|
||||
}
|
||||
|
||||
public static JSONObject[] getObjectArray(Object value, String key) throws InvalidCardDefinitionException {
|
||||
|
||||
@@ -8,8 +8,8 @@ public class RequirementFieldProcessor implements FieldProcessor {
|
||||
public void processField(String key, Object value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
final JSONObject[] requirementsArray = FieldUtils.getObjectArray(value, key);
|
||||
for (JSONObject requirement : requirementsArray) {
|
||||
final PlayRequirement playRequirement = environment.getRequirementFactory().getRequirement(requirement, environment);
|
||||
blueprint.appendPlayRequirement(playRequirement);
|
||||
final Requirement conditionRequirement = environment.getRequirementFactory().getRequirement(requirement, environment);
|
||||
blueprint.appendPlayRequirement(conditionRequirement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect;
|
||||
|
||||
import com.gempukku.lotro.cards.build.ActionSource;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
@@ -12,13 +12,13 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class DefaultActionSource implements ActionSource {
|
||||
private List<PlayRequirement> playRequirements = new LinkedList<>();
|
||||
private List<Requirement> requirements = new LinkedList<>();
|
||||
|
||||
private List<EffectAppender> costs = new LinkedList<>();
|
||||
private List<EffectAppender> effects = new LinkedList<>();
|
||||
|
||||
public void addPlayRequirement(PlayRequirement playRequirement) {
|
||||
this.playRequirements.add(playRequirement);
|
||||
public void addPlayRequirement(Requirement requirement) {
|
||||
this.requirements.add(requirement);
|
||||
}
|
||||
|
||||
public void addCost(EffectAppender effectAppender) {
|
||||
@@ -31,8 +31,8 @@ public class DefaultActionSource implements ActionSource {
|
||||
|
||||
@Override
|
||||
public boolean isValid(String playerId, LotroGame game, PhysicalCard self, EffectResult effectResult, Effect effect) {
|
||||
for (PlayRequirement playRequirement : playRequirements) {
|
||||
if (!playRequirement.accepts(playerId, game, self, effectResult, effect))
|
||||
for (Requirement requirement : requirements) {
|
||||
if (!requirement.accepts(playerId, game, self, effectResult, effect))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -17,9 +17,9 @@ public class EffectAppenderFactory {
|
||||
effectAppenderProducers.put("discard", new DiscardFromPlay());
|
||||
effectAppenderProducers.put("preventdiscard", new PreventCardEffectAppender());
|
||||
effectAppenderProducers.put("exert", new Exert());
|
||||
effectAppenderProducers.put("addstrength", new AddStrength());
|
||||
effectAppenderProducers.put("modifystrength", new ModifyStrength());
|
||||
effectAppenderProducers.put("addkeyword", new AddKeyword());
|
||||
effectAppenderProducers.put("addarcherytotal", new AddArcheryTotal());
|
||||
effectAppenderProducers.put("modifyarcherytotal", new ModifyArcheryTotal());
|
||||
effectAppenderProducers.put("addburden", new AddBurden());
|
||||
effectAppenderProducers.put("discardtopcardfromdeck", new DiscardTopCardFromDeck());
|
||||
effectAppenderProducers.put("addtwilight", new AddTwilight());
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.build.field.effect;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.trigger.TriggerChecker;
|
||||
import org.json.simple.JSONObject;
|
||||
@@ -19,8 +19,8 @@ public class EffectUtils {
|
||||
public static void processRequirementsCostsAndEffects(JSONObject value, CardGenerationEnvironment environment, DefaultActionSource actionSource) throws InvalidCardDefinitionException {
|
||||
final JSONObject[] requirementArray = FieldUtils.getObjectArray(value.get("requirement"), "requirement");
|
||||
for (JSONObject requirement : requirementArray) {
|
||||
final PlayRequirement playRequirement = environment.getRequirementFactory().getRequirement(requirement, environment);
|
||||
actionSource.addPlayRequirement(playRequirement);
|
||||
final Requirement conditionRequirement = environment.getRequirementFactory().getRequirement(requirement, environment);
|
||||
actionSource.addPlayRequirement(conditionRequirement);
|
||||
}
|
||||
|
||||
processCostsAndEffects(value, environment, actionSource);
|
||||
|
||||
@@ -15,7 +15,7 @@ import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class AddArcheryTotal implements EffectAppenderProducer {
|
||||
public class ModifyArcheryTotal implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "side");
|
||||
@@ -19,7 +19,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class AddStrength implements EffectAppenderProducer {
|
||||
public class ModifyStrength implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "count", "filter", "memory");
|
||||
@@ -70,6 +70,11 @@ public class FilterFactory {
|
||||
final FilterableSource filterableSource = filterFactory.generateFilter(parameter);
|
||||
return (playerId, game, source, effectResult, effect) -> Filters.inSkirmishAgainst(filterableSource.getFilterable(playerId, game, source, effectResult, effect));
|
||||
});
|
||||
parameterFilters.put("assignedToSkirmish",
|
||||
(parameter, filterFactory) -> {
|
||||
final FilterableSource filterableSource = filterFactory.generateFilter(parameter);
|
||||
return (playerId, game, source, effectResult, effect) -> Filters.assignedToSkirmishAgainst(filterableSource.getFilterable(playerId, game, source, effectResult, effect));
|
||||
});
|
||||
parameterFilters.put("resistanceLessThan",
|
||||
(parameter, filterFactory) -> {
|
||||
int amount = Integer.parseInt(parameter);
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.EffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.KeywordModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class AddKeyword implements EffectProcessor {
|
||||
@Override
|
||||
public void processEffect(JSONObject effectObject, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "filter", "condition", "keyword");
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "self");
|
||||
final String keywordString = FieldUtils.getString(effectObject.get("keyword"), "keyword");
|
||||
|
||||
final String[] keywordSplit = keywordString.split("\\+");
|
||||
Keyword keyword = FieldUtils.getEnum(Keyword.class, keywordSplit[0], "keyword");
|
||||
int value = 1;
|
||||
if (keywordSplit.length == 2)
|
||||
value = Integer.parseInt(keywordSplit[1]);
|
||||
final int keywordValue = value;
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter);
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
blueprint.appendInPlayModifier(
|
||||
new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(LotroGame game, PhysicalCard self) {
|
||||
return new KeywordModifier(self,
|
||||
filterableSource.getFilterable(null, game, self, null, null),
|
||||
new RequirementCondition(requirements, null, self, null, null), keyword, keywordValue);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.EffectProcessor;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Side;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class ArcheryTotal implements EffectProcessor {
|
||||
@Override
|
||||
public void processEffect(JSONObject effectObject, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "amount", "condition", "side");
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("condition"), "condition");
|
||||
final int amount = FieldUtils.getInteger(effectObject.get("amount"), "amount");
|
||||
final Side side = FieldUtils.getEnum(Side.class, effectObject.get("side"), "side");
|
||||
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
blueprint.appendInPlayModifier(
|
||||
new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(LotroGame game, PhysicalCard self) {
|
||||
return new ArcheryTotalModifier(self, side,
|
||||
new RequirementCondition(requirements, null, self, null, null),
|
||||
amount);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -9,22 +9,25 @@ import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import com.gempukku.lotro.logic.modifiers.StrengthModifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class AddStrength implements EffectProcessor {
|
||||
public class ModifyStrength implements EffectProcessor {
|
||||
@Override
|
||||
public void processEffect(JSONObject value, BuiltLotroCardBlueprint blueprint, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "filter", "amount");
|
||||
FieldUtils.validateAllowedFields(value, "filter", "condition", "amount");
|
||||
|
||||
final int amount = FieldUtils.getInteger(value.get("amount"), "amount");
|
||||
final String filter = FieldUtils.getString(value.get("filter"), "filter");
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(value.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(value.get("filter"), "filter", "self");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter);
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
blueprint.appendInPlayModifier(
|
||||
new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(LotroGame game, PhysicalCard self) {
|
||||
return new StrengthModifier(self,
|
||||
filterableSource.getFilterable(null, game, self, null, null), amount);
|
||||
filterableSource.getFilterable(null, game, self, null, null),
|
||||
new RequirementCondition(requirements, null, self, null, null), amount);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.modifiers.Condition;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
|
||||
public class RequirementCondition implements Condition {
|
||||
private Requirement[] requirements;
|
||||
private String playerId;
|
||||
private PhysicalCard self;
|
||||
private EffectResult effectResult;
|
||||
private Effect effect;
|
||||
|
||||
public RequirementCondition(Requirement[] requirements, String playerId, PhysicalCard self, EffectResult effectResult, Effect effect) {
|
||||
this.requirements = requirements;
|
||||
this.playerId = playerId;
|
||||
this.self = self;
|
||||
this.effectResult = effectResult;
|
||||
this.effect = effect;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFullfilled(LotroGame game) {
|
||||
for (Requirement requirement : requirements) {
|
||||
if (!requirement.accepts(playerId, game, self, effectResult, effect))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
@@ -11,7 +11,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
public class CanDiscardFromPlay implements RequirementProducer {
|
||||
@Override
|
||||
public PlayRequirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "count", "filter");
|
||||
|
||||
final int count = FieldUtils.getInteger(object.get("count"), "count", 1);
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
@@ -11,7 +11,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
public class CanExert implements RequirementProducer {
|
||||
@Override
|
||||
public PlayRequirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "count", "times", "filter");
|
||||
|
||||
final int count = FieldUtils.getInteger(object.get("count"), "count", 1);
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
@@ -11,7 +11,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
public class CanSpot implements RequirementProducer {
|
||||
@Override
|
||||
public PlayRequirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "count", "filter");
|
||||
|
||||
final int count = FieldUtils.getInteger(object.get("count"), "count", 1);
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class CanSpotBurdens implements RequirementProducer {
|
||||
@Override
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "amount");
|
||||
|
||||
final int count = FieldUtils.getInteger(object.get("amount"), "amount", 1);
|
||||
return (playerId, game, self, effectResult, effect) -> PlayConditions.canSpotBurdens(game, count);
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
public class CanStackTopCardOfDrawDeck implements RequirementProducer {
|
||||
@Override
|
||||
public PlayRequirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "deck", "where", "count");
|
||||
|
||||
final String deck = FieldUtils.getString(object.get("deck"), "deck", "owner");
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayerSource;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.resolver.PlayerResolver;
|
||||
import com.gempukku.lotro.logic.timing.PlayConditions;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class ControlsSite implements RequirementProducer {
|
||||
@Override
|
||||
public Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(object, "player");
|
||||
|
||||
final String player = FieldUtils.getString(object.get("player"), "player", "owner");
|
||||
final PlayerSource playerSource = PlayerResolver.resolvePlayer(player, environment);
|
||||
|
||||
return (playerId, game, self, effectResult, effect) -> {
|
||||
return PlayConditions.controllsSite(game,
|
||||
playerSource.getPlayer(playerId, game, self, effectResult, effect));
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
@@ -17,13 +17,22 @@ public class RequirementFactory {
|
||||
requirementProducers.put("canexert", new CanExert());
|
||||
requirementProducers.put("canspot", new CanSpot());
|
||||
requirementProducers.put("canstacktopcardofdrawdeck", new CanStackTopCardOfDrawDeck());
|
||||
requirementProducers.put("canspotburdens", new CanSpotBurdens());
|
||||
requirementProducers.put("controlssite", new ControlsSite());
|
||||
}
|
||||
|
||||
public PlayRequirement getRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
public Requirement getRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
final String type = FieldUtils.getString(object.get("type"), "type");
|
||||
final RequirementProducer requirementProducer = requirementProducers.get(type.toLowerCase());
|
||||
if (requirementProducer == null)
|
||||
throw new InvalidCardDefinitionException("Unable to resolve requirement of type: " + type);
|
||||
return requirementProducer.getPlayRequirement(object, environment);
|
||||
}
|
||||
|
||||
public Requirement[] getRequirements(JSONObject[] object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
Requirement[] result = new Requirement[object.length];
|
||||
for (int i = 0; i < object.length; i++)
|
||||
result[i] = getRequirement(object[i], environment);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@ package com.gempukku.lotro.cards.build.field.effect.requirement;
|
||||
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public interface RequirementProducer {
|
||||
PlayRequirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException;
|
||||
Requirement getPlayRequirement(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.trigger;
|
||||
|
||||
import com.gempukku.lotro.cards.build.PlayRequirement;
|
||||
import com.gempukku.lotro.cards.build.Requirement;
|
||||
|
||||
public interface TriggerChecker extends PlayRequirement {
|
||||
public interface TriggerChecker extends Requirement {
|
||||
boolean isBefore();
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ public class GameStats {
|
||||
resistanceStr = "F" + resistance;
|
||||
else if (signet == Signet.GANDALF)
|
||||
resistanceStr = "G" + resistance;
|
||||
else if (signet == Signet.THÉODEN)
|
||||
else if (signet == Signet.THEODEN)
|
||||
resistanceStr = "T" + resistance;
|
||||
else
|
||||
resistanceStr = String.valueOf(resistance);
|
||||
|
||||
Reference in New Issue
Block a user