Files
The_Bitburner_Scripts/Ramses/home/CorpControl.js
2024-10-14 23:47:55 +02:00

141 lines
5.4 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;
nListenPID = ns.run("/corp/HasCorp.js");
await ns.nextPortWrite(nListenPID);
let bCorpExists = ns.readPort(nListenPID);
if (!bCorpExists) {
nListenPID = ns.run("/corp/CreateCorp.js", 1, sCorpName);
await ns.nextPortWrite(nListenPID);
}
if (!ns.readPort(nListenPID)) { ns.tprint("Error! Couldn't start Corporation!"); return };
ns.tprint(oCorpStatus);
while (nStep < 199) {
nStep = oCorpStatus.nStep;
ns.tprint(nStep);
nListenPID = ns.run("/corp/GetCorpData.js");
await ns.nextPortWrite(nListenPID);
oCorpData = ns.readPort(nListenPID);
switch (nStep) {
case 0:
if (!oCorpData.divisions.length > 0) {
nListenPID = ns.run("/corp/CorpStart.js", 1, sDivisionName, "Agriculture");
await ns.nextPortWrite(nListenPID);
};
oCorpStatus.nStep = 10;
break;
case 10:
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetDivisionsData.js", 1, sDivisionName);
await ns.nextPortWrite(nListenPID);
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);
}
}
oCorpStatus.nStep = 20;
break;
case 20:
nListenPID = ns.run("/corp/HasUnlock.js", 1, "Smart Supply");
await ns.nextPortWrite(nListenPID);
bUnlockStatus = ns.readPort(nListenPID);
if (!bUnlockStatus) {
await ns.nextPortWrite(ns.run("/corp/BuyUnlock.js", 1, "Smart Supply"));
}
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetWarehouseData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
oWarehouseData = ns.readPort(nListenPID);
if (!oWarehouseData) {
await ns.nextPortWrite(ns.run("/corp/PurchaseWarehouses.js", 1, sDivisionName, sCity));
}
await ns.nextPortWrite(ns.run("/corp/SetSmartSupply.js", 1, sDivisionName, sCity));
};
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);
oOfficeData = ns.readPort(nListenPID);
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
}
oCorpStatus.nStep = 40;
break;
case 40:
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
oOfficeData = ns.readPort(nListenPID);
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify({nWorkerNumbers: [1, 1, 1, 1, 0, 0]}));
await ns.nextPortWrite(nListenPID);
}
oCorpStatus.nStep = 50;
break;
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));
ns.tprint(sCity, entry)
})
}
oCorpStatus.nStep = 60;
break;
case 60:
nTargetSize = 12;
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
oOfficeData = ns.readPort(nListenPID);
await ns.nextPortWrite(ns.run("/corp/UpgradeOffice.js", 1, sDivisionName, sCity, nTargetSize, oOfficeData.size))
}
oCorpStatus.nStep = 70;
break;
case 70:
for (let sCity of aCitites) {
nListenPID = ns.run("/corp/GetOfficeData.js", 1, sDivisionName, sCity);
await ns.nextPortWrite(nListenPID);
oOfficeData = ns.readPort(nListenPID);
nListenPID = ns.run("/corp/HireWorkers.js", 1, sDivisionName, sCity, JSON.stringify(oOfficeData), JSON.stringify({nWorkerNumbers: [2, 2, 2, 2, 2, 2]}));
await ns.nextPortWrite(nListenPID);
}
oCorpStatus.nStep = 200;
break;
case 80:
break;
case 90:
break;
case 100:
break;
default:
break;
}
ns.write("CorpStatus.txt", JSON.stringify(oCorpStatus), "w")
await ns.sleep(1)
}
}