Cranked

The cranked gamemode has players die after a certain time limit, but killing titans increases the time remaining.

Created by Player2.

class Main
{   
    Description = "Survive as long as possible under a time limit. Killing titans adds time. Created by p2.";
    MaxTitans = 15;
    TitanSpawnEvery = 3.0;
    StartTimeLimit = 45.0;
    TitanAddTime = 6.0;
    _CrankedTimeDangerZone = 10.0;
    _hasSpawned = false;
    _hasMyPlayerSpawned = false;
    _spawnTimeLeft = 0.0;
    _startTime = -1.0;
    _endTime = -1.0;

    function OnGameStart()
    {
        if (Network.IsMasterClient)
        {
            Game.SpawnTitans("Default", self.MaxTitans);
        }
    }

    function OnCharacterDie(victim, killer, killerName)
    {
        if (victim.Type == "Titan" && killer.IsMainCharacter)
        {
            self.StartTimeLimit = self.StartTimeLimit + self.TitanAddTime;
        }
        if (victim.IsMainCharacter)
        {
            self._endTime = Time.GameTime;
            self.StartTimeLimit = 0.0;
            self._hasMyPlayerSpawned = false;
        }
    }

    function OnPlayerSpawn(player, character)
    {
        if (player == Network.MyPlayer)
        {
            self._startTime = Time.GameTime;
            self._hasMyPlayerSpawned = true;
        }
    }

    function OutOfTime()
    {
        character = Network.MyPlayer.Character;
        if (character != null && (character.Type == "Human" || character.Type == "Shifter"))
        {
            character.GetKilled("Out of time");
            position = character.Position;
            if (character.Type == "Shifter")
            {
                position = character.NapePosition;
            }
            Game.SpawnEffect("ThunderspearExplode", position, Vector3.Zero, 50.0, Color(255, 255, 255, 255), "Air");
        }
    }

    function OnTick()
    {
        titans = Game.Titans.Count;
        if (!Game.IsEnding && Network.IsMasterClient)
        {
            humans = Game.Humans.Count;
            playerShifters = Game.PlayerShifters.Count;
            if (humans > 0 || playerShifters > 0)
            {
                self._hasSpawned = true;
            }
            if (titans < self.MaxTitans)
            {
                self._spawnTimeLeft = self._spawnTimeLeft - Time.TickTime;
                if (self._spawnTimeLeft <= 0.0)
                {
                    Game.SpawnTitans("Default", 1);
                    self._spawnTimeLeft = self.TitanSpawnEvery;
                }
            }
            else
            {
                self._spawnTimeLeft = self.TitanSpawnEvery;
            }
            if (humans == 0 && playerShifters == 0 && self._hasSpawned)
            {
                UI.SetLabelAll("MiddleCenter", "Humanity failed!");
                Game.End(10.0);
                return;
            }
        }
        if (!self._hasMyPlayerSpawned)
        {
            return;
        }

        self.StartTimeLimit = self.StartTimeLimit - Time.TickTime;
        if (Game.IsEnding)
        {
            self.StartTimeLimit = 0.0;
        }
        if (self.StartTimeLimit <= self._CrankedTimeDangerZone)
        {
            CrankedTimeDisplay = "Cranked Time: <color=#ff0000>" + String.FormatFloat(self.StartTimeLimit, 2) + "</color>"; 
        }
        else
        {
            CrankedTimeDisplay = "Cranked Time: " + Convert.ToString(Convert.ToInt(self.StartTimeLimit)); 
        }
        if (self.StartTimeLimit <= 0)
        {
            self.OutOfTime();
            CrankedTimeDisplay = "Cranked Time: <color=#ff0000>0.00!</color>";
            if (self._endTime != -1.0 && self._startTime != -1.0)
            {
                self._startTime = Math.Min(self._startTime, self._endTime);
                surviveTime = self._endTime - self._startTime;
                CrankedTimeDisplay = CrankedTimeDisplay + String.Newline + "You survived <color=#ffd700>" + String.FormatFloat(surviveTime, 2) + "</color> seconds";
            }
        }
        UI.SetLabel("TopCenter", "Titans Left: " + Convert.ToString(titans) + String.Newline + CrankedTimeDisplay);
    }
}

Last updated