Merge pull request #1579 from danielyxie/dev

Gang changes
This commit is contained in:
hydroflame 2021-10-26 23:04:56 -04:00 committed by GitHub
commit e680730450
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 60 additions and 46 deletions

22
dist/vendor.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

File diff suppressed because one or more lines are too long

@ -32,7 +32,7 @@ export function SourceFileMinus1(): React.ReactElement {
<Typography style={{ whiteSpace: "pre-wrap" }}> <Typography style={{ whiteSpace: "pre-wrap" }}>
Source-File -1: Exploits in the BitNodes Source-File -1: Exploits in the BitNodes
<br /> <br />
Level {exploits.length} / ? Level {exploits.length} / {Object.keys(Exploit).length}
</Typography> </Typography>
} }
/> />

@ -566,7 +566,6 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.InfiltrationMoney = 3; BitNodeMultipliers.InfiltrationMoney = 3;
BitNodeMultipliers.FactionWorkRepGain = 0.5; BitNodeMultipliers.FactionWorkRepGain = 0.5;
BitNodeMultipliers.FactionPassiveRepGain = 0; BitNodeMultipliers.FactionPassiveRepGain = 0;
BitNodeMultipliers.GangKarmaRequirement = 0;
BitNodeMultipliers.PurchasedServerSoftcap = 1.3; BitNodeMultipliers.PurchasedServerSoftcap = 1.3;
break; break;
case 3: // Corporatocracy case 3: // Corporatocracy
@ -583,8 +582,8 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.HacknetNodeMoney = 0.25; BitNodeMultipliers.HacknetNodeMoney = 0.25;
BitNodeMultipliers.HomeComputerRamCost = 1.5; BitNodeMultipliers.HomeComputerRamCost = 1.5;
BitNodeMultipliers.PurchasedServerCost = 2; BitNodeMultipliers.PurchasedServerCost = 2;
BitNodeMultipliers.GangKarmaRequirement = 3;
BitNodeMultipliers.PurchasedServerSoftcap = 1.3; BitNodeMultipliers.PurchasedServerSoftcap = 1.3;
BitNodeMultipliers.GangSoftcap = 0.9;
break; break;
case 4: // The Singularity case 4: // The Singularity
BitNodeMultipliers.ServerMaxMoney = 0.15; BitNodeMultipliers.ServerMaxMoney = 0.15;
@ -629,8 +628,8 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.FactionPassiveRepGain = 0; BitNodeMultipliers.FactionPassiveRepGain = 0;
BitNodeMultipliers.HackExpGain = 0.25; BitNodeMultipliers.HackExpGain = 0.25;
BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed
BitNodeMultipliers.GangKarmaRequirement = 5;
BitNodeMultipliers.PurchasedServerSoftcap = 2; BitNodeMultipliers.PurchasedServerSoftcap = 2;
BitNodeMultipliers.GangSoftcap = 0.7;
break; break;
case 7: // Bladeburner 2079 case 7: // Bladeburner 2079
BitNodeMultipliers.BladeburnerRank = 0.6; BitNodeMultipliers.BladeburnerRank = 0.6;
@ -651,8 +650,8 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.FourSigmaMarketDataCost = 2; BitNodeMultipliers.FourSigmaMarketDataCost = 2;
BitNodeMultipliers.FourSigmaMarketDataApiCost = 2; BitNodeMultipliers.FourSigmaMarketDataApiCost = 2;
BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed BitNodeMultipliers.DaedalusAugsRequirement = 1.166; // Results in 35 Augs needed
BitNodeMultipliers.GangKarmaRequirement = 5;
BitNodeMultipliers.PurchasedServerSoftcap = 2; BitNodeMultipliers.PurchasedServerSoftcap = 2;
BitNodeMultipliers.GangSoftcap = 0.7;
break; break;
case 8: // Ghost of Wall Street case 8: // Ghost of Wall Street
BitNodeMultipliers.ScriptHackMoney = 0.3; BitNodeMultipliers.ScriptHackMoney = 0.3;
@ -665,8 +664,8 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.RepToDonateToFaction = 0; BitNodeMultipliers.RepToDonateToFaction = 0;
BitNodeMultipliers.CorporationValuation = 0; BitNodeMultipliers.CorporationValuation = 0;
BitNodeMultipliers.CodingContractMoney = 0; BitNodeMultipliers.CodingContractMoney = 0;
BitNodeMultipliers.GangKarmaRequirement = 10;
BitNodeMultipliers.PurchasedServerSoftcap = 4; BitNodeMultipliers.PurchasedServerSoftcap = 4;
BitNodeMultipliers.GangSoftcap = 0;
break; break;
case 9: // Hacktocracy case 9: // Hacktocracy
BitNodeMultipliers.HackingLevelMultiplier = 0.4; BitNodeMultipliers.HackingLevelMultiplier = 0.4;
@ -688,7 +687,7 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.FourSigmaMarketDataApiCost = 4; BitNodeMultipliers.FourSigmaMarketDataApiCost = 4;
BitNodeMultipliers.BladeburnerRank = 0.9; BitNodeMultipliers.BladeburnerRank = 0.9;
BitNodeMultipliers.BladeburnerSkillCost = 1.2; BitNodeMultipliers.BladeburnerSkillCost = 1.2;
BitNodeMultipliers.GangKarmaRequirement = 3; BitNodeMultipliers.GangSoftcap = 0.8;
break; break;
case 10: // Digital Carbon case 10: // Digital Carbon
BitNodeMultipliers.HackingLevelMultiplier = 0.2; BitNodeMultipliers.HackingLevelMultiplier = 0.2;
@ -712,8 +711,8 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.PurchasedServerLimit = 0.6; BitNodeMultipliers.PurchasedServerLimit = 0.6;
BitNodeMultipliers.PurchasedServerMaxRam = 0.5; BitNodeMultipliers.PurchasedServerMaxRam = 0.5;
BitNodeMultipliers.BladeburnerRank = 0.8; BitNodeMultipliers.BladeburnerRank = 0.8;
BitNodeMultipliers.GangKarmaRequirement = 3;
BitNodeMultipliers.PurchasedServerSoftcap = 1.1; BitNodeMultipliers.PurchasedServerSoftcap = 1.1;
BitNodeMultipliers.GangSoftcap = 0.9;
break; break;
case 11: //The Big Crash case 11: //The Big Crash
BitNodeMultipliers.HackingLevelMultiplier = 0.5; BitNodeMultipliers.HackingLevelMultiplier = 0.5;
@ -801,6 +800,7 @@ export function initBitNodeMultipliers(p: IPlayer): void {
BitNodeMultipliers.BladeburnerRank = dec; BitNodeMultipliers.BladeburnerRank = dec;
BitNodeMultipliers.BladeburnerSkillCost = inc; BitNodeMultipliers.BladeburnerSkillCost = inc;
BitNodeMultipliers.GangSoftcap = dec;
break; break;
} }
default: default:

@ -110,9 +110,9 @@ interface IBitNodeMultipliers {
FourSigmaMarketDataCost: number; FourSigmaMarketDataCost: number;
/** /**
* Influences how much negative karma is required to create a gang in this bitnode. * Reduces gangs earning.
*/ */
GangKarmaRequirement: number; GangSoftcap: number;
/** /**
* Influences the experienced gained when hacking a server. * Influences the experienced gained when hacking a server.
@ -278,6 +278,7 @@ export const BitNodeMultipliers: IBitNodeMultipliers = {
BladeburnerRank: 1, BladeburnerRank: 1,
BladeburnerSkillCost: 1, BladeburnerSkillCost: 1,
GangSoftcap: 1,
DaedalusAugsRequirement: 1, DaedalusAugsRequirement: 1,
GangKarmaRequirement: 1,
}; };

@ -16,6 +16,7 @@ export enum Exploit {
Unclickable = "Unclickable", Unclickable = "Unclickable",
UndocumentedFunctionCall = "UndocumentedFunctionCall", UndocumentedFunctionCall = "UndocumentedFunctionCall",
TimeCompression = "TimeCompression", TimeCompression = "TimeCompression",
RealityAlteration = "RealityAlteration",
// To the players reading this. Yes you're supposed to add EditSaveFile by // To the players reading this. Yes you're supposed to add EditSaveFile by
// editing your save file, yes you could add them all, no we don't care // editing your save file, yes you could add them all, no we don't care
// that's not the point. // that's not the point.
@ -31,6 +32,7 @@ const names: {
TimeCompression: "by compressing time", TimeCompression: "by compressing time",
Unclickable: "by clicking the unclickable.", Unclickable: "by clicking the unclickable.",
UndocumentedFunctionCall: "by looking beyond the documentation.", UndocumentedFunctionCall: "by looking beyond the documentation.",
RealityAlteration: "by altering reality to suit your whims.",
}; };
export function ExploitName(exploit: string): string { export function ExploitName(exploit: string): string {

@ -42,6 +42,7 @@ export function AugmentationsPage(props: IProps): React.ReactElement {
const augs: string[] = []; const augs: string[] = [];
for (const augName in Augmentations) { for (const augName in Augmentations) {
if (augName === AugmentationNames.NeuroFluxGovernor) continue; if (augName === AugmentationNames.NeuroFluxGovernor) continue;
if (augName === AugmentationNames.TheRedPill && player.bitNodeN !== 2) continue;
const aug = Augmentations[augName]; const aug = Augmentations[augName];
if (!aug.isSpecial) { if (!aug.isSpecial) {
augs.push(augName); augs.push(augName);

@ -24,6 +24,7 @@ import { GangMember } from "./GangMember";
import { WorkerScript } from "../Netscript/WorkerScript"; import { WorkerScript } from "../Netscript/WorkerScript";
import { IPlayer } from "../PersonObjects/IPlayer"; import { IPlayer } from "../PersonObjects/IPlayer";
import { BitNodeMultipliers } from "../BitNode/BitNodeMultipliers";
export class Gang { export class Gang {
facName: string; facName: string;
@ -115,9 +116,10 @@ export class Gang {
wantedLevelGains += wantedLevelGain; wantedLevelGains += wantedLevelGain;
if (this.members[i].getTask().baseWanted < 0) justice++; // this member is lowering wanted. if (this.members[i].getTask().baseWanted < 0) justice++; // this member is lowering wanted.
} }
this.respectGainRate = respectGains; const territoryPenalty = (0.2 * this.getTerritory() + 0.8) * BitNodeMultipliers.GangSoftcap;
this.wantedGainRate = wantedLevelGains; this.respectGainRate = Math.pow(respectGains, territoryPenalty);
this.moneyGainRate = moneyGains; this.wantedGainRate = Math.pow(wantedLevelGains, territoryPenalty);
this.moneyGainRate = Math.pow(moneyGains, territoryPenalty);
const gain = respectGains * numCycles; const gain = respectGains * numCycles;
this.respect += gain; this.respect += gain;
// Faction reputation gains is respect gain divided by some constant // Faction reputation gains is respect gain divided by some constant

@ -63,7 +63,7 @@ export class GangMember {
} }
calculateAscensionMult(points: number): number { calculateAscensionMult(points: number): number {
return Math.max(Math.pow(points / 4000, 0.7), 1); return Math.max(Math.pow(points / 2000, 0.7), 1);
} }
updateSkillLevels(): void { updateSkillLevels(): void {

@ -6,7 +6,7 @@ export const GangConstants: {
Names: string[]; Names: string[];
} = { } = {
// Respect is divided by this to get rep gain // Respect is divided by this to get rep gain
GangRespectToReputationRatio: 25, GangRespectToReputationRatio: 75,
MaximumGangMembers: 12, MaximumGangMembers: 12,
CyclesPerTerritoryAndPowerUpdate: 100, CyclesPerTerritoryAndPowerUpdate: 100,
// Portion of upgrade multiplier that is kept after ascending // Portion of upgrade multiplier that is kept after ascending

@ -53,7 +53,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00005, baseRespect: 0.00005,
baseWanted: 0.0001, baseWanted: 0.0001,
baseMoney: 1, baseMoney: 3,
hackWeight: 100, hackWeight: 100,
difficulty: 1, difficulty: 1,
}, },
@ -66,7 +66,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00008, baseRespect: 0.00008,
baseWanted: 0.003, baseWanted: 0.003,
baseMoney: 2.5, baseMoney: 7.5,
hackWeight: 85, hackWeight: 85,
chaWeight: 15, chaWeight: 15,
difficulty: 3.5, difficulty: 3.5,
@ -80,7 +80,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.0001, baseRespect: 0.0001,
baseWanted: 0.075, baseWanted: 0.075,
baseMoney: 6, baseMoney: 18,
hackWeight: 80, hackWeight: 80,
chaWeight: 20, chaWeight: 20,
difficulty: 5, difficulty: 5,
@ -118,7 +118,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.0004, baseRespect: 0.0004,
baseWanted: 0.3, baseWanted: 0.3,
baseMoney: 15, baseMoney: 45,
hackWeight: 80, hackWeight: 80,
chaWeight: 20, chaWeight: 20,
difficulty: 20, difficulty: 20,
@ -132,7 +132,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.001, baseRespect: 0.001,
baseWanted: 1.25, baseWanted: 1.25,
baseMoney: 120, baseMoney: 360,
hackWeight: 75, hackWeight: 75,
chaWeight: 25, chaWeight: 25,
difficulty: 25, difficulty: 25,
@ -158,7 +158,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
name: "Ethical Hacking", name: "Ethical Hacking",
params: { params: {
baseWanted: -0.001, baseWanted: -0.001,
baseMoney: 1, baseMoney: 3,
hackWeight: 90, hackWeight: 90,
chaWeight: 10, chaWeight: 10,
difficulty: 1, difficulty: 1,
@ -172,7 +172,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00005, baseRespect: 0.00005,
baseWanted: 0.00005, baseWanted: 0.00005,
baseMoney: 1.2, baseMoney: 3.6,
strWeight: 25, strWeight: 25,
defWeight: 25, defWeight: 25,
dexWeight: 25, dexWeight: 25,
@ -189,7 +189,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00006, baseRespect: 0.00006,
baseWanted: 0.002, baseWanted: 0.002,
baseMoney: 5, baseMoney: 15,
agiWeight: 20, agiWeight: 20,
dexWeight: 20, dexWeight: 20,
chaWeight: 60, chaWeight: 60,
@ -209,7 +209,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00004, baseRespect: 0.00004,
baseWanted: 0.02, baseWanted: 0.02,
baseMoney: 2.5, baseMoney: 7.5,
hackWeight: 10, hackWeight: 10,
strWeight: 25, strWeight: 25,
defWeight: 25, defWeight: 25,
@ -232,7 +232,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00012, baseRespect: 0.00012,
baseWanted: 0.05, baseWanted: 0.05,
baseMoney: 15, baseMoney: 45,
strWeight: 5, strWeight: 5,
defWeight: 5, defWeight: 5,
agiWeight: 25, agiWeight: 25,
@ -249,7 +249,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.00014, baseRespect: 0.00014,
baseWanted: 0.1, baseWanted: 0.1,
baseMoney: 38, baseMoney: 114,
hackWeight: 20, hackWeight: 20,
strWeight: 15, strWeight: 15,
defWeight: 15, defWeight: 15,
@ -267,7 +267,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.0002, baseRespect: 0.0002,
baseWanted: 0.24, baseWanted: 0.24,
baseMoney: 58, baseMoney: 174,
hackWeight: 15, hackWeight: 15,
strWeight: 20, strWeight: 20,
defWeight: 20, defWeight: 20,
@ -289,7 +289,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.0002, baseRespect: 0.0002,
baseWanted: 0.125, baseWanted: 0.125,
baseMoney: 24, baseMoney: 72,
hackWeight: 25, hackWeight: 25,
strWeight: 25, strWeight: 25,
dexWeight: 25, dexWeight: 25,
@ -305,7 +305,7 @@ export const gangMemberTasksMetadata: IGangMemberTaskMetadata[] = [
params: { params: {
baseRespect: 0.004, baseRespect: 0.004,
baseWanted: 1.25, baseWanted: 1.25,
baseMoney: 120, baseMoney: 360,
hackWeight: 30, hackWeight: 30,
strWeight: 5, strWeight: 5,
defWeight: 5, defWeight: 5,

@ -8,6 +8,7 @@ export interface INetscriptExtra {
}; };
exploit(): void; exploit(): void;
bypass(doc: Document): void; bypass(doc: Document): void;
alterReality(): void;
} }
export function NetscriptExtra(player: IPlayer, workerScript: WorkerScript): INetscriptExtra { export function NetscriptExtra(player: IPlayer, workerScript: WorkerScript): INetscriptExtra {
@ -34,5 +35,13 @@ export function NetscriptExtra(player: IPlayer, workerScript: WorkerScript): INe
doc.completely_unused_field = undefined; doc.completely_unused_field = undefined;
real_document.completely_unused_field = undefined; real_document.completely_unused_field = undefined;
}, },
alterReality: function (): void {
const x = false;
console.warn("I am sure that this variable is false");
if (x !== false) {
console.warn("Reality has been altered!");
player.giveExploit(Exploit.RealityAlteration);
}
},
}; };
} }

@ -2,7 +2,6 @@ import { Factions } from "../../Faction/Factions";
import { Faction } from "../../Faction/Faction"; import { Faction } from "../../Faction/Faction";
import { Gang } from "../../Gang/Gang"; import { Gang } from "../../Gang/Gang";
import { SourceFileFlags } from "../../SourceFile/SourceFileFlags"; import { SourceFileFlags } from "../../SourceFile/SourceFileFlags";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
import { IPlayer } from "../IPlayer"; import { IPlayer } from "../IPlayer";
// Amount of negative karma needed to manage a gang in BitNodes other than 2 // Amount of negative karma needed to manage a gang in BitNodes other than 2
@ -16,7 +15,7 @@ export function canAccessGang(this: IPlayer): boolean {
return false; return false;
} }
return this.karma <= BitNodeMultipliers.GangKarmaRequirement * GangKarmaRequirement; return this.karma <= GangKarmaRequirement;
} }
export function getGangFaction(this: IPlayer): Faction { export function getGangFaction(this: IPlayer): Faction {