From 0c8d49ce56796418505fca0f9ace35988a2eefb3 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Tue, 7 Jan 2025 20:05:27 +0400 Subject: [PATCH] merge fix --- Mage.Common/src/main/java/mage/utils/SystemUtil.java | 10 ++++++---- .../mage/test/serverside/cheats/LoadCheatsTest.java | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Mage.Common/src/main/java/mage/utils/SystemUtil.java b/Mage.Common/src/main/java/mage/utils/SystemUtil.java index 604ae7f361a..4f71a78bca2 100644 --- a/Mage.Common/src/main/java/mage/utils/SystemUtil.java +++ b/Mage.Common/src/main/java/mage/utils/SystemUtil.java @@ -554,10 +554,11 @@ public final class SystemUtil { case COMMAND_OPPONENT_UNDER_CONTROL_START: { Target target = new TargetPlayer().withNotTarget(true).withChooseHint("to take under your control"); - if (feedbackPlayer.chooseTarget(Outcome.GainControl, target, fakeSourceAbilityTemplate, game)) { + Ability fakeSourceAbility = fakeSourceAbilityTemplate.copy(); + if (feedbackPlayer.chooseTarget(Outcome.GainControl, target, fakeSourceAbility, game)) { Player targetPlayer = game.getPlayer(target.getFirstTarget()); if (targetPlayer != null && targetPlayer != feedbackPlayer) { - CardUtil.takeControlUnderPlayerStart(game, fakeSourceAbilityTemplate, feedbackPlayer, targetPlayer, false); + CardUtil.takeControlUnderPlayerStart(game, fakeSourceAbility, feedbackPlayer, targetPlayer, false); // allow priority play again in same step (for better cheat UX) targetPlayer.resetPassed(); } @@ -569,10 +570,11 @@ public final class SystemUtil { case COMMAND_OPPONENT_UNDER_CONTROL_END: { Target target = new TargetPlayer().withNotTarget(true).withChooseHint("to free from your control"); - if (feedbackPlayer.chooseTarget(Outcome.GainControl, target, fakeSourceAbilityTemplate, game)) { + Ability fakeSourceAbility = fakeSourceAbilityTemplate.copy(); + if (feedbackPlayer.chooseTarget(Outcome.GainControl, target, fakeSourceAbility, game)) { Player targetPlayer = game.getPlayer(target.getFirstTarget()); if (targetPlayer != null && targetPlayer != feedbackPlayer && !targetPlayer.isGameUnderControl()) { - CardUtil.takeControlUnderPlayerEnd(game, fakeSourceAbilityTemplate, feedbackPlayer, targetPlayer); + CardUtil.takeControlUnderPlayerEnd(game, fakeSourceAbility, feedbackPlayer, targetPlayer); } // workaround for refresh priority dialog like avatar click (cheats called from priority in 99%) game.firePriorityEvent(feedbackPlayer.getId()); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/cheats/LoadCheatsTest.java b/Mage.Tests/src/test/java/org/mage/test/serverside/cheats/LoadCheatsTest.java index 4f72de91e3c..1a7d63ed24d 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/cheats/LoadCheatsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/cheats/LoadCheatsTest.java @@ -55,11 +55,11 @@ public class LoadCheatsTest extends CardTestPlayerBase { setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); - setChoice(playerA, "5"); // choose [group 3]: 5 = 2 default menus + 3 group + setChoice(playerA, "7"); // choose [group 3]: 7 = 4 default menus + 3 group SystemUtil.executeCheatCommands(currentGame, commandsFile, playerA); assertHandCount(playerA, "Razorclaw Bear", 1); assertPermanentCount(playerA, "Mountain", 3); - assertHandCount(playerA, "Island", 10); // by cheats + assertHandCount(playerA, "Island", 10); // possible fail: changed in amount of default cheat commands } }