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" }}>
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 {