enderalse/source/scripts/_00e_a0_actiontrigger_myradflight.psc

144 lines
4.4 KiB
Plaintext

Scriptname _00E_A0_ActionTrigger_MyradFlight extends ObjectReference
; ========= ACTIONTYPE INDEX =========
; 1 - Sound: FlyBy close object
; 2 - Sound: FlyBy ground
; 3 - Event: Birds fly away
; 4 - Event: Landing Zone
; 5 - Event: Loading
; ====================================
;How to use:
;===========
; Dem trigger an der gewünschten Stelle erstellen und ein linked Ref
; setzten, ganz egal was es ist. Das Entscheidene dabei ist das
; Keyword des links.
; Natürlich kann das linkd Ref auch gezielt auf Objekt
; verweisen, dass im Event Verwendung findet. Bei der Landung ist
; der linked Ref z.B. die camera der Lande cinematic.
; Bei Initialisierung holt sich das script den link und checkt
; anhand des keyword für was es zuständig ist:
; if GetLinkedRef(FlyByCloseObject) != none
; ActionRef = GetLinkedRef(FlyByCloseObject)
; ActionType = 1
; endif
; Durch hinzufügen von neuen Keywords können schnell neue events
; definiert werden ohne jedes mal einen neuen activator +script
; erstellen zu müssen.
; Dabei den ACTIONTYPE INDEX auf den neuesten Stand bringen.
; Beim Erstellen von neuen Event-Keywords immer die Namensgebung
; einhalten: _00E_ActionTrigger_MyradFlight_NeuerEvent
; Es können natürlich neue ActionTrigger mit einem anderen Zusändigkeitsbereich
; im Kit erstellt werden. Neues script, neue keywords:
; Scriptname: _00E_A0_ActionTrigger_Todesstern
; Keywords: _00E_ActionTrigger_Todesstern_DarthVaderAmbush, _00E_ActionTrigger_Todesstern_AlderanSprengen
Quest Property FlightControl auto
Keyword Property EVENTflyByGround Auto
Keyword Property EVENTflyByCloseObject Auto
Keyword Property EVENTbirdsFlyAway Auto
Keyword Property EVENTLandingZone Auto
Keyword Property EVENTloading Auto
objectReference Property ActionRef Auto hidden
objectReference Property PlayerGoal Auto hidden
Sound Property SFXflyByGround Auto
Sound Property SFXflyByObject Auto
Sound Property SFXflyByBirds Auto
ImageSpaceModifier Property IMODflyBy Auto
ImageSpaceModifier Property IMODflyByDV Auto
GlobalVariable Property MyradIsFlying Auto
Int Property ACTIONTYPE Auto Hidden
Event OnInit()
if GetLinkedRef(EVENTflyByCloseObject) != none
ActionRef = GetLinkedRef(EVENTflyByCloseObject) ; link: egal
ACTIONTYPE = 1
endif
if GetLinkedRef(EVENTflyByGround) != none
ActionRef = GetLinkedRef(EVENTflyByGround) ; link: egal
ACTIONTYPE = 2
endif
if GetLinkedRef(EVENTBirdsFlyAway) != none ; link: FXBirdFlockFleePineACT
ActionRef = GetLinkedRef(EVENTBirdsFlyAway)
ACTIONTYPE = 3
endif
if GetLinkedRef(EVENTLandingZone) != none
ActionRef = GetLinkedRef(EVENTLandingZone) ; link 1: xmarkerheading für camera position, land cinematic
PlayerGoal = ActionRef.GetLinkedRef() ; link 2: xmarkerheading für playergoal, land cinematic
ACTIONTYPE = 4
endif
if GetLinkedRef(EVENTloading) != none
ActionRef = GetLinkedRef(EVENTloading) ; link 1: xmarkerheading Spawn
ACTIONTYPE = 5
endif
ENDevent
int SFXvolume
Event OnTriggerEnter(ObjectReference ActionActor)
if ActionActor == (FlightControl as _00E_A0_MyradFlightControlQuest).Myrad && MyradIsFlying.getValue() != 0
if ACTIONTYPE == 1
SFXvolume = SFXflyByObject.play(ActionActor)
Sound.SetInstanceVolume(SFXvolume, 0.85)
game.shakeCamera(afStrength = 4, afDuration = 3)
IMODflyByDV.apply()
elseif ACTIONTYPE == 2
game.shakeCamera(afStrength = 4, afDuration = 2)
SFXvolume = SFXflyByGround.play(ActionActor)
Sound.SetInstanceVolume(SFXvolume, 0.75)
IMODflyBy.apply()
elseif ACTIONTYPE == 3
; Als link: FXBirdFlockFleePineACT benutzen!
ActionRef.PlayAnimation("PlayAnim01")
SFXvolume = SFXflyByBirds.play(ActionActor)
Sound.SetInstanceVolume(SFXvolume, 1)
elseif ACTIONTYPE == 4
if (ActionActor as actor).GetFlyingState() != 0
(FlightControl as _00E_A0_MyradFlightControlQuest).CamSpawn = ActionRef
if PlayerGoal != none
(FlightControl as _00E_A0_MyradFlightControlQuest).PlayerGoal = PlayerGoal
endif
endif
elseif ACTIONTYPE == 5
(FlightControl as _00E_A0_MyradFlightControlQuest).PlayerGoal = ActionRef
(FlightControl as _00E_A0_MyradFlightControlQuest).Loading()
endif
endif
ENDevent
;Event OnTriggerLeave(ObjectReference ActionActor)
; if ActionActor == (FlightControl as _00E_A0_MyradFlightControlQuest).Myrad && MyradIsFlying.getValue() != 0
; if ACTIONTYPE == 1
; endif
; endif
;ENDevent