Improve trading villager selection based on profession
This commit is contained in:
@@ -102,7 +102,10 @@ class GrabSuppliesStates:
|
||||
print('No path, blacklisting barrel')
|
||||
time.sleep(0.1)
|
||||
self.bad_barrels.append(self.barrel)
|
||||
self.state = self.choose_barrel
|
||||
if len(self.bad_barrels) > 3:
|
||||
self.state = self.cleanup
|
||||
else:
|
||||
self.state = self.choose_barrel
|
||||
|
||||
def going_to_barrel(self):
|
||||
if utils.pint(self.g.pos) == self.opening:
|
||||
|
@@ -31,8 +31,29 @@ class SellToVillagerStates:
|
||||
|
||||
for v in w.find_villagers(p, 100):
|
||||
print('Found villager:', v)
|
||||
if v not in self.bad_villagers and v not in self.spent_villagers:
|
||||
break
|
||||
|
||||
if v in self.bad_villagers:
|
||||
print('In bad villager list')
|
||||
continue
|
||||
|
||||
if v in self.spent_villagers:
|
||||
print('In spent villager list')
|
||||
continue
|
||||
|
||||
if 'profession' not in v:
|
||||
print('Villager has unknown profession')
|
||||
continue
|
||||
|
||||
if v.profession not in mobs.TRADES:
|
||||
print('Villager doesnt sell stuff we collect')
|
||||
continue
|
||||
|
||||
trades = mobs.TRADES[v.profession]
|
||||
if not self.g.game.count_items(trades):
|
||||
print('We dont have anything to sell him')
|
||||
continue
|
||||
|
||||
break
|
||||
else: # for
|
||||
print('No good villagers left, aborting.')
|
||||
self.spent_villagers = []
|
||||
@@ -59,7 +80,7 @@ class SellToVillagerStates:
|
||||
if self.villager not in self.good_villagers:
|
||||
self.bad_villagers.append(self.villager)
|
||||
print('Added to bad villager list')
|
||||
self.state = self.cleanup
|
||||
self.state = self.find_villager
|
||||
return
|
||||
|
||||
navpath = w.path_to_place(p, self.openings[0])
|
||||
@@ -144,8 +165,7 @@ class SellToVillagerStates:
|
||||
print('Villager has been spent, aborting')
|
||||
self.g.game.close_window()
|
||||
self.spent_villagers.append(self.villager)
|
||||
self.state = self.wait
|
||||
self.wait_time = 10
|
||||
self.state = self.find_villager
|
||||
return
|
||||
|
||||
def click_trade(self):
|
||||
|
Reference in New Issue
Block a user