Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
881f5233e9 | ||
|
|
2a67bc1b61 | ||
|
|
eb3c403fbd | ||
|
|
5d0958b63a | ||
|
|
57ab55a2c1 | ||
|
|
3adf65f766 |
471
CookieMonster.js
471
CookieMonster.js
@@ -22,6 +22,13 @@ CM.Sim = {};
|
|||||||
* Cache *
|
* Cache *
|
||||||
*********/
|
*********/
|
||||||
|
|
||||||
|
CM.Cache.AddQueue = function() {
|
||||||
|
CM.Cache.Queue = document.createElement('script');
|
||||||
|
CM.Cache.Queue.type = 'text/javascript';
|
||||||
|
CM.Cache.Queue.setAttribute('src', 'http://aktanusa.github.io/CookieMonster/queue/queue.js');
|
||||||
|
document.head.appendChild(CM.Cache.Queue);
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.NextNumber = function(base) {
|
CM.Cache.NextNumber = function(base) {
|
||||||
var count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
var 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) {
|
||||||
@@ -30,6 +37,13 @@ CM.Cache.NextNumber = function(base) {
|
|||||||
return (base + count);
|
return (base + count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildingsPrices = function() {
|
||||||
|
for (var i in Game.Objects) {
|
||||||
|
CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10);
|
||||||
|
CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeIncome = function() {
|
CM.Cache.RemakeIncome = function() {
|
||||||
// Simulate Building Buys for 1 amount
|
// Simulate Building Buys for 1 amount
|
||||||
CM.Sim.BuyBuildings(1, 'Objects');
|
CM.Sim.BuyBuildings(1, 'Objects');
|
||||||
@@ -44,72 +58,86 @@ CM.Cache.RemakeIncome = function() {
|
|||||||
CM.Sim.BuyBuildings(100, 'Objects100');
|
CM.Sim.BuyBuildings(100, 'Objects100');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsROI = function() {
|
CM.Cache.RemakeWrinkBank = function() {
|
||||||
|
var totalSucked = 0;
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
var sucked = Game.wrinklers[i].sucked;
|
||||||
|
var toSuck = 1.1;
|
||||||
|
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
|
||||||
|
if (Game.wrinklers[i].type==1) toSuck *= 3; // Shiny wrinklers
|
||||||
|
sucked *= toSuck;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
totalSucked += sucked;
|
||||||
|
}
|
||||||
|
CM.Cache.WrinkBank = totalSucked;
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildingsPP = function() {
|
||||||
CM.Cache.min = -1;
|
CM.Cache.min = -1;
|
||||||
CM.Cache.max = -1;
|
CM.Cache.max = -1;
|
||||||
CM.Cache.mid = -1;
|
CM.Cache.mid = -1;
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
//CM.Cache.Objects[i].roi = Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus;
|
//CM.Cache.Objects[i].pp = Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus;
|
||||||
CM.Cache.Objects[i].roi = (Math.max(Game.Objects[i].getPrice() - Game.cookies, 0) / Game.cookiesPs) + (Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus);
|
CM.Cache.Objects[i].pp = (Math.max(Game.Objects[i].getPrice() - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus);
|
||||||
if (CM.Cache.min == -1 || CM.Cache.Objects[i].roi < CM.Cache.min) CM.Cache.min = CM.Cache.Objects[i].roi;
|
if (CM.Cache.min == -1 || CM.Cache.Objects[i].pp < CM.Cache.min) CM.Cache.min = CM.Cache.Objects[i].pp;
|
||||||
if (CM.Cache.max == -1 || CM.Cache.Objects[i].roi > CM.Cache.max) CM.Cache.max = CM.Cache.Objects[i].roi;
|
if (CM.Cache.max == -1 || CM.Cache.Objects[i].pp > CM.Cache.max) CM.Cache.max = CM.Cache.Objects[i].pp;
|
||||||
}
|
}
|
||||||
CM.Cache.mid = ((CM.Cache.max - CM.Cache.min) / 2) + CM.Cache.min;
|
CM.Cache.mid = ((CM.Cache.max - CM.Cache.min) / 2) + CM.Cache.min;
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache.Objects[i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
if (CM.Cache.Objects[i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache.Objects[i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache.Objects[i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache.Objects[i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache.Objects[i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache.Objects[i].color = color;
|
CM.Cache.Objects[i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeUpgradeROI = function() {
|
CM.Cache.RemakeUpgradePP = function() {
|
||||||
for (var i in CM.Cache.Upgrades) {
|
for (var i in CM.Cache.Upgrades) {
|
||||||
//CM.Cache.Upgrades[i].roi = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus;
|
//CM.Cache.Upgrades[i].pp = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus;
|
||||||
CM.Cache.Upgrades[i].roi = (Math.max(Game.Upgrades[i].getPrice() - Game.cookies, 0) / Game.cookiesPs) + (Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus);
|
CM.Cache.Upgrades[i].pp = (Math.max(Game.Upgrades[i].getPrice() - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus);
|
||||||
if (isNaN(CM.Cache.Upgrades[i].roi)) CM.Cache.Upgrades[i].roi = 'Infinity';
|
if (isNaN(CM.Cache.Upgrades[i].pp)) CM.Cache.Upgrades[i].pp = 'Infinity';
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache.Upgrades[i].roi <= 0 || CM.Cache.Upgrades[i].roi == 'Infinity') color = CM.Disp.colorGray;
|
if (CM.Cache.Upgrades[i].pp <= 0 || CM.Cache.Upgrades[i].pp == 'Infinity') color = CM.Disp.colorGray;
|
||||||
else if (CM.Cache.Upgrades[i].roi < CM.Cache.min) color = CM.Disp.colorBlue;
|
else if (CM.Cache.Upgrades[i].pp < CM.Cache.min) color = CM.Disp.colorBlue;
|
||||||
else if (CM.Cache.Upgrades[i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
else if (CM.Cache.Upgrades[i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache.Upgrades[i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache.Upgrades[i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache.Upgrades[i].roi > CM.Cache.max) color = CM.Disp.colorPurple;
|
else if (CM.Cache.Upgrades[i].pp > CM.Cache.max) color = CM.Disp.colorPurple;
|
||||||
else if (CM.Cache.Upgrades[i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache.Upgrades[i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache.Upgrades[i].color = color;
|
CM.Cache.Upgrades[i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsOtherROI = function(amount, target) {
|
CM.Cache.RemakeBuildingsOtherPP = function(amount, target) {
|
||||||
for (var i in CM.Cache[target]) {
|
for (var i in CM.Cache[target]) {
|
||||||
//CM.Cache[target][i].roi = CM.Cache[target][i].price / CM.Cache[target][i].bonus;
|
//CM.Cache[target][i].pp = CM.Cache[target][i].price / CM.Cache[target][i].bonus;
|
||||||
CM.Cache[target][i].roi = (Math.max(CM.Cache[target][i].price - Game.cookies, 0) / Game.cookiesPs) + (CM.Cache[target][i].price / CM.Cache[target][i].bonus);
|
CM.Cache[target][i].pp = (Math.max(CM.Cache[target][i].price - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (CM.Cache[target][i].price / CM.Cache[target][i].bonus);
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache[target][i].roi <= 0 || CM.Cache[target][i].roi == 'Infinity') color = CM.Disp.colorGray;
|
if (CM.Cache[target][i].pp <= 0 || CM.Cache[target][i].pp == 'Infinity') color = CM.Disp.colorGray;
|
||||||
else if (CM.Cache[target][i].roi < CM.Cache.min) color = CM.Disp.colorBlue;
|
else if (CM.Cache[target][i].pp < CM.Cache.min) color = CM.Disp.colorBlue;
|
||||||
else if (CM.Cache[target][i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
else if (CM.Cache[target][i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache[target][i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache[target][i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache[target][i].roi > CM.Cache.max) color = CM.Disp.colorPurple;
|
else if (CM.Cache[target][i].pp > CM.Cache.max) color = CM.Disp.colorPurple;
|
||||||
else if (CM.Cache[target][i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache[target][i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache[target][i].color = color;
|
CM.Cache[target][i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeROI = function() {
|
CM.Cache.RemakePP = function() {
|
||||||
// Buildings for 1 amount
|
// Buildings for 1 amount
|
||||||
CM.Cache.RemakeBuildingsROI();
|
CM.Cache.RemakeBuildingsPP();
|
||||||
|
|
||||||
// Upgrades
|
// Upgrades
|
||||||
CM.Cache.RemakeUpgradeROI();
|
CM.Cache.RemakeUpgradePP();
|
||||||
|
|
||||||
// Buildings for 10 amount
|
// Buildings for 10 amount
|
||||||
CM.Cache.RemakeBuildingsOtherROI(10, 'Objects10');
|
CM.Cache.RemakeBuildingsOtherPP(10, 'Objects10');
|
||||||
|
|
||||||
// Buildings for 100 amount
|
// Buildings for 100 amount
|
||||||
CM.Cache.RemakeBuildingsOtherROI(100, 'Objects100');
|
CM.Cache.RemakeBuildingsOtherPP(100, 'Objects100');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeLucky = function() {
|
CM.Cache.RemakeLucky = function() {
|
||||||
@@ -211,9 +239,83 @@ CM.Cache.RemakeSellForChoEgg = function() {
|
|||||||
CM.Cache.SellForChoEgg = sellTotal;
|
CM.Cache.SellForChoEgg = sellTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.InitCookiesDiff = function() {
|
||||||
|
CM.Cache.CookiesDiff = new Queue();
|
||||||
|
CM.Cache.WrinkDiff = new Queue();
|
||||||
|
CM.Cache.ChoEggDiff = new Queue();
|
||||||
|
CM.Cache.ClicksDiff = new Queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Cache.UpdateAvgCPS = function() {
|
||||||
|
var currDate = Math.floor(Date.now() / 1000);
|
||||||
|
if (CM.Cache.lastDate != currDate) {
|
||||||
|
var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg;
|
||||||
|
if (Game.cpsSucked > 0) {
|
||||||
|
choEggTotal += CM.Cache.WrinkBank;
|
||||||
|
}
|
||||||
|
choEggTotal *= 0.05;
|
||||||
|
|
||||||
|
if (CM.Cache.lastDate != -1) {
|
||||||
|
var timeDiff = currDate - CM.Cache.lastDate
|
||||||
|
var bankDiffAvg = Math.max(0, (Game.cookies - CM.Cache.lastCookies)) / timeDiff;
|
||||||
|
var wrinkDiffAvg = (CM.Cache.WrinkBank - CM.Cache.lastWrinkCookies) / timeDiff;
|
||||||
|
var choEggDiffAvg = Math.max(0,(choEggTotal - CM.Cache.lastChoEgg)) / timeDiff;
|
||||||
|
var clicksDiffAvg = (Game.cookieClicks - CM.Cache.lastClicks) / timeDiff;
|
||||||
|
for (var i = 0; i < timeDiff; i++) {
|
||||||
|
CM.Cache.CookiesDiff.enqueue(bankDiffAvg);
|
||||||
|
CM.Cache.WrinkDiff.enqueue(wrinkDiffAvg);
|
||||||
|
CM.Cache.ChoEggDiff.enqueue(choEggDiffAvg);
|
||||||
|
CM.Cache.ClicksDiff.enqueue(clicksDiffAvg);
|
||||||
|
}
|
||||||
|
// Assumes the queues are the same length
|
||||||
|
while (CM.Cache.CookiesDiff.getLength() > 1800) {
|
||||||
|
CM.Cache.CookiesDiff.dequeue();
|
||||||
|
CM.Cache.WrinkDiff.dequeue();
|
||||||
|
CM.Cache.ClicksDiff.dequeue();
|
||||||
|
}
|
||||||
|
|
||||||
|
while (CM.Cache.ClicksDiff.getLength() > 30) {
|
||||||
|
CM.Cache.ClicksDiff.dequeue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CM.Cache.lastDate = currDate;
|
||||||
|
CM.Cache.lastCookies = Game.cookies;
|
||||||
|
CM.Cache.lastWrinkCookies = CM.Cache.WrinkBank;
|
||||||
|
CM.Cache.lastChoEgg = choEggTotal;
|
||||||
|
CM.Cache.lastClicks = Game.cookieClicks;
|
||||||
|
|
||||||
|
var totalGainBank = 0;
|
||||||
|
var totalGainWrink = 0;
|
||||||
|
var totalGainChoEgg = 0;
|
||||||
|
var cpsLength = Math.min(CM.Cache.CookiesDiff.getLength(), CM.Disp.times[CM.Config.AvgCPSHist] * 60);
|
||||||
|
// Assumes the queues are the same length
|
||||||
|
for (var i = CM.Cache.CookiesDiff.getLength() - cpsLength; i < CM.Cache.CookiesDiff.getLength(); i++) {
|
||||||
|
totalGainBank += CM.Cache.CookiesDiff.get(i);
|
||||||
|
totalGainWrink += CM.Cache.WrinkDiff.get(i);
|
||||||
|
totalGainChoEgg += CM.Cache.ChoEggDiff.get(i);
|
||||||
|
}
|
||||||
|
CM.Cache.AvgCPS = (totalGainBank + (CM.Config.CalcWrink ? totalGainWrink : 0)) / cpsLength;
|
||||||
|
|
||||||
|
if (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')) {
|
||||||
|
CM.Cache.AvgCPSChoEgg = (totalGainBank + (CM.Config.CalcWrink ? totalGainWrink : 0) + totalGainChoEgg) / cpsLength;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Cache.AvgCPSChoEgg = CM.Cache.AvgCPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
var totalClicks = 0;
|
||||||
|
var clicksLength = Math.min(CM.Cache.ClicksDiff.getLength(), CM.Disp.times[CM.Config.AvgClicksHist]);
|
||||||
|
for (var i = CM.Cache.ClicksDiff.getLength() - clicksLength; i < CM.Cache.ClicksDiff.getLength(); i++) {
|
||||||
|
totalClicks += CM.Cache.ClicksDiff.get(i);
|
||||||
|
}
|
||||||
|
CM.Cache.AvgClicks = totalClicks / clicksLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.min = -1;
|
CM.Cache.min = -1;
|
||||||
CM.Cache.max = -1;
|
CM.Cache.max = -1;
|
||||||
CM.Cache.mid = -1;
|
CM.Cache.mid = -1;
|
||||||
|
CM.Cache.WrinkBank = -1;
|
||||||
CM.Cache.NoGoldSwitchCookiesPS = 0;
|
CM.Cache.NoGoldSwitchCookiesPS = 0;
|
||||||
CM.Cache.Lucky = 0;
|
CM.Cache.Lucky = 0;
|
||||||
CM.Cache.LuckyReward = 0;
|
CM.Cache.LuckyReward = 0;
|
||||||
@@ -230,6 +332,20 @@ CM.Cache.ChainFrenzyReward = 0;
|
|||||||
CM.Cache.ChainFrenzyWrathReward = 0;
|
CM.Cache.ChainFrenzyWrathReward = 0;
|
||||||
CM.Cache.CentEgg = 0;
|
CM.Cache.CentEgg = 0;
|
||||||
CM.Cache.SellForChoEgg = 0;
|
CM.Cache.SellForChoEgg = 0;
|
||||||
|
CM.Cache.Title = '';
|
||||||
|
CM.Cache.HadFierHoard = false;
|
||||||
|
CM.Cache.lastDate = -1;
|
||||||
|
CM.Cache.lastCookies = -1;
|
||||||
|
CM.Cache.lastWrinkCookies = -1;
|
||||||
|
CM.Cache.lastChoEgg = -1;
|
||||||
|
CM.Cache.lastClicks = -1;
|
||||||
|
CM.Cache.CookiesDiff;
|
||||||
|
CM.Cache.WrinkDiff;
|
||||||
|
CM.Cache.ChoEggDiff;
|
||||||
|
CM.Cache.ClicksDiff;
|
||||||
|
CM.Cache.AvgCPS = -1;
|
||||||
|
CM.Cache.AvgCPSChoEgg = -1;
|
||||||
|
CM.Cache.AvgClicks = -1;
|
||||||
|
|
||||||
/**********
|
/**********
|
||||||
* Config *
|
* Config *
|
||||||
@@ -353,7 +469,12 @@ CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar
|
|||||||
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}};
|
CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}};
|
||||||
CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best ROI building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best ROI building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst ROI buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst ROI buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst ROI building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst ROI building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity ROI, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}};
|
CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}};
|
||||||
|
CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinkers', toggle: true};
|
||||||
|
CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false};
|
||||||
|
CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false};
|
||||||
|
CM.ConfigData.AvgClicksHist = {label: ['Average Cookie Clicks for past 1s', 'Average Cookie Clicks for past 5s', 'Average Cookie Clicks for past 10s', 'Average Cookie Clicks for past 15s', 'Average Cookie Clicks for past 30s'], desc: 'How much time average Cookie Clicks should consider', toggle: false};
|
||||||
|
CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true};
|
||||||
CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true};
|
CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true};
|
||||||
CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true};
|
CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true};
|
||||||
CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'};
|
CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'};
|
||||||
@@ -363,13 +484,12 @@ for (var i = 0; i < 101; i++) {
|
|||||||
CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'};
|
CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'};
|
||||||
CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'};
|
CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'};
|
||||||
CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}};
|
CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}};
|
||||||
CM.ConfigData.Title = {label: ['Title OFF', 'Title ON'], desc: 'Update title with Golden Cookie/Season Popup timers', toggle: true};
|
CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true};
|
||||||
CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}};
|
CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}};
|
||||||
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true};
|
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true};
|
||||||
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true};
|
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true};
|
||||||
CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}};
|
CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}};
|
||||||
CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', toggle: false, func: function() {CM.Disp.ToggleToolWarnCautPos();}};
|
CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', toggle: false, func: function() {CM.Disp.ToggleToolWarnCautPos();}};
|
||||||
CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true};
|
|
||||||
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
|
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
|
||||||
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
|
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
|
||||||
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
|
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
|
||||||
@@ -471,6 +591,20 @@ CM.Disp.Beautify = function(num, frac) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.GetWrinkConfigBank = function() {
|
||||||
|
if (CM.Config.CalcWrink)
|
||||||
|
return CM.Cache.WrinkBank;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.GetCPS = function() {
|
||||||
|
if (CM.Config.CPSMode)
|
||||||
|
return CM.Cache.AvgCPS;
|
||||||
|
else
|
||||||
|
return (Game.cookiesPs * (1 - Game.cpsSucked));
|
||||||
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateBackground = function() {
|
CM.Disp.UpdateBackground = function() {
|
||||||
Game.Background.canvas.width = Game.Background.canvas.parentNode.offsetWidth;
|
Game.Background.canvas.width = Game.Background.canvas.parentNode.offsetWidth;
|
||||||
Game.Background.canvas.height = Game.Background.canvas.parentNode.offsetHeight;
|
Game.Background.canvas.height = Game.Background.canvas.parentNode.offsetHeight;
|
||||||
@@ -534,9 +668,9 @@ CM.Disp.CreateBotBar = function() {
|
|||||||
var bonus = document.createElement('tr');
|
var bonus = document.createElement('tr');
|
||||||
bonus.appendChild(firstCol('Bonus Income', CM.Disp.colorBlue));
|
bonus.appendChild(firstCol('Bonus Income', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(bonus);
|
tbody.appendChild(bonus);
|
||||||
var roi = document.createElement('tr');
|
var pp = document.createElement('tr');
|
||||||
roi.appendChild(firstCol('Return On Investment', CM.Disp.colorBlue));
|
pp.appendChild(firstCol('Payback Period', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(roi);
|
tbody.appendChild(pp);
|
||||||
var time = document.createElement('tr');
|
var time = document.createElement('tr');
|
||||||
time.appendChild(firstCol('Time Left', CM.Disp.colorBlue));
|
time.appendChild(firstCol('Time Left', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(time);
|
tbody.appendChild(time);
|
||||||
@@ -550,7 +684,7 @@ CM.Disp.CreateBotBar = function() {
|
|||||||
header.appendChild(document.createTextNode(')'));
|
header.appendChild(document.createTextNode(')'));
|
||||||
type.appendChild(header);
|
type.appendChild(header);
|
||||||
bonus.appendChild(document.createElement('td'));
|
bonus.appendChild(document.createElement('td'));
|
||||||
roi.appendChild(document.createElement('td'));
|
pp.appendChild(document.createElement('td'));
|
||||||
time.appendChild(document.createElement('td'));
|
time.appendChild(document.createElement('td'));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -580,7 +714,7 @@ CM.Disp.UpdateBotBarOther = function() {
|
|||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[0].childNodes[count].childNodes[1].textContent = Game.Objects[i].amount;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[0].childNodes[count].childNodes[1].textContent = Game.Objects[i].amount;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[1].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].bonus, 2);
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[1].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].bonus, 2);
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].className = CM.Disp.colorTextPre + CM.Cache.Objects[i].color;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].className = CM.Disp.colorTextPre + CM.Cache.Objects[i].color;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].roi, 2);
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].pp, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -591,7 +725,7 @@ CM.Disp.UpdateBotBarTime = function() {
|
|||||||
|
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
count++;
|
count++;
|
||||||
var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice(), Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
|
var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice(), (Game.cookies + CM.Disp.GetWrinkConfigBank()), CM.Disp.GetCPS());
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text;
|
||||||
}
|
}
|
||||||
@@ -885,13 +1019,13 @@ CM.Disp.CreateUpgradeBar = function() {
|
|||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
legend.appendChild(legendLine(CM.Disp.colorBlue, 'Better than best ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorBlue, 'Better than best PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorGreen, 'Same as best ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorGreen, 'Same as best PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorYellow, 'Between best and worst ROI buildings closer to best'));
|
legend.appendChild(legendLine(CM.Disp.colorYellow, 'Between best and worst PP buildings closer to best'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorOrange, 'Between best and worst ROI buildings closer to worst'));
|
legend.appendChild(legendLine(CM.Disp.colorOrange, 'Between best and worst PP buildings closer to worst'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorRed, 'Same as worst ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorRed, 'Same as worst PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorPurple, 'Worse than worst ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorPurple, 'Worse than worst PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorGray, 'Negative or infinity ROI'));
|
legend.appendChild(legendLine(CM.Disp.colorGray, 'Negative or infinity PP'));
|
||||||
placeholder.appendChild(legend);
|
placeholder.appendChild(legend);
|
||||||
|
|
||||||
CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');};
|
CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');};
|
||||||
@@ -1112,7 +1246,10 @@ CM.Disp.EmphSeasonPopup = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateTitle = function() {
|
CM.Disp.UpdateTitle = function() {
|
||||||
if (CM.Config.Title == 1) {
|
if (Game.OnAscend || CM.Config.Title == 0) {
|
||||||
|
document.title = CM.Cache.Title;
|
||||||
|
}
|
||||||
|
else if (CM.Config.Title == 1) {
|
||||||
var addSP = false;
|
var addSP = false;
|
||||||
|
|
||||||
var titleGC;
|
var titleGC;
|
||||||
@@ -1141,13 +1278,35 @@ CM.Disp.UpdateTitle = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var str = document.title;
|
var str = CM.Cache.Title;
|
||||||
if (str.charAt(0) == '[') {
|
if (str.charAt(0) == '[') {
|
||||||
str = str.substring(str.lastIndexOf(']') + 1);
|
str = str.substring(str.lastIndexOf(']') + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.title = titleGC + (addSP ? titleSP : '') + ' ' + str;
|
document.title = titleGC + (addSP ? titleSP : '') + ' ' + str;
|
||||||
}
|
}
|
||||||
|
else if (CM.Config.Title == 2) {
|
||||||
|
var str = '';
|
||||||
|
var spawn = false;
|
||||||
|
if (l('goldenCookie').style.display != 'none') {
|
||||||
|
spawn = true;
|
||||||
|
if (Game.goldenCookie.wrath) {
|
||||||
|
str += '[W ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
str += '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Game.season=='christmas' && l('seasonPopup').style.display != 'none') {
|
||||||
|
str += '[R ' + Math.ceil(Game.seasonPopup.life / Game.fps) + ']';
|
||||||
|
spawn = true;
|
||||||
|
}
|
||||||
|
if (spawn) str += ' - ';
|
||||||
|
var title = 'Cookie Clicker';
|
||||||
|
if (Game.season == 'fools') title = 'Cookie Baker';
|
||||||
|
str += title;
|
||||||
|
document.title = str;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.CollectWrinklers = function() {
|
CM.Disp.CollectWrinklers = function() {
|
||||||
@@ -1256,6 +1415,13 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(div);
|
frag.appendChild(div);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
frag.appendChild(header('Calculation'));
|
||||||
|
frag.appendChild(listing('CalcWrink'));
|
||||||
|
frag.appendChild(listing('CPSMode'));
|
||||||
|
frag.appendChild(listing('AvgCPSHist'));
|
||||||
|
frag.appendChild(listing('AvgClicksHist'));
|
||||||
|
frag.appendChild(listing('ToolWarnCautBon'));
|
||||||
|
|
||||||
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'));
|
||||||
@@ -1291,7 +1457,6 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(listing('TooltipAmor'));
|
frag.appendChild(listing('TooltipAmor'));
|
||||||
frag.appendChild(listing('ToolWarnCaut'));
|
frag.appendChild(listing('ToolWarnCaut'));
|
||||||
frag.appendChild(listing('ToolWarnCautPos'));
|
frag.appendChild(listing('ToolWarnCautPos'));
|
||||||
frag.appendChild(listing('ToolWarnCautBon'));
|
|
||||||
frag.appendChild(listing('ToolWrink'));
|
frag.appendChild(listing('ToolWrink'));
|
||||||
|
|
||||||
frag.appendChild(header('Statistics'));
|
frag.appendChild(header('Statistics'));
|
||||||
@@ -1382,11 +1547,11 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
||||||
if (CM.Config.StatsPref.Lucky) {
|
if (CM.Config.StatsPref.Lucky) {
|
||||||
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var luckyCurBase = Math.min(Game.cookies * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13;
|
var luckyCurBase = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13;
|
||||||
var luckyRewardMax = CM.Cache.LuckyReward;
|
var luckyRewardMax = CM.Cache.LuckyReward;
|
||||||
var luckyRewardMaxWrath = CM.Cache.LuckyReward;
|
var luckyRewardMaxWrath = CM.Cache.LuckyReward;
|
||||||
var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy;
|
var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy;
|
||||||
@@ -1436,20 +1601,20 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
stats.appendChild(header('Chain Cookies', 'Chain'));
|
stats.appendChild(header('Chain Cookies', 'Chain'));
|
||||||
if (CM.Config.StatsPref.Chain) {
|
if (CM.Config.StatsPref.Chain) {
|
||||||
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.Chain) ? CM.Disp.FormatTime((CM.Cache.Chain - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainWrathColor = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainWrathColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainWrathTime = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainWrathTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainWrathColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainWrathColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainWrathTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainWrathTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
|
|
||||||
var chainRewardMax = CM.Cache.ChainReward;
|
var chainRewardMax = CM.Cache.ChainReward;
|
||||||
var chainWrathRewardMax = CM.Cache.ChainWrathReward;
|
var chainWrathRewardMax = CM.Cache.ChainWrathReward;
|
||||||
var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward;
|
var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward;
|
||||||
var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward;
|
var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward;
|
||||||
var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, Game.cookies * 0.25);
|
var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, (Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.25);
|
||||||
var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax);
|
var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax);
|
||||||
var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax);
|
var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax);
|
||||||
if (Game.hasAura('Ancestral Metamorphosis')) {
|
if (Game.hasAura('Ancestral Metamorphosis')) {
|
||||||
@@ -1519,39 +1684,16 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
var choEgg = (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')); // Needs to be done for the checking below
|
var choEgg = (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')); // Needs to be done for the checking below
|
||||||
|
|
||||||
|
|
||||||
if (CM.Config.StatsPref.Wrink || (CM.Config.StatsPref.Sea && choEgg) || CM.Config.StatsPref.Prestige) {
|
|
||||||
var totalSucked = 0; // Used in Prestige and Chocolate Egg calculation below also
|
|
||||||
for (var i in Game.wrinklers) {
|
|
||||||
var sucked = Game.wrinklers[i].sucked;
|
|
||||||
var toSuck = 1.1;
|
|
||||||
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
|
|
||||||
if (Game.wrinklers[i].type==1) toSuck *= 3; // Shiny wrinklers
|
|
||||||
sucked *= toSuck;
|
|
||||||
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
|
||||||
totalSucked += sucked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (choEgg) {
|
|
||||||
var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg;
|
|
||||||
if (Game.cpsSucked > 0) {
|
|
||||||
choEggTotal += totalSucked;
|
|
||||||
}
|
|
||||||
choEggTotal *= 0.05; // Used in Prestige calculation below also
|
|
||||||
}
|
|
||||||
|
|
||||||
stats.appendChild(header('Prestige', 'Prestige'));
|
stats.appendChild(header('Prestige', 'Prestige'));
|
||||||
if (CM.Config.StatsPref.Prestige) {
|
if (CM.Config.StatsPref.Prestige) {
|
||||||
var possiblePresMax = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset + totalSucked + (choEgg ? choEggTotal : 0)));
|
var possiblePresMax = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset + CM.Cache.WrinkBank + (choEgg ? CM.Cache.lastChoEgg : 0)));
|
||||||
var possiblePres = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset));
|
var neededCook = Game.HowManyCookiesReset(possiblePresMax + 1) - (Game.cookiesEarned + Game.cookiesReset + CM.Cache.WrinkBank + (choEgg ? CM.Cache.lastChoEgg : 0));
|
||||||
var neededCook = Game.HowManyCookiesReset(possiblePres + 1) - (Game.cookiesEarned + Game.cookiesReset);
|
|
||||||
|
|
||||||
stats.appendChild(listing(listingQuest('Prestige Level (CUR / MAX)', 'PrestMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.prestige) + ' / ' + Beautify(possiblePresMax))));
|
stats.appendChild(listing(listingQuest('Prestige Level (CUR / MAX)', 'PrestMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.prestige) + ' / ' + Beautify(possiblePresMax))));
|
||||||
var cookiesNextFrag = document.createDocumentFragment();
|
var cookiesNextFrag = document.createDocumentFragment();
|
||||||
cookiesNextFrag.appendChild(document.createTextNode(Beautify(neededCook)));
|
cookiesNextFrag.appendChild(document.createTextNode(Beautify(neededCook)));
|
||||||
var cookiesNextSmall = document.createElement('small');
|
var cookiesNextSmall = document.createElement('small');
|
||||||
cookiesNextSmall.textContent = ' (' + (CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1)) + ')';
|
cookiesNextSmall.textContent = ' (' + (CM.Disp.FormatTime(neededCook / CM.Cache.AvgCPSChoEgg, 1)) + ')';
|
||||||
cookiesNextFrag.appendChild(cookiesNextSmall);
|
cookiesNextFrag.appendChild(cookiesNextSmall);
|
||||||
stats.appendChild(listing(listingQuest('Cookies To Next Level', 'NextPrestTooltipPlaceholder'), cookiesNextFrag));
|
stats.appendChild(listing(listingQuest('Cookies To Next Level', 'NextPrestTooltipPlaceholder'), cookiesNextFrag));
|
||||||
stats.appendChild(listing(listingQuest('Heavenly Chips (CUR / MAX)', 'HeavenChipMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.heavenlyChips) + ' / ' + Beautify((possiblePresMax - Game.prestige) + Game.heavenlyChips))));
|
stats.appendChild(listing(listingQuest('Heavenly Chips (CUR / MAX)', 'HeavenChipMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.heavenlyChips) + ' / ' + Beautify((possiblePresMax - Game.prestige) + Game.heavenlyChips))));
|
||||||
@@ -1571,7 +1713,7 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
stats.appendChild(header('Wrinklers', 'Wrink'));
|
stats.appendChild(header('Wrinklers', 'Wrink'));
|
||||||
if (CM.Config.StatsPref.Wrink) {
|
if (CM.Config.StatsPref.Wrink) {
|
||||||
var popAllFrag = document.createDocumentFragment();
|
var popAllFrag = document.createDocumentFragment();
|
||||||
popAllFrag.appendChild(document.createTextNode(Beautify(totalSucked) + ' '));
|
popAllFrag.appendChild(document.createTextNode(Beautify(CM.Cache.WrinkBank) + ' '));
|
||||||
var popAllA = document.createElement('a');
|
var popAllA = document.createElement('a');
|
||||||
popAllA.textContent = 'Pop All';
|
popAllA.textContent = 'Pop All';
|
||||||
popAllA.className = 'option';
|
popAllA.className = 'option';
|
||||||
@@ -1670,16 +1812,18 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
||||||
if (choEgg) {
|
if (choEgg) {
|
||||||
stats.appendChild(listing(listingQuest('Chocolate Egg Cookies', 'ChoEggTooltipPlaceholder'), document.createTextNode(Beautify(choEggTotal))));
|
stats.appendChild(listing(listingQuest('Chocolate Egg Cookies', 'ChoEggTooltipPlaceholder'), document.createTextNode(Beautify(CM.Cache.lastChoEgg))));
|
||||||
}
|
}
|
||||||
if (centEgg) {
|
if (centEgg) {
|
||||||
stats.appendChild(listing('Century Egg Multiplier', document.createTextNode(Beautify(CM.Cache.CentEgg, 1) + '%')));
|
stats.appendChild(listing('Century Egg Multiplier', document.createTextNode((Math.round(CM.Cache.CentEgg * 100) / 100) + '%')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stats.appendChild(header('Miscellaneous', 'Misc'));
|
stats.appendChild(header('Miscellaneous', 'Misc'));
|
||||||
if (CM.Config.StatsPref.Misc) {
|
if (CM.Config.StatsPref.Misc) {
|
||||||
|
stats.appendChild(listing('Average Cookies Per Second (Past ' + CM.Disp.times[CM.Config.AvgCPSHist] + (CM.Config.AvgCPSHist == 0 ? ' minute' : ' minutes') + ')', document.createTextNode(Beautify(CM.Cache.AvgCPS, 3))));
|
||||||
|
stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.times[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1))));
|
||||||
stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks))));
|
stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1703,7 +1847,7 @@ CM.Disp.AddMenu = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.RefreshMenu = function() {
|
CM.Disp.RefreshMenu = function() {
|
||||||
if (CM.Config.UpStats && Game.onMenu == 'stats' && Game.drawT % (Game.fps * 5) != 0 && Game.drawT % Game.fps == 0) Game.UpdateMenu();
|
if (CM.Config.UpStats && Game.onMenu == 'stats' && (Game.drawT - 1) % (Game.fps * 5) != 0 && (Game.drawT - 1) % Game.fps == 0) Game.UpdateMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateTooltipLocation = function() {
|
CM.Disp.UpdateTooltipLocation = function() {
|
||||||
@@ -1868,11 +2012,11 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
income.style.color = 'white';
|
income.style.color = 'white';
|
||||||
income.id = 'CMTooltipIncome';
|
income.id = 'CMTooltipIncome';
|
||||||
tooltip.appendChild(income);
|
tooltip.appendChild(income);
|
||||||
tooltip.appendChild(header('Return On Investment'));
|
tooltip.appendChild(header('Payback Period'));
|
||||||
var roi = document.createElement('div');
|
var pp = document.createElement('div');
|
||||||
roi.style.marginBottom = '4px';
|
pp.style.marginBottom = '4px';
|
||||||
roi.id = 'CMTooltipROI';
|
pp.id = 'CMTooltipPP';
|
||||||
tooltip.appendChild(roi);
|
tooltip.appendChild(pp);
|
||||||
tooltip.appendChild(header('Time Left'));
|
tooltip.appendChild(header('Time Left'));
|
||||||
var time = document.createElement('div');
|
var time = document.createElement('div');
|
||||||
time.id = 'CMTooltipTime';
|
time.id = 'CMTooltipTime';
|
||||||
@@ -1891,6 +2035,11 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
|
|
||||||
CM.Disp.UpdateTooltip = function() {
|
CM.Disp.UpdateTooltip = function() {
|
||||||
if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) {
|
if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) {
|
||||||
|
|
||||||
|
// Error checking
|
||||||
|
if (CM.Disp.tooltipType == 'u' && (typeof Game.UpgradesInStore[CM.Disp.tooltipName] === 'undefined' || typeof CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name] === 'undefined')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var price;
|
var price;
|
||||||
var bonus;
|
var bonus;
|
||||||
if (CM.Disp.tooltipType == 'b') {
|
if (CM.Disp.tooltipType == 'b') {
|
||||||
@@ -1910,8 +2059,8 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
bonus = CM.Cache[target][CM.Disp.tooltipName].bonus;
|
bonus = CM.Cache[target][CM.Disp.tooltipName].bonus;
|
||||||
if (CM.Config.Tooltip == 1 && Game.buyMode == 1) {
|
if (CM.Config.Tooltip == 1 && Game.buyMode == 1) {
|
||||||
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
||||||
l('CMTooltipROI').textContent = Beautify(CM.Cache[target][CM.Disp.tooltipName].roi, 2);
|
l('CMTooltipPP').textContent = Beautify(CM.Cache[target][CM.Disp.tooltipName].pp, 2);
|
||||||
l('CMTooltipROI').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
l('CMTooltipPP').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
@@ -1919,8 +2068,8 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
||||||
if (CM.Config.Tooltip == 1) {
|
if (CM.Config.Tooltip == 1) {
|
||||||
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
||||||
l('CMTooltipROI').textContent = Beautify(CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].roi, 2);
|
l('CMTooltipPP').textContent = Beautify(CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].pp, 2);
|
||||||
l('CMTooltipROI').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
l('CMTooltipPP').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CM.Config.Tooltip == 1 && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
if (CM.Config.Tooltip == 1 && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
||||||
@@ -1931,7 +2080,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)';
|
l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)';
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeColor = CM.Disp.GetTimeColor(price, Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
|
var timeColor = CM.Disp.GetTimeColor(price, (Game.cookies + CM.Disp.GetWrinkConfigBank()), CM.Disp.GetCPS());
|
||||||
l('CMTooltipTime').textContent = timeColor.text;
|
l('CMTooltipTime').textContent = timeColor.text;
|
||||||
l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color;
|
l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color;
|
||||||
}
|
}
|
||||||
@@ -1946,7 +2095,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
warn += ((bonusNoFren * 60 * 15) / 0.15);
|
warn += ((bonusNoFren * 60 * 15) / 0.15);
|
||||||
}
|
}
|
||||||
var caut = warn * 7;
|
var caut = warn * 7;
|
||||||
var amount = Game.cookies - price;
|
var amount = (Game.cookies + CM.Disp.GetWrinkConfigBank()) - price;
|
||||||
if ((amount < warn || amount < caut) && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
if ((amount < warn || amount < caut) && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
||||||
if (CM.Config.ToolWarnCautPos == 0) {
|
if (CM.Config.ToolWarnCautPos == 0) {
|
||||||
CM.Disp.TooltipWarnCaut.style.right = '0px';
|
CM.Disp.TooltipWarnCaut.style.right = '0px';
|
||||||
@@ -1958,13 +2107,13 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
|
|
||||||
if (amount < warn) {
|
if (amount < warn) {
|
||||||
l('CMDispTooltipWarn').style.display = '';
|
l('CMDispTooltipWarn').style.display = '';
|
||||||
l('CMDispTooltipWarnText').textContent = Beautify(warn - amount) + ' (' + CM.Disp.FormatTime((warn - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipWarnText').textContent = Beautify(warn - amount) + ' (' + CM.Disp.FormatTime((warn - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
l('CMDispTooltipCaut').style.display = '';
|
l('CMDispTooltipCaut').style.display = '';
|
||||||
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
}
|
}
|
||||||
else if (amount < caut) {
|
else if (amount < caut) {
|
||||||
l('CMDispTooltipCaut').style.display = '';
|
l('CMDispTooltipCaut').style.display = '';
|
||||||
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
l('CMDispTooltipWarn').style.display = 'none';
|
l('CMDispTooltipWarn').style.display = 'none';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1999,7 +2148,7 @@ CM.Disp.AddWrinklerAreaDetect = function() {
|
|||||||
l('backgroundLeftCanvas').onmouseout = function() {
|
l('backgroundLeftCanvas').onmouseout = function() {
|
||||||
CM.Disp.TooltipWrinklerArea = 0;
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
Game.tooltip.hide();
|
Game.tooltip.hide();
|
||||||
for (var i = 0; i < 10; i++) {
|
for (var i in Game.wrinklers) {
|
||||||
CM.Disp.TooltipWrinklerCache[i] = 0;
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -2110,15 +2259,15 @@ CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM
|
|||||||
CM.Disp.lastGoldenCookieState = 'none';
|
CM.Disp.lastGoldenCookieState = 'none';
|
||||||
CM.Disp.lastAscendState = -1;
|
CM.Disp.lastAscendState = -1;
|
||||||
|
|
||||||
|
CM.Disp.times = [1, 5, 10, 15, 30];
|
||||||
|
|
||||||
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.TooltipWrinklerArea = 0;
|
||||||
CM.Disp.TooltipWrinkler = -1;
|
CM.Disp.TooltipWrinkler = -1;
|
||||||
CM.Disp.TooltipWrinklerCache = [];
|
CM.Disp.TooltipWrinklerCache = [];
|
||||||
for (var i = 0; i < 10; i++) {
|
for (var i in Game.wrinklers) {
|
||||||
CM.Disp.TooltipWrinklerCache[i] = 0;
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2200,6 +2349,15 @@ CM.ReplaceNative = function() {
|
|||||||
CM.Backup.Loop();
|
CM.Backup.Loop();
|
||||||
CM.Loop();
|
CM.Loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Backup.Logic = Game.Logic;
|
||||||
|
eval('CM.Backup.LogicMod = ' + Game.Logic.toString().split('document.title').join('CM.Cache.Title'));
|
||||||
|
Game.Logic = function() {
|
||||||
|
CM.Backup.LogicMod();
|
||||||
|
|
||||||
|
// Update Title
|
||||||
|
CM.Disp.UpdateTitle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Loop = function() {
|
CM.Loop = function() {
|
||||||
@@ -2221,8 +2379,27 @@ CM.Loop = function() {
|
|||||||
CM.Sim.DoSims = 0;
|
CM.Sim.DoSims = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate ROI
|
// Check for aura change to recalculate buildings prices
|
||||||
CM.Cache.RemakeROI();
|
var hasFierHoard = Game.hasAura('Fierce Hoarder');
|
||||||
|
if (!CM.Cache.HadFierHoard && hasFierHoard) {
|
||||||
|
CM.Cache.HadFierHoard = true;
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
|
}
|
||||||
|
else if (CM.Cache.HadFierHoard && !hasFierHoard) {
|
||||||
|
CM.Cache.HadFierHoard = false;
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CM.Cache.DoRemakeBuildPrices) {
|
||||||
|
CM.Cache.RemakeBuildingsPrices();
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Wrinkler Bank
|
||||||
|
CM.Cache.RemakeWrinkBank();
|
||||||
|
|
||||||
|
// Calculate PP
|
||||||
|
CM.Cache.RemakePP();
|
||||||
|
|
||||||
// Update colors
|
// Update colors
|
||||||
CM.Disp.UpdateBotBarOther();
|
CM.Disp.UpdateBotBarOther();
|
||||||
@@ -2240,15 +2417,15 @@ CM.Loop = function() {
|
|||||||
CM.Disp.CheckWrinklerTooltip();
|
CM.Disp.CheckWrinklerTooltip();
|
||||||
CM.Disp.UpdateWrinklerTooltip();
|
CM.Disp.UpdateWrinklerTooltip();
|
||||||
|
|
||||||
// Update Title
|
|
||||||
CM.Disp.UpdateTitle();
|
|
||||||
|
|
||||||
// Change menu refresh interval
|
// Change menu refresh interval
|
||||||
CM.Disp.RefreshMenu();
|
CM.Disp.RefreshMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check Golden Cookies
|
// Check Golden Cookies
|
||||||
CM.Disp.CheckGoldenCookie();
|
CM.Disp.CheckGoldenCookie();
|
||||||
|
|
||||||
|
// Update Average CPS (might need to move)
|
||||||
|
CM.Cache.UpdateAvgCPS()
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Init = function() {
|
CM.Init = function() {
|
||||||
@@ -2257,10 +2434,11 @@ CM.Init = function() {
|
|||||||
proceed = confirm('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' is meant for Game version ' + CM.VersionMajor + '. Loading a different version may cause errors. Do you still want to load Cookie Monster?');
|
proceed = confirm('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' is meant for Game version ' + CM.VersionMajor + '. Loading a different version may cause errors. Do you still want to load Cookie Monster?');
|
||||||
}
|
}
|
||||||
if (proceed) {
|
if (proceed) {
|
||||||
|
CM.Cache.AddQueue();
|
||||||
CM.Disp.AddJscolor();
|
CM.Disp.AddJscolor();
|
||||||
|
|
||||||
var delay = setInterval(function() {
|
var delay = setInterval(function() {
|
||||||
if (typeof jscolor !== 'undefined') {
|
if (typeof Queue !== 'undefined' && typeof jscolor !== 'undefined') {
|
||||||
CM.DelayInit();
|
CM.DelayInit();
|
||||||
clearInterval(delay);
|
clearInterval(delay);
|
||||||
}
|
}
|
||||||
@@ -2282,10 +2460,11 @@ CM.DelayInit = function() {
|
|||||||
CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Not calculated with cookies gained from wrinklers or Chocolate egg', '200px');
|
CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Not calculated with cookies gained from wrinklers or Chocolate egg', '200px');
|
||||||
CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '310px');
|
CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '310px');
|
||||||
CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '340px');
|
CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '340px');
|
||||||
CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '290px');
|
CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '300px');
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
CM.Disp.AddWrinklerAreaDetect();
|
CM.Disp.AddWrinklerAreaDetect();
|
||||||
|
CM.Cache.InitCookiesDiff();
|
||||||
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!
|
||||||
@@ -2299,11 +2478,11 @@ CM.DelayInit = function() {
|
|||||||
Game.Win('Third-party');
|
Game.Win('Third-party');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWarnCautBon: 0, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}};
|
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 1, CPSMode: 1, AvgCPSHist: 2, AvgClicksHist: 2, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}};
|
||||||
CM.ConfigPrefix = 'CMConfig';
|
CM.ConfigPrefix = 'CMConfig';
|
||||||
|
|
||||||
CM.VersionMajor = '2';
|
CM.VersionMajor = '2';
|
||||||
CM.VersionMinor = '4';
|
CM.VersionMinor = '5';
|
||||||
|
|
||||||
/*******
|
/*******
|
||||||
* Sim *
|
* Sim *
|
||||||
@@ -2666,7 +2845,7 @@ CM.Sim.BuyBuildings = function(amount, target) {
|
|||||||
CM.Cache[target][i] = {};
|
CM.Cache[target][i] = {};
|
||||||
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
||||||
if (amount != 1) {
|
if (amount != 1) {
|
||||||
CM.Cache[target][i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, amount);
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2722,6 +2901,48 @@ CM.Sim.NoGoldSwitchCookiesPS = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Sim.ResetBonus = function(possiblePresMax) {
|
CM.Sim.ResetBonus = function(possiblePresMax) {
|
||||||
|
var lastAchievementsOwned = -1;
|
||||||
|
|
||||||
|
// Calculate CPS with all Heavenly upgrades
|
||||||
|
var curCPS = Game.cookiesPs;
|
||||||
|
if (CM.Sim.Upgrades['Heavenly chip secret'].bought == 0 || CM.Sim.Upgrades['Heavenly cookie stand'].bought == 0 || CM.Sim.Upgrades['Heavenly bakery'].bought == 0 || CM.Sim.Upgrades['Heavenly confectionery'].bought == 0 || CM.Sim.Upgrades['Heavenly key'].bought == 0) {
|
||||||
|
CM.Sim.CopyData();
|
||||||
|
|
||||||
|
if (CM.Sim.Upgrades['Heavenly chip secret'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly chip secret'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly cookie stand'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly cookie stand'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly bakery'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly bakery'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly confectionery'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly confectionery'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly key'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly key'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
CM.Sim.Win('Wholesome');
|
||||||
|
}
|
||||||
|
|
||||||
|
lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
||||||
|
|
||||||
|
CM.Sim.CalculateGains();
|
||||||
|
|
||||||
|
CM.Sim.CheckOtherAchiev();
|
||||||
|
|
||||||
|
if (lastAchievementsOwned != CM.Sim.AchievementsOwned) {
|
||||||
|
CM.Sim.CalculateGains();
|
||||||
|
}
|
||||||
|
|
||||||
|
curCPS = CM.Sim.cookiesPs;
|
||||||
|
}
|
||||||
|
|
||||||
CM.Sim.CopyData();
|
CM.Sim.CopyData();
|
||||||
|
|
||||||
if (Game.cookiesEarned >= 1000000) CM.Sim.Win('Sacrifice');
|
if (Game.cookiesEarned >= 1000000) CM.Sim.Win('Sacrifice');
|
||||||
@@ -2759,7 +2980,7 @@ CM.Sim.ResetBonus = function(possiblePresMax) {
|
|||||||
|
|
||||||
CM.Sim.prestige = possiblePresMax;
|
CM.Sim.prestige = possiblePresMax;
|
||||||
|
|
||||||
var lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
||||||
|
|
||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
|
|
||||||
@@ -2769,7 +2990,7 @@ CM.Sim.ResetBonus = function(possiblePresMax) {
|
|||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
}
|
}
|
||||||
|
|
||||||
return (CM.Sim.cookiesPs - Game.cookiesPs);
|
return (CM.Sim.cookiesPs - curCPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********
|
/**********
|
||||||
|
|||||||
22
README.md
22
README.md
@@ -12,21 +12,21 @@ You can see the current version, and a full history of all versions and what the
|
|||||||
|
|
||||||
At its core, Cookie Monster computes an index on both buildings and upgrades:
|
At its core, Cookie Monster computes an index on both buildings and upgrades:
|
||||||
|
|
||||||
* **Return On Investment (ROI)**: Indicates how much a building is worth by using the formula max(cost - cookies in bank, 0)/cps + cost/Δ cps
|
* **Payback Period (PP)**: Indicates how much a building is worth by using the formula max(cost - cookies in bank, 0)/cps + cost/Δ cps
|
||||||
|
|
||||||
Cookie Monster also indicates the time left before being able to buy an upgrade or building, and takes it into consideration. It will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, it will know and highlight that building's value.
|
Cookie Monster also indicates the time left before being able to buy an upgrade or building, and takes it into consideration. It will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, it will know and highlight that building's value.
|
||||||
|
|
||||||
This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value:
|
This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value:
|
||||||
|
|
||||||
* Light Blue: (upgrades) This item has a better ROI than any building
|
* Light Blue: (upgrades) This item has a better PP than any building
|
||||||
* Green: This item has the best ROI
|
* Green: This item has the best PP
|
||||||
* Yellow: This item is not the best, but it is closer to best than it is to worst
|
* Yellow: This item is not the best, but it is closer to best than it is to worst
|
||||||
* Orange: This item is not the worst, but it is closer to worst than it is to best
|
* Orange: This item is not the worst, but it is closer to worst than it is to best
|
||||||
* Red: This item has the worst ROI
|
* Red: This item has the worst PP
|
||||||
* Purple: (upgrades) This item has a worse ROI than any building
|
* Purple: (upgrades) This item has a worse PP than any building
|
||||||
* Gray: (upgrades) This item has not been calculated and/or cannot be calculated due to no definitive worth.
|
* Gray: (upgrades) This item has not been calculated and/or cannot be calculated due to no definitive worth.
|
||||||
|
|
||||||
Note: For this index, **lower is better**, meaning a building with a ROI of 1 is more interesting than one with a ROI of 3.
|
Note: For this index, **lower is better**, meaning a building with a PP of 1 is more interesting than one with a PP of 3.
|
||||||
|
|
||||||
## What it doesn't do
|
## What it doesn't do
|
||||||
|
|
||||||
@@ -81,14 +81,14 @@ If you'd rather use the addon as a script via per example *Greasemonkey* or *Tam
|
|||||||
// @grant none
|
// @grant none
|
||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
javascript:(function() {
|
(function() {
|
||||||
var checkReady = setInterval(function() {
|
var checkReady = setInterval(function() {
|
||||||
if (typeof Game.ready !== 'undefined' && Game.ready) {
|
if (typeof Game.ready !== 'undefined' && Game.ready) {
|
||||||
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonster.js');
|
||||||
clearInterval(checkReady);
|
clearInterval(checkReady);
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}());
|
})();
|
||||||
```
|
```
|
||||||
If you are using the beta, use this instead:
|
If you are using the beta, use this instead:
|
||||||
|
|
||||||
@@ -101,14 +101,14 @@ If you are using the beta, use this instead:
|
|||||||
// @grant none
|
// @grant none
|
||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
javascript:(function() {
|
(function() {
|
||||||
var checkReady = setInterval(function() {
|
var checkReady = setInterval(function() {
|
||||||
if (typeof Game.ready !== 'undefined' && Game.ready) {
|
if (typeof Game.ready !== 'undefined' && Game.ready) {
|
||||||
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonsterBeta.js');
|
Game.LoadMod('http://aktanusa.github.io/CookieMonster/CookieMonsterBeta.js');
|
||||||
clearInterval(checkReady);
|
clearInterval(checkReady);
|
||||||
}
|
}
|
||||||
}, 1000);
|
}, 1000);
|
||||||
}());
|
})();
|
||||||
```
|
```
|
||||||
|
|
||||||
# Bugs and suggestions
|
# Bugs and suggestions
|
||||||
@@ -134,5 +134,5 @@ All suggestions are welcome, even the smallest ones.
|
|||||||
* **[Alderi Tokori](http://forum.dashnet.org/profile/Alderi)**: ROI calculations (unused now)
|
* **[Alderi Tokori](http://forum.dashnet.org/profile/Alderi)**: ROI calculations (unused now)
|
||||||
* **[Alhifar](https://github.com/Alhifar)**: Missed Golden Cookie Stat
|
* **[Alhifar](https://github.com/Alhifar)**: Missed Golden Cookie Stat
|
||||||
* **[BlackenedGem](https://github.com/BlackenedGem)**: Golden/Wrath Cookie Favicons
|
* **[BlackenedGem](https://github.com/BlackenedGem)**: Golden/Wrath Cookie Favicons
|
||||||
* **[Sandworm](https://github.com/svschouw)**: Modified ROI calculation
|
* **[Sandworm](https://github.com/svschouw)**: Modified PP calculation
|
||||||
* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer
|
* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer
|
||||||
82
queue/queue.js
Normal file
82
queue/queue.js
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
Queue.js
|
||||||
|
|
||||||
|
A function to represent a queue
|
||||||
|
|
||||||
|
Created by Stephen Morley - http://code.stephenmorley.org/ - and released under
|
||||||
|
the terms of the CC0 1.0 Universal legal code:
|
||||||
|
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/legalcode
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Creates a new queue. A queue is a first-in-first-out (FIFO) data structure -
|
||||||
|
* items are added to the end of the queue and removed from the front.
|
||||||
|
*/
|
||||||
|
function Queue(){
|
||||||
|
|
||||||
|
// initialise the queue and offset
|
||||||
|
var queue = [];
|
||||||
|
var offset = 0;
|
||||||
|
|
||||||
|
// Returns the length of the queue.
|
||||||
|
this.getLength = function(){
|
||||||
|
return (queue.length - offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns true if the queue is empty, and false otherwise.
|
||||||
|
this.isEmpty = function(){
|
||||||
|
return (queue.length == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enqueues the specified item. The parameter is:
|
||||||
|
*
|
||||||
|
* item - the item to enqueue
|
||||||
|
*/
|
||||||
|
this.enqueue = function(item){
|
||||||
|
queue.push(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dequeues an item and returns it. If the queue is empty, the value
|
||||||
|
* 'undefined' is returned.
|
||||||
|
*/
|
||||||
|
this.dequeue = function(){
|
||||||
|
|
||||||
|
// if the queue is empty, return immediately
|
||||||
|
if (queue.length == 0) return undefined;
|
||||||
|
|
||||||
|
// store the item at the front of the queue
|
||||||
|
var item = queue[offset];
|
||||||
|
|
||||||
|
// increment the offset and remove the free space if necessary
|
||||||
|
if (++ offset * 2 >= queue.length){
|
||||||
|
queue = queue.slice(offset);
|
||||||
|
offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the dequeued item
|
||||||
|
return item;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the item at the front of the queue (without dequeuing it). If the
|
||||||
|
* queue is empty then undefined is returned.
|
||||||
|
*/
|
||||||
|
this.peek = function(){
|
||||||
|
return (queue.length > 0 ? queue[offset] : undefined);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns the item at the spot specified by place in the queue (without
|
||||||
|
* dequeuing it). If the queue is emprty or the requested place is outside
|
||||||
|
* the queue then undefined is returned.
|
||||||
|
*/
|
||||||
|
this.get = function(place){
|
||||||
|
var item = undefined;
|
||||||
|
if (queue.length > 0 && place < (queue.length - offset) && place >= 0) {
|
||||||
|
item = queue[(offset + place)];
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
180
src/Cache.js
180
src/Cache.js
@@ -2,6 +2,13 @@
|
|||||||
* Cache *
|
* Cache *
|
||||||
*********/
|
*********/
|
||||||
|
|
||||||
|
CM.Cache.AddQueue = function() {
|
||||||
|
CM.Cache.Queue = document.createElement('script');
|
||||||
|
CM.Cache.Queue.type = 'text/javascript';
|
||||||
|
CM.Cache.Queue.setAttribute('src', 'http://aktanusa.github.io/CookieMonster/queue/queue.js');
|
||||||
|
document.head.appendChild(CM.Cache.Queue);
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.NextNumber = function(base) {
|
CM.Cache.NextNumber = function(base) {
|
||||||
var count = base > Math.pow(2, 53) ? Math.pow(2, Math.floor(Math.log(base) / Math.log(2)) - 53) : 1;
|
var 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) {
|
||||||
@@ -10,6 +17,13 @@ CM.Cache.NextNumber = function(base) {
|
|||||||
return (base + count);
|
return (base + count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildingsPrices = function() {
|
||||||
|
for (var i in Game.Objects) {
|
||||||
|
CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10);
|
||||||
|
CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeIncome = function() {
|
CM.Cache.RemakeIncome = function() {
|
||||||
// Simulate Building Buys for 1 amount
|
// Simulate Building Buys for 1 amount
|
||||||
CM.Sim.BuyBuildings(1, 'Objects');
|
CM.Sim.BuyBuildings(1, 'Objects');
|
||||||
@@ -24,72 +38,86 @@ CM.Cache.RemakeIncome = function() {
|
|||||||
CM.Sim.BuyBuildings(100, 'Objects100');
|
CM.Sim.BuyBuildings(100, 'Objects100');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsROI = function() {
|
CM.Cache.RemakeWrinkBank = function() {
|
||||||
|
var totalSucked = 0;
|
||||||
|
for (var i in Game.wrinklers) {
|
||||||
|
var sucked = Game.wrinklers[i].sucked;
|
||||||
|
var toSuck = 1.1;
|
||||||
|
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
|
||||||
|
if (Game.wrinklers[i].type==1) toSuck *= 3; // Shiny wrinklers
|
||||||
|
sucked *= toSuck;
|
||||||
|
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
||||||
|
totalSucked += sucked;
|
||||||
|
}
|
||||||
|
CM.Cache.WrinkBank = totalSucked;
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Cache.RemakeBuildingsPP = function() {
|
||||||
CM.Cache.min = -1;
|
CM.Cache.min = -1;
|
||||||
CM.Cache.max = -1;
|
CM.Cache.max = -1;
|
||||||
CM.Cache.mid = -1;
|
CM.Cache.mid = -1;
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
//CM.Cache.Objects[i].roi = Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus;
|
//CM.Cache.Objects[i].pp = Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus;
|
||||||
CM.Cache.Objects[i].roi = (Math.max(Game.Objects[i].getPrice() - Game.cookies, 0) / Game.cookiesPs) + (Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus);
|
CM.Cache.Objects[i].pp = (Math.max(Game.Objects[i].getPrice() - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (Game.Objects[i].getPrice() / CM.Cache.Objects[i].bonus);
|
||||||
if (CM.Cache.min == -1 || CM.Cache.Objects[i].roi < CM.Cache.min) CM.Cache.min = CM.Cache.Objects[i].roi;
|
if (CM.Cache.min == -1 || CM.Cache.Objects[i].pp < CM.Cache.min) CM.Cache.min = CM.Cache.Objects[i].pp;
|
||||||
if (CM.Cache.max == -1 || CM.Cache.Objects[i].roi > CM.Cache.max) CM.Cache.max = CM.Cache.Objects[i].roi;
|
if (CM.Cache.max == -1 || CM.Cache.Objects[i].pp > CM.Cache.max) CM.Cache.max = CM.Cache.Objects[i].pp;
|
||||||
}
|
}
|
||||||
CM.Cache.mid = ((CM.Cache.max - CM.Cache.min) / 2) + CM.Cache.min;
|
CM.Cache.mid = ((CM.Cache.max - CM.Cache.min) / 2) + CM.Cache.min;
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache.Objects[i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
if (CM.Cache.Objects[i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache.Objects[i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache.Objects[i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache.Objects[i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache.Objects[i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache.Objects[i].color = color;
|
CM.Cache.Objects[i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeUpgradeROI = function() {
|
CM.Cache.RemakeUpgradePP = function() {
|
||||||
for (var i in CM.Cache.Upgrades) {
|
for (var i in CM.Cache.Upgrades) {
|
||||||
//CM.Cache.Upgrades[i].roi = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus;
|
//CM.Cache.Upgrades[i].pp = Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus;
|
||||||
CM.Cache.Upgrades[i].roi = (Math.max(Game.Upgrades[i].getPrice() - Game.cookies, 0) / Game.cookiesPs) + (Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus);
|
CM.Cache.Upgrades[i].pp = (Math.max(Game.Upgrades[i].getPrice() - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (Game.Upgrades[i].getPrice() / CM.Cache.Upgrades[i].bonus);
|
||||||
if (isNaN(CM.Cache.Upgrades[i].roi)) CM.Cache.Upgrades[i].roi = 'Infinity';
|
if (isNaN(CM.Cache.Upgrades[i].pp)) CM.Cache.Upgrades[i].pp = 'Infinity';
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache.Upgrades[i].roi <= 0 || CM.Cache.Upgrades[i].roi == 'Infinity') color = CM.Disp.colorGray;
|
if (CM.Cache.Upgrades[i].pp <= 0 || CM.Cache.Upgrades[i].pp == 'Infinity') color = CM.Disp.colorGray;
|
||||||
else if (CM.Cache.Upgrades[i].roi < CM.Cache.min) color = CM.Disp.colorBlue;
|
else if (CM.Cache.Upgrades[i].pp < CM.Cache.min) color = CM.Disp.colorBlue;
|
||||||
else if (CM.Cache.Upgrades[i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
else if (CM.Cache.Upgrades[i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache.Upgrades[i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache.Upgrades[i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache.Upgrades[i].roi > CM.Cache.max) color = CM.Disp.colorPurple;
|
else if (CM.Cache.Upgrades[i].pp > CM.Cache.max) color = CM.Disp.colorPurple;
|
||||||
else if (CM.Cache.Upgrades[i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache.Upgrades[i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache.Upgrades[i].color = color;
|
CM.Cache.Upgrades[i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeBuildingsOtherROI = function(amount, target) {
|
CM.Cache.RemakeBuildingsOtherPP = function(amount, target) {
|
||||||
for (var i in CM.Cache[target]) {
|
for (var i in CM.Cache[target]) {
|
||||||
//CM.Cache[target][i].roi = CM.Cache[target][i].price / CM.Cache[target][i].bonus;
|
//CM.Cache[target][i].pp = CM.Cache[target][i].price / CM.Cache[target][i].bonus;
|
||||||
CM.Cache[target][i].roi = (Math.max(CM.Cache[target][i].price - Game.cookies, 0) / Game.cookiesPs) + (CM.Cache[target][i].price / CM.Cache[target][i].bonus);
|
CM.Cache[target][i].pp = (Math.max(CM.Cache[target][i].price - (Game.cookies + CM.Disp.GetWrinkConfigBank()), 0) / Game.cookiesPs) + (CM.Cache[target][i].price / CM.Cache[target][i].bonus);
|
||||||
var color = '';
|
var color = '';
|
||||||
if (CM.Cache[target][i].roi <= 0 || CM.Cache[target][i].roi == 'Infinity') color = CM.Disp.colorGray;
|
if (CM.Cache[target][i].pp <= 0 || CM.Cache[target][i].pp == 'Infinity') color = CM.Disp.colorGray;
|
||||||
else if (CM.Cache[target][i].roi < CM.Cache.min) color = CM.Disp.colorBlue;
|
else if (CM.Cache[target][i].pp < CM.Cache.min) color = CM.Disp.colorBlue;
|
||||||
else if (CM.Cache[target][i].roi == CM.Cache.min) color = CM.Disp.colorGreen;
|
else if (CM.Cache[target][i].pp == CM.Cache.min) color = CM.Disp.colorGreen;
|
||||||
else if (CM.Cache[target][i].roi == CM.Cache.max) color = CM.Disp.colorRed;
|
else if (CM.Cache[target][i].pp == CM.Cache.max) color = CM.Disp.colorRed;
|
||||||
else if (CM.Cache[target][i].roi > CM.Cache.max) color = CM.Disp.colorPurple;
|
else if (CM.Cache[target][i].pp > CM.Cache.max) color = CM.Disp.colorPurple;
|
||||||
else if (CM.Cache[target][i].roi > CM.Cache.mid) color = CM.Disp.colorOrange;
|
else if (CM.Cache[target][i].pp > CM.Cache.mid) color = CM.Disp.colorOrange;
|
||||||
else color = CM.Disp.colorYellow;
|
else color = CM.Disp.colorYellow;
|
||||||
CM.Cache[target][i].color = color;
|
CM.Cache[target][i].color = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeROI = function() {
|
CM.Cache.RemakePP = function() {
|
||||||
// Buildings for 1 amount
|
// Buildings for 1 amount
|
||||||
CM.Cache.RemakeBuildingsROI();
|
CM.Cache.RemakeBuildingsPP();
|
||||||
|
|
||||||
// Upgrades
|
// Upgrades
|
||||||
CM.Cache.RemakeUpgradeROI();
|
CM.Cache.RemakeUpgradePP();
|
||||||
|
|
||||||
// Buildings for 10 amount
|
// Buildings for 10 amount
|
||||||
CM.Cache.RemakeBuildingsOtherROI(10, 'Objects10');
|
CM.Cache.RemakeBuildingsOtherPP(10, 'Objects10');
|
||||||
|
|
||||||
// Buildings for 100 amount
|
// Buildings for 100 amount
|
||||||
CM.Cache.RemakeBuildingsOtherROI(100, 'Objects100');
|
CM.Cache.RemakeBuildingsOtherPP(100, 'Objects100');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Cache.RemakeLucky = function() {
|
CM.Cache.RemakeLucky = function() {
|
||||||
@@ -191,9 +219,83 @@ CM.Cache.RemakeSellForChoEgg = function() {
|
|||||||
CM.Cache.SellForChoEgg = sellTotal;
|
CM.Cache.SellForChoEgg = sellTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Cache.InitCookiesDiff = function() {
|
||||||
|
CM.Cache.CookiesDiff = new Queue();
|
||||||
|
CM.Cache.WrinkDiff = new Queue();
|
||||||
|
CM.Cache.ChoEggDiff = new Queue();
|
||||||
|
CM.Cache.ClicksDiff = new Queue();
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Cache.UpdateAvgCPS = function() {
|
||||||
|
var currDate = Math.floor(Date.now() / 1000);
|
||||||
|
if (CM.Cache.lastDate != currDate) {
|
||||||
|
var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg;
|
||||||
|
if (Game.cpsSucked > 0) {
|
||||||
|
choEggTotal += CM.Cache.WrinkBank;
|
||||||
|
}
|
||||||
|
choEggTotal *= 0.05;
|
||||||
|
|
||||||
|
if (CM.Cache.lastDate != -1) {
|
||||||
|
var timeDiff = currDate - CM.Cache.lastDate
|
||||||
|
var bankDiffAvg = Math.max(0, (Game.cookies - CM.Cache.lastCookies)) / timeDiff;
|
||||||
|
var wrinkDiffAvg = (CM.Cache.WrinkBank - CM.Cache.lastWrinkCookies) / timeDiff;
|
||||||
|
var choEggDiffAvg = Math.max(0,(choEggTotal - CM.Cache.lastChoEgg)) / timeDiff;
|
||||||
|
var clicksDiffAvg = (Game.cookieClicks - CM.Cache.lastClicks) / timeDiff;
|
||||||
|
for (var i = 0; i < timeDiff; i++) {
|
||||||
|
CM.Cache.CookiesDiff.enqueue(bankDiffAvg);
|
||||||
|
CM.Cache.WrinkDiff.enqueue(wrinkDiffAvg);
|
||||||
|
CM.Cache.ChoEggDiff.enqueue(choEggDiffAvg);
|
||||||
|
CM.Cache.ClicksDiff.enqueue(clicksDiffAvg);
|
||||||
|
}
|
||||||
|
// Assumes the queues are the same length
|
||||||
|
while (CM.Cache.CookiesDiff.getLength() > 1800) {
|
||||||
|
CM.Cache.CookiesDiff.dequeue();
|
||||||
|
CM.Cache.WrinkDiff.dequeue();
|
||||||
|
CM.Cache.ClicksDiff.dequeue();
|
||||||
|
}
|
||||||
|
|
||||||
|
while (CM.Cache.ClicksDiff.getLength() > 30) {
|
||||||
|
CM.Cache.ClicksDiff.dequeue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CM.Cache.lastDate = currDate;
|
||||||
|
CM.Cache.lastCookies = Game.cookies;
|
||||||
|
CM.Cache.lastWrinkCookies = CM.Cache.WrinkBank;
|
||||||
|
CM.Cache.lastChoEgg = choEggTotal;
|
||||||
|
CM.Cache.lastClicks = Game.cookieClicks;
|
||||||
|
|
||||||
|
var totalGainBank = 0;
|
||||||
|
var totalGainWrink = 0;
|
||||||
|
var totalGainChoEgg = 0;
|
||||||
|
var cpsLength = Math.min(CM.Cache.CookiesDiff.getLength(), CM.Disp.times[CM.Config.AvgCPSHist] * 60);
|
||||||
|
// Assumes the queues are the same length
|
||||||
|
for (var i = CM.Cache.CookiesDiff.getLength() - cpsLength; i < CM.Cache.CookiesDiff.getLength(); i++) {
|
||||||
|
totalGainBank += CM.Cache.CookiesDiff.get(i);
|
||||||
|
totalGainWrink += CM.Cache.WrinkDiff.get(i);
|
||||||
|
totalGainChoEgg += CM.Cache.ChoEggDiff.get(i);
|
||||||
|
}
|
||||||
|
CM.Cache.AvgCPS = (totalGainBank + (CM.Config.CalcWrink ? totalGainWrink : 0)) / cpsLength;
|
||||||
|
|
||||||
|
if (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')) {
|
||||||
|
CM.Cache.AvgCPSChoEgg = (totalGainBank + (CM.Config.CalcWrink ? totalGainWrink : 0) + totalGainChoEgg) / cpsLength;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
CM.Cache.AvgCPSChoEgg = CM.Cache.AvgCPS;
|
||||||
|
}
|
||||||
|
|
||||||
|
var totalClicks = 0;
|
||||||
|
var clicksLength = Math.min(CM.Cache.ClicksDiff.getLength(), CM.Disp.times[CM.Config.AvgClicksHist]);
|
||||||
|
for (var i = CM.Cache.ClicksDiff.getLength() - clicksLength; i < CM.Cache.ClicksDiff.getLength(); i++) {
|
||||||
|
totalClicks += CM.Cache.ClicksDiff.get(i);
|
||||||
|
}
|
||||||
|
CM.Cache.AvgClicks = totalClicks / clicksLength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CM.Cache.min = -1;
|
CM.Cache.min = -1;
|
||||||
CM.Cache.max = -1;
|
CM.Cache.max = -1;
|
||||||
CM.Cache.mid = -1;
|
CM.Cache.mid = -1;
|
||||||
|
CM.Cache.WrinkBank = -1;
|
||||||
CM.Cache.NoGoldSwitchCookiesPS = 0;
|
CM.Cache.NoGoldSwitchCookiesPS = 0;
|
||||||
CM.Cache.Lucky = 0;
|
CM.Cache.Lucky = 0;
|
||||||
CM.Cache.LuckyReward = 0;
|
CM.Cache.LuckyReward = 0;
|
||||||
@@ -210,4 +312,18 @@ CM.Cache.ChainFrenzyReward = 0;
|
|||||||
CM.Cache.ChainFrenzyWrathReward = 0;
|
CM.Cache.ChainFrenzyWrathReward = 0;
|
||||||
CM.Cache.CentEgg = 0;
|
CM.Cache.CentEgg = 0;
|
||||||
CM.Cache.SellForChoEgg = 0;
|
CM.Cache.SellForChoEgg = 0;
|
||||||
|
CM.Cache.Title = '';
|
||||||
|
CM.Cache.HadFierHoard = false;
|
||||||
|
CM.Cache.lastDate = -1;
|
||||||
|
CM.Cache.lastCookies = -1;
|
||||||
|
CM.Cache.lastWrinkCookies = -1;
|
||||||
|
CM.Cache.lastChoEgg = -1;
|
||||||
|
CM.Cache.lastClicks = -1;
|
||||||
|
CM.Cache.CookiesDiff;
|
||||||
|
CM.Cache.WrinkDiff;
|
||||||
|
CM.Cache.ChoEggDiff;
|
||||||
|
CM.Cache.ClicksDiff;
|
||||||
|
CM.Cache.AvgCPS = -1;
|
||||||
|
CM.Cache.AvgCPSChoEgg = -1;
|
||||||
|
CM.Cache.AvgClicks = -1;
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,12 @@ CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar
|
|||||||
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}};
|
CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}};
|
||||||
CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}};
|
CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}};
|
||||||
CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best ROI building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best ROI building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst ROI buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst ROI buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst ROI building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst ROI building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity ROI, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}};
|
CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}};
|
||||||
|
CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinkers', toggle: true};
|
||||||
|
CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false};
|
||||||
|
CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false};
|
||||||
|
CM.ConfigData.AvgClicksHist = {label: ['Average Cookie Clicks for past 1s', 'Average Cookie Clicks for past 5s', 'Average Cookie Clicks for past 10s', 'Average Cookie Clicks for past 15s', 'Average Cookie Clicks for past 30s'], desc: 'How much time average Cookie Clicks should consider', toggle: false};
|
||||||
|
CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true};
|
||||||
CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true};
|
CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true};
|
||||||
CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true};
|
CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true};
|
||||||
CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'};
|
CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'};
|
||||||
@@ -130,13 +135,12 @@ for (var i = 0; i < 101; i++) {
|
|||||||
CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'};
|
CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'};
|
||||||
CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'};
|
CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'};
|
||||||
CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}};
|
CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}};
|
||||||
CM.ConfigData.Title = {label: ['Title OFF', 'Title ON'], desc: 'Update title with Golden Cookie/Season Popup timers', toggle: true};
|
CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true};
|
||||||
CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}};
|
CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}};
|
||||||
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true};
|
CM.ConfigData.Tooltip = {label: ['Tooltip Information OFF', 'Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true};
|
||||||
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true};
|
CM.ConfigData.TooltipAmor = {label: ['Tooltip Amortization Information OFF', 'Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true};
|
||||||
CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}};
|
CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}};
|
||||||
CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', toggle: false, func: function() {CM.Disp.ToggleToolWarnCautPos();}};
|
CM.ConfigData.ToolWarnCautPos = {label: ['Tooltip Warning/Caution Position (Left)', 'Tooltip Warning/Caution Position (Bottom)'], desc: 'Placement of the warning/caution boxes', toggle: false, func: function() {CM.Disp.ToggleToolWarnCautPos();}};
|
||||||
CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true};
|
|
||||||
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
|
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
|
||||||
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
|
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
|
||||||
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
|
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
|
||||||
|
|||||||
185
src/Disp.js
185
src/Disp.js
@@ -85,6 +85,20 @@ CM.Disp.Beautify = function(num, frac) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Disp.GetWrinkConfigBank = function() {
|
||||||
|
if (CM.Config.CalcWrink)
|
||||||
|
return CM.Cache.WrinkBank;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
CM.Disp.GetCPS = function() {
|
||||||
|
if (CM.Config.CPSMode)
|
||||||
|
return CM.Cache.AvgCPS;
|
||||||
|
else
|
||||||
|
return (Game.cookiesPs * (1 - Game.cpsSucked));
|
||||||
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateBackground = function() {
|
CM.Disp.UpdateBackground = function() {
|
||||||
Game.Background.canvas.width = Game.Background.canvas.parentNode.offsetWidth;
|
Game.Background.canvas.width = Game.Background.canvas.parentNode.offsetWidth;
|
||||||
Game.Background.canvas.height = Game.Background.canvas.parentNode.offsetHeight;
|
Game.Background.canvas.height = Game.Background.canvas.parentNode.offsetHeight;
|
||||||
@@ -148,9 +162,9 @@ CM.Disp.CreateBotBar = function() {
|
|||||||
var bonus = document.createElement('tr');
|
var bonus = document.createElement('tr');
|
||||||
bonus.appendChild(firstCol('Bonus Income', CM.Disp.colorBlue));
|
bonus.appendChild(firstCol('Bonus Income', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(bonus);
|
tbody.appendChild(bonus);
|
||||||
var roi = document.createElement('tr');
|
var pp = document.createElement('tr');
|
||||||
roi.appendChild(firstCol('Return On Investment', CM.Disp.colorBlue));
|
pp.appendChild(firstCol('Payback Period', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(roi);
|
tbody.appendChild(pp);
|
||||||
var time = document.createElement('tr');
|
var time = document.createElement('tr');
|
||||||
time.appendChild(firstCol('Time Left', CM.Disp.colorBlue));
|
time.appendChild(firstCol('Time Left', CM.Disp.colorBlue));
|
||||||
tbody.appendChild(time);
|
tbody.appendChild(time);
|
||||||
@@ -164,7 +178,7 @@ CM.Disp.CreateBotBar = function() {
|
|||||||
header.appendChild(document.createTextNode(')'));
|
header.appendChild(document.createTextNode(')'));
|
||||||
type.appendChild(header);
|
type.appendChild(header);
|
||||||
bonus.appendChild(document.createElement('td'));
|
bonus.appendChild(document.createElement('td'));
|
||||||
roi.appendChild(document.createElement('td'));
|
pp.appendChild(document.createElement('td'));
|
||||||
time.appendChild(document.createElement('td'));
|
time.appendChild(document.createElement('td'));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -194,7 +208,7 @@ CM.Disp.UpdateBotBarOther = function() {
|
|||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[0].childNodes[count].childNodes[1].textContent = Game.Objects[i].amount;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[0].childNodes[count].childNodes[1].textContent = Game.Objects[i].amount;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[1].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].bonus, 2);
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[1].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].bonus, 2);
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].className = CM.Disp.colorTextPre + CM.Cache.Objects[i].color;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].className = CM.Disp.colorTextPre + CM.Cache.Objects[i].color;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].roi, 2);
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[2].childNodes[count].textContent = Beautify(CM.Cache.Objects[i].pp, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,7 +219,7 @@ CM.Disp.UpdateBotBarTime = function() {
|
|||||||
|
|
||||||
for (var i in CM.Cache.Objects) {
|
for (var i in CM.Cache.Objects) {
|
||||||
count++;
|
count++;
|
||||||
var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice(), Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
|
var timeColor = CM.Disp.GetTimeColor(Game.Objects[i].getPrice(), (Game.cookies + CM.Disp.GetWrinkConfigBank()), CM.Disp.GetCPS());
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].className = CM.Disp.colorTextPre + timeColor.color;
|
||||||
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text;
|
CM.Disp.BotBar.firstChild.firstChild.childNodes[3].childNodes[count].textContent = timeColor.text;
|
||||||
}
|
}
|
||||||
@@ -499,13 +513,13 @@ CM.Disp.CreateUpgradeBar = function() {
|
|||||||
return div;
|
return div;
|
||||||
}
|
}
|
||||||
|
|
||||||
legend.appendChild(legendLine(CM.Disp.colorBlue, 'Better than best ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorBlue, 'Better than best PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorGreen, 'Same as best ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorGreen, 'Same as best PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorYellow, 'Between best and worst ROI buildings closer to best'));
|
legend.appendChild(legendLine(CM.Disp.colorYellow, 'Between best and worst PP buildings closer to best'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorOrange, 'Between best and worst ROI buildings closer to worst'));
|
legend.appendChild(legendLine(CM.Disp.colorOrange, 'Between best and worst PP buildings closer to worst'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorRed, 'Same as worst ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorRed, 'Same as worst PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorPurple, 'Worse than worst ROI building'));
|
legend.appendChild(legendLine(CM.Disp.colorPurple, 'Worse than worst PP building'));
|
||||||
legend.appendChild(legendLine(CM.Disp.colorGray, 'Negative or infinity ROI'));
|
legend.appendChild(legendLine(CM.Disp.colorGray, 'Negative or infinity PP'));
|
||||||
placeholder.appendChild(legend);
|
placeholder.appendChild(legend);
|
||||||
|
|
||||||
CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');};
|
CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');};
|
||||||
@@ -726,7 +740,10 @@ CM.Disp.EmphSeasonPopup = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateTitle = function() {
|
CM.Disp.UpdateTitle = function() {
|
||||||
if (CM.Config.Title == 1) {
|
if (Game.OnAscend || CM.Config.Title == 0) {
|
||||||
|
document.title = CM.Cache.Title;
|
||||||
|
}
|
||||||
|
else if (CM.Config.Title == 1) {
|
||||||
var addSP = false;
|
var addSP = false;
|
||||||
|
|
||||||
var titleGC;
|
var titleGC;
|
||||||
@@ -755,13 +772,35 @@ CM.Disp.UpdateTitle = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var str = document.title;
|
var str = CM.Cache.Title;
|
||||||
if (str.charAt(0) == '[') {
|
if (str.charAt(0) == '[') {
|
||||||
str = str.substring(str.lastIndexOf(']') + 1);
|
str = str.substring(str.lastIndexOf(']') + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
document.title = titleGC + (addSP ? titleSP : '') + ' ' + str;
|
document.title = titleGC + (addSP ? titleSP : '') + ' ' + str;
|
||||||
}
|
}
|
||||||
|
else if (CM.Config.Title == 2) {
|
||||||
|
var str = '';
|
||||||
|
var spawn = false;
|
||||||
|
if (l('goldenCookie').style.display != 'none') {
|
||||||
|
spawn = true;
|
||||||
|
if (Game.goldenCookie.wrath) {
|
||||||
|
str += '[W ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
str += '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Game.season=='christmas' && l('seasonPopup').style.display != 'none') {
|
||||||
|
str += '[R ' + Math.ceil(Game.seasonPopup.life / Game.fps) + ']';
|
||||||
|
spawn = true;
|
||||||
|
}
|
||||||
|
if (spawn) str += ' - ';
|
||||||
|
var title = 'Cookie Clicker';
|
||||||
|
if (Game.season == 'fools') title = 'Cookie Baker';
|
||||||
|
str += title;
|
||||||
|
document.title = str;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.CollectWrinklers = function() {
|
CM.Disp.CollectWrinklers = function() {
|
||||||
@@ -870,6 +909,13 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(div);
|
frag.appendChild(div);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
frag.appendChild(header('Calculation'));
|
||||||
|
frag.appendChild(listing('CalcWrink'));
|
||||||
|
frag.appendChild(listing('CPSMode'));
|
||||||
|
frag.appendChild(listing('AvgCPSHist'));
|
||||||
|
frag.appendChild(listing('AvgClicksHist'));
|
||||||
|
frag.appendChild(listing('ToolWarnCautBon'));
|
||||||
|
|
||||||
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'));
|
||||||
@@ -905,7 +951,6 @@ CM.Disp.AddMenuPref = function(title) {
|
|||||||
frag.appendChild(listing('TooltipAmor'));
|
frag.appendChild(listing('TooltipAmor'));
|
||||||
frag.appendChild(listing('ToolWarnCaut'));
|
frag.appendChild(listing('ToolWarnCaut'));
|
||||||
frag.appendChild(listing('ToolWarnCautPos'));
|
frag.appendChild(listing('ToolWarnCautPos'));
|
||||||
frag.appendChild(listing('ToolWarnCautBon'));
|
|
||||||
frag.appendChild(listing('ToolWrink'));
|
frag.appendChild(listing('ToolWrink'));
|
||||||
|
|
||||||
frag.appendChild(header('Statistics'));
|
frag.appendChild(header('Statistics'));
|
||||||
@@ -996,11 +1041,11 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
stats.appendChild(header('Lucky Cookies', 'Lucky'));
|
||||||
if (CM.Config.StatsPref.Lucky) {
|
if (CM.Config.StatsPref.Lucky) {
|
||||||
var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var luckyColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var luckyCurBase = Math.min(Game.cookies * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13;
|
var luckyCurBase = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13;
|
||||||
var luckyRewardMax = CM.Cache.LuckyReward;
|
var luckyRewardMax = CM.Cache.LuckyReward;
|
||||||
var luckyRewardMaxWrath = CM.Cache.LuckyReward;
|
var luckyRewardMaxWrath = CM.Cache.LuckyReward;
|
||||||
var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy;
|
var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy;
|
||||||
@@ -1050,20 +1095,20 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
stats.appendChild(header('Chain Cookies', 'Chain'));
|
stats.appendChild(header('Chain Cookies', 'Chain'));
|
||||||
if (CM.Config.StatsPref.Chain) {
|
if (CM.Config.StatsPref.Chain) {
|
||||||
var chainColor = (Game.cookies < CM.Cache.Chain) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < 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.Disp.GetWrinkConfigBank()) < CM.Cache.Chain) ? CM.Disp.FormatTime((CM.Cache.Chain - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainWrathColor = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainWrathColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainWrathTime = (Game.cookies < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainWrathTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
var chainWrathColorFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
var chainWrathColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen;
|
||||||
var chainWrathTimeFrenzy = (Game.cookies < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : '';
|
var chainWrathTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : '';
|
||||||
|
|
||||||
var chainRewardMax = CM.Cache.ChainReward;
|
var chainRewardMax = CM.Cache.ChainReward;
|
||||||
var chainWrathRewardMax = CM.Cache.ChainWrathReward;
|
var chainWrathRewardMax = CM.Cache.ChainWrathReward;
|
||||||
var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward;
|
var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward;
|
||||||
var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward;
|
var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward;
|
||||||
var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, Game.cookies * 0.25);
|
var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, (Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.25);
|
||||||
var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax);
|
var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax);
|
||||||
var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax);
|
var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax);
|
||||||
if (Game.hasAura('Ancestral Metamorphosis')) {
|
if (Game.hasAura('Ancestral Metamorphosis')) {
|
||||||
@@ -1133,39 +1178,16 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
var choEgg = (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')); // Needs to be done for the checking below
|
var choEgg = (Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg')); // Needs to be done for the checking below
|
||||||
|
|
||||||
|
|
||||||
if (CM.Config.StatsPref.Wrink || (CM.Config.StatsPref.Sea && choEgg) || CM.Config.StatsPref.Prestige) {
|
|
||||||
var totalSucked = 0; // Used in Prestige and Chocolate Egg calculation below also
|
|
||||||
for (var i in Game.wrinklers) {
|
|
||||||
var sucked = Game.wrinklers[i].sucked;
|
|
||||||
var toSuck = 1.1;
|
|
||||||
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;
|
|
||||||
if (Game.wrinklers[i].type==1) toSuck *= 3; // Shiny wrinklers
|
|
||||||
sucked *= toSuck;
|
|
||||||
if (Game.Has('Wrinklerspawn')) sucked *= 1.05;
|
|
||||||
totalSucked += sucked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (choEgg) {
|
|
||||||
var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg;
|
|
||||||
if (Game.cpsSucked > 0) {
|
|
||||||
choEggTotal += totalSucked;
|
|
||||||
}
|
|
||||||
choEggTotal *= 0.05; // Used in Prestige calculation below also
|
|
||||||
}
|
|
||||||
|
|
||||||
stats.appendChild(header('Prestige', 'Prestige'));
|
stats.appendChild(header('Prestige', 'Prestige'));
|
||||||
if (CM.Config.StatsPref.Prestige) {
|
if (CM.Config.StatsPref.Prestige) {
|
||||||
var possiblePresMax = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset + totalSucked + (choEgg ? choEggTotal : 0)));
|
var possiblePresMax = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset + CM.Cache.WrinkBank + (choEgg ? CM.Cache.lastChoEgg : 0)));
|
||||||
var possiblePres = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset));
|
var neededCook = Game.HowManyCookiesReset(possiblePresMax + 1) - (Game.cookiesEarned + Game.cookiesReset + CM.Cache.WrinkBank + (choEgg ? CM.Cache.lastChoEgg : 0));
|
||||||
var neededCook = Game.HowManyCookiesReset(possiblePres + 1) - (Game.cookiesEarned + Game.cookiesReset);
|
|
||||||
|
|
||||||
stats.appendChild(listing(listingQuest('Prestige Level (CUR / MAX)', 'PrestMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.prestige) + ' / ' + Beautify(possiblePresMax))));
|
stats.appendChild(listing(listingQuest('Prestige Level (CUR / MAX)', 'PrestMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.prestige) + ' / ' + Beautify(possiblePresMax))));
|
||||||
var cookiesNextFrag = document.createDocumentFragment();
|
var cookiesNextFrag = document.createDocumentFragment();
|
||||||
cookiesNextFrag.appendChild(document.createTextNode(Beautify(neededCook)));
|
cookiesNextFrag.appendChild(document.createTextNode(Beautify(neededCook)));
|
||||||
var cookiesNextSmall = document.createElement('small');
|
var cookiesNextSmall = document.createElement('small');
|
||||||
cookiesNextSmall.textContent = ' (' + (CM.Disp.FormatTime(neededCook / (Game.cookiesPs * (1 - Game.cpsSucked)), 1)) + ')';
|
cookiesNextSmall.textContent = ' (' + (CM.Disp.FormatTime(neededCook / CM.Cache.AvgCPSChoEgg, 1)) + ')';
|
||||||
cookiesNextFrag.appendChild(cookiesNextSmall);
|
cookiesNextFrag.appendChild(cookiesNextSmall);
|
||||||
stats.appendChild(listing(listingQuest('Cookies To Next Level', 'NextPrestTooltipPlaceholder'), cookiesNextFrag));
|
stats.appendChild(listing(listingQuest('Cookies To Next Level', 'NextPrestTooltipPlaceholder'), cookiesNextFrag));
|
||||||
stats.appendChild(listing(listingQuest('Heavenly Chips (CUR / MAX)', 'HeavenChipMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.heavenlyChips) + ' / ' + Beautify((possiblePresMax - Game.prestige) + Game.heavenlyChips))));
|
stats.appendChild(listing(listingQuest('Heavenly Chips (CUR / MAX)', 'HeavenChipMaxTooltipPlaceholder'), document.createTextNode(Beautify(Game.heavenlyChips) + ' / ' + Beautify((possiblePresMax - Game.prestige) + Game.heavenlyChips))));
|
||||||
@@ -1185,7 +1207,7 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
stats.appendChild(header('Wrinklers', 'Wrink'));
|
stats.appendChild(header('Wrinklers', 'Wrink'));
|
||||||
if (CM.Config.StatsPref.Wrink) {
|
if (CM.Config.StatsPref.Wrink) {
|
||||||
var popAllFrag = document.createDocumentFragment();
|
var popAllFrag = document.createDocumentFragment();
|
||||||
popAllFrag.appendChild(document.createTextNode(Beautify(totalSucked) + ' '));
|
popAllFrag.appendChild(document.createTextNode(Beautify(CM.Cache.WrinkBank) + ' '));
|
||||||
var popAllA = document.createElement('a');
|
var popAllA = document.createElement('a');
|
||||||
popAllA.textContent = 'Pop All';
|
popAllA.textContent = 'Pop All';
|
||||||
popAllA.className = 'option';
|
popAllA.className = 'option';
|
||||||
@@ -1284,16 +1306,18 @@ CM.Disp.AddMenuStats = function(title) {
|
|||||||
|
|
||||||
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec))));
|
||||||
if (choEgg) {
|
if (choEgg) {
|
||||||
stats.appendChild(listing(listingQuest('Chocolate Egg Cookies', 'ChoEggTooltipPlaceholder'), document.createTextNode(Beautify(choEggTotal))));
|
stats.appendChild(listing(listingQuest('Chocolate Egg Cookies', 'ChoEggTooltipPlaceholder'), document.createTextNode(Beautify(CM.Cache.lastChoEgg))));
|
||||||
}
|
}
|
||||||
if (centEgg) {
|
if (centEgg) {
|
||||||
stats.appendChild(listing('Century Egg Multiplier', document.createTextNode(Beautify(CM.Cache.CentEgg, 1) + '%')));
|
stats.appendChild(listing('Century Egg Multiplier', document.createTextNode((Math.round(CM.Cache.CentEgg * 100) / 100) + '%')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stats.appendChild(header('Miscellaneous', 'Misc'));
|
stats.appendChild(header('Miscellaneous', 'Misc'));
|
||||||
if (CM.Config.StatsPref.Misc) {
|
if (CM.Config.StatsPref.Misc) {
|
||||||
|
stats.appendChild(listing('Average Cookies Per Second (Past ' + CM.Disp.times[CM.Config.AvgCPSHist] + (CM.Config.AvgCPSHist == 0 ? ' minute' : ' minutes') + ')', document.createTextNode(Beautify(CM.Cache.AvgCPS, 3))));
|
||||||
|
stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.times[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1))));
|
||||||
stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks))));
|
stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks))));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1317,7 +1341,7 @@ CM.Disp.AddMenu = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.RefreshMenu = function() {
|
CM.Disp.RefreshMenu = function() {
|
||||||
if (CM.Config.UpStats && Game.onMenu == 'stats' && Game.drawT % (Game.fps * 5) != 0 && Game.drawT % Game.fps == 0) Game.UpdateMenu();
|
if (CM.Config.UpStats && Game.onMenu == 'stats' && (Game.drawT - 1) % (Game.fps * 5) != 0 && (Game.drawT - 1) % Game.fps == 0) Game.UpdateMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Disp.UpdateTooltipLocation = function() {
|
CM.Disp.UpdateTooltipLocation = function() {
|
||||||
@@ -1482,11 +1506,11 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
income.style.color = 'white';
|
income.style.color = 'white';
|
||||||
income.id = 'CMTooltipIncome';
|
income.id = 'CMTooltipIncome';
|
||||||
tooltip.appendChild(income);
|
tooltip.appendChild(income);
|
||||||
tooltip.appendChild(header('Return On Investment'));
|
tooltip.appendChild(header('Payback Period'));
|
||||||
var roi = document.createElement('div');
|
var pp = document.createElement('div');
|
||||||
roi.style.marginBottom = '4px';
|
pp.style.marginBottom = '4px';
|
||||||
roi.id = 'CMTooltipROI';
|
pp.id = 'CMTooltipPP';
|
||||||
tooltip.appendChild(roi);
|
tooltip.appendChild(pp);
|
||||||
tooltip.appendChild(header('Time Left'));
|
tooltip.appendChild(header('Time Left'));
|
||||||
var time = document.createElement('div');
|
var time = document.createElement('div');
|
||||||
time.id = 'CMTooltipTime';
|
time.id = 'CMTooltipTime';
|
||||||
@@ -1505,6 +1529,11 @@ CM.Disp.Tooltip = function(type, name) {
|
|||||||
|
|
||||||
CM.Disp.UpdateTooltip = function() {
|
CM.Disp.UpdateTooltip = function() {
|
||||||
if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) {
|
if (l('tooltipAnchor').style.display != 'none' && l('CMTooltipArea') != null) {
|
||||||
|
|
||||||
|
// Error checking
|
||||||
|
if (CM.Disp.tooltipType == 'u' && (typeof Game.UpgradesInStore[CM.Disp.tooltipName] === 'undefined' || typeof CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name] === 'undefined')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var price;
|
var price;
|
||||||
var bonus;
|
var bonus;
|
||||||
if (CM.Disp.tooltipType == 'b') {
|
if (CM.Disp.tooltipType == 'b') {
|
||||||
@@ -1524,8 +1553,8 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
bonus = CM.Cache[target][CM.Disp.tooltipName].bonus;
|
bonus = CM.Cache[target][CM.Disp.tooltipName].bonus;
|
||||||
if (CM.Config.Tooltip == 1 && Game.buyMode == 1) {
|
if (CM.Config.Tooltip == 1 && Game.buyMode == 1) {
|
||||||
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
||||||
l('CMTooltipROI').textContent = Beautify(CM.Cache[target][CM.Disp.tooltipName].roi, 2);
|
l('CMTooltipPP').textContent = Beautify(CM.Cache[target][CM.Disp.tooltipName].pp, 2);
|
||||||
l('CMTooltipROI').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
l('CMTooltipPP').className = CM.Disp.colorTextPre + CM.Cache[target][CM.Disp.tooltipName].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // Upgrades
|
else { // Upgrades
|
||||||
@@ -1533,8 +1562,8 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
price = Game.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].getPrice();
|
||||||
if (CM.Config.Tooltip == 1) {
|
if (CM.Config.Tooltip == 1) {
|
||||||
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
l('CMTooltipBorder').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
||||||
l('CMTooltipROI').textContent = Beautify(CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].roi, 2);
|
l('CMTooltipPP').textContent = Beautify(CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].pp, 2);
|
||||||
l('CMTooltipROI').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
l('CMTooltipPP').className = CM.Disp.colorTextPre + CM.Cache.Upgrades[Game.UpgradesInStore[CM.Disp.tooltipName].name].color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CM.Config.Tooltip == 1 && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
if (CM.Config.Tooltip == 1 && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
||||||
@@ -1545,7 +1574,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)';
|
l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)';
|
||||||
}
|
}
|
||||||
|
|
||||||
var timeColor = CM.Disp.GetTimeColor(price, Game.cookies, (Game.cookiesPs * (1 - Game.cpsSucked)));
|
var timeColor = CM.Disp.GetTimeColor(price, (Game.cookies + CM.Disp.GetWrinkConfigBank()), CM.Disp.GetCPS());
|
||||||
l('CMTooltipTime').textContent = timeColor.text;
|
l('CMTooltipTime').textContent = timeColor.text;
|
||||||
l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color;
|
l('CMTooltipTime').className = CM.Disp.colorTextPre + timeColor.color;
|
||||||
}
|
}
|
||||||
@@ -1560,7 +1589,7 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
warn += ((bonusNoFren * 60 * 15) / 0.15);
|
warn += ((bonusNoFren * 60 * 15) / 0.15);
|
||||||
}
|
}
|
||||||
var caut = warn * 7;
|
var caut = warn * 7;
|
||||||
var amount = Game.cookies - price;
|
var amount = (Game.cookies + CM.Disp.GetWrinkConfigBank()) - price;
|
||||||
if ((amount < warn || amount < caut) && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
if ((amount < warn || amount < caut) && (CM.Disp.tooltipType != 'b' || Game.buyMode == 1)) {
|
||||||
if (CM.Config.ToolWarnCautPos == 0) {
|
if (CM.Config.ToolWarnCautPos == 0) {
|
||||||
CM.Disp.TooltipWarnCaut.style.right = '0px';
|
CM.Disp.TooltipWarnCaut.style.right = '0px';
|
||||||
@@ -1572,13 +1601,13 @@ CM.Disp.UpdateTooltip = function() {
|
|||||||
|
|
||||||
if (amount < warn) {
|
if (amount < warn) {
|
||||||
l('CMDispTooltipWarn').style.display = '';
|
l('CMDispTooltipWarn').style.display = '';
|
||||||
l('CMDispTooltipWarnText').textContent = Beautify(warn - amount) + ' (' + CM.Disp.FormatTime((warn - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipWarnText').textContent = Beautify(warn - amount) + ' (' + CM.Disp.FormatTime((warn - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
l('CMDispTooltipCaut').style.display = '';
|
l('CMDispTooltipCaut').style.display = '';
|
||||||
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
}
|
}
|
||||||
else if (amount < caut) {
|
else if (amount < caut) {
|
||||||
l('CMDispTooltipCaut').style.display = '';
|
l('CMDispTooltipCaut').style.display = '';
|
||||||
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / (Game.cookiesPs * (1 - Game.cpsSucked))) + ')';
|
l('CMDispTooltipCautText').textContent = Beautify(caut - amount) + ' (' + CM.Disp.FormatTime((caut - amount) / CM.Disp.GetCPS()) + ')';
|
||||||
l('CMDispTooltipWarn').style.display = 'none';
|
l('CMDispTooltipWarn').style.display = 'none';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1613,7 +1642,7 @@ CM.Disp.AddWrinklerAreaDetect = function() {
|
|||||||
l('backgroundLeftCanvas').onmouseout = function() {
|
l('backgroundLeftCanvas').onmouseout = function() {
|
||||||
CM.Disp.TooltipWrinklerArea = 0;
|
CM.Disp.TooltipWrinklerArea = 0;
|
||||||
Game.tooltip.hide();
|
Game.tooltip.hide();
|
||||||
for (var i = 0; i < 10; i++) {
|
for (var i in Game.wrinklers) {
|
||||||
CM.Disp.TooltipWrinklerCache[i] = 0;
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1724,15 +1753,15 @@ CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM
|
|||||||
CM.Disp.lastGoldenCookieState = 'none';
|
CM.Disp.lastGoldenCookieState = 'none';
|
||||||
CM.Disp.lastAscendState = -1;
|
CM.Disp.lastAscendState = -1;
|
||||||
|
|
||||||
|
CM.Disp.times = [1, 5, 10, 15, 30];
|
||||||
|
|
||||||
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.TooltipWrinklerArea = 0;
|
||||||
CM.Disp.TooltipWrinkler = -1;
|
CM.Disp.TooltipWrinkler = -1;
|
||||||
CM.Disp.TooltipWrinklerCache = [];
|
CM.Disp.TooltipWrinklerCache = [];
|
||||||
for (var i = 0; i < 10; i++) {
|
for (var i in Game.wrinklers) {
|
||||||
CM.Disp.TooltipWrinklerCache[i] = 0;
|
CM.Disp.TooltipWrinklerCache[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
48
src/Main.js
48
src/Main.js
@@ -76,6 +76,15 @@ CM.ReplaceNative = function() {
|
|||||||
CM.Backup.Loop();
|
CM.Backup.Loop();
|
||||||
CM.Loop();
|
CM.Loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CM.Backup.Logic = Game.Logic;
|
||||||
|
eval('CM.Backup.LogicMod = ' + Game.Logic.toString().split('document.title').join('CM.Cache.Title'));
|
||||||
|
Game.Logic = function() {
|
||||||
|
CM.Backup.LogicMod();
|
||||||
|
|
||||||
|
// Update Title
|
||||||
|
CM.Disp.UpdateTitle();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Loop = function() {
|
CM.Loop = function() {
|
||||||
@@ -97,8 +106,27 @@ CM.Loop = function() {
|
|||||||
CM.Sim.DoSims = 0;
|
CM.Sim.DoSims = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate ROI
|
// Check for aura change to recalculate buildings prices
|
||||||
CM.Cache.RemakeROI();
|
var hasFierHoard = Game.hasAura('Fierce Hoarder');
|
||||||
|
if (!CM.Cache.HadFierHoard && hasFierHoard) {
|
||||||
|
CM.Cache.HadFierHoard = true;
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
|
}
|
||||||
|
else if (CM.Cache.HadFierHoard && !hasFierHoard) {
|
||||||
|
CM.Cache.HadFierHoard = false;
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CM.Cache.DoRemakeBuildPrices) {
|
||||||
|
CM.Cache.RemakeBuildingsPrices();
|
||||||
|
CM.Cache.DoRemakeBuildPrices = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update Wrinkler Bank
|
||||||
|
CM.Cache.RemakeWrinkBank();
|
||||||
|
|
||||||
|
// Calculate PP
|
||||||
|
CM.Cache.RemakePP();
|
||||||
|
|
||||||
// Update colors
|
// Update colors
|
||||||
CM.Disp.UpdateBotBarOther();
|
CM.Disp.UpdateBotBarOther();
|
||||||
@@ -116,15 +144,15 @@ CM.Loop = function() {
|
|||||||
CM.Disp.CheckWrinklerTooltip();
|
CM.Disp.CheckWrinklerTooltip();
|
||||||
CM.Disp.UpdateWrinklerTooltip();
|
CM.Disp.UpdateWrinklerTooltip();
|
||||||
|
|
||||||
// Update Title
|
|
||||||
CM.Disp.UpdateTitle();
|
|
||||||
|
|
||||||
// Change menu refresh interval
|
// Change menu refresh interval
|
||||||
CM.Disp.RefreshMenu();
|
CM.Disp.RefreshMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check Golden Cookies
|
// Check Golden Cookies
|
||||||
CM.Disp.CheckGoldenCookie();
|
CM.Disp.CheckGoldenCookie();
|
||||||
|
|
||||||
|
// Update Average CPS (might need to move)
|
||||||
|
CM.Cache.UpdateAvgCPS()
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.Init = function() {
|
CM.Init = function() {
|
||||||
@@ -133,10 +161,11 @@ CM.Init = function() {
|
|||||||
proceed = confirm('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' is meant for Game version ' + CM.VersionMajor + '. Loading a different version may cause errors. Do you still want to load Cookie Monster?');
|
proceed = confirm('Cookie Monster version ' + CM.VersionMajor + '.' + CM.VersionMinor + ' is meant for Game version ' + CM.VersionMajor + '. Loading a different version may cause errors. Do you still want to load Cookie Monster?');
|
||||||
}
|
}
|
||||||
if (proceed) {
|
if (proceed) {
|
||||||
|
CM.Cache.AddQueue();
|
||||||
CM.Disp.AddJscolor();
|
CM.Disp.AddJscolor();
|
||||||
|
|
||||||
var delay = setInterval(function() {
|
var delay = setInterval(function() {
|
||||||
if (typeof jscolor !== 'undefined') {
|
if (typeof Queue !== 'undefined' && typeof jscolor !== 'undefined') {
|
||||||
CM.DelayInit();
|
CM.DelayInit();
|
||||||
clearInterval(delay);
|
clearInterval(delay);
|
||||||
}
|
}
|
||||||
@@ -158,10 +187,11 @@ CM.DelayInit = function() {
|
|||||||
CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Not calculated with cookies gained from wrinklers or Chocolate egg', '200px');
|
CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Not calculated with cookies gained from wrinklers or Chocolate egg', '200px');
|
||||||
CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '310px');
|
CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '310px');
|
||||||
CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '340px');
|
CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '340px');
|
||||||
CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '290px');
|
CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '300px');
|
||||||
CM.Disp.CreateTooltipWarnCaut();
|
CM.Disp.CreateTooltipWarnCaut();
|
||||||
CM.Disp.AddTooltipBuild();
|
CM.Disp.AddTooltipBuild();
|
||||||
CM.Disp.AddWrinklerAreaDetect();
|
CM.Disp.AddWrinklerAreaDetect();
|
||||||
|
CM.Cache.InitCookiesDiff();
|
||||||
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!
|
||||||
@@ -175,9 +205,9 @@ CM.DelayInit = function() {
|
|||||||
Game.Win('Third-party');
|
Game.Win('Third-party');
|
||||||
}
|
}
|
||||||
|
|
||||||
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWarnCautBon: 0, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}};
|
CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 1, CPSMode: 1, AvgCPSHist: 2, AvgClicksHist: 2, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'http://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'http://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}};
|
||||||
CM.ConfigPrefix = 'CMConfig';
|
CM.ConfigPrefix = 'CMConfig';
|
||||||
|
|
||||||
CM.VersionMajor = '2';
|
CM.VersionMajor = '2';
|
||||||
CM.VersionMinor = '4';
|
CM.VersionMinor = '5';
|
||||||
|
|
||||||
|
|||||||
48
src/Sim.js
48
src/Sim.js
@@ -359,7 +359,7 @@ CM.Sim.BuyBuildings = function(amount, target) {
|
|||||||
CM.Cache[target][i] = {};
|
CM.Cache[target][i] = {};
|
||||||
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
CM.Cache[target][i].bonus = CM.Sim.cookiesPs - Game.cookiesPs;
|
||||||
if (amount != 1) {
|
if (amount != 1) {
|
||||||
CM.Cache[target][i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, amount);
|
CM.Cache.DoRemakeBuildPrices = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -415,6 +415,48 @@ CM.Sim.NoGoldSwitchCookiesPS = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CM.Sim.ResetBonus = function(possiblePresMax) {
|
CM.Sim.ResetBonus = function(possiblePresMax) {
|
||||||
|
var lastAchievementsOwned = -1;
|
||||||
|
|
||||||
|
// Calculate CPS with all Heavenly upgrades
|
||||||
|
var curCPS = Game.cookiesPs;
|
||||||
|
if (CM.Sim.Upgrades['Heavenly chip secret'].bought == 0 || CM.Sim.Upgrades['Heavenly cookie stand'].bought == 0 || CM.Sim.Upgrades['Heavenly bakery'].bought == 0 || CM.Sim.Upgrades['Heavenly confectionery'].bought == 0 || CM.Sim.Upgrades['Heavenly key'].bought == 0) {
|
||||||
|
CM.Sim.CopyData();
|
||||||
|
|
||||||
|
if (CM.Sim.Upgrades['Heavenly chip secret'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly chip secret'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly cookie stand'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly cookie stand'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly bakery'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly bakery'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly confectionery'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly confectionery'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
}
|
||||||
|
if (CM.Sim.Upgrades['Heavenly key'].bought == 0) {
|
||||||
|
CM.Sim.Upgrades['Heavenly key'].bought = 1;
|
||||||
|
CM.Sim.UpgradesOwned++;
|
||||||
|
CM.Sim.Win('Wholesome');
|
||||||
|
}
|
||||||
|
|
||||||
|
lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
||||||
|
|
||||||
|
CM.Sim.CalculateGains();
|
||||||
|
|
||||||
|
CM.Sim.CheckOtherAchiev();
|
||||||
|
|
||||||
|
if (lastAchievementsOwned != CM.Sim.AchievementsOwned) {
|
||||||
|
CM.Sim.CalculateGains();
|
||||||
|
}
|
||||||
|
|
||||||
|
curCPS = CM.Sim.cookiesPs;
|
||||||
|
}
|
||||||
|
|
||||||
CM.Sim.CopyData();
|
CM.Sim.CopyData();
|
||||||
|
|
||||||
if (Game.cookiesEarned >= 1000000) CM.Sim.Win('Sacrifice');
|
if (Game.cookiesEarned >= 1000000) CM.Sim.Win('Sacrifice');
|
||||||
@@ -452,7 +494,7 @@ CM.Sim.ResetBonus = function(possiblePresMax) {
|
|||||||
|
|
||||||
CM.Sim.prestige = possiblePresMax;
|
CM.Sim.prestige = possiblePresMax;
|
||||||
|
|
||||||
var lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
lastAchievementsOwned = CM.Sim.AchievementsOwned;
|
||||||
|
|
||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
|
|
||||||
@@ -462,6 +504,6 @@ CM.Sim.ResetBonus = function(possiblePresMax) {
|
|||||||
CM.Sim.CalculateGains();
|
CM.Sim.CalculateGains();
|
||||||
}
|
}
|
||||||
|
|
||||||
return (CM.Sim.cookiesPs - Game.cookiesPs);
|
return (CM.Sim.cookiesPs - curCPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user