mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
- Cleanup in GameActionUtil.
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -5466,7 +5466,7 @@ res/cardsfolder/radiants_dragoons.txt -text svneol=native#text/plain
|
|||||||
res/cardsfolder/radiants_judgment.txt -text svneol=native#text/plain
|
res/cardsfolder/radiants_judgment.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/rafiq_of_the_many.txt -text svneol=native#text/plain
|
res/cardsfolder/rafiq_of_the_many.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/ragamuffyn.txt svneol=native#text/plain
|
res/cardsfolder/ragamuffyn.txt svneol=native#text/plain
|
||||||
res/cardsfolder/rage_extractor.txt svneol=native#text/plain
|
res/cardsfolder/rage_extractor.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/rage_nimbus.txt -text svneol=native#text/plain
|
res/cardsfolder/rage_nimbus.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/rage_reflection.txt -text svneol=native#text/plain
|
res/cardsfolder/rage_reflection.txt -text svneol=native#text/plain
|
||||||
res/cardsfolder/rage_weaver.txt -text svneol=native#text/plain
|
res/cardsfolder/rage_weaver.txt -text svneol=native#text/plain
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ Text:no text
|
|||||||
T:Mode$ SpellCast | ValidCard$ Card.CostsPhyrexianMana | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with P in its mana cost, CARDNAME deals damage equal to that spell's converted mana cost to target creature or player.
|
T:Mode$ SpellCast | ValidCard$ Card.CostsPhyrexianMana | TriggerZones$ Battlefield | Execute$ TrigDealDamage | TriggerDescription$ Whenever you cast a spell with P in its mana cost, CARDNAME deals damage equal to that spell's converted mana cost to target creature or player.
|
||||||
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Tgt$ TgtCP | NumDmg$ X
|
SVar:TrigDealDamage:AB$DealDamage | Cost$ 0 | Tgt$ TgtCP | NumDmg$ X
|
||||||
SVar:X:TriggeredCard$CardManaCost
|
SVar:X:TriggeredCard$CardManaCost
|
||||||
|
SVar:RemRandomDeck:True
|
||||||
SVar:Rarity:Uncommon
|
SVar:Rarity:Uncommon
|
||||||
SVar:Picture:http://www.wizards.com/global/images/magic/general/rage_extractor.jpg
|
SVar:Picture:http://www.wizards.com/global/images/magic/general/rage_extractor.jpg
|
||||||
SetInfo:NPH|Uncommon|http://magiccards.info/scans/en/nph/91.jpg
|
SetInfo:NPH|Uncommon|http://magiccards.info/scans/en/nph/91.jpg
|
||||||
|
|||||||
@@ -29,8 +29,6 @@ public class GameActionUtil {
|
|||||||
upkeep_DamageUpkeepCost(); //deal damage unless upkeep cost is paid
|
upkeep_DamageUpkeepCost(); //deal damage unless upkeep cost is paid
|
||||||
upkeep_CumulativeUpkeepCost(); //sacrifice unless cumulative upkeep cost is paid
|
upkeep_CumulativeUpkeepCost(); //sacrifice unless cumulative upkeep cost is paid
|
||||||
upkeep_Echo();
|
upkeep_Echo();
|
||||||
//upkeep_TabernacleUpkeepCost();
|
|
||||||
//upkeep_MagusTabernacleUpkeepCost();
|
|
||||||
// upkeep_CheckEmptyDeck_Lose(); //still a little buggy
|
// upkeep_CheckEmptyDeck_Lose(); //still a little buggy
|
||||||
|
|
||||||
upkeep_The_Abyss();
|
upkeep_The_Abyss();
|
||||||
@@ -819,122 +817,6 @@ public class GameActionUtil {
|
|||||||
}
|
}
|
||||||
} //upkeep_Braid_of_Fire
|
} //upkeep_Braid_of_Fire
|
||||||
|
|
||||||
/*
|
|
||||||
public static void upkeep_TabernacleUpkeepCost() {
|
|
||||||
CardList list = AllZoneUtil.getPlayerCardsInPlay(AllZone.Phase.getPlayerTurn());
|
|
||||||
|
|
||||||
list = list.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
ArrayList<String> a = c.getKeyword();
|
|
||||||
for(int i = 0; i < a.size(); i++) {
|
|
||||||
if(a.get(i).toString().startsWith(
|
|
||||||
"At the beginning of your upkeep, destroy this creature unless you pay")) {
|
|
||||||
String k[] = a.get(i).toString().split("pay ");
|
|
||||||
k[1] = k[1].substring(0, k[1].length() - 1);
|
|
||||||
c.setTabernacleUpkeepCost(k[1]);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
final Card c = list.get(i);
|
|
||||||
|
|
||||||
final Command paidCommand = Command.Blank;
|
|
||||||
|
|
||||||
final Command unpaidCommand = new Command() {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -8737736216222268696L;
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
AllZone.GameAction.destroy(c);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
final Ability aiPaid = upkeepAIPayment(c, c.getTabernacleUpkeepCost());
|
|
||||||
|
|
||||||
// TODO convert to triggered ability when they are no longer Commands
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append("Tabernacle Upkeep for ").append(c).append("\n");
|
|
||||||
final Ability destroyAbility = new Ability(c, c.getTabernacleUpkeepCost()) {
|
|
||||||
@Override
|
|
||||||
public void resolve() {
|
|
||||||
if(c.getController().isHuman()) {
|
|
||||||
payManaDuringAbilityResolve(sb.toString(), c.getTabernacleUpkeepCost(), paidCommand, unpaidCommand);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if(ComputerUtil.canPayCost(aiPaid))
|
|
||||||
ComputerUtil.playNoStack(aiPaid);
|
|
||||||
else
|
|
||||||
AllZone.GameAction.destroy(c);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
destroyAbility.setStackDescription(sb.toString());
|
|
||||||
|
|
||||||
AllZone.Stack.addSimultaneousStackEntry(destroyAbility);
|
|
||||||
|
|
||||||
}
|
|
||||||
}//TabernacleUpkeepCost
|
|
||||||
|
|
||||||
private static void upkeep_MagusTabernacleUpkeepCost() {
|
|
||||||
CardList list = AllZoneUtil.getPlayerCardsInPlay(AllZone.Phase.getPlayerTurn());
|
|
||||||
|
|
||||||
list = list.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
ArrayList<String> a = c.getKeyword();
|
|
||||||
for(int i = 0; i < a.size(); i++) {
|
|
||||||
if(a.get(i).toString().startsWith(
|
|
||||||
"At the beginning of your upkeep, sacrifice this creature unless you pay")) {
|
|
||||||
String k[] = a.get(i).toString().split("pay ");
|
|
||||||
k[1] = k[1].substring(0, k[1].length() - 1);
|
|
||||||
c.setMagusTabernacleUpkeepCost(k[1]);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
final Card c = list.get(i);
|
|
||||||
|
|
||||||
final Command unpaidCommand = new Command() {
|
|
||||||
private static final long serialVersionUID = 660060621665783254L;
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
AllZone.GameAction.sacrifice(c);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
final Command paidCommand = Command.Blank;
|
|
||||||
|
|
||||||
final Ability aiPaid = upkeepAIPayment(c, c.getMagusTabernacleUpkeepCost());
|
|
||||||
|
|
||||||
final StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append("Magus of the Tabernacle Upkeep for ").append(c).append("\n");
|
|
||||||
final Ability upkeepAbility = new Ability(c, c.getMagusTabernacleUpkeepCost()) {
|
|
||||||
@Override
|
|
||||||
public void resolve() {
|
|
||||||
if(c.getController().isHuman()) {
|
|
||||||
payManaDuringAbilityResolve(sb.toString(), c.getMagusTabernacleUpkeepCost(), paidCommand, unpaidCommand);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if(ComputerUtil.canPayCost(aiPaid))
|
|
||||||
ComputerUtil.playNoStack(aiPaid);
|
|
||||||
else
|
|
||||||
AllZone.GameAction.sacrifice(c);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
upkeepAbility.setStackDescription(sb.toString());
|
|
||||||
|
|
||||||
AllZone.Stack.addSimultaneousStackEntry(upkeepAbility);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}//MagusTabernacleUpkeepCost */
|
|
||||||
|
|
||||||
public static void upkeep_CumulativeUpkeepCost() {
|
public static void upkeep_CumulativeUpkeepCost() {
|
||||||
CardList list = AllZoneUtil.getPlayerCardsInPlay(AllZone.Phase.getPlayerTurn());
|
CardList list = AllZoneUtil.getPlayerCardsInPlay(AllZone.Phase.getPlayerTurn());
|
||||||
list = list.filter(new CardListFilter() {
|
list = list.filter(new CardListFilter() {
|
||||||
@@ -1862,120 +1744,6 @@ public class GameActionUtil {
|
|||||||
public static void executeLandfallEffects(Card c) {
|
public static void executeLandfallEffects(Card c) {
|
||||||
if(c.getName().equals("Lotus Cobra")) landfall_Lotus_Cobra(c);
|
if(c.getName().equals("Lotus Cobra")) landfall_Lotus_Cobra(c);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
private static boolean checkValakutCondition(Card valakutCard, Card mtn) {
|
|
||||||
// Get a list of all mountains
|
|
||||||
CardList mountainList = AllZoneUtil.getPlayerTypeInPlay(valakutCard.getController(),
|
|
||||||
"Mountain");
|
|
||||||
// Don't count the one that just entered the battlefield
|
|
||||||
if (mountainList.contains(mtn))
|
|
||||||
mountainList.remove(mtn);
|
|
||||||
|
|
||||||
// Do not activate if at least 5 other mountains are not present.
|
|
||||||
if (mountainList.size() < 5)
|
|
||||||
return false;
|
|
||||||
else
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
|
||||||
// Returns true if the routine found enough mountains to activate the effect
|
|
||||||
// Returns false otherwise
|
|
||||||
// This lets the calling routine break if a player has multiple Valakut in play
|
|
||||||
public static boolean executeValakutEffect(final Card valakutCard, final Card mtn) {
|
|
||||||
|
|
||||||
if (!checkValakutCondition(valakutCard, mtn))
|
|
||||||
return false; // Tell the calling routine there aren't enough mountains, don't call again
|
|
||||||
|
|
||||||
SpellAbility DamageTgt = new Spell(valakutCard) {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -7360567876931046530L;
|
|
||||||
|
|
||||||
public boolean canPlayAI() {
|
|
||||||
return getCreature().size() != 0 || AllZone.HumanPlayer.getLife() < 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canPlay() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
CardList getCreature() {
|
|
||||||
//toughness of 3
|
|
||||||
CardList list = CardFactoryUtil.AI_getHumanCreature(3, valakutCard, true);
|
|
||||||
list = list.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
//only get 1/1 flyers or 2/1 or bigger creatures
|
|
||||||
return (2 <= c.getNetAttack()) || c.getKeyword().contains("Flying");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return list;
|
|
||||||
}//getCreature()
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void chooseTargetAI() {
|
|
||||||
boolean targetHuman;
|
|
||||||
// Get a list of all creatures Valakut could destroy
|
|
||||||
CardList list = getCreature();
|
|
||||||
|
|
||||||
CardList listValakut = list.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
return c.getName().contains("Valakut, the Molten Pinnacle");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
int lifeThreshold = Math.max( 3 * listValakut.size(), 6);
|
|
||||||
if ( (AllZone.HumanPlayer.getLife() < lifeThreshold) || list.isEmpty()) {
|
|
||||||
targetHuman = true;
|
|
||||||
} else {
|
|
||||||
// Remove any creatures that have been targeted by other Valakuts
|
|
||||||
for (int ix = 0; ix < AllZone.Stack.size(); ix++) {
|
|
||||||
SpellAbility sa = AllZone.Stack.peek(ix);
|
|
||||||
if (sa.getSourceCard().getName().contains("Valakut, the Molten Pinnacle")) {
|
|
||||||
Card target = sa.getTargetCard();
|
|
||||||
if ((target != null) && list.contains(target)) {
|
|
||||||
list.remove(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (list.isEmpty()) {
|
|
||||||
targetHuman = true;
|
|
||||||
} else {
|
|
||||||
targetHuman = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(targetHuman) setTargetPlayer(AllZone.HumanPlayer);
|
|
||||||
else {
|
|
||||||
list.shuffle();
|
|
||||||
setTargetCard(list.get(0));
|
|
||||||
}
|
|
||||||
}//chooseTargetAI()
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resolve() {
|
|
||||||
if (!checkValakutCondition(valakutCard, mtn))
|
|
||||||
return;
|
|
||||||
if(getTargetCard() != null) {
|
|
||||||
if(AllZoneUtil.isCardInPlay(getTargetCard())
|
|
||||||
&& CardFactoryUtil.canTarget(valakutCard, getTargetCard())) getTargetCard().addDamage(3,
|
|
||||||
valakutCard);
|
|
||||||
} else {
|
|
||||||
getTargetPlayer().addDamage(3, valakutCard);
|
|
||||||
}
|
|
||||||
}//resolve()
|
|
||||||
|
|
||||||
};
|
|
||||||
DamageTgt.setManaCost("0");
|
|
||||||
DamageTgt.setStackDescription("Valakut, the Molten Pinnacle deals 3 damage to target creature or player.");
|
|
||||||
if (valakutCard.getController().isHuman()) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetCreaturePlayer(DamageTgt, true, true));
|
|
||||||
} else {
|
|
||||||
DamageTgt.chooseTargetAI();
|
|
||||||
AllZone.Stack.addSimultaneousStackEntry(DamageTgt);
|
|
||||||
|
|
||||||
}
|
|
||||||
return true; // Tell the calling routine it's okay to call again if there are other Valakuts in play
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private static boolean showLandfallDialog(Card c) {
|
private static boolean showLandfallDialog(Card c) {
|
||||||
AllZone.Display.setCard(c);
|
AllZone.Display.setCard(c);
|
||||||
@@ -5518,7 +5286,7 @@ public class GameActionUtil {
|
|||||||
//get the affected cards
|
//get the affected cards
|
||||||
String k[] = keyword.split(":",5);
|
String k[] = keyword.split(":",5);
|
||||||
|
|
||||||
if(SpecialConditionsMet(cardWithKeyword, k[3])) { //special Conditions are Threshold, etc.
|
if(specialConditionsMet(cardWithKeyword, k[3])) { //special Conditions are Threshold, etc.
|
||||||
|
|
||||||
final String affected = k[1];
|
final String affected = k[1];
|
||||||
final String specific[] = affected.split(",");
|
final String specific[] = affected.split(",");
|
||||||
@@ -5726,7 +5494,7 @@ public class GameActionUtil {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Special Conditions
|
// Special Conditions
|
||||||
public static boolean SpecialConditionsMet(Card SourceCard, String SpecialConditions) {
|
public static boolean specialConditionsMet(Card SourceCard, String SpecialConditions) {
|
||||||
|
|
||||||
if(SpecialConditions.contains("CardsInHandMore")) {
|
if(SpecialConditions.contains("CardsInHandMore")) {
|
||||||
CardList SpecialConditionsCardList = AllZoneUtil.getPlayerHand(SourceCard.getController());
|
CardList SpecialConditionsCardList = AllZoneUtil.getPlayerHand(SourceCard.getController());
|
||||||
@@ -6050,64 +5818,6 @@ public class GameActionUtil {
|
|||||||
}// execute
|
}// execute
|
||||||
}; // Coat of Arms
|
}; // Coat of Arms
|
||||||
|
|
||||||
/*
|
|
||||||
public static Command Leyline_of_Singularity = new Command() {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -67071835355151830L;
|
|
||||||
CardList Leyline_of_Singularity_Tokens = new CardList();
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
String Type = "Legendary";
|
|
||||||
|
|
||||||
if(AllZoneUtil.isCardInPlay("Leyline of Singularity")) {
|
|
||||||
CardList NonLand = new CardList();
|
|
||||||
NonLand.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer).getCards());
|
|
||||||
NonLand.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer).getCards());
|
|
||||||
|
|
||||||
NonLand = NonLand.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
return !c.isLand() && c.isPermanent() && !c.getName().equals("Mana Pool");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for(int i = 0; i < NonLand.size(); i++) {
|
|
||||||
Card c = NonLand.get(i);
|
|
||||||
ArrayList<String> Card_Types = c.getType();
|
|
||||||
if(!c.getType().contains(Type)) {
|
|
||||||
ArrayList<String> NewCard_Type = new ArrayList<String>(Card_Types.size() + 1);
|
|
||||||
NewCard_Type.add(0,Type);
|
|
||||||
for(int x = 0; x < Card_Types.size(); x++) NewCard_Type.add(x + 1 , Card_Types.get(x));
|
|
||||||
if(c.isToken()) Leyline_of_Singularity_Tokens.add(c);
|
|
||||||
c.setType(NewCard_Type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CardList NonLand = new CardList();
|
|
||||||
NonLand.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.HumanPlayer).getCards());
|
|
||||||
NonLand.addAll(AllZone.getZone(Constant.Zone.Battlefield, AllZone.ComputerPlayer).getCards());
|
|
||||||
|
|
||||||
NonLand = NonLand.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
return !c.isLand() && c.isPermanent() && !c.getName().equals("Mana Pool");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for(int r = 0; r < NonLand.size(); r++) {
|
|
||||||
Card crd = NonLand.get(r);
|
|
||||||
if(!crd.isToken()) {
|
|
||||||
Card c = AllZone.CardFactory.copyCard(crd);
|
|
||||||
if(!c.getType().contains("Legendary")) crd.removeType("Legendary");
|
|
||||||
|
|
||||||
} else if(Leyline_of_Singularity_Tokens.contains(crd) && AllZoneUtil.isCardInPlay(crd.getName())){
|
|
||||||
crd.removeType("Legendary");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Leyline_of_Singularity_Tokens.clear();
|
|
||||||
}
|
|
||||||
}// execute()
|
|
||||||
};*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* stores the Command
|
* stores the Command
|
||||||
*/
|
*/
|
||||||
@@ -6127,80 +5837,6 @@ public class GameActionUtil {
|
|||||||
}// execute()
|
}// execute()
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
public static Command The_Tabernacle_at_Pendrell_Vale = new Command() {
|
|
||||||
private static final long serialVersionUID = -3233715310427996429L;
|
|
||||||
CardList gloriousAnthemList = new CardList();
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
String keyword = "At the beginning of your upkeep, destroy this creature unless you pay";
|
|
||||||
|
|
||||||
CardList list = gloriousAnthemList;
|
|
||||||
Card c;
|
|
||||||
// reset all cards in list - aka "old" cards
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
c = list.get(i);
|
|
||||||
ArrayList<String> a = c.getKeyword();
|
|
||||||
for(String s:a) {
|
|
||||||
if(s.startsWith(keyword)) c.removeExtrinsicKeyword(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list.clear();
|
|
||||||
|
|
||||||
CardList clist = AllZoneUtil.getCardsInPlay("The Tabernacle at Pendrell Vale");
|
|
||||||
|
|
||||||
int number = clist.size();
|
|
||||||
//System.out.println("Tabernacle Number:" + number);
|
|
||||||
if(number > 0) {
|
|
||||||
CardList creature = AllZoneUtil.getCreaturesInPlay();
|
|
||||||
|
|
||||||
for(int i = 0; i < creature.size(); i++) {
|
|
||||||
c = creature.get(i);
|
|
||||||
c.addExtrinsicKeyword(keyword + " " + number
|
|
||||||
+ ".");
|
|
||||||
gloriousAnthemList.add(c);
|
|
||||||
}// for inner
|
|
||||||
}
|
|
||||||
}// execute()
|
|
||||||
};
|
|
||||||
|
|
||||||
public static Command Magus_of_the_Tabernacle = new Command() {
|
|
||||||
private static final long serialVersionUID = -249708982895077034L;
|
|
||||||
CardList gloriousAnthemList = new CardList();
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
String keyword = "At the beginning of your upkeep, sacrifice this creature unless you pay";
|
|
||||||
|
|
||||||
CardList list = gloriousAnthemList;
|
|
||||||
Card c;
|
|
||||||
// reset all cards in list - aka "old" cards
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
c = list.get(i);
|
|
||||||
ArrayList<String> a = c.getKeyword();
|
|
||||||
for(String s:a) {
|
|
||||||
if(s.startsWith(keyword)) c.removeExtrinsicKeyword(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
list.clear();
|
|
||||||
CardList clist = AllZoneUtil.getCardsInPlay("Magus of the Tabernacle");
|
|
||||||
|
|
||||||
int number = clist.size();
|
|
||||||
//System.out.println("Tabernacle Number:" + number);
|
|
||||||
if(number > 0) {
|
|
||||||
CardList creature = AllZoneUtil.getCreaturesInPlay();
|
|
||||||
|
|
||||||
for(int i = 0; i < creature.size(); i++) {
|
|
||||||
c = creature.get(i);
|
|
||||||
c.addExtrinsicKeyword(keyword + " " + number
|
|
||||||
+ ".");
|
|
||||||
gloriousAnthemList.add(c);
|
|
||||||
}// for inner
|
|
||||||
}
|
|
||||||
}// execute()
|
|
||||||
};*/
|
|
||||||
|
|
||||||
public static Command Ajani_Avatar_Token = new Command() {
|
public static Command Ajani_Avatar_Token = new Command() {
|
||||||
private static final long serialVersionUID = 3027329837165436727L;
|
private static final long serialVersionUID = 3027329837165436727L;
|
||||||
|
|
||||||
@@ -7277,7 +6913,7 @@ public class GameActionUtil {
|
|||||||
//get the affected cards
|
//get the affected cards
|
||||||
String k[] = keyword.split(":", 8);
|
String k[] = keyword.split(":", 8);
|
||||||
|
|
||||||
if(areSpecialConditionsMet(cardWithKeyword, k[6])) { //special conditions are isPresent, isValid
|
if(specialConditionsMet(cardWithKeyword, k[6])) { //special conditions are isPresent, isValid
|
||||||
|
|
||||||
final String affected = k[1];
|
final String affected = k[1];
|
||||||
final String specific[] = affected.split(",");
|
final String specific[] = affected.split(",");
|
||||||
@@ -7488,22 +7124,6 @@ public class GameActionUtil {
|
|||||||
affectedCard.removeColor(se.getColorDesc(), affectedCard, !se.isOverwriteColors(), se.getTimestamp(affectedCard));
|
affectedCard.removeColor(se.getColorDesc(), affectedCard, !se.isOverwriteColors(), se.getTimestamp(affectedCard));
|
||||||
}//end removeStaticEffects
|
}//end removeStaticEffects
|
||||||
|
|
||||||
// Special Conditions
|
|
||||||
private boolean areSpecialConditionsMet(Card source, String conditions) {
|
|
||||||
if(conditions.contains("isPresent")) { // is a card of a certain type/color present?
|
|
||||||
String req = conditions.replaceAll("isPresent ", "");
|
|
||||||
String[] reqs = req.split(",");
|
|
||||||
CardList cards = AllZoneUtil.getCardsInPlay();
|
|
||||||
cards = cards.getValidCards(reqs, source.getController(), source);
|
|
||||||
if(cards.isEmpty()) return false;
|
|
||||||
}
|
|
||||||
if(conditions.contains("isValid")) { // does this card meet the valid description?
|
|
||||||
String req = conditions.replaceAll("isValid ", "");
|
|
||||||
if(!source.isValid(req, source.getController(), source)) return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}//end areSpecialConditionsMet()
|
|
||||||
|
|
||||||
private CardList getAffectedCards(Card source, String[] details, String[] specific) {
|
private CardList getAffectedCards(Card source, String[] details, String[] specific) {
|
||||||
// [Self], [All], [Enchanted]
|
// [Self], [All], [Enchanted]
|
||||||
CardList affected = new CardList();
|
CardList affected = new CardList();
|
||||||
|
|||||||
@@ -757,7 +757,7 @@ public class CardFactory implements NewConstants {
|
|||||||
private static final long serialVersionUID = -2292898970576123040L;
|
private static final long serialVersionUID = -2292898970576123040L;
|
||||||
|
|
||||||
public void execute() {
|
public void execute() {
|
||||||
if(GameActionUtil.SpecialConditionsMet(card, condition)) {
|
if(GameActionUtil.specialConditionsMet(card, condition)) {
|
||||||
int toAdd = -1;
|
int toAdd = -1;
|
||||||
if(numCounters.equals("X")) {
|
if(numCounters.equals("X")) {
|
||||||
toAdd = CardFactoryUtil.xCount(card, card.getSVar("X"));
|
toAdd = CardFactoryUtil.xCount(card, card.getSVar("X"));
|
||||||
|
|||||||
Reference in New Issue
Block a user