From ef281065a8fc4f009501fef118ca371d54b466f5 Mon Sep 17 00:00:00 2001 From: spjspj Date: Fri, 27 Apr 2018 09:10:02 +1000 Subject: [PATCH] Remove plane from old player and add in new one --- Mage/src/main/java/mage/game/GameImpl.java | 28 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/Mage/src/main/java/mage/game/GameImpl.java b/Mage/src/main/java/mage/game/GameImpl.java index a4602536931..d59a44ef53c 100644 --- a/Mage/src/main/java/mage/game/GameImpl.java +++ b/Mage/src/main/java/mage/game/GameImpl.java @@ -1565,14 +1565,14 @@ public abstract class GameImpl implements Game, Serializable { } state.addCommandObject(newPlane); informPlayers("You have planeswalked to " + newPlane.getLogName()); - + // Fire off the planeswalked event GameEvent event = new GameEvent(GameEvent.EventType.PLANESWALK, newPlane.getId(), null, newPlane.getId(), 0, true); if (!replaceEvent(event)) { GameEvent ge = new GameEvent(GameEvent.EventType.PLANESWALKED, newPlane.getId(), null, newPlane.getId(), 0, true); fireEvent(ge); } - + return true; } @@ -2537,14 +2537,34 @@ public abstract class GameImpl implements Game, Serializable { } } - //Remove all emblems the player controls + //Remove all emblems/plane the player controls + boolean addPlaneAgain = false; for (Iterator it = this.getState().getCommand().iterator(); it.hasNext();) { CommandObject obj = it.next(); if ((obj instanceof Emblem || obj instanceof Plane) && obj.getControllerId().equals(playerId)) { - ((Emblem) obj).discardEffects();// This may not be the best fix but it works + if (obj instanceof Emblem) { + ((Emblem) obj).discardEffects();// This may not be the best fix but it works + } + if (obj instanceof Plane) { + ((Plane) obj).discardEffects(); + // Readd a new one + addPlaneAgain = true; + } it.remove(); } } + + if (addPlaneAgain) { + boolean addedAgain = false; + for (Player aplayer : state.getPlayers().values()) { + if (!aplayer.hasLeft() && !addedAgain) { + addedAgain = true; + Plane plane = Plane.getRandomPlane(); + plane.setControllerId(aplayer.getId()); + addPlane(plane, null, aplayer.getId()); + } + } + } Iterator> it = gameCards.entrySet().iterator();