Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f120f047dc | ||
|
|
13a49e3e39 | ||
|
|
762a6919e7 | ||
|
|
77ba8c4e84 | ||
|
|
914a5e2ff3 | ||
|
|
6bced494f8 | ||
|
|
ee35136130 | ||
|
|
85ed508010 | ||
|
|
0ea31f6e94 | ||
|
|
5ceffa9d63 | ||
|
|
07b67be07e | ||
|
|
5aa21209b9 | ||
|
|
14c1afa30d | ||
|
|
f36869d528 | ||
|
|
da3200612b | ||
|
|
d870823c07 | ||
|
|
b134e3b45c | ||
|
|
07944e366a | ||
|
|
dbcec54b3d | ||
|
|
f1ccbf8937 | ||
|
|
56903744d8 | ||
|
|
2ff6ea0746 | ||
|
|
a251c5a906 | ||
|
|
35ddafdca7 | ||
|
|
2063fa9db7 | ||
|
|
b9486e9895 | ||
|
|
cd18b1a402 | ||
|
|
4118343606 | ||
|
|
0941e33c11 | ||
|
|
da917ebc6b | ||
|
|
c34bcbfc3a | ||
|
|
af05f9907c | ||
|
|
9a2d96d043 | ||
|
|
28c5909e1f | ||
|
|
1418c17ec9 | ||
|
|
e877f05a06 |
561
CookieMonster.js
561
CookieMonster.js
@@ -21,6 +21,14 @@ CM.Sim = {};
|
|||||||
/*********
|
/*********
|
||||||
* 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
|
||||||
@@ -56,6 +64,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;
|
||||||
@@ -96,13 +105,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) {
|
||||||
@@ -118,7 +127,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;
|
||||||
}
|
}
|
||||||
@@ -134,16 +143,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);
|
||||||
@@ -160,11 +164,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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,9 +321,10 @@ CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information
|
|||||||
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip'};
|
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();}};
|
||||||
|
|
||||||
@@ -385,7 +386,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;
|
||||||
@@ -409,7 +410,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) {
|
||||||
@@ -418,7 +419,7 @@ CM.Disp.Beautify = function(num) {
|
|||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return CM.Backup.Beautify(num);
|
return CM.Backup.Beautify(num, frac);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -573,7 +574,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;
|
||||||
@@ -632,7 +633,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);
|
||||||
@@ -664,8 +666,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) {
|
||||||
@@ -708,6 +710,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;
|
||||||
@@ -722,6 +728,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++;
|
||||||
@@ -867,13 +881,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);
|
||||||
}
|
}
|
||||||
@@ -1019,8 +1038,12 @@ 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 {
|
else {
|
||||||
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
|
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
|
||||||
@@ -1182,6 +1205,7 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(listing('TooltipAmor'));
|
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'));
|
||||||
@@ -1203,7 +1227,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) {
|
||||||
@@ -1255,7 +1279,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');
|
||||||
@@ -1292,7 +1316,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);
|
||||||
|
|
||||||
@@ -1328,25 +1352,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');
|
||||||
@@ -1373,24 +1394,28 @@ 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
|
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 || (CM.Config.StatsPref.Sea && choEgg)) {
|
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;
|
||||||
|
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;
|
||||||
|
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';
|
||||||
@@ -1535,15 +1560,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() {
|
||||||
@@ -1599,11 +1628,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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1614,7 +1645,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();}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1625,7 +1656,7 @@ 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();}}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1663,7 +1694,8 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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');
|
||||||
@@ -1709,9 +1741,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() {
|
||||||
@@ -1761,19 +1791,22 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CM.Config.ToolWarnCaut == 1) {
|
if (CM.Config.ToolWarnCaut == 1) {
|
||||||
var bonusNoFren = bonus;
|
var warn = CM.Cache.Lucky;
|
||||||
if (Game.frenzy > 0) {
|
if (CM.Config.ToolWarnCautBon == 1) {
|
||||||
bonusNoFren /= Game.frenzyPower;
|
var bonusNoFren = bonus;
|
||||||
|
if (Game.frenzy > 0) {
|
||||||
|
bonusNoFren /= Game.frenzyPower;
|
||||||
|
}
|
||||||
|
warn += ((bonusNoFren * 60 * 20) / 0.1);
|
||||||
}
|
}
|
||||||
var warn = CM.Cache.Lucky + ((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';
|
||||||
|
|
||||||
@@ -1854,7 +1887,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;
|
||||||
}
|
}
|
||||||
@@ -1873,12 +1906,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;
|
||||||
@@ -1913,6 +1963,7 @@ 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'];
|
||||||
@@ -1967,10 +2018,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.recalculateGains = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Backup.UpdateMenu = Game.UpdateMenu;
|
CM.Backup.UpdateMenu = Game.UpdateMenu;
|
||||||
@@ -1995,40 +2060,46 @@ 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.RemakeSellAllTotal();
|
||||||
|
|
||||||
|
CM.Disp.UpdateBotBarOther();
|
||||||
|
CM.Disp.UpdateBuildings();
|
||||||
|
CM.Disp.UpdateUpgrades();
|
||||||
|
|
||||||
CM.Disp.UpdateBotBarOther();
|
CM.Sim.DoSims = 0;
|
||||||
CM.Disp.UpdateBuildings();
|
}
|
||||||
CM.Disp.UpdateUpgrades();
|
|
||||||
|
// Redraw timers
|
||||||
CM.Sim.DoSims = 0;
|
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() {
|
||||||
@@ -2049,6 +2120,7 @@ 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();
|
||||||
@@ -2059,29 +2131,30 @@ CM.DelayInit = function() {
|
|||||||
CM.Disp.CreateChoEggTooltip();
|
CM.Disp.CreateChoEggTooltip();
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
CM.Disp.AddTooltipBuildExtra();
|
//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, TooltipAmor: 0, 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 = '13';
|
CM.VersionMinor = '1';
|
||||||
|
|
||||||
/*******
|
/*******
|
||||||
* Sim *
|
* Sim *
|
||||||
*******/
|
*******/
|
||||||
|
|
||||||
CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
CM.Sim.BuildingGetPrice = function(basePrice, start, increase) {
|
||||||
var totalPrice = 0;
|
var totalPrice = 0;
|
||||||
var count = 0;
|
var count = 0;
|
||||||
while(count < increase) {
|
while(count < increase) {
|
||||||
@@ -2089,6 +2162,8 @@ 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++;
|
||||||
}
|
}
|
||||||
@@ -2098,61 +2173,97 @@ CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
|||||||
CM.Sim.BuildingSell = function(basePrice, start, amount) {
|
CM.Sim.BuildingSell = function(basePrice, start, amount) {
|
||||||
var totalMoni = 0;
|
var totalMoni = 0;
|
||||||
while (amount > 0) {
|
while (amount > 0) {
|
||||||
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * 0.5);
|
var giveBack = 0.5;
|
||||||
|
if (Game.hasAura('Earth Shatterer')) giveBack = 0.85;
|
||||||
|
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * giveBack);
|
||||||
start--;
|
start--;
|
||||||
amount--;
|
amount--;
|
||||||
}
|
}
|
||||||
return totalMoni;
|
return totalMoni;
|
||||||
}
|
}
|
||||||
|
|
||||||
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
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'];
|
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;
|
||||||
@@ -2163,47 +2274,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++;
|
||||||
@@ -2225,16 +2340,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2251,50 +2384,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 (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) {
|
||||||
@@ -2324,77 +2449,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;
|
||||||
@@ -2415,11 +2476,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++;
|
||||||
@@ -2459,14 +2520,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;
|
||||||
|
|
||||||
|
|||||||
62
README.md
62
README.md
@@ -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 – 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
|
||||||
|
|
||||||
@@ -101,7 +129,7 @@ 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
|
* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer
|
||||||
30
src/Cache.js
30
src/Cache.js
@@ -1,6 +1,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
|
||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,9 +122,10 @@ CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information
|
|||||||
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip'};
|
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();}};
|
||||||
|
|
||||||
|
|||||||
160
src/Disp.js
160
src/Disp.js
@@ -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,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,8 +700,12 @@ 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 {
|
else {
|
||||||
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
|
titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']';
|
||||||
@@ -845,6 +867,7 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(listing('TooltipAmor'));
|
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'));
|
||||||
@@ -866,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) {
|
||||||
@@ -918,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');
|
||||||
@@ -955,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);
|
||||||
|
|
||||||
@@ -991,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');
|
||||||
@@ -1036,24 +1056,28 @@ 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
|
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 || (CM.Config.StatsPref.Sea && choEgg)) {
|
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;
|
||||||
|
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;
|
||||||
|
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';
|
||||||
@@ -1198,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() {
|
||||||
@@ -1262,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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1277,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();}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1288,7 +1318,7 @@ 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();}}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1326,7 +1356,8 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
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');
|
||||||
@@ -1372,9 +1403,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() {
|
||||||
@@ -1424,19 +1453,22 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CM.Config.ToolWarnCaut == 1) {
|
if (CM.Config.ToolWarnCaut == 1) {
|
||||||
var bonusNoFren = bonus;
|
var warn = CM.Cache.Lucky;
|
||||||
if (Game.frenzy > 0) {
|
if (CM.Config.ToolWarnCautBon == 1) {
|
||||||
bonusNoFren /= Game.frenzyPower;
|
var bonusNoFren = bonus;
|
||||||
|
if (Game.frenzy > 0) {
|
||||||
|
bonusNoFren /= Game.frenzyPower;
|
||||||
|
}
|
||||||
|
warn += ((bonusNoFren * 60 * 20) / 0.1);
|
||||||
}
|
}
|
||||||
var warn = CM.Cache.Lucky + ((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';
|
||||||
|
|
||||||
@@ -1517,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;
|
||||||
}
|
}
|
||||||
@@ -1536,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;
|
||||||
@@ -1576,6 +1625,7 @@ 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'];
|
||||||
|
|||||||
90
src/Main.js
90
src/Main.js
@@ -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.recalculateGains = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Backup.UpdateMenu = Game.UpdateMenu;
|
CM.Backup.UpdateMenu = Game.UpdateMenu;
|
||||||
@@ -65,40 +79,46 @@ 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.RemakeSellAllTotal();
|
||||||
|
|
||||||
|
CM.Disp.UpdateBotBarOther();
|
||||||
|
CM.Disp.UpdateBuildings();
|
||||||
|
CM.Disp.UpdateUpgrades();
|
||||||
|
|
||||||
CM.Disp.UpdateBotBarOther();
|
CM.Sim.DoSims = 0;
|
||||||
CM.Disp.UpdateBuildings();
|
}
|
||||||
CM.Disp.UpdateUpgrades();
|
|
||||||
|
// Redraw timers
|
||||||
CM.Sim.DoSims = 0;
|
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,6 +139,7 @@ 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();
|
||||||
@@ -129,21 +150,22 @@ CM.DelayInit = function() {
|
|||||||
CM.Disp.CreateChoEggTooltip();
|
CM.Disp.CreateChoEggTooltip();
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
CM.Disp.AddTooltipBuildExtra();
|
//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, TooltipAmor: 0, 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 = '13';
|
CM.VersionMinor = '1';
|
||||||
|
|
||||||
|
|||||||
278
src/Sim.js
278
src/Sim.js
@@ -2,7 +2,7 @@
|
|||||||
* Sim *
|
* Sim *
|
||||||
*******/
|
*******/
|
||||||
|
|
||||||
CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
CM.Sim.BuildingGetPrice = function(basePrice, start, increase) {
|
||||||
var totalPrice = 0;
|
var totalPrice = 0;
|
||||||
var count = 0;
|
var count = 0;
|
||||||
while(count < increase) {
|
while(count < increase) {
|
||||||
@@ -10,6 +10,8 @@ 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++;
|
||||||
}
|
}
|
||||||
@@ -19,61 +21,97 @@ CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
|||||||
CM.Sim.BuildingSell = function(basePrice, start, amount) {
|
CM.Sim.BuildingSell = function(basePrice, start, amount) {
|
||||||
var totalMoni = 0;
|
var totalMoni = 0;
|
||||||
while (amount > 0) {
|
while (amount > 0) {
|
||||||
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * 0.5);
|
var giveBack = 0.5;
|
||||||
|
if (Game.hasAura('Earth Shatterer')) giveBack = 0.85;
|
||||||
|
totalMoni += Math.floor(CM.Sim.BuildingGetPrice(basePrice, start, 1) * giveBack);
|
||||||
start--;
|
start--;
|
||||||
amount--;
|
amount--;
|
||||||
}
|
}
|
||||||
return totalMoni;
|
return totalMoni;
|
||||||
}
|
}
|
||||||
|
|
||||||
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
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'];
|
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 +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++;
|
||||||
@@ -146,16 +188,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;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -172,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 (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 +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;
|
||||||
@@ -336,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++;
|
||||||
@@ -380,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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user