mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-18 12:15:44 +01:00
IPVGO: Balance: Reduce base bonuses, increase SF 14.1 to compensate (#1176)
* IPVGO: Balance: Reduce base bonuses, increase SF 14.1 to compensate * Fix ts doc format * Do not show "No AI" opponent in stat summary page
This commit is contained in:
parent
dd4b54406c
commit
6b9f9ef7fa
@ -463,20 +463,20 @@ export function initBitNodes() {
|
|||||||
its level up to a maximum of 3. This Source-File grants the following benefits:
|
its level up to a maximum of 3. This Source-File grants the following benefits:
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
Level 1: 25% increased stat multipliers from Node Power
|
Level 1: 100% increased stat multipliers from Node Power
|
||||||
<br />
|
<br />
|
||||||
Level 2: Permanently unlocks the go.cheat API
|
Level 2: Permanently unlocks the go.cheat API
|
||||||
<br />
|
<br />
|
||||||
Level 3: 25% increased success rate for the go.cheat API
|
Level 3: 25% increased success rate for the go.cheat API
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
This Source-File also increases the maximum favor you can gain for each faction from IPvGO by:
|
This Source-File also increases the maximum favor you can gain for each faction from IPvGO to:
|
||||||
<br />
|
<br />
|
||||||
Level 1: +10
|
Level 1: 80
|
||||||
<br />
|
<br />
|
||||||
Level 2: +20
|
Level 2: 100
|
||||||
<br />
|
<br />
|
||||||
Level 3: +40
|
Level 3: 120
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -15,17 +15,21 @@ import { getRecordEntries, getRecordValues } from "../../Types/Record";
|
|||||||
*/
|
*/
|
||||||
export function CalculateEffect(nodes: number, faction: GoOpponent): number {
|
export function CalculateEffect(nodes: number, faction: GoOpponent): number {
|
||||||
const power = getEffectPowerForFaction(faction);
|
const power = getEffectPowerForFaction(faction);
|
||||||
const sourceFileBonus = Player.sourceFileLvl(14) ? 1.25 : 1;
|
const sourceFileBonus = Player.sourceFileLvl(14) ? 2 : 1;
|
||||||
return (
|
return (
|
||||||
1 + Math.log(nodes + 1) * Math.pow(nodes + 1, 0.3) * 0.004 * power * currentNodeMults.GoPower * sourceFileBonus
|
1 + Math.log(nodes + 1) * Math.pow(nodes + 1, 0.3) * 0.002 * power * currentNodeMults.GoPower * sourceFileBonus
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get maximum favor that you can gain from IPvGO win streaks
|
||||||
|
* for factions you are a member of
|
||||||
|
*/
|
||||||
export function getMaxFavor() {
|
export function getMaxFavor() {
|
||||||
const sourceFileLevel = Player.sourceFileLvl(14);
|
const sourceFileLevel = Player.sourceFileLvl(14);
|
||||||
|
|
||||||
if (sourceFileLevel === 1) {
|
if (sourceFileLevel === 1) {
|
||||||
return 90;
|
return 80;
|
||||||
}
|
}
|
||||||
if (sourceFileLevel === 2) {
|
if (sourceFileLevel === 2) {
|
||||||
return 100;
|
return 100;
|
||||||
@ -34,7 +38,7 @@ export function getMaxFavor() {
|
|||||||
return 120;
|
return 120;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 80;
|
return 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -412,7 +412,8 @@ export async function determineCheatSuccess(
|
|||||||
* Cheating success rate scales with player's crime success rate, and decreases with prior cheat attempts.
|
* Cheating success rate scales with player's crime success rate, and decreases with prior cheat attempts.
|
||||||
*/
|
*/
|
||||||
export function cheatSuccessChance(cheatCount: number) {
|
export function cheatSuccessChance(cheatCount: number) {
|
||||||
return Math.min(0.6 * 0.65 ** cheatCount * Player.mults.crime_success, 1);
|
const sourceFileBonus = Player.sourceFileLvl(14) === 3 ? 1.25 : 1;
|
||||||
|
return Math.min(0.6 * 0.65 ** cheatCount * Player.mults.crime_success * sourceFileBonus, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,12 +9,14 @@ import { useRerender } from "../../ui/React/hooks";
|
|||||||
import { getBonusText } from "../effects/effect";
|
import { getBonusText } from "../effects/effect";
|
||||||
import { GoScoreSummaryTable } from "./GoScoreSummaryTable";
|
import { GoScoreSummaryTable } from "./GoScoreSummaryTable";
|
||||||
import { getRecordKeys } from "../../Types/Record";
|
import { getRecordKeys } from "../../Types/Record";
|
||||||
|
import { GoOpponent } from "@enums";
|
||||||
|
|
||||||
export const GoStatusPage = (): React.ReactElement => {
|
export const GoStatusPage = (): React.ReactElement => {
|
||||||
useRerender(400);
|
useRerender(400);
|
||||||
const classes = boardStyles();
|
const classes = boardStyles();
|
||||||
const score = getScore(Go.currentGame);
|
const score = getScore(Go.currentGame);
|
||||||
const opponent = Go.currentGame.ai;
|
const opponent = Go.currentGame.ai;
|
||||||
|
const playedOpponentList = getRecordKeys(Go.stats).filter((o) => o !== GoOpponent.none);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
@ -49,7 +51,7 @@ export const GoStatusPage = (): React.ReactElement => {
|
|||||||
<strong>Effect:</strong>
|
<strong>Effect:</strong>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
{getRecordKeys(Go.stats).map((faction, index) => {
|
{playedOpponentList.map((faction, index) => {
|
||||||
return (
|
return (
|
||||||
<TableRow key={index}>
|
<TableRow key={index}>
|
||||||
<TableCell className={classes.cellNone}>
|
<TableCell className={classes.cellNone}>
|
||||||
|
2
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
2
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@ -3969,7 +3969,7 @@ export interface Go {
|
|||||||
* Returns a promise that resolves with the success or failure state of your last move, and the AI's response, if applicable.
|
* Returns a promise that resolves with the success or failure state of your last move, and the AI's response, if applicable.
|
||||||
* x:0 y:0 represents the bottom-left corner of the board in the UI.
|
* x:0 y:0 represents the bottom-left corner of the board in the UI.
|
||||||
*
|
*
|
||||||
* @param logOpponentMove optional, if false prevents logging opponent move
|
* @param logOpponentMove - optional, if false prevents logging opponent move
|
||||||
*
|
*
|
||||||
* @remarks
|
* @remarks
|
||||||
* RAM cost: 0 GB
|
* RAM cost: 0 GB
|
||||||
|
@ -239,20 +239,20 @@ export function initSourceFiles() {
|
|||||||
This Source-File grants the following benefits:
|
This Source-File grants the following benefits:
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
Level 1: 25% increased stat multipliers from node Power
|
Level 1: 100% increased stat multipliers from node Power
|
||||||
<br />
|
<br />
|
||||||
Level 2: Permanently unlocks the go.cheat API in other BitNodes
|
Level 2: Permanently unlocks the go.cheat API in other BitNodes
|
||||||
<br />
|
<br />
|
||||||
Level 3: 25% increased success rate for the go.cheat API
|
Level 3: 25% increased success rate for the go.cheat API
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
This Source-File also increases the maximum favor you can gain for each faction from IPvGO by:
|
This Source-File also increases the maximum favor you can gain for each faction from IPvGO to:
|
||||||
<br />
|
<br />
|
||||||
Level 1: +10
|
Level 1: 80
|
||||||
<br />
|
<br />
|
||||||
Level 2: +20
|
Level 2: 100
|
||||||
<br />
|
<br />
|
||||||
Level 3: +40
|
Level 3: 120
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user