Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import operator
- print ' _________________________________________'
- print '| FR/LG unown RNG tool |'
- print '| |'
- print '|inputs: Seed in hex, starting frame, |'
- print '| ending frame, y/n if you want |'
- print '|made by shiny only, and the letter of |'
- print '| Amab the unown you want |'
- print '|_________________________________________|'
- seed = raw_input('Seed = 0x')
- minframe = raw_input('Starting: ')
- maxframe = raw_input('Calc to: ')
- shinyonly = raw_input('Shiny only y/n? ')
- if shinyonly == 'y':
- TID = raw_input('TID: ')
- SID = raw_input('SID: ')
- letter = raw_input('Letter? ')
- seed = int(seed,16)
- if letter == 'A':
- lesv = [0,1,2,3,4,5,6,7,8,9,10]
- room = 1
- if letter == 'B':
- lesv = [10,11]
- room = 6
- if letter == 'C':
- lesv = [0,1,2]
- room = 2
- if letter == 'D':
- lesv = [3,4,5]
- room = 2
- if letter == 'E':
- lesv = [10,11]
- room = 3
- if letter == 'F':
- lesv = [7,8,9]
- room = 5
- if letter == 'G':
- lesv = [4,5,6]
- room = 5
- if letter == 'H':
- lesv = [6,7,8]
- room = 2
- if letter == 'I':
- lesv = [8,9]
- room = 3
- if letter == 'J':
- lesv = [4,5]
- room = 4
- if letter == 'K':
- lesv = [10,11]
- room = 5
- if letter == 'L':
- lesv = [2,3]
- room = 4
- if letter == 'M':
- lesv = [8,9]
- room = 6
- if letter == 'N':
- lesv = [0,1,2,3]
- room = 3
- if letter == 'O':
- lesv = [11]
- room = 2
- if letter == 'P':
- lesv = [0,1]
- room = 4
- if letter == 'Q':
- lesv = [9,10,11]
- room = 4
- if letter == 'R':
- lesv = [6,7,8]
- room = 4
- if letter == 'S':
- lesv = [4,5,6,7]
- room = 3
- if letter == 'T':
- lesv = [2,3]
- room = 5
- if letter == 'U':
- lesv = [9,10]
- room = 2
- if letter == 'V':
- lesv = [0,1,2]
- room = 6
- if letter == 'W':
- lesv = [3,4,5]
- room = 6
- if letter == 'X':
- lesv = [6,7]
- room = 6
- if letter == 'Y':
- lesv = [0,1]
- room = 5
- if letter == 'Z':
- lesv = [0,1,2,3,4,5,6,7,8,9,10]
- room = 7
- if letter == '!':
- lesv = [11]
- room = 7
- if letter == '?':
- lesv = [11]
- room = 1
- print 'Frame ESV Occ. PID Letter Spread'
- def rng(seed,j):
- k = 0
- while (k <= j):
- newseed = seed
- seed = (0x00004E6D*(seed%65536)+((0x000041C6*(seed%65536)+0x00004E6D*math.floor(seed/65536))%65536)*65536+0x00006073)%(4294967296) #formula
- k += 1
- return seed
- def Unowntest(PID):
- PIDb = str(bin(PID))
- PIDb = PIDb[2:]
- while len(PIDb) < 32:
- PIDb = '0' + PIDb
- byt = str(PIDb[6:8]) + str(PIDb[14:16]) + str(PIDb[22:24]) + str(PIDb[30:32])
- bytint = int(byt,2)%28
- charlist = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','!','?']
- lt = charlist[bytint]
- return lt
- def roomtest(room):
- room = int(room)
- if room == 1:
- Ulist = ['A', '?']
- if room == 2:
- Ulist = ['C', 'D','H','U','O']
- if room == 3:
- Ulist = ['E', 'I','N','S']
- if room == 4:
- Ulist = ['J', 'L','P','Q','R']
- if room == 5:
- Ulist = ['F', 'G', 'K','T','Y']
- if room == 6:
- Ulist = ['B', 'M', 'V','W','X']
- if room == 7:
- Ulist = ['Z', '!']
- return Ulist
- def methodH1(seed,frame):
- eo = frame % 2
- h = frame
- seed1 = int(rng(seed,0))
- snature = hex(int(rng(seed1,0)))[2:6]
- ESV = hex(int(seed))[2:6]
- ESV = int(ESV,16)%100
- if ESV in range(0,20):
- ESV = 0
- if ESV in range(20,40):
- ESV = 1
- if ESV in range(40,50):
- ESV = 2
- if ESV in range(50,60):
- ESV = 3
- if ESV in range(60,70):
- ESV = 4
- if ESV in range(70,80):
- ESV = 5
- if ESV in range(80,85):
- ESV = 6
- if ESV in range(85,90):
- ESV = 7
- if ESV in range(90,94):
- ESV = 8
- if ESV in range(94,98):
- ESV = 9
- if ESV == 98:
- ESV = 10
- if ESV == 99:
- ESV = 11
- return ESV
- #snature = int(snature,16)%25
- #seedint = int(rng(seed1,0))
- #PID = int(((seed1 >> 16)*0x10000 + (seedint>>16)))
- #PID = str(PID)
- #PID = PID[6:10] + PID[2:6]
- # while int(PID,16)%25 != snature:
- #h = h+1
- #seed1 = seedint
- #seedint = int(rng(seed1,0))
- #if h%2 == eo:
- #PID = int(((seed1 >> 16)*0x10000 + (seedint>>16)))
- #PID = hex(PID)
- #PID = str(PID)
- #PID = PID[6:10] + PID[2:6]
- #if int(PID,16)%25 == snature:
- #return ESV
- def shinytest(PIDs,TIDb,SIDb):
- PIDup = str(bin(int(PIDs[0:4],16)))
- PIDup = PIDup[2:]
- while len(PIDup) < 16:
- PIDup = '0' + PIDup
- PIDlow = str(bin(int(PIDs[4:8],16)))
- PIDlow = PIDlow[2:]
- while len(PIDlow) < 16:
- PIDlow = '0' + PIDlow
- shin = "!!!"
- for k in range(0,12):
- sum = int(PIDup[k],2) + int(PIDlow[k],2) + int(TIDb[k],2) + int(SIDb[k],2)
- #print sum
- if shin != " ":
- if sum == 1 or sum == 3:
- shin = " "
- return shin
- def checkfornextunown(seed,frame):
- eo = frame % 2
- h = frame
- seedint = int(rng(seed,0))
- PID = int(((seed >> 16)*0x10000 + (seedint>>16)))
- IV1 = hex(int(rng(seedint,0)))[2:6]
- IV2 = hex(int(rng(seedint,1)))[2:6]
- IV1b = bin(int(IV1,16))[2:]
- IV2b = bin(int(IV2,16))[2:]
- while len(IV1b) < 16:
- IV1b = '0' + IV1b
- while len(IV2b) < 16:
- IV2b = '0' + IV2b
- HPiv = str(int(IV1b[11:16],2))
- Atkiv = str(int(IV1b[6:11],2))
- Defiv = str(int(IV1b[1:6],2))
- Speediv = str(int(IV2b[11:16],2))
- Spaiv = str(int(IV2b[6:11],2))
- Spdiv = str(int(IV2b[1:6],2))
- let = Unowntest(PID)
- while let != letter:
- h = h + 1
- seed1 = seedint
- seedint = int(rng(seed1,0))
- if h%2 == eo:
- PID = int(((seed1 >> 16)*0x10000 + (seedint>>16)))
- let = Unowntest(PID)
- IV1 = hex(int(rng(seedint,0)))[2:6]
- IV2 = hex(int(rng(seedint,1)))[2:6]
- IV1b = bin(int(IV1,16))[2:]
- IV2b = bin(int(IV2,16))[2:]
- while len(IV1b) < 16:
- IV1b = '0' + IV1b
- while len(IV2b) < 16:
- IV2b = '0' + IV2b
- HPiv = str(int(IV1b[11:16],2))
- Atkiv = str(int(IV1b[6:11],2))
- Defiv = str(int(IV1b[1:6],2))
- Speediv = str(int(IV2b[11:16],2))
- Spaiv = str(int(IV2b[6:11],2))
- Spdiv = str(int(IV2b[1:6],2))
- result = [PID, h, HPiv, Atkiv, Defiv, Speediv, Spaiv, Spdiv]
- return result
- def printframe(newseed):
- PID = newseed[0]
- foundframe = newseed[1]
- HPiv = newseed[2]
- Atkiv = newseed[3]
- Defiv = newseed[4]
- Speediv = newseed[5]
- Spaiv = newseed[6]
- Spdiv = newseed[7]
- #PID = int(((seed >> 16)*0x10000 + (seedint>>16)))
- let = Unowntest(PID)
- nature = int(PID%25)
- nature = natures[nature]
- PIDs = str(hex(int(PID)))
- PIDs = PIDs[2:]
- if PIDs[len(PIDs)-1] == 'L':
- PIDs = PIDs[:-1]
- while len(PIDs) < 8:
- PIDs = '0'+PIDs
- shin = shinytest(PIDs,TIDb,SIDb)
- if shinyonly == "y":
- if let in ulist and shin == "!!!":
- print str(frame) + ' ' + str(ESV) + ' ' + str(foundframe) +' ' + PIDs + ' ' + str(let) + ' ' + nature + ' ' + shin + ' ' + HPiv + '/' + Atkiv + '/' + Defiv + '/' + Spaiv + '/' + Spdiv + '/' + Speediv
- if shinyonly == "n":
- if let in ulist:
- print str(frame) + ' '+ str(ESV) + ' ' + str(foundframe) + ' ' + PIDs + ' ' + str(let) + ' ' + nature + ' ' + shin + ' ' + HPiv + '/' + Atkiv + '/' + Defiv + '/' + Spaiv + '/' + Spdiv + '/' + Speediv
- ulist = roomtest(room)
- TID = 0
- SID = 0
- TIDb = str(bin(int(TID)))
- SIDb = str(bin(int(SID)))
- TIDb = TIDb[2:]
- while len(TIDb) < 16:
- TIDb = '0' + TIDb
- SIDb = SIDb[2:]
- while len(SIDb) < 16:
- SIDb = '0' + SIDb
- 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 ']
- for j in range(0,int(minframe)):
- seedint = int(rng(seed,0))
- seed = seedint
- for i in range(int(minframe),int(maxframe)):
- frame = i
- seedint = int(rng(seed,0))
- ESV = methodH1(seed,frame)
- if ESV in lesv:
- newseed = checkfornextunown(seed,frame)
- printframe(newseed)
- seed = seedint
- #Jam some birds in your code - Darkray
- #Special thanks to darkray and slashmolder
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement