bitburner-src/src/Constants.ts
2023-09-12 06:09:18 -04:00

268 lines
9.8 KiB
TypeScript

/**
* Generic Game Constants
*
* Constants for specific mechanics or features will NOT be here.
*/
export const CONSTANTS: {
VersionString: string;
isDevBranch: boolean;
VersionNumber: number;
MaxSkillLevel: number;
MilliPerCycle: number;
CorpFactionRepRequirement: number;
BaseFocusBonus: number;
BaseCostFor1GBOfRamHome: number;
BaseCostFor1GBOfRamServer: number;
TravelCost: number;
BaseFavorToDonate: number;
DonateMoneyToRepDivisor: number;
FactionReputationToFavorBase: number;
FactionReputationToFavorMult: number;
CompanyReputationToFavorBase: number;
CompanyReputationToFavorMult: number;
NeuroFluxGovernorLevelMult: number;
NumNetscriptPorts: number;
HomeComputerMaxRam: number;
ServerBaseGrowthRate: number;
ServerMaxGrowthRate: number;
ServerFortifyAmount: number;
ServerWeakenAmount: number;
PurchasedServerLimit: number;
PurchasedServerMaxRam: number;
MultipleAugMultiplier: number;
TorRouterCost: number;
HospitalCostPerHp: number;
IntelligenceCrimeWeight: number;
IntelligenceInfiltrationWeight: number;
IntelligenceCrimeBaseExpGain: number;
IntelligenceProgramBaseExpGain: number;
IntelligenceGraftBaseExpGain: number;
IntelligenceTerminalHackBaseExpGain: number;
IntelligenceSingFnBaseExpGain: number;
IntelligenceClassBaseExpGain: number;
MillisecondsPer20Hours: number;
GameCyclesPer20Hours: number;
MillisecondsPer10Hours: number;
GameCyclesPer10Hours: number;
MillisecondsPer8Hours: number;
GameCyclesPer8Hours: number;
MillisecondsPer4Hours: number;
GameCyclesPer4Hours: number;
MillisecondsPer2Hours: number;
GameCyclesPer2Hours: number;
MillisecondsPerHour: number;
GameCyclesPerHour: number;
MillisecondsPerHalfHour: number;
GameCyclesPerHalfHour: number;
MillisecondsPerQuarterHour: number;
GameCyclesPerQuarterHour: number;
MillisecondsPerFiveMinutes: number;
GameCyclesPerFiveMinutes: number;
ClassDataStructuresBaseCost: number;
ClassNetworksBaseCost: number;
ClassAlgorithmsBaseCost: number;
ClassManagementBaseCost: number;
ClassLeadershipBaseCost: number;
ClassGymBaseCost: number;
ClassStudyComputerScienceBaseExp: number;
ClassDataStructuresBaseExp: number;
ClassNetworksBaseExp: number;
ClassAlgorithmsBaseExp: number;
ClassManagementBaseExp: number;
ClassLeadershipBaseExp: number;
CodingContractBaseFactionRepGain: number;
CodingContractBaseCompanyRepGain: number;
CodingContractBaseMoneyGain: number;
AugmentationGraftingCostMult: number;
AugmentationGraftingTimeBase: number;
SoACostMult: number;
SoARepMult: number;
EntropyEffect: number;
TotalNumBitNodes: number;
InfiniteLoopLimit: number;
Donations: number; // number of blood/plasma/palette donation the dev have verified., boosts NFG
LatestUpdate: string;
} = {
VersionString: "2.4.2dev",
isDevBranch: true,
VersionNumber: 34,
/** Max level for any skill, assuming no multipliers. Determined by max numerical value in javascript for experience
* and the skill level formula in Player.js. Note that all this means it that when experience hits MAX_INT, then
* the player will have this level assuming no multipliers. Multipliers can cause skills to go above this.
*/
MaxSkillLevel: 975,
// Milliseconds per game cycle
MilliPerCycle: 200,
// How much reputation is needed to join a megacorporation's faction
CorpFactionRepRequirement: 400e3,
// Base RAM costs
BaseCostFor1GBOfRamHome: 32000,
BaseCostFor1GBOfRamServer: 55000, //1 GB of RAM
// Cost to travel to another city
TravelCost: 200e3,
// Faction and Company favor-related things
BaseFavorToDonate: 150,
DonateMoneyToRepDivisor: 1e6,
FactionReputationToFavorBase: 500,
FactionReputationToFavorMult: 1.02,
CompanyReputationToFavorBase: 500,
CompanyReputationToFavorMult: 1.02,
// NeuroFlux Governor Augmentation cost multiplier
NeuroFluxGovernorLevelMult: 1.14,
NumNetscriptPorts: Number.MAX_SAFE_INTEGER,
// Server-related constants
HomeComputerMaxRam: 1073741824, // 2 ^ 30
ServerBaseGrowthRate: 1.03, // Unadjusted Growth rate
ServerMaxGrowthRate: 1.0035, // Maximum possible growth rate (max rate accounting for server security)
ServerFortifyAmount: 0.002, // Amount by which server's security increases when its hacked/grown
ServerWeakenAmount: 0.05, // Amount by which server's security decreases when weakened
PurchasedServerLimit: 25,
PurchasedServerMaxRam: 1048576, // 2^20
// Augmentation Constants
MultipleAugMultiplier: 1.9,
// TOR Router
TorRouterCost: 200e3,
// Hospital/Health
HospitalCostPerHp: 100e3,
// Intelligence-related constants
IntelligenceCrimeWeight: 0.025, // Weight for how much int affects crime success rates
IntelligenceInfiltrationWeight: 0.1, // Weight for how much int affects infiltration success rates
IntelligenceCrimeBaseExpGain: 0.05,
IntelligenceProgramBaseExpGain: 0.1, // Program required hack level divided by this to determine int exp gain
IntelligenceGraftBaseExpGain: 0.05,
IntelligenceTerminalHackBaseExpGain: 200, // Hacking exp divided by this to determine int exp gain
IntelligenceSingFnBaseExpGain: 1.5,
IntelligenceClassBaseExpGain: 0.01,
// Time-related constants
MillisecondsPer20Hours: 72000000,
GameCyclesPer20Hours: 72000000 / 200,
MillisecondsPer10Hours: 36000000,
GameCyclesPer10Hours: 36000000 / 200,
MillisecondsPer8Hours: 28800000,
GameCyclesPer8Hours: 28800000 / 200,
MillisecondsPer4Hours: 14400000,
GameCyclesPer4Hours: 14400000 / 200,
MillisecondsPer2Hours: 7200000,
GameCyclesPer2Hours: 7200000 / 200,
MillisecondsPerHour: 3600000,
GameCyclesPerHour: 3600000 / 200,
MillisecondsPerHalfHour: 1800000,
GameCyclesPerHalfHour: 1800000 / 200,
MillisecondsPerQuarterHour: 900000,
GameCyclesPerQuarterHour: 900000 / 200,
MillisecondsPerFiveMinutes: 300000,
GameCyclesPerFiveMinutes: 300000 / 200,
// Player Work & Action
BaseFocusBonus: 0.8,
ClassDataStructuresBaseCost: 40,
ClassNetworksBaseCost: 80,
ClassAlgorithmsBaseCost: 320,
ClassManagementBaseCost: 160,
ClassLeadershipBaseCost: 320,
ClassGymBaseCost: 120,
ClassStudyComputerScienceBaseExp: 0.5,
ClassDataStructuresBaseExp: 1,
ClassNetworksBaseExp: 2,
ClassAlgorithmsBaseExp: 4,
ClassManagementBaseExp: 2,
ClassLeadershipBaseExp: 4,
// Coding Contract
// TODO: Move this into Coding contract implementation?
CodingContractBaseFactionRepGain: 2500,
CodingContractBaseCompanyRepGain: 4000,
CodingContractBaseMoneyGain: 75e6,
// Augmentation grafting multipliers
AugmentationGraftingCostMult: 3,
AugmentationGraftingTimeBase: 3600000,
// SoA mults
SoACostMult: 7,
SoARepMult: 1.3,
// Value raised to the number of entropy stacks, then multiplied to player multipliers
EntropyEffect: 0.98,
// BitNode/Source-File related stuff
TotalNumBitNodes: 24,
InfiniteLoopLimit: 2000,
Donations: 113,
// Also update doc/source/changelog.rst
LatestUpdate: `
## v2.4.2 dev changelog (last updated 9/12/23)
See 2.4.1 changelog: https://github.com/bitburner-official/bitburner-src/blob/stable/src/Documentation/doc/changelog.md
### API CHANGES:
- ns.print and ns.tprint now handle Set and Map. (@ficocelliguy)
- Added CorporationDivisions property to BitNodeMultipliers interface (@Caldwell-74)
#### CORP
- Added makesMaterials and makesProducts properties to CorpIndustryData interface. (@Caldwell-74)
- Added issueNewSharesCooldown property to the CorporationInfo interface.
#### GANG
- Added ns.gang.getRecruitsAvailable: Gets the number of additional gang members that can currently be recruited (@myCatsName)
- Added ns.gang.respectForNextRecruit: Gets the respect threshold for recruiting the next gang member (@myCatsName)
- Added ns.gang.renameMember: Renames a gang member (@myCatsName)
### BUGFIX
- Hashnet - Buying multiple company favor upgrades at the same time will actually apply them all instead of just one. (@aschmider)
- Terminal: Bash keybinding ctrl-C clears an ongoing terminal history search (@ncharris93)
- Corporation: "Same sell amount in all cities" works with Products again. (@Caldwell-74)
### DOCS AND UI
- Tail windows now remain on the page, but hidden, when on pages like Infiltration where they should not be shown. This will impact any React content added via ns.printRaw, as the content will no longer be unmounted and remounted when navigating to/from Infiltration. (@ficocelliguy)
- Faction augmentation page updates more reliably (@zerbosh)
- Added a text filter on the Faction Augmentations page (@ficocelliguy)
- Improved pagination of Active Scripts page (@Ookamiko, @ficocelliguy)
- Various UI improvements for Gang (@myCatsName)
- Icarus message no longer shows repeatedly for players that are in the endgame. (@ficocelliguy)
- Remove work completion dialogs when performing an augmentation install (@ficocelliguy)
- Tweaked some number formatting to look better in Corp and Stats page (@zerbosh)
- Improve documentation for ports (@muesli4brekkies)
- Updated documentation for ns.tail and ns.getScriptLogs to make it clear a PID can be used. (@myCatsName)
- Improve documentation for FilenameOrPID functions (@VictorS)
- Added initial ingame documentation for Bladeburner and Gang (@myCatsName)
- Improved various existing ingame documentation pages (@myCatsName)
- Improve API documentation for Bladeburner and Gang functions (@myCatsName)
- Bladeburner: Fix a possible NaN display value in Bladeburner (@zerbosh)
- Corporation: Market TA no longer has its own dialog box, it's set in the normal sell dialog (@Caldwell-74)
- Corporation: Fix an incorrect value in the party dialog box (@aschmider)
- Corporation: Improved the descriptions for Corporation states (@Caldwell-74)
### MISC / OTHER
- Made Bladeburner Training action available to sleeves (@Zelow79)
- Improved handling of aliases in the Terminal (@ficocelliguy)
- Improved error messages for ns.getPurchasedServer (@ficocelliguy)
`,
};