mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
- Fixed some bug I introduced by fixing Phyrexian Arena.
- Fixed the way Meloku the Clouded Mirror works (can choose a land to return now - even though it's still done during resolution of the spell), won't be able to play the ability if there are no controlled lands in play.
This commit is contained in:
@@ -5036,8 +5036,6 @@ public class CardFactory implements NewConstants {
|
|||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Ashes to Ashes"))
|
else if(cardName.equals("Ashes to Ashes"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9383,7 +9383,6 @@ public class CardFactory_Creatures {
|
|||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Meloku the Clouded Mirror"))
|
else if(cardName.equals("Meloku the Clouded Mirror"))
|
||||||
{
|
{
|
||||||
@@ -9394,22 +9393,38 @@ public class CardFactory_Creatures {
|
|||||||
CardFactoryUtil.makeToken("Illusion", "U 1 1 Illusion", card, "U", new String[]{"Creature", "Illusion"}, 1, 1, new String[] {"Flying"});
|
CardFactoryUtil.makeToken("Illusion", "U 1 1 Illusion", card, "U", new String[]{"Creature", "Illusion"}, 1, 1, new String[] {"Flying"});
|
||||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
|
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
|
||||||
|
|
||||||
//TODO: the "bounced" land should be chosen by the user
|
CardList land = new CardList(play.getCards());
|
||||||
//instead of "automatically" done for him
|
land = land.filter(new CardListFilter()
|
||||||
CardList island = new CardList(play.getCards());
|
|
||||||
island = island.filter(new CardListFilter()
|
|
||||||
{
|
{
|
||||||
public boolean addCard(Card c)
|
public boolean addCard(Card c)
|
||||||
{
|
{
|
||||||
return c.getType().contains("Land") && c.isTapped();
|
return c.getType().contains("Land");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
|
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
|
||||||
|
|
||||||
if(! island.isEmpty())
|
if(! land.isEmpty()) {
|
||||||
AllZone.GameAction.moveTo(hand, island.get(0));
|
Object o = AllZone.Display.getChoiceOptional("Select target Land", land.toArray());
|
||||||
|
Card l = (Card)o;
|
||||||
|
AllZone.GameAction.moveTo(hand, l);
|
||||||
|
}
|
||||||
|
|
||||||
}//resolve()
|
}//resolve()
|
||||||
|
|
||||||
|
public boolean canPlay()
|
||||||
|
{
|
||||||
|
PlayerZone play = AllZone.getZone(Constant.Zone.Play, card.getController());
|
||||||
|
|
||||||
|
CardList land = new CardList(play.getCards());
|
||||||
|
land = land.filter(new CardListFilter()
|
||||||
|
{
|
||||||
|
public boolean addCard(Card c)
|
||||||
|
{
|
||||||
|
return c.getType().contains("Land");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return land.size() > 0;
|
||||||
|
}
|
||||||
};//SpellAbility
|
};//SpellAbility
|
||||||
card.addSpellAbility(ability);
|
card.addSpellAbility(ability);
|
||||||
ability.setDescription("1, Return a land you control to its owner's hand: Put a 1/1 blue Illusion creature token with flying into play.");
|
ability.setDescription("1, Return a land you control to its owner's hand: Put a 1/1 blue Illusion creature token with flying into play.");
|
||||||
|
|||||||
@@ -4120,15 +4120,7 @@ public class GameActionUtil
|
|||||||
playerCombatDamage_Rith(c);
|
playerCombatDamage_Rith(c);
|
||||||
else if (c.getName().equals("Vorosh, the Hunter"))
|
else if (c.getName().equals("Vorosh, the Hunter"))
|
||||||
playerCombatDamage_Vorosh(c);
|
playerCombatDamage_Vorosh(c);
|
||||||
/*
|
|
||||||
if(CardFactoryUtil.hasNumberEquipments(c, "Umezawa's Jitte") == 1)
|
|
||||||
{
|
|
||||||
PlayerZone play = AllZone.getZone(c);
|
|
||||||
CardList list = new CardList(play.getCards());
|
|
||||||
list = list.getName("Umezawa's Jitte");
|
|
||||||
Card jitte = list.get(0);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if (c.getNetAttack() > 0)
|
if (c.getNetAttack() > 0)
|
||||||
c.setDealtCombatDmgToOppThisTurn(true);
|
c.setDealtCombatDmgToOppThisTurn(true);
|
||||||
|
|
||||||
@@ -5004,7 +4996,6 @@ public class GameActionUtil
|
|||||||
{
|
{
|
||||||
Ability ability = new Ability(list.get(i), "0")
|
Ability ability = new Ability(list.get(i), "0")
|
||||||
{
|
{
|
||||||
|
|
||||||
public void resolve()
|
public void resolve()
|
||||||
{
|
{
|
||||||
PlayerZone graveyard = AllZone.getZone(
|
PlayerZone graveyard = AllZone.getZone(
|
||||||
@@ -5089,7 +5080,6 @@ public class GameActionUtil
|
|||||||
AllZone.Stack.add(ability);
|
AllZone.Stack.add(ability);
|
||||||
}//for
|
}//for
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void upkeep_Scute_Mob()
|
private static void upkeep_Scute_Mob()
|
||||||
@@ -5155,9 +5145,7 @@ public class GameActionUtil
|
|||||||
Card c = fungi.get(j);
|
Card c = fungi.get(j);
|
||||||
c.addCounter(Counters.SPORE, 1);
|
c.addCounter(Counters.SPORE, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};// Ability
|
};// Ability
|
||||||
ability
|
ability
|
||||||
.setStackDescription("Sporesower - put a spore counter on each fungus you control.");
|
.setStackDescription("Sporesower - put a spore counter on each fungus you control.");
|
||||||
@@ -5378,89 +5366,6 @@ public class GameActionUtil
|
|||||||
AllZone.Stack.add(ability);
|
AllZone.Stack.add(ability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
private static void upkeep_Sensation_Gorger()
|
|
||||||
{
|
|
||||||
final String player = AllZone.Phase.getActivePlayer();
|
|
||||||
final String opponent = AllZone.GameAction.getOpponent(player);
|
|
||||||
PlayerZone playZone = AllZone.getZone(Constant.Zone.Play, player);
|
|
||||||
PlayerZone library = AllZone.getZone(Constant.Zone.Library, player);
|
|
||||||
|
|
||||||
CardList list = new CardList(playZone.getCards());
|
|
||||||
list = list.getName("Sensation Gorger");
|
|
||||||
|
|
||||||
Ability ability;
|
|
||||||
for (int i = 0; i < list.size(); i++)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (library.size() <= 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (list.get(i).getController().equals("Human"))
|
|
||||||
{
|
|
||||||
String[] choices = { "Yes", "No" };
|
|
||||||
Object o = AllZone.Display.getChoiceOptional("Use " + list.get(i).getName() + "'s ability this turn?", choices);
|
|
||||||
|
|
||||||
if (o.equals("No"))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// System.out.println("top of deck: " + library.get(i).getName());
|
|
||||||
String creatureType = library.get(i).getType().toString();
|
|
||||||
String cardName = library.get(i).getName();
|
|
||||||
|
|
||||||
ability = new Ability(list.get(i), "0")
|
|
||||||
{
|
|
||||||
public void resolve()
|
|
||||||
{
|
|
||||||
PlayerZone library = AllZone.getZone(Constant.Zone.Library,
|
|
||||||
player);
|
|
||||||
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand,
|
|
||||||
player);
|
|
||||||
|
|
||||||
// PlayerZone oppLibrary =
|
|
||||||
// AllZone.getZone(Constant.Zone.Library, opponent);
|
|
||||||
PlayerZone oppHand = AllZone.getZone(Constant.Zone.Hand,
|
|
||||||
opponent);
|
|
||||||
|
|
||||||
String creatureType = library.get(0).getType().toString();
|
|
||||||
|
|
||||||
if (creatureType.contains("Goblin")
|
|
||||||
|| creatureType.contains("Shaman"))
|
|
||||||
{
|
|
||||||
Card[] c = hand.getCards();
|
|
||||||
for(int q = 0; q < c.length; q++)
|
|
||||||
AllZone.GameAction.discard(c[q]);
|
|
||||||
|
|
||||||
Card[] oc = oppHand.getCards();
|
|
||||||
for(int j = 0; j < oc.length; j++)
|
|
||||||
AllZone.GameAction.discard(oc[j]);
|
|
||||||
|
|
||||||
for(int z = 0; z < 4; z++)
|
|
||||||
{
|
|
||||||
AllZone.GameAction.drawCard(Constant.Player.Computer);
|
|
||||||
AllZone.GameAction.drawCard(Constant.Player.Human);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}// resolve()
|
|
||||||
};// Ability
|
|
||||||
if (creatureType.contains("Goblin")
|
|
||||||
|| creatureType.contains("Shaman"))
|
|
||||||
ability.setStackDescription("Sensation Gorger - " + player
|
|
||||||
+ " reveals: " + cardName
|
|
||||||
+ ", everyone discards their hands and draws 4 cards.");
|
|
||||||
else
|
|
||||||
ability.setStackDescription("Sensation Gorger - " + player
|
|
||||||
+ " reveals top card: " + cardName + ".");
|
|
||||||
|
|
||||||
AllZone.Stack.add(ability);
|
|
||||||
}// for
|
|
||||||
}// upkeep_Sensation_Gorger()
|
|
||||||
*/
|
|
||||||
|
|
||||||
private static void upkeep_Sensation_Gorger()
|
private static void upkeep_Sensation_Gorger()
|
||||||
{
|
{
|
||||||
@@ -7485,8 +7390,9 @@ public class GameActionUtil
|
|||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
AllZone.GameAction.drawCard(player);
|
AllZone.GameAction.drawCard(player);
|
||||||
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
|
AllZone.GameAction.getPlayerLife(player).subtractLife(1);
|
||||||
}
|
|
||||||
AllZone.GameAction.checkStateEffects();
|
AllZone.GameAction.checkStateEffects();
|
||||||
|
}
|
||||||
}// upkeep_Phyrexian_Arena
|
}// upkeep_Phyrexian_Arena
|
||||||
|
|
||||||
private static void upkeep_Honden_of_Seeing_Winds()
|
private static void upkeep_Honden_of_Seeing_Winds()
|
||||||
|
|||||||
Reference in New Issue
Block a user