mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
-Added remaining ability cost reducers
-Added Elixir of Immortality and fixed Feldon's Cane description -Added Sprouting Phytohydra
This commit is contained in:
5
.gitattributes
vendored
5
.gitattributes
vendored
@@ -1340,6 +1340,7 @@ res/cardsfolder/elfhame_palace.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/elite_archers.txt -text svneol=native#text/plain
|
res/cardsfolder/elite_archers.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/elite_cat_warrior.txt -text svneol=native#text/plain
|
res/cardsfolder/elite_cat_warrior.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/elite_vanguard.txt -text svneol=native#text/plain
|
res/cardsfolder/elite_vanguard.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/elixir_of_immortality.txt svneol=native#text/plain
|
||||||
res/cardsfolder/elixir_of_vitality.txt -text svneol=native#text/plain
|
res/cardsfolder/elixir_of_vitality.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/elspeth_knight_errant.txt -text svneol=native#text/plain
|
res/cardsfolder/elspeth_knight_errant.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/elspeth_tirel.txt -text svneol=native#text/plain
|
res/cardsfolder/elspeth_tirel.txt -text svneol=native#text/plain
|
||||||
@@ -1647,6 +1648,7 @@ res/cardsfolder/flowstone_surge.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/flowstone_thopter.txt -text svneol=native#text/plain
|
res/cardsfolder/flowstone_thopter.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/flowstone_wall.txt -text svneol=native#text/plain
|
res/cardsfolder/flowstone_wall.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/flowstone_wyvern.txt -text svneol=native#text/plain
|
res/cardsfolder/flowstone_wyvern.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/fluctuator.txt svneol=native#text/plain
|
||||||
res/cardsfolder/flying_carpet.txt -text svneol=native#text/plain
|
res/cardsfolder/flying_carpet.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/flying_men.txt -text svneol=native#text/plain
|
res/cardsfolder/flying_men.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/fodder_cannon.txt -text svneol=native#text/plain
|
res/cardsfolder/fodder_cannon.txt -text svneol=native#text/plain
|
||||||
@@ -2063,6 +2065,7 @@ res/cardsfolder/heart_sliver.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/heart_warden.txt -text svneol=native#text/plain
|
res/cardsfolder/heart_warden.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/hearthfire_hobgoblin.txt -text svneol=native#text/plain
|
res/cardsfolder/hearthfire_hobgoblin.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/heartmender.txt -text svneol=native#text/plain
|
res/cardsfolder/heartmender.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/heartstone.txt svneol=native#text/plain
|
||||||
res/cardsfolder/heartwood_dryad.txt -text svneol=native#text/plain
|
res/cardsfolder/heartwood_dryad.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/heartwood_shard.txt -text svneol=native#text/plain
|
res/cardsfolder/heartwood_shard.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/heartwood_treefolk.txt -text svneol=native#text/plain
|
res/cardsfolder/heartwood_treefolk.txt -text svneol=native#text/plain
|
||||||
@@ -3372,6 +3375,7 @@ res/cardsfolder/pongify.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/porphyry_nodes.txt -text svneol=native#text/plain
|
res/cardsfolder/porphyry_nodes.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/pouncing_jaguar.txt -text svneol=native#text/plain
|
res/cardsfolder/pouncing_jaguar.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/power_armor.txt -text svneol=native#text/plain
|
res/cardsfolder/power_armor.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/power_artifact.txt svneol=native#text/plain
|
||||||
res/cardsfolder/power_matrix.txt -text svneol=native#text/plain
|
res/cardsfolder/power_matrix.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/power_surge.txt -text svneol=native#text/plain
|
res/cardsfolder/power_surge.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/pradesh_gypsies.txt -text svneol=native#text/plain
|
res/cardsfolder/pradesh_gypsies.txt -text svneol=native#text/plain
|
||||||
@@ -4254,6 +4258,7 @@ res/cardsfolder/springing_tiger.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/springjack_shepherd.txt -text svneol=native#text/plain
|
res/cardsfolder/springjack_shepherd.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/sprout.txt -text svneol=native#text/plain
|
res/cardsfolder/sprout.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/sprout_swarm.txt -text svneol=native#text/plain
|
res/cardsfolder/sprout_swarm.txt -text svneol=native#text/plain
|
||||||
|
res/cardsfolder/sprouting_phytohydra.txt svneol=native#text/plain
|
||||||
res/cardsfolder/sprouting_thrinax.txt -text svneol=native#text/plain
|
res/cardsfolder/sprouting_thrinax.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/sprouting_vines.txt -text svneol=native#text/plain
|
res/cardsfolder/sprouting_vines.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/spur_grappler.txt -text svneol=native#text/plain
|
res/cardsfolder/spur_grappler.txt -text svneol=native#text/plain
|
||||||
|
|||||||
7
res/cardsfolder/elixir_of_immortality.txt
Normal file
7
res/cardsfolder/elixir_of_immortality.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Name:Elixir of Immortality
|
||||||
|
ManaCost:1
|
||||||
|
Types:Artifact
|
||||||
|
Text:no text
|
||||||
|
SVar:Rarity:Uncommon
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/elixir_of_immortality.jpg
|
||||||
|
End
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
Name:Feldon's Cane
|
Name:Feldon's Cane
|
||||||
ManaCost:1
|
ManaCost:1
|
||||||
Types:Artifact
|
Types:Artifact
|
||||||
Text:tap, Exile Feldon's Cane: Shuffle your graveyard into your library.
|
Text:no text
|
||||||
SVar:RemAIDeck:True
|
SVar:RemAIDeck:True
|
||||||
SVar:Rarity:Uncommon
|
SVar:Rarity:Uncommon
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/feldons_cane.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/feldons_cane.jpg
|
||||||
|
|||||||
8
res/cardsfolder/fluctuator.txt
Normal file
8
res/cardsfolder/fluctuator.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Fluctuator
|
||||||
|
ManaCost:2
|
||||||
|
Types:Artifact
|
||||||
|
Text:Cycling abilities you activate cost you up to 2 less to activate.
|
||||||
|
K:CostChange:Player:Less:2:Ability_Cycling:All:All:TargetInHand
|
||||||
|
SVar:Rarity:Rare
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/training_grounds.jpg
|
||||||
|
End
|
||||||
8
res/cardsfolder/heartstone.txt
Normal file
8
res/cardsfolder/heartstone.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Name:Heartstone
|
||||||
|
ManaCost:3
|
||||||
|
Types:Artifact
|
||||||
|
Text:Activated abilities of creatures you control cost 1 less to activate. This effect can't reduce the amount of mana an ability costs to activate to less than one mana.
|
||||||
|
K:CostChange:Player:Less:1:Ability:All:Creature:TargetInPlay
|
||||||
|
SVar:Rarity:Rare
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/heartstone.jpg
|
||||||
|
End
|
||||||
9
res/cardsfolder/power_artifact.txt
Normal file
9
res/cardsfolder/power_artifact.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Power Artifact
|
||||||
|
ManaCost:U U
|
||||||
|
Types:Enchantment Aura
|
||||||
|
Text:Enchanted artifact's activated abilities cost 2 less to activate. This effect can't reduce the amount of mana an ability costs to activate to less than one mana.
|
||||||
|
K:CostChange:Player:Less:2:Enchanted:All:Artifact:TargetInPlay
|
||||||
|
K:Enchant Artifact
|
||||||
|
SVar:Rarity:Rare
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/power_artifact.jpg
|
||||||
|
End
|
||||||
9
res/cardsfolder/sprouting_phytohydra.txt
Normal file
9
res/cardsfolder/sprouting_phytohydra.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
Name:Sprouting Phytohydra
|
||||||
|
ManaCost:4 G
|
||||||
|
Types:Creature Plant Hydra
|
||||||
|
Text:Whenever Sprouting Phytohydra is dealt damage, you may put a token that's a copy of Sprouting Phytohydra onto the battlefield.
|
||||||
|
PT:0/2
|
||||||
|
K:Defender
|
||||||
|
SVar:Rarity:Rare
|
||||||
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/sprouting_phytohydra.jpg
|
||||||
|
End
|
||||||
@@ -6659,7 +6659,11 @@ public class CardFactory implements NewConstants {
|
|||||||
list = list.getType("Creature");
|
list = list.getType("Creature");
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
for(int i = 0; i < list.size(); i++) {
|
||||||
if(CardFactoryUtil.canDamage(card, list.get(i))) list.get(i).addDamage(1, card);
|
if(CardFactoryUtil.canDamage(card, list.get(i))){
|
||||||
|
HashMap<Card, Integer> m = new HashMap<Card, Integer>();
|
||||||
|
m.put(card, 1);
|
||||||
|
list.get(i).addDamage(m);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AllZone.HumanPlayer.addDamage(1, card);
|
AllZone.HumanPlayer.addDamage(1, card);
|
||||||
@@ -10489,7 +10493,45 @@ public class CardFactory implements NewConstants {
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(cardName).append(" - Player shuffles grave into library.");
|
sb.append(cardName).append(" - Player shuffles grave into library.");
|
||||||
ability.setStackDescription(sb.toString());
|
ability.setStackDescription(sb.toString());
|
||||||
|
ability.setDescription("tap, Exile CARDNAME: Shuffle your graveyard into your library.");
|
||||||
|
card.addSpellAbility(ability);
|
||||||
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
//*************** START *********** START **************************
|
||||||
|
else if(cardName.equals("Elixir of Immortality")) {
|
||||||
|
/*
|
||||||
|
* 2, Tap: You gain 5 life. Shuffle Elixir of Immortality and your graveyard into your library.
|
||||||
|
*/
|
||||||
|
final Ability_Tap ability = new Ability_Tap(card, "2") {
|
||||||
|
private static final long serialVersionUID = -1299603105585632846L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resolve() {
|
||||||
|
final Player player = card.getController();
|
||||||
|
CardList grave = AllZoneUtil.getPlayerGraveyard(player);
|
||||||
|
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
||||||
|
AllZone.GameAction.moveToLibrary(card);
|
||||||
|
|
||||||
|
for(Card c:grave) {
|
||||||
|
lib.add(c);
|
||||||
|
}
|
||||||
|
AllZone.getZone(Constant.Zone.Graveyard, player).reset();
|
||||||
|
player.shuffle();
|
||||||
|
player.gainLife(5, card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlayAI() {
|
||||||
|
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, AllZone.ComputerPlayer);
|
||||||
|
return lib.size() < 5 || AllZone.ComputerPlayer.getLife() < 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
};//SpellAbility
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append(cardName).append(" - Player shuffles grave into library.");
|
||||||
|
ability.setStackDescription(sb.toString());
|
||||||
|
ability.setDescription("2, Tap: You gain 5 life. Shuffle Elixir of Immortality and your graveyard into your library.");
|
||||||
card.addSpellAbility(ability);
|
card.addSpellAbility(ability);
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|||||||
@@ -1636,8 +1636,9 @@ public class CardFactoryUtil {
|
|||||||
sourceCard.cycle();
|
sourceCard.cycle();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
cycle.setIsCycling(true);
|
||||||
StringBuilder sbDesc = new StringBuilder();
|
StringBuilder sbDesc = new StringBuilder();
|
||||||
sbDesc.append("Cycling (").append(abCost.toString()).append(" Draw a card.)");
|
sbDesc.append("Cycling ").append(cycle.getManaCost()).append(" (").append(abCost.toString()).append(" Draw a card.)");
|
||||||
cycle.setDescription(sbDesc.toString());
|
cycle.setDescription(sbDesc.toString());
|
||||||
|
|
||||||
StringBuilder sbStack = new StringBuilder();
|
StringBuilder sbStack = new StringBuilder();
|
||||||
@@ -1711,6 +1712,7 @@ public class CardFactoryUtil {
|
|||||||
if(type.contains("Basic")) description = "basic land";
|
if(type.contains("Basic")) description = "basic land";
|
||||||
else description = type;
|
else description = type;
|
||||||
|
|
||||||
|
cycle.setIsCycling(true);
|
||||||
StringBuilder sbDesc = new StringBuilder();
|
StringBuilder sbDesc = new StringBuilder();
|
||||||
sbDesc.append(description).append("cycling (").append(abCost.toString()).append(" Search your library for a ");
|
sbDesc.append(description).append("cycling (").append(abCost.toString()).append(" Search your library for a ");
|
||||||
sbDesc.append(description).append(" card, reveal it, and put it into your hand. Then shuffle your library.");
|
sbDesc.append(description).append(" card, reveal it, and put it into your hand. Then shuffle your library.");
|
||||||
|
|||||||
@@ -17363,6 +17363,60 @@ public class CardFactory_Creatures {
|
|||||||
return newCard;
|
return newCard;
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
//*************** START *********** START **************************
|
||||||
|
else if(cardName.equals("Sprouting Phytohydra")) {
|
||||||
|
final Card newCard = new Card() {
|
||||||
|
@Override
|
||||||
|
public void addDamage(HashMap<Card, Integer> map) {
|
||||||
|
final HashMap<Card, Integer> m = map;
|
||||||
|
final Ability ability = new Ability(card, "0") {
|
||||||
|
@Override
|
||||||
|
public void resolve() {
|
||||||
|
if(getController().isHuman() &&
|
||||||
|
AllZone.Display.getChoice("Copy " + getSourceCard(),
|
||||||
|
new String[] {"Yes", "No"}).equals("No"))
|
||||||
|
return;//*
|
||||||
|
PlayerZone play = AllZone.getZone(Constant.Zone.Play, getSourceCard().getController());
|
||||||
|
CardList DoublingSeasons = new CardList(play.getCards());
|
||||||
|
DoublingSeasons = DoublingSeasons.getName("Doubling Season");
|
||||||
|
PlayerZone_ComesIntoPlay.SimultaneousEntry = true;
|
||||||
|
double Count = DoublingSeasons.size();
|
||||||
|
Count = Math.pow(2,Count);
|
||||||
|
for(int i = 0; i < Count; i++) {
|
||||||
|
if(i + 1== Count) PlayerZone_ComesIntoPlay.SimultaneousEntry = false;
|
||||||
|
Card Copy = AllZone.CardFactory.copyCardintoNew(getSourceCard());
|
||||||
|
Copy.setToken(true);
|
||||||
|
Copy.setController(getSourceCard().getController());
|
||||||
|
play.add(Copy);
|
||||||
|
}// */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
ability.setStackDescription(toString() + " - you may put a token that's a copy of " + getName() + " onto the battlefield.");
|
||||||
|
AllZone.Stack.add(ability);
|
||||||
|
|
||||||
|
for(Entry<Card, Integer> entry : m.entrySet()) {
|
||||||
|
this.addDamage(entry.getValue(), entry.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
newCard.setOwner(card.getOwner());
|
||||||
|
newCard.setController(card.getController());
|
||||||
|
|
||||||
|
newCard.setManaCost(card.getManaCost());
|
||||||
|
newCard.setName(card.getName());
|
||||||
|
newCard.setType(card.getType());
|
||||||
|
newCard.setText(card.getSpellText());
|
||||||
|
newCard.setBaseAttack(card.getBaseAttack());
|
||||||
|
newCard.setBaseDefense(card.getBaseDefense());
|
||||||
|
|
||||||
|
newCard.addSpellAbility(new Spell_Permanent(newCard));
|
||||||
|
|
||||||
|
newCard.setSVars(card.getSVars());
|
||||||
|
|
||||||
|
return newCard;
|
||||||
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if(cardName.equals("Thoughtcutter Agent")) {
|
else if(cardName.equals("Thoughtcutter Agent")) {
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ public class Cost_Payment {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!payMana && !cost.hasNoManaCost()){ // pay mana here
|
if (!payMana /*&& !cost.hasNoManaCost()*/){ // pay mana here
|
||||||
changeInput.stopSetNext(new Input_PayCostMana(this));
|
changeInput.stopSetNext(new Input_PayCostMana(this));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2886,7 +2886,8 @@ public class GameAction {
|
|||||||
Cards_In_Play.add(originalCard);
|
Cards_In_Play.add(originalCard);
|
||||||
String Mana = manaCost.toString();
|
String Mana = manaCost.toString();
|
||||||
CardList Player_Play = new CardList(AllZone.getZone(Constant.Zone.Play, sa.getSourceCard().getController()).getCards());
|
CardList Player_Play = new CardList(AllZone.getZone(Constant.Zone.Play, sa.getSourceCard().getController()).getCards());
|
||||||
int XBonus = 0;
|
CardList Player_Hand = new CardList(AllZone.getZone(Constant.Zone.Hand, sa.getSourceCard().getController()).getCards());
|
||||||
|
int XBonus = 0;
|
||||||
int Max = 25;
|
int Max = 25;
|
||||||
if(sa.isXCost() && !sa.getSourceCard().isCopiedSpell()) sa.getSourceCard().setXManaCostPaid(0);
|
if(sa.isXCost() && !sa.getSourceCard().isCopiedSpell()) sa.getSourceCard().setXManaCostPaid(0);
|
||||||
if(sa.isMultiKicker()) CostCutting_GetMultiMickerManaCostPaid_Colored = "";
|
if(sa.isMultiKicker()) CostCutting_GetMultiMickerManaCostPaid_Colored = "";
|
||||||
@@ -2948,7 +2949,8 @@ public class GameAction {
|
|||||||
if((k[1].equals("Player") && card.getController().equals(sa.getSourceCard().getController())
|
if((k[1].equals("Player") && card.getController().equals(sa.getSourceCard().getController())
|
||||||
|| (k[1].equals("Opponent") && card.getController().equals(sa.getSourceCard().getController().getOpponent())) || k[1].equals("All"))
|
|| (k[1].equals("Opponent") && card.getController().equals(sa.getSourceCard().getController().getOpponent())) || k[1].equals("All"))
|
||||||
&& ((k[4].equals("Spell") && sa.isSpell() == true) || (k[4].equals("Ability") && sa.isAbility() == true)
|
&& ((k[4].equals("Spell") && sa.isSpell() == true) || (k[4].equals("Ability") && sa.isAbility() == true)
|
||||||
|| (k[4].equals("Self") && originalCard.equals(card)) || k[4].equals("All"))
|
|| (k[4].startsWith("Ability_Cycling") && sa.isCycling()) || (k[4].equals("Self") && originalCard.equals(card))
|
||||||
|
|| (k[4].equals("Enchanted") && originalCard.getEnchantedBy().contains(card)) || k[4].equals("All"))
|
||||||
&& ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All"))
|
&& ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All"))
|
||||||
&& ((sa.getSourceCard().isType(k[6]))
|
&& ((sa.getSourceCard().isType(k[6]))
|
||||||
|| (!(sa.getSourceCard().isType(k[6])) && k[7].contains("NonType")) || k[6].equals("All"))) {
|
|| (!(sa.getSourceCard().isType(k[6])) && k[7].contains("NonType")) || k[6].equals("All"))) {
|
||||||
@@ -2958,6 +2960,9 @@ public class GameAction {
|
|||||||
if(k[7].contains("TargetInPlay")) {
|
if(k[7].contains("TargetInPlay")) {
|
||||||
if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0";
|
if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0";
|
||||||
}
|
}
|
||||||
|
if(k[7].contains("TargetInHand")) {
|
||||||
|
if(!Player_Hand.contains(sa.getSourceCard())) k[3] = "0";
|
||||||
|
}
|
||||||
if(k[7].contains("NonType")) {
|
if(k[7].contains("NonType")) {
|
||||||
if(originalCard.isType(k[6])) k[3] = "0";
|
if(originalCard.isType(k[6])) k[3] = "0";
|
||||||
}
|
}
|
||||||
@@ -3087,7 +3092,8 @@ public class GameAction {
|
|||||||
if((k[1].equals("Player") && card.getController().equals(sa.getSourceCard().getController())
|
if((k[1].equals("Player") && card.getController().equals(sa.getSourceCard().getController())
|
||||||
|| (k[1].equals("Opponent") && card.getController().equals(sa.getSourceCard().getController().getOpponent())) || k[1].equals("All"))
|
|| (k[1].equals("Opponent") && card.getController().equals(sa.getSourceCard().getController().getOpponent())) || k[1].equals("All"))
|
||||||
&& ((k[4].equals("Spell") && sa.isSpell() == true) || (k[4].equals("Ability") && sa.isAbility() == true)
|
&& ((k[4].equals("Spell") && sa.isSpell() == true) || (k[4].equals("Ability") && sa.isAbility() == true)
|
||||||
|| (k[4].equals("Self") && originalCard.equals(card)) || k[4].equals("All"))
|
|| (k[4].startsWith("Ability_Cycling") && sa.isCycling()) || (k[4].equals("Self") && originalCard.equals(card))
|
||||||
|
|| (k[4].equals("Enchanted") && originalCard.getEnchantedBy().contains(card)) || k[4].equals("All"))
|
||||||
&& ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All"))
|
&& ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All"))
|
||||||
/**
|
/**
|
||||||
* Chris added a test for Changeling.
|
* Chris added a test for Changeling.
|
||||||
@@ -3103,6 +3109,9 @@ public class GameAction {
|
|||||||
if(k[7].contains("TargetInPlay")) {
|
if(k[7].contains("TargetInPlay")) {
|
||||||
if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0";
|
if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0";
|
||||||
}
|
}
|
||||||
|
if(k[7].contains("TargetInHand")) {
|
||||||
|
if(!Player_Hand.contains(sa.getSourceCard())) k[3] = "0";
|
||||||
|
}
|
||||||
if(k[7].contains("NonType")) {
|
if(k[7].contains("NonType")) {
|
||||||
if(originalCard.isType(k[6])) k[3] = "0";
|
if(originalCard.isType(k[6])) k[3] = "0";
|
||||||
}
|
}
|
||||||
@@ -3176,7 +3185,7 @@ public class GameAction {
|
|||||||
}
|
}
|
||||||
Mana = Mana.trim();
|
Mana = Mana.trim();
|
||||||
if(Mana.length() == 0 || Mana.equals("0")) {
|
if(Mana.length() == 0 || Mana.equals("0")) {
|
||||||
if(sa.isSpell()) Mana = "0";
|
if(sa.isSpell() || sa.isCycling()) Mana = "0";
|
||||||
else {
|
else {
|
||||||
Mana = "1";
|
Mana = "1";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ public class Input_PayCostMana extends Input {
|
|||||||
manaCost = new ManaCost("0");
|
manaCost = new ManaCost("0");
|
||||||
} else {
|
} else {
|
||||||
String mana = payment.getCost().getMana();
|
String mana = payment.getCost().getMana();
|
||||||
manaCost = AllZone.GameAction.getSpellCostChange(sa, new ManaCost(mana));
|
manaCost = new ManaCost(mana);//AllZone.GameAction.getSpellCostChange(sa, new ManaCost(mana));
|
||||||
}
|
} //^ already factored into costPayment.
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -69,7 +69,7 @@ public class Input_PayCostMana extends Input {
|
|||||||
public void showMessage() {
|
public void showMessage() {
|
||||||
ButtonUtil.enableOnlyCancel();
|
ButtonUtil.enableOnlyCancel();
|
||||||
AllZone.Display.showMessage("Pay Mana Cost: " + manaCost.toString());
|
AllZone.Display.showMessage("Pay Mana Cost: " + manaCost.toString());
|
||||||
if(manaCost.isPaid() && !new ManaCost(originalManaCost).isPaid())
|
if(manaCost.isPaid() /*&& !new ManaCost(originalManaCost).isPaid()*/)
|
||||||
done();
|
done();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ public abstract class SpellAbility {
|
|||||||
private boolean xCost = false;
|
private boolean xCost = false;
|
||||||
private boolean kickerAbility = false;
|
private boolean kickerAbility = false;
|
||||||
private boolean kothThirdAbility = false;
|
private boolean kothThirdAbility = false;
|
||||||
|
private boolean cycling = false;
|
||||||
|
|
||||||
private Input beforePayMana;
|
private Input beforePayMana;
|
||||||
private Input afterResolve;
|
private Input afterResolve;
|
||||||
@@ -197,6 +198,14 @@ public abstract class SpellAbility {
|
|||||||
return xCost;
|
return xCost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setIsCycling(boolean b) {
|
||||||
|
cycling = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isCycling(){
|
||||||
|
return cycling;
|
||||||
|
}
|
||||||
|
|
||||||
public void setSourceCard(Card c) {
|
public void setSourceCard(Card c) {
|
||||||
sourceCard = c;
|
sourceCard = c;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user