From 89a91c6df88ce85a01ab643da88057f45222d64e Mon Sep 17 00:00:00 2001 From: Northmoc Date: Thu, 29 Jul 2021 21:46:02 -0400 Subject: [PATCH] placeholder for special param that picks new ability if no legal targets --- .../game/ability/effects/ChooseGenericEffect.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java index b249d308327..3204f34fa40 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChooseGenericEffect.java @@ -8,6 +8,7 @@ import com.google.common.collect.Lists; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; +import forge.game.card.CardUtil; import forge.game.event.GameEventCardModeChosen; import forge.game.player.Player; import forge.game.spellability.SpellAbility; @@ -81,6 +82,20 @@ public class ChooseGenericEffect extends SpellAbilityEffect { chosenSAs = p.getController().chooseSpellAbilitiesForEffect(abilities, sa, prompt, amount, ImmutableMap.of()); } + // TODO: Move this up into the AtRandom area + for (SpellAbility chosenSA : chosenSAs) { + if (sa.getParam("ChangeToAtRandom").equals("Urza") && chosenSA.usesTargeting()) { + List validTargets = CardUtil.getValidCardsToTarget(chosenSA.getTargetRestrictions(), sa); + if (validTargets.isEmpty()) { + List newChosenSAs = Lists.newArrayList(); + Aggregates.random(abilities, amount, newChosenSAs); + chosenSAs = newChosenSAs; + } else { + p.getController().chooseTargetsFor(chosenSA); + } + } + } + if (!chosenSAs.isEmpty()) { for (SpellAbility chosenSA : chosenSAs) { String chosenValue = chosenSA.getDescription();