Compare commits

...

45 Commits

Author SHA1 Message Date
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
2063fa9db7 Version change to 1.0466.1 2014-10-31 20:21:09 -04:00
Aktanusa
b9486e9895 Fixed a bug with large numbers and chain calculations (Thanks to an anonymous wikia user) 2014-10-19 22:52:08 -04:00
Aktanusa
cd18b1a402 Added the option to calculate warn/caution with or without the bonus CPU from buying (Issue #30) 2014-10-12 22:20:34 -04:00
Aktanusa
4118343606 Version change 2014-10-12 21:49:22 -04:00
Aktanusa
0941e33c11 Merge branch 'master' into beta
Conflicts:
	CookieMonster.js
	src/Main.js
2014-09-29 22:48:53 -04:00
Aktanusa
971f08b125 Chocolate egg stat now includes popping wrinklers (Issue #27) 2014-09-29 22:21:50 -04:00
Aktanusa
cd7376eaf6 Added sell and sell all amounts to the building tooltips 2014-09-29 21:29:23 -04:00
Aktanusa
89e8ec86db Added a pop all button for wrinklers (Issue #24) 2014-09-27 17:15:25 -04:00
Aktanusa
47b6d4d83f Add amortization to tooltip config (Issue #19) 2014-09-27 16:05:45 -04:00
Aktanusa
e5ce8e5ebd Fixed minor bug with Chocolate Egg stat and fixed how undefined was checked (Thanks The_omniscent_pie) 2014-09-09 20:13:56 -04:00
Aktanusa
fb83f6679a Added amortization stat to building tooltip (Issue #19) 2014-09-08 08:56:12 -04:00
Aktanusa
6957513960 Added Chocolate egg stat (Issue #22) 2014-09-06 18:09:38 -04:00
Aktanusa
c54ecefe4b Hopefully fix jscolor not loading before CM.Init is called (Thanks The_omniscent_pie) 2014-09-06 16:18:06 -04:00
Aktanusa
450db504be Version change 2014-09-06 13:50:08 -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
7 changed files with 932 additions and 580 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**.
@@ -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.
@@ -75,13 +83,33 @@ If you'd rather use the addon as a script via per example *Greasemonkey* or *Tam
javascript:(function() { javascript:(function() {
var checkReady = setInterval(function() { var checkReady = setInterval(function() {
if (Game.ready != undefined && Game.ready) { if (typeof Game.ready !== 'undefined' && Game.ready) {
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js'); Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
clearInterval(checkReady); clearInterval(checkReady);
} }
}, 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

View File

@@ -2,6 +2,14 @@
* Cache * * Cache *
*********/ *********/
CM.Cache.NextNumber = function(base) {
var count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
while (base == base + count) {
count = CM.Cache.NextNumber(count);
}
return (base + count);
}
CM.Cache.RemakeIncome = function() { CM.Cache.RemakeIncome = function() {
// Simulate Building Buys for 1 amount // Simulate Building Buys for 1 amount
CM.Sim.BuyBuildings(1, 'Objects'); CM.Sim.BuyBuildings(1, 'Objects');
@@ -36,6 +44,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;
@@ -76,13 +85,13 @@ CM.Cache.RemakeBCI = function() {
} }
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) {
@@ -98,7 +107,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;
} }
@@ -114,16 +123,11 @@ CM.Cache.RemakeChain = function() {
else { else {
base = CM.Cache.ChainWrathReward; base = CM.Cache.ChainWrathReward;
} }
var count = 1;
if (maxPayout < base) { if (maxPayout < base) {
CM.Cache.Chain = 0; CM.Cache.Chain = 0;
} }
else { else {
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1; CM.Cache.Chain = CM.Cache.NextNumber(base) / 0.25;
while (base == base + count) {
count++;
}
CM.Cache.Chain = (base + count) / 0.25;
} }
CM.Cache.ChainFrenzyReward = CM.Cache.MaxChainMoni(7, maxPayout * 7); CM.Cache.ChainFrenzyReward = CM.Cache.MaxChainMoni(7, maxPayout * 7);
@@ -140,11 +144,7 @@ CM.Cache.RemakeChain = function() {
CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzy = 0;
} }
else { else {
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1; CM.Cache.ChainFrenzy = CM.Cache.NextNumber(base) / 0.25;
while(base == base + count) {
count++;
}
CM.Cache.ChainFrenzy = (base + count) / 0.25;
} }
} }
@@ -155,6 +155,15 @@ CM.Cache.RemakeSeaSpec = function() {
} }
} }
CM.Cache.RemakeSellAllTotal = function() {
var sellTotal = 0;
for (var i in Game.Objects) {
var me = Game.Objects[i];
sellTotal += CM.Sim.BuildingSell(me.basePrice, me.amount, me.amount);
}
CM.Cache.SellAllTotal = sellTotal;
}
CM.Cache.Lucky = 0; CM.Cache.Lucky = 0;
CM.Cache.LuckyReward = 0; CM.Cache.LuckyReward = 0;
CM.Cache.LuckyFrenzy = 0; CM.Cache.LuckyFrenzy = 0;
@@ -166,4 +175,5 @@ CM.Cache.ChainWrathReward = 0;
CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzy = 0;
CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyReward = 0;
CM.Cache.ChainFrenzyWrathReward = 0; CM.Cache.ChainFrenzyWrathReward = 0;
CM.Cache.SellAllTotal = 0;

View File

@@ -13,7 +13,7 @@ CM.LoadConfig = function() {
// Check values // Check values
var mod = false; var mod = false;
for (var i in CM.ConfigDefault) { for (var i in CM.ConfigDefault) {
if (CM.Config[i] == undefined) { if (typeof CM.Config[i] === 'undefined') {
mod = true; mod = true;
CM.Config[i] = CM.ConfigDefault[i]; CM.Config[i] = CM.ConfigDefault[i];
} }
@@ -33,7 +33,7 @@ CM.LoadConfig = function() {
} }
else if (i == 'StatsPref') { else if (i == 'StatsPref') {
for (var j in CM.ConfigDefault.StatsPref) { for (var j in CM.ConfigDefault.StatsPref) {
if (CM.Config[i][j] == undefined || !(CM.Config[i][j] > -1 && CM.Config[i][j] < 2)) { if (typeof CM.Config[i][j] === 'undefined' || !(CM.Config[i][j] > -1 && CM.Config[i][j] < 2)) {
mod = true; mod = true;
CM.Config[i][j] = CM.ConfigDefault[i][j]; CM.Config[i][j] = CM.ConfigDefault[i][j];
} }
@@ -41,7 +41,7 @@ CM.LoadConfig = function() {
} }
else { // Colors else { // Colors
for (var j in CM.ConfigDefault.StatsPref) { for (var j in CM.ConfigDefault.StatsPref) {
if (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];
} }
@@ -51,7 +51,7 @@ CM.LoadConfig = function() {
if (mod) CM.SaveConfig(CM.Config); if (mod) CM.SaveConfig(CM.Config);
CM.Loop(); // Do loop once CM.Loop(); // Do loop once
for (var i in CM.ConfigDefault) { for (var i in CM.ConfigDefault) {
if (i != 'StatsPref' && CM.ConfigData[i].func != undefined) { if (i != 'StatsPref' && typeof CM.ConfigData[i].func !== 'undefined') {
CM.ConfigData[i].func(); CM.ConfigData[i].func();
} }
} }
@@ -73,7 +73,7 @@ CM.ToggleConfigUp = function(config) {
if (CM.Config[config] == CM.ConfigData[config].label.length) { if (CM.Config[config] == CM.ConfigData[config].label.length) {
CM.Config[config] = 0; CM.Config[config] = 0;
} }
if (CM.ConfigData[config].func != undefined) { if (typeof CM.ConfigData[config].func !== 'undefined') {
CM.ConfigData[config].func(); CM.ConfigData[config].func();
} }
l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config); l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config);
@@ -85,7 +85,7 @@ CM.ToggleConfigDown = function(config) {
if (CM.Config[config] < 0) { if (CM.Config[config] < 0) {
CM.Config[config] = CM.ConfigData[config].label.length - 1; CM.Config[config] = CM.ConfigData[config].label.length - 1;
} }
if (CM.ConfigData[config].func != undefined) { if (typeof CM.ConfigData[config].func !== 'undefined') {
CM.ConfigData[config].func(); CM.ConfigData[config].func();
} }
l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config); l(CM.ConfigPrefix + config).innerHTML = CM.Disp.GetConfigDisplay(config);
@@ -119,11 +119,13 @@ CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of t
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', 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'};
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades'}; CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades'};
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip'};
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.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.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.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.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.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it'}; 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.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!'}; CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!'};
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 3 seconds'}; CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds'};
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.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', 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', func: function() {CM.Disp.RefreshScale();}}; 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();}};

View File

@@ -25,15 +25,15 @@ CM.Disp.FormatTime = function(time, format) {
return str; return str;
} }
CM.Disp.GetTimeColor = function(price) { CM.Disp.GetTimeColor = function(price, bank, cps) {
var color; var color;
var text; var text;
if (Game.cookies >= price) { if (bank >= price) {
color = CM.Disp.colorGreen; color = CM.Disp.colorGreen;
text = 'Done!'; text = 'Done!';
} }
else { else {
var time = (price - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked)); var time = (price - bank) / cps;
text = CM.Disp.FormatTime(time); text = CM.Disp.FormatTime(time);
if (time > 300) { if (time > 300) {
color = CM.Disp.colorRed; color = CM.Disp.colorRed;
@@ -48,7 +48,7 @@ CM.Disp.GetTimeColor = function(price) {
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);
} }
} }
@@ -205,7 +205,7 @@ CM.Disp.UpdateBotBarTime = function() {
for (var i in CM.Cache.Objects) { for (var i in CM.Cache.Objects) {
count++; count++;
var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice()); var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice(), Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color; CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color;
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text; CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text;
} }
@@ -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;
@@ -251,7 +251,7 @@ CM.Disp.CreateTimerBar = function() {
colorBar.style.borderTopRightRadius = '10px'; colorBar.style.borderTopRightRadius = '10px';
colorBar.style.borderBottomRightRadius = '10px'; colorBar.style.borderBottomRightRadius = '10px';
} }
if (bars[i].color != undefined) { if (typeof bars[i].color !== 'undefined') {
colorBar.className = CM.Disp.colorBackPre + bars[i].color; colorBar.className = CM.Disp.colorBackPre + bars[i].color;
} }
div.appendChild(colorBar); div.appendChild(colorBar);
@@ -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,8 +328,8 @@ 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) {
@@ -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.colorPurple;
}
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.colorPurple;
}
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++;
@@ -530,13 +543,18 @@ 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);
} }
@@ -682,9 +700,13 @@ 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 = '[W ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
}
else {
titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']'; titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
} }
}
else { else {
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']'; titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
} }
@@ -719,6 +741,18 @@ CM.Disp.CreateResetTooltip = function() {
CM.Disp.ResetTooltipPlaceholder.appendChild(resetTitleDesc); CM.Disp.ResetTooltipPlaceholder.appendChild(resetTitleDesc);
} }
CM.Disp.CreateChoEggTooltip = function() {
CM.Disp.ChoEggTooltipPlaceholder = document.createElement('div');
var choEggTitleDesc = document.createElement('div');
choEggTitleDesc.style.minWidth = '240px';
choEggTitleDesc.style.marginBottom = '4px';
var div = document.createElement('div');
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';
choEggTitleDesc.appendChild(div);
CM.Disp.ChoEggTooltipPlaceholder.appendChild(choEggTitleDesc);
}
CM.Disp.AddMenuPref = function(title) { CM.Disp.AddMenuPref = function(title) {
var header = function(text) { var header = function(text) {
var div = document.createElement('div'); var div = document.createElement('div');
@@ -830,8 +864,10 @@ CM.Disp.AddMenuPref = function(title) {
frag.appendChild(header('Tooltip')); frag.appendChild(header('Tooltip'));
frag.appendChild(listing('Tooltip')); frag.appendChild(listing('Tooltip'));
frag.appendChild(listing('TooltipAmor'));
frag.appendChild(listing('ToolWarnCaut')); frag.appendChild(listing('ToolWarnCaut'));
frag.appendChild(listing('ToolWarnCautPos')); frag.appendChild(listing('ToolWarnCautPos'));
frag.appendChild(listing('ToolWarnCautBon'));
frag.appendChild(listing('ToolWrink')); frag.appendChild(listing('ToolWrink'));
frag.appendChild(header('Statistics')); frag.appendChild(header('Statistics'));
@@ -853,7 +889,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) {
@@ -905,7 +941,7 @@ 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 luckyCur = Math.min(Game.cookies * 0.15, Game.cookiesPs * 60 * 15) + 13;
var luckyReqFrag = document.createDocumentFragment(); var luckyReqFrag = document.createDocumentFragment();
var luckyReqSpan = document.createElement('span'); var luckyReqSpan = document.createElement('span');
@@ -942,7 +978,7 @@ 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 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);
@@ -978,25 +1014,22 @@ CM.Disp.AddMenuStats = function(title) {
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath)))); stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath))));
} }
stats.appendChild(header('Heavenly Chips', 'HC')); // Useless for now; cleanup later
/*stats.appendChild(header('Heavenly Chips', 'HC'));
if (CM.Config.StatsPref.HC) { if (CM.Config.StatsPref.HC) {
var possibleHC = Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset); var possibleHC = Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset);
var neededCook = CM.Sim.CookNeedPrest(possibleHC + 1) - (Game.cookiesEarned + Game.cookiesReset); var neededCook = Game.HowManyCookiesReset(possibleHC + 1) - (Game.cookiesEarned + Game.cookiesReset);
var hcMaxFrag = document.createDocumentFragment(); var hcMaxFrag = document.createDocumentFragment();
hcMaxFrag.appendChild(document.createTextNode(Beautify(possibleHC))); hcMaxFrag.appendChild(document.createTextNode(Beautify(possibleHC)));
var hcMaxSmall = document.createElement('small');
hcMaxSmall.textContent = ' (' + Beautify((possibleHC * 2)) + '%)';
hcMaxFrag.appendChild(hcMaxSmall);
stats.appendChild(listing('Heavenly Chips (MAX)', hcMaxFrag)); stats.appendChild(listing('Heavenly Chips (MAX)', hcMaxFrag));
var hcCurFrag = document.createDocumentFragment(); var hcCurFrag = document.createDocumentFragment();
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips']))); // Remove all chip stats?
var hcCurSmall = document.createElement('small'); //hcCurFrag.appendChild(document.createTextNode(Beautify(Game.heavenlyChipsEarned)));
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)'; //stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
hcCurFrag.appendChild(hcCurSmall);
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook)))); 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)))); stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
// Unneeded?
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');
@@ -1023,19 +1056,35 @@ CM.Disp.AddMenuStats = function(title) {
resetSmall.textContent = ' (' + (increase / 100) + '% of income)'; resetSmall.textContent = ' (' + (increase / 100) + '% of income)';
resetFrag.appendChild(resetSmall); resetFrag.appendChild(resetSmall);
} }
stats.appendChild(listing(resetTitleFrag, resetFrag)); //stats.appendChild(listing(resetTitleFrag, resetFrag));
} }*/
var choEgg = (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')); // Needs to be done for the checking below
if (Game.cpsSucked > 0) { if (Game.cpsSucked > 0) {
stats.appendChild(header('Wrinklers', 'Wrink')); stats.appendChild(header('Wrinklers', 'Wrink'));
if (CM.Config.StatsPref.Wrink) { if (CM.Config.StatsPref.Wrink || (CM.Config.StatsPref.Sea && choEgg)) {
var sucked = 0; var totalSucked = 0;
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;
sucked *= 1.1; if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
if (Game.wrinklers[i].type==1) toSuck *= 3; //shiny wrinklers are an elusive, profitable breed
sucked *= toSuck;
if (Game.Has('Wrinklerspawn')) sucked *= 1.05; if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
stats.appendChild(listing('Rewards of Popping', document.createTextNode(Beautify(sucked)))); totalSucked += sucked;
}
if (CM.Config.StatsPref.Wrink) {
var popAllFrag = document.createDocumentFragment();
popAllFrag.appendChild(document.createTextNode(Beautify(totalSucked) + ' '));
var popAllA = document.createElement('a');
popAllA.textContent = 'Pop All';
popAllA.className = 'option';
popAllA.onclick = function() {Game.CollectWrinklers();};
popAllFrag.appendChild(popAllA);
stats.appendChild(listing('Rewards of Popping', popAllFrag));
}
} }
} }
@@ -1075,7 +1124,8 @@ CM.Disp.AddMenuStats = function(title) {
specDisp = true; specDisp = true;
} }
} }
if (Game.season == 'christmas' || specDisp) {
if (Game.season == 'christmas' || specDisp || choEgg) {
stats.appendChild(header('Season Specials', 'Sea')); stats.appendChild(header('Season Specials', 'Sea'));
if (CM.Config.StatsPref.Sea) { if (CM.Config.StatsPref.Sea) {
if (specDisp) { if (specDisp) {
@@ -1124,6 +1174,31 @@ CM.Disp.AddMenuStats = function(title) {
} }
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec)))); if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
if (choEgg) {
var choEggTitleFrag = document.createDocumentFragment();
choEggTitleFrag.appendChild(document.createTextNode('Chocolate Egg Cookies '))
var choEggTitleSpan = document.createElement('span');
choEggTitleSpan.onmouseout = function() { Game.tooltip.hide(); };
choEggTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(CM.Disp.ChoEggTooltipPlaceholder.innerHTML));};
choEggTitleSpan.style.cursor = 'default';
choEggTitleSpan.style.display = 'inline-block';
choEggTitleSpan.style.height = '10px';
choEggTitleSpan.style.width = '10px';
choEggTitleSpan.style.borderRadius = '5px';
choEggTitleSpan.style.textAlign = 'center';
choEggTitleSpan.style.backgroundColor = '#C0C0C0';
choEggTitleSpan.style.color = 'black';
choEggTitleSpan.style.fontSize = '9px';
choEggTitleSpan.style.verticalAlign = 'bottom';
choEggTitleSpan.textContent = '?';
choEggTitleFrag.appendChild(choEggTitleSpan);
var choEggTotal = Game.cookies + CM.Cache.SellAllTotal;
if (Game.cpsSucked > 0) {
choEggTotal += sucked;
}
choEggTotal *= 0.05;
stats.appendChild(listing(choEggTitleFrag, document.createTextNode(Beautify(choEggTotal))));
}
} }
} }
@@ -1147,15 +1222,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() {
@@ -1211,11 +1290,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';
} }
} }
@@ -1226,7 +1307,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();}');
} }
} }
} }
@@ -1237,28 +1318,46 @@ 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.AddTooltipBuild10 = function() { CM.Disp.AddTooltipBuildExtra = function() {
for (var i in Game.Objects) { for (var i in Game.Objects) {
var me = Game.Objects[i]; var me = Game.Objects[i];
l('buttonBuy10-' + me.id).onmouseover = function() {CM.Disp.TooltipBuy10 = true;}; l('buttonBuy10-' + me.id).onmouseover = function() {CM.Disp.TooltipBuy10 = true;};
l('buttonBuy10-' + me.id).onmouseout = function() {CM.Disp.TooltipBuy10 = false;}; 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) {
var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].amount);
var amortizeAmount = buildPrice - Game.Objects[name].totalCookies;
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>');
}
}
if (CM.Disp.TooltipBuy10) { if (CM.Disp.TooltipBuy10) {
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache.Objects10[name].price)); l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache.Objects10[name].price));
} }
if (CM.Disp.TooltipSell) {
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 (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 { // 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');
@@ -1304,10 +1403,8 @@ 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() {
if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) { if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) {
@@ -1350,25 +1447,28 @@ CM.Disp.UpdateTooltip = function() {
l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)'; l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)';
} }
var timeColor = CM.Disp.GetTimeColor(price); var timeColor = CM.Disp.GetTimeColor(price, Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
l('CMTooltipTime').textContent = timeColor.text; l('CMTooltipTime').textContent = timeColor.text;
l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color; l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color;
} }
if (CM.Config.ToolWarnCaut == 1) { if (CM.Config.ToolWarnCaut == 1) {
var warn = CM.Cache.Lucky;
if (CM.Config.ToolWarnCautBon == 1) {
var bonusNoFren = bonus; var bonusNoFren = bonus;
if (Game.frenzy > 0) { if (Game.frenzy > 0) {
bonusNoFren /= Game.frenzyPower; bonusNoFren /= Game.frenzyPower;
} }
var warn = CM.Cache.Lucky + ((bonusNoFren * 60 * 20) / 0.1); warn += ((bonusNoFren * 60 * 20) / 0.1);
}
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) {
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';
@@ -1449,7 +1549,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;
} }
@@ -1468,12 +1568,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 are an elusive, profitable breed
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;
@@ -1508,11 +1625,14 @@ 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.colors = [ CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM.Disp.colorOrange, CM.Disp.colorRed, CM.Disp.colorPurple, CM.Disp.colorGray];
CM.Disp.lastGoldenCookieState = 'none'; CM.Disp.lastGoldenCookieState = 'none';
CM.Disp.lastAscendState = -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,15 +37,29 @@ 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.recalculateGains = 1;
} }
CM.Backup.UpdateMenu = Game.UpdateMenu; CM.Backup.UpdateMenu = Game.UpdateMenu;
Game.UpdateMenu = function() { Game.UpdateMenu = function() {
if (jscolor == undefined || jscolor.picker == undefined || jscolor.picker.owner == undefined) { if (typeof jscolor.picker === 'undefined' || typeof jscolor.picker.owner === 'undefined') {
CM.Backup.UpdateMenu(); CM.Backup.UpdateMenu();
CM.Disp.AddMenu(); CM.Disp.AddMenu();
} }
@@ -65,12 +79,18 @@ CM.ReplaceNative = function() {
} }
CM.Loop = function() { CM.Loop = function() {
if (CM.Disp.lastAscendState != Game.OnAscend) {
CM.Disp.lastAscendState = Game.OnAscend;
CM.Disp.UpdateAscendState();
}
if (!Game.OnAscend && Game.AscendTimer == 0) {
if (CM.Sim.DoSims) { if (CM.Sim.DoSims) {
CM.Cache.RemakeIncome(); CM.Cache.RemakeIncome();
CM.Cache.RemakeBCI(); CM.Cache.RemakeBCI();
CM.Cache.RemakeLucky(); CM.Cache.RemakeLucky();
CM.Cache.RemakeChain(); CM.Cache.RemakeChain();
CM.Cache.RemakeSeaSpec(); CM.Cache.RemakeSeaSpec();
CM.Cache.RemakeSellAllTotal();
CM.Disp.UpdateBotBarOther(); CM.Disp.UpdateBotBarOther();
CM.Disp.UpdateBuildings(); CM.Disp.UpdateBuildings();
@@ -90,9 +110,6 @@ CM.Loop = function() {
CM.Disp.CheckWrinklerTooltip(); CM.Disp.CheckWrinklerTooltip();
CM.Disp.UpdateWrinklerTooltip(); CM.Disp.UpdateWrinklerTooltip();
// Check Golden Cookies
CM.Disp.CheckGoldenCookie();
// Update Title // Update Title
CM.Disp.UpdateTitle(); CM.Disp.UpdateTitle();
@@ -100,6 +117,10 @@ CM.Loop = function() {
CM.Disp.RefreshMenu(); CM.Disp.RefreshMenu();
} }
// Check Golden Cookies
CM.Disp.CheckGoldenCookie();
}
CM.Init = function() { CM.Init = function() {
var proceed = true; var proceed = true;
if (Game.version != CM.VersionMajor) { if (Game.version != CM.VersionMajor) {
@@ -107,6 +128,18 @@ CM.Init = function() {
} }
if (proceed) { if (proceed) {
CM.Disp.AddJscolor(); CM.Disp.AddJscolor();
var delay = setInterval(function() {
if (typeof jscolor !== 'undefined') {
CM.DelayInit();
clearInterval(delay);
}
}, 500);
}
}
CM.DelayInit = function() {
CM.Sim.InitData();
CM.Disp.CreateCssArea(); CM.Disp.CreateCssArea();
CM.Disp.CreateBotBar(); CM.Disp.CreateBotBar();
CM.Disp.CreateTimerBar(); CM.Disp.CreateTimerBar();
@@ -114,24 +147,25 @@ CM.Init = function() {
CM.Disp.CreateWhiteScreen(); CM.Disp.CreateWhiteScreen();
CM.Disp.CreateGCTimer(); CM.Disp.CreateGCTimer();
CM.Disp.CreateResetTooltip(); CM.Disp.CreateResetTooltip();
CM.Disp.CreateChoEggTooltip();
CM.Disp.CreateTooltipWarnCaut(); CM.Disp.CreateTooltipWarnCaut();
CM.Disp.AddTooltipBuild(); CM.Disp.AddTooltipBuild();
CM.Disp.AddTooltipBuild10(); //CM.Disp.AddTooltipBuildExtra(); // The extra per building was removed
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;
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, ToolWarnCaut: 1, ToolWarnCautPos: 1, 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, 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.ConfigPrefix = 'CMConfig'; CM.ConfigPrefix = 'CMConfig';
CM.VersionMajor = '1.0465'; CM.VersionMajor = '2';
CM.VersionMinor = '12'; CM.VersionMinor = '1';

View File

@@ -10,60 +10,108 @@ CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
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;
if (Game.Has('Divine discount')) price *= 0.99;
if (Game.hasAura('Fierce Hoarder')) price *= 0.98;
totalPrice += Math.ceil(price); totalPrice += Math.ceil(price);
count++; count++;
} }
return totalPrice; return totalPrice;
} }
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim')); CM.Sim.BuildingSell = function(basePrice, start, amount) {
var totalMoni = 0;
while (amount > 0) {
var giveBack = 0.5;
if (Game.hasAura('Earth Shatterer')) giveBack = 0.85;
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * giveBack);
start--;
amount--;
}
return totalMoni;
}
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);
}
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'];
CM.Sim.UpgradesOwned = Game.UpgradesOwned;
CM.Sim.pledges = Game.pledges;
CM.Sim.AchievementsOwned = Game.AchievementsOwned;
eval('CM.Sim.getGrandmaSynergyUpgradeMultiplier = ' + Game.getGrandmaSynergyUpgradeMultiplier.toString().split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']'));
CM.Sim.InitData = function() {
// 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;
@@ -74,47 +122,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++;
@@ -137,15 +189,33 @@ CM.Sim.CalculateGains = function() {
} }
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;
}; };
@@ -162,50 +232,42 @@ CM.Sim.CheckOtherAchiev = function() {
if (CM.Sim.Has('Rainbow grandmas')) grandmas++; if (CM.Sim.Has('Rainbow grandmas')) grandmas++;
if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder'); if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder');
// Redo?
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 (minAmount >= 1) CM.Sim.Win('One with everything');
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 (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) {
@@ -235,77 +297,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;
@@ -326,11 +324,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++;
@@ -370,14 +368,12 @@ 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);
var lastAchievementsOwned = CM.Sim.AchievementsOwned; var lastAchievementsOwned = CM.Sim.AchievementsOwned;