* Game: tiny leaders game mode improves (fixed AI games errors, fixed commander dupes on game restart with Karn Liberated, #6113);

This commit is contained in:
Oleg Agafonov 2021-07-24 14:24:17 +04:00
parent c1db466d05
commit ac8d3de474
8 changed files with 75 additions and 33 deletions

View file

@ -304,11 +304,11 @@ public class MCTSNode {
protected Game createSimulation(Game game, UUID playerId) {
Game sim = game.copy();
for (Player copyPlayer: sim.getState().getPlayers().values()) {
Player origPlayer = game.getState().getPlayers().get(copyPlayer.getId()).copy();
SimulatedPlayerMCTS newPlayer = new SimulatedPlayerMCTS(copyPlayer.getId(), true);
for (Player oldPlayer: sim.getState().getPlayers().values()) {
Player origPlayer = game.getState().getPlayers().get(oldPlayer.getId()).copy();
SimulatedPlayerMCTS newPlayer = new SimulatedPlayerMCTS(oldPlayer, true);
newPlayer.restore(origPlayer);
sim.getState().getPlayers().put(copyPlayer.getId(), newPlayer);
sim.getState().getPlayers().put(oldPlayer.getId(), newPlayer);
}
randomizePlayers(sim, playerId);
sim.setSimulation(true);

View file

@ -10,6 +10,7 @@ import mage.constants.Outcome;
import mage.game.Game;
import mage.game.combat.CombatGroup;
import mage.game.events.GameEvent;
import mage.game.match.MatchPlayer;
import mage.game.permanent.Permanent;
import mage.game.stack.StackAbility;
import mage.players.Player;
@ -33,9 +34,10 @@ public class SimulatedPlayerMCTS extends MCTSPlayer {
private int actionCount = 0;
private static final Logger logger = Logger.getLogger(SimulatedPlayerMCTS.class);
public SimulatedPlayerMCTS(UUID id, boolean isSimulatedPlayer) {
super(id);
public SimulatedPlayerMCTS(Player originalPlayer, boolean isSimulatedPlayer) {
super(originalPlayer.getId());
this.isSimulatedPlayer = isSimulatedPlayer;
this.matchPlayer = new MatchPlayer(originalPlayer.getMatchPlayer(), this);
}
public SimulatedPlayerMCTS(final SimulatedPlayerMCTS player) {