mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Some infrastructure to script Lorwyn dual lands
This commit is contained in:
@@ -22,6 +22,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
@@ -3145,13 +3146,14 @@ public class CardFactoryUtil {
|
||||
return evokedSpell;
|
||||
}
|
||||
|
||||
private static final Map<String,String> emptyMap = new TreeMap<String,String>();
|
||||
public static void setupETBReplacementAbility(SpellAbility sa) {
|
||||
SpellAbility tailend = sa;
|
||||
while (tailend.getSubAbility() != null) {
|
||||
tailend = tailend.getSubAbility();
|
||||
}
|
||||
|
||||
tailend.setSubAbility(new AbilitySub(ApiType.InternalEtbReplacement, sa.getSourceCard(), null, null));
|
||||
tailend.setSubAbility(new AbilitySub(ApiType.InternalEtbReplacement, sa.getSourceCard(), null, emptyMap));
|
||||
// ETBReplacementMove(sa.getSourceCard(), null));
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ import forge.card.cost.CostPayLife;
|
||||
import forge.card.cost.CostPutCounter;
|
||||
import forge.card.cost.CostRemoveCounter;
|
||||
import forge.card.cost.CostReturn;
|
||||
import forge.card.cost.CostReveal;
|
||||
import forge.card.cost.CostSacrifice;
|
||||
import forge.card.cost.CostTapType;
|
||||
import forge.card.cost.CostUtil;
|
||||
@@ -515,30 +516,29 @@ public final class GameActionUtil {
|
||||
|
||||
else if (part instanceof CostSacrifice) {
|
||||
int amount = Integer.parseInt(((CostSacrifice)part).getAmount());
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType().split(";"), p, source);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "sacrifice");
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType(), p, source);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "sacrifice." + orString);
|
||||
if(!hasPaid) return false;
|
||||
}
|
||||
|
||||
else if (part instanceof CostReturn) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType().split(";"), p, source);
|
||||
} else if (part instanceof CostReturn) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType(), p, source);
|
||||
int amount = getAmountFromPartX(part, source, sourceAbility);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "return to hand");
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "return to hand." + orString);
|
||||
if(!hasPaid) return false;
|
||||
}
|
||||
|
||||
else if (part instanceof CostDiscard) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), part.getType().split(";"), p, source);
|
||||
} else if (part instanceof CostDiscard) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), part.getType(), p, source);
|
||||
int amount = getAmountFromPartX(part, source, sourceAbility);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "discard");
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "discard." + orString);
|
||||
if(!hasPaid) return false;
|
||||
}
|
||||
|
||||
else if (part instanceof CostTapType) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType().split(";"), p, source);
|
||||
} else if (part instanceof CostReveal) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Hand), part.getType(), p, source);
|
||||
int amount = getAmountFromPartX(part, source, sourceAbility);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "reveal." + orString);
|
||||
if(!hasPaid) return false;
|
||||
} else if (part instanceof CostTapType) {
|
||||
List<Card> list = CardLists.getValidCards(p.getCardsIn(ZoneType.Battlefield), part.getType(), p, source);
|
||||
list = CardLists.filter(list, Presets.UNTAPPED);
|
||||
int amount = getAmountFromPartX(part, source, sourceAbility);
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "tap");
|
||||
boolean hasPaid = payCostPart(sourceAbility, (CostPartWithList)part, amount, list, "tap." + orString);
|
||||
if(!hasPaid) return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user