[Automated] Merge dev into gh-pages

This commit is contained in:
github-actions[bot]
2021-06-07 06:57:40 +00:00
committed by GitHub
56 changed files with 1002 additions and 954 deletions

11
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"

16
.github/workflows/publish-dev.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: Publish
on:
push:
branches:
- "dev"
jobs:
publish-dev:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: everlytic/branch-merge@1.1.0
with:
github_token: ${{ github.token }}
source_ref: 'dev'
target_branch: 'gh-pages'
commit_message_template: '[Automated] Merge {source_ref} into {target_branch}'

View File

@@ -1,5 +1,4 @@
{
"recursive": true,
"require": ["esm", "ts-node/register"],
"reporter": "min"
"require": ["esm", "ts-node/register"]
}

View File

@@ -1,4 +1,4 @@
![ESLint](https://github.com/Aktanusa/CookieMonster/workflows/ESLint/badge.svg?event=push)
[![CI](https://github.com/CookieMonsterTeam/CookieMonster/actions/workflows/CI.yml/badge.svg)](https://github.com/CookieMonsterTeam/CookieMonster/actions/workflows/CI.yml)
## Cookie Monster
**Cookie Monster** is an addon you can load into Cookie Clicker, that offers a wide range of tools and statistics to enhance the game. **It is not a cheat interface** although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
@@ -19,8 +19,9 @@ max(cost - cookies in bank, 0)/cps + cost/Δ cps
If the relevant option is enabled, CM will color-code each of them based on their value. CM compares the PP across all possible buy options: if a buy 10 option is better than any of the buy 1 options Cookie Monster will colour them accordingly. Note that sometimes it is better to buy 10 of a building than to buy only 1, CM will also indicate this!
The following standard colours are used:
<details>
<summary>The following standard colours are used:</summary>
* Light Blue: (upgrades) This item has a better PP than the best building to buy
* Green: This building has the best PP
* Yellow: This building is within the top 10 of best PP's
@@ -29,6 +30,8 @@ The following standard colours are used:
* Purple: This building is worse than the top 10 of best PP's
* Gray: This item does not have a PP, often this means that there is no change to CPS
</details>
Note: For this index, **lower is better**, meaning a building with a PP of 1 is more interesting than one with a PP of 3.
## Using
@@ -59,6 +62,12 @@ Before submitting a bug, make sure to give a shot at the latest version of the a
All suggestions are welcome, even the smallest ones.
## For developers
Cookie Monster exposes some of the data it creates to the global scope. This data can be found in the `CookieMonsterData` object after loading Cookie Monster.
Currently we exposes relevant data for buildings and upgrades (PP, colour and bonus income). If you would like us to add any aditional data, please feel free to open an issue or create a PR doing so!
## Contributing
To contribute you can fork and clone the repository and run `npm install`.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1360
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,7 +12,7 @@
],
"scripts": {
"eslint-src": "eslint src test",
"build": "run-s eslint-src pack-prod test",
"build": "run-s eslint-src test pack-prod",
"build-test": "run-s pack-dev",
"pack-prod": "webpack --env production",
"pack-dev": "webpack",
@@ -20,7 +20,7 @@
},
"repository": {
"type": "git",
"url": "git+https://github.com/Aktanusa/CookieMonster.git"
"url": "git+https://github.com/CookieMonsterTeam/CookieMonster"
},
"license": "MIT",
"author": {
@@ -39,28 +39,28 @@
}
],
"bugs": {
"url": "https://github.com/Aktanusa/CookieMonster/issues"
"url": "https://github.com/CookieMonsterTeam/CookieMonster/issues"
},
"homepage": "https://github.com/Aktanusa/CookieMonster#readme",
"homepage": "https://github.com/CookieMonsterTeam/CookieMonster#readme",
"devDependencies": {
"@types/chai": "^4.2.16",
"@types/chai": "^4.2.18",
"@types/mocha": "^8.2.2",
"@typescript-eslint/eslint-plugin": "^4.22.0",
"@typescript-eslint/parser": "^4.21.0",
"@typescript-eslint/eslint-plugin": "^4.25.0",
"@typescript-eslint/parser": "^4.25.0",
"chai": "^4.3.4",
"eslint": "^7.23.0",
"eslint": "^7.27.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-import": "^2.23.4",
"esm": "^3.2.25",
"mocha": "^8.3.2",
"mocha": "^8.4.0",
"npm-run-all": "^4.1.5",
"prettier": "2.2.1",
"ts-loader": "^8.1.0",
"ts-node": "^9.1.1",
"typescript": "^4.2.3",
"webpack": "^5.24.4",
"webpack-cli": "^4.5.0"
"prettier": "2.3.0",
"ts-loader": "^9.2.2",
"ts-node": "^10.0.0",
"typescript": "^4.3.2",
"webpack": "^5.38.1",
"webpack-cli": "^4.7.0"
},
"ccrepo": {
"icon": [

View File

@@ -1,10 +1,10 @@
import { ClickTimes, CookieTimes } from '../../Disp/VariablesAndData';
import {
ChoEggDiff,
ClicksDiff,
CookiesDiff,
WrinkDiff,
WrinkFattestDiff,
ChoEggDiff, // eslint-disable-line no-unused-vars
ClicksDiff, // eslint-disable-line no-unused-vars
CookiesDiff, // eslint-disable-line no-unused-vars
WrinkDiff, // eslint-disable-line no-unused-vars
WrinkFattestDiff, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
/**
@@ -60,9 +60,9 @@ export class CMAvgQueue {
* Called by CM.Cache.InitCache()
*/
export function InitCookiesDiff() {
CookiesDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars
WrinkDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars
WrinkFattestDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars
ChoEggDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]); // eslint-disable-line no-unused-vars
ClicksDiff = new CMAvgQueue(ClickTimes[ClickTimes.length - 1]); // eslint-disable-line no-unused-vars
CookiesDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]);
WrinkDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]);
WrinkFattestDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]);
ChoEggDiff = new CMAvgQueue(CookieTimes[CookieTimes.length - 1]);
ClicksDiff = new CMAvgQueue(ClickTimes[ClickTimes.length - 1]);
}

View File

@@ -1,20 +1,20 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { ClickTimes, CookieTimes } from '../../Disp/VariablesAndData';
import {
CacheAverageClicks,
CacheAverageClicks, // eslint-disable-line no-unused-vars
CacheAverageCPS,
CacheAverageGainBank,
CacheAverageGainChoEgg,
CacheAverageGainWrink,
CacheAverageGainWrinkFattest,
CacheAvgCPSWithChoEgg,
CacheAvgCPSWithChoEgg, // eslint-disable-line no-unused-vars
CacheLastChoEgg,
CacheLastClicks,
CacheLastCookies,
CacheLastCPSCheck,
CacheLastWrinkCookies,
CacheLastWrinkFattestCookies,
CacheRealCookiesEarned,
CacheRealCookiesEarned, // eslint-disable-line no-unused-vars
CacheSellForChoEgg,
CacheWrinklersFattest,
CacheWrinklersTotal,
@@ -39,7 +39,7 @@ export default function CacheAvgCPS() {
if ((Game.T / Game.fps) % 1 === 0) {
let choEggTotal = Game.cookies + CacheSellForChoEgg;
if (Game.cpsSucked > 0) choEggTotal += CacheWrinklersTotal;
CacheRealCookiesEarned = Math.max(Game.cookiesEarned, choEggTotal); // eslint-disable-line no-unused-vars
CacheRealCookiesEarned = Math.max(Game.cookiesEarned, choEggTotal);
choEggTotal *= 0.05;
// Add recent gains to AvgQueue's
@@ -81,7 +81,7 @@ export default function CacheAvgCPS() {
if (choEgg || CMOptions.CalcWrink === 0) {
CacheAvgCPSWithChoEgg =
CacheAverageGainBank + CacheAverageGainWrink + (choEgg ? CacheAverageGainChoEgg : 0);
} else CacheAvgCPSWithChoEgg = CacheAverageCPS; // eslint-disable-line no-unused-vars
} else CacheAvgCPSWithChoEgg = CacheAverageCPS;
// eslint-disable-next-line no-unused-vars
CacheAverageClicks = ClicksDiff.calcAverage(ClickTimes[CMOptions.AvgClicksHist]);

View File

@@ -1,5 +1,5 @@
import { SimObjects } from '../../Sim/VariablesAndData';
import { CacheCurrWrinklerCount, CacheCurrWrinklerCPSMult } from '../VariablesAndData';
import { CacheCurrWrinklerCount, CacheCurrWrinklerCPSMult } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions caches the current Wrinkler CPS multiplier
@@ -19,8 +19,8 @@ export default function CacheCurrWrinklerCPS() {
else if (godLvl === 2) godMult *= 1.1;
else if (godLvl === 3) godMult *= 1.05;
}
CacheCurrWrinklerCount = count; // eslint-disable-line no-unused-vars
CacheCurrWrinklerCPSMult = // eslint-disable-line no-unused-vars
CacheCurrWrinklerCount = count;
CacheCurrWrinklerCPSMult =
count *
(count * 0.05 * 1.1) *
(Game.Has('Sacrilegious corruption') * 0.05 + 1) *

View File

@@ -1,5 +1,5 @@
import CalcNoGoldSwitchCPS from '../../Sim/Calculations/NoGoldenSwitchCalc';
import { CacheNoGoldSwitchCookiesPS } from '../VariablesAndData';
import { CacheNoGoldSwitchCookiesPS } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This function calculates CPS without the Golden Switch as it might be needed in other functions
@@ -9,5 +9,5 @@ import { CacheNoGoldSwitchCookiesPS } from '../VariablesAndData';
export default function CacheNoGoldSwitchCPS() {
if (Game.Has('Golden switch [off]')) {
CacheNoGoldSwitchCookiesPS = CalcNoGoldSwitchCPS();
} else CacheNoGoldSwitchCookiesPS = Game.cookiesPs; // eslint-disable-line no-unused-vars
} else CacheNoGoldSwitchCookiesPS = Game.cookiesPs;
}

View File

@@ -1,5 +1,5 @@
import SellBuildingsForChoEgg from '../../Sim/SimulationEvents/SellBuildingForChoEgg';
import { CacheSellForChoEgg } from '../VariablesAndData';
import { CacheSellForChoEgg } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions caches the reward for selling the Chocolate egg
@@ -20,5 +20,5 @@ export default function CacheSellAllForChoEgg() {
}
// Compute cookies earned by selling all buildings with optimal auras (ES + RB)
sellTotal += SellBuildingsForChoEgg();
CacheSellForChoEgg = sellTotal; // eslint-disable-line no-unused-vars
CacheSellForChoEgg = sellTotal;
}

View File

@@ -10,7 +10,7 @@ import CacheAllMissingUpgrades from './Stats/MissingUpgrades';
import CacheSeasonSpec from './Stats/Reindeer';
import { CacheGoldenAndWrathCookiesMults, CacheStatsCookies } from './Stats/Stats';
import AllAmountTillNextAchievement from './TillNextAchievement/AllAmountTillNextAchievement';
import { CacheAverageCookiesFromClicks, HeavenlyChipsDiff } from './VariablesAndData';
import { CacheAverageCookiesFromClicks, HeavenlyChipsDiff } from './VariablesAndData'; // eslint-disable-line no-unused-vars
import CacheWrinklers from './Wrinklers/Wrinklers';
/**
@@ -26,8 +26,8 @@ export default function InitCache() {
CacheSeasonSpec();
InitCookiesDiff();
/** Used by CM.Cache.CacheHeavenlyChipsPS() */
HeavenlyChipsDiff = new CMAvgQueue(5); // eslint-disable-line no-unused-vars
CacheAverageCookiesFromClicks = new CMAvgQueue(ClickTimes[ClickTimes.length - 1] * 20); // eslint-disable-line no-unused-vars
HeavenlyChipsDiff = new CMAvgQueue(5);
CacheAverageCookiesFromClicks = new CMAvgQueue(ClickTimes[ClickTimes.length - 1] * 20);
CacheHeavenlyChipsPS();
AllAmountTillNextAchievement();
CacheAvgCPS();

View File

@@ -4,7 +4,8 @@ import CacheAvgCPS from './CPS/CPS';
import CacheCurrWrinklerCPS from './CPS/CurrWrinklerCPS';
import CachePP from './PP/PP';
import CacheHeavenlyChipsPS from './Stats/HeavenlyChips';
import { CacheTimeTillNextPrestige } from './VariablesAndData';
import AllAmountTillNextAchievement from './TillNextAchievement/AllAmountTillNextAchievement';
import { CacheTimeTillNextPrestige } from './VariablesAndData'; // eslint-disable-line no-unused-vars
import CacheWrinklers from './Wrinklers/Wrinklers';
/**
@@ -16,6 +17,7 @@ export default function LoopCache() {
CacheWrinklers();
CachePP();
AllAmountTillNextAchievement(false);
CacheCurrWrinklerCPS();
CacheAvgCPS();
CacheHeavenlyChipsPS();
@@ -25,5 +27,5 @@ export default function LoopCache() {
Math.floor(Game.HowMuchPrestige(Game.cookiesReset + Game.cookiesEarned)) + 1,
) -
(Game.cookiesEarned + Game.cookiesReset);
CacheTimeTillNextPrestige = FormatTime(cookiesToNext / GetCPS()); // eslint-disable-line no-unused-vars
CacheTimeTillNextPrestige = FormatTime(cookiesToNext / GetCPS());
}

View File

@@ -1,9 +1,9 @@
import { CacheDragonAura, CacheDragonAura2 } from '../VariablesAndData';
import { CacheDragonAura, CacheDragonAura2 } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions caches the currently selected Dragon Auras
*/
export default function CacheDragonAuras() {
CacheDragonAura = Game.dragonAura; // eslint-disable-line no-unused-vars
CacheDragonAura2 = Game.dragonAura2; // eslint-disable-line no-unused-vars
CacheDragonAura = Game.dragonAura;
CacheDragonAura2 = Game.dragonAura2;
}

View File

@@ -3,7 +3,7 @@
import Beautify from '../../Disp/BeautifyAndFormatting/Beautify';
import CopyData from '../../Sim/SimulationData/CopyData';
import { SimDoSims, SimObjects } from '../../Sim/VariablesAndData';
import { CacheCostDragonUpgrade, CacheLastDragonLevel } from '../VariablesAndData';
import { CacheCostDragonUpgrade, CacheLastDragonLevel } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions caches the current cost of upgrading the dragon level so it can be displayed in the tooltip
@@ -56,7 +56,7 @@ export default function CacheDragonCost() {
cost += price;
SimObjects[target].amount -= 1;
}
CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; // eslint-disable-line no-unused-vars
CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`;
});
}
}

View File

@@ -2,7 +2,8 @@ import { CMOptions } from '../../Config/VariablesAndData';
import GetWrinkConfigBank from '../../Disp/HelperFunctions/GetWrinkConfigBank';
import { ColourGray } from '../../Disp/VariablesAndData';
import {
CacheMinPP,
CacheMinPP, // eslint-disable-line no-unused-vars
CacheMinPPBulk, // eslint-disable-line no-unused-vars
CacheObjects1,
CacheObjects10,
CacheObjects100,
@@ -38,7 +39,8 @@ function CachePP(target, amount) {
Math.max(price - (Game.cookies + GetWrinkConfigBank()), 0) / Game.cookiesPs +
price / target[i].bonus;
} else target[i].pp = price / target[i].bonus; // eslint-disable-line no-param-reassign
if (!(CMOptions.PPRigidelMode && amount === 1)) CachePPArray.push([target[i].pp, amount]);
if (!(CMOptions.PPRigidelMode && amount === 1))
CachePPArray.push([target[i].pp, amount, price]);
});
}
@@ -58,16 +60,17 @@ export default function CacheBuildingsPP() {
// Set CM.Cache.min to best non-excluded buidliung
CachePPArray.sort((a, b) => a[0] - b[0]);
let indexOfMin = 0;
let indexOfMin = CMOptions.PPExcludeTop;
if (CMOptions.PPOnlyConsiderBuyable) {
while (CachePPArray[indexOfMin][1] > Game.cookies) {
while (CachePPArray[indexOfMin][2] > Game.cookies) {
indexOfMin += 1;
if (CachePPArray.length === indexOfMin + 1) {
break;
}
}
}
CacheMinPP = CachePPArray[CMOptions.PPExcludeTop][indexOfMin]; // eslint-disable-line no-unused-vars
CacheMinPP = CachePPArray[indexOfMin][0];
CacheMinPPBulk = CachePPArray[indexOfMin][1];
CacheColour(CacheObjects1, 1);
CacheColour(CacheObjects10, 10);

View File

@@ -1,6 +1,7 @@
/**
* Section: Functions related to caching PP */
import { CacheObjects1, CacheObjects10, CacheObjects100, CacheUpgrades } from '../VariablesAndData';
import CacheBuildingsPP from './Building';
import CacheUpgradePP from './Upgrade';
@@ -11,4 +12,11 @@ import CacheUpgradePP from './Upgrade';
export default function CachePP() {
CacheBuildingsPP();
CacheUpgradePP();
window.CookieMonsterData.Objects1 = JSON.parse(JSON.stringify(CacheObjects1));
window.CookieMonsterData.Objects10 = JSON.parse(JSON.stringify(CacheObjects10));
window.CookieMonsterData.Objects100 = JSON.parse(JSON.stringify(CacheObjects100));
window.CookieMonsterData.Upgrades = [];
Object.entries(CacheUpgrades).forEach((i) => {
window.CookieMonsterData.Upgrades[i[0]] = JSON.parse(JSON.stringify(i[1]));
});
}

View File

@@ -8,7 +8,7 @@ import {
CacheAverageGainBank,
CacheAverageGainWrink,
CacheAverageGainWrinkFattest,
CacheDoRemakeBuildPrices,
CacheDoRemakeBuildPrices, // eslint-disable-line no-unused-vars
CacheObjects1,
CacheObjects10,
CacheObjects100,
@@ -28,7 +28,7 @@ function CacheBuildingIncome(amount) {
result[i] = {};
result[i].bonus = BuyBuildingsBonusIncome(i, amount);
if (amount !== 1) {
CacheDoRemakeBuildPrices = 1; // eslint-disable-line no-unused-vars
CacheDoRemakeBuildPrices = 1;
}
});
return result;

View File

@@ -1,17 +1,17 @@
import GetCPSBuffMult from '../CPS/GetCPSBuffMult';
import {
CacheChainFrenzyMaxReward,
CacheChainFrenzyRequired,
CacheChainFrenzyRequiredNext,
CacheChainFrenzyRequired, // eslint-disable-line no-unused-vars
CacheChainFrenzyRequiredNext, // eslint-disable-line no-unused-vars
CacheChainFrenzyWrathMaxReward,
CacheChainFrenzyWrathRequired,
CacheChainFrenzyWrathRequiredNext,
CacheChainFrenzyWrathRequired, // eslint-disable-line no-unused-vars
CacheChainFrenzyWrathRequiredNext, // eslint-disable-line no-unused-vars
CacheChainMaxReward,
CacheChainRequired,
CacheChainRequiredNext,
CacheChainRequired, // eslint-disable-line no-unused-vars
CacheChainRequiredNext, // eslint-disable-line no-unused-vars
CacheChainWrathMaxReward,
CacheChainWrathRequired,
CacheChainWrathRequiredNext,
CacheChainWrathRequired, // eslint-disable-line no-unused-vars
CacheChainWrathRequiredNext, // eslint-disable-line no-unused-vars
CacheDragonsFortuneMultAdjustment,
CacheGoldenCookiesMult,
CacheNoGoldSwitchCookiesPS,
@@ -72,21 +72,21 @@ export function CacheChain() {
else maxPayout = 0;
CacheChainMaxReward = MaxChainCookieReward(7, maxPayout, CacheGoldenCookiesMult);
CacheChainRequired = (CacheChainMaxReward[1] * 2) / CacheGoldenCookiesMult; // eslint-disable-line no-unused-vars
CacheChainRequiredNext = CacheChainMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment; // eslint-disable-line no-unused-vars
CacheChainRequired = (CacheChainMaxReward[1] * 2) / CacheGoldenCookiesMult;
CacheChainRequiredNext = CacheChainMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment;
CacheChainWrathMaxReward = MaxChainCookieReward(6, maxPayout, CacheWrathCookiesMult);
CacheChainWrathRequired = (CacheChainWrathMaxReward[1] * 2) / CacheWrathCookiesMult; // eslint-disable-line no-unused-vars
CacheChainWrathRequiredNext = // eslint-disable-line no-unused-vars
CacheChainWrathRequired = (CacheChainWrathMaxReward[1] * 2) / CacheWrathCookiesMult;
CacheChainWrathRequiredNext =
CacheChainWrathMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment;
CacheChainFrenzyMaxReward = MaxChainCookieReward(7, maxPayout * 7, CacheGoldenCookiesMult);
CacheChainFrenzyRequired = (CacheChainFrenzyMaxReward[1] * 2) / CacheGoldenCookiesMult; // eslint-disable-line no-unused-vars
CacheChainFrenzyRequiredNext = // eslint-disable-line no-unused-vars
CacheChainFrenzyRequired = (CacheChainFrenzyMaxReward[1] * 2) / CacheGoldenCookiesMult;
CacheChainFrenzyRequiredNext =
CacheChainFrenzyMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment;
CacheChainFrenzyWrathMaxReward = MaxChainCookieReward(6, maxPayout * 7, CacheWrathCookiesMult);
CacheChainFrenzyWrathRequired = (CacheChainFrenzyWrathMaxReward[1] * 2) / CacheWrathCookiesMult; // eslint-disable-line no-unused-vars
CacheChainFrenzyWrathRequiredNext = // eslint-disable-line no-unused-vars
CacheChainFrenzyWrathRequired = (CacheChainFrenzyWrathMaxReward[1] * 2) / CacheWrathCookiesMult;
CacheChainFrenzyWrathRequiredNext =
CacheChainFrenzyWrathMaxReward[2] / 60 / 60 / 6 / CacheDragonsFortuneMultAdjustment;
}

View File

@@ -1,5 +1,5 @@
import {
CacheHCPerSecond,
CacheHCPerSecond, // eslint-disable-line no-unused-vars
CacheLastHeavenlyCheck,
CacheLastHeavenlyChips,
HeavenlyChipsDiff,
@@ -30,6 +30,6 @@ export default function CacheHeavenlyChipsPS() {
CacheLastHeavenlyChips = ascendNowToGet;
// Get average gain over period of 5 seconds
CacheHCPerSecond = HeavenlyChipsDiff.calcAverage(5); // eslint-disable-line no-unused-vars
CacheHCPerSecond = HeavenlyChipsDiff.calcAverage(5);
}
}

View File

@@ -1,8 +1,8 @@
import { crateMissing } from '../../Disp/MenuSections/Statistics/CreateMissingUpgrades';
import {
CacheMissingUpgrades,
CacheMissingUpgradesCookies,
CacheMissingUpgradesPrestige,
CacheMissingUpgrades, // eslint-disable-line no-unused-vars
CacheMissingUpgradesCookies, // eslint-disable-line no-unused-vars
CacheMissingUpgradesPrestige, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
/**

View File

@@ -1,4 +1,4 @@
import { CacheSeaSpec } from '../VariablesAndData';
import { CacheSeaSpec } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions caches the reward of popping a reindeer
@@ -11,6 +11,6 @@ export default function CacheSeasonSpec() {
if (Game.hasBuff('Elder frenzy')) val *= 0.5;
if (Game.hasBuff('Frenzy')) val *= 0.75;
CacheSeaSpec = Math.max(25, val);
if (Game.Has('Ho ho ho-flavored frosting')) CacheSeaSpec *= 2; // eslint-disable-line no-unused-vars
if (Game.Has('Ho ho ho-flavored frosting')) CacheSeaSpec *= 2;
}
}

View File

@@ -4,17 +4,17 @@ import SimHas from '../../Sim/ReplacedGameFunctions/SimHas';
import GetCPSBuffMult from '../CPS/GetCPSBuffMult';
import {
CacheConjure,
CacheConjureReward,
CacheConjureReward, // eslint-disable-line no-unused-vars
CacheDragonsFortuneMultAdjustment,
CacheEdifice,
CacheEdificeBuilding,
CacheEdificeBuilding, // eslint-disable-line no-unused-vars
CacheGoldenCookiesMult,
CacheLucky,
CacheLuckyFrenzy,
CacheLuckyReward,
CacheLuckyRewardFrenzy,
CacheLuckyWrathReward,
CacheLuckyWrathRewardFrenzy,
CacheLuckyReward, // eslint-disable-line no-unused-vars
CacheLuckyRewardFrenzy, // eslint-disable-line no-unused-vars
CacheLuckyWrathReward, // eslint-disable-line no-unused-vars
CacheLuckyWrathRewardFrenzy, // eslint-disable-line no-unused-vars
CacheNoGoldSwitchCookiesPS,
CacheWrathCookiesMult,
} from '../VariablesAndData';
@@ -28,13 +28,13 @@ export function CacheStatsCookies() {
const cpsBuffMult = GetCPSBuffMult();
if (cpsBuffMult > 0) CacheLucky /= cpsBuffMult;
else CacheLucky = 0;
CacheLuckyReward = CacheGoldenCookiesMult * (CacheLucky * 0.15) + 13; // eslint-disable-line no-unused-vars
CacheLuckyWrathReward = CacheWrathCookiesMult * (CacheLucky * 0.15) + 13; // eslint-disable-line no-unused-vars
CacheLuckyReward = CacheGoldenCookiesMult * (CacheLucky * 0.15) + 13;
CacheLuckyWrathReward = CacheWrathCookiesMult * (CacheLucky * 0.15) + 13;
CacheLuckyFrenzy = CacheLucky * 7;
CacheLuckyRewardFrenzy = CacheGoldenCookiesMult * (CacheLuckyFrenzy * 0.15) + 13; // eslint-disable-line no-unused-vars
CacheLuckyWrathRewardFrenzy = CacheWrathCookiesMult * (CacheLuckyFrenzy * 0.15) + 13; // eslint-disable-line no-unused-vars
CacheLuckyRewardFrenzy = CacheGoldenCookiesMult * (CacheLuckyFrenzy * 0.15) + 13;
CacheLuckyWrathRewardFrenzy = CacheWrathCookiesMult * (CacheLuckyFrenzy * 0.15) + 13;
CacheConjure = CacheLucky * 2;
CacheConjureReward = CacheConjure * 0.15; // eslint-disable-line no-unused-vars
CacheConjureReward = CacheConjure * 0.15;
CacheEdifice = 0;
let max = 0;
@@ -50,7 +50,7 @@ export function CacheStatsCookies() {
Game.Objects[i].price * 2 > CacheEdifice
) {
CacheEdifice = Game.Objects[i].price * 2;
CacheEdificeBuilding = i; // eslint-disable-line no-unused-vars
CacheEdificeBuilding = i;
}
});
}

View File

@@ -1,23 +1,32 @@
import { CacheObjectsNextAchievement } from '../VariablesAndData';
import IndividualAmountTillNextAchievement from './IndividualAmountTillNextAchievement';
export default function AllAmountTillNextAchievement() {
/**
* This functions caches the amount of buildings needed till next achievement
* @param {boolean} forceRecalc Whether a recalcution should be forced (after CPS change)
*/
export default function AllAmountTillNextAchievement(forceRecalc) {
const result = {};
Object.keys(Game.Objects).forEach((i) => {
if (
Object.keys(CacheObjectsNextAchievement).length !== 0 &&
CacheObjectsNextAchievement[i].TotalNeeded > Game.Objects[i].amount
CacheObjectsNextAchievement[i].TotalNeeded > Game.Objects[i].amount &&
!forceRecalc
) {
result[i] = {
AmountNeeded: CacheObjectsNextAchievement[i].TotalNeeded - Game.Objects[i].amount,
TotalNeeded: CacheObjectsNextAchievement[i].TotalNeeded,
price: Game.Objects[i].getSumPrice(
CacheObjectsNextAchievement[i].TotalNeeded - Game.Objects[i].amount,
),
};
} else {
const tillNext = IndividualAmountTillNextAchievement(i);
result[i] = {
AmountNeeded: tillNext,
TotalNeeded: Game.Objects[i].amount + tillNext,
price: Game.Objects[i].getSumPrice(tillNext),
};
}
});

View File

@@ -3,10 +3,24 @@ import { SimAchievementsOwned } from '../../Sim/VariablesAndData';
export default function IndividualAmountTillNextAchievement(building) {
const AchievementsAtStart = Game.AchievementsOwned;
for (let index = 0; index < 101; index++) {
let index = 100;
let lastIndexWithChange = 100;
while (index > -1) {
BuyBuildingsBonusIncome(building, index);
if (SimAchievementsOwned > AchievementsAtStart) {
return index;
lastIndexWithChange = index;
index -= 10;
} else if (index === 100) {
return 101;
} else {
index += 1;
while (index <= lastIndexWithChange) {
BuyBuildingsBonusIncome(building, index);
if (SimAchievementsOwned > AchievementsAtStart) {
return index;
}
index += 1;
}
}
}
return 101;

View File

@@ -69,6 +69,8 @@ export let CacheTimeTillNextPrestige = 0;
/** Stores lowest PP value */
export let CacheMinPP = 0;
/** Stores lowest PP value category */
export let CacheMinPPBulk = 0;
/** Stores all PP values of all buildings for all buy settings (1, 10, 100) */
export let CachePPArray = [];

View File

@@ -3,8 +3,8 @@
import { SimObjects } from '../../Sim/VariablesAndData';
import {
CacheWrinklersFattest,
CacheWrinklersNormal,
CacheWrinklersTotal,
CacheWrinklersNormal, // eslint-disable-line no-unused-vars
CacheWrinklersTotal, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
/**
@@ -31,9 +31,9 @@ export default function CacheWrinklers() {
else if (godLvl === 2) sucked *= 1.1;
else if (godLvl === 3) sucked *= 1.05;
}
CacheWrinklersTotal += sucked; // eslint-disable-line no-unused-vars
CacheWrinklersTotal += sucked;
if (Game.wrinklers[i].type === 0) {
CacheWrinklersNormal += sucked; // eslint-disable-line no-unused-vars
CacheWrinklersNormal += sucked;
if (sucked > CacheWrinklersFattest[0]) CacheWrinklersFattest = [sucked, i];
}
}

View File

@@ -14,7 +14,7 @@ import UpdateUpgradeSectionsHeight from '../Disp/BuildingsUpgrades/UpdateUpgrade
import UpdateUpgrades from '../Disp/BuildingsUpgrades/Upgrades';
import RefreshScale from '../Disp/HelperFunctions/RefreshScale';
import { UpdateFavicon } from '../Disp/TabTitle/FavIcon';
import { SimDoSims } from '../Sim/VariablesAndData';
import { SimDoSims } from '../Sim/VariablesAndData'; // eslint-disable-line no-unused-vars
import SettingColours from './SettingClasses/SettingColours.ts';
import SettingInputNumber from './SettingClasses/SettingInputNumber.ts';
import SettingStandard from './SettingClasses/SettingStandard.ts';
@@ -70,7 +70,7 @@ const Config = {
'Calculate times and average Cookies Per Second with (only the single non-shiny fattest) wrinklers',
true,
() => {
SimDoSims = true; // eslint-disable-line no-unused-vars
SimDoSims = true;
},
),
@@ -274,6 +274,13 @@ const Config = {
'Overlay on timers displaying seconds and/or percentage left',
true,
),
AutosaveTimerBar: new SettingStandard(
'bool',
'BarsDisplay',
['Autosave timer bar OFF', 'Autosave timer bar ON'],
'Show a timer counting down till next autosave in the timer bar',
true,
),
UpBarColour: new SettingStandard(
'bool',
'BarsDisplay',
@@ -339,7 +346,7 @@ const Config = {
'bool',
'BarsDisplay',
['Grimoire magic meter timer OFF', 'Grimoire magic meter timer ON'],
'A timer on how long before the Grimoire magic meter is full',
'A timer overlay showing how long till the Grimoire magic meter is full',
true,
),
GCTimer: new SettingStandard(

View File

@@ -31,6 +31,7 @@ const ConfigDefault: {
TimerBar: 1,
TimerBarPos: 0,
TimerBarOverlay: 2,
AutosaveTimerBar: 0,
UpBarColour: 1,
UpgradeBarFixedPos: 1,
SortBuildings: 0,

View File

@@ -1,4 +1,9 @@
import { CacheObjects1, CacheObjects10, CacheObjects100 } from '../../Cache/VariablesAndData';
import {
CacheMinPPBulk,
CacheObjects1,
CacheObjects10,
CacheObjects100,
} from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingSell from '../../Sim/SimulationEvents/SellBuilding';
import Beautify from '../BeautifyAndFormatting/Beautify';
@@ -24,11 +29,17 @@ export default function UpdateBuildings() {
else if (target === 10) target = CacheObjects10;
else if (target === 100) target = CacheObjects100;
// Remove colour if applied
l(`storeBulk1`).style.removeProperty('color');
l(`storeBulk10`).style.removeProperty('color');
l(`storeBulk100`).style.removeProperty('color');
if (Game.buyMode === 1) {
if (CMOptions.BuildColour === 1) {
Object.keys(target).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.color = CMOptions[`Colour${target[i].color}`];
});
l(`storeBulk${CacheMinPPBulk}`).style.color = CMOptions.ColourGreen;
} else {
Object.keys(Game.Objects).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.removeProperty('color');
@@ -58,49 +69,34 @@ export default function UpdateBuildings() {
if (Game.buyMode === 1 && CMOptions.SortBuildings) {
let arr;
if (CMOptions.SortBuildings === 1) {
arr = Object.keys(CacheObjects1).map((k) => {
const o = CacheObjects1[k];
arr = Object.keys(CacheObjects1).map(k => {
const o = {};
o.name = k;
o.id = Game.Objects[k].id;
o.pp = CacheObjects1[k].pp;
o.color = CacheObjects1[k].color;
return o;
});
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) > // eslint-disable-line no-nested-ternary
ColoursOrdering.indexOf(b.color)
? 1
: ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary
? -1
: a.pp < b.pp
? -1
: 0,
);
} else if (CMOptions.SortBuildings === 2) {
arr = Object.keys(target).map((k) => {
const o = target[k];
arr = Object.keys(target).map(k => {
const o = {};
o.name = k;
o.id = Game.Objects[k].id;
o.pp = target[k].pp;
o.color = target[k].color;
return o;
});
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) > // eslint-disable-line no-nested-ternary
ColoursOrdering.indexOf(b.color)
? 1
: ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary
? -1
: a.pp < b.pp
? -1
: 0,
);
}
// Sort by pp colour group, then by pp.
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
? a.pp - b.pp
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
);
for (let x = 0; x < arr.length; x++) {
Game.Objects[arr[x].name].l.style.gridRow = `${x + 2}/${x + 2}`;
}
} else {
const arr = Object.keys(CacheObjects1).map((k) => {
const o = CacheObjects1[k];
const arr = Object.keys(CacheObjects1).map(k => {
const o = {};
o.name = k;
o.id = Game.Objects[k].id;
return o;

View File

@@ -77,14 +77,11 @@ export default function UpdateUpgrades() {
}
if (CMOptions.SortUpgrades) {
// Sort by pp colour group, then by pp.
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) > ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary
? 1
: ColoursOrdering.indexOf(a.color) < ColoursOrdering.indexOf(b.color) // eslint-disable-line no-nested-ternary
? -1
: a.pp < b.pp
? -1
: 0,
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
? a.pp - b.pp
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
);
} else {
arr.sort((a, b) => a.price - b.price);

View File

@@ -25,6 +25,12 @@ export function CreateTimerBar() {
TimerBar.style.fontWeight = 'bold';
TimerBar.style.backgroundColor = 'black';
// Create standard Autosave bar
const CMTimerBarAutosave = CreateTimer('CMTimerBarAutosave', 'Autosave', [
{ id: 'CMTimerBarAutosaveBar', color: ColourPurple },
]);
TimerBar.appendChild(CMTimerBarAutosave);
// Create standard Golden Cookie bar
const CMTimerBarGC = CreateTimer('CMTimerBarGC', 'Next Cookie', [
{ id: 'CMTimerBarGCMinBar', color: ColourGray },
@@ -56,6 +62,22 @@ export function UpdateTimerBar() {
const maxWidthOneBar = l('CMTimerBar').offsetWidth - 133;
let numberOfTimers = 0;
if (CMOptions.AutosaveTimerBar && Game.prefs.autosave) {
const timeTillNextAutosave =
(Game.fps * 60 - (Game.OnAscend ? 0 : Game.T % (Game.fps * 60))) / Game.fps;
l('CMTimerBarAutosave').style.display = '';
l('CMTimerBarAutosaveBar').style.width = `${Math.round(
(timeTillNextAutosave *
(maxWidthOneBar - Math.ceil(timeTillNextAutosave).toString().length * 8)) /
60,
)}px`;
if (CMOptions.TimerBarOverlay >= 1) {
l('CMTimerBarAutosaveBar').textContent = Math.ceil(timeTillNextAutosave);
} else l('CMTimerBarAutosaveBar').textContent = '';
l('CMTimerBarAutosaveTime').textContent = Math.ceil(timeTillNextAutosave);
numberOfTimers += 1;
} else l('CMTimerBarAutosave').style.display = 'none';
// Regulates visibility of Golden Cookie timer
if (Game.shimmerTypes.golden.spawned === 0 && !Game.Has('Golden switch [off]')) {
l('CMTimerBarGC').style.display = '';

View File

@@ -84,6 +84,28 @@ export function StatsListing(type, name, text, placeholder) {
return div;
}
/**
* This function creates an stats-listing-object for the stats page for missing items displays
* It is called by CM.Disp.AddMenuStats()
* @param {string} type The type fo the listing
* @param {string} name The name of the option
* @param {object} text The text-object of the option
* @param {bool} current Whether the season of the item is the current season
* @returns {object} div The option object
*/
export function StatsMissDispListing(type, name, text, current) {
const div = document.createElement('div');
div.className = 'listing';
const listingName = document.createElement('b');
listingName.textContent = name;
if (current === true) listingName.style.color = CMOptions.ColourGreen;
div.appendChild(listingName);
div.appendChild(document.createTextNode(': '));
div.appendChild(text);
return div;
}
/**
* This function creates a tooltip containing all missing holiday items contained in the list theMissDisp
* @param {list} theMissDisp A list of the missing holiday items

View File

@@ -41,7 +41,12 @@ import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension';
import GetCPS from '../../HelperFunctions/GetCPS';
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
import { ColourGreen, ColourRed, ColourTextPre } from '../../VariablesAndData';
import { StatsListing, StatsHeader, StatsMissDisp } from './CreateDOMElements';
import {
StatsListing,
StatsHeader,
StatsMissDisp,
StatsMissDispListing,
} from './CreateDOMElements';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
@@ -697,10 +702,11 @@ export function SeasonSection() {
if (CMOptions.Header.Sea) {
if (missingHalloweenCookies.length !== 0) {
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Halloween cookies left to buy',
StatsMissDisp(missingHalloweenCookies),
Game.season === 'halloween',
),
);
let failRateHalloween = 0.95;
@@ -715,7 +721,7 @@ export function SeasonSection() {
}
const obtainedCookiesChance = missingHalloweenCookies.length / 7;
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Chance of receiving a cookie from wrinkler/shiny wrinkler',
document.createTextNode(
@@ -723,15 +729,17 @@ export function SeasonSection() {
(1 - failRateHalloween * 0.9) * obtainedCookiesChance * 100,
)}%`,
),
Game.season === 'halloween',
),
);
}
if (missingChristmasCookies.length !== 0) {
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Christmas cookies left to buy',
StatsMissDisp(missingChristmasCookies),
Game.season === 'christmas',
),
);
let failRateChristmas = 0.8;
@@ -746,21 +754,23 @@ export function SeasonSection() {
}
const obtainedCookiesChance = missingChristmasCookies.length / 7;
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Chance of receiving a cookie from reindeer',
document.createTextNode(
`${Beautify((1 - failRateChristmas) * obtainedCookiesChance * 100)}%`,
),
Game.season === 'christmas',
),
);
}
if (missingValentineCookies.length !== 0) {
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Valentine cookies left to buy',
StatsMissDisp(missingValentineCookies),
Game.season === 'valentines',
),
);
}
@@ -790,40 +800,53 @@ export function SeasonSection() {
};
if (missingNormalEggs.length !== 0) {
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Normal easter eggs left to unlock',
StatsMissDisp(missingNormalEggs),
Game.season === 'easter',
),
);
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Chance of receiving an egg from wrinkler/golden cookie',
document.createTextNode(
`${Beautify(dropRateEgg(0.98)[0] * 100)}% / ${Beautify(dropRateEgg(0.9)[0] * 100)}%`,
),
Game.season === 'easter',
),
);
}
if (missingRareEggs.length !== 0) {
section.appendChild(
StatsListing('basic', 'Rare easter eggs left to unlock', StatsMissDisp(missingRareEggs)),
StatsMissDispListing(
'basic',
'Rare easter eggs left to unlock',
StatsMissDisp(missingRareEggs),
Game.season === 'easter',
),
);
section.appendChild(
StatsListing(
StatsMissDispListing(
'basic',
'Chance of receiving a rare egg from wrinkler/golden cookie',
document.createTextNode(
`${Beautify(dropRateEgg(0.98)[1] * 100)}% / ${Beautify(dropRateEgg(0.9)[1] * 100)}%`,
),
Game.season === 'easter',
),
);
}
if (Game.season === 'christmas')
section.appendChild(
StatsListing('basic', 'Reindeer reward', document.createTextNode(Beautify(CacheSeaSpec))),
StatsMissDispListing(
'basic',
'Reindeer reward',
document.createTextNode(Beautify(CacheSeaSpec)),
true,
),
);
if (choEgg) {
section.appendChild(

View File

@@ -20,7 +20,10 @@ export function CreateFavicon() {
export function UpdateFavicon() {
if (CMOptions.Favicon === 1 && LastGoldenCookieState > 0) {
if (CacheSpawnedGoldenShimmer.wrath)
l('CMFavicon').href = 'https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico';
else l('CMFavicon').href = 'https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico';
l('CMFavicon').href =
'https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico';
else
l('CMFavicon').href =
'https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico';
} else l('CMFavicon').href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico';
}

View File

@@ -1,5 +1,5 @@
import UpdateTooltips from './UpdateTooltips';
import { SimpleTooltipElements, TooltipName, TooltipType } from '../VariablesAndData';
import { SimpleTooltipElements, TooltipName, TooltipType } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding';
import GetTimeColour from '../BeautifyAndFormatting/GetTimeColour';
@@ -122,8 +122,8 @@ export function CreateTooltip(type, name) {
}
// Sets global variables used by CM.Disp.UpdateTooltip()
TooltipType = type; // eslint-disable-line no-unused-vars
TooltipName = name; // eslint-disable-line no-unused-vars
TooltipType = type;
TooltipName = name;
UpdateTooltips();

View File

@@ -3,7 +3,7 @@ import CMDrawHook from '../Disp/DrawHook';
import CMClickHook from '../Main/ClickHook';
import InitializeCookieMonster from '../Main/Initialization';
import CMLoopHook from '../Main/LoopHook';
import { isInitializing } from './Variables';
import { isInitializing } from './Variables'; // eslint-disable-line no-unused-vars
/**
* This creates a init function for the CM object. Per Game code/comments:
@@ -26,6 +26,6 @@ export default function init() {
Game.registerHook('draw', CMDrawHook);
Game.registerHook('logic', CMLoopHook);
isInitializing = false; // eslint-disable-line no-unused-vars
isInitializing = false;
}
}

View File

@@ -1,6 +1,6 @@
import { LoadConfig } from '../Config/SaveLoadReload/SaveLoadReloadSettings';
import { VersionMajor, VersionMinor } from '../Data/Moddata.ts';
import { FavouriteSettings } from '../Disp/VariablesAndData';
import { FavouriteSettings } from '../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars
import InitData from '../Sim/InitializeData/InitData';
/**
@@ -11,7 +11,7 @@ export default function load(str) {
const save = JSON.parse(str);
InitData();
// The if-statement is a failsafe for old saves
if (typeof save.favouriteSettings !== 'undefined') FavouriteSettings = save.favouriteSettings; // eslint-disable-line no-unused-vars
if (typeof save.favouriteSettings !== 'undefined') FavouriteSettings = save.favouriteSettings;
LoadConfig(save.settings);
if (save.version !== `${VersionMajor}.${VersionMinor}`) {
if (Game.prefs.popups)

View File

@@ -1,4 +1,4 @@
import { CacheSpawnedGoldenShimmer, CacheGoldenShimmersByID } from '../../Cache/VariablesAndData';
import { CacheSpawnedGoldenShimmer, CacheGoldenShimmersByID } from '../../Cache/VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import CreateGCTimer from '../../Disp/GoldenCookieTimers/GoldenCookieTimers';
import Flash from '../../Disp/Notifications/Flash';
@@ -62,7 +62,7 @@ export default function CheckGoldenCookie() {
}
UpdateFavicon();
LastSpawnedGoldenCookieState = CurrSpawnedGoldenCookieState;
if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0; // eslint-disable-line no-unused-vars
if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0;
} else if (CMOptions.GCTimer === 1 && LastGoldenCookieState) {
Object.keys(GCTimers).forEach((i) => {
GCTimers[i].style.opacity = CacheGoldenShimmersByID[i].l.style.opacity;

View File

@@ -1,4 +1,4 @@
import { CacheSeasonPopShimmer } from '../../Cache/VariablesAndData';
import { CacheSeasonPopShimmer } from '../../Cache/VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
@@ -14,7 +14,7 @@ export default function CheckSeasonPopup() {
LastSeasonPopupState = Game.shimmerTypes.reindeer.spawned;
Object.keys(Game.shimmers).forEach((i) => {
if (Game.shimmers[i].spawnLead && Game.shimmers[i].type === 'reindeer') {
CacheSeasonPopShimmer = Game.shimmers[i]; // eslint-disable-line no-unused-vars
CacheSeasonPopShimmer = Game.shimmers[i];
}
});
Flash(3, 'SeaFlash', false);

View File

@@ -12,24 +12,27 @@ import UpdateBuildingUpgradeStyle from '../Disp/Initialization/UpdateBuildingUpg
import CreateFlashScreen from '../Disp/Initialization/FlashScreen';
import { CreateFavicon } from '../Disp/TabTitle/FavIcon';
import { CreateSimpleTooltip } from '../Disp/Tooltips/Tooltip';
import { CMLastAscendState, TooltipText } from '../Disp/VariablesAndData';
import { CMLastAscendState, TooltipText } from '../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars
import InitData from '../Sim/InitializeData/InitData';
import ReplaceNativeGrimoire from './ReplaceGameElements/NativeGrimoire';
import ReplaceTooltips from './ReplaceGameElements/Tooltips';
import ReplaceNative from './ReplaceGameFunctions/ReplaceNative';
import { LastModCount } from './VariablesAndData';
import { LastModCount } from './VariablesAndData'; // eslint-disable-line no-unused-vars
import AddWrinklerAreaDetect from './WrinklerArea/AddDetectArea';
/**
* Initialization loop of Cookie Monster
*/
export default function InitializeCookieMonster() {
// Create global data object
window.CookieMonsterData = {};
InitData();
CacheStatsCookies();
InitCache();
// Stored to check if we need to re-initiliaze data
LastModCount = Object.keys(Game.mods).length; // eslint-disable-line no-unused-vars
LastModCount = Object.keys(Game.mods).length;
// Creating visual elements
CreateCssArea();
@@ -54,7 +57,7 @@ export default function InitializeCookieMonster() {
Game.CalculateGains();
LoadConfig();
CMLastAscendState = Game.OnAscend; // eslint-disable-line no-unused-vars
CMLastAscendState = Game.OnAscend;
if (Game.prefs.popups)
Game.Popup(`Cookie Monster version ${VersionMajor}.${VersionMinor} loaded!`);

View File

@@ -42,8 +42,7 @@ export default function CMLoopHook() {
// CM.Sim.DoSims is set whenever CPS has changed
if (SimDoSims) {
AllAmountTillNextAchievement();
AllAmountTillNextAchievement(true);
CacheIncome();
CacheNoGoldSwitchCPS(); // Needed first

View File

@@ -3,7 +3,7 @@ import FormatTime from '../../Disp/BeautifyAndFormatting/FormatTime';
import CalculateGrimoireRefillTime from '../../Disp/HelperFunctions/CalculateGrimoireRefillTime';
import {
BackupGrimoireDraw,
BackupGrimoireLaunch,
BackupGrimoireLaunch, // eslint-disable-line no-unused-vars
BackupGrimoireLaunchMod,
HasReplaceNativeGrimoireDraw,
HasReplaceNativeGrimoireLaunch,
@@ -35,7 +35,7 @@ function ReplaceNativeGrimoireDraw() {
function ReplaceNativeGrimoireLaunch() {
if (!HasReplaceNativeGrimoireLaunch && Game.Objects['Wizard tower'].minigameLoaded) {
const { minigame } = Game.Objects['Wizard tower'];
BackupGrimoireLaunch = minigame.launch; // eslint-disable-line no-unused-vars
BackupGrimoireLaunch = minigame.launch;
BackupGrimoireLaunchMod = new Function( // eslint-disable-line no-new-func
`return ${minigame.launch
.toString()

View File

@@ -1,7 +1,7 @@
/** Functions related to replacing tooltips */
import { CreateTooltip } from '../../Disp/Tooltips/Tooltip';
import { LoadMinigames, TooltipBuildBackup, TooltipLumpBackup } from '../VariablesAndData';
import { LoadMinigames, TooltipBuildBackup, TooltipLumpBackup } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
import ReplaceNativeGrimoire from './NativeGrimoire';
import ReplaceTooltipGrimoire from './TooltipGrimoire';
@@ -27,7 +27,7 @@ function ReplaceTooltipBuild() {
*/
function ReplaceTooltipLump() {
if (Game.canLumps()) {
TooltipLumpBackup = l('lumps').onmouseover; // eslint-disable-line no-unused-vars
TooltipLumpBackup = l('lumps').onmouseover;
l('lumps').onmouseover = function () {
Game.tooltip.dynamic = 1;
Game.tooltip.draw(this, () => CreateTooltip('s', 'Lump'), 'this');

View File

@@ -7,13 +7,13 @@ import AddMenu from '../../Disp/MenuSections/AddMenus';
import UpdateTitle from '../../Disp/TabTitle/TabTitle';
import ReplaceAscendTooltip from '../../Disp/Tooltips/AscendButton';
import UpdateTooltipLocation from '../../Disp/Tooltips/PositionLocation';
import { CMSayTime, Title } from '../../Disp/VariablesAndData';
import { SimDoSims } from '../../Sim/VariablesAndData';
import { CMSayTime, Title } from '../../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars
import { SimDoSims } from '../../Sim/VariablesAndData'; // eslint-disable-line no-unused-vars
import ReplaceTooltipUpgrade from '../ReplaceGameElements/TooltipUpgrades';
import {
BackupFunctions,
CenturyDateAtBeginLoop,
CycliusDateAtBeginLoop,
CenturyDateAtBeginLoop, // eslint-disable-line no-unused-vars
CycliusDateAtBeginLoop, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
import FixMouseY from './FixMouse';
@@ -29,9 +29,9 @@ export default function ReplaceNative() {
BackupFunctions.CalculateGains = Game.CalculateGains;
Game.CalculateGains = function () {
BackupFunctions.CalculateGains();
SimDoSims = 1; // eslint-disable-line no-unused-vars
CycliusDateAtBeginLoop = Date.now(); // eslint-disable-line no-unused-vars
CenturyDateAtBeginLoop = Date.now(); // eslint-disable-line no-unused-vars
SimDoSims = 1;
CycliusDateAtBeginLoop = Date.now();
CenturyDateAtBeginLoop = Date.now();
};
BackupFunctions.tooltip = {};

View File

@@ -1,4 +1,4 @@
import { TooltipWrinklerArea, TooltipWrinklerBeingShown } from '../../Disp/VariablesAndData';
import { TooltipWrinklerArea, TooltipWrinklerBeingShown } from '../../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This function creates .onmouseover/out events that determine if the mouse is hovering-over a Wrinkler
@@ -9,7 +9,7 @@ export default function AddWrinklerAreaDetect() {
TooltipWrinklerArea = 1;
};
l('backgroundLeftCanvas').onmouseout = function () {
TooltipWrinklerArea = 0; // eslint-disable-line no-unused-vars
TooltipWrinklerArea = 0;
Game.tooltip.hide();
Object.keys(Game.wrinklers).forEach((i) => {
TooltipWrinklerBeingShown[i] = 0;

View File

@@ -10,8 +10,8 @@ import SimWin from '../SimulationData/SimWin';
import {
SimAchievementsOwned,
SimCookiesPs,
SimCookiesPsRaw,
SimEffs,
SimCookiesPsRaw, // eslint-disable-line no-unused-vars
SimEffs, // eslint-disable-line no-unused-vars
SimHeavenlyPower,
SimObjects,
SimPrestige,
@@ -38,7 +38,7 @@ export default function CalculateGains() {
});
}
});
SimEffs = effs; // eslint-disable-line no-unused-vars
SimEffs = effs;
if (Game.ascensionMode !== 1)
mult += parseFloat(SimPrestige) * 0.01 * SimHeavenlyPower * SimGetHeavenlyMultiplier();
@@ -189,7 +189,7 @@ export default function CalculateGains() {
if (rawCookiesPs >= Game.CpsAchievements[i].threshold) SimWin(Game.CpsAchievements[i].name);
});
SimCookiesPsRaw = rawCookiesPs; // eslint-disable-line no-unused-vars
SimCookiesPsRaw = rawCookiesPs;
const { n } = Game.shimmerTypes.golden;
const auraMult = SimAuraMult("Dragon's Fortune");

View File

@@ -6,18 +6,18 @@ import InitialBuildingData from '../InitializeData/InitialBuildingData';
import InitUpgrade from '../InitializeData/InitUpgrade';
import {
SimAchievements,
SimAchievementsOwned,
SimDragonAura,
SimDragonAura2,
SimGod1,
SimGod2,
SimGod3,
SimHeavenlyPower,
SimAchievementsOwned, // eslint-disable-line no-unused-vars
SimDragonAura, // eslint-disable-line no-unused-vars
SimDragonAura2, // eslint-disable-line no-unused-vars
SimGod1, // eslint-disable-line no-unused-vars
SimGod2, // eslint-disable-line no-unused-vars
SimGod3, // eslint-disable-line no-unused-vars
SimHeavenlyPower, // eslint-disable-line no-unused-vars
SimObjects,
SimPledges,
SimPrestige,
SimPledges, // eslint-disable-line no-unused-vars
SimPrestige, // eslint-disable-line no-unused-vars
SimUpgrades,
SimUpgradesOwned,
SimUpgradesOwned, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
/**
@@ -26,11 +26,11 @@ import {
*/
export default function CopyData() {
// Other variables
SimUpgradesOwned = Game.UpgradesOwned; // eslint-disable-line no-unused-vars
SimPledges = Game.pledges; // eslint-disable-line no-unused-vars
SimAchievementsOwned = Game.AchievementsOwned; // eslint-disable-line no-unused-vars
SimHeavenlyPower = Game.heavenlyPower; // eslint-disable-line no-unused-vars
SimPrestige = Game.prestige; // eslint-disable-line no-unused-vars
SimUpgradesOwned = Game.UpgradesOwned;
SimPledges = Game.pledges;
SimAchievementsOwned = Game.AchievementsOwned;
SimHeavenlyPower = Game.heavenlyPower;
SimPrestige = Game.prestige;
// Buildings
Object.keys(Game.Objects).forEach((i) => {
@@ -49,9 +49,9 @@ export default function CopyData() {
you.free = me.free;
if (me.minigameLoaded) {
if (me.name === 'Temple') {
SimGod1 = me.minigame.slot[0]; // eslint-disable-line no-unused-vars
SimGod2 = me.minigame.slot[1]; // eslint-disable-line no-unused-vars
SimGod3 = me.minigame.slot[2]; // eslint-disable-line no-unused-vars
SimGod1 = me.minigame.slot[0];
SimGod2 = me.minigame.slot[1];
SimGod3 = me.minigame.slot[2];
}
you.minigameLoaded = me.minigameLoaded;
you.minigame = me.minigame;
@@ -85,6 +85,6 @@ export default function CopyData() {
// Auras
CacheDragonAuras();
SimDragonAura = CacheDragonAura; // eslint-disable-line no-unused-vars
SimDragonAura2 = CacheDragonAura2; // eslint-disable-line no-unused-vars
SimDragonAura = CacheDragonAura;
SimDragonAura2 = CacheDragonAura2;
}

View File

@@ -1,4 +1,4 @@
import { SimAchievements, SimAchievementsOwned } from '../VariablesAndData';
import { SimAchievements, SimAchievementsOwned } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This function "wins" an achievement in the current sim data
@@ -10,7 +10,7 @@ export default function SimWin(what) {
if (SimAchievements[what]) {
if (SimAchievements[what].won === 0) {
SimAchievements[what].won = 1;
if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned += 1; // eslint-disable-line no-unused-vars
if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned += 1;
}
}
}

View File

@@ -4,7 +4,7 @@ import CheckOtherAchiev from '../Calculations/CheckOtherAchiev';
import CopyData from '../SimulationData/CopyData';
import {
SimAchievementsOwned,
SimBuildingsOwned,
SimBuildingsOwned, // eslint-disable-line no-unused-vars
SimCookiesPs,
SimDragonAura,
SimDragonAura2,
@@ -32,7 +32,7 @@ export default function CalculateChangeAura(aura) {
if (Game.ObjectsById[i].amount > 0) {
const highestBuilding = SimObjects[Game.ObjectsById[i].name].name;
SimObjects[highestBuilding].amount -= 1;
SimBuildingsOwned -= 1; // eslint-disable-line no-unused-vars
SimBuildingsOwned -= 1;
price =
SimObjects[highestBuilding].basePrice *
Game.priceIncrease **

View File

@@ -12,7 +12,7 @@ import {
SimObjects,
SimPledges,
SimUpgrades,
SimUpgradesOwned,
SimUpgradesOwned, // eslint-disable-line no-unused-vars
} from '../VariablesAndData';
/**
@@ -122,7 +122,7 @@ export default function BuyUpgradesBonusIncome(upgrade) {
} else {
SimUpgrades[upgrade].bought = (SimUpgrades[upgrade].bought + 1) % 2;
}
if (Game.CountsAsUpgradeOwned(Game.Upgrades[upgrade].pool)) SimUpgradesOwned += 1; // eslint-disable-line no-unused-vars
if (Game.CountsAsUpgradeOwned(Game.Upgrades[upgrade].pool)) SimUpgradesOwned += 1;
if (upgrade === 'Elder Pledge') {
SimPledges += 1;

View File

@@ -1,7 +1,7 @@
import CalculateGains from '../Calculations/CalculateGains';
import CheckOtherAchiev from '../Calculations/CheckOtherAchiev';
import CopyData from '../SimulationData/CopyData';
import { SimAchievementsOwned, SimCookiesPs, SimGod1, SimGod2, SimGod3 } from '../VariablesAndData';
import { SimAchievementsOwned, SimCookiesPs, SimGod1, SimGod2, SimGod3 } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This functions calculates the cps and cost of changing a Dragon Aura

View File

@@ -3,7 +3,7 @@ import CalculateGains from '../Calculations/CalculateGains';
import CheckOtherAchiev from '../Calculations/CheckOtherAchiev';
import CopyData from '../SimulationData/CopyData';
import SimWin from '../SimulationData/SimWin';
import { SimAchievementsOwned, SimCookiesPs, SimPrestige, SimUpgrades } from '../VariablesAndData';
import { SimAchievementsOwned, SimCookiesPs, SimPrestige, SimUpgrades } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
/**
* This function calculates the cookies per click difference betwene current and after a ascension
@@ -76,7 +76,7 @@ export default function ResetBonus(newHeavenlyChips) {
const ResetCPS = SimCookiesPs - curCPS;
// Reset Pretige level after calculation as it is used in CM.Sim.CalculateGains() so can't be local
SimPrestige = Game.prestige; // eslint-disable-line no-unused-vars
SimPrestige = Game.prestige;
return ResetCPS;
}

View File

@@ -1,5 +1,5 @@
import CopyData from '../SimulationData/CopyData';
import { SimBuildingsOwned, SimDragonAura, SimDragonAura2, SimObjects } from '../VariablesAndData';
import { SimBuildingsOwned, SimDragonAura, SimDragonAura2, SimObjects } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
import BuildingSell from './SellBuilding';
/**
@@ -32,7 +32,7 @@ export default function SellBuildingsForChoEgg() {
}
});
SimObjects[highestBuilding].amount -= 1;
SimBuildingsOwned -= 1; // eslint-disable-line no-unused-vars
SimBuildingsOwned -= 1;
}
// Get money made by selling all remaining buildings