diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Skirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Skirmish.java index 4df3d562f..668fdcd5c 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Skirmish.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/Skirmish.java @@ -10,7 +10,7 @@ public class Skirmish { private Set _shadowCharacters; private boolean _cancelled; - private Set _removedFromSkirmish = new HashSet(); + private Set _removedFromSkirmish = new HashSet(); public Skirmish(PhysicalCard fellowshipCharacter, Set shadowCharacters) { _fellowshipCharacter = fellowshipCharacter; @@ -30,10 +30,10 @@ public class Skirmish { } public void addRemovedFromSkirmish(PhysicalCard loser) { - _removedFromSkirmish.add(loser.getCardId()); + _removedFromSkirmish.add(loser); } - public Set getRemovedFromSkirmish() { + public Set getRemovedFromSkirmish() { return _removedFromSkirmish; } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ResolveSkirmishEffect.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ResolveSkirmishEffect.java index fb6eed983..50f32e4cc 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ResolveSkirmishEffect.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/effects/ResolveSkirmishEffect.java @@ -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 cardIds) { - return new Filter() { - @Override - public boolean accepts(GameState gameState, ModifiersQuerying modifiersQuerying, PhysicalCard physicalCard) { - return cardIds.contains(physicalCard.getCardId()); - } - }; - } - private Set fpList(PhysicalCard card) { if (card != null) return Collections.singleton(card); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/NormalSkirmishResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/NormalSkirmishResult.java index ee31fa1a8..cd6a7eaa4 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/NormalSkirmishResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/NormalSkirmishResult.java @@ -6,7 +6,7 @@ import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Set; public class NormalSkirmishResult extends SkirmishResult { - public NormalSkirmishResult(Set winners, Set losers) { - super(EffectResult.Type.SKIRMISH_FINISHED_NORMALLY, winners, losers); + public NormalSkirmishResult(Set winners, Set losers, Set removedFromSkirmish) { + super(EffectResult.Type.SKIRMISH_FINISHED_NORMALLY, winners, losers, removedFromSkirmish); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/OverwhelmSkirmishResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/OverwhelmSkirmishResult.java index 839dd0377..3ce51377d 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/OverwhelmSkirmishResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/OverwhelmSkirmishResult.java @@ -6,7 +6,7 @@ import com.gempukku.lotro.logic.timing.EffectResult; import java.util.Set; public class OverwhelmSkirmishResult extends SkirmishResult { - public OverwhelmSkirmishResult(Set winners, Set losers) { - super(EffectResult.Type.SKIRMISH_FINISHED_WITH_OVERWHELM, winners, losers); + public OverwhelmSkirmishResult(Set winners, Set losers, Set removedFromSkirmish) { + super(EffectResult.Type.SKIRMISH_FINISHED_WITH_OVERWHELM, winners, losers, removedFromSkirmish); } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/SkirmishResult.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/SkirmishResult.java index 03355fc9e..01786efcb 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/SkirmishResult.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/timing/results/SkirmishResult.java @@ -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 _winners; private Set _inSkirmishlosers; + private Set _losers; - public SkirmishResult(EffectResult.Type type, Set winners, Set losers) { + public SkirmishResult(EffectResult.Type type, Set winners, Set losers, Set removedFromSkirmish) { super(type); _winners = winners; _inSkirmishlosers = losers; + _losers = new HashSet(losers); + _losers.addAll(removedFromSkirmish); } public Set getWinners() { @@ -22,4 +26,8 @@ public abstract class SkirmishResult extends EffectResult { public Set getInSkirmishLosers() { return _inSkirmishlosers; } + + public Set getLosers() { + return _losers; + } } diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index a2fb60efd..f048e8629 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -2,8 +2,6 @@ 24 Jan. 2012 - "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. 23 Jan. 2012 - You can't create a League table, if you played maximum number of games in league serie. You can't join a league table