mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-21 16:52:55 +02:00
Fixed numerous bugs with the recent Corporation UI rewrite. Rebalanced Corporation mechanic to give employees better and more interesting effects
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* This is a component that implements a mathematical formula used commonly throughout the
|
||||
* game. This formula is (typically) used to calculate the effect that various statistics
|
||||
* have on a game mechanic. It looks something like:
|
||||
*
|
||||
* (stat ^ exponential factor) + (stat / linear factor)
|
||||
*
|
||||
* where the exponential factor is a number between 0 and 1 and the linear factor
|
||||
* is typically a relatively larger number.
|
||||
*
|
||||
* This formula ensures that the effects of the statistic that is being processed
|
||||
* has diminishing returns, but never loses its effectiveness as you continue
|
||||
* to raise it.
|
||||
*
|
||||
* There are two implementations of this component. One is simply a function that
|
||||
* can be called with the stat and the exponential/linear factors. The other is a
|
||||
* class where the exponential and linear factors are defined upon construction.
|
||||
*/
|
||||
export function calculateEffectWithFactors(n: number, expFac: number, linearFac: number): number {
|
||||
if (expFac <= 0 || expFac >= 1) {
|
||||
console.warn(`Exponential factor is ${expFac}. This is not an intended value for it`);
|
||||
}
|
||||
if (linearFac < 1) {
|
||||
console.warn(`Linear factor is ${linearFac}. This is not an intended value for it`);
|
||||
}
|
||||
|
||||
return (Math.pow(n, expFac)) + (n / linearFac);
|
||||
}
|
||||
|
||||
export class EffectWithFactors {
|
||||
// Exponential factor
|
||||
private expFac: number;
|
||||
|
||||
// Linear Factor
|
||||
private linearFac: number;
|
||||
|
||||
constructor(expFac: number, linearFac: number) {
|
||||
this.expFac = expFac;
|
||||
this.linearFac = linearFac;
|
||||
}
|
||||
|
||||
calculate(n: number): number {
|
||||
return calculateEffectWithFactors(n, this.expFac, this.linearFac);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user