diff --git a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java index 31585eb5550..3fd36fba61b 100644 --- a/forge-ai/src/main/java/forge/ai/SpellApiToAi.java +++ b/forge-ai/src/main/java/forge/ai/SpellApiToAi.java @@ -24,6 +24,7 @@ public enum SpellApiToAi { .put(ApiType.Animate, AnimateAi.class) .put(ApiType.AnimateAll, AnimateAllAi.class) .put(ApiType.Attach, AttachAi.class) + .put(ApiType.Ascend, AlwaysPlayAi.class) .put(ApiType.Balance, BalanceAi.class) .put(ApiType.BecomeMonarch, AlwaysPlayAi.class) .put(ApiType.BecomesBlocked, BecomesBlockedAi.class) diff --git a/forge-game/src/main/java/forge/game/ability/ApiType.java b/forge-game/src/main/java/forge/game/ability/ApiType.java index 54fd9738540..df2cc18b4b9 100644 --- a/forge-game/src/main/java/forge/game/ability/ApiType.java +++ b/forge-game/src/main/java/forge/game/ability/ApiType.java @@ -20,6 +20,7 @@ public enum ApiType { Animate (AnimateEffect.class), AnimateAll (AnimateAllEffect.class), Attach (AttachEffect.class), + Ascend (AscendEffect.class), Balance (BalanceEffect.class), BecomeMonarch (BecomeMonarchEffect.class), BecomesBlocked (BecomesBlockedEffect.class), diff --git a/forge-game/src/main/java/forge/game/ability/effects/AscendEffect.java b/forge-game/src/main/java/forge/game/ability/effects/AscendEffect.java new file mode 100644 index 00000000000..6d24588cc9c --- /dev/null +++ b/forge-game/src/main/java/forge/game/ability/effects/AscendEffect.java @@ -0,0 +1,43 @@ +package forge.game.ability.effects; + +import java.util.List; + +import forge.game.ability.SpellAbilityEffect; +import forge.game.player.Player; +import forge.game.spellability.SpellAbility; +import forge.game.zone.ZoneType; +import forge.util.Lang; + +public class AscendEffect extends SpellAbilityEffect { + + /* (non-Javadoc) + * @see forge.game.ability.SpellAbilityEffect#getStackDescription(forge.game.spellability.SpellAbility) + */ + @Override + protected String getStackDescription(SpellAbility sa) { + final StringBuilder sb = new StringBuilder(); + + List tgt = getTargetPlayers(sa); + + sb.append(Lang.joinHomogenous(tgt)); + sb.append(" "); + sb.append(tgt.size() > 1 ? "ascend" : "ascends"); + sb.append(". "); + + return sb.toString(); + } + + /* + * (non-Javadoc) + * @see forge.game.ability.SpellAbilityEffect#resolve(forge.game.spellability.SpellAbility) + */ + @Override + public void resolve(SpellAbility sa) { + for (Player p : getTargetPlayers(sa)) { + // Player need 10+ permanents on the battlefield + if (p.getZone(ZoneType.Battlefield).size() >= 10) { + p.setBlessing(true); + } + } + } +}