From 2a871c25255e38ab078282780df1d736d7b3460c Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 17 Sep 2014 03:46:35 +0000 Subject: [PATCH] Add Blackjack achievement --- .gitattributes | 1 + .../java/forge/achievement/Blackjack.java | 39 +++++++++++++++++++ .../achievement/ConstructedAchievements.java | 3 +- .../main/java/forge/achievement/Poisoned.java | 6 ++- .../forge/achievement/QuestAchievements.java | 2 +- 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 forge-gui/src/main/java/forge/achievement/Blackjack.java diff --git a/.gitattributes b/.gitattributes index 521d5e9506c..95644f288d1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -16655,6 +16655,7 @@ forge-gui/src/main/java/forge/GuiBase.java -text forge-gui/src/main/java/forge/UiCommand.java svneol=native#text/plain forge-gui/src/main/java/forge/achievement/Achievement.java -text forge-gui/src/main/java/forge/achievement/AchievementCollection.java -text +forge-gui/src/main/java/forge/achievement/Blackjack.java -text forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java -text forge-gui/src/main/java/forge/achievement/DeckedOut.java -text forge-gui/src/main/java/forge/achievement/DraftAchievements.java -text diff --git a/forge-gui/src/main/java/forge/achievement/Blackjack.java b/forge-gui/src/main/java/forge/achievement/Blackjack.java new file mode 100644 index 00000000000..84540641319 --- /dev/null +++ b/forge-gui/src/main/java/forge/achievement/Blackjack.java @@ -0,0 +1,39 @@ +package forge.achievement; + +import forge.game.Game; +import forge.game.player.GameLossReason; +import forge.game.player.Player; + +public class Blackjack extends Achievement { + private static final int THRESHOLD = 21; + + public Blackjack(int silver0, int gold0) { + super("Blackjack", + String.format("Win a game by dealing %d combat damage with your commander.", THRESHOLD), THRESHOLD, + String.format("Win a game by dealing %d combat damage with your commander.", silver0), silver0, + String.format("Win a game by dealing %d combat damage with your commander.", gold0), gold0); + } + + @Override + protected int evaluate(Player player, Game game) { + if (player.getOutcome().hasWon()) { + for (Player p : game.getRegisteredPlayers()) { + if (p.isOpponentOf(player) && p.getOutcome().lossState == GameLossReason.CommanderDamage) { + Integer damage = p.getCommanderDamage().get(player.getCommander()); + if (damage != null && damage >= THRESHOLD) { + return damage; + } + } + } + } + return 0; + } + + @Override + public String getSubTitle() { + if (best > 0) { + return "Best: " + best + " Damage"; + } + return null; + } +} diff --git a/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java b/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java index 4fd6f1bfba8..adb8764e01c 100644 --- a/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/ConstructedAchievements.java @@ -16,11 +16,12 @@ public class ConstructedAchievements extends AchievementCollection { //add achievements that should appear at the bottom below core achievements for each game mode @Override protected void buildBottomShelf() { - add("Poisoned", new Poisoned(10, 15, 25)); + add("Poisoned", new Poisoned(15, 25)); add("DeckedOut", new DeckedOut(8, 4)); add("Vanguard", new VariantWins(GameType.Vanguard, 25, 50)); add("MomirBasic", new VariantWins(GameType.MomirBasic, 25, 50)); add("Commander", new VariantWins(GameType.Commander, 25, 50)); + add("Blackjack", new Blackjack(30, 50)); add("Planechase", new VariantWins(GameType.Planechase, 25, 50)); add("Archenemy", new VariantWins(GameType.Archenemy, 25, 50)); } diff --git a/forge-gui/src/main/java/forge/achievement/Poisoned.java b/forge-gui/src/main/java/forge/achievement/Poisoned.java index 23b78f937a5..3db73ee1ca2 100644 --- a/forge-gui/src/main/java/forge/achievement/Poisoned.java +++ b/forge-gui/src/main/java/forge/achievement/Poisoned.java @@ -5,9 +5,11 @@ import forge.game.player.GameLossReason; import forge.game.player.Player; public class Poisoned extends Achievement { - public Poisoned(int bronze0, int silver0, int gold0) { + private static final int THRESHOLD = 10; + + public Poisoned(int silver0, int gold0) { super("Poisoned", - String.format("Win a game by giving opponent %d poison counters.", bronze0), bronze0, + String.format("Win a game by giving opponent %d poison counters.", THRESHOLD), THRESHOLD, String.format("Win a game by giving opponent %d poison counters.", silver0), silver0, String.format("Win a game by giving opponent %d poison counters.", gold0), gold0); } diff --git a/forge-gui/src/main/java/forge/achievement/QuestAchievements.java b/forge-gui/src/main/java/forge/achievement/QuestAchievements.java index f2fae93c5bc..574cefb0379 100644 --- a/forge-gui/src/main/java/forge/achievement/QuestAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/QuestAchievements.java @@ -15,7 +15,7 @@ public class QuestAchievements extends AchievementCollection { //add achievements that should appear at the bottom below core achievements for each game mode @Override protected void buildBottomShelf() { - add("Poisoned", new Poisoned(10, 15, 25)); + add("Poisoned", new Poisoned(15, 25)); add("DeckedOut", new DeckedOut(8, 4)); } }