Updated timed werewolf transformation
This commit is contained in:
parent
efa77fb18f
commit
e53ddf74f6
Binary file not shown.
Binary file not shown.
@ -81,7 +81,7 @@ Float Property BalancingStaminaMalusPercent = 75 Autoreadonly Hidden
|
||||
Float Property BoostFactorInfluenceOnArmor = 11 Autoreadonly Hidden
|
||||
{the boost factor multiplied with this value is the wolf armor bonus for balancing purposes}
|
||||
|
||||
|
||||
_00E_Theriantrophist_TransformSC Property transformEffect Auto
|
||||
_00E_Theriantrophist_Chymikum[] RegisteredChymikums
|
||||
bool Sneaking = false
|
||||
|
||||
@ -89,7 +89,7 @@ int function _GetScriptVersion() Global
|
||||
return 1
|
||||
endFunction
|
||||
|
||||
Function Transform(int duration = 0)
|
||||
Function Transform(_00E_Theriantrophist_TransformSC aTransformEffect = None, int duration = 0)
|
||||
|
||||
bool bWasParalyzed
|
||||
Actor player = self.getActorReference()
|
||||
@ -112,6 +112,8 @@ Function Transform(int duration = 0)
|
||||
|
||||
float preTransformDmgResist = player.GetActorValue("damageResist")
|
||||
|
||||
transformEffect = aTransformEffect
|
||||
|
||||
if duration > 0
|
||||
; Wolf Blood should dispel the wolf form on finish (as of 2.1)
|
||||
; With SKSE, we equalize their duration. The 5 seconds offset serves as a failsafe in case the main effect ends without changing the race.
|
||||
@ -137,6 +139,11 @@ Function Transform(int duration = 0)
|
||||
|
||||
EndFunction
|
||||
|
||||
Function TransformBackByTimer()
|
||||
transformEffect = None
|
||||
TransformBack()
|
||||
endfunction
|
||||
|
||||
Function TransformBack()
|
||||
|
||||
If _00E_FS_Affinity_ScourgeOfTheWilds_TitanSP == None
|
||||
@ -158,6 +165,12 @@ Function TransformBack()
|
||||
EndIf
|
||||
PlayerREF.dispelSpell(_00E_Theriantrophist_WolfFormSP)
|
||||
|
||||
if transformEffect
|
||||
transformEffect.GotoState("ForcedFinish")
|
||||
transformEffect.Dispel()
|
||||
transformEffect = None
|
||||
endif
|
||||
|
||||
Endfunction
|
||||
|
||||
Function OnWolfFormSpellEnd()
|
||||
|
@ -54,7 +54,7 @@ Event OnEffectStart(Actor akTarget, Actor akCaster)
|
||||
duration = GetDuration() as int
|
||||
endif
|
||||
|
||||
playerWhileTransformedAlias.Transform(duration)
|
||||
playerWhileTransformedAlias.Transform(self, duration)
|
||||
Endif
|
||||
|
||||
If _00E_MC_CaliaREF.GetDistance(Game.GetPlayer()) <= 700
|
||||
@ -65,6 +65,14 @@ Event OnEffectStart(Actor akTarget, Actor akCaster)
|
||||
|
||||
Endevent
|
||||
|
||||
Event OnEffectFinish(Actor akTarget, Actor akCaster)
|
||||
controlQuest.playerWhileTransformed.TransformBack()
|
||||
endevent
|
||||
auto state NormalFinish
|
||||
|
||||
Event OnEffectFinish(Actor akTarget, Actor akCaster)
|
||||
controlQuest.playerWhileTransformed.TransformBackByTimer()
|
||||
endevent
|
||||
|
||||
endstate
|
||||
|
||||
state ForcedFinish
|
||||
; do nothing
|
||||
endstate
|
||||
|
Loading…
Reference in New Issue
Block a user