Compare commits

...

3 Commits

10 changed files with 32 additions and 20 deletions

Binary file not shown.

View File

@ -8,16 +8,16 @@ Beware, spoilers ahead!
2.1.4 (TBD) 2.1.4 (TBD)
- Chinese Simplified localization revision by DaisyComment (no translation of lines added after 2.0.12.4 yet). - Chinese Simplified localization revision by DaisyComment (no translation of lines added after 2.0.12.4 yet).
- Fixed a random crash, occuring when guards are about to start a conversation scene and any of them is riding a horse. - Fixed a random crash, occurring when guards on the outskirts of Ark or on the Farmers Coast are about to start a conversation scene and any of them is riding a horse.
- Fixed help messages (in the middle of the screen) sometimes getting stuck in an infinite savebaked loop. - Fixed help messages (in the middle of the screen) sometimes getting stuck in an infinite savebaked loop.
- Dreamflower can be found without finishing The Secrets first. - Dreamflower can be found without finishing The Secrets first.
- Dimension Rift might get stuck in an infinite effect+sound loop if player left the cell while it's active. - Dimension Rift might get stuck in an infinite effect+sound loop if player left the cell while it's active.
- Fixed missing damage from spectral arrows produced by the Arcane Arrow affinity. - Fixed missing damage from spectral arrows produced by the Arcane Arrow affinity.
- Fixed dismantling recipes checking for Arcane Smith instead if Arcane Disassembling. - Fixed dismantling recipes checking for Arcane Smith instead if Arcane Disassembling.
- Fixed scripts causing black screen during starting quests with SkyParkour and possibly some other mods. - Fixed scripts causing black screen during starting quests with SkyParkour and possibly some other mods.
- Updated LOD with xLODGen beta 132 and DynDOLOD 3.00 alpha 194. - Updated LOD with xLODGen beta 132 and DynDOLOD 3.00 alpha 194 by sheson. Fixed the stitched object LOD warning showing up on TexGen start.
- Restored Tharael's forehead tattoo lost during the initial facegen conversion. - Restored Tharael's forehead tattoo lost during the initial facegen conversion.
- Fixed Entropic Blood not working in god mode, fixed inability to select a strong enemy as an attack target. - Entropic Blood: fixed inability to select a strong enemy as an attack target, fixed not working in god mode.
- Revised alchemy. Consistency and distribution changes across the board due to lack of a coherent alchemy system prior to this patch, such as: - Revised alchemy. Consistency and distribution changes across the board due to lack of a coherent alchemy system prior to this patch, such as:
-- Lower global magnitude modifier than in Skyrim (x1.5 against x4) combined with higher game difficulty made some grandfathered ingredients too weak, effect magnitudes were increased where necessary. -- Lower global magnitude modifier than in Skyrim (x1.5 against x4) combined with higher game difficulty made some grandfathered ingredients too weak, effect magnitudes were increased where necessary.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -181,7 +181,7 @@ SKSEPluginLoad(const LoadInterface* skse) {
auto* plugin = PluginDeclaration::GetSingleton(); auto* plugin = PluginDeclaration::GetSingleton();
auto version = plugin->GetVersion(); auto version = plugin->GetVersion();
logger::info("{} {} is loading...", plugin->GetName(), version); logger::info("{} {} ({}) is loading...", plugin->GetName(), version, SemVerToInt({ version.major(), version.minor(), version.patch(), version.build() }));
Init(skse); Init(skse);
InitializeMessaging(); InitializeMessaging();

View File

@ -58,9 +58,8 @@ namespace Papyrus::PapyrusFunctions
inline std::uint32_t GetEnderalVersionInt(RE::StaticFunctionTag*) inline std::uint32_t GetEnderalVersionInt(RE::StaticFunctionTag*)
{ {
const auto pluginVersion = SKSE::PluginDeclaration::GetSingleton()->GetVersion(); const auto pluginVersion = SKSE::PluginDeclaration::GetSingleton()->GetVersion();
std::string versionStr = std::format("{}{}{}{}", pluginVersion.major(), pluginVersion.minor(), pluginVersion.patch(), pluginVersion.build());
return std::stoi(versionStr); return SemVerToInt({ pluginVersion.major(), pluginVersion.minor(), pluginVersion.patch(), pluginVersion.build() });
} }
inline RE::TESObjectREFR* GetCurrentContainer(RE::StaticFunctionTag*) inline RE::TESObjectREFR* GetCurrentContainer(RE::StaticFunctionTag*)

View File

@ -23,6 +23,16 @@ inline uint8_t NewGameCount(bool increment = false)
return g_NewGameStarted; return g_NewGameStarted;
} }
inline std::uint32_t SemVerToInt(std::vector<int> numbers)
{
if (numbers.size() < 4) {
logger::error("Invalid SemVerToInt argument");
return 0;
}
return (numbers[0] << 24) | (numbers[1] << 16) | (numbers[2] << 8) | numbers[3];
}
inline void CheckIncompatibleMods() inline void CheckIncompatibleMods()
{ {
const auto pluginVersion = SKSE::PluginDeclaration::GetSingleton()->GetVersion(); const auto pluginVersion = SKSE::PluginDeclaration::GetSingleton()->GetVersion();
@ -113,7 +123,7 @@ inline void CheckScriptVersions()
scripts["_00E_ContainerBonusControl"] = 2; scripts["_00E_ContainerBonusControl"] = 2;
scripts["_00E_AffinityControl"] = 1; scripts["_00E_AffinityControl"] = 1;
scripts["_00E_SympathyControl"] = 1; scripts["_00E_SympathyControl"] = 1;
scripts["_00E_EnderalMCM"] = 1; scripts["_00E_EnderalMCM"] = 2;
scripts["_00E_SkillControl"] = 1; scripts["_00E_SkillControl"] = 1;
scripts["_00E_VisionControl"] = 1; scripts["_00E_VisionControl"] = 1;
scripts["_00E_EnderalControls"] = 1; scripts["_00E_EnderalControls"] = 1;
@ -320,4 +330,4 @@ inline RE::BSFixedString StringToHex(RE::BSFixedString a_string)
} }
return sstream.str(); return sstream.str();
} }

View File

@ -19,8 +19,15 @@ EndEvent
Event OnPlayerLoadGame() Event OnPlayerLoadGame()
if iPatchVersion < GetVersion() if iPatchVersion < 33620992 ; 2.1.4
iPatchVersion = GetVersion() Debug.Trace("Updating to v2.1.4 (33620992)...")
; Synchronize KillMoveConfig with KillMove
(Game.GetForm(0x49425) as GlobalVariable).SetValue((Game.GetForm(0x100F19) as GlobalVariable).GetValue())
endif endif
if iPatchVersion < GetVersion()
Debug.Trace("Setting current version to " + GetVersion())
iPatchVersion = GetVersion()
endif
EndEvent EndEvent

View File

@ -5,10 +5,11 @@ Scriptname _00E_EnderalMCM extends SKI_ConfigBase
;===================================================================================== ;=====================================================================================
int function _GetScriptVersion() Global int function _GetScriptVersion() Global
return 1 return 2
endFunction endFunction
event OnGameReload() event OnGameReload()
_00E_KillMove.SetValue(KillMoveConfig.GetValue() as bool)
if SKSE.GetVersion() == 0 if SKSE.GetVersion() == 0
Debug.Trace("NO SKSE: the Mod Configuration Menu is disabled") Debug.Trace("NO SKSE: the Mod Configuration Menu is disabled")
return return
@ -31,7 +32,7 @@ Event OnPageReset(string page)
toggleOID_ReadAloudBooks = AddToggleOption(_00E_ConfigMenu_DisableReadAloudBooks.GetName(), _00E_DisableReadAloudBooks.GetValue() != 0) toggleOID_ReadAloudBooks = AddToggleOption(_00E_ConfigMenu_DisableReadAloudBooks.GetName(), _00E_DisableReadAloudBooks.GetValue() != 0)
toggleOID_VideoSkip = AddToggleOption(_00E_ConfigMenu_VideoSkip.GetName(), _00E_VideoSkip.GetValue() != 0) toggleOID_VideoSkip = AddToggleOption(_00E_ConfigMenu_VideoSkip.GetName(), _00E_VideoSkip.GetValue() != 0)
toggleOID_ActorHealthBars = AddToggleOption(_00E_ConfigMenu_ActorHealthBars.GetName(), _00E_ActorHealthBarsEnabled.GetValue() != 0) toggleOID_ActorHealthBars = AddToggleOption(_00E_ConfigMenu_ActorHealthBars.GetName(), _00E_ActorHealthBarsEnabled.GetValue() != 0)
toggleOID_KillMoves = AddToggleOption(_00E_ConfigMenu_KillMove.GetName(), KillMove.GetValue() != 0) toggleOID_KillMoves = AddToggleOption(_00E_ConfigMenu_KillMove.GetName(), KillMoveConfig.GetValue() != 0)
SetCursorPosition(1) SetCursorPosition(1)
@ -94,13 +95,8 @@ Event OnOptionSelect(int option)
ActorHealthBarWidget.UnregisterEvents() ActorHealthBarWidget.UnregisterEvents()
endif endif
elseif option == toggleOID_KillMoves elseif option == toggleOID_KillMoves
ChangeCheckbox(toggleOID_KillMoves, KillMove) ChangeCheckbox(toggleOID_KillMoves, KillMoveConfig)
_00E_KillMove.SetValue(KillMoveConfig.GetValue() as bool)
if KillMove.GetValue()
Utility.SetINIBool("bVATSDisable:VATS", false)
else
Utility.SetINIBool("bVATSDisable:VATS", true)
endif
EndIf EndIf
EndEvent EndEvent
@ -195,7 +191,7 @@ GlobalVariable Property _00E_DisableOtherTutorials Auto
GlobalVariable Property _00E_DisableReadAloudBooks Auto GlobalVariable Property _00E_DisableReadAloudBooks Auto
GlobalVariable Property _00E_VideoSkip Auto GlobalVariable Property _00E_VideoSkip Auto
GlobalVariable Property _00E_ActorHealthBarsEnabled Auto GlobalVariable Property _00E_ActorHealthBarsEnabled Auto
GlobalVariable Property KillMove Auto GlobalVariable Property KillMoveConfig Auto
_00E_MeditationHotkeyAlias Property PlayerMeditation Auto _00E_MeditationHotkeyAlias Property PlayerMeditation Auto