Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f429888727 | ||
|
|
4ae550e4ab | ||
|
|
952ee91f7c | ||
|
|
a9fe2df233 | ||
|
|
d453499014 | ||
|
|
9395bebd46 | ||
|
|
75c52362b9 | ||
|
|
448922dbda | ||
|
|
686238e6e5 | ||
|
|
d9c21a43bf |
527
CookieMonster.js
527
CookieMonster.js
@@ -23,11 +23,14 @@ CM.Sim = {};
|
|||||||
*********/
|
*********/
|
||||||
|
|
||||||
CM.Cache.RemakeIncome = function() {
|
CM.Cache.RemakeIncome = function() {
|
||||||
// Simulate Building Buys
|
// Simulate Building Buys for 1 amount
|
||||||
CM.Sim.BuyBuildings();
|
CM.Sim.BuyBuildings(1, 'Objects');
|
||||||
|
|
||||||
// Simulate Upgrade Buys
|
// Simulate Upgrade Buys
|
||||||
CM.Sim.BuyUpgrades();
|
CM.Sim.BuyUpgrades();
|
||||||
|
|
||||||
|
// Simulate Building Buys for 10 amount
|
||||||
|
CM.Sim.BuyBuildings(10, 'Objects10');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsBCI = function() {
|
CM.Cache.RemakeBuildingsBCI = function() {
|
||||||
@@ -65,12 +68,31 @@ CM.Cache.RemakeUpgradeBCI = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildings10BCI = function() {
|
||||||
|
for (var i in CM.Cache.Objects10) {
|
||||||
|
CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, 10);
|
||||||
|
CM.Cache.Objects10[i].bci = CM.Cache.Objects10[i].price / CM.Cache.Objects10[i].bonus;
|
||||||
|
var color = '';
|
||||||
|
if (CM.Cache.Objects10[i].bci <= 0 || CM.Cache.Objects10[i].bci == 'Infinity') color = CM.Disp.colorGray;
|
||||||
|
else if (CM.Cache.Objects10[i].bci < CM.Disp.min) color = CM.Disp.colorBlue;
|
||||||
|
else if (CM.Cache.Objects10[i].bci == CM.Disp.min) color = CM.Disp.colorGreen;
|
||||||
|
else if (CM.Cache.Objects10[i].bci == CM.Disp.max) color = CM.Disp.colorRed;
|
||||||
|
else if (CM.Cache.Objects10[i].bci > CM.Disp.max) color = CM.Disp.colorPurple;
|
||||||
|
else if (CM.Cache.Objects10[i].bci > CM.Disp.mid) color = CM.Disp.colorOrange;
|
||||||
|
else color = CM.Disp.colorYellow;
|
||||||
|
CM.Cache.Objects10[i].color = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBCI = function() {
|
CM.Cache.RemakeBCI = function() {
|
||||||
// Buildings
|
// Buildings for 1 amount
|
||||||
CM.Cache.RemakeBuildingsBCI();
|
CM.Cache.RemakeBuildingsBCI();
|
||||||
|
|
||||||
// Upgrades
|
// Upgrades
|
||||||
CM.Cache.RemakeUpgradeBCI();
|
CM.Cache.RemakeUpgradeBCI();
|
||||||
|
|
||||||
|
// Buildings for 10 amount
|
||||||
|
CM.Cache.RemakeBuildings10BCI();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeLucky = function() {
|
CM.Cache.RemakeLucky = function() {
|
||||||
@@ -113,18 +135,37 @@ CM.Cache.RemakeChain = function() {
|
|||||||
base = CM.Cache.ChainWrathReward;
|
base = CM.Cache.ChainWrathReward;
|
||||||
}
|
}
|
||||||
var count = 1;
|
var count = 1;
|
||||||
|
if (maxPayout < base) {
|
||||||
|
CM.Cache.Chain = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
||||||
while (base == base + count) {
|
while (base == base + count) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
CM.Cache.Chain = (base + count) / 0.25;
|
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);
|
||||||
|
|
||||||
count = 1;
|
CM.Cache.ChainFrenzyWrathReward = CM.Cache.MaxChainMoni(6, maxPayout * 7);
|
||||||
while(CM.Cache.ChainFrenzyReward == CM.Cache.ChainFrenzyReward + count) {
|
|
||||||
|
if (CM.Cache.ChainFrenzyReward > CM.Cache.ChainFrenzyWrathReward) {
|
||||||
|
base = CM.Cache.ChainFrenzyReward;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
base = CM.Cache.ChainFrenzyWrathReward;
|
||||||
|
}
|
||||||
|
if ((maxPayout * 7) < base) {
|
||||||
|
CM.Cache.ChainFrenzy = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
||||||
|
while(base == base + count) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
CM.Cache.ChainFrenzy = (CM.Cache.ChainFrenzyReward + count) / 0.25;
|
CM.Cache.ChainFrenzy = (base + count) / 0.25;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeSeaSpec = function() {
|
CM.Cache.RemakeSeaSpec = function() {
|
||||||
@@ -144,6 +185,7 @@ CM.Cache.ChainReward = 0;
|
|||||||
CM.Cache.ChainWrathReward = 0;
|
CM.Cache.ChainWrathReward = 0;
|
||||||
CM.Cache.ChainFrenzy = 0;
|
CM.Cache.ChainFrenzy = 0;
|
||||||
CM.Cache.ChainFrenzyReward = 0;
|
CM.Cache.ChainFrenzyReward = 0;
|
||||||
|
CM.Cache.ChainFrenzyWrathReward = 0;
|
||||||
/**********
|
/**********
|
||||||
* Config *
|
* Config *
|
||||||
**********/
|
**********/
|
||||||
@@ -159,15 +201,31 @@ CM.LoadConfig = function() {
|
|||||||
// Check values
|
// Check values
|
||||||
var mod = false;
|
var mod = false;
|
||||||
for (var i in CM.ConfigDefault) {
|
for (var i in CM.ConfigDefault) {
|
||||||
|
if (i != 'StatsPref') {
|
||||||
if (CM.Config[i] == undefined || !(CM.Config[i] > -1 && CM.Config[i] < CM.ConfigData[i].label.length)) {
|
if (CM.Config[i] == undefined || !(CM.Config[i] > -1 && CM.Config[i] < CM.ConfigData[i].label.length)) {
|
||||||
mod = true;
|
mod = true;
|
||||||
CM.Config[i] = CM.ConfigDefault[i];
|
CM.Config[i] = CM.ConfigDefault[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else { // Statistics Preferences
|
||||||
|
if (CM.Config[i] == undefined) {
|
||||||
|
mod = true;
|
||||||
|
CM.Config[i] = CM.ConfigDefault[i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var j in CM.ConfigDefault.StatsPref) {
|
||||||
|
if (CM.Config[i][j] == undefined || !(CM.Config[i][j] > -1 && CM.Config[i][j] < 2)) {
|
||||||
|
mod = true;
|
||||||
|
CM.Config[i][j] = CM.ConfigDefault[i][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mod) CM.SaveConfig(CM.Config);
|
if (mod) CM.SaveConfig(CM.Config);
|
||||||
CM.Loop(); // Do loop once
|
CM.Loop(); // Do loop once
|
||||||
for (var i in CM.ConfigDefault) {
|
for (var i in CM.ConfigDefault) {
|
||||||
if (CM.ConfigData[i].func != undefined) {
|
if (i != 'StatsPref' && CM.ConfigData[i].func != undefined) {
|
||||||
CM.ConfigData[i].func();
|
CM.ConfigData[i].func();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,6 +266,16 @@ CM.ToggleConfigDown = function(config) {
|
|||||||
CM.SaveConfig(CM.Config);
|
CM.SaveConfig(CM.Config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.ToggleStatsConfig = function(config) {
|
||||||
|
if (CM.Config.StatsPref[config] == 0) {
|
||||||
|
CM.Config.StatsPref[config]++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Config.StatsPref[config]--;
|
||||||
|
}
|
||||||
|
CM.SaveConfig(CM.Config);
|
||||||
|
}
|
||||||
|
|
||||||
CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', func: function() {CM.Disp.ToggleBotBar();}};
|
CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', func: function() {CM.Disp.ToggleBotBar();}};
|
||||||
CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', func: function() {CM.Disp.ToggleTimerBar();}};
|
CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', func: function() {CM.Disp.ToggleTimerBar();}};
|
||||||
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
@@ -883,14 +951,7 @@ CM.Disp.UpdateTitle = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.AddMenu = function() {
|
CM.Disp.AddMenuPref = function(title) {
|
||||||
var title = function() {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'title';
|
|
||||||
div.style.color = CM.Disp.colorBlue;
|
|
||||||
div.textContent = 'Cookie Monster Goodies';
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
var header = function(text) {
|
var header = function(text) {
|
||||||
var div = document.createElement('div');
|
var div = document.createElement('div');
|
||||||
div.className = 'listing';
|
div.className = 'listing';
|
||||||
@@ -902,7 +963,6 @@ CM.Disp.AddMenu = function() {
|
|||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Game.onMenu == 'prefs') {
|
|
||||||
var frag = document.createDocumentFragment();
|
var frag = document.createDocumentFragment();
|
||||||
|
|
||||||
frag.appendChild(title());
|
frag.appendChild(title());
|
||||||
@@ -927,10 +987,10 @@ CM.Disp.AddMenu = function() {
|
|||||||
frag.appendChild(listing('TimerBar'));
|
frag.appendChild(listing('TimerBar'));
|
||||||
frag.appendChild(listing('BuildColor'));
|
frag.appendChild(listing('BuildColor'));
|
||||||
frag.appendChild(listing('UpBarColor'));
|
frag.appendChild(listing('UpBarColor'));
|
||||||
|
|
||||||
frag.appendChild(header('Golden Cookie/Season Popup Emphasis'));
|
frag.appendChild(header('Golden Cookie/Season Popup Emphasis'));
|
||||||
frag.appendChild(listing('Flash'));
|
frag.appendChild(listing('Flash'));
|
||||||
frag.appendChild(listing('Sound'));
|
frag.appendChild(listing('Sound'));
|
||||||
|
|
||||||
var volConfig = 'Volume';
|
var volConfig = 'Volume';
|
||||||
var volume = document.createElement('div');
|
var volume = document.createElement('div');
|
||||||
volume.className = 'listing';
|
volume.className = 'listing';
|
||||||
@@ -952,20 +1012,21 @@ CM.Disp.AddMenu = function() {
|
|||||||
volLabel.textContent = CM.ConfigData[volConfig].desc;
|
volLabel.textContent = CM.ConfigData[volConfig].desc;
|
||||||
volume.appendChild(volLabel);
|
volume.appendChild(volLabel);
|
||||||
frag.appendChild(volume);
|
frag.appendChild(volume);
|
||||||
|
|
||||||
frag.appendChild(listing('GCTimer'));
|
frag.appendChild(listing('GCTimer'));
|
||||||
frag.appendChild(listing('Title'));
|
frag.appendChild(listing('Title'));
|
||||||
|
|
||||||
frag.appendChild(header('Tooltip'));
|
frag.appendChild(header('Tooltip'));
|
||||||
frag.appendChild(listing('Tooltip'));
|
frag.appendChild(listing('Tooltip'));
|
||||||
frag.appendChild(listing('ToolWarnCaut'));
|
frag.appendChild(listing('ToolWarnCaut'));
|
||||||
frag.appendChild(listing('ToolWarnCautPos'));
|
frag.appendChild(listing('ToolWarnCautPos'));
|
||||||
|
|
||||||
frag.appendChild(header('Statistics'));
|
frag.appendChild(header('Statistics'));
|
||||||
frag.appendChild(listing('Stats'));
|
frag.appendChild(listing('Stats'));
|
||||||
frag.appendChild(listing('UpStats'));
|
frag.appendChild(listing('UpStats'));
|
||||||
frag.appendChild(listing('SayTime'));
|
frag.appendChild(listing('SayTime'));
|
||||||
|
|
||||||
frag.appendChild(header('Other'));
|
frag.appendChild(header('Other'));
|
||||||
frag.appendChild(listing('Scale'));
|
frag.appendChild(listing('Scale'));
|
||||||
|
|
||||||
var resDef = document.createElement('div');
|
var resDef = document.createElement('div');
|
||||||
resDef.className = 'listing';
|
resDef.className = 'listing';
|
||||||
var resDefBut = document.createElement('a');
|
var resDefBut = document.createElement('a');
|
||||||
@@ -979,17 +1040,90 @@ CM.Disp.AddMenu = function() {
|
|||||||
|
|
||||||
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'); CM.Disp.RefreshScale();};
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddMenuStats = function(title) {
|
||||||
|
var header = function(text, config) {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'listing';
|
||||||
|
div.style.padding = '5px 16px';
|
||||||
|
div.style.opacity = '0.7';
|
||||||
|
div.style.fontSize = '17px';
|
||||||
|
div.style.fontFamily = '\"Kavoon\", Georgia, serif';
|
||||||
|
div.appendChild(document.createTextNode(text + ' '));
|
||||||
|
var span = document.createElement('span');
|
||||||
|
span.style.cursor = 'pointer';
|
||||||
|
span.style.display = 'inline-block';
|
||||||
|
span.style.height = '14px';
|
||||||
|
span.style.width = '14px';
|
||||||
|
span.style.borderRadius = '7px';
|
||||||
|
span.style.textAlign = 'center';
|
||||||
|
span.style.backgroundColor = '#C0C0C0';
|
||||||
|
span.style.color = 'black';
|
||||||
|
span.style.fontSize = '13px';
|
||||||
|
span.style.verticalAlign = 'middle';
|
||||||
|
span.textContent = CM.Config.StatsPref[config] ? '-' : '+';
|
||||||
|
span.onclick = function() {CM.ToggleStatsConfig(config); Game.UpdateMenu();};
|
||||||
|
div.appendChild(span);
|
||||||
|
return div;
|
||||||
}
|
}
|
||||||
else if (CM.Config.Stats == 1 && Game.onMenu == 'stats') {
|
|
||||||
var stats = document.createElement('div');
|
var stats = document.createElement('div');
|
||||||
stats.className = 'subsection';
|
stats.className = 'subsection';
|
||||||
|
|
||||||
|
stats.appendChild(title());
|
||||||
|
|
||||||
|
var listing = function(name, text) {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'listing';
|
||||||
|
var b = document.createElement('b');
|
||||||
|
if (typeof name == 'string') b.appendChild(document.createTextNode(name));
|
||||||
|
else b.appendChild(name); // fragment
|
||||||
|
b.appendChild(document.createTextNode(' : '));
|
||||||
|
div.appendChild(b);
|
||||||
|
div.appendChild(text);
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
||||||
|
if (CM.Config.StatsPref.Lucky) {
|
||||||
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
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.1, Game.cookiesPs * 60 * 20) + 13;
|
||||||
|
|
||||||
|
var luckyReqFrag = document.createDocumentFragment();
|
||||||
|
var luckyReqSpan = document.createElement('span');
|
||||||
|
luckyReqSpan.style.fontWeight = 'bold';
|
||||||
|
luckyReqSpan.style.color = luckyColor;
|
||||||
|
luckyReqSpan.textContent = Beautify(CM.Cache.Lucky);
|
||||||
|
luckyReqFrag.appendChild(luckyReqSpan);
|
||||||
|
if (luckyTime != '') {
|
||||||
|
var luckyReqSmall = document.createElement('small');
|
||||||
|
luckyReqSmall.textContent = ' (' + luckyTime + ')';
|
||||||
|
luckyReqFrag.appendChild(luckyReqSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag));
|
||||||
|
var luckyReqFrenFrag = document.createDocumentFragment();
|
||||||
|
var luckyReqFrenSpan = document.createElement('span');
|
||||||
|
luckyReqFrenSpan.style.fontWeight = 'bold';
|
||||||
|
luckyReqFrenSpan.style.color = luckyColorFrenzy;
|
||||||
|
luckyReqFrenSpan.textContent = Beautify(CM.Cache.LuckyFrenzy);
|
||||||
|
luckyReqFrenFrag.appendChild(luckyReqFrenSpan);
|
||||||
|
if (luckyTimeFrenzy != '') {
|
||||||
|
var luckyReqFrenSmall = document.createElement('small');
|
||||||
|
luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')';
|
||||||
|
luckyReqFrenFrag.appendChild(luckyReqFrenSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.LuckyReward))));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.LuckyRewardFrenzy))));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (CUR)', document.createTextNode(Beautify(luckyCur))));
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Chain Cookies', 'Chain'));
|
||||||
|
if (CM.Config.StatsPref.Chain) {
|
||||||
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
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;
|
||||||
@@ -998,9 +1132,108 @@ CM.Disp.AddMenu = function() {
|
|||||||
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);
|
||||||
|
|
||||||
|
var chainReqFrag = document.createDocumentFragment();
|
||||||
|
var chainReqSpan = document.createElement('span');
|
||||||
|
chainReqSpan.style.fontWeight = 'bold';
|
||||||
|
chainReqSpan.style.color = chainColor;
|
||||||
|
chainReqSpan.textContent = Beautify(CM.Cache.Chain);
|
||||||
|
chainReqFrag.appendChild(chainReqSpan);
|
||||||
|
if (chainTime != '') {
|
||||||
|
var chainReqSmall = document.createElement('small');
|
||||||
|
chainReqSmall.textContent = ' (' + chainTime + ')';
|
||||||
|
chainReqFrag.appendChild(chainReqSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag));
|
||||||
|
var chainReqFrenFrag = document.createDocumentFragment();
|
||||||
|
var chainReqFrenSpan = document.createElement('span');
|
||||||
|
chainReqFrenSpan.style.fontWeight = 'bold';
|
||||||
|
chainReqFrenSpan.style.color = chainColorFrenzy;
|
||||||
|
chainReqFrenSpan.textContent = Beautify(CM.Cache.ChainFrenzy);
|
||||||
|
chainReqFrenFrag.appendChild(chainReqFrenSpan);
|
||||||
|
if (chainTimeFrenzy != '') {
|
||||||
|
var chainReqFrenSmall = document.createElement('small');
|
||||||
|
chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')';
|
||||||
|
chainReqFrenFrag.appendChild(chainReqFrenSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.ChainReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainWrathReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyWrathReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (CUR)', document.createTextNode(Beautify(chainCur))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath))));
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Heavenly Chips', '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 = CM.Sim.CookNeedPrest(possibleHC + 1) - (Game.cookiesEarned + Game.cookiesReset);
|
||||||
|
|
||||||
|
var hcMaxFrag = document.createDocumentFragment();
|
||||||
|
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));
|
||||||
|
var hcCurFrag = document.createDocumentFragment();
|
||||||
|
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips'])));
|
||||||
|
var hcCurSmall = document.createElement('small');
|
||||||
|
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)';
|
||||||
|
hcCurFrag.appendChild(hcCurSmall);
|
||||||
|
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
|
||||||
|
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
|
||||||
|
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
|
||||||
|
var resetTitleFrag = document.createDocumentFragment();
|
||||||
|
resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income '))
|
||||||
|
var resetTitleSpan = document.createElement('span');
|
||||||
|
resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); };
|
||||||
|
var resetTitlePlaceholder = document.createElement('div');
|
||||||
|
var resetTitleDesc = document.createElement('div');
|
||||||
|
resetTitleDesc.style.minWidth = '260px';
|
||||||
|
resetTitleDesc.style.marginBottom = '4px';
|
||||||
|
var resetTitleDiv = document.createElement('div');
|
||||||
|
resetTitleDiv.style.textAlign = 'left';
|
||||||
|
resetTitleDiv.textContent = 'The bonus income you would get from new heavenly chips/reset achievements if you have the same buildings/upgrades after reset';
|
||||||
|
resetTitleDesc.appendChild(resetTitleDiv);
|
||||||
|
resetTitlePlaceholder.appendChild(resetTitleDesc);
|
||||||
|
resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(resetTitlePlaceholder.innerHTML));};
|
||||||
|
resetTitleSpan.style.cursor = 'default';
|
||||||
|
resetTitleSpan.style.display = 'inline-block';
|
||||||
|
resetTitleSpan.style.height = '10px';
|
||||||
|
resetTitleSpan.style.width = '10px';
|
||||||
|
resetTitleSpan.style.borderRadius = '5px';
|
||||||
|
resetTitleSpan.style.textAlign = 'center';
|
||||||
|
resetTitleSpan.style.backgroundColor = '#C0C0C0';
|
||||||
|
resetTitleSpan.style.color = 'black';
|
||||||
|
resetTitleSpan.style.fontSize = '9px';
|
||||||
|
resetTitleSpan.style.verticalAlign = 'bottom';
|
||||||
|
resetTitleSpan.textContent = '?';
|
||||||
|
resetTitleFrag.appendChild(resetTitleSpan);
|
||||||
|
var resetBonus = CM.Sim.ResetBonus();
|
||||||
|
var resetFrag = document.createDocumentFragment();
|
||||||
|
resetFrag.appendChild(document.createTextNode(Beautify(resetBonus)));
|
||||||
|
var increase = Math.round(resetBonus / Game.cookiesPs * 10000);
|
||||||
|
if (isFinite(increase) && increase != 0) {
|
||||||
|
var resetSmall = document.createElement('small');
|
||||||
|
resetSmall.textContent = ' (' + (increase / 100) + '% of income)';
|
||||||
|
resetFrag.appendChild(resetSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing(resetTitleFrag, resetFrag));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Game.cpsSucked > 0) {
|
||||||
|
stats.appendChild(header('Wrinklers', 'Wrink'));
|
||||||
|
if (CM.Config.StatsPref.Wrink) {
|
||||||
|
var sucked = 0;
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
sucked += Game.wrinklers[i].sucked;
|
||||||
|
}
|
||||||
|
sucked *= 1.1;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
stats.appendChild(listing('Rewards of Popping', document.createTextNode(Beautify(sucked))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var specDisp = false;
|
var specDisp = false;
|
||||||
var halloCook = [];
|
var halloCook = [];
|
||||||
for (var i in CM.Data.HalloCookies) {
|
for (var i in CM.Data.HalloCookies) {
|
||||||
@@ -1037,109 +1270,14 @@ CM.Disp.AddMenu = function() {
|
|||||||
specDisp = true;
|
specDisp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var listing = function(name, text) {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'listing';
|
|
||||||
var b = document.createElement('b');
|
|
||||||
b.textContent = name + ' : ';
|
|
||||||
div.appendChild(b);
|
|
||||||
div.appendChild(text);
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
stats.appendChild(title());
|
|
||||||
stats.appendChild(header('Lucky Cookies'));
|
|
||||||
var luckyReqFrag = document.createDocumentFragment();
|
|
||||||
var luckyReqSpan = document.createElement('span');
|
|
||||||
luckyReqSpan.style.fontWeight = 'bold';
|
|
||||||
luckyReqSpan.style.color = luckyColor;
|
|
||||||
luckyReqSpan.textContent = Beautify(CM.Cache.Lucky);
|
|
||||||
luckyReqFrag.appendChild(luckyReqSpan);
|
|
||||||
if (luckyTime != '') {
|
|
||||||
var luckyReqSmall = document.createElement('small');
|
|
||||||
luckyReqSmall.textContent = ' (' + luckyTime + ')';
|
|
||||||
luckyReqFrag.appendChild(luckyReqSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag));
|
|
||||||
var luckyReqFrenFrag = document.createDocumentFragment();
|
|
||||||
var luckyReqFrenSpan = document.createElement('span');
|
|
||||||
luckyReqFrenSpan.style.fontWeight = 'bold';
|
|
||||||
luckyReqFrenSpan.style.color = luckyColorFrenzy;
|
|
||||||
luckyReqFrenSpan.textContent = Beautify(CM.Cache.LuckyFrenzy);
|
|
||||||
luckyReqFrenFrag.appendChild(luckyReqFrenSpan);
|
|
||||||
if (luckyTimeFrenzy != '') {
|
|
||||||
var luckyReqFrenSmall = document.createElement('small');
|
|
||||||
luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')';
|
|
||||||
luckyReqFrenFrag.appendChild(luckyReqFrenSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.LuckyReward))));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.LuckyRewardFrenzy))));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (CUR)', document.createTextNode(Beautify(luckyCur))));
|
|
||||||
stats.appendChild(header('Chain Cookies'));
|
|
||||||
var chainReqFrag = document.createDocumentFragment();
|
|
||||||
var chainReqSpan = document.createElement('span');
|
|
||||||
chainReqSpan.style.fontWeight = 'bold';
|
|
||||||
chainReqSpan.style.color = chainColor;
|
|
||||||
chainReqSpan.textContent = Beautify(CM.Cache.Chain);
|
|
||||||
chainReqFrag.appendChild(chainReqSpan);
|
|
||||||
if (chainTime != '') {
|
|
||||||
var chainReqSmall = document.createElement('small');
|
|
||||||
chainReqSmall.textContent = ' (' + chainTime + ')';
|
|
||||||
chainReqFrag.appendChild(chainReqSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag));
|
|
||||||
var chainReqFrenFrag = document.createDocumentFragment();
|
|
||||||
var chainReqFrenSpan = document.createElement('span');
|
|
||||||
chainReqFrenSpan.style.fontWeight = 'bold';
|
|
||||||
chainReqFrenSpan.style.color = chainColorFrenzy;
|
|
||||||
chainReqFrenSpan.textContent = Beautify(CM.Cache.ChainFrenzy);
|
|
||||||
chainReqFrenFrag.appendChild(chainReqFrenSpan);
|
|
||||||
if (chainTimeFrenzy != '') {
|
|
||||||
var chainReqFrenSmall = document.createElement('small');
|
|
||||||
chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')';
|
|
||||||
chainReqFrenFrag.appendChild(chainReqFrenSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.ChainReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainWrathReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (CUR)', document.createTextNode(Beautify(chainCur))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath))));
|
|
||||||
stats.appendChild(header('Heavenly Chips'));
|
|
||||||
var hcMaxFrag = document.createDocumentFragment();
|
|
||||||
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));
|
|
||||||
var hcCurFrag = document.createDocumentFragment();
|
|
||||||
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips'])));
|
|
||||||
var hcCurSmall = document.createElement('small');
|
|
||||||
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)';
|
|
||||||
hcCurFrag.appendChild(hcCurSmall);
|
|
||||||
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
|
|
||||||
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
|
|
||||||
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
|
|
||||||
stats.appendChild(listing('Reset Bonus Income', document.createTextNode(Beautify(CM.Sim.ResetBonus()))));
|
|
||||||
if (Game.cpsSucked > 0) {
|
|
||||||
stats.appendChild(header('Wrinklers'));
|
|
||||||
var sucked = 0;
|
|
||||||
for (var i in Game.wrinklers) {
|
|
||||||
sucked += Game.wrinklers[i].sucked;
|
|
||||||
}
|
|
||||||
sucked *= 1.1;
|
|
||||||
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
|
||||||
stats.appendChild(listing('Rewards of Popping', document.createTextNode(Beautify(sucked))));
|
|
||||||
}
|
|
||||||
if (Game.season == 'christmas' || specDisp) {
|
if (Game.season == 'christmas' || specDisp) {
|
||||||
stats.appendChild(header('Season Specials'));
|
stats.appendChild(header('Season Specials', 'Sea'));
|
||||||
|
if (CM.Config.StatsPref.Sea) {
|
||||||
if (specDisp) {
|
if (specDisp) {
|
||||||
var createSpecDisp = function(theSpecDisp) {
|
var createSpecDisp = function(theSpecDisp) {
|
||||||
var frag = document.createDocumentFragment();
|
var frag = document.createDocumentFragment();
|
||||||
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
|
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
|
||||||
span = document.createElement('span');
|
var span = document.createElement('span');
|
||||||
span.onmouseout = function() { Game.tooltip.hide(); };
|
span.onmouseout = function() { Game.tooltip.hide(); };
|
||||||
var placeholder = document.createElement('div');
|
var placeholder = document.createElement('div');
|
||||||
var missing = document.createElement('div');
|
var missing = document.createElement('div');
|
||||||
@@ -1182,8 +1320,25 @@ CM.Disp.AddMenu = function() {
|
|||||||
|
|
||||||
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
l('menu').insertBefore(stats, l('menu').childNodes[2]);
|
l('menu').insertBefore(stats, l('menu').childNodes[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddMenu = function() {
|
||||||
|
var title = function() {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'title';
|
||||||
|
div.style.color = CM.Disp.colorBlue;
|
||||||
|
div.textContent = 'Cookie Monster Goodies';
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Game.onMenu == 'prefs') {
|
||||||
|
CM.Disp.AddMenuPref(title);
|
||||||
|
}
|
||||||
|
else if (CM.Config.Stats == 1 && Game.onMenu == 'stats') {
|
||||||
|
CM.Disp.AddMenuStats(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1275,9 +1430,20 @@ CM.Disp.AddTooltipUpgrade = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddTooltipBuild10 = function() {
|
||||||
|
for (var i in Game.Objects) {
|
||||||
|
var me = Game.Objects[i];
|
||||||
|
l('buttonBuy10-' + me.id).onmouseover = function() {CM.Disp.TooltipBuy10 = true;};
|
||||||
|
l('buttonBuy10-' + me.id).onmouseout = function() {CM.Disp.TooltipBuy10 = false;};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Disp.Tooltip = function(type, name) {
|
CM.Disp.Tooltip = function(type, name) {
|
||||||
if (type == 'b') {
|
if (type == 'b') {
|
||||||
l('tooltip').innerHTML = Game.Objects[name].tooltip();
|
l('tooltip').innerHTML = Game.Objects[name].tooltip();
|
||||||
|
if (CM.Disp.TooltipBuy10) {
|
||||||
|
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache.Objects10[name].price));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
CM.Disp.TooltipUpgradeBack[name]();
|
CM.Disp.TooltipUpgradeBack[name]();
|
||||||
@@ -1336,6 +1502,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
var price;
|
var price;
|
||||||
var bonus;
|
var bonus;
|
||||||
if (CM.Disp.tooltipType == 'b') {
|
if (CM.Disp.tooltipType == 'b') {
|
||||||
|
if (!CM.Disp.TooltipBuy10) {
|
||||||
bonus = CM.Cache.Objects[CM.Disp.tooltipName].bonus;
|
bonus = CM.Cache.Objects[CM.Disp.tooltipName].bonus;
|
||||||
price = Game.Objects[CM.Disp.tooltipName].getPrice();
|
price = Game.Objects[CM.Disp.tooltipName].getPrice();
|
||||||
if (CM.Config.Tooltip == 1) {
|
if (CM.Config.Tooltip == 1) {
|
||||||
@@ -1344,6 +1511,16 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
l('CMTooltipBCI').style.color = CM.Cache.Objects[CM.Disp.tooltipName].color;
|
l('CMTooltipBCI').style.color = CM.Cache.Objects[CM.Disp.tooltipName].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
bonus = CM.Cache.Objects10[CM.Disp.tooltipName].bonus;
|
||||||
|
price = CM.Cache.Objects10[CM.Disp.tooltipName].price;
|
||||||
|
if (CM.Config.Tooltip == 1) {
|
||||||
|
l('CMTooltipBorder').style.color = CM.Cache.Objects10[CM.Disp.tooltipName].color;
|
||||||
|
l('CMTooltipBCI').textContent = Beautify(CM.Cache.Objects10[CM.Disp.tooltipName].bci, 2);
|
||||||
|
l('CMTooltipBCI').style.color = CM.Cache.Objects10[CM.Disp.tooltipName].color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
bonus = CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].bonus;
|
bonus = CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].bonus;
|
||||||
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
||||||
@@ -1421,6 +1598,76 @@ CM.Disp.UpdateTooltipWarnCaut = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddWrinklerAreaDetect = function() {
|
||||||
|
l('backgroundLeftCanvas').onmouseover = function() {CM.Disp.TooltipWrinklerArea = 1;};
|
||||||
|
l('backgroundLeftCanvas').onmouseout = function() {
|
||||||
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
|
Game.tooltip.hide();
|
||||||
|
for (var i = 0; i < 10; i++) {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.CheckWrinklerTooltip = function() {
|
||||||
|
if (CM.Disp.TooltipWrinklerArea == 1) {
|
||||||
|
var showingTooltip = false;
|
||||||
|
var mouseInWrinkler = function (x, y, rect) {
|
||||||
|
var dx = x + Math.sin(-rect.r) * (-(rect.h / 2 - rect.o)), dy = y + Math.cos(-rect.r) * (-(rect.h / 2 - rect.o));
|
||||||
|
var h1 = Math.sqrt(dx * dx + dy * dy);
|
||||||
|
var currA = Math.atan2(dy, dx);
|
||||||
|
var newA = currA - rect.r;
|
||||||
|
var x2 = Math.cos(newA) * h1;
|
||||||
|
var y2 = Math.sin(newA) * h1;
|
||||||
|
if (x2 > -0.5 * rect.w && x2 < 0.5 * rect.w && y2 > -0.5 * rect.h && y2 < 0.5 * rect.h) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
var me = Game.wrinklers[i];
|
||||||
|
var rect = {w: 100, h: 200, r: (-me.r) * Math.PI / 180, o: 10};
|
||||||
|
if (me.phase > 0 && Game.LeftBackground && Game.mouseX < Game.LeftBackground.canvas.width && mouseInWrinkler(Game.mouseX - me.x, Game.mouseY - me.y, rect)) {
|
||||||
|
if (CM.Disp.TooltipWrinklerCache[i] == 0) {
|
||||||
|
var placeholder = document.createElement('div');
|
||||||
|
var wrinkler = document.createElement('div');
|
||||||
|
wrinkler.style.minWidth = '120px';
|
||||||
|
wrinkler.style.marginBottom = '4px';
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.style.textAlign = 'center';
|
||||||
|
div.id = 'CMTooltipWrinkler';
|
||||||
|
wrinkler.appendChild(div);
|
||||||
|
placeholder.appendChild(wrinkler);
|
||||||
|
Game.tooltip.draw(this, escape(placeholder.innerHTML), 'wrink');
|
||||||
|
CM.Disp.TooltipWrinkler = i;
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 1;
|
||||||
|
}
|
||||||
|
showingTooltip = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!showingTooltip) {
|
||||||
|
Game.tooltip.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.UpdateWrinklerTooltip = function() {
|
||||||
|
if (l('CMTooltipWrinkler') != null) {
|
||||||
|
var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked;
|
||||||
|
sucked *= 1.1;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
l('CMTooltipWrinkler').textContent = Beautify(sucked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.UpdateTooltipWrinklerLocation = function() {
|
||||||
|
if (Game.tooltip.origin == 'wrink') {
|
||||||
|
Game.tooltip.tta.style.left = (Game.mouseX + l('tooltip').offsetWidth + 20) + 'px';
|
||||||
|
Game.tooltip.tta.style.right = 'auto';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
@@ -1455,6 +1702,15 @@ CM.Disp.lastGoldenCookieState = 'none';
|
|||||||
CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
|
CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
|
||||||
CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec'];
|
CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec'];
|
||||||
|
|
||||||
|
CM.Disp.TooltipBuy10 = false;
|
||||||
|
|
||||||
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
|
CM.Disp.TooltipWrinkler = -1;
|
||||||
|
CM.Disp.TooltipWrinklerCache = [];
|
||||||
|
for (var i = 0; i < 10; i++) {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/********
|
/********
|
||||||
* Main *
|
* Main *
|
||||||
********/
|
********/
|
||||||
@@ -1490,6 +1746,7 @@ CM.ReplaceNative = function() {
|
|||||||
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
|
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
|
||||||
Game.tooltip.update = function() {
|
Game.tooltip.update = function() {
|
||||||
CM.Backup.tooltip.updateMod();
|
CM.Backup.tooltip.updateMod();
|
||||||
|
CM.Disp.UpdateTooltipWrinklerLocation();
|
||||||
CM.Disp.UpdateTooltipWarnCaut();
|
CM.Disp.UpdateTooltipWarnCaut();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1540,6 +1797,10 @@ CM.Loop = function() {
|
|||||||
// Update Tooltip
|
// Update Tooltip
|
||||||
CM.Disp.UpdateTooltip();
|
CM.Disp.UpdateTooltip();
|
||||||
|
|
||||||
|
// Update Wrinkler Tooltip
|
||||||
|
CM.Disp.CheckWrinklerTooltip();
|
||||||
|
CM.Disp.UpdateWrinklerTooltip();
|
||||||
|
|
||||||
// Check Golden Cookies
|
// Check Golden Cookies
|
||||||
CM.Disp.CheckGoldenCookie();
|
CM.Disp.CheckGoldenCookie();
|
||||||
|
|
||||||
@@ -1563,6 +1824,8 @@ CM.Init = function() {
|
|||||||
CM.Disp.CreateGCTimer();
|
CM.Disp.CreateGCTimer();
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
|
CM.Disp.AddTooltipBuild10();
|
||||||
|
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!
|
||||||
@@ -1574,16 +1837,30 @@ CM.Init = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCTimer: 1, Title: 1, Tooltip: 1, ToolWarnCaut: 1, ToolWarnCautPos: 0, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2};
|
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCTimer: 1, Title: 1, Tooltip: 1, ToolWarnCaut: 1, ToolWarnCautPos: 0, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, HC: 1, Wrink: 1, Sea: 1}};
|
||||||
CM.ConfigPrefix = 'CMConfig';
|
CM.ConfigPrefix = 'CMConfig';
|
||||||
|
|
||||||
CM.VersionMajor = '1.0465';
|
CM.VersionMajor = '1.0465';
|
||||||
CM.VersionMinor = '6';
|
CM.VersionMinor = '8';
|
||||||
|
|
||||||
/*******
|
/*******
|
||||||
* Sim *
|
* Sim *
|
||||||
*******/
|
*******/
|
||||||
|
|
||||||
|
CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
||||||
|
var totalPrice = 0;
|
||||||
|
var count = 0;
|
||||||
|
while(count < increase) {
|
||||||
|
var price = basePrice * Math.pow(Game.priceIncrease, start + count);
|
||||||
|
if (Game.Has('Season savings')) price *= 0.99;
|
||||||
|
if (Game.Has('Santa\'s dominion')) price *= 0.99;
|
||||||
|
if (Game.Has('Faberge egg')) price *= 0.99;
|
||||||
|
totalPrice += Math.ceil(price);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return totalPrice;
|
||||||
|
}
|
||||||
|
|
||||||
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
||||||
|
|
||||||
CM.Sim.Win = function(what) {
|
CM.Sim.Win = function(what) {
|
||||||
@@ -1788,12 +2065,12 @@ CM.Sim.CheckOtherAchiev = function() {
|
|||||||
if (hasAllChristCook) CM.Sim.Win('Let it snow');
|
if (hasAllChristCook) CM.Sim.Win('Let it snow');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Sim.BuyBuildings = function() {
|
CM.Sim.BuyBuildings = function(amount, target) {
|
||||||
CM.Cache.Objects = [];
|
CM.Cache[target] = [];
|
||||||
for (var i in Game.Objects) {
|
for (var i in Game.Objects) {
|
||||||
CM.Sim.CopyData();
|
CM.Sim.CopyData();
|
||||||
var me = CM.Sim.Objects[i];
|
var me = CM.Sim.Objects[i];
|
||||||
me.amount++;
|
me.amount += amount;
|
||||||
|
|
||||||
if (i == 'Cursor') {
|
if (i == 'Cursor') {
|
||||||
if (me.amount >= 1) CM.Sim.Win('Click');
|
if (me.amount >= 1) CM.Sim.Win('Click');
|
||||||
@@ -1886,8 +2163,8 @@ CM.Sim.BuyBuildings = function() {
|
|||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.Objects[i] = {};
|
CM.Cache[target][i] = {};
|
||||||
CM.Cache.Objects[i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
27
README.md
27
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**.
|
||||||
|
|
||||||
@@ -50,14 +50,11 @@ Do note though that, although these upgrades have no direct value, if buying the
|
|||||||
|
|
||||||
## Bookmarklet
|
## Bookmarklet
|
||||||
|
|
||||||
Simply use like the previous addon, create a bookmark and set this as the URL. Then when in the game, click on that bookmark.
|
Copy this code and save it as a bookmark. Paste it in the URL section. To activate, click the bookmark when the game's open.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
javascript: (function () {
|
javascript: (function () {
|
||||||
var load = document.createElement('script');
|
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
||||||
load.setAttribute('type', 'text/javascript');
|
|
||||||
load.setAttribute('src', 'http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
|
||||||
document.head.appendChild(load);
|
|
||||||
}());
|
}());
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -76,16 +73,9 @@ If you'd rather use the addon as a script via per example *Greasemonkey* or *Tam
|
|||||||
// @grant none
|
// @grant none
|
||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
var init = Game.Init;
|
(function () {
|
||||||
Game.Init = function() {
|
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
||||||
init();
|
}());
|
||||||
(function () {
|
|
||||||
var load = document.createElement('script');
|
|
||||||
load.setAttribute('type', 'text/javascript');
|
|
||||||
load.setAttribute('src', 'http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
|
||||||
document.head.appendChild(load);
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Bugs and suggestions
|
# Bugs and suggestions
|
||||||
@@ -96,10 +86,7 @@ Before submitting a bug, make sure to give a shot at the latest version of the a
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
javascript: (function () {
|
javascript: (function () {
|
||||||
var load = document.createElement('script');
|
Game.LoadMod('https://raw.githubusercontent.com/Aktanusa/CookieMonster/dev/CookieMonster.js');
|
||||||
load.setAttribute('type', 'text/javascript');
|
|
||||||
load.setAttribute('src', 'https://raw.githubusercontent.com/Aktanusa/CookieMonster/dev/CookieMonster.js');
|
|
||||||
document.head.appendChild(load);
|
|
||||||
}());
|
}());
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
54
src/Cache.js
54
src/Cache.js
@@ -3,11 +3,14 @@
|
|||||||
*********/
|
*********/
|
||||||
|
|
||||||
CM.Cache.RemakeIncome = function() {
|
CM.Cache.RemakeIncome = function() {
|
||||||
// Simulate Building Buys
|
// Simulate Building Buys for 1 amount
|
||||||
CM.Sim.BuyBuildings();
|
CM.Sim.BuyBuildings(1, 'Objects');
|
||||||
|
|
||||||
// Simulate Upgrade Buys
|
// Simulate Upgrade Buys
|
||||||
CM.Sim.BuyUpgrades();
|
CM.Sim.BuyUpgrades();
|
||||||
|
|
||||||
|
// Simulate Building Buys for 10 amount
|
||||||
|
CM.Sim.BuyBuildings(10, 'Objects10');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsBCI = function() {
|
CM.Cache.RemakeBuildingsBCI = function() {
|
||||||
@@ -45,12 +48,31 @@ CM.Cache.RemakeUpgradeBCI = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildings10BCI = function() {
|
||||||
|
for (var i in CM.Cache.Objects10) {
|
||||||
|
CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, 10);
|
||||||
|
CM.Cache.Objects10[i].bci = CM.Cache.Objects10[i].price / CM.Cache.Objects10[i].bonus;
|
||||||
|
var color = '';
|
||||||
|
if (CM.Cache.Objects10[i].bci <= 0 || CM.Cache.Objects10[i].bci == 'Infinity') color = CM.Disp.colorGray;
|
||||||
|
else if (CM.Cache.Objects10[i].bci < CM.Disp.min) color = CM.Disp.colorBlue;
|
||||||
|
else if (CM.Cache.Objects10[i].bci == CM.Disp.min) color = CM.Disp.colorGreen;
|
||||||
|
else if (CM.Cache.Objects10[i].bci == CM.Disp.max) color = CM.Disp.colorRed;
|
||||||
|
else if (CM.Cache.Objects10[i].bci > CM.Disp.max) color = CM.Disp.colorPurple;
|
||||||
|
else if (CM.Cache.Objects10[i].bci > CM.Disp.mid) color = CM.Disp.colorOrange;
|
||||||
|
else color = CM.Disp.colorYellow;
|
||||||
|
CM.Cache.Objects10[i].color = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBCI = function() {
|
CM.Cache.RemakeBCI = function() {
|
||||||
// Buildings
|
// Buildings for 1 amount
|
||||||
CM.Cache.RemakeBuildingsBCI();
|
CM.Cache.RemakeBuildingsBCI();
|
||||||
|
|
||||||
// Upgrades
|
// Upgrades
|
||||||
CM.Cache.RemakeUpgradeBCI();
|
CM.Cache.RemakeUpgradeBCI();
|
||||||
|
|
||||||
|
// Buildings for 10 amount
|
||||||
|
CM.Cache.RemakeBuildings10BCI();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeLucky = function() {
|
CM.Cache.RemakeLucky = function() {
|
||||||
@@ -93,18 +115,37 @@ CM.Cache.RemakeChain = function() {
|
|||||||
base = CM.Cache.ChainWrathReward;
|
base = CM.Cache.ChainWrathReward;
|
||||||
}
|
}
|
||||||
var count = 1;
|
var count = 1;
|
||||||
|
if (maxPayout < base) {
|
||||||
|
CM.Cache.Chain = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
||||||
while (base == base + count) {
|
while (base == base + count) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
CM.Cache.Chain = (base + count) / 0.25;
|
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);
|
||||||
|
|
||||||
count = 1;
|
CM.Cache.ChainFrenzyWrathReward = CM.Cache.MaxChainMoni(6, maxPayout * 7);
|
||||||
while(CM.Cache.ChainFrenzyReward == CM.Cache.ChainFrenzyReward + count) {
|
|
||||||
|
if (CM.Cache.ChainFrenzyReward > CM.Cache.ChainFrenzyWrathReward) {
|
||||||
|
base = CM.Cache.ChainFrenzyReward;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
base = CM.Cache.ChainFrenzyWrathReward;
|
||||||
|
}
|
||||||
|
if ((maxPayout * 7) < base) {
|
||||||
|
CM.Cache.ChainFrenzy = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
||||||
|
while(base == base + count) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
CM.Cache.ChainFrenzy = (CM.Cache.ChainFrenzyReward + count) / 0.25;
|
CM.Cache.ChainFrenzy = (base + count) / 0.25;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeSeaSpec = function() {
|
CM.Cache.RemakeSeaSpec = function() {
|
||||||
@@ -124,3 +165,4 @@ CM.Cache.ChainReward = 0;
|
|||||||
CM.Cache.ChainWrathReward = 0;
|
CM.Cache.ChainWrathReward = 0;
|
||||||
CM.Cache.ChainFrenzy = 0;
|
CM.Cache.ChainFrenzy = 0;
|
||||||
CM.Cache.ChainFrenzyReward = 0;
|
CM.Cache.ChainFrenzyReward = 0;
|
||||||
|
CM.Cache.ChainFrenzyWrathReward = 0;
|
||||||
|
|||||||
@@ -13,15 +13,31 @@ CM.LoadConfig = function() {
|
|||||||
// Check values
|
// Check values
|
||||||
var mod = false;
|
var mod = false;
|
||||||
for (var i in CM.ConfigDefault) {
|
for (var i in CM.ConfigDefault) {
|
||||||
|
if (i != 'StatsPref') {
|
||||||
if (CM.Config[i] == undefined || !(CM.Config[i] > -1 && CM.Config[i] < CM.ConfigData[i].label.length)) {
|
if (CM.Config[i] == undefined || !(CM.Config[i] > -1 && CM.Config[i] < CM.ConfigData[i].label.length)) {
|
||||||
mod = true;
|
mod = true;
|
||||||
CM.Config[i] = CM.ConfigDefault[i];
|
CM.Config[i] = CM.ConfigDefault[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else { // Statistics Preferences
|
||||||
|
if (CM.Config[i] == undefined) {
|
||||||
|
mod = true;
|
||||||
|
CM.Config[i] = CM.ConfigDefault[i];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var j in CM.ConfigDefault.StatsPref) {
|
||||||
|
if (CM.Config[i][j] == undefined || !(CM.Config[i][j] > -1 && CM.Config[i][j] < 2)) {
|
||||||
|
mod = true;
|
||||||
|
CM.Config[i][j] = CM.ConfigDefault[i][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (mod) CM.SaveConfig(CM.Config);
|
if (mod) CM.SaveConfig(CM.Config);
|
||||||
CM.Loop(); // Do loop once
|
CM.Loop(); // Do loop once
|
||||||
for (var i in CM.ConfigDefault) {
|
for (var i in CM.ConfigDefault) {
|
||||||
if (CM.ConfigData[i].func != undefined) {
|
if (i != 'StatsPref' && CM.ConfigData[i].func != undefined) {
|
||||||
CM.ConfigData[i].func();
|
CM.ConfigData[i].func();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -62,6 +78,16 @@ CM.ToggleConfigDown = function(config) {
|
|||||||
CM.SaveConfig(CM.Config);
|
CM.SaveConfig(CM.Config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.ToggleStatsConfig = function(config) {
|
||||||
|
if (CM.Config.StatsPref[config] == 0) {
|
||||||
|
CM.Config.StatsPref[config]++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Config.StatsPref[config]--;
|
||||||
|
}
|
||||||
|
CM.SaveConfig(CM.Config);
|
||||||
|
}
|
||||||
|
|
||||||
CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', func: function() {CM.Disp.ToggleBotBar();}};
|
CM.ConfigData.BotBar = {label: ['Bottom Bar OFF', 'Bottom Bar ON'], desc: 'Building Information', func: function() {CM.Disp.ToggleBotBar();}};
|
||||||
CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', func: function() {CM.Disp.ToggleTimerBar();}};
|
CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy', func: function() {CM.Disp.ToggleTimerBar();}};
|
||||||
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
|
|||||||
410
src/Disp.js
410
src/Disp.js
@@ -645,14 +645,7 @@ CM.Disp.UpdateTitle = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.AddMenu = function() {
|
CM.Disp.AddMenuPref = function(title) {
|
||||||
var title = function() {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'title';
|
|
||||||
div.style.color = CM.Disp.colorBlue;
|
|
||||||
div.textContent = 'Cookie Monster Goodies';
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
var header = function(text) {
|
var header = function(text) {
|
||||||
var div = document.createElement('div');
|
var div = document.createElement('div');
|
||||||
div.className = 'listing';
|
div.className = 'listing';
|
||||||
@@ -664,7 +657,6 @@ CM.Disp.AddMenu = function() {
|
|||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Game.onMenu == 'prefs') {
|
|
||||||
var frag = document.createDocumentFragment();
|
var frag = document.createDocumentFragment();
|
||||||
|
|
||||||
frag.appendChild(title());
|
frag.appendChild(title());
|
||||||
@@ -689,10 +681,10 @@ CM.Disp.AddMenu = function() {
|
|||||||
frag.appendChild(listing('TimerBar'));
|
frag.appendChild(listing('TimerBar'));
|
||||||
frag.appendChild(listing('BuildColor'));
|
frag.appendChild(listing('BuildColor'));
|
||||||
frag.appendChild(listing('UpBarColor'));
|
frag.appendChild(listing('UpBarColor'));
|
||||||
|
|
||||||
frag.appendChild(header('Golden Cookie/Season Popup Emphasis'));
|
frag.appendChild(header('Golden Cookie/Season Popup Emphasis'));
|
||||||
frag.appendChild(listing('Flash'));
|
frag.appendChild(listing('Flash'));
|
||||||
frag.appendChild(listing('Sound'));
|
frag.appendChild(listing('Sound'));
|
||||||
|
|
||||||
var volConfig = 'Volume';
|
var volConfig = 'Volume';
|
||||||
var volume = document.createElement('div');
|
var volume = document.createElement('div');
|
||||||
volume.className = 'listing';
|
volume.className = 'listing';
|
||||||
@@ -714,20 +706,21 @@ CM.Disp.AddMenu = function() {
|
|||||||
volLabel.textContent = CM.ConfigData[volConfig].desc;
|
volLabel.textContent = CM.ConfigData[volConfig].desc;
|
||||||
volume.appendChild(volLabel);
|
volume.appendChild(volLabel);
|
||||||
frag.appendChild(volume);
|
frag.appendChild(volume);
|
||||||
|
|
||||||
frag.appendChild(listing('GCTimer'));
|
frag.appendChild(listing('GCTimer'));
|
||||||
frag.appendChild(listing('Title'));
|
frag.appendChild(listing('Title'));
|
||||||
|
|
||||||
frag.appendChild(header('Tooltip'));
|
frag.appendChild(header('Tooltip'));
|
||||||
frag.appendChild(listing('Tooltip'));
|
frag.appendChild(listing('Tooltip'));
|
||||||
frag.appendChild(listing('ToolWarnCaut'));
|
frag.appendChild(listing('ToolWarnCaut'));
|
||||||
frag.appendChild(listing('ToolWarnCautPos'));
|
frag.appendChild(listing('ToolWarnCautPos'));
|
||||||
|
|
||||||
frag.appendChild(header('Statistics'));
|
frag.appendChild(header('Statistics'));
|
||||||
frag.appendChild(listing('Stats'));
|
frag.appendChild(listing('Stats'));
|
||||||
frag.appendChild(listing('UpStats'));
|
frag.appendChild(listing('UpStats'));
|
||||||
frag.appendChild(listing('SayTime'));
|
frag.appendChild(listing('SayTime'));
|
||||||
|
|
||||||
frag.appendChild(header('Other'));
|
frag.appendChild(header('Other'));
|
||||||
frag.appendChild(listing('Scale'));
|
frag.appendChild(listing('Scale'));
|
||||||
|
|
||||||
var resDef = document.createElement('div');
|
var resDef = document.createElement('div');
|
||||||
resDef.className = 'listing';
|
resDef.className = 'listing';
|
||||||
var resDefBut = document.createElement('a');
|
var resDefBut = document.createElement('a');
|
||||||
@@ -741,17 +734,90 @@ CM.Disp.AddMenu = function() {
|
|||||||
|
|
||||||
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'); CM.Disp.RefreshScale();};
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddMenuStats = function(title) {
|
||||||
|
var header = function(text, config) {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'listing';
|
||||||
|
div.style.padding = '5px 16px';
|
||||||
|
div.style.opacity = '0.7';
|
||||||
|
div.style.fontSize = '17px';
|
||||||
|
div.style.fontFamily = '\"Kavoon\", Georgia, serif';
|
||||||
|
div.appendChild(document.createTextNode(text + ' '));
|
||||||
|
var span = document.createElement('span');
|
||||||
|
span.style.cursor = 'pointer';
|
||||||
|
span.style.display = 'inline-block';
|
||||||
|
span.style.height = '14px';
|
||||||
|
span.style.width = '14px';
|
||||||
|
span.style.borderRadius = '7px';
|
||||||
|
span.style.textAlign = 'center';
|
||||||
|
span.style.backgroundColor = '#C0C0C0';
|
||||||
|
span.style.color = 'black';
|
||||||
|
span.style.fontSize = '13px';
|
||||||
|
span.style.verticalAlign = 'middle';
|
||||||
|
span.textContent = CM.Config.StatsPref[config] ? '-' : '+';
|
||||||
|
span.onclick = function() {CM.ToggleStatsConfig(config); Game.UpdateMenu();};
|
||||||
|
div.appendChild(span);
|
||||||
|
return div;
|
||||||
}
|
}
|
||||||
else if (CM.Config.Stats == 1 && Game.onMenu == 'stats') {
|
|
||||||
var stats = document.createElement('div');
|
var stats = document.createElement('div');
|
||||||
stats.className = 'subsection';
|
stats.className = 'subsection';
|
||||||
|
|
||||||
|
stats.appendChild(title());
|
||||||
|
|
||||||
|
var listing = function(name, text) {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'listing';
|
||||||
|
var b = document.createElement('b');
|
||||||
|
if (typeof name == 'string') b.appendChild(document.createTextNode(name));
|
||||||
|
else b.appendChild(name); // fragment
|
||||||
|
b.appendChild(document.createTextNode(' : '));
|
||||||
|
div.appendChild(b);
|
||||||
|
div.appendChild(text);
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
||||||
|
if (CM.Config.StatsPref.Lucky) {
|
||||||
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
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.1, Game.cookiesPs * 60 * 20) + 13;
|
||||||
|
|
||||||
|
var luckyReqFrag = document.createDocumentFragment();
|
||||||
|
var luckyReqSpan = document.createElement('span');
|
||||||
|
luckyReqSpan.style.fontWeight = 'bold';
|
||||||
|
luckyReqSpan.style.color = luckyColor;
|
||||||
|
luckyReqSpan.textContent = Beautify(CM.Cache.Lucky);
|
||||||
|
luckyReqFrag.appendChild(luckyReqSpan);
|
||||||
|
if (luckyTime != '') {
|
||||||
|
var luckyReqSmall = document.createElement('small');
|
||||||
|
luckyReqSmall.textContent = ' (' + luckyTime + ')';
|
||||||
|
luckyReqFrag.appendChild(luckyReqSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag));
|
||||||
|
var luckyReqFrenFrag = document.createDocumentFragment();
|
||||||
|
var luckyReqFrenSpan = document.createElement('span');
|
||||||
|
luckyReqFrenSpan.style.fontWeight = 'bold';
|
||||||
|
luckyReqFrenSpan.style.color = luckyColorFrenzy;
|
||||||
|
luckyReqFrenSpan.textContent = Beautify(CM.Cache.LuckyFrenzy);
|
||||||
|
luckyReqFrenFrag.appendChild(luckyReqFrenSpan);
|
||||||
|
if (luckyTimeFrenzy != '') {
|
||||||
|
var luckyReqFrenSmall = document.createElement('small');
|
||||||
|
luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')';
|
||||||
|
luckyReqFrenFrag.appendChild(luckyReqFrenSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.LuckyReward))));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.LuckyRewardFrenzy))));
|
||||||
|
stats.appendChild(listing('\"Lucky!\" Reward (CUR)', document.createTextNode(Beautify(luckyCur))));
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Chain Cookies', 'Chain'));
|
||||||
|
if (CM.Config.StatsPref.Chain) {
|
||||||
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
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;
|
||||||
@@ -760,9 +826,108 @@ CM.Disp.AddMenu = function() {
|
|||||||
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);
|
||||||
|
|
||||||
|
var chainReqFrag = document.createDocumentFragment();
|
||||||
|
var chainReqSpan = document.createElement('span');
|
||||||
|
chainReqSpan.style.fontWeight = 'bold';
|
||||||
|
chainReqSpan.style.color = chainColor;
|
||||||
|
chainReqSpan.textContent = Beautify(CM.Cache.Chain);
|
||||||
|
chainReqFrag.appendChild(chainReqSpan);
|
||||||
|
if (chainTime != '') {
|
||||||
|
var chainReqSmall = document.createElement('small');
|
||||||
|
chainReqSmall.textContent = ' (' + chainTime + ')';
|
||||||
|
chainReqFrag.appendChild(chainReqSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag));
|
||||||
|
var chainReqFrenFrag = document.createDocumentFragment();
|
||||||
|
var chainReqFrenSpan = document.createElement('span');
|
||||||
|
chainReqFrenSpan.style.fontWeight = 'bold';
|
||||||
|
chainReqFrenSpan.style.color = chainColorFrenzy;
|
||||||
|
chainReqFrenSpan.textContent = Beautify(CM.Cache.ChainFrenzy);
|
||||||
|
chainReqFrenFrag.appendChild(chainReqFrenSpan);
|
||||||
|
if (chainTimeFrenzy != '') {
|
||||||
|
var chainReqFrenSmall = document.createElement('small');
|
||||||
|
chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')';
|
||||||
|
chainReqFrenFrag.appendChild(chainReqFrenSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.ChainReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainWrathReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyWrathReward))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (CUR)', document.createTextNode(Beautify(chainCur))));
|
||||||
|
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath))));
|
||||||
|
}
|
||||||
|
|
||||||
|
stats.appendChild(header('Heavenly Chips', '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 = CM.Sim.CookNeedPrest(possibleHC + 1) - (Game.cookiesEarned + Game.cookiesReset);
|
||||||
|
|
||||||
|
var hcMaxFrag = document.createDocumentFragment();
|
||||||
|
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));
|
||||||
|
var hcCurFrag = document.createDocumentFragment();
|
||||||
|
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips'])));
|
||||||
|
var hcCurSmall = document.createElement('small');
|
||||||
|
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)';
|
||||||
|
hcCurFrag.appendChild(hcCurSmall);
|
||||||
|
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
|
||||||
|
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
|
||||||
|
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
|
||||||
|
var resetTitleFrag = document.createDocumentFragment();
|
||||||
|
resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income '))
|
||||||
|
var resetTitleSpan = document.createElement('span');
|
||||||
|
resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); };
|
||||||
|
var resetTitlePlaceholder = document.createElement('div');
|
||||||
|
var resetTitleDesc = document.createElement('div');
|
||||||
|
resetTitleDesc.style.minWidth = '260px';
|
||||||
|
resetTitleDesc.style.marginBottom = '4px';
|
||||||
|
var resetTitleDiv = document.createElement('div');
|
||||||
|
resetTitleDiv.style.textAlign = 'left';
|
||||||
|
resetTitleDiv.textContent = 'The bonus income you would get from new heavenly chips/reset achievements if you have the same buildings/upgrades after reset';
|
||||||
|
resetTitleDesc.appendChild(resetTitleDiv);
|
||||||
|
resetTitlePlaceholder.appendChild(resetTitleDesc);
|
||||||
|
resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(resetTitlePlaceholder.innerHTML));};
|
||||||
|
resetTitleSpan.style.cursor = 'default';
|
||||||
|
resetTitleSpan.style.display = 'inline-block';
|
||||||
|
resetTitleSpan.style.height = '10px';
|
||||||
|
resetTitleSpan.style.width = '10px';
|
||||||
|
resetTitleSpan.style.borderRadius = '5px';
|
||||||
|
resetTitleSpan.style.textAlign = 'center';
|
||||||
|
resetTitleSpan.style.backgroundColor = '#C0C0C0';
|
||||||
|
resetTitleSpan.style.color = 'black';
|
||||||
|
resetTitleSpan.style.fontSize = '9px';
|
||||||
|
resetTitleSpan.style.verticalAlign = 'bottom';
|
||||||
|
resetTitleSpan.textContent = '?';
|
||||||
|
resetTitleFrag.appendChild(resetTitleSpan);
|
||||||
|
var resetBonus = CM.Sim.ResetBonus();
|
||||||
|
var resetFrag = document.createDocumentFragment();
|
||||||
|
resetFrag.appendChild(document.createTextNode(Beautify(resetBonus)));
|
||||||
|
var increase = Math.round(resetBonus / Game.cookiesPs * 10000);
|
||||||
|
if (isFinite(increase) && increase != 0) {
|
||||||
|
var resetSmall = document.createElement('small');
|
||||||
|
resetSmall.textContent = ' (' + (increase / 100) + '% of income)';
|
||||||
|
resetFrag.appendChild(resetSmall);
|
||||||
|
}
|
||||||
|
stats.appendChild(listing(resetTitleFrag, resetFrag));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Game.cpsSucked > 0) {
|
||||||
|
stats.appendChild(header('Wrinklers', 'Wrink'));
|
||||||
|
if (CM.Config.StatsPref.Wrink) {
|
||||||
|
var sucked = 0;
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
sucked += Game.wrinklers[i].sucked;
|
||||||
|
}
|
||||||
|
sucked *= 1.1;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
stats.appendChild(listing('Rewards of Popping', document.createTextNode(Beautify(sucked))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var specDisp = false;
|
var specDisp = false;
|
||||||
var halloCook = [];
|
var halloCook = [];
|
||||||
for (var i in CM.Data.HalloCookies) {
|
for (var i in CM.Data.HalloCookies) {
|
||||||
@@ -799,109 +964,14 @@ CM.Disp.AddMenu = function() {
|
|||||||
specDisp = true;
|
specDisp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var listing = function(name, text) {
|
|
||||||
var div = document.createElement('div');
|
|
||||||
div.className = 'listing';
|
|
||||||
var b = document.createElement('b');
|
|
||||||
b.textContent = name + ' : ';
|
|
||||||
div.appendChild(b);
|
|
||||||
div.appendChild(text);
|
|
||||||
return div;
|
|
||||||
}
|
|
||||||
stats.appendChild(title());
|
|
||||||
stats.appendChild(header('Lucky Cookies'));
|
|
||||||
var luckyReqFrag = document.createDocumentFragment();
|
|
||||||
var luckyReqSpan = document.createElement('span');
|
|
||||||
luckyReqSpan.style.fontWeight = 'bold';
|
|
||||||
luckyReqSpan.style.color = luckyColor;
|
|
||||||
luckyReqSpan.textContent = Beautify(CM.Cache.Lucky);
|
|
||||||
luckyReqFrag.appendChild(luckyReqSpan);
|
|
||||||
if (luckyTime != '') {
|
|
||||||
var luckyReqSmall = document.createElement('small');
|
|
||||||
luckyReqSmall.textContent = ' (' + luckyTime + ')';
|
|
||||||
luckyReqFrag.appendChild(luckyReqSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag));
|
|
||||||
var luckyReqFrenFrag = document.createDocumentFragment();
|
|
||||||
var luckyReqFrenSpan = document.createElement('span');
|
|
||||||
luckyReqFrenSpan.style.fontWeight = 'bold';
|
|
||||||
luckyReqFrenSpan.style.color = luckyColorFrenzy;
|
|
||||||
luckyReqFrenSpan.textContent = Beautify(CM.Cache.LuckyFrenzy);
|
|
||||||
luckyReqFrenFrag.appendChild(luckyReqFrenSpan);
|
|
||||||
if (luckyTimeFrenzy != '') {
|
|
||||||
var luckyReqFrenSmall = document.createElement('small');
|
|
||||||
luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')';
|
|
||||||
luckyReqFrenFrag.appendChild(luckyReqFrenSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.LuckyReward))));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.LuckyRewardFrenzy))));
|
|
||||||
stats.appendChild(listing('\"Lucky!\" Reward (CUR)', document.createTextNode(Beautify(luckyCur))));
|
|
||||||
stats.appendChild(header('Chain Cookies'));
|
|
||||||
var chainReqFrag = document.createDocumentFragment();
|
|
||||||
var chainReqSpan = document.createElement('span');
|
|
||||||
chainReqSpan.style.fontWeight = 'bold';
|
|
||||||
chainReqSpan.style.color = chainColor;
|
|
||||||
chainReqSpan.textContent = Beautify(CM.Cache.Chain);
|
|
||||||
chainReqFrag.appendChild(chainReqSpan);
|
|
||||||
if (chainTime != '') {
|
|
||||||
var chainReqSmall = document.createElement('small');
|
|
||||||
chainReqSmall.textContent = ' (' + chainTime + ')';
|
|
||||||
chainReqFrag.appendChild(chainReqSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag));
|
|
||||||
var chainReqFrenFrag = document.createDocumentFragment();
|
|
||||||
var chainReqFrenSpan = document.createElement('span');
|
|
||||||
chainReqFrenSpan.style.fontWeight = 'bold';
|
|
||||||
chainReqFrenSpan.style.color = chainColorFrenzy;
|
|
||||||
chainReqFrenSpan.textContent = Beautify(CM.Cache.ChainFrenzy);
|
|
||||||
chainReqFrenFrag.appendChild(chainReqFrenSpan);
|
|
||||||
if (chainTimeFrenzy != '') {
|
|
||||||
var chainReqFrenSmall = document.createElement('small');
|
|
||||||
chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')';
|
|
||||||
chainReqFrenFrag.appendChild(chainReqFrenSmall);
|
|
||||||
}
|
|
||||||
stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX)', document.createTextNode(Beautify(CM.Cache.ChainReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX) (Wrath)', document.createTextNode(Beautify(CM.Cache.ChainWrathReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy)', document.createTextNode(Beautify(CM.Cache.ChainFrenzyReward))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (CUR)', document.createTextNode(Beautify(chainCur))));
|
|
||||||
stats.appendChild(listing('\"Chain\" Reward (CUR) (Wrath)', document.createTextNode(Beautify(chainCurWrath))));
|
|
||||||
stats.appendChild(header('Heavenly Chips'));
|
|
||||||
var hcMaxFrag = document.createDocumentFragment();
|
|
||||||
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));
|
|
||||||
var hcCurFrag = document.createDocumentFragment();
|
|
||||||
hcCurFrag.appendChild(document.createTextNode(Beautify(Game.prestige['Heavenly chips'])));
|
|
||||||
var hcCurSmall = document.createElement('small');
|
|
||||||
hcCurSmall.textContent = ' (' + Beautify((Game.prestige['Heavenly chips'] * 2)) + '%)';
|
|
||||||
hcCurFrag.appendChild(hcCurSmall);
|
|
||||||
stats.appendChild(listing('Heavenly Chips (CUR)', hcCurFrag));
|
|
||||||
stats.appendChild(listing('Cookies To Next Chip', document.createTextNode(Beautify(neededCook))));
|
|
||||||
stats.appendChild(listing('Time To Next Chip', document.createTextNode(CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1))));
|
|
||||||
stats.appendChild(listing('Reset Bonus Income', document.createTextNode(Beautify(CM.Sim.ResetBonus()))));
|
|
||||||
if (Game.cpsSucked > 0) {
|
|
||||||
stats.appendChild(header('Wrinklers'));
|
|
||||||
var sucked = 0;
|
|
||||||
for (var i in Game.wrinklers) {
|
|
||||||
sucked += Game.wrinklers[i].sucked;
|
|
||||||
}
|
|
||||||
sucked *= 1.1;
|
|
||||||
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
|
||||||
stats.appendChild(listing('Rewards of Popping', document.createTextNode(Beautify(sucked))));
|
|
||||||
}
|
|
||||||
if (Game.season == 'christmas' || specDisp) {
|
if (Game.season == 'christmas' || specDisp) {
|
||||||
stats.appendChild(header('Season Specials'));
|
stats.appendChild(header('Season Specials', 'Sea'));
|
||||||
|
if (CM.Config.StatsPref.Sea) {
|
||||||
if (specDisp) {
|
if (specDisp) {
|
||||||
var createSpecDisp = function(theSpecDisp) {
|
var createSpecDisp = function(theSpecDisp) {
|
||||||
var frag = document.createDocumentFragment();
|
var frag = document.createDocumentFragment();
|
||||||
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
|
frag.appendChild(document.createTextNode(theSpecDisp.length + ' '));
|
||||||
span = document.createElement('span');
|
var span = document.createElement('span');
|
||||||
span.onmouseout = function() { Game.tooltip.hide(); };
|
span.onmouseout = function() { Game.tooltip.hide(); };
|
||||||
var placeholder = document.createElement('div');
|
var placeholder = document.createElement('div');
|
||||||
var missing = document.createElement('div');
|
var missing = document.createElement('div');
|
||||||
@@ -944,8 +1014,25 @@ CM.Disp.AddMenu = function() {
|
|||||||
|
|
||||||
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
l('menu').insertBefore(stats, l('menu').childNodes[2]);
|
l('menu').insertBefore(stats, l('menu').childNodes[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddMenu = function() {
|
||||||
|
var title = function() {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.className = 'title';
|
||||||
|
div.style.color = CM.Disp.colorBlue;
|
||||||
|
div.textContent = 'Cookie Monster Goodies';
|
||||||
|
return div;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Game.onMenu == 'prefs') {
|
||||||
|
CM.Disp.AddMenuPref(title);
|
||||||
|
}
|
||||||
|
else if (CM.Config.Stats == 1 && Game.onMenu == 'stats') {
|
||||||
|
CM.Disp.AddMenuStats(title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1037,9 +1124,20 @@ CM.Disp.AddTooltipUpgrade = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddTooltipBuild10 = function() {
|
||||||
|
for (var i in Game.Objects) {
|
||||||
|
var me = Game.Objects[i];
|
||||||
|
l('buttonBuy10-' + me.id).onmouseover = function() {CM.Disp.TooltipBuy10 = true;};
|
||||||
|
l('buttonBuy10-' + me.id).onmouseout = function() {CM.Disp.TooltipBuy10 = false;};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Disp.Tooltip = function(type, name) {
|
CM.Disp.Tooltip = function(type, name) {
|
||||||
if (type == 'b') {
|
if (type == 'b') {
|
||||||
l('tooltip').innerHTML = Game.Objects[name].tooltip();
|
l('tooltip').innerHTML = Game.Objects[name].tooltip();
|
||||||
|
if (CM.Disp.TooltipBuy10) {
|
||||||
|
l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join(Beautify(CM.Cache.Objects10[name].price));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
CM.Disp.TooltipUpgradeBack[name]();
|
CM.Disp.TooltipUpgradeBack[name]();
|
||||||
@@ -1098,6 +1196,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
var price;
|
var price;
|
||||||
var bonus;
|
var bonus;
|
||||||
if (CM.Disp.tooltipType == 'b') {
|
if (CM.Disp.tooltipType == 'b') {
|
||||||
|
if (!CM.Disp.TooltipBuy10) {
|
||||||
bonus = CM.Cache.Objects[CM.Disp.tooltipName].bonus;
|
bonus = CM.Cache.Objects[CM.Disp.tooltipName].bonus;
|
||||||
price = Game.Objects[CM.Disp.tooltipName].getPrice();
|
price = Game.Objects[CM.Disp.tooltipName].getPrice();
|
||||||
if (CM.Config.Tooltip == 1) {
|
if (CM.Config.Tooltip == 1) {
|
||||||
@@ -1106,6 +1205,16 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
l('CMTooltipBCI').style.color = CM.Cache.Objects[CM.Disp.tooltipName].color;
|
l('CMTooltipBCI').style.color = CM.Cache.Objects[CM.Disp.tooltipName].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
bonus = CM.Cache.Objects10[CM.Disp.tooltipName].bonus;
|
||||||
|
price = CM.Cache.Objects10[CM.Disp.tooltipName].price;
|
||||||
|
if (CM.Config.Tooltip == 1) {
|
||||||
|
l('CMTooltipBorder').style.color = CM.Cache.Objects10[CM.Disp.tooltipName].color;
|
||||||
|
l('CMTooltipBCI').textContent = Beautify(CM.Cache.Objects10[CM.Disp.tooltipName].bci, 2);
|
||||||
|
l('CMTooltipBCI').style.color = CM.Cache.Objects10[CM.Disp.tooltipName].color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
bonus = CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].bonus;
|
bonus = CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].bonus;
|
||||||
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
||||||
@@ -1183,6 +1292,76 @@ CM.Disp.UpdateTooltipWarnCaut = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.AddWrinklerAreaDetect = function() {
|
||||||
|
l('backgroundLeftCanvas').onmouseover = function() {CM.Disp.TooltipWrinklerArea = 1;};
|
||||||
|
l('backgroundLeftCanvas').onmouseout = function() {
|
||||||
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
|
Game.tooltip.hide();
|
||||||
|
for (var i = 0; i < 10; i++) {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.CheckWrinklerTooltip = function() {
|
||||||
|
if (CM.Disp.TooltipWrinklerArea == 1) {
|
||||||
|
var showingTooltip = false;
|
||||||
|
var mouseInWrinkler = function (x, y, rect) {
|
||||||
|
var dx = x + Math.sin(-rect.r) * (-(rect.h / 2 - rect.o)), dy = y + Math.cos(-rect.r) * (-(rect.h / 2 - rect.o));
|
||||||
|
var h1 = Math.sqrt(dx * dx + dy * dy);
|
||||||
|
var currA = Math.atan2(dy, dx);
|
||||||
|
var newA = currA - rect.r;
|
||||||
|
var x2 = Math.cos(newA) * h1;
|
||||||
|
var y2 = Math.sin(newA) * h1;
|
||||||
|
if (x2 > -0.5 * rect.w && x2 < 0.5 * rect.w && y2 > -0.5 * rect.h && y2 < 0.5 * rect.h) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
var me = Game.wrinklers[i];
|
||||||
|
var rect = {w: 100, h: 200, r: (-me.r) * Math.PI / 180, o: 10};
|
||||||
|
if (me.phase > 0 && Game.LeftBackground && Game.mouseX < Game.LeftBackground.canvas.width && mouseInWrinkler(Game.mouseX - me.x, Game.mouseY - me.y, rect)) {
|
||||||
|
if (CM.Disp.TooltipWrinklerCache[i] == 0) {
|
||||||
|
var placeholder = document.createElement('div');
|
||||||
|
var wrinkler = document.createElement('div');
|
||||||
|
wrinkler.style.minWidth = '120px';
|
||||||
|
wrinkler.style.marginBottom = '4px';
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.style.textAlign = 'center';
|
||||||
|
div.id = 'CMTooltipWrinkler';
|
||||||
|
wrinkler.appendChild(div);
|
||||||
|
placeholder.appendChild(wrinkler);
|
||||||
|
Game.tooltip.draw(this, escape(placeholder.innerHTML), 'wrink');
|
||||||
|
CM.Disp.TooltipWrinkler = i;
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 1;
|
||||||
|
}
|
||||||
|
showingTooltip = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!showingTooltip) {
|
||||||
|
Game.tooltip.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.UpdateWrinklerTooltip = function() {
|
||||||
|
if (l('CMTooltipWrinkler') != null) {
|
||||||
|
var sucked = Game.wrinklers[CM.Disp.TooltipWrinkler].sucked;
|
||||||
|
sucked *= 1.1;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
l('CMTooltipWrinkler').textContent = Beautify(sucked);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.UpdateTooltipWrinklerLocation = function() {
|
||||||
|
if (Game.tooltip.origin == 'wrink') {
|
||||||
|
Game.tooltip.tta.style.left = (Game.mouseX + l('tooltip').offsetWidth + 20) + 'px';
|
||||||
|
Game.tooltip.tta.style.right = 'auto';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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;
|
||||||
@@ -1217,3 +1396,12 @@ CM.Disp.lastGoldenCookieState = 'none';
|
|||||||
CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
|
CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y'];
|
||||||
CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec'];
|
CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec'];
|
||||||
|
|
||||||
|
CM.Disp.TooltipBuy10 = false;
|
||||||
|
|
||||||
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
|
CM.Disp.TooltipWrinkler = -1;
|
||||||
|
CM.Disp.TooltipWrinklerCache = [];
|
||||||
|
for (var i = 0; i < 10; i++) {
|
||||||
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
11
src/Main.js
11
src/Main.js
@@ -33,6 +33,7 @@ CM.ReplaceNative = function() {
|
|||||||
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
|
eval('CM.Backup.tooltip.updateMod = ' + Game.tooltip.update.toString().split('this').join('Game.tooltip'));
|
||||||
Game.tooltip.update = function() {
|
Game.tooltip.update = function() {
|
||||||
CM.Backup.tooltip.updateMod();
|
CM.Backup.tooltip.updateMod();
|
||||||
|
CM.Disp.UpdateTooltipWrinklerLocation();
|
||||||
CM.Disp.UpdateTooltipWarnCaut();
|
CM.Disp.UpdateTooltipWarnCaut();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,6 +84,10 @@ CM.Loop = function() {
|
|||||||
// Update Tooltip
|
// Update Tooltip
|
||||||
CM.Disp.UpdateTooltip();
|
CM.Disp.UpdateTooltip();
|
||||||
|
|
||||||
|
// Update Wrinkler Tooltip
|
||||||
|
CM.Disp.CheckWrinklerTooltip();
|
||||||
|
CM.Disp.UpdateWrinklerTooltip();
|
||||||
|
|
||||||
// Check Golden Cookies
|
// Check Golden Cookies
|
||||||
CM.Disp.CheckGoldenCookie();
|
CM.Disp.CheckGoldenCookie();
|
||||||
|
|
||||||
@@ -106,6 +111,8 @@ CM.Init = function() {
|
|||||||
CM.Disp.CreateGCTimer();
|
CM.Disp.CreateGCTimer();
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
|
CM.Disp.AddTooltipBuild10();
|
||||||
|
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!
|
||||||
@@ -117,9 +124,9 @@ CM.Init = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCTimer: 1, Title: 1, Tooltip: 1, ToolWarnCaut: 1, ToolWarnCautPos: 0, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2};
|
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, BuildColor: 1, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCTimer: 1, Title: 1, Tooltip: 1, ToolWarnCaut: 1, ToolWarnCautPos: 0, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, HC: 1, Wrink: 1, Sea: 1}};
|
||||||
CM.ConfigPrefix = 'CMConfig';
|
CM.ConfigPrefix = 'CMConfig';
|
||||||
|
|
||||||
CM.VersionMajor = '1.0465';
|
CM.VersionMajor = '1.0465';
|
||||||
CM.VersionMinor = '6';
|
CM.VersionMinor = '8';
|
||||||
|
|
||||||
|
|||||||
24
src/Sim.js
24
src/Sim.js
@@ -2,6 +2,20 @@
|
|||||||
* Sim *
|
* Sim *
|
||||||
*******/
|
*******/
|
||||||
|
|
||||||
|
CM.Sim.BuildingGetPrice = function (basePrice, start, increase) {
|
||||||
|
var totalPrice = 0;
|
||||||
|
var count = 0;
|
||||||
|
while(count < increase) {
|
||||||
|
var price = basePrice * Math.pow(Game.priceIncrease, start + count);
|
||||||
|
if (Game.Has('Season savings')) price *= 0.99;
|
||||||
|
if (Game.Has('Santa\'s dominion')) price *= 0.99;
|
||||||
|
if (Game.Has('Faberge egg')) price *= 0.99;
|
||||||
|
totalPrice += Math.ceil(price);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
return totalPrice;
|
||||||
|
}
|
||||||
|
|
||||||
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
eval('CM.Sim.Has = ' + Game.Has.toString().split('Game').join('CM.Sim'));
|
||||||
|
|
||||||
CM.Sim.Win = function(what) {
|
CM.Sim.Win = function(what) {
|
||||||
@@ -206,12 +220,12 @@ CM.Sim.CheckOtherAchiev = function() {
|
|||||||
if (hasAllChristCook) CM.Sim.Win('Let it snow');
|
if (hasAllChristCook) CM.Sim.Win('Let it snow');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Sim.BuyBuildings = function() {
|
CM.Sim.BuyBuildings = function(amount, target) {
|
||||||
CM.Cache.Objects = [];
|
CM.Cache[target] = [];
|
||||||
for (var i in Game.Objects) {
|
for (var i in Game.Objects) {
|
||||||
CM.Sim.CopyData();
|
CM.Sim.CopyData();
|
||||||
var me = CM.Sim.Objects[i];
|
var me = CM.Sim.Objects[i];
|
||||||
me.amount++;
|
me.amount += amount;
|
||||||
|
|
||||||
if (i == 'Cursor') {
|
if (i == 'Cursor') {
|
||||||
if (me.amount >= 1) CM.Sim.Win('Click');
|
if (me.amount >= 1) CM.Sim.Win('Click');
|
||||||
@@ -304,8 +318,8 @@ CM.Sim.BuyBuildings = function() {
|
|||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.Objects[i] = {};
|
CM.Cache[target][i] = {};
|
||||||
CM.Cache.Objects[i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user