mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-27 00:17:32 +01:00
New sf -1 and changes to gang to rely more on territory
This commit is contained in:
parent
c1448cfe65
commit
738152d614
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user