enderalse/source/scripts/_00e_myradsystem02.psc

228 lines
5.9 KiB
Plaintext

Scriptname _00E_MyradSystem02 extends Quest
import UIExtensions
import Utility
Actor akCurrentMyrad
Function CallMyradFlight(Actor akMyrad = None)
akCurrentMyrad = akMyrad
; If we call Message.Show() in a Goodbye script, dialogue menu will stay on screen
; Registering for an update, we allow it to close before the location menu
RegisterForSingleUpdate(0.1)
EndFunction
event OnUpdate()
if SKSE.GetVersion()
CallLocationList()
else
CallLocationListVanilla()
endif
endevent
Function CallLocationList()
UIListMenu listmenu = GetMenu("UIListMenu") as UIListMenu
string[] MyradTravelList = new string[13]
MyradTravelList[0] = "$Myradtravel00"
MyradTravelList[1] = "$Myradtravel01"
MyradTravelList[2] = "$Myradtravel02"
MyradTravelList[3] = "$Myradtravel03"
MyradTravelList[4] = "$Myradtravel04"
MyradTravelList[5] = "$Myradtravel05"
MyradTravelList[6] = "$Myradtravel06"
MyradTravelList[7] = "$Myradtravel07"
MyradTravelList[8] = "$Myradtravel08"
MyradTravelList[9] = "$Myradtravel09"
MyradTravelList[10] = "$Myradtravel10"
MyradTravelList[11] = "$Myradtravel11"
MyradTravelList[12] = "$Back"
Int iLength = 0
While iLength < MyradTravelList.length
listmenu.AddEntryItem(MyradTravelList[iLength], -1, -1, false)
iLength += 1
EndWhile
int iListMenu = listmenu.OpenMenu()
int iListButton = listmenu.GetResultInt()
If iListButton == 0
PortPlayer(ArkDestination)
ElseIf iListButton == 1
PortPlayer(ArkDestinationOutside)
ElseIf iListButton == 2
PortPlayer(RiverhomeDestination)
Elseif iListButton == 3
PortPlayer(HeartlandBorderregionDestination)
Elseif iListButton == 4
PortPlayer(HeartlandWatchtowerDestination)
Elseif iListButton == 5
PortPlayer(HeartlandNordicDestination)
Elseif iListButton == 6
PortPlayer(FarmerscoastDestination)
ElseIf iListButton == 7
PortPlayer(FrostcliffDestination)
ElseIf iListButton == 8
PortPlayer(DunehomeDestination)
Elseif iListButton == 09
PortPlayer(QuellwachtDestination)
Elseif iListButton == 10
PortPlayer(MisthomeDestination)
Elseif iListButton == 11
PortPlayer(DuestertalDesitnation)
Elseif iListButton == 12
return
EndIf
EndFunction
Function CallLocationListVanilla()
int iListButton = _00E_MyradFlightPage1.Show()
If iListButton == 0
PortPlayer(ArkDestination)
ElseIf iListButton == 1
PortPlayer(ArkDestinationOutside)
ElseIf iListButton == 2
PortPlayer(RiverhomeDestination)
Elseif iListButton == 3
PortPlayer(HeartlandBorderregionDestination)
Elseif iListButton == 4
PortPlayer(HeartlandWatchtowerDestination)
Elseif iListButton == 5
PortPlayer(HeartlandNordicDestination)
Elseif iListButton == 6
PortPlayer(FarmerscoastDestination)
elseif iListButton == 8 ; Exit
return
else ; More
int iListButton2 = _00E_MyradFlightPage2.Show()
If iListButton2 == 0
PortPlayer(FrostcliffDestination)
ElseIf iListButton2 == 1
PortPlayer(DunehomeDestination)
Elseif iListButton2 == 2
PortPlayer(QuellwachtDestination)
Elseif iListButton2 == 3
PortPlayer(MisthomeDestination)
Elseif iListButton2 == 4
PortPlayer(DuestertalDesitnation)
Elseif iListButton2 == 6 ; Exit
return
else ; Return
CallLocationListVanilla()
endif
endif
endfunction
Function CallFlightAnimation(Actor akMyrad)
FadeToBlackAndBackQuick.Apply()
_00E_EquipControl.SheatheWeapon(PlayerREF as Actor)
Wait(0.75)
ObjectReference objTakeOffMarker = akMyrad.GetLinkedRef(_00E_FS_MyradTakeOffMarker)
akMyrad.MoveTo(objTakeOffMarker)
akMyrad.SetScale(1)
_FS_TheriantrophistControlQuest.TransformBackIfTransformed()
akMyrad.PlayIdleWithTarget(groundMountDragon, PlayerREF)
Wait(4.0)
akMyrad.PlayImpactEffect(FXDragonTakeoffImpactSet, "NPC Tail8", 0, 0, -1, 512, true, false)
Wait(8.0)
EndFunction
Function ResetMyradAndPlayer(Actor akMyrad)
Debug.SendAnimationEvent(PlayerREF, "IdleCartExitInstant")
akMyrad.Disable()
akMyrad.Enable()
akMyrad.MoveTo(akMyrad.GetLinkedRef())
akMyrad.EvaluatePackage()
EndFunction
Function PortPlayer(ObjectReference Destination)
PlayerRef.RemoveItem(Gold001, MyradTripPrice.GetValue() as int)
if akCurrentMyrad != None
CallFlightAnimation(akCurrentMyrad)
endif
FadeToBlackImod.Apply()
Game.SetHudCartMode(true)
Wait(1)
FadeToBlackHoldImod.ApplyCrossFade()
Wait(0.5)
PlayerRef.MoveTo(Destination)
Wait(0.5)
if akCurrentMyrad != None
ResetMyradAndPlayer(akCurrentMyrad)
endif
FadeToBlackBackImod.ApplyCrossFade()
Game.SetHudCartMode(false)
If MQ04.GetCurrentStageID() >= 10 && !bDone
bDone = True
MQ04.SetObjectiveCompleted(20)
_00E_EPHandler.GiveEP(150)
EndIf
MyradFligthCounter += 1
If MyradFligthCounter == 20
Steam.UnlockAchievement("END_MYRAD_01")
EndIf
_FS_Phasmalist_ControlQuest.MoveApparitionToPlayer()
Game.RequestAutoSave()
EndFunction
bool bDone
int MyradFligthCounter = 0
Quest Property MQ04 Auto
Keyword Property _00E_FS_MyradTakeOffMarker Auto
Message Property _00E_MyradFlightPage1 Auto
Message Property _00E_MyradFlightPage2 Auto
ObjectReference Property PlayerRef Auto
MiscObject Property Gold001 Auto
GlobalVariable Property MyradTripPrice Auto
Idle Property groundMountDragon Auto
ImpactDataSet Property FXDragonTakeoffImpactSet Auto
ObjectReference Property ArkDestination Auto
ObjectReference Property ArkDestinationOutside Auto
ObjectReference Property RiverhomeDestination Auto
ObjectReference Property HeartlandBorderregionDestination Auto
ObjectReference Property HeartlandWatchtowerDestination Auto
ObjectReference Property HeartlandNordicDestination Auto
ObjectReference Property FarmerscoastDestination Auto
ObjectReference Property FrostcliffDestination Auto
ObjectReference Property DunehomeDestination Auto
ObjectReference Property QuellwachtDestination Auto
ObjectReference Property MisthomeDestination Auto
ObjectReference Property DuestertalDesitnation Auto
ImageSpaceModifier Property FadeToBlackImod Auto
ImageSpaceModifier Property FadeToBlackHoldImod Auto
ImageSpaceModifier Property FadeToBlackBackImod Auto
ImageSpaceModifier Property FadeToBlackAndBackQuick Auto