11/01 build - small updates, basically to stay up-to-date with the latest beta.

This commit is contained in:
jendave
2011-08-06 02:45:06 +00:00
parent 8bd5c4a2c4
commit f04ab6733c
8 changed files with 506 additions and 464 deletions

View File

@@ -18,6 +18,18 @@ 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 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 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 forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586
merfolk_looter.jpg http://www.wizards.com/global/images/magic/general/merfolk_looter.jpg
thornscape_apprentice.jpg http://www.wizards.com/global/images/magic/general/thornscape_apprentice.jpg
scepter_of_insight.jpg http://www.wizards.com/global/images/magic/general/scepter_of_insight.jpg
ashas_favor.jpg http://www.wizards.com/global/images/magic/general/ashas_favor.jpg
frontline_sage.jpg http://www.wizards.com/global/images/magic/general/frontline_sage.jpg
blinding_mage.jpg http://www.wizards.com/global/images/magic/general/blinding_mage.jpg
ostiary_thrull.jpg http://www.wizards.com/global/images/magic/general/ostiary_thrull.jpg
whipcorder.jpg http://www.wizards.com/global/images/magic/general/whipcorder.jpg
borrowing_100000_arrows.jpg http://www.wizards.com/global/images/magic/general/borrowing_100000_arrows.jpg
cruel_bargain.jpg http://resources.wizards.com/magic/cards/po/en-us/card4214.jpg
infernal_contract.jpg http://www.wizards.com/global/images/magic/general/infernal_contract.jpg
theft_of_dreams.jpg http://www.wizards.com/global/images/magic/general/theft_of_dreams.jpg
chilling_shade.jpg http://www.wizards.com/global/images/magic/general/chilling_shade.jpg chilling_shade.jpg http://www.wizards.com/global/images/magic/general/chilling_shade.jpg
arctic_flats.jpg http://www.wizards.com/global/images/magic/general/arctic_flats.jpg arctic_flats.jpg http://www.wizards.com/global/images/magic/general/arctic_flats.jpg
boreal_shelf.jpg http://www.wizards.com/global/images/magic/general/boreal_shelf.jpg boreal_shelf.jpg http://www.wizards.com/global/images/magic/general/boreal_shelf.jpg

View File

@@ -1,3 +1,137 @@
Merfolk Looter
1 U
Creature Merfolk Rogue
no text
1/1
Thornscape Apprentice
G
Creature Human Wizard
no text
1/1
TgtKpump R T: First strike
Scepter of Insight
1 U U
Artifact
no text
Asha's favor
2 W
Enchantment Aura
Enchanted creature gains flying, first strike and vigilance.
Enchant creature
Frontline Sage
2 U
Creature Human Wizard
no text
0/1
Exalted
Blinding mage
1 W
Creature Human Wizard
no text
1/2
Ostiary Thrull
3 B
Creature Thrull
no text
2/2
Whipcorder
W W
Creature Human Soldier Rebel
no text
2/2
Morph:W
Borrowing 100,000 Arrows
2 U
Sorcery
no text
spDrawCards:Count$TypeOppCtrlTapped.Creature:Draw a card for each tapped creature target opponent controls.:Borrowing 100,000 Arrows - Draw cards.
Cruel Bargain
B B B
Sorcery
no text
spDrawCards:4:Drawback$LoseLifeYou/Count$YourLifeTotal/HalfUp:Draw four cards.:You lose half your life, rounded up.:Cruel Bargain - Draw cards and lose half your life, rounded up.
Infernal Contract
B B B
Sorcery
no text
spDrawCards:4:Drawback$LoseLifeYou/Count$YourLifeTotal/HalfUp:Draw four cards.:You lose half your life, rounded up.:Infernal Contract - Draw cards and lose half your life, rounded up.
Theft of Dreams
2 U
Sorcery
no text
spDrawCards:Count$TypeOppCtrlTapped.Creature:Draw a card for each tapped creature target opponent controls.:Theft of Dreams - Draw cards.
Night's Whisper
1 B
Sorcery
no text
spDrawCards:2:Drawback$YouLoseLife/2:You draw two cards and you lose 2 life.:Night's Whisper - draw 2 cards and lose 2 life.
Words of Wisdom
1 U
Instant
no text
spDrawCards:2:Drawback$OppDraw/1:You draw two cards, then each other player draws a card.:Words of Wisdom - draw 2 cards and opponent draws 1 card.
Counsel of the Soratami
2 U
Sorcery
no text
spDrawCards:2:Draw two cards.:Counsel of the Soratami - draw 2 cards.
Touch of Brilliance
3 U
Sorcery
no text
spDrawCards:2:Draw two cards.:Touch of Brilliance - draw 2 cards.
Inspiration
3 U
Sorcery
no text
spDrawCards:2:Draw two cards.:Inspiration - draw 2 cards.
Concentrate
2 U U
Sorcery
no text
spDrawCards:3:Draw three cards.:Concentrate - draw 3 cards.
Harmonize
2 G G
Sorcery
no text
spDrawCards:3:Draw three cards.:Harmonize - draw 3 cards.
Ancestral Recall
U
Instant
no text
spDrawCardsTgt:3:Target player draws three cards.:Ancestral Recall - draw 3 cards.
Minions' Murmurs
2 B B
Sorcery
no text
spDrawCards:Count$TypeYouCtrl.Creature:Drawback$YouLoseLife/X:You draw X cards and you lose X life, where X is the number of creatures you control.:Minion's Murmurs - draw cards and lose life.
Brainstorm
U
Instant
no text
spDrawCards:3:Drawback$YouHandToLibrary/2/Top:Draw three cards, then put two cards from your hand on top of your library in any order.:Brainstorm - draw 3 cards and put 2 on top of your library.
Knighthood Knighthood
2 W 2 W
Enchantment Enchantment
@@ -222,7 +356,7 @@ Enchantment Aura
Enchanted creature gets +2/+0 and has flying. Enchanted creature gets +2/+0 and has flying.
Enchant creature Enchant creature
Benalish Hero Benalish Trapper
1 W 1 W
Creature Human Soldier Creature Human Soldier
no text no text
@@ -2522,16 +2656,6 @@ Act of Treason
Sorcery Sorcery
Untap target creature and gain control of it until end of turn. That creature gains haste until end of turn. (It can attack this turn.) Untap target creature and gain control of it until end of turn. That creature gains haste until end of turn. (It can attack this turn.)
Touch of Brilliance
3 U
Sorcery
Draw two cards.
Inspiration
3 U
Sorcery
Draw two cards.
Preemptive Strike Preemptive Strike
1 U 1 U
Instant Instant
@@ -7980,11 +8104,6 @@ Legendary Creature Human Artificer
no text no text
1/2 1/2
Brainstorm
U
Instant
Draw three cards, then put two cards from your hand on top of your library in any order.
Jedit Ojanen of Efrava Jedit Ojanen of Efrava
3 G G G 3 G G G
Legendary Creature Cat Warrior Lord Legendary Creature Cat Warrior Lord
@@ -11275,11 +11394,6 @@ Tendrils of Corruption
Instant Instant
Tendrils of Corruption deals X damage to target creature and you gain X life, where X is the number of Swamps you control. Tendrils of Corruption deals X damage to target creature and you gain X life, where X is the number of Swamps you control.
Minions' Murmurs
2 B B
Sorcery
You draw X cards and you lose X life, where X is the number of creatures you control.
Ichor Slick Ichor Slick
2 B 2 B
Sorcery Sorcery
@@ -11468,11 +11582,6 @@ Pyrohemia
Enchantment Enchantment
At end of turn, if no creatures are in play, sacrifice Pyrohemia. At end of turn, if no creatures are in play, sacrifice Pyrohemia.
Harmonize
2 G G
Sorcery
Draw three cards.
Gaea's Anthem Gaea's Anthem
1 G G 1 G G
Enchantment Enchantment
@@ -11682,11 +11791,6 @@ Creature Whale
no text no text
3/5 3/5
Concentrate
2 U U
Sorcery
Draw three cards.
Impulse Impulse
1 U 1 U
Instant Instant
@@ -12088,11 +12192,6 @@ Infest
Sorcery Sorcery
All creatures get -2/-2 until end of turn. All creatures get -2/-2 until end of turn.
Night's Whisper
1 B
Sorcery
You draw two cards and you lose 2 life.
Do or Die Do or Die
1 B 1 B
Sorcery Sorcery
@@ -12373,11 +12472,6 @@ Remand
Instant Instant
Counter target spell. If that spell is countered this way, put it into its owner's hand instead of into that player's graveyard. Draw a card. Counter target spell. If that spell is countered this way, put it into its owner's hand instead of into that player's graveyard. Draw a card.
Counsel of the Soratami
2 U
Sorcery
Draw two cards.
Counterspell Counterspell
U U U U
Instant Instant
@@ -12393,11 +12487,6 @@ U
Instant Instant
Look at the top card of your library. You may put that card on the bottom of your library. Draw a card. Look at the top card of your library. You may put that card on the bottom of your library. Draw a card.
Words of Wisdom
1 U
Instant
You draw two cards, then each other player draws a card.
Remove Soul Remove Soul
1 U 1 U
Instant Instant
@@ -13170,11 +13259,6 @@ Creature Rat
Relentless Rats gets +1/+1 for each other creature in play named Relentless Rats. A deck can have any number of cards named Relentless Rats. Relentless Rats gets +1/+1 for each other creature in play named Relentless Rats. A deck can have any number of cards named Relentless Rats.
2/2 2/2
Ancestral Recall
U
Instant
Target player draws three cards.
Eternal Witness Eternal Witness
1 G G 1 G G
Creature Human Shaman Creature Human Shaman

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_15" class="java.beans.XMLDecoder"> <java version="1.6.0_11" class="java.beans.XMLDecoder">
<object id="MultiSplitLayout$Split0" class="org.jdesktop.swingx.MultiSplitLayout$Split"> <object id="MultiSplitLayout$Split0" class="org.jdesktop.swingx.MultiSplitLayout$Split">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">

View File

@@ -1928,84 +1928,40 @@ public class CardFactory implements NewConstants {
Tgt[0] = k[0].contains("Tgt"); Tgt[0] = k[0].contains("Tgt");
final int NumCards[] = {-1}; final int NumCards[] = {-1};
final String NumCardsType[] = {"none"}; final String NumCardsX[] = {"none"};
final boolean NumCardsTypeYouCtrl[] = {false};
final boolean NumCardsTypeInPlay[] = {false}; if (k[1].length() <= 2)
final boolean NumCardsTypeInYourYard[] = {false};
final boolean NumCardsTypeInAllYards[] = {false};
final boolean NumCardsDomain[] = {false};
if (k[1].length() == 1)
NumCards[0] = Integer.parseInt(k[1]); NumCards[0] = Integer.parseInt(k[1]);
else else
{ {
if (k[1].startsWith("NumCardsType")) if (k[1].startsWith("Count$"))
{ {
String kk[] = k[1].split("/"); String kk[] = k[1].split("\\$");
NumCardsType[0] = kk[1]; NumCardsX[0] = kk[1];
NumCardsTypeYouCtrl[0] = kk[2].equals("YouCtrl");
NumCardsTypeInPlay[0] = kk[2].equals("InPlay");
NumCardsTypeInYourYard[0] = kk[2].equals("InYourYard");
NumCardsTypeInAllYards[0] = kk[2].equals("InAllYards");
} }
NumCardsDomain[0] = k[1].equals("Domain");
} }
final int NumDiscard[] = {0}; // drawbacks and descriptions
final String UnlessDiscardType[] = {"none"}; final String DrawBack[] = {"none"};
final boolean AtRandom[] = {false}; final String spDesc[] = {"none"};
final String stDesc[] = {"none"};
final int NumLoseLife[] = {0};
final int NumToLibrary[] = {0};
final String LibraryPosition[] = {"none"};
final int NumOppDraw[] = {0};
if (k.length > 2) if (k.length > 2)
{ {
if (k[2].contains("Discard")) if (k[2].contains("Drawback$"))
{ {
String kk[] = k[2].split("/"); String kk[] = k[2].split("\\$");
if (kk[1].equals("X")) DrawBack[0] = kk[1];
NumDiscard[0] = -1; if (k.length > 3)
else spDesc[0] = k[3];
NumDiscard[0] = Integer.parseInt(kk[1]); if (k.length > 4)
stDesc[0] = k[4];
if (kk.length > 2)
{
if (kk[2].equals("UnlessDiscardType"))
UnlessDiscardType[0] = kk[3];
AtRandom[0] = kk[2].equals("AtRandom");
}
} }
else
if (k[2].contains("LoseLife"))
{ {
String kk[] = k[2].split("/"); if (k.length > 2)
if (kk[1].equals("X")) spDesc[0] = k[2];
NumLoseLife[0] = -1; if (k.length > 3)
else stDesc[0] = k[3];
NumLoseLife[0] = Integer.parseInt(kk[1]);
}
if (k[2].contains("NumToLibrary"))
{
String kk[] = k[2].split("/");
if (kk[1].equals("X"))
NumToLibrary[0] = -1;
else
NumToLibrary[0] = Integer.parseInt(kk[1]);
LibraryPosition[0] = kk[2];
}
if (k[2].contains("NumOppDraw"))
{
String kk[] = k[2].split("/");
if (kk[1].equals("X"))
NumOppDraw[0] = -1;
else
NumOppDraw[0] = Integer.parseInt(kk[1]);
} }
} }
@@ -2013,132 +1969,71 @@ public class CardFactory implements NewConstants {
{ {
private static final long serialVersionUID = -7049779241008089696L; private static final long serialVersionUID = -7049779241008089696L;
private int ncards;
public int getNumCards() public int getNumCards()
{ {
if (NumCards[0] != -1) if (NumCards[0] != -1)
return NumCards[0]; return NumCards[0];
int n = 0; if (! NumCardsX[0].equals("none"))
return CardFactoryUtil.xCount(card, NumCardsX[0]);
String cardController = card.getController();
PlayerZone myPlay = AllZone.getZone(Constant.Zone.Play, cardController); return 0;
PlayerZone opPlay = AllZone.getZone(Constant.Zone.Play, AllZone.GameAction.getOpponent(cardController));
PlayerZone myYard = AllZone.getZone(Constant.Zone.Graveyard, cardController);
PlayerZone opYard = AllZone.getZone(Constant.Zone.Graveyard, AllZone.GameAction.getOpponent(cardController));
CardList AllCards = new CardList();
if (! NumCardsType[0].equals("none"))
{
if (NumCardsTypeInYourYard[0] == false)
AllCards.addAll(myYard.getCards());
if (NumCardsTypeInAllYards[0] == false)
{
AllCards.addAll(myYard.getCards());
AllCards.addAll(opYard.getCards());
}
if (NumCardsTypeYouCtrl[0] == true)
AllCards.addAll(myPlay.getCards());
if (NumCardsTypeInPlay[0] == true)
{
AllCards.addAll(myPlay.getCards());
AllCards.addAll(opPlay.getCards());
}
AllCards = AllCards.filter(new CardListFilter()
{
public boolean addCard(Card c)
{
if (c.getType().contains(NumCardsType[0]))
return true;
return false;
}
});
n = AllCards.size();
}
if (NumCardsDomain[0] == true)
{
AllCards.addAll(myPlay.getCards());
String basic[] = {"Forest", "Plains", "Mountain", "Island", "Swamp"};
for(int i = 0; i < basic.length; i++)
if (! AllCards.getType(basic[i]).isEmpty())
n++;
}
if (NumDiscard[0] == -1)
NumDiscard[0] = n;
if (NumLoseLife[0] == -1)
NumLoseLife[0] = n;
if (NumToLibrary[0] == -1)
NumToLibrary[0] = n;
if (NumOppDraw[0] == -1)
NumOppDraw[0] = n;
return n;
} }
public boolean canPlayAI() public boolean canPlayAI()
{ {
int n = getNumCards(); ncards = getNumCards();
int h = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Computer).size(); int h = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Computer).size();
int hl = AllZone.getZone(Constant.Zone.Library, Constant.Player.Human).size();
int cl = AllZone.getZone(Constant.Zone.Library, Constant.Player.Computer).size();
Random r = new Random(); Random r = new Random();
if (((h + n) - (NumDiscard[0] + NumToLibrary[0]) <= 7) if (((hl - ncards) < 2) && Tgt[0])
&& (AllZone.GameAction.getPlayerLife(Constant.Player.Computer).getLife() - NumLoseLife[0]) >= 8
&& (r.nextInt(10) > 4))
{ {
setTargetPlayer(Constant.Player.Computer); setTargetPlayer(Constant.Player.Computer);
return true; return true;
} }
if (((h + ncards) <= 7) && !((cl - ncards) < 1) && (r.nextInt(10) > 4))
{
setTargetPlayer(Constant.Player.Computer);
return true;
}
return false; return false;
} }
public void resolve() public void resolve()
{ {
int n = getNumCards(); ncards = getNumCards();
String TgtPlayer = card.getController(); String TgtPlayer = card.getController();
if (Tgt[0]) if (Tgt[0])
TgtPlayer = getTargetPlayer(); TgtPlayer = getTargetPlayer();
for (int i=0; i < n; i++) for (int i=0; i < ncards; i++)
AllZone.GameAction.drawCard(TgtPlayer); AllZone.GameAction.drawCard(TgtPlayer);
if (NumDiscard[0] > 0) if (! DrawBack[0].equals("none"))
{ CardFactoryUtil.doDrawBack(DrawBack[0], ncards, card.getController(), AllZone.GameAction.getOpponent(card.getController()), TgtPlayer, card, null);
if (!UnlessDiscardType[0].equals("none"))
AllZone.GameAction.discardUnless(TgtPlayer, NumDiscard[0], UnlessDiscardType[0]);
else if (AtRandom[0] == true)
AllZone.GameAction.discardRandom(TgtPlayer, NumDiscard[0]);
else
AllZone.GameAction.discard(TgtPlayer, NumDiscard[0]);
}
if (NumLoseLife[0] > 0)
AllZone.GameAction.getPlayerLife(TgtPlayer).subtractLife(NumLoseLife[0]);
if (NumToLibrary[0] > 0)
AllZone.GameAction.handToLibrary(TgtPlayer, NumToLibrary[0], LibraryPosition[0]);
if (NumOppDraw[0] > 0)
for (int i = 0; i < NumOppDraw[0]; i++)
AllZone.GameAction.drawCard(AllZone.GameAction.getOpponent(TgtPlayer));
} }
}; };
if (Tgt[0]) if (Tgt[0])
spDraw.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spDraw)); spDraw.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spDraw));
spDraw.setDescription(card.getText()); if (! spDesc[0].equals("none"))
card.setText(""); spDraw.setDescription(spDesc[0]);
else
spDraw.setDescription("Draw " + NumCards[0] + " cards.");
if (! stDesc[0].equals("none"))
spDraw.setStackDescription(stDesc[0]);
else
spDraw.setStackDescription("You draw " + NumCards[0] + " cards.");
card.clearSpellAbility(); card.clearSpellAbility();
card.addSpellAbility(spDraw); card.addSpellAbility(spDraw);
}//spDrawCards }//spDrawCards
@@ -4850,34 +4745,6 @@ public class CardFactory implements NewConstants {
//*************** START *********** START **************************
else if(cardName.equals("Night's Whisper"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -8594340516961923197L;
public boolean canPlayAI()
{
return AllZone.Computer_Life.getLife()>2;
}
public void resolve()
{
//draw 2 cards, subtract 2 life
String player = card.getController();
AllZone.GameAction.drawCard(player);
AllZone.GameAction.drawCard(player);
AllZone.GameAction.getPlayerLife(player).subtractLife(2);
}//resolve()
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Infest")) else if(cardName.equals("Infest"))
{ {
@@ -10371,68 +10238,6 @@ public class CardFactory implements NewConstants {
card.addSpellAbility(spell); card.addSpellAbility(spell);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Words of Wisdom"))
{
SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -7394898791285593737L;
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
String opponent = AllZone.GameAction.getOpponent(card.getController());
AllZone.GameAction.drawCard(opponent);
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Counsel of the Soratami") || cardName.equals("Inspiration") || cardName.equals("Touch of Brilliance"))
{
SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -1889094576060845154L;
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Concentrate") || cardName.equals("Harmonize") )
{
SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -3561111468549060269L;
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Amnesia")) else if(cardName.equals("Amnesia"))
{ {
@@ -10535,32 +10340,7 @@ public class CardFactory implements NewConstants {
} }
};//command };//command
card.addDestroyCommand(destroy); card.addDestroyCommand(destroy);
} }//*************** START *********** START **************************
//*************** START *********** START **************************
else if(cardName.equals("Ancestral Recall"))
{
SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 4696857462510589599L;
public void resolve()
{
AllZone.GameAction.drawCard(getTargetPlayer());
AllZone.GameAction.drawCard(getTargetPlayer());
AllZone.GameAction.drawCard(getTargetPlayer());
}
public boolean canPlayAI()
{
return AllZone.Computer_Hand.getCards().length <= 5;
}
};
spell.setChooseTargetAI(CardFactoryUtil.AI_targetComputer());
spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell));
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Deep Analysis")) else if(cardName.equals("Deep Analysis"))
@@ -11616,46 +11396,6 @@ public class CardFactory implements NewConstants {
card.setFlashback(true); card.setFlashback(true);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Minions' Murmurs"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 7270026936498671973L;
public boolean canPlayAI()
{
int n = countCreatures();
return 0 < n && n < AllZone.Computer_Life.getLife();
}//canPlayAI()
public void resolve()
{
int n = countCreatures();
for(int i = 0; i < n; i++)
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(n);
}//resolve()
int countCreatures()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
CardList list = new CardList(play.getCards());
list = list.getType("Creature");
return list.size();
}
};//SpellAbility
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Tendrils of Corruption")) else if(cardName.equals("Tendrils of Corruption"))
{ {
@@ -13818,87 +13558,6 @@ public class CardFactory implements NewConstants {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Brainstorm"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -5722651962081633839L;
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
AllZone.GameAction.drawCard(card.getController());
String player = card.getController();
if(player.equals(Constant.Player.Human))
humanResolve();
else
computerResolve();
}
public void humanResolve()
{
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Human);
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Constant.Player.Human);
CardList putOnTop = new CardList(hand.getCards());
Object o = AllZone.Display.getChoiceOptional("First card to put on top: ", putOnTop.toArray());
if(o != null)
{
Card c1 = (Card)o;
putOnTop.remove(c1);
hand.remove(c1);
lib.add(c1,0);
}
o = AllZone.Display.getChoiceOptional("Second card to put on top: ", putOnTop.toArray());
if(o != null)
{
Card c2 = (Card)o;
putOnTop.remove(c2);
hand.remove(c2);
lib.add(c2,0);
}
}
public void computerResolve()
{
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Computer);
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Constant.Player.Computer);
CardList putOnTop = new CardList(hand.getCards());
Card c1 = putOnTop.get(0);
putOnTop.remove(c1);
hand.remove(c1);
lib.add(c1, 0);
Card c2 = putOnTop.get(0);
putOnTop.remove(c2);
hand.remove(c2);
lib.add(c2, 0);
//TODO: somehow find the least desirable cards at the moment, and put those on top
}
public boolean canPlay()
{
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, card.getController());
if (lib.size() >= 2)
return true;
else
return false;
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Banishing Knack")) else if(cardName.equals("Banishing Knack"))
@@ -16013,7 +15672,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
if (cardName.equals("Ior Ruin Expedition")) if (cardName.equals("Ior Ruin Expedition"))
{ {
final SpellAbility ability = new Ability(card, "0") final SpellAbility ability = new Ability(card, "0")
@@ -16811,6 +16470,26 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
ability.setBeforePayMana(new Input_NoCost_TapAbility(ability)); ability.setBeforePayMana(new Input_NoCost_TapAbility(ability));
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
if(cardName.equals("Scepter of Insight"))
{
final SpellAbility ability = new Ability_Tap(card, "3 U")
{
private static final long serialVersionUID = -3567474686431369541L;
public boolean canPlayAI() {return AllZone.Phase.getPhase().equals(Constant.Phase.Main2);}
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
}
};//SpellAbility
card.addSpellAbility(ability);
ability.setDescription("3 U, tap: Draw a card.");
ability.setStackDescription(card.getName() + " - draw a card.");
}//*************** END ************ END **************************
// Cards with Cycling abilities // Cards with Cycling abilities
// -1 means keyword "Cycling" not found // -1 means keyword "Cycling" not found

View File

@@ -5342,6 +5342,109 @@ class CardFactory_Auras {
spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell)); spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell));
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
if(cardName.equals("Asha's Favor"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = 8803901572203454960L;
public boolean canPlayAI()
{
CardList list = new CardList(AllZone.Computer_Play.getCards());
list = list.getType("Creature");
if(list.isEmpty())
return false;
//else
CardListUtil.sortAttack(list);
CardListUtil.sortFlying(list);
for (int i=0;i<list.size();i++) {
if (CardFactoryUtil.canTarget(card, list.get(i)))
{
setTargetCard(list.get(i));
return true;
}
}
return false;
}//canPlayAI()
public void resolve()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
play.add(card);
Card c = getTargetCard();
if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c) )
{
card.enchantCard(c);
System.out.println("Enchanted: " +getTargetCard());
}
}//resolve()
};//SpellAbility
card.clearSpellAbility();
card.addSpellAbility(spell);
Command onEnchant = new Command()
{
private static final long serialVersionUID = 7126996983975855960L;
public void execute()
{
if (card.isEnchanting())
{
Card crd = card.getEnchanting().get(0);
crd.addExtrinsicKeyword("Flying");
crd.addExtrinsicKeyword("First Strike");
crd.addExtrinsicKeyword("Vigilance");
}
}//execute()
};//Command
Command onUnEnchant = new Command()
{
private static final long serialVersionUID = 6114584155701098976L;
public void execute()
{
if (card.isEnchanting())
{
Card crd = card.getEnchanting().get(0);
crd.removeExtrinsicKeyword("Flying");
crd.removeExtrinsicKeyword("First Strike");
crd.removeExtrinsicKeyword("Vigilance");
}
}//execute()
};//Command
Command onLeavesPlay = new Command()
{
private static final long serialVersionUID = -7360753270796020955L;
public void execute()
{
if (card.isEnchanting())
{
Card crd = card.getEnchanting().get(0);
card.unEnchantCard(crd);
}
}
};
card.addEnchantCommand(onEnchant);
card.addUnEnchantCommand(onUnEnchant);
card.addLeavesPlayCommand(onLeavesPlay);
spell.setBeforePayMana(CardFactoryUtil.input_targetCreature(spell));
}//*************** END ************ END **************************
return card; return card;

View File

@@ -9221,7 +9221,7 @@ public class CardFactory_Creatures {
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Bonded Fetch")) else if(cardName.equals("Bonded Fetch") || cardName.equals("Merfolk Looter"))
{ {
final Ability_Tap ability = new Ability_Tap(card) final Ability_Tap ability = new Ability_Tap(card)
{ {
@@ -9822,7 +9822,8 @@ public class CardFactory_Creatures {
//*************** START *********** START ************************** //*************** START *********** START **************************
if (cardName.equals("Goldmeadow Harrier") || cardName.equals("Loxodon Mystic") if (cardName.equals("Goldmeadow Harrier") || cardName.equals("Loxodon Mystic")
|| cardName.equals("Master Decoy") || cardName.equals("Benalish Hero")) || cardName.equals("Master Decoy") || cardName.equals("Benalish Trapper") || cardName.equals("Whipcorder")
|| cardName.equals("Blinding Mage") || cardName.equals("Ostiary Thrull"))
{ {
final SpellAbility ability = new Ability_Tap(card, "W") final SpellAbility ability = new Ability_Tap(card, "W")
{ {
@@ -12861,6 +12862,77 @@ public class CardFactory_Creatures {
}); });
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
if(cardName.equals("Silver Drake"))
{
final SpellAbility ability = new Ability(card, "0")
{
public void resolve()
{
Card c = getTargetCard();
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, c.getOwner());
if(AllZone.GameAction.isCardInPlay(c))
{
AllZone.getZone(c).remove(c);
if(! c.isToken())
{
Card newCard = AllZone.CardFactory.getCard(c.getName(), c.getOwner());
hand.add(newCard);
}
}
}
};
Command intoPlay = new Command()
{
private static final long serialVersionUID = -8473976122518500976L;
public void execute()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
CardList creatures = new CardList(play.getCards());
creatures = creatures.getType("Creature");
CardList whiteBlue = new CardList();
for(int i=0;i <creatures.size(); i++)
{
//if(!CardUtil.getColors(nonBlackCards.get(i)).contains(Constant.Color.Black))
if (CardUtil.getColors(creatures.get(i)).contains(Constant.Color.White))
{
whiteBlue.add(creatures.get(i));
}
else if (CardUtil.getColors(creatures.get(i)).contains(Constant.Color.Blue))
{
whiteBlue.add(creatures.get(i));
}
}
AllZone.InputControl.setInput(CardFactoryUtil.input_targetSpecific(ability, whiteBlue, "Select a white or blue creature you control.", false));
ButtonUtil.disableAll();
}//execute()
};//Command
card.addComesIntoPlayCommand(intoPlay);
card.clearSpellAbility();
card.addSpellAbility(new Spell_Permanent(card)
{
private static final long serialVersionUID = -5048658151377675270L;
public boolean canPlayAI()
{
return false;
}
});
}//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Fleetfoot Panther") || cardName.equals("Steel Leaf Paladin")) else if(cardName.equals("Fleetfoot Panther") || cardName.equals("Steel Leaf Paladin"))
{ {
@@ -15280,8 +15352,87 @@ public class CardFactory_Creatures {
card.addSpellAbility(ability); card.addSpellAbility(ability);
card.addSpellAbility(ability2); card.addSpellAbility(ability2);
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
if(cardName.equals("Frontline Sage"))
{
final SpellAbility ability = new Ability_Tap(card, "U")
{
private static final long serialVersionUID = 4999015283563842050L;
public boolean canPlayAI() {return false;}
public void resolve()
{
AllZone.GameAction.drawCard(card.getController());
AllZone.InputControl.setInput(CardFactoryUtil.input_discard());
}
};//SpellAbility
card.addSpellAbility(ability);
ability.setDescription("U, tap: Draw a card, then discard a card.");
ability.setStackDescription("Frontline Sage - draw a card, then discard a card.");
}//*************** END ************ END **************************
//*************** START *********** START **************************
if (cardName.equals("Thornscape Apprentice"))
{
final SpellAbility ability = new Ability_Tap(card, "W")
{
private static final long serialVersionUID = 7296467409302755815L;
public void resolve()
{
Card c = getTargetCard();
c.tap();
}
public boolean canPlayAI() {return false;}
};//SpellAbility
card.addSpellAbility(ability);
ability.setDescription("W, tap: Tap target creature.");
ability.setBeforePayMana(CardFactoryUtil.input_targetCreature(ability));
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Covetous Dragon"))
{
SpellAbility spell = new Spell_Permanent(card)
{
private static final long serialVersionUID = -1446713295855849195L;
public boolean canPlayAI()
{
CardList list = new CardList(AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer).getCards());
list = list.getType("Artifact");
return super.canPlay() && list.size() > 0;
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}
//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Tethered Griffin"))
{
SpellAbility spell = new Spell_Permanent(card)
{
private static final long serialVersionUID = -7872917651421012893L;
public boolean canPlayAI()
{
CardList list = new CardList(AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer).getCards());
list = list.getType("Enchantment");
return super.canPlay() && list.size() > 0;
}
};
card.clearSpellAbility();
card.addSpellAbility(spell);
}
//*************** END ************ END **************************
// Cards with Cycling abilities // Cards with Cycling abilities

View File

@@ -8771,13 +8771,11 @@ public class GameActionUtil
brigadiers.addAll(cPlay.getCards()); brigadiers.addAll(cPlay.getCards());
brigadiers = brigadiers.getName("Aven Brigadier"); brigadiers = brigadiers.getName("Aven Brigadier");
return brigadiers.size()-1; return brigadiers.size()-1;
} }
public void execute() public void execute()
{ {
CardList creature = new CardList(); CardList creature = new CardList();
creature.addAll(AllZone.Human_Play.getCards()); creature.addAll(AllZone.Human_Play.getCards());
creature.addAll(AllZone.Computer_Play.getCards()); creature.addAll(AllZone.Computer_Play.getCards());
@@ -8788,8 +8786,13 @@ public class GameActionUtil
{ {
Card c = creature.get(i); Card c = creature.get(i);
otherBrigadiers = countOtherBrigadiers(); otherBrigadiers = countOtherBrigadiers();
c.setOtherAttackBoost(2*otherBrigadiers); int boost = 0;
c.setOtherDefenseBoost(2*otherBrigadiers); if (c.getType().contains("Bird"))
boost++;
if (c.getType().contains("Soldier"))
boost++;
c.setOtherAttackBoost(boost*otherBrigadiers);
c.setOtherDefenseBoost(boost*otherBrigadiers);
}// for inner }// for inner
}// execute() }// execute()
@@ -8851,8 +8854,7 @@ public class GameActionUtil
private int countOtherScions(Card c) private int countOtherScions(Card c)
{ {
PlayerZone play = AllZone.getZone(Constant.Zone.Play, c PlayerZone play = AllZone.getZone(Constant.Zone.Play, c.getController());
.getController());
CardList scions = new CardList(play.getCards()); CardList scions = new CardList(play.getCards());
scions = scions.getName("Scion of Oona"); scions = scions.getName("Scion of Oona");
return scions.size()-1; return scions.size()-1;
@@ -8873,10 +8875,19 @@ public class GameActionUtil
{ {
Card c = creature.get(i); Card c = creature.get(i);
otherScions = countOtherScions(c); otherScions = countOtherScions(c);
c.setOtherAttackBoost(otherScions); if (c.getType().equals("Faerie") || c.getKeyword().contains("Changeling"))
c.setOtherDefenseBoost(otherScions); {
if (!c.getExtrinsicKeyword().contains("Shroud") && otherScions > 0) c.setOtherAttackBoost(otherScions);
c.addExtrinsicKeyword("Shroud"); c.setOtherDefenseBoost(otherScions);
if (!c.getExtrinsicKeyword().contains("Shroud") && otherScions > 0)
c.addExtrinsicKeyword("Shroud");
}
else
{
c.setOtherAttackBoost(0);
c.setOtherDefenseBoost(0);
c.removeExtrinsicKeyword("Shroud");
}
}// for inner }// for inner
}// execute() }// execute()

View File

@@ -48,7 +48,9 @@ import forge.properties.NewConstants.LANG;
* @author Clemens Koza * @author Clemens Koza
*/ */
public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstants.GUI.GuiDeckEditor { public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstants.GUI.GuiDeckEditor {
public static void main(String[] args) { private static final long serialVersionUID = 680850452718332565L;
public static void main(String[] args) {
// JFrame jf = new JFrame(); // JFrame jf = new JFrame();
Gui_DeckEditorNew jf = new Gui_DeckEditorNew(); Gui_DeckEditorNew jf = new Gui_DeckEditorNew();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);