using { /Fortnite.com/Game } using { /Fortnite.com/Devices } using { /Fortnite.com/Characters } using { /Verse.org/Simulation } using { /UnrealEngine.com/Temporary/Diagnostics } using { /Fortnite.com/FortPlayerUtilities } using { /UnrealEngine.com/Temporary/SpatialMath } spectate_device := class(creative_device): @editable PlayerSpawners : []player_spawner_device = array{} @editable Button : button_device = button_device{} @editable OneSpawnClass : class_and_team_selector_device = class_and_team_selector_device{} @editable NoSpawnClass : class_and_team_selector_device = class_and_team_selector_device{} @editable DamageVolume : damage_volume_device = damage_volume_device{} @editable DownButNotOut : down_but_not_out_device = down_but_not_out_device{} OnBegin() : void = Button.InteractedWithEvent.Subscribe(HandleButton) HandleButton(Agent : agent) : void = spawn{HandleButtonAsync(Agent)} HandleButtonAsync(Agent : agent) : void = for (Index -> Player : GetPlayspace().GetPlayers(), FortCharacter := Player.GetFortCharacter[]): Player.Respawn(vector3{Y:= 300.0 * Index, Z:=200.0}, rotation{}) WaitForInactives() for (Player : GetPlayspace().GetPlayers(), FortCharacter := Player.GetFortCharacter[]): NoSpawnClass.ChangeClass(Player) if (FortCharacter.IsDownButNotOut[]): DownButNotOut.Revive(Player) DamageVolume.Enable() Sleep(1.0) DamageVolume.Disable() WaitForInactives() for (Player : GetPlayspace().GetPlayers()): OneSpawnClass.ChangeClass(Player) WaitForInactives() : void = var Inactives : int = 0 loop: set Inactives = 0 for(Player : GetPlayspace().GetPlayers(), FortCharacter := Player.GetFortCharacter[]): if (not FortCharacter.IsActive[]): set Inactives += 1 if(Inactives = 0): break else: Sleep(0.0)