1 line
16 KiB
JavaScript
1 line
16 KiB
JavaScript
(()=>{CM.Cache.InitCache=function(){CM.Cache.CacheDragonAuras(),CM.Cache.CacheWrinklers(),CM.Cache.CacheStats(),CM.Cache.CacheGoldenAndWrathCookiesMults(),CM.Cache.CacheChain(),CM.Cache.CacheMissingUpgrades(),CM.Cache.CacheSeaSpec(),CM.Cache.InitCookiesDiff(),CM.Cache.HeavenlyChipsDiff=new e(5),CM.Cache.CacheHeavenlyChipsPS(),CM.Cache.CacheAvgCPS(),CM.Cache.CacheIncome(),CM.Cache.CacheBuildingsPrices(),CM.Cache.CachePP()},CM.Cache.LoopCache=function(){CM.Cache.CacheWrinklers(),CM.Cache.CachePP(),CM.Cache.CacheCurrWrinklerCPS(),CM.Cache.CacheAvgCPS(),CM.Cache.CacheHeavenlyChipsPS();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);CM.Cache.TimeTillNextPrestige=CM.Disp.FormatTime(e/CM.Disp.GetCPS())};class e{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){e>this.maxLength&&(e=this.maxLength),e>this.queue.length&&(e=this.queue.length);let a=0;for(let C=this.queue.length-1;C>=0&&C>this.queue.length-1-e;C--)a+=this.queue[C];return 0===a?0:a/e}}CM.Cache.CacheDragonAuras=function(){CM.Cache.dragonAura=Game.dragonAura,CM.Cache.dragonAura2=Game.dragonAura2},CM.Cache.CacheWrinklers=function(){CM.Cache.WrinklersTotal=0,CM.Cache.WrinklersNormal=0,CM.Cache.WrinklersFattest=[0,null];for(let e=0;e<Game.wrinklers.length;e++){let a=Game.wrinklers[e].sucked,C=1.1;if(Game.Has("Sacrilegious corruption")&&(C*=1.05),1===Game.wrinklers[e].type&&(C*=3),a*=C,Game.Has("Wrinklerspawn")&&(a*=1.05),CM.Sim.Objects.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?a*=1.15:2===e?a*=1.1:3===e&&(a*=1.05)}CM.Cache.WrinklersTotal+=a,0===Game.wrinklers[e].type&&(CM.Cache.WrinklersNormal+=a,a>CM.Cache.WrinklersFattest[0]&&(CM.Cache.WrinklersFattest=[a,e]))}},CM.Cache.CacheStats=function(){CM.Cache.Lucky=900*CM.Cache.NoGoldSwitchCookiesPS/.15,CM.Cache.Lucky*=CM.Cache.DragonsFortuneMultAdjustment;const e=CM.Cache.getCPSBuffMult();e>0?CM.Cache.Lucky/=e:CM.Cache.Lucky=0,CM.Cache.LuckyReward=CM.Cache.GoldenCookiesMult*(.15*CM.Cache.Lucky)+13,CM.Cache.LuckyWrathReward=CM.Cache.WrathCookiesMult*(.15*CM.Cache.Lucky)+13,CM.Cache.LuckyFrenzy=7*CM.Cache.Lucky,CM.Cache.LuckyRewardFrenzy=CM.Cache.GoldenCookiesMult*(.15*CM.Cache.LuckyFrenzy)+13,CM.Cache.LuckyWrathRewardFrenzy=CM.Cache.WrathCookiesMult*(.15*CM.Cache.LuckyFrenzy)+13,CM.Cache.Conjure=2*CM.Cache.Lucky,CM.Cache.ConjureReward=.15*CM.Cache.Conjure,CM.Cache.Edifice=0;let a=0,C=0;for(const e of Object.keys(Game.Objects))Game.Objects[e].amount>a&&(a=Game.Objects[e].amount),Game.Objects[e].amount>0&&C++;for(const e of Object.keys(Game.Objects))(Game.Objects[e].amount<a||1===C)&&Game.Objects[e].amount<400&&2*Game.Objects[e].price>CM.Cache.Edifice&&(CM.Cache.Edifice=2*Game.Objects[e].price,CM.Cache.EdificeBuilding=e)},CM.Cache.CacheGoldenAndWrathCookiesMults=function(){if(CM.Footer.isInitzializing)CM.Cache.GoldenCookiesMult=1,CM.Cache.WrathCookiesMult=1,CM.Cache.DragonsFortuneMultAdjustment=1;else{let e=1,a=1,C=1;CM.Sim.Has("Green yeast digestives")&&(C*=1.01),CM.Sim.Has("Dragon fang")&&(C*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),a*=1+.1*Game.auraMult("Unholy Dominion"),a*=Game.eff("wrathCookieGain"),CM.Cache.GoldenCookiesMult=C*e,CM.Cache.WrathCookiesMult=C*a,CM.Cache.DragonsFortuneMultAdjustment=1,0===Game.shimmerTypes.golden.n&&(CM.Cache.DragonsFortuneMultAdjustment*=1+1.23*Game.auraMult("Dragon's Fortune"))}},CM.Cache.MaxChainCookieReward=function(e,a,C){let c=0,o=0,i=0,s=0,t=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;i<a;)o=Math.max(e,Math.min(Math.floor(1/9*10**t*e*C),a*C)),i=Math.max(e,Math.min(Math.floor(1/9*10**(t+1)*e*C),a*C)),s=Math.floor(1/9*10**(t+1)*e*C),c+=o,t++;return[c,o,s]},CM.Cache.CacheChain=function(){let e=60*CM.Cache.NoGoldSwitchCookiesPS*60*6*CM.Cache.DragonsFortuneMultAdjustment;const a=CM.Cache.getCPSBuffMult();a>0?e/=a:e=0,CM.Cache.ChainMaxReward=CM.Cache.MaxChainCookieReward(7,e,CM.Cache.GoldenCookiesMult),CM.Cache.ChainRequired=2*CM.Cache.ChainMaxReward[1]/CM.Cache.GoldenCookiesMult,CM.Cache.ChainRequiredNext=CM.Cache.ChainMaxReward[2]/60/60/6/CM.Cache.DragonsFortuneMultAdjustment,CM.Cache.ChainMaxWrathReward=CM.Cache.MaxChainCookieReward(6,e,CM.Cache.WrathCookiesMult),CM.Cache.ChainWrathRequired=2*CM.Cache.ChainMaxWrathReward[1]/CM.Cache.WrathCookiesMult,CM.Cache.ChainWrathRequiredNext=CM.Cache.ChainMaxWrathReward[2]/60/60/6/CM.Cache.DragonsFortuneMultAdjustment,CM.Cache.ChainFrenzyMaxReward=CM.Cache.MaxChainCookieReward(7,7*e,CM.Cache.GoldenCookiesMult),CM.Cache.ChainFrenzyRequired=2*CM.Cache.ChainFrenzyMaxReward[1]/CM.Cache.GoldenCookiesMult,CM.Cache.ChainFrenzyRequiredNext=CM.Cache.ChainFrenzyMaxReward[2]/60/60/6/CM.Cache.DragonsFortuneMultAdjustment,CM.Cache.ChainFrenzyMaxWrathReward=CM.Cache.MaxChainCookieReward(6,7*e,CM.Cache.WrathCookiesMult),CM.Cache.ChainFrenzyWrathRequired=2*CM.Cache.ChainFrenzyMaxWrathReward[1]/CM.Cache.WrathCookiesMult,CM.Cache.ChainFrenzyWrathRequiredNext=CM.Cache.ChainFrenzyMaxWrathReward[2]/60/60/6/CM.Cache.DragonsFortuneMultAdjustment},CM.Cache.CacheMissingUpgrades=function(){CM.Cache.MissingUpgrades="",CM.Cache.MissingUpgradesCookies="",CM.Cache.MissingUpgradesPrestige="";const e=[];for(const a of Object.keys(Game.Upgrades))e.push(Game.Upgrades[a]);e.sort((function(e,a){return e.order>a.order?1:e.order<a.order?-1:0}));for(const a of Object.keys(e)){const C=e[a];if(0===C.bought){let e="";e+=CM.Disp.crateMissing(C),"prestige"===C.pool?CM.Cache.MissingUpgradesPrestige+=e:"cookie"===C.pool?CM.Cache.MissingUpgradesCookies+=e:"toggle"!==C.pool&&"unused"!==C.pool&&"debug"!==C.pool&&(CM.Cache.MissingUpgrades+=e)}}},CM.Cache.CacheSeaSpec=function(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),CM.Cache.SeaSpec=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(CM.Cache.SeaSpec*=2)}},CM.Cache.CacheHeavenlyChipsPS=function(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const a=Game.HowMuchPrestige(Game.cookiesReset),C=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(a),c=e-CM.Cache.lastHeavenlyCheck,o=Math.max(0,C-CM.Cache.lastHeavenlyChips)/c;for(let e=0;e<c;e++)CM.Cache.HeavenlyChipsDiff.addLatest(o);CM.Cache.lastHeavenlyCheck=e,CM.Cache.lastHeavenlyChips=C,CM.Cache.HCPerSecond=CM.Cache.HeavenlyChipsDiff.calcAverage(5)}},CM.Cache.InitCookiesDiff=function(){CM.Cache.CookiesDiff=new e(CM.Disp.cookieTimes[CM.Disp.cookieTimes.length-1]),CM.Cache.WrinkDiff=new e(CM.Disp.cookieTimes[CM.Disp.cookieTimes.length-1]),CM.Cache.WrinkFattestDiff=new e(CM.Disp.cookieTimes[CM.Disp.cookieTimes.length-1]),CM.Cache.ChoEggDiff=new e(CM.Disp.cookieTimes[CM.Disp.cookieTimes.length-1]),CM.Cache.ClicksDiff=new e(CM.Disp.clickTimes[CM.Disp.clickTimes.length-1])},CM.Cache.CacheAvgCPS=function(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let a=Game.cookies+CM.Cache.SellForChoEgg;Game.cpsSucked>0&&(a+=CM.Cache.WrinklersTotal),CM.Cache.RealCookiesEarned=Math.max(Game.cookiesEarned,a),a*=.05;const C=e-CM.Cache.lastCPSCheck,c=Math.max(0,Game.cookies-CM.Cache.lastCookies)/C,o=Math.max(0,CM.Cache.WrinklersTotal-CM.Cache.lastWrinkCookies)/C,i=Math.max(0,CM.Cache.WrinklersFattest[0]-CM.Cache.lastWrinkFattestCookies)/C,s=Math.max(0,a-CM.Cache.lastChoEgg)/C,t=(Game.cookieClicks-CM.Cache.lastClicks)/C;for(let e=0;e<C;e++)CM.Cache.CookiesDiff.addLatest(c),CM.Cache.WrinkDiff.addLatest(o),CM.Cache.WrinkFattestDiff.addLatest(i),CM.Cache.ChoEggDiff.addLatest(s),CM.Cache.ClicksDiff.addLatest(t);CM.Cache.lastCPSCheck=e,CM.Cache.lastCookies=Game.cookies,CM.Cache.lastWrinkCookies=CM.Cache.WrinklersTotal,CM.Cache.lastWrinkFattestCookies=CM.Cache.WrinklersFattest[0],CM.Cache.lastChoEgg=a,CM.Cache.lastClicks=Game.cookieClicks;const h=CM.Disp.cookieTimes[CM.Options.AvgCPSHist];CM.Cache.AverageGainBank=CM.Cache.CookiesDiff.calcAverage(h),CM.Cache.AverageGainWrink=CM.Cache.WrinkDiff.calcAverage(h),CM.Cache.AverageGainWrinkFattest=CM.Cache.WrinkFattestDiff.calcAverage(h),CM.Cache.AverageGainChoEgg=CM.Cache.ChoEggDiff.calcAverage(h),CM.Cache.AvgCPS=CM.Cache.AverageGainBank,1===CM.Options.CalcWrink&&(CM.Cache.AvgCPS+=CM.Cache.AverageGainWrink),2===CM.Options.CalcWrink&&(CM.Cache.AvgCPS+=CM.Cache.AverageGainWrinkFattest);const r=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg");r||0===CM.Options.CalcWrink?CM.Cache.AvgCPSWithChoEgg=CM.Cache.AverageGainBank+CM.Cache.AverageGainWrink+(r?CM.Cache.AverageGainChoEgg:0):CM.Cache.AvgCPSWithChoEgg=CM.Cache.AvgCPS,CM.Cache.AverageClicks=CM.Cache.ClicksDiff.calcAverage(CM.Disp.clickTimes[CM.Options.AvgClicksHist])}},CM.Cache.CacheSellForChoEgg=function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const a=Game.Objects.Bank.minigame.goods;let C=0;for(const e of Object.keys(a)){const c=a[e];C+=c.stock*c.val}e+=C*Game.cookiesPsRawHighest}e+=CM.Sim.SellBuildingsForChoEgg(),CM.Cache.SellForChoEgg=e},CM.Cache.CacheCurrWrinklerCPS=function(){CM.Cache.CurrWrinklerCPSMult=0;let e=0;for(const a in Game.wrinklers)2===Game.wrinklers[a].phase&&e++;let a=1;if(CM.Sim.Objects.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?a*=1.15:2===e?a*=1.1:3===e&&(a*=1.05)}CM.Cache.CurrWrinklerCount=e,CM.Cache.CurrWrinklerCPSMult=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*a},CM.Cache.getCPSBuffMult=function(){let e=1;for(const a of Object.keys(Game.buffs))void 0!==Game.buffs[a].multCpS&&(e*=Game.buffs[a].multCpS);return e},CM.Cache.NoGoldSwitchCPS=function(){Game.Has("Golden switch [off]")?CM.Cache.NoGoldSwitchCookiesPS=CM.Sim.NoGoldSwitchCPS():CM.Cache.NoGoldSwitchCookiesPS=Game.cookiesPs},CM.Cache.CacheDragonCost=function(){if(CM.Cache.lastDragonLevel!==Game.dragonLevel||CM.Sim.DoSims){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const a=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount<a)CM.Cache.CostDragonUpgrade="Not enough buildings to sell";else{let C=0;CM.Sim.CopyData();for(let c=0;c<a;c++){let a=CM.Sim.Objects[e].basePrice*Game.priceIncrease**Math.max(0,CM.Sim.Objects[e].amount-1-CM.Sim.Objects[e].free);a=Game.modifyBuildingPrice(CM.Sim.Objects[e],a),a=Math.ceil(a),C+=a,CM.Sim.Objects[e].amount--}CM.Cache.CostDragonUpgrade=`Cost to rebuy: ${CM.Disp.Beautify(C)}`}else{let C=0;CM.Sim.CopyData();for(const c of Object.keys(Game.Objects)){if(e=c,Game.Objects[e].amount<a){CM.Cache.CostDragonUpgrade="Not enough buildings to sell";break}for(let c=0;c<a;c++){let a=CM.Sim.Objects[e].basePrice*Game.priceIncrease**Math.max(0,CM.Sim.Objects[e].amount-1-CM.Sim.Objects[e].free);a=Game.modifyBuildingPrice(CM.Sim.Objects[e],a),a=Math.ceil(a),C+=a,CM.Sim.Objects[e].amount--}CM.Cache.CostDragonUpgrade=`Cost to rebuy: ${CM.Disp.Beautify(C)}`}}}CM.Cache.lastDragonLevel=Game.dragonLevel}},CM.Cache.CacheIncome=function(){CM.Cache.CacheBuildingIncome(1,"Objects1"),CM.Cache.CacheBuildingIncome(10,"Objects10"),CM.Cache.CacheBuildingIncome(100,"Objects100"),CM.Cache.CacheUpgradeIncome()},CM.Cache.CacheBuildingIncome=function(e,a){CM.Cache[a]=[];for(const C of Object.keys(Game.Objects))CM.Cache[a][C]={},CM.Cache[a][C].bonus=CM.Sim.BuyBuildingsBonusIncome(C,e),1!==e&&(CM.Cache.DoRemakeBuildPrices=1)},CM.Cache.CacheUpgradeIncome=function(){CM.Cache.Upgrades=[];for(const e of Object.keys(Game.Upgrades)){const a=CM.Sim.BuyUpgradesBonusIncome(e);CM.Cache.Upgrades[e]={},a[0]&&(CM.Cache.Upgrades[e].bonus=a[0]),a[1]&&(CM.Cache.Upgrades[e].bonusMouse=a[1])}},CM.Cache.CacheBuildingsPrices=function(){for(const e of Object.keys(Game.Objects))CM.Cache.Objects1[e].price=CM.Sim.BuildingGetPrice(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),CM.Cache.Objects10[e].price=CM.Sim.BuildingGetPrice(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),CM.Cache.Objects100[e].price=CM.Sim.BuildingGetPrice(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)},CM.Cache.CachePP=function(){CM.Cache.CacheBuildingsPP(),CM.Cache.CacheUpgradePP()},CM.Cache.ColourOfPP=function(e,a){let C="";return C=e.pp<=0||e.pp===1/0?CM.Disp.colorGray:e.pp<CM.Cache.min?CM.Disp.colorBlue:e.pp===CM.Cache.min?CM.Disp.colorGreen:e.pp===CM.Cache.max?CM.Disp.colorRed:e.pp>CM.Cache.max?CM.Disp.colorPurple:e.pp>CM.Cache.mid?CM.Disp.colorOrange:CM.Disp.colorYellow,0!==Number(CM.Options.PPSecondsLowerLimit)&&a/CM.Disp.GetCPS()<Number(CM.Options.PPSecondsLowerLimit)&&(C=CM.Disp.colorBlue),CM.Options.PPOnlyConsiderBuyable&&a-Game.cookies>0&&(C=CM.Disp.colorRed),C},CM.Cache.CacheBuildingsPP=function(){if(CM.Cache.min=1/0,CM.Cache.max=1,CM.Cache.ArrayOfPPs=[],void 0===CM.Options.PPExcludeTop&&(CM.Options.PPExcludeTop=0),0===CM.Options.ColorPPBulkMode&&Game.buyMode>0){for(const e of Object.keys(CM.Cache.Objects1))Game.cookiesPs?CM.Cache.Objects1[e].pp=Math.max(Game.Objects[e].getPrice()-(Game.cookies+CM.Disp.GetWrinkConfigBank()),0)/Game.cookiesPs+Game.Objects[e].getPrice()/CM.Cache.Objects1[e].bonus:CM.Cache.Objects1[e].pp=Game.Objects[e].getPrice()/CM.Cache.Objects1[e].bonus,CM.Cache.ArrayOfPPs.push([CM.Cache.Objects1[e].pp,Game.Objects[e].getPrice()]);if(CM.Cache.ArrayOfPPs.sort(((e,a)=>e[0]-a[0])),CM.Options.PPOnlyConsiderBuyable)for(;CM.Cache.ArrayOfPPs[0][1]>Game.cookies&&1!==CM.Cache.ArrayOfPPs.length;)CM.Cache.ArrayOfPPs.shift();CM.Cache.min=CM.Cache.ArrayOfPPs[CM.Options.PPExcludeTop][0],CM.Cache.max=CM.Cache.ArrayOfPPs[CM.Cache.ArrayOfPPs.length-1][0],CM.Cache.mid=(CM.Cache.max-CM.Cache.min)/2+CM.Cache.min;for(const e of Object.keys(CM.Cache.Objects1)){CM.Cache.Objects1[e].color=CM.Cache.ColourOfPP(CM.Cache.Objects1[e],Game.Objects[e].getPrice());for(let a=0;a<CM.Options.PPExcludeTop;a++)CM.Cache.Objects1[e].pp===CM.Cache.ArrayOfPPs[a][0]&&(CM.Cache.Objects1[e].color=CM.Disp.colorGray)}CM.Cache.CacheBuildingsBulkPP("Objects10"),CM.Cache.CacheBuildingsBulkPP("Objects100")}else if(Game.buyMode>0){const e=`Objects${Game.buyBulk}`;for(const a of Object.keys(CM.Cache[e]))Game.cookiesPs?CM.Cache[e][a].pp=Math.max(Game.Objects[a].bulkPrice-(Game.cookies+CM.Disp.GetWrinkConfigBank()),0)/Game.cookiesPs+Game.Objects[a].bulkPrice/CM.Cache[e][a].bonus:CM.Cache[e][a].pp=Game.Objects[a].bulkPrice/CM.Cache[e][a].bonus,CM.Cache.ArrayOfPPs.push([CM.Cache[e][a].pp,Game.Objects[a].bulkPrice]);if(CM.Cache.ArrayOfPPs.sort(((e,a)=>e[0]-a[0])),CM.Options.PPOnlyConsiderBuyable)for(;CM.Cache.ArrayOfPPs[0][1]>Game.cookies&&1!==CM.Cache.ArrayOfPPs.length;)CM.Cache.ArrayOfPPs.shift();CM.Cache.min=CM.Cache.ArrayOfPPs[CM.Options.PPExcludeTop][0],CM.Cache.max=CM.Cache.ArrayOfPPs[CM.Cache.ArrayOfPPs.length-1][0],CM.Cache.mid=(CM.Cache.max-CM.Cache.min)/2+CM.Cache.min;for(const a of Object.keys(CM.Cache.Objects1)){CM.Cache[e][a].color=CM.Cache.ColourOfPP(CM.Cache[e][a],Game.Objects[a].bulkPrice);for(let C=0;C<CM.Options.PPExcludeTop;C++)CM.Cache[e][a].pp===CM.Cache.ArrayOfPPs[C][0]&&(CM.Cache[e][a].color=CM.Disp.colorGray)}}},CM.Cache.CacheBuildingsBulkPP=function(e){for(const a of Object.keys(CM.Cache[e]))Game.cookiesPs?CM.Cache[e][a].pp=Math.max(CM.Cache[e][a].price-(Game.cookies+CM.Disp.GetWrinkConfigBank()),0)/Game.cookiesPs+CM.Cache[e][a].price/CM.Cache[e][a].bonus:CM.Cache[e][a].pp=CM.Cache[e][a].price/CM.Cache[e][a].bonus,CM.Cache[e][a].color=CM.Cache.ColourOfPP(CM.Cache[e][a],CM.Cache[e][a].price)},CM.Cache.CacheUpgradePP=function(){for(const e of Object.keys(CM.Cache.Upgrades))Game.cookiesPs?CM.Cache.Upgrades[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+CM.Disp.GetWrinkConfigBank()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/CM.Cache.Upgrades[e].bonus:CM.Cache.Upgrades[e].pp=Game.Upgrades[e].getPrice()/CM.Cache.Upgrades[e].bonus,Number.isNaN(CM.Cache.Upgrades[e].pp)&&(CM.Cache.Upgrades[e].pp=1/0),CM.Cache.Upgrades[e].color=CM.Cache.ColourOfPP(CM.Cache.Upgrades[e],Game.Upgrades[e].getPrice())},CM.Cache.CentEgg=0,CM.Cache.HadBuildAura=!1,CM.Cache.NoGoldSwitchCookiesPS=0})(); |