Scriptname FXCameraAttachScript extends ObjectReference {Attaches a camera attach fx based on the property set in the reference. Also has a slot to fade in an image space at the same time.} ;=============================================== import debug ; import debug.psc for acces to trace() import game ; game.psc for access to getPlayer() import utility ; utility.psc for access to wait() import sound ; sound.psc for access to play() VisualEffect Property CameraAttachFX Auto {Particle art to attach to camera, fog by default} VisualEffect Property CameraAttachFX2 Auto {2nd Particle art to attach to camera, not used by default} sound property LoopSound auto {specify sound fx to play, set on reference, none by default} ;ImageSpaceModifier Property CrossfadeableISM Auto ;{specify crossfaded imagespace to play, set on reference, none by default} int instanceID ;used to store sound ref int Property timeLimit = 180 Auto ;=============================================== EVENT ONTRIGGERENTER(ObjectReference akActionRef) IF (akActionRef == getPlayer() as ObjectReference);new if(CameraAttachFX) ; Block added by USKP 1.2.6 because apparently not everything is using the default values. CameraAttachFX.Play(akActionRef, timeLimit) ; ; debug.trace("Triggered by player") EndIf if (CameraAttachFX2) CameraAttachFX2.Play(akActionRef, timeLimit) endif ;if (CrossfadeableISM) ; CrossfadeableISM.ApplyCrossFade(2) ;endif if (LoopSound) instanceID = LoopSound.Play(Self) endif ;wait (27) endif ;new ;goToState ("reset") endEvent EVENT OnTriggerLeave(ObjectReference akActionRef) IF (akActionRef == getPlayer() as ObjectReference) if(CameraAttachFX) ; Block added by USKP 1.2.1 because apparently not everything is using the default values. CameraAttachFX.Stop(akActionRef) EndIf if (CameraAttachFX2) CameraAttachFX2.Stop(akActionRef) endif ;if (CrossfadeableISM) ; ImageSpaceModifier.RemoveCrossFade(3) ;endif ;USKP 2.0.2 - Added check for invalid sound instance. if (LoopSound && instanceID != 0) StopInstance(instanceID) endif goToState ("waiting") ENDIF ENDEVENT EVENT OnUnLoad() if(CameraAttachFX) ; Block added by USKP 1.2.1 because apparently not everything is using the default values. CameraAttachFX.Stop(GetPlayer()) EndIf if (CameraAttachFX2) CameraAttachFX2.Stop(GetPlayer()) endif ;if (CrossfadeableISM) ; ImageSpaceModifier.RemoveCrossFade(3) ;endif ;USKP 2.0.2 - Added check for invalid sound instance. if (LoopSound && instanceID != 0) StopInstance(instanceID) endif goToState ("waiting") ENDEVENT