From 4ab9c06e5784e5a1655cd5c513186ae7bb335310 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Mon, 20 Dec 2021 04:48:08 +0100 Subject: [PATCH] Optimized _00E_Theriantrophist_AlchemyControl, removed obsolete code --- .../_00e_theriantrophist_alchemycontrol.pex | Bin 18374 -> 17869 bytes .../_00e_theriantrophist_alchemycontrol.psc | 191 +++++++++--------- 2 files changed, 92 insertions(+), 99 deletions(-) diff --git a/scripts/_00e_theriantrophist_alchemycontrol.pex b/scripts/_00e_theriantrophist_alchemycontrol.pex index cc6f0a8357379c96f8518ecd3bcd8b82af0214ab..81076ac83d8e7a291778e4b81cdee358e4c71e55 100644 GIT binary patch literal 17869 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 0 + i -= 1 + AddInventoryEventFilter(aPotions[i]) + endwhile + + aPotions = JFormMap.allKeysPArray(ModelChangedPotions) + i = aPotions.length + while i > 0 + i -= 1 + AddInventoryEventFilter(aPotions[i]) + endwhile + +EndFunction + ;===================================================================================== ; EVENTS ;===================================================================================== -Event OnItemAdded(Form baseItem, int count, ObjectReference itemRef, ObjectReference source) +Event OnMenuOpen(String MenuName) - Potion item = baseItem as Potion - If item - Bool bIsInCraftingMode = UI.IsMenuOpen("Crafting Menu") + If menuName == "Crafting Menu" + RemoveAllInventoryEventFilters() + GoToState("InCrafting") + return + endif - ; Ignore not-custom potions (with FormID not starting with 0xFF) or already registered potions - If (Math.LogicalAnd(item.GetFormID(), 0xFF000000) == 0xFF000000) && JFormMap.hasKey(RenamedPotions, item) == False - _UpdatePotion(item, count, bIsInCraftingMode) - EndIf - EndIf + GoToState("InInventory") EndEvent -Event OnItemRemoved(Form baseItem, int count, ObjectReference itemRef, ObjectReference dest) - ; Probably a potion is consumed - Potion item = baseItem as Potion - if item && dest == None - ; we want to prevent that all potions that have been brewed are collected in this list - ; and cause performance issues. So we risk that we loose track of them by removing them - ; from this list. In this case, the name will be the old vanilla skyrim one - if (PlayerREF.getItemCount(item) == 0) - JFormMap.removeKey(RenamedPotions, item) - JFormMap.removeKey(ModelChangedPotions, item) - Endif - Endif -EndEvent +Event OnMenuClose(String MenuName) + GoToState("") -Int curScriptVersion = 0 -Int Property LATEST_SCRIPT_VERSION = 3 AutoReadOnly + If menuName == "Crafting Menu" + _UpdateInventoryFilters() + endif -Event OnInit() - curScriptVersion = LATEST_SCRIPT_VERSION EndEvent -Function _UpdateToVersion3() - Potion p - Int i - - Int potionArrayID = JFormMap.allKeys(RenamedPotions) +State InCrafting + Event OnItemAdded(Form baseItem, int count, ObjectReference itemRef, ObjectReference source) - JFormMap.clear(RenamedPotions) - JFormMap.clear(ModelChangedPotions) - - ; Update already cached potions - Int nPotions = JArray.count(potionArrayID) - i = 0 - While i < nPotions - p = JArray.getForm(potionArrayID, i, None) as Potion - If p && Math.LogicalAnd(p.GetFormID(), 0xFF000000) == 0xFF000000 - _UpdatePotion(p, 1, False) + 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) && JFormMap.hasKey(RenamedPotions, item) == False + _UpdatePotion(item, count, true) + EndIf EndIf - i += 1 - EndWhile - ; Update potions in the player's inventory - Int nItems = PlayerREF.GetNumItems() - i = 0 - While i < nItems - p = PlayerREF.GetNthForm(i) as Potion - If p && Math.LogicalAnd(p.GetFormID(), 0xFF000000) == 0xFF000000 && JFormMap.hasKey(RenamedPotions, p) == False - _UpdatePotion(p, 1, False) - EndIf - i += 1 - EndWhile + EndEvent +EndState + +State InInventory + Event OnItemRemoved(Form baseItem, int count, ObjectReference itemRef, ObjectReference dest) + if dest != None + return + endif + ; Probably a potion is consumed + Potion item = baseItem as Potion + if item + ; we want to prevent that all potions that have been brewed are collected in this list + ; and cause performance issues. So we risk that we loose track of them by removing them + ; from this list. In this case, the name will be the old vanilla skyrim one + if (PlayerREF.getItemCount(item) == 0) + JFormMap.removeKey(RenamedPotions, item) + JFormMap.removeKey(ModelChangedPotions, item) + Endif + Endif + EndEvent +EndState - Debug.Trace("_00E_Theriantrophist_AlchemyControl: _UpdateToVersion3 done") -EndFunction +Int curScriptVersion = 0 +Int Property LATEST_SCRIPT_VERSION = 4 AutoReadOnly + +Event OnInit() + curScriptVersion = LATEST_SCRIPT_VERSION + RegisterForMenu("ContainerMenu") + RegisterForMenu("InventoryMenu") + RegisterForMenu("FavoritesMenu") + RegisterForMenu("Crafting Menu") +EndEvent Event OnPlayerLoadGame() - Bool bRestoreNamesModels = True + GoToState("") ; Version update If curScriptVersion < LATEST_SCRIPT_VERSION Int oldScriptVersion = curScriptVersion curScriptVersion = LATEST_SCRIPT_VERSION - If oldScriptVersion < 3 - _UpdateToVersion3() - bRestoreNamesModels = False + If oldScriptVersion < 4 + UnregisterForUpdate() + RegisterForMenu("ContainerMenu") + RegisterForMenu("InventoryMenu") + RegisterForMenu("FavoritesMenu") + RegisterForMenu("Crafting Menu") + _UpdateInventoryFilters() EndIf EndIf - ; Fix 1.5.3.0 _IsSelfBrewnPotion stuck in permanent Wait loop. - ; It may take a looong time - If criticalSectionProcesses > 0 - RegisterForSingleUpdate(0.1) - EndIf - ; Restore names and models - If bRestoreNamesModels - Potion k - - Int potionNames = RenamedPotions - k = JFormMap.nextKey(potionNames, previousKey = None, endKey = None) as Potion - while k != None - k.setName(JFormMap.getStr(potionNames, k)) - k = JFormMap.nextKey(potionNames, k, endKey = None) as Potion - 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 - EndIf -EndEvent - -Event OnUpdate() - ; Fix 1.5.3.0 _IsSelfBrewnPotion stuck in permanent Wait loop. - If criticalSectionProcesses <= 0 - Utility.WaitMenuMode(0.1) ; Wait a bit more, just in case - If criticalSectionProcesses <= 0 - ;Debug.Notification("Unfucked _IsSelfBrewnPotion") - Return - EndIf - EndIf - - PotionsMixedOnLastTest = Game.QueryStat("Potions Mixed") + Game.QueryStat("Poisons Mixed") - criticalSectionProcesses = 0 - RegisterForSingleUpdate(0.1) + Potion k + + Int potionNames = RenamedPotions + k = JFormMap.nextKey(potionNames, previousKey = None, endKey = None) as Potion + while k != None + k.setName(JFormMap.getStr(potionNames, k)) + k = JFormMap.nextKey(potionNames, k, endKey = None) as Potion + 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 EndEvent