From 270034b255d16e19df3ef42585a1e3bb6d43e37e Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 03:36:36 +0000 Subject: [PATCH] - Added Regenerate: B to Mortivore. - Fixed a bug with Cascade and abilities triggering on casting spells. --- src/forge/CardFactory_Creatures.java | 55 ++++++++++++++++++++++++++++ src/forge/GameActionUtil.java | 4 +- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index a94a8ee7e91..c27929804e1 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -5,6 +5,7 @@ package forge; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Random; import javax.swing.JOptionPane; @@ -14285,6 +14286,60 @@ public class CardFactory_Creatures { }; card.clearSpellAbility(); card.addSpellAbility(spell); + + final Command untilEOT = new Command() { + private static final long serialVersionUID = 8163158247122311120L; + + public void execute() { + card.setShield(0); + } + }; + + final SpellAbility a1 = new Ability(card, "B") { + @Override + public boolean canPlayAI() { + if(CardFactoryUtil.AI_isMainPhase()) { + if(CardFactoryUtil.AI_doesCreatureAttack(card)) { + + int weight[] = new int[3]; + + if(card.getKeyword().size() > 0) weight[0] = 75; + else weight[0] = 0; + + CardList HandList = new CardList(AllZone.getZone(Constant.Zone.Hand, + Constant.Player.Computer).getCards()); + + if(HandList.size() >= 4) weight[1] = 25; + else weight[1] = 75; + + int hCMC = 0; + for(int i = 0; i < HandList.size(); i++) + if(CardUtil.getConvertedManaCost(HandList.getCard(i).getManaCost()) > hCMC) hCMC = CardUtil.getConvertedManaCost(HandList.getCard( + i).getManaCost()); + + CardList LandList = new CardList(AllZone.getZone(Constant.Zone.Play, + Constant.Player.Computer).getCards()); + LandList = LandList.getType("Land"); + + if(hCMC + 2 >= LandList.size()) weight[2] = 50; + else weight[2] = 0; + + int aw = (weight[0] + weight[1] + weight[2]) / 3; + Random r = new Random(); + if(r.nextInt(100) <= aw) return true; + } + } + return false; + } + + @Override + public void resolve() { + card.addShield(); + AllZone.EndOfTurn.addUntil(untilEOT); + } + }; //SpellAbility + a1.setDescription("Regenerate: B"); + card.addSpellAbility(a1); } //*************** END ************ END ************************** diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 637d2ad10d2..9edb3a50235 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -104,6 +104,8 @@ public class GameActionUtil { // (called in MagicStack.java) Card c = sa.getSourceCard(); + playCard_Cascade(c); + playCard_Dovescape(c); //keep this one top playCard_Demigod_of_Revenge(c); playCard_Halcyon_Glaze(c); @@ -144,7 +146,7 @@ public class GameActionUtil { playCard_Mold_Adder(c); playCard_Fable_of_Wolf_and_Owl(c); - playCard_Cascade(c); + }