Example #1
0
    public void SystemFailure()
    {
        int failure = random.Next(100);

        if (failure > failureRate - GetNode <Fabricator>("../Fabricator").failureReduction)
        {
            switch (random.Next(3))
            {
            case 0:
                Fabricator fabricator = GetNode <Fabricator>("../Fabricator");
                fabricator.Broken();
                fabricator.ChangeEfficiency(-0.2f);
                GD.Print("Fabricator Broken");
                break;

            case 1:
                Replicator replicator = GetNode <Replicator>("../Replicator");
                replicator.Broken();
                replicator.ChangeEfficiency(-0.2f);
                GD.Print("Replicator Broken");
                break;

            case 2:
                Scoop scoop = GetNode <Scoop>("../Scoop");
                scoop.Broken();
                scoop.ChangeEfficiency(-0.2f);
                GD.Print("Scoop Broken");
                break;

            case 3:
                Generator generator = GetNode <Generator>("../Generator");
                generator.Broken();
                generator.ChangeEfficiency(-0.2f);
                GD.Print("Generator Broken");
                GetTree().CallGroup("MainSystems", "Disabled");
                break;

            default:
                break;
            }
        }
        else
        {
            GD.Print("No System Failure This Tick");
        }
    }