From cd15b720b4d0ed917e7eaac86d6243a3a5d64f38 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 09:02:37 +0000 Subject: [PATCH] - Converted Reckless Abandon and Goblin Grenade to use DealDamage Ability Factory - Added Fiery Conclusion, Magma Rift, Shard Volley, Shrapnel Blast, Sonic Burst, Sonic Seizure --- .gitattributes | 6 + res/cardsfolder/fiery_conclusion.txt | 8 ++ res/cardsfolder/goblin_grenade.txt | 5 +- res/cardsfolder/magma_rift.txt | 8 ++ res/cardsfolder/reckless_abandon.txt | 5 +- res/cardsfolder/shard_volley.txt | 8 ++ res/cardsfolder/shrapnel_blast.txt | 8 ++ res/cardsfolder/sonic_burst.txt | 8 ++ res/cardsfolder/sonic_seizure.txt | 8 ++ src/forge/CardFactory_Sorceries.java | 171 --------------------------- 10 files changed, 60 insertions(+), 175 deletions(-) create mode 100644 res/cardsfolder/fiery_conclusion.txt create mode 100644 res/cardsfolder/magma_rift.txt create mode 100644 res/cardsfolder/shard_volley.txt create mode 100644 res/cardsfolder/shrapnel_blast.txt create mode 100644 res/cardsfolder/sonic_burst.txt create mode 100644 res/cardsfolder/sonic_seizure.txt diff --git a/.gitattributes b/.gitattributes index 16961b796df..53f63814b16 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1369,6 +1369,7 @@ res/cardsfolder/fetid_heath.txt -text svneol=native#text/plain res/cardsfolder/fetid_horror.txt -text svneol=native#text/plain res/cardsfolder/feudkillers_verdict.txt -text svneol=native#text/plain res/cardsfolder/field_marshal.txt -text svneol=native#text/plain +res/cardsfolder/fiery_conclusion.txt -text svneol=native#text/plain res/cardsfolder/fiery_fall.txt -text svneol=native#text/plain res/cardsfolder/fiery_hellhound.txt -text svneol=native#text/plain res/cardsfolder/fiery_temper.txt -text svneol=native#text/plain @@ -2427,6 +2428,7 @@ res/cardsfolder/maggot_carrier.txt -text svneol=native#text/plain res/cardsfolder/maggot_therapy.txt -text svneol=native#text/plain res/cardsfolder/magma_giant.txt -text svneol=native#text/plain res/cardsfolder/magma_jet.txt -text svneol=native#text/plain +res/cardsfolder/magma_rift.txt -text svneol=native#text/plain res/cardsfolder/magnetic_flux.txt -text svneol=native#text/plain res/cardsfolder/magnify.txt -text svneol=native#text/plain res/cardsfolder/magnivore.txt -text svneol=native#text/plain @@ -3495,6 +3497,7 @@ res/cardsfolder/shambling_remains.txt -text svneol=native#text/plain res/cardsfolder/shambling_strider.txt -text svneol=native#text/plain res/cardsfolder/shanodin_dryads.txt -text svneol=native#text/plain res/cardsfolder/shaper_guildmage.txt -text svneol=native#text/plain +res/cardsfolder/shard_volley.txt -text svneol=native#text/plain res/cardsfolder/shared_triumph.txt -text svneol=native#text/plain res/cardsfolder/shatter.txt -text svneol=native#text/plain res/cardsfolder/shattered_dreams.txt -text svneol=native#text/plain @@ -3529,6 +3532,7 @@ res/cardsfolder/shock_troops.txt -text svneol=native#text/plain res/cardsfolder/shore_snapper.txt -text svneol=native#text/plain res/cardsfolder/shorecrasher_mimic.txt -text svneol=native#text/plain res/cardsfolder/shoreline_ranger.txt -text svneol=native#text/plain +res/cardsfolder/shrapnel_blast.txt -text svneol=native#text/plain res/cardsfolder/shriek_of_dread.txt -text svneol=native#text/plain res/cardsfolder/shrieking_specter.txt -text svneol=native#text/plain res/cardsfolder/shriekmaw.txt -text svneol=native#text/plain @@ -3696,6 +3700,8 @@ res/cardsfolder/soltari_trooper.txt -text svneol=native#text/plain res/cardsfolder/somber_hoverguard.txt -text svneol=native#text/plain res/cardsfolder/somnomancer.txt -text svneol=native#text/plain res/cardsfolder/song_of_serenity.txt -text svneol=native#text/plain +res/cardsfolder/sonic_burst.txt -text svneol=native#text/plain +res/cardsfolder/sonic_seizure.txt -text svneol=native#text/plain res/cardsfolder/sootfeather_flock.txt -text svneol=native#text/plain res/cardsfolder/soothing_balm.txt -text svneol=native#text/plain res/cardsfolder/sootwalkers.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/fiery_conclusion.txt b/res/cardsfolder/fiery_conclusion.txt new file mode 100644 index 00000000000..ab31e9e9137 --- /dev/null +++ b/res/cardsfolder/fiery_conclusion.txt @@ -0,0 +1,8 @@ +Name:Fiery Conclusion +ManaCost:1 R +Types:Instant +Text:no text +A:SP$DealDamage|Cost$1 R Sac<1/Creature>|Tgt$TgtC|NumDmg$5|SpellDescription$CARDNAME deals 5 damage to target creature. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/fiery_conclusion.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/goblin_grenade.txt b/res/cardsfolder/goblin_grenade.txt index ae3445d788f..db6778b7d28 100644 --- a/res/cardsfolder/goblin_grenade.txt +++ b/res/cardsfolder/goblin_grenade.txt @@ -1,7 +1,8 @@ Name:Goblin Grenade ManaCost:R Types:Sorcery -Text:As an additional cost to cast Goblin Grenade, sacrifice a Goblin. +Text:no text +A:SP$DealDamage|Cost$R Sac<1/Goblin>|Tgt$TgtCP|NumDmg$5|SpellDescription$CARDNAME deals 5 damage to target creature or player. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_grenade.jpg -End +End \ No newline at end of file diff --git a/res/cardsfolder/magma_rift.txt b/res/cardsfolder/magma_rift.txt new file mode 100644 index 00000000000..e206bf92040 --- /dev/null +++ b/res/cardsfolder/magma_rift.txt @@ -0,0 +1,8 @@ +Name:Magma Rift +ManaCost:2 R +Types:Sorcery +Text:no text +A:SP$DealDamage|Cost$2 R Sac<1/Land>|Tgt$TgtC|NumDmg$5|SpellDescription$CARDNAME deals 5 damage to target creature. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/magma_rift.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/reckless_abandon.txt b/res/cardsfolder/reckless_abandon.txt index 78928c7781f..551e75abd2a 100644 --- a/res/cardsfolder/reckless_abandon.txt +++ b/res/cardsfolder/reckless_abandon.txt @@ -1,7 +1,8 @@ Name:Reckless Abandon ManaCost:R Types:Sorcery -Text:As an additional cost to cast Reckless Abandon, sacrifice a creature. +Text:no text +A:SP$DealDamage|Cost$R Sac<1/Creature>|Tgt$TgtCP|NumDmg$4|SpellDescription$CARDNAME deals 4 damage to target creature or player. SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/reckless_abandon.jpg -End +End \ No newline at end of file diff --git a/res/cardsfolder/shard_volley.txt b/res/cardsfolder/shard_volley.txt new file mode 100644 index 00000000000..902cc5d4a5a --- /dev/null +++ b/res/cardsfolder/shard_volley.txt @@ -0,0 +1,8 @@ +Name:Shard Volley +ManaCost:R +Types:Instant +Text:no text +A:SP$DealDamage|Cost$R Sac<1/Land>|Tgt$TgtCP|NumDmg$3|SpellDescription$CARDNAME deals 3 damage to target creature or player. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/shard_volley.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/shrapnel_blast.txt b/res/cardsfolder/shrapnel_blast.txt new file mode 100644 index 00000000000..edf35c440a1 --- /dev/null +++ b/res/cardsfolder/shrapnel_blast.txt @@ -0,0 +1,8 @@ +Name:Shrapnel Blast +ManaCost:1 R +Types:Instant +Text:no text +A:SP$DealDamage|Cost$1 R Sac<1/Artifact>|Tgt$TgtCP|NumDmg$5|SpellDescription$CARDNAME deals 5 damage to target creature or player. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/shrapnel_blast.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/sonic_burst.txt b/res/cardsfolder/sonic_burst.txt new file mode 100644 index 00000000000..8fbd43a43b4 --- /dev/null +++ b/res/cardsfolder/sonic_burst.txt @@ -0,0 +1,8 @@ +Name:Sonic Burst +ManaCost:1 R +Types:Instant +Text:no text +A:SP$DealDamage|Cost$1 R Discard<1/Random>|Tgt$TgtCP|NumDmg$4|SpellDescription$CARDNAME deals 4 damage to target creature or player. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/sonic_burst.jpg +End \ No newline at end of file diff --git a/res/cardsfolder/sonic_seizure.txt b/res/cardsfolder/sonic_seizure.txt new file mode 100644 index 00000000000..fdc4939074f --- /dev/null +++ b/res/cardsfolder/sonic_seizure.txt @@ -0,0 +1,8 @@ +Name:Sonic Seizure +ManaCost:R +Types:Instant +Text:no text +A:SP$DealDamage|Cost$R Discard<1/Random>|Tgt$TgtCP|NumDmg$3|SpellDescription$CARDNAME deals 3 damage to target creature or player. +SVar:Rarity:Common +SVar:Picture:http://www.wizards.com/global/images/magic/general/sonic_seizure.jpg +End \ No newline at end of file diff --git a/src/forge/CardFactory_Sorceries.java b/src/forge/CardFactory_Sorceries.java index 52a8c71610e..7baa1733175 100644 --- a/src/forge/CardFactory_Sorceries.java +++ b/src/forge/CardFactory_Sorceries.java @@ -4116,177 +4116,6 @@ public class CardFactory_Sorceries { }//*************** END ************ END ************************** - //*************** START ************ START ************************** - else if(cardName.equals("Goblin Grenade") || cardName.equals("Reckless Abandon")) { - final int damage = cardName.equals("Reckless Abandon") ? 4 : 5; - final String type = cardName.equals("Reckless Abandon") ? "Creature" : "Goblin"; - final SpellAbility DamageCP = new Spell(card) { - private static final long serialVersionUID = -4289150611689144985L; - Card check; - - @Override - public boolean canPlay() { - CardList gobs = new CardList(AllZone.getZone(Constant.Zone.Play, card.getController()).getCards()); - gobs = gobs.getType(type); - - return super.canPlay() && gobs.size() > 0; - } - - @Override - public boolean canPlayAI() { - if(AllZone.Human_Life.getLife() <= damage) return true; - - PlayerZone compHand = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Computer); - CardList hand = new CardList(compHand.getCards()); - - if(hand.size() >= 8) return true; - - check = getFlying(); - return check != null; - } - - @Override - public void chooseTargetAI() { - if(AllZone.Human_Life.getLife() <= damage) { - setTargetPlayer(Constant.Player.Human); - return; - } - - PlayerZone compHand = AllZone.getZone(Constant.Zone.Hand, Constant.Player.Computer); - CardList hand = new CardList(compHand.getCards()); - - if(getFlying() == null && hand.size() >= 7) //not 8, since it becomes 7 when getting cast - { - setTargetPlayer(Constant.Player.Human); - return; - } - - Card c = getFlying(); - - if(check == null && c != null) Log.debug(card.getName(), "Check equals null"); - else if((c == null) || (!check.equals(c))) throw new RuntimeException(card - + " error in chooseTargetAI() - Card c is " + c + ", Card check is " + check); - - setTargetCard(c); - }//chooseTargetAI() - - //uses "damage" variable - Card getFlying() { - CardList flying = CardFactoryUtil.AI_getHumanCreature("Flying", card, true); - for(int i = 0; i < flying.size(); i++) - if(flying.get(i).getNetDefense() <= damage) { - Log.debug(card.getName(), "getFlying() returns " + flying.get(i).getName()); - return flying.get(i); - } - - Log.debug(card.getName(), "getFlying() returned null"); - return null; - } - - @Override - public void resolve() { - if(card.getController().equals(Constant.Player.Computer)) { - CardList gobs = new CardList(AllZone.getZone(Constant.Zone.Play, card.getController()).getCards()); - gobs = gobs.getType(type); - - if(gobs.size() > 0) { - CardListUtil.sortAttackLowFirst(gobs); - AllZone.GameAction.sacrifice(gobs.get(0)); - } - //TODO, if AI can't sack, break out of this - } - - if(getTargetCard() != null) { - if(AllZone.GameAction.isCardInPlay(getTargetCard()) - && CardFactoryUtil.canTarget(card, getTargetCard())) { - Card c = getTargetCard(); - //c.addDamage(damage); - AllZone.GameAction.addDamage(c, card, damage); - } - } else AllZone.GameAction.addDamage(getTargetPlayer(), card, damage); - //resolve() - } - }; //spellAbility - DamageCP.setDescription(card.getName() + " deals "+damage+" damage to target creature or player."); - //DamageCP.setStackDescription(card.getName() +" deals 5 damage."); - - Input target = new Input() { - private static final long serialVersionUID = 1843037500197925110L; - - @Override - public void showMessage() { - AllZone.Display.showMessage("Select target Creature, Player, or Planeswalker"); - ButtonUtil.enableOnlyCancel(); - } - - @Override - public void selectButtonCancel() { - stop(); - } - - @Override - public void selectCard(Card crd, PlayerZone zone) { - if((crd.isCreature() || crd.isPlaneswalker()) && zone.is(Constant.Zone.Play) - && CardFactoryUtil.canTarget(DamageCP, crd)) { - DamageCP.setTargetCard(crd); - done(); - } - }//selectCard() - - @Override - public void selectPlayer(String player) { - DamageCP.setTargetPlayer(player); - done(); - } - - void done() { - AllZone.Stack.add(DamageCP); - stop(); - } - }; - - Input targetSac = new Input() { - - private static final long serialVersionUID = -6102143961778874295L; - - @Override - public void showMessage() { - AllZone.Display.showMessage("Select a "+type+" to sacrifice."); - ButtonUtil.enableOnlyCancel(); - } - - @Override - public void selectButtonCancel() { - stop(); - } - - @Override - public void selectCard(Card crd, PlayerZone zone) { - CardList choices = new CardList( - AllZone.getZone(Constant.Zone.Play, card.getController()).getCards()); - choices = choices.getType(type); - - if(choices.contains(crd)) { - AllZone.GameAction.sacrifice(crd); - //DamageCP.setTargetCard(crd); - if(DamageCP instanceof Ability_Tap && DamageCP.getManaCost().equals("0")) stopSetNext(new Input_NoCost_TapAbility( - (Ability_Tap) DamageCP)); - else if(DamageCP.getManaCost().equals("0")) { - //AllZone.Stack.add(DamageCP); - stop(); - } else stopSetNext(new Input_PayManaCost(DamageCP)); - } - }//selectCard() - }; - - DamageCP.setBeforePayMana(targetSac); - DamageCP.setAfterPayMana(target); - card.clearSpellAbility(); - card.addSpellAbility(DamageCP); - }//*************** END ************ END ************************** - - - //*************** START *********** START ************************** else if(cardName.equals("Innocent Blood")) { final SpellAbility spell = new Spell(card) {