Slow Motion Script?

Post » Wed Jun 20, 2012 8:08 am

I am finding it rather hard to make a slow time spell/shout/enchantment, i have downloaded mods that do this and tried to copy what they have done, and have had no success, the mods i have downloaded don't seem to come with any scripts so i am assuming it can be all done in the creation kit.

I pretty much copied the shout Slow time and changed it to what i want it to do, i didn't change any of its scripts only the visual effects and the magnitude and nothing happens.

What am i doing wrong?
User avatar
jeremey wisor
 
Posts: 3458
Joined: Mon Oct 22, 2007 5:30 pm

Post » Wed Jun 20, 2012 7:03 pm

Your right, there is no script. You have a 'Magic Effect' and an 'enchatment'. The enchantment points to your magic effect.

I suspect you have implemented the effect incorrectly. You never said 'what' you created, a spell, an object effect, a shout, changed the vanilla shout, what?
User avatar
Eric Hayes
 
Posts: 3392
Joined: Mon Oct 29, 2007 1:57 am

Post » Wed Jun 20, 2012 12:20 pm

Well what i was implying was that i tried all three, and gave up, but i wanted to try harder with the shout due to the normal slow time shout... still no luck though.
I shall keep trying with the shout and see what happens.
User avatar
Maeva
 
Posts: 3349
Joined: Mon Mar 26, 2007 11:27 pm

Post » Wed Jun 20, 2012 7:52 pm

I have found out what i did wrong with the shout, although i put it as a constant effect it still wanted a duration... also while effect is in place you can not use a shout, so that pretty much defeats the purpose of what i wanted to make.
User avatar
Joanne
 
Posts: 3357
Joined: Fri Oct 27, 2006 1:25 pm

Post » Wed Jun 20, 2012 1:11 pm

This sounds like a VERY important bit of informational for understanding the spell effects. Can you please elaborate on this?

I also found that some spells will not work (with the CAST command) if you do not use SELF as the Delivery even if you are using the command CAST and making one actor cast on the other actor.

The hidden code in the game for all this must be a nightmare for the DEV, sometimes I wonder if I may be lucky I do not know enough (I am not a programmer) to NOT try things like this I.E to know that it should not work and thus do not try it at all.


I have found out what i did wrong with the shout, although i put it as a constant effect it still wanted a duration... also while effect is in place you can not use a shout, so that pretty much defeats the purpose of what i wanted to make.
User avatar
Marta Wolko
 
Posts: 3383
Joined: Mon Aug 28, 2006 6:51 am

Post » Wed Jun 20, 2012 11:35 am

The slow time effect only works with durations. It does not work as a constant effect. To work around that behavior create one spell that uses a VERY long duration and the slow time MGEF, and then use another spell that has a duration which applies and removes the secondary spell as needed.
User avatar
Jessica Phoenix
 
Posts: 3420
Joined: Sat Jun 24, 2006 8:49 am

Post » Wed Jun 20, 2012 9:56 am

So you mean something like this?

Spoiler
Scriptname DummyAbilityScript extends ActiveMagicEffectSpell property SlowTimeSpell autoMagicEffect property SlowTimeEffect autoEvent OnEffectStart(Actor akTarget, Actor akCaster)    SlowTimeSpell.Cast(akActor)    RegisterForSingleUpdate(60)EndEventEvent OnUpdate()    SlowTimeSpell.Cast(akActor)    RegisterForSingleUpdate(60)EndEventEvent OnEffectFinish(Actor akTarget, Actor akCaster)    SlowTimeEffect.Dispel()    UnregisterForUpdate()EndEvent

The wiki doesn't give enough info on http://www.creationkit.com/Dispel_-_ActiveMagicEffect, so I don't know if that works. How do you specify who to dispel the magic effect from?
User avatar
Claire Lynham
 
Posts: 3432
Joined: Mon Feb 12, 2007 9:42 am

Post » Wed Jun 20, 2012 9:09 am

Let me find my scripts and I'll get you a realworld example...

Oh, and use actor.DispelSpell to dispell a spell on a specific actor.

So I have one spell called mm_BeluaVampiresSpeedBase and it uses an effect which is just a script that applies varying levels of speed/slow time based on my vampire level:
Spoiler

Scriptname mm_BeluaVampireSlowTime extends ActiveMagicEffectGlobalVariable Property mm_BeluaVampiresSpeedTransitionGlobal autoGlobalVariable Property BeluaGlobalCurrentVampireLevel autoSpell Property mm_BeluaVampiresSpeedRisen AutoSpell Property mm_BeluaVampiresSpeedMaster AutoSpell Property mm_BeluaVampiresSpeedProgenitor AutoSpell Property mm_BeluaVampiresSpeedSire AutoEvent OnEffectStart(Actor target, Actor caster)int vampirelevel = BeluaGlobalCurrentVampireLevel.GetValue() as intif mm_BeluaVampiresSpeedTransitionGlobal.GetValue() == 0.0  mm_BeluaVampiresSpeedTransitionGlobal.setValue(1.0)  if vampirelevel == 2   mm_BeluaVampiresSpeedRisen.Cast(caster)  elseif vampirelevel ==3   mm_BeluaVampiresSpeedMaster.Cast(caster)  elseif vampirelevel ==4   mm_BeluaVampiresSpeedProgenitor.Cast(caster)  elseif vampirelevel == 5   mm_BeluaVampiresSpeedSire.Cast(caster)  EndIf   RegisterForUpdate(1.0)elseif mm_BeluaVampiresSpeedTransitionGlobal.GetValue() == 1.0  mm_BeluaVampiresSpeedTransitionGlobal.SetValue(0.0)  DispellAll(caster)else  mm_BeluaVampiresSpeedTransitionGlobal.SetValue(0.0)  DispellAll(caster)endifEndEventFunction DispellAll(Actor caster)  caster.DispelSpell(mm_BeluaVampiresSpeedRisen)  caster.DispelSpell(mm_BeluaVampiresSpeedMaster)  caster.DispelSpell(mm_BeluaVampiresSpeedProgenitor)  caster.DispelSpell(mm_BeluaVampiresSpeedSire)EndFunction
As you can see I have secondary spells for four different levels of vampires. These spells are all duration based Fire and Forget and use SlowTime Archetype in the MGEF. They also have a script attached (because I drain stamina instead of magicka using this) and it looks like this:
Spoiler

Scriptname mm_BeluaVampiresSpeedDMGStamScript extends ActiveMagicEffectImageSpaceModifier property IntroFX auto{IsMod applied at the start of the spell effect}ImageSpaceModifier property StaticFX auto{IsMod applied during all of the spell effect}ImageSpaceModifier property OutroFX auto{IsMod applied at the end of the spell effect}Float property fStaticDelay auto{Time to wait for the static to start}Spell Property mm_BeluaVampiresSpeedRisen AutoSpell Property mm_BeluaVampiresSpeedMaster AutoSpell Property mm_BeluaVampiresSpeedProgenitor AutoSpell Property mm_BeluaVampiresSpeedSire AutoActor Playerbool bIsFinishing = falseEvent OnEffectStart(Actor target, Actor caster)Player = targetIf IntroFX != None    ;Do we have an Intro?  introFX.apply()	   ; apply isMod at full strengthEndIfUtility.wait (fStaticDelay)if bIsFinishing == false  If StaticFX != None    ;Do we have an Static?   StaticFX.apply()	   ; apply isMod at full strength  endifEndIfRegisterForSingleUpdate(1)EndEventEvent OnUpdate()Player.DamageActorValue("Stamina",5)if(Player.GetActorValue("Stamina") <= 0)  Player.DispelSpell(mm_BeluaVampiresSpeedRisen)  Player.DispelSpell(mm_BeluaVampiresSpeedMaster)  Player.DispelSpell(mm_BeluaVampiresSpeedProgenitor)  Player.DispelSpell(mm_BeluaVampiresSpeedSire)endifRegisterForSingleUpdate(1.0)EndEventEvent OnEffectFinish(Actor target, Actor caster)UnregisterForUpdate()bIsFinishing = trueIf OutroFX != None	 ;Do we have an Outro?  OutroFX.apply()	  ; apply isMod at full strengthEndIfif StaticFX != None  StaticFX.remove()endifEndEvent
Hope that clarifies it!
User avatar
Emily abigail Villarreal
 
Posts: 3433
Joined: Mon Aug 27, 2007 9:38 am


Return to V - Skyrim