From b112a63d227b5d7d03f9a7c121335eebb9fbfd63 Mon Sep 17 00:00:00 2001 From: Agetian Date: Tue, 27 Jan 2015 19:30:43 +0000 Subject: [PATCH] - Fix the draft order for sets before Mirrodin Besieged in Quest draft tournaments. --- .../java/forge/quest/QuestEventDraft.java | 42 ++++++++++++++++--- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/forge-gui/src/main/java/forge/quest/QuestEventDraft.java b/forge-gui/src/main/java/forge/quest/QuestEventDraft.java index 4511d0b98ac..3841f093fdc 100644 --- a/forge-gui/src/main/java/forge/quest/QuestEventDraft.java +++ b/forge-gui/src/main/java/forge/quest/QuestEventDraft.java @@ -863,6 +863,21 @@ public class QuestEventDraft { List setCombos = new ArrayList<>(); CardEdition[] sets = block.getSets(); + boolean isBeforeMBS = false; // before Mirrodin Besieged, sets were drafted in the opposite order (old->new instead of new->old) + for (CardEdition set : sets) { + Calendar cal = Calendar.getInstance(); + // This is set to Scars of Mirrodin date to account for the fact that MBS is drafted as a part of the Scars of Mirrodin block. + // Setting it to the date of Mirrodin Besieged makes it treat all drafts that feature Scars of Mirrodin incorrectly. + cal.set(Calendar.YEAR, 2010); + cal.set(Calendar.MONTH, Calendar.OCTOBER); + cal.set(Calendar.DAY_OF_MONTH, 1); + Date MBSDate = cal.getTime(); + + if (set.getDate().before(MBSDate)) { + isBeforeMBS = true; + } + } + Arrays.sort(sets, new Comparator() { @Override public int compare(CardEdition set1, CardEdition set2) { @@ -878,19 +893,36 @@ public class QuestEventDraft { if (sets.length == 2) { if (sets[0].getCards().length < 200) { - setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode())); + if (!isBeforeMBS) { + setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode())); + } else { + setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[1].getCode(), sets[0].getCode())); + } } else if (sets[1].getCards().length < 200) { - setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[0].getCode(), sets[0].getCode())); + if (!isBeforeMBS) { + setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[0].getCode(), sets[0].getCode())); + } else { + setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[1].getCode())); + } } else { setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[1].getCode(), sets[1].getCode())); - setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode())); - setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[1].getCode())); + if (!isBeforeMBS) { + setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode())); + setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[1].getCode())); + } else { + setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[1].getCode(), sets[0].getCode())); + setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[0].getCode(), sets[0].getCode())); + } setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[0].getCode())); } } else if (sets.length >= 3) { - setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[2].getCode())); + if (!isBeforeMBS) { + setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[2].getCode())); + } else { + setCombos.add(String.format("%s/%s/%s", sets[2].getCode(), sets[1].getCode(), sets[0].getCode())); + } setCombos.add(String.format("%s/%s/%s", sets[2].getCode(), sets[2].getCode(), sets[2].getCode())); }