Difference between revisions of "GetLockLevel - ObjectReference"

fixed incorrect information and added a useful helper function
imported>RJHelms84
m (Added lock level values for convenience.)
imported>PlausibleSarge
(fixed incorrect information and added a useful helper function)
Line 4: Line 4:


==Description==
==Description==
Returns the level of the lock attached to this object. If there is no lock, it will return 0 - very easy.
Returns the level of the lock attached to this object. This number can be anything from 0-255, with different values representing lock difficulties (Novice-Expert). If there is no lock, it will return 0 - very easy.
Lock level values are:
Lock level values are:
** 1 = Novice
** 0-1 = Novice
** 25 = Apprentice
** 2-25 = Apprentice
** 50 = Adept
** 26-50 = Adept
** 75 = Expert
** 51-75 = Expert
** 100 = Master
** 76-254 = Master
** 255 = Requires Key
** 255 = Requires Key


Line 30: Line 30:
   Debug.Trace("Lock is very easy")
   Debug.Trace("Lock is very easy")
endIf
endIf
</source>
This function fetches the lock level for a given lock in a much more robust way,
making scripting locked objects significantly easier.
<source lang="papyrus">
;sanitizes lock level
;0 = unlocked, 1 = novice, 2 = apprentice, 3 = adept, 4 = expert, 5 = master, 6 = key
int function SanitizeLockLevel(ObjectReference lock)
int level = lock.GetLockLevel()
if !lock.IsLocked()
return 0
if level == 0 || level == 1 ;novice
return 1
elseif level >= 2 && level <= 25 ;Apprentice
return 2
elseif level >= 26 && level <= 50 ;Adept
return 3
elseif level >= 51 && level <= 75 ;Expert
return 4
elseif level >= 76 && level <= 254 ;Master
return 5
else
return 6
endif
endfunction
</source>
</source>