diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html index 5aebf9516..259bc5b2e 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html @@ -1,4 +1,13 @@
+Most recent update
+- Added Draft for Fellowship block, The Two Towers block, and The Hobbit
+- Added prize support for Draft games
+- Users can now select what kind of foiling they want to see under the "Settings" tab in-game
+- The Free Peoples will now properly lose initiative when playing events
+- Allies with different home sites can no longer transfer possessions to one another
+- "Loud and Strong" can no longer be used while in hand
+- "Orkish Sneak" assignment ability now works as intended
+
18 Apr. 2018
- Draft play is now available!
- The Deckbuilder now filters out sites which are not legal for the selected format.
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAlly.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAlly.java
index f96103ef3..3838f2e8a 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAlly.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAlly.java
@@ -71,6 +71,16 @@ public class AbstractAlly extends AbstractPermanent {
return null;
}
+ @Override
+ public int[] getAllyHomeSiteNumbers() {
+ return _siteNumbers;
+ }
+
+ @Override
+ public Block getAllyHomeSiteBlock() {
+ return _siteBlock;
+ }
+
@Override
public final boolean isAllyAtHome(int siteNumber, Block block) {
if (block != _siteBlock)
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
index a17cb527d..a1e7ad095 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractAttachableFPPossession.java
@@ -44,7 +44,8 @@ public abstract class AbstractAttachableFPPossession extends AbstractAttachable
Filter validTransferFilter;
- LotroCardBlueprint attachedTo = self.getAttachedTo().getBlueprint();
+ PhysicalCard attachedToCard = self.getAttachedTo();
+ LotroCardBlueprint attachedTo = attachedToCard.getBlueprint();
if (attachedTo.getCardType() == CardType.COMPANION) {
validTransferFilter = Filters.and(validTargetFilter,
Filters.or(
@@ -54,11 +55,10 @@ public abstract class AbstractAttachableFPPossession extends AbstractAttachable
validTransferFilter = Filters.and(validTargetFilter,
Filters.or(
CardType.COMPANION,
- Filters.allyAtHome));
+ Filters.allyWithSameHome(attachedToCard)));
} else {
validTransferFilter = Filters.and(validTargetFilter,
- CardType.ALLY, Filters.allyAtHome
- );
+ Filters.allyWithSameHome(attachedToCard));
}
validTransferFilter = Filters.and(validTransferFilter,
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java
index 3d19d70c8..255b9d9e3 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/AbstractLotroCardBlueprint.java
@@ -148,6 +148,16 @@ public abstract class AbstractLotroCardBlueprint implements LotroCardBlueprint {
throw new UnsupportedOperationException("This method should not be called on this card");
}
+ @Override
+ public int[] getAllyHomeSiteNumbers() {
+ throw new UnsupportedOperationException("This method should not be called on this card");
+ }
+
+ @Override
+ public Block getAllyHomeSiteBlock() {
+ throw new UnsupportedOperationException("This method should not be called on this card");
+ }
+
@Override
public boolean isAllyAtHome(int siteNumber, Block siteBlock) {
throw new UnsupportedOperationException("This method should not be called on this card");
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/dwarven/Card12_009.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/dwarven/Card12_009.java
index 8f1954a94..88c3f9f8d 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/dwarven/Card12_009.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/dwarven/Card12_009.java
@@ -32,7 +32,8 @@ public class Card12_009 extends AbstractPermanent {
@Override
protected List extends Action> getExtraPhaseActions(String playerId, LotroGame game, final PhysicalCard self) {
- if (PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.DWARVEN)
+ if (PlayConditions.canUseFPCardDuringPhase(game, Phase.SKIRMISH, self)
+ && PlayConditions.canDiscardFromHand(game, playerId, 1, Culture.DWARVEN)
&& PlayConditions.canSpot(game, CardType.MINION, Filters.inSkirmishAgainst(Race.DWARF))) {
final ActivateCardAction action = new ActivateCardAction(self);
action.appendCost(
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/orc/Card18_091.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/orc/Card18_091.java
index 4adbe9d22..53c104d14 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/orc/Card18_091.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/orc/Card18_091.java
@@ -16,7 +16,9 @@ import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
+import com.gempukku.lotro.logic.decisions.YesNoDecision;
import com.gempukku.lotro.logic.effects.DiscardCardsFromPlayEffect;
+import com.gempukku.lotro.logic.effects.PlayoutDecisionEffect;
import com.gempukku.lotro.logic.effects.StackActionEffect;
import com.gempukku.lotro.logic.timing.Action;
import com.gempukku.lotro.logic.timing.Effect;
@@ -50,27 +52,32 @@ public class Card18_091 extends AbstractMinion {
action.appendEffect(
new ChooseAndAssignCharacterToMinionEffect(action, playerId, self, Filters.ringBearer, Filters.not(Culture.SHIRE)));
- String fpPlayer = game.getGameState().getCurrentPlayerId();
- List possibleCosts = new LinkedList();
- possibleCosts.add(
- new AddBurdenEffect(fpPlayer, self, 1));
- possibleCosts.add(
- new ChooseAndExertCharactersEffect(action, fpPlayer, 1, 1, 2, Filters.ringBearer));
- SubCostToEffectAction subAction = new SubCostToEffectAction(action);
- action.appendCost(
- new ChoiceEffect(subAction, fpPlayer, possibleCosts));
+ final String fpPlayer = game.getGameState().getCurrentPlayerId();
+
action.appendEffect(
- new DiscardCardsFromPlayEffect(playerId, self, self));
- action.appendEffect(
- new OptionalEffect(action, game.getGameState().getCurrentPlayerId(),
- new StackActionEffect(subAction) {
- @Override
- public String getText(LotroGame game) {
- return "Add burden or exert the Ring-bearer twice to discard " + GameUtils.getFullName(self);
- }
- }));
+ new PlayoutDecisionEffect(fpPlayer,
+ new YesNoDecision("Do you want to add burden or exert the Ring-bearer twice to discard " + GameUtils.getFullName(self) + "?") {
+ @Override
+ protected void yes() {
+ List possibleCosts = new LinkedList();
+ possibleCosts.add(
+ new AddBurdenEffect(fpPlayer, self, 1));
+ possibleCosts.add(
+ new ChooseAndExertCharactersEffect(action, fpPlayer, 1, 1, 2, Filters.ringBearer) {
+ @Override
+ public String getText(LotroGame game) {
+ return "Exert the Ring-bearer twice";
+ }
+ });
+ SubCostToEffectAction subAction = new SubCostToEffectAction(action);
+ action.appendCost(
+ new ChoiceEffect(subAction, fpPlayer, possibleCosts));
+ action.appendEffect(
+ new DiscardCardsFromPlayEffect(playerId, self, self));
+ }
+ }));
return Collections.singletonList(action);
- }
- return null;
+ };
+ return null;
}
}
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java
index 72314325b..a7db5ca36 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/filters/Filters.java
@@ -689,6 +689,27 @@ public class Filters {
}
});
+ public static Filter allyWithSameHome(final PhysicalCard card) {
+ return Filters.and(
+ CardType.ALLY,
+ new Filter() {
+ @Override
+ public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
+ LotroCardBlueprint blueprint = card.getBlueprint();
+ if (blueprint.getCardType() == CardType.ALLY) {
+ Block homeBlock = blueprint.getAllyHomeSiteBlock();
+ int[] homeSites = blueprint.getAllyHomeSiteNumbers();
+ for (int homeSite : homeSites) {
+ if (physicalCard.getBlueprint().isAllyAtHome(homeSite, homeBlock)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ });
+ }
+
public static final Filter currentSite = new Filter() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprint.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprint.java
index 2a335654b..7db40485a 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprint.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/LotroCardBlueprint.java
@@ -46,6 +46,10 @@ public interface LotroCardBlueprint {
public int getResistance();
+ public int[] getAllyHomeSiteNumbers();
+
+ public Block getAllyHomeSiteBlock();
+
public boolean isAllyAtHome(int siteNumber, Block siteBlock);
public List extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self);