From 94f9ae19c430fbffe3cb4d2d0658baddd3c21a36 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 14:18:37 +0000 Subject: [PATCH] - Convert Feral Hydra to AF - Improve AI for PutCounter and AnyPlayer abilities --- res/cardsfolder/feral_hydra.txt | 1 + src/forge/AbilityFactory_Counters.java | 11 ++++-- src/forge/CardFactory_Creatures.java | 49 ++------------------------ 3 files changed, 13 insertions(+), 48 deletions(-) diff --git a/res/cardsfolder/feral_hydra.txt b/res/cardsfolder/feral_hydra.txt index 33e8e5b43e3..b1f4ce39928 100644 --- a/res/cardsfolder/feral_hydra.txt +++ b/res/cardsfolder/feral_hydra.txt @@ -3,6 +3,7 @@ ManaCost:X G Types:Creature Hydra Text:no text PT:0/0 +A:AB$PutCounter | Cost$ 3 | CounterType$ P1P1 | CounterNum$ 1 | AnyPlayer$ True | SpellDescription$ Put a +1/+1 counter on Feral Hydra. Any player may activate this ability. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/feral_hydra.jpg SetInfo:ALA|Rare|http://magiccards.info/scans/en/ala/131.jpg diff --git a/src/forge/AbilityFactory_Counters.java b/src/forge/AbilityFactory_Counters.java index 79f5216cf38..71ccd8d61c3 100644 --- a/src/forge/AbilityFactory_Counters.java +++ b/src/forge/AbilityFactory_Counters.java @@ -152,6 +152,12 @@ public class AbilityFactory_Counters { if (list.size() == 0) return false; } + else{ // "put counter on this" + PlayerZone pZone = AllZone.getZone(source); + // Don't activate Curse abilities on my cards and non-curse abilites on my opponents + if (!pZone.getPlayer().equals(player)) + return false; + } if (abCost != null){ // AI currently disabled for these costs @@ -244,8 +250,9 @@ public class AbilityFactory_Counters { else{ // Placeholder: No targeting necessary int currCounters = sa.getSourceCard().getCounters(Counters.valueOf(type)); - // each counter on the card is a 10% chance of not activating this ability. - if (r.nextFloat() < .1 * currCounters) + // each non +1/+1 counter on the card is a 10% chance of not activating this ability. + + if (!type.equals("P1P1") && r.nextFloat() < .1 * currCounters) return false; } diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index f14f583b003..d466da0ee01 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -9024,52 +9024,11 @@ public class CardFactory_Creatures { ability.setDescription(abCost+"Target creature doesn't untap during its controller's next untap step."); }//*************** END ************ END ************************** - - //*************** START *********** START ************************** - else if(cardName.equals("Feral Hydra")) { - - SpellAbility spell = new Spell_Permanent(card) { - private static final long serialVersionUID = -11489323319L; - - @Override - public boolean canPlayAI() { - return super.canPlay() && 4 <= ComputerUtil.getAvailableMana().size() - CardUtil.getConvertedManaCost(card.getManaCost()); - } - }; - card.clearSpellAbility(); - card.addSpellAbility(spell); - - final SpellAbility ability = new Ability(card, "3") { - @Override - public void resolve() { - card.addCounter(Counters.P1P1,1); - }//resolve() - }; - - ability.setDescription("3: put a +1/+1 counter on Feral Hydra. Any player may activate this ability."); - ability.setStackDescription("Feral Hydra gets a +1/+1 counter."); - ability.getRestrictions().setAnyPlayer(true); - card.addSpellAbility(ability); - - Command intoPlay = new Command() { - - private static final long serialVersionUID = 2559021590L; - - public void execute() { - int XCounters = card.getXManaCostPaid(); - card.addCounter(Counters.P1P1, XCounters); - - }//execute() - };//Command - card.addComesIntoPlayCommand(intoPlay); - }//*************** END ************ END ************************** - //*************** START *********** START ************************** - else if(cardName.equals("Shifting Wall") || cardName.equals("Maga, Traitor to Mortals") + else if(cardName.equals("Shifting Wall") || cardName.equals("Maga, Traitor to Mortals") || cardName.equals("Feral Hydra") || cardName.equals("Krakilin") || cardName.equals("Ivy Elemental") || cardName.equals("Lightning Serpent")) { - if(!card.getName().equals("Krakilin")) { SpellAbility spell = new Spell_Permanent(card) { private static final long serialVersionUID = -11489323313L; @@ -9078,10 +9037,8 @@ public class CardFactory_Creatures { return super.canPlay() && 4 <= ComputerUtil.getAvailableMana().size() - CardUtil.getConvertedManaCost(card.getManaCost()); } }; - card.clearSpellAbility(); - card.addSpellAbility(spell); - } - + card.clearFirstSpellAbility(); + card.addFirstSpellAbility(spell); final SpellAbility ability = new Ability(card, "0") { @Override