4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

68 lines
1.8 KiB

Scriptname _00E_TorchControl Hidden
Int Function _GetHandSlotEx(int iHand) global
; By default, iHand = 0 for left hand, 1 for right hand
; In SKSE's "Equip Ex" functions though: iHand = 2 for left hand, 1 for right hand
Return 2 - iHand
EndFunction
Bool Function UnequipTorches(Form[] equippedTorches) global
Actor PlayerREF = Game.GetForm(0x14) as Actor
if ! SKSE.GetVersion()
if PlayerREF.GetEquippedItemType(0) == 11 || PlayerREF.GetEquippedItemType(1) == 11
Form torchDefault = Game.GetForm(0x1D4EC)
equippedTorches[0] = torchDefault
PlayerREF.UnequipItem(torchDefault as Light, false, true)
Utility.Wait(0.1)
return true
endif
return false
endif
Bool unequipping = False
Int iHand = 0
While iHand < equippedTorches.Length
If PlayerREF.GetEquippedItemType(iHand) == 11 ; A torch is in the hand?
Form torch = PlayerREF.GetEquippedObject(iHand)
If torch
PlayerREF.UnequipItemEx(torch, _GetHandSlotEx(iHand))
equippedTorches[iHand] = torch
unequipping = True
EndIf
EndIf
iHand += 1
EndWhile
Return unequipping
EndFunction
Function ReequipTorches(Form[] equippedTorches) global
Actor PlayerREF = Game.GetForm(0x14) as Actor
if ! SKSE.GetVersion()
if equippedTorches[0] || equippedTorches[1]
equippedTorches[0] = None
equippedTorches[1] = None
if PlayerREF.GetItemCount(Game.GetForm(0x1D4EC)) > 0
Debug.SendAnimationEvent(PlayerREF, "equipTorch")
endif
endif
return
endif
Int iHand = 0
While iHand < equippedTorches.Length
Form torch = equippedTorches[iHand]
If torch
If PlayerREF.GetItemCount(torch) > 0
PlayerREF.EquipItemEx(torch, _GetHandSlotEx(iHand), False, True)
EndIf
; "Forget" about the form to not keep it persistent if equippedTorches is a script's property or variable
equippedTorches[iHand] = None
EndIf
iHand += 1
EndWhile
EndFunction