diff --git a/config.ini b/config.ini index a15a4f8..19b465f 100644 --- a/config.ini +++ b/config.ini @@ -18,6 +18,11 @@ Enabled: False Map: 3-4 KillsBeforeBoss: 0 BossFleet: False +ChangeFleet: True +Fleet1: 1 +Fleet2: 3 +SubmarineFleet: 1 +FlipFleets: True OilLimit: 1000 RetireCycle: 2 RetreatAfter: 0 @@ -72,4 +77,4 @@ AwardMustContainPRBlueprint: False Enabled: False Event: Royal_Maids Levels: EX,H,N,E -IgnoreRateUp: False +IgnoreRateUp: False \ No newline at end of file diff --git a/modules/combat.py b/modules/combat.py index 55fb56c..0567e6f 100644 --- a/modules/combat.py +++ b/modules/combat.py @@ -30,6 +30,9 @@ def __init__(self, config, stats, retirement_module, enhancement_module): self.mystery_nodes_list = [] self.blacklist = [] self.movement_event = {} + self.fleet1 = self.config.combat['fleet1'] + self.fleet2 = self.config.combat['fleet2'] + self.submarine_fleet = self.config.combat['submarine_fleet'] self.kills_count = 0 self.kills_before_boss = { @@ -78,9 +81,27 @@ def __init__(self, config, stats, retirement_module, enhancement_module): 'map_nav_left': Region(65, 547, 26, 26), 'event_button': Region(1770, 250, 75, 75), 'lock_ship_button': Region(1086, 739, 200, 55), + 'clear_first_fleet': Region(1690, 273, 40, 40), 'clear_second_fleet': Region(1690, 473, 40, 40), 'button_switch_fleet': Region(1430, 985, 240, 60), - 'menu_nav_back': Region(54, 57, 67, 67) + 'menu_nav_back': Region(54, 57, 67, 67), + 'choose_first_fleet': Region(1540, 253, 90, 75), + 'choose_second_fleet': Region(1540, 453, 90, 75), + 'fleet_1_1': Region(1528, 372, 230, 40), + 'fleet_1_2': Region(1528, 435, 230, 40), + 'fleet_1_3': Region(1528, 498, 230, 40), + 'fleet_1_4': Region(1528, 559, 230, 40), + 'fleet_1_5': Region(1528, 625, 230, 40), + 'fleet_1_6': Region(1528, 684, 230, 40), + 'fleet_2_1': Region(1528, 572, 230, 40), + 'fleet_2_2': Region(1528, 635, 230, 40), + 'fleet_2_3': Region(1528, 698, 230, 40), + 'fleet_2_4': Region(1528, 761, 230, 40), + 'fleet_2_5': Region(1528, 825, 230, 40), + 'fleet_2_6': Region(1528, 884, 230, 40), + 'choose_submarine_fleet': Region(1536, 670, 90, 75), + 'submarine_fleet_1': Region(1528, 786, 230, 40), + 'submarine_fleet_2': Region(1528, 852, 230, 40) } self.prohibited_region = { @@ -137,20 +158,44 @@ def combat_logic_wrapper(self): Logger.log_debug("Found map summary go button.") Utils.touch_randomly(self.region["map_summary_go"]) Utils.wait_update_screen() - if Utils.find("combat/menu_fleet") and (lambda x:x > 414 and x < 584)(Utils.find("combat/menu_fleet").y) and not self.config.combat['boss_fleet']: - if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or self.chapter_map[0].isdigit(): - Logger.log_msg("Removing second fleet from fleet selection.") - Utils.touch_randomly(self.region["clear_second_fleet"]) + + # Selecting appropiate fleets + if self.config.combat['change_fleets']: + Logger.log_msg("Choosing Surface Fleets") + Utils.touch_randomly(self.region["clear_second_fleet"]) + Utils.touch_randomly(self.region["choose_first_fleet"]) + Utils.touch_randomly(self.region['fleet_1_{}'.format(self.fleet1)]) + Utils.touch([770, 400]) + if self.fleet2 != 0: + Utils.touch_randomly(self.region["choose_second_fleet"]) + Utils.touch_randomly(self.region['fleet_2_{}'.format(self.fleet2)]) + Utils.touch([770, 400]) + if self.submarine_fleet != 0: + Logger.log_msg("Choosing Submarine Fleets") + Utils.touch_randomly(self.region["choose_submarine_fleet"]) + Utils.touch_randomly(self.region['submarine_fleet_{}'.format(self.submarine_fleet)]) + + else: Logger.log_msg("Keeping Current Fleets") + + # Flip Fleets logic + if not self.config.combat['flip_fleets']: + if Utils.find("combat/menu_fleet") and (lambda x:x > 414 and x < 584)(Utils.find("combat/menu_fleet").y) and not self.config.combat['boss_fleet']: + if not self.chapter_map[0].isdigit() and string.ascii_uppercase.index(self.chapter_map[2:3]) < 1 or self.chapter_map[0].isdigit(): + Logger.log_msg("Removing second fleet from fleet selection.") + Utils.touch_randomly(self.region["clear_second_fleet"]) + if Utils.find("combat/menu_select_fleet"): Logger.log_debug("Found fleet select go button.") Utils.touch_randomly(self.region["fleet_menu_go"]) Utils.wait_update_screen(2) + if Utils.find("combat/button_retreat"): Logger.log_debug("Found retreat button, starting clear function.") if not self.clear_map(): self.stats.increment_combat_attempted() break Utils.wait_update_screen() + if Utils.find("menu/button_sort"): if self.config.enhancement['enabled'] and not enhancement_failed: if not self.enhancement_module.enhancement_logic_wrapper(forced=True): @@ -224,7 +269,7 @@ def reach_map(self): Utils.touch_randomly(self.region['normal_mode_button']) Utils.wait_update_screen(1) - map_region = Utils.find('maps/map_{}'.format(self.chapter_map), 0.99) + map_region = Utils.find('maps/map_{}'.format(self.chapter_map), 0.90) if map_region != None: Logger.log_msg("Found specified map.") return map_region diff --git a/util/config.py b/util/config.py index fb0c4db..2fd590b 100644 --- a/util/config.py +++ b/util/config.py @@ -155,6 +155,13 @@ def _read_combat(self, config): self.combat['map'] = config.get('Combat', 'Map') self.combat['kills_before_boss'] = self.try_cast_to_int(config.get('Combat', 'KillsBeforeBoss')) self.combat['boss_fleet'] = config.getboolean('Combat', 'BossFleet') + + self.combat['change_fleets'] = config.getboolean('Combat', 'ChangeFleet') + self.combat['fleet1'] = config.getint('Combat', 'Fleet1') + self.combat['fleet2'] = config.getint('Combat', 'Fleet2') + self.combat['submarine_fleet'] = config.getint('Combat', 'SubmarineFleet') + + self.combat['flip_fleets'] = config.getboolean('Combat', 'FlipFleets') self.combat['oil_limit'] = self.try_cast_to_int(config.get('Combat', 'OilLimit')) self.combat['retire_cycle'] = self.try_cast_to_int(config.get('Combat', 'RetireCycle')) self.combat['retreat_after'] = self.try_cast_to_int(config.get('Combat', 'RetreatAfter')) @@ -222,6 +229,16 @@ def _read_event(self, config): self.events['levels'] = config.get('Events', 'Levels').split(',') self.events['ignore_rateup'] = config.getboolean('Events', 'IgnoreRateUp') + def _read_droprates(self, config): + """Method to parse the Drop Rate Research settings of the passed in config. + Args: + config (ConfigParser): ConfigParser instance + """ + self.drop_rates['enabled'] = True + self.drop_rates['ComissionDrops'] = config.getboolean('DropRates', 'ComissionDrops') + self.drop_rates['MapDrops'] = config.getboolean('DropRates', 'MapDrops') + self.drop_rates['ResearchDrops'] = config.getboolean('DropRates', 'ResearchDrops') + def validate(self): """Method to validate the passed in config file """