2023-12-04 15:02:58 +00:00
|
|
|
Scriptname MQGreybeardAbsorbScript extends Quest
|
|
|
|
{script allowing Greybeard absorb}
|
|
|
|
|
|
|
|
import Game
|
|
|
|
import utility
|
|
|
|
|
|
|
|
|
|
|
|
; for Greybeard effect
|
|
|
|
VisualEffect Property FXGreybeardAbsorbEffect Auto
|
|
|
|
EffectShader Property GreybeardPowerAbsorbFXS Auto
|
|
|
|
EffectShader Property GreybeardPlayerPowerAbsorbFXS Auto
|
|
|
|
sound property NPCDragonDeathSequenceWind auto
|
|
|
|
sound property NPCDragonDeathSequenceExplosion auto
|
|
|
|
|
|
|
|
; for dragon effect
|
|
|
|
VisualEffect Property DragonAbsorbEffect Auto
|
|
|
|
VisualEffect Property DragonAbsorbManEffect Auto
|
|
|
|
EffectShader Property DragonPowerAbsorbFXS Auto
|
|
|
|
|
|
|
|
ObjectReference Property KnockAreaEffectMarker Auto
|
|
|
|
|
|
|
|
; use this for Greybeards
|
|
|
|
function AbsorbEffect(Actor target, int stageToSet = 0)
|
|
|
|
|
|
|
|
;Play art and fx shaders on player and targeted grybeard
|
|
|
|
FXGreybeardAbsorbEffect.Play(target, 7, GetPlayer())
|
|
|
|
GreybeardPowerAbsorbFXS.Play(target)
|
|
|
|
GreybeardPlayerPowerAbsorbFXS.Play(GetPlayer())
|
|
|
|
|
|
|
|
;Wait for the art to play
|
|
|
|
;Wait(7.0)
|
|
|
|
; INSTEAD - break up the 7 seconds:
|
|
|
|
|
|
|
|
; damage target to simulate absorption
|
|
|
|
float damage = target.GetActorValue("health")/5 ; use 3 if bleedout looks good
|
|
|
|
target.DamageActorValue("health", damage)
|
|
|
|
; KnockAreaEffectMarker.Moveto(target)
|
|
|
|
; KnockAreaEffectMarker.KnockAreaEffect(0.2, 5)
|
|
|
|
target.PlayIdle(BracedPainIdle)
|
|
|
|
|
|
|
|
; Sounds for when the wispy particles being to fly at the player.
|
|
|
|
NPCDragonDeathSequenceWind.play(target)
|
|
|
|
NPCDragonDeathSequenceExplosion.play(target)
|
|
|
|
|
|
|
|
wait(2)
|
|
|
|
target.DamageActorValue("health", damage)
|
|
|
|
; KnockAreaEffectMarker.Moveto(target)
|
|
|
|
; KnockAreaEffectMarker.KnockAreaEffect(0.5, 5)
|
|
|
|
; target.PlayIdle(BracedPainIdle)
|
|
|
|
|
|
|
|
|
|
|
|
wait(2)
|
|
|
|
target.DamageActorValue("health", damage)
|
|
|
|
; KnockAreaEffectMarker.Moveto(target)
|
|
|
|
; KnockAreaEffectMarker.KnockAreaEffect(0.8, 5)
|
|
|
|
; target.PlayIdle(BracedPainIdle)
|
|
|
|
|
|
|
|
wait(2)
|
|
|
|
target.DamageActorValue("health", damage)
|
|
|
|
; KnockAreaEffectMarker.Moveto(target)
|
|
|
|
; KnockAreaEffectMarker.KnockAreaEffect(1.0, 5)
|
|
|
|
; target.PlayIdle(BracedPainIdle)
|
|
|
|
|
|
|
|
|
|
|
|
Wait(1.0)
|
|
|
|
|
|
|
|
;remove magic shaders
|
|
|
|
GreybeardPowerAbsorbFXS.Stop(target)
|
|
|
|
GreybeardPlayerPowerAbsorbFXS.Stop(GetPlayer())
|
|
|
|
|
|
|
|
; set stage when finished
|
|
|
|
if stageToSet > 0
|
2024-01-10 14:08:24 +00:00
|
|
|
SetCurrentStageID(stageToSet)
|
2023-12-04 15:02:58 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
endFunction
|
|
|
|
|
|
|
|
; use this for Paarthurnax
|
|
|
|
function DragonAbsorbEffect(Actor target, int stageToSet = 0)
|
|
|
|
|
|
|
|
;display dragon absorb effect art. One part on dragon one part on player.
|
|
|
|
DragonAbsorbEffect.Play(target, 8, GetPlayer())
|
|
|
|
DragonAbsorbManEffect.Play(GetPlayer(), 8, target)
|
|
|
|
|
|
|
|
; Sounds for when the wispy particles being to fly at the player.
|
|
|
|
NPCDragonDeathSequenceWind.play(target)
|
|
|
|
NPCDragonDeathSequenceExplosion.play(target)
|
|
|
|
|
|
|
|
wait(0.1)
|
|
|
|
|
|
|
|
; On man power absorb effect shader.
|
|
|
|
DragonPowerAbsorbFXS.Play(GetPlayer())
|
|
|
|
|
|
|
|
wait(2)
|
|
|
|
|
|
|
|
wait(4)
|
|
|
|
|
|
|
|
;Stop fx shader on player showing power absorb.
|
|
|
|
DragonPowerAbsorbFXS.Stop(GetPlayer())
|
|
|
|
|
|
|
|
wait(4)
|
|
|
|
|
|
|
|
; Get rid of art attached to dragon and player showing streaming magic.
|
|
|
|
DragonAbsorbEffect.Stop(target)
|
|
|
|
DragonAbsorbManEffect.Stop(GetPlayer())
|
|
|
|
|
|
|
|
; set stage when finished
|
|
|
|
if stageToSet > 0
|
2024-01-10 14:08:24 +00:00
|
|
|
SetCurrentStageID(stageToSet)
|
2023-12-04 15:02:58 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
endFunction
|
|
|
|
Idle Property BracedPainIdle Auto
|