Merge pull request #49 from PhallenCassidy/Fixes-And-Edits

Fixes and edits
This commit is contained in:
Marcin Sciesinski
2018-09-12 19:12:13 -07:00
committed by GitHub
12 changed files with 97 additions and 37 deletions

View File

@@ -1,5 +1,17 @@
<pre style="font-size:80%">
<b>Most recent update</b>
- "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
<b>21 June 2018</b>
- 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

View File

@@ -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);

View File

@@ -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<RequiredTriggerAction> 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));

View File

@@ -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);

View File

@@ -47,13 +47,18 @@ public class Card10_112 extends AbstractEvent {
List<Effect> possibleEffects = new LinkedList<Effect>();
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;

View File

@@ -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<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) {
public List<RequiredTriggerAction> 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);

View File

@@ -63,7 +63,7 @@ public class Card12_054 extends AbstractMinion {
}
@Override
public List<RequiredTriggerAction> getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, final PhysicalCard self) {
public List<RequiredTriggerAction> 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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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<Effect> possibleEffects = new LinkedList<Effect>();
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<PhysicalCard> cards) {
for (PhysicalCard card : cards)
action.appendEffect(new WoundCharactersEffect(self, card));
}
});
}
possibleEffects.add(
new ChooseAndExertCharactersEffect(action, self.getOwner(), 1, 1, CardType.COMPANION) {
@Override

View File

@@ -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(

View File

@@ -86,10 +86,20 @@ public class SoloDraftLeagueData implements LeagueData {
@Override
public int process(CollectionsManager collectionsManager, List<PlayerStanding> leagueStandings, int oldStatus, int currentTime) {
int status = oldStatus;
if (status == 0) {
Map<Player, CardCollection> map = collectionsManager.getPlayersCollection(_collectionType.getCode());
for (Map.Entry<Player, CardCollection> 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);