scriptName defaultActivateToggleLinkedRefOnce extends ObjectReference
{
- Toggles the state of the linked ref when this object is activated.
}

ObjectReference myLinkedRef
Keyword property linkKeyword Auto
bool property requirePlayer = False Auto
bool property requireNOTPlayer = False Auto
bool property fade = False Auto
bool property reset = True Auto

Event OnReset()
	;USKP 2.0.4 - This should only return to pre-activation if the reference should be reset. Otherwise don't, because it makes messes of things.
	if(reset)
		gotoState("PreActivation")
	Else
		gotoState("DoNothing")
	EndIf
EndEvent

Auto State PreActivation
	Event OnActivate(ObjectReference triggerRef)
		if ((!requirePlayer && !requireNOTPlayer) || (requirePlayer && triggerRef == (Game.GetForm(0x14) as Actor)) || (requireNOTPlayer && triggerRef != (Game.GetForm(0x14) as Actor)))
			myLinkedRef = GetLinkedRef(linkKeyword) as ObjectReference
			if (myLinkedRef.IsEnabled())
				myLinkedRef.Disable(fade)
			Else
				myLinkedRef.Enable(fade)
			EndIf
			if (reset)
; 				Debug.Trace("Now awaiting reset.")
				gotoState("PostActivation")
			Else
				gotoState("DoNothing")
			EndIf
		EndIf
	EndEvent
EndState

STATE PostActivation
EndState

STATE DoNothing
	;Do nothing
EndState