mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-04 01:21:03 +03:00
Credits: Review and add/tweak code for all Journal events
There are a few where either the v30 Journal doc is wrong/has an ommision, or we genuinely don't get the required information.
This commit is contained in:
parent
77d96f61c7
commit
812398ee0d
111
monitor.py
111
monitor.py
@ -552,6 +552,8 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
self.state['Rebuy'] = None
|
self.state['Rebuy'] = None
|
||||||
self.state['Modules'] = None
|
self.state['Modules'] = None
|
||||||
|
|
||||||
|
self.state['Credits'] -= entry['ShipPrice']
|
||||||
|
|
||||||
elif event_type == 'ShipyardSwap':
|
elif event_type == 'ShipyardSwap':
|
||||||
self.state['ShipID'] = entry['ShipID']
|
self.state['ShipID'] = entry['ShipID']
|
||||||
self.state['ShipIdent'] = None
|
self.state['ShipIdent'] = None
|
||||||
@ -602,8 +604,21 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
'Value': entry['BuyPrice'],
|
'Value': entry['BuyPrice'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.state['Credits'] -= entry['BuyPrice']
|
||||||
|
|
||||||
|
elif event_type == 'ModuleRetrieve':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
elif event_type == 'ModuleSell':
|
elif event_type == 'ModuleSell':
|
||||||
self.state['Modules'].pop(entry['Slot'], None)
|
self.state['Modules'].pop(entry['Slot'], None)
|
||||||
|
self.state['Credits'] += entry['SellPrice']
|
||||||
|
|
||||||
|
elif event_type == 'ModuleSellRemote':
|
||||||
|
self.state['Credits'] += entry['SellPrice']
|
||||||
|
|
||||||
|
elif event_type == 'ModuleStore':
|
||||||
|
self.state['Modules'].pop(entry['Slot'], None)
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
elif event_type == 'ModuleSwap':
|
elif event_type == 'ModuleSwap':
|
||||||
to_item = self.state['Modules'].get(entry['ToSlot'])
|
to_item = self.state['Modules'].get(entry['ToSlot'])
|
||||||
@ -767,6 +782,10 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
|
|
||||||
self.state['Cargo'].update({self.canonicalise(x['Name']): x['Count'] for x in clean})
|
self.state['Cargo'].update({self.canonicalise(x['Name']): x['Count'] for x in clean})
|
||||||
|
|
||||||
|
elif event_type == 'CargoTransfer':
|
||||||
|
# TODO: Transfers between ship and FC/SRV
|
||||||
|
pass
|
||||||
|
|
||||||
elif event_type == 'ShipLockerMaterials':
|
elif event_type == 'ShipLockerMaterials':
|
||||||
# This event has the current totals, so drop any current data
|
# This event has the current totals, so drop any current data
|
||||||
self.state['Component'] = defaultdict(int)
|
self.state['Component'] = defaultdict(int)
|
||||||
@ -836,15 +855,16 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
elif event_type == 'BuyMicroResources':
|
elif event_type == 'BuyMicroResources':
|
||||||
# Buying from a Pioneer Supplies, goes directly to ShipLocker.
|
# Buying from a Pioneer Supplies, goes directly to ShipLocker.
|
||||||
# One event per Item, not an array.
|
# One event per Item, not an array.
|
||||||
# alpha4 - update current credits ?
|
|
||||||
category = self.category(entry['Category'])
|
category = self.category(entry['Category'])
|
||||||
name = self.canonicalise(entry['Name'])
|
name = self.canonicalise(entry['Name'])
|
||||||
self.state[category][name] += entry['Count']
|
self.state[category][name] += entry['Count']
|
||||||
|
|
||||||
|
self.state['Credits'] -= entry['Price']
|
||||||
|
|
||||||
elif event_type == 'SellMicroResources':
|
elif event_type == 'SellMicroResources':
|
||||||
# Selling to a Bar Tender on-foot.
|
# Selling to a Bar Tender on-foot.
|
||||||
|
self.state['Credits'] += entry['Price']
|
||||||
# One event per whole sale, so it's an array.
|
# One event per whole sale, so it's an array.
|
||||||
# alpha4 - update current credits ?
|
|
||||||
for mr in entry['MicroResources']:
|
for mr in entry['MicroResources']:
|
||||||
category = self.category(mr['Category'])
|
category = self.category(mr['Category'])
|
||||||
name = self.canonicalise(mr['Name'])
|
name = self.canonicalise(mr['Name'])
|
||||||
@ -1157,7 +1177,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
elif event_type == 'UpgradeWeapon':
|
elif event_type == 'UpgradeWeapon':
|
||||||
# We're not actually keeping track of all owned weapons, only those in
|
# We're not actually keeping track of all owned weapons, only those in
|
||||||
# Suit Loadouts.
|
# Suit Loadouts.
|
||||||
# alpha4
|
# alpha4 - credits? Shouldn't cost any!
|
||||||
pass
|
pass
|
||||||
|
|
||||||
elif event_type == 'ScanOrganic':
|
elif event_type == 'ScanOrganic':
|
||||||
@ -1207,6 +1227,12 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
commodity = self.canonicalise(entry['Type'])
|
commodity = self.canonicalise(entry['Type'])
|
||||||
self.state['Cargo'][commodity] += entry.get('Count', 1)
|
self.state['Cargo'][commodity] += entry.get('Count', 1)
|
||||||
|
|
||||||
|
if event_type == 'BuyDrones':
|
||||||
|
self.state['Credits'] -= entry['TotalCost']
|
||||||
|
|
||||||
|
elif event_type == 'MarketBuy':
|
||||||
|
self.state['Credits'] -= entry['TotalCost']
|
||||||
|
|
||||||
elif event_type in ('EjectCargo', 'MarketSell', 'SellDrones'):
|
elif event_type in ('EjectCargo', 'MarketSell', 'SellDrones'):
|
||||||
commodity = self.canonicalise(entry['Type'])
|
commodity = self.canonicalise(entry['Type'])
|
||||||
cargo = self.state['Cargo']
|
cargo = self.state['Cargo']
|
||||||
@ -1214,6 +1240,12 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
if cargo[commodity] <= 0:
|
if cargo[commodity] <= 0:
|
||||||
cargo.pop(commodity)
|
cargo.pop(commodity)
|
||||||
|
|
||||||
|
if event_type == 'MarketSell':
|
||||||
|
self.state['Credits'] += entry['TotalSale']
|
||||||
|
|
||||||
|
elif event_type == 'SellDrones':
|
||||||
|
self.state['Credits'] += entry['TotalSale']
|
||||||
|
|
||||||
elif event_type == 'SearchAndRescue':
|
elif event_type == 'SearchAndRescue':
|
||||||
for item in entry.get('Items', []):
|
for item in entry.get('Items', []):
|
||||||
commodity = self.canonicalise(item['Name'])
|
commodity = self.canonicalise(item['Name'])
|
||||||
@ -1295,6 +1327,8 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
module['Engineering'].pop('ExperimentalEffect_Localised', None)
|
module['Engineering'].pop('ExperimentalEffect_Localised', None)
|
||||||
|
|
||||||
elif event_type == 'MissionCompleted':
|
elif event_type == 'MissionCompleted':
|
||||||
|
self.state['Credits'] += entry['Reward']
|
||||||
|
|
||||||
for reward in entry.get('CommodityReward', []):
|
for reward in entry.get('CommodityReward', []):
|
||||||
commodity = self.canonicalise(reward['Name'])
|
commodity = self.canonicalise(reward['Name'])
|
||||||
self.state['Cargo'][commodity] += reward.get('Count', 1)
|
self.state['Cargo'][commodity] += reward.get('Count', 1)
|
||||||
@ -1378,6 +1412,77 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
|
|||||||
else:
|
else:
|
||||||
self.state['Friends'].discard(entry['Name'])
|
self.state['Friends'].discard(entry['Name'])
|
||||||
|
|
||||||
|
# Try to keep Credits total updated
|
||||||
|
elif event_type in ('MultiSellExplorationData', 'SellExplorationData'):
|
||||||
|
self.state['Credits'] += entry['TotalEarnings']
|
||||||
|
|
||||||
|
elif event_type == 'BuyExplorationData':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'BuyTradeData':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'BuyAmmo':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'CommunityGoalReward':
|
||||||
|
self.state['Credits'] += entry['Reward']
|
||||||
|
|
||||||
|
elif event_type == 'CrewHire':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'FetchRemoteModule':
|
||||||
|
self.state['Credits'] -= entry['TransferCost']
|
||||||
|
|
||||||
|
elif event_type == 'MissionAbandoned':
|
||||||
|
# Is this paid at this point, or just a fine to pay later ?
|
||||||
|
# self.state['Credits'] -= entry['Fine']
|
||||||
|
pass
|
||||||
|
|
||||||
|
elif event_type in ('PayBounties', 'PayFines', 'PayLegacyFines'):
|
||||||
|
self.state['Credits'] -= entry['Amount']
|
||||||
|
|
||||||
|
elif event_type == 'RedeemVoucher':
|
||||||
|
self.state['Credits'] += entry['Amount']
|
||||||
|
|
||||||
|
elif event_type in ('RefuelAll', 'RefuelPartial', 'Repair', 'RepairAll', 'RestockVehicle'):
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'SellShipOnRebuy':
|
||||||
|
self.state['Credits'] += entry['ShipPrice']
|
||||||
|
|
||||||
|
elif event_type == 'ShipyardSell':
|
||||||
|
self.state['Credits'] += entry['ShipPrice']
|
||||||
|
|
||||||
|
elif event_type == 'ShipyardTransfer':
|
||||||
|
self.state['Credits'] -= entry['TransferPrice']
|
||||||
|
|
||||||
|
elif event_type == 'PowerplayFastTrack':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
|
elif event_type == 'PowerplaySalary':
|
||||||
|
self.state['Credits'] += entry['Amount']
|
||||||
|
|
||||||
|
elif event_type == 'SquadronCreated':
|
||||||
|
# v30 docs don't actually say anything about credits cost
|
||||||
|
pass
|
||||||
|
|
||||||
|
elif event_type == 'CarrierBuy':
|
||||||
|
self.state['Credits'] -= entry['Price']
|
||||||
|
|
||||||
|
elif event_type == 'CarrierBankTransfer':
|
||||||
|
self.state['Credits'] = entry['PlayerBalance']
|
||||||
|
|
||||||
|
elif event_type == 'CarrierDecommission':
|
||||||
|
# v30 doc says nothing about citing the refund amount
|
||||||
|
pass
|
||||||
|
|
||||||
|
elif event_type == 'NpcCrewPaidWage':
|
||||||
|
self.state['Credits'] -= entry['Amount']
|
||||||
|
|
||||||
|
elif event_type == 'Resurrect':
|
||||||
|
self.state['Credits'] -= entry['Cost']
|
||||||
|
|
||||||
return entry
|
return entry
|
||||||
|
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user