From 4b5027a86e4f8f5a43a94a6557c9c49c527113c7 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 2 Dec 2020 11:02:46 -0500 Subject: [PATCH] Monarch command zone effect: support multiple arts/sets --- forge-game/src/main/java/forge/game/Game.java | 4 ++-- forge-game/src/main/java/forge/game/GameAction.java | 4 ++-- .../forge/game/ability/effects/BecomeMonarchEffect.java | 3 ++- forge-game/src/main/java/forge/game/player/Player.java | 9 +++++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/forge-game/src/main/java/forge/game/Game.java b/forge-game/src/main/java/forge/game/Game.java index b91ccdfdeba..b8fc439b946 100644 --- a/forge-game/src/main/java/forge/game/Game.java +++ b/forge-game/src/main/java/forge/game/Game.java @@ -743,9 +743,9 @@ public class Game { if (p != null && p.isMonarch()) { // if the player who lost was the Monarch, someone else will be the monarch if(p.equals(getPhaseHandler().getPlayerTurn())) { - getAction().becomeMonarch(getNextPlayerAfter(p)); + getAction().becomeMonarch(getNextPlayerAfter(p), null); } else { - getAction().becomeMonarch(getPhaseHandler().getPlayerTurn()); + getAction().becomeMonarch(getPhaseHandler().getPlayerTurn(), null); } } diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 1748a61c41a..05c5f249792 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1768,7 +1768,7 @@ public class GameAction { } } - public void becomeMonarch(final Player p) { + public void becomeMonarch(final Player p, final String set) { final Player previous = game.getMonarch(); if (p == null || p.equals(previous)) return; @@ -1776,7 +1776,7 @@ public class GameAction { if (previous != null) previous.removeMonarchEffect(); - p.createMonarchEffect(); + p.createMonarchEffect(set); game.setMonarch(p); // Run triggers diff --git a/forge-game/src/main/java/forge/game/ability/effects/BecomeMonarchEffect.java b/forge-game/src/main/java/forge/game/ability/effects/BecomeMonarchEffect.java index 8fa3f564d25..0b2612203c5 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/BecomeMonarchEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/BecomeMonarchEffect.java @@ -27,11 +27,12 @@ public class BecomeMonarchEffect extends SpellAbilityEffect { public void resolve(SpellAbility sa) { final TargetRestrictions tgt = sa.getTargetRestrictions(); // TODO: improve ai and fix corner cases + final String set = sa.getHostCard().getSetCode(); for (final Player p : getTargetPlayers(sa)) { if ((tgt == null) || p.canBeTargetedBy(sa)) { if (!p.hasKeyword("You can’t become the monarch this turn.")) { - p.getGame().getAction().becomeMonarch(p); + p.getGame().getAction().becomeMonarch(p, set); } } } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index beaa57bda3a..e24173bef9e 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -3170,12 +3170,17 @@ public class Player extends GameEntity implements Comparable { return equals(game.getMonarch()); } - public void createMonarchEffect() { + public void createMonarchEffect(final String set) { final PlayerZone com = getZone(ZoneType.Command); if (monarchEffect == null) { monarchEffect = new Card(game.nextCardId(), null, game); monarchEffect.setOwner(this); - monarchEffect.setImageKey("t:monarch"); + if (set != null) { + monarchEffect.setImageKey("t:monarch_" + set.toLowerCase()); + monarchEffect.setSetCode(set); + } else { + monarchEffect.setImageKey("t:monarch"); + } monarchEffect.setName("The Monarch"); monarchEffect.addType("Effect");