Simplifying the timing engine.
This commit is contained in:
@@ -5,15 +5,15 @@ 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.GameUtils;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.results.DiscardCardFromHandResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public class DiscardCardAtRandomFromHandEffect extends OldAbstractEffect {
|
||||
public class DiscardCardAtRandomFromHandEffect extends AbstractEffect {
|
||||
private PhysicalCard _source;
|
||||
private String _playerId;
|
||||
private boolean _forced;
|
||||
@@ -49,8 +49,9 @@ public class DiscardCardAtRandomFromHandEffect extends OldAbstractEffect {
|
||||
gameState.sendMessage(_playerId + " randomly discards " + GameUtils.getCardLink(randomCard));
|
||||
gameState.removeCardsFromZone(_source.getOwner(), Collections.singleton(randomCard));
|
||||
gameState.addCardToZone(game, randomCard, Zone.DISCARD);
|
||||
return new FullEffectResult(Collections.singleton(new DiscardCardFromHandResult(_source, randomCard, _forced)), true, true);
|
||||
game.getActionsEnvironment().emitEffectResult(new DiscardCardFromHandResult(_source, randomCard, _forced));
|
||||
return new FullEffectResult(true, true);
|
||||
}
|
||||
return new FullEffectResult(null, false, false);
|
||||
return new FullEffectResult(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,9 @@ import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.effects.AbstractPreventableCardEffect;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.ExertResult;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class ExertCharactersEffect extends AbstractPreventableCardEffect {
|
||||
private String _playerId;
|
||||
@@ -52,13 +50,13 @@ public class ExertCharactersEffect extends AbstractPreventableCardEffect {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
protected void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
if (cards.size() > 0)
|
||||
game.getGameState().sendMessage(getAppendedNames(cards) + " exert" + GameUtils.s(cards) + " due to " + GameUtils.getCardLink(_source));
|
||||
|
||||
for (PhysicalCard woundedCard : cards)
|
||||
game.getGameState().addWound(woundedCard);
|
||||
|
||||
return Collections.singleton(new ExertResult(cards));
|
||||
game.getActionsEnvironment().emitEffectResult(new ExertResult(cards));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,11 +64,10 @@ public class ExhaustCharacterEffect extends AbstractSubActionEffect {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
final Collection<? extends EffectResult> effectResults = super.playoutEffectOn(game, cards);
|
||||
protected void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
super.playoutEffectOn(game, cards);
|
||||
if (getAffectedCards(game).size() > 0)
|
||||
_subAction.appendEffect(new InfiniteExertionEffect(_source, _subAction, _filters));
|
||||
return effectResults;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,15 @@ import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class LiberateASiteEffect extends OldAbstractEffect {
|
||||
public class LiberateASiteEffect extends AbstractEffect {
|
||||
private PhysicalCard _source;
|
||||
|
||||
public LiberateASiteEffect(PhysicalCard source) {
|
||||
@@ -70,8 +69,10 @@ public class LiberateASiteEffect extends OldAbstractEffect {
|
||||
|
||||
game.getGameState().loseControlOfCard(siteToLiberate, Zone.ADVENTURE_PATH);
|
||||
|
||||
return new FullEffectResult(Collections.singleton(new DiscardCardsFromPlayResult(discardedCards)), true, true);
|
||||
if (discardedCards.size() > 0)
|
||||
game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(discardedCards));
|
||||
return new FullEffectResult(true, true);
|
||||
}
|
||||
return new FullEffectResult(null, false, false);
|
||||
return new FullEffectResult(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@ import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.results.DrawCardOrPutIntoHandResult;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
public class PutCardFromDeckIntoHandOrDiscardEffect extends OldAbstractEffect {
|
||||
public class PutCardFromDeckIntoHandOrDiscardEffect extends AbstractEffect {
|
||||
private PhysicalCard _physicalCard;
|
||||
|
||||
public PutCardFromDeckIntoHandOrDiscardEffect(PhysicalCard physicalCard) {
|
||||
@@ -43,13 +43,14 @@ public class PutCardFromDeckIntoHandOrDiscardEffect extends OldAbstractEffect {
|
||||
game.getGameState().sendMessage(_physicalCard.getOwner() + " puts " + GameUtils.getCardLink(_physicalCard) + " from deck into his or her hand");
|
||||
game.getGameState().removeCardsFromZone(_physicalCard.getOwner(), Collections.singleton(_physicalCard));
|
||||
game.getGameState().addCardToZone(game, _physicalCard, Zone.HAND);
|
||||
return new FullEffectResult(Collections.singleton(new DrawCardOrPutIntoHandResult(_physicalCard.getOwner())), true, true);
|
||||
game.getActionsEnvironment().emitEffectResult(new DrawCardOrPutIntoHandResult(_physicalCard.getOwner()));
|
||||
return new FullEffectResult(true, true);
|
||||
} else {
|
||||
game.getGameState().sendMessage(_physicalCard.getOwner() + " discards " + GameUtils.getCardLink(_physicalCard) + " from deck due to Rule of 4");
|
||||
game.getGameState().removeCardsFromZone(_physicalCard.getOwner(), Collections.singleton(_physicalCard));
|
||||
game.getGameState().addCardToZone(game, _physicalCard, Zone.DISCARD);
|
||||
}
|
||||
}
|
||||
return new FullEffectResult(null, false, false);
|
||||
return new FullEffectResult(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,16 @@ 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.GameUtils;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class ReturnCardsToHandEffect extends OldAbstractEffect {
|
||||
public class ReturnCardsToHandEffect extends AbstractEffect {
|
||||
private PhysicalCard _source;
|
||||
private Filterable _filter;
|
||||
|
||||
@@ -43,16 +46,12 @@ public class ReturnCardsToHandEffect extends OldAbstractEffect {
|
||||
Collection<PhysicalCard> cardsToReturnToHand = Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), _filter);
|
||||
|
||||
// Preparation, figure out, what's going where...
|
||||
Set<PhysicalCard> stoppedAffecting = new HashSet<PhysicalCard>();
|
||||
Set<PhysicalCard> discardedFromPlay = new HashSet<PhysicalCard>();
|
||||
Set<PhysicalCard> removedFromZone = new HashSet<PhysicalCard>();
|
||||
|
||||
for (PhysicalCard card : cardsToReturnToHand) {
|
||||
final List<PhysicalCard> attachedCards = game.getGameState().getAttachedCards(card);
|
||||
|
||||
stoppedAffecting.add(card);
|
||||
stoppedAffecting.addAll(attachedCards);
|
||||
|
||||
discardedFromPlay.addAll(attachedCards);
|
||||
|
||||
removedFromZone.add(card);
|
||||
@@ -79,8 +78,8 @@ public class ReturnCardsToHandEffect extends OldAbstractEffect {
|
||||
if (_source != null && cardsToReturnToHand.size() > 0)
|
||||
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " returns " + getAppendedNames(cardsToReturnToHand) + " to hand");
|
||||
if (discardedFromPlay.size() > 0)
|
||||
return new FullEffectResult(Collections.singleton(new DiscardCardsFromPlayResult(discardedFromPlay)), true, true);
|
||||
game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(discardedFromPlay));
|
||||
|
||||
return new FullEffectResult(null, true, true);
|
||||
return new FullEffectResult(true, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,16 +5,15 @@ 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.GameUtils;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class StackCardFromPlayEffect extends OldAbstractEffect {
|
||||
public class StackCardFromPlayEffect extends AbstractEffect {
|
||||
private PhysicalCard _card;
|
||||
private PhysicalCard _stackOn;
|
||||
|
||||
@@ -68,10 +67,9 @@ public class StackCardFromPlayEffect extends OldAbstractEffect {
|
||||
|
||||
// Send the result (attached cards get discarded)
|
||||
if (discardedCards.size() > 0)
|
||||
return new FullEffectResult(Collections.singleton(new DiscardCardsFromPlayResult(discardedCards)), true, true);
|
||||
else
|
||||
return new FullEffectResult(null, true, true);
|
||||
game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(discardedCards));
|
||||
return new FullEffectResult(true, true);
|
||||
}
|
||||
return new FullEffectResult(null, false, false);
|
||||
return new FullEffectResult(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,12 +52,7 @@ public class Card4_079 extends AbstractResponseOldEvent {
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||
possibleEffects.add(
|
||||
new LiberateASiteEffect(self) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Liberate a site";
|
||||
}
|
||||
});
|
||||
new LiberateASiteEffect(self));
|
||||
possibleEffects.add(
|
||||
new ChooseAndWoundCharactersEffect(action, playerId, 1, 1, CardType.MINION) {
|
||||
@Override
|
||||
|
||||
@@ -44,12 +44,7 @@ public class Card4_084 extends AbstractOldEvent {
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||
possibleEffects.add(
|
||||
new LiberateASiteEffect(self) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Liberate a site";
|
||||
}
|
||||
});
|
||||
new LiberateASiteEffect(self));
|
||||
possibleEffects.add(
|
||||
new ChooseAndExertCharactersEffect(action, playerId, 1, 1, CardType.MINION) {
|
||||
@Override
|
||||
|
||||
@@ -43,12 +43,7 @@ public class Card4_279 extends AbstractOldEvent {
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||
possibleEffects.add(
|
||||
new LiberateASiteEffect(self) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Liberate a site";
|
||||
}
|
||||
});
|
||||
new LiberateASiteEffect(self));
|
||||
possibleEffects.add(
|
||||
new DrawCardsEffect(playerId, 3) {
|
||||
@Override
|
||||
|
||||
@@ -45,12 +45,7 @@ public class Card5_014 extends AbstractEvent {
|
||||
}
|
||||
});
|
||||
possibleEffects.add(
|
||||
new LiberateASiteEffect(self) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Liberate a site";
|
||||
}
|
||||
});
|
||||
new LiberateASiteEffect(self));
|
||||
|
||||
action.appendEffect(
|
||||
new ChoiceEffect(action, playerId, possibleEffects));
|
||||
|
||||
@@ -59,12 +59,7 @@ public class Card7_117 extends AbstractEvent {
|
||||
|
||||
List<Effect> possibleEffects = new LinkedList<Effect>();
|
||||
possibleEffects.add(
|
||||
new LiberateASiteEffect(self) {
|
||||
@Override
|
||||
public String getText(LotroGame game) {
|
||||
return "Liberate a site";
|
||||
}
|
||||
});
|
||||
new LiberateASiteEffect(self));
|
||||
possibleEffects.add(
|
||||
new ChooseAndDiscardCardsFromHandEffect(action, playerId, false, 0, Integer.MAX_VALUE, Filters.any) {
|
||||
@Override
|
||||
|
||||
@@ -5,12 +5,11 @@ import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public abstract class AbstractPreventableCardEffect extends OldAbstractEffect {
|
||||
public abstract class AbstractPreventableCardEffect extends AbstractEffect {
|
||||
private Filter _filter;
|
||||
private Set<PhysicalCard> _preventedTargets = new HashSet<PhysicalCard>();
|
||||
private int _requiredTargets;
|
||||
@@ -42,14 +41,14 @@ public abstract class AbstractPreventableCardEffect extends OldAbstractEffect {
|
||||
return getAffectedCardsMinusPrevented(game).size() >= _requiredTargets;
|
||||
}
|
||||
|
||||
protected abstract Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards);
|
||||
protected abstract void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards);
|
||||
|
||||
@Override
|
||||
protected FullEffectResult playEffectReturningResult(LotroGame game) {
|
||||
Collection<PhysicalCard> affectedCards = getAffectedCards(game);
|
||||
Collection<PhysicalCard> affectedMinusPreventedCards = getAffectedCardsMinusPrevented(game);
|
||||
Collection<? extends EffectResult> results = playoutEffectOn(game, affectedMinusPreventedCards);
|
||||
return new FullEffectResult(results, affectedCards.size() >= _requiredTargets, affectedMinusPreventedCards.size() >= _requiredTargets);
|
||||
playoutEffectOn(game, affectedMinusPreventedCards);
|
||||
return new FullEffectResult(affectedCards.size() >= _requiredTargets, affectedMinusPreventedCards.size() >= _requiredTargets);
|
||||
}
|
||||
|
||||
public void preventEffect(LotroGame game, PhysicalCard card) {
|
||||
|
||||
@@ -9,10 +9,12 @@ import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect {
|
||||
private PhysicalCard _source;
|
||||
@@ -54,7 +56,7 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
protected void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
Set<PhysicalCard> discardedCards = new HashSet<PhysicalCard>();
|
||||
|
||||
Set<PhysicalCard> toMoveFromZoneToDiscard = new HashSet<PhysicalCard>();
|
||||
@@ -84,6 +86,6 @@ public class DiscardCardsFromPlayEffect extends AbstractPreventableCardEffect {
|
||||
|
||||
if (_source != null && discardedCards.size() > 0)
|
||||
game.getGameState().sendMessage(_source.getOwner() + " discards " + getAppendedNames(discardedCards) + " from play using " + GameUtils.getCardLink(_source));
|
||||
return Collections.singleton(new DiscardCardsFromPlayResult(discardedCards));
|
||||
game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(discardedCards));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,11 +9,9 @@ import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.HealResult;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class HealCharactersEffect extends AbstractPreventableCardEffect {
|
||||
private PhysicalCard _source;
|
||||
@@ -52,7 +50,7 @@ public class HealCharactersEffect extends AbstractPreventableCardEffect {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
protected void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
Collection<PhysicalCard> cardsToHeal = getAffectedCardsMinusPrevented(game);
|
||||
|
||||
if (cardsToHeal.size() > 0) {
|
||||
@@ -61,8 +59,7 @@ public class HealCharactersEffect extends AbstractPreventableCardEffect {
|
||||
game.getGameState().removeWound(cardToHeal);
|
||||
}
|
||||
|
||||
return Collections.singleton(new HealResult(cardsToHeal));
|
||||
game.getActionsEnvironment().emitEffectResult(new HealResult(cardsToHeal));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,18 +3,15 @@ package com.gempukku.lotro.logic.effects;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.game.state.Skirmish;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.OldAbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.AbstractEffect;
|
||||
import com.gempukku.lotro.logic.timing.RuleUtils;
|
||||
import com.gempukku.lotro.logic.timing.results.NormalSkirmishResult;
|
||||
import com.gempukku.lotro.logic.timing.results.OverwhelmSkirmishResult;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class ResolveSkirmishEffect extends OldAbstractEffect {
|
||||
public class ResolveSkirmishEffect extends AbstractEffect {
|
||||
public enum Result {
|
||||
FELLOWSHIP_OVERWHELMED, FELLOWSHIP_LOSES, SHADOW_LOSES, SHADOW_OVERWHELMED
|
||||
}
|
||||
@@ -60,23 +57,22 @@ public class ResolveSkirmishEffect extends OldAbstractEffect {
|
||||
Skirmish skirmish = game.getGameState().getSkirmish();
|
||||
|
||||
Result result = getUpcomingResult(game);
|
||||
Set<EffectResult> results = new HashSet<EffectResult>();
|
||||
|
||||
if (result == Result.FELLOWSHIP_LOSES) {
|
||||
game.getGameState().sendMessage("Skirmish finishes with a normal win");
|
||||
results.add(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
|
||||
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
|
||||
} else if (result == Result.SHADOW_LOSES) {
|
||||
game.getGameState().sendMessage("Skirmish finishes with a normal win");
|
||||
results.add(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
|
||||
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
|
||||
} else if (result == Result.FELLOWSHIP_OVERWHELMED) {
|
||||
game.getGameState().sendMessage("Skirmish finishes with an overwhelm");
|
||||
results.add(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
|
||||
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
|
||||
} else {
|
||||
game.getGameState().sendMessage("Skirmish finishes with an overwhelm");
|
||||
results.add(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
|
||||
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
|
||||
}
|
||||
|
||||
return new FullEffectResult(results, true, true);
|
||||
return new FullEffectResult(true, true);
|
||||
}
|
||||
|
||||
private List<PhysicalCard> fpList(PhysicalCard card) {
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifierFlag;
|
||||
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
|
||||
import com.gempukku.lotro.logic.timing.Effect;
|
||||
import com.gempukku.lotro.logic.timing.EffectResult;
|
||||
import com.gempukku.lotro.logic.timing.results.WoundResult;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -72,7 +71,7 @@ public class WoundCharactersEffect extends AbstractPreventableCardEffect {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Collection<? extends EffectResult> playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
protected void playoutEffectOn(LotroGame game, Collection<PhysicalCard> cards) {
|
||||
if (cards.size() > 0)
|
||||
game.getGameState().sendMessage(getAppendedNames(cards) + " " + GameUtils.be(cards) + " wounded by " + _sourceText);
|
||||
|
||||
@@ -80,8 +79,7 @@ public class WoundCharactersEffect extends AbstractPreventableCardEffect {
|
||||
game.getGameState().addWound(woundedCard);
|
||||
game.getModifiersEnvironment().addedWound(woundedCard);
|
||||
}
|
||||
|
||||
return Collections.singleton(new WoundResult(cards));
|
||||
game.getActionsEnvironment().emitEffectResult(new WoundResult(cards));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
package com.gempukku.lotro.logic.timing;
|
||||
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.GameUtils;
|
||||
import com.sun.istack.internal.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public abstract class OldAbstractEffect implements Effect {
|
||||
private Boolean _carriedOut;
|
||||
private Boolean _successful;
|
||||
|
||||
protected abstract
|
||||
@NotNull
|
||||
FullEffectResult playEffectReturningResult(LotroGame game);
|
||||
|
||||
@Override
|
||||
public final Collection<? extends EffectResult> playEffect(LotroGame game) {
|
||||
FullEffectResult fullEffectResult = playEffectReturningResult(game);
|
||||
_carriedOut = fullEffectResult.isCarriedOut();
|
||||
_successful = fullEffectResult.isSuccessful();
|
||||
return fullEffectResult._results;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean wasCarriedOut() {
|
||||
if (_carriedOut == null)
|
||||
throw new IllegalStateException("Effect has to be played first");
|
||||
return _carriedOut;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean wasSuccessful() {
|
||||
if (_successful == null)
|
||||
throw new IllegalStateException("Effect has to be played first");
|
||||
return _successful;
|
||||
}
|
||||
|
||||
protected final String getAppendedTextNames(Collection<PhysicalCard> cards) {
|
||||
return GameUtils.getAppendedTextNames(cards);
|
||||
}
|
||||
|
||||
protected final String getAppendedNames(Collection<PhysicalCard> cards) {
|
||||
return GameUtils.getAppendedNames(cards);
|
||||
}
|
||||
|
||||
protected static class FullEffectResult {
|
||||
private Collection<? extends EffectResult> _results;
|
||||
private boolean _successful;
|
||||
private boolean _carriedOut;
|
||||
|
||||
public FullEffectResult(Collection<? extends EffectResult> results, boolean successful, boolean carriedOut) {
|
||||
_results = results;
|
||||
_successful = successful;
|
||||
_carriedOut = carriedOut;
|
||||
}
|
||||
|
||||
public boolean isSuccessful() {
|
||||
return _successful;
|
||||
}
|
||||
|
||||
public boolean isCarriedOut() {
|
||||
return _carriedOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@ import com.gempukku.lotro.logic.actions.SystemQueueAction;
|
||||
import com.gempukku.lotro.logic.decisions.ActionSelectionDecision;
|
||||
import com.gempukku.lotro.logic.decisions.CardActionSelectionDecision;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import com.gempukku.lotro.logic.modifiers.LoggingThreadLocal;
|
||||
import com.gempukku.lotro.logic.timing.actions.SystemAction;
|
||||
import com.gempukku.lotro.logic.timing.processes.GameProcess;
|
||||
import com.gempukku.lotro.logic.timing.processes.pregame.BiddingGameProcess;
|
||||
@@ -111,18 +110,7 @@ public class TurnProcedure {
|
||||
|
||||
List<EffectResult> results = new LinkedList<EffectResult>();
|
||||
|
||||
Action topmostAction = _actionStack.getTopmostAction();
|
||||
if (topmostAction != null && topmostAction.getActionSource() != null)
|
||||
LoggingThreadLocal.logMethodStart(topmostAction.getActionSource(), "playEffect");
|
||||
|
||||
try {
|
||||
final Collection<? extends EffectResult> effectResults = _effect.playEffect(_game);
|
||||
if (effectResults != null)
|
||||
results.addAll(effectResults);
|
||||
} finally {
|
||||
if (topmostAction != null && topmostAction.getActionSource() != null)
|
||||
LoggingThreadLocal.logMethodEnd();
|
||||
}
|
||||
_effect.playEffect(_game);
|
||||
|
||||
Side initiativePostEffect = _game.getModifiersQuerying().hasInitiative(_game.getGameState());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user