Scriptname Trigger extends ObjectReference { base class for a trigger that watches for a target to enter and exit fireTriggerEvent function is called whenever the target enters or leaves the trigger Derive from this script, and override fireTriggerEvent function for whatever you need -- you can use IsTargetInTrigger to check if the target has just entered or left } bool bTargetInTrigger = false conditional objectReference property targetRef auto { if None (default), watching for player otherwise, watching for this reference } Event onLoad() if targetRef == None targetRef = (Game.GetForm(0x14) as Actor) endif endEvent Event onTriggerEnter(objectReference triggerRef) if(triggerRef == targetRef) ;target has entered the trigger SetTargetInTrigger(true) ; debug.trace(self + " target has entered the trigger") endif endEvent Event onTriggerLeave(objectReference triggerRef) if (triggerRef == targetRef) ;target has left the trigger SetTargetInTrigger(false) ; debug.trace(self + " target has left the trigger") endif endEvent bool function IsTargetInTrigger() return bTargetInTrigger endFunction ; PRIVATE function - do not call from outside this script function SetTargetInTrigger(bool isInTrigger) bTargetInTrigger = isInTrigger fireTriggerEvent() endFunction function fireTriggerEvent() ; do something when target enters/leaves trigger endFunction