From a990945366b7fb2153388f53a6022dbbf55ac163 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 04:30:05 +0000 Subject: [PATCH] - Fixed Iona, Shield of Emeria not preventing Sower of Temptation being cast (when blue is chosen). - More quest updates (second pet, bunch of fixes). --- res/quest/quests.txt | 10 ++ src/QuestData_State.java | 6 +- src/forge/CardFactory_Creatures.java | 2 +- src/forge/Gui_PetShop.java | 194 +++++++++++++++++++-------- src/forge/Gui_Quest.java | 23 +++- src/forge/QuestData.java | 28 ++++ src/forge/QuestData_State.java | 7 +- src/forge/QuestUtil.java | 94 ++++++++++++- 8 files changed, 299 insertions(+), 65 deletions(-) diff --git a/res/quest/quests.txt b/res/quest/quests.txt index 1441f1c7d22..f2cfb8731dc 100644 --- a/res/quest/quests.txt +++ b/res/quest/quests.txt @@ -88,4 +88,14 @@ Four green rares 225 leafIconSmall.png +10 +Zombie Attack! +The village of Haven is getting attacked by the Zombie horde! Protect the village. +Hard +Not Repeatable +50 +Four black rares +200 +blackOrbSmall.png + End \ No newline at end of file diff --git a/src/QuestData_State.java b/src/QuestData_State.java index de61d67cbb1..ed4c77f1c6c 100644 --- a/src/QuestData_State.java +++ b/src/QuestData_State.java @@ -23,9 +23,9 @@ public class QuestData_State implements Serializable { private static final long serialVersionUID = 7007940230351051937L; int rankIndex, win, lost; - int plantLevel, wolfPetLevel, life, estatesLevel, questsPlayed; + int plantLevel, wolfPetLevel, crocPetLevel, life, estatesLevel, questsPlayed; long credits; - String difficulty, mode; + String difficulty, mode, selectedPet; ArrayList availableQuests, completedQuests; @@ -43,6 +43,6 @@ public class QuestData_State implements Serializable { for(Entry deck:this.aiDecks.entrySet()) { aiDecks.put(deck.getKey(), deck.getValue().migrate()); } - return new forge.QuestData_State(rankIndex, win, lost, plantLevel, wolfPetLevel, life, estatesLevel, questsPlayed, availableQuests, completedQuests,credits, difficulty, mode, cardPool, shopList, myDecks, aiDecks); + return new forge.QuestData_State(rankIndex, win, lost, plantLevel, wolfPetLevel, crocPetLevel, selectedPet, life, estatesLevel, questsPlayed, availableQuests, completedQuests,credits, difficulty, mode, cardPool, shopList, myDecks, aiDecks); } } diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 539f4e68919..7397a9bdf20 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -7542,7 +7542,7 @@ public class CardFactory_Creatures { @Override public boolean canPlay() { CardList choice = (CardList) getCreature.execute(); - return choice.size() > 0; + return choice.size() > 0 && super.canPlay(); } @Override diff --git a/src/forge/Gui_PetShop.java b/src/forge/Gui_PetShop.java index f0abe158d1a..d6f2520cefb 100644 --- a/src/forge/Gui_PetShop.java +++ b/src/forge/Gui_PetShop.java @@ -23,16 +23,16 @@ public class Gui_PetShop extends JFrame implements NewConstants{ private JFrame shopsGUI; private JLabel titleLabel = new JLabel(); - private JLabel wolfPetDescLabel = new JLabel(); - private JLabel wolfPetStatsLabel = new JLabel(); - private JLabel wolfPetPriceLabel = new JLabel(); - private JLabel wolfPetIconLabel = new JLabel(); + private JLabel petDescLabel = new JLabel(); + private JLabel petStatsLabel = new JLabel(); + private JLabel petPriceLabel = new JLabel(); + private JLabel petIconLabel = new JLabel(); private JLabel creditsLabel = new JLabel(); - private ImageIcon wolfPetIcon = new ImageIcon(); + private ImageIcon petIcon = new ImageIcon(); - private JButton buyWolfPetButton = new JButton(); + private JButton buyPetButton = new JButton(); private JButton quitButton = new JButton(); private QuestData questData = AllZone.QuestData; @@ -64,10 +64,9 @@ public class Gui_PetShop extends JFrame implements NewConstants{ private void setup() { //String fileName = "LeafIconSmall.png"; //ImageIcon icon = getIcon(fileName); - buyWolfPetButton.setBounds(new Rectangle(10, 297, 120, 50)); - buyWolfPetButton.setText(getButtonText("Wolf")); - //buyPlantButton.setIcon(icon); - buyWolfPetButton.addActionListener(new java.awt.event.ActionListener() { + buyPetButton.setBounds(new Rectangle(10, 297, 120, 50)); + + buyPetButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { try { buyPetButton_actionPerformed(e); @@ -108,12 +107,43 @@ public class Gui_PetShop extends JFrame implements NewConstants{ } else if (questData.getWolfPetLevel() == 3) { - sb.append("Gives Flanking to your Wolf.
"); + sb.append("Gives Flanking to your wolf.
"); sb.append("Level 4: 2/2 Flanking
"); } - else + else if (questData.getWolfPetLevel() >= 4) { - sb.append("Wolf Level Maxed out.
"); + //sb.append("Wolf Level Maxed out.
"); + + if (questData.getCrocPetLevel() == 0) + { + sb.append("With its razor sharp teeth, this swamp-dwelling monster is extremely dangerous."); + sb.append("Crikey mate!

"); + sb.append("Level 1: 1/1
"); + sb.append("Next Level: 2/1
"); + sb.append("Can learn: Swampwalk"); + } + else if (questData.getCrocPetLevel() == 1) + { + sb.append("Improve the attack power of your croc.
"); + sb.append("Level 2: 2/1
"); + sb.append("Next Level: 3/1
"); + sb.append("Can learn: Swampwalk"); + } + else if (questData.getCrocPetLevel() == 2) + { + sb.append("Improve the attack power of your croc.
"); + sb.append("Level 3: 3/1
"); + sb.append("Next Level: 3/1 Swampwalk
"); + } + else if (questData.getCrocPetLevel() == 3) + { + sb.append("Gives Swampwalk to your croc.
"); + sb.append("Level 4: 3/1 Swampwalk
"); + } + else if (questData.getCrocPetLevel() >= 4) + { + sb.append("Croc Level Maxed out.
"); + } } sb.append(""); @@ -131,6 +161,17 @@ public class Gui_PetShop extends JFrame implements NewConstants{ l = 500; else if (questData.getWolfPetLevel() == 3) l = 550; + else if (questData.getWolfPetLevel() >= 4) + { + if (questData.getCrocPetLevel() == 0) + l = 250; + else if (questData.getCrocPetLevel() == 1) + l = 300; + else if (questData.getCrocPetLevel() == 2) + l = 450; + else if (questData.getCrocPetLevel() == 3) + l = 600; + } return l; } @@ -143,23 +184,43 @@ public class Gui_PetShop extends JFrame implements NewConstants{ else s = "Train " + pet; } + else if (pet.equals("Croc")) + { + if (questData.getCrocPetLevel() == 0) + s = "Buy " + pet; + else + s = "Train " + pet; + } return s; } - private String getWolfStats() + private String getPetStats() { StringBuilder sb = new StringBuilder(); - if (questData.getWolfPetLevel() == 0) - sb.append("1/1"); - else if (questData.getWolfPetLevel() == 1) - sb.append("1/2"); - else if (questData.getWolfPetLevel() == 2) - sb.append("2/2"); - else /*if (questData.getWolfPetLevel() == 3)*/ - sb.append("2/2"); + if (questData.getWolfPetLevel() < 4) { + if (questData.getWolfPetLevel() == 0) + sb.append("1/1"); + else if (questData.getWolfPetLevel() == 1) + sb.append("1/2"); + else if (questData.getWolfPetLevel() <= 3) + sb.append("2/2"); + + sb.append(" Wolf Pet (current level "); + sb.append(questData.getWolfPetLevel()); + } //getWolfPetLevel < 4 + else if (questData.getCrocPetLevel() < 4) + { + if (questData.getCrocPetLevel() == 0) + sb.append("1/1"); + else if (questData.getCrocPetLevel() == 1) + sb.append("2/1"); + else if (questData.getCrocPetLevel() <= 3) + sb.append("3/1"); + + sb.append(" Croc Pet (current level "); + sb.append(questData.getCrocPetLevel()); + } - sb.append(" Wolf Pet (current level "); - sb.append(questData.getWolfPetLevel()); sb.append("/4)"); return sb.toString(); } @@ -167,14 +228,27 @@ public class Gui_PetShop extends JFrame implements NewConstants{ private String getImageString() { String s = ""; - if (questData.getWolfPetLevel() == 0) - s = "g_1_1_wolf_pet_small.jpg"; - else if (questData.getWolfPetLevel() == 1) - s = "g_1_2_wolf_pet_small.jpg"; - else if (questData.getWolfPetLevel() == 2) - s = "g_2_2_wolf_pet_small.jpg"; - else if (questData.getWolfPetLevel() == 3) - s = "g_2_2_wolf_pet_flanking_small.jpg"; + if (questData.getWolfPetLevel() < 4) { + if (questData.getWolfPetLevel() == 0) + s = "g_1_1_wolf_pet_small.jpg"; + else if (questData.getWolfPetLevel() == 1) + s = "g_1_2_wolf_pet_small.jpg"; + else if (questData.getWolfPetLevel() == 2) + s = "g_2_2_wolf_pet_small.jpg"; + else if (questData.getWolfPetLevel() == 3) + s = "g_2_2_wolf_pet_flanking_small.jpg"; + } + else if (questData.getCrocPetLevel() < 4) + { + if (questData.getCrocPetLevel() == 0) + s = "b_1_1_crocodile_pet_small.jpg"; + else if (questData.getCrocPetLevel() == 1) + s = "b_2_1_crocodile_pet_small.jpg"; + else if (questData.getCrocPetLevel() == 2) + s = "b_3_1_crocodile_pet_small.jpg"; + else if (questData.getCrocPetLevel() == 3) + s = "b_3_1_crocodile_pet_swampwalk_small.jpg"; + } return s; } @@ -186,31 +260,36 @@ public class Gui_PetShop extends JFrame implements NewConstants{ titleLabel.setBounds(new Rectangle(150, 5, 198, 60)); this.getContentPane().setLayout(null); - wolfPetStatsLabel.setFont(new Font("sserif", Font.BOLD, 12)); - wolfPetStatsLabel.setText(getWolfStats()); - wolfPetStatsLabel.setBounds(new Rectangle(10, 65, 200, 15)); + petStatsLabel.setFont(new Font("sserif", Font.BOLD, 12)); + petStatsLabel.setText(getPetStats()); + petStatsLabel.setBounds(new Rectangle(10, 65, 200, 15)); - wolfPetDescLabel.setFont(new Font("sserif", 0, 12)); - wolfPetDescLabel.setText(getDesc()); - wolfPetDescLabel.setBounds(new Rectangle(10, 80, 300, 150)); + petDescLabel.setFont(new Font("sserif", 0, 12)); + petDescLabel.setText(getDesc()); + petDescLabel.setBounds(new Rectangle(10, 80, 300, 150)); - wolfPetPriceLabel.setFont(new Font("sserif", 0, 12)); - wolfPetPriceLabel.setText("Price: " + getPrice() + " credits"); - wolfPetPriceLabel.setBounds(new Rectangle(10, 230, 150, 15)); + petPriceLabel.setFont(new Font("sserif", 0, 12)); + petPriceLabel.setText("Price: " + getPrice() + " credits"); + petPriceLabel.setBounds(new Rectangle(10, 230, 150, 15)); creditsLabel.setFont(new Font("sserif", 0, 12)); creditsLabel.setText("Credits: " + questData.getCredits()); creditsLabel.setBounds(new Rectangle(10, 265, 150, 15)); - wolfPetIcon = getIcon(getImageString()); - wolfPetIconLabel.setText(""); - wolfPetIconLabel.setIcon(wolfPetIcon); - wolfPetIconLabel.setBounds(new Rectangle(280, 65, 201, 280)); - wolfPetIconLabel.setIconTextGap(0); + petIcon = getIcon(getImageString()); + petIconLabel.setText(""); + petIconLabel.setIcon(petIcon); + petIconLabel.setBounds(new Rectangle(280, 65, 201, 280)); + petIconLabel.setIconTextGap(0); - buyWolfPetButton.setEnabled(true); - if (questData.getCredits() < getPrice() || questData.getWolfPetLevel() >= 4) - buyWolfPetButton.setEnabled(false); + if (questData.getWolfPetLevel() < 4) + buyPetButton.setText(getButtonText("Wolf")); + else if (questData.getCrocPetLevel() < 4) + buyPetButton.setText(getButtonText("Croc")); + + buyPetButton.setEnabled(true); + if (questData.getCredits() < getPrice() || questData.getCrocPetLevel() >= 4) + buyPetButton.setEnabled(false); quitButton.setBounds(new Rectangle(140, 297, 120, 50)); quitButton.setText("Quit"); @@ -222,12 +301,12 @@ public class Gui_PetShop extends JFrame implements NewConstants{ //jPanel2.add(quitButton, null); - this.getContentPane().add(buyWolfPetButton, null); + this.getContentPane().add(buyPetButton, null); this.getContentPane().add(titleLabel, null); - this.getContentPane().add(wolfPetStatsLabel, null); - this.getContentPane().add(wolfPetDescLabel, null); - this.getContentPane().add(wolfPetIconLabel, null); - this.getContentPane().add(wolfPetPriceLabel, null); + this.getContentPane().add(petStatsLabel, null); + this.getContentPane().add(petDescLabel, null); + this.getContentPane().add(petIconLabel, null); + this.getContentPane().add(petPriceLabel, null); this.getContentPane().add(creditsLabel, null); this.getContentPane().add(quitButton,null); } @@ -249,7 +328,12 @@ public class Gui_PetShop extends JFrame implements NewConstants{ void buyPetButton_actionPerformed(ActionEvent e) throws Exception { questData.subtractCredits(getPrice()); - questData.addWolfPetLevel(); + + if (questData.getWolfPetLevel() < 4) + questData.addWolfPetLevel(); + else if (questData.getCrocPetLevel() < 4) + questData.addCrocPetLevel(); + QuestData.saveData(questData); jbInit(); } diff --git a/src/forge/Gui_Quest.java b/src/forge/Gui_Quest.java index 1c8c00bd1c6..7e898228abc 100644 --- a/src/forge/Gui_Quest.java +++ b/src/forge/Gui_Quest.java @@ -55,11 +55,13 @@ public class Gui_Quest extends JFrame implements NewConstants{ private JPanel jPanel2 = new JPanel(); private JButton playGameButton = new JButton(); private JButton questsButton = new JButton(); + private JRadioButton oppTwoRadio = new JRadioButton(); private JRadioButton oppOneRadio = new JRadioButton(); private JRadioButton oppThreeRadio = new JRadioButton(); private JLabel jLabel5 = new JLabel(); private JComboBox deckComboBox = new JComboBox(); + private JComboBox petComboBox = new JComboBox(); private ButtonGroup oppGroup = new ButtonGroup(); private static JCheckBox smoothLandCheckBox = new JCheckBox("", true); private static JCheckBox resizeCheckbox = new JCheckBox("", true); @@ -126,6 +128,13 @@ public class Gui_Quest extends JFrame implements NewConstants{ deckComboBox.addItem(list.get(i)); if(Constant.Runtime.HumanDeck[0] != null) deckComboBox.setSelectedItem(Constant.Runtime.HumanDeck[0].getName()); + + if ("Fantasy".equals(questData.getMode())) + { + + } + + }//setup() private void jbInit() throws Exception { @@ -170,7 +179,11 @@ public class Gui_Quest extends JFrame implements NewConstants{ //if (questData.getMode().equals("Fantasy")) if ("Fantasy".equals(questData.getMode())) { - + //petComboBox.removeAll(); + ArrayList petList = QuestUtil.getPetNames(questData); + for (int i=0;i availableQuests, completedQuests; ArrayList cardPool, shopList; @@ -38,7 +38,7 @@ public class QuestData_State implements Serializable { * This constructor is used by QestData_State in the default package to create a replacement object for the * obsolete class. */ - public QuestData_State(int rankIndex, int win, int lost, int plantLevel, int wolfPetLevel, int life, int estatesLevel, int questsPlayed, + public QuestData_State(int rankIndex, int win, int lost, int plantLevel, int wolfPetLevel, int crocPetLevel, String selectedPet, int life, int estatesLevel, int questsPlayed, ArrayList availableQuests, ArrayList completedQuests, long credits, String difficulty, String mode, ArrayList cardPool, ArrayList shopList, Map myDecks, Map aiDecks) { this.rankIndex = rankIndex; @@ -46,6 +46,7 @@ public class QuestData_State implements Serializable { this.lost = lost; this.plantLevel = plantLevel; this.wolfPetLevel = wolfPetLevel; + this.crocPetLevel = crocPetLevel; this.life = life; this.estatesLevel = estatesLevel; this.questsPlayed = questsPlayed; diff --git a/src/forge/QuestUtil.java b/src/forge/QuestUtil.java index d938ca12254..7091a458751 100644 --- a/src/forge/QuestUtil.java +++ b/src/forge/QuestUtil.java @@ -34,8 +34,10 @@ public class QuestUtil { { CardList list = new CardList(); - if (qd.getWolfPetLevel() > 0) + if (qd.getSelectedPet().equals("Wolf") && qd.getWolfPetLevel() > 0) list.add(getWolfPetToken(qd.getWolfPetLevel())); + else if (qd.getSelectedPet().equals("Croc") && qd.getCrocPetLevel() > 0) + list.add(getCrocPetToken(qd.getCrocPetLevel())); if (qd.getPlantLevel() > 0) list.add(getPlantToken(qd.getPlantLevel())); @@ -206,6 +208,72 @@ public class QuestUtil { return c; }//getWolfPetToken + public static Card getCrocPetToken(int level) + { + String imageName = ""; + int baseAttack = 0; + int baseDefense = 0; + + if (level == 1) + { + imageName = "B 1 1 Crocodile Pet"; + baseDefense = 1; + baseAttack = 1; + } + else if (level == 2) + { + imageName = "B 2 1 Crocodile Pet"; + baseDefense = 1; + baseAttack = 2; + } + else if (level == 3) + { + imageName = "G 3 1 Crocodile Pet"; + baseDefense = 1; + baseAttack = 3; + } + else if (level == 4) + { + imageName = "G 3 1 Crocodile Pet Swampwalk"; + baseDefense = 1; + baseAttack = 3; + } + + + Card c = new Card(); + c.setName("Crocodile Pet"); + + c.setImageName(imageName); + + c.setController(Constant.Player.Human); + c.setOwner(Constant.Player.Human); + + c.setManaCost("B"); + c.setToken(true); + + c.addType("Creature"); + c.addType("Crocodile"); + c.addType("Pet"); + + if (level >= 4) + c.addIntrinsicKeyword("Swampwalk"); + + c.setBaseAttack(baseAttack); + c.setBaseDefense(baseDefense); + + return c; + }//getCrocPetToken + + public static ArrayList getPetNames(QuestData questData) + { + ArrayList list = new ArrayList(); + if (questData.getWolfPetLevel() > 0) + list.add("Wolf"); + if (questData.getCrocPetLevel() > 0) + list.add("Croc"); + return list; + } + public static void setupQuest(Quest_Assignment qa) { /* @@ -291,7 +359,29 @@ public class QuestUtil { qa.setCardRewardList(pack.getRare(4, 4)); } + else if (id == 10) + { + CardList humanList = new CardList(); + + Card c = AllZone.CardFactory.getCard("Wall of Spears", Constant.Player.Human); + humanList.add(c); + + for (int i=0;i<3;i++) + { + c = CardFactoryUtil.makeToken("Citizen", "W 1 1 Citizen", Constant.Player.Human, "W", + new String[] {"Creature","Citizen"}, 1, 1, new String[]{""}).get(0); + humanList.add(c); + } + + qa.setHuman(humanList); + + for (int i=0;i<3;i++) + qa.addCompy("Scathe Zombies"); + qa.addCompy("Mass of Ghouls"); + + qa.setCardRewardList(pack.getRare(4, 2)); + } + } - }//QuestUtil