[Automated] Merge dev into gh-pages
This commit is contained in:
2
dist/CookieMonster.js
vendored
2
dist/CookieMonster.js
vendored
File diff suppressed because one or more lines are too long
2
dist/CookieMonster.js.map
vendored
2
dist/CookieMonster.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/CookieMonsterDev.js
vendored
2
dist/CookieMonsterDev.js
vendored
File diff suppressed because one or more lines are too long
2
dist/CookieMonsterDev.js.map
vendored
2
dist/CookieMonsterDev.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -1,82 +0,0 @@
|
|||||||
const SPECIAL_DIGIT = 7;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Count the number of 7s in any number
|
|
||||||
* @param {number} number The number to count sevens for
|
|
||||||
* @returns {number} The number of 7s in the provided number
|
|
||||||
*/
|
|
||||||
export function CountSevens(number) {
|
|
||||||
let localNumber = number;
|
|
||||||
let sevenCount = 0;
|
|
||||||
|
|
||||||
while (localNumber >= SPECIAL_DIGIT) {
|
|
||||||
if (localNumber % 10 === SPECIAL_DIGIT) sevenCount += 1;
|
|
||||||
localNumber = Math.floor(localNumber / 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
return sevenCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculate the delta for the next number where the given digit is a 7
|
|
||||||
* @param {number} number The starting number to calculate the delta for
|
|
||||||
* @param {number} digitPlace 1 for ones place, 10 for tens place, 100 for hundreds place, etc
|
|
||||||
* @returns {number} The calculated delta
|
|
||||||
*/
|
|
||||||
export function CalculateSevenDelta(number, digitPlace) {
|
|
||||||
const target = SPECIAL_DIGIT * digitPlace;
|
|
||||||
const modulus = digitPlace * 10;
|
|
||||||
|
|
||||||
let delta = target - (number % modulus) + (number % digitPlace);
|
|
||||||
if (delta < 0) delta += modulus;
|
|
||||||
|
|
||||||
return delta;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function calculates each of the next "lucky" prestige levels
|
|
||||||
* @param {number} currentLevel The user's prestige level, including levels earned since the last ascension
|
|
||||||
* @returns {{number}, {number}, {number}} luckyDigit, luckyNumber, luckyPayout The next eligible level for each upgrade
|
|
||||||
*/
|
|
||||||
export default function CalculateLuckyLevels(currentLevel) {
|
|
||||||
const result = {};
|
|
||||||
let localLevel = currentLevel;
|
|
||||||
let sevenCount = CountSevens(currentLevel);
|
|
||||||
|
|
||||||
if (sevenCount < 1) {
|
|
||||||
// find the next 7 for the ones digit
|
|
||||||
const delta = CalculateSevenDelta(localLevel, 1);
|
|
||||||
|
|
||||||
localLevel += delta;
|
|
||||||
sevenCount = CountSevens(localLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.luckyDigit = localLevel;
|
|
||||||
|
|
||||||
while (sevenCount < 2) {
|
|
||||||
// find the next 7 in the ones or tens digit
|
|
||||||
let delta = CalculateSevenDelta(localLevel, 1);
|
|
||||||
if (delta === 0) delta = CalculateSevenDelta(localLevel, 10);
|
|
||||||
|
|
||||||
localLevel += delta;
|
|
||||||
sevenCount = CountSevens(localLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
result.luckyNumber = localLevel;
|
|
||||||
|
|
||||||
let digitPlace = 1;
|
|
||||||
while (sevenCount < 4) {
|
|
||||||
// look for missing 7s in the ones, tens, hundreds, thousands digits
|
|
||||||
const delta = CalculateSevenDelta(localLevel, digitPlace);
|
|
||||||
if (delta === 0) {
|
|
||||||
digitPlace *= 10;
|
|
||||||
} else {
|
|
||||||
localLevel += delta;
|
|
||||||
sevenCount = CountSevens(localLevel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
result.luckyPayout = localLevel;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
@@ -37,7 +37,6 @@ import {
|
|||||||
CacheWrinklersTotal,
|
CacheWrinklersTotal,
|
||||||
} from '../../../Cache/VariablesAndData';
|
} from '../../../Cache/VariablesAndData';
|
||||||
import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension';
|
import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension';
|
||||||
import CalculateLuckyLevels from '../../HelperFunctions/CalculateLuckyLevels';
|
|
||||||
import GetCPS from '../../HelperFunctions/GetCPS';
|
import GetCPS from '../../HelperFunctions/GetCPS';
|
||||||
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
|
||||||
import { ColourGreen, ColourRed, ColourTextPre } from '../../VariablesAndData';
|
import { ColourGreen, ColourRed, ColourTextPre } from '../../VariablesAndData';
|
||||||
@@ -607,47 +606,46 @@ export function PrestigeSection() {
|
|||||||
const currentPrestige = Math.floor(Game.HowMuchPrestige(Game.cookiesReset));
|
const currentPrestige = Math.floor(Game.HowMuchPrestige(Game.cookiesReset));
|
||||||
const willHave = Math.floor(Game.HowMuchPrestige(Game.cookiesReset + Game.cookiesEarned));
|
const willHave = Math.floor(Game.HowMuchPrestige(Game.cookiesReset + Game.cookiesEarned));
|
||||||
const willGet = willHave - currentPrestige;
|
const willGet = willHave - currentPrestige;
|
||||||
const { luckyDigit, luckyNumber, luckyPayout } = CalculateLuckyLevels(willHave);
|
|
||||||
if (!Game.Has('Lucky digit')) {
|
if (!Game.Has('Lucky digit')) {
|
||||||
const luckyDigitDelta = luckyDigit - willHave;
|
let delta7 = 7 - (willHave % 10);
|
||||||
const luckyDigitReset = willGet + luckyDigitDelta;
|
if (delta7 < 0) delta7 += 10;
|
||||||
const fragLuckyDigit = document.createDocumentFragment();
|
const next7Reset = willGet + delta7;
|
||||||
fragLuckyDigit.appendChild(
|
const next7Total = willHave + delta7;
|
||||||
|
const frag7 = document.createDocumentFragment();
|
||||||
|
frag7.appendChild(
|
||||||
document.createTextNode(
|
document.createTextNode(
|
||||||
`${luckyDigit.toLocaleString()} / ${luckyDigitReset.toLocaleString()} (+${luckyDigitDelta})`,
|
`${next7Total.toLocaleString()} / ${next7Reset.toLocaleString()} (+${delta7})`,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
section.appendChild(
|
section.appendChild(StatsListing('basic', 'Next "Lucky Digit" (total / reset)', frag7));
|
||||||
StatsListing('basic', 'Next "Lucky Digit" (total / reset)', fragLuckyDigit),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Game.Has('Lucky number')) {
|
if (!Game.Has('Lucky number')) {
|
||||||
const luckyNumberDelta = luckyNumber - willHave;
|
let delta777 = 777 - (willHave % 1000);
|
||||||
const luckyNumberReset = willGet + luckyNumberDelta;
|
if (delta777 < 0) delta777 += 1000;
|
||||||
const fragLuckyNumber = document.createDocumentFragment();
|
const next777Reset = willGet + delta777;
|
||||||
fragLuckyNumber.appendChild(
|
const next777Total = willHave + delta777;
|
||||||
|
const frag777 = document.createDocumentFragment();
|
||||||
|
frag777.appendChild(
|
||||||
document.createTextNode(
|
document.createTextNode(
|
||||||
`${luckyNumber.toLocaleString()} / ${luckyNumberReset.toLocaleString()} (+${luckyNumberDelta})`,
|
`${next777Total.toLocaleString()} / ${next777Reset.toLocaleString()} (+${delta777})`,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
section.appendChild(
|
section.appendChild(StatsListing('basic', 'Next "Lucky Number" (total / reset)', frag777));
|
||||||
StatsListing('basic', 'Next "Lucky Number" (total / reset)', fragLuckyNumber),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Game.Has('Lucky payout')) {
|
if (!Game.Has('Lucky payout')) {
|
||||||
const luckyPayoutDelta = luckyPayout - willHave;
|
let delta777777 = 777777 - (willHave % 1000000);
|
||||||
const luckyPayoutReset = willGet + luckyPayoutDelta;
|
if (delta777777 < 0) delta777777 += 1000000;
|
||||||
const fragLuckyPayout = document.createDocumentFragment();
|
const next777777Reset = willGet + delta777777;
|
||||||
fragLuckyPayout.appendChild(
|
const next777777Total = willHave + delta777777;
|
||||||
|
const frag777777 = document.createDocumentFragment();
|
||||||
|
frag777777.appendChild(
|
||||||
document.createTextNode(
|
document.createTextNode(
|
||||||
`${luckyPayout.toLocaleString()} / ${luckyPayoutReset.toLocaleString()} (+${luckyPayoutDelta})`,
|
`${next777777Total.toLocaleString()} / ${next777777Reset.toLocaleString()} (+${delta777777})`,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
section.appendChild(
|
section.appendChild(StatsListing('basic', 'Next "Lucky Payout" (total / reset)', frag777777));
|
||||||
StatsListing('basic', 'Next "Lucky Payout" (total / reset)', fragLuckyPayout),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return section;
|
return section;
|
||||||
|
|||||||
@@ -1,65 +0,0 @@
|
|||||||
import { describe, it } from 'mocha';
|
|
||||||
import { expect } from 'chai';
|
|
||||||
|
|
||||||
import CalculateLuckyLevels, {
|
|
||||||
CalculateSevenDelta,
|
|
||||||
CountSevens,
|
|
||||||
} from '../../src/Disp/HelperFunctions/CalculateLuckyLevels';
|
|
||||||
|
|
||||||
describe('CountSevens', () => {
|
|
||||||
const examples = [
|
|
||||||
{ input: 1234567890, output: 1 },
|
|
||||||
{ input: 7777777777, output: 10 },
|
|
||||||
{ input: 1111111111, output: 0 },
|
|
||||||
{ input: 7897897897, output: 4 },
|
|
||||||
];
|
|
||||||
|
|
||||||
examples.forEach((example) => {
|
|
||||||
it(`Counts sevens in ${example.input}`, () => {
|
|
||||||
expect(CountSevens(example.input)).to.equal(example.output);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('CalculateSevenDelta', () => {
|
|
||||||
const examples = [
|
|
||||||
{ number: 123, digit: 1, output: 4 },
|
|
||||||
{ number: 123, digit: 10, output: 50 },
|
|
||||||
{ number: 123, digit: 100, output: 600 },
|
|
||||||
{ number: 123, digit: 1000, output: 7000 },
|
|
||||||
{ number: 7777, digit: 1, output: 0 },
|
|
||||||
{ number: 7777, digit: 10, output: 0 },
|
|
||||||
{ number: 7777, digit: 100, output: 0 },
|
|
||||||
{ number: 7777, digit: 1000, output: 0 },
|
|
||||||
{ number: 9999, digit: 1, output: 8 },
|
|
||||||
{ number: 9999, digit: 10, output: 80 },
|
|
||||||
{ number: 9999, digit: 100, output: 800 },
|
|
||||||
{ number: 9999, digit: 1000, output: 8000 },
|
|
||||||
];
|
|
||||||
|
|
||||||
examples.forEach((example) => {
|
|
||||||
it(`Calculates delta from ${example.number} to the next 7 in the ${example.digit}s digit`, () => {
|
|
||||||
expect(CalculateSevenDelta(example.number, example.digit)).to.equal(example.output);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('CalculateLuckyLevels', () => {
|
|
||||||
const examples = [
|
|
||||||
{ input: 0, luckyDigit: 7, luckyNumber: 77, luckyPayout: 7777 },
|
|
||||||
{ input: 123, luckyDigit: 127, luckyNumber: 177, luckyPayout: 7777 },
|
|
||||||
{ input: 77777, luckyDigit: 77777, luckyNumber: 77777, luckyPayout: 77777 },
|
|
||||||
{ input: 799999, luckyDigit: 799999, luckyNumber: 800077, luckyPayout: 807777 },
|
|
||||||
{ input: 999999, luckyDigit: 1000007, luckyNumber: 1000077, luckyPayout: 1007777 },
|
|
||||||
];
|
|
||||||
|
|
||||||
examples.forEach((example) => {
|
|
||||||
it(`Calculates the next lucky levels for the starting level ${example.input}`, () => {
|
|
||||||
expect(CalculateLuckyLevels(example.input)).to.deep.equal({
|
|
||||||
luckyDigit: example.luckyDigit,
|
|
||||||
luckyNumber: example.luckyNumber,
|
|
||||||
luckyPayout: example.luckyPayout,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user