@@ -894,8 +894,15 @@ private void changeKnownOriginResolve(final SpellAbility sa) {
894894 * a {@link forge.game.spellability.SpellAbility} object.
895895 */
896896 private void changeHiddenOriginResolve (final SpellAbility sa ) {
897- List <Player > fetchers = AbilityUtils .getDefinedPlayers (sa .getHostCard (), sa .getParam ("DefinedPlayer" ), sa );
897+ final Card source = sa .getHostCard ();
898+ final Game game = source .getGame ();
899+ final boolean chooseFromDef = sa .hasParam ("ChooseFromDefined" );
900+ final boolean defined = sa .hasParam ("Defined" ) || chooseFromDef ;
901+ final String changeType = sa .getParamOrDefault ("ChangeType" , "" );
902+ boolean mandatory = sa .hasParam ("Mandatory" );
903+ Map <Player , HiddenOriginChoices > hiddenChoices = Maps .newHashMap ();
898904
905+ List <Player > fetchers = AbilityUtils .getDefinedPlayers (sa .getHostCard (), sa .getParam ("DefinedPlayer" ), sa );
899906 Player chooser = null ;
900907 if (sa .hasParam ("Chooser" )) {
901908 final FCollectionView <Player > choosers = AbilityUtils .getDefinedPlayers (sa .getHostCard (), sa .getParam ("Chooser" ), sa );
@@ -904,18 +911,6 @@ private void changeHiddenOriginResolve(final SpellAbility sa) {
904911 }
905912 }
906913
907- changeZonePlayerInvariant (chooser , sa , fetchers );
908- }
909-
910- private void changeZonePlayerInvariant (Player chooser , SpellAbility sa , List <Player > fetchers ) {
911- final Card source = sa .getHostCard ();
912- final Game game = source .getGame ();
913- final boolean chooseFromDef = sa .hasParam ("ChooseFromDefined" );
914- final boolean defined = sa .hasParam ("Defined" ) || chooseFromDef ;
915- final String changeType = sa .getParamOrDefault ("ChangeType" , "" );
916- boolean mandatory = sa .hasParam ("Mandatory" );
917- Map <Player , HiddenOriginChoices > HiddenOriginChoicesMap = Maps .newHashMap ();
918-
919914 for (Player player : fetchers ) {
920915 Player decider = chooser ;
921916 if (decider == null ) {
@@ -1279,7 +1274,7 @@ else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand)
12791274 choices .libraryPos = libraryPos ;
12801275 choices .origin = origin ;
12811276 choices .destination = destination ;
1282- HiddenOriginChoicesMap .put (player , choices );
1277+ hiddenChoices .put (player , choices );
12831278 }
12841279
12851280 final boolean remember = sa .hasParam ("RememberChanged" );
@@ -1290,13 +1285,13 @@ else if (!origin.contains(ZoneType.Library) && !origin.contains(ZoneType.Hand)
12901285 boolean combatChanged = false ;
12911286 final CardZoneTable triggerList = CardZoneTable .getSimultaneousInstance (sa );
12921287
1293- for (Player player : HiddenOriginChoicesMap .keySet ()) {
1294- boolean searchedLibrary = HiddenOriginChoicesMap .get (player ).searchedLibrary ;
1295- boolean shuffleMandatory = HiddenOriginChoicesMap .get (player ).shuffleMandatory ;
1296- CardCollection chosenCards = HiddenOriginChoicesMap .get (player ).chosenCards ;
1297- int libraryPos = HiddenOriginChoicesMap .get (player ).libraryPos ;
1298- List <ZoneType > origin = HiddenOriginChoicesMap .get (player ).origin ;
1299- ZoneType destination = HiddenOriginChoicesMap .get (player ).destination ;
1288+ for (Player player : hiddenChoices .keySet ()) {
1289+ boolean searchedLibrary = hiddenChoices .get (player ).searchedLibrary ;
1290+ boolean shuffleMandatory = hiddenChoices .get (player ).shuffleMandatory ;
1291+ CardCollection chosenCards = hiddenChoices .get (player ).chosenCards ;
1292+ int libraryPos = hiddenChoices .get (player ).libraryPos ;
1293+ List <ZoneType > origin = hiddenChoices .get (player ).origin ;
1294+ ZoneType destination = hiddenChoices .get (player ).destination ;
13001295 CardCollection movedCards = new CardCollection ();
13011296 Player decider = Objects .requireNonNullElse (chooser , player );
13021297
0 commit comments