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 | ||
** | ** 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> | ||