Jump to content

Recommended Posts

Posted

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?

Posted
  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)

 

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...