UNPKG

@kayahr/ed-journal

Version:

Typescript library to read/watch the player journal of Frontier's game Elite Dangerous

143 lines (117 loc) 4.17 kB
/* * Copyright (C) 2022 Klaus Reimer <k@ailis.de> * See LICENSE.md for licensing information. */ import { type JournalEvent, registerJournalEventUpdate } from "../../JournalEvent.ts"; import type { ID } from "../types/ID.ts"; import { type StationService, correctStationService } from "../types/StationService.ts"; import type { StationType } from "../types/StationType.ts"; /** * Written when landing at landing pad in a space station, output, or surface settlement. * * The "anonymous docking" protocol comes into effect if you're either Wanted (ie have a local bounty) * or have an ActiveFine. */ export interface Docked extends JournalEvent<"Docked"> { /** The name of the station. */ StationName: string; MarketID?: ID; SystemAddress?: ID; /** The type of the station. Not set in older journals. */ StationType?: StationType; /** The name of the start system. */ StarSystem?: string; /** True if landing with breached cockpit. */ CockpitBreach?: boolean; /** The station's controlling faction. */ StationFaction?: { Name: string; FactionState?: string; }; StationAllegiance?: string; /** The station's primary economy. */ StationEconomy?: string; StationEconomy_Localised?: string; /** List of station economies. */ StationEconomies?: Array<{ Name: string; Name_Localised?: string; Proportion: number; }>; StationGovernment?: string; StationGovernment_Localised?: string; DistFromStarLS?: number; StationServices?: StationService[]; /** True if docking when wanted locally. */ Wanted?: boolean; /** True if any fine is active. */ ActiveFine?: boolean; LandingPads?: { Small: number; Medium: number; Large: number; }; Taxi?: boolean; Multicrew?: boolean; StationState?: string; Security?: string; Security_Localised?: string; } interface DeprecatedDocked extends JournalEvent<"Docked"> { /** Old station services have different names which must be converted to new service names. */ StationServices?: string[]; /** Renamed to StationFaction in newer versions. */ Faction?: string; /** Moved to StationFaction object in newer versions. */ FactionState?: string; /** Renamed to StationGovernment in newer versions. */ Government?: string; /** Renamed to StationGovernment_Localised in newer versions. */ Government_Localised?: string; /** Renamed to StationEconomy in newer versions. */ Economy?: string; /** Renamed to StationEconomy_Localised in newer versions. */ Economy_Localised?: string; /** Renamed to StationAllegiance in newer versions. */ Allegiance?: string; /** Format changed to object in newer versions. */ StationFaction?: string; } registerJournalEventUpdate<DeprecatedDocked, Docked>("Docked", (from, to) => { if (from.Faction != null) { to.StationFaction = { Name: from.Faction }; delete from.Faction; } if (from.Government != null) { to.StationGovernment = from.Government; delete from.Government; } if (from.Government_Localised != null) { to.StationGovernment_Localised = from.Government_Localised; delete from.Government_Localised; } if (from.Economy != null) { to.StationEconomy = from.Economy; delete from.Economy; } if (from.Economy_Localised != null) { to.StationEconomy_Localised = from.Economy_Localised; delete from.Economy_Localised; } if (from.Allegiance != null) { to.StationAllegiance = from.Allegiance; delete from.Allegiance; } if (typeof from.StationFaction === "string") { to.StationFaction = { Name: from.StationFaction }; } if (from.FactionState != null && to.StationFaction instanceof Object) { to.StationFaction.FactionState = from.FactionState; delete from.FactionState; } if (from.StationServices instanceof Array) { to.StationServices = from.StationServices.map(correctStationService); } });