78 lines
2.6 KiB
Plaintext
78 lines
2.6 KiB
Plaintext
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
|