mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
- Cleanup (mostly in CardFactory_Creatures).
This commit is contained in:
@@ -1,83 +1,83 @@
|
||||
[duel]
|
||||
[metadata]
|
||||
Name=Darth Vader 3
|
||||
Title=Darth Vader
|
||||
Difficulty=hard
|
||||
Description=WU Battle of Wits style alternate win type deck with WoG
|
||||
Icon=Darth Vader.jpg
|
||||
Deck Type=constructed
|
||||
[main]
|
||||
31 Island
|
||||
31 Plains
|
||||
4 Tundra
|
||||
4 Arcane Sanctum
|
||||
4 Coastal Tower
|
||||
4 Glacial Fortress
|
||||
4 Sejiri Refuge
|
||||
4 Boreal Shelf
|
||||
4 Celestial Colonnade
|
||||
1 Library of Alexandria
|
||||
1 Mikokoro, Center of the Sea
|
||||
4 Man-o'-War
|
||||
4 Aven Riftwatcher
|
||||
4 Peacekeeper
|
||||
4 Magus of the Moat
|
||||
4 Wall of Reverence
|
||||
4 Wall of Denial
|
||||
4 Wall of Omens
|
||||
4 Plumeveil
|
||||
4 Perimeter Captain
|
||||
3 Stalwart Shield-Bearers
|
||||
4 Windborn Muse
|
||||
4 Soul Warden
|
||||
4 Sower of Temptation
|
||||
2 Grand Arbiter Augustin IV
|
||||
2 Gwafa Hazid, Profiteer
|
||||
2 Commander Eesha
|
||||
1 Soul's Attendant
|
||||
1 Intrepid Hero
|
||||
1 Mulldrifter
|
||||
1 Hanna, Ship's Navigator
|
||||
1 Serra Angel
|
||||
1 Thieving Magpie
|
||||
1 Arcanis the Omnipotent
|
||||
1 Mawcor
|
||||
1 Keiga, the Tide Star
|
||||
1 Prodigal Sorcerer
|
||||
1 Isamaru, Hound of Konda
|
||||
1 Riptide Crab
|
||||
1 Auriok Champion
|
||||
1 Kozilek, Butcher of Truth
|
||||
1 Ulamog, the Infinite Gyre
|
||||
2 Elspeth, Knight-Errant
|
||||
2 Ajani Goldmane
|
||||
4 Wrath of God
|
||||
4 Day of Judgment
|
||||
4 Hallowed Burial
|
||||
4 Retribution of the Meek
|
||||
4 Winds of Rath
|
||||
4 Planar Cleansing
|
||||
4 Akroma's Vengeance
|
||||
4 Purify
|
||||
4 Evacuation
|
||||
4 Upheaval
|
||||
3 Inundate
|
||||
4 Time Reversal
|
||||
4 Crib Swap
|
||||
4 Swords to Plowshares
|
||||
4 Invincible Hymn
|
||||
4 Bribery
|
||||
4 Concentrate
|
||||
3 Absorb
|
||||
2 Repulse
|
||||
2 Kiss of the Amesha
|
||||
1 Reduce to Dreams
|
||||
1 Resurrection
|
||||
1 Timetwister
|
||||
1 Ancestral Recall
|
||||
1 Time Walk
|
||||
4 Idyllic Tutor
|
||||
4 Academy Rector
|
||||
4 Enlightened Tutor
|
||||
4 Battle of Wits
|
||||
[sideboard]
|
||||
[duel]
|
||||
[metadata]
|
||||
Name=Darth Vader 3
|
||||
Title=Darth Vader
|
||||
Difficulty=hard
|
||||
Description=WU Battle of Wits deck
|
||||
Icon=Darth Vader.jpg
|
||||
Deck Type=constructed
|
||||
[main]
|
||||
31 Island
|
||||
31 Plains
|
||||
4 Tundra
|
||||
4 Arcane Sanctum
|
||||
4 Coastal Tower
|
||||
4 Glacial Fortress
|
||||
4 Sejiri Refuge
|
||||
4 Boreal Shelf
|
||||
4 Celestial Colonnade
|
||||
1 Library of Alexandria
|
||||
1 Mikokoro, Center of the Sea
|
||||
4 Man-o'-War
|
||||
4 Aven Riftwatcher
|
||||
4 Peacekeeper
|
||||
4 Magus of the Moat
|
||||
4 Wall of Reverence
|
||||
4 Wall of Denial
|
||||
4 Wall of Omens
|
||||
4 Plumeveil
|
||||
4 Perimeter Captain
|
||||
3 Stalwart Shield-Bearers
|
||||
4 Windborn Muse
|
||||
4 Soul Warden
|
||||
4 Sower of Temptation
|
||||
2 Grand Arbiter Augustin IV
|
||||
2 Gwafa Hazid, Profiteer
|
||||
2 Commander Eesha
|
||||
1 Soul's Attendant
|
||||
1 Intrepid Hero
|
||||
1 Mulldrifter
|
||||
1 Hanna, Ship's Navigator
|
||||
1 Serra Angel
|
||||
1 Thieving Magpie
|
||||
1 Arcanis the Omnipotent
|
||||
1 Mawcor
|
||||
1 Keiga, the Tide Star
|
||||
1 Prodigal Sorcerer
|
||||
1 Isamaru, Hound of Konda
|
||||
1 Riptide Crab
|
||||
1 Auriok Champion
|
||||
1 Kozilek, Butcher of Truth
|
||||
1 Ulamog, the Infinite Gyre
|
||||
2 Elspeth, Knight-Errant
|
||||
2 Ajani Goldmane
|
||||
4 Wrath of God
|
||||
4 Day of Judgment
|
||||
4 Hallowed Burial
|
||||
4 Retribution of the Meek
|
||||
4 Winds of Rath
|
||||
4 Planar Cleansing
|
||||
4 Akroma's Vengeance
|
||||
4 Purify
|
||||
4 Evacuation
|
||||
4 Upheaval
|
||||
3 Inundate
|
||||
4 Time Reversal
|
||||
4 Crib Swap
|
||||
4 Swords to Plowshares
|
||||
4 Invincible Hymn
|
||||
4 Bribery
|
||||
4 Concentrate
|
||||
3 Absorb
|
||||
2 Repulse
|
||||
2 Kiss of the Amesha
|
||||
1 Reduce to Dreams
|
||||
1 Resurrection
|
||||
1 Timetwister
|
||||
1 Ancestral Recall
|
||||
1 Time Walk
|
||||
4 Idyllic Tutor
|
||||
4 Academy Rector
|
||||
4 Enlightened Tutor
|
||||
4 Battle of Wits
|
||||
[sideboard]
|
||||
|
||||
@@ -356,10 +356,6 @@ public class CombatUtil {
|
||||
|
||||
if (!attacker.hasKeyword("Shadow")
|
||||
&& blocker.hasKeyword("Shadow")) return false;
|
||||
|
||||
if (blocker.hasKeyword("CARDNAME can't block black creatures.")) {
|
||||
if (attacker.isBlack()) return false;
|
||||
}
|
||||
|
||||
if (attacker.hasKeyword("Creatures with power less than CARDNAME's power can't block it.")
|
||||
&& attacker.getNetAttack() > blocker.getNetAttack())
|
||||
|
||||
@@ -598,60 +598,6 @@ public class CardFactory_Creatures {
|
||||
card.addSpellAbility(ability);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
/*
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Hermit Druid")) {
|
||||
Cost abCost = new Cost("G T", cardName, true);
|
||||
final Ability_Activated ability = new Ability_Activated(card, abCost, null) {
|
||||
private static final long serialVersionUID = 5884624727757154056L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
//Use the ability if there is still a forest in the library
|
||||
CardList library = card.getController().getCardsIn(Zone.Library);
|
||||
return !library.getName("Forest").isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resolve() {
|
||||
CardList library = card.getController().getCardsIn(Zone.Library);
|
||||
if (library.size() == 0) return; // maybe provide some notification that library is empty?
|
||||
|
||||
CardList revealed = new CardList();
|
||||
|
||||
Card basicGrab = null;
|
||||
|
||||
int count = 0;
|
||||
// reveal top card until library runs out or hit a basic land
|
||||
while (basicGrab == null) {
|
||||
Card top = library.get(count);
|
||||
count++;
|
||||
revealed.add(top);
|
||||
|
||||
if (top.isBasicLand())
|
||||
basicGrab = top;
|
||||
|
||||
if (count == library.size())
|
||||
break;
|
||||
}//while
|
||||
GuiUtils.getChoiceOptional("Revealed cards:", revealed.toArray());
|
||||
|
||||
if (basicGrab != null) {
|
||||
// put basic in hand
|
||||
AllZone.getGameAction().moveToHand(basicGrab);
|
||||
revealed.remove(basicGrab);
|
||||
}
|
||||
// place revealed cards in graveyard (TODO: player should choose order)
|
||||
for (Card c : revealed) {
|
||||
AllZone.getGameAction().moveToGraveyard(c);
|
||||
}
|
||||
}
|
||||
};
|
||||
ability.setStackDescription(abCost + "Reveal cards from the top of your library until you reveal a basic land card." +
|
||||
" Put that card into your hand and all other cards revealed this way into your graveyard.");
|
||||
card.addSpellAbility(ability);
|
||||
}//*************** END ************ END **************************
|
||||
*/
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Vedalken Plotter")) {
|
||||
@@ -1315,217 +1261,6 @@ public class CardFactory_Creatures {
|
||||
card.addSpellAbility(ability);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
/*
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Figure of Destiny")) {
|
||||
Ability ability1 = new Ability(card, "RW") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
boolean artifact = false;
|
||||
card.setBaseAttack(2);
|
||||
card.setBaseDefense(2);
|
||||
|
||||
card.removeIntrinsicKeyword("Flying");
|
||||
card.removeIntrinsicKeyword("First Strike");
|
||||
|
||||
if (card.isArtifact()) artifact = true;
|
||||
|
||||
card.setType(new ArrayList<String>());
|
||||
if (artifact) card.addType("Artifact");
|
||||
card.addType("Creature");
|
||||
card.addType("Kithkin");
|
||||
card.addType("Spirit");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
return !card.isType("Spirit")
|
||||
&& super.canPlayAI();
|
||||
}
|
||||
|
||||
};// ability1
|
||||
|
||||
ability1.setDescription("RW: Figure of Destiny becomes a 2/2 Kithkin Spirit.");
|
||||
ability1.setStackDescription("Figure of Destiny becomes a 2/2 Kithkin Spirit.");
|
||||
card.addSpellAbility(ability1);
|
||||
|
||||
|
||||
Ability ability2 = new Ability(card, "RW RW RW") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
if (card.isType("Spirit")) {
|
||||
boolean artifact = false;
|
||||
card.setBaseAttack(4);
|
||||
card.setBaseDefense(4);
|
||||
|
||||
card.removeIntrinsicKeyword("Flying");
|
||||
card.removeIntrinsicKeyword("First Strike");
|
||||
|
||||
if (card.isArtifact()) artifact = true;
|
||||
|
||||
card.setType(new ArrayList<String>());
|
||||
if (artifact) card.addType("Artifact");
|
||||
card.addType("Creature");
|
||||
card.addType("Kithkin");
|
||||
card.addType("Spirit");
|
||||
card.addType("Warrior");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlay() {
|
||||
return card.isType("Spirit")
|
||||
&& super.canPlay();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
return !card.isType("Warrior")
|
||||
&& super.canPlayAI();
|
||||
}
|
||||
|
||||
};// ability2
|
||||
|
||||
ability2.setDescription("RW RW RW: If Figure of Destiny is a Spirit, it becomes a 4/4 Kithkin Spirit Warrior.");
|
||||
ability2.setStackDescription("Figure of Destiny becomes a 4/4 Kithkin Spirit Warrior.");
|
||||
card.addSpellAbility(ability2);
|
||||
|
||||
|
||||
Ability ability3 = new Ability(card, "RW RW RW RW RW RW") {
|
||||
@Override
|
||||
public void resolve() {
|
||||
if (card.isType("Warrior")) {
|
||||
boolean artifact = false;
|
||||
card.setBaseAttack(8);
|
||||
card.setBaseDefense(8);
|
||||
|
||||
card.addIntrinsicKeyword("Flying");
|
||||
card.addIntrinsicKeyword("First Strike");
|
||||
|
||||
if (card.isArtifact()) artifact = true;
|
||||
|
||||
card.setType(new ArrayList<String>());
|
||||
if (artifact) card.addType("Artifact");
|
||||
card.addType("Creature");
|
||||
card.addType("Kithkin");
|
||||
card.addType("Spirit");
|
||||
card.addType("Warrior");
|
||||
card.addType("Avatar");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlay() {
|
||||
return card.isType("Warrior")
|
||||
&& super.canPlay();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
return !card.isType("Avatar")
|
||||
&& super.canPlayAI();
|
||||
}
|
||||
};// ability3
|
||||
|
||||
StringBuilder sbDesc = new StringBuilder();
|
||||
sbDesc.append("RW RW RW RW RW RW: If Figure of Destiny is a Warrior, it becomes ");
|
||||
sbDesc.append("an 8/8 Kithkin Spirit Warrior Avatar with flying and first strike.");
|
||||
ability3.setDescription(sbDesc.toString());
|
||||
|
||||
ability3.setStackDescription("Figure of Destiny becomes an 8/8 Kithkin Spirit Warrior Avatar with flying and first strike.");
|
||||
card.addSpellAbility(ability3);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
*/
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Cantivore")) {
|
||||
SpellAbility spell = new Spell_Permanent(card) {
|
||||
private static final long serialVersionUID = 7254358703158629514L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCardsIn(Zone.Graveyard);
|
||||
list = list.getType("Enchantment");
|
||||
return super.canPlayAI() && list.size() > 0;
|
||||
}
|
||||
};
|
||||
// Do not remove SpellAbilities created by AbilityFactory or Keywords.
|
||||
card.clearFirstSpell();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Terravore")) {
|
||||
SpellAbility spell = new Spell_Permanent(card) {
|
||||
private static final long serialVersionUID = 7316190829288665283L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCardsIn(Zone.Graveyard);
|
||||
list = list.getType("Land");
|
||||
return super.canPlayAI() && list.size() > 0;
|
||||
}
|
||||
};
|
||||
// Do not remove SpellAbilities created by AbilityFactory or Keywords.
|
||||
card.clearFirstSpell();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Mortivore")) {
|
||||
SpellAbility spell = new Spell_Permanent(card) {
|
||||
private static final long serialVersionUID = -7118801410173525870L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCardsIn(Zone.Graveyard);
|
||||
list = list.getType("Creature");
|
||||
return super.canPlayAI() && list.size() > 0;
|
||||
}
|
||||
};
|
||||
// Do not remove SpellAbilities created by AbilityFactory or Keywords.
|
||||
card.clearFirstSpell();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Cognivore")) {
|
||||
SpellAbility spell = new Spell_Permanent(card) {
|
||||
private static final long serialVersionUID = -2216181341715046786L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCardsIn(Zone.Graveyard);
|
||||
list = list.getType("Instant");
|
||||
return super.canPlayAI() && list.size() > 0;
|
||||
}
|
||||
};
|
||||
// Do not remove SpellAbilities created by AbilityFactory or Keywords.
|
||||
card.clearFirstSpell();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Magnivore")) {
|
||||
SpellAbility spell = new Spell_Permanent(card) {
|
||||
private static final long serialVersionUID = -2252263708643462897L;
|
||||
|
||||
@Override
|
||||
public boolean canPlayAI() {
|
||||
CardList list = AllZoneUtil.getCardsIn(Zone.Graveyard);
|
||||
list = list.getType("Sorcery");
|
||||
return super.canPlayAI() && list.size() > 0;
|
||||
}
|
||||
};
|
||||
// Do not remove SpellAbilities created by AbilityFactory or Keywords.
|
||||
card.clearFirstSpell();
|
||||
card.addSpellAbility(spell);
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Shifting Wall") || cardName.equals("Maga, Traitor to Mortals") || cardName.equals("Feral Hydra")
|
||||
@@ -3017,6 +2752,7 @@ public class CardFactory_Creatures {
|
||||
ability.setStackDescription(sb.toString());
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
//*************** START *********** START **************************
|
||||
else if (cardName.equals("Awakener Druid")) {
|
||||
final long[] timeStamp = {0};
|
||||
@@ -3076,8 +2812,6 @@ public class CardFactory_Creatures {
|
||||
SpellAbility myAb = createAb.getAbility(abilityBuilder.toString(), card);
|
||||
|
||||
card.addSpellAbility(myAb);
|
||||
|
||||
|
||||
}//*************** END ************ END **************************
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user