New sf -1 and changes to gang to rely more on territory

This commit is contained in:
Olivier Gagnon 2021-10-26 23:02:46 -04:00
parent c1448cfe65
commit 738152d614
11 changed files with 46 additions and 32 deletions

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

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

@ -110,9 +110,9 @@ interface IBitNodeMultipliers {
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.
@ -278,6 +278,7 @@ export const BitNodeMultipliers: IBitNodeMultipliers = {
BladeburnerRank: 1,
BladeburnerSkillCost: 1,
GangSoftcap: 1,
DaedalusAugsRequirement: 1,
GangKarmaRequirement: 1,
};

@ -16,6 +16,7 @@ export enum Exploit {
Unclickable = "Unclickable",
UndocumentedFunctionCall = "UndocumentedFunctionCall",
TimeCompression = "TimeCompression",
RealityAlteration = "RealityAlteration",
// 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
// that's not the point.
@ -31,6 +32,7 @@ const names: {
TimeCompression: "by compressing time",
Unclickable: "by clicking the unclickable.",
UndocumentedFunctionCall: "by looking beyond the documentation.",
RealityAlteration: "by altering reality to suit your whims.",
};
export function ExploitName(exploit: string): string {

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

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

@ -63,7 +63,7 @@ export class GangMember {
}
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 {

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

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

@ -8,6 +8,7 @@ export interface INetscriptExtra {
};
exploit(): void;
bypass(doc: Document): void;
alterReality(): void;
}
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;
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 { Gang } from "../../Gang/Gang";
import { SourceFileFlags } from "../../SourceFile/SourceFileFlags";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
import { IPlayer } from "../IPlayer";
// 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 this.karma <= BitNodeMultipliers.GangKarmaRequirement * GangKarmaRequirement;
return this.karma <= GangKarmaRequirement;
}
export function getGangFaction(this: IPlayer): Faction {