From 0c8c29a7791b61455f521dba9b578255240c1d8c Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Mon, 1 Aug 2022 19:48:43 +0200 Subject: [PATCH] Refactored _00E_Theriantrophist_AlchemyControl to use vanilla arrays, removed JContainers requirement --- scripts/_00e_func_checkjcontainers.pex | Bin 1182 -> 0 bytes scripts/_00e_playersetupscript.pex | Bin 8387 -> 8325 bytes .../_00e_theriantrophist_alchemycontrol.pex | Bin 18153 -> 17147 bytes scripts/_00e_theriantrophist_update_12.pex | Bin 0 -> 1470 bytes scripts/enderalfunctions.pex | Bin 1097 -> 1107 bytes source/scripts/_00e_func_checkjcontainers.psc | 13 -- source/scripts/_00e_playersetupscript.psc | 2 - .../_00e_theriantrophist_alchemycontrol.psc | 180 +++++++++--------- .../_00e_theriantrophist_update_12.psc | 19 ++ source/scripts/enderalfunctions.psc | 3 +- 10 files changed, 107 insertions(+), 110 deletions(-) delete mode 100644 scripts/_00e_func_checkjcontainers.pex create mode 100644 scripts/_00e_theriantrophist_update_12.pex delete mode 100644 source/scripts/_00e_func_checkjcontainers.psc create mode 100644 source/scripts/_00e_theriantrophist_update_12.psc diff --git a/scripts/_00e_func_checkjcontainers.pex b/scripts/_00e_func_checkjcontainers.pex deleted file mode 100644 index ffbb6b7b30cf9ab79867f2b241b5b84bc3428f21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1182 zcmb7D&2G~`5T1>lq;Y=(ZGi&q7LYg*6{wKN3AG9pAP{O$I7Y5LPPTP-quq5)UW+H- zzyV%@EAPMsX6?8HAr7o}z4P~dGoD@lc>n2}R|5t#PQHKr2;0NGz25M7CZplu7^Ab7 zhf3N|NYth?F%bm4I98c9S;}DrE4h;k$>APs5gLbyLq`sM8eO6(!NL*Rz6~ux>quEu zir#T1VM)mY90^&P0wsGgF6G8p#4$=(B&Jwcp=6kX|3*oKX18nce6k1L3u!CuA@~PM zrIq@q5*|ad|Ek{`poUhr>+pk6gKy3ZLO^wq!w@;Fk^DBzsFupIJlBFJ`!KH#j-i=Z zkqSEnKM#e4dW=^#RNro(sdJvOHB`jPWjiH%2}R&ynXMO$(3CB%f$C zL7h%JoN5rslnZHbq$vwm37=B?c_LCYTxqURNMl1n&!y?WgWd&7OWp{@1;#udqvUo> z=_%NvtHb2N(jmp%DtPJ++%=bCLR+~^iBKn}7+DG<6}g#UBoaZmf(aHR=Ch;fTP@^> znu=-S`d*sv|H-YoWwa!3Mc0DDZyLAi>Q|S}xlE zD|(ZnY0gKlmMI*lNZ~-&7+h!2b{x!qMsKpw+^TFfxVc_9sW&aSMFE$?Bg5@dW3UZ7 p)B^XZ9#J+J@EHTpr|y!Uto1o7HFpQ@Tyg=UjJwbv{N3M1_yycC0?+^e diff --git a/scripts/_00e_playersetupscript.pex b/scripts/_00e_playersetupscript.pex index 1e801612a79b37c9fb9b1e4fc7a2f70427b925c8..bcffcb901996fe4e085ccdd0b4948ecc54019f2f 100644 GIT binary patch literal 8325 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

R!!>|YU8v^K$JKmsO7jIC{>pusw?oR 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 AcK`qY diff --git a/source/scripts/_00e_func_checkjcontainers.psc b/source/scripts/_00e_func_checkjcontainers.psc deleted file mode 100644 index e622efb7..00000000 --- a/source/scripts/_00e_func_checkjcontainers.psc +++ /dev/null @@ -1,13 +0,0 @@ -Scriptname _00E_Func_CheckJContainers Hidden - -Function Run() global - - Int SKSEVer = SKSE.GetVersion() - - if (SKSEVer == 0 || (SKSE.GetPluginVersion("JContainers64") == -1) && (SKSE.GetPluginVersion("JContainersVR") == -1)) - ; JContainers is only required for lycanthropy, so we just nag users without preventing playing without it - Utility.wait(2.0) - Debug.MessageBox("JContainers is not loaded! The game will not run properly. Verify integrity of your files or reinstall JContainers.") - endif - -EndFunction diff --git a/source/scripts/_00e_playersetupscript.psc b/source/scripts/_00e_playersetupscript.psc index d33c87f5..5799a522 100644 --- a/source/scripts/_00e_playersetupscript.psc +++ b/source/scripts/_00e_playersetupscript.psc @@ -23,7 +23,6 @@ Event OnInit() _00E_Func_CheckSKSE.Run() _00E_Func_CheckEnderalDLL.Run() - _00E_Func_CheckJContainers.Run() If fPatchVersion == 0.00 fPatchVersion = CURRENT_PATCH_VERSION @@ -58,7 +57,6 @@ Event OnPlayerLoadGame() _00E_Func_CheckSKSE.Run() _00E_Func_CheckEnderalDLL.Run() - _00E_Func_CheckJContainers.Run() Maintenance() If GetState() != "RealPlayer" ; Post-1.2.5.0 version update diff --git a/source/scripts/_00e_theriantrophist_alchemycontrol.psc b/source/scripts/_00e_theriantrophist_alchemycontrol.psc index aa2a0535..4e310827 100644 --- a/source/scripts/_00e_theriantrophist_alchemycontrol.psc +++ b/source/scripts/_00e_theriantrophist_alchemycontrol.psc @@ -77,41 +77,64 @@ Int Property NoAlchemistPotionDurationLimitInSeconds = 90 Autoreadonly Hidden _00E_FS_NQ11_Functions Property FS_NQ11 Auto -Int Property RenamedPotions Hidden - Int Function Get() - Int result = JMap.getObj(JDB.root(), "EnderalFS.RenamedPotions") - if (result == 0) - result = JFormMap.object() - JMap.setObj(JDB.root(), "EnderalFS.RenamedPotions", result) - EndIf - return result - EndFunction -EndProperty - -Int Property ModelChangedPotions Hidden - Int Function Get() - Int result = JMap.getObj(JDB.root(), "EnderalFS.ModelChangedPotions") - If (result == 0) - result = JFormMap.object() - JMap.setObj(JDB.root(), "EnderalFS.ModelChangedPotions", result) - EndIf - return result - EndFunction -EndProperty - bool bDoneDarkBlood = false bool bDoneChymikum = false Int curScriptVersion = 0 Int Property LATEST_SCRIPT_VERSION = 5 AutoReadOnly -bool bHasJContainers = false - +Potion[] aCreatedPotions +string[] aPotionNames +string[] aPotionModels ;===================================================================================== ; FUNCTIONS ;===================================================================================== +function _addNamedPotion(Potion aPotion, string sName, string sModel) + + if ! aPotion || sName == "" + return + endif + + aPotion.SetName(sName) + if sModel != "" + aPotion.SetWorldModelPath(sModel) + endif + + if aCreatedPotions.length == 0 + aCreatedPotions = new Potion[128] + aPotionNames = new string[128] + aPotionModels = new string[128] + endif + + int i = aCreatedPotions.Find(aPotion) + + if i == -1 + i = aCreatedPotions.Find(none) + if i > -1 + aCreatedPotions[i] = aPotion + aPotionNames[i] = sName + aPotionModels[i] = sModel + endif + else + aPotionNames[i] = sName + aPotionModels[i] = sModel + endif + +endfunction + +function _removeNamedPotion(Potion aPotion) + if aPotion + int i = aCreatedPotions.Find(aPotion) + if i > -1 + aCreatedPotions[i] = None + aPotionNames[i] = "" + aPotionModels[i] = "" + endif + endif +endfunction + Function _UpdatePotion(Potion item, Int count) Int i @@ -196,10 +219,11 @@ Function _UpdatePotion(Potion item, Int count) Potion newPotion = EnderalFunctions.CreatePotion(newEffects, newMagnitudes, newAreas, newDurations, nNewEffects) - If bHasJContainers && JFormMap.hasKey(RenamedPotions, newPotion) == False - _RenamePotion(newPotion, newEffects, nNewEffects, bRemoveTheriantrophistEffects) - _SetPotionModel(newPotion, firstTheriantrophistEffect, newEffects[0]) - EndIf + if aCreatedPotions.Find(newPotion) == -1 + string newName = _RenamePotion(newPotion, newEffects, nNewEffects, bRemoveTheriantrophistEffects) + string newModel = _SetPotionModel(newPotion, firstTheriantrophistEffect, newEffects[0]) + _addNamedPotion(newPotion, newName, newModel) + endif GoToState("") ; skip OnItemAdded PlayerREF.addItem(newPotion, count, abSilent = true) @@ -213,10 +237,11 @@ Function _UpdatePotion(Potion item, Int count) EndIf - if bHasJContainers && JFormMap.hasKey(RenamedPotions, item) == False ; COMMON POTION - _RenamePotion(item, potionEffects, nPotionEffects, True) - _SetPotionModel(item, None, potionEffects[0]) - EndIf + if aCreatedPotions.Find(item) == -1 + string newNameC = _RenamePotion(item, potionEffects, nPotionEffects, True) + string newModelC = _SetPotionModel(item, None, potionEffects[0]) + _addNamedPotion(item, newNameC, newModelC) + endif if bIsTheriantrophistPotion _UpdateNQ11(item) @@ -224,7 +249,7 @@ Function _UpdatePotion(Potion item, Int count) EndFunction -Function _RenamePotion(Potion p, MagicEffect[] potionEffects, Int nPotionEffects, Bool bCommonPotion) +String Function _RenamePotion(Potion p, MagicEffect[] potionEffects, Int nPotionEffects, Bool bCommonPotion) String name = "" If bCommonPotion @@ -245,12 +270,11 @@ Function _RenamePotion(Potion p, MagicEffect[] potionEffects, Int nPotionEffects nEffectsAdded += 1 i += 1 EndWhile - - JFormMap.setStr(RenamedPotions, p, name) - p.setName(name) + + return name EndFunction -Function _SetPotionModel(Potion p, MagicEffect firstTheriantrophistEffect, MagicEffect firstEffect) +String Function _SetPotionModel(Potion p, MagicEffect firstTheriantrophistEffect, MagicEffect firstEffect) string modelName string modelPath = "" @@ -321,10 +345,7 @@ Function _SetPotionModel(Potion p, MagicEffect firstTheriantrophistEffect, Magic EndIf - If modelPath != "" - p.SetWorldModelPath(modelPath) - JFormMap.setStr(ModelChangedPotions, p, modelPath) - EndIf + return modelPath EndFunction Function _UpdateNQ11(Potion newPotion) @@ -366,23 +387,6 @@ Function _InitAchemyControl() GoToState("") - int iSKSEVer = SKSE.GetVersion() - - if iSKSEVer < 2 - bHasJContainers = false - Debug.Trace("SKSE is not loaded, _00E_Theriantrophist_AlchemyControl is disabled") - return - endif - - bHasJContainers = ( (SKSE.GetPluginVersion("JContainers64") != -1) || (SKSE.GetPluginVersion("JContainersVR") != -1) ) && JContainers.isInstalled() - - if ! bHasJContainers && ! EnderalFunctions.IsDLLLoaded() - ; Both required components are missing, do not update version and disable everything - UnregisterForAllMenus() - Debug.Trace("JContainers and fs.dll are not loaded, _00E_Theriantrophist_AlchemyControl is disabled.") - return - endif - ; Version update If curScriptVersion < LATEST_SCRIPT_VERSION Int oldScriptVersion = curScriptVersion @@ -392,47 +396,15 @@ Function _InitAchemyControl() RemoveAllInventoryEventFilters() UnregisterForAllMenus() UnregisterForUpdate() + _00E_Theriantrophist_Update_12.Run(self) EndIf EndIf - if ! bHasJContainers - Debug.Trace("JContainers is not loaded, renaming and changing potion models is disabled") - endif - ; Re-register menu listener to stay resilient to co-save deletion or corruption RegisterForMenu("Crafting Menu") EndFunction -Function _OnGameLoadJContainers() - - Potion k - Potion previousKey - - Int potionNames = RenamedPotions - k = JFormMap.nextKey(potionNames, previousKey = None, endKey = None) as Potion - while k != None - ; Forget items that are no longer in the inventory - if PlayerREF.GetItemCount(k) == 0 && _00E_SecureChest_HostChestREF.GetItemCount(k) == 0 - JFormMap.removeKey(RenamedPotions, k) - JFormMap.removeKey(ModelChangedPotions, k) - k = JFormMap.nextKey(potionNames, previousKey, endKey = None) as Potion - else - previousKey = k - k.setName(JFormMap.getStr(potionNames, k)) - k = JFormMap.nextKey(potionNames, k, endKey = None) as Potion - endif - endwhile - - Int potionModels = ModelChangedPotions - k = JFormMap.nextKey(potionModels, previousKey = None, endKey = None) as Potion - while k != None - k.SetWorldModelPath(JFormMap.getStr(potionModels, k)) - k = JFormMap.nextKey(potionModels, k, endKey = None) as Potion - endwhile - -EndFunction - ;===================================================================================== ; EVENTS @@ -448,10 +420,14 @@ EndEvent State InCrafting Event OnItemAdded(Form baseItem, int count, ObjectReference itemRef, ObjectReference source) + if ! UI.IsMenuOpen("Crafting Menu") + GoToState("") + return + endif Potion item = baseItem as Potion If item ; Ignore not-custom potions (with FormID not starting with 0xFF) or already registered potions - If (Math.LogicalAnd(item.GetFormID(), 0xFF000000) == 0xFF000000) && (!bHasJContainers || JFormMap.hasKey(RenamedPotions, item) == False) + If (Math.LogicalAnd(item.GetFormID(), 0xFF000000) == 0xFF000000) && aCreatedPotions.Find(item) == -1 _UpdatePotion(item, count) EndIf EndIf @@ -465,7 +441,23 @@ EndEvent Event OnPlayerLoadGame() _InitAchemyControl() - if bHasJContainers - _OnGameLoadJContainers() + + if aCreatedPotions.length == 0 + return endif + + int i = 0 + while i < 128 + if aCreatedPotions[i] + if PlayerREF.GetItemCount(aCreatedPotions[i]) == 0 && _00E_SecureChest_HostChestREF.GetItemCount(aCreatedPotions[i]) == 0 + _removeNamedPotion(aCreatedPotions[i]) + else + aCreatedPotions[i].SetName(aPotionNames[i]) + if aPotionModels[i] != "" + aCreatedPotions[i].SetWorldModelPath(aPotionModels[i]) + endif + endif + endif + i += 1 + endwhile EndEvent diff --git a/source/scripts/_00e_theriantrophist_update_12.psc b/source/scripts/_00e_theriantrophist_update_12.psc new file mode 100644 index 00000000..49c8588c --- /dev/null +++ b/source/scripts/_00e_theriantrophist_update_12.psc @@ -0,0 +1,19 @@ +scriptname _00E_Theriantrophist_Update_12 Hidden + +function Run(_00E_Theriantrophist_AlchemyControl PlayerAlias) global + + Potion k + int potionNames = JMap.getObj(JDB.root(), "EnderalFS.RenamedPotions") + int potionModels = JMap.getObj(JDB.root(), "EnderalFS.ModelChangedPotions") + + if potionNames > 0 + k = JFormMap.nextKey(potionNames, previousKey = None, endKey = None) as Potion + while k != None + PlayerAlias._addNamedPotion(k, JFormMap.getStr(potionNames, k), JFormMap.getStr(potionModels, k)) + k = JFormMap.nextKey(potionNames, k, endKey = None) as Potion + endwhile + JFormMap.clear(potionNames) + JFormMap.clear(potionModels) + endif + +endfunction diff --git a/source/scripts/enderalfunctions.psc b/source/scripts/enderalfunctions.psc index ea4b8c8b..5ef1a2ff 100644 --- a/source/scripts/enderalfunctions.psc +++ b/source/scripts/enderalfunctions.psc @@ -9,5 +9,6 @@ ObjectReference function GetCurrentContainer() native global int function GetNewGameCount() native global bool function IsDLLLoaded() global - return (SKSE.GetPluginVersion("EnderalSE") != -1) + int iVer = SKSE.GetPluginVersion("EnderalSE") + return iVer > 0 endfunction