mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
- Converting Mox Diamond to Script
This commit is contained in:
@@ -1,8 +1,13 @@
|
||||
Name:Mox Diamond
|
||||
ManaCost:0
|
||||
Types:Artifact
|
||||
Text:If CARDNAME would enter the battlefield, you may discard a land card instead. If you do, put CARDNAME onto the battlefield. If you don't, put it into its owner's graveyard.
|
||||
Text:no text
|
||||
A:AB$ Mana | Cost$ T | Produced$ Any | SpellDescription$ Add one mana of any color to your mana pool.
|
||||
R:Event$ Moved | Destination$ Battlefield | ValidCard$ Card.Self | ReplaceWith$ PayBeforeETB | Description$ If CARDNAME would enter the battlefield, you may discard a land card instead. If you do, put CARDNAME onto the battlefield. If you don't, put it into its owner's graveyard.
|
||||
SVar:PayBeforeETB:AB$ Discard | Cost$ 0 | DiscardValid$ Card.Land | Mode$ TgtChoose | RememberDiscarded$ True | Optional$ True | SubAbility$ MoveToGraveyard
|
||||
SVar:MoveToGraveyard:DB$ ChangeZone | Origin$ All | Destination$ Graveyard | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ0 | SubAbility$ MoveToBattlefield
|
||||
SVar:MoveToBattlefield:DB$ ChangeZone | Origin$ All | Destination$ Battlefield | Defined$ ReplacedCard | ConditionCheckSVar$ X | ConditionSVarCompare$ EQ1
|
||||
SVar:X:Remembered$Amount
|
||||
SVar:RemAIDeck:True
|
||||
SVar:Rarity:Rare
|
||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/mox_diamond.jpg
|
||||
|
||||
@@ -154,81 +154,6 @@ class CardFactoryArtifacts {
|
||||
|
||||
} // *************** END ************ END **************************
|
||||
|
||||
// *************** START *********** START **************************
|
||||
else if (cardName.equals("Mox Diamond")) {
|
||||
final Input discard = new Input() {
|
||||
private static final long serialVersionUID = -1319202902385425204L;
|
||||
|
||||
@Override
|
||||
public void showMessage() {
|
||||
CMatchUI.SINGLETON_INSTANCE.showMessage("Discard a land card (or select Mox Diamond to sacrifice it)");
|
||||
ButtonUtil.enableOnlyCancel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void selectCard(final Card c, final PlayerZone zone) {
|
||||
if (zone.is(ZoneType.Hand) && c.isLand()) {
|
||||
AllZone.getHumanPlayer().discard(c, null);
|
||||
this.stop();
|
||||
} else if (c.equals(card)) {
|
||||
Singletons.getModel().getGameAction().sacrifice(card, null);
|
||||
this.stop();
|
||||
}
|
||||
}
|
||||
}; // Input
|
||||
|
||||
final SpellAbility ability = new Ability(card, "0") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
if (card.getController().isHuman()) {
|
||||
if (AllZone.getHumanPlayer().getZone(ZoneType.Hand).isEmpty()) {
|
||||
Singletons.getModel().getGameAction().sacrifice(card, null);
|
||||
} else {
|
||||
AllZone.getInputControl().setInput(discard);
|
||||
}
|
||||
} else {
|
||||
List<Card> list = AllZone.getComputerPlayer().getCardsIn(ZoneType.Hand);
|
||||
list = CardListUtil.filter(list, CardPredicates.Presets.LANDS);
|
||||
AllZone.getComputerPlayer().discard(list.get(0), this);
|
||||
} // else
|
||||
} // resolve()
|
||||
}; // SpellAbility
|
||||
final Command intoPlay = new Command() {
|
||||
private static final long serialVersionUID = -7679939432259603542L;
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("If Mox Diamond would enter the battlefield, you may ");
|
||||
sb.append("discard a land card instead. If you do, put Mox Diamond onto the battlefield. ");
|
||||
sb.append("If you don't, put it into its owner's graveyard.");
|
||||
ability.setStackDescription(sb.toString());
|
||||
AllZone.getStack().addSimultaneousStackEntry(ability);
|
||||
|
||||
}
|
||||
};
|
||||
final SpellAbility spell = new SpellPermanent(card) {
|
||||
private static final long serialVersionUID = -1818766848857998431L;
|
||||
|
||||
// could never get the AI to work correctly
|
||||
// it always played the same card 2 or 3 times
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlay() {
|
||||
List<Card> list = card.getController().getCardsIn(ZoneType.Hand);
|
||||
list.remove(card);
|
||||
list = CardListUtil.filter(list, CardPredicates.Presets.LANDS);
|
||||
return (list.size() != 0) && super.canPlay();
|
||||
} // canPlay()
|
||||
};
|
||||
card.addComesIntoPlayCommand(intoPlay);
|
||||
card.clearSpellKeepManaAbility();
|
||||
card.addSpellAbility(spell);
|
||||
} // *************** END ************ END **************************
|
||||
|
||||
// *************** START *********** START **************************
|
||||
else if (cardName.equals("Goblin Charbelcher")) {
|
||||
|
||||
Reference in New Issue
Block a user