- Converted the triggered ability of Echo

This commit is contained in:
swordshine
2013-08-05 10:49:46 +00:00
parent 1d2666c598
commit ec645d7f0e
4 changed files with 12 additions and 16 deletions

View File

@@ -212,7 +212,7 @@ public class Card extends GameEntity implements Comparable<Card> {
private TreeMap<Long, Player> tempControllers = new TreeMap<Long, Player>(); private TreeMap<Long, Player> tempControllers = new TreeMap<Long, Player>();
private String text = ""; private String text = "";
private Cost echoCost = null; private String echoCost = "";
private Cost madnessCost = null; private Cost madnessCost = null;
private Cost miracleCost = null; private Cost miracleCost = null;
private String chosenType = ""; private String chosenType = "";
@@ -1413,11 +1413,11 @@ public class Card extends GameEntity implements Comparable<Card> {
* @param s * @param s
* a {@link java.lang.String} object. * a {@link java.lang.String} object.
*/ */
public final void setEchoCost(final Cost s) { public final void setEchoCost(final String s) {
this.echoCost = s; this.echoCost = s;
} }
public final Cost getEchoCost() { public final String getEchoCost() {
return this.echoCost; return this.echoCost;
} }

View File

@@ -886,7 +886,7 @@ public class AbilityUtils {
} }
} }
} }
} else if (defined.startsWith("NonReplaced")) { } else if (defined.startsWith("Non")) {
players.addAll(game.getPlayers()); players.addAll(game.getPlayers());
players.removeAll(getDefinedPlayers(card, defined.substring(3), sa)); players.removeAll(getDefinedPlayers(card, defined.substring(3), sa));
} else if (defined.equals("EnchantedController")) { } else if (defined.equals("EnchantedController")) {

View File

@@ -2222,7 +2222,7 @@ public class CardFactoryUtil {
final String[] k = card.getKeyword().get(echoPos).split(":"); final String[] k = card.getKeyword().get(echoPos).split(":");
final String manacost = k[1]; final String manacost = k[1];
card.setEchoCost(new Cost(manacost, false)); card.setEchoCost(manacost);
final Command intoPlay = new Command() { final Command intoPlay = new Command() {
@@ -3190,7 +3190,7 @@ public class CardFactoryUtil {
card.setSVar("CascadeCleanup", "DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True"); card.setSVar("CascadeCleanup", "DB$ Cleanup | ClearRemembered$ True | ClearImprinted$ True");
final Trigger cascadeTrigger = TriggerHandler.parseTrigger(trigScript.toString(), card, true); final Trigger cascadeTrigger = TriggerHandler.parseTrigger(trigScript.toString(), card, true);
card.addTrigger(cascadeTrigger);; card.addTrigger(cascadeTrigger);
} // Cascade } // Cascade
} }

View File

@@ -29,6 +29,7 @@ import forge.CardPredicates;
import forge.Singletons; import forge.Singletons;
import forge.CardPredicates.Presets; import forge.CardPredicates.Presets;
import forge.CounterType; import forge.CounterType;
import forge.card.ability.AbilityFactory;
import forge.card.cardfactory.CardFactoryUtil; import forge.card.cardfactory.CardFactoryUtil;
import forge.card.cost.Cost; import forge.card.cost.Cost;
import forge.card.mana.ManaCost; import forge.card.mana.ManaCost;
@@ -170,17 +171,12 @@ public class Upkeep extends Phase {
if (c.hasStartOfKeyword("(Echo unpaid)")) { if (c.hasStartOfKeyword("(Echo unpaid)")) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
sb.append("Echo for ").append(c).append("\n"); sb.append("Echo for ").append(c).append("\n");
String effect = "AB$ Sacrifice | Cost$ 0 | SacValid$ Self | "
+ "UnlessPayer$ You | UnlessCost$ " + c.getEchoCost();
final Ability sacAbility = new Ability(c, ManaCost.ZERO) { SpellAbility sacAbility = AbilityFactory.getAbility(effect, c);
@Override sacAbility.setTrigger(true);
public void resolve() {
Cost cost = c.getEchoCost();
boolean hasPaid = c.getController().getController().payManaOptional(c, cost, this, "Echo for " + c, ManaPaymentPurpose.Echo);
if (!hasPaid)
game.getAction().sacrifice(c, this);;
}
};
sacAbility.setActivatingPlayer(c.getController()); sacAbility.setActivatingPlayer(c.getController());
sacAbility.setStackDescription(sb.toString()); sacAbility.setStackDescription(sb.toString());
sacAbility.setDescription(sb.toString()); sacAbility.setDescription(sb.toString());