SpeedMult doesn't work?

Post » Tue Jun 19, 2012 3:01 am

I've been adding custom Movement data to my race and it doesn't make my character faster.

I've also tried creating a spell that uses the SpeedMult MagicEffect but it also does nothing.


I'm trying to accomplish either or of the following.

Having a lesser power or spell that mimics Whirlwind Sprint

OR

A way to simply make my character race faster while sprinting.

How can I achieve either or?
User avatar
Juan Cerda
 
Posts: 3426
Joined: Thu Jul 12, 2007 8:49 pm

Post » Mon Jun 18, 2012 9:54 pm

Magic Effect;

ArchType; Peak Value Modifier
Casting Type; Fire and Forget
Delivery; Self
Magic Skill: Restoration
Associated Item 1: Speed Mult

Flags;
Recover
No Area

Menu Object Display; Magic Hat Marker

The Spell;

Casting Type AND Delivery must match the types chosen in Magic Effect(in this cast Fire and Forget; Self)

In the effect field, you can choose the magic effect. Set the magnitude/duration, and you're set.


The above is how I set up mine. Visual effects and what not is up to you.
User avatar
Lucky Boy
 
Posts: 3378
Joined: Wed Jun 06, 2007 6:26 pm

Post » Tue Jun 19, 2012 6:26 am

Changing the Speedmult actor value through a spell DOES work, but the game does not constantly check for an actor's new speed. The game only checks the Speedmult actor value and change speed accordingly if the player takes some action which changes movement speed (like if he starts blocking, starts or stops sprinting, etc). The game also happens to update the speed if the player's carry weight changes, so you can use a secondary effect which increases the player's carry weight by 0.01 at the start of the spell and when the spell ends reduce it by 0.01 again. Then speed will update correctly.

This is also a bug in vanilla skyrim with frost spells btw. They are supposed to slow down the player/enemies but don't do so immediately.
User avatar
Siobhan Thompson
 
Posts: 3443
Joined: Sun Nov 12, 2006 10:40 am

Post » Tue Jun 19, 2012 1:37 am

Oh I see. i will use this information. Thank you both.
User avatar
tannis
 
Posts: 3446
Joined: Sat Dec 09, 2006 11:21 pm

Post » Mon Jun 18, 2012 6:54 pm

I noticed you can turn Night Eye into a Lesser Power and then it becomes a toggle. This doesn't work with just any spell though. Is there something specific abut the Night Eye script that makes it turn off when you use the ability again?

Here is the Night Eye script for the MagicEffect Night Eye.

scriptName magicNightEyeScript extends ActiveMagicEffect{Scripted effect for the Night Eye Spell}import GlobalVariable;======================================================================================;;			   PROPERTIES  /;=============/float property fDelay = 0.83 auto{time to wait before switching to constant Imod}ImageSpaceModifier property IntroFX auto{IsMod applied at the start of the spell effect}ImageSpaceModifier property MainFX auto{main isMod for spell}ImageSpaceModifier property OutroFX auto{IsMod applied at the end of the spell effect}Float Property fImodStrength = 1.0 auto{IsMod Strength from 0.0 to 1.0}sound property IntroSoundFX auto ; create a sound property we'll point to in the editorsound property OutroSoundFX auto ; create a sound property we'll point to in the editorGlobalVariable Property NightEyeTransitionGlobal auto;MagicEffect Property NightEyeEffect auto;Spell Property NightEyeDispelEffectSpell auto; Obtain the target of the active fire effect;Actor CasterActor;======================================================================================;;			   EVENTS					 /;=============/Event OnEffectStart(Actor Target, Actor Caster)    ;CasterActor = Caster    ; IntroFX.remove()    ; MainFX.remove()                                    ;Kill Imods from another cast, if running.    ; OutroFX.remove()            if NightEyeTransitionGlobal.GetValue() == 0.0        NightEyeTransitionGlobal.setValue(1.0)        int instanceID = IntroSoundFX.play((target as objectReference))		  ; play IntroSoundFX sound from my self        introFX.apply(fImodStrength)								  ; apply isMod at full strength        utility.wait(fDelay)						    ; NOTE - neccessary?        ;MainFX.apply()        if NightEyeTransitionGlobal.GetValue() == 1.0            introFX.PopTo(MainFX,fImodStrength)                NightEyeTransitionGlobal.setValue(2.0)        endif    elseif NightEyeTransitionGlobal.GetValue() == 1.0        introFX.PopTo(MainFX,fImodStrength)            NightEyeTransitionGlobal.setValue(2.0)        self.dispel()    else        self.dispel()    endif    EndEvent; Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect NightEyeEffect)    ; NightEyeDispelEffectSpell.Cast(CasterActor); endEventEvent OnEffectFinish(Actor Target, Actor Caster)    ; if NightEyeTransitionGlobal.GetValue() == 1.0        ; utility.wait(fDelay)    ; endif;     ;debug.trace (self + ": We are killing the spell.  The Globale is: " + NightEyeTransitionGlobal.GetValue())    if NightEyeTransitionGlobal.GetValue() == 2.0        NightEyeTransitionGlobal.setValue(3.0);         ;debug.trace (self + ": This is a valid outro play, see because 2.0 = " + NightEyeTransitionGlobal.GetValue())        int instanceID = OutroSoundFX.play((target as objectReference))		 ; play OutroSoundFX sound from my self        ;MainFX.remove()        MainFX.PopTo(OutroFX,fImodStrength)        introFX.remove()        NightEyeTransitionGlobal.setValue(0.0)    endifendEvent
User avatar
Devin Sluis
 
Posts: 3389
Joined: Wed Oct 24, 2007 4:22 am


Return to V - Skyrim