- FP characters that were removed from skirmish, now also count as losing a skirmish involving the opposing minions.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<pre style="font-size:80%">
|
||||
<b>19 Apr. 2013</b>
|
||||
- "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.
|
||||
|
||||
<b>18 Apr. 2013</b>
|
||||
- Fixed a type in "Palantir" name.
|
||||
|
||||
@@ -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<PhysicalCard> involving = new HashSet<PhysicalCard>();
|
||||
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<PhysicalCard> fpList(PhysicalCard card) {
|
||||
if (card != null)
|
||||
return Collections.singleton(card);
|
||||
else
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return new FullEffectResult(true);
|
||||
}
|
||||
|
||||
private Set<PhysicalCard> fpList(PhysicalCard card) {
|
||||
if (card != null)
|
||||
return Collections.singleton(card);
|
||||
else
|
||||
return Collections.emptySet();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user