gpp9999 Posted June 8 Posted June 8 Hi, this is a pretty basic question. I'm looking at the source for Skyrim SE's FXSovengardeSCRIPT which looks like this: Scriptname FXSovengardeSCRIPT extends ActiveMagicEffect {Puts the fx on the heavenly people of sovengarde} VisualEffect Property FXSovengardeGlowEffect Auto EffectShader Property SovengardeFXS Auto Actor selfRef ObjectReference myGlow EVENT OnEffectStart(Actor Target, Actor Caster) selfRef = caster myGlow = FXSovengardeGlowEffect.play(selfRef, -1) SovengardeFXS.Play(selfRef) EndEvent I'm not too familiar with visual effects / shaders. Can someone explain the difference between a VisualEffect and an EffectShader? I notice that this script starts the shader/visual effect but doesn't stop it. I'm assuming that's because this for NPCs who will always have the effect since they'll never leave Sovnegarde. If I wanted to apply the glow effect to the player character temporarily, I assume I would need to to something to stop the effect / shader when done?
PeterMartyr Posted June 9 Posted June 9 On 6/8/2025 at 4:42 PM, gpp9999 said: Can someone explain the difference between a VisualEffect and an EffectShader? Expand Basically in gaming without going to much detail.. Shader Effects are like lighting and shadows, Visual Effects are like explosion, embers and smoke. BTW next time you have a Question that is 100% gaming and nothing to do with Skyrim, it is faster to Google It than asking here On 6/8/2025 at 4:42 PM, gpp9999 said: I assume I would need to to something to stop the effect / shader when done? Expand Yes and No, but with a temporary magic effect I would set both FX effects to infinite (see below) with a spell duration to dispel it. Also I would not duplicate that Sovengarde magic effect either, think of a spell that player casts at themselves, with a duration, an example would be Invisible, night vision, etc, then modify that ScriptName RenameThisOK Extends MagicEffect VisualEffect Property FXSovengardeGlowEffect Auto EffectShader Property SovengardeFXS Auto Event OnEffectStart(Actor Target, Actor Caster) FXSovengardeGlowEffect.Play(Caster) SovengardeFXS.Play(Caster) EndEvent Event OnEffectFinish(Actor Target, Actor Caster) FXSovengardeGlowEffect.Stop(Caster) SovengardeFXS.Stop(Caster) EndEvent pretty simple, is it not? *** PLUS... look at the source code, recall I said set the FX effect duration to infinite, or in my code, I left it as it default, which is infinite for both! Scriptname VisualEffect extends Form Hidden ; Plays this visual effect on the specified object, for a certain length of time (negative for infinite) and possibly facing another object Function Play(ObjectReference akObject, float afTime = -1.0, ObjectReference akFacingObject = None) native ; Stops this visual effect from playing in the specified object Function Stop(ObjectReference akObject) native Scriptname EffectShader extends Form Hidden ; Starts playing this effect shader on the specified object for the specified length of time in seconds. Negative values indiciate "infinite" Function Play(ObjectReference akObject, float afDuration = -1.0) native ; Stops playing this effect shader on the specified object Function Stop(ObjectReference akObject) native Since we can set the FX Effect Duration, we could do it without On Effect Finish or even in a Quest Script, however I am not recommending it, for your User Case. Use a Magic Effect with On Effect Start / Finish, and a duration, where the Spell Caster is both the Actor Caster and the Actor Target in the code I have use it Various Scripts, like; Follower Teleport to me and on appearing, adding a 3-5 seconds effect so they do not just pop in or just fade in! But fade in with style, for just a few seconds.. How you use it depends on what you want. effect.play(follower, 5)
PeterMartyr Posted June 9 Posted June 9 OFC you will need to cast it with a script.. if not in a spell tome, or something the player cast learn!!
Recommended Posts