From b5e5478fbd8fa4e730783c46ec8d1b1558b35db5 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Fri, 29 Jul 2022 19:32:56 +0200 Subject: [PATCH] Added checks for incompatible mods: DLC, CC, USSEP, Tamriel worldspace, Skyrim cells --- SKSE/Plugins/fs.dll | 4 +- SKSE/Plugins/fs_se.dll | 4 +- scripts/_00e_playersetupscript.pex | Bin 16012 -> 15761 bytes scripts/enderallib.pex | Bin 1090 -> 1043 bytes source/fs.dll/fs/HasInvalidCells.h | 612 ++++++++++++++++++++++ source/fs.dll/fs/fs.vcxproj | 2 + source/fs.dll/fs/main.cpp | 36 +- source/scripts/_00e_playersetupscript.psc | 5 - source/scripts/enderallib.psc | 2 - 9 files changed, 641 insertions(+), 24 deletions(-) create mode 100644 source/fs.dll/fs/HasInvalidCells.h diff --git a/SKSE/Plugins/fs.dll b/SKSE/Plugins/fs.dll index 47a78d76..38c5ad55 100644 --- a/SKSE/Plugins/fs.dll +++ b/SKSE/Plugins/fs.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:99c536fbac8293f73b56ae823c24b95457237000fd0e689729845fa9ded036a0 -size 176128 +oid sha256:01930a8819132b7eb415fce927d23bc9cade2c102c842c082db642264c3609a5 +size 202240 diff --git a/SKSE/Plugins/fs_se.dll b/SKSE/Plugins/fs_se.dll index 2cdd1600..6aa0303f 100644 --- a/SKSE/Plugins/fs_se.dll +++ b/SKSE/Plugins/fs_se.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f903c871bf8231f023cf5220b858e2db7ea774bc9dec82ee448f092e196664f -size 176128 +oid sha256:a386d7e1126bb9c5c81f36337064fa60aa6ed5403ed56b32f9ef9927b939d9de +size 200704 diff --git a/scripts/_00e_playersetupscript.pex b/scripts/_00e_playersetupscript.pex index 97a2019218a03f0fc9dd8c4d67ece5bd0e4a1df6..4981877e25e066e1da0f48933c085175e832cdac 100644 GIT binary patch literal 15761 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 Dz)#dN literal 16012 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 YuI}y`PAM<4vMi;Gw3^WY|Bvba0THiELjV8( diff --git a/scripts/enderallib.pex b/scripts/enderallib.pex index a7411c88713c1223fdb0e34af64ffe96ab981d70..9c12b6d33b74bbbefa1b9b138da1c1cfcef78e67 100644 GIT binary patch delta 469 zcmYk2%}T>S5Xb+sN!zqFHd?i9{H`CZf}n?9f_P8_y?7}oc&jFApe9;#@F4UV!aj!= zeF5=7JoVxe2qNfg+F~ck&dhJ;KbhTkLmJli+1rOEKw!J*6@OxDi#FoD^Z2<|&tHat z>qmYVwAx7D_^#^((D%czjf~?&-tFBswBsO>kJN}ipEBuY)bWFBc_cPXE@(!r$b)_o z2C^)6DU_TL<7)ODTULjb734*C9jlg7qz^|$OvTI$pN+_cO8?%_hJbw$^LYcrKmXau0$R;fFp{iKNe3X1$uQ4|qE;)M$)9y}O1=!HZR6HN-O+5}nxd+=g-2GWBk zs%d%YaRwFOxn&*MnsXiW1DCAa={};mDJ)KuFCpY%y#zEE&u=k diff --git a/source/fs.dll/fs/HasInvalidCells.h b/source/fs.dll/fs/HasInvalidCells.h new file mode 100644 index 00000000..6d96a9ac --- /dev/null +++ b/source/fs.dll/fs/HasInvalidCells.h @@ -0,0 +1,612 @@ +#pragma once + +#include "skse64/GameForms.h" + +inline bool HasInvalidCells() +{ + // FormIDs of all Skyrim cells. + // 7 of them are commented out, because they are cells in Enderal as well. + + UInt32 formids[584] = { + 0x0004B8FB, + 0x000352C7, + 0x000161E7, + 0x00013A73, + 0x000BA599, + 0x00042BED, + 0x000361F9, + 0x00016A11, + 0x000152A1, + 0x0001523D, + 0x000A8B23, + 0x000918D3, + 0x0004761B, + 0x0003CBCB, + 0x00016A07, + 0x00015233, + 0x000138CF, + 0x0009CCDD, + 0x0008B84D, + 0x0003EA9D, + 0x000198DD, + 0x000165B1, + 0x00015229, + 0x000D9DC7, + 0x000965B3, + 0x0006F3EB, + 0x000466CB, + 0x000165A7, + 0x00015283, + 0x000139E7, + 0x000EF325, + 0x000AD5A1, + 0x00016BDD, + 0x00015279, + 0x00015215, + 0x00013979, + 0x0007BEF7, + 0x0004E227, + 0x000240B7, + 0x00016BD3, + 0x00016787, + 0x0001526F, + 0x0005015D, + 0x0002E521, + 0x0001677D, + 0x00016205, + 0x00015265, + 0x00015201, + 0x00013901, + 0x0007BC27, + 0x0002D3E7, + 0x0001B147, + 0x0001A337, + 0x000196B7, + 0x000161FB, + 0x00013A87, + 0x00033779, + 0x0002D5D1, + 0x000161F1, + 0x00015251, + 0x00013A7D, + 0x00030442, + 0x000152AA, + 0x00013A72, + 0x000571B4, + 0x00042BEC, + 0x00037EE0, + 0x00016A10, + 0x000152A0, + 0x0001523C, + 0x00013A68, + 0x00013810, + 0x0001DB4E, + 0x00016A06, + 0x00015296, + 0x000138CE, + 0x0001528C, + 0x000371DE, + 0x00036A72, + 0x000165A6, + //0x00015282, + 0x00013856, + 0x000EF324, + 0x000EB440, + 0x0009B238, + 0x00081DEC, + 0x0007144C, + 0x0005DE24, + 0x000597D4, + 0x00016BDC, + 0x00013978, + 0x00065AB6, + 0x0001D09A, + 0x00016BD2, + 0x00016786, + 0x0001526E, + 0x0001520A, + 0x000139D2, + 0x000F39C4, + 0x000A9194, + 0x0005015C, + 0x00035604, + 0x00033D68, + 0x0001677C, + 0x00016204, + 0x00015200, + 0x000B6BE6, + 0x000A95D6, + 0x0009AA4A, + 0x0006C3B6, + 0x000152BE, + 0x000151F6, + 0x00013A86, + 0x0001382E, + 0x0001AB60, + 0x00019454, + 0x000161F0, + 0x000152B4, + 0x00013A7C, + 0x000F7631, + 0x00053081, + 0x000529DD, + 0x0003538D, + 0x00013A71, + 0x000138E1, + 0x001037E7, + 0x0005C483, + 0x00047817, + 0x00022F53, + 0x00016DF7, + 0x00016A0F, + 0x0001529F, + 0x00013A67, + 0x0001380F, + 0x00016A05, + 0x00015295, + 0x00015231, + 0x00013A5D, + 0x000138CD, + 0x0005B91B, + 0x000165AF, + 0x00015227, + 0x0001321F, + 0x0005D01D, + 0x000371DD, + 0x00025195, + 0x00016EA1, + 0x00015281, + 0x0007C98B, + 0x00052FEB, + 0x00028EDF, + 0x000243DF, + 0x0001F7B3, + 0x00016BDB, + 0x00015277, + 0x00065AB5, + 0x0005B5DD, + 0x0003B87D, + 0x0002D525, + 0x0002C779, + 0x00016BD1, + 0x00016785, + 0x0001526D, + 0x000139D1, + 0x00013909, + //0x00000025, + 0x000AE783, + 0x000A0877, + 0x0006CCBB, + 0x000317E7, + 0x00016203, + 0x000A87C5, + 0x000A0359, + 0x000152BD, + 0x000151F5, + 0x00013A85, + 0x0001382D, + 0x00028ACF, + 0x0001AB5F, + 0x000161EF, + 0x00013A7B, + 0x000547F0, + 0x00021594, + 0x000213A0, + 0x00016E00, + 0x000152A8, + 0x00013818, + 0x00022F52, + 0x00016DF6, + //0x00016A0E, + 0x00013A66, + 0x0001380E, + 0x000B64B4, + 0x00056E88, + 0x0001B7C0, + 0x00016A04, + 0x00015294, + 0x00015230, + 0x00013A5C, + 0x000138CC, + 0x00080C6A, + 0x0005A01A, + 0x0002031A, + 0x0001E11E, + 0x000165AE, + 0x0001528A, + 0x00015226, + 0x00075270, + 0x0003A184, + 0x00034B94, + 0x00015280, + 0x0001521C, + 0x00013A48, + //0x0010CEEA, + 0x00016BDA, + 0x00015276, + 0x000DB070, + 0x0003DD34, + 0x0002D524, + 0x0002C778, + 0x0001CB84, + 0x00016BD0, + 0x00016784, + 0x0001526C, + 0x00015208, + 0x0001677A, + 0x00015262, + 0x00069858, + 0x00015258, + 0x000151F4, + 0x00013A84, + 0x000B29D6, + 0x000A6D8E, + 0x0008CDEE, + 0x00054D0E, + 0x000527F2, + 0x00027552, + 0x000193EE, + 0x000161EE, + 0x0001605E, + 0x00013A7A, + 0x000C9DAB, + 0x000A1793, + 0x00094BAB, + 0x00030313, + 0x00016DFF, + 0x000152A7, + 0x0007FCDD, + 0x000414DD, + 0x000399D1, + 0x00016DF5, + 0x00016A0D, + 0x0001529D, + 0x00015239, + 0x00013871, + 0x000F2CAB, + 0x000A013B, + 0x0005A857, + 0x0001AEC3, + 0x00016A03, + 0x000165B7, + 0x0001522F, + 0x000138CB, + 0x00013867, + 0x000165AD, + 0x00056C1B, + //0x000446BF, + 0x0004401B, + 0x0003A183, + 0x000263EF, + 0x000165A3, + 0x0001527F, + 0x0001521B, + 0x000AB531, + 0x00083559, + 0x0005912D, + 0x00016BD9, + 0x00015275, + 0x00015211, + 0x0003D62B, + 0x00016BCF, + 0x0001620B, + 0x0001526B, + 0x00015207, + 0x00013907, + 0x000A1BFD, + 0x00052CB5, + 0x00034B75, + 0x00016779, + 0x00015261, + 0x000EA28B, + 0x000BBB2F, + 0x000B1783, + 0x00079F9F, + 0x00039F67, + 0x0002BCD7, + 0x000270AB, + 0x000161F7, + 0x000152BB, + 0x00015257, + 0x000151F3, + 0x00013A83, + 0x000EEC55, + 0x000B29D5, + 0x000161ED, + 0x000152B1, + 0x00013A79, + 0x00016DFE, + 0x000133CA, + 0x0006DAA0, + 0x00052390, + 0x00016DF4, + 0x00016A0C, + 0x0001529C, + 0x00015238, + 0x00013870, + //0x000B9BC6, + 0x0005A856, + 0x0002471A, + 0x000198E2, + 0x00016A02, + 0x000165B6, + 0x000138CA, + 0x00059398, + 0x0003E908, + 0x000165AC, + 0x00015288, + 0x00015224, + 0x000CAB92, + 0x0005F536, + 0x0002A976, + 0x00016D72, + 0x0001527E, + 0x000C7348, + 0x000AA20C, + 0x000A73F4, + 0x00095C44, + 0x0006E2AC, + 0x0005D010, + 0x00018BE0, + 0x00016BD8, + 0x0001678C, + 0x00015274, + 0x00015210, + 0x000C0BBA, + 0x000280C2, + 0x00016BCE, + 0x00016782, + 0x0001526A, + 0x00015206, + 0x000F5EDC, + 0x000ED8E0, + 0x0007DCFC, + 0x00018460, + 0x00016778, + 0x00016200, + 0x00015260, + 0x000151FC, + 0x00013A8C, + 0x0005554A, + 0x00054226, + 0x0003D35A, + 0x00037B76, + 0x000161F6, + 0x000152BA, + 0x000151F2, + 0x000B29D4, + 0x0003FF10, + 0x0002E760, + 0x000161EC, + 0x000152B0, + 0x00013A78, + 0x000ABD31, + 0x00055215, + 0x0002954D, + 0x00016DFD, + 0x000152A5, + 0x000133C9, + 0x0005EAC7, + 0x00058663, + 0x000336FB, + 0x00016DF3, + 0x00016A0B, + 0x00015237, + 0x00077289, + 0x00075669, + 0x0002FD85, + 0x000165B5, + 0x0003FC8F, + 0x000165AB, + 0x00015223, + 0x000CAB91, + 0x00068B99, + 0x0004C6DD, + 0x00035299, + 0x00018BE9, + 0x0001527D, + 0x00043FAB, + 0x00016BD7, + 0x0001678B, + 0x00015273, + 0x000DEBCD, + 0x00078715, + 0x0001F359, + 0x00016781, + 0x00016209, + 0x00015269, + 0x0005B88B, + 0x0005723B, + 0x00016777, + 0x000161FF, + 0x000152C3, + 0x0001525F, + 0x000151FB, + 0x000A5A71, + //0x000A1A61, + 0x000778F1, + 0x00045A1D, + 0x000161F5, + 0x00015255, + 0x00013A81, + 0x000EEC53, + 0x00081D5B, + 0x000161EB, + 0x000152AF, + 0x00054B70, + 0x0005258C, + 0x000471DC, + 0x0002954C, + 0x00016DFC, + 0x00013814, + 0x000133C8, + 0x000DBF12, + 0x000CCDAA, + 0x00091872, + 0x00036ED6, + 0x00016DF2, + 0x00034BA4, + 0x0002D4E4, + 0x00025E24, + 0x000198E0, + 0x00016A00, + 0x00015290, + 0x0001522C, + 0x0007947A, + 0x000165AA, + 0x00015286, + 0x000138BE, + 0x00087764, + 0x0003B698, + 0x000165A0, + 0x0001527C, + 0x00013850, + 0x0008E906, + 0x00071FFE, + 0x00016BD6, + 0x000C5AA0, + 0x0001F358, + 0x00016780, + 0x00015268, + 0x0002F83E, + 0x0002529E, + 0x00016776, + 0x000161FE, + 0x000151FA, + 0x00013A8A, + 0x00078124, + 0x000362D8, + 0x00023FD4, + 0x0001FA4C, + 0x000161F4, + 0x00015254, + 0x00013A80, + 0x000BBCB2, + 0x000AC5D2, + 0x00081972, + 0x000261C6, + 0x000161EA, + 0x000152AE, + 0x00013A76, + 0x00054B6F, + 0x00032AE7, + 0x000216BB, + 0x00016DFB, + 0x0001523F, + 0x00013813, + 0x000133C7, + 0x00070469, + 0x00036ED5, + 0x00034955, + 0x00016A09, + 0x00015235, + 0x0009CCDF, + 0x0007B7AB, + 0x0002D4E3, + 0x000198DF, + 0x000165B3, + 0x00097299, + 0x00089D51, + 0x000681DD, + 0x00024771, + 0x000AF227, + 0x0007D033, + 0x00041777, + 0x00016BDF, + 0x0001527B, + 0x00058B4D, + 0x000275D9, + 0x000227B9, + 0x00016BD5, + 0x00016789, + 0x000FE47B, + 0x0001677F, + 0x00016207, + 0x00015267, + 0x001052FD, + 0x00104871, + 0x0002F83D, + 0x00016775, + 0x000152C1, + 0x0001525D, + 0x000151F9, + 0x00013A89, + 0x000961FF, + 0x0007E00F, + 0x0004624F, + 0x000161F3, + 0x000152B7, + 0x00015253, + 0x00013A7F, + 0x000221B5, + 0x000161E9, + 0x000152AD, + 0x0009174E, + 0x0004A376, + 0x000361FA, + 0x0002A03A, + 0x00016DFA, + 0x000152A2, + 0x00013812, + 0x000133C6, + 0x000DDF7C, + 0x000A8B24, + 0x00016A08, + 0x000138D0, + 0x0001386C, + 0x000BE46A, + 0x0009CCDE, + 0x0007284E, + 0x00067F2A, + 0x0003016A, + 0x000198DE, + 0x000169FE, + 0x000165B2, + 0x0001522A, + 0x00097298, + 0x0007614C, + 0x000165A8, + 0x00015284, + 0x00015220, + 0x000DD216, + 0x000563E2, + 0x00050F1E, + 0x0003F516, + 0x0003B696, + 0x00037CC6, + 0x0003486E, + 0x0001FC66, + 0x00016BDE, + 0x0007BEF8, + 0x00058B4C, + 0x00034864, + 0x000275D8, + 0x00016BD4, + 0x00016788, + 0x0001677E, + 0x0001383A, + 0x0002D3E8, + 0x00016774, + 0x000161FC, + 0x000152C0, + 0x0001525C, + 0x00013A88, + 0x00094322, + 0x000580A2, + 0x00027F1A, + 0x0001CE8A, + 0x00013A7E, + 0x00039850, + 0x00027D1C + }; + + bool result = false; + for (int i = 0; i < 415; i++) { + if ((TESObjectCELL*)LookupFormByID(formids[i])) { + _MESSAGE("Detected invalid cell: %#08x", formids[i]); + result = true; + } + } + + return result; +} diff --git a/source/fs.dll/fs/fs.vcxproj b/source/fs.dll/fs/fs.vcxproj index ecf38269..aa579250 100644 --- a/source/fs.dll/fs/fs.vcxproj +++ b/source/fs.dll/fs/fs.vcxproj @@ -164,6 +164,7 @@ Level3 ProgramDatabase common/IPrefix.h;%(ForcedIncludeFiles) + stdcpp17 exports.def @@ -181,6 +182,7 @@ + diff --git a/source/fs.dll/fs/main.cpp b/source/fs.dll/fs/main.cpp index b2f6ec40..2506871c 100644 --- a/source/fs.dll/fs/main.cpp +++ b/source/fs.dll/fs/main.cpp @@ -1,9 +1,11 @@ #include "skse64/PluginAPI.h" // super #include "skse64_common/skse_version.h" // What version of SKSE is running? #include // CSIDL_MYCODUMENTS +#include #include "PhasmalistInventoryFunctions.h" #include "CreatePotion.h" +#include "HasInvalidCells.h" static SKSEPapyrusInterface * g_papyrus = NULL; static SInt32 g_NewGameStarted = 0; @@ -51,7 +53,27 @@ struct SKSEPluginVersionData void SKSEMessageHandler(SKSEMessagingInterface::Message* msg) { - if ((msg->type == SKSEMessagingInterface::kMessage_PostLoadGame && msg->data) || msg->type == SKSEMessagingInterface::kMessage_NewGame) { + if (msg->type == SKSEMessagingInterface::kMessage_PostLoad) { + if (std::filesystem::file_size("Data\\Dawnguard.esm") > 100000 || std::filesystem::file_size("Data\\Dragonborn.esm") > 100000 || std::filesystem::file_size("Data\\HearthFires.esm") > 100000 || std::filesystem::file_size("Data\\Update.esm") > 150000) { + MessageBox(NULL, "Skyrim DLCs are incompatible with Enderal!", "Error", MB_OK | MB_ICONERROR); + exit(EXIT_FAILURE); + } + if (std::filesystem::exists("Data\\Unofficial Skyrim Special Edition Patch.esp")) { + MessageBox(NULL, "Unofficial Skyrim Special Edition Patch is incompatible with Enderal!", "Error", MB_OK | MB_ICONERROR); + exit(EXIT_FAILURE); + } + if (std::filesystem::exists("Data\\ccBGSSSE001-Fish.esm") || std::filesystem::exists("Data\\ccBGSSSE025-AdvDSGS.esm") || std::filesystem::exists("Data\\ccBGSSSE037-Curios.esl") || std::filesystem::exists("Data\\ccQDRSSE001-SurvivalMode.esl")) { + MessageBox(NULL, "Creation Club mods are incompatible with Enderal!", "Error", MB_OK | MB_ICONERROR); + exit(EXIT_FAILURE); + } + } + else if (msg->type == SKSEMessagingInterface::kMessage_DataLoaded) { + TESWorldSpace* world = (TESWorldSpace*)LookupFormByID(0x3C); + if ((world && std::string(world->editorId.Get()) != "MQP01Home") || HasInvalidCells()) { + MessageBox(NULL, "Some installed mods are incompatible with Enderal!", "Error", MB_OK | MB_ICONERROR); + } + } + else if ((msg->type == SKSEMessagingInterface::kMessage_PostLoadGame && msg->data) || msg->type == SKSEMessagingInterface::kMessage_NewGame) { if (g_NewGameStarted < 2) { g_NewGameStarted++; } @@ -155,18 +177,6 @@ extern "C" { return true; }); - g_papyrus->Register([](VMClassRegistry* registry) { - registry->RegisterFunction(new NativeFunction0("HasIncompatibleMods", "EnderalLib", [](StaticFunctionTag* tag) { - TESWorldSpace* world = (TESWorldSpace*)LookupFormByID(0x3C); - if (world && std::string(world->editorId.Get()) != "MQP01Home") { - return true; - } - return false; - }, registry)); - _MESSAGE("Register Succeeded: HasIncompatibleMods"); - return true; - }); - return true; } }; \ No newline at end of file diff --git a/source/scripts/_00e_playersetupscript.psc b/source/scripts/_00e_playersetupscript.psc index 76683ee4..890f95a6 100644 --- a/source/scripts/_00e_playersetupscript.psc +++ b/source/scripts/_00e_playersetupscript.psc @@ -394,11 +394,6 @@ Function Maintenance() If Game.GetModByName("Enderal_FS_More_Affinities.esp") != 255 FixMoreAffinitiesMod() EndIf - - if EnderalLib.NewGameCount() == 1 && EnderalLib.HasIncompatibleMods() - Utility.wait(2.0) - Debug.Notification("Some installed mods are incompatible with Enderal.") - endif EndFunction diff --git a/source/scripts/enderallib.psc b/source/scripts/enderallib.psc index e4bf82db..5feba6de 100644 --- a/source/scripts/enderallib.psc +++ b/source/scripts/enderallib.psc @@ -6,8 +6,6 @@ Potion function CreatePotion(MagicEffect[] effects, float[] magnitudes, int[] ar int function NewGameCount() native global -bool function HasIncompatibleMods() native global - bool function IsDLLLoaded() global return (SKSE.GetPluginVersion("fs_skse_functions") != -1) endfunction