diff --git a/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java b/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java index 4c0f1995f72..d18ba7177c4 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/PhasesEffect.java @@ -2,7 +2,7 @@ package forge.game.ability.effects; import java.util.List; -import org.apache.commons.lang3.StringUtils; +import forge.util.Lang; import forge.game.Game; import forge.game.ability.AbilityUtils; @@ -28,8 +28,8 @@ public class PhasesEffect extends SpellAbilityEffect { // when getStackDesc is called, just build exactly what is happening final StringBuilder sb = new StringBuilder(); final List tgtCards = getTargetCards(sa); - sb.append(StringUtils.join(tgtCards, ", ")); - sb.append(" Phases Out."); + sb.append(Lang.joinHomogenous(tgtCards)); + sb.append(tgtCards.size() == 1 ? " phases out." : " phase out."); return sb.toString(); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java index d14026c495b..e5d1ac937dc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ScryEffect.java @@ -8,6 +8,7 @@ import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; import forge.game.player.Player; import forge.game.spellability.SpellAbility; +import forge.util.Lang; import forge.util.Localizer; @@ -16,16 +17,16 @@ public class ScryEffect extends SpellAbilityEffect { protected String getStackDescription(SpellAbility sa) { final StringBuilder sb = new StringBuilder(); - for (final Player p : getTargetPlayers(sa)) { - sb.append(p.toString()).append(" "); - } + final List players = Lists.newArrayList(); // players really affected + players.addAll(getTargetPlayers(sa)); + sb.append(Lang.joinHomogenous(players)).append(" "); int num = 1; if (sa.hasParam("ScryNum")) { num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("ScryNum"), sa); } - sb.append("scrys (").append(num).append(")."); + sb.append(players.size() == 1 ? "scries " : "scry ").append(num).append("."); return sb.toString(); } diff --git a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java index e3f941eb852..5c3aa1ed082 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/TokenEffect.java @@ -17,6 +17,9 @@ */ package forge.game.ability.effects; +import java.util.List; + +import forge.util.Lang; import org.apache.commons.lang3.mutable.MutableBoolean; import forge.game.Game; @@ -25,12 +28,24 @@ import forge.game.card.Card; import forge.game.card.CardZoneTable; import forge.game.event.GameEventCombatChanged; import forge.game.event.GameEventTokenCreated; +import forge.game.player.Player; import forge.game.spellability.SpellAbility; public class TokenEffect extends TokenEffectBase { @Override protected String getStackDescription(SpellAbility sa) { + if (sa.hasParam("SpellDescription")) { + String desc = sa.getParam("SpellDescription"); + if (desc.startsWith("Create")) { + final Card host = sa.getHostCard(); + final List creators = AbilityUtils.getDefinedPlayers(host, sa.getParamOrDefault("TokenOwner", + "You"), sa); + String start = Lang.joinHomogenous(creators) + (creators.size() == 1 ? " creates" : " create"); + desc = desc.replace("Create",start); + } + return desc; + } return sa.getDescription(); }