From 8eccdf16e17b2cc221a78152734da66b2a54d81a Mon Sep 17 00:00:00 2001 From: phyzical Date: Mon, 4 Apr 2022 18:10:21 +0800 Subject: [PATCH] add logic to block working for gang faction --- src/NetscriptFunctions/Sleeve.ts | 13 ++++++++++++- src/ScriptEditor/NetscriptDefinitions.d.ts | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/NetscriptFunctions/Sleeve.ts b/src/NetscriptFunctions/Sleeve.ts index 0aa3559d4..40ac1faad 100644 --- a/src/NetscriptFunctions/Sleeve.ts +++ b/src/NetscriptFunctions/Sleeve.ts @@ -122,7 +122,11 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel return player.sleeves[sleeveNumber].workForCompany(player, companyName); }, - setToFactionWork: function (_sleeveNumber: unknown, _factionName: unknown, _workType: unknown): boolean { + setToFactionWork: function ( + _sleeveNumber: unknown, + _factionName: unknown, + _workType: unknown, + ): boolean | undefined { const sleeveNumber = helper.number("setToFactionWork", "sleeveNumber", _sleeveNumber); const factionName = helper.string("setToUniversityCourse", "factionName", _factionName); const workType = helper.string("setToUniversityCourse", "workType", _workType); @@ -144,6 +148,13 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel } } + if (player.gang && player.gang.facName == factionName) { + throw helper.makeRuntimeErrorMsg( + "sleeve.setToFactionWork", + `Sleeve ${sleeveNumber} cannot work for faction ${factionName} because you have started a gang with them.`, + ); + } + return player.sleeves[sleeveNumber].workForFaction(player, factionName, workType); }, setToGymWorkout: function (_sleeveNumber: unknown, _gymName: unknown, _stat: unknown): boolean { diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index f91460336..fde653d5d 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -3637,9 +3637,9 @@ export interface Sleeve { * @param sleeveNumber - Index of the sleeve to work for the faction. * @param factionName - Name of the faction to work for. * @param factionWorkType - Name of the action to perform for this faction. - * @returns True if the sleeve started working on this faction, false otherwise. + * @returns True if the sleeve started working on this faction, false otherwise, can also throw on errors */ - setToFactionWork(sleeveNumber: number, factionName: string, factionWorkType: string): boolean; + setToFactionWork(sleeveNumber: number, factionName: string, factionWorkType: string): boolean | undefined; /** * Set a sleeve to work for a company.