From 335eccde709ec68c4d733acc6b86627142982d6a Mon Sep 17 00:00:00 2001 From: Brian Fertig Date: Sun, 27 Sep 2026 11:24:03 -0600 Subject: [PATCH] Add escort-specific status labels to job board - Introduce `escortActive` and `escortActivate` strings in sidequests.json so escort contracts display distinct copy instead of the generic patrol text. - Update JobBoardWindow status and action buttons to branch on `category === 'escort'`, falling back to existing bounty/patrol labels. --- data/sidequests.json | 2 ++ js/ui/JobBoardWindow.js | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/data/sidequests.json b/data/sidequests.json index d4aa5b7..1ca46e5 100644 --- a/data/sidequests.json +++ b/data/sidequests.json @@ -684,6 +684,8 @@ "activate": "SET PATROL ACTIVE", "bountyActive": "HUNT ACTIVE", "bountyActivate": "SET HUNT ACTIVE", + "escortActive": "ESCORT ACTIVE", + "escortActivate": "SET ESCORT ACTIVE", "complete": "CONTRACT COMPLETE", "claim": "CLAIM REWARD — {reward} CR", "claimXp": "CLAIM REWARD — {reward} CR · +{xp} XP", diff --git a/js/ui/JobBoardWindow.js b/js/ui/JobBoardWindow.js index 53f14fd..51be078 100644 --- a/js/ui/JobBoardWindow.js +++ b/js/ui/JobBoardWindow.js @@ -616,11 +616,14 @@ export class JobBoardWindow extends Phaser.GameObjects.Container { rightTxt = String(ui.complete ?? 'CONTRACT COMPLETE'); rightColor = C.neon; } else if (state === 'active') { - // A hunt flying reads as a HUNT, not a patrol (data → ui.bountyActive); - // every other contract keeps the standing copy. + // A hunt flying reads as a HUNT, an escort as an ESCORT, not a patrol + // (data → ui.bountyActive / ui.escortActive); every other contract + // keeps the standing copy. rightTxt = p.category === 'bounty' ? String(ui.bountyActive ?? 'HUNT ACTIVE') - : String(ui.active ?? 'PATROL ACTIVE'); + : p.category === 'escort' + ? String(ui.escortActive ?? 'ESCORT ACTIVE') + : String(ui.active ?? 'PATROL ACTIVE'); rightColor = this._activeColor(); } else if (state === 'accepted') { rightTxt = String(ui.accepted ?? 'CONTRACT ACCEPTED'); @@ -931,13 +934,17 @@ export class JobBoardWindow extends Phaser.GameObjects.Container { } else if (state === 'accepted') { label = sel.category === 'bounty' ? String(ui.bountyActivate ?? 'SET HUNT ACTIVE') - : String(ui.activate ?? 'SET PATROL ACTIVE'); + : sel.category === 'escort' + ? String(ui.escortActivate ?? 'SET ESCORT ACTIVE') + : String(ui.activate ?? 'SET PATROL ACTIVE'); color = C.green; action = 'activate'; } else if (state === 'active') { label = sel.category === 'bounty' ? String(ui.bountyActive ?? 'HUNT ACTIVE') - : String(ui.active ?? 'PATROL ACTIVE'); + : sel.category === 'escort' + ? String(ui.escortActive ?? 'ESCORT ACTIVE') + : String(ui.active ?? 'PATROL ACTIVE'); color = this._activeColor(); } else if (state === 'complete') { label =