Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- dir = os.getcwd()
- path = dir+"\\search.txt"
- outputDir=dir+"\\drilbur.txt"
- seedLst = open(path, "r+", encoding="Shift-JIS")
- seedLst.readline()
- output = open(outputDir,"w",encoding="UTF-8")
- springDates = ["1", "2", "6", "7", "8", "9", "10", "14", "15", "16", "17", "18", "19", "22", "23", "24", "25", "26", "30", "31"]
- autumnDates = ["1", "2", "3", "6", "7", "8", "9", "10", "11", "14", "15", "16", "17", "18", "19", "22", "23", "24", "25", "26", "27", "30", "31"]
- winterDates = ["4", "6", "7", "12", "13", "15", "16", "17", "20", "23", "24", "26", "27", "29"]
- natures=['Hardy','Lonely','Brave','Adamant','Naughty','Bold','Docile','Relaxed','Impish','Lax','Timid','Hasty','Serious','Jolly','Naive','Modest','Mild','Quiet','Bashful','Rash','Calm','Gentle','Sassy','Careful','Quirky']
- def rngAdvance(prev):
- next=0x5D588B656C078965 * prev + 0x0000000000269EC3
- return next%0x10000000000000000
- def rngOf(seed,frame):
- prev=seed
- for x in range(0,frame):
- prev=rngAdvance(prev)
- return prev
- def getLandSlot(sel):
- parts=[20, 40, 50, 60, 70, 80, 85, 90, 94, 98, 99, 100]
- for x in range(0,12):
- if sel<parts[x]:
- return x
- def dustGen(seed,frame):
- trigger = rngOf(seed,frame+2)
- slot = rngAdvance(trigger)
- slot = rngAdvance(slot)
- ability = rngAdvance(slot)
- ability = rngAdvance(ability)
- pokenat = rngAdvance(ability)
- isEncounter = int((((trigger>>32)*1000)>>32))
- if isEncounter <400:
- appear = True
- else:
- appear = False
- sel =((slot>>32)*100)>>32
- natsel = ((pokenat>>32)*25)>>32
- id = ability>>32^0x10000^0x80000000
- ability = id>>16&1
- gender = (id&255)
- return [appear,frame,isEncounter,getLandSlot(sel),natures[natsel],ability,gender]
- def drilSearch(seed,min,max):
- drills=[]
- for x in range(min,max+1):
- poke = dustGen(seed,x)
- if poke[0] == True and poke[3] in [6,7,8,9,10,11] and poke[5]==1 and poke[5]<128 and poke[4]=="Adamant":
- drills.append(poke)
- return drills
- ptable = [[50,100,100,100,100],[50,50,100,100,100],[30,50,100,100,100],[25,30,50,100,100],[20,25,33,50,100],[100,100,100,100,100]]
- def getInitialFrame(seed):
- fc = 0
- for x in range (0,5):
- for y in range(0,6):
- for z in range (0,5):
- if ptable[y][z] == 100:
- break
- fc+=1
- seed=rngAdvance(seed)
- rng = seed>>32
- rng = rng*101
- rng = rng>>32
- if rng <= ptable[y][z]:
- break;
- if x == 0:
- adv = 3
- for j in range (0,adv):
- fc+=1
- seed = rngAdvance(seed)
- fc = extra(seed,fc)
- return fc
- def extra(seed,fc):
- loop = True
- limit = 0
- while loop and limit<100:
- loop = False
- tmp = [0,0,0]
- fc+=3
- for x in range (0,3):
- seed = rngAdvance(seed)
- rng = seed>>32
- rng = rng*15
- rng = rng>>32
- tmp[x] = rng
- for i in range (0,3):
- for j in range (0,3):
- if i==j:
- continue
- if tmp[i] == tmp[j]:
- loop = True
- limit+=1
- return fc
- def dustSearch(seed,min,max):
- clouds = []
- rng = rngOf(seed,min-1)
- for x in range(min,max+1):
- rng = rngAdvance(rng)
- if rng>>60 == 0:
- clouds.append(x)
- return clouds
- for line in seedLst:
- parsed = line.split(",")
- seed = parsed[16]
- seed = int(seed,16)
- hour = int(parsed[3])
- minute = int(parsed[4])
- month = parsed[1]
- day = parsed[2]
- acceptableDate = False
- if((month != "2") and (month != "6") and (month != "10")):
- if((month == "1") or (month == "5") or (month == "9")):
- if (day in springDates):
- acceptableDate = True
- elif((month == "4") or (month == "8") or (month == "12")):
- if (day in winterDates):
- acceptableDate = True
- else:
- if (day in autumnDates):
- acceptableDate = True
- if(acceptableDate):
- init = getInitialFrame(seed)
- dusts = dustSearch(seed,init+26,init+30)
- if(len(dusts) >= 0):
- ##drills = drilSearch(seed,dusts[0]+4,dusts[0]+30)
- output.write("Seed: " + str(hex(seed))+"\n")
- output.write("Time: 20"+str(parsed[0])+"/"+str(parsed[1])+"/"+str(parsed[2])+" "+"{:02d}".format(int(parsed[3]))+":"+"{:02d}".format(int(parsed[4]))+":"+"{:02d}".format(int(parsed[5]))+"\n")
- output.write("Key Presses: "+str(parsed[17]).strip()+"\n")
- output.write("Dust Clouds: ")
- output.write("\n\n")
- seedLst.close()
- output.close()
Advertisement
Add Comment
Please, Sign In to add comment