Compare commits

...

55 Commits

Author SHA1 Message Date
Aktanusa
58e4b7d328 Accounted for Golden Switch in Title and GC bars, Chocolate Egg stats now accounts for aura, fixed buy/sell function to reflect the real price, not the display price 2016-03-05 10:19:12 -05:00
Aktanusa
be4587a905 Added tooltip information and building colors for bulk buying/selling and fixed a bug in Chocolate Egg calculation (it's still wrong, but will fix more in next commit) 2016-03-03 21:26:25 -05:00
Aktanusa
ddd52c9583 Changed the look of CM toggle settings to be like CC, minor code cleanup, added a missing calculation 2016-03-02 16:01:35 -05:00
Aktanusa
bb776eb477 GC calculations account for auras now, added more info on require cookies for Chains (Issue #37), and did some stats cleanup 2016-02-28 23:23:41 -05:00
Aktanusa
c5ddda54c5 Added back prestige statistics (Issue #46) 2016-02-27 23:11:50 -05:00
Aktanusa
cd09bd55fc Added colors for new golden cookie bars and minor cleanup 2016-02-27 19:12:31 -05:00
Aktanusa
c12fcf7344 Updated README to change dev link and add credit 2016-02-20 11:42:52 -05:00
Aktanusa
8bddb28d1d Rename Favicon for Golden Cookies 2016-02-19 23:24:58 -05:00
Aktanusa
3ed7a64344 Added Favicon change on Golden/Wrath Cookies (Issue #44 and #55) 2016-02-19 23:22:56 -05:00
Aktanusa
44447d71c3 Formatting fixes 2016-02-19 21:26:56 -05:00
Aktanusa
c03c1c44d7 Fixed minor bug in load config with checking colors preferences 2016-02-19 20:57:00 -05:00
Aktanusa
67ca329306 Added additional file for previous commit 2016-02-19 20:47:57 -05:00
Aktanusa
ca43950c0c Added favicon for Golden and Wrath Cookies (thanks to @BlackenedGem for the files) for Issue #44 and #55 and fixed issue with the Options menu (thanks to a random person on the Wikia) 2016-02-19 20:47:27 -05:00
Aktanusa
ab721fef7c Forgot one file for previous commit 2016-02-14 13:05:07 -05:00
Aktanusa
e034ee1f44 Added Missing Golden Cookies stat (Issue #41) with code from Alhifar (Pull #53) 2016-02-14 13:04:30 -05:00
Aktanusa
9070a50355 Merge branch 'Alhifar-master' into dev 2016-02-14 12:28:55 -05:00
Aktanusa
440512ddc7 Version change to 2.3 2016-02-14 11:57:56 -05:00
Alhifar
4dd498cc4d Add missed GC clicks stat with preference, create a section header for misc stats 2016-02-14 09:55:39 -05:00
Aktanusa
348c47e1dc Hopefully to fix the crashing (part 3) 2016-02-09 13:46:50 -05:00
Aktanusa
6e09c8dafb Hopefully to fix the crashing (part 2) 2016-02-09 13:45:42 -05:00
Aktanusa
f1a79cbaa3 Hopefully to fix the crashing 2016-02-09 13:04:35 -05:00
Aktanusa
5640cbb9c8 Version change to 2.2 (forgot to do this first so previous commit is under this version) 2016-02-09 11:56:37 -05:00
Aktanusa
6917e3139a Fixed bug where Caut/Warn Tooltip calculation with bonus CPS didn't use the new Lucky reward way 2016-02-09 11:55:28 -05:00
Aktanusa
f120f047dc Removed HC stats as it is useless now (pending cleaning) 2016-02-08 20:17:08 -05:00
Aktanusa
13a49e3e39 Updated README to reflect the same thing as the Wikia 2016-02-08 19:27:29 -05:00
Aktanusa
762a6919e7 Updated README to reflect the same thing as the Wikia 2016-02-08 19:25:32 -05:00
Aktanusa
77ba8c4e84 Version change and merge from beta branch (Issue #50) 2016-02-08 19:06:11 -05:00
Aktanusa
914a5e2ff3 Version change to 1.909.1 2016-02-08 09:52:58 -05:00
Aktanusa
6bced494f8 Version change to 1.907.1 and fixed it to work with 1.907 beta (mostly) 2016-02-06 12:34:17 -05:00
Aktanusa
ee35136130 Version change to 1.906 2016-02-06 11:24:39 -05:00
Aktanusa
85ed508010 Fix Current Chain reward being calculated wrong, tooltips being buggy, and needing to click a little above santa/dragon icon 2016-02-05 23:37:15 -05:00
Aktanusa
0ea31f6e94 Fixed bug with Current Lucky reward was calculated wrong 2016-02-05 00:42:04 -05:00
Aktanusa
5ceffa9d63 Fix to work with 1.903 beta (mostly) 2016-02-04 23:49:51 -05:00
Aktanusa
07b67be07e Version change to 1.903.1 2016-02-04 18:24:54 -05:00
Aktanusa
5aa21209b9 Used a better fix on missing boxes on upgrades 2015-12-28 11:09:54 -05:00
Aktanusa
14c1afa30d Fixed rare but bad tooltip bug and fixed some toggle upgrades graphical glitches 2015-12-27 21:44:50 -05:00
Aktanusa
f36869d528 Fixed tooltip bugs, Upgrades display bug, and timer bar bug 2015-12-27 17:07:40 -05:00
Aktanusa
da3200612b Fixed bar display glitches related to ascend changes 2015-12-26 21:27:41 -05:00
Aktanusa
d870823c07 Fix to work with 1.9 beta mostly 2015-12-26 16:38:36 -05:00
Aktanusa
b134e3b45c Version change to 1.9.1 (part 2) 2015-12-21 20:53:00 -05:00
Aktanusa
07944e366a Version change to 1.9.1 2015-12-21 20:46:55 -05:00
Aktanusa
dbcec54b3d Added same Issue #43 fix to other scales 2015-11-05 22:51:29 -05:00
Aktanusa
f1ccbf8937 Fixed a bug with Game's Setting Scale not showing fractional numbers like the original (Issue #43) 2015-11-05 22:15:16 -05:00
Aktanusa
56903744d8 Added an indication in the title bar on the type of golden cookie spawned (Issue #39) and tiny cleanup of code 2015-05-27 22:03:33 -04:00
Aktanusa
2ff6ea0746 Finish version change to 1.0466.2 and updated README 2015-05-27 21:48:29 -04:00
Aktanusa
a251c5a906 Version change to 1.0466.2 2014-12-08 19:03:12 -05:00
Aktanusa
35ddafdca7 Merge branch 'master' into beta
Conflicts:
	CookieMonster.js
	src/Main.js
2014-10-31 20:25:47 -04:00
Aktanusa
0941e33c11 Merge branch 'master' into beta
Conflicts:
	CookieMonster.js
	src/Main.js
2014-09-29 22:48:53 -04:00
Aktanusa
da917ebc6b Merge branch 'master' into dev 2014-08-30 01:45:21 -04:00
Aktanusa
c34bcbfc3a Merge branch 'master' into dev
Conflicts:
	CookieMonster.js
	src/Disp.js
	src/Main.js
2014-08-30 01:31:40 -04:00
Aktanusa
af05f9907c Forgot to update compliled version (again) 2014-08-29 12:38:05 -04:00
Aktanusa
9a2d96d043 Made the color boxes on upgrades smaller 2014-08-29 12:36:45 -04:00
Aktanusa
28c5909e1f Fixed to work with beta 2014-08-26 21:39:17 -04:00
Aktanusa
1418c17ec9 Merge branch 'master' into dev
Conflicts:
	CookieMonster.js
	src/Main.js
2014-08-26 13:40:48 -04:00
Aktanusa
e877f05a06 Version change to the new version of Cookie Clicker in beta plus some preliminary fixes 2014-08-26 13:10:56 -04:00
9 changed files with 1368 additions and 782 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
# Cookie Monster # 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. **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.
This is a helper, and it is here to help you at *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**. This is a helper, and it is here to help you at *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**.
@@ -10,27 +10,27 @@ You can see the current version, and a full history of all versions and what the
## What it does ## What it does
At its core, Cookie Monster computes an index on both buildings and upgrades : At its core, Cookie Monster computes an index on both buildings and upgrades:
* **Base Cost per Income (BCI)** : Indicates how much a building is worth by comparing how much it costs to how much income gained * **Base Cost per Income (BCI)**: Indicates how much a building is worth by comparing how much it costs to how much income gained
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. 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.
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 : 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:
* Light Blue : (upgrades) This item has a better BCI than any building * Light Blue: (upgrades) This item has a better BCI than any building
* Green : This item has the best BCI * Green: This item has the best BCI
* Yellow : This item is not the best, but it is closer to best than it is to worst * Yellow: This item is not the best, but it is closer to best than it is to worst
* Orange : This item is not the worst, but it is closer to worst than it is to best * Orange: This item is not the worst, but it is closer to worst than it is to best
* Red : This item has the worst BCI * Red: This item has the worst BCI
* Purple : (upgrades) This item has a worse BCI than any building * Purple: (upgrades) This item has a worse BCI than any building
* Gray : (upgrades) This item has not been calculated and/or cannot be calculated due to no definitive worth. * Gray: (upgrades) This item has not been calculated and/or cannot be calculated due to no definitive worth.
Note : For this index, **lower is better**, meaning a building with a BCI of 1 is more interesting than one with a BCI of 3. Note: For this index, **lower is better**, meaning a building with a BCI of 1 is more interesting than one with a BCI of 3.
## What it doesn't do ## What it doesn't do
Most likely you'll find items in gray like Golden Cookie upgrades, clicking upgrades everything that doesn't earn you a direct bonus to your income will display as gray. This means the following upgrades are **not** taken into account by Cookie Monster : Most likely you'll find items in gray like Golden Cookie upgrades, clicking upgrades, season upgrades everything that doesn't earn you a direct bonus to your income will display as gray. This means the following upgrades are **not** taken into account by Cookie Monster:
* Plastic mouse * Plastic mouse
* Iron mouse * Iron mouse
@@ -60,6 +60,14 @@ javascript: (function () {
If (for some reason) the above doesn't work, trying pasting everything after the <code>javascript:</code> bit into your browser's console. If (for some reason) the above doesn't work, trying pasting everything after the <code>javascript:</code> bit into your browser's console.
For beta, use the following instead:
```javascript
javascript: (function () {
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonsterBeta.js');
}());
```
## Userscript ## Userscript
If you'd rather use the addon as a script via per example *Greasemonkey* or *Tampermonkey*, you can use the following script, which will automatically load *Cookie Monster* every time the original game loads. You may need to specify <code>http://orteil.dashnet.org/cookieclicker/</code> when asked for a *namespace* or *includes*. For how to add an userscript to your browser, refer to your browser/plugin's documentation as the method changes for each one. If you'd rather use the addon as a script via per example *Greasemonkey* or *Tampermonkey*, you can use the following script, which will automatically load *Cookie Monster* every time the original game loads. You may need to specify <code>http://orteil.dashnet.org/cookieclicker/</code> when asked for a *namespace* or *includes*. For how to add an userscript to your browser, refer to your browser/plugin's documentation as the method changes for each one.
@@ -82,6 +90,26 @@ javascript:(function() {
}, 1000); }, 1000);
}()); }());
``` ```
If you are using the beta, use this instead:
```javascript
// ==UserScript==
// @name Cookie Monster Beta
// @namespace Cookie
// @include http://orteil.dashnet.org/cookieclicker/beta/
// @version 1
// @grant none
// ==/UserScript==
javascript:(function() {
var checkReady = setInterval(function() {
if (typeof Game.ready !== 'undefined' && Game.ready) {
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonsterBeta.js');
clearInterval(checkReady);
}
}, 1000);
}());
```
# Bugs and suggestions # Bugs and suggestions
@@ -91,7 +119,7 @@ Before submitting a bug, make sure to give a shot at the latest version of the a
```javascript ```javascript
javascript: (function () { javascript: (function () {
Game.LoadMod('https://raw.githubusercontent.com/Aktanusa/CookieMonster/dev/CookieMonster.js'); Game.LoadMod('https://cdn.rawgit.com/Aktanusa/CookieMonster/dev/CookieMonster.js');
}()); }());
``` ```
@@ -101,7 +129,9 @@ All suggestions are welcome, even the smallest ones.
#Contributors #Contributors
* **[Raving_Kumquat](http://cookieclicker.wikia.com/wiki/User:Raving_Kumquat)** : Original author * **[Raving_Kumquat](http://cookieclicker.wikia.com/wiki/User:Raving_Kumquat)**: Original author
* **[Maxime Fabre](https://github.com/Anahkiasen)** : Previous maintainer * **[Maxime Fabre](https://github.com/Anahkiasen)**: Previous maintainer
* **Alderi Tokori** : ROI calculations (unused now) * **Alderi Tokori**: ROI calculations (unused now)
* **[Aktanusa](https://github.com/Aktanusa)** : Current maintainer * **[Alhifar](https://github.com/Alhifar)**: Missed Golden Cookie Stat
* **[BlackenedGem](https://github.com/BlackenedGem)**: Golden/Wrath Cookie Favicons
* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer

BIN
favicon/goldenCookie.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
favicon/wrathCookie.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -19,6 +19,9 @@ CM.Cache.RemakeIncome = function() {
// Simulate Building Buys for 10 amount // Simulate Building Buys for 10 amount
CM.Sim.BuyBuildings(10, 'Objects10'); CM.Sim.BuyBuildings(10, 'Objects10');
// Simulate Building Buys for 100 amount
CM.Sim.BuyBuildings(100, 'Objects100');
} }
CM.Cache.RemakeBuildingsBCI = function() { CM.Cache.RemakeBuildingsBCI = function() {
@@ -44,6 +47,7 @@ CM.Cache.RemakeBuildingsBCI = function() {
CM.Cache.RemakeUpgradeBCI = function() { CM.Cache.RemakeUpgradeBCI = function() {
for (var i in CM.Cache.Upgrades) { for (var i in CM.Cache.Upgrades) {
CM.Cache.Upgrades[i].bci = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus; CM.Cache.Upgrades[i].bci = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus;
if (isNaN(CM.Cache.Upgrades[i].bci)) CM.Cache.Upgrades[i].bci = 'Infinity';
var color = ''; var color = '';
if (CM.Cache.Upgrades[i].bci <= 0 || CM.Cache.Upgrades[i].bci == 'Infinity') color = CM.Disp.colorGray; if (CM.Cache.Upgrades[i].bci <= 0 || CM.Cache.Upgrades[i].bci == 'Infinity') color = CM.Disp.colorGray;
else if (CM.Cache.Upgrades[i].bci < CM.Disp.min) color = CM.Disp.colorBlue; else if (CM.Cache.Upgrades[i].bci < CM.Disp.min) color = CM.Disp.colorBlue;
@@ -56,19 +60,19 @@ CM.Cache.RemakeUpgradeBCI = function() {
} }
} }
CM.Cache.RemakeBuildings10BCI = function() { CM.Cache.RemakeBuildingsOtherBCI = function(amount, target) {
for (var i in CM.Cache.Objects10) { for (var i in CM.Cache[target]) {
CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, 10); CM.Cache[target][i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, amount);
CM.Cache.Objects10[i].bci = CM.Cache.Objects10[i].price / CM.Cache.Objects10[i].bonus; CM.Cache[target][i].bci = CM.Cache[target][i].price / CM.Cache[target][i].bonus;
var color = ''; var color = '';
if (CM.Cache.Objects10[i].bci <= 0 || CM.Cache.Objects10[i].bci == 'Infinity') color = CM.Disp.colorGray; if (CM.Cache[target][i].bci <= 0 || CM.Cache[target][i].bci == 'Infinity') color = CM.Disp.colorGray;
else if (CM.Cache.Objects10[i].bci < CM.Disp.min) color = CM.Disp.colorBlue; else if (CM.Cache[target][i].bci < CM.Disp.min) color = CM.Disp.colorBlue;
else if (CM.Cache.Objects10[i].bci == CM.Disp.min) color = CM.Disp.colorGreen; else if (CM.Cache[target][i].bci == CM.Disp.min) color = CM.Disp.colorGreen;
else if (CM.Cache.Objects10[i].bci == CM.Disp.max) color = CM.Disp.colorRed; else if (CM.Cache[target][i].bci == CM.Disp.max) color = CM.Disp.colorRed;
else if (CM.Cache.Objects10[i].bci > CM.Disp.max) color = CM.Disp.colorPurple; else if (CM.Cache[target][i].bci > CM.Disp.max) color = CM.Disp.colorPurple;
else if (CM.Cache.Objects10[i].bci > CM.Disp.mid) color = CM.Disp.colorOrange; else if (CM.Cache[target][i].bci > CM.Disp.mid) color = CM.Disp.colorOrange;
else color = CM.Disp.colorYellow; else color = CM.Disp.colorYellow;
CM.Cache.Objects10[i].color = color; CM.Cache[target][i].color = color;
} }
} }
@@ -80,17 +84,20 @@ CM.Cache.RemakeBCI = function() {
CM.Cache.RemakeUpgradeBCI(); CM.Cache.RemakeUpgradeBCI();
// Buildings for 10 amount // Buildings for 10 amount
CM.Cache.RemakeBuildings10BCI(); CM.Cache.RemakeBuildingsOtherBCI(10, 'Objects10');
// Buildings for 100 amount
CM.Cache.RemakeBuildingsOtherBCI(100, 'Objects100');
} }
CM.Cache.RemakeLucky = function() { CM.Cache.RemakeLucky = function() {
CM.Cache.Lucky = (Game.cookiesPs * 60 * 20) / 0.1; CM.Cache.Lucky = (Game.cookiesPs * 60 * 15) / 0.15;
if (Game.frenzy > 0) { if (Game.frenzy > 0) {
CM.Cache.Lucky /= Game.frenzyPower; CM.Cache.Lucky /= Game.frenzyPower;
} }
CM.Cache.LuckyReward = (CM.Cache.Lucky * 0.1) + 13; CM.Cache.LuckyReward = (CM.Cache.Lucky * 0.15) + 13;
CM.Cache.LuckyFrenzy = CM.Cache.Lucky * 7; CM.Cache.LuckyFrenzy = CM.Cache.Lucky * 7;
CM.Cache.LuckyRewardFrenzy = (CM.Cache.LuckyFrenzy * 0.1) + 13; CM.Cache.LuckyRewardFrenzy = (CM.Cache.LuckyFrenzy * 0.15) + 13;
} }
CM.Cache.MaxChainMoni = function(digit, maxPayout) { CM.Cache.MaxChainMoni = function(digit, maxPayout) {
@@ -106,7 +113,7 @@ CM.Cache.MaxChainMoni = function(digit, maxPayout) {
} }
CM.Cache.RemakeChain = function() { CM.Cache.RemakeChain = function() {
var maxPayout = Game.cookiesPs * 60 * 60 * 3; var maxPayout = Game.cookiesPs * 60 * 60 * 6;
if (Game.frenzy > 0) { if (Game.frenzy > 0) {
maxPayout /= Game.frenzyPower; maxPayout /= Game.frenzyPower;
} }
@@ -115,36 +122,34 @@ CM.Cache.RemakeChain = function() {
CM.Cache.ChainWrathReward = CM.Cache.MaxChainMoni(6, maxPayout); CM.Cache.ChainWrathReward = CM.Cache.MaxChainMoni(6, maxPayout);
var base = 0; if (maxPayout < CM.Cache.ChainReward) {
if (CM.Cache.ChainReward > CM.Cache.ChainWrathReward) {
base = CM.Cache.ChainReward;
}
else {
base = CM.Cache.ChainWrathReward;
}
var count = 1;
if (maxPayout < base) {
CM.Cache.Chain = 0; CM.Cache.Chain = 0;
} }
else { else {
CM.Cache.Chain = CM.Cache.NextNumber(base) / 0.25; CM.Cache.Chain = CM.Cache.NextNumber(CM.Cache.ChainReward) / 0.25;
}
if (maxPayout < CM.Cache.ChainWrathReward) {
CM.Cache.Chain = 0;
}
else {
CM.Cache.ChainWrath = CM.Cache.NextNumber(CM.Cache.ChainWrathReward) / 0.25;
} }
CM.Cache.ChainFrenzyReward = CM.Cache.MaxChainMoni(7, maxPayout * 7); CM.Cache.ChainFrenzyReward = CM.Cache.MaxChainMoni(7, maxPayout * 7);
CM.Cache.ChainFrenzyWrathReward = CM.Cache.MaxChainMoni(6, maxPayout * 7); CM.Cache.ChainFrenzyWrathReward = CM.Cache.MaxChainMoni(6, maxPayout * 7);
if (CM.Cache.ChainFrenzyReward > CM.Cache.ChainFrenzyWrathReward) { if ((maxPayout * 7) < CM.Cache.ChainFrenzyReward) {
base = CM.Cache.ChainFrenzyReward;
}
else {
base = CM.Cache.ChainFrenzyWrathReward;
}
if ((maxPayout * 7) < base) {
CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzy = 0;
} }
else { else {
CM.Cache.ChainFrenzy = CM.Cache.NextNumber(base) / 0.25; CM.Cache.ChainFrenzy = CM.Cache.NextNumber(CM.Cache.ChainFrenzyReward) / 0.25;
}
if ((maxPayout * 7) < CM.Cache.ChainFrenzyWrathReward) {
CM.Cache.ChainFrenzy = 0;
}
else {
CM.Cache.ChainFrenzyWrath = CM.Cache.NextNumber(CM.Cache.ChainFrenzyWrathReward) / 0.25;
} }
} }
@@ -155,13 +160,33 @@ CM.Cache.RemakeSeaSpec = function() {
} }
} }
CM.Cache.RemakeSellAllTotal = function() { CM.Cache.RemakeSellForChoEgg = function() {
var sellTotal = 0; if (Game.hasAura('Earth Shatterer') || Game.dragonLevel < 9) {
for (var i in Game.Objects) { var sellTotal = 0;
var me = Game.Objects[i]; for (var i in Game.Objects) {
sellTotal += CM.Sim.BuildingSell(me.basePrice, me.amount, me.amount); var me = Game.Objects[i];
sellTotal += CM.Sim.BuildingSell(me.basePrice, me.amount, me.free, me.amount, 0);
}
} }
CM.Cache.SellAllTotal = sellTotal; else {
var highestBuilding = '';
for (var i in Game.Objects) {
if (Game.Objects[i].amount > 0) highestBuilding = i;
}
var sellTotal = 0;
for (var i in Game.Objects) {
var me = Game.Objects[i];
var amount = 0;
if (i == highestBuilding) {
amount = me.amount - 1;
}
else {
amount = me.amount;
}
sellTotal += CM.Sim.BuildingSell(me.basePrice, amount, me.free, amount, 1);
}
}
CM.Cache.SellForChoEgg = sellTotal;
} }
CM.Cache.Lucky = 0; CM.Cache.Lucky = 0;
@@ -170,10 +195,12 @@ CM.Cache.LuckyFrenzy = 0;
CM.Cache.LuckyRewardFrenzy = 0; CM.Cache.LuckyRewardFrenzy = 0;
CM.Cache.SeaSpec = 0; CM.Cache.SeaSpec = 0;
CM.Cache.Chain = 0; CM.Cache.Chain = 0;
CM.Cache.ChainWrath = 0;
CM.Cache.ChainReward = 0; CM.Cache.ChainReward = 0;
CM.Cache.ChainWrathReward = 0; CM.Cache.ChainWrathReward = 0;
CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzy = 0;
CM.Cache.ChainFrenzyWrath = 0;
CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyReward = 0;
CM.Cache.ChainFrenzyWrathReward = 0; CM.Cache.ChainFrenzyWrathReward = 0;
CM.Cache.SellAllTotal = 0; CM.Cache.SellForChoEgg = 0;

View File

@@ -40,7 +40,7 @@ CM.LoadConfig = function() {
} }
} }
else { // Colors else { // Colors
for (var j in CM.ConfigDefault.StatsPref) { for (var j in CM.ConfigDefault.Colors) {
if (typeof CM.Config[i][j] === 'undefined' || typeof CM.Config[i][j] != 'string') { if (typeof CM.Config[i][j] === 'undefined' || typeof CM.Config[i][j] != 'string') {
mod = true; mod = true;
CM.Config[i][j] = CM.ConfigDefault[i][j]; CM.Config[i][j] = CM.ConfigDefault[i][j];
@@ -68,6 +68,18 @@ CM.RestoreDefault = function() {
Game.UpdateMenu(); Game.UpdateMenu();
} }
CM.ToggleConfig = function(config) {
CM.ToggleConfigUp(config);
if (CM.ConfigData[config].toggle) {
if (CM.Config[config] == 0) {
l(CM.ConfigPrefix + config).className = 'option off';
}
else {
l(CM.ConfigPrefix + config).className = 'option';
}
}
}
CM.ToggleConfigUp = function(config) { CM.ToggleConfigUp = function(config) {
CM.Config[config]++; CM.Config[config]++;
if (CM.Config[config] == CM.ConfigData[config].label.length) { if (CM.Config[config] == CM.ConfigData[config].label.length) {
@@ -102,30 +114,31 @@ CM.ToggleStatsConfig = function(config) {
CM.SaveConfig(CM.Config); CM.SaveConfig(CM.Config);
} }
CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', func: function() {CM.Disp.ToggleBotBar();}}; CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', toggle: true, func: function() {CM.Disp.ToggleBotBar();}};
CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', func: function() {CM.Disp.ToggleTimerBar();}}; CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', toggle: true, func: function() {CM.Disp.ToggleTimerBar();}};
CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar Position (Bottom)'], desc: 'Placement of the Timer Bar', func: function() {CM.Disp.ToggleTimerBarPos();}}; CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar Position (Bottom)'], desc: 'Placement of the Timer Bar', toggle: false, func: function() {CM.Disp.ToggleTimerBarPos();}};
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}};
CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', func: function() {CM.Disp.ToggleUpBarColor();}}; CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}};
CM.ConfigData.Colors = {desc: {Blue: 'Color for better than best BCI building', Green: 'Color for best BCI building', Yellow: 'Color for between best and worst BCI buildings closer to best', Orange: 'Color for between best and worst BCI buildings closer to worst', Red: 'Color for worst BCI building', Purple: 'Color for worse than worst BCI building', Gray: 'Color for negative or infinity BCI'}, func: function() {CM.Disp.UpdateColors();}}; CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best BCI building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best BCI building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst BCI buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst BCI buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst BCI building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst BCI building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity BCI, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}};
CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup'}; CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true};
CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup'}; CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true};
CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'}; CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'};
for (var i = 0; i < 101; i++) { for (var i = 0; i < 101; i++) {
CM.ConfigData.Volume.label[i] = i + '%'; CM.ConfigData.Volume.label[i] = i + '%';
} }
CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'};
CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'};
CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', func: function() {CM.Disp.ToggleGCTimer();}}; CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}};
CM.ConfigData.Title = {label: ['Title OFF', 'Title ON'], desc: 'Update title with Golden Cookie/Season Popup timers'}; CM.ConfigData.Title = {label: ['Title OFF', 'Title ON'], desc: 'Update title with Golden Cookie/Season Popup timers', toggle: true};
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades'}; CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}};
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip'}; CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true};
CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', func: function() {CM.Disp.ToggleToolWarnCaut();}}; CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true};
CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', func: function() {CM.Disp.ToggleToolWarnCautPos();}}; CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}};
CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying'}; CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', toggle: false, func: function() {CM.Disp.ToggleToolWarnCautPos();}};
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it'}; CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true};
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!'}; CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 3 seconds'}; CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
CM.ConfigData.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', func: function() {CM.Disp.ToggleSayTime();}}; CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
CM.ConfigData.Scale = {label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation'], desc: 'Change how long numbers are handled', func: function() {CM.Disp.RefreshScale();}}; CM.ConfigData.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', toggle: true, func: function() {CM.Disp.ToggleSayTime();}};
CM.ConfigData.Scale = {label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation'], desc: 'Change how long numbers are handled', toggle: false, func: function() {CM.Disp.RefreshScale();}};

View File

@@ -48,7 +48,7 @@ CM.Disp.GetTimeColor = function(price, bank, cps) {
return {text: text, color: color}; return {text: text, color: color};
} }
CM.Disp.Beautify = function(num) { CM.Disp.Beautify = function(num, frac) {
if (CM.Config.Scale != 0 && isFinite(num)) { if (CM.Config.Scale != 0 && isFinite(num)) {
var answer = ''; var answer = '';
var negative = false; var negative = false;
@@ -72,7 +72,7 @@ CM.Disp.Beautify = function(num) {
} }
} }
if (answer == '') { if (answer == '') {
answer = CM.Backup.Beautify(num); answer = CM.Backup.Beautify(num, frac);
} }
if (negative) { if (negative) {
@@ -81,7 +81,7 @@ CM.Disp.Beautify = function(num) {
return answer; return answer;
} }
else { else {
return CM.Backup.Beautify(num); return CM.Backup.Beautify(num, frac);
} }
} }
@@ -236,7 +236,7 @@ CM.Disp.CreateTimerBar = function() {
var type = document.createElement('span'); var type = document.createElement('span');
type.style.display = 'inline-block'; type.style.display = 'inline-block';
type.style.textAlign = 'right'; type.style.textAlign = 'right';
type.style.width = '71px'; type.style.width = '78px';
type.style.marginRight = '5px'; type.style.marginRight = '5px';
type.style.verticalAlign = 'text-top'; type.style.verticalAlign = 'text-top';
type.textContent = name; type.textContent = name;
@@ -295,7 +295,8 @@ CM.Disp.CreateTimerBar = function() {
CM.Disp.TimerBarCF.style.height = '12px'; CM.Disp.TimerBarCF.style.height = '12px';
CM.Disp.TimerBarCF.style.margin = '0px 10px'; CM.Disp.TimerBarCF.style.margin = '0px 10px';
CM.Disp.TimerBarCF.style.position = 'relative'; CM.Disp.TimerBarCF.style.position = 'relative';
CM.Disp.TimerBarCF.appendChild(bar('Click Frenzy', [{id: 'CMTimerBarCFBar', color: CM.Disp.colorBlue}], 'CMTimerBarCFTime')); CM.Disp.TimerBarCF.appendChild(bar('', [{id: 'CMTimerBarCFBar'}], 'CMTimerBarCFTime'));
CM.Disp.TimerBarCF.firstChild.firstChild.id = 'CMTimerBarCFType';
CM.Disp.TimerBar.appendChild(CM.Disp.TimerBarCF); CM.Disp.TimerBar.appendChild(CM.Disp.TimerBarCF);
l('wrapper').appendChild(CM.Disp.TimerBar); l('wrapper').appendChild(CM.Disp.TimerBar);
@@ -327,11 +328,11 @@ CM.Disp.ToggleTimerBarPos = function() {
CM.Disp.UpdateTimerBar = function() { CM.Disp.UpdateTimerBar = function() {
if (CM.Config.TimerBar == 1) { if (CM.Config.TimerBar == 1) {
// label width: 76 timer width: 26 div margin: 20 // label width: 83, timer width: 26, div margin: 20
var maxWidth = CM.Disp.TimerBar.offsetWidth - 122; var maxWidth = CM.Disp.TimerBar.offsetWidth - 129;
var count = 0; var count = 0;
if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0) { if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0 && !Game.Has('Golden switch [off]')) {
CM.Disp.TimerBarGC.style.display = ''; CM.Disp.TimerBarGC.style.display = '';
l('CMTimerBarGCMinBar').style.width = Math.round(Math.max(0, Game.goldenCookie.minTime - Game.goldenCookie.time) * maxWidth / Game.goldenCookie.maxTime) + 'px'; l('CMTimerBarGCMinBar').style.width = Math.round(Math.max(0, Game.goldenCookie.minTime - Game.goldenCookie.time) * maxWidth / Game.goldenCookie.maxTime) + 'px';
if (Game.goldenCookie.minTime == Game.goldenCookie.maxTime) { if (Game.goldenCookie.minTime == Game.goldenCookie.maxTime) {
@@ -371,6 +372,10 @@ CM.Disp.UpdateTimerBar = function() {
l('CMTimerBarFrenType').textContent = 'Clot'; l('CMTimerBarFrenType').textContent = 'Clot';
l('CMTimerBarFrenBar').className = CM.Disp.colorBackPre + CM.Disp.colorRed; l('CMTimerBarFrenBar').className = CM.Disp.colorBackPre + CM.Disp.colorRed;
} }
else if (Game.frenzyPower == 15) {
l('CMTimerBarFrenType').textContent = 'Dragon Harvest';
l('CMTimerBarFrenBar').className = CM.Disp.colorBackPre + CM.Disp.colorBrown;
}
else { else {
l('CMTimerBarFrenType').textContent = 'Blood Frenzy'; l('CMTimerBarFrenType').textContent = 'Blood Frenzy';
l('CMTimerBarFrenBar').className = CM.Disp.colorBackPre + CM.Disp.colorGreen; l('CMTimerBarFrenBar').className = CM.Disp.colorBackPre + CM.Disp.colorGreen;
@@ -385,6 +390,14 @@ CM.Disp.UpdateTimerBar = function() {
if (Game.clickFrenzy > 0) { if (Game.clickFrenzy > 0) {
CM.Disp.TimerBarCF.style.display = ''; CM.Disp.TimerBarCF.style.display = '';
if (Game.clickFrenzyPower == 777) {
l('CMTimerBarCFType').textContent = 'Click Frenzy';
l('CMTimerBarCFBar').className = CM.Disp.colorBackPre + CM.Disp.colorBlue;
}
else {
l('CMTimerBarCFType').textContent = 'Dragonflight';
l('CMTimerBarCFBar').className = CM.Disp.colorBackPre + CM.Disp.colorPink;
}
l('CMTimerBarCFBar').style.width = Math.round(Game.clickFrenzy * maxWidth / Game.clickFrenzyMax) + 'px'; l('CMTimerBarCFBar').style.width = Math.round(Game.clickFrenzy * maxWidth / Game.clickFrenzyMax) + 'px';
l('CMTimerBarCFTime').textContent = Math.ceil(Game.clickFrenzy / Game.fps); l('CMTimerBarCFTime').textContent = Math.ceil(Game.clickFrenzy / Game.fps);
count++; count++;
@@ -430,9 +443,19 @@ CM.Disp.UpdateBotTimerBarDisplay = function() {
} }
CM.Disp.UpdateBuildings = function() { CM.Disp.UpdateBuildings = function() {
if (CM.Config.BuildColor == 1) { if (CM.Config.BuildColor == 1 && Game.buyMode == 1) {
for (var i in CM.Cache.Objects) { var target = '';
l('productPrice' + Game.Objects[i].id).style.color = CM.Config.Colors[CM.Cache.Objects[i].color]; if (Game.buyBulk == 10) {
target = 'Objects10'
}
else if (Game.buyBulk == 100) {
target = 'Objects100'
}
else {
target = 'Objects'
}
for (var i in CM.Cache[target]) {
l('productPrice' + Game.Objects[i].id).style.color = CM.Config.Colors[CM.Cache[target][i].color];
} }
} }
else { else {
@@ -454,7 +477,7 @@ CM.Disp.CreateUpgradeBar = function() {
var placeholder = document.createElement('div'); var placeholder = document.createElement('div');
var legend = document.createElement('div'); var legend = document.createElement('div');
legend.style.minWidth = '320px'; legend.style.minWidth = '330px';
legend.style.marginBottom = '4px'; legend.style.marginBottom = '4px';
var title = document.createElement('div'); var title = document.createElement('div');
title.className = 'name'; title.className = 'name';
@@ -530,18 +553,22 @@ CM.Disp.UpdateUpgrades = function() {
for (var i in Game.UpgradesInStore) { for (var i in Game.UpgradesInStore) {
var me = Game.UpgradesInStore[i]; var me = Game.UpgradesInStore[i];
if (l('upgrade' + i).childNodes.length > 0) { var addedColor = false;
l('upgrade' + i).childNodes[0].className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; for (var j = 0; j < l('upgrade' + i).childNodes.length; j++) {
if (l('upgrade' + i).childNodes[j].className.indexOf(CM.Disp.colorBackPre) != -1) {
l('upgrade' + i).childNodes[j].className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color;
addedColor = true;
break;
}
} }
else { if (!addedColor) {
var div = document.createElement('div'); var div = document.createElement('div');
div.style.width = '17px'; div.style.width = '10px';
div.style.height = '17px'; div.style.height = '10px';
div.className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; div.className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color;
l('upgrade' + i).appendChild(div); l('upgrade' + i).appendChild(div);
} }
if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorBlue) blue++; if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorBlue) blue++;
else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorBlue) blue++;
else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorGreen) green++; else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorGreen) green++;
else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorYellow) yellow++; else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorYellow) yellow++;
else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorOrange) orange++; else if (CM.Cache.Upgrades[me.name].color == CM.Disp.colorOrange) orange++;
@@ -563,13 +590,13 @@ CM.Disp.UpdateUpgrades = function() {
CM.Disp.UpdateColors = function() { CM.Disp.UpdateColors = function() {
var str = ''; var str = '';
for (var i = 0; i < CM.Disp.colors.length; i++) { for (var i = 0; i < CM.Disp.colors.length; i++) {
str += '.' + CM.Disp.colorTextPre + CM.Disp.colors[i] + ' { color: ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }'; str += '.' + CM.Disp.colorTextPre + CM.Disp.colors[i] + ' { color: ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }\n';
} }
for (var i = 0; i < CM.Disp.colors.length; i++) { for (var i = 0; i < CM.Disp.colors.length; i++) {
str += '.' + CM.Disp.colorBackPre + CM.Disp.colors[i] + ' { background-color: ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }'; str += '.' + CM.Disp.colorBackPre + CM.Disp.colors[i] + ' { background-color: ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }\n';
} }
for (var i = 0; i < CM.Disp.colors.length; i++) { for (var i = 0; i < CM.Disp.colors.length; i++) {
str += '.' + CM.Disp.colorBorderPre + CM.Disp.colors[i] + ' { border: 1px solid ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }'; str += '.' + CM.Disp.colorBorderPre + CM.Disp.colors[i] + ' { border: 1px solid ' + CM.Config.Colors[CM.Disp.colors[i]] + '; }\n';
} }
CM.Disp.Css.textContent = str; CM.Disp.Css.textContent = str;
CM.Disp.UpdateBuildings(); // Class has been already set CM.Disp.UpdateBuildings(); // Class has been already set
@@ -616,6 +643,28 @@ CM.Disp.PlaySound = function(url) {
} }
} }
CM.Disp.CreateFavicon = function() {
CM.Disp.Favicon = document.createElement('link');
CM.Disp.Favicon.id = 'CMFavicon';
CM.Disp.Favicon.rel = 'shortcut icon';
CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico';
document.getElementsByTagName('head')[0].appendChild(CM.Disp.Favicon);
}
CM.Disp.UpdateFavicon = function() {
if (CM.Config.Favicon == 1 && l('goldenCookie').style.display != 'none') {
if (Game.goldenCookie.wrath) {
CM.Disp.Favicon.href = 'http://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico';
}
else {
CM.Disp.Favicon.href = 'http://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico';
}
}
else {
CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico';
}
}
CM.Disp.CreateGCTimer = function() { CM.Disp.CreateGCTimer = function() {
CM.Disp.GCTimer = document.createElement('div'); CM.Disp.GCTimer = document.createElement('div');
CM.Disp.GCTimer.style.width = '96px'; CM.Disp.GCTimer.style.width = '96px';
@@ -649,6 +698,7 @@ CM.Disp.ToggleGCTimer = function() {
CM.Disp.CheckGoldenCookie = function() { CM.Disp.CheckGoldenCookie = function() {
if (CM.Disp.lastGoldenCookieState != l('goldenCookie').style.display) { if (CM.Disp.lastGoldenCookieState != l('goldenCookie').style.display) {
CM.Disp.lastGoldenCookieState = l('goldenCookie').style.display; CM.Disp.lastGoldenCookieState = l('goldenCookie').style.display;
CM.Disp.UpdateFavicon();
if (l('goldenCookie').style.display != 'none') { if (l('goldenCookie').style.display != 'none') {
if (CM.Config.GCTimer == 1) { if (CM.Config.GCTimer == 1) {
CM.Disp.GCTimer.style.display = 'block'; CM.Disp.GCTimer.style.display = 'block';
@@ -682,11 +732,18 @@ CM.Disp.UpdateTitle = function() {
var titleGC; var titleGC;
var titleSP; var titleSP;
if (l('goldenCookie').style.display != 'none') { if (l('goldenCookie').style.display != 'none') {
addGC = true; if (Game.goldenCookie.wrath) {
titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']'; titleGC = '[W ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
}
else {
titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
}
}
else if (!Game.Has('Golden switch [off]')) {
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
} }
else { else {
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']'; titleGC = '[GS]'
} }
if (Game.season=='christmas') { if (Game.season=='christmas') {
addSP = true; addSP = true;
@@ -710,11 +767,11 @@ CM.Disp.UpdateTitle = function() {
CM.Disp.CreateResetTooltip = function() { CM.Disp.CreateResetTooltip = function() {
CM.Disp.ResetTooltipPlaceholder = document.createElement('div'); CM.Disp.ResetTooltipPlaceholder = document.createElement('div');
var resetTitleDesc = document.createElement('div'); var resetTitleDesc = document.createElement('div');
resetTitleDesc.style.minWidth = '260px'; resetTitleDesc.style.minWidth = '340px';
resetTitleDesc.style.marginBottom = '4px'; resetTitleDesc.style.marginBottom = '4px';
var div = document.createElement('div'); var div = document.createElement('div');
div.style.textAlign = 'left'; div.style.textAlign = 'left';
div.textContent = 'The bonus income you would get from new heavenly chips/reset achievements if you have the same buildings/upgrades after reset'; div.textContent = 'The bonus income you would get from new prestige levels at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset';
resetTitleDesc.appendChild(div); resetTitleDesc.appendChild(div);
CM.Disp.ResetTooltipPlaceholder.appendChild(resetTitleDesc); CM.Disp.ResetTooltipPlaceholder.appendChild(resetTitleDesc);
} }
@@ -722,11 +779,11 @@ CM.Disp.CreateResetTooltip = function() {
CM.Disp.CreateChoEggTooltip = function() { CM.Disp.CreateChoEggTooltip = function() {
CM.Disp.ChoEggTooltipPlaceholder = document.createElement('div'); CM.Disp.ChoEggTooltipPlaceholder = document.createElement('div');
var choEggTitleDesc = document.createElement('div'); var choEggTitleDesc = document.createElement('div');
choEggTitleDesc.style.minWidth = '240px'; choEggTitleDesc.style.minWidth = '310px';
choEggTitleDesc.style.marginBottom = '4px'; choEggTitleDesc.style.marginBottom = '4px';
var div = document.createElement('div'); var div = document.createElement('div');
div.style.textAlign = 'left'; div.style.textAlign = 'left';
div.textContent = 'The amount of cookies you would get from selling all buildings, popping all wrinklers, and then buying Chocolate egg'; div.textContent = 'The amount of cookies you would get from selling all buildings with Earth Shatterer aura (if possible), popping all wrinklers, and then buying Chocolate egg';
choEggTitleDesc.appendChild(div); choEggTitleDesc.appendChild(div);
CM.Disp.ChoEggTooltipPlaceholder.appendChild(choEggTitleDesc); CM.Disp.ChoEggTooltipPlaceholder.appendChild(choEggTitleDesc);
} }
@@ -751,9 +808,14 @@ CM.Disp.AddMenuPref = function(title) {
var div = document.createElement('div'); var div = document.createElement('div');
div.className = 'listing'; div.className = 'listing';
var a = document.createElement('a'); var a = document.createElement('a');
a.className = 'option'; if (CM.ConfigData[config].toggle && CM.Config[config] == 0) {
a.className = 'option off';
}
else {
a.className = 'option';
}
a.id = CM.ConfigPrefix + config; a.id = CM.ConfigPrefix + config;
a.onclick = function() {CM.ToggleConfigUp(config);}; a.onclick = function() {CM.ToggleConfig(config);};
a.textContent = CM.Disp.GetConfigDisplay(config); a.textContent = CM.Disp.GetConfigDisplay(config);
div.appendChild(a); div.appendChild(a);
var label = document.createElement('label'); var label = document.createElement('label');
@@ -839,6 +901,7 @@ CM.Disp.AddMenuPref = function(title) {
frag.appendChild(url('SeaSoundURL')); frag.appendChild(url('SeaSoundURL'));
frag.appendChild(listing('GCTimer')); frag.appendChild(listing('GCTimer'));
frag.appendChild(listing('Title')); frag.appendChild(listing('Title'));
frag.appendChild(listing('Favicon'));
frag.appendChild(header('Tooltip')); frag.appendChild(header('Tooltip'));
frag.appendChild(listing('Tooltip')); frag.appendChild(listing('Tooltip'));
@@ -867,7 +930,7 @@ CM.Disp.AddMenuPref = function(title) {
l('menu').childNodes[2].insertBefore(frag, l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1]); l('menu').childNodes[2].insertBefore(frag, l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1]);
CM.Disp.FormatButtonOnClickBak = l('formatButton').onclick; CM.Disp.FormatButtonOnClickBak = l('formatButton').onclick;
l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON'); CM.Disp.RefreshScale();}; l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON', '1'); PlaySound('snd/tick.mp3'); CM.Disp.RefreshScale();};
} }
CM.Disp.AddMenuStats = function(title) { CM.Disp.AddMenuStats = function(title) {
@@ -919,7 +982,23 @@ CM.Disp.AddMenuStats = function(title) {
var luckyTime = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var luckyTime = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
var luckyTimeFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var luckyTimeFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var luckyCur = Math.min(Game.cookies * 0.1, Game.cookiesPs * 60 * 20) + 13; var luckyCurBase = Math.min(Game.cookies * 0.15, Game.cookiesPs * 60 * 15) + 13;
var luckyRewardMax = CM.Cache.LuckyReward;
var luckyRewardMaxWrath = CM.Cache.LuckyReward;
var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy;
var luckyRewardFrenzyMaxWrath = CM.Cache.LuckyRewardFrenzy;
var luckyCur = luckyCurBase;
var luckyCurWrath = luckyCurBase;
if (Game.hasAura('Ancestral Metamorphosis')) {
luckyRewardMax *= 1.1;
luckyRewardFrenzyMax *= 1.1;
luckyCur *= 1.1;
}
if (Game.hasAura('Unholy Dominion')) {
luckyRewardMaxWrath *= 1.1;
luckyRewardFrenzyMaxWrath *= 1.1;
luckyCurWrath *= 1.1;
}
var luckyReqFrag = document.createDocumentFragment(); var luckyReqFrag = document.createDocumentFragment();
var luckyReqSpan = document.createElement('span'); var luckyReqSpan = document.createElement('span');
@@ -945,9 +1024,9 @@ CM.Disp.AddMenuStats = function(title) {
luckyReqFrenFrag.appendChild(luckyReqFrenSmall); luckyReqFrenFrag.appendChild(luckyReqFrenSmall);
} }
stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag)); stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag));
stats.appendChild(listing('\"Lucky!\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.LuckyReward)))); stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(luckyRewardMax) + ' / ' + Beautify(luckyRewardMaxWrath))));
stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.LuckyRewardFrenzy)))); stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode(Beautify(luckyRewardFrenzyMax) + ' / ' + Beautify(luckyRewardFrenzyMaxWrath))));
stats.appendChild(listing('\"Lucky!\" Reward (CUR)', document.createTextNode(Beautify(luckyCur)))); stats.appendChild(listing('\"Lucky!\" Reward (CUR) (Golden / Wrath)', document.createTextNode(Beautify(luckyCur) + ' / ' + Beautify(luckyCurWrath))));
} }
stats.appendChild(header('Chain Cookies', 'Chain')); stats.appendChild(header('Chain Cookies', 'Chain'));
@@ -956,10 +1035,29 @@ CM.Disp.AddMenuStats = function(title) {
var chainTime = (Game.cookies < CM.Cache.Chain) ? CM.Disp.FormatTime((CM.Cache.Chain - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var chainTime = (Game.cookies < CM.Cache.Chain) ? CM.Disp.FormatTime((CM.Cache.Chain - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var chainColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
var chainTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var chainTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var chainCurMax = Math.min(Game.cookiesPs * 60 * 60 * 3, Game.cookies * 0.25); var chainWrathColor = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
var chainWrathTime = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var chainWrathColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
var chainWrathTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
var chainRewardMax = CM.Cache.ChainReward;
var chainWrathRewardMax = CM.Cache.ChainWrathReward;
var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward;
var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward;
var chainCurMax = Math.min(Game.cookiesPs * 60 * 60 * 6, Game.cookies * 0.25);
var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax); var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax);
var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax); var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax);
if (Game.hasAura('Ancestral Metamorphosis')) {
chainRewardMax *= 1.1;
chainFrenzyRewardMax *= 1.1;
chainCur *= 1.1;
}
if (Game.hasAura('Unholy Dominion')) {
chainWrathRewardMax *= 1.1;
chainFrenzyWrathRewardMax *= 1.1;
chainCurWrath *= 1.1;
}
var chainReqFrag = document.createDocumentFragment(); var chainReqFrag = document.createDocumentFragment();
var chainReqSpan = document.createElement('span'); var chainReqSpan = document.createElement('span');
chainReqSpan.style.fontWeight = 'bold'; chainReqSpan.style.fontWeight = 'bold';
@@ -972,6 +1070,18 @@ CM.Disp.AddMenuStats = function(title) {
chainReqFrag.appendChild(chainReqSmall); chainReqFrag.appendChild(chainReqSmall);
} }
stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag)); stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag));
var chainWrathReqFrag = document.createDocumentFragment();
var chainWrathReqSpan = document.createElement('span');
chainWrathReqSpan.style.fontWeight = 'bold';
chainWrathReqSpan.className = CM.Disp.colorTextPre + chainWrathColor;
chainWrathReqSpan.textContent = Beautify(CM.Cache.ChainWrath);
chainWrathReqFrag.appendChild(chainWrathReqSpan);
if (chainWrathTime != '') {
var chainWrathReqSmall = document.createElement('small');
chainWrathReqSmall.textContent = ' (' + chainWrathTime + ')';
chainWrathReqFrag.appendChild(chainWrathReqSmall);
}
stats.appendChild(listing('\"Chain\" Cookies Required (Wrath)', chainWrathReqFrag));
var chainReqFrenFrag = document.createDocumentFragment(); var chainReqFrenFrag = document.createDocumentFragment();
var chainReqFrenSpan = document.createElement('span'); var chainReqFrenSpan = document.createElement('span');
chainReqFrenSpan.style.fontWeight = 'bold'; chainReqFrenSpan.style.fontWeight = 'bold';
@@ -984,33 +1094,36 @@ CM.Disp.AddMenuStats = function(title) {
chainReqFrenFrag.appendChild(chainReqFrenSmall); chainReqFrenFrag.appendChild(chainReqFrenSmall);
} }
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag)); stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag));
stats.appendChild(listing('\"Chain\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.ChainReward)))); var chainWrathReqFrenFrag = document.createDocumentFragment();
stats.appendChild(listing('\"Chain\" Reward (MAX) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainWrathReward)))); var chainWrathReqFrenFrag = document.createDocumentFragment();
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyReward)))); var chainWrathReqFrenSpan = document.createElement('span');
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyWrathReward)))); chainWrathReqFrenSpan.style.fontWeight = 'bold';
stats.appendChild(listing('\"Chain\" Reward (CUR)', document.createTextNode(Beautify(chainCur)))); chainWrathReqFrenSpan.className = CM.Disp.colorTextPre + chainWrathColorFrenzy;
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath)))); chainWrathReqFrenSpan.textContent = Beautify(CM.Cache.ChainFrenzyWrath);
chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSpan);
if (chainWrathTimeFrenzy != '') {
var chainWrathReqFrenSmall = document.createElement('small');
chainWrathReqFrenSmall.textContent = ' (' + chainWrathTimeFrenzy + ')';
chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSmall);
}
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag));
stats.appendChild(listing('\"Chain\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(chainRewardMax) + ' / ' + Beautify(chainWrathRewardMax))));
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode(Beautify(chainFrenzyRewardMax) + ' / ' + Beautify(chainFrenzyWrathRewardMax))));
stats.appendChild(listing('\"Chain\" Reward (CUR) (Golden / Wrath)', document.createTextNode(Beautify(chainCur) + ' / ' + Beautify(chainCurWrath))));
} }
stats.appendChild(header('Heavenly Chips', 'HC')); stats.appendChild(header('Prestige', 'Prestige'));
if (CM.Config.StatsPref.HC) { if (CM.Config.StatsPref.Prestige) {
var possibleHC = Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset); var possiblePres = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset));
var neededCook = CM.Sim.CookNeedPrest(possibleHC + 1) - (Game.cookiesEarned + Game.cookiesReset); var neededCook = Game.HowManyCookiesReset(possiblePres + 1) - (Game.cookiesEarned + Game.cookiesReset);
var hcMaxFrag = document.createDocumentFragment(); stats.appendChild(listing('Prestige Level (CUR / MAX)', document.createTextNode(Beautify(Game.prestige) + ' / ' + Beautify(possiblePres))));
hcMaxFrag.appendChild(document.createTextNode(Beautify(possibleHC))); var cookiesNextFrag = document.createDocumentFragment();
var hcMaxSmall = document.createElement('small'); cookiesNextFrag.appendChild(document.createTextNode(Beautify(neededCook)));
hcMaxSmall.textContent = ' (' + Beautify((possibleHC * 2)) + '%)'; var cookiesNextSmall = document.createElement('small');
hcMaxFrag.appendChild(hcMaxSmall); cookiesNextSmall.textContent = ' (' + (CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1)) + ')';
stats.appendChild(listing('Heavenly Chips (MAX)', hcMaxFrag)); cookiesNextFrag.appendChild(cookiesNextSmall);
var hcCurFrag = document.createDocumentFragment(); stats.appendChild(listing('Cookies To Next Level', cookiesNextFrag));
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips'])));
var hcCurSmall = document.createElement('small');
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)';
hcCurFrag.appendChild(hcCurSmall);
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
var resetTitleFrag = document.createDocumentFragment(); var resetTitleFrag = document.createDocumentFragment();
resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income ')) resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income '))
var resetTitleSpan = document.createElement('span'); var resetTitleSpan = document.createElement('span');
@@ -1045,16 +1158,20 @@ CM.Disp.AddMenuStats = function(title) {
if (Game.cpsSucked > 0) { if (Game.cpsSucked > 0) {
stats.appendChild(header('Wrinklers', 'Wrink')); stats.appendChild(header('Wrinklers', 'Wrink'));
if (CM.Config.StatsPref.Wrink || (CM.Config.StatsPref.Sea && choEgg)) { if (CM.Config.StatsPref.Wrink || (CM.Config.StatsPref.Sea && choEgg)) {
var sucked = 0; var totalSucked = 0; // Used in Chocolate Egg calculation below also
for (var i in Game.wrinklers) { for (var i in Game.wrinklers) {
sucked += Game.wrinklers[i].sucked; var sucked = Game.wrinklers[i].sucked;
var toSuck = 1.1;
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
if (Game.wrinklers[i].type==1) toSuck *= 3; // Shiny wrinklers
sucked *= toSuck;
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
totalSucked += sucked;
} }
sucked *= 1.1;
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
if (CM.Config.StatsPref.Wrink) { if (CM.Config.StatsPref.Wrink) {
var popAllFrag = document.createDocumentFragment(); var popAllFrag = document.createDocumentFragment();
popAllFrag.appendChild(document.createTextNode(Beautify(sucked) + ' ')); popAllFrag.appendChild(document.createTextNode(Beautify(totalSucked) + ' '));
var popAllA = document.createElement('a'); var popAllA = document.createElement('a');
popAllA.textContent = 'Pop All'; popAllA.textContent = 'Pop All';
popAllA.className = 'option'; popAllA.className = 'option';
@@ -1169,15 +1286,20 @@ CM.Disp.AddMenuStats = function(title) {
choEggTitleSpan.style.verticalAlign = 'bottom'; choEggTitleSpan.style.verticalAlign = 'bottom';
choEggTitleSpan.textContent = '?'; choEggTitleSpan.textContent = '?';
choEggTitleFrag.appendChild(choEggTitleSpan); choEggTitleFrag.appendChild(choEggTitleSpan);
var choEggTotal = Game.cookies + CM.Cache.SellAllTotal; var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg;
if (Game.cpsSucked > 0) { if (Game.cpsSucked > 0) {
choEggTotal += sucked; choEggTotal += totalSucked;
} }
choEggTotal *= 0.05; choEggTotal *= 0.05;
stats.appendChild(listing(choEggTitleFrag, document.createTextNode(Beautify(choEggTotal)))); stats.appendChild(listing(choEggTitleFrag, document.createTextNode(Beautify(choEggTotal))));
} }
} }
} }
stats.appendChild(header('Miscellaneous', 'Misc'));
if (CM.Config.StatsPref.Misc) {
stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks))));
}
l('menu').insertBefore(stats, l('menu').childNodes[2]); l('menu').insertBefore(stats, l('menu').childNodes[2]);
} }
@@ -1199,15 +1321,19 @@ CM.Disp.AddMenu = function() {
} }
CM.Disp.RefreshMenu = function() { CM.Disp.RefreshMenu = function() {
if (CM.Config.UpStats && Game.onMenu == 'stats' && Game.drawT % (Game.fps * 3) != 0 && Game.drawT % Game.fps == 0) Game.UpdateMenu(); if (CM.Config.UpStats && Game.onMenu == 'stats' && Game.drawT % (Game.fps * 5) != 0 && Game.drawT % Game.fps == 0) Game.UpdateMenu();
} }
CM.Disp.UpdateTooltipLocation = function() { CM.Disp.UpdateTooltipLocation = function() {
Game.tooltip.tta.style.top = Math.max(0, Math.min((l('game').clientHeight + l('topBar').clientHeight) - Game.tooltip.tt.clientHeight - CM.Disp.TooltipWarnCaut.clientHeight - 64, Game.mouseY - 48)) + 'px'; if (Game.tooltip.origin == 'store') {
if (Game.tooltip.origin == 'wrink') { var warnCautOffset = 0;
Game.tooltip.tta.style.left = (Game.mouseX + l('tooltip').offsetWidth + 25) + 'px'; if (CM.Config.ToolWarnCaut == 1 && CM.Config.ToolWarnCautPos == 1) warnCautOffset = CM.Disp.TooltipWarnCaut.clientHeight - 4;
Game.tooltip.tta.style.right = 'auto'; Game.tooltip.tta.style.top = Math.min(parseInt(Game.tooltip.tta.style.top), (l('game').clientHeight + l('topBar').clientHeight) - Game.tooltip.tt.clientHeight - warnCautOffset - 46) + 'px';
} }
// Kept for future possible use if the code changes again
/*else if (!Game.onCrate && !Game.OnAscend && CM.Config.TimerBar == 1 && CM.Config.TimerBarPos == 0) {
Game.tooltip.tta.style.top = (parseInt(Game.tooltip.tta.style.top) + parseInt(CM.Disp.TimerBar.style.height)) + 'px';
}*/
} }
CM.Disp.CreateTooltipWarnCaut = function() { CM.Disp.CreateTooltipWarnCaut = function() {
@@ -1263,11 +1389,13 @@ CM.Disp.ToggleToolWarnCaut = function() {
CM.Disp.ToggleToolWarnCautPos = function() { CM.Disp.ToggleToolWarnCautPos = function() {
if (CM.Config.ToolWarnCautPos == 0) { if (CM.Config.ToolWarnCautPos == 0) {
CM.Disp.TooltipWarnCaut.style.top = '12px'; CM.Disp.TooltipWarnCaut.style.top = 'auto';
CM.Disp.TooltipWarnCaut.style.margin = '4px -4px';
CM.Disp.TooltipWarnCaut.style.padding = '3px 4px'; CM.Disp.TooltipWarnCaut.style.padding = '3px 4px';
} }
else { else {
CM.Disp.TooltipWarnCaut.style.right = '12px'; CM.Disp.TooltipWarnCaut.style.right = 'auto';
CM.Disp.TooltipWarnCaut.style.margin = '4px';
CM.Disp.TooltipWarnCaut.style.padding = '4px 3px'; CM.Disp.TooltipWarnCaut.style.padding = '4px 3px';
} }
} }
@@ -1278,7 +1406,7 @@ CM.Disp.AddTooltipBuild = function() {
var me = Game.Objects[i]; var me = Game.Objects[i];
if (l('product' + me.id).onmouseover != null) { if (l('product' + me.id).onmouseover != null) {
CM.Disp.TooltipBuildBack[i] = l('product' + me.id).onmouseover; CM.Disp.TooltipBuildBack[i] = l('product' + me.id).onmouseover;
eval('l(\'product\' + me.id).onmouseover = function() {Game.tooltip.draw(this, function() {return CM.Disp.Tooltip(\'b\', \'' + i + '\');}, \'store\');}'); eval('l(\'product\' + me.id).onmouseover = function() {Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip(\'b\', \'' + i + '\');}, \'store\'); Game.tooltip.wobble();}');
} }
} }
} }
@@ -1289,52 +1417,55 @@ CM.Disp.AddTooltipUpgrade = function() {
var me = Game.UpgradesInStore[i]; var me = Game.UpgradesInStore[i];
if (l('upgrade' + i).onmouseover != null) { if (l('upgrade' + i).onmouseover != null) {
CM.Disp.TooltipUpgradeBack[i] = l('upgrade' + i).onmouseover; CM.Disp.TooltipUpgradeBack[i] = l('upgrade' + i).onmouseover;
eval('l(\'upgrade\' + i).onmouseover = function() {CM.Disp.Tooltip(\'u\', \'' + i + '\');}'); eval('l(\'upgrade\' + i).onmouseover = function() {if (!Game.mouseDown) {Game.setOnCrate(this); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip(\'u\', \'' + i + '\');}, \'store\'); Game.tooltip.wobble();}}');
} }
} }
} }
CM.Disp.AddTooltipBuildExtra = function() {
for (var i in Game.Objects) {
var me = Game.Objects[i];
l('buttonBuy10-' + me.id).onmouseover = function() {CM.Disp.TooltipBuy10 = true;};
l('buttonBuy10-' + me.id).onmouseout = function() {CM.Disp.TooltipBuy10 = false;};
l('buttonSell-' + me.id).onmouseover = function() {CM.Disp.TooltipSell = true;};
l('buttonSell-' + me.id).onmouseout = function() {CM.Disp.TooltipSell = false;};
l('buttonSellAll-' + me.id).onmouseover = function() {CM.Disp.TooltipSellAll = true;};
l('buttonSellAll-' + me.id).onmouseout = function() {CM.Disp.TooltipSellAll = false;};
}
}
CM.Disp.Tooltip = function(type, name) { CM.Disp.Tooltip = function(type, name) {
if (type == 'b') { if (type == 'b') {
l('tooltip').innerHTML = Game.Objects[name].tooltip(); l('tooltip').innerHTML = Game.Objects[name].tooltip();
if (CM.Config.TooltipAmor == 1) { if (CM.Config.TooltipAmor == 1) {
var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].amount); var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount);
var amortizeAmount = buildPrice - Game.Objects[name].totalCookies; var amortizeAmount = buildPrice - Game.Objects[name].totalCookies;
if (amortizeAmount > 0) { if (amortizeAmount > 0) {
l('tooltip').innerHTML = l('tooltip').innerHTML.split('so far</div>').join('so far<br/>&bull; <b>' + Beautify(amortizeAmount) + '</b> ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')</div>'); l('tooltip').innerHTML = l('tooltip').innerHTML.split('so far</div>').join('so far<br/>&bull; <b>' + Beautify(amortizeAmount) + '</b> ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')</div>');
} }
} }
if (CM.Disp.TooltipBuy10) { if (Game.buyMode == 1) {
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache.Objects10[name].price)); var target = '';
var change = false;
if (Game.buyBulk == 10) {
target = 'Objects10';
change = true;
}
else if (Game.buyBulk == 100) {
target = 'Objects100';
change = true;
}
if (change) {
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache[target][name].price));
}
} }
if (CM.Disp.TooltipSell) { else if (Game.buyMode == -1) {
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, 1))); if (Game.buyBulk == -1) {
} l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.Objects[name].amount, 0)));
if (CM.Disp.TooltipSellAll) { }
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].amount))); else {
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.buyBulk, 0)));
}
} }
} }
else { // Upgrades else { // Upgrades
CM.Disp.TooltipUpgradeBack[name](); if (!Game.UpgradesInStore[name]) return '';
l('tooltip').innerHTML = Game.crate(Game.UpgradesInStore[name], 'store', undefined, undefined, 1)();
} }
var area = document.createElement('div'); var area = document.createElement('div');
area.id = 'CMTooltipArea'; area.id = 'CMTooltipArea';
l('tooltip').appendChild(area); l('tooltip').appendChild(area);
if (CM.Config.Tooltip == 1) { if (CM.Config.Tooltip == 1 && (type != 'b' || Game.buyMode == 1)) {
l('tooltip').firstChild.style.paddingBottom = '4px'; l('tooltip').firstChild.style.paddingBottom = '4px';
var tooltip = document.createElement('div'); var tooltip = document.createElement('div');
tooltip.style.border = '1px solid'; tooltip.style.border = '1px solid';
@@ -1373,9 +1504,7 @@ CM.Disp.Tooltip = function(type, name) {
CM.Disp.UpdateTooltip(); CM.Disp.UpdateTooltip();
if (type == 'b') { return l('tooltip').innerHTML;
return l('tooltip').innerHTML;
}
} }
CM.Disp.UpdateTooltip = function() { CM.Disp.UpdateTooltip = function() {
@@ -1383,23 +1512,24 @@ CM.Disp.UpdateTooltip = function() {
var price; var price;
var bonus; var bonus;
if (CM.Disp.tooltipType == 'b') { if (CM.Disp.tooltipType == 'b') {
if (!CM.Disp.TooltipBuy10) { var target = '';
bonus = CM.Cache.Objects[CM.Disp.tooltipName].bonus; if (Game.buyMode == 1 && Game.buyBulk == 10) {
price = Game.Objects[CM.Disp.tooltipName].getPrice(); target = 'Objects10';
if (CM.Config.Tooltip == 1) { price = CM.Cache[target][CM.Disp.tooltipName].price;
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Objects[CM.Disp.tooltipName].color; }
l('CMTooltipBCI').textContent = Beautify(CM.Cache.Objects[CM.Disp.tooltipName].bci, 2); else if (Game.buyMode == 1 && Game.buyBulk == 100) {
l('CMTooltipBCI').className = CM.Disp.colorTextPre + CM.Cache.Objects[CM.Disp.tooltipName].color; target = 'Objects100';
} price = CM.Cache[target][CM.Disp.tooltipName].price;
} }
else { else {
bonus = CM.Cache.Objects10[CM.Disp.tooltipName].bonus; target = 'Objects';
price = CM.Cache.Objects10[CM.Disp.tooltipName].price; price = Game.Objects[CM.Disp.tooltipName].getPrice();
if (CM.Config.Tooltip == 1) { }
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Objects10[CM.Disp.tooltipName].color; bonus = CM.Cache[target][CM.Disp.tooltipName].bonus;
l('CMTooltipBCI').textContent = Beautify(CM.Cache.Objects10[CM.Disp.tooltipName].bci, 2); if (CM.Config.Tooltip == 1 && Game.buyMode == 1) {
l('CMTooltipBCI').className = CM.Disp.colorTextPre + CM.Cache.Objects10[CM.Disp.tooltipName].color; l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
} l('CMTooltipBCI').textContent = Beautify(CM.Cache[target][CM.Disp.tooltipName].bci, 2);
l('CMTooltipBCI').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
} }
} }
else { // Upgrades else { // Upgrades
@@ -1411,7 +1541,7 @@ CM.Disp.UpdateTooltip = function() {
l('CMTooltipBCI').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color; l('CMTooltipBCI').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
} }
} }
if (CM.Config.Tooltip == 1) { if (CM.Config.Tooltip == 1 && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
l('CMTooltipIncome').textContent = Beautify(bonus, 2); l('CMTooltipIncome').textContent = Beautify(bonus, 2);
var increase = Math.round(bonus / Game.cookiesPs * 10000); var increase = Math.round(bonus / Game.cookiesPs * 10000);
@@ -1431,16 +1561,16 @@ CM.Disp.UpdateTooltip = function() {
if (Game.frenzy > 0) { if (Game.frenzy > 0) {
bonusNoFren /= Game.frenzyPower; bonusNoFren /= Game.frenzyPower;
} }
warn += ((bonusNoFren * 60 * 20) / 0.1); warn += ((bonusNoFren * 60 * 15) / 0.15);
} }
var caut = warn * 7; var caut = warn * 7;
var amount = Game.cookies - price; var amount = Game.cookies - price;
if (amount < warn || amount < caut) { if ((amount < warn || amount < caut) && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
if (CM.Config.ToolWarnCautPos == 0) { if (CM.Config.ToolWarnCautPos == 0) {
CM.Disp.TooltipWarnCaut.style.right = (l('tooltip').offsetWidth + 12) + 'px'; CM.Disp.TooltipWarnCaut.style.right = '0px';
} }
else { else {
CM.Disp.TooltipWarnCaut.style.top = (l('tooltip').offsetHeight + 12) + 'px'; CM.Disp.TooltipWarnCaut.style.top = (l('tooltip').offsetHeight) + 'px';
} }
CM.Disp.TooltipWarnCaut.style.width = (l('tooltip').offsetWidth - 6) + 'px'; CM.Disp.TooltipWarnCaut.style.width = (l('tooltip').offsetWidth - 6) + 'px';
@@ -1521,7 +1651,7 @@ CM.Disp.CheckWrinklerTooltip = function() {
div.id = 'CMTooltipWrinkler'; div.id = 'CMTooltipWrinkler';
wrinkler.appendChild(div); wrinkler.appendChild(div);
placeholder.appendChild(wrinkler); placeholder.appendChild(wrinkler);
Game.tooltip.draw(this, escape(placeholder.innerHTML), 'wrink'); Game.tooltip.draw(this, escape(placeholder.innerHTML));
CM.Disp.TooltipWrinkler = i; CM.Disp.TooltipWrinkler = i;
CM.Disp.TooltipWrinklerCache[i] = 1; CM.Disp.TooltipWrinklerCache[i] = 1;
} }
@@ -1540,12 +1670,29 @@ CM.Disp.CheckWrinklerTooltip = function() {
CM.Disp.UpdateWrinklerTooltip = function() { CM.Disp.UpdateWrinklerTooltip = function() {
if (CM.Config.ToolWrink == 1 && l('CMTooltipWrinkler') != null) { if (CM.Config.ToolWrink == 1 && l('CMTooltipWrinkler') != null) {
var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked; var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked;
sucked *= 1.1; var toSuck = 1.1;
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
if (Game.wrinklers[CM.Disp.TooltipWrinkler].type == 1) toSuck *= 3; // Shiny wrinklers
sucked *= toSuck;
if (Game.Has('Wrinklerspawn')) sucked *= 1.05; if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
l('CMTooltipWrinkler').textContent = Beautify(sucked); l('CMTooltipWrinkler').textContent = Beautify(sucked);
} }
} }
CM.Disp.UpdateAscendState = function() {
if (Game.OnAscend) {
l('game').style.bottom = '0px';
if (CM.Config.BotBar == 1) CM.Disp.BotBar.style.display = 'none';
if (CM.Config.TimerBar == 1) CM.Disp.TimerBar.style.display = 'none';
}
else {
CM.Disp.ToggleBotBar();
CM.Disp.ToggleTimerBar();
}
CM.Disp.UpdateBackground();
}
CM.Disp.ToggleSayTime = function() { CM.Disp.ToggleSayTime = function() {
if (CM.Config.SayTime == 1) { if (CM.Config.SayTime == 1) {
Game.sayTime = CM.Disp.sayTime; Game.sayTime = CM.Disp.sayTime;
@@ -1578,15 +1725,18 @@ CM.Disp.colorOrange = 'Orange';
CM.Disp.colorRed = 'Red'; CM.Disp.colorRed = 'Red';
CM.Disp.colorPurple = 'Purple'; CM.Disp.colorPurple = 'Purple';
CM.Disp.colorGray = 'Gray'; CM.Disp.colorGray = 'Gray';
CM.Disp.colors = [ CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM.Disp.colorOrange, CM.Disp.colorRed, CM.Disp.colorPurple, CM.Disp.colorGray]; CM.Disp.colorPink = 'Pink';
CM.Disp.colorBrown = 'Brown';
CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM.Disp.colorOrange, CM.Disp.colorRed, CM.Disp.colorPurple, CM.Disp.colorGray, CM.Disp.colorPink, CM.Disp.colorBrown];
CM.Disp.lastGoldenCookieState = 'none'; CM.Disp.lastGoldenCookieState = 'none';
CM.Disp.lastAscendState = -1;
CM.Disp.lastBuyMode = -1;
CM.Disp.lastBuyBulk = -1;
CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y']; CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec']; CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec'];
CM.Disp.TooltipBuy10 = false; CM.Disp.TooltipBuy10 = false;
CM.Disp.TooltipSell = false;
CM.Disp.TooltipSellAll = false;
CM.Disp.TooltipWrinklerArea = 0; CM.Disp.TooltipWrinklerArea = 0;
CM.Disp.TooltipWrinkler = -1; CM.Disp.TooltipWrinkler = -1;

View File

@@ -37,10 +37,24 @@ CM.ReplaceNative = function() {
CM.Disp.UpdateTooltipLocation(); CM.Disp.UpdateTooltipLocation();
} }
CM.Backup.UpdateSpecial = Game.UpdateSpecial;
Game.UpdateSpecial = function() {
if (CM.Config.TimerBar == 1 && CM.Config.TimerBarPos == 0) {
var timerBarHeight = parseInt(CM.Disp.TimerBar.style.height);
Game.mouseY -= timerBarHeight;
CM.Backup.UpdateSpecial();
Game.mouseY += timerBarHeight;
}
else {
CM.Backup.UpdateSpecial();
}
}
CM.Backup.RebuildUpgrades = Game.RebuildUpgrades; CM.Backup.RebuildUpgrades = Game.RebuildUpgrades;
Game.RebuildUpgrades = function() { Game.RebuildUpgrades = function() {
CM.Backup.RebuildUpgrades(); CM.Backup.RebuildUpgrades();
CM.Disp.AddTooltipUpgrade(); CM.Disp.AddTooltipUpgrade();
Game.CalculateGains();
} }
CM.Backup.UpdateMenu = Game.UpdateMenu; CM.Backup.UpdateMenu = Game.UpdateMenu;
@@ -65,40 +79,60 @@ CM.ReplaceNative = function() {
} }
CM.Loop = function() { CM.Loop = function() {
if (CM.Sim.DoSims) { if (CM.Disp.lastAscendState != Game.OnAscend) {
CM.Cache.RemakeIncome(); CM.Disp.lastAscendState = Game.OnAscend;
CM.Cache.RemakeBCI(); CM.Disp.UpdateAscendState();
CM.Cache.RemakeLucky(); }
CM.Cache.RemakeChain(); if (!Game.OnAscend && Game.AscendTimer == 0) {
CM.Cache.RemakeSeaSpec(); if (CM.Sim.DoSims) {
CM.Cache.RemakeSellAllTotal(); CM.Cache.RemakeIncome();
CM.Cache.RemakeBCI();
CM.Cache.RemakeLucky();
CM.Cache.RemakeChain();
CM.Cache.RemakeSeaSpec();
CM.Cache.RemakeSellForChoEgg();
CM.Disp.UpdateBotBarOther();
CM.Disp.UpdateBuildings();
CM.Disp.UpdateUpgrades();
CM.Disp.UpdateBotBarOther(); CM.Sim.DoSims = 0;
CM.Disp.UpdateBuildings(); }
CM.Disp.UpdateUpgrades();
CM.Sim.DoSims = 0; // Update Buildings Color for different buy/sell modes
var updateBuildings = false;
if (CM.Disp.lastBuyMode != Game.buyMode) {
CM.Disp.lastBuyMode = Game.buyMode;
updateBuildings = true;
}
if (CM.Disp.lastBuyBulk != Game.buyBulk) {
CM.Disp.lastBuyBulk = Game.buyBulk;
updateBuildings = true;
}
if (updateBuildings) {
CM.Disp.UpdateBuildings();
}
// Redraw timers
CM.Disp.UpdateBotBarTime();
CM.Disp.UpdateTimerBar();
// Update Tooltip
CM.Disp.UpdateTooltip();
// Update Wrinkler Tooltip
CM.Disp.CheckWrinklerTooltip();
CM.Disp.UpdateWrinklerTooltip();
// Update Title
CM.Disp.UpdateTitle();
// Change menu refresh interval
CM.Disp.RefreshMenu();
} }
// Redraw timers
CM.Disp.UpdateBotBarTime();
CM.Disp.UpdateTimerBar();
// Update Tooltip
CM.Disp.UpdateTooltip();
// Update Wrinkler Tooltip
CM.Disp.CheckWrinklerTooltip();
CM.Disp.UpdateWrinklerTooltip();
// Check Golden Cookies // Check Golden Cookies
CM.Disp.CheckGoldenCookie(); CM.Disp.CheckGoldenCookie();
// Update Title
CM.Disp.UpdateTitle();
// Change menu refresh interval
CM.Disp.RefreshMenu();
} }
CM.Init = function() { CM.Init = function() {
@@ -119,31 +153,35 @@ CM.Init = function() {
} }
CM.DelayInit = function() { CM.DelayInit = function() {
CM.Sim.InitData();
CM.Disp.CreateCssArea(); CM.Disp.CreateCssArea();
CM.Disp.CreateBotBar(); CM.Disp.CreateBotBar();
CM.Disp.CreateTimerBar(); CM.Disp.CreateTimerBar();
CM.Disp.CreateUpgradeBar(); CM.Disp.CreateUpgradeBar();
CM.Disp.CreateWhiteScreen(); CM.Disp.CreateWhiteScreen();
CM.Disp.CreateFavicon();
CM.Disp.CreateGCTimer(); CM.Disp.CreateGCTimer();
CM.Disp.CreateResetTooltip(); CM.Disp.CreateResetTooltip();
CM.Disp.CreateChoEggTooltip(); CM.Disp.CreateChoEggTooltip();
CM.Disp.CreateTooltipWarnCaut(); CM.Disp.CreateTooltipWarnCaut();
CM.Disp.AddTooltipBuild(); CM.Disp.AddTooltipBuild();
CM.Disp.AddTooltipBuildExtra();
CM.Disp.AddWrinklerAreaDetect(); CM.Disp.AddWrinklerAreaDetect();
CM.ReplaceNative(); CM.ReplaceNative();
Game.CalculateGains(); Game.CalculateGains();
CM.LoadConfig(); // Must be after all things are created! CM.LoadConfig(); // Must be after all things are created!
CM.Disp.lastAscendState = Game.OnAscend;
CM.Disp.lastBuyMode = Game.buyMode;
CM.Disp.lastBuyBulk = Game.buyBulk;
if (Game.prefs.popups) Game.Popup('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' loaded!'); if (Game.prefs.popups) Game.Popup('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' loaded!');
else Game.Notify('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' loaded!','','',1); else Game.Notify('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' loaded!', '', '', 1, 1);
Game.Win('Third-party'); Game.Win('Third-party');
} }
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWarnCautBon: 0, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, HC: 1, Wrink: 1, Sea: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3'}}; CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWarnCautBon: 0, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}};
CM.ConfigPrefix = 'CMConfig'; CM.ConfigPrefix = 'CMConfig';
CM.VersionMajor = '1.0466'; CM.VersionMajor = '2';
CM.VersionMinor = '1'; CM.VersionMinor = '3';

View File

@@ -2,78 +2,153 @@
* Sim * * Sim *
*******/ *******/
CM.Sim.BuildingGetPrice = function(basePrice, start, increase) { CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) {
var totalPrice = 0; /*var price=0;
var count = 0; for (var i = Math.max(0 , start); i < Math.max(0, start + increase); i++) {
while(count < increase) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free));
var price = basePrice * Math.pow(Game.priceIncrease, start + count); }
if (Game.Has('Season savings')) price *= 0.99;
if (Game.Has('Santa\'s dominion')) price *= 0.99;
if (Game.Has('Faberge egg')) price *= 0.99;
if (Game.Has('Divine discount')) price *= 0.99;
if (Game.hasAura('Fierce Hoarder')) price *= 0.98;
return Math.ceil(price);*/
var moni = 0;
for (var i = 0; i < increase; i++) {
var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free));
if (Game.Has('Season savings')) price *= 0.99; if (Game.Has('Season savings')) price *= 0.99;
if (Game.Has('Santa\'s dominion')) price *= 0.99; if (Game.Has('Santa\'s dominion')) price *= 0.99;
if (Game.Has('Faberge egg')) price *= 0.99; if (Game.Has('Faberge egg')) price *= 0.99;
totalPrice += Math.ceil(price); if (Game.Has('Divine discount')) price *= 0.99;
count++; if (Game.hasAura('Fierce Hoarder')) price *= 0.98;
price = Math.ceil(price);
moni+=price;
start++;
} }
return totalPrice; return moni;
} }
CM.Sim.BuildingSell = function(basePrice, start, amount) { CM.Sim.BuildingSell = function(basePrice, start, free, amount, emuAura) {
var totalMoni = 0; /*var price=0;
while (amount > 0) { for (var i = Math.max(0, start - amount); i < Math.max(0, start); i++) {
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * 0.5); price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free));
start--;
amount--;
} }
return totalMoni; if (Game.Has('Season savings')) price*=0.99;
if (Game.Has('Santa\'s dominion')) price*=0.99;
if (Game.Has('Faberge egg')) price*=0.99;
if (Game.Has('Divine discount')) price*=0.99;
if (Game.hasAura('Fierce Hoarder')) price*=0.98;
if (Game.hasAura('Earth Shatterer') || emuAura) {
price *= 0.85;
}
else {
price *= 0.5;
}
return Math.ceil(price);*/
var moni=0;
for (var i = 0; i < amount; i++) {
var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free));
if (Game.Has('Season savings')) price *= 0.99;
if (Game.Has('Santa\'s dominion')) price *= 0.99;
if (Game.Has('Faberge egg')) price *= 0.99;
if (Game.Has('Divine discount')) price *= 0.99;
if (Game.hasAura('Fierce Hoarder')) price *= 0.98;
price = Math.ceil(price);
var giveBack = 0.5;
if (Game.hasAura('Earth Shatterer') || emuAura) giveBack=0.85;
price = Math.floor(price * giveBack);
if (start > 0) {
moni += price;
start--;
}
}
return moni;
}
CM.Sim.Has = function(what) {
if (Game.ascensionMode == 1 && Game.Upgrades[what].pool == 'prestige') return 0;
return (CM.Sim.Upgrades[what] ? CM.Sim.Upgrades[what].bought : 0);
} }
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
CM.Sim.Win = function(what) { CM.Sim.Win = function(what) {
if (CM.Sim.Achievements[what]) { if (CM.Sim.Achievements[what]) {
if (CM.Sim.Achievements[what].won == 0) { if (CM.Sim.Achievements[what].won == 0) {
CM.Sim.Achievements[what].won = 1; CM.Sim.Achievements[what].won = 1;
if (Game.Achievements[what].hide != 3) CM.Sim.AchievementsOwned++; if (Game.Achievements[what].pool != 'shadow') CM.Sim.AchievementsOwned++;
} }
} }
} }
eval('CM.Sim.HasAchiev = ' + Game.HasAchiev.toString().split('Game').join('CM.Sim')); eval('CM.Sim.HasAchiev = ' + Game.HasAchiev.toString().split('Game').join('CM.Sim'));
CM.Sim.CookNeedPrest = function(prestige) { eval('CM.Sim.GetHeavenlyMultiplier = ' + Game.GetHeavenlyMultiplier.toString().split('Game').join('CM.Sim'));
return ((Math.pow(((prestige * 2) + 1), 2) - 1) / 8) * 1000000000000;
CM.Sim.hasAura = function(what) {
if (Game.dragonAuras[CM.Sim.dragonAura].name == what || Game.dragonAuras[CM.Sim.dragonAura2].name == what)
return true;
else
return false;
} }
CM.Sim.CopyData = function() { eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString().split('Game.Has').join('CM.Sim.Has').split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades').split('me.synergies').join('Game.Objects[me.name].synergies').split('syn.buildingTie1.amount').join('CM.Sim.Objects[syn.buildingTie1.name].amount').split('syn.buildingTie2.amount').join('CM.Sim.Objects[syn.buildingTie2.name].amount'));
// Other variables
CM.Sim.prestige = Game.prestige['Heavenly chips']; eval('CM.Sim.getGrandmaSynergyUpgradeMultiplier = ' + Game.getGrandmaSynergyUpgradeMultiplier.toString().split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']'));
CM.Sim.UpgradesOwned = Game.UpgradesOwned;
CM.Sim.pledges = Game.pledges; CM.Sim.InitData = function() {
CM.Sim.AchievementsOwned = Game.AchievementsOwned;
// Buildings // Buildings
CM.Sim.Objects = []; CM.Sim.Objects = [];
for (var i in Game.Objects) { for (var i in Game.Objects) {
CM.Sim.Objects[i] = {}; CM.Sim.Objects[i] = {};
var me = Game.Objects[i]; var me = Game.Objects[i];
var you = CM.Sim.Objects[i]; var you = CM.Sim.Objects[i];
you.amount = me.amount; eval('you.cps = ' + me.cps.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura').split('Game.Objects').join('CM.Sim.Objects').split('Game.GetTieredCpsMult').join('CM.Sim.GetTieredCpsMult').split('Game.getGrandmaSynergyUpgradeMultiplier').join('CM.Sim.getGrandmaSynergyUpgradeMultiplier'));
eval('you.cps = ' + me.cps.toString().split('Game.Has').join('CM.Sim.Has').split('Game.Objects').join('CM.Sim.Objects')); // Below is needed for above eval!
you.name = me.name; // Needed for above eval! you.baseCps = me.baseCps;
you.name = me.name;
} }
// Upgrades // Upgrades
CM.Sim.Upgrades = []; CM.Sim.Upgrades = [];
for (var i in Game.Upgrades) { for (var i in Game.Upgrades) {
CM.Sim.Upgrades[i] = {}; CM.Sim.Upgrades[i] = {};
var me = Game.Upgrades[i];
var you = CM.Sim.Upgrades[i];
you.bought = me.bought;
} }
// Achievements // Achievements
CM.Sim.Achievements = []; CM.Sim.Achievements = [];
for (var i in Game.Achievements) { for (var i in Game.Achievements) {
CM.Sim.Achievements[i] = {}; CM.Sim.Achievements[i] = {};
}
}
CM.Sim.CopyData = function() {
// Other variables
CM.Sim.UpgradesOwned = Game.UpgradesOwned;
CM.Sim.pledges = Game.pledges;
CM.Sim.AchievementsOwned = Game.AchievementsOwned;
CM.Sim.heavenlyPower = Game.heavenlyPower;
CM.Sim.prestige = Game.prestige;
CM.Sim.dragonAura = Game.dragonAura;
CM.Sim.dragonAura2 = Game.dragonAura2;
// Buildings
for (var i in Game.Objects) {
var me = Game.Objects[i];
var you = CM.Sim.Objects[i];
you.amount = me.amount;
}
// Upgrades
for (var i in Game.Upgrades) {
var me = Game.Upgrades[i];
var you = CM.Sim.Upgrades[i];
you.bought = me.bought;
}
// Achievements
for (var i in Game.Achievements) {
var me = Game.Achievements[i]; var me = Game.Achievements[i];
var you = CM.Sim.Achievements[i]; var you = CM.Sim.Achievements[i];
you.won = me.won; you.won = me.won;
@@ -84,47 +159,51 @@ CM.Sim.CopyData = function() {
CM.Sim.CalculateGains = function() { CM.Sim.CalculateGains = function() {
CM.Sim.cookiesPs = 0; CM.Sim.cookiesPs = 0;
var mult = 1; var mult = 1;
if (Game.ascensionMode != 1) mult += parseFloat(CM.Sim.prestige) * 0.01 * CM.Sim.heavenlyPower * CM.Sim.GetHeavenlyMultiplier();
var cookieMult = 0;
for (var i in CM.Sim.Upgrades) { for (var i in CM.Sim.Upgrades) {
var me = CM.Sim.Upgrades[i]; var me = CM.Sim.Upgrades[i];
if (me.bought > 0) { if (me.bought > 0) {
if (Game.Upgrades[i].type == 'cookie' && CM.Sim.Has(Game.Upgrades[i].name)) mult += Game.Upgrades[i].power * 0.01; if (Game.Upgrades[i].pool == 'cookie' && CM.Sim.Has(Game.Upgrades[i].name)) mult *= (1 + (typeof(Game.Upgrades[i].power) == 'function' ? Game.Upgrades[i].power(Game.Upgrades[i]) : Game.Upgrades[i].power) * 0.01);
} }
} }
mult += CM.Sim.Has('Specialized chocolate chips') * 0.01;
mult += CM.Sim.Has('Designer cocoa beans') * 0.02;
mult += CM.Sim.Has('Underworld ovens') * 0.03;
mult += CM.Sim.Has('Exotic nuts') * 0.04;
mult += CM.Sim.Has('Arcane sugar') * 0.05;
if (CM.Sim.Has('Increased merriness')) mult += 0.15; mult *= (1 + 0.01 * cookieMult);
if (CM.Sim.Has('Improved jolliness')) mult += 0.15; if (CM.Sim.Has('Specialized chocolate chips')) mult *= 1.01;
if (CM.Sim.Has('A lump of coal')) mult += 0.01; if (CM.Sim.Has('Designer cocoa beans')) mult *= 1.02;
if (CM.Sim.Has('An itchy sweater')) mult += 0.01; if (CM.Sim.Has('Underworld ovens')) mult *= 1.03;
if (CM.Sim.Has('Santa\'s dominion')) mult += 0.5; if (CM.Sim.Has('Exotic nuts')) mult *= 1.04;
if (CM.Sim.Has('Arcane sugar')) mult *= 1.05;
if (CM.Sim.Has('Santa\'s legacy')) mult += (Game.santaLevel + 1) * 0.1; if (CM.Sim.Has('Increased merriness')) mult *= 1.15;
if (CM.Sim.Has('Improved jolliness')) mult *= 1.15;
if (CM.Sim.Has('A lump of coal')) mult *= 1.01;
if (CM.Sim.Has('An itchy sweater')) mult *= 1.01;
if (CM.Sim.Has('Santa\'s dominion')) mult *= 1.2;
var heavenlyMult = 0; if (CM.Sim.Has('Santa\'s legacy')) mult *= 1 + (Game.santaLevel + 1) * 0.03;
if (CM.Sim.Has('Heavenly chip secret')) heavenlyMult += 0.05;
if (CM.Sim.Has('Heavenly cookie stand')) heavenlyMult += 0.20;
if (CM.Sim.Has('Heavenly bakery')) heavenlyMult += 0.25;
if (CM.Sim.Has('Heavenly confectionery')) heavenlyMult += 0.25;
if (CM.Sim.Has('Heavenly key')) heavenlyMult += 0.25;
mult += parseFloat(CM.Sim.prestige) * 0.02 * heavenlyMult;
for (var i in CM.Sim.Objects) { for (var i in CM.Sim.Objects) {
var me = CM.Sim.Objects[i]; var me = CM.Sim.Objects[i];
CM.Sim.cookiesPs += me.amount * (typeof(me.cps) == 'function' ? me.cps() : me.cps); CM.Sim.cookiesPs += me.amount * (typeof(me.cps) == 'function' ? me.cps(me) : me.cps);
} }
if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9; // "egg" if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9; // "egg"
var milkMult = CM.Sim.Has('Santa\'s milk and cookies') ? 1.05 : 1; var milkMult=1;
if (CM.Sim.Has('Kitten helpers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.05 * milkMult); if (CM.Sim.Has('Santa\'s milk and cookies')) milkMult *= 1.05;
if (CM.Sim.Has('Kitten workers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05;
if (CM.Sim.Has('Kitten engineers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); if (CM.Sim.Has('Kitten helpers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult);
if (CM.Sim.Has('Kitten overseers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); if (CM.Sim.Has('Kitten workers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult);
if (CM.Sim.Has('Kitten engineers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult);
if (CM.Sim.Has('Kitten overseers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult);
if (CM.Sim.Has('Kitten managers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); if (CM.Sim.Has('Kitten managers')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult);
if (CM.Sim.Has('Kitten accountants')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult);
if (CM.Sim.Has('Kitten specialists')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult);
if (CM.Sim.Has('Kitten experts')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult);
if (CM.Sim.Has('Kitten angels')) mult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult);
var eggMult = 0; var eggMult = 0;
if (CM.Sim.Has('Chicken egg')) eggMult++; if (CM.Sim.Has('Chicken egg')) eggMult++;
@@ -146,16 +225,34 @@ CM.Sim.CalculateGains = function() {
eggMult += (1 - Math.pow(1 - day / 100, 3)) * 10; eggMult += (1 - Math.pow(1 - day / 100, 3)) * 10;
} }
mult *= (1 + 0.01 * eggMult); mult *= (1 + 0.01 * eggMult);
if (CM.Sim.hasAura('Radiant Appetite')) mult *= 2;
var rawCookiesPs = CM.Sim.cookiesPs * mult; var rawCookiesPs = CM.Sim.cookiesPs * mult;
for (var i = 0; i < Game.cpsAchievs.length / 2; i++) { for (var i in Game.CpsAchievements) {
if (rawCookiesPs >= Game.cpsAchievs[i * 2 + 1]) CM.Sim.Win(Game.cpsAchievs[i * 2]); if (rawCookiesPs >= Game.CpsAchievements[i].threshold) CM.Sim.Win(Game.CpsAchievements[i].name);
} }
if (Game.frenzy > 0) mult *= Game.frenzyPower; if (Game.frenzy > 0) mult *= Game.frenzyPower;
// Pointless?
name = Game.bakeryName.toLowerCase();
if (name == 'orteil') mult *= 0.99;
else if (name == 'ortiel') mult *= 0.98; //or so help me
if (CM.Sim.Has('Elder Covenant')) mult *= 0.95; if (CM.Sim.Has('Elder Covenant')) mult *= 0.95;
if (CM.Sim.Has('Golden switch [off]')) {
var goldenSwitchMult = 1.5;
if (CM.Sim.Has('Residual luck')) {
var upgrades = ['Get lucky', 'Lucky day', 'Serendipity', 'Heavenly luck', 'Lasting fortune', 'Decisive fate'];
for (var i in upgrades) {
if (CM.Sim.Has(upgrades[i])) goldenSwitchMult += 0.1;
}
}
mult *= goldenSwitchMult;
}
CM.Sim.cookiesPs *= mult; CM.Sim.cookiesPs *= mult;
}; };
@@ -170,52 +267,46 @@ CM.Sim.CheckOtherAchiev = function() {
if (CM.Sim.Has('Grandmas\' grandmas')) grandmas++; if (CM.Sim.Has('Grandmas\' grandmas')) grandmas++;
if (CM.Sim.Has('Antigrandmas')) grandmas++; if (CM.Sim.Has('Antigrandmas')) grandmas++;
if (CM.Sim.Has('Rainbow grandmas')) grandmas++; if (CM.Sim.Has('Rainbow grandmas')) grandmas++;
if (CM.Sim.Has('Banker grandmas')) grandmas++;
if (CM.Sim.Has('Priestess grandmas')) grandmas++;
if (CM.Sim.Has('Witch grandmas')) grandmas++;
if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder'); if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder');
var buildingsOwned = 0; var buildingsOwned = 0;
var oneOfEach = 1;
var mathematician = 1; var mathematician = 1;
var base10 = 1; var base10 = 1;
var centennial = 1; var minAmount = 100000;
var centennialhalf = 1;
var bicentennial = 1;
for (var i in CM.Sim.Objects) { for (var i in CM.Sim.Objects) {
buildingsOwned += CM.Sim.Objects[i].amount; buildingsOwned += CM.Sim.Objects[i].amount;
if (!CM.Sim.HasAchiev('One with everything')) { minAmount = Math.min(CM.Sim.Objects[i].amount, minAmount);
if (CM.Sim.Objects[i].amount == 0) oneOfEach = 0;
}
if (!CM.Sim.HasAchiev('Mathematician')) { if (!CM.Sim.HasAchiev('Mathematician')) {
if (CM.Sim.Objects[i].amount < Math.min(128, Math.pow(2, (Game.ObjectsById.length - Game.Objects[i].id) - 1))) mathematician = 0; if (CM.Sim.Objects[i].amount < Math.min(128, Math.pow(2, (Game.ObjectsById.length - Game.Objects[i].id) - 1))) mathematician = 0;
} }
if (!CM.Sim.HasAchiev('Base 10')) { if (!CM.Sim.HasAchiev('Base 10')) {
if (CM.Sim.Objects[i].amount < (Game.ObjectsById.length - Game.Objects[i].id)*10) base10 = 0; if (CM.Sim.Objects[i].amount < (Game.ObjectsById.length - Game.Objects[i].id) * 10) base10 = 0;
}
if (!CM.Sim.HasAchiev('Centennial')) {
if (CM.Sim.Objects[i].amount < 100) centennial = 0;
}
if (!CM.Sim.HasAchiev('Centennial and a half')) {
if (CM.Sim.Objects[i].amount < 150) centennialhalf = 0;
}
if (!CM.Sim.HasAchiev('Bicentennial')) {
if (CM.Sim.Objects[i].amount < 200) bicentennial = 0;
} }
} }
if (oneOfEach == 1) CM.Sim.Win('One with everything'); if (minAmount >= 1) CM.Sim.Win('One with everything');
if (mathematician == 1) CM.Sim.Win('Mathematician'); if (mathematician == 1) CM.Sim.Win('Mathematician');
if (base10 == 1) CM.Sim.Win('Base 10'); if (base10 == 1) CM.Sim.Win('Base 10');
if (centennial == 1) CM.Sim.Win('Centennial'); if (minAmount >= 100) CM.Sim.Win('Centennial');
if (centennialhalf == 1) CM.Sim.Win('Centennial and a half'); if (minAmount >= 150) CM.Sim.Win('Centennial and a half');
if (bicentennial == 1) CM.Sim.Win('Bicentennial'); if (minAmount >= 200) CM.Sim.Win('Bicentennial');
if (minAmount >= 250) CM.Sim.Win('Bicentennial and a half');
if (buildingsOwned >= 100) CM.Sim.Win('Builder'); if (buildingsOwned >= 100) CM.Sim.Win('Builder');
if (buildingsOwned >= 400) CM.Sim.Win('Architect'); if (buildingsOwned >= 500) CM.Sim.Win('Architect');
if (buildingsOwned >= 800) CM.Sim.Win('Engineer'); if (buildingsOwned >= 1000) CM.Sim.Win('Engineer');
if (buildingsOwned >= 1500) CM.Sim.Win('Lord of Constructs'); if (buildingsOwned >= 1500) CM.Sim.Win('Lord of Constructs');
if (CM.Sim.UpgradesOwned >= 20) CM.Sim.Win('Enhancer'); if (CM.Sim.UpgradesOwned >= 20) CM.Sim.Win('Enhancer');
if (CM.Sim.UpgradesOwned >= 50) CM.Sim.Win('Augmenter'); if (CM.Sim.UpgradesOwned >= 50) CM.Sim.Win('Augmenter');
if (CM.Sim.UpgradesOwned >= 100) CM.Sim.Win('Upgrader'); if (CM.Sim.UpgradesOwned >= 100) CM.Sim.Win('Upgrader');
if (CM.Sim.UpgradesOwned >= 150) CM.Sim.Win('Lord of Progress'); if (CM.Sim.UpgradesOwned >= 200) CM.Sim.Win('Lord of Progress');
if (buildingsOwned >= 3000 && CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('Polymath');
if (CM.Sim.Objects['Cursor'].amount + CM.Sim.Objects['Grandma'].amount >= 777) CM.Sim.Win('The elder scrolls');
var hasAllHalloCook = true; var hasAllHalloCook = true;
for (var i in CM.Data.HalloCookies) { for (var i in CM.Data.HalloCookies) {
@@ -245,77 +336,13 @@ CM.Sim.BuyBuildings = function(amount, target) {
if (me.amount >= 200) CM.Sim.Win('The Digital'); if (me.amount >= 200) CM.Sim.Win('The Digital');
if (me.amount >= 300) CM.Sim.Win('Extreme polydactyly'); if (me.amount >= 300) CM.Sim.Win('Extreme polydactyly');
if (me.amount >= 400) CM.Sim.Win('Dr. T'); if (me.amount >= 400) CM.Sim.Win('Dr. T');
if (me.amount >= 500) CM.Sim.Win('Thumbs, phalanges, metacarpals');
} }
else if (i == 'Grandma') { else {
if (me.amount >= 1) CM.Sim.Win('Grandma\'s cookies'); for (var j in Game.Objects[me.name].tieredAchievs) {
if (me.amount >= 50) CM.Sim.Win('Sloppy kisses'); if (me.amount >= Game.Tiers[Game.Objects[me.name].tieredAchievs[j].tier].achievUnlock)
if (me.amount >= 100) CM.Sim.Win('Retirement home'); CM.Sim.Win(Game.Objects[me.name].tieredAchievs[j].name);
if (me.amount >= 150) CM.Sim.Win('Friend of the ancients'); }
if (me.amount >= 200) CM.Sim.Win('Ruler of the ancients');
if (me.amount >= 250) CM.Sim.Win('The old never bothered me anyway');
}
else if (i == 'Farm') {
if (me.amount >= 1) CM.Sim.Win('My first farm');
if (me.amount >= 50) CM.Sim.Win('Reap what you sow');
if (me.amount >= 100) CM.Sim.Win('Farm ill');
if (me.amount >= 150) CM.Sim.Win('Perfected agriculture');
if (me.amount >= 200) CM.Sim.Win('Homegrown');
}
else if (i == 'Factory') {
if (me.amount >= 1) CM.Sim.Win('Production chain');
if (me.amount >= 50) CM.Sim.Win('Industrial revolution');
if (me.amount >= 100) CM.Sim.Win('Global warming');
if (me.amount >= 150) CM.Sim.Win('Ultimate automation');
if (me.amount >= 200) CM.Sim.Win('Technocracy');
}
else if (i == 'Mine') {
if (me.amount >= 1) CM.Sim.Win('You know the drill');
if (me.amount >= 50) CM.Sim.Win('Excavation site');
if (me.amount >= 100) CM.Sim.Win('Hollow the planet');
if (me.amount >= 150) CM.Sim.Win('Can you dig it');
if (me.amount >= 200) CM.Sim.Win('The center of the Earth');
}
else if (i == 'Shipment') {
if (me.amount >= 1) CM.Sim.Win('Expedition');
if (me.amount >= 50) CM.Sim.Win('Galactic highway');
if (me.amount >= 100) CM.Sim.Win('Far far away');
if (me.amount >= 150) CM.Sim.Win('Type II civilization');
if (me.amount >= 200) CM.Sim.Win('We come in peace');
}
else if (i == 'Alchemy lab') {
if (me.amount >= 1) CM.Sim.Win('Transmutation');
if (me.amount >= 50) CM.Sim.Win('Transmogrification');
if (me.amount >= 100) CM.Sim.Win('Gold member');
if (me.amount >= 150) CM.Sim.Win('Gild wars');
if (me.amount >= 200) CM.Sim.Win('The secrets of the universe');
}
else if (i == 'Portal') {
if (me.amount >= 1) CM.Sim.Win('A whole new world');
if (me.amount >= 50) CM.Sim.Win('Now you\'re thinking');
if (me.amount >= 100) CM.Sim.Win('Dimensional shift');
if (me.amount >= 150) CM.Sim.Win('Brain-split');
if (me.amount >= 200) CM.Sim.Win('Realm of the Mad God');
}
else if (i == 'Time machine') {
if (me.amount >= 1) CM.Sim.Win('Time warp');
if (me.amount >= 50) CM.Sim.Win('Alternate timeline');
if (me.amount >= 100) CM.Sim.Win('Rewriting history');
if (me.amount >= 150) CM.Sim.Win('Time duke');
if (me.amount >= 200) CM.Sim.Win('Forever and ever');
}
else if (i == 'Antimatter condenser') {
if (me.amount >= 1) CM.Sim.Win('Antibatter');
if (me.amount >= 50) CM.Sim.Win('Quirky quarks');
if (me.amount >= 100) CM.Sim.Win('It does matter!');
if (me.amount >= 150) CM.Sim.Win('Molecular maestro');
if (me.amount >= 200) CM.Sim.Win('Walk the planck');
}
else if (i == 'Prism') {
if (me.amount >= 1) CM.Sim.Win('Lone photon');
if (me.amount >= 50) CM.Sim.Win('Dazzling glimmer');
if (me.amount >= 100) CM.Sim.Win('Blinding flash');
if (me.amount >= 150) CM.Sim.Win('Unending glow');
if (me.amount >= 200) CM.Sim.Win('Rise and shine');
} }
var lastAchievementsOwned = CM.Sim.AchievementsOwned; var lastAchievementsOwned = CM.Sim.AchievementsOwned;
@@ -336,11 +363,11 @@ CM.Sim.BuyBuildings = function(amount, target) {
CM.Sim.BuyUpgrades = function() { CM.Sim.BuyUpgrades = function() {
CM.Cache.Upgrades = []; CM.Cache.Upgrades = [];
for (var i in Game.Upgrades) { for (var i in Game.Upgrades) {
if (Game.Upgrades[i].bought == 0 && Game.Upgrades[i].unlocked) { if (Game.Upgrades[i].pool == 'toggle' || (Game.Upgrades[i].bought == 0 && Game.Upgrades[i].unlocked && Game.Upgrades[i].pool != 'prestige')) {
CM.Sim.CopyData(); CM.Sim.CopyData();
var me = CM.Sim.Upgrades[i]; var me = CM.Sim.Upgrades[i];
me.bought = 1; me.bought = 1;
if (Game.Upgrades[i].hide != 3) CM.Sim.UpgradesOwned++; if (Game.CountsAsUpgradeOwned(Game.Upgrades[i].pool)) CM.Sim.UpgradesOwned++;
if (i == 'Elder Pledge') { if (i == 'Elder Pledge') {
CM.Sim.pledges++; CM.Sim.pledges++;
@@ -380,19 +407,42 @@ CM.Sim.ResetBonus = function() {
if (Game.cookiesEarned >= 1000000000) CM.Sim.Win('Oblivion'); if (Game.cookiesEarned >= 1000000000) CM.Sim.Win('Oblivion');
if (Game.cookiesEarned >= 1000000000000) CM.Sim.Win('From scratch'); if (Game.cookiesEarned >= 1000000000000) CM.Sim.Win('From scratch');
if (Game.cookiesEarned >= 1000000000000000) CM.Sim.Win('Nihilism'); if (Game.cookiesEarned >= 1000000000000000) CM.Sim.Win('Nihilism');
if (Game.cookiesEarned >= 1000000000000000000) CM.Sim.Win('Dematerialize'); if (Game.cookiesEarned >= 1000000000000000000) CM.Sim.Win('Dematerialize');
if (Game.cookiesEarned >= 1000000000000000000000) CM.Sim.Win('Nil zero zilch'); if (Game.cookiesEarned >= 1000000000000000000000) CM.Sim.Win('Nil zero zilch');
if (Game.cookiesEarned >= 1000000000000000000000000) CM.Sim.Win('Transcendence'); if (Game.cookiesEarned >= 1000000000000000000000000) CM.Sim.Win('Transcendence');
if (Game.cookiesEarned >= 1000000000000000000000000000) CM.Sim.Win('Obliterate'); if (Game.cookiesEarned >= 1000000000000000000000000000) CM.Sim.Win('Obliterate');
if (Game.cookiesEarned >= 1000000000000000000000000000000) CM.Sim.Win('Negative void'); if (Game.cookiesEarned >= 1000000000000000000000000000000) CM.Sim.Win('Negative void');
if (Game.cookiesEarned >= 1000000000000000000000000000000000) CM.Sim.Win('To crumbs, you say?');
CM.Sim.prestige = Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset); if (CM.Sim.Upgrades['Heavenly chip secret'].bought == 0) {
CM.Sim.Upgrades['Heavenly chip secret'].bought = 1;
CM.Sim.UpgradesOwned++;
}
if (CM.Sim.Upgrades['Heavenly cookie stand'].bought == 0) {
CM.Sim.Upgrades['Heavenly cookie stand'].bought = 1;
CM.Sim.UpgradesOwned++;
}
if (CM.Sim.Upgrades['Heavenly bakery'].bought == 0) {
CM.Sim.Upgrades['Heavenly bakery'].bought = 1;
CM.Sim.UpgradesOwned++;
}
if (CM.Sim.Upgrades['Heavenly confectionery'].bought == 0) {
CM.Sim.Upgrades['Heavenly confectionery'].bought = 1;
CM.Sim.UpgradesOwned++;
}
if (CM.Sim.Upgrades['Heavenly key'].bought == 0) {
CM.Sim.Upgrades['Heavenly key'].bought = 1;
CM.Sim.UpgradesOwned++;
}
CM.Sim.prestige = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset));
var lastAchievementsOwned = CM.Sim.AchievementsOwned; var lastAchievementsOwned = CM.Sim.AchievementsOwned;
CM.Sim.CalculateGains(); CM.Sim.CalculateGains();
CM.Sim.CheckOtherAchiev();
if (lastAchievementsOwned != CM.Sim.AchievementsOwned) { if (lastAchievementsOwned != CM.Sim.AchievementsOwned) {
CM.Sim.CalculateGains(); CM.Sim.CalculateGains();
} }