Scriptname WeaponRackTriggerSCRIPT extends ObjectReference Hidden 

import game
import debug
import utility

Keyword Property WRackActivator Auto

;The activator we must disable if there is already something in this trigger
ObjectReference Property ActivatorRef Auto Hidden

;Reference that is currently in the trigger
ObjectReference Property RefCurrentlyInTrig Auto Hidden

;1 = if something is in this trigger, 0 = empty
Bool Property HasBeenTriggered Auto Hidden

Int Property numInTrig Auto Hidden

Bool Property AlreadyInit Auto Hidden

Bool Property IgnoreArmor = FALSE Auto


EVENT OnReset()
	AlreadyInit = FALSE
	;Trace("DARYL - " + self + " running OnReset() and AlreadyInit = " + AlreadyInit)
endEVENT

EVENT OnLoad()
	;Trace("DARYL - " + self + " running OnLoad() and AlreadyInit = " + AlreadyInit)
	if (AlreadyInit == FALSE) && (self.IsEnabled())
		ActivatorRef = GetLinkedRef(WRackActivator)
		if (ActivatorRef)
			ActivatorRef.Enable()
		endif
		ActivatorRef = NONE
		AlreadyInit = TRUE
		;Trace("DARYL - " + self + " The Activator Ref is " + ActivatorRef)
	else
		;Do nothing
	endif
	;Trace("DARYL - " + self + " finishing OnLoad() and AlreadyInit = " + AlreadyInit)
endEVENT

;EVENT OnCellLoad()
;	;Trace("DARYL - " + self + " running OnCellLoad() and AlreadyInit = " + AlreadyInit)
;	if (AlreadyInit == FALSE) && (self.IsEnabled())
;		ActivatorRef = GetLinkedRef(WRackActivator)
;		AlreadyInit = TRUE
;		;Trace("DARYL - " + self + " The Activator Ref is " + ActivatorRef)
;	else
;		;Do nothing
;	endif
;	;Trace("DARYL - " + self + " finishing OnCellLoad() and AlreadyInit = " + AlreadyInit)
;endEVENT


auto STATE WaitingForReference
	EVENT onTriggerEnter(objectReference triggerRef)
		;Trace("DARYL - " + self + " Just OnTriggerEntered by " + triggerref)
		
		if (IgnoreArmor == TRUE) && (triggerRef.GetBaseObject() as Armor)
			;Trace("DARYL - " + self + " I'm ignoring armor, and this is armor, so I'm doing nothing.")
			;Do Nothing
		else
			;Trace("DARYL - " + self + " I'm updating as normal")
			;numInTrig = (numInTrig + 1)
			HasBeenTriggered = TRUE
			ActivatorRef = GetLinkedRef(WRackActivator)
			if ActivatorRef
				ActivatorRef.Disable()
			endif
			ActivatorRef = NONE
		endif
			
		
	endEVENT
	EVENT OnTriggerLeave(objectReference triggerRef)
		;Trace("DARYL - " + self + " A References has EXITED, refs in this trigger now = " + numInTrig)
		
		if (IgnoreArmor == TRUE) && (triggerRef.GetBaseObject() as Armor)
			;Trace("DARYL - " + self + " I'm ignoring armor, and this is armor, so I'm doing nothing.")
			;Do Nothing
		else
			;Trace("DARYL - " + self + " I'm updating as normal")
			;numInTrig = (numInTrig - 1)
		endif

		if (GetTriggerObjectCount() == 0)
			ActivatorRef = GetLinkedRef(WRackActivator)

			HasBeenTriggered = FALSE
			ActivatorRef.Enable()

			ActivatorRef = NONE

		endif
	endEVENT
endSTATE