From 37f50ef5eefae0ba3b83d0760eea68dae8a21c82 Mon Sep 17 00:00:00 2001 From: Sloth Date: Tue, 5 Jun 2012 21:53:21 +0000 Subject: [PATCH] - Improved AI of some cards using AF Charm. --- res/cardsfolder/e/ebony_charm.txt | 4 ++-- res/cardsfolder/u/umezawas_jitte.txt | 2 +- .../abilityfactory/AbilityFactoryChangeZone.java | 10 ++++++++++ .../abilityfactory/AbilityFactoryCounters.java | 5 +++++ .../abilityfactory/AbilityFactoryDealDamage.java | 10 ++++++++++ .../abilityfactory/AbilityFactoryDestroy.java | 5 +++++ .../AbilityFactoryPermanentState.java | 15 +++++++++++++++ .../card/abilityfactory/AbilityFactoryPump.java | 5 +++++ .../card/abilityfactory/AbilityFactoryReveal.java | 5 +++++ .../AbilityFactoryZoneAffecting.java | 10 ++++++++++ 10 files changed, 68 insertions(+), 3 deletions(-) diff --git a/res/cardsfolder/e/ebony_charm.txt b/res/cardsfolder/e/ebony_charm.txt index 83cdda1176c..7d7be22ea1a 100644 --- a/res/cardsfolder/e/ebony_charm.txt +++ b/res/cardsfolder/e/ebony_charm.txt @@ -3,8 +3,8 @@ ManaCost:B Types:Instant Text:no text A:SP$ Charm | Cost$ B | Choices$ EbonyDrain,EbonyExile,EbonyFear | Defined$ You | SpellDescription$ Choose one - Target opponent loses 1 life and you gain 1 life; or exile up to three target cards from a single graveyard; or target creature gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.) -SVar:EbonyDrain:DB$LoseLife | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | LifeAmount$ 1 | SubAbility$ EbonyGain | SpellDescription$ Target opponent loses 1 life and you gain 1 life; -SVar:EbonyGain:DB$GainLife | Defined$ You | LifeAmount$ 1 +SVar:EbonyDrain:DB$ LoseLife | ValidTgts$ Opponent | TgtPrompt$ Select target opponent | LifeAmount$ 1 | SubAbility$ EbonyGain | SpellDescription$ Target opponent loses 1 life and you gain 1 life; +SVar:EbonyGain:DB$ GainLife | Defined$ You | LifeAmount$ 1 SVar:EbonyExile:DB$ ChangeZone | TargetMin$ 0 | TargetMax$ 3 | TargetsFromSingleZone$ True | Origin$ Graveyard | Destination$ Exile | TgtPrompt$ Choose target card in a graveyard | ValidTgts$ Card | SpellDescription$ Exile up to three target cards from a single graveyard; SVar:EbonyFear:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | KW$ Fear | SpellDescription$ Target creature gains fear until end of turn. SVar:RemAIDeck:True diff --git a/res/cardsfolder/u/umezawas_jitte.txt b/res/cardsfolder/u/umezawas_jitte.txt index 5dc4a1003ba..7aead1a5e0c 100644 --- a/res/cardsfolder/u/umezawas_jitte.txt +++ b/res/cardsfolder/u/umezawas_jitte.txt @@ -8,7 +8,7 @@ A:AB$ Charm | Cost$ SubCounter<1/CHARGE> | Choices$ JittePump,JitteCurse,JitteLi SVar:JittePump:DB$ Pump | Defined$ Equipped | NumAtt$ +2 | NumDef$ +2 | SpellDescription$ Equipped creature gets +2/+2 until end of turn; SVar:JitteCurse:DB$ Pump | ValidTgts$ Creature | TgtPrompt$ Select target creature | NumAtt$ -1 | NumDef$ -1 | IsCurse$ True | SpellDescription$ or target creature gets -1/-1 until end of turn; SVar:JitteLife:DB$ GainLife | LifeAmount$ 2 | SpellDescription$ or you gain 2 life. -SVar:TrigPutCounter:AB$PutCounter | Cost$ 0 | CounterType$ CHARGE | CounterNum$ 2 +SVar:TrigPutCounter:AB$ PutCounter | Cost$ 0 | CounterType$ CHARGE | CounterNum$ 2 SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/umezawas_jitte.jpg SetInfo:BOK|Rare|http://magiccards.info/scans/en/bok/163.jpg diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java index e501d5ad55c..3ca8415d720 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryChangeZone.java @@ -166,6 +166,11 @@ public final class AbilityFactoryChangeZone { AbilityFactoryChangeZone.changeZoneResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryChangeZone.changeZoneCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryChangeZone.changeZonePlayDrawbackAI(af, this); @@ -2249,6 +2254,11 @@ public final class AbilityFactoryChangeZone { AbilityFactoryChangeZone.changeZoneAllResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryChangeZone.changeZoneAllCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryChangeZone.changeZoneAllPlayDrawbackAI(af, this); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java index df55c61a061..0542c29dc53 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryCounters.java @@ -171,6 +171,11 @@ public class AbilityFactoryCounters { AbilityFactoryCounters.putResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryCounters.putCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryCounters.putPlayDrawbackAI(af, this); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java index 055ee8b9d5b..6222ba4a893 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDealDamage.java @@ -173,6 +173,11 @@ public class AbilityFactoryDealDamage { return AbilityFactoryDealDamage.this.damageDrawback(this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryDealDamage.this.dealDamageCanPlayAI(this); + } + @Override public String getStackDescription() { return AbilityFactoryDealDamage.this.dealDamageStackDescription( @@ -959,6 +964,11 @@ public class AbilityFactoryDealDamage { return AbilityFactoryDealDamage.this.damageAllStackDescription(this.af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryDealDamage.this.damageAllCanPlayAI(this.af, this); + } + @Override public void resolve() { AbilityFactoryDealDamage.this.damageAllResolve(this.af, this); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java index 93c151ed98a..9fc6b626412 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryDestroy.java @@ -688,6 +688,11 @@ public class AbilityFactoryDestroy { return AbilityFactoryDestroy.destroyAllStackDescription(af, this, this.noRegen); } + @Override + public boolean canPlayAI() { + return AbilityFactoryDestroy.destroyAllCanPlayAI(af, this, this.noRegen); + } + @Override public void resolve() { AbilityFactoryDestroy.destroyAllResolve(af, this, this.noRegen); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java index 4fb63b384be..404e1fe33b2 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPermanentState.java @@ -150,6 +150,11 @@ public class AbilityFactoryPermanentState { AbilityFactoryPermanentState.untapResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryPermanentState.untapCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryPermanentState.untapPlayDrawbackAI(af, this); @@ -714,6 +719,11 @@ public class AbilityFactoryPermanentState { AbilityFactoryPermanentState.tapResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryPermanentState.tapCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryPermanentState.tapPlayDrawbackAI(af, this); @@ -1485,6 +1495,11 @@ public class AbilityFactoryPermanentState { AbilityFactoryPermanentState.tapAllResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryPermanentState.tapAllCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryPermanentState.tapAllPlayDrawbackAI(af, this); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java index 1ba51fc3f6a..6a9a203cc8f 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryPump.java @@ -1385,6 +1385,11 @@ public class AbilityFactoryPump { AbilityFactoryPump.this.pumpAllResolve(this); } // resolve + @Override + public boolean canPlayAI() { + return AbilityFactoryPump.this.pumpAllCanPlayAI(this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryPump.this.pumpAllChkDrawbackAI(this); diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java index c1d1ab79a17..cfb1d351d09 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryReveal.java @@ -160,6 +160,11 @@ public final class AbilityFactoryReveal { AbilityFactoryReveal.digResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryReveal.digCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return true; diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java index ccb9ba0aa65..02d3e988c6a 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactoryZoneAffecting.java @@ -152,6 +152,11 @@ public class AbilityFactoryZoneAffecting { return AbilityFactoryZoneAffecting.drawStackDescription(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryZoneAffecting.drawCanPlayAI(af, this); + } + @Override public void resolve() { AbilityFactoryZoneAffecting.drawResolve(af, this); @@ -1121,6 +1126,11 @@ public class AbilityFactoryZoneAffecting { AbilityFactoryZoneAffecting.discardResolve(af, this); } + @Override + public boolean canPlayAI() { + return AbilityFactoryZoneAffecting.discardCanPlayAI(af, this); + } + @Override public boolean chkAIDrawback() { return AbilityFactoryZoneAffecting.discardCheckDrawbackAI(af, this);