- Fixed Loxodon Hierarch.

- Added Kaervek's Spite and Academy Rector (to complete the Barren Glory combo).
This commit is contained in:
jendave
2011-08-06 02:49:39 +00:00
parent ee7b6c821c
commit 0864c6050f
7 changed files with 216 additions and 21 deletions

View File

@@ -1,3 +1,14 @@
Academy Rector
3 W
Creature Human Cleric
When Academy Rector is put into a graveyard from the battlefield, you may exile it. If you do, search your library for an enchantment card and put that card onto the battlefield. Then shuffle your library.
1/2
Kaervek's Spite
B B B
Instant
As an additional cost to cast Kaervek's Spite, sacrifice all permanents you control and discard your hand. Target player loses 5 life.
Sea Monster Sea Monster
4 U U 4 U U
Creature Serpent Creature Serpent

View File

@@ -219,7 +219,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>0</int> <int>0</int>
<int>926</int> <int>911</int>
<int>827</int> <int>827</int>
</object> </object>
</void> </void>
@@ -230,7 +230,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>0</int> <int>0</int>
<int>926</int> <int>911</int>
<int>163</int> <int>163</int>
</object> </object>
</void> </void>
@@ -251,7 +251,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>163</int> <int>163</int>
<int>926</int> <int>911</int>
<int>10</int> <int>10</int>
</object> </object>
</void> </void>
@@ -266,7 +266,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>173</int> <int>173</int>
<int>926</int> <int>911</int>
<int>166</int> <int>166</int>
</object> </object>
</void> </void>
@@ -287,7 +287,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>339</int> <int>339</int>
<int>926</int> <int>911</int>
<int>10</int> <int>10</int>
</object> </object>
</void> </void>
@@ -302,7 +302,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>349</int> <int>349</int>
<int>926</int> <int>911</int>
<int>140</int> <int>140</int>
</object> </object>
</void> </void>
@@ -323,7 +323,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>489</int> <int>489</int>
<int>926</int> <int>911</int>
<int>10</int> <int>10</int>
</object> </object>
</void> </void>
@@ -338,7 +338,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>499</int> <int>499</int>
<int>926</int> <int>911</int>
<int>150</int> <int>150</int>
</object> </object>
</void> </void>
@@ -359,7 +359,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>649</int> <int>649</int>
<int>926</int> <int>911</int>
<int>10</int> <int>10</int>
</object> </object>
</void> </void>
@@ -374,7 +374,7 @@
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>252</int> <int>252</int>
<int>659</int> <int>659</int>
<int>926</int> <int>911</int>
<int>168</int> <int>168</int>
</object> </object>
</void> </void>
@@ -408,7 +408,7 @@
<object class="org.jdesktop.swingx.MultiSplitLayout$Divider"> <object class="org.jdesktop.swingx.MultiSplitLayout$Divider">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>1178</int> <int>1163</int>
<int>0</int> <int>0</int>
<int>10</int> <int>10</int>
<int>827</int> <int>827</int>
@@ -423,9 +423,9 @@
<object id="MultiSplitLayout$Split3" class="org.jdesktop.swingx.MultiSplitLayout$Split"> <object id="MultiSplitLayout$Split3" class="org.jdesktop.swingx.MultiSplitLayout$Split">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>1188</int> <int>1173</int>
<int>0</int> <int>0</int>
<int>252</int> <int>267</int>
<int>827</int> <int>827</int>
</object> </object>
</void> </void>
@@ -434,9 +434,9 @@
<object class="org.jdesktop.swingx.MultiSplitLayout$Leaf"> <object class="org.jdesktop.swingx.MultiSplitLayout$Leaf">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>1188</int> <int>1173</int>
<int>0</int> <int>0</int>
<int>252</int> <int>267</int>
<int>424</int> <int>424</int>
</object> </object>
</void> </void>
@@ -455,9 +455,9 @@
<object class="org.jdesktop.swingx.MultiSplitLayout$Divider"> <object class="org.jdesktop.swingx.MultiSplitLayout$Divider">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>1188</int> <int>1173</int>
<int>424</int> <int>424</int>
<int>252</int> <int>267</int>
<int>10</int> <int>10</int>
</object> </object>
</void> </void>
@@ -470,9 +470,9 @@
<object class="org.jdesktop.swingx.MultiSplitLayout$Leaf"> <object class="org.jdesktop.swingx.MultiSplitLayout$Leaf">
<void property="bounds"> <void property="bounds">
<object class="java.awt.Rectangle"> <object class="java.awt.Rectangle">
<int>1188</int> <int>1173</int>
<int>434</int> <int>434</int>
<int>252</int> <int>267</int>
<int>393</int> <int>393</int>
</object> </object>
</void> </void>

View File

@@ -1,6 +1,6 @@
program/mail=mtgerror@yahoo.com program/mail=mtgerror@yahoo.com
program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26 program/forum=http://www.slightlymagic.net/forum/viewforum.php?f=26
program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 89 program/version=MTG Forge -- official beta: 09/11/02, SVN revision: 90
tokens--file=AllTokens.txt tokens--file=AllTokens.txt

View File

@@ -16878,6 +16878,87 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START **************************
else if(cardName.equals("Kaervek's Spite"))
{
final SpellAbility spell = new Spell(card)
{
private static final long serialVersionUID = -6259614160639535500L;
public boolean canPlayAI()
{
if(AllZone.Human_Life.getLife() <= 5)
return true;
PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer);
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Constant.Player.Computer);
CardList playList = new CardList(play.getCards());
CardList libList = new CardList(lib.getCards());
playList = playList.getName("Academy Rector");
libList = libList.getName("Barren Glory");
return (AllZone.Human_Life.getLife() <= 5) || (playList.size() == 1 && libList.size() >= 1);
}
public void resolve()
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
PlayerZone hand = AllZone.getZone(Constant.Zone.Play, card.getController());
CardList list = new CardList(play.getCards());
list = list.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return !c.getName().equals("Mana Pool");
}
});
CardList handList = new CardList(hand.getCards());
for (Card c : list)
{
AllZone.GameAction.sacrifice(c);
}
AllZone.GameAction.discardRandom(card.getController(), handList.size());
PlayerLife life = AllZone.GameAction.getPlayerLife(getTargetPlayer());
life.subtractLife(5);
}
};
spell.setChooseTargetAI(CardFactoryUtil.AI_targetHuman());
card.clearSpellAbility();
card.addSpellAbility(spell);
/*
final Command sac = new Command(){
private static final long serialVersionUID = 1643946454479782123L;
public void execute() {
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
PlayerZone hand = AllZone.getZone(Constant.Zone.Play, card.getController());
CardList list = new CardList(play.getCards());
list = list.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return !c.getName().equals("Mana Pool");
}
});
CardList handList = new CardList(hand.getCards());
for (Card c : list)
{
AllZone.GameAction.sacrifice(c);
}
AllZone.GameAction.discardRandom(card.getController(), handList.size());
}
};
*/
spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell));
}//*************** END ************ END **************************
// Cards with Cycling abilities // Cards with Cycling abilities
// -1 means keyword "Cycling" not found // -1 means keyword "Cycling" not found
if (hasKeyword(card, "Cycling") != -1) if (hasKeyword(card, "Cycling") != -1)

View File

@@ -1445,6 +1445,35 @@ public class CardFactoryUtil
return target; return target;
}//input_targetPlayer() }//input_targetPlayer()
public static Input input_targetPlayer(final SpellAbility spell, final Command command)
{
Input target = new Input()
{
private static final long serialVersionUID = 8736682807625129068L;
public void showMessage()
{
AllZone.Display.showMessage("Select target player");
ButtonUtil.enableOnlyCancel();
}
public void selectButtonCancel() {stop();}
public void selectPlayer(String player)
{
command.execute();
spell.setTargetPlayer(player);
if(spell.getManaCost().equals("0"))
{
AllZone.Stack.add(spell);
stop();
}
else
stopSetNext(new Input_PayManaCost(spell));
}
};
return target;
}//input_targetPlayer()
public static CardList AI_getHumanCreature(final Card spell, boolean targeted) public static CardList AI_getHumanCreature(final Card spell, boolean targeted)
{ {
CardList creature = new CardList(AllZone.Human_Play.getCards()); CardList creature = new CardList(AllZone.Human_Play.getCards());

View File

@@ -1420,7 +1420,7 @@ public class CardFactory_Creatures {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
//*************** START *********** START ************************** //*************** START *********** START **************************
else if(cardName.equals("Loxodon Hierarch")) if(cardName.equals("Loxodon Hierarch"))
{ {
final Ability ability = new Ability(card, "G W") final Ability ability = new Ability(card, "G W")
{ {
@@ -16086,6 +16086,74 @@ public class CardFactory_Creatures {
}//*************** END ************ END ************************** }//*************** END ************ END **************************
else if (cardName.equals("Academy Rector"))
{
final Command destroy = new Command()
{
private static final long serialVersionUID = -4352349741511065318L;
public void execute() {
if (card.getController().equals("Human"))
{
String[] choices = { "Yes", "No" };
Object q = null;
q = AllZone.Display.getChoiceOptional("Exile " + card.getName() + "?", choices);
if (q == null || q.equals("No"))
;
else
{
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Constant.Player.Human);
CardList list = new CardList(lib.getCards());
list = list.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return c.isEnchantment();
}
});
if (list.size() > 0)
{
Object o = AllZone.Display.getChoiceOptional("Choose enchantment card to put onto the battlefield", list.toArray());
if (o != null)
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Human);
Card c = (Card)o;
lib.remove(c);
play.add(c);
}
}
AllZone.GameAction.removeFromGame(card);
}
}//if human
else
{
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Constant.Player.Computer);
CardList list = new CardList(lib.getCards());
list = list.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return c.isEnchantment() && !c.isAura();
}
});
if (list.size() > 0)
{
PlayerZone play = AllZone.getZone(Constant.Zone.Play, Constant.Player.Computer);
Card c = CardFactoryUtil.AI_getBestEnchantment(list, card, false);
lib.remove(c);
play.add(c);
AllZone.GameAction.removeFromGame(card);
}
}
}
};
card.addDestroyCommand(destroy);
}
// Cards with Cycling abilities // Cards with Cycling abilities
// -1 means keyword "Cycling" not found // -1 means keyword "Cycling" not found

View File

@@ -3951,6 +3951,12 @@ public class GameActionUtil
CardList list = new CardList(playZone.getCards()); CardList list = new CardList(playZone.getCards());
CardList playList = new CardList(playZone.getCards()); CardList playList = new CardList(playZone.getCards());
playList = playList.filter(new CardListFilter()
{
public boolean addCard(Card c) {
return !c.getName().equals("Mana Pool");
}
});
list = list.getName("Barren Glory"); list = list.getName("Barren Glory");