diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 6e28cd69f83..aaa030b01bd 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -1090,7 +1090,7 @@ public class PlayerControllerAi extends PlayerController { @Override public void orderAndPlaySimultaneousSa(List activePlayerSAs) { for (final SpellAbility sa : getAi().orderPlaySa(activePlayerSAs)) { - if (sa.isTrigger()) { + if (sa.isTrigger() && !sa.isCopied()) { if (prepareSingleSa(sa.getHostCard(), sa, true)) { ComputerUtil.playStack(sa, player, getGame()); } diff --git a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java index 4e17ebad454..72a10b7f736 100644 --- a/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java +++ b/forge-ai/src/main/java/forge/ai/ability/DamageDealAi.java @@ -738,11 +738,7 @@ public class DamageDealAi extends DamageAiBase { dump = true; } final int assignedDamage = dump ? dmg : ComputerUtilCombat.getEnoughDamageToKill(c, dmg, source, false, noPrevention); - if (assignedDamage <= dmg) { - sa.addDividedAllocation(c, assignedDamage); - } else { - sa.addDividedAllocation(c, dmg); - } + sa.addDividedAllocation(c, Math.min(assignedDamage, dmg)); dmg = dmg - assignedDamage; if (dmg <= 0) { break; @@ -752,10 +748,12 @@ public class DamageDealAi extends DamageAiBase { } } else if ("OppAtTenLife".equals(logic)) { for (final Player p : ai.getOpponents()) { - if (sa.canTarget(p) && p.getLife() == 10 && tcs.size() < tgt.getMaxTargets(source, sa)) { + if (sa.canTarget(p) && p.getLife() == 10) { tcs.add(p); + return true; } } + return false; } // TODO: Improve Damage, we shouldn't just target the player just because we can if (sa.canTarget(enemy) && tcs.size() < tgt.getMaxTargets(source, sa)) { diff --git a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java index 72d6b25dd39..b03fc392691 100644 --- a/forge-game/src/main/java/forge/game/ability/AbilityUtils.java +++ b/forge-game/src/main/java/forge/game/ability/AbilityUtils.java @@ -1965,17 +1965,6 @@ public class AbilityUtils { } // end ctb != null - if (sq[0].contains("OppsAtLifeTotal")) { - final int lifeTotal = calculateAmount(c, sq[1], ctb); - int number = 0; - for (final Player opp : player.getOpponents()) { - if (opp.getLife() == lifeTotal) { - number++; - } - } - return doXMath(number, expr, c, ctb); - } - //Count$SearchedLibrary. if (sq[0].contains("SearchedLibrary")) { int sum = 0; diff --git a/forge-gui/res/cardsfolder/h/hidetsugus_second_rite.txt b/forge-gui/res/cardsfolder/h/hidetsugus_second_rite.txt index 462a8221dac..58c18193101 100644 --- a/forge-gui/res/cardsfolder/h/hidetsugus_second_rite.txt +++ b/forge-gui/res/cardsfolder/h/hidetsugus_second_rite.txt @@ -3,6 +3,4 @@ ManaCost:3 R Types:Instant A:SP$ DealDamage | Cost$ 3 R | ValidTgts$ Player | TgtPrompt$ Select target player | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ10 | NumDmg$ 10 | AILogic$ OppAtTenLife | SpellDescription$ If target player has exactly 10 life, CARDNAME deals 10 damage to that player. SVar:X:TargetedPlayer$LifeTotal -SVar:Y:Count$OppsAtLifeTotal.10 -SVar:NeedsToPlayVar:Y GE1 Oracle:If target player has exactly 10 life, Hidetsugu's Second Rite deals 10 damage to that player. diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 5e82dc62570..2d9bcb4f7f7 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1946,7 +1946,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont } for (int i = orderedSAs.size() - 1; i >= 0; i--) { final SpellAbility next = orderedSAs.get(i); - if (next.isTrigger()) { + if (next.isTrigger() && !next.isCopied()) { HumanPlay.playSpellAbility(this, player, next); } else { if (next.isCopied()) {