mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
- Fixed some changeling issues with Aven Brigadier, Rolling Stones and Prowess of the Fair.
- Deleted old Storm spell entries.
This commit is contained in:
@@ -757,401 +757,7 @@ public class GameActionUtil {
|
|||||||
AllZone.Stack.add(Storm);
|
AllZone.Stack.add(Storm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
public static void playCard_Storm(Card c) {
|
|
||||||
if(c.getKeyword().contains("Storm"))
|
|
||||||
{
|
|
||||||
|
|
||||||
final Card StormCard = c;
|
|
||||||
StormCard.removeIntrinsicKeyword("Storm");
|
|
||||||
final int StormNumber = Phase.StormCount - 1;
|
|
||||||
final Ability Storm = new Ability(c, "0") {
|
|
||||||
public void resolve() {
|
|
||||||
for(int i = 0; i < (StormNumber); i++) {
|
|
||||||
final SpellAbility ability = new Spell(StormCard) {
|
|
||||||
private static final long serialVersionUID = -1444400689073579320L;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void resolve() {
|
|
||||||
if(StormCard.getName().equals("Empty the Warrens")) {
|
|
||||||
CardFactoryUtil.makeToken("Goblin", "R 1 1 Goblin", StormCard, "R", new String[] {
|
|
||||||
"Creature", "Goblin"}, 1, 1, new String[] {""});
|
|
||||||
CardFactoryUtil.makeToken("Goblin", "R 1 1 Goblin", StormCard, "R", new String[] {
|
|
||||||
"Creature", "Goblin"}, 1, 1, new String[] {""});
|
|
||||||
} // Empty the Warrens
|
|
||||||
|
|
||||||
else if(StormCard.getName().equals("Hunting Pack")) {
|
|
||||||
CardFactoryUtil.makeToken("Beast", "G 4 4 Beast", StormCard, "G", new String[] {
|
|
||||||
"Creature", "Beast"}, 4, 4, new String[] {""});
|
|
||||||
} // Hunting Pack
|
|
||||||
|
|
||||||
else if(StormCard.getName().equals("Brain Freeze")) {
|
|
||||||
String Player = AllZone.Phase.getActivePlayer();
|
|
||||||
if(Player == "Human"){
|
|
||||||
String Target = getTargetPlayer();
|
|
||||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Target);
|
|
||||||
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, Target);
|
|
||||||
CardList libList = new CardList(lib.getCards());
|
|
||||||
|
|
||||||
int max = 3;
|
|
||||||
if(libList.size() < max) max = libList.size();
|
|
||||||
|
|
||||||
for(int i = 0; i < max; i++) {
|
|
||||||
Card c = libList.get(i);
|
|
||||||
lib.remove(c);
|
|
||||||
grave.add(c);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
String Target = AllZone.GameAction.getOpponent(Player);
|
|
||||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, Target);
|
|
||||||
PlayerZone grave = AllZone.getZone(Constant.Zone.Graveyard, Target);
|
|
||||||
CardList libList = new CardList(lib.getCards());
|
|
||||||
|
|
||||||
int max = 3;
|
|
||||||
if(libList.size() < max) max = libList.size();
|
|
||||||
|
|
||||||
for(int i = 0; i < max; i++) {
|
|
||||||
Card c = libList.get(i);
|
|
||||||
lib.remove(c);
|
|
||||||
grave.add(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} // Brain Freeze
|
|
||||||
else if(StormCard.getName().equals("Dragonstorm")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
if(player == "Human"){
|
|
||||||
CardList list = AllZoneUtil.getPlayerCardsInLibrary(Constant.Player.Human);
|
|
||||||
CardList dragons = new CardList();
|
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
if(list.get(i).getType().contains("Dragon")
|
|
||||||
|| list.get(i).getKeyword().contains("Changeling")) {
|
|
||||||
dragons.add(list.get(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dragons.size() != 0) {
|
|
||||||
Object o = AllZone.Display.getChoiceOptional("Select an Dragon to put onto the battlefield", dragons.toArray());
|
|
||||||
|
|
||||||
AllZone.GameAction.shuffle(StormCard.getController());
|
|
||||||
if(o != null) {
|
|
||||||
//put card in hand
|
|
||||||
AllZone.Human_Library.remove(o);
|
|
||||||
AllZone.Human_Play.add((Card) o);
|
|
||||||
}
|
|
||||||
}//if
|
|
||||||
|
|
||||||
} else {
|
|
||||||
CardList list = AllZoneUtil.getPlayerCardsInLibrary(Constant.Player.Computer);
|
|
||||||
CardList dragons = new CardList();
|
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
if(list.get(i).getType().contains("Dragon")
|
|
||||||
|| list.get(i).getKeyword().contains("Changeling")) {
|
|
||||||
dragons.add(list.get(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dragons.size() != 0) {
|
|
||||||
CardListUtil.sortAttack(dragons);
|
|
||||||
Card c = dragons.get(0);
|
|
||||||
AllZone.GameAction.shuffle(StormCard.getController());
|
|
||||||
//move to hand
|
|
||||||
AllZone.Computer_Library.remove(c);
|
|
||||||
AllZone.Computer_Play.add(c);
|
|
||||||
|
|
||||||
CardList l = new CardList();
|
|
||||||
l.add(c);
|
|
||||||
AllZone.Display.getChoiceOptional("Computer picked:", l.toArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // Dragonstorm
|
|
||||||
else if(StormCard.getName().equals("Ignite Memories")) {
|
|
||||||
Card choice = null;
|
|
||||||
String opponent = AllZone.GameAction.getOpponent(StormCard.getController());
|
|
||||||
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, opponent);
|
|
||||||
Card[] handChoices = hand.getCards();
|
|
||||||
if (handChoices.length > 0)
|
|
||||||
{
|
|
||||||
choice = CardUtil.getRandom(handChoices);
|
|
||||||
handChoices[0] = choice;
|
|
||||||
for(int i = 1; i < handChoices.length; i++) {
|
|
||||||
handChoices[i] = null;
|
|
||||||
}
|
|
||||||
AllZone.Display.getChoice("Random card", handChoices);
|
|
||||||
AllZone.GameAction.getPlayerLife(opponent).subtractLife(
|
|
||||||
CardUtil.getConvertedManaCost(choice.getManaCost()));
|
|
||||||
}
|
|
||||||
} // Ignite Memories
|
|
||||||
else if(StormCard.getName().equals("Haze of Rage")) {
|
|
||||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, StormCard.getController());
|
|
||||||
CardList start = new CardList(play.getCards());
|
|
||||||
final CardList list = start.getType("Creature");
|
|
||||||
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
|
||||||
list.get(i).addTempAttackBoost(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
play.updateObservers();
|
|
||||||
|
|
||||||
Command untilEOT = new Command() {
|
|
||||||
private static final long serialVersionUID = -28032591440730370L;
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
for(int i = 0; i < list.size(); i++)
|
|
||||||
if(AllZone.GameAction.isCardInPlay(list.get(i))) {
|
|
||||||
list.get(i).addTempAttackBoost(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
AllZone.EndOfTurn.addUntil(untilEOT);
|
|
||||||
} // Haze of Rage
|
|
||||||
else if(StormCard.getName().equals("Astral Steel")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
if(player != "Human"){
|
|
||||||
|
|
||||||
String Computer = AllZone.Phase.getActivePlayer();
|
|
||||||
PlayerZone ComputerPlayZone = AllZone.getZone(Constant.Zone.Play, Computer);
|
|
||||||
CardList ComputerCreatureList = new CardList(ComputerPlayZone.getCards());
|
|
||||||
ComputerCreatureList = ComputerCreatureList.getType("Creature");
|
|
||||||
ComputerCreatureList = ComputerCreatureList.filter(new CardListFilter() {
|
|
||||||
public boolean addCard(Card c) {
|
|
||||||
return c.getNetAttack() >= 2 && CardFactoryUtil.canTarget(StormCard, getTargetCard());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if(ComputerCreatureList.size() != 0){
|
|
||||||
Card[] Target = new Card[ComputerCreatureList.size()];
|
|
||||||
for(int i = 0; i < ComputerCreatureList.size(); i++) {
|
|
||||||
Card crd = ComputerCreatureList.get(i);
|
|
||||||
Target[i] = crd;
|
|
||||||
}
|
|
||||||
Random randomGenerator = new Random();
|
|
||||||
int randomInt = randomGenerator.nextInt(ComputerCreatureList.size());
|
|
||||||
setTargetCard(Target[randomInt]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final Card c = getTargetCard();
|
|
||||||
if(c != null) {
|
|
||||||
c.addTempAttackBoost(1);
|
|
||||||
c.addTempDefenseBoost(2);
|
|
||||||
c.updateObservers();
|
|
||||||
|
|
||||||
Command untilEOT = new Command() {
|
|
||||||
private static final long serialVersionUID = -28032591440730370L;
|
|
||||||
|
|
||||||
public void execute() {
|
|
||||||
c.addTempAttackBoost(-1);
|
|
||||||
c.addTempDefenseBoost(-2);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
AllZone.EndOfTurn.addUntil(untilEOT);
|
|
||||||
}
|
|
||||||
} // Astral Steel
|
|
||||||
|
|
||||||
else if(StormCard.getName().equals("Grapeshot")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
|
|
||||||
if(player == "Human"){
|
|
||||||
if(getTargetCard() != null) {
|
|
||||||
if(AllZone.GameAction.isCardInPlay(getTargetCard())
|
|
||||||
&& CardFactoryUtil.canTarget(StormCard, getTargetCard())) getTargetCard().addDamage(1,StormCard);
|
|
||||||
} else AllZone.GameAction.getPlayerLife(getTargetPlayer()).subtractLife(1);
|
|
||||||
} else AllZone.GameAction.getPlayerLife(AllZone.GameAction.getOpponent(StormCard.getController())).subtractLife(1);
|
|
||||||
} // Grapeshot
|
|
||||||
|
|
||||||
else if(StormCard.getName().equals("Reaping the Graves")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
CardList creature = new CardList();
|
|
||||||
PlayerZone zone = AllZone.getZone(Constant.Zone.Graveyard, StormCard.getController());
|
|
||||||
if(zone != null) {
|
|
||||||
creature.addAll(zone.getCards());
|
|
||||||
creature = creature.getType("Creature");
|
|
||||||
|
|
||||||
if(player == "Human"){
|
|
||||||
Card[] Target = new Card[creature.size()];
|
|
||||||
for(int i = 0; i < creature.size(); i++) {
|
|
||||||
Card crd = creature.get(i);
|
|
||||||
Target[i] = crd;
|
|
||||||
}
|
|
||||||
Object check = AllZone.Display.getChoiceOptional("Select creature", Target);
|
|
||||||
if(check != null) {
|
|
||||||
setTargetCard((Card) check);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Card biggest = creature.get(0);
|
|
||||||
for(int i = 0; i < creature.size(); i++)
|
|
||||||
if(biggest.getNetAttack() < creature.get(i).getNetAttack()) biggest = creature.get(i);
|
|
||||||
setTargetCard(biggest);
|
|
||||||
}
|
|
||||||
Card c = getTargetCard();
|
|
||||||
PlayerZone grave = AllZone.getZone(c);
|
|
||||||
if(AllZone.GameAction.isCardInZone(c, grave)) {
|
|
||||||
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, c.getController());
|
|
||||||
AllZone.GameAction.moveTo(hand, c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Reaping the Graves
|
|
||||||
else if(StormCard.getName().equals("Scattershot")) {
|
|
||||||
|
|
||||||
if(getTargetCard() != null) {
|
|
||||||
if(AllZone.GameAction.isCardInPlay(getTargetCard())
|
|
||||||
&& CardFactoryUtil.canTarget(StormCard, getTargetCard())) getTargetCard().addDamage(1,StormCard);
|
|
||||||
}
|
|
||||||
} // Scattershot
|
|
||||||
else if(StormCard.getName().equals("Sprouting Vines")) {
|
|
||||||
AllZone.GameAction.searchLibraryBasicLand(StormCard.getController(),
|
|
||||||
Constant.Zone.Hand, false);
|
|
||||||
} // Sprouting Vines
|
|
||||||
else if(StormCard.getName().equals("Temporal Fissure")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
if(player != "Human"){
|
|
||||||
CardList human = CardFactoryUtil.AI_getHumanCreature(StormCard, true);
|
|
||||||
CardList human2 = CardFactoryUtil.AI_getHumanArtifact(StormCard, true);
|
|
||||||
CardList human3 = CardFactoryUtil.AI_getHumanEnchantment(StormCard, true);
|
|
||||||
CardList human4 = CardFactoryUtil.getLandsInPlay(player);
|
|
||||||
if(human != null) setTargetCard(CardFactoryUtil.AI_getBestCreature(human));
|
|
||||||
else if(human2 != null) setTargetCard(CardFactoryUtil.AI_getBestArtifact(human2));
|
|
||||||
else if(human3 != null) setTargetCard(CardFactoryUtil.AI_getBestEnchantment(human3,StormCard, true));
|
|
||||||
else if(human4 != null) setTargetCard(CardFactoryUtil.AI_getBestLand(human4));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(getTargetCard() != null) {
|
|
||||||
if(AllZone.GameAction.isCardInPlay(getTargetCard())
|
|
||||||
&& CardFactoryUtil.canTarget(StormCard, getTargetCard())) {
|
|
||||||
if(getTargetCard().isToken()) AllZone.getZone(getTargetCard()).remove(getTargetCard());
|
|
||||||
else {
|
|
||||||
PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, getTargetCard().getOwner());
|
|
||||||
PlayerZone play = AllZone.getZone(Constant.Zone.Play, player);
|
|
||||||
play.remove(getTargetCard());
|
|
||||||
AllZone.GameAction.moveTo(hand, getTargetCard());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Temporal Fissure
|
|
||||||
else if(StormCard.getName().equals("Tendrils of Agony")) {
|
|
||||||
PlayerLife player = AllZone.GameAction.getPlayerLife(StormCard.getController());
|
|
||||||
String opponent = AllZone.GameAction.getOpponent(StormCard.getController());
|
|
||||||
PlayerLife target = AllZone.GameAction.getPlayerLife(opponent);
|
|
||||||
target.subtractLife(2);
|
|
||||||
player.addLife(2);
|
|
||||||
} // Tendrils of Agony
|
|
||||||
else if(StormCard.getName().equals("Volcanic Awakening")) {
|
|
||||||
String player = StormCard.getController();
|
|
||||||
if(player != "Human"){
|
|
||||||
//target basic land that Human only has 1 or 2 in play
|
|
||||||
CardList land = new CardList(AllZone.Human_Play.getCards());
|
|
||||||
land = land.getType("Land");
|
|
||||||
|
|
||||||
Card target = null;
|
|
||||||
|
|
||||||
String[] name = {"Forest", "Swamp", "Plains", "Mountain", "Island"};
|
|
||||||
for(int i = 0; i < name.length; i++)
|
|
||||||
if(land.getName(name[i]).size() == 1) {
|
|
||||||
target = land.getName(name[i]).get(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//see if there are only 2 lands of the same type
|
|
||||||
if(target == null) {
|
|
||||||
for(int i = 0; i < name.length; i++)
|
|
||||||
if(land.getName(name[i]).size() == 2) {
|
|
||||||
target = land.getName(name[i]).get(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}//if
|
|
||||||
if(target == null) {
|
|
||||||
land.shuffle();
|
|
||||||
target = land.get(0);
|
|
||||||
}
|
|
||||||
setTargetCard(target);
|
|
||||||
}
|
|
||||||
if(AllZone.GameAction.isCardInPlay(getTargetCard())
|
|
||||||
&& CardFactoryUtil.canTarget(StormCard, getTargetCard())) {
|
|
||||||
AllZone.GameAction.destroy(getTargetCard());
|
|
||||||
}
|
|
||||||
} // Volcanic Awakening
|
|
||||||
else if(StormCard.getName().equals("Wing Shards")) {
|
|
||||||
Card attack[] = AllZone.Combat.getAttackers();
|
|
||||||
Card target = null;
|
|
||||||
String player = StormCard.getController();
|
|
||||||
if(player != "Human"){
|
|
||||||
Object check = AllZone.Display.getChoiceOptional("Select creature", attack);
|
|
||||||
if(check != null) {
|
|
||||||
target = ((Card) check);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CardList Targets = new CardList();
|
|
||||||
String TPlayer = AllZone.GameAction.getOpponent(StormCard.getController());
|
|
||||||
PlayerZone TZone = AllZone.getZone(Constant.Zone.Play, TPlayer);
|
|
||||||
for(int i = 0; i < attack.length; i++) {
|
|
||||||
Card crd = attack[i];
|
|
||||||
if(AllZone.GameAction.isCardInZone(attack[i], TZone)) Targets.add(crd);
|
|
||||||
}
|
|
||||||
CardListUtil.sortAttack(Targets);
|
|
||||||
if(Targets.size() != 0) target = (Targets.get(Targets.size() - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(target != null) AllZone.GameAction.sacrifice(target);
|
|
||||||
} // Wing Shards
|
|
||||||
else if(StormCard.getName().equals("Mind's Desire")) {
|
|
||||||
String player = AllZone.Phase.getActivePlayer();
|
|
||||||
if(player == "Human") AllZone.GameAction.shuffle(StormCard.getController());
|
|
||||||
// New
|
|
||||||
PlayerZone Play = AllZone.getZone(Constant.Zone.Play, player);
|
|
||||||
|
|
||||||
if(AllZone.GameAction.isCardInZone(StormCard,Play) == false) {
|
|
||||||
Play.add(StormCard);
|
|
||||||
} else {
|
|
||||||
// New
|
|
||||||
PlayerZone lib = AllZone.getZone(Constant.Zone.Library, player);
|
|
||||||
CardList libList = new CardList(lib.getCards());
|
|
||||||
Card c = null;
|
|
||||||
if(libList.size() > 0) {
|
|
||||||
c = libList.get(0);
|
|
||||||
}
|
|
||||||
if(c != null) {
|
|
||||||
PlayerZone RFG = AllZone.getZone(Constant.Zone.Removed_From_Play, player);
|
|
||||||
AllZone.GameAction.moveTo(RFG, c);
|
|
||||||
StormCard.attachCard(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} // Mind's Desire
|
|
||||||
|
|
||||||
} // Resolve
|
|
||||||
|
|
||||||
};
|
|
||||||
// ability.setStackDescription(StormCard + " - Storm Copy.");
|
|
||||||
// Add all targetted storm cards to the if statement
|
|
||||||
ability.getSourceCard().setCopiedSpell(true);
|
|
||||||
// Phase.StormCount = Phase.StormCount - 1;
|
|
||||||
String player = StormCard.getController();
|
|
||||||
ability.setManaCost("0");
|
|
||||||
if(player == "Human"){
|
|
||||||
if(StormCard.getName().equals("Astral Steel")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetCreature(ability));
|
|
||||||
} else if(StormCard.getName().equals("Grapeshot")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetCreaturePlayer(ability, true, false));
|
|
||||||
} else if(StormCard.getName().equals("Scattershot")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetCreature(ability));
|
|
||||||
} else if(StormCard.getName().equals("Brain Freeze")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetPlayer(ability));
|
|
||||||
} else if(StormCard.getName().equals("Temporal Fissure")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetPermanent(ability));
|
|
||||||
} else if(StormCard.getName().equals("Volcanic Awakening")) {
|
|
||||||
AllZone.InputControl.setInput(CardFactoryUtil.input_targetType(ability, "Land"));
|
|
||||||
} else AllZone.Stack.add(ability);
|
|
||||||
} else AllZone.Stack.add(ability);
|
|
||||||
}; // For
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Storm.setStackDescription(c + " - Storm.");
|
|
||||||
AllZone.Stack.add(Storm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
**/
|
|
||||||
public static void playCard_Vengevine(Card c) {
|
public static void playCard_Vengevine(Card c) {
|
||||||
if (c.isCreature() == true && (Phase.PlayerCreatureSpellCount == 2 || Phase.ComputerCreatureSpellCount == 2))
|
if (c.isCreature() == true && (Phase.PlayerCreatureSpellCount == 2 || Phase.ComputerCreatureSpellCount == 2))
|
||||||
{
|
{
|
||||||
@@ -1723,8 +1329,7 @@ public class GameActionUtil {
|
|||||||
list = list.getName("Thief of Hope");
|
list = list.getName("Thief of Hope");
|
||||||
|
|
||||||
if(list.size() > 0) {
|
if(list.size() > 0) {
|
||||||
if(c.getType().contains("Spirit") || c.getType().contains("Arcane")
|
if(c.isType("Spirit") || c.getType().contains("Arcane")) {
|
||||||
|| c.getIntrinsicKeyword().contains("Changeling")) {
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
for(int i = 0; i < list.size(); i++) {
|
||||||
final Card card = list.get(i);
|
final Card card = list.get(i);
|
||||||
Ability ability2 = new Ability(card, "0") {
|
Ability ability2 = new Ability(card, "0") {
|
||||||
@@ -1768,8 +1373,7 @@ public class GameActionUtil {
|
|||||||
list = list.getName("Infernal Kirin");
|
list = list.getName("Infernal Kirin");
|
||||||
|
|
||||||
if(list.size() > 0) {
|
if(list.size() > 0) {
|
||||||
if(c.getType().contains("Spirit") || c.getType().contains("Arcane")
|
if(c.isType("Spirit") || c.getType().contains("Arcane")) {
|
||||||
|| c.getIntrinsicKeyword().contains("Changeling")) {
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
for(int i = 0; i < list.size(); i++) {
|
||||||
final Card card = list.get(i);
|
final Card card = list.get(i);
|
||||||
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
||||||
@@ -1826,8 +1430,7 @@ public class GameActionUtil {
|
|||||||
list = list.getName("Cloudhoof Kirin");
|
list = list.getName("Cloudhoof Kirin");
|
||||||
|
|
||||||
if(list.size() > 0) {
|
if(list.size() > 0) {
|
||||||
if(c.getType().contains("Spirit") || c.getType().contains("Arcane")
|
if(c.isType("Spirit") || c.getType().contains("Arcane")) {
|
||||||
|| c.getIntrinsicKeyword().contains("Changeling")) {
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
for(int i = 0; i < list.size(); i++) {
|
||||||
final Card card = list.get(i);
|
final Card card = list.get(i);
|
||||||
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
||||||
@@ -1884,8 +1487,7 @@ public class GameActionUtil {
|
|||||||
list = list.getName("Bounteous Kirin");
|
list = list.getName("Bounteous Kirin");
|
||||||
|
|
||||||
if(list.size() > 0) {
|
if(list.size() > 0) {
|
||||||
if(c.getType().contains("Spirit") || c.getType().contains("Arcane")
|
if(c.isType("Spirit") || c.getType().contains("Arcane")) {
|
||||||
|| c.getIntrinsicKeyword().contains("Changeling")) {
|
|
||||||
for(int i = 0; i < list.size(); i++) {
|
for(int i = 0; i < list.size(); i++) {
|
||||||
final Card card = list.get(i);
|
final Card card = list.get(i);
|
||||||
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
final int converted = CardUtil.getConvertedManaCost(c.getManaCost());
|
||||||
@@ -4424,7 +4026,7 @@ public class GameActionUtil {
|
|||||||
else if(c.getName().equals("Dingus Staff")) destroyCreature_Dingus_Staff(c, destroyed);
|
else if(c.getName().equals("Dingus Staff")) destroyCreature_Dingus_Staff(c, destroyed);
|
||||||
else if(c.getName().equals("Dauthi Ghoul") && destroyed.getKeyword().contains("Shadow")) destroyCreature_Dauthi_Ghoul(
|
else if(c.getName().equals("Dauthi Ghoul") && destroyed.getKeyword().contains("Shadow")) destroyCreature_Dauthi_Ghoul(
|
||||||
c, destroyed);
|
c, destroyed);
|
||||||
else if(c.getName().equals("Prowess of the Fair") && destroyed.getType().contains("Elf")
|
else if(c.getName().equals("Prowess of the Fair") && destroyed.isType("Elf")
|
||||||
&& !destroyed.isToken() && !c.equals(destroyed)
|
&& !destroyed.isToken() && !c.equals(destroyed)
|
||||||
&& destroyed.getController().equals(c.getController())) destroyCreature_Prowess_of_the_Fair(c,
|
&& destroyed.getController().equals(c.getController())) destroyCreature_Prowess_of_the_Fair(c,
|
||||||
destroyed);
|
destroyed);
|
||||||
@@ -4987,8 +4589,7 @@ public class GameActionUtil {
|
|||||||
CardList plants = new CardList(play.getCards());
|
CardList plants = new CardList(play.getCards());
|
||||||
plants = plants.filter(new CardListFilter() {
|
plants = plants.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card card) {
|
public boolean addCard(Card card) {
|
||||||
return card.isCreature() && card.getType().contains("Plant") ||
|
return (card.isCreature() && card.isType("Plant"));
|
||||||
card.getKeyword().contains("Changeling");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -6834,8 +6435,7 @@ public class GameActionUtil {
|
|||||||
|
|
||||||
CardListFilter filter = new CardListFilter() {
|
CardListFilter filter = new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.isCreature() && !c.getType().contains("Vampire")
|
return (c.isCreature() && !c.isType("Vampire"));
|
||||||
&& !c.getKeyword().contains("Changeling");
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -9879,7 +9479,7 @@ public class GameActionUtil {
|
|||||||
for(int i = 0; i < creature.size(); i++) {
|
for(int i = 0; i < creature.size(); i++) {
|
||||||
c = creature.get(i);
|
c = creature.get(i);
|
||||||
if(c.getKeyword().contains(keyword)
|
if(c.getKeyword().contains(keyword)
|
||||||
&& c.getType().contains("Wall")) {
|
&& c.isType("Wall")) {
|
||||||
c.removeIntrinsicKeyword(keyword);
|
c.removeIntrinsicKeyword(keyword);
|
||||||
gloriousAnthemList.add(c);
|
gloriousAnthemList.add(c);
|
||||||
}
|
}
|
||||||
@@ -13534,8 +13134,7 @@ public class GameActionUtil {
|
|||||||
current = current.filter(new CardListFilter() {
|
current = current.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return !c.isToken()
|
return !c.isToken()
|
||||||
&& (c.getType().contains("Elf") || c.getKeyword().contains(
|
&& (c.getType().contains("Elf") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -14261,10 +13860,8 @@ public class GameActionUtil {
|
|||||||
|
|
||||||
tree = tree.filter(new CardListFilter() {
|
tree = tree.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return (c.getKeyword().contains("Changeling") || c.getType().contains(
|
return (c.getKeyword().contains("Changeling") || c.getType().contains("Treefolk"))
|
||||||
"Treefolk"))
|
&& !c.getName().equals("Dauntless Dourbark");
|
||||||
&& !c.getName().equals(
|
|
||||||
"Dauntless Dourbark");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if(tree.size() > 0) return true;
|
if(tree.size() > 0) return true;
|
||||||
@@ -14278,9 +13875,8 @@ public class GameActionUtil {
|
|||||||
list = list.filter(new CardListFilter() {
|
list = list.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getType().contains("Treefolk")
|
return c.getType().contains("Treefolk")
|
||||||
|| c.getKeyword().contains(
|
|| c.getKeyword().contains("Changeling")
|
||||||
"Changeling")
|
|| c.getType().contains("Forest");
|
||||||
|| c.getType().contains("Forest");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -15963,8 +15559,7 @@ public class GameActionUtil {
|
|||||||
cenns = cenns.filter(new CardListFilter() {
|
cenns = cenns.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals("Wizened Cenn")
|
return c.getName().equals("Wizened Cenn")
|
||||||
&& (c.getType().contains("Kithkin") || c.getKeyword().contains(
|
&& (c.getType().contains("Kithkin") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return cenns.size() - 1;
|
return cenns.size() - 1;
|
||||||
@@ -16128,8 +15723,7 @@ public class GameActionUtil {
|
|||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals(
|
return c.getName().equals(
|
||||||
"Cemetery Reaper")
|
"Cemetery Reaper")
|
||||||
&& (c.getType().contains("Zombie") || c.getKeyword().contains(
|
&& (c.getType().contains("Zombie") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return reapers.size() - 1;
|
return reapers.size() - 1;
|
||||||
@@ -16212,8 +15806,7 @@ public class GameActionUtil {
|
|||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals(
|
return c.getName().equals(
|
||||||
"Captain of the Watch")
|
"Captain of the Watch")
|
||||||
&& (c.getType().contains("Soldier") || c.getKeyword().contains(
|
&& (c.getType().contains("Soldier") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return capts.size() - 1;
|
return capts.size() - 1;
|
||||||
@@ -16293,8 +15886,7 @@ public class GameActionUtil {
|
|||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals(
|
return c.getName().equals(
|
||||||
"Veteran Swordsmith")
|
"Veteran Swordsmith")
|
||||||
&& (c.getType().contains("Soldier") || c.getKeyword().contains(
|
&& (c.getType().contains("Soldier") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return cenns.size() - 1;
|
return cenns.size() - 1;
|
||||||
@@ -16372,8 +15964,7 @@ public class GameActionUtil {
|
|||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getName().equals(
|
return c.getName().equals(
|
||||||
"Veteran Armorsmith")
|
"Veteran Armorsmith")
|
||||||
&& (c.getType().contains("Soldier") || c.getKeyword().contains(
|
&& (c.getType().contains("Soldier") || c.getKeyword().contains("Changeling"));
|
||||||
"Changeling"));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return cenns.size() - 1;
|
return cenns.size() - 1;
|
||||||
@@ -16517,8 +16108,7 @@ public class GameActionUtil {
|
|||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getType().contains("Treefolk")
|
return c.getType().contains("Treefolk")
|
||||||
|| c.getType().contains("Forest")
|
|| c.getType().contains("Forest")
|
||||||
|| c.getKeyword().contains(
|
|| c.getKeyword().contains("Changeling");
|
||||||
"Changeling");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -17257,8 +16847,8 @@ public class GameActionUtil {
|
|||||||
Card c = creature.get(i);
|
Card c = creature.get(i);
|
||||||
otherBrigadiers = countOtherBrigadiers();
|
otherBrigadiers = countOtherBrigadiers();
|
||||||
int boost = 0;
|
int boost = 0;
|
||||||
if(c.getType().contains("Bird")) boost++;
|
if(c.isType("Bird")) boost++;
|
||||||
if(c.getType().contains("Soldier")) boost++;
|
if(c.isType("Soldier")) boost++;
|
||||||
c.setOtherAttackBoost(boost * otherBrigadiers);
|
c.setOtherAttackBoost(boost * otherBrigadiers);
|
||||||
c.setOtherDefenseBoost(boost * otherBrigadiers);
|
c.setOtherDefenseBoost(boost * otherBrigadiers);
|
||||||
}// for inner
|
}// for inner
|
||||||
@@ -17335,8 +16925,7 @@ public class GameActionUtil {
|
|||||||
for(int i = 0; i < creature.size(); i++) {
|
for(int i = 0; i < creature.size(); i++) {
|
||||||
Card c = creature.get(i);
|
Card c = creature.get(i);
|
||||||
otherScions = countOtherScions(c);
|
otherScions = countOtherScions(c);
|
||||||
if(c.getType().contains("Faerie")
|
if(c.getType().contains("Faerie") || c.getKeyword().contains("Changeling")) {
|
||||||
|| c.getKeyword().contains("Changeling")) {
|
|
||||||
c.setOtherAttackBoost(otherScions);
|
c.setOtherAttackBoost(otherScions);
|
||||||
c.setOtherDefenseBoost(otherScions);
|
c.setOtherDefenseBoost(otherScions);
|
||||||
if(!c.getExtrinsicKeyword().contains(
|
if(!c.getExtrinsicKeyword().contains(
|
||||||
@@ -20229,8 +19818,7 @@ public class GameActionUtil {
|
|||||||
for(int i = 0; i < creature.size(); i++) {
|
for(int i = 0; i < creature.size(); i++) {
|
||||||
c = creature.get(i);
|
c = creature.get(i);
|
||||||
if(c.getType().contains(card.getChosenType())
|
if(c.getType().contains(card.getChosenType())
|
||||||
|| c.getKeyword().contains(
|
|| c.getKeyword().contains("Changeling")) {
|
||||||
"Changeling")) {
|
|
||||||
c.addSemiPermanentAttackBoost(1);
|
c.addSemiPermanentAttackBoost(1);
|
||||||
c.addSemiPermanentDefenseBoost(1);
|
c.addSemiPermanentDefenseBoost(1);
|
||||||
gloriousAnthemList.add(c);
|
gloriousAnthemList.add(c);
|
||||||
@@ -20272,8 +19860,7 @@ public class GameActionUtil {
|
|||||||
creature = creature.filter(new CardListFilter() {
|
creature = creature.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getType().contains("Saproling")
|
return c.getType().contains("Saproling")
|
||||||
|| c.getKeyword().contains(
|
|| c.getKeyword().contains("Changeling");
|
||||||
"Changeling");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -20315,8 +19902,7 @@ public class GameActionUtil {
|
|||||||
creature = creature.filter(new CardListFilter() {
|
creature = creature.filter(new CardListFilter() {
|
||||||
public boolean addCard(Card c) {
|
public boolean addCard(Card c) {
|
||||||
return c.getType().contains("Squirrel")
|
return c.getType().contains("Squirrel")
|
||||||
|| c.getKeyword().contains(
|
|| c.getKeyword().contains("Changeling");
|
||||||
"Changeling");
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user