- Bugfix AF_Bounce Null Pointer Error in Stack Description

- Added clearFirstSpellAbility and addFirstSpellAbility into Card when we want the default SpellPermanent/Spell to be cleared but keep other things added on the card
- Changed enPump to use the above firstSpellAbility functions
- Changed Targeting to remove previously targeted cards from it's choice list for use with Graveyard targeting.
- Added Phyrexian Boon, Viscerid Armor, and Misinformation
This commit is contained in:
jendave
2011-08-06 10:58:14 +00:00
parent d117337907
commit a2730c0277
8 changed files with 68 additions and 8 deletions

3
.gitattributes vendored
View File

@@ -2918,6 +2918,7 @@ res/cardsfolder/miscalculation.txt -text svneol=native#text/plain
res/cardsfolder/misfortunes_gain.txt -text svneol=native#text/plain
res/cardsfolder/mishra_artificer_prodigy.txt -text svneol=native#text/plain
res/cardsfolder/mishras_factory.txt -text svneol=native#text/plain
res/cardsfolder/misinformation.txt -text svneol=native#text/plain
res/cardsfolder/misshapen_fiend.txt -text svneol=native#text/plain
res/cardsfolder/mist_leopard.txt -text svneol=native#text/plain
res/cardsfolder/mistform_ultimus.txt -text svneol=native#text/plain
@@ -3324,6 +3325,7 @@ res/cardsfolder/phobian_phantasm.txt -text svneol=native#text/plain
res/cardsfolder/phylactery_lich.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_arena.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_battleflies.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_boon.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_gargantua.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_ghoul.txt -text svneol=native#text/plain
res/cardsfolder/phyrexian_hulk.txt -text svneol=native#text/plain
@@ -4982,6 +4984,7 @@ res/cardsfolder/virtuous_charge.txt -text svneol=native#text/plain
res/cardsfolder/virulent_sliver.txt -text svneol=native#text/plain
res/cardsfolder/visara_the_dreadful.txt -text svneol=native#text/plain
res/cardsfolder/viscera_dragger.txt -text svneol=native#text/plain
res/cardsfolder/viscerid_armor.txt -text svneol=native#text/plain
res/cardsfolder/viscerid_deepwalker.txt -text svneol=native#text/plain
res/cardsfolder/viscid_lemures.txt -text svneol=native#text/plain
res/cardsfolder/vision_skeins.txt -text svneol=native#text/plain

View File

@@ -0,0 +1,9 @@
Name:Misinformation
ManaCost:B
Types:Instant
Text:no text
A:SP$Retrieve | Cost$ B | Destination$ Library | LibraryPosition$ 0 | TgtPrompt$ Choose target card in opponent's graveyard | ValidTgts$ Card.YouDontCtrl | TargetMin$0 | TargetMax$3 | SpellDescription$ Put up to three target cards from an opponent's graveyard on top of his or her library in any order.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/misinformation.jpg
End

View File

@@ -0,0 +1,12 @@
Name:Phyrexian Boon
ManaCost:2 B
Types:Enchantment Aura
Text:no text
K:Enchant creature
K:enPump:+0/+0
K:stPumpEnchanted:Creature.Black:2/1:No Condition:Enchanted creature gets +2/+1 as long as it's black.
K:stPumpEnchanted:Creature.nonBlack:-1/-2:No Condition:Otherwise, it gets -1/-2.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_boon.jpg
End

View File

@@ -0,0 +1,11 @@
Name:Viscerid Armor
ManaCost:1 U
Types:Enchantment Aura
Text:no text
K:Enchant creature
K:enPump:+1/+1
A:AB$Bounce | Cost$ 1 U | Destination$Hand | SpellDescription$Return CARDNAME to its owner's hand.
SVar:RemAIDeck:True
SVar:Rarity:Common
SVar:Picture:http://www.wizards.com/global/images/magic/general/viscerid_armor.jpg
End

View File

@@ -84,9 +84,13 @@ public class AbilityFactory_Bounce {
StringBuilder sbTargets = new StringBuilder();
ArrayList<Card> tgts = af.getAbTgt().getTargetCards();
if (tgts.size() == 0)
ArrayList<Card> tgts;
if (af.getAbTgt() != null)
tgts = af.getAbTgt().getTargetCards();
else{
tgts = new ArrayList<Card>();
tgts.add(af.getHostCard());
}
for(Card c : tgts) {
sbTargets.append(" ");

View File

@@ -939,6 +939,10 @@ public class Card extends MyObservable {
return res;
}
public void clearFirstSpellAbility(){
spellAbility.remove(0);
}
public void clearSpellAbility() {
spellAbility.clear();
manaAbility.clear();
@@ -952,6 +956,13 @@ public class Card extends MyObservable {
manaAbility.clear();
}
public void addFirstSpellAbility(SpellAbility a){
a.setSourceCard(this);
if(a instanceof Ability_Mana) manaAbility.add(0, (Ability_Mana) a);
else spellAbility.add(0, a);
}
public void addSpellAbility(SpellAbility a) {
a.setSourceCard(this);
if(a instanceof Ability_Mana) manaAbility.add((Ability_Mana) a);

View File

@@ -2073,13 +2073,13 @@ class CardFactory_Auras {
if (k.length > 2) { spDesc[0] = k[2].trim(); } // Use the spell and stack descriptions included
if (k.length > 3) { stDesc[0] = k[3].trim(); } // with the keyword if they are present.
card.clearSpellAbility();
card.clearFirstSpellAbility();
if (! curse[0]) {
card.addSpellAbility(CardFactoryUtil.enPump_Enchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));
card.addFirstSpellAbility(CardFactoryUtil.enPump_Enchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));
}
else {
card.addSpellAbility(CardFactoryUtil.enPumpCurse_Enchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));
card.addFirstSpellAbility(CardFactoryUtil.enPumpCurse_Enchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));
}
card.addEnchantCommand(CardFactoryUtil.enPump_onEnchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));
card.addUnEnchantCommand(CardFactoryUtil.enPump_unEnchant(card, Power, Tough, extrinsicKeywords, spDesc, stDesc));

View File

@@ -1,5 +1,7 @@
package forge;
import java.util.ArrayList;
public class Target_Selection {
private Target target = null;
private SpellAbility ability = null;
@@ -65,10 +67,18 @@ public class Target_Selection {
@Override
public void showMessage() {
String zone = select.getTgt().getZone();
Target tgt = select.getTgt();
String zone = tgt.getZone();
CardList choices = AllZoneUtil.getCardsInZone(zone).getValidCards(Tgts, sa.getActivatingPlayer(), sa.getSourceCard());
// Remove cards already targeted
ArrayList<Card> targeted = tgt.getTargetCards();
for(Card c : targeted){
if (choices.contains(c))
choices.remove(c);
}
if (zone.equals(Constant.Zone.Play)){
boolean canTargetPlayer = false;
for(String s : Tgts)