From 00a9ea2cd4fb94973449d475f82b2a9944511e2a Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Sun, 13 Mar 2016 10:51:10 -0400 Subject: [PATCH] Added Century Egg stat, fixed golden cookie stats to not include Golden Switch boost (Issue #64), changed pop all wrinkler button to only pop wrinklers that has sucked some cookies (Issue #66), and minor cleanup/bug fix --- CookieMonster.js | 113 ++++++++++++++++++++++++++++++++++++----------- src/Cache.js | 6 ++- src/Disp.js | 89 ++++++++++++++++++++++++++++--------- src/Main.js | 4 ++ src/Sim.js | 14 +++++- 5 files changed, 176 insertions(+), 50 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index c21c858..2a49412 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -113,7 +113,7 @@ CM.Cache.RemakeROI = function() { } CM.Cache.RemakeLucky = function() { - CM.Cache.Lucky = (Game.cookiesPs * 60 * 15) / 0.15; + CM.Cache.Lucky = (CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) / 0.15; if (Game.frenzy > 0) { CM.Cache.Lucky /= Game.frenzyPower; } @@ -135,7 +135,7 @@ CM.Cache.MaxChainMoni = function(digit, maxPayout) { } CM.Cache.RemakeChain = function() { - var maxPayout = Game.cookiesPs * 60 * 60 * 6; + var maxPayout = CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6; if (Game.frenzy > 0) { maxPayout /= Game.frenzyPower; } @@ -214,6 +214,7 @@ CM.Cache.RemakeSellForChoEgg = function() { CM.Cache.min = -1; CM.Cache.max = -1; CM.Cache.mid = -1; +CM.Cache.NoGoldSwitchCookiesPS = 0; CM.Cache.Lucky = 0; CM.Cache.LuckyReward = 0; CM.Cache.LuckyFrenzy = 0; @@ -227,6 +228,7 @@ CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzyWrath = 0; CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyWrathReward = 0; +CM.Cache.CentEgg = 0; CM.Cache.SellForChoEgg = 0; /********** @@ -1148,6 +1150,26 @@ CM.Disp.UpdateTitle = function() { } } +CM.Disp.CollectWrinklers = function() { + for (var i in Game.wrinklers) { + if (Game.wrinklers[i].sucked > 0) { + Game.wrinklers[i].hp = 0; + } + } +} + +CM.Disp.CreateGoldCookTooltip = function() { + CM.Disp.GoldCookTooltipPlaceholder = document.createElement('div'); + var goldCookDesc = document.createElement('div'); + goldCookDesc.style.minWidth = '200px'; + goldCookDesc.style.marginBottom = '4px'; + var div = document.createElement('div'); + div.style.textAlign = 'left'; + div.textContent = 'Calculated with Golden Switch off'; + goldCookDesc.appendChild(div); + CM.Disp.GoldCookTooltipPlaceholder.appendChild(goldCookDesc); +} + CM.Disp.CreateResetTooltip = function() { CM.Disp.ResetTooltipPlaceholder = document.createElement('div'); var resetTitleDesc = document.createElement('div'); @@ -1361,13 +1383,36 @@ CM.Disp.AddMenuStats = function(title) { return div; } + if (CM.Config.StatsPref.Lucky || CM.Config.StatsPref.Chain) { + var goldListing = function(text) { + var frag = document.createDocumentFragment(); + frag.appendChild(document.createTextNode(text + ' ')); + var span = document.createElement('span'); + span.onmouseout = function() { Game.tooltip.hide(); }; + span.onmouseover = function() {Game.tooltip.draw(this, escape(CM.Disp.GoldCookTooltipPlaceholder.innerHTML));}; + span.style.cursor = 'default'; + span.style.display = 'inline-block'; + span.style.height = '10px'; + span.style.width = '10px'; + span.style.borderRadius = '5px'; + span.style.textAlign = 'center'; + span.style.backgroundColor = '#C0C0C0'; + span.style.color = 'black'; + span.style.fontSize = '9px'; + span.style.verticalAlign = 'bottom'; + span.textContent = '?'; + frag.appendChild(span); + return frag; + } + } + stats.appendChild(header('Lucky Cookies', 'Lucky')); if (CM.Config.StatsPref.Lucky) { var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen; var luckyTime = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var luckyTimeFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; - var luckyCurBase = Math.min(Game.cookies * 0.15, Game.cookiesPs * 60 * 15) + 13; + var luckyCurBase = Math.min(Game.cookies * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13; var luckyRewardMax = CM.Cache.LuckyReward; var luckyRewardMaxWrath = CM.Cache.LuckyReward; var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy; @@ -1384,10 +1429,7 @@ CM.Disp.AddMenuStats = function(title) { luckyRewardFrenzyMaxWrath *= 1.1; luckyCurWrath *= 1.1; } - var luckySplit = false; - if (luckyRewardMax != luckyRewardMaxWrath) { - luckySplit = true; - } + var luckySplit = luckyRewardMax != luckyRewardMaxWrath; var luckyReqFrag = document.createDocumentFragment(); var luckyReqSpan = document.createElement('span'); @@ -1400,7 +1442,7 @@ CM.Disp.AddMenuStats = function(title) { luckyReqSmall.textContent = ' (' + luckyTime + ')'; luckyReqFrag.appendChild(luckyReqSmall); } - stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag)); + stats.appendChild(listing(goldListing('\"Lucky!\" Cookies Required'), luckyReqFrag)); var luckyReqFrenFrag = document.createDocumentFragment(); var luckyReqFrenSpan = document.createElement('span'); luckyReqFrenSpan.style.fontWeight = 'bold'; @@ -1412,10 +1454,10 @@ CM.Disp.AddMenuStats = function(title) { luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')'; luckyReqFrenFrag.appendChild(luckyReqFrenSmall); } - stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag)); - stats.appendChild(listing('\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyRewardMax) + (luckySplit ? (' / ' + Beautify(luckyRewardMaxWrath)) : '')))); - stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyRewardFrenzyMax) + (luckySplit ? (' / ' + Beautify(luckyRewardFrenzyMaxWrath)) : '')))); - stats.appendChild(listing('\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyCur) + (luckySplit ? (' / ' + Beautify(luckyCurWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Cookies Required (Frenzy)'), luckyReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyRewardMax) + (luckySplit ? (' / ' + Beautify(luckyRewardMaxWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyRewardFrenzyMax) + (luckySplit ? (' / ' + Beautify(luckyRewardFrenzyMaxWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyCur) + (luckySplit ? (' / ' + Beautify(luckyCurWrath)) : '')))); } stats.appendChild(header('Chain Cookies', 'Chain')); @@ -1433,7 +1475,7 @@ CM.Disp.AddMenuStats = function(title) { var chainWrathRewardMax = CM.Cache.ChainWrathReward; var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward; var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward; - var chainCurMax = Math.min(Game.cookiesPs * 60 * 60 * 6, Game.cookies * 0.25); + var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, Game.cookies * 0.25); var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax); var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax); if (Game.hasAura('Ancestral Metamorphosis')) { @@ -1458,7 +1500,7 @@ CM.Disp.AddMenuStats = function(title) { chainReqSmall.textContent = ' (' + chainTime + ')'; chainReqFrag.appendChild(chainReqSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required'), chainReqFrag)); var chainWrathReqFrag = document.createDocumentFragment(); var chainWrathReqSpan = document.createElement('span'); chainWrathReqSpan.style.fontWeight = 'bold'; @@ -1470,7 +1512,7 @@ CM.Disp.AddMenuStats = function(title) { chainWrathReqSmall.textContent = ' (' + chainWrathTime + ')'; chainWrathReqFrag.appendChild(chainWrathReqSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Wrath)', chainWrathReqFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Wrath)'), chainWrathReqFrag)); var chainReqFrenFrag = document.createDocumentFragment(); var chainReqFrenSpan = document.createElement('span'); chainReqFrenSpan.style.fontWeight = 'bold'; @@ -1482,7 +1524,7 @@ CM.Disp.AddMenuStats = function(title) { chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')'; chainReqFrenFrag.appendChild(chainReqFrenSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Frenzy)'), chainReqFrenFrag)); var chainWrathReqFrenFrag = document.createDocumentFragment(); var chainWrathReqFrenFrag = document.createDocumentFragment(); var chainWrathReqFrenSpan = document.createElement('span'); @@ -1495,10 +1537,10 @@ CM.Disp.AddMenuStats = function(title) { chainWrathReqFrenSmall.textContent = ' (' + chainWrathTimeFrenzy + ')'; chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag)); - stats.appendChild(listing('\"Chain\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(chainRewardMax) + ' / ' + Beautify(chainWrathRewardMax)))); - stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode(Beautify(chainFrenzyRewardMax) + ' / ' + Beautify(chainFrenzyWrathRewardMax)))); - stats.appendChild(listing('\"Chain\" Reward (CUR) (Golden / Wrath)', document.createTextNode(Beautify(chainCur) + ' / ' + Beautify(chainCurWrath)))); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Frenzy) (Wrath)'), chainWrathReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Reward (MAX) (Golden / Wrath)'), document.createTextNode(Beautify(chainRewardMax) + ' / ' + Beautify(chainWrathRewardMax)))); + stats.appendChild(listing(goldListing('\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)'), document.createTextNode(Beautify(chainFrenzyRewardMax) + ' / ' + Beautify(chainFrenzyWrathRewardMax)))); + stats.appendChild(listing(goldListing('\"Chain\" Reward (CUR) (Golden / Wrath)'), document.createTextNode(Beautify(chainCur) + ' / ' + Beautify(chainCurWrath)))); } stats.appendChild(header('Prestige', 'Prestige')); @@ -1514,7 +1556,7 @@ CM.Disp.AddMenuStats = function(title) { cookiesNextFrag.appendChild(cookiesNextSmall); stats.appendChild(listing('Cookies To Next Level', cookiesNextFrag)); var resetTitleFrag = document.createDocumentFragment(); - resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income ')) + resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income ')); var resetTitleSpan = document.createElement('span'); resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); }; resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(CM.Disp.ResetTooltipPlaceholder.innerHTML));}; @@ -1564,7 +1606,7 @@ CM.Disp.AddMenuStats = function(title) { var popAllA = document.createElement('a'); popAllA.textContent = 'Pop All'; popAllA.className = 'option'; - popAllA.onclick = function() {Game.CollectWrinklers();}; + popAllA.onclick = function() { CM.Disp.CollectWrinklers(); }; popAllFrag.appendChild(popAllA); stats.appendChild(listing('Rewards of Popping', popAllFrag)); } @@ -1608,7 +1650,9 @@ CM.Disp.AddMenuStats = function(title) { } } - if (Game.season == 'christmas' || specDisp || choEgg) { + var centEgg = Game.Has('Century egg'); + + if (Game.season == 'christmas' || specDisp || choEgg || centEgg) { stats.appendChild(header('Season Specials', 'Sea')); if (CM.Config.StatsPref.Sea) { if (specDisp) { @@ -1681,7 +1725,10 @@ CM.Disp.AddMenuStats = function(title) { } choEggTotal *= 0.05; stats.appendChild(listing(choEggTitleFrag, document.createTextNode(Beautify(choEggTotal)))); - } + } + if (centEgg) { + stats.appendChild(listing('Century Egg Multiplier', document.createTextNode(Beautify(CM.Cache.CentEgg, 1) + '%'))); + } } } @@ -2217,8 +2264,11 @@ CM.Loop = function() { if (!Game.OnAscend && Game.AscendTimer == 0) { if (CM.Sim.DoSims) { CM.Cache.RemakeIncome(); + + CM.Sim.NoGoldSwitchCookiesPS(); // Needed first CM.Cache.RemakeLucky(); CM.Cache.RemakeChain(); + CM.Cache.RemakeSeaSpec(); CM.Cache.RemakeSellForChoEgg(); @@ -2281,6 +2331,7 @@ CM.DelayInit = function() { CM.Disp.CreateWhiteScreen(); CM.Disp.CreateFavicon(); CM.Disp.CreateGCTimer(); + CM.Disp.CreateGoldCookTooltip(); CM.Disp.CreateResetTooltip(); CM.Disp.CreateChoEggTooltip(); CM.Disp.CreateTooltipWarnCaut(); @@ -2529,7 +2580,8 @@ CM.Sim.CalculateGains = function() { // The boost increases a little every day, with diminishing returns up to +10% on the 100th day var day = Math.floor((CM.Sim.Date - Game.startDate) / 1000 / 10) * 10 / 60 / 60 / 24; day = Math.min(day,100); - eggMult += (1 - Math.pow(1 - day / 100, 3)) * 10; + CM.Cache.CentEgg = (1 - Math.pow(1 - day / 100, 3)) * 10; + eggMult += CM.Cache.CentEgg; } mult *= (1 + 0.01 * eggMult); @@ -2710,6 +2762,16 @@ CM.Sim.BuyUpgrades = function() { } } +CM.Sim.NoGoldSwitchCookiesPS = function() { + if (Game.Has('Golden switch [off]')) { + CM.Sim.CopyData(); + CM.Sim.Upgrades['Golden switch [off]'].bought = 0; + CM.Sim.CalculateGains(); + CM.Cache.NoGoldSwitchCookiesPS = CM.Sim.cookiesPs; + } + else CM.Cache.NoGoldSwitchCookiesPS = Game.cookiesPs; +} + CM.Sim.ResetBonus = function() { CM.Sim.CopyData(); @@ -2743,6 +2805,7 @@ CM.Sim.ResetBonus = function() { if (CM.Sim.Upgrades['Heavenly key'].bought == 0) { CM.Sim.Upgrades['Heavenly key'].bought = 1; CM.Sim.UpgradesOwned++; + CM.Sim.Win('Wholesome'); } CM.Sim.prestige = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset)); diff --git a/src/Cache.js b/src/Cache.js index 2e6dc50..51d781b 100644 --- a/src/Cache.js +++ b/src/Cache.js @@ -93,7 +93,7 @@ CM.Cache.RemakeROI = function() { } CM.Cache.RemakeLucky = function() { - CM.Cache.Lucky = (Game.cookiesPs * 60 * 15) / 0.15; + CM.Cache.Lucky = (CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) / 0.15; if (Game.frenzy > 0) { CM.Cache.Lucky /= Game.frenzyPower; } @@ -115,7 +115,7 @@ CM.Cache.MaxChainMoni = function(digit, maxPayout) { } CM.Cache.RemakeChain = function() { - var maxPayout = Game.cookiesPs * 60 * 60 * 6; + var maxPayout = CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6; if (Game.frenzy > 0) { maxPayout /= Game.frenzyPower; } @@ -194,6 +194,7 @@ CM.Cache.RemakeSellForChoEgg = function() { CM.Cache.min = -1; CM.Cache.max = -1; CM.Cache.mid = -1; +CM.Cache.NoGoldSwitchCookiesPS = 0; CM.Cache.Lucky = 0; CM.Cache.LuckyReward = 0; CM.Cache.LuckyFrenzy = 0; @@ -207,5 +208,6 @@ CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzyWrath = 0; CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyWrathReward = 0; +CM.Cache.CentEgg = 0; CM.Cache.SellForChoEgg = 0; diff --git a/src/Disp.js b/src/Disp.js index 3241207..b7ed21d 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -764,6 +764,26 @@ CM.Disp.UpdateTitle = function() { } } +CM.Disp.CollectWrinklers = function() { + for (var i in Game.wrinklers) { + if (Game.wrinklers[i].sucked > 0) { + Game.wrinklers[i].hp = 0; + } + } +} + +CM.Disp.CreateGoldCookTooltip = function() { + CM.Disp.GoldCookTooltipPlaceholder = document.createElement('div'); + var goldCookDesc = document.createElement('div'); + goldCookDesc.style.minWidth = '200px'; + goldCookDesc.style.marginBottom = '4px'; + var div = document.createElement('div'); + div.style.textAlign = 'left'; + div.textContent = 'Calculated with Golden Switch off'; + goldCookDesc.appendChild(div); + CM.Disp.GoldCookTooltipPlaceholder.appendChild(goldCookDesc); +} + CM.Disp.CreateResetTooltip = function() { CM.Disp.ResetTooltipPlaceholder = document.createElement('div'); var resetTitleDesc = document.createElement('div'); @@ -977,13 +997,36 @@ CM.Disp.AddMenuStats = function(title) { return div; } + if (CM.Config.StatsPref.Lucky || CM.Config.StatsPref.Chain) { + var goldListing = function(text) { + var frag = document.createDocumentFragment(); + frag.appendChild(document.createTextNode(text + ' ')); + var span = document.createElement('span'); + span.onmouseout = function() { Game.tooltip.hide(); }; + span.onmouseover = function() {Game.tooltip.draw(this, escape(CM.Disp.GoldCookTooltipPlaceholder.innerHTML));}; + span.style.cursor = 'default'; + span.style.display = 'inline-block'; + span.style.height = '10px'; + span.style.width = '10px'; + span.style.borderRadius = '5px'; + span.style.textAlign = 'center'; + span.style.backgroundColor = '#C0C0C0'; + span.style.color = 'black'; + span.style.fontSize = '9px'; + span.style.verticalAlign = 'bottom'; + span.textContent = '?'; + frag.appendChild(span); + return frag; + } + } + stats.appendChild(header('Lucky Cookies', 'Lucky')); if (CM.Config.StatsPref.Lucky) { var luckyColor = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.colorRed : CM.Disp.colorGreen; var luckyTime = (Game.cookies < CM.Cache.Lucky) ? CM.Disp.FormatTime((CM.Cache.Lucky - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; var luckyColorFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var luckyTimeFrenzy = (Game.cookies < CM.Cache.LuckyFrenzy) ? CM.Disp.FormatTime((CM.Cache.LuckyFrenzy - Game.cookies) / (Game.cookiesPs * (1 - Game.cpsSucked))) : ''; - var luckyCurBase = Math.min(Game.cookies * 0.15, Game.cookiesPs * 60 * 15) + 13; + var luckyCurBase = Math.min(Game.cookies * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 15) + 13; var luckyRewardMax = CM.Cache.LuckyReward; var luckyRewardMaxWrath = CM.Cache.LuckyReward; var luckyRewardFrenzyMax = CM.Cache.LuckyRewardFrenzy; @@ -1000,10 +1043,7 @@ CM.Disp.AddMenuStats = function(title) { luckyRewardFrenzyMaxWrath *= 1.1; luckyCurWrath *= 1.1; } - var luckySplit = false; - if (luckyRewardMax != luckyRewardMaxWrath) { - luckySplit = true; - } + var luckySplit = luckyRewardMax != luckyRewardMaxWrath; var luckyReqFrag = document.createDocumentFragment(); var luckyReqSpan = document.createElement('span'); @@ -1016,7 +1056,7 @@ CM.Disp.AddMenuStats = function(title) { luckyReqSmall.textContent = ' (' + luckyTime + ')'; luckyReqFrag.appendChild(luckyReqSmall); } - stats.appendChild(listing('\"Lucky!\" Cookies Required', luckyReqFrag)); + stats.appendChild(listing(goldListing('\"Lucky!\" Cookies Required'), luckyReqFrag)); var luckyReqFrenFrag = document.createDocumentFragment(); var luckyReqFrenSpan = document.createElement('span'); luckyReqFrenSpan.style.fontWeight = 'bold'; @@ -1028,10 +1068,10 @@ CM.Disp.AddMenuStats = function(title) { luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')'; luckyReqFrenFrag.appendChild(luckyReqFrenSmall); } - stats.appendChild(listing('\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag)); - stats.appendChild(listing('\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyRewardMax) + (luckySplit ? (' / ' + Beautify(luckyRewardMaxWrath)) : '')))); - stats.appendChild(listing('\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyRewardFrenzyMax) + (luckySplit ? (' / ' + Beautify(luckyRewardFrenzyMaxWrath)) : '')))); - stats.appendChild(listing('\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), document.createTextNode(Beautify(luckyCur) + (luckySplit ? (' / ' + Beautify(luckyCurWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Cookies Required (Frenzy)'), luckyReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyRewardMax) + (luckySplit ? (' / ' + Beautify(luckyRewardMaxWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyRewardFrenzyMax) + (luckySplit ? (' / ' + Beautify(luckyRewardFrenzyMaxWrath)) : '')))); + stats.appendChild(listing(goldListing('\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : '')), document.createTextNode(Beautify(luckyCur) + (luckySplit ? (' / ' + Beautify(luckyCurWrath)) : '')))); } stats.appendChild(header('Chain Cookies', 'Chain')); @@ -1049,7 +1089,7 @@ CM.Disp.AddMenuStats = function(title) { var chainWrathRewardMax = CM.Cache.ChainWrathReward; var chainFrenzyRewardMax = CM.Cache.ChainFrenzyReward; var chainFrenzyWrathRewardMax = CM.Cache.ChainFrenzyWrathReward; - var chainCurMax = Math.min(Game.cookiesPs * 60 * 60 * 6, Game.cookies * 0.25); + var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * 60 * 60 * 6, Game.cookies * 0.25); var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax); var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax); if (Game.hasAura('Ancestral Metamorphosis')) { @@ -1074,7 +1114,7 @@ CM.Disp.AddMenuStats = function(title) { chainReqSmall.textContent = ' (' + chainTime + ')'; chainReqFrag.appendChild(chainReqSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required', chainReqFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required'), chainReqFrag)); var chainWrathReqFrag = document.createDocumentFragment(); var chainWrathReqSpan = document.createElement('span'); chainWrathReqSpan.style.fontWeight = 'bold'; @@ -1086,7 +1126,7 @@ CM.Disp.AddMenuStats = function(title) { chainWrathReqSmall.textContent = ' (' + chainWrathTime + ')'; chainWrathReqFrag.appendChild(chainWrathReqSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Wrath)', chainWrathReqFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Wrath)'), chainWrathReqFrag)); var chainReqFrenFrag = document.createDocumentFragment(); var chainReqFrenSpan = document.createElement('span'); chainReqFrenSpan.style.fontWeight = 'bold'; @@ -1098,7 +1138,7 @@ CM.Disp.AddMenuStats = function(title) { chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')'; chainReqFrenFrag.appendChild(chainReqFrenSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Frenzy)'), chainReqFrenFrag)); var chainWrathReqFrenFrag = document.createDocumentFragment(); var chainWrathReqFrenFrag = document.createDocumentFragment(); var chainWrathReqFrenSpan = document.createElement('span'); @@ -1111,10 +1151,10 @@ CM.Disp.AddMenuStats = function(title) { chainWrathReqFrenSmall.textContent = ' (' + chainWrathTimeFrenzy + ')'; chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSmall); } - stats.appendChild(listing('\"Chain\" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag)); - stats.appendChild(listing('\"Chain\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(chainRewardMax) + ' / ' + Beautify(chainWrathRewardMax)))); - stats.appendChild(listing('\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode(Beautify(chainFrenzyRewardMax) + ' / ' + Beautify(chainFrenzyWrathRewardMax)))); - stats.appendChild(listing('\"Chain\" Reward (CUR) (Golden / Wrath)', document.createTextNode(Beautify(chainCur) + ' / ' + Beautify(chainCurWrath)))); + stats.appendChild(listing(goldListing('\"Chain\" Cookies Required (Frenzy) (Wrath)'), chainWrathReqFrenFrag)); + stats.appendChild(listing(goldListing('\"Chain\" Reward (MAX) (Golden / Wrath)'), document.createTextNode(Beautify(chainRewardMax) + ' / ' + Beautify(chainWrathRewardMax)))); + stats.appendChild(listing(goldListing('\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)'), document.createTextNode(Beautify(chainFrenzyRewardMax) + ' / ' + Beautify(chainFrenzyWrathRewardMax)))); + stats.appendChild(listing(goldListing('\"Chain\" Reward (CUR) (Golden / Wrath)'), document.createTextNode(Beautify(chainCur) + ' / ' + Beautify(chainCurWrath)))); } stats.appendChild(header('Prestige', 'Prestige')); @@ -1130,7 +1170,7 @@ CM.Disp.AddMenuStats = function(title) { cookiesNextFrag.appendChild(cookiesNextSmall); stats.appendChild(listing('Cookies To Next Level', cookiesNextFrag)); var resetTitleFrag = document.createDocumentFragment(); - resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income ')) + resetTitleFrag.appendChild(document.createTextNode('Reset Bonus Income ')); var resetTitleSpan = document.createElement('span'); resetTitleSpan.onmouseout = function() { Game.tooltip.hide(); }; resetTitleSpan.onmouseover = function() {Game.tooltip.draw(this, escape(CM.Disp.ResetTooltipPlaceholder.innerHTML));}; @@ -1180,7 +1220,7 @@ CM.Disp.AddMenuStats = function(title) { var popAllA = document.createElement('a'); popAllA.textContent = 'Pop All'; popAllA.className = 'option'; - popAllA.onclick = function() {Game.CollectWrinklers();}; + popAllA.onclick = function() { CM.Disp.CollectWrinklers(); }; popAllFrag.appendChild(popAllA); stats.appendChild(listing('Rewards of Popping', popAllFrag)); } @@ -1224,7 +1264,9 @@ CM.Disp.AddMenuStats = function(title) { } } - if (Game.season == 'christmas' || specDisp || choEgg) { + var centEgg = Game.Has('Century egg'); + + if (Game.season == 'christmas' || specDisp || choEgg || centEgg) { stats.appendChild(header('Season Specials', 'Sea')); if (CM.Config.StatsPref.Sea) { if (specDisp) { @@ -1297,7 +1339,10 @@ CM.Disp.AddMenuStats = function(title) { } choEggTotal *= 0.05; stats.appendChild(listing(choEggTitleFrag, document.createTextNode(Beautify(choEggTotal)))); - } + } + if (centEgg) { + stats.appendChild(listing('Century Egg Multiplier', document.createTextNode(Beautify(CM.Cache.CentEgg, 1) + '%'))); + } } } diff --git a/src/Main.js b/src/Main.js index 9fec7ae..e649b13 100644 --- a/src/Main.js +++ b/src/Main.js @@ -86,8 +86,11 @@ CM.Loop = function() { if (!Game.OnAscend && Game.AscendTimer == 0) { if (CM.Sim.DoSims) { CM.Cache.RemakeIncome(); + + CM.Sim.NoGoldSwitchCookiesPS(); // Needed first CM.Cache.RemakeLucky(); CM.Cache.RemakeChain(); + CM.Cache.RemakeSeaSpec(); CM.Cache.RemakeSellForChoEgg(); @@ -150,6 +153,7 @@ CM.DelayInit = function() { CM.Disp.CreateWhiteScreen(); CM.Disp.CreateFavicon(); CM.Disp.CreateGCTimer(); + CM.Disp.CreateGoldCookTooltip(); CM.Disp.CreateResetTooltip(); CM.Disp.CreateChoEggTooltip(); CM.Disp.CreateTooltipWarnCaut(); diff --git a/src/Sim.js b/src/Sim.js index fb7d962..8fbc0dc 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -222,7 +222,8 @@ CM.Sim.CalculateGains = function() { // The boost increases a little every day, with diminishing returns up to +10% on the 100th day var day = Math.floor((CM.Sim.Date - Game.startDate) / 1000 / 10) * 10 / 60 / 60 / 24; day = Math.min(day,100); - eggMult += (1 - Math.pow(1 - day / 100, 3)) * 10; + CM.Cache.CentEgg = (1 - Math.pow(1 - day / 100, 3)) * 10; + eggMult += CM.Cache.CentEgg; } mult *= (1 + 0.01 * eggMult); @@ -403,6 +404,16 @@ CM.Sim.BuyUpgrades = function() { } } +CM.Sim.NoGoldSwitchCookiesPS = function() { + if (Game.Has('Golden switch [off]')) { + CM.Sim.CopyData(); + CM.Sim.Upgrades['Golden switch [off]'].bought = 0; + CM.Sim.CalculateGains(); + CM.Cache.NoGoldSwitchCookiesPS = CM.Sim.cookiesPs; + } + else CM.Cache.NoGoldSwitchCookiesPS = Game.cookiesPs; +} + CM.Sim.ResetBonus = function() { CM.Sim.CopyData(); @@ -436,6 +447,7 @@ CM.Sim.ResetBonus = function() { if (CM.Sim.Upgrades['Heavenly key'].bought == 0) { CM.Sim.Upgrades['Heavenly key'].bought = 1; CM.Sim.UpgradesOwned++; + CM.Sim.Win('Wholesome'); } CM.Sim.prestige = Math.floor(Game.HowMuchPrestige(Game.cookiesEarned + Game.cookiesReset));