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_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
|
||||||
|
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
|
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
|
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
|
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
|
Lorthos, the Tidemaker
|
||||||
5 U U U
|
5 U U U
|
||||||
Legendary Creature Octopus
|
Legendary Creature Octopus
|
||||||
|
|||||||
@@ -7818,6 +7818,66 @@ public class CardFactory implements NewConstants {
|
|||||||
card.clearSpellAbility();
|
card.clearSpellAbility();
|
||||||
card.addSpellAbility(spell);
|
card.addSpellAbility(spell);
|
||||||
}//*************** END ************ END **************************
|
}//*************** 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 **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Volcanic Awakening")) {
|
else if(cardName.equals("Volcanic Awakening")) {
|
||||||
SpellAbility spell = new Spell(card) {
|
SpellAbility spell = new Spell(card) {
|
||||||
|
|||||||
@@ -824,7 +824,7 @@ class CardFactory_Lands {
|
|||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Terramorphic Expanse")) {
|
else if(cardName.equals("Terramorphic Expanse") || cardName.equals("Evolving Wilds")) {
|
||||||
//tap sacrifice
|
//tap sacrifice
|
||||||
final Ability_Tap ability = new Ability_Tap(card, "0") {
|
final Ability_Tap ability = new Ability_Tap(card, "0") {
|
||||||
private static final long serialVersionUID = 5441740362881917927L;
|
private static final long serialVersionUID = 5441740362881917927L;
|
||||||
@@ -931,21 +931,23 @@ class CardFactory_Lands {
|
|||||||
}//showMessage()
|
}//showMessage()
|
||||||
};
|
};
|
||||||
card.addSpellAbility(ability);
|
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);
|
ability.setBeforePayMana(runtime);
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** 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() {
|
final CardListFilter landFilter = new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
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;
|
else return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//tap sacrifice
|
//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;
|
private static final long serialVersionUID = 6865042319287843154L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -957,7 +959,9 @@ class CardFactory_Lands {
|
|||||||
public boolean canPlay() {
|
public boolean canPlay() {
|
||||||
CardList list = AllZoneUtil.getTypeInPlay("Land");
|
CardList list = AllZoneUtil.getTypeInPlay("Land");
|
||||||
list = list.filter(landFilter);
|
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;
|
else return false;
|
||||||
}//canPlay()
|
}//canPlay()
|
||||||
|
|
||||||
@@ -981,7 +985,7 @@ class CardFactory_Lands {
|
|||||||
public void selectCard(Card c, PlayerZone zone) {
|
public void selectCard(Card c, PlayerZone zone) {
|
||||||
if(zone.is(Constant.Zone.Play)) {
|
if(zone.is(Constant.Zone.Play)) {
|
||||||
if((c.isLand() && card.getName().equals("Strip Mine")) ||
|
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
|
card.tap(); //tapping Strip Mine
|
||||||
ability.setTargetCard(c);
|
ability.setTargetCard(c);
|
||||||
AllZone.Stack.add(ability);
|
AllZone.Stack.add(ability);
|
||||||
@@ -992,9 +996,12 @@ class CardFactory_Lands {
|
|||||||
};
|
};
|
||||||
|
|
||||||
card.addSpellAbility(ability);
|
card.addSpellAbility(ability);
|
||||||
ability.setDescription("Tap, Sacrifice " + card.getName() + ": Destroy target "
|
ability.setDescription((card.getName().equals("Tectonic Edge")? "1, ":"")
|
||||||
+ (card.getName().equals("Wasteland")? "nonbasic":"") + " land.");
|
+ "Tap, Sacrifice " + card.getName() + ": Destroy target "
|
||||||
ability.setBeforePayMana(runtime);
|
+ ((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 **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
|
|||||||
Reference in New Issue
Block a user