diff --git a/FeebasCoordinates.py b/FeebasCoordinates.py index 11f9263..e765f98 100644 --- a/FeebasCoordinates.py +++ b/FeebasCoordinates.py @@ -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], diff --git a/Recources/Finding_Feebas_BG.jpg b/Recources/Finding_Feebas_BG.jpg new file mode 100644 index 0000000..3b35272 Binary files /dev/null and b/Recources/Finding_Feebas_BG.jpg differ diff --git a/blendTest.py b/blendTest.py deleted file mode 100644 index 4cd0ca0..0000000 --- a/blendTest.py +++ /dev/null @@ -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() \ No newline at end of file diff --git a/feebasCalcs.py b/feebasCalcs.py index 48abc94..455254c 100644 --- a/feebasCalcs.py +++ b/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 diff --git a/main.py b/main.py index c4346d6..a539dc5 100644 --- a/main.py +++ b/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