From e90428a18dff3ef769a2f40ccffbf24646142bc8 Mon Sep 17 00:00:00 2001 From: Northmoc Date: Wed, 22 Sep 2021 19:11:10 -0400 Subject: [PATCH] ControlGainEffect improve StringBuilder --- .../ability/effects/ControlGainEffect.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java index 8f05f4e8a3b..6fef57e3778 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ControlGainEffect.java @@ -29,7 +29,7 @@ public class ControlGainEffect extends SpellAbilityEffect { newController.add(sa.getActivatingPlayer()); } - sb.append(newController).append(" gains control of"); + sb.append(newController.get(0)).append(" gains control of"); final CardCollectionView tgts = getDefinedCards(sa); if (tgts.isEmpty()) { @@ -44,11 +44,39 @@ public class ControlGainEffect extends SpellAbilityEffect { } } } + if (sa.hasParam("LoseControl")) { + String loseCont = sa.getParam("LoseControl"); + if (loseCont.contains("EOT")) { + sb.append(" until end of turn"); + } else if (loseCont.contains("Untap")) { + sb.append(" for as long as ").append(sa.getHostCard()).append(" remains tapped"); + } else if (loseCont.contains("LoseControl")) { + sb.append(" for as long as you control ").append(sa.getHostCard()); + } else if (loseCont.contains("LeavesPlay")) { + sb.append(" for as long as ").append(sa.getHostCard()).append( "remains on the battlefield"); + } else if (loseCont.equals("StaticCommandCheck")) { + sb.append(" for as long as that creature remains enchanted"); + } else if (loseCont.equals("UntilTheEndOfYourNextTurn")) { + sb.append(" until the end of your next turn"); + } + } sb.append("."); if (sa.hasParam("Untap")) { sb.append(" Untap it."); } + final List keywords = sa.hasParam("AddKWs") ? Arrays.asList(sa.getParam("AddKWs").split(" & ")) : null; + if (sa.hasParam("AddKWs")) { + sb.append(" It gains "); + for (int i = 0; i < keywords.size(); i++) { + sb.append(keywords.get(i).toLowerCase()); + sb.append(keywords.size() > 2 && i+1 != keywords.size() ? ", " : ""); + sb.append(keywords.size() == 2 && i == 0 ? " " : ""); + sb.append(i+2 == keywords.size() ? "and " : ""); + } + sb.append(" until end of turn."); + } + return sb.toString(); }