Question about Player Spawner Device

Sure!

Sorry if the code hurts the eyes of programmers, I’m not a programmer and I’ve been putting the code together by grabbing pieces from other people’s codes. It’s the Frankenstein of codes hahaha. I’m learning, so yeah, sorry for this :melting_face:

If you need something else, let me know!

OnPlayerAdded (NewPlayer : agent) : void=
        Print("Jugador añadido")
        if(PlayerObj := player[NewPlayer]):
            # Comprueba si el jugador ya existe
            if(PlayerExists := AllPlayersMap[NewPlayer]):
                # No se hace nada, el jugador ya existe en el map
            else:
                if(set AllPlayersMap[PlayerObj] = PlayerStats{}):
                    Print("Estadísticas añadidas")
                    if(AgentStats := AllPlayersMap[PlayerObj]):
                        Print("Mis Eliminaciones: {AgentStats.GetEliminationCount()}")

                    if(FortChar : fort_character := NewPlayer.GetFortCharacter[]):
                        FortChar.EliminatedEvent().Subscribe(OnEliminated)

OnEliminated (Result : elimination_result) : void =
        Eliminator := Result.EliminatingCharacter
        Eliminated := Result.EliminatedCharacter

        if (FortCharacter := Eliminator?, EliminatorAgent := FortCharacter.GetAgent[]):
            AddElimination(EliminatorAgent)

        if (FortCharacter := Eliminated, EliminatedAgent := FortCharacter.GetAgent[]):
            AddDeath(EliminatedAgent)

AddDeath (Agent : agent) : void =
        if (PlayerObj := player[Agent]):
            if(AgentStats := AllPlayersMap[PlayerObj]):
                Print("Muerte añadida")
                AgentStats.AddDeath(1)
                AgentStats.RestKstreak(1)
                if (AgentStats.Kstreak < AgentStats.ElimsToBack):
                    ChangeClassWhenDeath(PlayerObj)
                    #TeleportToPrevLevel(PlayerObj, AgentStats)
                    set AgentStats.Kstreak = 0
                    Print("Nivel bajado")

ChangeClassWhenDeath(Agent: agent): void =
        if (PlayerObj := player[Agent]):
            if (AgentStats := AllPlayersMap[PlayerObj]):
                if (AgentStats.Kstreak < AgentStats.ElimsToBack):
                    set AgentStats.NivelActual -= 1
                    var NewLevel: int = AgentStats.NivelActual
                        if (AgentStats.NivelActual < 1):
                            set AgentStats.NivelActual = 1
                            
                        else if (Selector := ClassSelector[NewLevel]):
                            
                            Selector.ChangeClass(PlayerObj)
                            Print("Clase: {NewLevel}")