- Umezawa's Jitte +2/+2 ability shouldn't be targeted anymore.

- Added Chainer, Dementia Master, Vorosh, the Hunter, Rith, the Awakener.
- AEther Web should be castable at any time now (flash).
- AI should be able to use Tezzeret's first ability now.
This commit is contained in:
jendave
2011-08-06 02:57:04 +00:00
parent d84fab6197
commit 006b514e00
9 changed files with 302 additions and 25 deletions

View File

@@ -18,13 +18,16 @@ 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
chainer_dementia_master.jpg http://www.wizards.com/global/images/magic/general/chainer_dementia_master.jpg
vorosh_the_hunter.jpg http://www.wizards.com/global/images/magic/general/vorosh_the_hunter.jpg
rith_the_awakener.jpg http://www.wizards.com/global/images/magic/general/rith_the_awakener.jpg
cantivore.jpg http://www.wizards.com/global/images/magic/general/cantivore.jpg
cognivore.jpg http://www.wizards.com/global/images/magic/general/cognivore.jpg
mortivore.jpg http://www.wizards.com/global/images/magic/general/mortivore.jpg
dimir_cutpurse.jpg http://www.wizards.com/global/images/magic/general/dimir_cutpurse.jpg
molimo_maro_sorcerer.jpg http://www.wizards.com/global/images/magic/general/molimo_maro_sorcerer.jpg
maro.jpg http://www.wizards.com/global/images/magic/general/maro.jpg
multani_maro_sorcerer.jpg http://www.wizards.com/global/images/magic/general/multani_maro_sorcerer.jpg
multani_maro_sorcerer.jpg http://www.wizards.com/global/images/magic/general/multani_maro_morcerer.jpg
meddling_mage.jpg http://www.wizards.com/global/images/magic/general/meddling_mage.jpg
gravelgill_duo.jpg http://www.wizards.com/global/images/magic/general/gravelgill_duo.jpg
safehold_duo.jpg http://www.wizards.com/global/images/magic/general/safehold_duo.jpg

View File

@@ -1,3 +1,23 @@
Chainer, Dementia Master
3 B B
Legendary Creature Human Minion
When Chainer, Dementia Master leaves the battlefield, exile all Nightmares.
3/3
Vorosh, the Hunter
3 G U B
Legendary Creature Dragon
Whenever Vorosh, the Hunter deals combat damage to a player, you may pay 2 G. If you do, put six +1/+1 counters on Vorosh.
6/6
Flying
Rith, the Awakener
3 R G W
Legendary Creature Dragon
Whenever Rith, the Awakener deals combat damage to a player, you may pay 2 G. If you do, choose a color, then put a 1/1 green Saproling creature token onto the battlefield for each permanent of that color.
6/6
Flying
Cantivore
1 W W
Creature Lhurgoyf
@@ -112,44 +132,44 @@ As Meddling Mage enters the battlefield, name a nonland card. The named card can
Shorecrasher Mimic
1 GU
Creature Shapeshifter
Whenever you cast a spell that's both green and blue, Shorecrasher Mimic becomes 5/3 and gains trample until end of turn.
Whenever you cast a spell that<EFBFBD>s both green and blue, Shorecrasher Mimic becomes 5/3 and gains trample until end of turn.
2/1
Woodlurker Mimic
1 BG
Creature Shapeshifter
Whenever you cast a spell that's both black and green, Woodlurker Mimic becomes 4/5 and gains wither until end of turn. (It deals damage to creatures in the form of -1/-1 counters.)
Whenever you cast a spell that<EFBFBD>s both black and green, Woodlurker Mimic becomes 4/5 and gains wither until end of turn. (It deals damage to creatures in the form of -1/-1 counters.)
2/1
Battlegate Mimic
1 RW
Creature Shapeshifter
Whenever you cast a spell that's both red and white, Battlegate Mimic becomes 4/2 and gains first strike until end of turn.
Whenever you cast a spell that<EFBFBD>s both red and white, Battlegate Mimic becomes 4/2 and gains first strike until end of turn.
2/1
Nightsky Mimic
1 WB
Creature Shapeshifter
Whenever you cast a spell that's both white and black, Nightsky Mimic becomes 4/4 and gains flying until end of turn.
Whenever you cast a spell that<EFBFBD>s both white and black, Nightsky Mimic becomes 4/4 and gains flying until end of turn.
2/1
Riverfall Mimic
1 UR
Creature Shapeshifter
Whenever you cast a spell that's both blue and red, Riverfall Mimic becomes 3/3 and is unblockable until end of turn.
Whenever you cast a spell that<EFBFBD>s both blue and red, Riverfall Mimic becomes 3/3 and is unblockable until end of turn.
2/1
Sapling of Colfenor
3 BG BG
Legendary Creature Treefolk Shaman
Whenever Sapling of Colfenor attacks, reveal the top card of your library. If it's a creature card, you gain life equal to that card<72>s toughness, lose life equal to its power, then put it into your hand.
Whenever Sapling of Colfenor attacks, reveal the top card of your library. If it<EFBFBD>s a creature card, you gain life equal to that card<72>s toughness, lose life equal to its power, then put it into your hand.
2/5
Indestructible
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's converted mana cost.
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<EFBFBD>s converted mana cost.
Lurking Informant
1 UB
@@ -5357,7 +5377,7 @@ no text
Trinket Mage
2 U
Creature Human Wizard
Creature Human Mage
When Trinket Mage comes into play, you may search your library for an artifact card with converted mana cost 1 or less, reveal that card, and put it into your hand. If you do, shuffle your library.
2/2
@@ -12901,7 +12921,7 @@ This creature cannot block
Funeral Charm
B
Instant
Choose one -
Choose one - Target player discards a card; or target creature gets +2/-1 until end of turn; or target creature gains swampwalk until end of turn.
Echoing Decay
1 B

View File

@@ -303,7 +303,7 @@
<int>254</int>
<int>349</int>
<int>902</int>
<int>142</int>
<int>138</int>
</object>
</void>
<void property="name">
@@ -322,7 +322,7 @@
<void property="bounds">
<object class="java.awt.Rectangle">
<int>254</int>
<int>491</int>
<int>487</int>
<int>902</int>
<int>10</int>
</object>
@@ -337,9 +337,9 @@
<void property="bounds">
<object class="java.awt.Rectangle">
<int>254</int>
<int>501</int>
<int>497</int>
<int>902</int>
<int>148</int>
<int>152</int>
</object>
</void>
<void property="name">

View File

@@ -2621,6 +2621,13 @@ class CardFactory_Auras {
{
private static final long serialVersionUID = -5744948616351896881L;
//for flash:
public boolean canPlay()
{
return true;
}
public boolean canPlayAI()
{
CardList list = new CardList(AllZone.Computer_Play.getCards());

View File

@@ -10771,12 +10771,14 @@ public class CardFactory_Creatures {
ButtonUtil.disableAll();
}
else if (card.getController().equals(Constant.Player.Computer)) {
Card human = CardFactoryUtil.AI_getBestCreature(hum);
ability.setTargetCard(human);
AllZone.Stack.add(ability);
if (hum.size() > 0 )
{
Card human = CardFactoryUtil.AI_getBestCreature(hum);
ability.setTargetCard(human);
AllZone.Stack.add(ability);
}
}
}
}//execute()
};//Command
card.addComesIntoPlayCommand(intoPlay);
@@ -12107,6 +12109,91 @@ public class CardFactory_Creatures {
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if (cardName.equals("Rith, the Awakener"))
{
final String player = card.getController();
final Ability ability2 = new Ability(card, "2 G")
{
public void resolve()
{
int numberTokens = 0;
if (player.equals("Human"))
{
String choices[] = {"white", "blue" , "black" , "red" , "green"};
Object o = AllZone.Display.getChoiceOptional("Select Color: ", choices);
//System.out.println("Color:" + o);
numberTokens = CardFactoryUtil.getNumberOfPermanentsByColor((String)o);
}
for (int i=0;i<numberTokens;i++)
{
makeToken();
}
}
void makeToken()
{
Card c = new Card();
c.setName("Saproling");
c.setImageName("G 1 1 Saproling");
c.setOwner(card.getController());
c.setController(card.getController());
c.setManaCost("G");
c.setToken(true);
c.addType("Creature");
c.addType("Saproling");
c.setBaseAttack(1);
c.setBaseDefense(1);
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
play.add(c);
}//makeToken()
public boolean canPlay()
{
//this is set to false, since it should only TRIGGER
return false;
}
};// ability2
//card.clearSpellAbility();
card.addSpellAbility(ability2);
ability2.setStackDescription(card.getName() + " - " + player + " puts a 1/1 green Saproling creature token onto the battlefield for each permanent of the chosen color");
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if (cardName.equals("Vorosh, the Hunter"))
{
final Ability ability2 = new Ability(card, "2 G")
{
public void resolve()
{
card.addCounter(Counters.P1P1, 6);
}
public boolean canPlay()
{
//this is set to false, since it should only TRIGGER
return false;
}
};// ability2
//card.clearSpellAbility();
card.addSpellAbility(ability2);
ability2.setStackDescription(card.getName() + " - gets six +1/+1 counters.");
}//*************** END ************ END **************************
//*************** START *********** START **************************
@@ -17845,7 +17932,106 @@ public class CardFactory_Creatures {
return newCard;
}//*************** END ************ END **************************
//*************** START *********** START **************************
else if (cardName.equals("Chainer, Dementia Master"))
{
final Ability ability = new Ability(card, "B B B")
{
public void resolve()
{
AllZone.GameAction.getPlayerLife(card.getController()).subtractLife(3);
PlayerZone hGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Human);
PlayerZone cGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Computer);
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
CardList creatures = new CardList();
creatures.addAll(hGrave.getCards());
creatures.addAll(cGrave.getCards());
creatures = creatures.getType("Creature");
if (creatures.size() > 0 )
{
if (card.getController().equals(Constant.Player.Human))
{
Object o = AllZone.Display.getChoice("Pick creature: " , creatures.toArray());
if (o!=null)
{
Card c = (Card)o;
PlayerZone zone = AllZone.getZone(c);
zone.remove(c);
play.add(c);
card.untap();
c.addExtrinsicKeyword(c.getName() + " is black.");
c.addType("Nightmare");
c.setController(card.getController());
}
}
else
{
Card c = CardFactoryUtil.AI_getBestCreature(creatures);
PlayerZone zone = AllZone.getZone(c);
zone.remove(c);
play.add(c);
card.untap();
}
}
}
public boolean canPlayAI()
{
if(AllZone.Computer_Life.getLife() < 7)
return false;
PlayerZone hGrave= AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Human);
PlayerZone cGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Computer);
CardList creatures = new CardList();
creatures.addAll(hGrave.getCards());
creatures.addAll(cGrave.getCards());
creatures = creatures.getType("Creature");
return creatures.size() > 0;
}
public boolean canPlay()
{
PlayerZone hGrave= AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Human);
PlayerZone cGrave = AllZone.getZone(Constant.Zone.Graveyard, Constant.Player.Computer);
CardList creatures = new CardList();
creatures.addAll(hGrave.getCards());
creatures.addAll(cGrave.getCards());
creatures = creatures.getType("Creature");
return creatures.size() > 0;
}
};
card.addSpellAbility(ability);
final Command leavesPlay = new Command()
{
private static final long serialVersionUID = 3367460511478891560L;
public void execute()
{
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());
list = list.getType("Nightmare");
for (Card c : list)
{
AllZone.GameAction.removeFromGame(c);
}
}
};
card.addLeavesPlayCommand(leavesPlay);
}//*************** END ************ END **************************
// Cards with Cycling abilities
// -1 means keyword "Cycling" not found

View File

@@ -1834,7 +1834,7 @@ class CardFactory_Equipment {
};
target[0] = card.getEquipping().get(0);
if(AllZone.GameAction.isCardInPlay(target[0]) && CardFactoryUtil.canTarget(card, target[0]))
if(AllZone.GameAction.isCardInPlay(target[0]) )
{
target[0].addTempAttackBoost(2);
target[0].addTempDefenseBoost(2);

View File

@@ -2300,7 +2300,7 @@ class CardFactory_Planeswalkers {
}//resolve()
public boolean canPlayAI()
{
return card2.getCounters(Counters.LOYALTY) < 4 && AllZone.Phase.getPhase().equals(Constant.Phase.Main2);
return card2.getCounters(Counters.LOYALTY) <= 6 && AllZone.Phase.getPhase().equals(Constant.Phase.Main2);
}
public boolean canPlay()
{

View File

@@ -849,7 +849,7 @@ public class GameActionUtil
{
SpellAbility sa = AllZone.Stack.pop();
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
AllZone.GameAction.moveToGraveyard(sa.getSourceCard());
}
}; // ability2
@@ -2972,6 +2972,10 @@ public class GameActionUtil
playerCombatDamage_Rootwater_Thief(c);
else if (c.getName().equals("Treva, the Renewer"))
playerCombatDamage_Treva(c);
else if (c.getName().equals("Rith, the Awakener"))
playerCombatDamage_Rith(c);
else if (c.getName().equals("Vorosh, the Hunter"))
playerCombatDamage_Vorosh(c);
/*
if(CardFactoryUtil.hasNumberEquipments(c, "Umezawa's Jitte") == 1)
{
@@ -2985,7 +2989,7 @@ public class GameActionUtil
c.setDealtCombatDmgToOppThisTurn(true);
}
/*
public static void executePlayerCombatDmgOptionalEffects(Card[] c)
{
for (int i=0;i< c.length;i++)
@@ -3011,6 +3015,7 @@ public class GameActionUtil
}//for
}
*/
private static void playerCombatDamage_Oros(Card c)
{
System.out.println("Oros swung unblocked.");
@@ -3019,8 +3024,7 @@ public class GameActionUtil
AllZone.GameAction.playSpellAbility(sa[1]);
else
ComputerUtil.playNoStack(sa[1]);
}
private static void playerCombatDamage_Dimir_Cutpurse(Card c)
@@ -3071,6 +3075,24 @@ public class GameActionUtil
}
private static void playerCombatDamage_Rith(Card c)
{
SpellAbility[] sa = c.getSpellAbility();
if (c.getController().equals(Constant.Player.Human))
AllZone.GameAction.playSpellAbility(sa[1]);
else
ComputerUtil.playNoStack(sa[1]);
}
private static void playerCombatDamage_Vorosh(Card c)
{
SpellAbility[] sa = c.getSpellAbility();
if (c.getController().equals(Constant.Player.Human))
AllZone.GameAction.playSpellAbility(sa[1]);
else
ComputerUtil.playNoStack(sa[1]);
}
private static void playerCombatDamage_Slith(Card c)
{
final int power = c.getNetAttack();
@@ -12969,6 +12991,43 @@ public class GameActionUtil
}// execute()
};// Spidersilk Armor
public static Command Chainer = new Command()
{
private static final long serialVersionUID = -5404417712966524986L;
CardList gloriousAnthemList = new CardList();
public void execute()
{
CardList list = gloriousAnthemList;
Card c;
// reset all cards in list - aka "old" cards
for (int i = 0; i < list.size(); i++)
{
c = list.get(i);
c.addSemiPermanentAttackBoost(-1);
c.addSemiPermanentDefenseBoost(-1);
}
// add +1/+1 to cards
list.clear();
PlayerZone[] zone = getZone("Chainer, Dementia Master");
for (int outer = 0; outer < zone.length; outer++)
{
CardList creature = new CardList(zone[outer].getCards());
creature = creature.getType("Nightmare");
for (int i = 0; i < creature.size(); i++)
{
c = creature.get(i);
c.addSemiPermanentAttackBoost(1);
c.addSemiPermanentDefenseBoost(1);
gloriousAnthemList.add(c);
}// for inner
}// for outer
}// execute()
};//Chainer
public static Command Eldrazi_Monument = new Command()
{
@@ -13442,6 +13501,7 @@ public class GameActionUtil
commands.put("Honor_of_the_Pure", Honor_of_the_Pure);
commands.put("Beastmaster_Ascension", Beastmaster_Ascension);
commands.put("Spidersilk_Armor", Spidersilk_Armor);
commands.put("Chainer", Chainer);
commands.put("Eldrazi_Monument", Eldrazi_Monument);
commands.put("Muraganda_Petroglyphs", Muraganda_Petroglyphs);

View File

@@ -92,6 +92,7 @@ public class StateBasedEffects
cardToEffectsList.put("Honor of the Pure", new String[] {"Honor_of_the_Pure"});
cardToEffectsList.put("Beastmaster Ascension", new String[] {"Beastmaster_Ascension"});
cardToEffectsList.put("Spidersilk Armor", new String[] {"Spidersilk_Armor"});
cardToEffectsList.put("Chainer, Dementia Master", new String[] {"Chainer"});
cardToEffectsList.put("Eldrazi Monument", new String[] {"Eldrazi_Monument"});
cardToEffectsList.put("Muraganda Petroglyphs", new String[] {"Muraganda_Petroglyphs"});
cardToEffectsList.put("Engineered Plague", new String[] {"Engineered_Plague"});