28 lines
781 B
Python
28 lines
781 B
Python
|
from nullptr.missions.base import BaseMission
|
||
|
|
||
|
class ExtractionMission(BaseMission):
|
||
|
def find_hauler(self, r):
|
||
|
for s in self.store.all('Ship'):
|
||
|
if s.mission != 'haul': continue
|
||
|
if s.location != self.ship.location:
|
||
|
continue
|
||
|
if s.mission_status != 'load':
|
||
|
continue
|
||
|
if r not in s.mission_state['resources']: continue
|
||
|
return s
|
||
|
return None
|
||
|
|
||
|
def step_unload(self):
|
||
|
if len(self.ship.cargo) == 0:
|
||
|
return 'done'
|
||
|
r = list(self.ship.cargo.keys())[0]
|
||
|
amt = self.ship.cargo[r]
|
||
|
h = self.find_hauler(r)
|
||
|
if h is None:
|
||
|
self.api.jettison(self.ship, r)
|
||
|
else:
|
||
|
space = h.cargo_space()
|
||
|
amt = min(space, amt)
|
||
|
if amt > 0:
|
||
|
self.api.transfer(self.ship, h, r, amt)
|
||
|
return 'more'
|