mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
- Fixed Cumulative Upkeep code.
- Fixed a small bug with Fastbond (it would sometimes subtract more than 1 life). - Fixed some big bugs with Fastbond, Exploration, Azusa, Lost but Seeking (computer won't be able to use them if it doesn't control them). - AI should lose life when using Fastbond now.
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -144,6 +144,7 @@ src/forge/GUI_PictureHQ.java -text svneol=native#text/plain
|
|||||||
src/forge/GUI_Quest_Filter.java -text svneol=native#text/plain
|
src/forge/GUI_Quest_Filter.java -text svneol=native#text/plain
|
||||||
src/forge/GameAction.java svneol=native#text/plain
|
src/forge/GameAction.java svneol=native#text/plain
|
||||||
src/forge/GameActionUtil.java svneol=native#text/plain
|
src/forge/GameActionUtil.java svneol=native#text/plain
|
||||||
|
src/forge/GameInfo.java -text svneol=native#text/plain
|
||||||
src/forge/GenerateConstructedDeck.java svneol=native#text/plain
|
src/forge/GenerateConstructedDeck.java svneol=native#text/plain
|
||||||
src/forge/GenerateConstructedMultiColorDeck.java -text svneol=native#text/plain
|
src/forge/GenerateConstructedMultiColorDeck.java -text svneol=native#text/plain
|
||||||
src/forge/GenerateDraftDeck.java svneol=native#text/plain
|
src/forge/GenerateDraftDeck.java svneol=native#text/plain
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class AllZone implements NewConstants {
|
|||||||
public static final InputControl InputControl = new InputControl();
|
public static final InputControl InputControl = new InputControl();
|
||||||
public static final GameAction GameAction = new GameAction();
|
public static final GameAction GameAction = new GameAction();
|
||||||
public static final StateBasedEffects StateBasedEffects = new StateBasedEffects();
|
public static final StateBasedEffects StateBasedEffects = new StateBasedEffects();
|
||||||
|
public static final GameInfo GameInfo = new GameInfo();
|
||||||
|
|
||||||
//initialized at Runtime since it has to be the last object constructed
|
//initialized at Runtime since it has to be the last object constructed
|
||||||
|
|
||||||
|
|||||||
@@ -301,7 +301,10 @@ public class Card extends MyObservable
|
|||||||
if (k.startsWith("Scry"))
|
if (k.startsWith("Scry"))
|
||||||
{
|
{
|
||||||
String kk[] = k.split(" ");
|
String kk[] = k.split(" ");
|
||||||
sb.append("Scry " + kk[1] + " (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\r\n");
|
//sb.append("Scry " + kk[1] + " (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\r\n");
|
||||||
|
sb.append("Scry ");
|
||||||
|
sb.append(kk[1]);
|
||||||
|
sb.append(" (To scry X, look at the top X cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17967,7 +17967,7 @@ return land.size() > 1 && CardFactoryUtil.AI_isMainPhase();
|
|||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
bounce.setDescription("You may return two Islands you control to their owner's hand rather than pay Thwart's mana cost.");
|
bounce.setDescription("You may return three Islands you control to their owner's hand rather than pay Thwart's mana cost.");
|
||||||
bounce.setStackDescription(card.getName() + " - Counter target spell.");
|
bounce.setStackDescription(card.getName() + " - Counter target spell.");
|
||||||
bounce.setManaCost("0");
|
bounce.setManaCost("0");
|
||||||
|
|
||||||
|
|||||||
@@ -2158,20 +2158,25 @@ public class CardFactoryUtil
|
|||||||
sb.append(tokenized[0]);
|
sb.append(tokenized[0]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int i=0; i<multiplier; i++)
|
for (int i=0; i<multiplier; i++) {
|
||||||
//tokenized[0] = tokenized[0] + " " + tokenized[0];
|
//tokenized[0] = tokenized[0] + " " + tokenized[0];
|
||||||
|
sb.append((" "));
|
||||||
sb.append(tokenized[0]);
|
sb.append(tokenized[0]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i=1;i<tokenized.length;i++){
|
for (int i=1;i<tokenized.length;i++){
|
||||||
for (int j=0;j<multiplier;j++)
|
for (int j=0;j<multiplier;j++)
|
||||||
{
|
{
|
||||||
//tokenized[i] = tokenized[i] + " " + tokenized[i];
|
//tokenized[i] = tokenized[i] + " " + tokenized[i];
|
||||||
sb.append(tokenized[0]);
|
sb.append((" "));
|
||||||
|
sb.append(tokenized[i]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String result = sb.toString();
|
String result = sb.toString();
|
||||||
|
System.out.println("result: " + result);
|
||||||
result = result.trim();
|
result = result.trim();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,8 +13,5 @@ public interface Computer
|
|||||||
public void main2();
|
public void main2();
|
||||||
public void end_of_turn();//end of Human's turn
|
public void end_of_turn();//end of Human's turn
|
||||||
|
|
||||||
public void addNumberPlayLands(int n);
|
|
||||||
public void setNumberPlayLands(int n);
|
|
||||||
|
|
||||||
public void stack_not_empty();
|
public void stack_not_empty();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import java.util.TreeSet;
|
|||||||
public class ComputerAI_General implements Computer {
|
public class ComputerAI_General implements Computer {
|
||||||
//private boolean playLand = true;
|
//private boolean playLand = true;
|
||||||
//private int numberPlayLand = 1;
|
//private int numberPlayLand = 1;
|
||||||
public int numberPlayLand = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Computer);
|
//private int numberPlayLand = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Computer);
|
||||||
private Collection<Card> playMain1Cards;
|
private Collection<Card> playMain1Cards;
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -20,8 +20,8 @@ public class ComputerAI_General implements Computer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void main1() {
|
public void main1() {
|
||||||
if(numberPlayLand > 0) {
|
if(AllZone.GameInfo.getComputerCanPlayNumberOfLands() > 0) {
|
||||||
numberPlayLand--;
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1);
|
||||||
ComputerUtil.playLand();
|
ComputerUtil.playLand();
|
||||||
for(String effect:AllZone.StateBasedEffects.getStateBasedMap().keySet()) {
|
for(String effect:AllZone.StateBasedEffects.getStateBasedMap().keySet()) {
|
||||||
Command com = GameActionUtil.commands.get(effect);
|
Command com = GameActionUtil.commands.get(effect);
|
||||||
@@ -35,9 +35,9 @@ public class ComputerAI_General implements Computer {
|
|||||||
playCards(Constant.Phase.Main1);
|
playCards(Constant.Phase.Main1);
|
||||||
|
|
||||||
//for cards like Exploration, Fastbond, Azusa, ...
|
//for cards like Exploration, Fastbond, Azusa, ...
|
||||||
while(numberPlayLand > 0)
|
while(AllZone.GameInfo.getComputerCanPlayNumberOfLands() > 0)
|
||||||
{
|
{
|
||||||
numberPlayLand--;
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1);
|
||||||
ComputerUtil.playLand();
|
ComputerUtil.playLand();
|
||||||
|
|
||||||
for(String effect:AllZone.StateBasedEffects.getStateBasedMap().keySet()) {
|
for(String effect:AllZone.StateBasedEffects.getStateBasedMap().keySet()) {
|
||||||
@@ -49,7 +49,7 @@ public class ComputerAI_General implements Computer {
|
|||||||
}//main1()
|
}//main1()
|
||||||
|
|
||||||
public void main2() {
|
public void main2() {
|
||||||
numberPlayLand = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Computer);
|
AllZone.GameInfo.setComputerCanPlayNumberOfLands(CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Computer));
|
||||||
|
|
||||||
playCards(Constant.Phase.Main2);
|
playCards(Constant.Phase.Main2);
|
||||||
}
|
}
|
||||||
@@ -313,16 +313,6 @@ public class ComputerAI_General implements Computer {
|
|||||||
return library.toArray();
|
return library.toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addNumberPlayLands(int n)
|
|
||||||
{
|
|
||||||
numberPlayLand += n;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setNumberPlayLands(int n)
|
|
||||||
{
|
|
||||||
numberPlayLand = n;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void stack_not_empty() {
|
public void stack_not_empty() {
|
||||||
//same as Input.stop() method
|
//same as Input.stop() method
|
||||||
//ends the method
|
//ends the method
|
||||||
|
|||||||
@@ -335,6 +335,15 @@ public class ComputerUtil
|
|||||||
AllZone.Computer_Hand.remove(landList.get(0));
|
AllZone.Computer_Hand.remove(landList.get(0));
|
||||||
AllZone.Computer_Play.add(landList.get(0));
|
AllZone.Computer_Play.add(landList.get(0));
|
||||||
|
|
||||||
|
if (!AllZone.GameInfo.computerPlayedFirstLandThisTurn()) {
|
||||||
|
AllZone.GameInfo.setComputerPlayedFirstLandThisTurn(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (CardFactoryUtil.getFastbonds(Constant.Player.Computer).size() > 0)
|
||||||
|
AllZone.GameAction.getPlayerLife(Constant.Player.Computer).subtractLife(1);
|
||||||
|
}
|
||||||
|
|
||||||
AllZone.GameAction.checkStateEffects();
|
AllZone.GameAction.checkStateEffects();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -945,8 +945,8 @@ private Card getCurrentCard(int ID)
|
|||||||
//System.gc(); //garbage collection... does it make a difference though?
|
//System.gc(); //garbage collection... does it make a difference though?
|
||||||
lastPlayerToDraw = Constant.Player.Human;
|
lastPlayerToDraw = Constant.Player.Human;
|
||||||
|
|
||||||
Input_Main.canPlayNumberOfLands = 1;
|
AllZone.GameInfo.setComputerCanPlayNumberOfLands(1);
|
||||||
AllZone.Computer.getComputer().setNumberPlayLands(1);
|
AllZone.GameInfo.setHumanCanPlayNumberOfLands(1);
|
||||||
|
|
||||||
AllZone.Computer_Life.setLife(20);
|
AllZone.Computer_Life.setLife(20);
|
||||||
AllZone.Human_Life.setLife(20);
|
AllZone.Human_Life.setLife(20);
|
||||||
@@ -1277,7 +1277,7 @@ private int getDifferentLand(CardList list, String land)
|
|||||||
|
|
||||||
ArrayList<String> choices = new ArrayList<String>();
|
ArrayList<String> choices = new ArrayList<String>();
|
||||||
|
|
||||||
if (Input_Main.canPlayNumberOfLands > 0 && AllZone.Stack.size() == 0 &&
|
if (AllZone.GameInfo.getHumanCanPlayNumberOfLands() > 0 && AllZone.Stack.size() == 0 &&
|
||||||
(AllZone.Phase.getPhase().equals(Constant.Phase.Main1) || AllZone.Phase.getPhase().equals(Constant.Phase.Main2)) )
|
(AllZone.Phase.getPhase().equals(Constant.Phase.Main1) || AllZone.Phase.getPhase().equals(Constant.Phase.Main2)) )
|
||||||
choices.add("Play land");
|
choices.add("Play land");
|
||||||
|
|
||||||
@@ -1304,8 +1304,8 @@ private int getDifferentLand(CardList list, String land)
|
|||||||
{
|
{
|
||||||
AllZone.Human_Hand.remove(c);
|
AllZone.Human_Hand.remove(c);
|
||||||
AllZone.Human_Play.add(c);
|
AllZone.Human_Play.add(c);
|
||||||
Input_Main.canPlayNumberOfLands--;
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1);
|
||||||
Input_Main.firstLandHasBeenPlayed = true;
|
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1343,11 +1343,13 @@ private int getDifferentLand(CardList list, String land)
|
|||||||
SpellAbility sa;
|
SpellAbility sa;
|
||||||
|
|
||||||
//TODO: add Buyback, Kicker, ... , spells here
|
//TODO: add Buyback, Kicker, ... , spells here
|
||||||
|
/*
|
||||||
ArrayList<SpellAbility> additional = c.getAdditionalCostSpells();
|
ArrayList<SpellAbility> additional = c.getAdditionalCostSpells();
|
||||||
for (SpellAbility s : additional)
|
for (SpellAbility s : additional)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
/*
|
/*
|
||||||
System.out.println(choices.length);
|
System.out.println(choices.length);
|
||||||
for(int i = 0; i < choices.length; i++)
|
for(int i = 0; i < choices.length; i++)
|
||||||
|
|||||||
@@ -2715,7 +2715,9 @@ public class GameActionUtil
|
|||||||
{
|
{
|
||||||
String k[] = a.get(i).toString().split(":");
|
String k[] = a.get(i).toString().split(":");
|
||||||
c.addCounter(Counters.AGE, 1);
|
c.addCounter(Counters.AGE, 1);
|
||||||
c.setUpkeepCost(CardFactoryUtil.multiplyManaCost(k[1], c.getCounters(Counters.AGE)));
|
String upkeepCost = CardFactoryUtil.multiplyManaCost(k[1], c.getCounters(Counters.AGE));
|
||||||
|
c.setUpkeepCost(upkeepCost);
|
||||||
|
System.out.println("Multiplied cost: " + upkeepCost);
|
||||||
//c.setUpkeepCost(k[1]);
|
//c.setUpkeepCost(k[1]);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
67
src/forge/GameInfo.java
Normal file
67
src/forge/GameInfo.java
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
package forge;
|
||||||
|
|
||||||
|
public class GameInfo {
|
||||||
|
private int computerCanPlayNumberOfLands;
|
||||||
|
private int humanCanPlayNumberOfLands;
|
||||||
|
|
||||||
|
private boolean computerPlayedFirstLandThisTurn;
|
||||||
|
private boolean humanPlayedFirstLandThisTurn;
|
||||||
|
|
||||||
|
private boolean preventCombatDamageThisTurn;
|
||||||
|
|
||||||
|
public void setComputerCanPlayNumberOfLands(int n) {
|
||||||
|
computerCanPlayNumberOfLands = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getComputerCanPlayNumberOfLands() {
|
||||||
|
return computerCanPlayNumberOfLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addComputerCanPlayNumberOfLands(int n)
|
||||||
|
{
|
||||||
|
computerCanPlayNumberOfLands += n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHumanCanPlayNumberOfLands(int n) {
|
||||||
|
humanCanPlayNumberOfLands = n;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getHumanCanPlayNumberOfLands() {
|
||||||
|
return humanCanPlayNumberOfLands;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addHumanCanPlayNumberOfLands(int n)
|
||||||
|
{
|
||||||
|
humanCanPlayNumberOfLands += n;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void setComputerPlayedFirstLandThisTurn(boolean b) {
|
||||||
|
computerPlayedFirstLandThisTurn = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean computerPlayedFirstLandThisTurn() {
|
||||||
|
return computerPlayedFirstLandThisTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHumanPlayedFirstLandThisTurn(boolean b) {
|
||||||
|
humanPlayedFirstLandThisTurn = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean humanPlayedFirstLandThisTurn() {
|
||||||
|
return humanPlayedFirstLandThisTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void setPreventCombatDamageThisTurn(boolean b) {
|
||||||
|
preventCombatDamageThisTurn = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPreventCombatDamageThisTurn() {
|
||||||
|
return preventCombatDamageThisTurn;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -185,7 +185,7 @@ import java.util.*;
|
|||||||
}
|
}
|
||||||
else if(phase.equals(Constant.Phase.End_Of_Turn))
|
else if(phase.equals(Constant.Phase.End_Of_Turn))
|
||||||
{
|
{
|
||||||
System.out.println("Cache size: " + ImageCache.cache.size());
|
//System.out.println("Cache size: " + ImageCache.cache.size());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CardList visibleCards = new CardList();
|
CardList visibleCards = new CardList();
|
||||||
|
|||||||
@@ -33,16 +33,17 @@ public class InputUtil
|
|||||||
{
|
{
|
||||||
AllZone.Human_Hand.remove(card);
|
AllZone.Human_Hand.remove(card);
|
||||||
AllZone.Human_Play.add(card);
|
AllZone.Human_Play.add(card);
|
||||||
Input_Main.canPlayNumberOfLands--;
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1);
|
||||||
Input_Main.firstLandHasBeenPlayed = true;
|
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //play the land
|
else //play the land
|
||||||
{
|
{
|
||||||
AllZone.Human_Hand.remove(card);
|
AllZone.Human_Hand.remove(card);
|
||||||
AllZone.Human_Play.add(card);
|
AllZone.Human_Play.add(card);
|
||||||
Input_Main.canPlayNumberOfLands--;
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1);
|
||||||
Input_Main.firstLandHasBeenPlayed = true;
|
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(true);
|
||||||
}
|
}
|
||||||
} //land
|
} //land
|
||||||
else if(zone.is(Constant.Zone.Hand, Constant.Player.Human) &&
|
else if(zone.is(Constant.Zone.Hand, Constant.Player.Human) &&
|
||||||
|
|||||||
@@ -22,9 +22,7 @@ public void showMessage()
|
|||||||
if (!c.getKeyword().contains("Vigilance"))
|
if (!c.getKeyword().contains("Vigilance"))
|
||||||
c.tap();
|
c.tap();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public void selectButtonOK()
|
public void selectButtonOK()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ package forge;
|
|||||||
|
|
||||||
if(AllZone.Phase.getPhase().equals(Constant.Phase.Draw) && humanSkipsDrawPhase){
|
if(AllZone.Phase.getPhase().equals(Constant.Phase.Draw) && humanSkipsDrawPhase){
|
||||||
//Input_Main.canPlayLand = true;
|
//Input_Main.canPlayLand = true;
|
||||||
Input_Main.canPlayNumberOfLands = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Human);
|
AllZone.GameInfo.setHumanCanPlayNumberOfLands(CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Human));
|
||||||
Input_Main.firstLandHasBeenPlayed = false;
|
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(false);
|
||||||
AllZone.Phase.setNeedToNextPhase(true);
|
AllZone.Phase.setNeedToNextPhase(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -60,8 +60,8 @@ package forge;
|
|||||||
if(AllZone.Phase.getPhase().equals(Constant.Phase.Draw))
|
if(AllZone.Phase.getPhase().equals(Constant.Phase.Draw))
|
||||||
{
|
{
|
||||||
//Input_Main.canPlayLand = true;
|
//Input_Main.canPlayLand = true;
|
||||||
Input_Main.canPlayNumberOfLands = CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Human);
|
AllZone.GameInfo.setHumanCanPlayNumberOfLands(CardFactoryUtil.getCanPlayNumberOfLands(Constant.Player.Human));
|
||||||
Input_Main.firstLandHasBeenPlayed = false;
|
AllZone.GameInfo.setHumanPlayedFirstLandThisTurn(false);
|
||||||
|
|
||||||
//AllZone.Phase.nextPhase();
|
//AllZone.Phase.nextPhase();
|
||||||
//for debugging: System.out.println("need to nextPhase(from Input_Draw on human's draw) = true");
|
//for debugging: System.out.println("need to nextPhase(from Input_Draw on human's draw) = true");
|
||||||
|
|||||||
@@ -1,14 +1,12 @@
|
|||||||
package forge;
|
package forge;
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused") // java.util.*
|
|
||||||
public class Input_Main extends Input
|
public class Input_Main extends Input
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = -2162856359060870957L;
|
private static final long serialVersionUID = -2162856359060870957L;
|
||||||
//Input_Draw changes this
|
//Input_Draw changes this
|
||||||
//public static boolean canPlayLand;
|
//public static boolean canPlayLand;
|
||||||
public static boolean firstLandHasBeenPlayed;
|
//public static boolean firstLandHasBeenPlayed;
|
||||||
public static int canPlayNumberOfLands;
|
//public static int canPlayNumberOfLands;
|
||||||
|
|
||||||
public void showMessage()
|
public void showMessage()
|
||||||
{
|
{
|
||||||
@@ -30,18 +28,15 @@ public class Input_Main extends Input
|
|||||||
//these if statements cannot be combined
|
//these if statements cannot be combined
|
||||||
if(card.isLand() && zone.is(Constant.Zone.Hand, Constant.Player.Human))
|
if(card.isLand() && zone.is(Constant.Zone.Hand, Constant.Player.Human))
|
||||||
{
|
{
|
||||||
if(canPlayNumberOfLands > 0 )
|
if(AllZone.GameInfo.getHumanCanPlayNumberOfLands() > 0 )
|
||||||
{
|
{
|
||||||
CardList fastbonds = CardFactoryUtil.getFastbonds(Constant.Player.Human);
|
CardList fastbonds = CardFactoryUtil.getFastbonds(Constant.Player.Human);
|
||||||
if (fastbonds.size() > 0){
|
if (fastbonds.size() > 0){
|
||||||
if (firstLandHasBeenPlayed)
|
if (AllZone.GameInfo.humanPlayedFirstLandThisTurn())
|
||||||
{
|
|
||||||
for ( Card vard : fastbonds)
|
|
||||||
{
|
{
|
||||||
AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(1);
|
AllZone.GameAction.getPlayerLife(Constant.Player.Human).subtractLife(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
InputUtil.playAnyCard(card, zone);
|
InputUtil.playAnyCard(card, zone);
|
||||||
//canPlayNumberOfLands--;
|
//canPlayNumberOfLands--;
|
||||||
//firstLandHasBeenPlayed = true;
|
//firstLandHasBeenPlayed = true;
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ public class Phase extends MyObservable
|
|||||||
}
|
}
|
||||||
else if (is(Constant.Phase.Untap, Constant.Player.Computer))
|
else if (is(Constant.Phase.Untap, Constant.Player.Computer))
|
||||||
{
|
{
|
||||||
|
AllZone.GameInfo.setComputerPlayedFirstLandThisTurn(false);
|
||||||
turn++;
|
turn++;
|
||||||
/*
|
/*
|
||||||
if (computerExtraTurns > 0)
|
if (computerExtraTurns > 0)
|
||||||
|
|||||||
@@ -28,16 +28,22 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone
|
|||||||
|
|
||||||
//cannot use addComesIntoPlayCommand - trigger might be set to false;
|
//cannot use addComesIntoPlayCommand - trigger might be set to false;
|
||||||
if (c.getName().equals("Exploration")) {
|
if (c.getName().equals("Exploration")) {
|
||||||
Input_Main.canPlayNumberOfLands++;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(1);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(1);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(1);
|
||||||
}
|
}
|
||||||
else if (c.getName().equals("Azusa, Lost but Seeking")) {
|
else if (c.getName().equals("Azusa, Lost but Seeking")) {
|
||||||
Input_Main.canPlayNumberOfLands+=2;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(2);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(2);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(2);
|
||||||
}
|
}
|
||||||
else if( c.getName().equals("Fastbond")) {
|
else if( c.getName().equals("Fastbond")) {
|
||||||
Input_Main.canPlayNumberOfLands+=100;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(100);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(100);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trigger)
|
if (trigger)
|
||||||
@@ -198,16 +204,22 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone
|
|||||||
|
|
||||||
//cannot use addLeavesPlayCommand - trigger might be set to false
|
//cannot use addLeavesPlayCommand - trigger might be set to false
|
||||||
if (c.getName().equals("Exploration")) {
|
if (c.getName().equals("Exploration")) {
|
||||||
Input_Main.canPlayNumberOfLands--;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(-1);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-1);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-1);
|
||||||
}
|
}
|
||||||
else if (c.getName().equals("Azusa, Lost but Seeking")) {
|
else if (c.getName().equals("Azusa, Lost but Seeking")) {
|
||||||
Input_Main.canPlayNumberOfLands-=2;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(-2);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-2);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-2);
|
||||||
}
|
}
|
||||||
else if( c.getName().equals("Fastbond")) {
|
else if( c.getName().equals("Fastbond")) {
|
||||||
Input_Main.canPlayNumberOfLands-=100;
|
if (c.getController().equals(Constant.Player.Human))
|
||||||
AllZone.Computer.getComputer().addNumberPlayLands(-100);
|
AllZone.GameInfo.addHumanCanPlayNumberOfLands(-100);
|
||||||
|
else
|
||||||
|
AllZone.GameInfo.addComputerCanPlayNumberOfLands(-100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user