diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html index 8eb0f6e9b..11be77b28 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/changeLog.html @@ -1,6 +1,7 @@
19 Apr. 2013
- "Grieving the Fallen" cannot be attached to Ring-bearer.
+- FP characters that were removed from skirmish, now also count as losing a skirmish involving the opposing minions.
18 Apr. 2013
- Fixed a type in "Palantir" name.
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 5f883843a..ce25707a1 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
@@ -11,113 +11,119 @@ 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.Set;
public class ResolveSkirmishEffect extends AbstractEffect {
- public enum Result {
- FELLOWSHIP_OVERWHELMED, FELLOWSHIP_LOSES, SHADOW_LOSES, SHADOW_OVERWHELMED
- }
+ public enum Result {
+ FELLOWSHIP_OVERWHELMED, FELLOWSHIP_LOSES, SHADOW_LOSES, SHADOW_OVERWHELMED
+ }
- @Override
- public String getText(LotroGame game) {
- return "Resolve skirmish";
- }
+ @Override
+ public String getText(LotroGame game) {
+ return "Resolve skirmish";
+ }
- @Override
- public Type getType() {
- return Type.BEFORE_SKIRMISH_RESOLVED;
- }
+ @Override
+ public Type getType() {
+ return Type.BEFORE_SKIRMISH_RESOLVED;
+ }
- @Override
- public boolean isPlayableInFull(LotroGame game) {
- return true;
- }
+ @Override
+ public boolean isPlayableInFull(LotroGame game) {
+ return true;
+ }
- public Result getUpcomingResult(LotroGame game) {
- final Skirmish skirmish = game.getGameState().getSkirmish();
+ public Result getUpcomingResult(LotroGame game) {
+ final Skirmish skirmish = game.getGameState().getSkirmish();
- if (skirmish.getShadowCharacters().size() == 0)
- return Result.SHADOW_LOSES;
- if (skirmish.getFellowshipCharacter() == null)
- return Result.FELLOWSHIP_LOSES;
+ if (skirmish.getShadowCharacters().size() == 0)
+ return Result.SHADOW_LOSES;
+ if (skirmish.getFellowshipCharacter() == null)
+ return Result.FELLOWSHIP_LOSES;
- int fpStrength = RuleUtils.getFellowshipSkirmishStrength(game);
- int shadowStrength = RuleUtils.getShadowSkirmishStrength(game);
+ int fpStrength = RuleUtils.getFellowshipSkirmishStrength(game);
+ int shadowStrength = RuleUtils.getShadowSkirmishStrength(game);
- final PhysicalCard fellowshipCharacter = skirmish.getFellowshipCharacter();
+ final PhysicalCard fellowshipCharacter = skirmish.getFellowshipCharacter();
- int multiplier = 2;
- if (fellowshipCharacter != null)
- multiplier = game.getModifiersQuerying().getOverwhelmMultiplier(game.getGameState(), fellowshipCharacter);
+ int multiplier = 2;
+ if (fellowshipCharacter != null)
+ multiplier = game.getModifiersQuerying().getOverwhelmMultiplier(game.getGameState(), fellowshipCharacter);
- if (fpStrength == 0 && shadowStrength == 0)
- return Result.FELLOWSHIP_LOSES;
- else if (fpStrength * multiplier <= shadowStrength) {
- return Result.FELLOWSHIP_OVERWHELMED;
- } else if (fpStrength <= shadowStrength) {
- return Result.FELLOWSHIP_LOSES;
- } else if (fpStrength >= 2 * shadowStrength) {
- return Result.SHADOW_OVERWHELMED;
- } else {
- return Result.SHADOW_LOSES;
- }
- }
+ if (fpStrength == 0 && shadowStrength == 0)
+ return Result.FELLOWSHIP_LOSES;
+ else if (fpStrength * multiplier <= shadowStrength) {
+ return Result.FELLOWSHIP_OVERWHELMED;
+ } else if (fpStrength <= shadowStrength) {
+ return Result.FELLOWSHIP_LOSES;
+ } else if (fpStrength >= 2 * shadowStrength) {
+ return Result.SHADOW_OVERWHELMED;
+ } else {
+ return Result.SHADOW_LOSES;
+ }
+ }
- @Override
- protected FullEffectResult playEffectReturningResult(LotroGame game) {
- Skirmish skirmish = game.getGameState().getSkirmish();
+ @Override
+ protected FullEffectResult playEffectReturningResult(LotroGame game) {
+ Skirmish skirmish = game.getGameState().getSkirmish();
- Result result = getUpcomingResult(game);
+ Result result = getUpcomingResult(game);
- if (result == Result.FELLOWSHIP_LOSES) {
- game.getGameState().sendMessage("Skirmish resolved with a normal win");
- game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
+ Set involving = new HashSet();
+ if (skirmish.getFellowshipCharacter() != null)
+ involving.add(skirmish.getFellowshipCharacter());
+ involving.addAll(skirmish.getShadowCharacters());
- 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 : skirmish.getRemovedFromSkirmish())
- game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedMinion, skirmish.getFellowshipCharacter()));
- } else if (result == Result.SHADOW_LOSES) {
- game.getGameState().sendMessage("Skirmish resolved with a normal win");
- game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
+ if (result == Result.FELLOWSHIP_LOSES) {
+ game.getGameState().sendMessage("Skirmish resolved with a normal win");
+ game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), 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 : skirmish.getRemovedFromSkirmish())
- game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedMinion, skirmish.getFellowshipCharacter()));
- } else if (result == Result.FELLOWSHIP_OVERWHELMED) {
- game.getGameState().sendMessage("Skirmish resolved with an overwhelm");
- game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), skirmish.getRemovedFromSkirmish()));
+ for (PhysicalCard minion : skirmish.getShadowCharacters())
+ game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.NORMAL, minion, involving));
+ if (skirmish.getFellowshipCharacter() != null)
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, skirmish.getFellowshipCharacter(), involving));
+ for (PhysicalCard removedCharacter : skirmish.getRemovedFromSkirmish())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedCharacter, involving));
+ } else if (result == Result.SHADOW_LOSES) {
+ game.getGameState().sendMessage("Skirmish resolved with a normal win");
+ game.getActionsEnvironment().emitEffectResult(new NormalSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), 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 : skirmish.getRemovedFromSkirmish())
- game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedMinion, skirmish.getFellowshipCharacter()));
- } else {
- game.getGameState().sendMessage("Skirmish resolved with an overwhelm");
- game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
+ for (PhysicalCard minion : skirmish.getShadowCharacters())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, minion, involving));
+ if (skirmish.getFellowshipCharacter() != null)
+ game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.NORMAL, skirmish.getFellowshipCharacter(), involving));
+ for (PhysicalCard removedCharacter : skirmish.getRemovedFromSkirmish())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.NORMAL, removedCharacter, involving));
+ } else if (result == Result.FELLOWSHIP_OVERWHELMED) {
+ game.getGameState().sendMessage("Skirmish resolved with an overwhelm");
+ game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(skirmish.getShadowCharacters(), fpList(skirmish.getFellowshipCharacter()), 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 : skirmish.getRemovedFromSkirmish())
- game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedMinion, skirmish.getFellowshipCharacter()));
- }
+ for (PhysicalCard minion : skirmish.getShadowCharacters())
+ game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.OVERWHELM, minion, involving));
+ if (skirmish.getFellowshipCharacter() != null)
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, skirmish.getFellowshipCharacter(), involving));
+ for (PhysicalCard removedCharacter : skirmish.getRemovedFromSkirmish())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedCharacter, involving));
+ } else {
+ game.getGameState().sendMessage("Skirmish resolved with an overwhelm");
+ game.getActionsEnvironment().emitEffectResult(new OverwhelmSkirmishResult(fpList(skirmish.getFellowshipCharacter()), skirmish.getShadowCharacters(), skirmish.getRemovedFromSkirmish()));
- return new FullEffectResult(true);
- }
+ for (PhysicalCard minion : skirmish.getShadowCharacters())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, minion, involving));
+ if (skirmish.getFellowshipCharacter() != null)
+ game.getActionsEnvironment().emitEffectResult(new CharacterWonSkirmishResult(CharacterWonSkirmishResult.SkirmishType.OVERWHELM, skirmish.getFellowshipCharacter(), involving));
+ for (PhysicalCard removedCharacter : skirmish.getRemovedFromSkirmish())
+ game.getActionsEnvironment().emitEffectResult(new CharacterLostSkirmishResult(CharacterLostSkirmishResult.SkirmishType.OVERWHELM, removedCharacter, involving));
+ }
- private Set fpList(PhysicalCard card) {
- if (card != null)
- return Collections.singleton(card);
- else
- return Collections.emptySet();
- }
+ return new FullEffectResult(true);
+ }
+
+ private Set fpList(PhysicalCard card) {
+ if (card != null)
+ return Collections.singleton(card);
+ else
+ return Collections.emptySet();
+ }
}