mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-17 23:08:36 +02:00
CORPORATION: Remove VeChain (#2245)
This commit is contained in:
@@ -13,7 +13,6 @@ type CorpUnlockName =
|
|||||||
| "Smart Supply"
|
| "Smart Supply"
|
||||||
| "Market Research - Demand"
|
| "Market Research - Demand"
|
||||||
| "Market Data - Competition"
|
| "Market Data - Competition"
|
||||||
| "VeChain"
|
|
||||||
| "Shady Accounting"
|
| "Shady Accounting"
|
||||||
| "Government Partnership"
|
| "Government Partnership"
|
||||||
| "Warehouse API"
|
| "Warehouse API"
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ export enum CorpUnlockName {
|
|||||||
SmartSupply = "Smart Supply",
|
SmartSupply = "Smart Supply",
|
||||||
MarketResearchDemand = "Market Research - Demand",
|
MarketResearchDemand = "Market Research - Demand",
|
||||||
MarketDataCompetition = "Market Data - Competition",
|
MarketDataCompetition = "Market Data - Competition",
|
||||||
VeChain = "VeChain",
|
|
||||||
ShadyAccounting = "Shady Accounting",
|
ShadyAccounting = "Shady Accounting",
|
||||||
GovernmentPartnership = "Government Partnership",
|
GovernmentPartnership = "Government Partnership",
|
||||||
WarehouseAPI = "Warehouse API",
|
WarehouseAPI = "Warehouse API",
|
||||||
|
|||||||
@@ -46,15 +46,6 @@ export const CorpUnlocks: Record<CorpUnlockName, CorpUnlock> = {
|
|||||||
"every material and product.",
|
"every material and product.",
|
||||||
},
|
},
|
||||||
|
|
||||||
[CorpUnlockName.VeChain]: {
|
|
||||||
name: CorpUnlockName.VeChain,
|
|
||||||
price: 10e9,
|
|
||||||
desc:
|
|
||||||
"Use AI and blockchain technology to identify where you can improve your supply chain systems. " +
|
|
||||||
"This upgrade will allow you to view a wide array of useful statistics about your " +
|
|
||||||
"Corporation.",
|
|
||||||
},
|
|
||||||
|
|
||||||
[CorpUnlockName.ShadyAccounting]: {
|
[CorpUnlockName.ShadyAccounting]: {
|
||||||
name: CorpUnlockName.ShadyAccounting,
|
name: CorpUnlockName.ShadyAccounting,
|
||||||
price: 500e12,
|
price: 500e12,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
|
|
||||||
import { OfficeSpace } from "../OfficeSpace";
|
import { OfficeSpace } from "../OfficeSpace";
|
||||||
import { CorpUnlockName, CorpEmployeeJob, CorpUpgradeName, CorpProductResearchName } from "@enums";
|
import { CorpEmployeeJob, CorpUpgradeName, CorpProductResearchName } from "@enums";
|
||||||
import { buyTea } from "../Actions";
|
import { buyTea } from "../Actions";
|
||||||
|
|
||||||
import { MoneyCost } from "./MoneyCost";
|
import { MoneyCost } from "./MoneyCost";
|
||||||
@@ -202,78 +202,74 @@ function AutoManagement(props: OfficeProps): React.ReactElement {
|
|||||||
</Typography>
|
</Typography>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
{corp.unlocks.has(CorpUnlockName.VeChain) && (
|
<TableRow>
|
||||||
<>
|
<TableCell>
|
||||||
<TableRow>
|
<Tooltip
|
||||||
<TableCell>
|
title={
|
||||||
<Tooltip
|
<Typography component="div">
|
||||||
title={
|
The amount of material this office can produce.
|
||||||
<Typography component="div">
|
<br />
|
||||||
The amount of material this office can produce.
|
This value is based off the productivity of your
|
||||||
<br />
|
<br />
|
||||||
This value is based off the productivity of your
|
Operations, Engineering, and Management employees.
|
||||||
<br />
|
</Typography>
|
||||||
Operations, Engineering, and Management employees.
|
}
|
||||||
</Typography>
|
>
|
||||||
}
|
<Typography>Material Production:</Typography>
|
||||||
>
|
</Tooltip>
|
||||||
<Typography>Material Production:</Typography>
|
</TableCell>
|
||||||
</Tooltip>
|
<TableCell>
|
||||||
</TableCell>
|
<Tooltip title={materialBreakdown}>
|
||||||
<TableCell>
|
<Typography align="right">{formatCorpStat(totalMaterialProduction)}</Typography>
|
||||||
<Tooltip title={materialBreakdown}>
|
</Tooltip>
|
||||||
<Typography align="right">{formatCorpStat(totalMaterialProduction)}</Typography>
|
</TableCell>
|
||||||
</Tooltip>
|
</TableRow>
|
||||||
</TableCell>
|
{division.makesProducts && (
|
||||||
</TableRow>
|
<TableRow>
|
||||||
{division.makesProducts ? (
|
<TableCell>
|
||||||
<TableRow>
|
<Tooltip
|
||||||
<TableCell>
|
title={
|
||||||
<Tooltip
|
<Typography component="div">
|
||||||
title={
|
The amount of any given Product this office can produce.
|
||||||
<Typography component="div">
|
<br />
|
||||||
The amount of any given Product this office can produce.
|
This value is based off the productivity of your
|
||||||
<br />
|
<br />
|
||||||
This value is based off the productivity of your
|
Operations, Engineering, and Management employees.
|
||||||
<br />
|
</Typography>
|
||||||
Operations, Engineering, and Management employees.
|
}
|
||||||
</Typography>
|
>
|
||||||
}
|
<Typography>Product Production:</Typography>
|
||||||
>
|
</Tooltip>
|
||||||
<Typography>Product Production:</Typography>
|
</TableCell>
|
||||||
</Tooltip>
|
<TableCell>
|
||||||
</TableCell>
|
<Tooltip title={productBreakdown}>
|
||||||
<TableCell>
|
<Typography align="right">{formatCorpStat(totalProductProduction)}</Typography>
|
||||||
<Tooltip title={productBreakdown}>
|
</Tooltip>
|
||||||
<Typography align="right">{formatCorpStat(totalProductProduction)}</Typography>
|
</TableCell>
|
||||||
</Tooltip>
|
</TableRow>
|
||||||
</TableCell>
|
|
||||||
</TableRow>
|
|
||||||
) : null}
|
|
||||||
<TableRow>
|
|
||||||
<TableCell>
|
|
||||||
<Tooltip
|
|
||||||
title={
|
|
||||||
<Typography>
|
|
||||||
This office's sales effectivity for all materials and products.
|
|
||||||
<br />
|
|
||||||
It is based on your Business employees and your advertising.
|
|
||||||
<br />
|
|
||||||
This will be further modified by demand and competition for each item.
|
|
||||||
</Typography>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<Typography>Sales Multiplier:</Typography>
|
|
||||||
</Tooltip>
|
|
||||||
</TableCell>
|
|
||||||
<TableCell align="right">
|
|
||||||
<Tooltip title={salesBreakdown}>
|
|
||||||
<Typography>{formatCorpMultiplier(totalSaleMultiplier)}</Typography>
|
|
||||||
</Tooltip>
|
|
||||||
</TableCell>
|
|
||||||
</TableRow>
|
|
||||||
</>
|
|
||||||
)}
|
)}
|
||||||
|
<TableRow>
|
||||||
|
<TableCell>
|
||||||
|
<Tooltip
|
||||||
|
title={
|
||||||
|
<Typography>
|
||||||
|
This office's sales effectivity for all materials and products.
|
||||||
|
<br />
|
||||||
|
It is based on your Business employees and your advertising.
|
||||||
|
<br />
|
||||||
|
This will be further modified by demand and competition for each item.
|
||||||
|
</Typography>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Typography>Sales Multiplier:</Typography>
|
||||||
|
</Tooltip>
|
||||||
|
</TableCell>
|
||||||
|
<TableCell align="right">
|
||||||
|
<Tooltip title={salesBreakdown}>
|
||||||
|
<Typography>{formatCorpMultiplier(totalSaleMultiplier)}</Typography>
|
||||||
|
</Tooltip>
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
<AutoAssignJob
|
<AutoAssignJob
|
||||||
rerender={props.rerender}
|
rerender={props.rerender}
|
||||||
office={props.office}
|
office={props.office}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { MathJax } from "better-react-mathjax";
|
import { MathJax } from "better-react-mathjax";
|
||||||
|
|
||||||
import { CorpUnlockName, IndustryType } from "@enums";
|
import { IndustryType } from "@enums";
|
||||||
import { hireAdVert } from "../Actions";
|
import { hireAdVert } from "../Actions";
|
||||||
import { formatBigNumber, formatCorpMultiplier } from "../../ui/formatNumber";
|
import { formatBigNumber, formatCorpMultiplier } from "../../ui/formatNumber";
|
||||||
import { createProgressBarText } from "../../utils/helpers/createProgressBarText";
|
import { createProgressBarText } from "../../utils/helpers/createProgressBarText";
|
||||||
@@ -102,15 +102,11 @@ export function DivisionOverview(props: DivisionOverviewProps): React.ReactEleme
|
|||||||
const [researchOpen, setResearchOpen] = useState(false);
|
const [researchOpen, setResearchOpen] = useState(false);
|
||||||
const profit = division.lastCycleRevenue - division.lastCycleExpenses;
|
const profit = division.lastCycleRevenue - division.lastCycleExpenses;
|
||||||
|
|
||||||
let advertisingInfo = false;
|
|
||||||
const advertisingFactors = division.getAdvertisingFactors();
|
const advertisingFactors = division.getAdvertisingFactors();
|
||||||
const awarenessFac = advertisingFactors[1];
|
const awarenessFac = advertisingFactors[1];
|
||||||
const popularityFac = advertisingFactors[2];
|
const popularityFac = advertisingFactors[2];
|
||||||
const ratioFac = advertisingFactors[3];
|
const ratioFac = advertisingFactors[3];
|
||||||
const totalAdvertisingFac = advertisingFactors[0];
|
const totalAdvertisingFac = advertisingFactors[0];
|
||||||
if (corp.unlocks.has(CorpUnlockName.VeChain)) {
|
|
||||||
advertisingInfo = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function convertEffectFacToGraphic(fac: number): string {
|
function convertEffectFacToGraphic(fac: number): string {
|
||||||
return createProgressBarText({
|
return createProgressBarText({
|
||||||
@@ -131,29 +127,27 @@ export function DivisionOverview(props: DivisionOverviewProps): React.ReactEleme
|
|||||||
["Popularity:", formatBigNumber(division.popularity)],
|
["Popularity:", formatBigNumber(division.popularity)],
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
{advertisingInfo && (
|
<Tooltip
|
||||||
<Tooltip
|
title={
|
||||||
title={
|
<>
|
||||||
<>
|
<Typography>Multiplier for this industry's sales due to its awareness and popularity.</Typography>
|
||||||
<Typography>Multiplier for this industry's sales due to its awareness and popularity.</Typography>
|
<br />
|
||||||
<br />
|
<MathJax>{`\\(\\text{${division.industry} Industry: }\\alpha = ${division.advertisingFactor}\\)`}</MathJax>
|
||||||
<MathJax>{`\\(\\text{${division.industry} Industry: }\\alpha = ${division.advertisingFactor}\\)`}</MathJax>
|
<MathJax>{`\\(\\text{multiplier} = \\left((\\text{awareness}+1)^{\\alpha} \\times (\\text{popularity}+1)^{\\alpha} \\times \\frac{\\text{popularity}+0.001}{\\text{awareness}}\\right)^{0.85}\\)`}</MathJax>
|
||||||
<MathJax>{`\\(\\text{multiplier} = \\left((\\text{awareness}+1)^{\\alpha} \\times (\\text{popularity}+1)^{\\alpha} \\times \\frac{\\text{popularity}+0.001}{\\text{awareness}}\\right)^{0.85}\\)`}</MathJax>
|
<br />
|
||||||
<br />
|
<StatsTable
|
||||||
<StatsTable
|
rows={[
|
||||||
rows={[
|
["Awareness Bonus:", formatCorpMultiplier(Math.pow(awarenessFac, 0.85))],
|
||||||
["Awareness Bonus:", formatCorpMultiplier(Math.pow(awarenessFac, 0.85))],
|
["Popularity Bonus:", formatCorpMultiplier(Math.pow(popularityFac, 0.85))],
|
||||||
["Popularity Bonus:", formatCorpMultiplier(Math.pow(popularityFac, 0.85))],
|
["Ratio Multiplier:", formatCorpMultiplier(Math.pow(ratioFac, 0.85))],
|
||||||
["Ratio Multiplier:", formatCorpMultiplier(Math.pow(ratioFac, 0.85))],
|
[<b key={1}>Total:</b>, <b key={2}>{formatCorpMultiplier(totalAdvertisingFac)}</b>],
|
||||||
[<b key={1}>Total:</b>, <b key={2}>{formatCorpMultiplier(totalAdvertisingFac)}</b>],
|
]}
|
||||||
]}
|
/>
|
||||||
/>
|
</>
|
||||||
</>
|
}
|
||||||
}
|
>
|
||||||
>
|
<Typography>Advertising Multiplier: {formatCorpMultiplier(totalAdvertisingFac)}</Typography>
|
||||||
<Typography>Advertising Multiplier: {formatCorpMultiplier(totalAdvertisingFac)}</Typography>
|
</Tooltip>
|
||||||
</Tooltip>
|
|
||||||
)}
|
|
||||||
<br />
|
<br />
|
||||||
<StatsTable
|
<StatsTable
|
||||||
rows={[
|
rows={[
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
| Smart Supply | 25e9 | Enable "Smart Supply" feature. Only buy it if you don't implement your custom [Smart Supply](./smart-supply.md) script. |
|
| Smart Supply | 25e9 | Enable "Smart Supply" feature. Only buy it if you don't implement your custom [Smart Supply](./smart-supply.md) script. |
|
||||||
| Market Research - Demand | 5e9 | Grant access to [Demand](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
|
| Market Research - Demand | 5e9 | Grant access to [Demand](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
|
||||||
| Market Data - Competition | 5e9 | Grant access to [Competition](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
|
| Market Data - Competition | 5e9 | Grant access to [Competition](./demand-competition.md) data. You need it to implement a custom [Market-TA2](./optimal-selling-price-market-ta2.md) script. |
|
||||||
| VeChain | 10e9 | View more statistics about Corporation. Useless. |
|
|
||||||
| Shady Accounting | 500e12 | Reduce [DividendTax](./financial-statement.md) by 0.05 |
|
| Shady Accounting | 500e12 | Reduce [DividendTax](./financial-statement.md) by 0.05 |
|
||||||
| Government Partnership | 2e15 | Reduce [DividendTax](./financial-statement.md) by 0.1 |
|
| Government Partnership | 2e15 | Reduce [DividendTax](./financial-statement.md) by 0.1 |
|
||||||
|
|
||||||
|
|||||||
1
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
1
src/ScriptEditor/NetscriptDefinitions.d.ts
vendored
@@ -9833,7 +9833,6 @@ type CorpUnlockName =
|
|||||||
| "Smart Supply"
|
| "Smart Supply"
|
||||||
| "Market Research - Demand"
|
| "Market Research - Demand"
|
||||||
| "Market Data - Competition"
|
| "Market Data - Competition"
|
||||||
| "VeChain"
|
|
||||||
| "Shady Accounting"
|
| "Shady Accounting"
|
||||||
| "Government Partnership"
|
| "Government Partnership"
|
||||||
| "Warehouse API"
|
| "Warehouse API"
|
||||||
|
|||||||
@@ -227,5 +227,10 @@ export const breakingChanges300: VersionBreakingChange = {
|
|||||||
info: 'The "Spring Water" industry was removed. The cost of all Spring Water divisions was refunded.',
|
info: 'The "Spring Water" industry was removed. The cost of all Spring Water divisions was refunded.',
|
||||||
showWarning: false,
|
showWarning: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
brokenAPIs: [{ name: "VeChain" }],
|
||||||
|
info: 'The "VeChain" upgrade was removed. The cost of that upgrade was refunded.',
|
||||||
|
showWarning: false,
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -614,6 +614,16 @@ Error: ${e}`,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove and refund VeChain
|
||||||
|
const unlocks: Set<string> = Player.corporation.unlocks;
|
||||||
|
for (const upgrade of unlocks) {
|
||||||
|
if (upgrade !== "VeChain") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Player.corporation.gainFunds(10e9, "force majeure");
|
||||||
|
}
|
||||||
|
unlocks.delete("VeChain");
|
||||||
}
|
}
|
||||||
showAPIBreaks("3.0.0", breakingChanges300);
|
showAPIBreaks("3.0.0", breakingChanges300);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user