Revert: - If a character is removed from skirmish and not in play anymore, "character loses skirmish" is not triggered for it.

This commit is contained in:
marcins78@gmail.com
2012-01-25 15:00:25 +00:00
parent bfa001851f
commit 1e9ac0c24e
6 changed files with 24 additions and 31 deletions

View File

@@ -10,7 +10,7 @@ public class Skirmish {
private Set<PhysicalCard> _shadowCharacters;
private boolean _cancelled;
private Set<Integer> _removedFromSkirmish = new HashSet<Integer>();
private Set<PhysicalCard> _removedFromSkirmish = new HashSet<PhysicalCard>();
public Skirmish(PhysicalCard fellowshipCharacter, Set<PhysicalCard> shadowCharacters) {
_fellowshipCharacter = fellowshipCharacter;
@@ -30,10 +30,10 @@ public class Skirmish {
}
public void addRemovedFromSkirmish(PhysicalCard loser) {
_removedFromSkirmish.add(loser.getCardId());
_removedFromSkirmish.add(loser);
}
public Set<Integer> getRemovedFromSkirmish() {
public Set<PhysicalCard> getRemovedFromSkirmish() {
return _removedFromSkirmish;
}

View File

@@ -1,12 +1,8 @@
package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.filters.Filter;
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.game.state.Skirmish;
import com.gempukku.lotro.logic.modifiers.ModifiersQuerying;
import com.gempukku.lotro.logic.timing.AbstractEffect;
import com.gempukku.lotro.logic.timing.RuleUtils;
import com.gempukku.lotro.logic.timing.results.CharacterLostSkirmishResult;
@@ -68,58 +64,49 @@ public class ResolveSkirmishEffect extends AbstractEffect {
if (result == Result.FELLOWSHIP_LOSES) {
game.getGameState().sendMessage("Skirmish finishes with a normal win");
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter())));
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
for (PhysicalCard minion : skirmish.getShadowCharacters())
game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.NORMAL, minion, skirmish.getFellowshipCharacter()));
if (skirmish.getFellowshipCharacter() != null)
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, skirmish.getFellowshipCharacter(), skirmish.getShadowCharacters()));
for (PhysicalCard removedMinion : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), in(skirmish.getRemovedFromSkirmish())))
for (PhysicalCard removedMinion : skirmish.getRemovedFromSkirmish())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedMinion, skirmish.getFellowshipCharacter()));
} else if (result == Result.SHADOW_LOSES) {
game.getGameState().sendMessage("Skirmish finishes with a normal win");
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters()));
game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
for (PhysicalCard minion : skirmish.getShadowCharacters())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, minion, skirmish.getFellowshipCharacter()));
if (skirmish.getFellowshipCharacter() != null)
game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.NORMAL, skirmish.getFellowshipCharacter(), skirmish.getShadowCharacters()));
for (PhysicalCard removedMinion : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), in(skirmish.getRemovedFromSkirmish())))
for (PhysicalCard removedMinion : skirmish.getRemovedFromSkirmish())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedMinion, skirmish.getFellowshipCharacter()));
} else if (result == Result.FELLOWSHIP_OVERWHELMED) {
game.getGameState().sendMessage("Skirmish finishes with an overwhelm");
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter())));
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
for (PhysicalCard minion : skirmish.getShadowCharacters())
game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.OVERWHELM, minion, skirmish.getFellowshipCharacter()));
if (skirmish.getFellowshipCharacter() != null)
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, skirmish.getFellowshipCharacter(), skirmish.getShadowCharacters()));
for (PhysicalCard removedMinion : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), in(skirmish.getRemovedFromSkirmish())))
for (PhysicalCard removedMinion : skirmish.getRemovedFromSkirmish())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedMinion, skirmish.getFellowshipCharacter()));
} else {
game.getGameState().sendMessage("Skirmish finishes with an overwhelm");
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters()));
game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
for (PhysicalCard minion : skirmish.getShadowCharacters())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, minion, skirmish.getFellowshipCharacter()));
if (skirmish.getFellowshipCharacter() != null)
game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.OVERWHELM, skirmish.getFellowshipCharacter(), skirmish.getShadowCharacters()));
for (PhysicalCard removedMinion : Filters.filterActive(game.getGameState(), game.getModifiersQuerying(), in(skirmish.getRemovedFromSkirmish())))
for (PhysicalCard removedMinion : skirmish.getRemovedFromSkirmish())
game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedMinion, skirmish.getFellowshipCharacter()));
}
return new FullEffectResult(true, true);
}
private Filter in(final Set<Integer> cardIds) {
return new Filter() {
@Override
public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) {
return cardIds.contains(physicalCard.getCardId());
}
};
}
private Set<PhysicalCard> fpList(PhysicalCard card) {
if (card != null)
return Collections.singleton(card);

View File

@@ -6,7 +6,7 @@ import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Set;
public class NormalSkirmishResult extends SkirmishResult {
public NormalSkirmishResult(Set<PhysicalCard> winners, Set<PhysicalCard> losers) {
super(EffectResult.Type.SKIRMISH_FINISHED_NORMALLY, winners, losers);
public NormalSkirmishResult(Set<PhysicalCard> winners, Set<PhysicalCard> losers, Set<PhysicalCard> removedFromSkirmish) {
super(EffectResult.Type.SKIRMISH_FINISHED_NORMALLY, winners, losers, removedFromSkirmish);
}
}

View File

@@ -6,7 +6,7 @@ import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.Set;
public class OverwhelmSkirmishResult extends SkirmishResult {
public OverwhelmSkirmishResult(Set<PhysicalCard> winners, Set<PhysicalCard> losers) {
super(EffectResult.Type.SKIRMISH_FINISHED_WITH_OVERWHELM, winners, losers);
public OverwhelmSkirmishResult(Set<PhysicalCard> winners, Set<PhysicalCard> losers, Set<PhysicalCard> removedFromSkirmish) {
super(EffectResult.Type.SKIRMISH_FINISHED_WITH_OVERWHELM, winners, losers, removedFromSkirmish);
}
}

View File

@@ -3,16 +3,20 @@ package com.gempukku.lotro.logic.timing.results;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.logic.timing.EffectResult;
import java.util.HashSet;
import java.util.Set;
public abstract class SkirmishResult extends EffectResult {
private Set<PhysicalCard> _winners;
private Set<PhysicalCard> _inSkirmishlosers;
private Set<PhysicalCard> _losers;
public SkirmishResult(EffectResult.Type type, Set<PhysicalCard> winners, Set<PhysicalCard> losers) {
public SkirmishResult(EffectResult.Type type, Set<PhysicalCard> winners, Set<PhysicalCard> losers, Set<PhysicalCard> removedFromSkirmish) {
super(type);
_winners = winners;
_inSkirmishlosers = losers;
_losers = new HashSet<PhysicalCard>(losers);
_losers.addAll(removedFromSkirmish);
}
public Set<PhysicalCard> getWinners() {
@@ -22,4 +26,8 @@ public abstract class SkirmishResult extends EffectResult {
public Set<PhysicalCard> getInSkirmishLosers() {
return _inSkirmishlosers;
}
public Set<PhysicalCard> getLosers() {
return _losers;
}
}

View File

@@ -2,8 +2,6 @@
<b>24 Jan. 2012</b>
- "Horse of Rohan" now requires to spot ROHAN Man.
- Ring-bearer can't be discarded or returned to hand.
- If a character is removed from skirmish and no longer in play, "character loses skirmish" is not triggered for that
character.
<b>23 Jan. 2012</b>
- You can't create a League table, if you played maximum number of games in league serie. You can't join a league table