diff --git a/monitor.py b/monitor.py index 3eee16ad..923f8c91 100644 --- a/monitor.py +++ b/monitor.py @@ -119,6 +119,7 @@ class EDLogs(FileSystemEventHandler): 'Raw' : defaultdict(int), 'Manufactured' : defaultdict(int), 'Encoded' : defaultdict(int), + 'Engineers' : {}, 'Rank' : {}, 'Reputation' : {}, 'Statistics' : {}, @@ -338,6 +339,7 @@ class EDLogs(FileSystemEventHandler): 'Raw' : defaultdict(int), 'Manufactured' : defaultdict(int), 'Encoded' : defaultdict(int), + 'Engineers' : {}, 'Rank' : {}, 'Reputation' : {}, 'Statistics' : {}, @@ -370,6 +372,7 @@ class EDLogs(FileSystemEventHandler): 'Captain' : None, 'Credits' : entry['Credits'], 'Loan' : entry['Loan'], + 'Engineers' : {}, 'Rank' : {}, 'Reputation' : {}, 'Statistics' : {}, @@ -480,6 +483,12 @@ class EDLogs(FileSystemEventHandler): payload.pop('timestamp') self.state[entry['event']] = payload + elif entry['event'] == 'EngineerProgress': + if 'Engineers' in entry: # Startup summary + self.state['Engineers'] = { e['Engineer']: (e['Rank'], e.get('RankProgress', 0)) if 'Rank' in e else e['Progress'] for e in entry['Engineers'] } + else: # Promotion + self.state['Engineers'][entry['Engineer']] = (entry['Rank'], entry.get('RankProgress', 0)) if 'Rank' in entry else entry['Progress'] + elif entry['event'] == 'Cargo': self.state['Cargo'] = defaultdict(int) self.state['Cargo'].update({ self.canonicalise(x['Name']): x['Count'] for x in entry['Inventory'] }) diff --git a/plugins/inara.py b/plugins/inara.py index 577f9f2e..0a0926cf 100644 --- a/plugins/inara.py +++ b/plugins/inara.py @@ -229,6 +229,19 @@ def journal_entry(cmdr, is_beta, system, station, entry, state): ('majorfactionName', k.lower()), ('majorfactionReputation', v / 100.0), ])) + for k,v in state['Engineers'].iteritems(): + if type(v) is tuple: + add_event('setCommanderRankEngineer', entry['timestamp'], + OrderedDict([ + ('engineerName', k), + ('rankValue', v[0]), + ])) + else: + add_event('setCommanderRankEngineer', entry['timestamp'], + OrderedDict([ + ('engineerName', k), + ('rankStage', v), + ])) # Update location add_event('setCommanderTravelLocation', entry['timestamp'], @@ -267,7 +280,7 @@ def journal_entry(cmdr, is_beta, system, station, entry, state): ('rankValue', v[0]), ('rankProgress', 0), ])) - elif entry['event'] == 'EngineerProgress': + elif entry['event'] == 'EngineerProgress' and 'Engineer' in entry: if 'Rank' in entry: add_event('setCommanderRankEngineer', entry['timestamp'], OrderedDict([