From aecf37513880ea7736e1c001226355f44067b990 Mon Sep 17 00:00:00 2001 From: Athanasius Date: Sun, 17 Oct 2021 14:55:43 +0100 Subject: [PATCH 1/2] EDDN: Record `horizons` flag in journal_entry() So that we can then first check *this* in `is_horizons()`. --- plugins/eddn.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/eddn.py b/plugins/eddn.py index e6aa9431..2b42ac3d 100644 --- a/plugins/eddn.py +++ b/plugins/eddn.py @@ -46,6 +46,8 @@ class This: # Track if we're on foot self.on_foot = False + # Horizons ? + self.horizons = False # Running under Odyssey? self.odyssey = False @@ -1165,8 +1167,9 @@ def journal_entry( # noqa: C901, CCR001 this.on_foot = state['OnFoot'] - # Note if we're under Odyssey - # The only event this is already in is `LoadGame` which isn't sent to EDDN. + # Note if we're under Horizons and/or Odyssey + # The only event these are already in is `LoadGame` which isn't sent to EDDN. + this.horizons = entry['horizons'] = state['Horizons'] this.odyssey = entry['odyssey'] = state['Odyssey'] # Track location From ca80edd34d88298a2c9d933f79f0da8e68d870eb Mon Sep 17 00:00:00 2001 From: Athanasius Date: Sun, 17 Oct 2021 15:01:51 +0100 Subject: [PATCH 2/2] EDDN: If `this.horizons` is true, use that in `is_horizons()` check --- plugins/eddn.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/eddn.py b/plugins/eddn.py index 2b42ac3d..497bb4f6 100644 --- a/plugins/eddn.py +++ b/plugins/eddn.py @@ -1395,6 +1395,22 @@ def is_horizons(economies: MAP_STR_ANY, modules: MAP_STR_ANY, ships: MAP_STR_ANY :param ships: Ships available at the docked station. :return: bool - True if the Cmdr has Horizons access. """ + # First check the Journal-sourced flag + # NB: This assumes game currently running, rather than "old + # journal file". `LoadGame` determines monitor.cmdr, which determines + # the account used for CAPI, so it *should* match. + # + # For this to be wrong, the user would have had to have, e.g.: + # + # 1. Logged into Cmdr in Horizons/Odyssey, then back out again. + # 2. Logged into Cmdr in base game, either on another machine, or + # have removed the Journal file after. + # 3. Re-run EDMC and triggered a manual CAPI update. + # + # This seems unlikely. + if this.horizons: + return True + economies_colony = False modules_horizons = False ship_horizons = False