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:
Michael Ficocelli 2024-03-20 17:12:35 -04:00 committed by GitHub
parent dd4b54406c
commit 6b9f9ef7fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 24 additions and 17 deletions

@ -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}>

@ -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
</> </>
), ),
); );