diff --git a/res/card-pictures.txt b/res/card-pictures.txt index 12317fc5a1c..2d8c7a8b411 100644 --- a/res/card-pictures.txt +++ b/res/card-pictures.txt @@ -38,6 +38,7 @@ snow_covered_mountain.jpg http://www.wizards.com/global/images/magic/gene snow_covered_mountain1.jpg http://www.wizards.com/global/images/magic/general/snow_covered_mountain.jpg snow_covered_mountain2.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg snow_covered_mountain3.jpg http://www.magickartenmarkt.de/img/cards/Ice_Age/snow_covered_mountain.jpg +khalni_hydra.jpg http://www.wizards.com/global/images/magic/general/khalni_hydra.jpg avatar_of_might.jpg http://www.wizards.com/global/images/magic/general/avatar_of_might.jpg avatar_of_fury.jpg http://www.wizards.com/global/images/magic/general/avatar_of_fury.jpg eternity_vessel.jpg http://www.wizards.com/global/images/magic/general/eternity_vessel.jpg diff --git a/res/cards.txt b/res/cards.txt index 5b8a679e37b..e06fd797b49 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,10 @@ +Khalni Hydra +G G G G G G G G +Creature Hydra +Khalni Hydra costs Green less to cast for each green creature you control. +8/8 +Trample + Drove of Elves 3 G Creature Elf diff --git a/src/forge/ComputerUtil.java b/src/forge/ComputerUtil.java index 79ffa11714a..746c9cc3100 100644 --- a/src/forge/ComputerUtil.java +++ b/src/forge/ComputerUtil.java @@ -161,53 +161,77 @@ public class ComputerUtil Card originalCard = sa.getSourceCard(); ManaCost cost = new ManaCost(sa.getManaCost()); if(sa.isSpell() == true) { - if(originalCard.getName().equals("Avatar of Woe")){ - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone PlayerGraveyard = AllZone.getZone(Constant.Zone.Graveyard, player); - CardList PlayerCreatureList = new CardList(PlayerGraveyard.getCards()); - PlayerCreatureList = PlayerCreatureList.getType("Creature"); - PlayerZone OpponentGraveyard = AllZone.getZone(Constant.Zone.Graveyard, opponent); - CardList OpponentCreatureList = new CardList(OpponentGraveyard.getCards()); - OpponentCreatureList = OpponentCreatureList.getType("Creature"); - if((PlayerCreatureList.size() + OpponentCreatureList.size()) >= 10) { - ManaCost cost2 = new ManaCost("B B"); + if(originalCard.getName().equals("Avatar of Woe")){ + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone PlayerGraveyard = AllZone.getZone(Constant.Zone.Graveyard, player); + CardList PlayerCreatureList = new CardList(PlayerGraveyard.getCards()); + PlayerCreatureList = PlayerCreatureList.getType("Creature"); + PlayerZone OpponentGraveyard = AllZone.getZone(Constant.Zone.Graveyard, opponent); + CardList OpponentCreatureList = new CardList(OpponentGraveyard.getCards()); + OpponentCreatureList = OpponentCreatureList.getType("Creature"); + if((PlayerCreatureList.size() + OpponentCreatureList.size()) >= 10) { + ManaCost cost2 = new ManaCost("B B"); + cost = cost2; + } + } // Avatar of Woe + else if(originalCard.getName().equals("Avatar of Will")){ + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone OpponentHand = AllZone.getZone(Constant.Zone.Hand, opponent); + CardList OpponentHandList = new CardList(OpponentHand.getCards()); + if(OpponentHandList.size() == 0) { + ManaCost cost2 = new ManaCost("U U"); + cost = cost2; + } + } // Avatar of Will + else if(originalCard.getName().equals("Avatar of Fury")) { + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); + CardList OpponentLand = new CardList(OpponentPlay.getCards()); + OpponentLand = OpponentLand.getType("Land"); + if(OpponentLand.size() >= 7) { + ManaCost cost2 = new ManaCost("R R"); + cost = cost2; + } + } // Avatar of Fury + else if(originalCard.getName().equals("Avatar of Might")) { + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); + CardList PlayerCreature = new CardList(PlayerPlay.getCards()); + PlayerCreature = PlayerCreature.getType("Creature"); + PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); + CardList OpponentCreature = new CardList(OpponentPlay.getCards()); + OpponentCreature = OpponentCreature.getType("Creature"); + if(OpponentCreature.size() - PlayerCreature.size() >= 4) { + ManaCost cost2 = new ManaCost("G G"); cost = cost2; - } - } else if(originalCard.getName().equals("Avatar of Will")){ - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone OpponentHand = AllZone.getZone(Constant.Zone.Hand, opponent); - CardList OpponentHandList = new CardList(OpponentHand.getCards()); - if(OpponentHandList.size() == 0) { - ManaCost cost2 = new ManaCost("U U"); - cost = cost2; - } - } else if(originalCard.getName().equals("Avatar of Fury")) { - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); - CardList OpponentLand = new CardList(OpponentPlay.getCards()); - OpponentLand = OpponentLand.getType("Land"); - if(OpponentLand.size() >= 7) { - ManaCost cost2 = new ManaCost("R R"); - cost = cost2; } - } else if(originalCard.getName().equals("Avatar of Might")) { - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); - CardList PlayerCreature = new CardList(PlayerPlay.getCards()); - PlayerCreature = PlayerCreature.getType("Creature"); - PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); - CardList OpponentCreature = new CardList(OpponentPlay.getCards()); - OpponentCreature = OpponentCreature.getType("Creature"); - if(OpponentCreature.size() - PlayerCreature.size() >= 4) { - ManaCost cost2 = new ManaCost("G G"); - cost = cost2; - } - } - } + } // Avatar of Might + else if(originalCard.getName().equals("Khalni Hydra")) { + String player = AllZone.Phase.getActivePlayer(); + PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); + CardList PlayerCreature = new CardList(PlayerPlay.getCards()); + PlayerCreature = PlayerCreature.getType("Creature"); + PlayerCreature = PlayerCreature.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isCreature() && CardUtil.getColors(c).contains(Constant.Color.Green); + } + }); + String Mana = cost + " "; + if(PlayerCreature.size() > 0) { + for(int i = 0; i < PlayerCreature.size(); i++) { + Mana = Mana.replaceFirst("G ", ""); + } + Mana = Mana.trim(); + if(Mana.equals("")) Mana = "0"; + ManaCost cost2 = new ManaCost(Mana); + cost = cost2; + } + } // Khalni Hydra + } // is Spell ArrayList colors; for(int i = 0; i < land.size(); i++) @@ -282,53 +306,77 @@ public class ComputerUtil Card originalCard = sa.getSourceCard(); ManaCost cost = new ManaCost(sa.getManaCost()); if(sa.isSpell() == true) { - if(originalCard.getName().equals("Avatar of Woe")){ - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone PlayerGraveyard = AllZone.getZone(Constant.Zone.Graveyard, player); - CardList PlayerCreatureList = new CardList(PlayerGraveyard.getCards()); - PlayerCreatureList = PlayerCreatureList.getType("Creature"); - PlayerZone OpponentGraveyard = AllZone.getZone(Constant.Zone.Graveyard, opponent); - CardList OpponentCreatureList = new CardList(OpponentGraveyard.getCards()); - OpponentCreatureList = OpponentCreatureList.getType("Creature"); - if((PlayerCreatureList.size() + OpponentCreatureList.size()) >= 10) { - ManaCost cost2 = new ManaCost("B B"); + if(originalCard.getName().equals("Avatar of Woe")){ + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone PlayerGraveyard = AllZone.getZone(Constant.Zone.Graveyard, player); + CardList PlayerCreatureList = new CardList(PlayerGraveyard.getCards()); + PlayerCreatureList = PlayerCreatureList.getType("Creature"); + PlayerZone OpponentGraveyard = AllZone.getZone(Constant.Zone.Graveyard, opponent); + CardList OpponentCreatureList = new CardList(OpponentGraveyard.getCards()); + OpponentCreatureList = OpponentCreatureList.getType("Creature"); + if((PlayerCreatureList.size() + OpponentCreatureList.size()) >= 10) { + ManaCost cost2 = new ManaCost("B B"); + cost = cost2; + } + } // Avatar of Woe + else if(originalCard.getName().equals("Avatar of Will")){ + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone OpponentHand = AllZone.getZone(Constant.Zone.Hand, opponent); + CardList OpponentHandList = new CardList(OpponentHand.getCards()); + if(OpponentHandList.size() == 0) { + ManaCost cost2 = new ManaCost("U U"); + cost = cost2; + } + } // Avatar of Will + else if(originalCard.getName().equals("Avatar of Fury")) { + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); + CardList OpponentLand = new CardList(OpponentPlay.getCards()); + OpponentLand = OpponentLand.getType("Land"); + if(OpponentLand.size() >= 7) { + ManaCost cost2 = new ManaCost("R R"); + cost = cost2; + } + } // Avatar of Fury + else if(originalCard.getName().equals("Avatar of Might")) { + String player = AllZone.Phase.getActivePlayer(); + String opponent = AllZone.GameAction.getOpponent(player); + PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); + CardList PlayerCreature = new CardList(PlayerPlay.getCards()); + PlayerCreature = PlayerCreature.getType("Creature"); + PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); + CardList OpponentCreature = new CardList(OpponentPlay.getCards()); + OpponentCreature = OpponentCreature.getType("Creature"); + if(OpponentCreature.size() - PlayerCreature.size() >= 4) { + ManaCost cost2 = new ManaCost("G G"); cost = cost2; - } - } else if(originalCard.getName().equals("Avatar of Will")){ - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone OpponentHand = AllZone.getZone(Constant.Zone.Hand, opponent); - CardList OpponentHandList = new CardList(OpponentHand.getCards()); - if(OpponentHandList.size() == 0) { - ManaCost cost2 = new ManaCost("U U"); - cost = cost2; - } - } else if(originalCard.getName().equals("Avatar of Fury")) { - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); - CardList OpponentLand = new CardList(OpponentPlay.getCards()); - OpponentLand = OpponentLand.getType("Land"); - if(OpponentLand.size() >= 7) { - ManaCost cost2 = new ManaCost("R R"); - cost = cost2; } - } else if(originalCard.getName().equals("Avatar of Might")) { - String player = AllZone.Phase.getActivePlayer(); - String opponent = AllZone.GameAction.getOpponent(player); - PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); - CardList PlayerCreature = new CardList(PlayerPlay.getCards()); - PlayerCreature = PlayerCreature.getType("Creature"); - PlayerZone OpponentPlay = AllZone.getZone(Constant.Zone.Play, opponent); - CardList OpponentCreature = new CardList(OpponentPlay.getCards()); - OpponentCreature = OpponentCreature.getType("Creature"); - if(OpponentCreature.size() - PlayerCreature.size() >= 4) { - ManaCost cost2 = new ManaCost("G G"); - cost = cost2; - } - } - } + } // Avatar of Might + else if(originalCard.getName().equals("Khalni Hydra")) { + String player = AllZone.Phase.getActivePlayer(); + PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); + CardList PlayerCreature = new CardList(PlayerPlay.getCards()); + PlayerCreature = PlayerCreature.getType("Creature"); + PlayerCreature = PlayerCreature.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isCreature() && CardUtil.getColors(c).contains(Constant.Color.Green); + } + }); + String Mana = cost + " "; + if(PlayerCreature.size() > 0) { + for(int i = 0; i < PlayerCreature.size(); i++) { + Mana = Mana.replaceFirst("G ", ""); + } + Mana = Mana.trim(); + if(Mana.equals("")) Mana = "0"; + ManaCost cost2 = new ManaCost(Mana); + cost = cost2; + } + } // Khalni Hydra + } // is Spell ArrayList colors; for(int i = 0; i < land.size(); i++) diff --git a/src/forge/Input_PayManaCost.java b/src/forge/Input_PayManaCost.java index d4fb508c97b..34d00cda1fd 100644 --- a/src/forge/Input_PayManaCost.java +++ b/src/forge/Input_PayManaCost.java @@ -37,7 +37,7 @@ public class Input_PayManaCost extends Input { manaCost = new ManaCost("B B"); } else { manaCost = new ManaCost(sa.getManaCost()); - } + } // Avatar of Woe } else if(originalCard.getName().equals("Avatar of Will")) { String player = AllZone.Phase.getActivePlayer(); String opponent = AllZone.GameAction.getOpponent(player); @@ -47,7 +47,7 @@ public class Input_PayManaCost extends Input { manaCost = new ManaCost("U U"); } else { manaCost = new ManaCost(sa.getManaCost()); - } + } // Avatar of Will } else if(originalCard.getName().equals("Avatar of Fury")) { String player = AllZone.Phase.getActivePlayer(); String opponent = AllZone.GameAction.getOpponent(player); @@ -58,7 +58,7 @@ public class Input_PayManaCost extends Input { manaCost = new ManaCost("R R"); } else { manaCost = new ManaCost(sa.getManaCost()); - } + } // Avatar of Fury } else if(originalCard.getName().equals("Avatar of Might")) { String player = AllZone.Phase.getActivePlayer(); String opponent = AllZone.GameAction.getOpponent(player); @@ -70,13 +70,37 @@ public class Input_PayManaCost extends Input { OpponentCreature = OpponentCreature.getType("Creature"); if(OpponentCreature.size() - PlayerCreature.size() >= 4) { manaCost = new ManaCost("G G"); + } else { + manaCost = new ManaCost(sa.getManaCost()); + } // Avatar of Might + } else if(originalCard.getName().equals("Khalni Hydra")) { + String player = AllZone.Phase.getActivePlayer(); + PlayerZone PlayerPlay = AllZone.getZone(Constant.Zone.Play, player); + CardList PlayerCreature = new CardList(PlayerPlay.getCards()); + PlayerCreature = PlayerCreature.getType("Creature"); + PlayerCreature = PlayerCreature.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.isCreature() && CardUtil.getColors(c).contains(Constant.Color.Green); + } + }); + String Mana = originalManaCost + " "; + if(PlayerCreature.size() > 0) { + for(int i = 0; i < PlayerCreature.size(); i++) { + Mana = Mana.replaceFirst("G ", ""); + } + Mana = Mana.trim(); + if(Mana.equals("")) Mana = "0"; + manaCost = new ManaCost(Mana); } else { manaCost = new ManaCost(sa.getManaCost()); } - } else { + } // Khalni Hydra + // For all other Spells + else { manaCost = new ManaCost(sa.getManaCost()); - } - } else { + } + } // isSpell + else { manaCost = new ManaCost(sa.getManaCost()); } }