Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Asia Expansion Project" mod support #2239

Merged
merged 77 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
6b769db
WIP TI->RoA province mappings
IhateTrains Aug 23, 2024
1c15323
TI province mapping fixes
IhateTrains Aug 23, 2024
1490716
More triangulation pairs
IhateTrains Aug 25, 2024
14fead1
Better province mappings from TI to RoA
IhateTrains Aug 29, 2024
9852e4e
Mapping for TI `confucian` religion
IhateTrains Aug 29, 2024
4cb98e8
terra_indomita_to_aep province mappings
IhateTrains Aug 30, 2024
782df55
Some Terra Indomita to Rajas of Asia culture mappings
IhateTrains Aug 30, 2024
9c9b168
WIP TI->RoA culture mappings
IhateTrains Aug 31, 2024
5a4199c
tweak logging of unmapped I:R cultures
IhateTrains Aug 31, 2024
fad9fec
TI -> RoA culture mapping tweaks
IhateTrains Aug 31, 2024
24958b4
Mapping for chinese_unification_wargoal
IhateTrains Aug 31, 2024
5dd0b61
Mapping for japanese_clothes template
IhateTrains Aug 31, 2024
20b7bd7
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Aug 31, 2024
a545df5
Add fallback named colors for RoA
IhateTrains Aug 31, 2024
babbd33
WIP elamite_religion
IhateTrains Aug 31, 2024
4daa4ce
Adjust Elamite holy site locations for vanilla CK3 map
IhateTrains Aug 31, 2024
555b153
Add d_cult_of_humban from Bronze Age Reborn
IhateTrains Aug 31, 2024
6250a2a
Add mappings for Japanese hairstyles from TI
IhateTrains Aug 31, 2024
6942e8e
Fix history of d_cult_of_humban
IhateTrains Sep 1, 2024
b411d92
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 2, 2024
a54da06
Merge branch 'master' into feature/aep-support
IhateTrains Sep 4, 2024
4cfb3e1
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 9, 2024
d78e3cc
Merge branch 'master' into feature/aep-support
IhateTrains Sep 9, 2024
128d4b1
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 16, 2024
a47cb0e
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 16, 2024
6837c42
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 16, 2024
7339430
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 18, 2024
f4b4029
Post-merge cleanup
IhateTrains Sep 18, 2024
647c99a
Merge branch 'master' into feature/aep-support
IhateTrains Sep 18, 2024
84874a7
Better logging of unmapped I:R cultures
IhateTrains Sep 18, 2024
7c843bf
Merge branch 'feature/rajas-of-asia-support' into feature/aep-support
IhateTrains Sep 18, 2024
f39b868
Add TI -> AEP mappings for andaman, yaeyama and duuchuu cultures
IhateTrains Sep 19, 2024
b7410b7
Merge branch 'master' into feature/aep-support
IhateTrains Sep 21, 2024
2e5782b
Merge branch 'master' into feature/aep-support
IhateTrains Sep 22, 2024
2494c6a
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 22, 2024
955e551
AEP culture mappings for TI bahnar and lacviet cultures
IhateTrains Sep 22, 2024
634fc28
AEP culture mappings for holchu and wa
IhateTrains Sep 22, 2024
75a18ce
Map TI wa to AEP yamato
IhateTrains Sep 22, 2024
344031e
Some TI -> AEP culture mappings thanks to @កាបូន26
IhateTrains Sep 23, 2024
8a6bcca
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 24, 2024
5f5012e
Add TODO comments to dubious Han mappings
IhateTrains Sep 24, 2024
0022997
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 26, 2024
a29fa5a
Merge branch 'master' into feature/aep-support
IhateTrains Sep 26, 2024
9af820e
chong culture from RoA
IhateTrains Sep 27, 2024
0affd55
Merge branch 'master' into feature/aep-support
IhateTrains Sep 27, 2024
3bf39a0
Avoid overriding RoA chong culture
IhateTrains Sep 27, 2024
3957115
Add name_list_khmer and heritage_mon_khmer
IhateTrains Sep 27, 2024
9a73971
Finish the TI -> AEP mapping for pear culture
IhateTrains Sep 27, 2024
d0df7e9
Merge branch 'master' into feature/rajas-of-asia-support
IhateTrains Sep 27, 2024
9f7d95f
TI -> RoA mapping for bo and ba cultures
IhateTrains Sep 27, 2024
c373a64
TI -> RoA mapping for bekhyrian and syrbotian cultures
IhateTrains Sep 27, 2024
e48e501
Merge branch 'feature/rajas-of-asia-support' into feature/aep-support
IhateTrains Sep 28, 2024
e8a3aa7
Create IRToCK3_khmer.txt
IhateTrains Sep 28, 2024
9a8ef89
Merge branch 'master' into feature/aep-support
IhateTrains Oct 2, 2024
358d385
Merge branch 'master' into feature/aep-support
IhateTrains Oct 2, 2024
7c9938c
Merge branch 'master' into feature/aep-support
IhateTrains Oct 2, 2024
0566d00
Update build_dev_version.yml
IhateTrains Oct 2, 2024
4fa2cde
Update build_dev_version.yml
IhateTrains Oct 2, 2024
013da7e
Update TI -> AEP province mappings
IhateTrains Oct 2, 2024
ca82859
Remove AEP bookmarks
IhateTrains Oct 2, 2024
367b500
Remove game_start.txt block for the ruler of Munster
IhateTrains Oct 2, 2024
9e4d62f
Some religion mappings for AEP
IhateTrains Oct 2, 2024
912dd4f
Mapping for TI chinese_religions
IhateTrains Oct 2, 2024
3e1cdaa
Fix failing unit tests
IhateTrains Oct 2, 2024
6fd0d21
Merge branch 'master' into feature/aep-support
IhateTrains Oct 3, 2024
39a4166
More triangulation pairs and religion mappings for AEP
IhateTrains Oct 3, 2024
99996c7
Merge branch 'master' into feature/aep-support
IhateTrains Oct 5, 2024
644873a
Merge branch 'master' into feature/aep-support
IhateTrains Oct 5, 2024
ee85504
Placeholder mapping for baiyue_religions
IhateTrains Oct 5, 2024
f0d72b7
Merge branch 'master' into feature/aep-support
IhateTrains Oct 7, 2024
4101d71
Merge branch 'master' into feature/aep-support
IhateTrains Oct 7, 2024
2d12a1a
Map remaining TI religions to AEP
IhateTrains Oct 7, 2024
f864b8c
Add remaining TI -> AEP culture mappings
IhateTrains Oct 8, 2024
dace4dd
Update terra_indomita_to_aep.txt
IhateTrains Oct 8, 2024
5d09bd9
Update terra_indomita_to_aep.txt
IhateTrains Oct 8, 2024
2cc8605
Add AEP to supported CK3 mods in FAQ
IhateTrains Oct 8, 2024
38c071f
Merge branch 'master' into feature/aep-support
IhateTrains Oct 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/build_dev_version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,14 @@ jobs:
run: echo "BRANCH_NAME=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV
env:
GITHUB_REF: ${{ github.ref }}
- name: "Modify the branch name to be used in artifact name (Windows)"
if: runner.os == 'Windows'
run: echo "BRANCH_NAME=${BRANCH_NAME.Replace('/', '-').Replace('\', '-').Replace(':', '-').Replace('<', '-').Replace('>', '-').Replace('|', '-').Replace('*', '-').Replace('?', '-').Replace('\r', '-').Replace('\n', '-').Replace('/', '-').Replace('\\', '-')}" | Out-File -Append $env:GITHUB_ENV
- name: "Modify the branch name to be used in artifact name (Unix)"
if: runner.os != 'Windows'
# Invalid characters include: Double quote ", Colon :, Less than <, Greater than >, Vertical bar |, Asterisk *, Question mark ?, Carriage return \r, Line feed \n, Backslash \, Forward slash /
run: echo "BRANCH_NAME=${BRANCH_NAME//[^a-zA-Z0-9]/-}" >> $GITHUB_ENV

- name: Remove old artifacts
uses: ThreadsStyling/purge-artifacts-action@v1
with:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ public void ImperatorCountriesGoldCanBeDistributedAmongRulerAndVassals() {

var tagTitleMapper = new TagTitleMapper();
var provinceMapper = new ProvinceMapper();
provinceMapper.LoadMappings(provinceMappingsPath, "test_version");
provinceMapper.LoadMappings(provinceMappingsPath);

var countryLocBlock = imperatorWorld.LocDB.AddLocBlock("PRY");
countryLocBlock["english"] = "Phrygian Empire"; // this ensures that the CK3 title will be an empire
Expand Down
4 changes: 2 additions & 2 deletions ImperatorToCK3.UnitTests/CK3/Provinces/ProvincesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ public void PrimaryImperatorProvinceIsProperlyDeterminedForCK3Province() {
irWorld.Provinces.Add(irProvince6);

var provinceMapper = new ProvinceMapper();
const string provinceMappingsPath = "TestFiles/LandedTitlesTests/province_mappings.txt";
provinceMapper.LoadMappings(provinceMappingsPath, "6_to_1");
const string provinceMappingsPath = "TestFiles/LandedTitlesTests/province_mappings_6_to_1.txt";
provinceMapper.LoadMappings(provinceMappingsPath);

var ck3Provinces = new ProvinceCollection { new(1) };
var ck3RegionMapper = new CK3RegionMapper();
Expand Down
8 changes: 4 additions & 4 deletions ImperatorToCK3.UnitTests/CK3/Titles/LandedTitlesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ public void GovernorshipsCanBeRecognizedAsCountyLevel() {

var tagTitleMapper = new TagTitleMapper();
var provinceMapper = new ProvinceMapper();
provinceMapper.LoadMappings(provinceMappingsPath, "test_version");
provinceMapper.LoadMappings(provinceMappingsPath);
var irLocDB = new LocDB("english");
var ck3Religions = new ReligionCollection(titles);
var religionMapper = new ReligionMapper(ck3Religions, irRegionMapper, ck3RegionMapper);
Expand Down Expand Up @@ -387,7 +387,7 @@ public void DevelopmentIsCorrectlyCalculatedFor1ProvinceTo1BaronyCountyMapping()
irWorld.Provinces.Add(irProvince);

var provinceMapper = new ProvinceMapper();
provinceMapper.LoadMappings(provinceMappingsPath, "test_version");
provinceMapper.LoadMappings(provinceMappingsPath);

var ck3Provinces = new ProvinceCollection { new(1), new(2), new(3) };
var ck3RegionMapper = new CK3RegionMapper();
Expand Down Expand Up @@ -423,7 +423,7 @@ public void DevelopmentFromImperatorProvinceCanBeUsedForMultipleCK3Provinces() {
irWorld.Provinces.Add(irProvince);

var provinceMapper = new ProvinceMapper();
provinceMapper.LoadMappings("TestFiles/LandedTitlesTests/province_mappings_1_to_3.txt", "test_version");
provinceMapper.LoadMappings("TestFiles/LandedTitlesTests/province_mappings_1_to_3.txt");

var ck3Provinces = new ProvinceCollection { new(1), new(2), new(3) };
var ck3RegionMapper = new CK3RegionMapper();
Expand Down Expand Up @@ -461,7 +461,7 @@ public void DevelopmentOfCountyIsCalculatedFromAllCountyProvinces() {
irWorld.Provinces.Add(irProvince2);

var provinceMapper = new ProvinceMapper();
provinceMapper.LoadMappings(provinceMappingsPath, "test_version");
provinceMapper.LoadMappings(provinceMappingsPath);

var ck3Provinces = new ProvinceCollection { new(1), new(2), new(3) };
var ck3RegionMapper = new CK3RegionMapper();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,12 @@ namespace ImperatorToCK3.UnitTests.Mappers.Province;
[CollectionDefinition("Sequential", DisableParallelization = true)]
public class ProvinceMapperTests {
private const string TestFilesPath = "TestFiles/MapperTests/ProvinceMapper";
private const string MappingsVersionName = "test_version";

[Fact]
public void EmptyMappingsDefaultToEmpty() {
var mapper = new ProvinceMapper();
var mappingsPath = Path.Combine(TestFilesPath, "empty.txt");
mapper.LoadMappings(mappingsPath, "test_version");
mapper.LoadMappings(mappingsPath);

Assert.Empty(mapper.GetImperatorProvinceNumbers(1));
}
Expand All @@ -23,7 +22,7 @@ public void EmptyMappingsDefaultToEmpty() {
public void CanLookupImperatorProvinces() {
var mapper = new ProvinceMapper();
var mappingsPath = Path.Combine(TestFilesPath, "many_to_many.txt");
mapper.LoadMappings(mappingsPath, MappingsVersionName);
mapper.LoadMappings(mappingsPath);

Assert.Equal(2, mapper.GetImperatorProvinceNumbers(1).Count);
Assert.Equal((ulong)2, mapper.GetImperatorProvinceNumbers(1)[0]);
Expand All @@ -37,7 +36,7 @@ public void CanLookupImperatorProvinces() {
public void CanLookupCK3Provinces() {
var mapper = new ProvinceMapper();
var mappingsPath = Path.Combine(TestFilesPath, "many_to_many.txt");
mapper.LoadMappings(mappingsPath, MappingsVersionName);
mapper.LoadMappings(mappingsPath);

Assert.Equal(2, mapper.GetCK3ProvinceNumbers(1).Count);
Assert.Equal((ulong)2, mapper.GetCK3ProvinceNumbers(1)[0]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ public void GovernorshipToDeJureDuchyMappingFailsIfDuchyIsNot60PercentControlled

var provinceMapper = new ProvinceMapper();
const string provinceMappingsPath = "TestFiles/LandedTitlesTests/province_mappings.txt";
provinceMapper.LoadMappings(provinceMappingsPath, "test_version");
provinceMapper.LoadMappings(provinceMappingsPath);
Assert.Equal((ulong)1, provinceMapper.GetCK3ProvinceNumbers(1).First());
Assert.Equal((ulong)2, provinceMapper.GetCK3ProvinceNumbers(2).First());
Assert.Equal((ulong)3, provinceMapper.GetCK3ProvinceNumbers(3).First());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,3 @@ test_version = {
link={imp=5 ck3=5}
link={imp=6 ck3=6}
}

6_to_1 = {
link = {
imp = 1
imp = 2
imp = 3
imp = 4
imp = 5
imp = 6

ck3 = 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
6_to_1 = {
link = {
imp = 1
imp = 2
imp = 3
imp = 4
imp = 5
imp = 6

ck3 = 1
}
}
2 changes: 2 additions & 0 deletions ImperatorToCK3.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AD/@EntryIndexedValue">AD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AEP/@EntryIndexedValue">AEP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue">AI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BC/@EntryIndexedValue">BC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BOM/@EntryIndexedValue">BOM</s:String>
Expand All @@ -11,6 +12,7 @@
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FS/@EntryIndexedValue">FS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IR/@EntryIndexedValue">IR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PDX/@EntryIndexedValue">PDX</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TI/@EntryIndexedValue">TI</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=adjacencies/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Adnanite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Alexandros/@EntryIndexedValue">True</s:Boolean>
Expand Down
47 changes: 33 additions & 14 deletions ImperatorToCK3/CK3/World.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,6 @@ public World(Imperator.World impWorld, Configuration config, Thread? irCoaExtrac
config.CK3BookmarkDate = CorrectedDate;
}

LoadCorrectProvinceMappingsVersion(impWorld);

Logger.Info("Detecting selected CK3 mods...");
List<Mod> incomingCK3Mods = new();
foreach (var modPath in config.SelectedCK3Mods) {
Expand Down Expand Up @@ -117,6 +115,7 @@ public World(Imperator.World impWorld, Configuration config, Thread? irCoaExtrac
ColorFactory ck3ColorFactory = new();
// Now that we have the mod filesystem, we can initialize the localization database.
Parallel.Invoke(
() => LoadCorrectProvinceMappingsFile(impWorld), // Depends on loaded mods.
() => {
LocDB.LoadLocFromModFS(ModFS, config.GetActiveCK3ModFlags());
Logger.IncrementProgress();
Expand Down Expand Up @@ -219,19 +218,29 @@ public World(Imperator.World impWorld, Configuration config, Thread? irCoaExtrac
foreach (var irReligionId in impWorld.Religions.Select(r => r.Id)) {
var baseMapping = religionMapper.Match(irReligionId, null, null, null, null, config);
if (baseMapping is null) {
Logger.Warn($"No base mapping found for I:R religion {irReligionId}!");
string religionStr = "ID: " + irReligionId;
var localizedName = impWorld.LocDB.GetLocBlockForKey(irReligionId)?["english"];
if (localizedName is not null) {
religionStr += $", name: {localizedName}";
}
Logger.Warn($"No base mapping found for I:R religion {religionStr}!");
}
}
},
() => { // depends on cultureMapper
// Check if all I:R cultures have a base mapping.
var irCultureIds = impWorld.CulturesDB.SelectMany(g => g.Select(c => c.Id));
foreach (var irCultureId in irCultureIds) {
var baseMapping = cultureMapper.Match(irCultureId, null, null, null);
if (baseMapping is null) {
Logger.Warn($"No base mapping found for I:R culture {irCultureId}!");
}
}
var baseMapping = cultureMapper.Match(irCultureId, null, null, null);
if (baseMapping is null) {
string cultureStr = "ID: " + irCultureId;
var localizedName = impWorld.LocDB.GetLocBlockForKey(irCultureId)?["english"];
if (localizedName is not null) {
cultureStr += $", name: {localizedName}";
}
Logger.Warn($"No base mapping found for I:R culture {cultureStr}!");
}
}
}
);

Expand Down Expand Up @@ -413,14 +422,24 @@ private void ImportImperatorWars(Imperator.World irWorld, Date ck3BookmarkDate)
Logger.IncrementProgress();
}

private void LoadCorrectProvinceMappingsVersion(Imperator.World imperatorWorld) {
var mappingsVersion = "imperator_invictus";
if (!imperatorWorld.GlobalFlags.Contains("is_playing_invictus")) {
private void LoadCorrectProvinceMappingsFile(Imperator.World imperatorWorld) {
string mappingsToUse;

bool irHasTI = imperatorWorld.Countries.Any(c => c.Variables.Contains("unification_points"));
bool ck3HasAEP = LoadedMods.Any(m => m.Name == "Asia Expansion Project");
if (irHasTI && ck3HasAEP) {
mappingsToUse = "terra_indomita_to_aep";
} else if (imperatorWorld.GlobalFlags.Contains("is_playing_invictus")) {
mappingsToUse = "imperator_invictus";
} else {
mappingsToUse = "imperator_vanilla";
Logger.Warn("Support for non-Invictus Imperator saves is deprecated.");
mappingsVersion = "imperator_vanilla";
}
Logger.Debug($"Using mappings version: {mappingsVersion}");
provinceMapper.LoadMappings("configurables/province_mappings.txt", mappingsVersion);

Logger.Info($"Using province mappings: {mappingsToUse}");
var mappingsPath = Path.Combine("configurables/province_mappings", mappingsToUse + ".txt");

provinceMapper.LoadMappings(mappingsPath);
}

private void LoadMenAtArmsTypes(ModFilesystem ck3ModFS, ScriptValueCollection scriptValues) {
Expand Down
20 changes: 18 additions & 2 deletions ImperatorToCK3/Configuration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ public sealed class Configuration {
public LegionConversion LegionConversion { get; set; } = LegionConversion.MenAtArms;
public Date CK3BookmarkDate { get; set; } = new(0, 1, 1);
public bool SkipDynamicCoAExtraction { get; set; } = false;
public bool FallenEagleEnabled { get; set; }
public bool WhenTheWorldStoppedMakingSenseEnabled { get; set; }
public bool FallenEagleEnabled { get; private set; }
public bool WhenTheWorldStoppedMakingSenseEnabled { get; private set; }
public bool RajasOfAsiaEnabled { get; private set; }
public bool AsiaExpansionProjectEnabled { get; private set; }

public Configuration() { }
public Configuration(ConverterVersion converterVersion) {
Expand Down Expand Up @@ -316,13 +318,27 @@ public void DetectSpecificCK3Mods(ICollection<Mod> loadedMods) {
WhenTheWorldStoppedMakingSenseEnabled = true;
Logger.Info($"WtWSMS detected: {wtwsmsMod.Name}");
}

var roaMod = loadedMods.FirstOrDefault(m => m.Name.StartsWith("Rajas of Asia", StringComparison.Ordinal));
if (roaMod is not null) {
RajasOfAsiaEnabled = true;
Logger.Info($"RoA detected: {roaMod.Name}");
}

var aepMod = loadedMods.FirstOrDefault(m => m.Name.StartsWith("Asia Expansion Project", StringComparison.Ordinal));
if (aepMod is not null) {
AsiaExpansionProjectEnabled = true;
Logger.Info($"AEP detected: {aepMod.Name}");
}
}

/// <summary>Returns a collection of CK3 mod flags with values based on the enabled mods. "vanilla" flag is set to true if no other flags are set.</summary>
public OrderedDictionary<string, bool> GetCK3ModFlags() {
var flags = new OrderedDictionary<string, bool> {
["tfe"] = FallenEagleEnabled,
["wtwsms"] = WhenTheWorldStoppedMakingSenseEnabled,
["roa"] = RajasOfAsiaEnabled,
["aep"] = AsiaExpansionProjectEnabled,
};

flags["vanilla"] = flags.Count(f => f.Value) == 0;
Expand Down
Loading
Loading