add argument for commitCrime focus

This commit is contained in:
Olivier Gagnon 2022-07-19 22:30:07 -04:00
parent 810f3a87b9
commit 83c26903c0
6 changed files with 52 additions and 21 deletions

4
dist/main.bundle.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -97,7 +97,7 @@ export class Crime {
this.kills = params.kills ? params.kills : 0;
}
commit(router: IRouter, p: IPlayer, div = 1, workerScript: WorkerScript | null = null): number {
commit(p: IPlayer, div = 1, workerScript: WorkerScript | null = null): number {
if (div <= 0) {
div = 1;
}
@ -107,8 +107,6 @@ export class Crime {
singularity: workerScript !== null,
}),
);
p.focus = true;
router.toWork();
return this.time;
}

@ -20,84 +20,108 @@ export function SlumsLocation(): React.ReactElement {
if (!e.isTrusted) {
return;
}
Crimes.Shoplift.commit(router, player);
Crimes.Shoplift.commit(player);
router.toWork();
player.focus = true;
}
function robStore(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.RobStore.commit(router, player);
Crimes.RobStore.commit(player);
router.toWork();
player.focus = true;
}
function mug(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Mug.commit(router, player);
Crimes.Mug.commit(player);
router.toWork();
player.focus = true;
}
function larceny(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Larceny.commit(router, player);
Crimes.Larceny.commit(player);
router.toWork();
player.focus = true;
}
function dealDrugs(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.DealDrugs.commit(router, player);
Crimes.DealDrugs.commit(player);
router.toWork();
player.focus = true;
}
function bondForgery(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.BondForgery.commit(router, player);
Crimes.BondForgery.commit(player);
router.toWork();
player.focus = true;
}
function traffickArms(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.TraffickArms.commit(router, player);
Crimes.TraffickArms.commit(player);
router.toWork();
player.focus = true;
}
function homicide(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Homicide.commit(router, player);
Crimes.Homicide.commit(player);
router.toWork();
player.focus = true;
}
function grandTheftAuto(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.GrandTheftAuto.commit(router, player);
Crimes.GrandTheftAuto.commit(player);
router.toWork();
player.focus = true;
}
function kidnap(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Kidnap.commit(router, player);
Crimes.Kidnap.commit(player);
router.toWork();
player.focus = true;
}
function assassinate(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Assassination.commit(router, player);
Crimes.Assassination.commit(player);
router.toWork();
player.focus = true;
}
function heist(e: React.MouseEvent<HTMLElement>): void {
if (!e.isTrusted) {
return;
}
Crimes.Heist.commit(router, player);
Crimes.Heist.commit(player);
router.toWork();
player.focus = true;
}
const shopliftChance = Crimes.Shoplift.successRate(player);

@ -1170,9 +1170,11 @@ export function NetscriptSingularity(player: IPlayer, workerScript: WorkerScript
return true;
},
commitCrime: (_ctx: NetscriptContext) =>
function (_crimeRoughName: unknown): number {
function (_crimeRoughName: unknown, _focus: unknown = true): number {
_ctx.helper.checkSingularityAccess();
const crimeRoughName = _ctx.helper.string("crimeRoughName", _crimeRoughName);
const focus = _ctx.helper.boolean(_focus);
const wasFocusing = player.focus;
if (player.currentWork !== null) {
player.finishWork(true);
@ -1187,7 +1189,14 @@ export function NetscriptSingularity(player: IPlayer, workerScript: WorkerScript
throw _ctx.helper.makeRuntimeErrorMsg(`Invalid crime: '${crimeRoughName}'`);
}
_ctx.log(() => `Attempting to commit ${crime.name}...`);
return crime.commit(Router, player, 1, workerScript);
if (focus) {
player.startFocusing();
Router.toWork();
} else if (wasFocusing) {
player.stopFocusing();
Router.toTerminal();
}
return crime.commit(player, 1, workerScript);
},
getCrimeChance: (_ctx: NetscriptContext) =>
function (_crimeRoughName: unknown): number {

@ -55,7 +55,7 @@ export namespace Reviver {
// Returns: The structure (which will then be turned into a string
// as part of the JSON.stringify algorithm)
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export function Generic_toJSON(ctorName: string, obj: any, keys?: string[]): IReviverValue {
export function Generic_toJSON(ctorName: string, obj: Record<string, any>, keys?: string[]): IReviverValue {
if (!keys) {
keys = Object.keys(obj); // Only "own" properties are included
}