0ptr/nullptr/missions/haul.py

53 lines
1.4 KiB
Python
Raw Permalink Normal View History

2024-01-20 19:33:50 +00:00
from nullptr.missions.base import BaseMission, MissionParam
from nullptr.models.waypoint import Waypoint
class HaulMission(BaseMission):
def start_state(self):
return 'travel-to'
def step_turn(self):
self.ship.log('starting haul load')
def wait_turn(self):
for s in self.store.all('Ship'):
if s.mission != 'haul': continue
if s.location != self.ship.location:
continue
if s.mission_state['dest'] != self.st('dest'):
continue
if s.mission_status != 'load':
continue
return 0
return 5
2024-01-20 19:33:50 +00:00
def step_load(self):
2024-01-21 19:21:38 +00:00
pass
def cargo_full(self):
if self.ship.cargo_space() == 0:
return 5
return 0
2024-01-21 19:21:38 +00:00
2024-01-20 19:33:50 +00:00
@classmethod
def params(cls):
return {
'site': MissionParam(Waypoint, True),
'dest': MissionParam(Waypoint, True),
2024-01-21 19:21:38 +00:00
'resources': MissionParam(list, True)
2024-01-20 19:33:50 +00:00
}
def steps(self):
return {
**self.travel_steps('to', 'site', 'wait-turn'),
'wait-turn': (self.step_turn, 'load', self.wait_turn),
2024-01-21 19:21:38 +00:00
'load': (self.step_load, 'travel-back', self.cargo_full),
2024-01-20 19:33:50 +00:00
**self.travel_steps('back', 'dest', 'dock-dest'),
'dock-dest': (self.step_dock, 'unload'),
'unload': (self.step_sell, {
'more': 'unload',
'done': 'market-dest'
}),
'market-dest': (self.step_market, 'report'),
'report': (self.step_done, 'done')
}