From 4805a55db59b9d8f7b67071357a4e3aee3e771f2 Mon Sep 17 00:00:00 2001 From: Eddoursul Date: Sun, 14 Jan 2024 04:15:47 +0100 Subject: [PATCH] Reworked _00E_ChestAndDoorLockScript to a quest+perk implementation for better compatibility with QuickLoot RE --- SleightOfHand quest.esp | Bin 21706 -> 78108 bytes .../PRKF__00E_LockpickingReqPerk_030039BA.pex | Bin 0 -> 2695 bytes scripts/_00E_ClosedChestAlias.pex | Bin 0 -> 3563 bytes scripts/_00E_ContainerController.pex | Bin 9724 -> 9950 bytes scripts/_00E_ScrollUnlockAlias.pex | Bin 0 -> 3141 bytes scripts/_00e_chestanddoorlockscript.pex | Bin 6216 -> 0 bytes .../PRKF__00E_LockpickingReqPerk_030039BA.psc | 65 ++++++++ source/scripts/_00E_ClosedChestAlias.psc | 77 ++++++++++ source/scripts/_00E_ContainerController.psc | 12 +- source/scripts/_00E_ScrollUnlockAlias.psc | 97 ++++++++++++ .../scripts/_00e_chestanddoorlockscript.psc | 143 ------------------ 11 files changed, 248 insertions(+), 146 deletions(-) create mode 100644 scripts/PRKF__00E_LockpickingReqPerk_030039BA.pex create mode 100644 scripts/_00E_ClosedChestAlias.pex create mode 100644 scripts/_00E_ScrollUnlockAlias.pex delete mode 100644 scripts/_00e_chestanddoorlockscript.pex create mode 100644 source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc create mode 100644 source/scripts/_00E_ClosedChestAlias.psc create mode 100644 source/scripts/_00E_ScrollUnlockAlias.psc delete mode 100644 source/scripts/_00e_chestanddoorlockscript.psc diff --git a/SleightOfHand quest.esp b/SleightOfHand quest.esp index 2502c82af91c060c85173528de431b0730e6c6e7..eabc14a1ed2872908224c7a977cde1e29ae51f91 100644 GIT binary patch literal 78108 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 literal 21706 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 R1E!d-Ii}cV2UBcq^*Z#s&-#;R?}m1JoCPJc;X z+Mm&X(1*VEp{L)jB(Q7Dp&DD7nVp$$F1!2p_rLxT3=ktc{Fgs}r`2NV;3k z`$l&vb#6n_?W8H2nsiKvJZZOiMX%|+nzZEsiW&UIJwK5P$HL7(L%Ez7%_a7G+%y!U z>Mo<%E;E9H_?2$B(sD1f#hs322xOkDbS!arTp<5K`i+KgMKB65ymllT6zr~KLxSCt zY*?`Sl8p#9E7>UCl8N~Y!Z8vOqc{=n6i@;*37Q7Y^w2EL(r2Kj^bGX5q!;vpl9Cqa zzw`wOTI{2jBxtFRmT8UFC2dfEhKWW*?s!6f(WvBv9Hucy@)<|E@=5rbNuQbWm*Vuq zbEYV&3ZW_)llhDrfz1cOY*NHm-@E<~`r&4RUD9LCXlBjYhBx-)_3p?YUz@wP9n5~%O zD_RD~3LsaZTZ3*L-`CJ>;G3c^DUE*yyn;kF89imRAQGV&j|q=4T4D4Y%Ug1JRV-th zuY>{qLam$(Z-!4{5JNp}Xn?@6& zT)Dh!m-du+C@EgG%X=4W?GI&p_o8S!SJ|_7sdr7tigcu)^jaVT&35hh>#n5RwZN~t z(hYpaqwXWOUKc(M?23j6gO<8R%n!@uU zHtcN#;fd!)k|s=WTp!>AgL#n6zAu;d))toXfiEFP@f(fGQ4q+2<9a%DQ?A^B>$&oC zHHQkFIEQYnTKG_@965Cn@`in)(LmuNmR#MGQt-(X_{zp@JCSU8y>}t_M00a>fwWa` zJ2!ku!-*r%N|7cKvJ35_bX;W0BtS{`@mZjm_6Qv$O}E!_cr<%$dFe6R-l(Uo(SFzF zfL#@!KK?Ysnupn2Wkj2 zGQd(~qNb?14Oi4N5f6H=FV6IwcUNSHQK57;tDNquQ4M_CuWNNG5?+IPvRS?C3;Y#v z==yr~=wbk&kf))q_7|DjX{aW-wcTy!ICpp$V#F{>gF75re1}l4b6mm2SQC^gU}UJz zN!%gS?;MnaGZE&bbZWBGI6$Z{jn_YL)|I}s<^ z1wc-c!YP%uN@4oXD5d6uQcBFTf~!_;3-dd(OuhJJu&Berr<2)E#ip1|DYlE*F2!~; z+pX9hX4RJ&<%O9v(MP%s>i>cUXn^j}UC;>AD2>t>(>RUO1k)r<(iGD)P16k1EX~n8 zC==5?QglD22c+n$n7$@O4`X^nhMv$9`X2O@=?7W>Jp(rTGTr zbP$$dw8olJU7JLguG4R!RFm4i2i1Lmh&i_&8bZ;=&0-84zRt~msOo?L58{wq2VO+^ zWAHpW5HB+H4U%sKFijoTy0Pfn^Ux>g@ww$NeRuA&AB`O~K1a~uS+kfytK+TbAXNvw zmsIchvC#fS2%kgLId0Jli(X=-%1ZqfEkO_ItArGXf02IF*6M3b0Y+)qb4~>PGG*yC z{X}oD_0RN{e!-i=yMni$^3bk=v+)+dub~3#csG#gCakv5pCWYIcuSD0&^{uF9S$OI zLMvF5AHZwT*q}wL7A<3elM8MYa`kT%uY#vwUA71oHd_O4GP;a> z5+mo6NZeJIk&mE%tx|i4=r=5yKxuwujw@wBYdqYCYL``;Tof({Dz;_OCjM=L!?s0O zU;(3|0$h>wWE)@B7rwS*U)#o4o3h+#Q zZ8)D{Y*yi8xX!gi2TC|UI3_J`FhV(%EG{QZ_ADBKNSUP7FBAVf-Q)w?cNR^zY|+{R z$Ckd!(}AN~GOg|bbe|*R$?xdGjjF8?67Q_6wFKd65G1L;{vb6(I15A2zGoLaq3D}F KHOf`8F#iK}eTeD+ literal 0 HcmV?d00001 diff --git a/scripts/_00E_ContainerController.pex b/scripts/_00E_ContainerController.pex index a7bac0a45069169e8cf585b49ed4cf307f23013e..7ba6ca0dcdd4bf924975869c8c32cad123199a72 100644 GIT binary patch literal 9950 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 TQ_j6*BJ*?Y&bVd%tA+X(yx{+Y literal 0 HcmV?d00001 diff --git a/scripts/_00e_chestanddoorlockscript.pex b/scripts/_00e_chestanddoorlockscript.pex deleted file mode 100644 index 45664aca5d79d6893606f2b94b4db26f16d95356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6216 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 diff --git a/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc b/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc new file mode 100644 index 00000000..7784deb4 --- /dev/null +++ b/source/scripts/PRKF__00E_LockpickingReqPerk_030039BA.psc @@ -0,0 +1,65 @@ +;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment +;NEXT FRAGMENT INDEX 2 +Scriptname PRKF__00E_LockpickingReqPerk_030039BA Extends Perk Hidden + +;BEGIN FRAGMENT Fragment_1 +Function Fragment_1(ObjectReference akTargetRef, Actor akActor) +;BEGIN CODE +_00E_sDoorLocked.Show() +;END CODE +EndFunction +;END FRAGMENT + +;BEGIN FRAGMENT Fragment_0 +Function Fragment_0(ObjectReference akTargetRef, Actor akActor) +;BEGIN CODE +if akTargetRef.IsActivationBlocked() + akTargetRef.Activate(akActor, false) + return +endif + +Key refKey = akTargetRef.GetKey() +if refKey && akActor.GetItemCount(refKey) > 0 + akTargetRef.Activate(akActor, True) + return +endif + +Bool bPlayerCanActivate = False +Int iLockLevel = akTargetRef.GetLockLevel() + +If iLockLevel <= LOCK_LEVEL_APPRENTICE + bPlayerCanActivate = True +ElseIf iLockLevel <= LOCK_LEVEL_ADEPT + bPlayerCanActivate = (akActor.HasPerk(_00E_Class_Trickster_P04_ThiefApprentice) || akActor.GetActorValue("Lockpicking") >= 25) +ElseIf iLockLevel <= LOCK_LEVEL_EXPERT + bPlayerCanActivate = (akActor.HasPerk(_00E_Class_Trickster_P06_ExpertLocksmith) || akActor.GetActorValue("Lockpicking") >= 50) +ElseIf iLockLevel <= LOCK_LEVEL_MASTER + bPlayerCanActivate = (akActor.HasPerk(_00E_Class_Trickster_P09_MasterThief) || akActor.GetActorValue("Lockpicking") >= 75) +Else + bPlayerCanActivate = True +EndIf + +If bPlayerCanActivate + akTargetRef.Activate(akActor, True) +Else + _00E_Game_UnlockNeedsSkill.Show() +EndIf +;END CODE +EndFunction +;END FRAGMENT + +;END FRAGMENT CODE - Do not edit anything between this and the begin comment + +Int Property LOCK_LEVEL_NOVICE = 1 AutoReadOnly +Int Property LOCK_LEVEL_APPRENTICE = 25 AutoReadOnly +Int Property LOCK_LEVEL_ADEPT = 50 AutoReadOnly +Int Property LOCK_LEVEL_EXPERT = 75 AutoReadOnly +Int Property LOCK_LEVEL_MASTER = 254 AutoReadOnly + +Perk Property _00E_Class_Trickster_P04_ThiefApprentice Auto +Perk Property _00E_Class_Trickster_P06_ExpertLocksmith Auto +Perk Property _00E_Class_Trickster_P09_MasterThief Auto + +Message Property _00E_Game_UnlockNeedsSkill Auto + +Message Property _00E_sDoorLocked Auto diff --git a/source/scripts/_00E_ClosedChestAlias.psc b/source/scripts/_00E_ClosedChestAlias.psc new file mode 100644 index 00000000..0fae0f3d --- /dev/null +++ b/source/scripts/_00E_ClosedChestAlias.psc @@ -0,0 +1,77 @@ +Scriptname _00E_ClosedChestAlias extends ReferenceAlias + +Int Property LOCK_LEVEL_NOVICE = 1 AutoReadOnly +Int Property LOCK_LEVEL_APPRENTICE = 25 AutoReadOnly +Int Property LOCK_LEVEL_ADEPT = 50 AutoReadOnly +Int Property LOCK_LEVEL_EXPERT = 75 AutoReadOnly +Int Property LOCK_LEVEL_MASTER = 254 AutoReadOnly + +Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) + + ObjectReference hitRef = GetReference() + + If akAggressor != PlayerREF || hitRef.IsLocked() == False + Return + EndIf + + Int projectileLevel = 0 + + If akProjectile == _00E_UnlockProjectile_Novice + projectileLevel = LOCK_LEVEL_NOVICE + ElseIf akProjectile == _00E_UnlockProjectile_Apprentice + projectileLevel = LOCK_LEVEL_APPRENTICE + ElseIf akProjectile == _00E_UnlockProjectile_Adept + projectileLevel = LOCK_LEVEL_ADEPT + ElseIf akProjectile == _00E_UnlockProjectile_Expert + projectileLevel = LOCK_LEVEL_EXPERT + ElseIf akProjectile == _00E_UnlockProjectile_Master + projectileLevel = LOCK_LEVEL_MASTER + ElseIf akSource + Formlist unlockSpells = _00E_ChestAndDoorUnlockScript_UnlockSpells + If unlockSpells.HasForm(akSource) + If akSource == unlockSpells.GetAt(0) as Explosion + projectileLevel = LOCK_LEVEL_APPRENTICE + ElseIf akSource == unlockSpells.GetAt(1) as Explosion + projectileLevel = LOCK_LEVEL_ADEPT + ElseIf akSource == unlockSpells.GetAt(2) as Explosion + projectileLevel = LOCK_LEVEL_EXPERT + ElseIf akSource == unlockSpells.GetAt(3) as Explosion + projectileLevel = LOCK_LEVEL_MASTER + EndIf + EndIf + EndIf + + If projectileLevel > 0 + Int lockLevel = hitRef.GetLockLevel() + If lockLevel > LOCK_LEVEL_MASTER + _00E_sDoorLocked.Show() + WPNTG06ControlStaffShootFailM.Play(hitRef) + ElseIf projectileLevel >= lockLevel + ; Unlock + hitRef.Lock(False) + _00E_UILockpickingUnlockM.Play(hitRef) + _00E_Ability_Antimagic_FXSShader.Play(hitRef) + hitRef.PlaceAtMe(_00E_UnlockLockExplosion, 1) + EndIf + EndIf + +EndEvent + +Projectile Property _00E_UnlockProjectile_Novice Auto +Projectile Property _00E_UnlockProjectile_Apprentice Auto +Projectile Property _00E_UnlockProjectile_Adept Auto +Projectile Property _00E_UnlockProjectile_Expert Auto +Projectile Property _00E_UnlockProjectile_Master Auto + +Message Property _00E_sDoorLocked Auto + +Sound Property _00E_UILockpickingUnlockM Auto +Sound Property WPNTG06ControlStaffShootFailM Auto + +EffectShader Property _00E_Ability_Antimagic_FXSShader Auto +Explosion Property _00E_UnlockLockExplosion Auto + +FormList Property _00E_UnlockScrolls Auto +FormList Property _00E_ChestAndDoorUnlockScript_UnlockSpells Auto + +Actor Property PlayerREF Auto diff --git a/source/scripts/_00E_ContainerController.psc b/source/scripts/_00E_ContainerController.psc index 4635bcc4..91ee2623 100644 --- a/source/scripts/_00E_ContainerController.psc +++ b/source/scripts/_00E_ContainerController.psc @@ -8,6 +8,7 @@ Scriptname _00E_ContainerController extends ReferenceAlias Hidden event OnInit() RegisterForMenu("ContainerMenu") RegisterForMenu("LootMenu") + PlayerREF.AddPerk(_00E_LockpickingReqPerk) endevent event OnPlayerLoadGame() @@ -16,6 +17,9 @@ event OnPlayerLoadGame() bLmHasSlot = false RegisterForMenu("ContainerMenu") RegisterForMenu("LootMenu") + if ! PlayerREF.HasPerk(_00E_LockpickingReqPerk) + PlayerREF.AddPerk(_00E_LockpickingReqPerk) + endif endevent event OnUpdate() @@ -50,14 +54,14 @@ event OnMenuOpen(String MenuName) return endif - if ! ( lootMenuRef.GetBaseObject() as Container ) || lootMenuRef.IsActivationBlocked() + if ! ( lootMenuRef.GetBaseObject() as Container ) || lootMenuRef.IsLocked() || lootMenuRef.IsActivationBlocked() return endif bLmHasGold = lootMenuRef.GetItemCount(Gold001) >= 5 bLmHasSlot = false - if bLmHasGold || _00E_ChestsWithHiddenSlots.Find(lootMenuRef.GetBaseObject()) > -1 + if bLmHasGold || _00E_ChestsWithHiddenSlots.HasForm(lootMenuRef.GetBaseObject()) if ! bLmHasGold bLmHasSlot = true endif @@ -89,7 +93,7 @@ event OnMenuOpen(String MenuName) endif bool bDoGold = currentContainer.GetItemCount(Gold001) >= 5 - bool bDoSlot = _00E_ChestsWithHiddenSlots.Find(currentContainer.GetBaseObject()) > -1 + bool bDoSlot = _00E_ChestsWithHiddenSlots.HasForm(currentContainer.GetBaseObject()) if ! bDoGold && ! bDoSlot return @@ -388,3 +392,5 @@ FormList Property _00E_ChestsWithHiddenSlots Auto Faction Property SleightOfHandOwnerFaction Auto Message Property _00E_FS_LockpickingGoldBuffMSG Auto + +Perk Property _00E_LockpickingReqPerk Auto diff --git a/source/scripts/_00E_ScrollUnlockAlias.psc b/source/scripts/_00E_ScrollUnlockAlias.psc new file mode 100644 index 00000000..ff5c2be8 --- /dev/null +++ b/source/scripts/_00E_ScrollUnlockAlias.psc @@ -0,0 +1,97 @@ +Scriptname _00E_ScrollUnlockAlias extends ReferenceAlias Hidden + +event OnPlayerLoadGame() + if UnlockScrollEquipped() + GotoState("Equipped") + endif +endevent + +Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference) + if akBaseObject as Scroll && _00E_UnlockScrolls.HasForm(akBaseObject) + GotoState("Equipped") + endif +endEvent + +bool function UnlockScrollEquipped() + Actor PlayerREF = GetReference() as Actor + if PlayerREF.IsEquipped(_00E_UnlockScrolls) + return true + endif + Form leftHand = PlayerREF.GetEquippedObject(0) + return leftHand && _00E_UnlockScrolls.HasForm(leftHand) +endfunction + +Event OnUpdate() + if UnlockScrollController.IsStopped() + if ! UnlockScrollController.Start() + RegisterForSingleUpdate(0.1) + endif + elseif UnlockScrollController.IsStopping() + RegisterForSingleUpdate(0.01) + elseif UnlockScrollController.IsStarting() + RegisterForSingleUpdate(0.01) + endif +EndEvent + +state Equipped + event OnPlayerLoadGame() + if ! UnlockScrollEquipped() + GotoState("") + endif + endevent + + event OnBeginState() + ObjectReference actorRef = GetReference() + RegisterForAnimationEvent(actorRef, "MRh_SpellFire_Event") + RegisterForAnimationEvent(actorRef, "MLh_SpellFire_Event") + endevent + + event OnEndState() + ObjectReference actorRef = GetReference() + UnregisterForAnimationEvent(actorRef, "MRh_SpellFire_Event") + UnregisterForAnimationEvent(actorRef, "MLh_SpellFire_Event") + endevent + + Event OnUpdate() + if UnlockScrollController.IsStopped() + if ! UnlockScrollController.Start() + RegisterForSingleUpdate(0.1) + endif + elseif UnlockScrollController.IsStopping() + RegisterForSingleUpdate(0.01) + elseif UnlockScrollController.IsStarting() + RegisterForSingleUpdate(0.01) + endif + EndEvent + + Event OnObjectEquipped(Form akBaseObject, ObjectReference akReference) + ; do nothing + endEvent + + Event OnObjectUnequipped(Form akBaseObject, ObjectReference akReference) + if ! UnlockScrollEquipped() + GotoState("") + endif + endEvent + + Event OnAnimationEvent(ObjectReference akSource, string asEventName) + ObjectReference crosshairRef = Game.GetCurrentCrosshairRef() + + if crosshairRef + Form baseObject = crosshairRef.GetBaseObject() + if baseObject as Container || baseObject as Door + ScrollTarget.ForceRefTo(crosshairRef) + UnlockScrollController.Stop() + return + endif + endif + + UnlockScrollController.Stop() + RegisterForSingleUpdate(0.01) + ScrollTarget.Clear() + endEvent +endstate + +Quest Property UnlockScrollController Auto +FormList Property _00E_UnlockScrolls Auto +ReferenceAlias Property ScrollTarget Auto diff --git a/source/scripts/_00e_chestanddoorlockscript.psc b/source/scripts/_00e_chestanddoorlockscript.psc deleted file mode 100644 index 0e0d8920..00000000 --- a/source/scripts/_00e_chestanddoorlockscript.psc +++ /dev/null @@ -1,143 +0,0 @@ -Scriptname _00E_ChestAndDoorLockScript extends ObjectReference - -Event OnLoad() - BlockActivation(True) -EndEvent - -Int Property LOCK_LEVEL_NOVICE = 1 AutoReadOnly -Int Property LOCK_LEVEL_APPRENTICE = 25 AutoReadOnly -Int Property LOCK_LEVEL_ADEPT = 50 AutoReadOnly -Int Property LOCK_LEVEL_EXPERT = 75 AutoReadOnly -Int Property LOCK_LEVEL_MASTER = 254 AutoReadOnly - -Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked) - - If akAggressor != PlayerREF || IsLocked() == False - Return - EndIf - - Int projectileLevel = 0 - - If akProjectile == _00E_UnlockProjectile_Novice - projectileLevel = LOCK_LEVEL_NOVICE - ElseIf akProjectile == _00E_UnlockProjectile_Apprentice - projectileLevel = LOCK_LEVEL_APPRENTICE - ElseIf akProjectile == _00E_UnlockProjectile_Adept - projectileLevel = LOCK_LEVEL_ADEPT - ElseIf akProjectile == _00E_UnlockProjectile_Expert - projectileLevel = LOCK_LEVEL_EXPERT - ElseIf akProjectile == _00E_UnlockProjectile_Master - projectileLevel = LOCK_LEVEL_MASTER - ElseIf akSource - Formlist unlockSpells = Game.GetFormFromFile(0x00044EE4, "Skyrim.esm") as Formlist - If unlockSpells.HasForm(akSource) - If akSource == unlockSpells.GetAt(0) as Explosion - projectileLevel = LOCK_LEVEL_APPRENTICE - ElseIf akSource == unlockSpells.GetAt(1) as Explosion - projectileLevel = LOCK_LEVEL_ADEPT - ElseIf akSource == unlockSpells.GetAt(2) as Explosion - projectileLevel = LOCK_LEVEL_EXPERT - ElseIf akSource == unlockSpells.GetAt(3) as Explosion - projectileLevel = LOCK_LEVEL_MASTER - EndIf - EndIf - EndIf - - If projectileLevel > 0 - Int lockLevel = self.GetLockLevel() - If lockLevel > LOCK_LEVEL_MASTER - _00E_sDoorLocked.Show() - WPNTG06ControlStaffShootFailM.Play(Self) - ElseIf projectileLevel >= lockLevel - ; Unlock - Self.Lock(False) - _00E_UILockpickingUnlockM.Play(Self) - _00E_Ability_Antimagic_FXSShader.Play(Self) - self.PlaceAtMe(_00E_UnlockLockExplosion, 1) - EndIf - EndIf - -EndEvent - -Bool Function _IsInSuntemple() - If _00E_SuntempleLocations - Location curLoc = GetCurrentLocation() - If curLoc && _00E_SuntempleLocations.HasForm(curLoc) - Return True - EndIf - EndIf - - Return False -EndFunction - -Bool Function _IsInSiege() - Quest qSiegeQuest = Game.GetForm(0x0002EBAD) as Quest - Int siegeStage = qSiegeQuest.GetCurrentStageID() - Return (siegeStage >= 5 && siegeStage <= 125) -EndFunction - -Bool Function _PlayerHasKey() - Key myKey = GetKey() - Return (myKey && PlayerREF.GetItemCount(myKey) > 0) -EndFunction - -Event OnActivate(ObjectReference akActionRef) - - If akActionRef == PlayerREF - If _IsInSiege() && (Self.GetBaseObject().GetType() != 29 || _IsInSuntemple() == False) - _00E_sDoorLocked.Show() - ElseIf IsActivationBlocked() - If IsLocked() && _PlayerHasKey() == False - Bool bPlayerCanActivate = False - Int iLockLevel = GetLockLevel() - If iLockLevel <= LOCK_LEVEL_APPRENTICE - bPlayerCanActivate = True - ElseIf iLockLevel <= LOCK_LEVEL_ADEPT - bPlayerCanActivate = (PlayerREF.HasPerk(_00E_Class_Trickery_P04b_) || PlayerREF.GetActorValue("Lockpicking") >= 25) - ElseIf iLockLevel <= LOCK_LEVEL_EXPERT - bPlayerCanActivate = (PlayerREF.HasPerk(_00E_Class_Trickery_P07_) || PlayerREF.GetActorValue("Lockpicking") >= 50) - ElseIf iLockLevel <= LOCK_LEVEL_MASTER - bPlayerCanActivate = (PlayerREF.HasPerk(_00E_Class_Trickery_P10_) || PlayerREF.GetActorValue("Lockpicking") >= 75) - Else - bPlayerCanActivate = True - EndIf - - If bPlayerCanActivate - Activate(PlayerREF, True) - Else - _00E_Game_UnlockNeedsSkill.Show() - EndIf - Else - BlockActivation(False) - Activate(PlayerREF, True) - EndIf - EndIf - Else - Activate(akActionRef, True) - EndIf - -EndEvent - -Formlist Property _00E_SuntempleLocations Auto - -Projectile Property _00E_UnlockProjectile_Novice Auto -Projectile Property _00E_UnlockProjectile_Apprentice Auto -Projectile Property _00E_UnlockProjectile_Adept Auto -Projectile Property _00E_UnlockProjectile_Expert Auto -Projectile Property _00E_UnlockProjectile_Master Auto - -Message Property _00E_sDoorLocked Auto - -Perk Property _00E_Class_Trickery_P04b_ Auto ; Unlock adept locks perk -Perk Property _00E_Class_Trickery_P07_ Auto ; Unlock expert locks -Perk Property _00E_Class_Trickery_P10_ Auto ; Unlock master locks - -Sound Property _00E_UILockpickingUnlockM Auto -Sound Property WPNTG06ControlStaffShootFailM Auto - -EffectShader Property _00E_Ability_Antimagic_FXSShader Auto -Explosion Property _00E_UnlockLockExplosion Auto - -Actor Property PlayerREF Auto - -Message Property _00E_Game_UnlockNeedsSkill Auto \ No newline at end of file