I’ve implemented a player reboot mechanism, where every player has 2 reboots - which i track using a map.
For some specific players, it will consistently not work in game, they will not be respawned .
Even through different game sessions, those players will not reboot on elimination.
For most players, it will work every time.
The reboot function
   RebootPlayer(Player: player)<suspends>: void=
        PlayerRebootCount := RebootPerPlayer[Player] or 0
        if(PlayerRebootCount >= MAX_REBOOTS_PER_PLAYER):
            Print("Reboot - reached max reboots")
            return
        if(set RebootPerPlayer[Player] = PlayerRebootCount + 1) {}
        Sleep(1.0)
        
        RemainingReboots := MAX_REBOOTS_PER_PLAYER - PlayerRebootCount - 1
        TeleporterCount := RebootTeleporters.Length
        TeleportedIDX := GetRandomInt(0,TeleporterCount - 1)
        if:
            Teleporter := RebootTeleporters[TeleportedIDX]
        then:
            Player.Respawn(Teleporter.GetTransform().Translation, Teleporter.GetTransform().Rotation)
            Teleporter.Teleport(Player)
        else:
            Print("Reboot2 FAIL")
            AnalyticsDebugReboot1.Submit(Player)
The reason I’m teleporting after the respawn is to have the player sky dive into the map.
Any idea why this would consistently fail for specific players?
AnalyticsDebugReboot1.Submit(Player) - does not appear in my analytics.