Add background to the tool

This commit is contained in:
Goppier 2023-11-23 00:12:54 +01:00
parent 599877fb44
commit a48437f3c6
5 changed files with 171 additions and 191 deletions

View File

@ -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],

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

View File

@ -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()

View File

@ -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
View File

@ -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