mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
- Cleanup
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
Name:Berserk
|
Name:Berserk
|
||||||
ManaCost:G
|
ManaCost:G
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Pump | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | KW$ Trample & HIDDEN At the beginning of the next end step, destroy CARDNAME if it attacked this turn. | ActivationPhases$ Upkeep,Draw,Main1,BeginCombat,Declare Attackers,Declare Blockers | References$ X | SpellDescription$ Cast CARDNAME only before the combat damage step. Target creature gains trample and gets +X/+0 until end of turn, where X is its power. At the beginning of the next end step, destroy that creature if it attacked this turn.
|
A:SP$ Pump | Cost$ G | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ X | KW$ Trample & HIDDEN At the beginning of the next end step, destroy CARDNAME if it attacked this turn. | ActivationPhases$ Upkeep->Declare Blockers | References$ X | SpellDescription$ Cast CARDNAME only before the combat damage step. Target creature gains trample and gets +X/+0 until end of turn, where X is its power. At the beginning of the next end step, destroy that creature if it attacked this turn.
|
||||||
SVar:X:Targeted$CardPower
|
SVar:X:Targeted$CardPower
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/berserk.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/berserk.jpg
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Waylay
|
Name:Waylay
|
||||||
ManaCost:2 W
|
ManaCost:2 W
|
||||||
Types:Instant
|
Types:Instant
|
||||||
A:SP$ Token | Cost$ 2 W | TokenAmount$ 3 | TokenName$ Knight | TokenTypes$ Creature,Knight | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenKeywords$ At the beginning of the end step, exile CARDNAME. | SpellDescription$ Put three 2/2 white Knight creature tokens onto the battlefield. Exile them at the beginning of the next cleanup step.
|
A:SP$ Token | Cost$ 2 W | TokenAmount$ 3 | TokenName$ Knight | TokenTypes$ Creature,Knight | TokenOwner$ You | TokenColors$ White | TokenPower$ 2 | TokenToughness$ 2 | TokenHiddenKeywords$ At the beginning of the end step, exile CARDNAME. | SpellDescription$ Put three 2/2 white Knight creature tokens onto the battlefield. Exile them at the beginning of the next cleanup step.
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/waylay.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/waylay.jpg
|
||||||
Oracle:Put three 2/2 white Knight creature tokens onto the battlefield. Exile them at the beginning of the next cleanup step.
|
Oracle:Put three 2/2 white Knight creature tokens onto the battlefield. Exile them at the beginning of the next cleanup step.
|
||||||
@@ -72,115 +72,6 @@ import forge.util.TextUtil;
|
|||||||
*/
|
*/
|
||||||
public final class GameActionUtil {
|
public final class GameActionUtil {
|
||||||
|
|
||||||
// public static final class CascadeAbility extends Ability {
|
|
||||||
// private final Player controller;
|
|
||||||
// private final Card cascCard;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * TODO: Write javadoc for Constructor.
|
|
||||||
// * @param sourceCard
|
|
||||||
// * @param manaCost
|
|
||||||
// * @param controller
|
|
||||||
// * @param cascCard
|
|
||||||
// */
|
|
||||||
// private CascadeAbility(Card sourceCard, ManaCost manaCost, Player controller, Card cascCard) {
|
|
||||||
// super(sourceCard, manaCost);
|
|
||||||
// this.controller = controller;
|
|
||||||
// this.cascCard = cascCard;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void resolve() {
|
|
||||||
// final Game game =controller.getGame();
|
|
||||||
// final List<Card> topOfLibrary = controller.getCardsIn(ZoneType.Library);
|
|
||||||
// final List<Card> revealed = new ArrayList<Card>();
|
|
||||||
//
|
|
||||||
// if (topOfLibrary.size() == 0) {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Card cascadedCard = null;
|
|
||||||
// Card crd;
|
|
||||||
// int count = 0;
|
|
||||||
// while (cascadedCard == null) {
|
|
||||||
// crd = topOfLibrary.get(count++);
|
|
||||||
// revealed.add(crd);
|
|
||||||
// if ((!crd.isLand() && (crd.getManaCost().getCMC() < cascCard.getManaCost().getCMC()))) {
|
|
||||||
// cascadedCard = crd;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (count == topOfLibrary.size()) {
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// } // while
|
|
||||||
//
|
|
||||||
// game.getAction().reveal("Revealed Cascade Cards:", revealed, ZoneType.Library, controller, false);
|
|
||||||
//
|
|
||||||
// if (cascadedCard != null) {
|
|
||||||
// Player p = cascadedCard.getController();
|
|
||||||
// // returns boolean, but spell resolution stays inside the method anyway (for now)
|
|
||||||
// if ( p.getController().playCascade(cascadedCard, cascCard) )
|
|
||||||
// revealed.remove(cascadedCard);
|
|
||||||
// }
|
|
||||||
// CardLists.shuffle(revealed);
|
|
||||||
// for (final Card bottom : revealed) {
|
|
||||||
// game.getAction().moveToBottomOfLibrary(bottom);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// public static final class CascadeExecutor implements Command {
|
|
||||||
// private final Card c;
|
|
||||||
// private final Game game;
|
|
||||||
// private final Player controller;
|
|
||||||
//
|
|
||||||
// private static final long serialVersionUID = -845154812215847505L;
|
|
||||||
//
|
|
||||||
// /**
|
|
||||||
// * TODO: Write javadoc for Constructor.
|
|
||||||
// * @param controller
|
|
||||||
// * @param c
|
|
||||||
// */
|
|
||||||
// public CascadeExecutor(Player controller, Card c, final Game game) {
|
|
||||||
// this.controller = controller;
|
|
||||||
// this.c = c;
|
|
||||||
// this.game = game;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void run() {
|
|
||||||
// if (!c.isCopiedSpell()) {
|
|
||||||
// final List<Card> maelstromNexii = CardLists.filter(controller.getGame().getCardsIn(ZoneType.Battlefield), CardPredicates.nameEquals("Maelstrom Nexus"));
|
|
||||||
//
|
|
||||||
// for (final Card nexus : maelstromNexii) {
|
|
||||||
// if (CardUtil.getThisTurnCast("Card.YouCtrl", nexus).size() == 1) {
|
|
||||||
// this.doCascade(c, controller);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// for (String keyword : c.getKeyword()) {
|
|
||||||
// if (keyword.equals("Cascade")) {
|
|
||||||
// this.doCascade(c, controller);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// } // execute()
|
|
||||||
//
|
|
||||||
// void doCascade(final Card c, final Player controller) {
|
|
||||||
// final Card cascCard = c;
|
|
||||||
//
|
|
||||||
// final Ability ability = new CascadeAbility(c, ManaCost.ZERO, controller, cascCard);
|
|
||||||
// final StringBuilder sb = new StringBuilder();
|
|
||||||
// sb.append(c).append(" - Cascade.");
|
|
||||||
// ability.setStackDescription(sb.toString());
|
|
||||||
// ability.setActivatingPlayer(controller);
|
|
||||||
//
|
|
||||||
// game.getStack().addSimultaneousStackEntry(ability);
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this type.
|
* TODO: Write javadoc for this type.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class EndOfTurn extends Phase {
|
|||||||
for (final Card c : game.getCardsIn(ZoneType.Battlefield)) {
|
for (final Card c : game.getCardsIn(ZoneType.Battlefield)) {
|
||||||
if (!c.isFaceDown() && c.hasKeyword("At the beginning of the end step, sacrifice CARDNAME.")) {
|
if (!c.isFaceDown() && c.hasKeyword("At the beginning of the end step, sacrifice CARDNAME.")) {
|
||||||
final Card card = c;
|
final Card card = c;
|
||||||
String sb = "At the beginning of the end step, sacrifice CARDNAME.";
|
String sb = "Sacrifice CARDNAME.";
|
||||||
String effect = "AB$ Sacrifice | Cost$ 0 | SacValid$ Self";
|
String effect = "AB$ Sacrifice | Cost$ 0 | SacValid$ Self";
|
||||||
|
|
||||||
SpellAbility ability = AbilityFactory.getAbility(effect, card);
|
SpellAbility ability = AbilityFactory.getAbility(effect, card);
|
||||||
|
|||||||
@@ -95,7 +95,6 @@ public abstract class PlayerController {
|
|||||||
* @param c
|
* @param c
|
||||||
*/
|
*/
|
||||||
//public abstract void playFromSuspend(Card c);
|
//public abstract void playFromSuspend(Card c);
|
||||||
//public abstract boolean playCascade(Card cascadedCard, Card sourceCard);
|
|
||||||
public abstract void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets);
|
public abstract void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets);
|
||||||
public abstract void playSpellAbilityNoStack(SpellAbility effectSA, boolean mayChoseNewTargets);
|
public abstract void playSpellAbilityNoStack(SpellAbility effectSA, boolean mayChoseNewTargets);
|
||||||
|
|
||||||
|
|||||||
@@ -80,15 +80,6 @@ public class PlayerControllerAi extends PlayerController {
|
|||||||
getAi().chooseAndPlaySa(choices, true, true);
|
getAi().chooseAndPlaySa(choices, true, true);
|
||||||
}**/
|
}**/
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.game.player.PlayerController#playCascade(java.util.List, forge.Card)
|
|
||||||
*/
|
|
||||||
/*@Override
|
|
||||||
public boolean playCascade(Card cascadedCard, Card source) {
|
|
||||||
final List<SpellAbility> choices = cascadedCard.getBasicSpells();
|
|
||||||
return null != getAi().chooseAndPlaySa(choices, false, true);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Write javadoc for this method.
|
* TODO: Write javadoc for this method.
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -97,24 +97,6 @@ public class PlayerControllerHuman extends PlayerController {
|
|||||||
HumanPlay.playCardWithoutPayingManaCost(player, c);
|
HumanPlay.playCardWithoutPayingManaCost(player, c);
|
||||||
}**/
|
}**/
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.game.player.PlayerController#playCascade(java.util.List, forge.Card)
|
|
||||||
*/
|
|
||||||
/*@Override
|
|
||||||
public boolean playCascade(Card cascadedCard, Card sourceCard) {
|
|
||||||
|
|
||||||
final StringBuilder title = new StringBuilder();
|
|
||||||
title.append(sourceCard.getName()).append(" - Cascade Ability");
|
|
||||||
final StringBuilder question = new StringBuilder();
|
|
||||||
question.append("Cast ").append(cascadedCard.getName());
|
|
||||||
question.append(" without paying its mana cost?");
|
|
||||||
|
|
||||||
|
|
||||||
boolean result = GuiDialog.confirm(cascadedCard, question.toString());
|
|
||||||
if ( result )
|
|
||||||
HumanPlay.playCardWithoutPayingManaCost(player, cascadedCard);
|
|
||||||
return result;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see forge.game.player.PlayerController#mayPlaySpellAbilityForFree(forge.card.spellability.SpellAbility)
|
* @see forge.game.player.PlayerController#mayPlaySpellAbilityForFree(forge.card.spellability.SpellAbility)
|
||||||
|
|||||||
@@ -483,9 +483,6 @@ public class MagicStack /* extends MyObservable */ implements Iterable<SpellAbil
|
|||||||
if (sp.isSpell() && !sp.isCopied()) {
|
if (sp.isSpell() && !sp.isCopied()) {
|
||||||
this.thisTurnCast.add(sp.getSourceCard());
|
this.thisTurnCast.add(sp.getSourceCard());
|
||||||
|
|
||||||
/*final Game game = sp.getActivatingPlayer().getGame();
|
|
||||||
final Command cascade = new CascadeExecutor(sp.getActivatingPlayer(), sp.getSourceCard(), game);
|
|
||||||
cascade.run();*/
|
|
||||||
final Command ripple = new RippleExecutor(sp.getActivatingPlayer(), sp.getSourceCard());
|
final Command ripple = new RippleExecutor(sp.getActivatingPlayer(), sp.getSourceCard());
|
||||||
ripple.run();
|
ripple.run();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user