enderalse/source/scripts/mqgreybeardabsorbscript.psc

114 lines
3.0 KiB
Plaintext

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
setstage(stageToSet)
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
setstage(stageToSet)
endif
endFunction
Idle Property BracedPainIdle Auto