mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
A lot of fixes in cards.txt and the CardFactories, removed all warnings.
This commit is contained in:
@@ -18,6 +18,7 @@ forest.jpg http://resources.wizards.com/magic/cards/unh/en-us/card73946.jpg
|
||||
forest1.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=2748
|
||||
forest2.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=587
|
||||
forest3.jpg http://gatherer.wizards.com/handlers/image.ashx?type=card&multiverseid=586
|
||||
benalish_trapper.jpg http://www.wizards.com/global/images/magic/general/benalish_trapper.jpg
|
||||
merfolk_looter.jpg http://www.wizards.com/global/images/magic/general/merfolk_looter.jpg
|
||||
thornscape_apprentice.jpg http://www.wizards.com/global/images/magic/general/thornscape_apprentice.jpg
|
||||
scepter_of_insight.jpg http://www.wizards.com/global/images/magic/general/scepter_of_insight.jpg
|
||||
@@ -58,7 +59,6 @@ azorius_first_wing.jpg http://www.wizards.com/global/images/magic/general/azori
|
||||
bant_sureblade.jpg http://www.wizards.com/global/images/magic/general/bant_sureblade.jpg
|
||||
bartel_runeaxe.jpg http://www.wizards.com/global/images/magic/general/bartel_runeaxe.jpg
|
||||
benalish_heralds.jpg http://www.wizards.com/global/images/magic/general/benalish_heralds.jpg
|
||||
benalish_hero.jpg http://www.wizards.com/global/images/magic/general/benalish_hero.jpg
|
||||
boris_devilboon.jpg http://www.wizards.com/global/images/magic/general/boris_devilboon.jpg
|
||||
buoyancy.jpg http://www.wizards.com/global/images/magic/general/buoyancy.jpg
|
||||
dakkon_blackblade.jpg http://www.wizards.com/global/images/magic/general/dakkon_blackblade.jpg
|
||||
|
||||
@@ -9,14 +9,14 @@ G
|
||||
Creature Human Wizard
|
||||
no text
|
||||
1/1
|
||||
TgtKpump R T: First strike
|
||||
TgtKpump R T: First Strike
|
||||
|
||||
Scepter of Insight
|
||||
1 U U
|
||||
Artifact
|
||||
no text
|
||||
|
||||
Asha's favor
|
||||
Asha's Favor
|
||||
2 W
|
||||
Enchantment Aura
|
||||
Enchanted creature gains flying, first strike and vigilance.
|
||||
@@ -29,7 +29,7 @@ no text
|
||||
0/1
|
||||
Exalted
|
||||
|
||||
Blinding mage
|
||||
Blinding Mage
|
||||
1 W
|
||||
Creature Human Wizard
|
||||
no text
|
||||
@@ -57,13 +57,13 @@ spDrawCards:Count$TypeOppCtrlTapped.Creature:Draw a card for each tapped creatur
|
||||
Cruel Bargain
|
||||
B B B
|
||||
Sorcery
|
||||
no text
|
||||
(NOTE: "You lose half your life, rounded up." is not implemented.)
|
||||
spDrawCards:4:Drawback$LoseLifeYou/Count$YourLifeTotal/HalfUp:Draw four cards.:You lose half your life, rounded up.:Cruel Bargain - Draw cards and lose half your life, rounded up.
|
||||
|
||||
Infernal Contract
|
||||
B B B
|
||||
Sorcery
|
||||
no text
|
||||
(NOTE: "You lose half your life, rounded up." is not implemented.)
|
||||
spDrawCards:4:Drawback$LoseLifeYou/Count$YourLifeTotal/HalfUp:Draw four cards.:You lose half your life, rounded up.:Infernal Contract - Draw cards and lose half your life, rounded up.
|
||||
|
||||
Theft of Dreams
|
||||
@@ -100,7 +100,7 @@ Inspiration
|
||||
3 U
|
||||
Sorcery
|
||||
no text
|
||||
spDrawCards:2:Draw two cards.:Inspiration - draw 2 cards.
|
||||
spDrawCardsTgt:2:Target player draws two cards.:Inspiration - draw 2 cards.
|
||||
|
||||
Concentrate
|
||||
2 U U
|
||||
@@ -365,7 +365,7 @@ no text
|
||||
Sacred Nectar
|
||||
1 W
|
||||
Sorcery
|
||||
You gain 4 life.
|
||||
no text
|
||||
|
||||
Maniacal Rage
|
||||
1 R
|
||||
@@ -376,14 +376,14 @@ Enchant creature
|
||||
Scavenged Weaponry
|
||||
2 B
|
||||
Enchantment Aura
|
||||
Enchanted creature gets +1/+1.
|
||||
Enchanted creature gets +1/+1. Draw a card.
|
||||
Enchant creature
|
||||
Cantrip
|
||||
|
||||
Shield of Duty and Reason
|
||||
W
|
||||
Enchantment Aura
|
||||
Enchanted creature has first protection from green and from blue.
|
||||
Enchanted creature has protection from green and from blue.
|
||||
Enchant creature
|
||||
|
||||
Reflexes
|
||||
@@ -435,7 +435,7 @@ spDamageTgtCP:Count$NamedInAllYards.Kindle/Plus.2:Kindle deals X damage to targe
|
||||
|
||||
Ire of Kaminari
|
||||
3 R
|
||||
Instant — Arcane
|
||||
Instant Arcane
|
||||
no text
|
||||
spDamageTgtCP:Count$TypeInYourYard.Arcane:Ire of Kaminari deals damage to target creature or player equal to the number of Arcane cards in your graveyard.
|
||||
|
||||
@@ -479,7 +479,7 @@ Thermal Blast
|
||||
4 R
|
||||
Instant
|
||||
no text
|
||||
spDamageTgtC:Count$Hellbent.5.3:Thermal Blast deals 3 damage to target creature. Threshold — Thermal Blast deals 5 damage to that creature instead if seven or more cards are in your graveyard.
|
||||
spDamageTgtC:Count$Hellbent.5.3:Thermal Blast deals 3 damage to target creature. Threshold - Thermal Blast deals 5 damage to that creature instead if seven or more cards are in your graveyard.
|
||||
|
||||
Spitting Earth
|
||||
1 R
|
||||
@@ -1196,7 +1196,7 @@ tap: add 1
|
||||
Darkwater Catacombs
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
1,tap: add U B
|
||||
1,tap: add U B
|
||||
|
||||
Fetid Heath
|
||||
@@ -1258,7 +1258,7 @@ tap: add 1
|
||||
Mossfire Valley
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
1,tap: add R G
|
||||
1,tap: add R G
|
||||
|
||||
Mystic Gate
|
||||
@@ -1293,7 +1293,7 @@ tap: add 1
|
||||
Shadowblood Ridge
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
1,tap: add B R
|
||||
1,tap: add B R
|
||||
|
||||
Shimmering Grotto
|
||||
@@ -1310,13 +1310,13 @@ tap: add 1
|
||||
Skycloud Expanse
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
1,tap: add W U
|
||||
1,tap: add W U
|
||||
|
||||
Sungrass Prairie
|
||||
no cost
|
||||
Land
|
||||
no text
|
||||
1,tap: add W G
|
||||
1,tap: add W G
|
||||
|
||||
Sunken Ruins
|
||||
@@ -1803,7 +1803,7 @@ Protection from green
|
||||
Dosan's Oldest Chant
|
||||
4 G
|
||||
Sorcery
|
||||
You gain 6 life
|
||||
Draw a card.
|
||||
Cantrip
|
||||
|
||||
Sluggishness
|
||||
@@ -2318,7 +2318,7 @@ Cantrip
|
||||
|
||||
Morsel Theft
|
||||
2 B B
|
||||
Sorcery
|
||||
Tribal Sorcery Rogue
|
||||
Target player loses 3 life and you gain 3 life. (NOTE: "Prowl" is not implemented.)
|
||||
spLoseLifeGainLife:3
|
||||
|
||||
@@ -10983,12 +10983,12 @@ Put two 1/1 red Goblin creature tokens into play. Storm (When you play this spel
|
||||
|
||||
Feudkiller's Verdict
|
||||
4 W W
|
||||
Sorcery
|
||||
Tribal Sorcery Giant
|
||||
You gain 10 life. Then if you have more life than an opponent, put a 5/5 white Giant Warrior creature token into play.
|
||||
|
||||
Reach of Branches
|
||||
4 G
|
||||
Instant
|
||||
Tribal Instant Treefolk
|
||||
Put a 2/5 green Treefolk Shaman creature token into play. Whenever a Forest comes into play under your control, you may return Reach of Branches from your graveyard to your hand.
|
||||
|
||||
Meadowboon
|
||||
@@ -11017,7 +11017,7 @@ Fear
|
||||
|
||||
Bitterblossom
|
||||
1 B
|
||||
Enchantment Faerie
|
||||
Tribal Enchantment Faerie
|
||||
At the beginning of your upkeep, you lose 1 life and put a 1/1 black Faerie Rogue creature token with flying into play.
|
||||
|
||||
Ambassador Oak
|
||||
|
||||
Binary file not shown.
@@ -20,9 +20,11 @@ public class Deck implements Serializable {
|
||||
|
||||
private String deckType;
|
||||
|
||||
/*
|
||||
private boolean isRegular;
|
||||
private boolean isSealed;
|
||||
private boolean isDraft;
|
||||
*/
|
||||
|
||||
private ArrayList<String> main;
|
||||
private ArrayList<String> sideboard;
|
||||
|
||||
@@ -28,7 +28,6 @@ public class QuestData_State implements Serializable {
|
||||
ArrayList<String> cardPool;
|
||||
HashMap<String, Deck> myDecks, aiDecks;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Object readResolve() throws ObjectStreamException {
|
||||
// System.out.println("resolving obsolete QuestData_State");
|
||||
Map<String, forge.Deck> myDecks = new HashMap<String, forge.Deck>();
|
||||
|
||||
@@ -3326,85 +3326,6 @@ public class CardFactory implements NewConstants {
|
||||
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Magus of the Disk"))
|
||||
{
|
||||
SpellAbility summoningSpell = new Spell_Permanent(card)
|
||||
{
|
||||
private static final long serialVersionUID = 2510163318362956239L;
|
||||
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
boolean nevinyrralInPlay = false;
|
||||
|
||||
CardList inPlay = new CardList();
|
||||
inPlay.addAll(AllZone.Computer_Play.getCards());
|
||||
for(int i=0; i<inPlay.size(); ++i)
|
||||
{
|
||||
if( inPlay.getCard(i).getName().equals("Nevinyrral's Disk"))
|
||||
{
|
||||
nevinyrralInPlay = true;
|
||||
}
|
||||
}
|
||||
return ! nevinyrralInPlay && (0 < CardFactoryUtil.AI_getHumanCreature(card, false).size());
|
||||
}
|
||||
};
|
||||
card.clearSpellAbility();
|
||||
card.addSpellAbility(summoningSpell);
|
||||
|
||||
card.addComesIntoPlayCommand(new Command()
|
||||
{
|
||||
private static final long serialVersionUID = 1227443034730254929L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
card.tap();
|
||||
}
|
||||
});
|
||||
final SpellAbility ability = new Ability_Tap(card, "1")
|
||||
{
|
||||
private static final long serialVersionUID = -4871606824998622131L;
|
||||
|
||||
public void resolve()
|
||||
{
|
||||
CardList all = new CardList();
|
||||
all.addAll(AllZone.Human_Play.getCards());
|
||||
all.addAll(AllZone.Computer_Play.getCards());
|
||||
all = filter(all);
|
||||
|
||||
for(int i = 0; i < all.size(); i++)
|
||||
AllZone.GameAction.destroy(all.get(i));
|
||||
}
|
||||
private CardList filter(CardList list)
|
||||
{
|
||||
return list.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c)
|
||||
{
|
||||
return c.isArtifact() || c.isCreature() || c.isEnchantment();
|
||||
}
|
||||
});
|
||||
}//filter()
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
CardList human = new CardList(AllZone.Human_Play.getCards());
|
||||
CardList computer = new CardList(AllZone.Computer_Play.getCards());
|
||||
|
||||
human = human.getType("Creature");
|
||||
computer = computer.getType("Creature");
|
||||
|
||||
//the computer will at least destroy 2 more human creatures
|
||||
return computer.size() < human.size()-1 || AllZone.Computer_Life.getLife() < 7;
|
||||
}
|
||||
};//SpellAbility
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("1, tap: Destroy all artifacts, creatures, and enchantments.");
|
||||
ability.setStackDescription("Destroy all artifacts, creatures, and enchantments.");
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Tanglebloom"))
|
||||
{
|
||||
@@ -15996,6 +15917,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
|
||||
}
|
||||
}
|
||||
};//Input
|
||||
ability.setDescription("W U B R G: Exile target permanent.");
|
||||
|
||||
ability.setBeforePayMana(target);
|
||||
card.addSpellAbility(ability);
|
||||
@@ -16038,6 +15960,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
|
||||
}
|
||||
}
|
||||
};//Input
|
||||
ability.setDescription("1, tap: Untap target artifact.");
|
||||
|
||||
ability.setBeforePayMana(target);
|
||||
card.addSpellAbility(ability);
|
||||
|
||||
@@ -4073,7 +4073,6 @@ public class CardFactory_Creatures {
|
||||
ability.setDescription("B R G, Tap: Return target creature card from your graveyard to your hand.");
|
||||
ability.setStackDescription(cardName + " - return target creature from your graveyard to your hand.");
|
||||
|
||||
card.clearSpellAbility();
|
||||
card.addSpellAbility(ability);
|
||||
|
||||
|
||||
@@ -7658,7 +7657,7 @@ public class CardFactory_Creatures {
|
||||
else if(cardName.equals("Xira Arien"))
|
||||
{
|
||||
//mana tap ability
|
||||
final Ability_Tap ability = new Ability_Tap(card, "G R B")
|
||||
final Ability_Tap ability = new Ability_Tap(card, "B R G")
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = 5373361883064666451L;
|
||||
@@ -7686,7 +7685,7 @@ public class CardFactory_Creatures {
|
||||
}
|
||||
};//SpellAbility
|
||||
|
||||
ability.setDescription("Tap: Target player draws a card.");
|
||||
ability.setDescription("B R G, Tap: Target player draws a card.");
|
||||
//ability.setBeforePayMana(new Input_NoCost_TapAbility(ability));
|
||||
ability.setBeforePayMana(CardFactoryUtil.input_targetPlayer(ability));
|
||||
|
||||
@@ -15435,6 +15434,84 @@ public class CardFactory_Creatures {
|
||||
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if(cardName.equals("Magus of the Disk"))
|
||||
{
|
||||
SpellAbility summoningSpell = new Spell_Permanent(card)
|
||||
{
|
||||
private static final long serialVersionUID = 2510163318362956239L;
|
||||
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
boolean nevinyrralInPlay = false;
|
||||
|
||||
CardList inPlay = new CardList();
|
||||
inPlay.addAll(AllZone.Computer_Play.getCards());
|
||||
for(int i=0; i<inPlay.size(); ++i)
|
||||
{
|
||||
if( inPlay.getCard(i).getName().equals("Nevinyrral's Disk"))
|
||||
{
|
||||
nevinyrralInPlay = true;
|
||||
}
|
||||
}
|
||||
return ! nevinyrralInPlay && (0 < CardFactoryUtil.AI_getHumanCreature(card, false).size());
|
||||
}
|
||||
};
|
||||
card.clearSpellAbility();
|
||||
card.addSpellAbility(summoningSpell);
|
||||
|
||||
card.addComesIntoPlayCommand(new Command()
|
||||
{
|
||||
private static final long serialVersionUID = 1227443034730254929L;
|
||||
|
||||
public void execute()
|
||||
{
|
||||
card.tap();
|
||||
}
|
||||
});
|
||||
final SpellAbility ability = new Ability_Tap(card, "1")
|
||||
{
|
||||
private static final long serialVersionUID = -4871606824998622131L;
|
||||
|
||||
public void resolve()
|
||||
{
|
||||
CardList all = new CardList();
|
||||
all.addAll(AllZone.Human_Play.getCards());
|
||||
all.addAll(AllZone.Computer_Play.getCards());
|
||||
all = filter(all);
|
||||
|
||||
for(int i = 0; i < all.size(); i++)
|
||||
AllZone.GameAction.destroy(all.get(i));
|
||||
}
|
||||
private CardList filter(CardList list)
|
||||
{
|
||||
return list.filter(new CardListFilter()
|
||||
{
|
||||
public boolean addCard(Card c)
|
||||
{
|
||||
return c.isArtifact() || c.isCreature() || c.isEnchantment();
|
||||
}
|
||||
});
|
||||
}//filter()
|
||||
public boolean canPlayAI()
|
||||
{
|
||||
CardList human = new CardList(AllZone.Human_Play.getCards());
|
||||
CardList computer = new CardList(AllZone.Computer_Play.getCards());
|
||||
|
||||
human = human.getType("Creature");
|
||||
computer = computer.getType("Creature");
|
||||
|
||||
//the computer will at least destroy 2 more human creatures
|
||||
return computer.size() < human.size()-1 || AllZone.Computer_Life.getLife() < 7;
|
||||
}
|
||||
};//SpellAbility
|
||||
card.addSpellAbility(ability);
|
||||
ability.setDescription("1, tap: Destroy all artifacts, creatures, and enchantments.");
|
||||
ability.setStackDescription("Destroy all artifacts, creatures, and enchantments.");
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
|
||||
// Cards with Cycling abilities
|
||||
// -1 means keyword "Cycling" not found
|
||||
if (shouldCycle(card) != -1)
|
||||
|
||||
@@ -1575,7 +1575,7 @@ class CardFactory_Equipment {
|
||||
{
|
||||
Card crd = card.getEquipping().get(0);
|
||||
|
||||
crd.addSemiPermanentDefenseBoost(1);
|
||||
crd.addSemiPermanentAttackBoost(1);
|
||||
}
|
||||
}//execute()
|
||||
};//Command
|
||||
@@ -1592,7 +1592,7 @@ class CardFactory_Equipment {
|
||||
{
|
||||
Card crd = card.getEquipping().get(0);
|
||||
|
||||
crd.addSemiPermanentDefenseBoost(-1);
|
||||
crd.addSemiPermanentAttackBoost(-1);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -183,6 +183,7 @@ public class GenerateConstructedDeck
|
||||
|
||||
//cards the AI cannot play (effectively):
|
||||
|
||||
remove.add("Necropotence");
|
||||
remove.add("Sensei's Divining Top");
|
||||
remove.add("Standstill");
|
||||
//remove.add("Counterspell");
|
||||
|
||||
@@ -406,6 +406,7 @@ public class GenerateConstructedMultiColorDeck
|
||||
|
||||
//cards the AI cannot play (effectively):
|
||||
|
||||
remove.add("Necropotence");
|
||||
remove.add("Sensei's Divining Top");
|
||||
remove.add("Standstill");
|
||||
//remove.add("Counterspell");
|
||||
|
||||
@@ -47,6 +47,7 @@ import forge.properties.NewConstants.LANG;
|
||||
* @version V0.0 24.10.2009
|
||||
* @author Clemens Koza
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstants.GUI.GuiDeckEditor {
|
||||
private static final long serialVersionUID = 680850452718332565L;
|
||||
|
||||
@@ -73,7 +74,7 @@ public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstant
|
||||
private JScrollPane jScrollPane1 = new JScrollPane();
|
||||
private JScrollPane jScrollPane2 = new JScrollPane();
|
||||
private JButton removeButton = new JButton();
|
||||
@SuppressWarnings("unused")
|
||||
|
||||
// border1
|
||||
private Border border1;
|
||||
private TitledBorder titledBorder1;
|
||||
@@ -766,7 +767,6 @@ public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstant
|
||||
}//removeButton_actionPerformed
|
||||
*/
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private void stats_actionPerformed(CardList list) {
|
||||
|
||||
}
|
||||
@@ -812,6 +812,8 @@ public class Gui_DeckEditorNew extends JFrame implements CardDetail, NewConstant
|
||||
*/
|
||||
|
||||
public abstract static class CardPoolModel extends AbstractTableModel {
|
||||
private static final long serialVersionUID = 7773113247062724912L;
|
||||
|
||||
private static final String[] labels = {"Qty", "Name", "Cost", "Color", "Type", "Stats", "R"};
|
||||
private static final Class<?>[] classes = {Integer.class, String.class, String.class, String.class};
|
||||
//values taken from TableModel
|
||||
|
||||
@@ -98,6 +98,10 @@ public class StateBasedEffects
|
||||
cardToEffectsList.put("Radiant, Archangel", new String[] {"Radiant_Archangel"});
|
||||
cardToEffectsList.put("Castle", new String[] {"Castle"});
|
||||
cardToEffectsList.put("Castle Raptors", new String[] {"Castle_Raptors"});
|
||||
cardToEffectsList.put("Levitation", new String[] {"Levitation"});
|
||||
cardToEffectsList.put("Knighthood", new String[] {"Knighthood"});
|
||||
cardToEffectsList.put("Absolute Law", new String[] {"Absolute_Law"});
|
||||
cardToEffectsList.put("Absolute Grace", new String[] {"Absolute_Grace"});
|
||||
cardToEffectsList.put("Mobilization", new String[] {"Mobilization"});
|
||||
cardToEffectsList.put("Serra's Blessing", new String[] {"Serras_Blessing"});
|
||||
cardToEffectsList.put("Cover of Darkness", new String[] {"Cover_of_Darkness"});
|
||||
|
||||
Reference in New Issue
Block a user