diff --git a/src/Myrian/Helper.tsx b/src/Myrian/Helper.tsx index a38333a26..3f6a35a34 100644 --- a/src/Myrian/Helper.tsx +++ b/src/Myrian/Helper.tsx @@ -16,7 +16,7 @@ export const NewBus = (name: string, x: number, y: number) => { myrian.devices.push({ name, type: DeviceType.Bus, - busy: false, + isBusy: false, x, y, content: [], @@ -34,7 +34,7 @@ export const NewCache = (name: string, x: number, y: number) => { myrian.devices.push({ name, type: DeviceType.Cache, - busy: false, + isBusy: false, content: [], maxContent: 1, x, @@ -46,7 +46,7 @@ export const NewReducer = (name: string, x: number, y: number) => { myrian.devices.push({ name, type: DeviceType.Reducer, - busy: false, + isBusy: false, x, y, content: [], @@ -59,7 +59,7 @@ export const NewISocket = (name: string, x: number, y: number, dispensing: Compo myrian.devices.push({ name, type: DeviceType.ISocket, - busy: false, + isBusy: false, x, y, emitting: dispensing, @@ -74,7 +74,7 @@ export const NewOSocket = (name: string, x: number, y: number) => { myrian.devices.push({ name, type: DeviceType.OSocket, - busy: false, + isBusy: false, tier: 0, x, y, @@ -88,7 +88,7 @@ export const NewLock = (name: string, x: number, y: number) => { const lock: Lock = { name, type: DeviceType.Lock, - busy: false, + isBusy: false, x, y, }; @@ -107,13 +107,13 @@ export const resetMyrian = () => { myrian.devices = []; Object.assign(myrian, defaultMyrian); NewBus("alice", Math.floor(myrianSize / 2), Math.floor(myrianSize / 2)); - NewISocket("disp0", Math.floor(myrianSize / 4), 0, Component.R0); - NewISocket("disp1", Math.floor(myrianSize / 2), 0, Component.Y1); - NewISocket("disp2", Math.floor((myrianSize * 3) / 4), 0, Component.B0); + NewISocket("isocket0", Math.floor(myrianSize / 4), 0, Component.R0); + NewISocket("isocket1", Math.floor(myrianSize / 2), 0, Component.G0); + NewISocket("isocket2", Math.floor((myrianSize * 3) / 4), 0, Component.B0); - NewOSocket("dock0", Math.floor(myrianSize / 4), Math.floor(myrianSize - 1)); - NewOSocket("dock1", Math.floor(myrianSize / 2), Math.floor(myrianSize - 1)); - NewOSocket("dock2", Math.floor((myrianSize * 3) / 4), Math.floor(myrianSize - 1)); + NewOSocket("osocket0", Math.floor(myrianSize / 4), Math.floor(myrianSize - 1)); + NewOSocket("osocket1", Math.floor(myrianSize / 2), Math.floor(myrianSize - 1)); + NewOSocket("osocket2", Math.floor((myrianSize * 3) / 4), Math.floor(myrianSize - 1)); }; resetMyrian(); diff --git a/src/Myrian/formulas/formulas.ts b/src/Myrian/formulas/formulas.ts index bb789723f..c808fee43 100644 --- a/src/Myrian/formulas/formulas.ts +++ b/src/Myrian/formulas/formulas.ts @@ -46,6 +46,12 @@ export const getNextISocketRequest = (tier: number) => { .map(() => potential[Math.floor(Math.random() * potential.length)]); }; +(() => { + for (let i = 0; i < 10; i++) { + console.log(getNextISocketRequest(0)); + } +})(); + export const tierScale: Record = { [DeviceType.Bus]: [Infinity, Infinity, Infinity, Infinity], [DeviceType.ISocket]: [Infinity, Infinity, Infinity, Infinity], diff --git a/src/NetscriptFunctions/Myrian.ts b/src/NetscriptFunctions/Myrian.ts index f5d64d5d9..11a6dbf6a 100644 --- a/src/NetscriptFunctions/Myrian.ts +++ b/src/NetscriptFunctions/Myrian.ts @@ -40,7 +40,9 @@ export function NetscriptMyrian(): InternalAPI { reset: () => resetMyrian, getDevice: (ctx) => (_id) => { const id = helpers.deviceID(ctx, "id", _id); - return JSON.parse(JSON.stringify(findDevice(id))); + const device = findDevice(id); + if (!device) return; + return JSON.parse(JSON.stringify(device)); }, getDevices: (__ctx) => () => JSON.parse(JSON.stringify(myrian.devices)), getVulns: () => () => myrian.vulns, @@ -70,14 +72,14 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - if (bus.busy) { + if (bus.isBusy) { helpers.log(ctx, () => `bus ${busID} is busy`); return Promise.resolve(false); } - bus.busy = true; + bus.isBusy = true; return helpers.netscriptDelay(ctx, moveSpeed(bus.moveLvl), true).then(() => { - bus.busy = false; + bus.isBusy = false; if (findDevice([x, y])) { helpers.log(ctx, () => `[${x}, ${y}] is occupied`); return Promise.resolve(false); @@ -141,19 +143,19 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - if (fromDevice.busy || toDevice.busy) { + if (fromDevice.isBusy || toDevice.isBusy) { helpers.log(ctx, () => "one of the entities is busy"); return Promise.resolve(false); } const bus = [fromDevice, toDevice].find((e) => e.type === DeviceType.Bus) as Bus; const container = [fromDevice, toDevice].find((e) => e.type !== DeviceType.Bus)!; - fromDevice.busy = true; - toDevice.busy = true; + fromDevice.isBusy = true; + toDevice.isBusy = true; return helpers.netscriptDelay(ctx, transferSpeed(bus.transferLvl), true).then(() => { - fromDevice.busy = false; - toDevice.busy = false; + fromDevice.isBusy = false; + toDevice.isBusy = false; toDevice.content = toDevice.content.filter((item) => !input.includes(item)); toDevice.content.push(...output); @@ -215,16 +217,16 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - if (bus.busy || reducer.busy) { + if (bus.isBusy || reducer.isBusy) { helpers.log(ctx, () => "bus or reducer is busy"); return Promise.resolve(false); } - bus.busy = true; - reducer.busy = true; + bus.isBusy = true; + reducer.isBusy = true; return helpers.netscriptDelay(ctx, reduceSpeed(bus.reduceLvl), true).then(() => { - bus.busy = false; - reducer.busy = false; + bus.isBusy = false; + reducer.isBusy = false; reducer.content = [recipe.output]; return Promise.resolve(true); }); @@ -298,7 +300,7 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - if (bus.busy) { + if (bus.isBusy) { helpers.log(ctx, () => `bus ${busID} is busy`); return Promise.resolve(false); } @@ -321,12 +323,12 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - bus.busy = true; + bus.isBusy = true; const lockName = `lock-${busID}`; const lock = NewLock(lockName, x, y); - lock.busy = true; + lock.isBusy = true; return helpers.netscriptDelay(ctx, installSpeed(bus.installLvl), true).then(() => { - bus.busy = false; + bus.isBusy = false; removeDevice(lockName); switch (deviceType) { case DeviceType.Bus: { @@ -368,16 +370,16 @@ export function NetscriptMyrian(): InternalAPI { return Promise.resolve(false); } - if (bus.busy || placedDevice.busy) { + if (bus.isBusy || placedDevice.isBusy) { helpers.log(ctx, () => `bus or device is busy`); return Promise.resolve(false); } - bus.busy = true; - placedDevice.busy = true; + bus.isBusy = true; + placedDevice.isBusy = true; return helpers.netscriptDelay(ctx, installSpeed(bus.installLvl), true).then(() => { - bus.busy = false; - placedDevice.busy = false; + bus.isBusy = false; + placedDevice.isBusy = false; removeDevice([x, y]); return Promise.resolve(true); }); diff --git a/src/ScriptEditor/NetscriptDefinitions.d.ts b/src/ScriptEditor/NetscriptDefinitions.d.ts index bdfe7a494..76f6119d2 100644 --- a/src/ScriptEditor/NetscriptDefinitions.d.ts +++ b/src/ScriptEditor/NetscriptDefinitions.d.ts @@ -5227,7 +5227,7 @@ export interface BaseDevice { type: DeviceType; x: number; y: number; - busy: boolean; + isBusy: boolean; } export interface Bus extends ContainerDevice {