Checking for losing also when Ring-bearer is returned to hand or discarded from play.

This commit is contained in:
marcins78@gmail.com
2012-01-23 10:38:12 +00:00
parent 42718d59d0
commit acb104d108
4 changed files with 33 additions and 1 deletions

View File

@@ -10,6 +10,7 @@ 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.results.DiscardCardsFromPlayResult;
import com.gempukku.lotro.logic.timing.results.ReturnCardsToHandResult;
import java.util.Collection;
import java.util.HashSet;
@@ -80,7 +81,8 @@ public class ReturnCardsToHandEffect extends AbstractEffect {
for (PhysicalCard discardedCard : discardedFromPlay)
game.getActionsEnvironment().emitEffectResult(new DiscardCardsFromPlayResult(discardedCard));
for (PhysicalCard cardReturned : cardsToReturnToHand)
game.getActionsEnvironment().emitEffectResult(new ReturnCardsToHandResult(cardReturned));
return new FullEffectResult(true, true);
}

View File

@@ -12,6 +12,7 @@ public abstract class EffectResult {
// Translated to new format
ANY_NUMBER_KILLED, FOR_EACH_KILLED, FOR_EACH_HEALED,
FOR_EACH_WOUNDED, FOR_EACH_EXERTED, FOR_EACH_DISCARDED_FROM_PLAY,
FOR_EACH_RETURNED_TO_HAND,
FOR_EACH_DISCARDED_FROM_HAND,

View File

@@ -13,7 +13,9 @@ import com.gempukku.lotro.logic.decisions.CardActionSelectionDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.processes.GameProcess;
import com.gempukku.lotro.logic.timing.processes.pregame.BiddingGameProcess;
import com.gempukku.lotro.logic.timing.results.DiscardCardsFromPlayResult;
import com.gempukku.lotro.logic.timing.results.KilledResult;
import com.gempukku.lotro.logic.timing.results.ReturnCardsToHandResult;
import com.gempukku.lotro.logic.timing.rules.CharacterDeathRule;
import com.gempukku.lotro.logic.timing.rules.InitiativeChangeRule;
@@ -163,6 +165,16 @@ public class TurnProcedure {
if (Filters.filter(killResult.getKilledCards(), _game.getGameState(), _game.getModifiersQuerying(), Filters.ringBearer).size() > 0)
return true;
}
if (effectResult.getType() == EffectResult.Type.FOR_EACH_RETURNED_TO_HAND) {
ReturnCardsToHandResult returnResult = (ReturnCardsToHandResult) effectResult;
if (returnResult.getReturnedCard() == _game.getGameState().getRingBearer(_game.getGameState().getCurrentPlayerId()))
return true;
}
if (effectResult.getType() == EffectResult.Type.FOR_EACH_DISCARDED_FROM_PLAY) {
DiscardCardsFromPlayResult discardResult = (DiscardCardsFromPlayResult) effectResult;
if (discardResult.getDiscardedCard() == _game.getGameState().getRingBearer(_game.getGameState().getCurrentPlayerId()))
return true;
}
}
return false;
}

View File

@@ -0,0 +1,17 @@
package com.gempukku.lotro.logic.timing.results;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.timing.EffectResult;
public class ReturnCardsToHandResult extends EffectResult {
private PhysicalCard _card;
public ReturnCardsToHandResult(PhysicalCard card) {
super(Type.FOR_EACH_RETURNED_TO_HAND);
_card = card;
}
public PhysicalCard getReturnedCard() {
return _card;
}
}