Instigator Only Cinematic Control Device
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
cinematic_sequence_queue_device := class(creative_device):
@editable {} ShowToAllTrigger:trigger_device = trigger_device{}
@editable {} ShowToOneTrigger:trigger_device = trigger_device{}
@editable {} var SequenceDevices:[]cinematic_sequence_device = array{}
@editable {} PlayerStasis:logic = true
OnBegin<override>()<suspends>:void=
ShowToAllTrigger.TriggeredEvent.Subscribe(Self.ShowToAll)
ShowToOneTrigger.TriggeredEvent.Subscribe(Self.ShowToOne)
ShowToAll(:?agent):void=
for (Player : Self.GetPlayspace().GetPlayers()):
spawn{Self.PlaySequence(Player)}
ShowToOne(MaybeAgent:?agent):void=
if (Agent:agent = MaybeAgent?):
spawn{Self.PlaySequence(Agent)}
GetSequence()<decides><transacts>:cinematic_sequence_device=
SelectedSequenceDevice:cinematic_sequence_device = Self.SequenceDevices[0]
set Self.SequenceDevices = for (I -> SequenceDevice : Self.SequenceDevices, I <> 0) do SequenceDevice
return SelectedSequenceDevice
PlaySequence(Agent:agent)<suspends>:void=
if (Sequence:cinematic_sequence_device = Self.GetSequence[], FortCharacter:fort_character = Agent.GetFortCharacter[]):
if (Self.PlayerStasis?) then FortCharacter.PutInStasis(stasis_args{})
Sequence.Play(Agent)
Sequence.StoppedEvent.Await()
FortCharacter.ReleaseFromStasis()
set Self.SequenceDevices += array{Sequence}