From 58f8d559779568cc737aff1f4ad96212183b9c7e Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Tue, 19 Jul 2022 17:53:11 +0200 Subject: [PATCH] ControlGain: Fix NPE --- .../main/java/forge/ai/CreatureEvaluator.java | 2 +- .../ability/effects/ControlGainEffect.java | 9 ++-- .../java/forge/game/card/CardProperty.java | 2 +- .../main/java/forge/game/trigger/Trigger.java | 3 +- .../forge/game/trigger/WrappedAbility.java | 54 +++++++++---------- 5 files changed, 33 insertions(+), 37 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/CreatureEvaluator.java b/forge-ai/src/main/java/forge/ai/CreatureEvaluator.java index a9a58304bd4..75a02f932ef 100644 --- a/forge-ai/src/main/java/forge/ai/CreatureEvaluator.java +++ b/forge-ai/src/main/java/forge/ai/CreatureEvaluator.java @@ -45,7 +45,7 @@ public class CreatureEvaluator implements Function { value += addValue(toughness * 10, "toughness: " + toughness); // because backside is always stronger the potential makes it better than a single faced card - if (c.hasKeyword(Keyword.DAYBOUND)) { + if (c.hasKeyword(Keyword.DAYBOUND) && c.hasBackSide()) { value += addValue(power * 10, "transforming"); } } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java index a7133e10f6a..5a9da7560c9 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java @@ -124,11 +124,12 @@ public class ControlGainEffect extends SpellAbilityEffect { sa.getParam("Chooser"), sa).get(0) : activator; CardCollectionView choices = CardLists.getValidCards(game.getCardsIn(ZoneType.Battlefield), sa.getParam("Choices"), activator, source, sa); - if (!choices.isEmpty()) { - String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : - Localizer.getInstance().getMessage("lblChooseaCard") +" "; - tgtCards = chooser.getController().chooseCardsForEffect(choices, sa, title, 1, 1, false, null); + if (choices.isEmpty()) { + return; } + String title = sa.hasParam("ChoiceTitle") ? sa.getParam("ChoiceTitle") : + Localizer.getInstance().getMessage("lblChooseaCard") +" "; + tgtCards = chooser.getController().chooseCardsForEffect(choices, sa, title, 1, 1, false, null); } else { tgtCards = getDefinedCards(sa); } diff --git a/forge-game/src/main/java/forge/game/card/CardProperty.java b/forge-game/src/main/java/forge/game/card/CardProperty.java index 05740a79848..0af9888951c 100644 --- a/forge-game/src/main/java/forge/game/card/CardProperty.java +++ b/forge-game/src/main/java/forge/game/card/CardProperty.java @@ -1703,7 +1703,7 @@ public class CardProperty { return false; } } else if (property.equals("hadToAttackThisCombat")) { - AttackRequirement e = game.getCombat().getAttackConstraints().getRequirements().get(card); + AttackRequirement e = combat.getAttackConstraints().getRequirements().get(card); if (e == null || !e.hasCreatureRequirement() || !e.getAttacker().equalsWithTimestamp(card)) { return false; } diff --git a/forge-game/src/main/java/forge/game/trigger/Trigger.java b/forge-game/src/main/java/forge/game/trigger/Trigger.java index d736589e14d..ad862b5c5bf 100644 --- a/forge-game/src/main/java/forge/game/trigger/Trigger.java +++ b/forge-game/src/main/java/forge/game/trigger/Trigger.java @@ -384,7 +384,8 @@ public abstract class Trigger extends TriggerReplacementBase { for (Player opp : this.getHostCard().getController().getOpponents()) { if (opp.equals(attackedP)) { continue; - } else if (opp.getLife() > life) { + } + if (opp.getLife() > life) { found = true; break; } diff --git a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java index 277fd56868c..012c3712426 100644 --- a/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java +++ b/forge-game/src/main/java/forge/game/trigger/WrappedAbility.java @@ -175,21 +175,6 @@ public class WrappedAbility extends Ability { return sa.copy(); } - @Override - public Player getActivatingPlayer() { - return sa.getActivatingPlayer(); - } - - @Override - public String getDescription() { - return sa.getDescription(); - } - - @Override - public ManaCost getMultiKickerManaCost() { - return sa.getMultiKickerManaCost(); - } - @Override public SpellAbilityRestriction getRestrictions() { return sa.getRestrictions(); @@ -249,14 +234,18 @@ public class WrappedAbility extends Ability { } @Override - public AbilitySub getSubAbility() { - return sa.getSubAbility(); + public void setStackDescription(final String s) { + sa.setStackDescription(s); } @Override public TargetRestrictions getTargetRestrictions() { return sa.getTargetRestrictions(); } + @Override + public void setTargetRestrictions(final TargetRestrictions tgt) { + sa.setTargetRestrictions(tgt); + } @Override public Card getTargetCard() { @@ -267,6 +256,10 @@ public class WrappedAbility extends Ability { public TargetChoices getTargets() { return sa.getTargets(); } + @Override + public void setTargets(TargetChoices targets) { + sa.setTargets(targets); + } @Override public boolean isAbility() { @@ -327,16 +320,28 @@ public class WrappedAbility extends Ability { // sa.resetOnceResolved(); } + @Override + public Player getActivatingPlayer() { + return sa.getActivatingPlayer(); + } @Override public void setActivatingPlayer(final Player player) { sa.setActivatingPlayer(player); } + @Override + public String getDescription() { + return sa.getDescription(); + } @Override public void setDescription(final String s) { sa.setDescription(s); } + @Override + public ManaCost getMultiKickerManaCost() { + return sa.getMultiKickerManaCost(); + } @Override public void setMultiKickerManaCost(final ManaCost cost) { sa.setMultiKickerManaCost(cost); @@ -358,25 +363,14 @@ public class WrappedAbility extends Ability { } @Override - public void setStackDescription(final String s) { - sa.setStackDescription(s); + public AbilitySub getSubAbility() { + return sa.getSubAbility(); } - @Override public void setSubAbility(final AbilitySub subAbility) { sa.setSubAbility(subAbility); } - @Override - public void setTargetRestrictions(final TargetRestrictions tgt) { - sa.setTargetRestrictions(tgt); - } - - @Override - public void setTargets(TargetChoices targets) { - sa.setTargets(targets); - } - @Override public void setTargetCard(final Card card) { sa.setTargetCard(card);