207 lines
7.8 KiB
JavaScript
207 lines
7.8 KiB
JavaScript
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
let aCitites = ["Sector-12", "Aevum", "Volhaven", "Chongqing", "New Tokyo", "Ishima"];
|
|
let sCorpName = "RM Enterprises";
|
|
let sDivisionName = "Agri-Ram";
|
|
let reset = ns.args[0];
|
|
if (reset === true || !ns.fileExists("CorpStatus.txt")) {
|
|
ns.write("CorpStatus.txt", JSON.stringify({ nStep: 0 }), "w");
|
|
};
|
|
let oCorpStatus = JSON.parse(ns.read("CorpStatus.txt")) || { nStep: 0 };
|
|
let nStep = oCorpStatus.nStep;
|
|
let nListenPID = 0;
|
|
let oCorpData = {};
|
|
let oDivisionData = {};
|
|
let oOfficeData = {};
|
|
let oWarehouseData = {};
|
|
let bUnlockStatus = false;
|
|
let nTargetSize = 0;
|
|
let oNewOfficeData = {};
|
|
let oWorkerNumbers = {};
|
|
nListenPID = ns.run("/corp/HasCorp.js");
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
let bCorpExists = ns.readPort(nListenPID);
|
|
if (!bCorpExists) {
|
|
nListenPID = ns.run("/corp/CreateCorp.js", 1, sCorpName);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
if (!ns.readPort(nListenPID)) { ns.tprint("Error! Couldn't start Corporation!"); return };
|
|
ns.tprint(oCorpStatus);
|
|
while (nStep < 199) {
|
|
await ns.corporation.nextUpdate();
|
|
if (nStep > 40) {
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oOfficeData = ns.readPort(nListenPID);
|
|
if (oOfficeData.avgEnergy < 99.5) {
|
|
nListenPID = ns.run("/corp/BuyTea.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
if (oOfficeData.avgMorale < 99.5) {
|
|
nListenPID = ns.run("/corp/ThrowParty.js", 1, sDivisionName, sCity, 500000);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
// InsertSmartSupplyHere
|
|
}
|
|
};
|
|
nStep = oCorpStatus.nStep;
|
|
ns.tprint(nStep);
|
|
switch (nStep) {
|
|
case 0:
|
|
nListenPID = ns.run("/corp/GetCorpData.js");
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oCorpData = ns.readPort(nListenPID);
|
|
if (!oCorpData.divisions.length > 0) {
|
|
nListenPID = ns.run("/corp/CorpStart.js", 1, sDivisionName, "Agriculture");
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
};
|
|
oCorpStatus.nStep = 10;
|
|
break;
|
|
case 10:
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetDivisionsData.js", 1, sDivisionName);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oDivisionData = ns.readPort(nListenPID);
|
|
if (sCity !== "Sector-12" && !oDivisionData.cities.includes(sCity)) {
|
|
nListenPID = ns.run("/corp/CorpExpandCity.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
}
|
|
oCorpStatus.nStep = 20;
|
|
break;
|
|
case 20:
|
|
/*nListenPID = ns.run("/corp/HasUnlock.js", 1, "Smart Supply");
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
bUnlockStatus = ns.readPort(nListenPID);
|
|
if (!bUnlockStatus) {
|
|
await ns.nextPortWrite(ns.run("/corp/BuyUnlock.js", 1, "Smart Supply"));
|
|
await ns.sleep(1);
|
|
}*/
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetWarehouseData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oWarehouseData = ns.readPort(nListenPID);
|
|
if (!oWarehouseData) {
|
|
await ns.nextPortWrite(ns.run("/corp/PurchaseWarehouses.js", 1, sDivisionName, sCity));
|
|
await ns.sleep(1);
|
|
}
|
|
};
|
|
oCorpStatus.nStep = 30;
|
|
break;
|
|
case 30:
|
|
nTargetSize = 4;
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oOfficeData = ns.readPort(nListenPID);
|
|
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
|
|
await ns.sleep(1);
|
|
}
|
|
oCorpStatus.nStep = 40;
|
|
break;
|
|
case 40:
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oOfficeData = ns.readPort(nListenPID);
|
|
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData));
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
oCorpStatus.nStep = 45;
|
|
break;
|
|
case 45:
|
|
nListenPID = ns.run("/corp/GetDivisionsData.js", 1, sDivisionName);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oDivisionData = ns.readPort(nListenPID);
|
|
if (!oDivisionData.researchPoints > 55) { continue } else {
|
|
for (let sCity of aCitites) {
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oOfficeData = ns.readPort(nListenPID);
|
|
nListenPID = ns.run("/corp/SetWorkerOnPosition.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify({ nWorkerNumbers: [1, 1, 1, 1, 0, 0] }));
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
}
|
|
oCorpStatus.nStep = 70;
|
|
}
|
|
break;
|
|
case 70:
|
|
break;
|
|
case 80:
|
|
break;
|
|
case 90:
|
|
break;
|
|
case 100:
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
ns.write("CorpStatus.txt", JSON.stringify(oCorpStatus), "w")
|
|
await ns.sleep(1)
|
|
}
|
|
}
|
|
|
|
/*
|
|
|
|
case 50:
|
|
let aCurrentGoods = [
|
|
{ "sMaterialName": "Food", "yAmount": "MAX", "yPrice": "MP-5" },
|
|
{ "sMaterialName": "Plants", "yAmount": "MAX", "yPrice": "MP-5" }
|
|
]
|
|
for (let sCity of aCitites) {
|
|
aCurrentGoods.forEach(async (entry) => {
|
|
nListenPID = ns.run("/corp/SetSalePrices.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
|
nListenPID = ns.run("/corp/SetMaterialLimit.js", 1, sDivisionName, sCity, JSON.stringify(entry));
|
|
})
|
|
}
|
|
oCorpStatus.nStep = 60;
|
|
break;
|
|
case 60:
|
|
for (let sCity of aCitites) {
|
|
nTargetSize = sCity === "Sector-12" ? 12 : 4;
|
|
oWorkerNumbers = sCity === "Sector-12" ? { nWorkerNumbers: [2, 2, 2, 2, 2, 2] } : { nWorkerNumbers: [1, 1, 1, 1, 0, 0] }
|
|
let running = true;
|
|
while (running) {
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oOfficeData = ns.readPort(nListenPID);
|
|
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size));
|
|
await ns.sleep(1);
|
|
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
oNewOfficeData = ns.readPort(nListenPID);
|
|
if (oNewOfficeData.size < nTargetSize) {
|
|
await ns.sleep(10000);
|
|
ns.tprint("Waiting for money");
|
|
continue;
|
|
} else {
|
|
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify(oWorkerNumbers));
|
|
await ns.nextPortWrite(nListenPID);
|
|
await ns.sleep(1);
|
|
running = false;
|
|
}
|
|
}
|
|
}
|
|
oCorpStatus.nStep = 70;
|
|
break;
|
|
|
|
*/ |