Compare commits

..

No commits in common. "3f2f63adca547a452ccae507b27b75682b425fec" and "017db0cfe8a2ade8faea2d26b6586cfde4ffe708" have entirely different histories.

7 changed files with 20 additions and 19 deletions

Binary file not shown.

View File

@ -10,10 +10,10 @@ Beware, spoilers ahead!
- Fixed inconsistent spawning of critters, mostly bees (reported by Amaseal). - Fixed inconsistent spawning of critters, mostly bees (reported by Amaseal).
- Removed the Blueprint keyword from the Dreamflower Elixir Recipe to avoid sorting it into the blueprint storage (reported by Fubz). - Removed the Blueprint keyword from the Dreamflower Elixir Recipe to avoid sorting it into the blueprint storage (reported by Fubz).
- Fixed an exploit allowing to collect more gold from containers (reported by LevinLozenges). - Fixed an exploit allowing to collect more gold from containers (reported by LevinLozenges).
- All localizations have been brought up to date.
Engine patches: Engine patches:
- Automatically detects and warns about form type collisions when using incompatible Skyrim mods. - Automatically detects and warns about form type collisions when using Skyrim mods.
- `Enderal - Forgotten Stories.esm` is always force-loaded.
- Included GOG Memory (VRAM) Leak Fix by DwemerEngineer. - Included GOG Memory (VRAM) Leak Fix by DwemerEngineer.
Lirk: Lirk:

Binary file not shown.

View File

@ -203,7 +203,7 @@ SKSEPluginLoad(const LoadInterface* skse) {
Init(skse, false); Init(skse, false);
InitializeMessaging(); InitializeMessaging();
if (g_settings.at("WarnFormTypeCollisions") && !REL::Module::IsVR()) { if (g_settings.at("WarnFormTypeCollisions") && !!REL::Module::IsVR()) {
FormTypeCollisionDetector::Install(); FormTypeCollisionDetector::Install();
} }

View File

@ -48,18 +48,28 @@ namespace FormTypeCollisionDetector
return false; return false;
} }
// Show message box logger::warn("Detected {} form type collision(s) from {} mod(s)",
detectedCollisions.size(), flaggedMods.size());
// Print to console
if (auto* console = RE::ConsoleLog::GetSingleton()) {
for (const auto& mod : flaggedMods) {
console->Print(std::format("{} causes form type collisions (incompatible with Enderal)", mod).c_str());
}
}
// Show message box for first mod only
if (!messageShown && !flaggedMods.empty()) { if (!messageShown && !flaggedMods.empty()) {
messageShown = true; messageShown = true;
auto firstMod = *flaggedMods.begin(); auto firstMod = *flaggedMods.begin();
std::string message = std::format( std::string message = std::format(
"{} is incompatible with Enderal (form type collision).\n" "{} is incompatible with Enderal (form type collision).\n"
"See Documents\\My Games\\Skyrim Special Edition (GOG)\\SKSE\\EnderalSE.log for details.", firstMod); "Check console for details.", firstMod);
if (flaggedMods.size() > 1) { if (flaggedMods.size() > 1) {
message = std::format( message = std::format(
"{} and {} other mod(s) are incompatible with Enderal (form type collision).\n" "{} and {} other mod(s) are incompatible with Enderal.\n"
"See Documents\\My Games\\Skyrim Special Edition (GOG)\\SKSE\\EnderalSE.log for details.", "Check console for details.",
firstMod, flaggedMods.size() - 1); firstMod, flaggedMods.size() - 1);
} }

View File

@ -103,7 +103,7 @@ inline void CheckScriptVersions()
std::map<std::string, short> scripts; std::map<std::string, short> scripts;
scripts["_00e_a2_eyeofthestormsc"] = 1; scripts["_00e_a2_eyeofthestormsc"] = 1;
scripts["_00E_EnderalVersion"] = 2; scripts["_00E_EnderalVersion"] = 1;
scripts["EnderalFunctions"] = 2; scripts["EnderalFunctions"] = 2;
scripts["_00E_PlayerFunctions"] = 2; scripts["_00E_PlayerFunctions"] = 2;
scripts["_00E_PlayerSetUpScript"] = 1; scripts["_00E_PlayerSetUpScript"] = 1;

View File

@ -4,7 +4,7 @@ Scriptname _00E_EnderalVersion extends ReferenceAlias Hidden
int iPatchVersion int iPatchVersion
int function _GetScriptVersion() Global int function _GetScriptVersion() Global
return 2 return 1
endFunction endFunction
int function GetVersion() global int function GetVersion() global
@ -25,15 +25,6 @@ Event OnPlayerLoadGame()
(Game.GetForm(0x49425) as GlobalVariable).SetValue((Game.GetForm(0x100F19) as GlobalVariable).GetValue()) (Game.GetForm(0x49425) as GlobalVariable).SetValue((Game.GetForm(0x100F19) as GlobalVariable).GetValue())
endif endif
if iPatchVersion < 33620993 ; 2.1.4.1
Debug.Trace("Updating to v2.1.4.1 (33620993)...")
; Move Dreamflower Elixir recipe back to player
Actor rBlueprintActor = Game.GetFormFromFile(0x2A3DB, "Enderal - Forgotten Stories.esm") as Actor
MiscObject rDreamFlowerRecipe = Game.GetForm(0x43E1B) as MiscObject
Actor rPlayer = Game.GetForm(0x14) as Actor
rBlueprintActor.RemoveItem(rDreamFlowerRecipe, 1, true, rPlayer)
endif
if iPatchVersion < GetVersion() if iPatchVersion < GetVersion()
Debug.Trace("Setting current version to " + GetVersion()) Debug.Trace("Setting current version to " + GetVersion())
iPatchVersion = GetVersion() iPatchVersion = GetVersion()