Merge branch 'master' into fixes20250817

# Conflicts:
#	forge-gui-mobile/src/forge/itemmanager/ItemManager.java
This commit is contained in:
Jetz
2025-08-17 21:01:42 -04:00
8 changed files with 11207 additions and 11203 deletions

View File

@@ -1,5 +1,5 @@
[
{
{
"id": 1,
"isTemplate": true,
"name": "Go Forth and Slay",
@@ -223,8 +223,8 @@
"waste_town_tribal",
"waste_town_identity"
]
},
{
},
{
"id": 2,
"isTemplate": true,
"name": "Wanderlust",
@@ -444,8 +444,8 @@
"POIToken": ""
}
]
},
{
},
{
"id": 3,
"isTemplate": true,
"name": "(Almost) Open for Business",
@@ -717,8 +717,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 4,
"isTemplate": true,
"name": "On the Hunt",
@@ -980,8 +980,8 @@
"forest_town_tribal",
"forest_capital"
]
},
{
},
{
"id": 5,
"isTemplate": true,
"name": "A Scheduled Burial",
@@ -1236,8 +1236,8 @@
"swamp_town_tribal",
"swamp_capital"
]
},
{
},
{
"id": 6,
"isTemplate": true,
"name": "High Plains Justice",
@@ -1641,8 +1641,8 @@
"plains_town_tribal",
"plains_capital"
]
},
{
},
{
"id": 7,
"isTemplate": true,
"name": "Sacred Sands",
@@ -1858,8 +1858,8 @@
"mountain_town_tribal",
"mountain_capital"
]
},
{
},
{
"id": 8,
"isTemplate": true,
"name": "Remote Instruction",
@@ -2175,8 +2175,8 @@
"island_town_tribal",
"island_capital"
]
},
{
},
{
"id": 9,
"isTemplate": true,
"name": "Waste 'em",
@@ -2457,8 +2457,8 @@
"waste_town_tribal",
"waste_town_identity"
]
},
{
},
{
"id": 10,
"isTemplate": true,
"name": "Room for New Growth",
@@ -2859,8 +2859,8 @@
"forest_town_tribal",
"forest_capital"
]
},
{
},
{
"id": 11,
"isTemplate": true,
"name": "Eviction Notice",
@@ -3072,8 +3072,8 @@
"prerequisiteIDs": [ 2 ]
}
]
},
{
},
{
"id": 12,
"isTemplate": true,
"name": "A Freshly Plowed Field",
@@ -3302,8 +3302,8 @@
"plains_town_tribal",
"plains_capital"
]
},
{
},
{
"id": 13,
"isTemplate": true,
"name": "The Onyx Compass",
@@ -3742,8 +3742,8 @@
"swamp_town_tribal",
"swamp_capital"
]
},
{
},
{
"id": 14,
"isTemplate": true,
"name": "A Vision of Destruction",
@@ -4060,8 +4060,8 @@
"mountain_town_tribal",
"mountain_capital"
]
},
{
},
{
"id": 15,
"isTemplate": true,
"name": "A Private Island",
@@ -4301,8 +4301,8 @@
"island_town_tribal",
"island_capital"
]
},
{
},
{
"id": 16,
"isTemplate": true,
"name": "Clearing the ledger",
@@ -4541,8 +4541,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 17,
"isTemplate": true,
"name": "Bone Collector",
@@ -4813,8 +4813,8 @@
"swamp_town_tribal",
"swamp_capital"
]
},
{
},
{
"id": 18,
"isTemplate": true,
"name": "A Focused Mind",
@@ -5018,8 +5018,8 @@
"island_town_tribal",
"island_capital"
]
},
{
},
{
"id": 19,
"isTemplate": true,
"name": "Population Control",
@@ -5280,8 +5280,8 @@
"forest_town_identity",
"forest_town_tribal"
]
},
{
},
{
"id": 20,
"isTemplate": true,
"name": "Proving Yourself Worthy",
@@ -5550,8 +5550,8 @@
"plains_town_identity",
"plains_town_tribal"
]
},
{
},
{
"id": 21,
"isTemplate": true,
"name": "In the Name of Science",
@@ -5719,8 +5719,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 22,
"isTemplate": true,
"name": "Shamanic Totems",
@@ -5885,8 +5885,8 @@
"mountain_town_tribal",
"mountain_capital"
]
},
{
},
{
"id": 23,
"isTemplate": true,
"name": "Heart of a Champion",
@@ -6083,8 +6083,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 24,
"isTemplate": true,
"name": "Pest Control",
@@ -6288,8 +6288,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 25,
"isTemplate": true,
"name": "Mechanical Problems",
@@ -6491,8 +6491,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 26,
"isTemplate": true,
"name": "Spores of Death",
@@ -6691,8 +6691,8 @@
"swamp_town_identity",
"swamp_town_tribal"
]
},
{
},
{
"id": 27,
"isTemplate": true,
"name": "Slimy Business",
@@ -6895,8 +6895,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 28,
"isTemplate": true,
"name": "Entering Shandalar",
@@ -6906,7 +6906,7 @@
"text": "Darkness and silence surrounds you. A vague sense of falling slows second by second.",
"options": [
{
"name": "Where am I? What am I? What is going on? (Tutorial and main quest)",
"name": "Where am I? What am I? What is going on? (Tutorial and main quest). NOTE: NOT UPDATED FOR THE PLANE YET. MAY BREAK.",
"text": "A flash of light brighter than anything you remember precedes a fall to a stone floor. This is almost as jarring as realizing that you actually don't remember much of anything at all.",
"options": [
{
@@ -7066,8 +7066,8 @@
]
},
"storyQuest": true
},
{
},
{
"id": 29,
"isTemplate": true,
"name": "A Chat with the Locals",
@@ -7272,8 +7272,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 30,
"isTemplate": true,
"name": "Where Am I?",
@@ -7533,8 +7533,8 @@
],
"storyQuest": true,
"autoTrack": true
},
{
},
{
"id": 31,
"isTemplate": true,
"name": "Building A Collection",
@@ -7551,8 +7551,8 @@
]
},
"storyQuest": true
},
{
},
{
"id": 32,
"isTemplate": true,
"name": "A Portal to Nowhere",
@@ -7599,8 +7599,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 33,
"isTemplate": true,
"name": "Welcome to the Jungle",
@@ -7643,8 +7643,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 34,
"isTemplate": true,
"name": "A Healthy Dose of Skep-ticism",
@@ -7687,8 +7687,8 @@
"questSourceTags": [
"island_capital"
]
},
{
},
{
"id": 35,
"isTemplate": true,
"name": "Kiora's Fall",
@@ -7896,8 +7896,8 @@
"island_town_identity",
"island_town_tribal"
]
},
{
},
{
"id": 36,
"isTemplate": true,
"name": "Teferi's Fall",
@@ -8105,8 +8105,8 @@
"island_town_identity",
"island_town_tribal"
]
},
{
},
{
"id": 37,
"isTemplate": true,
"name": "The Drunken Plea",
@@ -8314,8 +8314,8 @@
"plains_capital",
"swamp_capital"
]
},
{
},
{
"id": 38,
"isTemplate": true,
"name": "Goblin Invasion",
@@ -8498,8 +8498,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 39,
"isTemplate": true,
"name": "Merfolk Invasion",
@@ -8682,8 +8682,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 40,
"isTemplate": true,
"name": "Undead Invasion",
@@ -8865,8 +8865,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 41,
"isTemplate": true,
"name": "Elven Invasion",
@@ -9049,8 +9049,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 42,
"isTemplate": true,
"name": "Soldier Invasion",
@@ -9235,8 +9235,8 @@
"waste_town_identity",
"waste_town_tribal"
]
},
{
},
{
"id": 43,
"isTemplate": true,
"name": "Your First Job",
@@ -9333,8 +9333,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 44,
"isTemplate": true,
"name": "Find the Caravan",
@@ -9548,8 +9548,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 45,
"isTemplate": true,
"name": "What's Yours Is Mine",
@@ -9775,8 +9775,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 46,
"isTemplate": true,
"name": "Busy Work",
@@ -9833,8 +9833,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 47,
"isTemplate": true,
"name": "Check Out The Library",
@@ -10120,8 +10120,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 48,
"isTemplate": true,
"name": "The Dig Site",
@@ -10428,8 +10428,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 49,
"isTemplate": true,
"name": "Busy Work 2",
@@ -10506,8 +10506,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 50,
"isTemplate": true,
"name": "Welcome To The Jungle",
@@ -10665,8 +10665,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 51,
"isTemplate": true,
"name": "Flower Fetching",
@@ -11037,8 +11037,8 @@
}
],
"storyQuest": true
},
{
},
{
"id": 52,
"isTemplate": true,
"name": "The Enemy of My Enemy...",
@@ -11232,7 +11232,7 @@
}
],
"storyQuest": true
},
},
{
"id": 53,
"isTemplate": true,

View File

@@ -5,6 +5,7 @@ import forge.game.GameFormat;
import forge.game.GameType;
import forge.game.IHasGameType;
import forge.gamemodes.quest.QuestController;
import forge.localinstance.properties.ForgePreferences;
import forge.model.FModel;
import forge.util.Aggregates;
import forge.util.IterableUtil;
@@ -173,8 +174,11 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable<RandomD
if (Iterables.isEmpty(decks)) {
return getGeneratedDeck(); //fall back to generated deck if no decks in filtered list
}
if (isAi && FModel.getPreferences().getPrefBoolean(ForgePreferences.FPref.UI_AUTO_AIDECK_SELECTION)) {
Iterable<DeckProxy> AIDecks = IterableUtil.filter(decks, deckProxy -> deckProxy.getAI().inMainDeck == 0);
if (isAi && Iterables.size(AIDecks) > 10) return Aggregates.random(AIDecks).getDeck();
if (Iterables.size(AIDecks) > 10)
return Aggregates.random(AIDecks).getDeck();
}
return Aggregates.random(decks).getDeck();
}