FYI The title should of been "follower" not "npc" but same difference I guess.
Bool bDisallowTorchLight Property Torch01 AutoLight Property Torch01Shadow AutoEvent OnUpdate() If bDisallowTorch != IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch UnequipItem(Torch01, True) UnequipItem(Torch01Shadow, True) Else UnequipItem(Torch01, False) UnequipItem(Torch01Shadow, False) EndIf EndIfEndEvent...should work.
Bool bDisallowTorchLight Property Torch01 AutoLight Property Torch01Shadow AutoEvent OnUpdate() If bDisallowTorch != IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch UnequipItem(Torch01, True) UnequipItem(Torch01Shadow, True) Else UnequipItem(Torch01, False) UnequipItem(Torch01Shadow, False) EndIf EndIfEndEvent...should work.
Scriptname ActorDisallowTorchWhileSneaking extends ActorBool bDisallowTorchLight Property Torch01 AutoLight Property Torch01Shadow AutoEvent OnInit() RegisterForUpdate(10)EndEventEvent OnUpdate() If bDisallowTorch != IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch UnequipItem(Torch01, True) UnequipItem(Torch01Shadow, True) Debug.Notification("Unequip") Else UnequipItem(Torch01, False) UnequipItem(Torch01Shadow, False) Debug.Notification("Equip") EndIf EndIfEndEventScriptname ActorDisallowTorchWhileSneaking extends ActorBool bDisallowTorchLight Property Torch01 AutoLight Property Torch01Shadow AutoEvent OnInit() RegisterForUpdate(10)EndEventEvent OnUpdate() If bDisallowTorch != IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch UnequipItem(Torch01, True) UnequipItem(Torch01Shadow, True) RemoveItem(Torch01) Else UnequipItem(Torch01, False) UnequipItem(Torch01Shadow, False) AddItem(Torch01) EndIf EndIfEndEvent
ScriptName FollowerAliasDisallowTorchWhileSneaking extends ReferenceAliasBool bDisallowTorchInt iTorchCountFormList Property TorchFLST Auto ; Torch01Shadow & Torch01ObjectReference Property TorchContainerREF AutoEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference) If TorchFLST.HasForm(akBaseObject) RegisterForSingleUpdate(0.01) EndIfEndEventEvent OnUpdate() If bDisallowTorch != GetActorReference().IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch iTorchCount = GetActorReference().GetItemCount(TorchFLST) GetActorReference().RemoveItem(TorchFLST, iTorchCount, True, TorchContainerREF) RegisterForUpdate(3) Else TorchContainerREF.RemoveItem(TorchFLST, iTorchCount, True, GetActorReference()) UnregisterForUpdate() EndIf EndIfEndEventEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) If bDisallowTorch If TorchFLST.HasForm(akBaseObject) GetActorReference().RemoveItem(akBaseObject, aiItemCount, True, TorchContainerREF) iTorchCount += aiItemCount EndIf EndIfEndEventThat could be glued to multiple aliases all using the same TorchContainerREF and leave the base forms untouched.


ScriptName FollowerAliasDisallowTorchWhileSneaking extends ReferenceAliasBool bDisallowTorchInt iTorchCountFormList Property TorchFLST AutoFormList Property Torch01Shadow AutoFormList Property Torch01 AutoObjectReference Property TorchContainerREF AutoEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference) If TorchFLST.HasForm(akBaseObject) RegisterForSingleUpdate(0.01) EndIfEndEventEvent OnUpdate() If bDisallowTorch != GetActorReference().IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch iTorchCount = GetActorReference().GetItemCount(TorchFLST) GetActorReference().RemoveItem(TorchFLST, iTorchCount, True, TorchContainerREF) RegisterForUpdate(3) Else TorchContainerREF.RemoveItem(TorchFLST, iTorchCount, True, GetActorReference()) UnregisterForUpdate() EndIf EndIfEndEventEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) If bDisallowTorch If TorchFLST.HasForm(akBaseObject) GetActorReference().RemoveItem(akBaseObject, aiItemCount, True, TorchContainerREF) iTorchCount += aiItemCount EndIf EndIfEndEvent

ScriptName FollowerAliasDisallowTorchWhileSneaking extends ReferenceAliasBool bDisallowTorchInt iTorchCountFormList Property TorchFLST AutoObjectReference Property TorchContainerREF AutoEvent OnObjectEquipped(Form akBaseObject, ObjectReference akReference) If TorchFLST.HasForm(akBaseObject) RegisterForSingleUpdate(0.01) EndIfEndEventEvent OnUpdate() If bDisallowTorch != GetActorReference().IsSneaking() bDisallowTorch = !bDisallowTorch If bDisallowTorch iTorchCount = GetActorReference().GetItemCount(TorchFLST) GetActorReference().RemoveItem(TorchFLST, iTorchCount, True, TorchContainerREF) RegisterForUpdate(3) Else TorchContainerREF.RemoveItem(TorchFLST, iTorchCount, True, GetActorReference()) UnregisterForUpdate() EndIf EndIfEndEventEvent OnItemAdded(Form akBaseItem, Int aiItemCount, ObjectReference akItemReference, ObjectReference akSourceContainer) If bDisallowTorch If TorchFLST.HasForm(akBaseItem As Form) GetActorReference().RemoveItem(akBaseItem, aiItemCount, True, TorchContainerREF) iTorchCount += aiItemCount EndIf EndIfEndEvent