diff --git a/res/card-pictures.txt b/res/card-pictures.txt index e1dcc0d7950..6c25714bf4d 100644 --- a/res/card-pictures.txt +++ b/res/card-pictures.txt @@ -38,6 +38,49 @@ 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 +thoughtcast.jpg http://www.wizards.com/global/images/magic/general/thoughtcast.jpg +thornscape_familiar.jpg http://www.wizards.com/global/images/magic/general/thornscape_familiar.jpg +thorn_of_amethyst.jpg http://www.wizards.com/global/images/magic/general/thorn_of_amethyst.jpg +tangle_golem.jpg http://www.wizards.com/global/images/magic/general/tangle_golem.jpg +sunscape_familiar.jpg http://www.wizards.com/global/images/magic/general/sunscape_familiar.jpg +stormscape_familiar.jpg http://www.wizards.com/global/images/magic/general/stormscape_familiar.jpg +stonybrook_banneret.jpg http://www.wizards.com/global/images/magic/general/stonybrook_banneret.jpg +stone_calendar.jpg http://www.wizards.com/global/images/magic/general/stone_calendar.jpg +stinkdrinker_daredevil.jpg http://www.wizards.com/global/images/magic/general/stinkdrinker_daredevil.jpg +squeeze.jpg http://www.wizards.com/global/images/magic/general/squeeze.jpg +spire_golem.jpg http://www.wizards.com/global/images/magic/general/spire_golem.jpg +somber_hoverguard.jpg http://www.wizards.com/global/images/magic/general/somber_hoverguard.jpg +sapphire_medallion.jpg http://www.wizards.com/global/images/magic/general/sapphire_medallion.jpg +sapphire_leech.jpg http://www.wizards.com/global/images/magic/general/sapphire_leech.jpg +ruby_medallion.jpg http://www.wizards.com/global/images/magic/general/ruby_medallion.jpg +ruby_leech.jpg http://www.wizards.com/global/images/magic/general/ruby_leech.jpg +razor_golem.jpg http://www.wizards.com/global/images/magic/general/razor_golem.jpg +qumulox.jpg http://www.wizards.com/global/images/magic/general/qumulox.jpg +planar_gate.jpg http://www.wizards.com/global/images/magic/general/qumulox.jpg +pearl_medallion.jpg http://www.wizards.com/global/images/magic/general/pearl_medallion.jpg +oxidda_golem.jpg http://www.wizards.com/global/images/magic/general/oxidda_golem.jpg +nightscape_familiar.jpg http://www.wizards.com/global/images/magic/general/nightscape_familiar.jpg +myr_enforcer.jpg http://www.wizards.com/global/images/magic/general/myr_enforcer.jpg +mana_matrix.jpg http://www.wizards.com/global/images/magic/general/mana_matrix.jpg +lodestone_golem.jpg http://www.wizards.com/global/images/magic/general/lodestone_golem.jpg +jet_medallion.jpg http://www.wizards.com/global/images/magic/general/jet_medallion.jpg +jade_leech.jpg http://www.wizards.com/global/images/magic/general/jade_leech.jpg +irini_sengir.jpg http://www.wizards.com/global/images/magic/general/irini_sengir.jpg +hum_of_the_radix.jpg http://www.wizards.com/global/images/magic/general/hum_of_the_radix.jpg +high_seas.jpg http://www.wizards.com/global/images/magic/general/high_seas.jpg +helm_of_awakening.jpg http://www.wizards.com/global/images/magic/general/helm_of_awakening.jpg +glowrider.jpg http://www.wizards.com/global/images/magic/general/glowrider.jpg +gloom.jpg http://www.wizards.com/global/images/magic/general/gloom.jpg +frogtosser_banneret.jpg http://www.wizards.com/global/images/magic/general/frogtosser_banneret.jpg +ferozs_ban.jpg http://www.wizards.com/global/images/magic/general/ferozs_ban.jpg +emerald_medallion.jpg http://www.wizards.com/global/images/magic/general/emerald_medallion.jpg +dross_golem.jpg http://www.wizards.com/global/images/magic/general/dross_golem.jpg +dragonspeaker_shaman.jpg http://www.wizards.com/global/images/magic/general/dragonspeaker_shaman.jpg +derelor.jpg http://www.wizards.com/global/images/magic/general/derelor.jpg +daru_warchief.jpg http://www.wizards.com/global/images/magic/general/daru_warchief.jpg +broodstar.jpg http://www.wizards.com/global/images/magic/general/broodstar.jpg +blinkmoth_infusion.jpg http://www.wizards.com/global/images/magic/general/blinkmoth_infusion.jpg +assert_authority.jpg http://www.wizards.com/global/images/magic/general/assert_authority.jpg mycosynth_golem.jpg http://www.wizards.com/global/images/magic/general/mycosynth_golem.jpg frogmite.jpg http://www.wizards.com/global/images/magic/general/frogmite.jpg eye_of_ugin.jpg http://www.wizards.com/global/images/magic/general/eye_of_ugin.jpg diff --git a/res/cards.txt b/res/cards.txt index 34ff41ca364..923685f9ced 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,306 @@ +Thoughtcast +4 U +Sorcery +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) +spDrawCards:2:Draw two cards.:Thoughtcast - draw 2 cards. +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + +Thornscape Familiar +1 G +Creature Insect +Red spells and white spells you cast cost 1 less to cast. +2/1 +CostChange:Player:Less:1:Spell:red/white:All:OnlyOneBonus + +Thorn of Amethyst +2 +Artifact +Noncreature spells cost 1 more to cast. +CostChange:All:More:1:Spell:All:Creature:NonType + +Tangle Golem +7 +Artifact Creature Golem +Affinity for Forests (This spell costs 1 less to cast for each Forest you control.) +5/4 +CostChange:Player:Less:1:Self:All:All:Affinity/Forest + +Sunscape Familiar +1 W +Creature Wall +Green spells and blue spells you cast cost 1 less to cast. +0/3 +Defender +CostChange:Player:Less:1:Spell:green/blue:All:OnlyOneBonus + +Stormscape Familiar +1 U +Creature Bird +White spells and black spells you cast cost 1 less to cast. +1/1 +Flying +CostChange:Player:Less:1:Spell:white/black:All:OnlyOneBonus + +Stonybrook Banneret +1 U +Creature Merfolk Wizard +Merfolk spells and Wizard spells you cast cost 1 less to cast. +1/1 +Islandwalk +CostChange:Player:Less:1:Spell:All:Merfolk/Wizard:OnlyOneBonus + +Stone Calendar +5 +Artifact +Spells you cast cost up to 1 less to cast. +CostChange:Player:Less:1:Spell:All:All:NoSpecial + +Stinkdrinker Daredevil +2 R +Creature Goblin Rogue +Giant spells you cast cost 2 less to cast. +1/3 +CostChange:Player:Less:2:Spell:All:Giant:NoSpecial + +Squeeze +3 U +Enchantment +Sorcery spells cost 3 more to cast. +CostChange:All:More:3:Spell:All:Sorcery:NoSpecial + +Spire Golem +6 +Artifact Creature Golem +Affinity for Islands (This spell costs 1 less to cast for each Island you control.) +2/4 +Flying +CostChange:Player:Less:1:Self:All:All:Affinity/Island + +Somber Hoverguard +5 U +Creature Drone +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) +3/2 +Flying +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + +Sapphire Medallion +2 +Artifact +Blue spells you cast cost 1 less to cast. +CostChange:Player:Less:1:Spell:blue:All:NoSpecial + +Sapphire Leech +1 U +Creature Leech +Blue spells you cast cost Blue more to cast. +2/2 +Flying +CostChange:Player:More:R:Spell:blue:All:NoSpecial + +Ruby Medallion +2 +Artifact +Red spells you cast cost 1 less to cast. +CostChange:Player:Less:1:Spell:red:All:NoSpecial + +Ruby Leech +1 R +Creature Leech +Red spells you cast cost R more to cast. +2/2 +First strike +CostChange:Player:More:R:Spell:red:All:NoSpecial + +Razor Golem +6 +Artifact Creature Golem +Affinity for Plains (This spell costs 1 less to cast for each Plains you control.) +3/4 +Vigilance +CostChange:Player:Less:1:Self:All:All:Affinity/Plains + +Qumulox +6 U U +Creature Beast +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) +5/4 +Flying +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + +Planar Gate +6 +Artifact +Creature spells you cast cost up to 2 less to cast. +CostChange:Player:Less:2:Spell:All:Creature:NoSpecial + +Pearl Medallion +2 +Artifact +White spells you cast cost 1 less to cast. +CostChange:Player:Less:1:Spell:white:All:NoSpecial + +Oxidda Golem +6 +Artifact Creature Golem +Affinity for Mountains (This spell costs 1 less to cast for each Mountain you control.) +3/2 +Haste +CostChange:Player:Less:1:Self:All:All:Affinity/Mountain + +Nightscape Familiar +1 B +Creature Zombie +Blue spells and red spells you cast cost 1 less to cast. +1/1 +RegenerateMe:1 B +CostChange:Player:Less:1:Spell:blue/red:All:OnlyOneBonus + +Myr Enforcer +7 +Artifact Creature Myr +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) +4/4 +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + +Mana Matrix +6 +Artifact +Instant and enchantment spells you cast cost up to 2 less to cast. +CostChange:Player:Less:2:Spell:All:Instant:NoSpecial +CostChange:Player:Less:2:Spell:All:Enchantment:NoSpecial + +Lodestone Golem +4 +Artifact Creature Golem +Nonartifact spells cost 1 more to cast. +5/3 +CostChange:All:More:1:Spell:All:Artifact:NonType + +Jet Medallion +2 +Artifact +Black spells you cast cost 1 less to cast. +CostChange:Player:Less:1:Spell:black:All:NoSpecial + +Jade Leech +2 G G +Creature Leech +Green spells you cast cost G more to cast. +5/5 +CostChange:Player:More:G:Spell:green:All:NoSpecial + +Irini Sengir +2 B B +Legendary Creature Vampire Dwarf +White enchantment spells and green enchantment spells cost 2 more to cast. +2/2 +CostChange:All:More:2:Spell:white:Enchantment:NoSpecial +CostChange:All:More:2:Spell:green:Enchantment:NoSpecial + +Hum of the Radix +2 G G +Enchantment +Each artifact spell costs 1 more to cast for each artifact its controller controls. +CostChange:Player:More:1:Spell:All:Artifact:Affinity/Artifact + +High Seas +2 U +Enchantment +Red creature spells and green creature spells cost 1 more to cast. +CostChange:All:More:1:Spell:red:Creature:NoSpecial +CostChange:All:More:1:Spell:green:Creature:NoSpecial + +Helm of Awakening +2 +Artifact +Spells cost 1 less to cast. +CostChange:All:Less:1:Spell:All:All:NoSpecial + +Glowrider +2 W +Creature Human Cleric +Noncreature spells cost 1 more to cast. +2/1 +CostChange:All:More:1:Spell:All:Creature:NonType + +Gloom +2 B +Enchantment +White spells cost 3 more to cast. Activated abilities of white enchantments cost 3 more to activate. +CostChange:All:More:3:Spell:white:All:NoSpecial +CostChange:All:More:3:Ability:white:Enchantment:NoSpecial + +Frogtosser Banneret +1 B +Creature Goblin Rogue +Goblin spells and Rogue spells you cast cost 1 less to cast. +1/1 +Haste +CostChange:Player:Less:1:Spell:All:Goblin/Rogue:OnlyOneBonus + +Feroz's Ban +6 +Artifact +Creature spells cost 2 more to cast. +CostChange:All:More:2:Spell:All:Creature:NoSpecial + +Emerald Medallion +2 +Artifact +Green spells you cast cost 1 less to cast. +CostChange:Player:Less:1:Spell:green:All:NoSpecial + +Dross Golem +5 +Artifact Creature Golem +Affinity for Swamps (This spell costs 1 less to cast for each Swamp you control.) +3/2 +Fear +CostChange:Player:Less:1:Self:All:All:Affinity/Swamp + +Dragonspeaker Shaman +1 R R +Creature Human Barbarian Shaman +Dragon spells you cast cost 2 less to cast. +2/2 +CostChange:Player:Less:2:Spell:All:Dragon:NoSpecial + +Derelor +3 B +Creature Thrull +Black spells you cast cost Black more to cast. +4/4 +CostChange:Player:More:B:Spell:black:All:NoSpecial + +Daru Warchief +2 W W +Creature Human Soldier +Soldier spells you cast cost 1 less to cast. Soldier creatures you control get +1/+2. +1/1 +CostChange:Player:Less:1:Spell:All:Soldier:NoSpecial + +Broodstar +8 U U +Creature Beast +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) Broodstar's power and toughness are each equal to the number of artifacts you control. +0/0 +Flying +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + +Blinkmoth Infusion +12 U U +Instant +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) Untap all artifacts. +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact +spAllPump:YouCtrl/None:+0/+0:Drawback$UntapAllTypeYouCtrl.Artifact: + +Assert Authority +5 U U +Instant +Affinity for artifacts (This spell costs 1 less to cast for each artifact you control.) Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. +CostChange:Player:Less:1:Self:All:All:Affinity/Artifact + Mycosynth Golem 11 Artifact Creature Golem diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 4a1c3d482c1..00ddf27275a 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -21119,7 +21119,7 @@ public class CardFactory implements NewConstants { }// *************** END ************ END ************************** //*************** START *********** START ************************** - else if(cardName.equals("Dissipate")) { + else if(cardName.equals("Dissipate") || cardName.equals("Assert Authority")) { SpellAbility spell = new Spell(card) { private static final long serialVersionUID = 4165714000804564686L; diff --git a/src/forge/ComputerAI_counterSpells2.java b/src/forge/ComputerAI_counterSpells2.java index 733581a01e2..24de9526421 100644 --- a/src/forge/ComputerAI_counterSpells2.java +++ b/src/forge/ComputerAI_counterSpells2.java @@ -25,7 +25,7 @@ public class ComputerAI_counterSpells2 { public static CardList getPlayableCounterSpells(final SpellAbility sa){ final String[] basic = { "Counterspell", "Remand", "Cancel", "Mystic Snake", "Absorb", "Undermine", "Punish Ignorance", - "Dismiss", "Last Word", "Dissipate" /*, "Force of Will", "Thwart" */ + "Dismiss", "Last Word", "Dissipate", "Assert Authority" /*, "Force of Will", "Thwart" */ }; final String[] creature = { diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 0cb2988d239..14617bf3888 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -1676,13 +1676,17 @@ public class GameAction { && ((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")) && ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All")) - && ((sa.getSourceCard().getType().contains(k[6])) || k[6].equals("All"))) { + && ((sa.getSourceCard().getType().contains(k[6])) + || (!(sa.getSourceCard().getType().contains(k[6])) && k[7].contains("NonType")) || k[6].equals("All"))) { if(k[7].contains("CardIsTapped")) { if(card.isTapped() == false) k[3] = "0"; } if(k[7].contains("TargetInPlay")) { if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0"; } + if(k[7].contains("NonType")) { + if(originalCard.getType().contains(k[6])) k[3] = "0"; + } if(k[7].contains("Affinity")) { String spilt = k[7]; String color_spilt[] = spilt.split("/"); @@ -1783,13 +1787,17 @@ public class GameAction { && ((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")) && ((CardUtil.getColors(sa.getSourceCard()).contains(k[5])) || k[5].equals("All")) - && ((sa.getSourceCard().getType().contains(k[6])) || k[6].equals("All"))) { + && ((sa.getSourceCard().getType().contains(k[6])) + || (!(sa.getSourceCard().getType().contains(k[6])) && k[7].contains("NonType")) || k[6].equals("All"))) { if(k[7].contains("CardIsTapped")) { if(card.isTapped() == false) k[3] = "0"; } if(k[7].contains("TargetInPlay")) { if(!Player_Play.contains(sa.getSourceCard())) k[3] = "0"; } + if(k[7].contains("NonType")) { + if(originalCard.getType().contains(k[6])) k[3] = "0"; + } if(k[7].contains("Affinity")) { String spilt = k[7]; String color_spilt[] = spilt.split("/"); @@ -1874,7 +1882,7 @@ public class GameAction { } } // Khalni Hydra return manaCost; - } + } public void playSpellAbility(SpellAbility sa) { ManaCost manaCost = GetSpellCostChange(sa); if(manaCost.isPaid() /**sa.getManaCost().equals("0")**/ && sa.getBeforePayMana() == null) { diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 6c97ab899b2..2bb33c8c956 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -9952,22 +9952,19 @@ public class GameActionUtil { **/ }; - public static Command Undead_Warchief = new Command() { - private static final long serialVersionUID = -3463429634177142721L; + public static Command Undead_Warchief = new Command() { + private static final long serialVersionUID = 5835056455026735693L; CardList gloriousAnthemList = new CardList(); public void execute() { - int pumpAttack = 2; - int pumpDefense = 1; - 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(-pumpAttack); - c.addSemiPermanentDefenseBoost(-pumpDefense); + c.addSemiPermanentAttackBoost(-2); + c.addSemiPermanentDefenseBoost(-1); } // add +1/+1 to cards @@ -9976,21 +9973,56 @@ public class GameActionUtil { // for each zone found add +1/+1 to each card for(int outer = 0; outer < zone.length; outer++) { - CardList creature = new CardList(); - creature.addAll(AllZone.Human_Play.getCards()); - creature.addAll(AllZone.Computer_Play.getCards()); + CardList creature = new CardList( + zone[outer].getCards()); creature = creature.getType("Zombie"); for(int i = 0; i < creature.size(); i++) { c = creature.get(i); - c.addSemiPermanentAttackBoost(pumpAttack); - c.addSemiPermanentDefenseBoost(pumpDefense); + c.addSemiPermanentAttackBoost(1); + c.addSemiPermanentDefenseBoost(2); gloriousAnthemList.add(c); }// for inner }// for outer - }// execute() + }// execute }; // Undead Warchief + + public static Command Daru_Warchief = new Command() { + private static final long serialVersionUID = 5835056455026735693L; + + 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(-2); + } + + // add +1/+1 to cards + list.clear(); + PlayerZone[] zone = getZone("Daru Warchief"); + + // for each zone found add +1/+1 to each card + for(int outer = 0; outer < zone.length; outer++) { + CardList creature = new CardList( + zone[outer].getCards()); + creature = creature.getType("Soldier"); + + for(int i = 0; i < creature.size(); i++) { + c = creature.get(i); + c.addSemiPermanentAttackBoost(1); + c.addSemiPermanentDefenseBoost(2); + + gloriousAnthemList.add(c); + }// for inner + }// for outer + }// execute + }; // Daru Warchief() public static Command Leyline_of_Singularity = new Command() { @@ -15548,7 +15580,11 @@ public class GameActionUtil { CardList list = new CardList(); list.addAll(AllZone.Human_Play.getCards()); list.addAll(AllZone.Computer_Play.getCards()); - list = list.getName("Master of Etherium"); + list = list.filter(new CardListFilter() { + public boolean addCard(Card c) { + return c.getName().equals("Master of Etherium") || c.getName().equals("Broodstar"); + } + }); for(int i = 0; i < list.size(); i++) { Card c = list.get(i); @@ -15570,7 +15606,7 @@ public class GameActionUtil { } - }; // Master of etherium + }; // Master of etherium + Broodstar public static Command Master_of_Etherium_Pump = new Command() { private static final long serialVersionUID = -1736492817816019320L; @@ -18379,6 +18415,7 @@ public class GameActionUtil { commands.put("Leyline_of_Singularity", Leyline_of_Singularity); commands.put("Goblin_Warchief", Goblin_Warchief); commands.put("Undead_Warchief", Undead_Warchief); + commands.put("Daru_Warchief", Daru_Warchief); commands.put("Levitation", Levitation); commands.put("Knighthood", Knighthood); commands.put("Absolute_Law", Absolute_Law); diff --git a/src/forge/StaticEffects.java b/src/forge/StaticEffects.java index cd7f268c3fc..0c727b97912 100644 --- a/src/forge/StaticEffects.java +++ b/src/forge/StaticEffects.java @@ -108,6 +108,8 @@ public class StaticEffects cardToEffectsList.put("Zuberi, Golden Feather", new String[] {"Zuberi"}); cardToEffectsList.put("Loxodon Punisher", new String[] {"Loxodon_Punisher"}); cardToEffectsList.put("Master of Etherium", new String[] {"Master_of_Etherium", "Master_of_Etherium_Pump", "Master_of_Etherium_Other"}); + cardToEffectsList.put("Broodstar", new String[] {"Master_of_Etherium"}); + cardToEffectsList.put("Daru Warchief", new String[] {"Daru_Warchief"}); cardToEffectsList.put("Relentless Rats", new String[] {"Relentless_Rats_Other"}); cardToEffectsList.put("Privileged Position", new String[] {"Privileged_Position", "Privileged_Position_Other"}); cardToEffectsList.put("Broodwarden", new String[] {"Broodwarden"});