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]
|
[duel]
|
||||||
[metadata]
|
[metadata]
|
||||||
Name=Darth Vader 3
|
Name=Darth Vader 3
|
||||||
Title=Darth Vader
|
Title=Darth Vader
|
||||||
Difficulty=hard
|
Difficulty=hard
|
||||||
Description=WU Battle of Wits style alternate win type deck with WoG
|
Description=WU Battle of Wits deck
|
||||||
Icon=Darth Vader.jpg
|
Icon=Darth Vader.jpg
|
||||||
Deck Type=constructed
|
Deck Type=constructed
|
||||||
[main]
|
[main]
|
||||||
31 Island
|
31 Island
|
||||||
31 Plains
|
31 Plains
|
||||||
4 Tundra
|
4 Tundra
|
||||||
4 Arcane Sanctum
|
4 Arcane Sanctum
|
||||||
4 Coastal Tower
|
4 Coastal Tower
|
||||||
4 Glacial Fortress
|
4 Glacial Fortress
|
||||||
4 Sejiri Refuge
|
4 Sejiri Refuge
|
||||||
4 Boreal Shelf
|
4 Boreal Shelf
|
||||||
4 Celestial Colonnade
|
4 Celestial Colonnade
|
||||||
1 Library of Alexandria
|
1 Library of Alexandria
|
||||||
1 Mikokoro, Center of the Sea
|
1 Mikokoro, Center of the Sea
|
||||||
4 Man-o'-War
|
4 Man-o'-War
|
||||||
4 Aven Riftwatcher
|
4 Aven Riftwatcher
|
||||||
4 Peacekeeper
|
4 Peacekeeper
|
||||||
4 Magus of the Moat
|
4 Magus of the Moat
|
||||||
4 Wall of Reverence
|
4 Wall of Reverence
|
||||||
4 Wall of Denial
|
4 Wall of Denial
|
||||||
4 Wall of Omens
|
4 Wall of Omens
|
||||||
4 Plumeveil
|
4 Plumeveil
|
||||||
4 Perimeter Captain
|
4 Perimeter Captain
|
||||||
3 Stalwart Shield-Bearers
|
3 Stalwart Shield-Bearers
|
||||||
4 Windborn Muse
|
4 Windborn Muse
|
||||||
4 Soul Warden
|
4 Soul Warden
|
||||||
4 Sower of Temptation
|
4 Sower of Temptation
|
||||||
2 Grand Arbiter Augustin IV
|
2 Grand Arbiter Augustin IV
|
||||||
2 Gwafa Hazid, Profiteer
|
2 Gwafa Hazid, Profiteer
|
||||||
2 Commander Eesha
|
2 Commander Eesha
|
||||||
1 Soul's Attendant
|
1 Soul's Attendant
|
||||||
1 Intrepid Hero
|
1 Intrepid Hero
|
||||||
1 Mulldrifter
|
1 Mulldrifter
|
||||||
1 Hanna, Ship's Navigator
|
1 Hanna, Ship's Navigator
|
||||||
1 Serra Angel
|
1 Serra Angel
|
||||||
1 Thieving Magpie
|
1 Thieving Magpie
|
||||||
1 Arcanis the Omnipotent
|
1 Arcanis the Omnipotent
|
||||||
1 Mawcor
|
1 Mawcor
|
||||||
1 Keiga, the Tide Star
|
1 Keiga, the Tide Star
|
||||||
1 Prodigal Sorcerer
|
1 Prodigal Sorcerer
|
||||||
1 Isamaru, Hound of Konda
|
1 Isamaru, Hound of Konda
|
||||||
1 Riptide Crab
|
1 Riptide Crab
|
||||||
1 Auriok Champion
|
1 Auriok Champion
|
||||||
1 Kozilek, Butcher of Truth
|
1 Kozilek, Butcher of Truth
|
||||||
1 Ulamog, the Infinite Gyre
|
1 Ulamog, the Infinite Gyre
|
||||||
2 Elspeth, Knight-Errant
|
2 Elspeth, Knight-Errant
|
||||||
2 Ajani Goldmane
|
2 Ajani Goldmane
|
||||||
4 Wrath of God
|
4 Wrath of God
|
||||||
4 Day of Judgment
|
4 Day of Judgment
|
||||||
4 Hallowed Burial
|
4 Hallowed Burial
|
||||||
4 Retribution of the Meek
|
4 Retribution of the Meek
|
||||||
4 Winds of Rath
|
4 Winds of Rath
|
||||||
4 Planar Cleansing
|
4 Planar Cleansing
|
||||||
4 Akroma's Vengeance
|
4 Akroma's Vengeance
|
||||||
4 Purify
|
4 Purify
|
||||||
4 Evacuation
|
4 Evacuation
|
||||||
4 Upheaval
|
4 Upheaval
|
||||||
3 Inundate
|
3 Inundate
|
||||||
4 Time Reversal
|
4 Time Reversal
|
||||||
4 Crib Swap
|
4 Crib Swap
|
||||||
4 Swords to Plowshares
|
4 Swords to Plowshares
|
||||||
4 Invincible Hymn
|
4 Invincible Hymn
|
||||||
4 Bribery
|
4 Bribery
|
||||||
4 Concentrate
|
4 Concentrate
|
||||||
3 Absorb
|
3 Absorb
|
||||||
2 Repulse
|
2 Repulse
|
||||||
2 Kiss of the Amesha
|
2 Kiss of the Amesha
|
||||||
1 Reduce to Dreams
|
1 Reduce to Dreams
|
||||||
1 Resurrection
|
1 Resurrection
|
||||||
1 Timetwister
|
1 Timetwister
|
||||||
1 Ancestral Recall
|
1 Ancestral Recall
|
||||||
1 Time Walk
|
1 Time Walk
|
||||||
4 Idyllic Tutor
|
4 Idyllic Tutor
|
||||||
4 Academy Rector
|
4 Academy Rector
|
||||||
4 Enlightened Tutor
|
4 Enlightened Tutor
|
||||||
4 Battle of Wits
|
4 Battle of Wits
|
||||||
[sideboard]
|
[sideboard]
|
||||||
|
|||||||
@@ -356,10 +356,6 @@ public class CombatUtil {
|
|||||||
|
|
||||||
if (!attacker.hasKeyword("Shadow")
|
if (!attacker.hasKeyword("Shadow")
|
||||||
&& blocker.hasKeyword("Shadow")) return false;
|
&& 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.")
|
if (attacker.hasKeyword("Creatures with power less than CARDNAME's power can't block it.")
|
||||||
&& attacker.getNetAttack() > blocker.getNetAttack())
|
&& attacker.getNetAttack() > blocker.getNetAttack())
|
||||||
|
|||||||
@@ -598,60 +598,6 @@ public class CardFactory_Creatures {
|
|||||||
card.addSpellAbility(ability);
|
card.addSpellAbility(ability);
|
||||||
}//*************** END ************ END **************************
|
}//*************** 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 **************************
|
//*************** START *********** START **************************
|
||||||
else if (cardName.equals("Vedalken Plotter")) {
|
else if (cardName.equals("Vedalken Plotter")) {
|
||||||
@@ -1315,217 +1261,6 @@ public class CardFactory_Creatures {
|
|||||||
card.addSpellAbility(ability);
|
card.addSpellAbility(ability);
|
||||||
}//*************** END ************ END **************************
|
}//*************** 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 **************************
|
//*************** START *********** START **************************
|
||||||
else if (cardName.equals("Shifting Wall") || cardName.equals("Maga, Traitor to Mortals") || cardName.equals("Feral Hydra")
|
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());
|
ability.setStackDescription(sb.toString());
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|
||||||
//*************** START *********** START **************************
|
//*************** START *********** START **************************
|
||||||
else if (cardName.equals("Awakener Druid")) {
|
else if (cardName.equals("Awakener Druid")) {
|
||||||
final long[] timeStamp = {0};
|
final long[] timeStamp = {0};
|
||||||
@@ -3076,8 +2812,6 @@ public class CardFactory_Creatures {
|
|||||||
SpellAbility myAb = createAb.getAbility(abilityBuilder.toString(), card);
|
SpellAbility myAb = createAb.getAbility(abilityBuilder.toString(), card);
|
||||||
|
|
||||||
card.addSpellAbility(myAb);
|
card.addSpellAbility(myAb);
|
||||||
|
|
||||||
|
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user