A4 Town Pathing (#215)
BIN
assets/templates/a4_town/a4_town_0.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
assets/templates/a4_town/a4_town_1.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
assets/templates/a4_town/a4_town_2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/templates/a4_town/a4_town_3.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
assets/templates/a4_town/a4_town_4.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
assets/templates/a4_town/a4_town_5.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
assets/templates/a4_town/a4_town_6.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
assets/templates/a4_town/a4_town_7.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
assets/templates/a4_town/a4_town_8.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
16
src/bot.py
@@ -162,10 +162,10 @@ class Bot:
|
||||
# TODO: If tp is up we always go back into the portal...
|
||||
if not self._tp_is_up and (HealthManager.get_health(self._config, img) < 0.6 or HealthManager.get_mana(self._config, img) < 0.3):
|
||||
Logger.info("Need some healing first. Going to Malah.")
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.MALAH, self._char):
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.A5_MALAH, self._char):
|
||||
self.trigger_or_stop("end_game")
|
||||
return
|
||||
self._curr_location = Location.MALAH
|
||||
self._curr_location = Location.A5_MALAH
|
||||
self._npc_manager.open_npc_menu(Npc.MALAH)
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.A5_TOWN_START, self._char):
|
||||
self.trigger_or_stop("end_game")
|
||||
@@ -193,10 +193,10 @@ class Bot:
|
||||
|
||||
if self._tps_left < 3 or (self._config.char["tp"] and not self._ui_manager.has_tps()):
|
||||
Logger.info("Repairing and buying TPs at Larzuk.")
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.LARZUK, self._char):
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.A5_LARZUK, self._char):
|
||||
self.trigger_or_stop("end_game")
|
||||
return
|
||||
self._curr_location = Location.LARZUK
|
||||
self._curr_location = Location.A5_LARZUK
|
||||
self._npc_manager.open_npc_menu(Npc.LARZUK)
|
||||
self._npc_manager.press_npc_btn(Npc.LARZUK, "trade_repair")
|
||||
if self._ui_manager.repair_and_fill_up_tp():
|
||||
@@ -209,10 +209,10 @@ class Bot:
|
||||
merc_alive = self._template_finder.search("MERC", self._screen.grab(), threshold=0.9, roi=[0, 0, 200, 200]).valid
|
||||
if not merc_alive:
|
||||
Logger.info("Reviving merc.")
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.QUAL_KEHK, self._char):
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.A5_QUAL_KEHK, self._char):
|
||||
self.trigger_or_stop("end_game")
|
||||
return
|
||||
self._curr_location = Location.QUAL_KEHK
|
||||
self._curr_location = Location.A5_QUAL_KEHK
|
||||
if self._npc_manager.open_npc_menu(Npc.QUAL_KEHK):
|
||||
self._npc_manager.press_npc_btn(Npc.QUAL_KEHK, "resurrect")
|
||||
time.sleep(1.2)
|
||||
@@ -230,8 +230,8 @@ class Bot:
|
||||
def on_run_pindle(self):
|
||||
def do_it() -> bool:
|
||||
Logger.info("Run Pindle")
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.NIHLATHAK_PORTAL, self._char): return False
|
||||
self._curr_location = Location.NIHLATHAK_PORTAL
|
||||
if not self._pather.traverse_nodes(self._curr_location, Location.A5_NIHLATHAK_PORTAL, self._char): return False
|
||||
self._curr_location = Location.A5_NIHLATHAK_PORTAL
|
||||
wait(0.3, 0.4) # otherwise will often missclick because still moving
|
||||
found_loading_screen_func = lambda: self._ui_manager.wait_for_loading_screen(2.0)
|
||||
if not self._char.select_by_template(["A5_RED_PORTAL", "A5_RED_PORTAL_TEXT"], found_loading_screen_func): return False
|
||||
|
||||
@@ -20,10 +20,10 @@ class Location:
|
||||
A5_TOWN_START = "a5_town_start"
|
||||
A5_STASH = "a5_stash"
|
||||
A5_WP = "a5_wp"
|
||||
QUAL_KEHK = "qual_kehk"
|
||||
MALAH = "malah"
|
||||
NIHLATHAK_PORTAL = "nihlathak_portal"
|
||||
LARZUK = "larzuk"
|
||||
A5_QUAL_KEHK = "qual_kehk"
|
||||
A5_MALAH = "malah"
|
||||
A5_NIHLATHAK_PORTAL = "nihlathak_portal"
|
||||
A5_LARZUK = "larzuk"
|
||||
# Pindle
|
||||
PINDLE_START = "pindle_start"
|
||||
PINDLE_SAVE_DIST = "pindle_save_dist"
|
||||
@@ -36,6 +36,10 @@ class Location:
|
||||
SHENK_START = "shenk_start"
|
||||
SHENK_SAVE_DIST = "shenk_save_dist"
|
||||
SHENK_END = "shenk_end"
|
||||
# A4 Town
|
||||
A4_WP = "a4_town_wp"
|
||||
A4_TYRAEL_STASH = "a4_tyrael_stash"
|
||||
A4_VENDOR = "a4_vendor"
|
||||
# A3 Town
|
||||
A3_TOWN_START = "a3_town_start"
|
||||
A3_ORMUS = "a3_ormus"
|
||||
@@ -97,7 +101,13 @@ class Pather:
|
||||
147: {'SHENK_16': (317, -18), 'SHENK_9': (-67, 139), 'SHENK_10': (-431, 67)},
|
||||
148: {'SHENK_16': (682, 103), 'SHENK_9': (301, 263), 'SHENK_10': (-65, 188), 'SHENK_11': (-306, 139)},
|
||||
149: {'SHENK_11': (261, 395), 'SHENK_10': (495, 421), 'SHENK_13': (393, -9)},
|
||||
# A3 twon
|
||||
# A4 town
|
||||
160: {"A4_TOWN_4": (-100, -133), "A4_TOWN_3": (-117, 238), "A4_TOWN_0": (-364, 151), "A4_TOWN_6": (24, -425), "A4_TOWN_5": (-347, -277)},
|
||||
161: {"A4_TOWN_3": (-289, 156), "A4_TOWN_4": (-272, -215), "A4_TOWN_2": (385, -92), "A4_TOWN_6": (-148, -507), "A4_TOWN_0": (-536, 69)},
|
||||
162: {"A4_TOWN_4": (74, 66), "A4_TOWN_5": (-173, -78), "A4_TOWN_6": (198, -226), "A4_TOWN_0": (-190, 350), "A4_TOWN_7": (-101, -455)},
|
||||
163: {"A4_TOWN_5": (-92, 143), "A4_TOWN_7": (-19, -233), "A4_TOWN_6": (280, -4), "A4_TOWN_4": (156, 288), "A4_TOWN_8": (-598, 5)},
|
||||
164: {"A4_TOWN_7": (235, 39), "A4_TOWN_8": (-344, 277), "A4_TOWN_5": (163, 415), "A4_TOWN_6": (534, 268), "A4_TOWN_4": (409, 559)},
|
||||
# A3 town
|
||||
180: {"A3_TOWN_0": (-144, 170), "A3_TOWN_1": (-417, 59), "A3_TOWN_2": (-716, -161)},
|
||||
181: {"A3_TOWN_1": (-113, 155), "A3_TOWN_0": (160, 266), "A3_TOWN_2": (-412, -65), "A3_TOWN_3": (-867, 133)},
|
||||
182: {"A3_TOWN_2": (-101, -135), "A3_TOWN_1": (198, 85), "A3_TOWN_0": (471, 196), "A3_TOWN_3": (-556, 63), "A3_TOWN_12": (-500, 717)},
|
||||
@@ -124,22 +134,22 @@ class Pather:
|
||||
}
|
||||
self._paths = {
|
||||
# A5 Town
|
||||
(Location.A5_TOWN_START, Location.NIHLATHAK_PORTAL): [3, 4, 5, 6, 8, 9],
|
||||
(Location.A5_TOWN_START, Location.A5_NIHLATHAK_PORTAL): [3, 4, 5, 6, 8, 9],
|
||||
(Location.A5_TOWN_START, Location.A5_STASH): [3, 4, 5],
|
||||
(Location.A5_TOWN_START, Location.A5_WP): [3, 4],
|
||||
(Location.A5_TOWN_START, Location.QUAL_KEHK): [3, 4, 5, 6, 10, 11, 12],
|
||||
(Location.A5_TOWN_START, Location.MALAH): [1, 2],
|
||||
(Location.A5_TOWN_START, Location.LARZUK): [3, 4, 5, 13, 14],
|
||||
(Location.MALAH, Location.A5_TOWN_START): [1, 0],
|
||||
(Location.A5_STASH, Location.NIHLATHAK_PORTAL): [6, 8, 9],
|
||||
(Location.A5_STASH, Location.QUAL_KEHK): [5, 6, 10, 11, 12],
|
||||
(Location.A5_STASH, Location.LARZUK): [13, 14],
|
||||
(Location.A5_TOWN_START, Location.A5_QUAL_KEHK): [3, 4, 5, 6, 10, 11, 12],
|
||||
(Location.A5_TOWN_START, Location.A5_MALAH): [1, 2],
|
||||
(Location.A5_TOWN_START, Location.A5_LARZUK): [3, 4, 5, 13, 14],
|
||||
(Location.A5_MALAH, Location.A5_TOWN_START): [1, 0],
|
||||
(Location.A5_STASH, Location.A5_NIHLATHAK_PORTAL): [6, 8, 9],
|
||||
(Location.A5_STASH, Location.A5_QUAL_KEHK): [5, 6, 10, 11, 12],
|
||||
(Location.A5_STASH, Location.A5_LARZUK): [13, 14],
|
||||
(Location.A5_STASH, Location.A5_WP): [],
|
||||
(Location.QUAL_KEHK, Location.NIHLATHAK_PORTAL): [12, 11, 10, 6, 8, 9],
|
||||
(Location.QUAL_KEHK, Location.A5_WP): [12, 11, 10, 6],
|
||||
(Location.LARZUK, Location.QUAL_KEHK): [13, 14, 5, 6, 10, 11, 12],
|
||||
(Location.LARZUK, Location.NIHLATHAK_PORTAL): [14, 13, 5, 6, 8, 9],
|
||||
(Location.LARZUK, Location.A5_WP): [14, 13, 5],
|
||||
(Location.A5_QUAL_KEHK, Location.A5_NIHLATHAK_PORTAL): [12, 11, 10, 6, 8, 9],
|
||||
(Location.A5_QUAL_KEHK, Location.A5_WP): [12, 11, 10, 6],
|
||||
(Location.A5_LARZUK, Location.A5_QUAL_KEHK): [13, 14, 5, 6, 10, 11, 12],
|
||||
(Location.A5_LARZUK, Location.A5_NIHLATHAK_PORTAL): [14, 13, 5, 6, 8, 9],
|
||||
(Location.A5_LARZUK, Location.A5_WP): [14, 13, 5],
|
||||
# Pindle
|
||||
(Location.PINDLE_START, Location.PINDLE_SAVE_DIST): [100, 101, 102, 103],
|
||||
(Location.PINDLE_SAVE_DIST, Location.PINDLE_END): [104],
|
||||
@@ -149,6 +159,9 @@ class Pather:
|
||||
# Shenk
|
||||
(Location.SHENK_START, Location.SHENK_SAVE_DIST): [140, 141, 142, 143, 144, 145, 146, 147, 148],
|
||||
(Location.SHENK_SAVE_DIST, Location.SHENK_END): [149],
|
||||
# A4 Town
|
||||
(Location.A4_WP, Location.A4_TYRAEL_STASH): [160, 161],
|
||||
(Location.A4_TYRAEL_STASH, Location.A4_WP): [161, 160],
|
||||
# A3 Town
|
||||
(Location.A3_TOWN_START, Location.A3_STASH_WP): [180, 181, 182, 183, 184, 185, 186, 187, 188],
|
||||
(Location.A3_TOWN_START, Location.A3_ORMUS): [180, 181, 182, 183, 184, 185],
|
||||
|
||||