mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Corrected Mind Funeral. Addad Dovescake and Lurking Informant.
This commit is contained in:
@@ -18,6 +18,8 @@ forest.jpg http://resources.wizards.com/magic/cards/unh/en-us/card73946.jpg
|
||||
forest1.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=2748
|
||||
forest2.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=587
|
||||
forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586
|
||||
dovescape.jpg http://www.wizards.com/global/images/magic/general/dovescape.jpg
|
||||
lurking_informant.jpg http://www.wizards.com/global/images/magic/general/lurking_informant.jpg
|
||||
Belligerent_Hatchling.jpg http://www.wizards.com/global/images/magic/general/Belligerent_Hatchling.jpg
|
||||
Noxious_Hatchling.jpg http://www.wizards.com/global/images/magic/general/Noxious_Hatchling.jpg
|
||||
Sturdy_Hatchling.jpg http://www.wizards.com/global/images/magic/general/Sturdy_Hatchling.jpg
|
||||
|
||||
@@ -1,3 +1,14 @@
|
||||
Dovescape
|
||||
3 WU WU WU
|
||||
Enchantment
|
||||
Whenever a player casts a noncreature spell, counter that spell. That player puts X 1/1 white and blue Bird creature tokens with flying onto the battlefield, where X is the spell<6C>s converted mana cost.
|
||||
|
||||
Lurking Informant
|
||||
1 UB
|
||||
Creature Human Rogue
|
||||
no text
|
||||
1/2
|
||||
|
||||
Belligerent Hatchling
|
||||
3 RW
|
||||
Creature Elemental
|
||||
|
||||
@@ -17452,20 +17452,18 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
|
||||
int prev = 0 ;
|
||||
int count = 0;
|
||||
int total =0;
|
||||
int once = 0;
|
||||
|
||||
|
||||
for (int i=0;i<max;i++)
|
||||
{
|
||||
Card c = libList.get(i);
|
||||
if (c.getType().contains("Land"))
|
||||
{
|
||||
if (prev == 1) count= count + 1;
|
||||
else count = 1;
|
||||
prev=1;
|
||||
count= count + 1;
|
||||
if (count == 4 && prev==0) total=i;
|
||||
if (count == 4) prev=1;
|
||||
|
||||
}
|
||||
else prev=0;
|
||||
if (count == 4) once = once +1;
|
||||
if (once == 1 && count == 4) total=i;
|
||||
}
|
||||
|
||||
for (int i=0;i<total+1;i++)
|
||||
|
||||
@@ -16,30 +16,7 @@ public class CardFactory_Creatures {
|
||||
|
||||
public static Card getCard(final Card card, String cardName, String owner, CardFactory cf)
|
||||
{
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Belligerent Hatchling") || cardName.equals("Noxious Hatchling")
|
||||
||cardName.equals("Shrewd Hatchling") ||cardName.equals("Sturdy Hatchling")
|
||||
|| cardName.equals("Voracious Hatchling"))
|
||||
{
|
||||
final SpellAbility ability = new Ability(card, "0")
|
||||
{
|
||||
public void resolve()
|
||||
{
|
||||
card.addCounter(Counters.M1M1, 4);
|
||||
}//resolve()
|
||||
};//SpellAbility
|
||||
Command intoPlay = new Command()
|
||||
{
|
||||
private static final long serialVersionUID = 4757054648163014149L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
AllZone.Stack.add(ability);
|
||||
}
|
||||
};
|
||||
ability.setStackDescription(cardName + "enters the battlefield with four -1/-1 counters on it.");
|
||||
card.addComesIntoPlayCommand(intoPlay);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
if(cardName.equals("Filthy Cur"))
|
||||
@@ -77,7 +54,96 @@ public class CardFactory_Creatures {
|
||||
return newCard;
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Belligerent Hatchling") || cardName.equals("Noxious Hatchling")
|
||||
||cardName.equals("Shrewd Hatchling") ||cardName.equals("Sturdy Hatchling")
|
||||
|| cardName.equals("Voracious Hatchling"))
|
||||
{
|
||||
final SpellAbility ability = new Ability(card, "0")
|
||||
{
|
||||
public void resolve()
|
||||
{
|
||||
card.addCounter(Counters.M1M1, 4);
|
||||
}//resolve()
|
||||
};//SpellAbility
|
||||
Command intoPlay = new Command()
|
||||
{
|
||||
private static final long serialVersionUID = 4757054648163014149L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
AllZone.Stack.add(ability);
|
||||
}
|
||||
};
|
||||
ability.setStackDescription(cardName + "enters the battlefield with four -1/-1 counters on it.");
|
||||
card.addComesIntoPlayCommand(intoPlay);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Lurking Informant"))
|
||||
{
|
||||
final SpellAbility a1 = new Ability_Tap(card, "2")
|
||||
{
|
||||
private static final long serialVersionUID = 1446529067071763245L;
|
||||
public void resolve()
|
||||
{
|
||||
String player = getTargetPlayer();
|
||||
|
||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
||||
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, player);
|
||||
CardList libList = new CardList(lib.getCards());
|
||||
Card c = libList.get(0);
|
||||
String[] choices = {"Yes", "No"};
|
||||
if(card.getController().equals(Constant.Player.Human))
|
||||
{
|
||||
Object o = AllZone.Display.getChoice("Mill " + c.getName() + " ?" , choices);
|
||||
if(o.equals("Yes"))
|
||||
{lib.remove(c);
|
||||
grave.add(c);
|
||||
}
|
||||
}
|
||||
else {
|
||||
CardList landlist = new CardList();
|
||||
landlist.addAll(AllZone.Human_Play.getCards());
|
||||
// i have no better idea how AI could use it then letting draw unneeded lands
|
||||
// this part will be good place to use card values lists or card values deck info
|
||||
if (countLands(card) > 5 && !c.getType().contains("Land"))
|
||||
{
|
||||
lib.remove(c);
|
||||
grave.add(c);
|
||||
}
|
||||
if (countLands(card) <= 5)
|
||||
{
|
||||
lib.remove(c);
|
||||
grave.add(c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private int countLands(Card c)
|
||||
{
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, c
|
||||
.getController());
|
||||
CardList lands = new CardList(play.getCards());
|
||||
lands = lands.getType("Land");
|
||||
return lands.size();
|
||||
}
|
||||
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
String player = getTargetPlayer();
|
||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
||||
CardList libList = new CardList(lib.getCards());
|
||||
return libList.size() > 0;
|
||||
}
|
||||
};//SpellAbility
|
||||
card.addSpellAbility(a1);
|
||||
a1.setDescription("2, tap: Look at the top card of target player's library. You may put that card into that player's graveyard.");
|
||||
a1.setStackDescription("Lurking Informant ability");
|
||||
a1.setBeforePayMana(new Input_PayManaCost(a1));
|
||||
a1.setBeforePayMana(CardFactoryUtil.input_targetPlayer(a1));
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Shinka Gatekeeper"))
|
||||
|
||||
@@ -83,6 +83,7 @@ public class GameActionUtil
|
||||
// card gets played
|
||||
// (called in MagicStack.java)
|
||||
Card c = sa.getSourceCard();
|
||||
playCard_Dovescape(c);
|
||||
playCard_Belligerent_Hatchling(c);
|
||||
playCard_Voracious_Hatchling(c);
|
||||
playCard_Sturdy_Hatchling(c);
|
||||
@@ -102,6 +103,63 @@ public class GameActionUtil
|
||||
playCard_Mold_Adder(c);
|
||||
playCard_Fable_of_Wolf_and_Owl(c);
|
||||
}
|
||||
|
||||
public static void playCard_Dovescape(Card c)
|
||||
{
|
||||
PlayerZone hplay = AllZone.getZone(Constant.Zone.Play,
|
||||
Constant.Player.Human);
|
||||
PlayerZone cplay = AllZone.getZone(Constant.Zone.Play,
|
||||
Constant.Player.Computer);
|
||||
|
||||
CardList list = new CardList();
|
||||
list.addAll(hplay.getCards());
|
||||
list.addAll(cplay.getCards());
|
||||
int cmc = CardUtil.getConvertedManaCost(c.getManaCost());
|
||||
list = list.getName("Dovescape");
|
||||
if ( ! c.getType().contains("Creature") && list.size()>0 ) {
|
||||
|
||||
|
||||
final Card card = list.get(0);
|
||||
|
||||
Ability ability2 = new Ability(card, "0")
|
||||
{
|
||||
public void resolve()
|
||||
{
|
||||
SpellAbility sa = AllZone.Stack.pop();
|
||||
|
||||
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
|
||||
|
||||
}
|
||||
}; // ability2
|
||||
|
||||
ability2.setStackDescription("Dovescape Ability");
|
||||
AllZone.Stack.add(ability2);
|
||||
|
||||
for (int j = 0; j < list.size()*cmc; j++)
|
||||
{
|
||||
Card crd = new Card();
|
||||
String controller = c.getController();
|
||||
crd.setOwner(controller);
|
||||
crd.setController(controller);
|
||||
|
||||
crd.setName("Bird");
|
||||
crd.setImageName("WU 1 1 Bird");
|
||||
crd.setManaCost("WU");
|
||||
crd.setToken(true);
|
||||
|
||||
crd.addType("Creature");
|
||||
crd.addType("Bird");
|
||||
crd.addIntrinsicKeyword("Flying");
|
||||
|
||||
crd.setBaseAttack(1);
|
||||
crd.setBaseDefense(1);
|
||||
|
||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, controller);
|
||||
play.add(crd);
|
||||
}
|
||||
}
|
||||
} // Dovescape
|
||||
|
||||
public static void playCard_Belligerent_Hatchling(Card c)
|
||||
{
|
||||
final String controller = c.getController();
|
||||
|
||||
Reference in New Issue
Block a user