From a1e63ab21c0877cc7d298e83fb93f221dc295cb4 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 5 Nov 2025 14:13:31 +0100 Subject: [PATCH] fix: properly provide hex conquest for pre-U40 clients The missing mf field did end up causing script errors + exterminate was not provided in the proper format --- src/services/conquestService.ts | 31 ++++++++++++++++++++++++++++--- src/services/worldStateService.ts | 3 ++- src/types/worldStateTypes.ts | 2 +- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/services/conquestService.ts b/src/services/conquestService.ts index 16f20041..0a29341c 100644 --- a/src/services/conquestService.ts +++ b/src/services/conquestService.ts @@ -429,9 +429,6 @@ export const getMissionTypeForLegacyOverride = (missionType: TMissionType, conqu return "EndlessCapture"; } let str = missionType.substring(3, 4).toUpperCase() + missionType.substring(4).toLowerCase(); - if (str == "Extermination") { - str = "Exterminate"; - } if (str == "Artifact") { str = "Disruption"; } @@ -440,3 +437,31 @@ export const getMissionTypeForLegacyOverride = (missionType: TMissionType, conqu } return str; }; + +export const factionToInt = (faction: TFaction | "FC_TENNO"): number => { + switch (faction) { + case "FC_GRINEER": + return 0; + case "FC_CORPUS": + return 1; + case "FC_INFESTATION": + return 2; + case "FC_OROKIN": + return 3; + case "FC_RED_VEIL": + return 4; + case "FC_SENTIENT": + return 5; + case "FC_NARMER": + return 6; + case "FC_MITW": + return 7; + case "FC_SCALDRA": + return 8; + case "FC_TECHROT": + return 9; + case "FC_DUVIRI": + return 10; + } + throw new Error(`unexpected faction ${faction}`); +}; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index fb6cbea5..c8c1181f 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -41,7 +41,7 @@ import type { import { toMongoDate, toOid, version_compare } from "../helpers/inventoryHelpers.ts"; import { logger } from "../utils/logger.ts"; import { DailyDeal, Fissure } from "../models/worldStateModel.ts"; -import { getConquest, getMissionTypeForLegacyOverride } from "./conquestService.ts"; +import { factionToInt, getConquest, getMissionTypeForLegacyOverride } from "./conquestService.ts"; const sortieBosses = [ "SORTIE_BOSS_HYENA", @@ -3628,6 +3628,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { hqo: { mt: hexConquest.Missions.map(x => getMissionTypeForLegacyOverride(x.missionType, "CT_HEX")), mv: hexConquest.Missions.map(x => x.difficulties[1].deviation), + mf: hexConquest.Missions.map(x => factionToInt(x.faction)), c: hexConquest.Missions.map(x => x.difficulties[1].risks), fv: hexConquest.Variables }, diff --git a/src/types/worldStateTypes.ts b/src/types/worldStateTypes.ts index c323fa0f..4c6aef44 100644 --- a/src/types/worldStateTypes.ts +++ b/src/types/worldStateTypes.ts @@ -487,7 +487,7 @@ interface IFbst { interface IConquestOverride { mt?: string[]; mv?: string[]; - mf?: number[]; // hex conquest only. unknown purpose. + mf?: number[]; c?: [string, string][]; fv?: string[]; } -- 2.49.1