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 259bc5b2e..14141035a 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,5 +1,17 @@
Most recent update
+- "Drawn to Its Power" can no longer adds burden if The Ring-Bearer was killed
+- "The Witch-king, Deathless Lord" can now wound an ally twice if all Free Peoples characters are exhausted
+- "Nine-fingered Frodo and the Ring of Doom" can now remove one threat if there is one threat and no burdens
+- "Saved from the Fire" can no longer target the Ring-Bearer
+- "Tower Troll" now has the correct prevention pop-up text
+- "Uruk Guard" and "Uruk-hai Guard" now announce the selected companion in chat
+- "Shelob, Her Ladyship" now announces the seclected companion in chat
+- "Safe Passage" now announces the selected keyword in chat
+- "Saruman, Of Many Colours" now announces the selected culture in chat
+- The Hobbit Draft League should no longer disappear from users' collections each server day
+
+21 June 2018
- 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
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java
index 66abb9333..9257cc680 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/isengard/Card1_147.java
@@ -8,6 +8,7 @@ import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
@@ -47,6 +48,7 @@ public class Card1_147 extends AbstractMinion {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE, Filters.sameCard(companion), self)));
+ game.getGameState().sendMessage(self.getOwner() +" has chosen "+ companion.getBlueprint().getName());
}
});
return Collections.singletonList(action);
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_211.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_211.java
index 25d7f4bcd..77406fa15 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_211.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set1/wraith/Card1_211.java
@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.AbstractPermanent;
import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.AddBurdenEffect;
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.RequiredTriggerAction;
@@ -28,7 +29,7 @@ public class Card1_211 extends AbstractPermanent {
@Override
public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) {
- if (TriggerConditions.forEachKilledInASkirmish(game, effectResult, Race.NAZGUL, CardType.COMPANION)) {
+ if (TriggerConditions.forEachKilledInASkirmish(game, effectResult, Race.NAZGUL, CardType.COMPANION, Filters.not(Filters.ringBearer))) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
new AddBurdenEffect(self.getOwner(), self, 1));
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gollum/Card10_023.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gollum/Card10_023.java
index 6d3e1ccd5..7aca75c14 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gollum/Card10_023.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/gollum/Card10_023.java
@@ -10,6 +10,7 @@ import com.gempukku.lotro.common.Keyword;
import com.gempukku.lotro.common.Race;
import com.gempukku.lotro.filters.Filters;
import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
@@ -50,6 +51,7 @@ public class Card10_023 extends AbstractMinion {
action.appendEffect(
new AddUntilEndOfTurnModifierEffect(
new CantBeAssignedToSkirmishModifier(self, card)));
+ game.getGameState().sendMessage(self.getOwner() +" has chosen "+ card.getBlueprint().getName());
}
});
return Collections.singletonList(action);
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_112.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_112.java
index f85bed16f..c2a1c3510 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_112.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set10/shire/Card10_112.java
@@ -47,13 +47,18 @@ public class Card10_112 extends AbstractEvent {
List possibleEffects = new LinkedList();
possibleEffects.add(
new RemoveBurdenEffect(playerId, self));
- possibleEffects.add(
- new RemoveThreatsEffect(self, 2) {
- @Override
- public String getText(LotroGame game) {
- return "Remove 2 threats";
- }
- });
+ if (game.getGameState().getThreats() > 1) {
+ possibleEffects.add(
+ new RemoveThreatsEffect(self, 2) {
+ @Override
+ public String getText(LotroGame game) {
+ return "Remove 2 threats";
+ }
+ });
+ } else if (game.getGameState().getBurdens() == 0) {
+ possibleEffects.add(
+ new RemoveThreatsEffect(self, 1));
+ }
action.appendEffect(
new ChoiceEffect(action, playerId, possibleEffects));
return action;
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_050.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_050.java
index 991c15259..d73194f84 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_050.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set11/gollum/Card11_050.java
@@ -8,6 +8,7 @@ import com.gempukku.lotro.cards.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.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.OptionalTriggerAction;
import com.gempukku.lotro.logic.actions.RequiredTriggerAction;
@@ -33,7 +34,7 @@ public class Card11_050 extends AbstractPermanent {
}
@Override
- public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) {
+ public List getRequiredAfterTriggers(final LotroGame game, EffectResult effectResult, final PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
action.appendEffect(
@@ -49,6 +50,8 @@ public class Card11_050 extends AbstractPermanent {
self.setWhileInZoneData(Keyword.PLAINS);
else
self.setWhileInZoneData(Keyword.RIVER);
+
+ game.getGameState().sendMessage(self.getOwner() +" has chosen "+ result);
}
}));
return Collections.singletonList(action);
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/isengard/Card12_054.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/isengard/Card12_054.java
index 20f3ddc59..1bebbba03 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/isengard/Card12_054.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/isengard/Card12_054.java
@@ -63,7 +63,7 @@ public class Card12_054 extends AbstractMinion {
}
@Override
- public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) {
+ public List getRequiredAfterTriggers(final LotroGame game, EffectResult effectResult, final PhysicalCard self) {
if (TriggerConditions.played(game, effectResult, self)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
@@ -78,6 +78,7 @@ public class Card12_054 extends AbstractMinion {
@Override
protected void validDecisionMade(int index, String result) {
self.setWhileInZoneData(Culture.findCultureByHumanReadable(result));
+ game.getGameState().sendMessage(self.getOwner() +" has chosen "+ result);
}
}));
return Collections.singletonList(action);
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/uruk_hai/Card12_156.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/uruk_hai/Card12_156.java
index 8c03b2bf3..2236d8014 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/uruk_hai/Card12_156.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set12/uruk_hai/Card12_156.java
@@ -7,6 +7,7 @@ import com.gempukku.lotro.cards.effects.SelfExertEffect;
import com.gempukku.lotro.cards.modifiers.CantBeAssignedAgainstModifier;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.PhysicalCard;
+import com.gempukku.lotro.game.state.GameState;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.actions.ActivateCardAction;
import com.gempukku.lotro.logic.effects.ChooseActiveCardEffect;
@@ -48,6 +49,7 @@ public class Card12_156 extends AbstractMinion {
action.appendEffect(
new AddUntilEndOfPhaseModifierEffect(
new CantBeAssignedAgainstModifier(self, Side.FREE_PEOPLE, card, self)));
+ game.getGameState().sendMessage(self.getOwner() +" has chosen "+ card.getBlueprint().getName());
}
});
return Collections.singletonList(action);
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/orc/Card15_117.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/orc/Card15_117.java
index 107a5ac12..9433a7f9e 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/orc/Card15_117.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/orc/Card15_117.java
@@ -56,23 +56,28 @@ public class Card15_117 extends AbstractMinion {
new SelfExertEffect(action, self));
action.appendEffect(
new ChooseActiveCardEffect(self, playerId, "Choose companion", CardType.COMPANION, Filters.not(Filters.ringBearer), Filters.assignableToSkirmishAgainst(Side.SHADOW, self)) {
- @Override
- protected void cardSelected(LotroGame game, PhysicalCard companion) {
- if (PlayConditions.canSpot(game, 6, CardType.COMPANION))
- action.appendEffect(
- new AssignmentEffect(playerId, companion, self));
- else
- action.appendEffect(
- new PreventableEffect(action,
- new AssignmentEffect(playerId, companion, self), game.getGameState().getCurrentPlayerId(),
- new PreventableEffect.PreventionCost() {
- @Override
- public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) {
- return new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.COMPANION);
- }
- }));
- }
- });
+ @Override
+ protected void cardSelected(LotroGame game, PhysicalCard companion) {
+ if (PlayConditions.canSpot(game, 6, CardType.COMPANION))
+ action.appendEffect(
+ new AssignmentEffect(playerId, companion, self));
+ else
+ action.appendEffect(
+ new PreventableEffect(action,
+ new AssignmentEffect(playerId, companion, self), game.getGameState().getCurrentPlayerId(),
+ new PreventableEffect.PreventionCost() {
+ @Override
+ public Effect createPreventionCostForPlayer(SubAction subAction, String playerId) {
+ return new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.COMPANION) {
+ @Override
+ public String getText(LotroGame game) {
+ return "Exert a companion";
+ }
+ };
+ }
+ }));
+ }
+ });
return Collections.singletonList(action);
}
return null;
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java
index d5413a409..fae3763ef 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set6/wraith/Card6_122.java
@@ -5,13 +5,17 @@ import com.gempukku.lotro.cards.TriggerConditions;
import com.gempukku.lotro.cards.effects.ChoiceEffect;
import com.gempukku.lotro.cards.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.RequiredTriggerAction;
import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect;
+import com.gempukku.lotro.logic.effects.WoundCharactersEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.EffectResult;
+
+import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -39,13 +43,26 @@ public class Card6_122 extends AbstractMinion {
if (TriggerConditions.forEachKilledInASkirmish(game, effectResult, Race.NAZGUL, CardType.COMPANION)) {
RequiredTriggerAction action = new RequiredTriggerAction(self);
List possibleEffects = new LinkedList();
- possibleEffects.add(
- new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 2, CardType.ALLY) {
- @Override
- public String getText(LotroGame game) {
- return "Wound an ally twice";
- }
- });
+ if (Filters.canSpot(game.getGameState(), game.getModifiersQuerying(),
+ CardType.ALLY, Filters.moreVitalityThan(1))) {
+ possibleEffects.add(
+ new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 2, CardType.ALLY) {
+ @Override
+ public String getText(LotroGame game) {
+ return "Wound an ally twice";
+ }
+ });
+ } else if (!Filters.canSpot(game.getGameState(), game.getModifiersQuerying(),
+ CardType.COMPANION, Filters.moreVitalityThan(1))) {
+ possibleEffects.add(
+ new ChooseAndWoundCharactersEffect(action, self.getOwner(), 1, 1, 1, CardType.ALLY) {
+ @Override
+ protected void woundedCardsCallback(Collection cards) {
+ for (PhysicalCard card : cards)
+ action.appendEffect(new WoundCharactersEffect(self, card));
+ }
+ });
+ }
possibleEffects.add(
new ChooseAndExertCharactersEffect(action, self.getOwner(), 1, 1, CardType.COMPANION) {
@Override
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java
index 0777d46cc..1a0ddc887 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java
+++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set8/gandalf/Card8_020.java
@@ -39,7 +39,7 @@ public class Card8_020 extends AbstractEvent {
public PlayEventAction getPlayCardAction(final String playerId, LotroGame game, PhysicalCard self, int twilightModifier, boolean ignoreRoamingPenalty) {
final PlayEventAction action = new PlayEventAction(self);
action.appendCost(
- new ChooseActiveCardEffect(self, playerId, "Choose a companion", CardType.COMPANION) {
+ new ChooseActiveCardEffect(self, playerId, "Choose a companion", CardType.COMPANION, Filters.not(Filters.ringBearer)) {
@Override
protected void cardSelected(LotroGame game, final PhysicalCard card) {
action.insertCost(
diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java
index 52fbb4a2f..e4f8029f1 100644
--- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java
+++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/league/SoloDraftLeagueData.java
@@ -86,10 +86,20 @@ public class SoloDraftLeagueData implements LeagueData {
@Override
public int process(CollectionsManager collectionsManager, List leagueStandings, int oldStatus, int currentTime) {
int status = oldStatus;
-
+
+ if (status == 0) {
+ Map map = collectionsManager.getPlayersCollection(_collectionType.getCode());
+ for (Map.Entry playerCardCollectionEntry : map.entrySet()) {
+ Player player = playerCardCollectionEntry.getKey();
+ CardCollection leagueProduct = _draft.initializeNewCollection(getSeed(player));
+ collectionsManager.addItemsToPlayerCollection(false, "New sealed league product", player, _collectionType, leagueProduct.getAll().values());
+ }
+ status = 1;
+ }
+
int maxGamesTotal = _serie.getMaxMatches();
- if (status == 0) {
+ if (status == 1) {
if (currentTime > DateUtils.offsetDate(_serie.getEnd(), 1)) {
for (PlayerStanding leagueStanding : leagueStandings) {
CardCollection leaguePrize = _leaguePrizes.getPrizeForLeague(leagueStanding.getStanding(), leagueStandings.size(), leagueStanding.getGamesPlayed(), maxGamesTotal, _collectionType);