Пример #1
0
def BuildSatts(PlanetList, TechList, FleetList, IdealPlanet, i, n):
    CrystalCost = 2000 * n / IdealPlanet[0].ResScaleFactor
    DeutCost = 500 * n / IdealPlanet[0].ResScaleFactor
    TotalMetal, TotalCrystal, TotalDeut = TotalRes(PlanetList, IdealPlanet)
    if TotalDeut > 0:
        if TotalCrystal >= CrystalCost and TotalDeut >= DeutCost and (
                PlanetList[i].Resource[1] < CrystalCost
                or PlanetList[i].Resource[2] < DeutCost
        ) and PlanetList[i].Shipyard >= 1:
            CrystalCost -= PlanetList[i].Resource[1]
            DeutCost -= PlanetList[i].Resource[2]
            if CrystalCost < 0:
                CrystalCost = 0
            if DeutCost < 0:
                DeutCost = 0
            if CrystalCost > 0 or DeutCost > 0:
                CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, 0,
                            CrystalCost, DeutCost, i)
        if PlanetList[i].Resource[1] > CrystalCost and PlanetList[i].Resource[
                2] > DeutCost and PlanetList[i].Shipyard >= 1:
            print "Built " + str(n) + " Solar Satellites on Planet " + str(i)
            PlanetList[i].Resource[2] -= DeutCost
            PlanetList[i].Resource[1] -= CrystalCost
            PlanetList[i].Satellites += n
            calcenergy(PlanetList, TechList, FleetList, IdealPlanet, i)
            IdealPlanet[0].WaitingFlag = 0
        else:
            if IdealPlanet[0].WaitingFlag == 0 and PlanetList[i].Shipyard >= 1:
                print "Flagged Satts"
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = 0
                IdealPlanet[0].WaitingCrystal = CrystalCost
                IdealPlanet[0].WaitingDeut = DeutCost
        if PlanetList[i].Shipyard < 1:
            IdealPlanet[0].Shipyard = 1
Пример #2
0
def CheckUpAstrophysics(PlanetList, FleetList, IdealPlanet, TechList):
    MetalCost = 100 * round(
        40 * 1.75**TechList[0].Astrophysics) / IdealPlanet[0].ResScaleFactor
    CrystalCost = 100 * round(
        80 * 1.75**TechList[0].Astrophysics) / IdealPlanet[0].ResScaleFactor
    DeutCost = 100 * round(
        40 * 1.75**TechList[0].Astrophysics) / IdealPlanet[0].ResScaleFactor
    TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
    if TMetal >= MetalCost and TCrystal >= CrystalCost and TDeut >= DeutCost and PlanetList[
            0].ResearchLab >= 3:
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost,
                    CrystalCost, DeutCost, 0)
        print "Consolidated resources!"
    else:
        if IdealPlanet[0].WaitingFlag == 0 and TCrystal >= 0.8 * CrystalCost:
            IdealPlanet[0].WaitingFlag = 1
            IdealPlanet[0].WaitingMetal = MetalCost
            IdealPlanet[0].WaitingCrystal = CrystalCost
            IdealPlanet[0].WaitingDeut = DeutCost
    if PlanetList[0].Resource[0] >= MetalCost and PlanetList[0].Resource[
            1] >= CrystalCost and PlanetList[0].Resource[
                2] >= DeutCost and PlanetList[0].ResearchLab >= 3:
        IdealPlanet[0].WaitingFlag = 0
        print "Found Planet was enough for astro!"
        print "Researched Astrophysics level " + str(TechList[0].Astrophysics +
                                                     1) + "!"
        PlanetList[0].Resource[0] -= MetalCost
        PlanetList[0].Resource[1] -= CrystalCost
        PlanetList[0].Resource[2] -= DeutCost
        TechList[0].Astrophysics += 1
        IdealPlanet[0].WaitingFlag = 0
Пример #3
0
def CheckUpSolar(PlanetList, TechList, FleetList, IdealPlanet, i):
    MetalCost = 75 * 1.5**PlanetList[i].SolarPlant / IdealPlanet[
        0].ResScaleFactor
    CrystalCost = 30 * 1.5**PlanetList[i].SolarPlant / IdealPlanet[
        0].ResScaleFactor
    checkupstores(PlanetList, TechList, IdealPlanet, FleetList, MetalCost,
                  CrystalCost, 0, i)
    TotalMetal, TotalCrystal, TotalDeut = TotalRes(PlanetList, IdealPlanet)
    CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost,
                CrystalCost, 0, i)
    if PlanetList[i].Resource[0] >= MetalCost and PlanetList[i].Resource[
            1] >= CrystalCost:
        print "Built Solar Plant Level " + str(
            PlanetList[i].SolarPlant + 1) + " on Planet " + str(i) + "!"
        PlanetList[i].Resource[0] -= MetalCost
        PlanetList[i].Resource[1] -= CrystalCost
        PlanetList[i].SolarPlant += 1
        calcenergy(PlanetList, TechList, FleetList, IdealPlanet, i)
        IdealPlanet[0].WaitingFlag = 0
    else:
        if IdealPlanet[0].WaitingFlag == 0:
            print "Flagged Solar"
            IdealPlanet[0].WaitingFlag = 1
            IdealPlanet[0].WaitingMetal = MetalCost
            IdealPlanet[0].WaitingCrystal = CrystalCost
            IdealPlanet[0].WaitingDeut = 0
Пример #4
0
def CheckRocketLaunchers(PlanetList, TechList, FleetList, IdealPlanet, i):
    if PlanetList[i].Shipyard == 0:
        checkupshipyard(PlanetList, TechList, FleetList, IdealPlanet, i)
    else:
        TMetal, TCrystal, TDeut = TotalRes(PlanetList)
        if PlanetList[i].RocketLauncher < IdealPlanet[0].RocketLauncher:
            Rockets = IdealPlanet[0].RocketLauncher - PlanetList[
                i].RocketLauncher
            RocketCost = Rockets * 2000
            if RocketCost > PlanetList[i].Resource[0]:
                CheckToMove(PlanetList, TechList, FleetList, RocketCost, 0, 0,
                            i)
            if RocketCost < PlanetList[i].Resource[0]:
                PlanetList[i].RocketLauncher += Rockets
                PlanetList[i].Resource[0] -= 2000 * Rockets
                print "Built " + str(
                    Rockets) + " Rocket Launchers on Planet " + str(i) + "!"
                IdealPlanet[0].WaitingFlag = 0
            else:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = RocketCost
                IdealPlanet[0].WaitingCrystal = 0
                IdealPlanet[0].WaitingDeut = 0
        elif (PlanetList[i].Resource[0] > (0.6 * PlanetList[i].MetalCap) and
              (PlanetList[i].Resource[1] <
               (0.3 * PlanetList[i].CrystalCap) or PlanetList[i].Resource[2] <
               (0.3 * PlanetList[i].DeuteriumCap))
              ) or PlanetList[i].Resource[0] > (0.80 * PlanetList[i].MetalCap):
            Rockets = int(PlanetList[i].Resource[0] / 4000)
            PlanetList[i].RocketLauncher += Rockets
            PlanetList[i].Resource[0] -= 2000 * Rockets
            print "Built " + str(
                Rockets) + " Rocket Launchers on Planet " + str(i) + "!"
Пример #5
0
def CheckUpCombustion(PlanetList, FleetList, TechList, IdealPlanet):
    TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
    MetalCost = 400 * 2**TechList[0].CombustionDrive / IdealPlanet[
        0].ResScaleFactor
    DeutCost = 600 * 2**TechList[0].CombustionDrive / IdealPlanet[
        0].ResScaleFactor
    if TMetal >= MetalCost and TDeut >= DeutCost and PlanetList[
            0].ResearchLab >= 1 and TechList[0].CombustionDrive >= 2 and (
                PlanetList[0].Resource[0] < MetalCost
                or PlanetList[0].Resource[2] < DeutCost):
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost, 0,
                    DeutCost, 0)
        print "Consolidated resources!"
    if PlanetList[0].Resource[0] > MetalCost and PlanetList[0].Resource[
            2] > DeutCost:
        print "Researched Combustion Drive level " + str(
            TechList[0].CombustionDrive + 1) + " on planet 1!"
        PlanetList[0].Resource[0] -= MetalCost
        PlanetList[0].Resource[2] -= DeutCost
        TechList[0].CombustionDrive += 1
Пример #6
0
def CheckUpFusion(PlanetList, TechList, FleetList, IdealPlanet, i):
    TotalMetal, TotalCrystal, TotalDeut = TotalRes(PlanetList, IdealPlanet)
    if PlanetList[i].DeuteriumMine >= 5 and TechList[0].Energy >= 3:
        MetalCost = 900 * 1.8**PlanetList[i].FusionPlant / IdealPlanet[
            0].ResScaleFactor
        CrystalCost = 360 * 1.8**PlanetList[i].FusionPlant / IdealPlanet[
            0].ResScaleFactor
        DeutCost = 180 * 1.8**PlanetList[i].FusionPlant / IdealPlanet[
            0].ResScaleFactor
        checkupstores(PlanetList, TechList, IdealPlanet, FleetList, MetalCost,
                      CrystalCost, DeutCost, i)
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost,
                    CrystalCost, DeutCost, i)
        if PlanetList[i].Resource[0] >= MetalCost and PlanetList[i].Resource[
                1] >= CrystalCost and PlanetList[i].Resource[2] >= DeutCost:
            print "Built Fusion Plant Level " + str(
                PlanetList[i].FusionPlant + 1) + " on Planet " + str(i) + "!"
            PlanetList[i].Resource[0] -= MetalCost
            PlanetList[i].Resource[1] -= CrystalCost
            PlanetList[i].Resource[2] -= DeutCost
            PlanetList[i].FusionPlant += 1
            calcenergy(PlanetList, TechList, FleetList, IdealPlanet, i)
            IdealPlanet[0].WaitingFlag = 0
        else:
            if IdealPlanet[0].WaitingFlag == 0:
                print "Flagged Fusion"
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = MetalCost
                IdealPlanet[0].WaitingCrystal = CrystalCost
                IdealPlanet[0].WaitingDeut = DeutCost
    else:
        if PlanetList[i].DeuteriumMine < 5 and IdealPlanet[0].DeuteriumMine < 5:
            IdealPlanet[0].DeuteriumMine = 5
        if PlanetList[i].DeuteriumMine < 5 and IdealPlanet[
                0].DeuteriumMine >= 5:
            CheckUpDeut(PlanetList, TechList, FleetList, IdealPlanet, i)
        if TechList[0].Energy < 3:
            TechList[1].Energy = 3
Пример #7
0
def mining(PlanetList, TechList, FleetList, IdealPlanet):
    metalmax = metalmax2 = 1
    crystalmax = crystalmax2 = 1
    deutmax = deutmax2 = 1
    TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
    for x in range(len(PlanetList)):
        others = PlanetList[x].Resource[1] + PlanetList[x].Resource[2]
        if PlanetList[x].Resource[0] > others:
            CheckRocketLaunchers(
                PlanetList,
                TechList,
                FleetList,
                IdealPlanet,
                x,
            )
        if PlanetList[x].MetalMine < IdealPlanet[0].MetalMine:
            metalmax = 0
            if PlanetList[x].MetalMine < IdealPlanet[0].MetalMine - 3:
                metalmax2 = 0
        if PlanetList[x].CrystalMine < IdealPlanet[0].CrystalMine:
            crystalmax = 0
            if PlanetList[x].CrystalMine < IdealPlanet[0].CrystalMine - 3:
                crystalmax2 = 0
        if PlanetList[x].DeuteriumMine < IdealPlanet[0].DeuteriumMine:
            deutmax = 0
            if PlanetList[x].DeuteriumMine < IdealPlanet[0].DeuteriumMine - 3:
                deutmax2 = 0
    if metalmax2 == 1 and crystalmax2 == 1 and deutmax2 == 1 and len(
            PlanetList) == (
                (TechList[1].Astrophysics + 1) / 2 +
                1) and IdealPlanet[0].WaitingFlag == 0 and miningtype == 1:
        metale, crystale, deute, newcole = EffectiveMining(
            PlanetList, TechList, IdealPlanet)
        if metale >= crystale and metale >= deute:
            IdealPlanet[0].MetalMine += 1
        if crystale >= metale and crystale >= deute:
            IdealPlanet[0].CrystalMine += 1
        if deute >= metale and deute >= crystale:
            IdealPlanet[0].DeuteriumMine += 1
        if newcole > metale and newcole > crystale and newcole > deute:
            if TechList[1].Astrophysics == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[
                    0].WaitingMetal = 4000 / IdealPlanet[0].ResScaleFactor
                IdealPlanet[
                    0].WaitingCrystal = 8000 / IdealPlanet[0].ResScaleFactor
                IdealPlanet[
                    0].WaitingDeut = 4000 / IdealPlanet[0].ResScaleFactor
                TechList[1].Astrophysics = 1
                if IdealPlanet[0].Shipyard < 4:
                    IdealPlanet[0].Shipyard = 4
            else:
                if TechList[0].Astrophysics == TechList[1].Astrophysics:
                    IdealPlanet[0].WaitingFlag = 1
                    IdealPlanet[0].WaitingMetal = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    IdealPlanet[0].WaitingCrystal = 100 * round(
                        80 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    IdealPlanet[0].WaitingDeut = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    TechList[1].Astrophysics += 2
    elif metalmax2 == 1 and crystalmax2 == 1 and deutmax2 == 1 and len(
            PlanetList) == (
                (TechList[1].Astrophysics + 1) / 2 +
                1) and IdealPlanet[0].WaitingFlag == 0 and miningtype == 2:
        metale, crystale, deute, newcole = EffectiveMining(
            PlanetList, TechList, IdealPlanet)
        MetalProd, CrystalProd, DeutProd = TotalProd(PlanetList, TechList,
                                                     FleetList, IdealPlanet)
        MetalMetalTime = 60 * 1.5**IdealPlanet[0].MetalMine / MetalProd
        MetalCrystalTime = 15 * 1.5**IdealPlanet[0].MetalMine / CrystalProd
        MetalTime = MetalCrystalTime + MetalMetalTime - IdealPlanet[
            0].MetalMine / 2
        CrystalMetalTime = 48 * 1.6**IdealPlanet[0].CrystalMine / MetalProd
        CrystalCrystalTime = 24 * 1.6**IdealPlanet[0].CrystalMine / CrystalProd
        CrystalTime = CrystalCrystalTime + CrystalMetalTime
        DeutMetalTime = 225 * 1.5**IdealPlanet[0].DeuteriumMine / MetalProd
        DeutCrystalTime = 75 * 1.5**IdealPlanet[0].DeuteriumMine / CrystalProd
        DeutTime = 2 * DeutCrystalTime + 2 * DeutMetalTime
        newcolmetalcost = 100 * round(
            40 * 1.75**TechList[0].Astrophysics) + 100 * round(
                40 * 1.75**(TechList[0].Astrophysics + 1)
            ) / IdealPlanet[0].ResScaleFactor / IdealPlanet[0].ResScaleFactor
        newcolcrystalcost = 100 * round(
            80 * 1.75**TechList[0].Astrophysics) + 100 * round(
                80 * 1.75**
                (TechList[0].Astrophysics + 1)) / IdealPlanet[0].ResScaleFactor
        newcoldeutcost = 100 * round(
            40 * 1.75**TechList[0].Astrophysics) + 100 * round(
                40 * 1.75**
                (TechList[0].Astrophysics + 1)) / IdealPlanet[0].ResScaleFactor
        for x in range(IdealPlanet[0].MetalMine):
            newcolmetalcost += 60 * 1.5**x / IdealPlanet[0].ResScaleFactor
            newcolcrystalcost += 15 * 1.5**x / IdealPlanet[0].ResScaleFactor
        for x in range(IdealPlanet[0].CrystalMine):
            newcolmetalcost += 48 * 1.6**x / IdealPlanet[0].ResScaleFactor
            newcolcrystalcost += 24 * 1.6**x / IdealPlanet[0].ResScaleFactor
        for x in range(IdealPlanet[0].DeuteriumMine):
            newcolmetalcost += 225 * 1.5**x / IdealPlanet[0].ResScaleFactor
            newcolcrystalcost += 75 * 1.5**x / IdealPlanet[0].ResScaleFactor
        newcolcrystaltime = newcolcrystalcost / CrystalProd
        newcolmetaltime = newcolmetalcost / MetalProd
        if newcolmetaltime < newcolcrystaltime:
            newcoltime = 0.15 * newcolcrystaltime
        else:
            newcoltime = 0.15 * newcolmetaltime
        if MetalTime <= CrystalTime and MetalTime <= DeutTime and MetalTime <= newcoltime:
            IdealPlanet[0].MetalMine += 1
        if CrystalTime <= MetalTime and CrystalTime <= DeutTime and CrystalTime <= newcoltime:
            IdealPlanet[0].CrystalMine += 1
        if DeutTime <= MetalTime and DeutTime <= CrystalTime and DeutTime <= newcoltime:
            IdealPlanet[0].DeuteriumMine += 1
        if newcoltime <= MetalTime and newcoltime <= CrystalTime and newcoltime <= DeutTime:
            if TechList[1].Astrophysics == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[
                    0].WaitingMetal = 4000 / IdealPlanet[0].ResScaleFactor
                IdealPlanet[
                    0].WaitingCrystal = 8000 / IdealPlanet[0].ResScaleFactor
                IdealPlanet[
                    0].WaitingDeut = 4000 / IdealPlanet[0].ResScaleFactor
                TechList[1].Astrophysics = 1
                if IdealPlanet[0].Shipyard < 4:
                    IdealPlanet[0].Shipyard = 4
            else:
                if TechList[0].Astrophysics == TechList[1].Astrophysics:
                    IdealPlanet[0].WaitingFlag = 1
                    IdealPlanet[0].WaitingMetal = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    IdealPlanet[0].WaitingCrystal = 100 * round(
                        80 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    IdealPlanet[0].WaitingDeut = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics
                    ) / IdealPlanet[0].ResScaleFactor
                    TechList[1].Astrophysics += 2
        if TDeut > TMetal + TCrystal:
            TechList[1].CombustionDrive = TechList[0].CombustionDrive + 1
Пример #8
0
    setattr(IdealPlanet[x], 'WaitingMetal', 0)
    setattr(IdealPlanet[x], 'WaitingCrystal', 0)
    setattr(IdealPlanet[x], 'WaitingDeut', 0)
    setattr(IdealPlanet[0], 'ResScaleFactor', 1)
PlanetList = NewPlanet(PlanetList, TechList, FleetList, IdealPlanet, 0, 0, 0)
IdealPlanet[0].MetalMine = 3
upgradechecker = 0
for y in range(1):
    for m in range(12):
        for d in range(30):
            print "day: " + str(y) + ":" + str(m) + ":" + str(d)
            for h in range(23):
                for minute in range(60):
                    if len(PlanetList) < 10:
                        minuteprod(PlanetList)
                        TMetal, TCrystal, TDeut = TotalRes(
                            PlanetList, IdealPlanet)
                        #						if TMetal >= 100000000 or TCrystal >= 100000000 or TDeut >= 100000000:
                        #							IdealPlanet[0].ResScaleFactor *= 10
                        #							for i in range(len(PlanetList)):
                        #								PlanetList[i].Resource[:] = [x/10 for x in PlanetList[i].Resource]
                        if IdealPlanet[0].WaitingFlag == 0 or (
                                IdealPlanet[0].WaitingFlag == 1
                                and TMetal > IdealPlanet[0].WaitingMetal
                                and TCrystal > IdealPlanet[0].WaitingCrystal
                                and TDeut > IdealPlanet[0].WaitingDeut):
                            print "Checking Upgrades!"
                            evenmaintenance(PlanetList, TechList, FleetList,
                                            IdealPlanet)
                            ColonyChecker(PlanetList, TechList, FleetList,
                                          IdealPlanet)
                            teching(PlanetList, TechList, FleetList,
Пример #9
0
def checkupstores(PlanetList, TechList, IdealPlanet, FleetList, Metal, Crystal,
                  Deut, i):
    calcstores(PlanetList, TechList, FleetList, IdealPlanet)
    if Metal >= PlanetList[i].MetalCap - PlanetList[i].Prod[0] / 60:
        TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
        MetalCost = 1000 * 2**PlanetList[i].MetalStorage / IdealPlanet[
            0].ResScaleFactor
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost, 0,
                    0, i)
        if PlanetList[i].Resource[0] >= MetalCost:
            print "Built Metal Storage Level " + str(
                PlanetList[i].MetalStorage + 1) + " on Planet " + str(i) + "!"
            PlanetList[i].Resource[0] -= MetalCost
            PlanetList[i].MetalStorage += 1
            IdealPlanet[0].WaitingFlag = 0
        else:
            if IdealPlanet[0].WaitingFlag == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = MetalCost
    if Crystal >= PlanetList[i].CrystalCap - PlanetList[i].Prod[1] / 60:
        TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
        MetalCost = 1000 * 2**PlanetList[i].CrystalStorage / IdealPlanet[
            0].ResScaleFactor
        CrystalCost = 500 * 2**PlanetList[i].CrystalStorage / IdealPlanet[
            0].ResScaleFactor
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost,
                    CrystalCost, 0, i)
        if PlanetList[i].Resource[0] >= MetalCost and PlanetList[i].Resource[
                1] >= CrystalCost:
            print "Built Crystal Storage Level " + str(
                PlanetList[i].CrystalStorage +
                1) + " on Planet " + str(i) + "!"
            PlanetList[i].Resource[0] -= MetalCost
            PlanetList[i].Resource[1] -= CrystalCost
            PlanetList[i].CrystalStorage += 1
            IdealPlanet[0].WaitingFlag = 0
        else:
            if IdealPlanet[0].WaitingFlag == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = MetalCost
                IdealPlanet[0].WaitingCrystal = CrystalCost
    if Deut >= PlanetList[i].DeuteriumCap - PlanetList[i].Prod[2] / 60:
        TMetal, TCrystal, TDeut = TotalRes(PlanetList, IdealPlanet)
        MetalCost = 1000 * 2**PlanetList[i].CrystalStorage / IdealPlanet[
            0].ResScaleFactor
        CrystalCost = 1000 * 2**PlanetList[i].CrystalStorage / IdealPlanet[
            0].ResScaleFactor
        CheckToMove(PlanetList, TechList, FleetList, IdealPlanet, MetalCost,
                    CrystalCost, 0, i)
        if PlanetList[i].Resource[0] >= MetalCost and PlanetList[i].Resource[
                1] >= CrystalCost:
            print "Built Deuterium Storage Level " + str(
                PlanetList[i].DeuteriumStorage +
                1) + " on Planet " + str(i) + "!"
            PlanetList[i].Resource[0] -= MetalCost
            PlanetList[i].Resource[1] -= CrystalCost
            PlanetList[i].DeuteriumStorage += 1
            IdealPlanet[0].WaitingFlag = 0
        else:
            if IdealPlanet[0].WaitingFlag == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = MetalCost
                IdealPlanet[0].WaitingCrystal = CrystalCost
    calcstores(PlanetList, TechList, FleetList, IdealPlanet)
Пример #10
0
def mining(PlanetList, TechList, FleetList, IdealPlanet):
    metalmax = metalmax2 = 1
    crystalmax = crystalmax2 = 1
    deutmax = deutmax2 = 1
    TMetal, TCrystal, TDeut = TotalRes(PlanetList)
    for x in range(len(PlanetList)):
        others = PlanetList[x].Resource[1] + PlanetList[x].Resource[2]
        if PlanetList[x].Resource[0] > others:
            CheckRocketLaunchers(
                PlanetList,
                TechList,
                FleetList,
                IdealPlanet,
                x,
            )
        if PlanetList[x].MetalMine < IdealPlanet[0].MetalMine:
            metalmax = 0
            if PlanetList[x].MetalMine < IdealPlanet[0].MetalMine - 3:
                metalmax2 = 0
        if PlanetList[x].CrystalMine < IdealPlanet[0].CrystalMine:
            crystalmax = 0
            if PlanetList[x].CrystalMine < IdealPlanet[0].CrystalMine - 3:
                crystalmax2 = 0
        if PlanetList[x].DeuteriumMine < IdealPlanet[0].DeuteriumMine:
            deutmax = 0
            if PlanetList[x].DeuteriumMine < IdealPlanet[0].DeuteriumMine - 3:
                deutmax2 = 0
    if metalmax2 == 1 and crystalmax2 == 1 and deutmax2 == 1 and len(
            PlanetList) == ((TechList[1].Astrophysics + 1) / 2 +
                            1) and IdealPlanet[0].WaitingFlag == 0:
        metale, crystale, deute, newcole = EffectiveMining(
            PlanetList, TechList, IdealPlanet)
        if TMetal < TCrystal + TDeut and metalmax == 1:
            IdealPlanet[0].MetalMine += 1
        if TCrystal < TMetal + TDeut and crystalmax == 1:
            IdealPlanet[0].CrystalMine += 1
        if TDeut < TMetal or TDeut < TCrystal and deutmax == 1:
            IdealPlanet[0].DeuteriumMine += 1
        if newcole > metale and newcole > crystale and newcole * 4 > deute:
            if TechList[1].Astrophysics == 0:
                IdealPlanet[0].WaitingFlag = 1
                IdealPlanet[0].WaitingMetal = 4000
                IdealPlanet[0].WaitingCrystal = 8000
                IdealPlanet[0].WaitingDeut = 4000
                TechList[1].Astrophysics = 1
                if IdealPlanet[0].Shipyard < 4:
                    IdealPlanet[0].Shipyard = 4
            else:
                if TechList[0].Astrophysics == TechList[1].Astrophysics:
                    IdealPlanet[0].WaitingFlag = 1
                    IdealPlanet[0].WaitingMetal = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics)
                    IdealPlanet[0].WaitingCrystal = 100 * round(
                        80 * 1.75**TechList[0].Astrophysics)
                    IdealPlanet[0].WaitingDeut = 100 * round(
                        40 * 1.75**TechList[0].Astrophysics)
                    TechList[1].Astrophysics += 2
    if TDeut > TMetal and TDeut > TCrystal:
        TechList[1].CombustionDrive = TechList[0].CombustionDrive + 1
    if TechList[0].Energy < IdealPlanet[0].FusionPlant + 5:
        TechList[1].Energy = TechList[0].Energy + 1
Пример #11
0
    setattr(IdealPlanet[x], 'WaitingCrystal', 0)
    setattr(IdealPlanet[x], 'WaitingDeut', 0)
IdealPlanet[0].MetalMine = IdealPlanet[0].CrystalMine = IdealPlanet[
    0].Deutmine = 1
FleetList = []
upgradechecker = 0
for y in range(10):
    for m in range(12):
        for d in range(30):
            print "day: " + str(y) + ":" + str(m) + ":" + str(d)
            for h in range(23):
                ColonyChecker(PlanetList, TechList)
                for minute in range(60):
                    #					if len(PlanetList) < 9:
                    minuteprod(PlanetList)
                    TMetal, TCrystal, TDeut = TotalRes(PlanetList)
                    if IdealPlanet[0].WaitingFlag == 0 or (
                            IdealPlanet[0].WaitingFlag == 1
                            and TMetal > IdealPlanet[0].WaitingMetal
                            and TCrystal > IdealPlanet[0].WaitingCrystal
                            and TDeut > IdealPlanet[0].WaitingDeut
                            and TechList[0].CombustionDrive >= 2):
                        print "Checking Upgrades!"
                        teching(PlanetList, TechList, FleetList, IdealPlanet)
                        evenmaintenance(PlanetList, TechList, FleetList,
                                        IdealPlanet)
                        mining(PlanetList, TechList, FleetList, IdealPlanet)
#							upgradechecker = 0
#						if IdealPlanet[0].WaitingFlag == 1 and upgradechecker == 0:
#							upgradechecker = 1
#							metalmax = 1