mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-09 17:23:53 +01:00
Fix bug with sleeve.setToFactionWork
Function was not checking that the player was actually in the faction, which allowed sleeves to work for factions the player was not part of.
This commit is contained in:
parent
e7312d97e6
commit
888e5f9c8a
@ -12,6 +12,7 @@ import { isSleeveCompanyWork } from "../PersonObjects/Sleeve/Work/SleeveCompanyW
|
||||
import { helpers } from "../Netscript/NetscriptHelpers";
|
||||
import { cloneDeep } from "lodash";
|
||||
import { getAugCost } from "../Augmentation/AugmentationHelpers";
|
||||
import { Factions } from "../Faction/Factions";
|
||||
|
||||
export function NetscriptSleeve(): InternalAPI<NetscriptSleeve> {
|
||||
const checkSleeveAPIAccess = function (ctx: NetscriptContext) {
|
||||
@ -102,11 +103,15 @@ export function NetscriptSleeve(): InternalAPI<NetscriptSleeve> {
|
||||
},
|
||||
setToFactionWork: (ctx) => (_sleeveNumber, _factionName, _workType) => {
|
||||
const sleeveNumber = helpers.number(ctx, "sleeveNumber", _sleeveNumber);
|
||||
const factionName = helpers.string(ctx, "factionName", _factionName);
|
||||
const factionName = getEnumHelper("FactionName").nsGetMember(ctx, _factionName);
|
||||
const workType = helpers.string(ctx, "workType", _workType);
|
||||
checkSleeveAPIAccess(ctx);
|
||||
checkSleeveNumber(ctx, sleeveNumber);
|
||||
|
||||
if (!Factions[factionName].isMember) {
|
||||
throw helpers.makeRuntimeErrorMsg(ctx, `Cannot work for faction ${factionName} without being a member.`);
|
||||
}
|
||||
|
||||
// Cannot work at the same faction that another sleeve is working at
|
||||
for (let i = 0; i < Player.sleeves.length; ++i) {
|
||||
if (i === sleeveNumber) {
|
||||
|
@ -25,6 +25,7 @@ import {
|
||||
LocationName,
|
||||
UniversityClassType,
|
||||
CompanyName,
|
||||
FactionName,
|
||||
} from "@enums";
|
||||
|
||||
import { Factions } from "../../Faction/Factions";
|
||||
@ -291,15 +292,13 @@ export class Sleeve extends Person implements SleevePerson {
|
||||
}
|
||||
|
||||
/** TODO 2.4: Make this take in type correct data */
|
||||
workForFaction(_factionName: string, _workType: string): boolean {
|
||||
workForFaction(factionName: FactionName, _workType: string): boolean {
|
||||
const workTypeConversion: Record<string, string> = {
|
||||
"Hacking Contracts": "hacking",
|
||||
"Field Work": "field",
|
||||
"Security Work": "security",
|
||||
};
|
||||
if (workTypeConversion[_workType]) _workType = workTypeConversion[_workType];
|
||||
const factionName = getEnumHelper("FactionName").fuzzyGetMember(_factionName);
|
||||
if (!factionName) return false;
|
||||
const faction = Factions[factionName];
|
||||
const workType = getEnumHelper("FactionWorkType").fuzzyGetMember(_workType);
|
||||
if (!workType) return false;
|
||||
|
@ -80,7 +80,8 @@ export function SleeveElem(props: SleeveElemProps): React.ReactElement {
|
||||
else console.error(`Invalid company name in setSleeveTask: ${abc[1]}`);
|
||||
break;
|
||||
case "Work for Faction":
|
||||
props.sleeve.workForFaction(abc[1], abc[2]);
|
||||
if (getEnumHelper("FactionName").isMember(abc[1])) props.sleeve.workForFaction(abc[1], abc[2]);
|
||||
else console.error(`Invalid faction name in setSleeveTask: ${abc[1]}`);
|
||||
break;
|
||||
case "Commit Crime":
|
||||
props.sleeve.commitCrime(findCrime(abc[1])?.type ?? CrimeType.shoplift);
|
||||
|
Loading…
Reference in New Issue
Block a user