Exemple #1
0
def displayDetails(seeds,cartDays,krobusDays):
        for seed in seeds:
            print(seed)
            print(json.dumps(RandomBundlesSeeding.generate_random_bundles(seed), indent=4))
            for day in cartDays:
                print(day)
                stock = TravelingCart.getTravelingMerchantStock_1_4(seed+day,"1.5")
                for item in stock.items():
                    print(SeedUtility.getItemFromIndex(item[0]))
            print("Krobus")
            for day in krobusDays:
                print(day)
                print(SeedUtility.getItemFromIndex( SeedUtility.uniqueKrobusStock(seed,day)))
Exemple #2
0
def findFireQuartz(seed):
    #Will also return if enough gold is before the quartz
    goldOre = 0
    goldOreAmount = 0
    ironOre = 0
    ironOreAmount = 0
    fireQuartz = 0
    frozenTear = 0
    for number in range(1, 10):
        item = SeedUtility.nextGeodeItem(seed, number, "Omni", 20, "1.5")
        if item[0] == 384 and goldOre == 0:
            goldOreAmount = goldOreAmount + item[1]
            if goldOreAmount >= 5:
                goldOre = number
        if item[0] == 380 and ironOre == 0:
            ironOreAmount = ironOreAmount + item[1]
            if ironOreAmount >= 5:
                ironOre = number
        if item[0] == 82 and fireQuartz == 0:
            fireQuartz = number
        if item[0] == 84 and frozenTear == 0:
            frozenTear = number

        if fireQuartz > 0 and frozenTear > 0 and goldOre > 0 and ironOre > 0:
            return (goldOre, ironOre, fireQuartz, frozenTear)
    if fireQuartz > 0 and frozenTear > 0:
        return (goldOre, ironOre, fireQuartz, frozenTear)

    return None
Exemple #3
0
def GetQuestItem(seed, daysPlayed, recipesKnown=1, mineFloor=0):
    random = Cs(seed + daysPlayed)
    random.Sample()  # Selecting person
    season = (daysPlayed - 1) // 28 % 4
    if season != 3 and random.Sample() < 0.15:
        possibleCrops = GetPossibleCrops(season,
                                         ((daysPlayed - 1) % 28) + 1 <= 7)
        return possibleCrops[random.Next(len(possibleCrops))]
    return SeedUtility.randomItemFromSeason(seed, daysPlayed, 1000, False,
                                            True, recipesKnown, mineFloor)
def findMine50Seed():
    import Location
    backwoods = Location.createBackwoods()
    mountain = Location.createMountain()
    busstop = Location.createBusstop()
    #seeds = [10403262,13754340,25570430,25570472,35218188,40465024,57766188,58102146,68259952,82070350,84812874,84812876,98049168,115686278,130244860,131297220,132413232,140738670,150386318,159698094,162202406,163286626,163286698,175676880,180923750,182007970,188913146,189997390,204891996,217432956,220870788,226691734,233260920,257229186,259733536,266876812,274866242,277034684,277370624,283939828,287018314,287018316,295755912,303745350,303745352,317811860,318639990,325547646,326629332,330792014,351171634,361329492,365492130,380050702,380050790,388376138,393861166,412344316,412344340,415324968,420571828,462177108,465765748,466003824,470166534,479240194,485061170,488664542,494134766,502124164,503208370,512856042,520845452,523349808,554511114,554511178,554511180,561366536,577345370,577345374,578429504,594408300,598235046,604056036,608966982,637671954,660219954,664382658,676534746,685272308,688350866]
    for seed in range(101147684, 999999999, 2):
        #if seed % 1000000 == 0:
        #print("searching: " + str(seed))

        if not su.dishOfTheDay(seed, 5, 4) == 204:
            continue

        luck = su.dailyLuck(seed, 5, 4)
        if luck < 0.1:
            continue
        if not TrashCans.checkTrash(seed, 5, 5, 0, 0, False, luck,
                                    "1.4") == 'DishOfTheDay':
            continue

        if su.doesSeedHaveMonsterFloorMines(seed, 5, 50):
            continue

        if su.doesSeedHaveUnusualDarkFloor(seed, 5, 30):
            continue

        #busstop.processDay(seed,5)
    # mountain.processDay(seed,5)

        leekCount = 0
        for item in busstop.items.items():
            if item[1] == "Leek":
                leekCount = leekCount + 1

        for item in mountain.items.items():
            if item[1] == "Leek":
                leekCount = leekCount + 1

        if leekCount < 5:
            continue

        print(str(seed) + " Leeks: " + str(leekCount))
Exemple #5
0
def checkQuests(seed, days):
    for day in days:
        if not IsQuestItem(seed, day):
            continue

        if day == 2:

            personList = [
                "Robin",
                "Lewis",
                "Demetrius",
            ]
        elif day < 8:
            personList = ["Robin", "Lewis", "Demetrius", "Willy"]
        else:
            personList = ["Robin", "Lewis", "Demetrius", "Willy", "Marnie"]
        print(
            str(day) + " " +
            SeedUtility.getItemFromIndex(GetQuestItem(seed, day)) + " " +
            GetRandomPerson(seed, day, personList))
Exemple #6
0
def AnalyseSeed(seed,
                report=False,
                horseradishDay=0,
                strict=False,
                inputluck=0.08):
    result = Cs(seed + 20).Sample()
    if not (0.75 <= result < 0.7599646317):
        return

    if report:
        print(seed)
    goodSpringItems = {16, 18, 20, 22, 24}
    goodSummerItems = {396, 398, 402, 254, 256, 264, 262, 260}
    friendships = ["Robin", "Lewis", "Shane", "Marnie"]

    found = False
    possibleSteps = []
    possibleSteps2 = []
    steps = 0
    if strict:
        for steps in range(240):
            if SeedUtility.dishOfTheDay(seed, 20, steps)[0] == 215:
                possibleSteps.extend([steps])
                found = True

        if not found:
            return
        lowestLuck = 999
        beststeps = 0
        for steps in possibleSteps:
            luck = SeedUtility.dailyLuck(seed, 20, steps)
            if TrashCans.checkSpecificTrash(seed, 20, 5, False,
                                            luck) == 'DishOfTheDay':
                possibleSteps2.extend([steps])
                if luck < lowestLuck:
                    beststeps = steps
                    lowestLuck = luck

        if possibleSteps2 == []:
            return
        steps = beststeps
        if report:
            print(possibleSteps2)
    if strict:
        for day in range(1, 22):
            event = SeedUtility.nightEvent(seed, day)
            if event == "Meteor" or event == "Fairy":
                return

    count = 0
    firstQuest = False
    horseradishQuest = False
    dailyTrash = list()
    availableTrash = list()
    validDay = list()
    days = [20, 22, 26, 28, 30, 43, 45, 47, 49, 51, 53]
    for day in days:
        luck = inputluck
        if strict:
            if count == 0:
                luck = SeedUtility.dailyLuck(seed, 3, beststeps)

        if count == 0 and not TrashCans.checkSpecificTrash(
                seed, day, 5, False, luck) == 'DishOfTheDay':
            return

        if count < 1:
            recipes = 1
        else:
            recipes = 2

        #if day > 46: #7 heart
        #    recipes = recipes + 1

        item = GetQuestItem(seed, day, recipes)

        if day == 30 and item in {254, 256, 264, 262, 260}:
            return

        checkedTrash = False
        cans = [0, 1, 2, 5, 6]
        if not (item in goodSpringItems or item in goodSummerItems):
            dailyTrash.clear
            dailyTrash = TrashCans.checkCans(seed, day, cans, False, luck)
            if (dailyTrash == None or item not in dailyTrash) and (
                    availableTrash == None or item not in availableTrash):
                if day == 20:
                    return

                continue
            checkedTrash = True

        if not checkedTrash:
            dailyTrash.clear
            dailyTrash = TrashCans.checkCans(seed, day, cans, False, luck)

        availableTrash.extend(dailyTrash)
        if checkedTrash:
            availableTrash.remove(item)
        firstQuest = False
        count = count + 1

        validDay.extend([day])
        if report:
            print(str(day) + ": " + SeedUtility.getItemFromIndex(item))
    if count < 8:
        return

    if not report:
        print(str(seed) + " " + str(count))
        f = open(filename, "at")
        f.write(str(seed) + " " + str(count) + '\n')
        f.close()

    return validDay
Exemple #7
0
            days = AnalyseSeed(seed, True, 0, True, 0.08)
            if days == None:
                continue
            #days = []
            for day in days:
                flag = False
                Cans = TrashCans.dayToYSD(day) + "\n"
                for i in [0, 1, 2, 5, 6]:
                    can = TrashCans.GarbageLocations[i]
                    item, minLuck = TrashCans.checkTrash(
                        seed, day, i, can[0][0], can[0][1], False, 0.08, "1.4",
                        True)
                    if item is not None:
                        flag = True
                        Cans = Cans + (
                            "\t %s : %s\n" %
                            (can[1], SeedUtility.getItemFromIndex(item) +
                             ", Minimum luck: " + str(minLuck)))
                if flag:
                    print(Cans)

                print(checkForGoodHorseradish(seed, day))
            for day in range(30, 37):
                if not IsQuestItem(day, seed):
                    continue
                if not IsRightRandomPerson(
                        seed, day, ["Robin", "Lewis", "Shane", "Marnie"],
                        "Shane"):
                    continue
                print(SeedUtility.getItemFromIndex(GetQuestItem(seed, day)))
Exemple #8
0
def findSeed():
    cartDays = [5,7,12,14,19,21,26,28]
    krobusDays = [10,17,24]
    bestSeed = 0
    bestSeedAmount = 99999


    seeds = range(startRange,endRange)
    for seed in seeds:
        if seed % 10000 == 0:
            cleanupCache(seed)

        if seed % 1000000 == 0:
            print("Searching: " + str(seed))
            f = open(filename,"at")
            f.write("searching: " + str(seed) + '\n')
            f.close()

        #Find bundles for this seed
        requiredItems,hasFairyItems = RandomBundlesSeeding.getAllSeasonalRequiredItems(seed, "Quality Crops","Quality Fish")

        #Check if seed is valid
        if -1 in requiredItems:
            continue

        #Requires a fairy morning of Summer 2
        hasFairy = SeedUtility.nightEvent(seed,30) == "Fairy"
        if hasFairyItems and not hasFairy:
            continue

        if hasFairy:
            for fairyItem in fairyItems:
                while fairyItem in requiredItems:
                    del requiredItems[requiredItems.index(fairyItem)]

        #Look at travelling cart for Spring
        #neededItems = {140:1,266:1,272:1,276:1,408:1,416:1,418:1,699:1}
        #neededItems = {140:1,272:1,276:1,408:1,416:1,418:1,699:1}

        #idealItems= [254,256,258,260,270,376,421,266]


        summerCrops = 0

        for day in cartDays:
            if seed+day in travelingCartCache:
                stock = travelingCartCache[seed+day]
            else:
                stock = TravelingCart.getTravelingMerchantStock_1_4(seed+day,"1.5")
                travelingCartCache[seed+day] = stock
            for item in stock.items():
                if item[0] == 262:
                    summerCrops = summerCrops + item[1][1]
                if item[0] not in requiredItems:
                    continue
                del requiredItems[requiredItems.index(item[0])]
               
        for day in krobusDays:
            kroItem = SeedUtility.uniqueKrobusStock(seed,day)
            if kroItem not in requiredItems:
                continue
            del requiredItems[requiredItems.index(kroItem)]

        if 266 in requiredItems:
            random = Random(seed*12)
            if random.Next(2,31) <= 8:
                del requiredItems[requiredItems.index(266)]

        needTrash = False
        if 150 in requiredItems:
            del requiredItems[requiredItems.index(150)]
            needTrash = True
        #Hack for Garden bundle
        if len(requiredItems) == 1:
            if 593 in requiredItems:
               del requiredItems[requiredItems.index(593)]
            if 595 in requiredItems:
               del requiredItems[requiredItems.index(595)]
            if 421 in requiredItems:
               del requiredItems[requiredItems.index(421)]

            

        if requiredItems == []:
            print(str(seed) + " " + str(summerCrops) + " Need Trash: " + str(needTrash))
            f = open(filename,"at")
            f.write(str(seed) + " " + str(summerCrops) + " Need Trash: " + str(needTrash) + '\n')
            f.close()

        if len(requiredItems) < bestSeedAmount:
            bestSeed = seed
            bestSeedAmount = len(requiredItems)
def findSeed():
    cartDays = [5,7,12,14,19,21,26,28]
    krobusDays = [10,17,24]
    #krobusDays= [24]
    bestSeed = 0
    bestSeedAmount = 99999
    seeds = range(-1000000000,2147483648)
    #seeds = [-522420324,-1592059384,-1465407692,-1028626208,-448726017,-292239603,-122162209,611235816]
    #seeds=[611235816,690079572,1008139240,-2131847362,-1984324702,-1881191744,-1878196469,-1807801067,-1804000585,-1776233795,-1770833157,-1736458165,-1732797703,-1697547940,-1646855095,-1592059384,-1465407692,-1463762811,-1453051255,-1268229407,-1230761571,-1160997286,-1157820029,-1153587803,-1128195071,-1098339703,-1074465120,-1030968205,-1028626208,-1023756801,-1014545826,-1004721616,-925020035,-922687671,-811091642,-809908649,-709968377,-638161535,-625569381,-608034108,-595706433,-573015200,-522810374,-522420324,-448726017,-439807257,-413811947,-403148417,-324791433,-292239603,-267600127,-189564877,-186796577,-170441087,-122162209,-83611757]
    for seed in seeds:
        if seed % 1000000 == 0:
            print("Searching: " + str(seed))

        #Requires a fairy morning of Summer 2
        if not SeedUtility.nightEvent(seed,30) == "Fairy":
            continue

        #Look at travelling cart for Spring
        neededItems = {140:1,266:1,272:1,276:1,408:1,416:1,418:1,699:1}

        #idealItems= [254,256,258,260,270,376,421]

        #cabbageSeed = True

        #summerCrops = 0

        for day in cartDays:
            stock = TravelingCart.getTravelingMerchantStock_1_4(seed+day)
            for item in stock.items():
                #if item[0] in idealItems:
                #    summerCrops = summerCrops + 1
                #    idealItems.remove(item[0])
                #if item[0] == 262:
                #    summerCrops = summerCrops + item[1][1]
                #if item[0] == 266 and cabbageSeed:
                #    cabbageSeed = False
                if item[0] == 485 and 266 in neededItems:
                    item = (266,(item[1][0],item[1][1]))
                #    cabbageSeed = True
                if item[0] not in neededItems:
                    continue
                quantity = neededItems[item[0]] - item[1][1]
                if quantity <= 0:
                    del neededItems[item[0]]
                else:
                    neededItems[item[0]] = quantity
               
        for day in krobusDays:
            kroItem = SeedUtility.uniqueKrobusStock(seed,day)
            if kroItem not in neededItems:
                continue
            del neededItems[kroItem]

        #if cabbageSeed:
        #    summerCrops =  summerCrops - 1


        if neededItems == {}: # and summerCrops >1:
            print(seed)

        if len(neededItems) < bestSeedAmount:
            bestSeed = seed
            bestSeedAmount = len(neededItems)
    print(bestSeed)
    print(bestSeedAmount)
Exemple #10
0
def analyseSeed(seed, day):
    summer = day
    print(seed)
    busstop = Location.createBusstop()
    mountain = Location.createMountain()
    forest = Location.createForest()
    town = Location.createTown()
    busstop.processDay(seed, summer)
    mountain.processDay(seed, summer)
    forest.processDay(seed, summer)
    town.processDay(seed, summer)
    print(busstop.items)
    print(mountain.items)
    print(forest.items)
    print(town.items)
    #for lday in range(5,19):
    #   print(str(lday) + " " + str(SeedUtility.dailyLuck(seed, lday, lday-1)))


if __name__ == '__main__':
    findBoilerRoomSeed()
    #analyseSeeds();
    #print(TravelingCart.getTravelingMerchantStock(53234174,21,"1.4"))
    seed = 14542796
    for lday in range(5, 25):
        print(
            str(lday) + " " +
            str(SeedUtility.dailyLuck(seed, lday, lday - 1)) + " " +
            str(SeedUtility.doesSeedHaveMonsterFloorMines(seed, lday, 21)))
def writeAllSeedsToFile():

    file = open("F:\SDV\Cart.txt", "ab")

    startSeed = -2147483648
    endSeed = 2147483647

    for seed in range(startSeed, endSeed + 1):
        file.write(
            format(seed, 'b') + format(":", 'b') + format(
                getTravelingMerchantStock_1_4(seed) + format(",\n", 'b'), 'b'))


if __name__ == '__main__':
    #findBundleSeed()
    #writeAllSeedsToFile();

    cartDays = [5, 7, 12, 14, 19, 21, 26, 28, 33, 35]
    seed = 269903083

    for day in cartDays:
        print(day)
        stock = getTravelingMerchantStock_1_4(seed + day,
                                              "1.5",
                                              rareSeeds=True)
        print(stock)
        for item in stock.items():
            print(SeedUtility.getItemFromIndex(item[0]))
            print(item[1])
Exemple #12
0
def randomItemFromSeason(gameID, day, seedAdd, furnace=False, mineFloor=0):
    return SeedUtility.randomItemFromSeason(gameID, day, seedAdd, furnace,
                                            mineFloor)
Exemple #13
0
def checkCans(gameID, day, cans, furnace=False, luck=0.0, version="1.4"):
    results = []
    for i in cans:
        item = checkSpecificTrash(gameID, day, i, furnace, luck, version)
        if not item == None:
            results.extend([item])
    return results


if __name__ == '__main__':
    import sys
    if len(sys.argv) >= 2:
        gameID = int(sys.argv[1])
    else:
        gameID = 2000946767
    days = range(1, 31)
    for day in days:
        flag = False
        Cans = dayToYSD(day) + "\n"
        for i in range(8):
            can = GarbageLocations[i]
            item, luck = checkTrash(gameID, day, i, can[0][0], can[0][1],
                                    False, 0.10, "1.4", True)
            if item is not None:
                flag = True
                Cans = Cans + ("\t %s : %s\n" %
                               (can[1], SeedUtility.getItemFromIndex(item) +
                                ", Minimum luck: " + str(luck)))
        if flag:
            print(Cans)