mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
ChangeCombatantsEffect.resolve support "Optional" and better support multiple target cards
This commit is contained in:
@@ -40,17 +40,24 @@ public class ChangeCombatantsEffect extends SpellAbilityEffect {
|
|||||||
@Override
|
@Override
|
||||||
public void resolve(SpellAbility sa) {
|
public void resolve(SpellAbility sa) {
|
||||||
boolean isCombatChanged = false;
|
boolean isCombatChanged = false;
|
||||||
final Game game = sa.getActivatingPlayer().getGame();
|
final Player activator = sa.getActivatingPlayer();
|
||||||
|
final Game game = activator.getGame();
|
||||||
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
final TargetRestrictions tgt = sa.getTargetRestrictions();
|
||||||
// TODO: may expand this effect for defined blocker (False Orders, General Jarkeld, Sorrow's Path, Ydwen Efreet)
|
// TODO: may expand this effect for defined blocker (False Orders, General Jarkeld, Sorrow's Path, Ydwen Efreet)
|
||||||
for (final Card c : getTargetCards(sa)) {
|
for (final Card c : getTargetCards(sa)) {
|
||||||
|
String cardString = CardTranslation.getTranslatedName(c.getName()) + " (" + c.getId() + ")";
|
||||||
|
boolean isOptional = sa.hasParam("Optional");
|
||||||
|
if (isOptional && !activator.getController().confirmAction(sa, null,
|
||||||
|
Localizer.getInstance().getMessage("lblChangeCombatantOption", cardString), null)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if ((tgt == null) || c.canBeTargetedBy(sa)) {
|
if ((tgt == null) || c.canBeTargetedBy(sa)) {
|
||||||
final Combat combat = game.getCombat();
|
final Combat combat = game.getCombat();
|
||||||
final GameEntity originalDefender = combat.getDefenderByAttacker(c);
|
final GameEntity originalDefender = combat.getDefenderByAttacker(c);
|
||||||
final FCollection<GameEntity> defs = new FCollection<>();
|
final FCollection<GameEntity> defs = new FCollection<>();
|
||||||
defs.addAll(sa.hasParam("PlayerOnly") ? combat.getDefendingPlayers() : combat.getDefenders());
|
defs.addAll(sa.hasParam("PlayerOnly") ? combat.getDefendingPlayers() : combat.getDefenders());
|
||||||
|
|
||||||
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", CardTranslation.getTranslatedName(c.getName()));
|
String title = Localizer.getInstance().getMessage("lblChooseDefenderToAttackWithCard", cardString);
|
||||||
Map<String, Object> params = Maps.newHashMap();
|
Map<String, Object> params = Maps.newHashMap();
|
||||||
params.put("Attacker", c);
|
params.put("Attacker", c);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user