Compare commits
133 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cff2928535 | ||
|
|
5fec38625f | ||
|
|
1d325a253c | ||
|
|
33caf8838c | ||
|
|
2708903e92 | ||
|
|
6b346e0272 | ||
|
|
d6a3209c43 | ||
|
|
dfd0d790bc | ||
|
|
f228365978 | ||
|
|
e7536d4bd4 | ||
|
|
9a6086d823 | ||
|
|
527de03493 | ||
|
|
52d52baf8e | ||
|
|
9c1bfbf80a | ||
|
|
d4043689a4 | ||
|
|
8cb0471694 | ||
|
|
ce7f0eb7e3 | ||
|
|
70df241c8f | ||
|
|
3ba2a31363 | ||
|
|
c4907e9582 | ||
|
|
1c1afb6880 | ||
|
|
1905f9a953 | ||
|
|
23eb28e29c | ||
|
|
38f430c930 | ||
|
|
035318c33f | ||
|
|
a620efe44a | ||
|
|
26b08c77ce | ||
|
|
3e53ba7c6d | ||
|
|
9252d10f23 | ||
|
|
0278162dce | ||
|
|
ee0ed81aba | ||
|
|
f69fb191d1 | ||
|
|
c0e93f316f | ||
|
|
058555b148 | ||
|
|
dd2c4e56b4 | ||
|
|
be569ee218 | ||
|
|
c0e27f3c52 | ||
|
|
d694e82b02 | ||
|
|
ca796c0b48 | ||
|
|
6c95e341f5 | ||
|
|
f84f6fc348 | ||
|
|
be245da05f | ||
|
|
977c25e77a | ||
|
|
6ab791d762 | ||
|
|
962a709489 | ||
|
|
4fb58719d3 | ||
|
|
eaff9ef93d | ||
|
|
f403f89c20 | ||
|
|
100745946e | ||
|
|
18b151d7c0 | ||
|
|
2febfb4cbe | ||
|
|
73b9ebce7f | ||
|
|
39744d52b3 | ||
|
|
97624bd4da | ||
|
|
66549c5c96 | ||
|
|
df152fd302 | ||
|
|
ff31c45a4a | ||
|
|
9ba81afae1 | ||
|
|
66e906e878 | ||
|
|
865fc3b227 | ||
|
|
47ebed0925 | ||
|
|
734f3c38c2 | ||
|
|
fcbf1b2377 | ||
|
|
4c6dfbba69 | ||
|
|
3edcb0300b | ||
|
|
49e9711b7c | ||
|
|
a48ad37b7f | ||
|
|
ace1c9f6a9 | ||
|
|
fa942ff81d | ||
|
|
974b948583 | ||
|
|
e1e4327173 | ||
|
|
d054b55ddc | ||
|
|
6e0add10fb | ||
|
|
f431d2b6be | ||
|
|
68ad398b27 | ||
|
|
68d7295bbc | ||
|
|
2be4e2de57 | ||
|
|
ae6db8f330 | ||
|
|
5715274d1a | ||
|
|
74cdb613ca | ||
|
|
4eae4598a7 | ||
|
|
d9ef469980 | ||
|
|
5532e4d0ba | ||
|
|
e78703130e | ||
|
|
63240b01bc | ||
|
|
1a520b4d52 | ||
|
|
c7fd910a26 | ||
|
|
a3ad66a058 | ||
|
|
ee3aac59ce | ||
|
|
598a36493f | ||
|
|
507e168e24 | ||
|
|
35bd55f884 | ||
|
|
7202f0122d | ||
|
|
19edf86751 | ||
|
|
28857220f3 | ||
|
|
8d1d9697c1 | ||
|
|
6eb2b76d9f | ||
|
|
b674376433 | ||
|
|
9c24deb5aa | ||
|
|
88a6fc31a1 | ||
|
|
f791d47845 | ||
|
|
d6b0284da1 | ||
|
|
0f2bd0a10e | ||
|
|
41c28c21df | ||
|
|
67d3562659 | ||
|
|
770b238f70 | ||
|
|
305454b802 | ||
|
|
18ace33231 | ||
|
|
af803b4ead | ||
|
|
210f4d4aee | ||
|
|
5a045e7ac4 | ||
|
|
cc2a754425 | ||
|
|
e44e39bc2c | ||
|
|
48c1d12d86 | ||
|
|
195d7335f8 | ||
|
|
941ccfeb79 | ||
|
|
eb71fd9bd2 | ||
|
|
039155a607 | ||
|
|
9fe2e8b9b9 | ||
|
|
11b3a99314 | ||
|
|
932b03fd51 | ||
|
|
be8cf101e4 | ||
|
|
98e6cd1dfc | ||
|
|
c3adcf4d81 | ||
|
|
82bf56cee0 | ||
|
|
21c714008c | ||
|
|
d377702d09 | ||
|
|
32f0572ab3 | ||
|
|
89952f20c2 | ||
|
|
8bab891231 | ||
|
|
0f6cffc9bf | ||
|
|
0aebc35a8b | ||
|
|
ec87a8ad3c |
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal 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
16
.github/workflows/publish-dev.yml
vendored
Normal 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}'
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"recursive": true,
|
||||
"require": ["esm", "ts-node/register"],
|
||||
"reporter": "min"
|
||||
"require": ["esm", "ts-node/register"]
|
||||
}
|
||||
|
||||
35
README.md
35
README.md
@@ -1,23 +1,26 @@
|
||||

|
||||
[](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.
|
||||
The mod helps you to *whichever* degree you want, if you only need some help shortening long numbers, it does that. If you need to be accompanied by hand to pick the best buildings to buy, it does that, but **everything is an option**.
|
||||
|
||||
### Current version
|
||||
The `gh-pages` branch hosts the latest version intended for general users. All development and pull requests should target the `dev` branch.
|
||||
The `master` branch hosts the latest production version intended for general users.
|
||||
All development and pull requests should target the `dev` branch.
|
||||
Github Pages is hosted from the `gh-pages` branch
|
||||
|
||||
### What it does
|
||||
|
||||
At its core, Cookie Monster computes an index for both buildings and upgrades: the **Payback Period (PP)**. This indicates how much a building is worth by using the following formula:
|
||||
At its core, Cookie Monster computes an index for both buildings and upgrades: the **Payback Period (PP)**. CM will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, CM will know and highlight that building's value. CM uses the following formula to calculate the PP:
|
||||
|
||||
```
|
||||
max(cost - cookies in bank, 0)/cps + cost/Δ cps
|
||||
```
|
||||
|
||||
Cookie Monster also indicates the time left before being able to buy an upgrade or building, and takes it into consideration. It will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, it will know and highlight that building's value.
|
||||
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!
|
||||
|
||||
This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value. It 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.
|
||||
Cookie Monster uses the following standard colours:
|
||||
<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
|
||||
@@ -27,6 +30,8 @@ Cookie Monster uses the following standard colours:
|
||||
* 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
|
||||
@@ -37,7 +42,7 @@ Copy this code and save it as a bookmark. Paste it in the URL section. To activa
|
||||
|
||||
```javascript
|
||||
javascript: (function () {
|
||||
Game.LoadMod('https://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
||||
Game.LoadMod('https://cookiemonsterteam.github.io/CookieMonster/dist/CookieMonster.js');
|
||||
}());
|
||||
```
|
||||
|
||||
@@ -51,24 +56,30 @@ If you'd rather use the addon as a [userscript](https://en.wikipedia.org/wiki/Us
|
||||
|
||||
## Bugs and suggestions
|
||||
|
||||
Any bug or suggestion should be **opened as an issue** [in the repository](https://github.com/Aktanusa/CookieMonster/issues) for easier tracking. This allows us to close issues once they're fixed.
|
||||
Any bug or suggestion should be **opened as an issue** [in the repository](https://github.com/CookieMonsterTeam/CookieMonster/issues) for easier tracking. This allows us to close issues once they're fixed.
|
||||
|
||||
Before submitting a bug, make sure to give a shot at the latest version of the addon on the `dev` branch. This version can be tested by copying the `CookieMonster.js` file of the dev branch into your console. If the bug is still here, you can submit an issue for it. Please do so by using the bug report template.
|
||||
Before submitting a bug, make sure to give a shot at the latest version of the addon on the `dev` branch. This version can be tested by copying the `CookieMonsterDev.js` file of the dev branch into your console. You can also load the dev-version by using `https://cookiemonsterteam.github.io/CookieMonster/dist/CookieMonsterDev.js` to load the mod. If the bug is still here, you can submit an issue for it. Please do so by using the bug report template.
|
||||
|
||||
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`.
|
||||
|
||||
Please also remember to run `npm run build` after saving all your changes to build the final `CookieMonster.js` file.
|
||||
Please also remember to run `npm run build` after saving all your changes to build the final `CookieMonsterDev.js` file.
|
||||
|
||||
Before pushing a new version to master and Github pages copy the `Dev` files into the normal files.
|
||||
|
||||
## Contributors
|
||||
|
||||
* **[Raving_Kumquat](https://cookieclicker.wikia.com/wiki/User:Raving_Kumquat)**: Original author
|
||||
* **[Maxime Fabre](https://github.com/Anahkiasen)**: Previous maintainer
|
||||
* **[Alderi Tokori](http://forum.dashnet.org/profile/Alderi)**: ROI calculations (unused now)
|
||||
* **[Alhifar](https://github.com/Alhifar)**: Missed Golden Cookie Stat
|
||||
* **[BlackenedGem](https://github.com/BlackenedGem)**: Golden/Wrath Cookie Favicons
|
||||
* **[Sandworm](https://github.com/svschouw)**: Modified PP calculation
|
||||
* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer
|
||||
|
||||
3
dist/CookieMonster.js
vendored
3
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
2445
package-lock.json
generated
2445
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
@@ -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.19",
|
||||
"@types/mocha": "^8.2.2",
|
||||
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
||||
"@typescript-eslint/parser": "^4.21.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.27.0",
|
||||
"@typescript-eslint/parser": "^4.27.0",
|
||||
"chai": "^4.3.4",
|
||||
"eslint": "^7.23.0",
|
||||
"eslint": "^7.29.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.1",
|
||||
"ts-loader": "^9.2.3",
|
||||
"ts-node": "^10.0.0",
|
||||
"typescript": "^4.3.4",
|
||||
"webpack": "^5.39.1",
|
||||
"webpack-cli": "^4.7.2"
|
||||
},
|
||||
"ccrepo": {
|
||||
"icon": [
|
||||
|
||||
@@ -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]);
|
||||
}
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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) *
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)}`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,11 +3,25 @@ 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) {
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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 = [];
|
||||
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/** Data related directly to Cookie Monster */
|
||||
|
||||
export const VersionMajor = '2.031';
|
||||
export const VersionMinor = '8';
|
||||
export const VersionMinor = '9';
|
||||
|
||||
/** Information about Cookie Monster to be displayed in the info section */
|
||||
export const ModDescription = `<div class="listing">
|
||||
@@ -15,17 +15,18 @@ export const ModDescription = `<div class="listing">
|
||||
|
||||
/** Latest releasenotes of Cookie Monster to be displayed in the info section */
|
||||
export const LatestReleaseNotes = `<div class="listing">
|
||||
<b>We have moved Cookie Monster to a new location!</b></br>
|
||||
Please update the link you are using to load Cookie Monster to https://cookiemonsterteam.github.io/CookieMonster/dist/CookieMonster.js and let everybody know this is the new place to find Cookie Monster!</br>
|
||||
These are the release notes for the latest update (v 2.031.8).</br>
|
||||
</br>
|
||||
This update implements the following functions:</br>
|
||||
- The tooltip of buildings now shows how many buildings need to be bought before a new achievement is reached and the cost and PP of this</br>
|
||||
- New setting to force the upgrades sections to always show all available upgrades, stopping them from collapsing and expanding</br>
|
||||
- For developers: we now expose some data calculated by Cookie Monster to the global scope. You can access it through the CookieMonsterData object</br>
|
||||
- The column with the most optimal building now has a green coloured indicator whenever colour coding is turned on</br>
|
||||
- The current season in the seasons statistics section is now displayed with green text for easier identification</br>
|
||||
- New option to show a timer bar that counts down till next autosave</br>
|
||||
- New option to sort buildings based on the "cost till next achievement"</br>
|
||||
- Added extra information about achievements in statistics page</br>
|
||||
</br>
|
||||
This update fixes the following bugs:</br>
|
||||
- Settings menu now correctly updates after changing a setting</br>
|
||||
- Fixed incorrect calculation of dates in rare cases</br>
|
||||
- Remove golden cookie timers when you ascend</br>
|
||||
- Fixed a bug where ignoring certain buildings in rare cases did not create a "most optimal building"</br>
|
||||
- Fixed some issues related to "left till achievement"</br>
|
||||
- Fixed some cases where upgrades and buildings were not correctly sorted</br>
|
||||
- Fixed the tooltip of "Pop all normal wrinklers" displaying an incorrect reward when Shiny's are present</br>
|
||||
</div>
|
||||
`;
|
||||
|
||||
@@ -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',
|
||||
@@ -301,8 +308,9 @@ const Config = {
|
||||
'Sort buildings: default',
|
||||
'Sort buildings: PP of x1 purchase',
|
||||
'Sort buildings: PP of selected bulk mode',
|
||||
'Sort buildings: price until next achievement',
|
||||
],
|
||||
'Sort the display of buildings in either default order or by PP',
|
||||
'Sort the display of buildings in default order, by PP, or until next achievement',
|
||||
false,
|
||||
() => {
|
||||
UpdateBuildings();
|
||||
@@ -339,7 +347,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(
|
||||
|
||||
@@ -31,6 +31,7 @@ const ConfigDefault: {
|
||||
TimerBar: 1,
|
||||
TimerBarPos: 0,
|
||||
TimerBarOverlay: 2,
|
||||
AutosaveTimerBar: 0,
|
||||
UpBarColour: 1,
|
||||
UpgradeBarFixedPos: 1,
|
||||
SortBuildings: 0,
|
||||
@@ -134,6 +135,7 @@ const ConfigDefault: {
|
||||
Prestige: 1,
|
||||
Wrink: 1,
|
||||
Sea: 1,
|
||||
Achievs: 1,
|
||||
Misc: 1,
|
||||
InfoTab: 1,
|
||||
},
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
import { CacheObjects1, CacheObjects10, CacheObjects100 } from '../../Cache/VariablesAndData';
|
||||
import {
|
||||
CacheMinPPBulk,
|
||||
CacheObjects1,
|
||||
CacheObjects10,
|
||||
CacheObjects100,
|
||||
CacheObjectsNextAchievement,
|
||||
} from '../../Cache/VariablesAndData';
|
||||
import { CMOptions } from '../../Config/VariablesAndData';
|
||||
import BuildingSell from '../../Sim/SimulationEvents/SellBuilding';
|
||||
import Beautify from '../BeautifyAndFormatting/Beautify';
|
||||
@@ -24,11 +30,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');
|
||||
@@ -52,62 +64,69 @@ export default function UpdateBuildings() {
|
||||
});
|
||||
}
|
||||
|
||||
// Build array of pointers, sort by pp, use array index (+2) as the grid row number
|
||||
// (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options)
|
||||
// This regulates sorting of buildings
|
||||
if (Game.buyMode === 1 && CMOptions.SortBuildings) {
|
||||
// Build array of pointers and sort according to the user's configured sort option.
|
||||
// This regulates sorting of buildings.
|
||||
let arr;
|
||||
if (CMOptions.SortBuildings === 1) {
|
||||
arr = Object.keys(CacheObjects1).map((k) => {
|
||||
const o = CacheObjects1[k];
|
||||
if (Game.buyMode !== 1 || !CMOptions.SortBuildings) {
|
||||
arr = Object.keys(CacheObjects1).map(k => {
|
||||
const o = {};
|
||||
o.name = k;
|
||||
o.id = Game.Objects[k].id;
|
||||
return o;
|
||||
});
|
||||
|
||||
// Sort using default order.
|
||||
arr.sort((a, b) => a.id - b.id);
|
||||
} else if (CMOptions.SortBuildings === 1) {
|
||||
arr = Object.keys(CacheObjects1).map(k => {
|
||||
const o = {};
|
||||
o.name = k;
|
||||
o.pp = CacheObjects1[k].pp;
|
||||
o.color = CacheObjects1[k].color;
|
||||
return o;
|
||||
});
|
||||
// Sort by pp colour group, then by pp.
|
||||
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,
|
||||
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
|
||||
? a.pp - b.pp
|
||||
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
|
||||
);
|
||||
} 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;
|
||||
});
|
||||
|
||||
// Sort by pp colour group, then by pp.
|
||||
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,
|
||||
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
|
||||
? a.pp - b.pp
|
||||
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
|
||||
);
|
||||
} else if (CMOptions.SortBuildings === 3) {
|
||||
arr = Object.keys(CacheObjectsNextAchievement).map(k => {
|
||||
const o = {};
|
||||
o.name = k;
|
||||
o.id = Game.Objects[k].id;
|
||||
o.amountUntilNext = CacheObjectsNextAchievement[k].AmountNeeded;
|
||||
o.priceUntilNext = CacheObjectsNextAchievement[k].price;
|
||||
return o;
|
||||
});
|
||||
// First, sort using default order.
|
||||
arr.sort((a, b) => a.id - b.id);
|
||||
// Sort by price until next achievement.
|
||||
// Buildings that aren't within 100 of an achievement are placed at the end, still in
|
||||
// default order relative to each other because sort() is guaranteed stable.
|
||||
arr.sort((a, b) =>
|
||||
(a.amountUntilNext !== 101 ? a.priceUntilNext : Infinity) -
|
||||
(b.amountUntilNext !== 101 ? b.priceUntilNext : Infinity)
|
||||
);
|
||||
}
|
||||
|
||||
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];
|
||||
o.name = k;
|
||||
o.id = Game.Objects[k].id;
|
||||
return o;
|
||||
});
|
||||
arr.sort((a, b) => a.id - b.id);
|
||||
// Use array index (+2) as the grid row number.
|
||||
// (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options)
|
||||
for (let x = 0; x < arr.length; x++) {
|
||||
Game.Objects[arr[x].name].l.style.gridRow = `${x + 2}/${x + 2}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 = '';
|
||||
|
||||
@@ -18,7 +18,7 @@ export default function CreateWrinklerButtons() {
|
||||
};
|
||||
popAllA.onmouseover = function () {
|
||||
Game.tooltip.dynamic = 1;
|
||||
Game.tooltip.draw(this, () => CreateTooltip('wb', 'PopAll'), 'this');
|
||||
Game.tooltip.draw(this, () => CreateTooltip('wb', 'PopAllNormal'), 'this');
|
||||
Game.tooltip.wobble();
|
||||
};
|
||||
l('sectionLeftExtra').children[0].append(popAllA);
|
||||
|
||||
@@ -9,6 +9,7 @@ import { CMOptions } from '../../../Config/VariablesAndData';
|
||||
import {
|
||||
CacheAverageClicks,
|
||||
CacheAverageCookiesFromClicks,
|
||||
CacheObjectsNextAchievement,
|
||||
CacheWrinklersFattest,
|
||||
CacheWrinklersNormal,
|
||||
CacheWrinklersTotal,
|
||||
@@ -100,6 +101,22 @@ export default function AddMenuStats(title) {
|
||||
|
||||
stats.appendChild(CreateSections.SeasonSection());
|
||||
|
||||
stats.appendChild(CreateElements.StatsHeader('Achievements', 'Achievs'));
|
||||
if (CMOptions.Header.Achievs) {
|
||||
Object.keys(Game.Objects).forEach((i) => {
|
||||
const ObjectsTillNext = CacheObjectsNextAchievement[i];
|
||||
stats.appendChild(
|
||||
CreateElements.StatsListing(
|
||||
'basic',
|
||||
i,
|
||||
ObjectsTillNext.AmountNeeded < 101
|
||||
? document.createTextNode(`Next achievement in ${ObjectsTillNext.AmountNeeded}, price: ${Beautify(ObjectsTillNext.price)}`)
|
||||
: document.createTextNode('No new achievement for next 100 buildings'),
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
stats.appendChild(CreateElements.StatsHeader('Miscellaneous', 'Misc'));
|
||||
if (CMOptions.Header.Misc) {
|
||||
stats.appendChild(
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ import {
|
||||
TooltipBonusMouse,
|
||||
TooltipName,
|
||||
TooltipPrice,
|
||||
TooltipType,
|
||||
} from '../../VariablesAndData';
|
||||
import * as Create from '../CreateTooltip';
|
||||
|
||||
@@ -30,7 +29,7 @@ export default function Upgrade() {
|
||||
l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2);
|
||||
const increase = Math.round((TooltipBonusIncome / Game.cookiesPs) * 10000);
|
||||
// Don't display certain parts of tooltip if not applicable
|
||||
if (l('CMTooltipIncome').textContent === '0' && (TooltipType === 'b' || TooltipType === 'u')) {
|
||||
if (l('CMTooltipIncome').textContent === '0') {
|
||||
l('Bonus IncomeTitle').style.display = 'none';
|
||||
l('CMTooltipIncome').style.display = 'none';
|
||||
l('Payback PeriodTitle').style.display = 'none';
|
||||
@@ -45,6 +44,8 @@ export default function Upgrade() {
|
||||
}
|
||||
l('CMTooltipBorder').className =
|
||||
ColourTextPre + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color;
|
||||
}
|
||||
|
||||
// If clicking power upgrade
|
||||
if (TooltipBonusMouse) {
|
||||
l('CMTooltipCookiePerClick').textContent = Beautify(TooltipBonusMouse);
|
||||
@@ -52,9 +53,11 @@ export default function Upgrade() {
|
||||
l('CMTooltipCookiePerClick').previousSibling.style.display = 'block';
|
||||
}
|
||||
// If only a clicking power upgrade change PP to click-based period
|
||||
if (TooltipBonusIncome === 0 && TooltipBonusMouse) {
|
||||
if (!TooltipBonusIncome && TooltipBonusMouse) {
|
||||
l('CMTooltipPP').textContent = `${Beautify(TooltipPrice / TooltipBonusMouse)} Clicks`;
|
||||
l('CMTooltipPP').style.color = 'white';
|
||||
l('Payback PeriodTitle').style.display = 'block';
|
||||
l('CMTooltipPP').style.display = 'block';
|
||||
} else {
|
||||
if (CMOptions.PPDisplayTime)
|
||||
l('CMTooltipPP').textContent = FormatTime(
|
||||
@@ -68,7 +71,6 @@ export default function Upgrade() {
|
||||
l('CMTooltipPP').className =
|
||||
ColourTextPre + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color;
|
||||
}
|
||||
}
|
||||
const timeColour = GetTimeColour(
|
||||
(TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(),
|
||||
);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { CacheWrinklersFattest, CacheWrinklersTotal } from '../../../Cache/VariablesAndData';
|
||||
import { CacheWrinklersFattest, CacheWrinklersNormal } from '../../../Cache/VariablesAndData';
|
||||
import Beautify from '../../BeautifyAndFormatting/Beautify';
|
||||
import { TooltipName } from '../../VariablesAndData';
|
||||
import * as Create from '../CreateTooltip';
|
||||
@@ -13,8 +13,8 @@ export default function WrinklerButton() {
|
||||
|
||||
const WrinklerReward = document.createElement('div');
|
||||
WrinklerReward.id = 'CMWrinklerReward';
|
||||
if (TooltipName === 'PopAll') {
|
||||
WrinklerReward.textContent = Beautify(CacheWrinklersTotal);
|
||||
if (TooltipName === 'PopAllNormal') {
|
||||
WrinklerReward.textContent = Beautify(CacheWrinklersNormal);
|
||||
} else if (TooltipName === 'PopFattest') {
|
||||
WrinklerReward.textContent = Beautify(CacheWrinklersFattest[0]);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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!`);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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 = {};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 **
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user