diff --git a/Enderal SE v2.0.12.4 Changelog.txt b/Enderal SE v2.0.12.4 Changelog.txt index ef9c5ca6..98503c3f 100644 --- a/Enderal SE v2.0.12.4 Changelog.txt +++ b/Enderal SE v2.0.12.4 Changelog.txt @@ -6,9 +6,10 @@ See https://en.wiki.sureai.net/Enderal:Patch for the list of official patches up Beware, spoilers ahead! -2.0.12.4 (TBD) -- Skyrim SE 1.6.640 support. +2.0.12.4 (2022-09-30) +- Skyrim SE 1.6.640 (Steam) and 1.6.659 (GOG) support. - Fixed the dialog quit popup appearing in non-locked conversations. +- Fixed swapped objectives in Call of the Hunt. 2.0.12.3 (2022-09-16) diff --git a/SKSE/Plugins/EnderalSE.dll b/SKSE/Plugins/EnderalSE.dll index 8b941d04..f64ce0b4 100644 --- a/SKSE/Plugins/EnderalSE.dll +++ b/SKSE/Plugins/EnderalSE.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3016f8c4ddfddc95705f09ea9041f8b1e8f9cb1bf13a4f81217bed18dfa2d037 -size 734208 +oid sha256:a9eb6775df611ed2a93e666066dc5bba1f3f44ac16d23f296f6072b9361050bb +size 736768 diff --git a/_build/loose_files.txt b/_build/loose_files.txt index aef17ea9..caaea1a3 100644 --- a/_build/loose_files.txt +++ b/_build/loose_files.txt @@ -1,6 +1,6 @@ Enderal Credits.txt Report a bug in Enderal SE.url -Enderal SE v2.0.12.3 Changelog.txt +Enderal SE v2.0.12.4 Changelog.txt Enderal - Forgotten Stories.esm Enderal - Forgotten Stories.ini E - Update.bsa diff --git a/source/Enderal DLL/CMakeLists.txt b/source/Enderal DLL/CMakeLists.txt index 219901e2..68f0d094 100644 --- a/source/Enderal DLL/CMakeLists.txt +++ b/source/Enderal DLL/CMakeLists.txt @@ -6,7 +6,7 @@ message("Using toolchain file ${CMAKE_TOOLCHAIN_FILE}.") ######################################################################################################################## project( EnderalSE - VERSION 1.1 + VERSION 1.1.0 DESCRIPTION "Enderal SE DLL" LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) diff --git a/source/Enderal DLL/src/CheckInvalidForms.h b/source/Enderal DLL/src/CheckInvalidForms.h index 0b7ae3a7..02f21afd 100644 --- a/source/Enderal DLL/src/CheckInvalidForms.h +++ b/source/Enderal DLL/src/CheckInvalidForms.h @@ -1331,3 +1331,217 @@ inline void CheckEnderalNPCs() } } } + +inline void CheckEnderalActivators() +{ + // Base forms of Enderal activators, having collisions with Skyrim + uint32_t formids[46] = { + 0x20A1C, + 0x23AB1, + 0x36739, + 0x3BCA5, + 0x3BCB3, + 0x3C570, + 0x3C57F, + 0x43BEB, + 0x43BEE, + 0x447D3, + 0x469F6, + 0x469F8, + 0x469FA, + 0x469FC, + 0x46ADE, + 0x46AEA, + 0x69F89, + 0x69F8C, + 0x6A00D, + 0x6A00E, + 0x6A00F, + 0x6A010, + 0x6A011, + 0x6A013, + 0x6A016, + 0x6A024, + 0x6A025, + 0x6A026, + 0x6A027, + 0x6A029, + 0x6A02A, + 0x6A02B, + 0x6A02C, + 0x6A02D, + 0x6A02E, + 0x6A030, + 0x6A032, + 0x6A033, + 0x77358, + 0xADC71, + 0xB35AB, + 0xB35B4, + 0xB35B5, + 0xB6282, + 0x106644, + 0x1080DA + }; + + for (int i = 0; i < 46; i++) { + const auto* form = RE::TESForm::LookupByID(formids[i]); + if (!form || !form->Is(RE::FormType::Activator)) { + logger::warn("Detected invalid activator: {:08X}", formids[i]); + NotifyInvalidForm(form); + } + } +} + +inline void CheckEnderalStatics() +{ + // Base forms of Enderal statics, having collisions with Skyrim + uint32_t formids[138] = { + 0x15C6F, + 0x1725C, + 0x20BC9, + 0x20BDF, + 0x23E46, + 0x2E6F8, + 0x2EC26, + 0x2EE3F, + 0x31949, + 0x3194B, + 0x3195B, + 0x31974, + 0x327AD, + 0x328D7, + 0x33F45, + 0x34944, + 0x34946, + 0x34BCD, + 0x36747, + 0x36775, + 0x36779, + 0x3700B, + 0x3742A, + 0x37667, + 0x37668, + 0x37C01, + 0x3A1C2, + 0x3BCE3, + 0x3BCE7, + 0x3C58A, + 0x3ECAA, + 0x41449, + 0x4B258, + 0x4B25A, + 0x565F0, + 0x6717B, + 0x6717C, + 0x6717D, + 0x69524, + 0x69525, + 0x69526, + 0x69527, + 0x6A034, + 0x6A035, + 0x6A036, + 0x6A037, + 0x6A038, + 0x6A039, + 0x6A03A, + 0x6A03B, + 0x6A03C, + 0x6A03D, + 0x6A03E, + 0x6A03F, + 0x6A040, + 0x6A041, + 0x6A042, + 0x6A045, + 0x6A046, + 0x6A047, + 0x6A048, + 0x6A049, + 0x6A04A, + 0x6A04B, + 0x6A04C, + 0x6A04D, + 0x6A04F, + 0x6A050, + 0x6A051, + 0x6A052, + 0x6A053, + 0x6A054, + 0x6A057, + 0x6A058, + 0x6A059, + 0x6A05A, + 0x6A094, + 0x6D230, + 0x6D233, + 0x6D235, + 0x6D23F, + 0x6D24D, + 0x6D253, + 0x6D257, + 0x6FEEA, + 0x6FEED, + 0x6FEEE, + 0x6FEEF, + 0x6FEF0, + 0x6FEF1, + 0x6FEF2, + 0x6FEF3, + 0x6FEF4, + 0x6FEF5, + 0x6FEF6, + 0x6FEF7, + 0x6FEF8, + 0x6FEF9, + 0x6FEFA, + 0x6FEFD, + 0x904B1, + 0x904B2, + 0x904B3, + 0x904B4, + 0x904B5, + 0x904B6, + 0x904B7, + 0x904B8, + 0x904B9, + 0x904BA, + 0x904BB, + 0x904BC, + 0x904BD, + 0x904BE, + 0x904BF, + 0x904C0, + 0xDAAF3, + 0xDAAF5, + 0xDAAF8, + 0xDAAFC, + 0xDAAFE, + 0xDAB01, + 0xE49F3, + 0xE4A12, + 0xE77BF, + 0xE77C0, + 0xE77C1, + 0xE77C2, + 0xE77C3, + 0xE77C4, + 0xE77C5, + 0xE77C6, + 0xE77C7, + 0xE77C8, + 0xE77C9, + 0xE77CA, + 0xE77CB, + 0xE77CF + }; + + for (int i = 0; i < 138; i++) { + const auto* form = RE::TESForm::LookupByID(formids[i]); + if (!form || !form->Is(RE::FormType::Static)) { + logger::warn("Detected invalid static: {:08X}", formids[i]); + NotifyInvalidForm(form); + } + } +} diff --git a/source/Enderal DLL/src/Main.cpp b/source/Enderal DLL/src/Main.cpp index bedb3db4..ded82dee 100644 --- a/source/Enderal DLL/src/Main.cpp +++ b/source/Enderal DLL/src/Main.cpp @@ -83,7 +83,6 @@ namespace { if (!bVoices) { RE::DebugMessageBox("L - Voices.bsa is not loaded. Make sure Enderal - Forgotten Stories.esm is enabled and revalidate your files."); - exit(EXIT_FAILURE); } bool bMeshes = RE::BSResourceNiBinaryStream("meshes/enderal/loadscreenart/loadscreenundercity.nif").good(); diff --git a/source/Enderal DLL/src/Util.h b/source/Enderal DLL/src/Util.h index ba92f790..093682e8 100644 --- a/source/Enderal DLL/src/Util.h +++ b/source/Enderal DLL/src/Util.h @@ -61,6 +61,8 @@ inline void CheckIncompatibleMods() CheckEnderalCells(); CheckEnderalContainers(); CheckEnderalNPCs(); + CheckEnderalActivators(); + CheckEnderalStatics(); } inline void LoadINI(std::map* settings, const char* iniPath)