From 6e1bf5a6e9a052d332bab882d156a85502d43087 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Sat, 13 Jan 2024 20:15:35 +0100 Subject: [PATCH] Moved lockpicking gold bonus to ContainerController --- SleightOfHand quest.esp | Bin 21593 -> 21706 bytes scripts/_00E_ContainerController.pex | Bin 0 -> 9724 bytes scripts/_00E_SleightOfHandAlias.pex | Bin 8283 -> 0 bytes scripts/_00e_chestanddoorlockscript.pex | Bin 7389 -> 6216 bytes ...Alias.psc => _00E_ContainerController.psc} | 148 +++++++++++++----- .../scripts/_00e_chestanddoorlockscript.psc | 67 +------- 6 files changed, 118 insertions(+), 97 deletions(-) create mode 100644 scripts/_00E_ContainerController.pex delete mode 100644 scripts/_00E_SleightOfHandAlias.pex rename source/scripts/{_00E_SleightOfHandAlias.psc => _00E_ContainerController.psc} (69%) diff --git a/SleightOfHand quest.esp b/SleightOfHand quest.esp index 6b1a7dd624990df840d6becae37627840169f89b..2502c82af91c060c85173528de431b0730e6c6e7 100644 GIT binary patch delta 1863 zcmcb)g7MT!#tBMn@(c_NzPb}NCh#o)vfO?Aoq!aBuEE4(L4H7vDv;v<#P<~#n1K|7 z4iLM#c)IX0#2Xm6#=Ga|r1+NRlrXsYIr=g(6ubF^gs}jXEO2lS3JsX)%fR65?-v5n zsB17;lQD1dB}LE4Oj_!bQ%p1_e^yeNECQq-@#IVvax|EnDX2PmqK3}oBx&WzLPnyK zKMAN#{w%LC`I3~%zDRNJ_a~9BFofMhTCi<2l{g0FjCl^Z2rqGP^NwV80H-c-jgsj-)QwrS_8ugPR z{Tb>v$keaE{AUi^Iu!nFb-U&jV5E$y}zH6qy6bK3tOvEgC5{=b5!P zh*w3w;(5-U5vVu z&-#foF)&Pi=9gG+3@o1mLxZ7(GN@>V@R>p7HW1{BpqBI^49@v^C5f4NsYM`0QGQNN zY7s-2ucJ#FGb;noR4`^>glh%~GBQX&DhLd{EI`d7lUV}PC-VpCPVNa*Vbq$uF+g$h zoB)x@8v?BuwShdP$shg2Cg%i8O+FvQCBe-Qkds)MTI7>jmYTx|wCDf-sj7?&Vv|4m ziE~5v`9L=tfHnFBNP_E*M?6}LhG3DRK&i delta 1885 zcmb`|O=uHA6bJB`ByMf0!PGRHeu?=av5mSt2v%ZEn$%h~*^e~#;Gu@v#FlKLu@~#1 zRKbg&P5uZ4^=2e`@DfnOi=^N|1#hAtC|*1Xf*wojPI~eZEX*8sW*_Wtc6jr6Z=cZ5 zHM-&v_7Or#j&g9tHe;;D&&s35WQ_6~&90@DYJ!lMoSfVWB1;QswCzRZL>In$Bpev< zqvD>xYERX2_Swk~*eei?O0^CkP>IgXP_-e5sedIhBlNIN)qsyGE z9K7K(^fij%!yV@m(YQc%5ECKwhha*&Y{BY(HFA@SRg0~2aaf(Lj^F2GIq~uIw-(m6 z?;jo~r)UTpNzoLNAj+Ag-)2J8bgJ1eLef^(VDD>2oDJPU%q$)<)?@LBxQnFnvvavi z3v%{Urf@Ml8ACWNv_6JS9~L^3T&W7Ge9-yY4+Wv-G=GKi;& z2ZHLvhU~*NHO!7p2aKp2_Y?<)v|&V4vDwJV+A%tWMb!(J)(u(lp{#lFUJ>z5^TVSY r#4qg-rc@8+wE*qGmsGEv8h^97dD%EkJQ+>wA{1&W%dX?gl%4(sT%2X6 diff --git a/scripts/_00E_ContainerController.pex b/scripts/_00E_ContainerController.pex new file mode 100644 index 0000000000000000000000000000000000000000..a7bac0a45069169e8cf585b49ed4cf307f23013e GIT binary patch literal 9724 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 diff --git a/scripts/_00e_chestanddoorlockscript.pex b/scripts/_00e_chestanddoorlockscript.pex index 091ae1705b5d48b1f0a3afe7b8bbdef084f386be..45664aca5d79d6893606f2b94b4db26f16d95356 100644 GIT binary patch literal 6216 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 literal 7389 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 UhleVYyMXazIf##Y3aaz?zfrng-v9sr diff --git a/source/scripts/_00E_SleightOfHandAlias.psc b/source/scripts/_00E_ContainerController.psc similarity index 69% rename from source/scripts/_00E_SleightOfHandAlias.psc rename to source/scripts/_00E_ContainerController.psc index 4c880f35..4635bcc4 100644 --- a/source/scripts/_00E_SleightOfHandAlias.psc +++ b/source/scripts/_00E_ContainerController.psc @@ -1,4 +1,4 @@ -Scriptname _00E_SleightOfHandAlias extends ReferenceAlias Hidden +Scriptname _00E_ContainerController extends ReferenceAlias Hidden ; This script sets up the sleight of hand loot of a chest upon activating it ;===================================================================================== @@ -11,37 +11,63 @@ event OnInit() endevent event OnPlayerLoadGame() + lastContainer = None + bLmHasGold = false + bLmHasSlot = false RegisterForMenu("ContainerMenu") RegisterForMenu("LootMenu") endevent event OnUpdate() - if lastContainer && UI.IsMenuOpen("LootMenu") && lastContainer == Game.GetCurrentCrosshairRef() - OpenHiddenSlot(lastContainer, true) + ObjectReference currentContainer = lastContainer + lastContainer = None + + if ! currentContainer + return + endif + + if UI.IsMenuOpen("LootMenu") && currentContainer == Game.GetCurrentCrosshairRef() + if bLmHasGold + IncrementGold(currentContainer) + endif + if bLmHasSlot + OpenHiddenSlot(currentContainer, true) + endif endif endevent event OnMenuOpen(String MenuName) if MenuName == "LootMenu" - UnregisterForUpdate() ; Even when QuickLoot RE does not show up, it still sends open and close menu events ; To determine if QuickLoot is open, we check it 0.1 seconds later + + lastContainer = None + UnregisterForUpdate() ObjectReference lootMenuRef = Game.GetCurrentCrosshairRef() if ! lootMenuRef return endif - Container baseContainer = lootMenuRef.GetBaseObject() as Container - - if ! baseContainer || lootMenuRef.IsActivationBlocked() || _00E_ChestsWithHiddenSlots.Find(baseContainer) == -1 + if ! ( lootMenuRef.GetBaseObject() as Container ) || lootMenuRef.IsActivationBlocked() return endif + + bLmHasGold = lootMenuRef.GetItemCount(Gold001) >= 5 + bLmHasSlot = false + + if bLmHasGold || _00E_ChestsWithHiddenSlots.Find(lootMenuRef.GetBaseObject()) > -1 + if ! bLmHasGold + bLmHasSlot = true + endif + if ! IsProcessed(lootMenuRef) + lastContainer = lootMenuRef + ; Clears previous request automatically + RegisterForSingleUpdate(0.1) + endif + endif - lastContainer = lootMenuRef - ; Clears previous request automatically - RegisterForSingleUpdate(0.1) return endif @@ -52,21 +78,35 @@ event OnMenuOpen(String MenuName) return endif - if currentContainer == containterToFill + if currentContainer == containerToFill ; Opened hidden container Utility.Wait(0.1) ; Move unclaimed items to the original container - containterToFill.RemoveAllItems(lastContainer, true, true) + containerToFill.RemoveAllItems(lastContainer, true, true) lastContainer = None - containterToFill = None + containerToFill = None + return + endif + + bool bDoGold = currentContainer.GetItemCount(Gold001) >= 5 + bool bDoSlot = _00E_ChestsWithHiddenSlots.Find(currentContainer.GetBaseObject()) > -1 + + if ! bDoGold && ! bDoSlot return endif - if _00E_ChestsWithHiddenSlots.Find(currentContainer.GetBaseObject()) == -1 + if IsProcessed(currentContainer) return endif - - OpenHiddenSlot(currentContainer) + + if bDoGold + IncrementGold(currentContainer) + endif + + if bDoSlot + OpenHiddenSlot(currentContainer) + endif + endif endevent @@ -75,6 +115,8 @@ event OnMenuClose(String MenuName) if MenuName == "LootMenu" UnregisterForUpdate() lastContainer = None + bLmHasGold = false + bLmHasSlot = false endif endevent @@ -83,6 +125,39 @@ endevent ; FUNCTIONS ;===================================================================================== +bool function IsProcessed(ObjectReference targetContainer) + if targetContainer.GetItemCount(_00E_HiddenSlotChecked) + return true + endif + + targetContainer.AddItem(_00E_HiddenSlotChecked, 1, true) + return false +endfunction + +Function IncrementGold(ObjectReference targetContainer) + + int iGoldMultiplicator = _00E_GoldMult.GetValue() as int + + if iGoldMultiplicator == 0 + ; Prevent division by zero + iGoldMultiplicator = 5 + endif + + float fIncrementPercentage = ( PlayerREF.GetActorValue("Lockpicking") / iGoldMultiplicator ) / 100 + int iGoldBuffAmount = ( targetContainer.GetItemCount(Gold001) * fIncrementPercentage ) as Int + + if iGoldBuffAmount == 0 + return + endif + + targetContainer.AddItem(Gold001, iGoldBuffAmount) + + if iGoldBuffAmount > 1 + _00E_FS_LockpickingGoldBuffMSG.Show(iGoldBuffAmount as Int) + EndIf + +EndFunction + function OpenHiddenSlot(ObjectReference currentContainer, bool bLootMenu = false) if ! SetUpHiddenSlot(currentContainer) @@ -93,22 +168,22 @@ function OpenHiddenSlot(ObjectReference currentContainer, bool bLootMenu = false messageToShow.Show() if bLootMenu - containterToFill.RemoveAllItems(currentContainer, true, true) + containerToFill.RemoveAllItems(currentContainer, true, true) else ; Open hidden container after the original one closes Utility.Wait(0.1) If IsOwned(currentContainer) - containterToFill.SetFactionOwner(SleightOfHandOwnerFaction) + containerToFill.SetFactionOwner(SleightOfHandOwnerFaction) Else - containterToFill.SetFactionOwner(none) + containerToFill.SetFactionOwner(none) Endif lastContainer = currentContainer - containterToFill.Activate(PlayerREF, True) + containerToFill.Activate(PlayerREF, True) endif - If containterToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF + If containerToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF _00E_EPHandler.GiveEP(_00E_BigHiddenSlotExpReward.GetValue() as int) If _00E_HiddenSlotAchievementUnlocked.GetValueInt() == 0 UIEnchantingLearnEffectM.Play(PlayerREF) @@ -121,12 +196,6 @@ endfunction bool function SetUpHiddenSlot(ObjectReference aContainer) - if aContainer.GetItemCount(_00E_HiddenSlotChecked) - return false - endif - - aContainer.AddItem(_00E_HiddenSlotChecked, 1, true) - if ! DoesContainerHaveHiddenSlot() return false EndIf @@ -139,17 +208,17 @@ bool function SetUpHiddenSlot(ObjectReference aContainer) if messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sSmallSlotFound - containterToFill = _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF + containerToFill = _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF iFormlistIndex = Utility.RandomInt(0, 2) + iFormlistIndexOffset Elseif messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sMediumSlotFound - containterToFill = _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF + containerToFill = _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF iFormlistIndex = Utility.RandomInt(3, 5) + iFormlistIndexOffset Elseif messageToShow == _00E_FS_SleightOfHand_HiddenSlot_sBigSlotFound - containterToFill = _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF + containerToFill = _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF iFormlistIndex = Utility.RandomInt(6, 7) + iFormlistIndexOffset EndIf @@ -163,9 +232,9 @@ EndFunction Function AddItemsToContainer(Formlist itemsToAdd, int iFormlistIndexOffset, int iHiddenSlotTier) - containterToFill.RemoveAllItems() + containerToFill.RemoveAllItems() - if containterToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF + if containerToFill == _00E_FS_SleightOfHand_HiddenSlot_BigSlotREF if ! itemsToAdd.HasForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker) itemsToAdd.AddForm(_00E_FS_SleightOfHand_HiddenSlotUsedMarker) @@ -184,9 +253,9 @@ Function AddItemsToContainer(Formlist itemsToAdd, int iFormlistIndexOffset, int Form formToAdd = itemsToAdd.GetAt(iIndex) if formToAdd == Gold001 - containterToFill.AddItem(itemsToAdd.GetAt(iIndex), iHiddenSlotTier*5) + containerToFill.AddItem(itemsToAdd.GetAt(iIndex), iHiddenSlotTier*5) Else - containterToFill.AddItem(itemsToAdd.GetAt(iIndex), 1) + containerToFill.AddItem(itemsToAdd.GetAt(iIndex), 1) EndIf iIndex -= 1 @@ -281,7 +350,10 @@ int iBigSlotChance = 15 ; This formlist will be filled with the formlist containing the items that will actually be added into the container Message messageToShow ObjectReference lastContainer -ObjectReference containterToFill +ObjectReference containerToFill + +bool bLmHasGold +bool bLmHasSlot Actor Property PlayerRef Auto @@ -289,6 +361,10 @@ GlobalVariable Property PlayerLevel Auto GlobalVariable Property _00E_HiddenSlotAchievementUnlocked Auto GlobalVariable Property _00E_BigHiddenSlotExpReward Auto +; Use this to control how much the lockpicking skill increments the gold found in chest. When changing, remember to change in _00E_LootContainer.psc as well! +; Current calculation: Gold in chest*((Lockpicking/iGoldMultiplicator)/100) +GlobalVariable Property _00E_GoldMult Auto + ; These REFs simply provide the containers that will be filled when finding a secret slot ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_SmallSlotREF Auto ObjectReference Property _00E_FS_SleightOfHand_HiddenSlot_MediumSlotREF Auto @@ -310,3 +386,5 @@ FormList Property _00E_FS_HiddenSlotRewardFormlists Auto FormList Property _00E_ChestsWithHiddenSlots Auto Faction Property SleightOfHandOwnerFaction Auto + +Message Property _00E_FS_LockpickingGoldBuffMSG Auto diff --git a/source/scripts/_00e_chestanddoorlockscript.psc b/source/scripts/_00e_chestanddoorlockscript.psc index 08af98b7..0e0d8920 100644 --- a/source/scripts/_00e_chestanddoorlockscript.psc +++ b/source/scripts/_00e_chestanddoorlockscript.psc @@ -1,57 +1,5 @@ Scriptname _00E_ChestAndDoorLockScript extends ObjectReference -;===================================================================================== -; GOLDBUFF -;===================================================================================== - -; Use this to control how much the lockpicking skill increments the gold found in chest. When changing, remember to change in _00E_LootContainer.psc as well! -; Current calculation: Gold in chest*((Lockpicking/iGoldMultiplicator)/100) -int iGoldMultiplicator = 5 -int iCurrentGoldCount -float fPlayerLockpicking - -bool bDone - -Message Property _00E_FS_LockpickingGoldBuffMSG Auto - -MiscObject Property Gold001 Auto - -Event OnOpen(ObjectReference akActionRef) - - if !bDone && (Self.GetBaseObject().GetType() == 28) ; check if it's a container otherwise the script tries to call this stuff on doors - - bDone = True - iCurrentGoldCount = Self.GetItemCount(Gold001) - fPlayerLockpicking = PlayerREF.GetActorValue("Lockpicking") - if iCurrentGoldCount >= 5 && fPlayerLockpicking >= 15 - IncrementGold() - EndIf - - EndIf - -EndEvent - -;===================================================================================== -; FUNCTIONS -;===================================================================================== - -Function IncrementGold() - - float fIncrementPercentage = (fPlayerLockpicking/iGoldMultiplicator)/100 - int iGoldBuffAmount = (iCurrentGoldCount*fIncrementPercentage) as Int - - Self.AddItem(Gold001, iGoldBuffAmount) - - if iGoldBuffAmount > 1 - _00E_FS_LockpickingGoldBuffMSG.Show(iGoldBuffAmount as Int) - EndIf - -EndFunction - -;===================================================================================== -; ORIGINAL SCRIPT -;===================================================================================== - Event OnLoad() BlockActivation(True) EndEvent @@ -101,7 +49,11 @@ Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, _00E_sDoorLocked.Show() WPNTG06ControlStaffShootFailM.Play(Self) ElseIf projectileLevel >= lockLevel - UnlockLock() + ; Unlock + Self.Lock(False) + _00E_UILockpickingUnlockM.Play(Self) + _00E_Ability_Antimagic_FXSShader.Play(Self) + self.PlaceAtMe(_00E_UnlockLockExplosion, 1) EndIf EndIf @@ -166,15 +118,6 @@ Event OnActivate(ObjectReference akActionRef) EndEvent -Function UnlockLock() - - Self.Lock(False) - _00E_UILockpickingUnlockM.Play(Self) - _00E_Ability_Antimagic_FXSShader.Play(Self) - self.PlaceAtMe(_00E_UnlockLockExplosion, 1) - -EndFunction - Formlist Property _00E_SuntempleLocations Auto Projectile Property _00E_UnlockProjectile_Novice Auto