1
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

112 lines
3.2 KiB

Scriptname DLC2StandingStoneScript extends ObjectReference
PROJECTILE Property DLC2VoicePushProjectile01 Auto
PROJECTILE Property DLC2VoicePushProjectile03 Auto
SPELL Property DLC2SpellLearned Auto
bool property Freed auto hidden
float DelayReady
auto State Waiting
Event OnActivate(ObjectReference akActionRef)
gotoState("Busy")
; debug.Trace("STANDING STONE: I've been touched")
if akActionRef == game.GetPlayer()
if Freed == true
; debug.Trace("STANDING STONE: has been freed - DelayReady: " + DelayReady + ", GameDays: " + GameDaysPassed.GetValue())
if GameDaysPassed.GetValue() > DelayReady && game.GetPlayer().HasSpell(DLC2SpellLearned) == false
; debug.Trace("STANDINGSTONE: it's been a day since the spell was last added")
DelayReady = GameDaysPassed.GetValue() + 0.75
PlayAnimation("stage3")
DLC2StoneActivateSound.play(self)
(akActionRef as actor).AddSpell(DLC2SpellLearned, true)
; debug.Trace("STANDINGSTONE: DLC2SacredStoneSpell" + DLC2SacredStoneSpell)
DLC2SacredStoneSpell.Cast(akActionRef)
else
DLC2StandingStoneNotReadyMsg.Show()
endif
else
WorkOnPillar(false)
endif
else
if Freed == false && (akActionRef as Actor)
WorkOnPillarNPC(akActionRef as Actor)
endif
endif
gotoState("Waiting")
EndEvent
endState
State Busy
; do nothing
EndState
function WorkOnPillarNPC(Actor pillarNPC)
; put into alias
FollowerAtPillar.ForceRefTo(pillarNPC)
; clear favor state
pillarNPC.SetDoingFavor(false)
; work on pillar scene
DLC2PillarFollowerScene.Start()
endFunction
function WorkOnPillar(bool bSleepMove = true)
if GetLinkedRef()
; player blacks out, wakes up working on pillar
Game.DisablePlayerControls()
if bSleepMove == false
FadeToBlackImod.Apply()
MAGStandingStoneActivateA.Play(Game.GetPlayer())
utility.wait(2)
FadeToBlackImod.PopTo(FadeToBlackHoldImod)
else
FadeToBlackImod.PopTo(FadeToBlackHoldImod)
utility.wait(2)
endif
Game.ForceThirdPerson()
; put player in furniture
Game.GetPlayer().MoveTo(GetLinkedRef())
DLC2PillarMiraakVoice.Start()
utility.wait(2)
FadeToBlackHoldImod.PopTo(FadeToBlackBackImod)
FadeToBlackHoldImod.Remove()
MAGStandingStoneActivateB.Play(Game.GetPlayer())
utility.wait(2)
; debug.trace(self + " enabling controls")
Game.EnablePlayerControls()
while GetLinkedRef().IsFurnitureInUse()
utility.wait(1.0)
endWhile
DLC2PillarMiraakVoice.Stop()
DLC2Pillar.SetStage(100) ; runs Neloth scene, tracks player having touched pillar once
endif
endFunction
ImageSpaceModifier Property FadeToBlackImod Auto
ImageSpaceModifier Property FadeToBlackHoldImod Auto
ImageSpaceModifier Property FadeToBlackBackImod Auto
Topic Property DLC2PillarBlockingTopic Auto
Scene Property DLC2PillarMiraakVoice Auto
Quest Property DLC2Pillar Auto
GlobalVariable Property GameDaysPassed Auto
Message Property DLC2StandingStoneNotReadyMsg Auto
Scene Property DLC2PillarFollowerScene Auto
ReferenceAlias Property FollowerAtPillar Auto
Sound Property MAGStandingStoneActivateA Auto
Sound Property MAGStandingStoneActivateB Auto
SPELL Property DLC2SacredStoneSpell Auto
Sound Property DLC2StoneActivateSound Auto