mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
- Added Lord of the Undead, tweaked one of the quest decks.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Lord of the Undead
|
||||||
|
1 B B
|
||||||
|
Creature Zombie
|
||||||
|
Other Zombie creatures get +1/+1.
|
||||||
|
2/2
|
||||||
|
|
||||||
Sound the Call
|
Sound the Call
|
||||||
2 G
|
2 G
|
||||||
Sorcery
|
Sorcery
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ quest8
|
|||||||
[general]
|
[general]
|
||||||
constructed
|
constructed
|
||||||
[main]
|
[main]
|
||||||
1 Windswept Heath
|
1 Temple Garden
|
||||||
1 Mox Emerald
|
1 Mox Emerald
|
||||||
2 Arctic Wolves
|
1 Arctic Wolves
|
||||||
|
4 Sound the Call
|
||||||
2 Wolfbriar Elemental
|
2 Wolfbriar Elemental
|
||||||
1 Plains
|
1 Plains
|
||||||
4 Wyluli Wolf
|
4 Wyluli Wolf
|
||||||
@@ -15,7 +16,7 @@ constructed
|
|||||||
18 Forest
|
18 Forest
|
||||||
4 Kodama's Reach
|
4 Kodama's Reach
|
||||||
2 Muraganda Petroglyphs
|
2 Muraganda Petroglyphs
|
||||||
4 Bestial Menace
|
1 Bestial Menace
|
||||||
4 Tundra Wolves
|
4 Tundra Wolves
|
||||||
4 Savannah
|
4 Savannah
|
||||||
[sideboard]
|
[sideboard]
|
||||||
|
|||||||
@@ -18397,6 +18397,66 @@ public class CardFactory_Creatures {
|
|||||||
ability.setBeforePayMana(CardFactoryUtil.input_targetPermanent(ability));
|
ability.setBeforePayMana(CardFactoryUtil.input_targetPermanent(ability));
|
||||||
}//*************** END ************ END **************************
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
|
|
||||||
|
//*************** START *********** START ************************
|
||||||
|
if(cardName.equals("Lord of the Undead")) {
|
||||||
|
final Ability_Tap ability = new Ability_Tap(card, "1 B") {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -4287216165943846367L;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlayAI() {
|
||||||
|
return getGraveCreatures().size() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void chooseTargetAI() {
|
||||||
|
CardList grave = getGraveCreatures();
|
||||||
|
Card target = CardFactoryUtil.AI_getBestCreature(grave);
|
||||||
|
setTargetCard(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void resolve() {
|
||||||
|
if(card.getController().equals(Constant.Player.Human)) {
|
||||||
|
Card c = AllZone.Display.getChoice("Select card", getGraveCreatures().toArray());
|
||||||
|
setTargetCard(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
|
||||||
|
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, card.getController());
|
||||||
|
|
||||||
|
if(AllZone.GameAction.isCardInZone(getTargetCard(), grave)) AllZone.GameAction.moveTo(hand,
|
||||||
|
getTargetCard());
|
||||||
|
}//resolve()
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canPlay() {
|
||||||
|
return super.canPlay() && getGraveCreatures().size() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CardList getGraveCreatures() {
|
||||||
|
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, card.getController());
|
||||||
|
CardList list = new CardList(grave.getCards());
|
||||||
|
list = list.filter(new CardListFilter(){
|
||||||
|
public boolean addCard(Card c)
|
||||||
|
{
|
||||||
|
return c.getType().contains("Zombie") || c.getKeyword().contains("Changeling");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
};//SpellAbility
|
||||||
|
ability.setDescription("1 B, Tap: Return target Zombie card from your graveyard to your hand.");
|
||||||
|
ability.setStackDescription(cardName + " - Return target Zombie card from your graveyard to your hand.");
|
||||||
|
|
||||||
|
card.addSpellAbility(ability);
|
||||||
|
|
||||||
|
}//*************** END ************ END **************************
|
||||||
|
|
||||||
// Cards with Cycling abilities
|
// Cards with Cycling abilities
|
||||||
// -1 means keyword "Cycling" not found
|
// -1 means keyword "Cycling" not found
|
||||||
if(shouldCycle(card) != -1) {
|
if(shouldCycle(card) != -1) {
|
||||||
|
|||||||
@@ -12647,6 +12647,87 @@ public class GameActionUtil {
|
|||||||
|
|
||||||
}; //Wizened Cenn Other
|
}; //Wizened Cenn Other
|
||||||
|
|
||||||
|
public static Command Lord_of_the_Undead_Pump = new Command() {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 4866202925944860238L;
|
||||||
|
CardList gloriousAnthemList = new CardList();
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
|
||||||
|
CardList cList = gloriousAnthemList;
|
||||||
|
Card c;
|
||||||
|
|
||||||
|
for(int i = 0; i < cList.size(); i++) {
|
||||||
|
c = cList.get(i);
|
||||||
|
c.addSemiPermanentAttackBoost(-1);
|
||||||
|
c.addSemiPermanentDefenseBoost(-1);
|
||||||
|
}
|
||||||
|
cList.clear();
|
||||||
|
PlayerZone[] zone = getZone("Lord of the Undead");
|
||||||
|
|
||||||
|
// for each zone found add +1/+1 to each card
|
||||||
|
for(int outer = 0; outer < zone.length; outer++) {
|
||||||
|
CardList creature = new CardList(
|
||||||
|
zone[outer].getCards());
|
||||||
|
creature = creature.getType("Zombie");
|
||||||
|
|
||||||
|
for(int i = 0; i < creature.size(); i++) {
|
||||||
|
c = creature.get(i);
|
||||||
|
if(c.isCreature()
|
||||||
|
&& !c.getName().equals(
|
||||||
|
"Lord of the Undead")) {
|
||||||
|
c.addSemiPermanentAttackBoost(1);
|
||||||
|
c.addSemiPermanentDefenseBoost(1);
|
||||||
|
|
||||||
|
gloriousAnthemList.add(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // for
|
||||||
|
} // for
|
||||||
|
|
||||||
|
}// execute()
|
||||||
|
|
||||||
|
}; //Lord_of_the_Undead_
|
||||||
|
|
||||||
|
public static Command Lord_of_the_Undead_Other = new Command() {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -6925991029956531314L;
|
||||||
|
int otherLords = 0;
|
||||||
|
|
||||||
|
private int countOtherLords(Card c) {
|
||||||
|
PlayerZone play = AllZone.getZone(Constant.Zone.Play, c.getController());
|
||||||
|
CardList capts = new CardList(play.getCards());
|
||||||
|
capts = capts.filter(new CardListFilter() {
|
||||||
|
public boolean addCard(Card c) {
|
||||||
|
return c.getName().equals(
|
||||||
|
"Lord of the Undead")
|
||||||
|
&& (c.getType().contains("Zombie") || c.getKeyword().contains(
|
||||||
|
"Changeling"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return capts.size() - 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void execute() {
|
||||||
|
|
||||||
|
CardList creature = new CardList();
|
||||||
|
creature.addAll(AllZone.Human_Play.getCards());
|
||||||
|
creature.addAll(AllZone.Computer_Play.getCards());
|
||||||
|
|
||||||
|
creature = creature.getName("Lord of the Undead");
|
||||||
|
|
||||||
|
for(int i = 0; i < creature.size(); i++) {
|
||||||
|
Card c = creature.get(i);
|
||||||
|
otherLords = countOtherLords(c);
|
||||||
|
c.setOtherAttackBoost(otherLords);
|
||||||
|
c.setOtherDefenseBoost(otherLords);
|
||||||
|
|
||||||
|
}// for inner
|
||||||
|
}// execute()
|
||||||
|
|
||||||
|
}; //Lord_of_the_Undead_Other
|
||||||
|
|
||||||
public static Command Cemetery_Reaper_Pump = new Command() {
|
public static Command Cemetery_Reaper_Pump = new Command() {
|
||||||
|
|
||||||
private static final long serialVersionUID = 3534935133707913819L;
|
private static final long serialVersionUID = 3534935133707913819L;
|
||||||
@@ -12695,8 +12776,8 @@ public class GameActionUtil {
|
|||||||
|
|
||||||
private int countOtherReapers(Card c) {
|
private int countOtherReapers(Card c) {
|
||||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, c.getController());
|
PlayerZone play = AllZone.getZone(Constant.Zone.Play, c.getController());
|
||||||
CardList capts = new CardList(play.getCards());
|
CardList reapers = new CardList(play.getCards());
|
||||||
capts = capts.filter(new CardListFilter() {
|
reapers = reapers.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals(
|
return c.getName().equals(
|
||||||
"Cemetery Reaper")
|
"Cemetery Reaper")
|
||||||
@@ -12704,7 +12785,7 @@ public class GameActionUtil {
|
|||||||
"Changeling"));
|
"Changeling"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return capts.size() - 1;
|
return reapers.size() - 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12725,7 +12806,7 @@ public class GameActionUtil {
|
|||||||
}// for inner
|
}// for inner
|
||||||
}// execute()
|
}// execute()
|
||||||
|
|
||||||
}; //Cemetery_Reaper_Oher
|
}; //Cemetery_Reaper_Other
|
||||||
|
|
||||||
public static Command Captain_of_the_Watch_Pump = new Command() {
|
public static Command Captain_of_the_Watch_Pump = new Command() {
|
||||||
private static final long serialVersionUID = 542524781150091105L;
|
private static final long serialVersionUID = 542524781150091105L;
|
||||||
@@ -16765,6 +16846,8 @@ public class GameActionUtil {
|
|||||||
commands.put("Elvish_Champion_Other", Elvish_Champion_Other);
|
commands.put("Elvish_Champion_Other", Elvish_Champion_Other);
|
||||||
commands.put("Wizened_Cenn_Pump", Wizened_Cenn_Pump);
|
commands.put("Wizened_Cenn_Pump", Wizened_Cenn_Pump);
|
||||||
commands.put("Wizened_Cenn_Other", Wizened_Cenn_Other);
|
commands.put("Wizened_Cenn_Other", Wizened_Cenn_Other);
|
||||||
|
commands.put("Lord_of_the_Undead_Pump", Lord_of_the_Undead_Pump);
|
||||||
|
commands.put("Lord_of_the_Undead_Other", Lord_of_the_Undead_Other);
|
||||||
commands.put("Cemetery_Reaper_Pump", Cemetery_Reaper_Pump);
|
commands.put("Cemetery_Reaper_Pump", Cemetery_Reaper_Pump);
|
||||||
commands.put("Cemetery_Reaper_Other", Cemetery_Reaper_Other);
|
commands.put("Cemetery_Reaper_Other", Cemetery_Reaper_Other);
|
||||||
commands.put("Captain_of_the_Watch_Pump", Captain_of_the_Watch_Pump);
|
commands.put("Captain_of_the_Watch_Pump", Captain_of_the_Watch_Pump);
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ public class StaticEffects
|
|||||||
cardToEffectsList.put("Privileged Position", new String[] {"Privileged_Position", "Privileged_Position_Other"});
|
cardToEffectsList.put("Privileged Position", new String[] {"Privileged_Position", "Privileged_Position_Other"});
|
||||||
cardToEffectsList.put("Elvish Archdruid", new String[] {"Elvish_Archdruid_Pump", "Elvish_Archdruid_Other"});
|
cardToEffectsList.put("Elvish Archdruid", new String[] {"Elvish_Archdruid_Pump", "Elvish_Archdruid_Other"});
|
||||||
cardToEffectsList.put("Wizened Cenn", new String[] {"Wizened_Cenn_Pump", "Wizened_Cenn_Other"});
|
cardToEffectsList.put("Wizened Cenn", new String[] {"Wizened_Cenn_Pump", "Wizened_Cenn_Other"});
|
||||||
|
cardToEffectsList.put("Lord of the Undead", new String[] {"Lord_of_the_Undead_Pump", "Lord_of_the_Undead_Other"});
|
||||||
cardToEffectsList.put("Cemetery Reaper", new String[] {"Cemetery_Reaper_Pump", "Cemetery_Reaper_Other"});
|
cardToEffectsList.put("Cemetery Reaper", new String[] {"Cemetery_Reaper_Pump", "Cemetery_Reaper_Other"});
|
||||||
cardToEffectsList.put("Captain of the Watch", new String[] {"Captain_of_the_Watch_Pump", "Captain_of_the_Watch_Other"});
|
cardToEffectsList.put("Captain of the Watch", new String[] {"Captain_of_the_Watch_Pump", "Captain_of_the_Watch_Other"});
|
||||||
cardToEffectsList.put("Veteran Armorsmith", new String[] {"Veteran_Armorsmith_Pump", "Veteran_Armorsmith_Other"});
|
cardToEffectsList.put("Veteran Armorsmith", new String[] {"Veteran_Armorsmith_Pump", "Veteran_Armorsmith_Other"});
|
||||||
|
|||||||
Reference in New Issue
Block a user