- Momir Basic is exempt from evaluating Arcane Master, Mana Flooded and deck construction challenge (e.g. No Spells) achievements as they are pertinent to this format and can't really be regarded as player's "achievements" in this case.

This commit is contained in:
Agetian
2016-09-26 05:15:06 +00:00
parent 5eba55072f
commit 24e4364a4c
3 changed files with 13 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
package forge.achievement;
import forge.game.Game;
import forge.game.GameType;
import forge.game.player.Player;
public class ArcaneMaster extends Achievement {
@@ -14,6 +15,9 @@ public class ArcaneMaster extends Achievement {
@Override
protected int evaluate(Player player, Game game) {
if (game.getRules().hasAppliedVariant(GameType.MomirBasic)) {
return defaultValue; // Momir Basic is exempt from this achievement (custom rules do not require any spellcasting by default)
}
if (player.getOutcome().hasWon()) {
return player.getAchievementTracker().spellsCast;
}

View File

@@ -2,6 +2,7 @@ package forge.achievement;
import forge.deck.Deck;
import forge.game.Game;
import forge.game.GameType;
import forge.game.player.Player;
import forge.properties.ForgeConstants;
@@ -55,6 +56,10 @@ public class ChallengeAchievements extends AchievementCollection {
@Override
protected final boolean eval(Player player, Game game) {
if (game.getRules().hasAppliedVariant(GameType.MomirBasic)) {
// Momir Basic uses a fixed pre-defined deck format (all lands), so designing it to be that way is not the player's achievement
return false;
}
if (player.getOutcome().hasWon()) {
return eval(player.getRegisteredPlayer().getDeck());
}

View File

@@ -1,6 +1,7 @@
package forge.achievement;
import forge.game.Game;
import forge.game.GameType;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.game.zone.ZoneType;
@@ -16,6 +17,9 @@ public class ManaFlooded extends Achievement {
@Override
protected int evaluate(Player player, Game game) {
if (game.getRules().hasAppliedVariant(GameType.MomirBasic)) {
return 0; // in Momir Basic, getting a lot of lands out is not an achievement:w
}
if (player.getOutcome().hasWon()) {
int landCount = 0;
for (Card c : player.getZone(ZoneType.Battlefield).getCards()) {