diff --git a/res/cardsfolder/b/blood_oath.txt b/res/cardsfolder/b/blood_oath.txt index cbef74f404d..b9384748ef6 100644 --- a/res/cardsfolder/b/blood_oath.txt +++ b/res/cardsfolder/b/blood_oath.txt @@ -3,7 +3,8 @@ ManaCost:3 R Types:Instant A:SP$ ChooseType | Cost$ 3 R | Defined$ You | Type$ Card | SubAbility$ DBReveal | SpellDescription$ Choose a card type. Target opponent reveals his or her hand. Blood Oath deals 3 damage to that player for each card of the chosen type revealed this way. SVar:DBReveal:DB$ RevealHand | RememberRevealed$ True | ValidTgts$ Opponent | TgtPrompt$ Select target opponent to reveal their hand | SubAbility$ DBDamage -SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | References$ X,Y +SVar:DBDamage:DB$ DealDamage | Defined$ Targeted | NumDmg$ X | References$ X,Y | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True SVar:X:SVar$Y/Times.3 SVar:Y:Remembered$Valid Card.ChosenType SVar:RemAIDeck:True diff --git a/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java b/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java index 69914bfddbb..424e2fb1bf3 100644 --- a/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java +++ b/src/main/java/forge/card/ability/effects/ChangeTargetsEffect.java @@ -28,8 +28,15 @@ public class ChangeTargetsEffect extends SpellAbilityEffect { // If there isn't a Stack Instance, there isn't really a target continue; } - // Update targets, with a potential new target - si.updateTarget(sa.getActivatingPlayer().getController().chooseTargets(tgtSA)); + + SpellAbilityStackInstance changingTgtSI = si; + while(changingTgtSI != null) { + // Update targets, with a potential new target + SpellAbility changingTgtSA = changingTgtSI.getSpellAbility(); + changingTgtSI.updateTarget(sa.getActivatingPlayer().getController().chooseTargets(changingTgtSA)); + changingTgtSI = changingTgtSI.getSubInstace(); + } + if (remember) { sa.getSourceCard().addRemembered(tgtSA.getSourceCard()); } diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java index af8fbd57bca..d6ce6a629d1 100644 --- a/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -416,6 +416,9 @@ public class PlayerControllerHuman extends PlayerController { */ @Override public Target chooseTargets(SpellAbility ability) { + if (ability.getTarget() == null) { + return null; + } Target oldTarget = new Target(ability.getTarget()); TargetSelection select = new TargetSelection(ability); ability.getTarget().resetTargets();