From bbbaa89f74e89d3573cc4c3d52675809a7fe7949 Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Tue, 29 Mar 2022 20:05:40 -0400 Subject: [PATCH] unknown-ify singularity API --- src/NetscriptFunctions/Singularity.ts | 4 +- src/NetscriptFunctions/Sleeve.ts | 111 ++++++++++----------- src/ScriptEditor/NetscriptDefinitions.d.ts | 4 + 3 files changed, 57 insertions(+), 62 deletions(-) diff --git a/src/NetscriptFunctions/Singularity.ts b/src/NetscriptFunctions/Singularity.ts index f06bb913f..354e94b84 100644 --- a/src/NetscriptFunctions/Singularity.ts +++ b/src/NetscriptFunctions/Singularity.ts @@ -742,6 +742,8 @@ export function NetscriptSingularity( mult: { agility: player.agility_mult, agilityExp: player.agility_exp_mult, + charisma: player.charisma, + charismaExp: player.charisma_exp, companyRep: player.company_rep_mult, crimeMoney: player.crime_money_mult, crimeSuccess: player.crime_success_mult, @@ -1211,7 +1213,7 @@ export function NetscriptSingularity( ); return true; }, - createProgram: function (_programName: any, _focus: unknown = true): boolean { + createProgram: function (_programName: unknown, _focus: unknown = true): boolean { const programName = helper.string("createProgram", "programName", _programName).toLowerCase(); const focus = helper.boolean(_focus); helper.updateDynamicRam("createProgram", getRamCost(player, "createProgram")); diff --git a/src/NetscriptFunctions/Sleeve.ts b/src/NetscriptFunctions/Sleeve.ts index 4f7669119..0aa3559d4 100644 --- a/src/NetscriptFunctions/Sleeve.ts +++ b/src/NetscriptFunctions/Sleeve.ts @@ -10,10 +10,16 @@ import { Augmentations } from "../Augmentation/Augmentations"; import { CityName } from "../Locations/data/CityNames"; import { findCrime } from "../Crime/CrimeHelpers"; -import { Sleeve as ISleeve } from "../ScriptEditor/NetscriptDefinitions"; +import { + AugmentPair, + Sleeve as ISleeve, + SleeveInformation, + SleeveSkills, + SleeveTask, +} from "../ScriptEditor/NetscriptDefinitions"; export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, helper: INetscriptHelper): ISleeve { - const checkSleeveAPIAccess = function (func: any): void { + const checkSleeveAPIAccess = function (func: string): void { if (player.bitNodeN !== 10 && !SourceFileFlags[10]) { throw helper.makeRuntimeErrorMsg( `sleeve.${func}`, @@ -22,7 +28,7 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel } }; - const checkSleeveNumber = function (func: any, sleeveNumber: any): void { + const checkSleeveNumber = function (func: string, sleeveNumber: number): void { if (sleeveNumber >= player.sleeves.length || sleeveNumber < 0) { const msg = `Invalid sleeve number: ${sleeveNumber}`; workerScript.log(func, () => msg); @@ -30,7 +36,7 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel } }; - const getSleeveStats = function (sleeveNumber: any): any { + const getSleeveStats = function (sleeveNumber: number): SleeveSkills { const sl = player.sleeves[sleeveNumber]; return { shock: 100 - sl.shock, @@ -42,7 +48,7 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel agility: sl.agility, charisma: sl.charisma, }; - } + }; return { getNumSleeves: function (): number { @@ -50,23 +56,23 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel checkSleeveAPIAccess("getNumSleeves"); return player.sleeves.length; }, - setToShockRecovery: function (asleeveNumber: any = 0): boolean { - const sleeveNumber = helper.number("setToShockRecovery", "sleeveNumber", asleeveNumber); + setToShockRecovery: function (_sleeveNumber: unknown): boolean { + const sleeveNumber = helper.number("setToShockRecovery", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("setToShockRecovery", getRamCost(player, "sleeve", "setToShockRecovery")); checkSleeveAPIAccess("setToShockRecovery"); checkSleeveNumber("setToShockRecovery", sleeveNumber); return player.sleeves[sleeveNumber].shockRecovery(player); }, - setToSynchronize: function (asleeveNumber: any = 0): boolean { - const sleeveNumber = helper.number("setToSynchronize", "sleeveNumber", asleeveNumber); + setToSynchronize: function (_sleeveNumber: unknown): boolean { + const sleeveNumber = helper.number("setToSynchronize", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("setToSynchronize", getRamCost(player, "sleeve", "setToSynchronize")); checkSleeveAPIAccess("setToSynchronize"); checkSleeveNumber("setToSynchronize", sleeveNumber); return player.sleeves[sleeveNumber].synchronize(player); }, - setToCommitCrime: function (asleeveNumber: any = 0, aCrimeRoughName: any = ""): boolean { - const sleeveNumber = helper.number("setToCommitCrime", "sleeveNumber", asleeveNumber); - const crimeRoughName = helper.string("setToCommitCrime", "crimeName", aCrimeRoughName); + setToCommitCrime: function (_sleeveNumber: unknown, _crimeRoughName: unknown): boolean { + const sleeveNumber = helper.number("setToCommitCrime", "sleeveNumber", _sleeveNumber); + const crimeRoughName = helper.string("setToCommitCrime", "crimeName", _crimeRoughName); helper.updateDynamicRam("setToCommitCrime", getRamCost(player, "sleeve", "setToCommitCrime")); checkSleeveAPIAccess("setToCommitCrime"); checkSleeveNumber("setToCommitCrime", sleeveNumber); @@ -76,25 +82,25 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel } return player.sleeves[sleeveNumber].commitCrime(player, crime.name); }, - setToUniversityCourse: function (asleeveNumber: any = 0, auniversityName: any = "", aclassName: any = ""): boolean { - const sleeveNumber = helper.number("setToUniversityCourse", "sleeveNumber", asleeveNumber); - const universityName = helper.string("setToUniversityCourse", "universityName", auniversityName); - const className = helper.string("setToUniversityCourse", "className", aclassName); + setToUniversityCourse: function (_sleeveNumber: unknown, _universityName: unknown, _className: unknown): boolean { + const sleeveNumber = helper.number("setToUniversityCourse", "sleeveNumber", _sleeveNumber); + const universityName = helper.string("setToUniversityCourse", "universityName", _universityName); + const className = helper.string("setToUniversityCourse", "className", _className); helper.updateDynamicRam("setToUniversityCourse", getRamCost(player, "sleeve", "setToUniversityCourse")); checkSleeveAPIAccess("setToUniversityCourse"); checkSleeveNumber("setToUniversityCourse", sleeveNumber); return player.sleeves[sleeveNumber].takeUniversityCourse(player, universityName, className); }, - travel: function (asleeveNumber: any = 0, acityName: any = ""): boolean { - const sleeveNumber = helper.number("travel", "sleeveNumber", asleeveNumber); - const cityName = helper.string("setToUniversityCourse", "cityName", acityName); + travel: function (_sleeveNumber: unknown, _cityName: unknown): boolean { + const sleeveNumber = helper.number("travel", "sleeveNumber", _sleeveNumber); + const cityName = helper.string("setToUniversityCourse", "cityName", _cityName); helper.updateDynamicRam("travel", getRamCost(player, "sleeve", "travel")); checkSleeveAPIAccess("travel"); checkSleeveNumber("travel", sleeveNumber); return player.sleeves[sleeveNumber].travel(player, cityName as CityName); }, - setToCompanyWork: function (asleeveNumber: any = 0, acompanyName: any = ""): boolean { - const sleeveNumber = helper.number("setToCompanyWork", "sleeveNumber", asleeveNumber); + setToCompanyWork: function (_sleeveNumber: unknown, acompanyName: unknown): boolean { + const sleeveNumber = helper.number("setToCompanyWork", "sleeveNumber", _sleeveNumber); const companyName = helper.string("setToUniversityCourse", "companyName", acompanyName); helper.updateDynamicRam("setToCompanyWork", getRamCost(player, "sleeve", "setToCompanyWork")); checkSleeveAPIAccess("setToCompanyWork"); @@ -116,10 +122,10 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel return player.sleeves[sleeveNumber].workForCompany(player, companyName); }, - setToFactionWork: function (asleeveNumber: any = 0, afactionName: any = "", aworkType: any = ""): boolean { - const sleeveNumber = helper.number("setToFactionWork", "sleeveNumber", asleeveNumber); - const factionName = helper.string("setToUniversityCourse", "factionName", afactionName); - const workType = helper.string("setToUniversityCourse", "workType", aworkType); + setToFactionWork: function (_sleeveNumber: unknown, _factionName: unknown, _workType: unknown): boolean { + const sleeveNumber = helper.number("setToFactionWork", "sleeveNumber", _sleeveNumber); + const factionName = helper.string("setToUniversityCourse", "factionName", _factionName); + const workType = helper.string("setToUniversityCourse", "workType", _workType); helper.updateDynamicRam("setToFactionWork", getRamCost(player, "sleeve", "setToFactionWork")); checkSleeveAPIAccess("setToFactionWork"); checkSleeveNumber("setToFactionWork", sleeveNumber); @@ -140,40 +146,25 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel return player.sleeves[sleeveNumber].workForFaction(player, factionName, workType); }, - setToGymWorkout: function (asleeveNumber: any = 0, agymName: any = "", astat: any = ""): boolean { - const sleeveNumber = helper.number("setToGymWorkout", "sleeveNumber", asleeveNumber); - const gymName = helper.string("setToUniversityCourse", "gymName", agymName); - const stat = helper.string("setToUniversityCourse", "stat", astat); + setToGymWorkout: function (_sleeveNumber: unknown, _gymName: unknown, _stat: unknown): boolean { + const sleeveNumber = helper.number("setToGymWorkout", "sleeveNumber", _sleeveNumber); + const gymName = helper.string("setToUniversityCourse", "gymName", _gymName); + const stat = helper.string("setToUniversityCourse", "stat", _stat); helper.updateDynamicRam("setToGymWorkout", getRamCost(player, "sleeve", "setToGymWorkout")); checkSleeveAPIAccess("setToGymWorkout"); checkSleeveNumber("setToGymWorkout", sleeveNumber); return player.sleeves[sleeveNumber].workoutAtGym(player, gymName, stat); }, - getSleeveStats: function (asleeveNumber: any = 0): { - shock: number; - sync: number; - hacking: number; - strength: number; - defense: number; - dexterity: number; - agility: number; - charisma: number; - } { - const sleeveNumber = helper.number("getSleeveStats", "sleeveNumber", asleeveNumber); + getSleeveStats: function (_sleeveNumber: unknown): SleeveSkills { + const sleeveNumber = helper.number("getSleeveStats", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("getSleeveStats", getRamCost(player, "sleeve", "getSleeveStats")); checkSleeveAPIAccess("getSleeveStats"); checkSleeveNumber("getSleeveStats", sleeveNumber); - return getSleeveStats(sleeveNumber) + return getSleeveStats(sleeveNumber); }, - getTask: function (asleeveNumber: any = 0): { - task: string; - crime: string; - location: string; - gymStatType: string; - factionWorkType: string; - } { - const sleeveNumber = helper.number("getTask", "sleeveNumber", asleeveNumber); + getTask: function (_sleeveNumber: unknown): SleeveTask { + const sleeveNumber = helper.number("getTask", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("getTask", getRamCost(player, "sleeve", "getTask")); checkSleeveAPIAccess("getTask"); checkSleeveNumber("getTask", sleeveNumber); @@ -187,14 +178,15 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel factionWorkType: FactionWorkType[sl.factionWorkType], }; }, - getInformation: function (asleeveNumber: any = 0): any { - const sleeveNumber = helper.number("getInformation", "sleeveNumber", asleeveNumber); + getInformation: function (_sleeveNumber: unknown): SleeveInformation { + const sleeveNumber = helper.number("getInformation", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("getInformation", getRamCost(player, "sleeve", "getInformation")); checkSleeveAPIAccess("getInformation"); checkSleeveNumber("getInformation", sleeveNumber); const sl = player.sleeves[sleeveNumber]; return { + tor: false, city: sl.city, hp: sl.hp, jobs: Object.keys(player.jobs), // technically sleeves have the same jobs as the player. @@ -252,8 +244,8 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel workRepGain: sl.getRepGain(player), }; }, - getSleeveAugmentations: function (asleeveNumber: any = 0): string[] { - const sleeveNumber = helper.number("getSleeveAugmentations", "sleeveNumber", asleeveNumber); + getSleeveAugmentations: function (_sleeveNumber: unknown): string[] { + const sleeveNumber = helper.number("getSleeveAugmentations", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("getSleeveAugmentations", getRamCost(player, "sleeve", "getSleeveAugmentations")); checkSleeveAPIAccess("getSleeveAugmentations"); checkSleeveNumber("getSleeveAugmentations", sleeveNumber); @@ -264,11 +256,8 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel } return augs; }, - getSleevePurchasableAugs: function (asleeveNumber: any = 0): { - name: string; - cost: number; - }[] { - const sleeveNumber = helper.number("getSleevePurchasableAugs", "sleeveNumber", asleeveNumber); + getSleevePurchasableAugs: function (_sleeveNumber: unknown): AugmentPair[] { + const sleeveNumber = helper.number("getSleevePurchasableAugs", "sleeveNumber", _sleeveNumber); helper.updateDynamicRam("getSleevePurchasableAugs", getRamCost(player, "sleeve", "getSleevePurchasableAugs")); checkSleeveAPIAccess("getSleevePurchasableAugs"); checkSleeveNumber("getSleevePurchasableAugs", sleeveNumber); @@ -285,9 +274,9 @@ export function NetscriptSleeve(player: IPlayer, workerScript: WorkerScript, hel return augs; }, - purchaseSleeveAug: function (asleeveNumber: any = 0, aaugName: any = ""): boolean { - const sleeveNumber = helper.number("purchaseSleeveAug", "sleeveNumber", asleeveNumber); - const augName = helper.string("purchaseSleeveAug", "augName", aaugName); + purchaseSleeveAug: function (_sleeveNumber: unknown, _augName: unknown): boolean { + const sleeveNumber = helper.number("purchaseSleeveAug", "sleeveNumber", _sleeveNumber); + const augName = helper.string("purchaseSleeveAug", "augName", _augName); helper.updateDynamicRam("purchaseSleeveAug", getRamCost(player, "sleeve", "purchaseSleeveAug")); checkSleeveAPIAccess("purchaseSleeveAug"); checkSleeveNumber("purchaseSleeveAug", sleeveNumber); diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index f2a1e5c9b..7c00a7a6a 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -667,6 +667,10 @@ export interface CharacterMult { agility: number; /** Agility exp */ agilityExp: number; + /** Charisma stat */ + charisma: number; + /** Charisma exp */ + charismaExp: number; /** Company reputation */ companyRep: number; /** Money earned from crimes */