From aae476f7875fcc5d1ef56492fd65986e196e8402 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 22 Jul 2020 13:11:10 +0300 Subject: [PATCH 1/4] - Attempt to both fix the {C} mana payment *and* not break the "may pay with mana of any color" at once --- forge-game/src/main/java/forge/game/mana/ManaPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index f6e8e40edaf..cfdde921d30 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -354,7 +354,7 @@ public class ManaPool extends ManaConversionMatrix implements Iterable { byte line = getPossibleColorUses(color); for(byte outColor : ManaAtom.MANATYPES) { - if ((line & outColor) != 0 && shard.canBePaidWithManaOfColor(color)) { + if ((line & color) != 0 && shard.canBePaidWithManaOfColor(outColor)) { return true; } } From 093c4f8c11f11becee1a2d6b8dc0f3a06d28d4a7 Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 22 Jul 2020 13:13:55 +0300 Subject: [PATCH 2/4] Revert "- Attempt to both fix the {C} mana payment *and* not break the "may pay with mana of any color" at once", doesn't work. --- forge-game/src/main/java/forge/game/mana/ManaPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index cfdde921d30..f6e8e40edaf 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -354,7 +354,7 @@ public class ManaPool extends ManaConversionMatrix implements Iterable { byte line = getPossibleColorUses(color); for(byte outColor : ManaAtom.MANATYPES) { - if ((line & color) != 0 && shard.canBePaidWithManaOfColor(outColor)) { + if ((line & outColor) != 0 && shard.canBePaidWithManaOfColor(color)) { return true; } } From 39ca80652dd7ef5b89fd95a3836a391493782aad Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 22 Jul 2020 13:32:18 +0300 Subject: [PATCH 3/4] - Yet another attempt at the fix. --- forge-game/src/main/java/forge/game/mana/ManaPool.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/mana/ManaPool.java b/forge-game/src/main/java/forge/game/mana/ManaPool.java index f6e8e40edaf..31a52e30bb5 100644 --- a/forge-game/src/main/java/forge/game/mana/ManaPool.java +++ b/forge-game/src/main/java/forge/game/mana/ManaPool.java @@ -350,11 +350,15 @@ public class ManaPool extends ManaConversionMatrix implements Iterable { } public boolean canPayForShardWithColor(ManaCostShard shard, byte color) { + if (shard.isOfKind(ManaAtom.COLORLESS) && color == ManaAtom.GENERIC) { + return false; // FIXME: testing Colorless against Generic is a recipe for disaster, but probably there should be a better fix. + } + // TODO Debug this for Paying Gonti, byte line = getPossibleColorUses(color); for(byte outColor : ManaAtom.MANATYPES) { - if ((line & outColor) != 0 && shard.canBePaidWithManaOfColor(color)) { + if ((line & outColor) != 0 && shard.canBePaidWithManaOfColor(outColor)) { return true; } } From 579f96498e1c4e34945e10405e9f126b30a0d49e Mon Sep 17 00:00:00 2001 From: Agetian Date: Wed, 22 Jul 2020 13:47:20 +0300 Subject: [PATCH 4/4] - Allow emblems to serve as registrable alt win conditions for the purpose of achievements. Fixed Vraska, Golgari Queen alt win achievement. --- .../src/main/java/forge/achievement/AltWinAchievements.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/forge-gui/src/main/java/forge/achievement/AltWinAchievements.java b/forge-gui/src/main/java/forge/achievement/AltWinAchievements.java index f78ec584544..02da7141241 100644 --- a/forge-gui/src/main/java/forge/achievement/AltWinAchievements.java +++ b/forge-gui/src/main/java/forge/achievement/AltWinAchievements.java @@ -42,6 +42,9 @@ public class AltWinAchievements extends AchievementCollection { } Achievement achievement = achievements.get(altWinCondition); + if (achievement == null) { + achievement = achievements.get("Emblem - " + altWinCondition); // indirectly winning through an emblem + } if (achievement != null) { achievement.update(player); save();