mizzajl some random comment

This commit is contained in:
2024-10-05 21:33:00 +02:00
parent 7705683965
commit ae47b87feb
70 changed files with 6037 additions and 6 deletions

View File

@@ -0,0 +1,219 @@
import { GetFlag, GetArg } from "gang/argFunctions.js";
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
// 30 possible gang members
// create list of names
let memberNamePool = [
"Thor", // 1
"Iron Man", // 2
"Starlord", // 3
"Thanos", // 4
"Groot", // 5
"Ant-Man", // 6
"Wasp", // 7
"Spiderman", // 8
"Loki", // 9
"Gamora", // 10
"Rocket Raccoon", // 11
"T'Challa", // 12
"Vision", // 13
"Scarlet Witch", // 14
"Winter Soldier", // 15
"Black Widow", // 16
"Hulk", // 17
"Bruce Banner", // 18
"Hawkeye", // 19
"Captain Marvel", // 20
"War Machine", // 21
"Nick Fury", // 22
"Nebula", // 23
"Drax", // 24
"Deadpool", // 25
"Cable", // 26
"Quicksilver", // 27
"Wolverine", // 28
"Adam Warlock", // 29
"Yondu", // 30
];
export async function main(ns) {
var buyAll = GetFlag(ns, "--buyAll");
var buyEquip = buyAll || GetFlag(ns, "--buyEquip");
var buyWeapon = buyAll || buyEquip || GetFlag(ns, "--buyWeapon");
var buyArmor = buyAll || buyEquip || GetFlag(ns, "--buyArmor");
var buyVehicle = buyAll || buyEquip || GetFlag(ns, "--buyVehicle");
var buyRoot = buyAll || buyEquip || GetFlag(ns, "--buyRoot");
var buyAug = buyAll || GetFlag(ns, "--buyAug");
var myGang = ns.gang.getGangInformation();
var possibleTasks = ns.gang.getTaskNames();
var unassignedTask = possibleTasks.shift();
var territoryTask = possibleTasks.pop();
var trainingTasks = possibleTasks.splice(possibleTasks.length - 3, 3);
var wantedLevelLowerTask = possibleTasks.pop();
var desirableAugs = [];
if (myGang.isHacking) {
wantedLevelLowerTask = possibleTasks.pop();
// replace combat with hacking
trainingTasks.splice(0, 1, trainingTasks[1]);
desirableAugs.push("BitWire");
desirableAugs.push("Neuralstimulator");
desirableAugs.push("DataJack");
}
else {
// replace hacking with combat
trainingTasks.splice(1, 1, trainingTasks[0]);
desirableAugs.push("Bionic Arms");
desirableAugs.push("Bionic Legs");
desirableAugs.push("Bionic Spine");
desirableAugs.push("BrachiBlades");
desirableAugs.push("Nanofiber Weave");
desirableAugs.push("Synthetic Heart");
desirableAugs.push("Synfibril Muscle");
desirableAugs.push("Graphene Bone Lacings");
}
var ascensionCycles = GetArg(ns, "--asc", 600000);
var nextAscensionAttempt = 0;
var cycleMs = 1100;
var ascensionMultLimit = GetArg(ns, "--alim", 2);
while (true) {
myGang = ns.gang.getGangInformation();
var otherGangs = ns.gang.getOtherGangInformation();
var buyableEquipment = ns.gang.getEquipmentNames().filter(e => {
return ns.gang.getEquipmentType(e) != "Augmentation" || desirableAugs.includes(e);
});
var members = ns.gang.getMemberNames();
while (ns.gang.canRecruitMember()) {
var possibleNames = memberNamePool.filter(name => !members.includes(name));
var toRecruit = possibleNames[getRandomInt(possibleNames.length)];
ns.gang.recruitMember(toRecruit);
await ns.sleep(1);
}
members = ns.gang.getMemberNames();
var memInfo = null;
members.sort((a, b) => { return Math.random() * 2 - 1; });
members.forEach((m) => {
var didBuy = false;
var hadAll = true;
memInfo = ns.gang.getMemberInformation(m);
ns.gang.setMemberTask(m, unassignedTask);
buyableEquipment.forEach((e) => {
if (memInfo.equipment.includes(e)) return;
if (memInfo.augmentations.includes(e)) return;
hadAll = false;
var type = ns.gang.getEquipmentType(e);
switch (type) {
case "Weapon":
if (buyWeapon) {
didBuy |= ns.gang.purchaseEquipment(m, e);
}
break;
case "Armor":
if (buyArmor) {
didBuy |= ns.gang.purchaseEquipment(m, e);
}
break;
case "Vehicle":
if (buyVehicle) {
didBuy |= ns.gang.purchaseEquipment(m, e);
}
break;
case "Rootkit":
if (buyRoot) {
didBuy |= ns.gang.purchaseEquipment(m, e);
}
break;
case "Augmentation":
if (buyAug) {
didBuy |= ns.gang.purchaseEquipment(m, e);
}
break;
default:
break;
}
});
var wantsToAscend = hadAll;
if (myGang.isHacking) {
wantsToAscend &= memInfo.hackingAscensionMult < ascensionMultLimit;
}
else {
wantsToAscend &= memInfo.hackingAscensionMult < ascensionMultLimit;
wantsToAscend &= memInfo.strengthAscensionMult < ascensionMultLimit;
wantsToAscend &= memInfo.agilityAscensionMult < ascensionMultLimit;
wantsToAscend &= memInfo.dexterityAscensionMult < ascensionMultLimit;
}
if (wantsToAscend && nextAscensionAttempt <= 0) {
ns.gang.ascendMember(m);
}
});
if (nextAscensionAttempt <= 0) {
nextAscensionAttempt = ascensionCycles;
}
var member = "";
if (!myGang.isHacking) {
var memCount = members.length;
while (members.length > (memCount / 2)) {
member = members.pop();
ns.gang.setMemberTask(member, territoryTask);
}
}
while (members.length > 0) {
var task = "";
member = members.pop();
memInfo = ns.gang.getMemberInformation(member);
var statsTarget = 50;
if ((myGang.isHacking && memInfo.hacking < statsTarget) ||
(!myGang.isHacking && memInfo.strength < statsTarget && memInfo.agility < statsTarget && memInfo.charisma < statsTarget && memInfo.defense < statsTarget)) {
task = trainingTasks[getRandomInt(trainingTasks.length)];
}
else if (myGang.wantedLevel > 1) {
task = wantedLevelLowerTask;
}
else {
if (Math.random() > 0.25) {
task = possibleTasks[possibleTasks.length - getRandomInt(2) - 1];
}
else {
task = trainingTasks[getRandomInt(trainingTasks.length)];
}
}
ns.gang.setMemberTask(member, task);
}
await ns.sleep(cycleMs);
nextAscensionAttempt -= cycleMs;
}
}