Updated timed werewolf transformation

This commit is contained in:
Eddoursul 2024-02-19 16:14:54 +01:00
parent efa77fb18f
commit e53ddf74f6
4 changed files with 27 additions and 6 deletions

View File

@ -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()

View File

@ -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
auto state NormalFinish
Event OnEffectFinish(Actor akTarget, Actor akCaster)
controlQuest.playerWhileTransformed.TransformBack()
controlQuest.playerWhileTransformed.TransformBackByTimer()
endevent
endstate
state ForcedFinish
; do nothing
endstate