Added support for creatures with an X mana cost and Apocalypse Hydra with it.

This commit is contained in:
jendave
2011-08-06 04:48:20 +00:00
parent f3a9cc6045
commit 73df8daedc
3 changed files with 124 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ snow_covered_mountain.jpg http://www.wizards.com/global/images/magic/gene
snow_covered_mountain1.jpg http://www.wizards.com/global/images/magic/general/snow_covered_mountain.jpg snow_covered_mountain1.jpg http://www.wizards.com/global/images/magic/general/snow_covered_mountain.jpg
snow_covered_mountain2.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg snow_covered_mountain2.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg
snow_covered_mountain3.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg snow_covered_mountain3.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg
apocalypse_hydra.jpg http://www.wizards.com/global/images/magic/general/apocalypse_hydra.jpg
crossbow_ambush.jpg http://www.wizards.com/global/images/magic/general/crossbow_ambush.jpg crossbow_ambush.jpg http://www.wizards.com/global/images/magic/general/crossbow_ambush.jpg
magnetic_flux.jpg http://www.wizards.com/global/images/magic/general/magnetic_flux.jpg magnetic_flux.jpg http://www.wizards.com/global/images/magic/general/magnetic_flux.jpg
call_to_glory.jpg http://www.wizards.com/global/images/magic/general/call_to_glory.jpg call_to_glory.jpg http://www.wizards.com/global/images/magic/general/call_to_glory.jpg

View File

@@ -1,3 +1,9 @@
Apocalypse Hydra
X G R
Creature Hydra
Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it. 1 R, Remove a +1/+1 counter from Apocalypse Hydra: Apocalypse Hydra deals 1 damage to target creature or player.
0/0
Haze of Rage Haze of Rage
1 R 1 R
Sorcery Sorcery

View File

@@ -14699,6 +14699,112 @@ public class CardFactory_Creatures {
card.addComesIntoPlayCommand(intoPlay); card.addComesIntoPlayCommand(intoPlay);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Apocalypse Hydra")) {
SpellAbility spell = new Spell_Permanent(card) {
private static final long serialVersionUID = -11489323313L;
@Override
public boolean canPlayAI() {
return super.canPlay() && 5 <= ComputerUtil.getAvailableMana().size() - 2;
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
final Ability ability = new Ability(card, "1 R") {
@Override
public boolean canPlay() {
return card.getCounters(Counters.P1P1) > 0 && super.canPlay();
}
@Override
public boolean canPlayAI() {
return getCreature().size() != 0;
}
@Override
public void chooseTargetAI() {
if(AllZone.Human_Life.getLife() < card.getCounters(Counters.P1P1)) setTargetPlayer(Constant.Player.Human);
else {
CardList list = getCreature();
list.shuffle();
setTargetCard(list.get(0));
}
card.subtractCounter(Counters.P1P1, 1);
}//chooseTargetAI()
CardList getCreature() {
//toughness of 1
CardList list = CardFactoryUtil.AI_getHumanCreature(1, card, true);
list = list.filter(new CardListFilter() {
public boolean addCard(Card c) {
return (1 == c.getKillDamage());
}
});
return list;
}//getCreature()
@Override
public void resolve() {
if(getTargetCard() != null) {
if(AllZone.GameAction.isCardInPlay(getTargetCard())
&& CardFactoryUtil.canTarget(card, getTargetCard())) getTargetCard().addDamage(1,
card);
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
}//resolve()
};//SpellAbility
Input target = new Input() {
private static final long serialVersionUID = 4246601245231655L;
@Override
public void showMessage() {
AllZone.Display.showMessage("Select creature or player to target: ");
ButtonUtil.enableOnlyCancel();
}
@Override
public void selectPlayer(String player) {
ability.setTargetPlayer(player);
card.subtractCounter(Counters.P1P1, 1);
AllZone.Stack.add(ability);
stopSetNext(new ComputerAI_StackNotEmpty());
}
@Override
public void selectButtonCancel() {
stop();
}
@Override
public void selectCard(Card c, PlayerZone zone) {
PlayerZone Hplay = AllZone.getZone(Constant.Zone.Play, Constant.Player.Human);
PlayerZone Cplay = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer);
if(AllZone.GameAction.isCardInZone(c, Hplay) || AllZone.GameAction.isCardInZone(c, Cplay)) {
card.subtractCounter(Counters.P1P1, 1);
ability.setTargetCard(c);
AllZone.Stack.add(ability);
stopSetNext(new ComputerAI_StackNotEmpty());
}
}//selectCard()
};//Input
card.addSpellAbility(ability);
ability.setAfterPayMana(target);
Command intoPlay = new Command() {
private static final long serialVersionUID = 255901529244894L;
public void execute() {
int XCounters = card.getXManaCostPaid();
if(XCounters >= 5) XCounters = 2 * XCounters;
card.addCounter(Counters.P1P1, XCounters);
}//execute()
};//Command
card.addComesIntoPlayCommand(intoPlay);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Auramancer")) { else if(cardName.equals("Auramancer")) {
final SpellAbility ability = new Ability(card, "0") { final SpellAbility ability = new Ability(card, "0") {
@@ -19056,6 +19162,17 @@ public class CardFactory_Creatures {
} }
}//level up }//level up
if (card.getManaCost().contains("X"))
{
SpellAbility sa = card.getSpellAbility()[0];
sa.setIsXCost(true);
if (card.getManaCost().startsWith("X X"))
sa.setXManaCost("2");
else if (card.getManaCost().startsWith("X"))
sa.setXManaCost("1");
}//X
return card; return card;
} }
} }