improve getStackDescription for some more Effects

This commit is contained in:
Tim Mocny
2022-02-05 19:11:15 +00:00
committed by Michael Kamensky
parent de2924ff91
commit edab767b19
3 changed files with 23 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ package forge.game.ability.effects;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils; import forge.util.Lang;
import forge.game.Game; import forge.game.Game;
import forge.game.ability.AbilityUtils; import forge.game.ability.AbilityUtils;
@@ -28,8 +28,8 @@ public class PhasesEffect extends SpellAbilityEffect {
// when getStackDesc is called, just build exactly what is happening // when getStackDesc is called, just build exactly what is happening
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
final List<Card> tgtCards = getTargetCards(sa); final List<Card> tgtCards = getTargetCards(sa);
sb.append(StringUtils.join(tgtCards, ", ")); sb.append(Lang.joinHomogenous(tgtCards));
sb.append(" Phases Out."); sb.append(tgtCards.size() == 1 ? " phases out." : " phase out.");
return sb.toString(); return sb.toString();
} }

View File

@@ -8,6 +8,7 @@ import forge.game.ability.AbilityUtils;
import forge.game.ability.SpellAbilityEffect; import forge.game.ability.SpellAbilityEffect;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.util.Lang;
import forge.util.Localizer; import forge.util.Localizer;
@@ -16,16 +17,16 @@ public class ScryEffect extends SpellAbilityEffect {
protected String getStackDescription(SpellAbility sa) { protected String getStackDescription(SpellAbility sa) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
for (final Player p : getTargetPlayers(sa)) { final List<Player> players = Lists.newArrayList(); // players really affected
sb.append(p.toString()).append(" "); players.addAll(getTargetPlayers(sa));
} sb.append(Lang.joinHomogenous(players)).append(" ");
int num = 1; int num = 1;
if (sa.hasParam("ScryNum")) { if (sa.hasParam("ScryNum")) {
num = AbilityUtils.calculateAmount(sa.getHostCard(), sa.getParam("ScryNum"), sa); 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(); return sb.toString();
} }

View File

@@ -17,6 +17,9 @@
*/ */
package forge.game.ability.effects; package forge.game.ability.effects;
import java.util.List;
import forge.util.Lang;
import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.commons.lang3.mutable.MutableBoolean;
import forge.game.Game; import forge.game.Game;
@@ -25,12 +28,24 @@ import forge.game.card.Card;
import forge.game.card.CardZoneTable; import forge.game.card.CardZoneTable;
import forge.game.event.GameEventCombatChanged; import forge.game.event.GameEventCombatChanged;
import forge.game.event.GameEventTokenCreated; import forge.game.event.GameEventTokenCreated;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
public class TokenEffect extends TokenEffectBase { public class TokenEffect extends TokenEffectBase {
@Override @Override
protected String getStackDescription(SpellAbility sa) { 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<Player> 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(); return sa.getDescription();
} }