mirror of
https://github.com/Goppier/FindingFeebas.git
synced 2026-03-21 17:55:02 -05:00
Add background to the tool
This commit is contained in:
parent
599877fb44
commit
a48437f3c6
|
|
@ -1,5 +1,5 @@
|
|||
FEEBAS_COORDINATES = [
|
||||
[0, 0],[0, 0],[0, 0],[0, 0],
|
||||
[0, 0],[9*16, 7*16],[7*16, 13*16],[15*16, 16*16],
|
||||
[18*16, 18*16], [18*16, 19*16], [19*16, 19*16], [16*16, 20*16], [17*16, 20*16], [18*16, 20*16], [19*16, 20*16],
|
||||
[17*16, 21*16], [18*16, 21*16], [19*16, 21*16], [17*16, 22*16], [18*16, 22*16], [19*16, 22*16], [17*16, 23*16],
|
||||
[18*16, 23*16], [19*16, 23*16], [17*16, 24*16], [18*16, 24*16], [19*16, 24*16], [17*16, 29*16], [18*16, 29*16],
|
||||
|
|
|
|||
BIN
Recources/Finding_Feebas_BG.jpg
Normal file
BIN
Recources/Finding_Feebas_BG.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.6 MiB |
24
blendTest.py
24
blendTest.py
|
|
@ -1,24 +0,0 @@
|
|||
from PIL import Image
|
||||
|
||||
photo_image_path = "Hoenn_Route_119_E.png"
|
||||
watermark_image_path = "RED.png"
|
||||
|
||||
image = Image.open(photo_image_path).convert('RGBA')
|
||||
watermark = Image.open(watermark_image_path).convert('RGBA')
|
||||
layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
|
||||
layer.paste(watermark, (0, 0))
|
||||
layer.paste(watermark, (32, 0))
|
||||
|
||||
# Create a copy of the layer
|
||||
layer2 = layer.copy()
|
||||
|
||||
# Put alpha on the copy
|
||||
layer2.putalpha(180)
|
||||
|
||||
# merge layers with mask
|
||||
layer.paste(layer2, layer)
|
||||
|
||||
|
||||
result = Image.alpha_composite(image, layer)
|
||||
|
||||
result.show()
|
||||
320
feebasCalcs.py
320
feebasCalcs.py
|
|
@ -4,170 +4,166 @@ from tkinter import *
|
|||
from trendyPhrase import group_conditions, group_lifestyles, group_hobbies, DewfordTrend
|
||||
from FeebasCoordinates import FEEBAS_COORDINATES
|
||||
|
||||
|
||||
|
||||
|
||||
class FeebasCalculator:
|
||||
def __init__(self, trainer_id, lottery_number, trendy_phrase_1, trendy_phrase_2, is_rs):
|
||||
self.is_feebas_found = False
|
||||
if not((trendy_phrase_1 in group_conditions) and ((trendy_phrase_2 in group_lifestyles) or (trendy_phrase_2 in group_hobbies))):
|
||||
return
|
||||
if(trainer_id == '' or lottery_number == ''):
|
||||
return
|
||||
self.trainer_id = int(trainer_id)
|
||||
self.secret_id = 0
|
||||
self.lottery_number = int(lottery_number)
|
||||
self.trendy_phrase_1 = trendy_phrase_1
|
||||
self.trendy_phrase_2 = trendy_phrase_2
|
||||
self.starting_seeds = []
|
||||
self.calculated_feebas_spots = []
|
||||
self.rng_counter = 0
|
||||
self.vblank = 0xFFFFFFFF
|
||||
|
||||
if(is_rs):
|
||||
self.seedRng(0x5A0)
|
||||
else:
|
||||
self.seedRng(self.trainer_id)
|
||||
|
||||
self.findFeebasStartingPoint()
|
||||
for x in self.starting_seeds:
|
||||
self.findFeebasSpots(x)
|
||||
if(self.is_feebas_found == True):
|
||||
break
|
||||
if(self.is_feebas_found == False):
|
||||
print("FUCK")
|
||||
return
|
||||
|
||||
self.seedRng(self.dewford_trends[0].getRandomValue())
|
||||
|
||||
x = 0
|
||||
while(x != 6):
|
||||
feebas_id = self.getFeebasRandomValue() % 447
|
||||
if(feebas_id == 0):
|
||||
feebas_id = 447
|
||||
if(feebas_id >= 4):
|
||||
self.calculated_feebas_spots.append(FEEBAS_COORDINATES[feebas_id])
|
||||
x += 1
|
||||
|
||||
return
|
||||
|
||||
def isFeebasFound(self):
|
||||
return self.is_feebas_found
|
||||
|
||||
def getFeebasSpotCoordinates(self):
|
||||
return self.calculated_feebas_spots
|
||||
def __init__(self, trainer_id, lottery_number, trendy_phrase_1, trendy_phrase_2, is_rs):
|
||||
self.is_feebas_found = False
|
||||
if not((trendy_phrase_1 in group_conditions) and ((trendy_phrase_2 in group_lifestyles) or (trendy_phrase_2 in group_hobbies))):
|
||||
return
|
||||
if(trainer_id == '' or lottery_number == ''):
|
||||
return
|
||||
self.trainer_id = int(trainer_id)
|
||||
self.secret_id = 0
|
||||
self.lottery_number = int(lottery_number)
|
||||
self.trendy_phrase_1 = trendy_phrase_1
|
||||
self.trendy_phrase_2 = trendy_phrase_2
|
||||
self.starting_seeds = []
|
||||
self.calculated_feebas_spots = []
|
||||
self.rng_counter = 0
|
||||
self.vblank = 0xFFFFFFFF
|
||||
|
||||
if(is_rs):
|
||||
self.seedRng(0x5A0)
|
||||
else:
|
||||
self.seedRng(self.trainer_id)
|
||||
|
||||
self.findFeebasStartingPoint()
|
||||
for x in self.starting_seeds:
|
||||
self.findFeebasSpotsEmerald(x)
|
||||
if(self.is_feebas_found == True):
|
||||
break
|
||||
if(self.is_feebas_found == False):
|
||||
print("FUCK")
|
||||
return
|
||||
|
||||
self.seedRng(self.dewford_trends[0].getRandomValue())
|
||||
|
||||
x = 0
|
||||
while(x != 6):
|
||||
feebas_id = self.getFeebasRandomValue() % 447
|
||||
if(feebas_id == 0):
|
||||
feebas_id = 447
|
||||
if(feebas_id >= 4):
|
||||
self.calculated_feebas_spots.append(FEEBAS_COORDINATES[feebas_id])
|
||||
x += 1
|
||||
|
||||
return
|
||||
|
||||
def isFeebasFound(self):
|
||||
return self.is_feebas_found
|
||||
|
||||
def getSecretId(self):
|
||||
return self.secret_id
|
||||
|
||||
def seedRng(self, seed):
|
||||
self.random_value = seed & 0xFFFFFFFF
|
||||
|
||||
def getFeebasRandomValue(self):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00003039
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
return (self.random_value >> 16)
|
||||
|
||||
def getRandomValue(self):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00006073
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
self.rng_counter += 1
|
||||
if(self.vblank == self.rng_counter):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00006073
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
self.rng_counter += 1
|
||||
#print(self.vblank)
|
||||
return (self.random_value >> 16)
|
||||
|
||||
def getPreviousRandomValue(self):
|
||||
self.random_value = 0xEEB9EB65 * self.random_value + 0x0A3561A1;
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
return (self.random_value >> 16)
|
||||
|
||||
def findFeebasStartingPoint(self):
|
||||
self.starting_seeds = []
|
||||
for x in range(20000):
|
||||
random_value = self.getRandomValue()
|
||||
if(random_value == self.lottery_number):
|
||||
self.starting_seeds.append(self.random_value)
|
||||
print(self.starting_seeds)
|
||||
|
||||
def findFeebasSpots(self, lottery_seed):
|
||||
reverse_steps = 50
|
||||
lottery_no = 0
|
||||
final_trendy_prase = ["NO", "FEEBAS"]
|
||||
while((self.lottery_number != lottery_no) or (final_trendy_prase[0] != self.trendy_phrase_1 or final_trendy_prase[1] != self.trendy_phrase_2)):
|
||||
self.seedRng(lottery_seed)
|
||||
#print(lottery_seed)
|
||||
self.rng_counter = 0
|
||||
for x in range(reverse_steps):
|
||||
self.getPreviousRandomValue()
|
||||
self.nameItLaterGAMER()
|
||||
|
||||
final_trendy_prase = self.dewford_trends[0].getPhrase()
|
||||
def getFeebasSpotCoordinates(self):
|
||||
return self.calculated_feebas_spots
|
||||
#return FEEBAS_COORDINATES
|
||||
|
||||
def seedRng(self, seed):
|
||||
self.random_value = seed & 0xFFFFFFFF
|
||||
|
||||
def getFeebasRandomValue(self):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00003039
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
return (self.random_value >> 16)
|
||||
|
||||
def getRandomValue(self):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00006073
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
self.rng_counter += 1
|
||||
if(self.vblank == self.rng_counter):
|
||||
self.random_value = 0x41C64E6D * self.random_value + 0x00006073
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
self.rng_counter += 1
|
||||
print(self.vblank)
|
||||
return (self.random_value >> 16)
|
||||
|
||||
lottery_no = self.getRandomValue()
|
||||
|
||||
reverse_steps -= 1
|
||||
if(reverse_steps < 30):
|
||||
print("UGH")
|
||||
return
|
||||
print("FOUND!!!!!")
|
||||
print(self.dewford_trends[0].getRandomValue())
|
||||
self.is_feebas_found = True
|
||||
|
||||
def nameItLaterGAMER(self):
|
||||
self.secret_id = self.getRandomValue()
|
||||
print(self.secret_id)
|
||||
self.getRandomValue()
|
||||
self.getRandomValue()
|
||||
self.getRandomValue()
|
||||
self.dewford_trends = []
|
||||
for x in range(5):
|
||||
new_trend = DewfordTrend()
|
||||
phrase_1 = group_conditions[self.getRandomValue() % len(group_conditions)]
|
||||
if(self.getRandomValue() & 1 == 1):
|
||||
phrase_2 = group_lifestyles[self.getRandomValue() % len(group_lifestyles)]
|
||||
else:
|
||||
phrase_2 = group_hobbies[self.getRandomValue() % len(group_hobbies)]
|
||||
new_trend.setPhrase(phrase_1, phrase_2)
|
||||
#print(phrase_1)
|
||||
new_trend.setIsGainingTrendiness(self.getRandomValue() & 1)
|
||||
def getPreviousRandomValue(self):
|
||||
self.random_value = 0xEEB9EB65 * self.random_value + 0x0A3561A1;
|
||||
self.random_value &= 0xFFFFFFFF
|
||||
return (self.random_value >> 16)
|
||||
|
||||
def findFeebasStartingPoint(self):
|
||||
self.starting_seeds = []
|
||||
for x in range(20000):
|
||||
random_value = self.getRandomValue()
|
||||
if(random_value == self.lottery_number):
|
||||
self.starting_seeds.append(self.random_value)
|
||||
print(self.starting_seeds)
|
||||
|
||||
def findFeebasSpotsRubySapphire(self, lottery_seed):
|
||||
self.seedRng(lottery_seed)
|
||||
self.rng_counter = 0
|
||||
for x in range(50):
|
||||
self.getPreviousRandomValue()
|
||||
# if((self.random_value >> 16) == self.trainer_id)
|
||||
def findFeebasSpotsEmerald(self, lottery_seed):
|
||||
reverse_steps = 50
|
||||
lottery_no = 0
|
||||
final_trendy_prase = ["NO", "FEEBAS"]
|
||||
while((self.lottery_number != lottery_no) or (final_trendy_prase[0] != self.trendy_phrase_1 or final_trendy_prase[1] != self.trendy_phrase_2)):
|
||||
self.seedRng(lottery_seed)
|
||||
#print(lottery_seed)
|
||||
self.rng_counter = 0
|
||||
for x in range(reverse_steps):
|
||||
self.getPreviousRandomValue()
|
||||
self.generateDewfordPhrases()
|
||||
|
||||
final_trendy_prase = self.dewford_trends[0].getPhrase()
|
||||
|
||||
rando = self.getRandomValue() % 98
|
||||
if (rando > 50):
|
||||
rando = self.getRandomValue() % 98
|
||||
if (rando > 80):
|
||||
rando = self.getRandomValue() % 98
|
||||
|
||||
new_trend.setMaxTrendiness(rando + 30)
|
||||
new_trend.setTrendiness((self.getRandomValue() % (rando + 1)) + 30)
|
||||
new_trend.setRandomValue(self.getRandomValue())
|
||||
|
||||
self.dewford_trends.append(new_trend)
|
||||
self.sortTrends()
|
||||
lottery_no = self.getRandomValue()
|
||||
|
||||
reverse_steps -= 1
|
||||
if(reverse_steps < 30):
|
||||
print("UGH")
|
||||
return
|
||||
print("FOUND!!!!!")
|
||||
print(self.dewford_trends[0].getRandomValue())
|
||||
self.is_feebas_found = True
|
||||
|
||||
def generateDewfordPhrases(self):
|
||||
self.dewford_trends = []
|
||||
for x in range(5):
|
||||
new_trend = DewfordTrend()
|
||||
phrase_1 = group_conditions[self.getRandomValue() % len(group_conditions)]
|
||||
if(self.getRandomValue() & 1 == 1):
|
||||
phrase_2 = group_lifestyles[self.getRandomValue() % len(group_lifestyles)]
|
||||
else:
|
||||
phrase_2 = group_hobbies[self.getRandomValue() % len(group_hobbies)]
|
||||
new_trend.setPhrase(phrase_1, phrase_2)
|
||||
#print(phrase_1)
|
||||
new_trend.setIsGainingTrendiness(self.getRandomValue() & 1)
|
||||
|
||||
|
||||
def sortTrends(self):
|
||||
for x in range(5):
|
||||
y = x + 1
|
||||
while(y < 5):
|
||||
if(self.compareTrends(y, x)):
|
||||
self.SWAP(self.dewford_trends, y, x)
|
||||
y += 1
|
||||
|
||||
def compareTrends(self, a, b):
|
||||
if(self.dewford_trends[a].getTrendiness() > self.dewford_trends[b].getTrendiness()):
|
||||
return True
|
||||
if(self.dewford_trends[a].getTrendiness() < self.dewford_trends[b].getTrendiness()):
|
||||
return False
|
||||
if(self.dewford_trends[a].getMaxTrendiness() > self.dewford_trends[b].getMaxTrendiness()):
|
||||
return True
|
||||
if(self.dewford_trends[a].getMaxTrendiness() < self.dewford_trends[b].getMaxTrendiness()):
|
||||
return False
|
||||
|
||||
return (self.getRandomValue() & 1)
|
||||
|
||||
def SWAP(self, list, pos1, pos2):
|
||||
list[pos1], list[pos2] = list[pos2], list[pos1]
|
||||
return list
|
||||
rando = self.getRandomValue() % 98
|
||||
if (rando > 50):
|
||||
rando = self.getRandomValue() % 98
|
||||
if (rando > 80):
|
||||
rando = self.getRandomValue() % 98
|
||||
|
||||
new_trend.setMaxTrendiness(rando + 30)
|
||||
new_trend.setTrendiness((self.getRandomValue() % (rando + 1)) + 30)
|
||||
new_trend.setRandomValue(self.getRandomValue())
|
||||
|
||||
self.dewford_trends.append(new_trend)
|
||||
self.sortTrends()
|
||||
|
||||
|
||||
def sortTrends(self):
|
||||
for x in range(5):
|
||||
y = x + 1
|
||||
while(y < 5):
|
||||
if(self.compareTrends(y, x)):
|
||||
self.SWAP(self.dewford_trends, y, x)
|
||||
y += 1
|
||||
|
||||
def compareTrends(self, a, b):
|
||||
if(self.dewford_trends[a].getTrendiness() > self.dewford_trends[b].getTrendiness()):
|
||||
return True
|
||||
if(self.dewford_trends[a].getTrendiness() < self.dewford_trends[b].getTrendiness()):
|
||||
return False
|
||||
if(self.dewford_trends[a].getMaxTrendiness() > self.dewford_trends[b].getMaxTrendiness()):
|
||||
return True
|
||||
if(self.dewford_trends[a].getMaxTrendiness() < self.dewford_trends[b].getMaxTrendiness()):
|
||||
return False
|
||||
|
||||
return (self.getRandomValue() & 1)
|
||||
|
||||
def SWAP(self, list, pos1, pos2):
|
||||
list[pos1], list[pos2] = list[pos2], list[pos1]
|
||||
return list
|
||||
|
|
|
|||
16
main.py
16
main.py
|
|
@ -17,6 +17,13 @@ class Route119:
|
|||
self.render = ImageTk.PhotoImage(image)
|
||||
img = self.canvas.create_image(192, 960, image=self.render)
|
||||
self.canvas.place(relx=0.25,rely=0.5,anchor=CENTER)
|
||||
|
||||
self.canvas2 = Canvas(self.root, width=320, height=560, bg="white")
|
||||
image = Image.open('./Recources/Finding_Feebas_BG.jpg')
|
||||
resized_image= image.resize((325,565))
|
||||
self.render2 = ImageTk.PhotoImage(resized_image)
|
||||
img = self.canvas2.create_image(160, 280, image=self.render2)
|
||||
self.canvas2.place(relx=0.75,rely=0.5,anchor=CENTER)
|
||||
|
||||
self.current_image_xpos = 192
|
||||
self.current_image_ypos = 960
|
||||
|
|
@ -134,8 +141,8 @@ class Route119:
|
|||
image = Image.open("./Recources/Hoenn_Route_119_E.png").convert('RGBA')
|
||||
watermark = Image.open("./Recources/Feebas_Spot_Indicator.png").convert('RGBA')
|
||||
layer = Image.new('RGBA', image.size, (0, 0, 0, 0))
|
||||
print(self.feebas_calcs.getSecretId())
|
||||
self.sid_entry.config(text=str(self.feebas_calcs.getSecretId()))
|
||||
#print(self.feebas_calcs.getSecretId())
|
||||
#self.sid_entry.config(text=str(self.feebas_calcs.getSecretId()))
|
||||
calculated_spots = self.feebas_calcs.getFeebasSpotCoordinates()
|
||||
for xy in calculated_spots:
|
||||
layer.paste(watermark, (xy[0], xy[1]))
|
||||
|
|
@ -144,6 +151,7 @@ class Route119:
|
|||
layer2.putalpha(180)
|
||||
layer.paste(layer2, layer)
|
||||
result = Image.alpha_composite(image, layer)
|
||||
#result.save("NewImage.png")
|
||||
self.render = ImageTk.PhotoImage(result)
|
||||
img = self.canvas.create_image(self.current_image_xpos, self.current_image_ypos, image=self.render)
|
||||
|
||||
|
|
@ -171,8 +179,8 @@ class Route119:
|
|||
self.current_image_xpos = 16*20
|
||||
elif(self.current_image_xpos < 0):
|
||||
self.current_image_xpos = 0
|
||||
if(self.current_image_ypos > 16*60):
|
||||
self.current_image_ypos = 16*60
|
||||
if(self.current_image_ypos > 16*70):
|
||||
self.current_image_ypos = 16*70
|
||||
elif(self.current_image_ypos < -16*12):
|
||||
self.current_image_ypos = -16*12
|
||||
self.current_mouse_xpos = e.x
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user