improving haulers
This commit is contained in:
@@ -173,7 +173,14 @@ class BaseMission(Mission):
|
||||
sellables.remove(target)
|
||||
if len(sellables) == 0:
|
||||
return 'done'
|
||||
self.api.sell(self.ship, sellables[0])
|
||||
resource = sellables[0]
|
||||
volume = market.volume(resource)
|
||||
|
||||
amount = self.ship.get_cargo(resource)
|
||||
while amount > 0:
|
||||
amt = min(amount, volume)
|
||||
self.api.sell(self.ship, resource, amt)
|
||||
amount -= amt
|
||||
if len(sellables) == 1:
|
||||
return 'done'
|
||||
else:
|
||||
@@ -186,19 +193,21 @@ class BaseMission(Mission):
|
||||
loc = self.ship.location
|
||||
market = self.store.get('Marketplace', loc.symbol)
|
||||
price = market.buy_price(resource)
|
||||
volume = market.volume(resource)
|
||||
affordable = credits // price
|
||||
amount = min(cargo_space, affordable)
|
||||
self.api.buy(self.ship, resource, amount)
|
||||
while amount > 0:
|
||||
amt = min(amount, volume)
|
||||
self.api.buy(self.ship, resource, amt)
|
||||
amount -= amt
|
||||
|
||||
def step_travel(self):
|
||||
traject = self.st('traject')
|
||||
if traject is None or traject == []:
|
||||
return 'done'
|
||||
return
|
||||
dest = traject[-1]
|
||||
loc = self.ship.location
|
||||
if dest == loc:
|
||||
self.sts('traject', None)
|
||||
return 'done'
|
||||
|
||||
hop = traject.pop(0)
|
||||
if type(hop) == Waypoint:
|
||||
self.api.navigate(self.ship, hop)
|
||||
@@ -206,11 +215,21 @@ class BaseMission(Mission):
|
||||
else:
|
||||
self.api.jump(self.ship, hop)
|
||||
self.next_step = self.ship.cooldown
|
||||
if traject == []:
|
||||
traject= None
|
||||
self.sts('traject', traject)
|
||||
|
||||
def step_navigate_traject(self):
|
||||
traject = self.st('traject')
|
||||
|
||||
|
||||
loc = self.ship.location
|
||||
|
||||
if traject is None or traject == []:
|
||||
return 'done'
|
||||
dest =traject[-1]
|
||||
if dest == loc:
|
||||
return 'done'
|
||||
return 'more'
|
||||
|
||||
|
||||
def step_calculate_traject(self, dest):
|
||||
if type(dest) == str:
|
||||
dest = self.store.get(Waypoint, dest)
|
||||
@@ -222,7 +241,7 @@ class BaseMission(Mission):
|
||||
dest_sys = dest.system
|
||||
dest_jg = self.analyzer.get_jumpgate(dest_sys)
|
||||
if dest_sys == loc_sys:
|
||||
result = [dest]
|
||||
result = self.analyzer.find_nav_path(loc, dest, self.ship.range())
|
||||
self.sts('traject', result)
|
||||
return
|
||||
path = self.analyzer.find_path(loc_sys, dest_sys)
|
||||
@@ -237,30 +256,47 @@ class BaseMission(Mission):
|
||||
return result
|
||||
|
||||
def step_dock(self):
|
||||
if self.ship.status == 'DOCKED':
|
||||
return
|
||||
self.api.dock(self.ship)
|
||||
|
||||
def step_refuel(self):
|
||||
if self.ship.fuel_capacity == 0:
|
||||
return
|
||||
if self.ship.fuel_current / self.ship.fuel_capacity < 0.5:
|
||||
try:
|
||||
self.api.refuel(self.ship)
|
||||
except Exception as e:
|
||||
pass
|
||||
#if self.ship.fuel_capacity - self.ship.fuel_current > 100:
|
||||
try:
|
||||
self.api.refuel(self.ship)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def step_orbit(self):
|
||||
if self.ship.status != 'DOCKED':
|
||||
return
|
||||
self.api.orbit(self.ship)
|
||||
|
||||
def travel_steps(self, nm, destination, next_step):
|
||||
destination = self.st(destination)
|
||||
calc = partial(self.step_calculate_traject, destination)
|
||||
return {
|
||||
f'travel-{nm}': (self.step_orbit, f'calc-trav-{nm}'),
|
||||
f'calc-trav-{nm}': (calc, f'go-{nm}'),
|
||||
f'go-{nm}': (self.step_travel, {
|
||||
'done': f'dock-{nm}',
|
||||
'more': f'go-{nm}'
|
||||
}),
|
||||
steps = {
|
||||
|
||||
f'travel-{nm}': (calc, f'dock-{nm}'),
|
||||
f'dock-{nm}': (self.step_dock, f'refuel-{nm}'),
|
||||
f'refuel-{nm}': (self.step_refuel, next_step)
|
||||
f'refuel-{nm}': (self.step_refuel, f'orbit-{nm}'),
|
||||
f'orbit-{nm}': (self.step_orbit, f'go-{nm}'),
|
||||
f'go-{nm}': (self.step_travel, f'nav-{nm}'),
|
||||
f'nav-{nm}': (self.step_navigate_traject, {
|
||||
'done': next_step,
|
||||
'more': f'dock-{nm}'
|
||||
})
|
||||
}
|
||||
if self.ship.fuel_capacity == 0:
|
||||
steps = {
|
||||
|
||||
f'travel-{nm}': (calc, f'go-{nm}'),
|
||||
f'go-{nm}': (self.step_travel, f'nav-{nm}'),
|
||||
f'nav-{nm}': (self.step_navigate_traject, {
|
||||
'done': next_step,
|
||||
'more': f'go-{nm}'
|
||||
}),
|
||||
}
|
||||
return steps
|
||||
|
||||
@@ -18,10 +18,13 @@ class HaulMission(BaseMission):
|
||||
|
||||
def steps(self):
|
||||
return {
|
||||
**self.travel_steps('to', 'site', 'market'),
|
||||
'market': (self.step_market, 'load'),
|
||||
'load': (self.step_load, 'travel-back'),
|
||||
**self.travel_steps('back', 'dest', 'unload'),
|
||||
**self.travel_steps('to', 'site', 'dock'),
|
||||
'dock': (self.step_dock, 'market-pre'),
|
||||
'market-pre': (self.step_market, 'load'),
|
||||
'load': (self.step_load, 'market-post'),
|
||||
'market-post': (self.step_market, 'travel-back'),
|
||||
**self.travel_steps('back', 'dest', 'dock-dest'),
|
||||
'dock-dest': (self.step_dock, 'unload'),
|
||||
'unload': (self.step_unload, 'market-dest'),
|
||||
'market-dest': (self.step_market, 'done'),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user