From ad3b76dae6165f3becdf227a93fe6208b359af71 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 1 Apr 2023 18:52:31 +0400 Subject: [PATCH] Fixed game error for few cards like Agent's Toolkit (fix NotSerializableException, #9580); --- Mage.Sets/src/mage/cards/a/AgentsToolkit.java | 3 ++- Mage.Sets/src/mage/cards/c/ContractualSafeguard.java | 3 ++- .../mage/abilities/costs/common/RemoveCountersSourceCost.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AgentsToolkit.java b/Mage.Sets/src/mage/cards/a/AgentsToolkit.java index ab464121f3f..ff7479f0f78 100644 --- a/Mage.Sets/src/mage/cards/a/AgentsToolkit.java +++ b/Mage.Sets/src/mage/cards/a/AgentsToolkit.java @@ -23,6 +23,7 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; +import java.util.LinkedHashSet; import java.util.Set; import java.util.UUID; @@ -90,7 +91,7 @@ class AgentToolkitMoveCounterEffect extends OneShotEffect { Permanent enteringCreature = (Permanent) enteringObject; Choice moveCounterChoice = new ChoiceImpl(false); - Set possibleCounterNames = agentsToolkitPermanent.getCounters(game).keySet(); + Set possibleCounterNames = new LinkedHashSet<>(agentsToolkitPermanent.getCounters(game).keySet()); moveCounterChoice.setMessage("Choose counter to move"); moveCounterChoice.setChoices(possibleCounterNames); diff --git a/Mage.Sets/src/mage/cards/c/ContractualSafeguard.java b/Mage.Sets/src/mage/cards/c/ContractualSafeguard.java index 3ec5b85792f..3c20fdd61c3 100644 --- a/Mage.Sets/src/mage/cards/c/ContractualSafeguard.java +++ b/Mage.Sets/src/mage/cards/c/ContractualSafeguard.java @@ -23,6 +23,7 @@ import mage.target.common.TargetControlledCreaturePermanent; import mage.util.RandomUtil; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.Set; import java.util.UUID; @@ -125,7 +126,7 @@ class ContractualSafeguardSecondEffect extends OneShotEffect { if (permanent == null) { return false; } - Set counterTypes = permanent.getCounters(game).keySet(); + Set counterTypes = new LinkedHashSet<>(permanent.getCounters(game).keySet()); String chosenType; switch (counterTypes.size()) { case 0: diff --git a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java index 2a75d15939a..987b0dedbfe 100644 --- a/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java +++ b/Mage/src/main/java/mage/abilities/costs/common/RemoveCountersSourceCost.java @@ -14,6 +14,7 @@ import mage.players.Player; import mage.util.RandomUtil; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.Set; import java.util.UUID; @@ -58,7 +59,7 @@ public class RemoveCountersSourceCost extends CostImpl { } String toRemove; if (name.isEmpty()) { - Set toChoose = permanent.getCounters(game).keySet(); + Set toChoose = new LinkedHashSet<>(permanent.getCounters(game).keySet()); switch (toChoose.size()) { case 0: return paid;