Blade PVP

The Blade PVP gamemode is a player versus player mode using only blades.

class Main
{   
    PointMode = false;
    MaxPoints = 25;
    RespawnDelay = 5.0;
    _hasSpawned = false;
    _dieTimeLeft = 0.0;

    function OnTick()
    {
        if (Game.IsEnding)
        {
            return;
        }
        if (self.PointMode)
        {
            self.UpdatePointMode();
        }
        else
        {
            self.UpdateLastManMode();
        }
    }

    function OnGameStart()
    {
        Game.SetPlaylist("Battle");
        if (self.PointMode)
        {
            Network.MyPlayer.ClearKDR();
        }
    }

    function OnCharacterDie(victim, killer, killerName)
    {
        if (victim.IsMainCharacter)
        {
            self._dieTimeLeft = self.RespawnDelay;
        }
    }

    function UpdatePointMode()
    {
        self._dieTimeLeft = self._dieTimeLeft - Time.TickTime;
        if (Network.MyPlayer.Status == "Dead" && self._dieTimeLeft <= 0.0)
        {
            Game.SpawnPlayer(Network.MyPlayer, false);
        }
        if (Game.GetMiscSetting("PVP") == 2)
        {
            redKills = 0;
            blueKills = 0;
            for (player in Network.Players)
            {
                if (player.Team == "Red")
                {
                    redKills = redKills + player.Kills;
                }
                elif (player.Team == "Blue")
                {
                    blueKills = blueKills + player.Kills;
                }
            }
            if (Network.IsMasterClient)
            {
                if (redKills >= self.MaxPoints)
                {
                    UI.SetLabelAll("MiddleCenter", "Red team wins!");
                    Game.End(10.0);
                }
                elif (blueKills >= self.MaxPoints)
                {
                    UI.SetLabelAll("MiddleCenter", "Blue team wins!");
                    Game.End(10.0);
                }
            }
            UI.SetLabel("TopCenter", "Red: " + Convert.ToString(redKills) + "   Blue: " + Convert.ToString(blueKills));
        }
        else
        {
            if (Network.IsMasterClient)
            {
                for (player in Network.Players)
                {
                    if (player.Kills >= self.MaxPoints)
                    {
                        UI.SetLabelAll("MiddleCenter", player.Name + " wins!");
                        Game.End(10.0);
                    }
                }
            }
            UI.SetLabel("TopCenter", "Points: " + Convert.ToString(Network.MyPlayer.Kills));
        }
    }

    function UpdateLastManMode()
    {
        humans = Game.Humans.Count;
        if (Network.IsMasterClient)
        {
            if (humans > 1)
            {
                self._hasSpawned = true;
            }
            elif (humans == 1 && self._hasSpawned)
            {
                UI.SetLabelAll("MiddleCenter", Game.Humans.Get(0).Player.Name + " wins!");
                Game.End(10.0);
            }
            elif (humans == 0 && self._hasSpawned)
            {
                UI.SetLabelAll("MiddleCenter", "Nobody wins!");
                Game.End(10.0);
            }
        }
        UI.SetLabel("TopCenter", "Players alive: " + Convert.ToString(humans));
    }
}

Last updated