mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Add Chromatic and Epic challenges
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
package forge.achievement;
|
||||
|
||||
import forge.deck.Deck;
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
import forge.properties.ForgeConstants;
|
||||
|
||||
public class ChallengeAchievements extends AchievementCollection {
|
||||
@@ -20,5 +23,44 @@ public class ChallengeAchievements extends AchievementCollection {
|
||||
add(new NoSpells());
|
||||
add(new NoLands());
|
||||
add(new Domain());
|
||||
add("Chromatic", "Chromatic", "Win a game after casting a 5 color spell", "With great color requirements comes great power.");
|
||||
add("Epic", "Epic", "Win a game after resolving a spell with the Epic keyword", "When it's the last spell you ever cast, you better make it count!");
|
||||
}
|
||||
|
||||
private void add(String key0, String displayName0, String description0, String flavorText0) {
|
||||
add(new ChallengeAchievement(key0, displayName0, description0, flavorText0));
|
||||
}
|
||||
|
||||
public static class ChallengeAchievement extends ProgressiveAchievement {
|
||||
protected ChallengeAchievement(String key0, String displayName0, String description0, String flavorText0) {
|
||||
super(key0, displayName0, description0, flavorText0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final String getNoun() {
|
||||
return "Win";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean eval(Player player, Game game) {
|
||||
return player.getOutcome().hasWon() &&
|
||||
player.getAchievementTracker().challengesCompleted.contains(getKey());
|
||||
}
|
||||
}
|
||||
|
||||
public static abstract class DeckChallengeAchievement extends ChallengeAchievement {
|
||||
protected DeckChallengeAchievement(String key0, String displayName0, String condition0, String flavorText0) {
|
||||
super(key0, displayName0, "Win a game using a deck " + condition0, flavorText0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final boolean eval(Player player, Game game) {
|
||||
if (player.getOutcome().hasWon()) {
|
||||
return eval(player.getRegisteredPlayer().getDeck());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected abstract boolean eval(Deck deck);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
package forge.achievement;
|
||||
|
||||
import forge.deck.Deck;
|
||||
import forge.game.Game;
|
||||
import forge.game.player.Player;
|
||||
|
||||
public abstract class DeckChallengeAchievement extends ProgressiveAchievement {
|
||||
protected DeckChallengeAchievement(String key0, String displayName0, String condition0, String flavorText0) {
|
||||
super(key0, displayName0, "Win a game using a deck " + condition0, flavorText0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getNoun() {
|
||||
return "Win";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final boolean eval(Player player, Game game) {
|
||||
if (player.getOutcome().hasWon()) {
|
||||
return eval(player.getRegisteredPlayer().getDeck());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
protected abstract boolean eval(Deck deck);
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package forge.achievement;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import forge.achievement.ChallengeAchievements.DeckChallengeAchievement;
|
||||
import forge.deck.Deck;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.achievement;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import forge.achievement.ChallengeAchievements.DeckChallengeAchievement;
|
||||
import forge.deck.Deck;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.achievement;
|
||||
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import forge.achievement.ChallengeAchievements.DeckChallengeAchievement;
|
||||
import forge.card.CardType;
|
||||
import forge.deck.Deck;
|
||||
import forge.item.PaperCard;
|
||||
|
||||
@@ -121,9 +121,7 @@ public class HumanPlaySpellAbility {
|
||||
|
||||
if (isFree || payment.isFullyPaid()) {
|
||||
//track when planeswalker ultimates are activated
|
||||
if (ability.getRestrictions().isPwAbility() && ability.hasParam("Ultimate") && ability.getActivatingPlayer().getController() instanceof PlayerControllerHuman) {
|
||||
ability.getActivatingPlayer().getAchievementTracker().activatedUltimates.add(ability.getHostCard().getName());
|
||||
}
|
||||
ability.getActivatingPlayer().getAchievementTracker().onSpellAbilityPlayed(ability);
|
||||
|
||||
if (skipStack) {
|
||||
AbilityUtils.resolve(ability);
|
||||
|
||||
Reference in New Issue
Block a user