mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Added Roiling Terrain, Tectonic Edge and Evolving Wilds
This commit is contained in:
@@ -38,6 +38,9 @@ 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_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
|
||||
roiling_terrain.jpg http://www.wizards.com/global/images/magic/general/roiling_terrain.jpg
|
||||
tectonic_edge.jpg http://www.wizards.com/global/images/magic/general/tectonic_edge.jpg
|
||||
evolving_wilds.jpg http://www.wizards.com/global/images/magic/general/evolving_wilds.jpg
|
||||
lorthos_the_tidemaker.jpg http://www.wizards.com/global/images/magic/general/lorthos_the_tidemaker.jpg
|
||||
adarkar_wastes.jpg http://www.wizards.com/global/images/magic/general/adarkar_wastes.jpg
|
||||
brushland.jpg http://www.wizards.com/global/images/magic/general/brushland.jpg
|
||||
|
||||
@@ -1,3 +1,19 @@
|
||||
Roiling Terrain
|
||||
2 R R
|
||||
Sorcery
|
||||
Destroy target land, then Roiling Terrain deals damage to that land's controller equal to the number of land cards in that player's graveyard.
|
||||
|
||||
Tectonic Edge
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
tap: add 1
|
||||
|
||||
Evolving Wilds
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
|
||||
Lorthos, the Tidemaker
|
||||
5 U U U
|
||||
Legendary Creature Octopus
|
||||
|
||||
@@ -7818,6 +7818,66 @@ public class CardFactory implements NewConstants {
|
||||
card.clearSpellAbility();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Roiling Terrain")) {
|
||||
SpellAbility spell = new Spell(card) {
|
||||
|
||||
private static final long serialVersionUID = -65124658746L;
|
||||
|
||||
@Override
|
||||
public void resolve() {
|
||||
if(AllZone.GameAction.isCardInPlay(getTargetCard())
|
||||
&& CardFactoryUtil.canTarget(card, getTargetCard())) {
|
||||
AllZone.GameAction.destroy(getTargetCard());
|
||||
CardList Grave = new CardList(AllZone.getZone(Constant.Zone.Graveyard, getTargetCard().getController()).getCards());
|
||||
int Damage = (Grave.getType("Land")).size();
|
||||
AllZone.GameAction.getPlayerLife(getTargetCard().getController()).subtractLife(Damage);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void chooseTargetAI() {
|
||||
//target basic land that Human only has 1 or 2 in play
|
||||
CardList land = new CardList(AllZone.Human_Play.getCards());
|
||||
land = land.getType("Land");
|
||||
|
||||
Card target = null;
|
||||
|
||||
String[] name = {"Forest", "Swamp", "Plains", "Mountain", "Island"};
|
||||
for(int i = 0; i < name.length; i++)
|
||||
if(land.getName(name[i]).size() == 1) {
|
||||
target = land.getName(name[i]).get(0);
|
||||
break;
|
||||
}
|
||||
|
||||
//see if there are only 2 lands of the same type
|
||||
if(target == null) {
|
||||
for(int i = 0; i < name.length; i++)
|
||||
if(land.getName(name[i]).size() == 2) {
|
||||
target = land.getName(name[i]).get(0);
|
||||
break;
|
||||
}
|
||||
}//if
|
||||
if(target == null) {
|
||||
land.shuffle();
|
||||
target = land.get(0);
|
||||
}
|
||||
setTargetCard(target);
|
||||
}//chooseTargetAI()
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList land = new CardList(AllZone.Human_Play.getCards());
|
||||
land = land.getType("Land");
|
||||
return land.size() != 0;
|
||||
}
|
||||
};//SpellAbility
|
||||
spell.setBeforePayMana(CardFactoryUtil.input_targetType(spell, "Land"));
|
||||
card.clearSpellAbility();
|
||||
card.addSpellAbility(spell);
|
||||
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Volcanic Awakening")) {
|
||||
SpellAbility spell = new Spell(card) {
|
||||
|
||||
@@ -824,7 +824,7 @@ class CardFactory_Lands {
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Terramorphic Expanse")) {
|
||||
else if(cardName.equals("Terramorphic Expanse") || cardName.equals("Evolving Wilds")) {
|
||||
//tap sacrifice
|
||||
final Ability_Tap ability = new Ability_Tap(card, "0") {
|
||||
private static final long serialVersionUID = 5441740362881917927L;
|
||||
@@ -931,21 +931,23 @@ class CardFactory_Lands {
|
||||
}//showMessage()
|
||||
};
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("tap, Sacrifice Terramorphic Expanse: Search your library for a basic land card and put it into play tapped. Then shuffle your library.");
|
||||
ability.setDescription("tap, Sacrifice " + card.getName() + ": Search your library for a basic land card and put it into play tapped. Then shuffle your library.");
|
||||
ability.setBeforePayMana(runtime);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Wasteland") || cardName.equals("Strip Mine")) {
|
||||
else if(cardName.equals("Wasteland") || cardName.equals("Strip Mine") || cardName.equals("Tectonic Edge")) {
|
||||
|
||||
final CardListFilter landFilter = new CardListFilter() {
|
||||
public boolean addCard(Card c) {
|
||||
if(card.getName().equals("Wasteland")) return !c.getType().contains("Basic");
|
||||
if(card.getName().equals("Wasteland") || card.getName().equals("Tectonic Edge")) return !c.getType().contains("Basic");
|
||||
else return true;
|
||||
}
|
||||
};
|
||||
//tap sacrifice
|
||||
final Ability_Tap ability = new Ability_Tap(card, "0") {
|
||||
String cost = "0";
|
||||
if(cardName.equals("Tectonic Edge")) cost = "1";
|
||||
final Ability_Tap ability = new Ability_Tap(card, cost) {
|
||||
private static final long serialVersionUID = 6865042319287843154L;
|
||||
|
||||
@Override
|
||||
@@ -957,7 +959,9 @@ class CardFactory_Lands {
|
||||
public boolean canPlay() {
|
||||
CardList list = AllZoneUtil.getTypeInPlay("Land");
|
||||
list = list.filter(landFilter);
|
||||
if(super.canPlay() && list.size() > 0 && AllZone.GameAction.isCardInPlay(card)) return true;
|
||||
CardList Tectonic_EdgeList = AllZoneUtil.getPlayerLandsInPlay(AllZone.GameAction.getOpponent(card.getController()));
|
||||
if(card.getName().equals("Tectonic Edge") && Tectonic_EdgeList.size() < 4) return false;
|
||||
if(super.canPlay() && list.size() > 0 && AllZone.GameAction.isCardInPlay(card)) return true;
|
||||
else return false;
|
||||
}//canPlay()
|
||||
|
||||
@@ -981,7 +985,7 @@ class CardFactory_Lands {
|
||||
public void selectCard(Card c, PlayerZone zone) {
|
||||
if(zone.is(Constant.Zone.Play)) {
|
||||
if((c.isLand() && card.getName().equals("Strip Mine")) ||
|
||||
(!c.isBasicLand() && card.getName().equals("Wasteland"))) {
|
||||
(!c.isBasicLand() && (card.getName().equals("Wasteland") || card.getName().equals("Tectonic Edge")))) {
|
||||
card.tap(); //tapping Strip Mine
|
||||
ability.setTargetCard(c);
|
||||
AllZone.Stack.add(ability);
|
||||
@@ -992,9 +996,12 @@ class CardFactory_Lands {
|
||||
};
|
||||
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("Tap, Sacrifice " + card.getName() + ": Destroy target "
|
||||
+ (card.getName().equals("Wasteland")? "nonbasic":"") + " land.");
|
||||
ability.setBeforePayMana(runtime);
|
||||
ability.setDescription((card.getName().equals("Tectonic Edge")? "1, ":"")
|
||||
+ "Tap, Sacrifice " + card.getName() + ": Destroy target "
|
||||
+ ((card.getName().equals("Wasteland") || (card.getName().equals("Tectonic Edge")))? "nonbasic":"") + " land."
|
||||
+ (card.getName().equals("Tectonic Edge")? " Activate this ability only if an opponent controls four or more lands.":""));
|
||||
if(cardName.equals("Tectonic Edge")) ability.setAfterPayMana(runtime);
|
||||
else ability.setBeforePayMana(runtime);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
|
||||
Reference in New Issue
Block a user