bitburner-src/src/Constants.ts

334 lines
12 KiB
TypeScript
Raw Normal View History

2019-03-25 04:03:24 +01:00
/**
* Generic Game Constants
*
* Constants for specific mechanics or features will NOT be here.
*/
2021-09-04 20:09:57 +02:00
export const CONSTANTS: {
2021-11-03 03:49:46 +01:00
VersionString: string;
VersionNumber: number;
2021-09-05 01:09:30 +02:00
_idleSpeed: number;
MaxSkillLevel: number;
MilliPerCycle: number;
CorpFactionRepRequirement: number;
2021-09-27 03:11:49 +02:00
BaseFocusBonus: number;
2021-09-05 01:09:30 +02:00
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;
WSEAccountCost: number;
TIXAPICost: number;
MarketData4SCost: number;
MarketDataTixApi4SCost: number;
StockMarketCommission: number;
HospitalCostPerHp: number;
IntelligenceCrimeWeight: number;
IntelligenceInfiltrationWeight: number;
IntelligenceCrimeBaseExpGain: number;
IntelligenceProgramBaseExpGain: number;
2022-03-29 20:09:17 +02:00
IntelligenceGraftBaseExpGain: number;
2021-09-05 01:09:30 +02:00
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;
2022-03-29 20:09:17 +02:00
AugmentationGraftingCostMult: number;
AugmentationGraftingTimeBase: number;
2022-04-22 21:30:49 +02:00
SoACostMult: number;
SoARepMult: number;
2022-03-19 19:15:31 +01:00
EntropyEffect: number;
2021-09-05 01:09:30 +02:00
TotalNumBitNodes: number;
2022-05-07 23:43:45 +02:00
InfiniteLoopLimit: number;
2022-04-14 21:17:46 +02:00
Donations: number; // number of blood/plasma/palette donation the dev have verified., boosts NFG
2021-09-05 01:09:30 +02:00
LatestUpdate: string;
2021-09-04 20:09:57 +02:00
} = {
VersionString: "2.2.0",
VersionNumber: 27,
2021-09-05 01:09:30 +02:00
// Speed (in ms) at which the main loop is updated
_idleSpeed: 200,
/** 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
2022-07-19 19:09:56 +02:00
CorpFactionRepRequirement: 400e3,
2021-09-05 01:09:30 +02:00
// 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,
2022-09-01 16:33:31 +02:00
NumNetscriptPorts: Number.MAX_SAFE_INTEGER,
2021-09-05 01:09:30 +02:00
// 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,
// Stock market
WSEAccountCost: 200e6,
TIXAPICost: 5e9,
MarketData4SCost: 1e9,
MarketDataTixApi4SCost: 25e9,
StockMarketCommission: 100e3,
// 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,
2021-10-30 02:27:20 +02:00
IntelligenceProgramBaseExpGain: 0.1, // Program required hack level divided by this to determine int exp gain
2022-03-29 20:09:17 +02:00
IntelligenceGraftBaseExpGain: 0.05,
2021-09-05 01:09:30 +02:00
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
2021-09-27 03:11:49 +02:00
BaseFocusBonus: 0.8,
2021-09-05 01:09:30 +02:00
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
2022-03-29 20:09:17 +02:00
AugmentationGraftingCostMult: 3,
AugmentationGraftingTimeBase: 3600000,
2022-03-19 19:15:31 +01:00
2022-04-22 21:30:49 +02:00
// SoA mults
SoACostMult: 7,
SoARepMult: 1.3,
2022-03-27 21:40:24 +02:00
// Value raised to the number of entropy stacks, then multiplied to player multipliers
2022-03-29 20:09:17 +02:00
EntropyEffect: 0.98,
2022-03-19 17:03:18 +01:00
2021-09-05 01:09:30 +02:00
// BitNode/Source-File related stuff
TotalNumBitNodes: 24,
2022-05-24 22:57:25 +02:00
InfiniteLoopLimit: 2000,
2022-05-07 23:43:45 +02:00
2022-12-09 21:46:56 +01:00
Donations: 41,
2022-04-14 21:17:46 +02:00
2021-09-05 01:09:30 +02:00
LatestUpdate: `
v2.2.0 - 2022-12-01
BREAKING CHANGES:
* ns.codingcontract.attempt no longer returns a boolean, it returns empty string on failure or the reward string
on success, so comparing the result directly to true/false will no longer work. The result can still be used as
a condition directly.
* (NS2 only) ns functions use the this value from ns: if you move the function to its own variable off of ns, it
needs to be bound to ns. e.g.:
const tprint = ns.tprint.bind(ns);
* ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and ns.formulas.work.gymGains
* ns.sleeve.getSleeveStats and ns.sleeve.getSleeveInformation removed, ns.sleeve.getSleeve added and the returned
sleeve can be used with formulas API the same way the getPlayer return can be.
DEVELOPMENT
* Development repo moved to https://github.com/bitburner-official/bitburner-src
* Dev version available on web at https://bitburner-official.github.io/bitburner-src/
* Development is active again for non-bugfix.
* A bunch of fixes and setup related to moving to a new repo (@hydroflame)
NETSCRIPT
* Faster API wrapping on script launch. (by @d0sboots & @Snarling)
* Expose more enums for player use under ns.enums (by @Snarling)
* tFormat: Fix display for negative time (by @Snarling)
CODING CONTRACT
* ns.codingcontract.attempt always returns a string (by @Snarling)
FORMULAS
* ns.formulas.work.classGains removed, replaced with ns.formulas.work.universityGains and
ns.formulas.work.gymGains (@Snarling)
* Add ns.formulas.work.companyGains function (by @AlexeyKozhemiakin)
PORTS
* added portHandle.nextWrite() (by @LJNeon)
* Make ns.writePort synchronous (by @Snarling)
2022-09-23 21:00:20 +02:00
SLEEVE
* ns.sleeve.getSleeve added. getPlayer and getSleeve can both be used for formulas. (by @Snarling)
STOCK
* ns.stock.getOrganization added for getting org from stock symbol (by @SamuraiNinjaGuy)
SCRIPTS
* Fixed bug where zombie scripts could be created after a soft reset (by @Snarling)
SCRIPT LOGS
* Add ctrl-a support for selecting all text in tail window (by @Snarling)
CORPORATION
* Remove corp employees as objects (by @Kelenius)
* Happiness/Energy/Morale trend down even for productive corps (by @Snarling)
* Typo fixes in modals to sell materials and products (by @quacksouls)
* Reworked MP formula validation to prevent possible save corruption on invalid entry (by @Snarling)
* Internal reorganization of Industry data (by @Snarling)
* Added check to material buy amount (by @G4mingJon4s)
* Check there is room to make a new product before opening popup. (by @G4mingJon4s)
* Fix typos in research descriptions (by @quacksouls)
SLEEVE
* Fixed inconsistencies in how sleeve work rewards are handled. (by @Snarling)
* Fix bug that prevented selecting some crimes from UI. (by @Snarling)
* Internally shock starts at 100 and lowers to 0. Previously this was backwards.
STOCKMARKET
* Fix broken initializer when manually buying WSE access (by @Snarling)
TERMINAL
* Connect command will connect to player owned servers from anywhere. (by @Snarling)
UI
* Fix keyboard shortcuts for other keyboard layouts (by @d0sboots)
* Fixed spacing of text in Trade for reputation button after Infiltration (by @PyroGenesis)
* Fix spacing on ANSI background escape codes (by @Snarling)
* Fix several instances where newlines were not being displayed properly (by @quacksouls)
* SoftResetButton.tsx Tooltip changed to make more sense (by @rai68)
* GANG: Fix Gang UI to correctly report the bonus time multiplier as 25x (by @TheMas3212)
DOC
* Fix incorrect examples for grow (by @quacksouls)
* Updated limitMaterialProduction() and limitProductProduction() documentation to mention removing limits. (by @PyroGenesis)
* Add ns documentation for possible sleeve tasks (by @Snarling)
* Update documentation for workForFaction and workForCompany (by @quacksouls)
* Improve CCT documentation for HammingCodes (by @quacksouls)
* cleanup in doc of Netscript functions (by @quacksouls)
* Various other doc fixes (by @quacksouls)
* Update documentation for ns.args (by @Snarling)
* De-uglify ns.print examples (by @LJNeon)
MISC
* Some error handling streamlining (by @Snarling)
* fix: check both ts and js source now (by @Tanimodori)
* chore: sync version in package-lock.json (by @Tanimodori)
* Better safety when loading game for multiple save corruption issues (by @Snarling)
* Nerf Noodle bar
STATS
* Fix logic for increasing HP based on defense skill levels (by @mattgarretson)
TUTORIAL
* Fix Ram Text (by @jaculler)
INFILTRATION
* Fix SlashGame scaling. (by @Snarling)`,
2021-09-05 01:09:30 +02:00
};