/
Fortnite.digest.verse
executable file
·4840 lines (3467 loc) · 235 KB
/
Fortnite.digest.verse
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Copyright Epic Games, Inc. All Rights Reserved.
#################################################
# Generated Digest of Verse API
# DO NOT modify this manually!
# Generated from build: ++Fortnite+Release-29.40-CL-33291686
#################################################
# Module import path: /Fortnite.com/AI
AI<public> := module:
# Returns the `npc_behavior` for `InAgent`.
(InAgent:agent).GetNPCBehavior<native><public>()<transacts><decides>:npc_behavior
# Get the focus_interface interface for the specified character.
(InCharacter:fort_character).GetFocusInterface<native><public>()<transacts><decides>:focus_interface
# Get the current fort_leashable interface for the specified character.
(InCharacter:fort_character).GetFortLeashable<native><public>()<transacts><decides>:fort_leashable
# Get the navigatable interface for the specified character
(InCharacter:fort_character).GetNavigatable<native><public>()<transacts><decides>:navigatable
# Generate a navigation_target from any position
MakeNavigationTarget<native><public>(Position:vector3):navigation_target
# Generate a navigation_target from an agent
MakeNavigationTarget<native><public>(Target:agent):navigation_target
focus_interface<native><public> := interface<epic_internal>:
# Look At specified Agent. Will never complete unless interrupted.
MaintainFocus<public>(Agent:agent)<suspends>:void
# Look At specified location. Will never complete unless interrupted.
MaintainFocus<public>(Location:vector3)<suspends>:void
fort_leashable<native><public> := interface<epic_internal>:
# Removes the current leash.
ClearLeash<public>():void
# Set the agent to be the new center of the leash.
# 'InnerRadius' ranges from 0.0 to 20000.0 (in centimeters).
# 'OuterRadius' ranges from 0.0 to 20000.0 (in centimeters) and no less than 'InnerRadius'.
SetLeashAgent<public>(Agent:agent, InnerRadius:float, OuterRadius:float):void
# Set custom leash position.
# 'InnerRadius' ranges from 0.0 to 20000.0 (in centimeters).
# 'OuterRadius' ranges from 0.0 to 20000.0 (in centimeters) and no less than 'InnerRadius'.
SetLeashPosition<public>(Location:vector3, InnerRadius:float, OuterRadius:float):void
movement_type<native><public> := class<concrete><final><computes><epic_internal>:
# Module import path: /Fortnite.com/AI/movement_types
movement_types<public> := module:
Running<public>:movement_type = external {}
Walking<public>:movement_type = external {}
navigatable<native><public> := interface<epic_internal>:
# Return the current destination of the character
GetCurrentDestination<public>()<transacts><decides>:vector3
# Navigate toward the specified target
NavigateTo<public>(Target:navigation_target, ?MovementType:movement_type = external {}, ?ReachRadius:float = external {}, ?AllowPartialPath:logic = external {})<suspends>:navigation_result
# Apply a multiplier on the movement speed (Multiplier is clamped between 0.5 and 2)
SetMovementSpeedMultiplier<public>(Multiplier:float):void
# Stop navigation
StopNavigation<public>():void
# Wait for a specific duration
Wait<public>(?Duration:float = external {})<suspends>:void
# Result of a navigation request
navigation_result<native><public> := enum:
# The navigating agent is blocked
Blocked
# Navigation has been interrupted before completion
Interrupted
# The destination has been partially reached (AllowPartialPath was used)
PartiallyReached
# The destination has been reached
Reached
# The destination cannot be reached
Unreachable
navigation_target<native><public> := class<epic_internal>:
# Inherit from this to create a custom NPC behavior.
# The npc_behavior can be defined for a character in a CharacterDefinition asset, or in a npc_spawner_device.
npc_behavior<native><public> := class<abstract>:
# Returns the agent associated with this behavior.
GetAgent<native><public>()<transacts><decides>:agent
# This function is called when the NPC is added to the simulation.
OnBegin<native_callable><public>()<suspends>:void = external {}
# This function is called when the NPC is removed from the simulation.
OnEnd<native_callable><public>():void = external {}
# Module import path: /Fortnite.com/Animation
Animation<public> := module:
# Module import path: /Fortnite.com/Animation/PlayAnimation
PlayAnimation<public> := module:
# Get the play_animation_controller for the specified character.
(InCharacter:fort_character).GetPlayAnimationController<native><public>()<transacts><decides>:play_animation_controller
# An interface for playing an animation on an object.
play_animation_controller<native><public> := interface<epic_internal>:
# Start an animation sequence and obtain an instance to query and manipulate.
Play<public>(AnimationSequence:animation_sequence, ?PlayRate:float = external {}, ?StartPositionSeconds:float = external {}, ?BlendInTime:float = external {}, ?BlendOutTime:float = external {}):play_animation_instance
# Play an animation sequence.
PlayAndAwait<public>(AnimationSequence:animation_sequence, ?PlayRate:float = external {}, ?StartPositionSeconds:float = external {}, ?BlendInTime:float = external {}, ?BlendOutTime:float = external {})<suspends>:play_animation_result
# An animation instance created from play_animation_controller.Play that can be queried and manipulated.
play_animation_instance<native><public> := class<epic_internal>:
# Helper function that waits for the animation to complete or be interrupted.
Await<public>()<suspends>:play_animation_result = external {}
# Event triggered when the animation has finished to blend out.
BlendedInEvent<native><public>:listenable(tuple()) = external {}
# Event triggered when the animation is beginning to blend out.
BlendingOutEvent<native><public>:listenable(tuple()) = external {}
# Event triggered when the animation is completed.
CompletedEvent<native><public>:listenable(tuple()) = external {}
# Returns the state of the animation playback.
GetState<native><public>()<transacts>:play_animation_state
# Event triggered when the animation is interrupted.
InterruptedEvent<native><public>:listenable(tuple()) = external {}
# Helper function that succeeds if the state is Playing, BlendingIn, or BlendingOut.
IsPlaying<public>()<transacts><decides>:void = external {}
# Stops the animation.
Stop<native><public>():void
# Result of a PlayAndAwait request.
play_animation_result<native><public> := enum:
# The animation completed successfully.
Completed
# The animation encountered an error during initialization or whilst playing.
Error
# The animation was interrupted whilst playing.
Interrupted
# The potential states of a play animation instance.
play_animation_state<native><public> := enum:
# The animation is blending in.
BlendingIn
# The animation is playing and is blending out.
BlendingOut
# The animation completed successfully.
Completed
# An error occurred at creation or during playback.
Error
# The animation was interrupted externally.
Interrupted
# The animation has blended in, is playing, and has not begun blending out.
Playing
# The animation was stopped internally.
Stopped
# Module import path: /Fortnite.com/Assets
Assets<public> := module:
# Module import path: /Fortnite.com/Building
Building<public> := module:
# Module import path: /Fortnite.com/Characters
Characters<public> := module:
# Returns the `fort_character` for `InAgent`. Fails if `InAgent` is not a `fort_character`.
(InAgent:agent).GetFortCharacter<native><public>()<transacts><decides>:fort_character
# Returns a `game_action_instigator` interface for `InAgent`.
(InAgent:agent).GetInstigator<native><public>()<transacts>:game_action_instigator
# Returns the `agent` for `InInstigator`. Fails if `InInstigator` is not an `agent`.
(InInstigator:game_action_instigator).GetInstigatorAgent<native><public>()<transacts><decides>:agent
# Main API implemented by Fortnite characters.
fort_character<native><public> := interface<unique><epic_internal>(positional, healable, healthful, damageable, shieldable, game_action_instigator, game_action_causer):
# Signaled when this `fort_character` changes crouch state.
# Sends `tuple` payload:
# - 0: the `fort_character` that changed crouch states.
# - 1: `true` if the character is crouching. `false` if the character is not crouching.
CrouchedEvent<public>():listenable(tuple(fort_character, logic))
# Signaled when this `fort_character` is eliminated from the match.
EliminatedEvent<public>():listenable(elimination_result)
# Returns the agent associated with this `fort_character`. Use this when interacting with APIs that require an `agent` reference.
GetAgent<public>()<transacts><decides>:agent
# Returns the location where this `fort_character` is looking or aiming from.
GetViewLocation<public>()<transacts>:vector3
# Returns the rotation where this `fort_character` is looking or aiming at.
GetViewRotation<public>()<transacts>:rotation
# Sets this `fort_character` visibility to invisible.
Hide<public>():void
# Succeeds if this `fort_character` is in the world and has not been eliminated. Most fort_character actions will silently fail if this fails. Please test IsActive if you want to handle these failure cases rather than allow them to silently fail.
IsActive<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is crouching.
IsCrouching<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is in the 'Down But Not Out' state. In this state the character is down but can still be revived by teammates for a period of time.
IsDownButNotOut<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is in falling locomotion state.
IsFalling<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is in flying locomotion state.
IsFlying<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is in gliding locomotion state.
IsGliding<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is standing in the air.
IsInAir<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is inside water volume.
IsInWater<public>()<transacts><decides>:void
# Succeeds if this `fort_character` is standing on the ground.
IsOnGround<public>()<transacts><decides>:void
# Succeeds if this `fort_character` can be damaged. Fails if this `fort_character` cannot be damaged.
IsVulnerable<public>()<transacts><decides>:void
# Signaled when this `fort_character` jumps. Returns a listenable with a payload of this `fort_character`.
JumpedEvent<public>():listenable(fort_character)
# Puts this `fort_character` into stasis, preventing certain types of movement specified by `Args`.
PutInStasis<public>(Args:stasis_args)<transacts>:void
# Release this `fort_character` from stasis.
ReleaseFromStasis<public>()<transacts>:void
# Control if this `fort_character` can be damaged.
SetVulnerability<public>(Vulnerable:logic)<transacts>:void
# Sets this `fort_character` visibility to visible.
Show<public>():void
# Signaled when this `fort_character` changes sprint state.
# Sends `tuple` payload:
# - 0: the `fort_character` that changed sprint state.
# - 1: `true` if the character is sprinting. `false` if the character stopped sprinting.
SprintedEvent<public>():listenable(tuple(fort_character, logic))
# Teleports this `fort_character` to the provided `Position` and applies the yaw of `Rotation`. Will fail if the `Position` specified is e.g. outside of the playspace or specifies a place where the character cannot fit.
TeleportTo<public>(Position:vector3, Rotation:rotation)<transacts><decides>:void
# Parameters for `fort_character.PutInStasis` function.
stasis_args<native><public> := struct:
# Controls if `fort_character` can still perform emotes while in stasis.
AllowEmotes<native><public>:logic = external {}
# Controls if `fort_character` can still fall while in stasis.
AllowFalling<native><public>:logic = external {}
# Controls if `fort_character` can still turn while in stasis.
AllowTurning<native><public>:logic = external {}
using {/Fortnite.com/Game}
using {/Verse.org/Assets}
using {/Verse.org/Simulation/Tags}
using {/Verse.org/Simulation}
# Module import path: /Fortnite.com/Devices
Devices<public> := module:
# Returns the `fort_playspace` that `CreativeObject` belongs to.
(CreativeObject:creative_object_interface).GetPlayspace<native><public>()<transacts>:fort_playspace
# Returns a queryable `tag_view` which can be used to query the tags on `CreativeObject`.
(CreativeObject:creative_object_interface).GetTags<native><public>():tag_view
# Module import path: /Fortnite.com/Devices/Animation
Animation<public> := module:
# Module import path: /Fortnite.com/Devices/CreativeAnimation
CreativeAnimation<public> := module:
# Returns an `animation_controller` used to animate `Prop`. Only a subset of `creative_prop` types can be animated, though this may change in the future. A few examples of props that cannot be animated yet are:
# * Walls attached to buildings
# * Treasure chests
# * Loot llamas
(Prop:creative_prop).GetAnimationController<public>()<transacts><decides>:animation_controller = external {}
# Module import path: /Fortnite.com/Devices/CreativeAnimation/InterpolationTypes
# Convenience interpolation modes. These built in modes are based on the CSS animation standard: https://www.w3.org/TR/css-easing-1/
InterpolationTypes<public> := module:
# `Ease` animations start slowly, speed up, then end slowly. The speed of the animation is slightly slower at the end than the start.
Ease<public>:cubic_bezier_parameters = external {}
# `EaseIn` animations start slow, then speed up towards the end.
EaseIn<public>:cubic_bezier_parameters = external {}
# `EaseInOut` animations are similar to `Ease` but the start and end animation speed is symmetric.
EaseInOut<public>:cubic_bezier_parameters = external {}
# `EaseOut` animations start fast, then slow down towards the end.
EaseOut<public>:cubic_bezier_parameters = external {}
# `Linear` animations move at a constant speed.
Linear<public>:cubic_bezier_parameters = external {}
# Used to move and animate the position of `creative_prop` objects.
# * See `creative_prop.GetAnimationController` for information on acquiring an instance of an
# `animation_controller` for a given `creative_prop`.
# * See `SetAnimation` for details on authoring movement and animations.
animation_controller<native><public> := class<epic_internal>:
# Suspends at the callsite until the next `keyframe_delta` is finished. This will also return if the animation is aborted or not playing. See `await_next_keyframe_result` if your code needs to take different paths based on why `AwaitNextKeyframe` returned.
AwaitNextKeyframe<native><public>()<suspends>:await_next_keyframe_result
# Returns the current state of this `animation_controller`.
GetState<native><public>()<transacts>:animation_controller_state
# Succeeds if this `animation_controller`s target is still valid (i.e., the target has not been disposed of either via `Dispose` or through any external system.)
IsValid<native><public>()<transacts><decides>:void
# Signaled each time a keyframe is reached. Callback(KeyframeIndex:int, InReverse:logic). Note that the KeyframeIndex in the callback is generally in [1, NumDeltaKeyframes] except that in a PingPong animation the final keyframe played in reverse is identified as index 0. This is because SetAnimation takes *delta* keyframes whereas this event notifies the listener that a specific keyframe has been reached.
KeyframeReachedEvent<native><public>:listenable(tuple(int, logic)) = external {}
# Signaled when the entire animation is complete. This will only fire for `OneShot` animations.
MovementCompleteEvent<native><public>:listenable(tuple()) = external {}
# Pauses the animation if it is already playing.
Pause<public>():void = external {}
# Starts or resumes playback of the animation.
Play<public>():void = external {}
# Sets the animation for the `animation_controller`. Animations are processed in the order provided in `Keyframes`. See notes in `keyframe_delta` and `animation_mode` for more details on controlling the animations.
SetAnimation<public>(Keyframes:[]keyframe_delta, ?Mode:animation_mode):void = external {}
# Signaled when the state has changed. Use `GetState` to get the new state.
StateChangedEvent<native><public>:listenable(tuple()) = external {}
# Stops playback and resets the animation to the first keyframe. Also resets the prop transform. Calling this method is valid while the animation is in the `Playing` or `Paused` states.
Stop<public>():void = external {}
# `animation_controller` states.
animation_controller_state<native><public> := enum:
# No animation has been successfully set via `animation_controller.SetAnimation`, or that animation has been cleared by a failed call to `animation_controller.SetAnimation`.
AnimationNotSet
# The target of the animation is not an animatable prop. This could be because:
# * It is not a `creative_prop` that can be animated.
# * It was disposed or otherwise destroyed.
# * It has the 'Register with Structural Grid' option set in UEFN.
InvalidObject
# Animation is paused.
Paused
# Animation is playing.
Playing
# Animation has either never started, finished, or was explicitly stopped.
Stopped
# Animation play modes.
animation_mode<native><public> := enum:
# Play the animation in a loop. This requires the animation ends exactly where it began.
Loop
# Stop after playing the animation once.
OneShot
# Reverse direction after reaching the final `keyframe_delta`, then play the animation in reverse.
PingPong
# Results for `animation_controller.AwaitNextKeyframe` function.
await_next_keyframe_result<native><public> := enum:
# The animation was canceled either due to the object being destroyed, becoming invalid, or because it was moved via some other API.
AnimationAborted
# The next keyframe has been reached successfully.
KeyframeReached
# No animation is currently playing and this function call has returned immediately.
NotPlaying
# A structure for defining Bezier interpolation parameters.
# See https://en.wikipedia.org/wiki/B%C3%A9zier_curve for more info on Bezier curves.
cubic_bezier_parameters<native><public> := struct<computes>:
# X value of the P1 control point. `0.0 <= X0 <= 1.0` or an error will be generated when calling `animation_controller.SetAnimation`.
X0<native><public>:float = external {}
# X value of the P2 control point. `0.0 <= X1 <= 1.0 or an error will be generated when calling `animation_controller.SetAnimation`.
X1<native><public>:float = external {}
# Y value of the P1 control point.
Y0<native><public>:float = external {}
# Y value of the P2 control point.
Y1<native><public>:float = external {}
# Instead of specifying the actual keyframe positions, we specify the keyframe *deltas*. This allows us to treat the initial position of the prop as keyframe 0 and avoid the question of how to get the prop to its initial location. For a `animation_mode.Loop` animation, the net rotation and translation must both be zero. Each delta is interpreted as a world-space transformation to be concatenated onto the previous transform(s).
keyframe_delta<native><public> := struct:
# Target position of the `creative_prop`. This is a world-space coordinate in cm, with the initial position of the `creative_prop` acting as coordinate (0,0).
DeltaLocation<native><public>:vector3
# Target rotation for the `creative_prop`. Rotations are relative to the starting rotation of the `creative_prop`
DeltaRotation<native><public>:rotation
# Target scale for the `creative_prop`. Scale is multiplicative to the starting Scale of the `creative_prop`
DeltaScale<native><public>:vector3 = external {}
# Interpolation mode for this `keyframe_delta`. See `InterpolationTypes` for standard interpolation options. See `cubic_bezier_parameters` for authoring custom interpolations.
# Default = `InterpolationTypes.Linear`
Interpolation<native><public>:cubic_bezier_parameters = external {}
# Time in seconds the `creative_prop` should animate between its last frame and this frame.
Time<native><public>:float
# A default asset to be used when creating an editor-specified `creative_prop_asset` variable.
DefaultCreativePropAsset<public>:creative_prop_asset = external {}
# Returns an array containing all creative objects which have been marked with the specified `Tag`.
GetCreativeObjectsWithTag<native><public>(Tag:tag)<transacts>:[]creative_object_interface
# Returns an array containing creative objects which have tag(s) matching the specified `SearchCriteria`.
GetCreativeObjectsWithTags<native><public>(SearchCriteria:tag_search_criteria)<transacts>:[]creative_object_interface
Patchwork<public> := module:
cable_splitter_device<public> := class<concrete><final>(patchwork_device):
# Apply a distortion effect to Patchwork audio inputs.
distortion_effect_device<public> := class<concrete><final>(patchwork_device):
# Turn Patchwork note inputs into audio using drum samples.
drum_player_device<public> := class<concrete><final>(patchwork_device):
# Create drum note patterns for Patchwork devices.
drum_sequencer_device<public> := class<concrete><final>(patchwork_device):
# Apply an echo effect to Patchwork audio inputs.
echo_effect_device<public> := class<concrete><final>(patchwork_device):
# Turn Patchwork note inputs into audio using instrument samples.
instrument_player_device<public> := class<concrete><final>(patchwork_device):
# Modify a setting on another Patchwork device in a regularly repeating pattern.
lfo_modulator_device<public> := class<concrete><final>(patchwork_device):
# Define shared settings for Patchwork devices.
music_manager_device<public> := class<concrete><final>(patchwork_device):
# Transpose Patchwork note inputs to follow a chord progression.
note_progressor_device<public> := class<concrete><final>(patchwork_device):
# Create melodic note patterns for Patchwork devices.
note_sequencer_device<public> := class<concrete><final>(patchwork_device):
# Send events to devices based on Patchwork note inputs.
note_trigger_device<public> := class<concrete><final>(patchwork_device):
# Turn Patchwork note inputs into audio using customizable sound synthesis.
omega_synthesizer_device<public> := class<concrete><final>(patchwork_device):
# Base class for all Patchwork devices.
patchwork_device<public> := class<concrete>(creative_device_base):
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Output Patchwork audio for players to hear.
speaker_device<public> := class<concrete><final>(patchwork_device):
# Modify a setting on another Patchwork device in steps over time.
step_modulator_device<public> := class<concrete><final>(patchwork_device):
# Modify a setting on another Patchwork device when triggered.
value_setter_device<public> := class<concrete><final>(patchwork_device):
# Spawns a `creative_prop` at the specified `Position` and `Rotation`. `Position` and `Rotation` units are in cm.
# Returns tuple:
# 0: Instance of a `creative_prop`. False if no `creative_prop` could be created. See `spawn_prop_result` for failure cases.
# 1: Success or failure results.
SpawnProp<native><public>(Asset:creative_prop_asset, Position:vector3, Rotation:rotation)<transacts>:tuple(?creative_prop, spawn_prop_result)
# Spawns a `creative_prop` at the specified `Transform`. `Units are in cm.
# Returns tuple:
# 0: Instance of a `creative_prop`. False if no `creative_prop` could be created. See `spawn_prop_result` for failure cases.
# 1: Success or failure results.
SpawnProp<native><public>(Asset:creative_prop_asset, Transform:transform)<transacts>:tuple(?creative_prop, spawn_prop_result)
# Used to set up islands so players will earn Battle Pass XP when they interact with your island. Accolades are achievements or accomplishments that players can complete to earn XP.
accolades_device<public> := class<concrete><final>(creative_device_base):
# Awards the XP to `agent`.
Award<public>(Agent:agent):void = external {}
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Signaled when testing the accolade to make sure it is awarded as expected. Only signals within unpublished island environments.
# Sends the `agent` receiving the achievement.
TestAwardEvent<public>:listenable(agent) = external {}
# Used in conjunction with `advanced_storm_controller_device` to customize individual storm phases.
advanced_storm_beacon_device<public> := class<concrete><final>(creative_device_base):
# Moves the `advanced_storm_beacon_device` to the specified `Position` and `Rotation` over the specified time, in seconds.
# Existing storms will not target the new location, but newly generated storms will.
MoveTo<override>(Position:vector3, Rotation:rotation, OverTime:float)<suspends>:move_to_result = external {}
# Moves the `advanced_storm_beacon_device` to the specified `Transform` over the specified time, in seconds.
# Existing storms will not target the new location, but newly generated storms will.
MoveTo<override>(Transform:transform, OverTime:float)<suspends>:move_to_result = external {}
# Teleports the `advanced_storm_beacon_device` to the specified `Position` and `Rotation`.
# Existing storms will not target the new location, but newly generated storms will.
TeleportTo<override>(Position:vector3, Rotation:rotation)<transacts><decides>:void = external {}
# Teleports the `advanced_storm_beacon_device` to the specified location defined by `Transform`, also applies rotation and scale accordingly.
# Existing storms will not target the new location, but newly generated storms will.
TeleportTo<override>(Transform:transform)<transacts><decides>:void = external {}
# Used to control a Battle Royale-style storm with up to 50 phases.
#
# Like `basic_storm_controller_device`s, you can use this storm to keep players inside a playable area, but unlike the `basic_storm_controller_device`, this device generates multiple storm phases. When used in conjunction with `advanced_storm_beacon_device`s, you can customize each phase of the storm by applying one or more beacons and setting customization options for the specific phase you assign to that beacon.
advanced_storm_controller_device<public> := class<concrete><final>(storm_controller_device):
# Used to create patrolling behavior for guards spawned with the `guard_spawner_device`.
ai_patrol_path_device<public> := class<concrete><final>(creative_device_base):
# Assign an AI to this patrol path.
Assign<public>(Patroller:agent):void = external {}
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Commands patroller to follow the *Next Patrol Path Group* instead of the default *Patrol Path Group*.
GoToNextPatrolGroup<public>(Patroller:agent):void = external {}
# Signaled when a guard cannot reach the next `ai_patrol_path_device`.
NextNodeUnreachableEvent<public>:listenable(agent) = external {}
# Signaled when a guard reaches this device.
NodeReachedEvent<public>:listenable(agent) = external {}
# Signaled when a guard starts moving on the patrol path.
PatrolPathStartedEvent<public>:listenable(agent) = external {}
# Signaled when a guard stops moving on the patrol path.
PatrolPathStoppedEvent<public>:listenable(agent) = external {}
# Used to boost `agent`s, vehicles, and other objects upwards into the air.
air_vent_device<public> := class<concrete><final>(creative_device_base):
# Activates this device.
Activate<public>():void = external {}
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Used to track `agent` events used to generate analytics.
analytics_device<public> := class<concrete><final>(creative_device_base):
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Submits an event for `Agent`.
Submit<public>(Agent:agent):void = external {}
# Used to select, spawn, and configure a skeletal mesh to play a specific animation.
animated_mesh_device<public> := class<concrete><final>(creative_device_base):
# Pauses playback of the animation.
Pause<public>():void = external {}
# Starts or resumes playback of the animation.
Play<public>():void = external {}
# Starts or resumes reverse playback of the animation.
PlayReverse<public>():void = external {}
# Evaluates attributes for `agent` when signaled from other devices. Acts as branching logic, checking whether the `agent` associated with the signal passes all of the tests setup in this device, then sends a signal on either `PassEvent` or `FailEvent`.
attribute_evaluator_device<public> := class<concrete><final>(trigger_base_device):
# Tests whether the specified agent satisfies the required conditions specified on the device (e.g. eliminations/score), and fires either the `PassEvent` or `FailEvent` accordingly.
EvaluateAgent<public>(Agent:agent):void = external {}
# Signaled when the `agent` from `EvaluateAgent` fails the requirements specified by this device.
# Sends the `agent` originally passed to this device in `EvaluateAgent`.
FailEvent<public>:listenable(agent) = external {}
# Signaled when the `agent` from `EvaluateAgent` passes the requirements specified by this device.
# Sends the `agent` originally passed to this device in `EvaluateAgent`.
PassEvent<public>:listenable(agent) = external {}
# Used to manage sound buses via control bus mixes set on the Audio Mixer Device.
audio_mixer_device<public> := class<concrete><final>(creative_device_base):
# Activates the mix set on the audio mixer.
ActivateMix<public>():void = external {}
# Deactivates the mix set on the audio mixer.
DeactivateMix<public>():void = external {}
# Adds `Agent` as a target when using the *CanBeHeardBy* Registered Players or NonRegisteredPlayers options.
Register<public>(Agent:agent):void = external {}
# Removes `Agent` as a target when using the *CanBeHeardBy* Registered Players or NonRegisteredPlayers options.
Unregister<public>(Agent:agent):void = external {}
# Removes all previously registered `agent`s when using the *CanBeHeardBy* Registered Players or NonRegisteredPlayers options.
UnregisterAll<public>():void = external {}
# Used to configure and play audio from the device location or from registered `agent`s.
audio_player_device<public> := class<concrete><final>(creative_device_base):
# Disables this device. No longer allows this device to be triggered from other linked devices (i.e. triggers) and will stop any currently playing audio.
Disable<public>():void = external {}
# Enables this device. Allows this device to be triggered from other linked devices (i.e. triggers) and allow calls to `Play` to succeed.
Enable<public>():void = external {}
# Hides this device from the world.
Hide<public>()<transacts>:void = external {}
# Starts playing audio from this device.
Play<public>():void = external {}
# Starts playing audio from this device for `Agent`. This can only be used when the device is set to be *Heard by Instigator*.
Play<public>(Agent:agent):void = external {}
# Adds `Agent` as a target to play audio from when activated.
Register<public>(Agent:agent):void = external {}
# Shows this device in the world.
Show<public>()<transacts>:void = external {}
# Stops any audio playing from this device.
Stop<public>():void = external {}
# Stops any audio playing from this device for `Agent`. This can only be used when the device is set to be *Heard by Instigator*.
Stop<public>(Agent:agent):void = external {}
# Removes `Agent` as a target to play audio from when activated.
Unregister<public>(Agent:agent):void = external {}
# Removes all previously registered `agent`s as valid targets to play audio from when activated.
UnregisterAll<public>():void = external {}
# Used to create a customizable turret that can search for nearby targets.
automated_turret_device<public> := class<concrete><final>(creative_device_base):
# Triggers when someone enters the activation radius while nobody else is there.
# Sends the activating `agent`. If the activator is a non-agent then `false` is returned.
ActivatedEvent<public>:listenable(?agent) = external {}
# Triggers when the turret is damaged.
# Sends the triggering `agent`. If the activator is a non-agent then `false` is returned.
DamagedEvent<public>:listenable(?agent) = external {}
# Triggers when the turret is destroyed.
# Sends the triggering `agent`. If the activator is a non-agent then `false` is returned.
DestroyedEvent<public>:listenable(?agent) = external {}
# Disables the turret, causing it to close and ignore its activation radius.
Disable<public>():void = external {}
# Enables the turret to rotate, target, and track.
Enable<public>():void = external {}
# Set the supplied `Agent` as the turret's target.
# * The target will only change if `Agent` is within the activation radius, has direct line-of-sight to the turret,
# is on a targetable team as determined by `Possible Targets`, and is not Down But Not Out.
SetTarget<public>(Agent:agent):void = external {}
# Set the turret to the same team as the supplied `Agent`.
# * Only usable if `Possible Targets` is not set to `Everyone`.
SetTeam<public>(Agent:agent):void = external {}
# Triggers when the turret finds a target.
# Sends the `agent` that was found.
TargetFoundEvent<public>:listenable(agent) = external {}
# Triggers when the turret loses a target.
# Sends the `agent` that was lost.
TargetLostEvent<public>:listenable(agent) = external {}
# Set the turret to the Default Team.
# * Only usable if `Possible Targets` is not set to `Everyone`.
UseDefaultTeam<public>():void = external {}
# Set the turret to the Wildlife & Creatures team.
# * Only usable if `Possible Targets` is not set to `Everyone`.
UseTeamWildlifeAndCreatures<public>():void = external {}
# Used to spawn various types of balls. Can be used to control HUD elements related to the spawned balls.
ball_spawner_device<public> := class<concrete><final>(creative_device_base):
# Hides the floating HUD Icons from players, if these have been configured by the device.
HideHUD<public>():void = external {}
# Shows the floating HUD Icons to players, if these have been configured by the device.
ShowHUD<public>():void = external {}
# Creates an impenetrable zone that can block `agent` movement and weapon fire.
barrier_device<public> := class<concrete><final>(creative_device_base):
# Adds the specified `agent` to a list of additional `agent`s that the Barrier should ignore. This list is in addition to the Ignore Team and Ignore Class options. Note: Has no effect on bullets.
AddToIgnoreList<public>(Agent:agent):void = external {}
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Removes all `agent`s from the ignore list. `Agent`s will still be ignored if they are on an ignored team or of an ignored class.
RemoveAllFromIgnoreList<public>():void = external {}
# Removes the specified `agent` from the ignore list. The `agent` will still be ignored if they are on an ignored team or of an ignored class.
RemoveFromIgnoreList<public>(Agent:agent):void = external {}
# Base class for devices that spawn items.
base_item_spawner_device<public> := class<abstract><epic_internal>(creative_device_base):
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Signaled when an `agent` picks up the spawned item.
# Sends the `agent` that picked up the item.
ItemPickedUpEvent<public>:listenable(agent) = external {}
# A simplified storm device that provides a way to create a single-phase storm and control its basic behaviors.
# To control multiple phases of the storm see `advanced_storm_controller_device`.
basic_storm_controller_device<public> := class<concrete><final>(storm_controller_device):
# Used to show an in world visual effect and/or a HUD marker at the desired location.
beacon_device<public> := class<concrete><final>(creative_device_base):
# Adds the specified `agent` to a list of `agent`s that the Beacon will be shown to. This list of `agent`s is maintained separately from the Team Visibility set of `agent`s.
AddToShowList<public>(Agent:agent):void = external {}
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Removes all `agent`s from the show list. `Agent`s will still see the Beacon if they meet the Team Visibility check.
RemoveAllFromShowList<public>():void = external {}
# Removes the specified `agent` from the show list. The `agent` will still see the Beacon if they meet the Team Visibility check.
RemoveFromShowList<public>(Agent:agent):void = external {}
# Used to display custom text messages on a billboard.
billboard_device<public> := class<concrete><final>(creative_device_base):
# Returns `true` if the device border is enabled.
GetShowBorder<public>()<transacts>:logic = external {}
# Returns the *Text Size* of the device *Text*.
GetTextSize<public>()<transacts>:int = external {}
# Hides the billboard text.
HideText<public>():void = external {}
# Sets the visibility of the device border mesh. This also determines whether the device collision is enabled.
SetShowBorder<public>(Show:logic):void = external {}
# Sets the device *Text*.
SetText<public>(Text:message):void = external {}
# Sets the *Text Size* of the device *Text*. Clamped to range [8, 24].
SetTextSize<public>(Size:int):void = external {}
# Shows the billboard text.
ShowText<public>():void = external {}
# Updates the device display to show the current *Text*.
UpdateDisplay<public>():void = external {}
# Used to create a bouncer that can launch players, vehicles, and more into the air with optional effects.
bouncer_device<public> := class<concrete><final>(creative_device_base):
# Signaled when the condition in the *On Bounced Trigger* option is met and someone or something is launched.
# * Sends the `agent` that bounced. If a vehicle bounced, sends the driver. If a projectile bounced, sends its instigator.
# * Sends `false` if something else bounced, including a vehicle with no driver
BouncedEvent<public>:listenable(?agent) = external {}
# Disables bouncing on this device, as well as any visual and audio effects.
Disable<public>():void = external {}
# Enables bouncing on this device, as well as any visual and audio effects.
Enable<public>():void = external {}
# Signaled when the heal effect starts for an `agent`.
HealStartEvent<public>:listenable(agent) = external {}
# Signaled when the heal effect stops for an `agent`.
HealStopEvent<public>:listenable(agent) = external {}
# Used to create a button which can trigger other devices when an agent interacts with it.
button_device<public> := class<concrete><final>(creative_device_base):
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Returns the duration of the interaction required to activate this device (in seconds).
GetInteractionTime<public>()<transacts>:float = external {}
# Returns the maximum amount of times this button can be interacted with before it will be disabled.
# * `GetTriggerMaxCount` will be between `0` and `10`.
# * `0` indicates no limit on trigger count.
GetMaxTriggerCount<public>()<transacts>:int = external {}
# Returns the number of times that this button can still be interacted with before it will be disabled. Will return `0` if `GetMaxTriggerCount` is unlimited.
GetTriggerCountRemaining<public>()<transacts>:int = external {}
# Signaled when an `agent` successfully interacts with the button for `GetInteractionTime` seconds.
# Sends the `agent` that interacted with the button.
InteractedWithEvent<public>:listenable(agent) = external {}
# Sets the text that displays when an `agent` is close to this button and looks at it. `Text` is limited to `64` characters.
SetInteractionText<public>(Text:message):void = external {}
# Sets the duration of the interaction required to activate this device (in seconds).
SetInteractionTime<public>(Time:float):void = external {}
# Sets the maximum amount of times this button can be interacted with before it will be disabled.
# * `MaxCount` must be between `0` and `10`.
# * `0` indicates no limit on trigger count.
SetMaxTriggerCount<public>(MaxCount:int):void = external {}
# Used to place a campfire in the world that an `agent` can use to heal themselves.
campfire_device<public> := class<concrete><final>(creative_device_base):
# Adds wood to this device.
AddWood<public>():void = external {}
# Signaled when an `agent` enters the area of effect for this device.
# Sends the entering `agent`.
AgentEntersEffectAreaEvent<public>:listenable(agent) = external {}
# Signaled when an `agent` exits the area of effect for this device.
# Sends the exiting `agent`.
AgentExitsEffectAreaEvent<public>:listenable(agent) = external {}
# Signaled when an `agent` is affected by a pulse generated by this device.
# Sends the affected `agent`.
AgentPulsedEvent<public>:listenable(agent) = external {}
# Signaled when this device generates a pulse.
CampfirePulseEvent<public>:listenable(tuple()) = external {}
# Disables this device.
Disable<public>():void = external {}
# Signaled when this device is disabled.
DisabledEvent<public>:listenable(tuple()) = external {}
# Enables this device.
Enable<public>():void = external {}
# Signaled when this device is enabled.
EnabledEvent<public>:listenable(tuple()) = external {}
# Extinguishes this device.
Extinguish<public>(Agent:agent):void = external {}
# Signaled when this device is extinguished by an `agent`.
# Sends the extinguishing `agent`.
ExtinguishedEvent<public>:listenable(agent) = external {}
# Lights this device.
Light<public>(Agent:agent):void = external {}
# Signaled when this device is lit by an `agent`.
# Sends the lighting `agent`.
LitEvent<public>:listenable(agent) = external {}
# Used to create a zone that can trigger effects once players enter it. Can be set up to be capturable by a team, to provide a score while held, or to require a specific item as a drop-off.
capture_area_device<public> := class<concrete><final>(creative_device_base):
# Activates the objective pulse for this device.
ActivateObjectivePulse<public>():void = external {}
# Signaled when an `agent` enters this device area.
# Sends the `agent` that entered this device area.
AgentEntersEvent<public>:listenable(agent) = external {}
# Signaled when an `agent` exits this device area.
# Sends the `agent` that exited this device area.
AgentExitsEvent<public>:listenable(agent) = external {}
# Allows this device to be captured.
AllowCapture<public>():void = external {}
# Signaled when this device is contested.
# Sends the `agent` that is contesting this device.
AreaIsContestedEvent<public>:listenable(agent) = external {}
# Signaled when this device is scored.
# Sends the `agent` that scored this device.
AreaIsScoredEvent<public>:listenable(agent) = external {}
# Signaled when this device control changes.
# Sends the `agent` that triggered this device control change.
ControlChangeEvent<public>:listenable(agent) = external {}
# Signaled when this device control change starts.
# Sends the `agent` that is triggering this device control change.
ControlChangeStartsEvent<public>:listenable(agent) = external {}
# Deactivates the objective pulse for this device.
DeactivateObjectivePulse<public>():void = external {}
# Disables this device.
Disable<public>():void = external {}
# Disallows this device from being captured.
DisallowCapture<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Signaled when the first `agent` enters this device area.
# Sends the `agent` that entered this device area.
FirstAgentEntersEvent<public>:listenable(agent) = external {}
# Returns the *Capture Height* (in meters) of the capture area.
GetHeight<public>()<varies>:float = external {}
# Returns the *Capture Radius* (in meters) of the capture area.
GetRadius<public>()<varies>:float = external {}
# Gives control of this device to the capturing `agent`'s team.
GiveControl<public>(Agent:agent):void = external {}
# Signaled when an item is consumed by this device.
# Sends the `agent` that provided the item to this device.
ItemIsConsumedEvent<public>:listenable(agent) = external {}
# Signaled when an item is delivered to this device.
# Sends the `agent` that delivered the item to this device.
ItemIsDeliveredEvent<public>:listenable(agent) = external {}
# Signaled when the last `agent` exits this device area.
# Sends the `agent` that exited this device area.
LastAgentExitsEvent<public>:listenable(agent) = external {}
# Clears control of this device for all teams.
Neutralize<public>():void = external {}
# Resets control of this device for all teams.
Reset<public>():void = external {}
# Sets the *Capture Height* (in meters) of the capture area.
SetHeight<public>(Height:float):void = external {}
# Sets the *Capture Radius* (in meters) of the capture area.
SetRadius<public>(Radius:float):void = external {}
# Toggles between `AllowCapture` and `DisallowCapture`.
ToggleCaptureAllowed<public>():void = external {}
# Toggles between `Enable` and `Disable`.
ToggleEnabled<public>():void = external {}
# Spawns and tracks a single item as a game objective (e.g. flag).
capture_item_spawner_device<public> := class<concrete><final>(creative_device_base):
# Disables this device.
Disable<public>():void = external {}
# Enables this device.
Enable<public>():void = external {}
# Signaled when spawned item is captured.
# Sends the `agent` that captured the item.
ItemCapturedEvent<public>:listenable(agent) = external {}
# Signaled when spawned item is dropped.
# Sends the `agent` that dropped the item.
ItemDroppedEvent<public>:listenable(agent) = external {}