diff --git a/CookieMonster.js b/CookieMonster.js index ffb4dde..cc7eb4e 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -133,7 +133,7 @@ CM.Cache.CacheStats = function() { CM.Cache.LuckyWrathRewardFrenzy = wrathMult * (CM.Cache.LuckyFrenzy * 0.15) + 13; CM.Cache.Conjure = CM.Cache.Lucky * 2; CM.Cache.ConjureReward = CM.Cache.Conjure * 0.15; - + CM.Cache.Edifice = 0; var max = 0; var n = 0; @@ -336,7 +336,7 @@ CM.Cache.CacheDragonCost = function() { var target = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1]; var amount = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1]; if (target != "i") { - target = target.replaceAll("\'", ""); + target = target.replaceAll("'", ""); if (Game.Objects[target].amount < amount) { CM.Cache.CostDragonUpgrade = "Not enough buildings to sell"; } @@ -378,7 +378,7 @@ CM.Cache.CacheDragonCost = function() { CM.Cache.lastDragonLevel = Game.dragonLevel; } }; - + /******** * Section: UNSORTED */ @@ -702,7 +702,6 @@ CM.Cache.HadBuildAura = false; CM.Cache.RealCookiesEarned = -1; CM.Cache.goldenShimmersByID = {}; CM.Cache.spawnedGoldenShimmer = 0; - /********** * Config * **********/ @@ -1037,7 +1036,7 @@ CM.ConfigData.GCNotification = {type: 'bool', group: 'NotificationGC', label: [' CM.ConfigData.GCFlash = {type: 'bool', group: 'NotificationGC', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie', toggle: true}; CM.ConfigData.GCSound = {type: 'bool', group: 'NotificationGC', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Golden Cookie', toggle: true}; CM.ConfigData.GCVolume = {type: 'vol', group: 'NotificationGC', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.GCVolume.label[i] = i + '%'; } CM.ConfigData.GCSoundURL = {type: 'url', group: 'NotificationGC', label: 'Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; @@ -1045,7 +1044,7 @@ CM.ConfigData.FortuneNotification = {type: 'bool', group: 'NotificationFC', labe CM.ConfigData.FortuneFlash = {type: 'bool', group: 'NotificationFC', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneSound = {type: 'bool', group: 'NotificationFC', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneVolume = {type: 'vol', group: 'NotificationFC', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.FortuneVolume.label[i] = i + '%'; } CM.ConfigData.FortuneSoundURL = {type: 'url', group: 'NotificationFC', label: 'Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; @@ -1053,14 +1052,14 @@ CM.ConfigData.SeaNotification = {type: 'bool', group: 'NotificationSea', label: CM.ConfigData.SeaFlash = {type: 'bool', group: 'NotificationSea', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; CM.ConfigData.SeaSound = {type: 'bool', group: 'NotificationSea', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; CM.ConfigData.SeaVolume = {type: 'vol', group: 'NotificationSea', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.SeaVolume.label[i] = i + '%'; } CM.ConfigData.SeaSoundURL = {type: 'url', group: 'NotificationSea', label: 'Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; CM.ConfigData.GardFlash = {type: 'bool', group: 'NotificationGard', label: ['Garden Tick Flash OFF', 'Flash ON'], desc: 'Flash screen on Garden Tick', toggle: true}; CM.ConfigData.GardSound = {type: 'bool', group: 'NotificationGard', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Garden Tick', toggle: true}; CM.ConfigData.GardVolume = {type: 'vol', group: 'NotificationGard', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.GardVolume.label[i] = i + '%'; } CM.ConfigData.GardSoundURL = {type: 'url', group: 'NotificationGard', label: 'Garden Tick Sound URL:', desc: 'URL of the sound to be played when the garden ticks'}; @@ -1068,7 +1067,7 @@ CM.ConfigData.MagicNotification = {type: 'bool', group: 'NotificationMagi', labe CM.ConfigData.MagicFlash = {type: 'bool', group: 'NotificationMagi', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when magic reaches maximum', toggle: true}; CM.ConfigData.MagicSound = {type: 'bool', group: 'NotificationMagi', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when magic reaches maximum', toggle: true}; CM.ConfigData.MagicVolume = {type: 'vol', group: 'NotificationMagi', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.MagicVolume.label[i] = i + '%'; } CM.ConfigData.MagicSoundURL = {type: 'url', group: 'NotificationMagi', label: 'Sound URL:', desc: 'URL of the sound to be played when magic reaches maxium'}; @@ -1076,7 +1075,7 @@ CM.ConfigData.WrinklerNotification = {type: 'bool', group: 'NotificationWrink', CM.ConfigData.WrinklerFlash = {type: 'bool', group: 'NotificationWrink', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when a Wrinkler appears', toggle: true}; CM.ConfigData.WrinklerSound = {type: 'bool', group: 'NotificationWrink', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when a Wrinkler appears', toggle: true}; CM.ConfigData.WrinklerVolume = {type: 'vol', group: 'NotificationWrink', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.WrinklerVolume.label[i] = i + '%'; } CM.ConfigData.WrinklerSoundURL = {type: 'url', group: 'NotificationWrink', label: 'Sound URL:', desc: 'URL of the sound to be played when a Wrinkler appears'}; @@ -1084,7 +1083,7 @@ CM.ConfigData.WrinklerMaxNotification = {type: 'bool', group: 'NotificationWrink CM.ConfigData.WrinklerMaxFlash = {type: 'bool', group: 'NotificationWrinkMax', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when the maximum amount of Wrinklers has appeared', toggle: true}; CM.ConfigData.WrinklerMaxSound = {type: 'bool', group: 'NotificationWrinkMax', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when the maximum amount of Wrinklers has appeared', toggle: true}; CM.ConfigData.WrinklerMaxVolume = {type: 'vol', group: 'NotificationWrinkMax', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.WrinklerMaxVolume.label[i] = i + '%'; } CM.ConfigData.WrinklerMaxSoundURL = {type: 'url', group: 'NotificationWrinkMax', label: 'Sound URL:', desc: 'URL of the sound to be played when the maximum amount of Wrinklers has appeared'}; @@ -1350,7 +1349,7 @@ CM.Disp.FormatTime = function(time, longFormat) { var h = Math.floor(time % 86400 / 3600); var m = Math.floor(time % 3600 / 60); var s = Math.floor(time % 60); - var str = ''; + let str = ''; if (CM.Options.TimeFormat) { if (time > 3155760000) return 'XX:XX:XX:XX:XX'; str += (y < 10 ? '0' : '') + y + ':'; @@ -1637,11 +1636,11 @@ CM.Disp.CreateBotBarBuildingColumn = function(buildingName) { var pp = CM.Disp.BotBar.firstChild.firstChild.childNodes[2]; var time = CM.Disp.BotBar.firstChild.firstChild.childNodes[3]; - var i = buildingName; + let i = buildingName; var header = type.appendChild(document.createElement('td')); header.appendChild(document.createTextNode((i.indexOf(' ') != -1 ? i.substring(0, i.indexOf(' ')) : i) + ' (')); - var span = header.appendChild(document.createElement('span')); + let span = header.appendChild(document.createElement('span')); span.className = CM.Disp.colorTextPre + CM.Disp.colorBlue; header.appendChild(document.createTextNode(')')); @@ -1701,7 +1700,7 @@ CM.Disp.TimerBarCreateBar = function(id, name, bars) { timerBar.style.margin = '0px 10px'; timerBar.style.position = 'relative'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.width = '100%'; div.style.height = '10px'; div.style.margin = 'auto'; @@ -1721,7 +1720,7 @@ CM.Disp.TimerBarCreateBar = function(id, name, bars) { type.textContent = name; div.appendChild(type); - for (var i = 0; i < bars.length; i++) { + for (let i = 0; i < bars.length; i++) { var colorBar = document.createElement('span'); colorBar.id = bars[i].id; colorBar.style.display = 'inline-block'; @@ -1909,11 +1908,10 @@ CM.Disp.UpdateBotTimerBarPosition = function() { * And by changes in CM.Options.BuildColor, CM.Options.SortBuild & CM.ConfigData.BulkBuildColor */ CM.Disp.UpdateBuildings = function() { + let target = 'Objects'; + if (Game.buyBulk == 10 && CM.Options.BulkBuildColor == 1) target = 'Objects10'; + else if (Game.buyBulk == 100 && CM.Options.BulkBuildColor == 1) target = 'Objects100'; if (Game.buyMode == 1) { - var target = ''; - if (Game.buyBulk == 10 && CM.Options.BulkBuildColor == 1) target = 'Objects10'; - else if (Game.buyBulk == 100 && CM.Options.BulkBuildColor == 1) target = 'Objects100'; - else target = 'Objects'; if (CM.Options.BuildColor == 1) { for (let i of Object.keys(CM.Cache[target])) { l('productPrice' + Game.Objects[i].id).style.color = CM.Options.Colors[CM.Cache[target][i].color]; @@ -1944,7 +1942,7 @@ CM.Disp.UpdateBuildings = function() { // (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options) // This regulates sorting of buildings if (Game.buyMode == 1 && CM.Options.SortBuildings) { - var arr = Object.keys(CM.Cache[target]).map(k => + let arr = Object.keys(CM.Cache[target]).map(k => { var o = CM.Cache[target][k]; o.name = k; @@ -1954,11 +1952,11 @@ CM.Disp.UpdateBuildings = function() { arr.sort(function(a, b){ return (a.pp > b.pp ? 1 : (a.pp < b.pp ? -1 : 0)); }); - for (var x = 0; x < arr.length; x++) { + for (let x = 0; x < arr.length; x++) { Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } } else { - var arr = Object.keys(CM.Cache.Objects).map(k => + let arr = Object.keys(CM.Cache.Objects).map(k => { var o = CM.Cache.Objects[k]; o.name = k; @@ -1966,7 +1964,7 @@ CM.Disp.UpdateBuildings = function() { return o; }); arr.sort((a, b) => a.id - b.id); - for (var x = 0; x < arr.length; x++) { + for (let x = 0; x < arr.length; x++) { Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } } @@ -1992,7 +1990,7 @@ CM.Disp.UpdateUpgrades = function() { for (let i of Object.keys(Game.UpgradesInStore)) { var me = Game.UpgradesInStore[i]; var addedColor = false; - for (var j = 0; j < l('upgrade' + i).childNodes.length; j++) { + for (let j = 0; j < l('upgrade' + i).childNodes.length; j++) { if (l('upgrade' + i).childNodes[j].className.indexOf(CM.Disp.colorBackPre) != -1) { l('upgrade' + i).childNodes[j].className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; addedColor = true; @@ -2000,7 +1998,7 @@ CM.Disp.UpdateUpgrades = function() { } } if (!addedColor) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.width = '10px'; div.style.height = '10px'; div.className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; @@ -2026,8 +2024,8 @@ CM.Disp.UpdateUpgrades = function() { // Build array of pointers, sort by pp, set flex positions // This regulates sorting of upgrades - var arr = []; - for (var x = 0; x < Game.UpgradesInStore.length; x++){ + let arr = []; + for (let x = 0; x < Game.UpgradesInStore.length; x++){ var o = {}; o.name = Game.UpgradesInStore[x].name; o.price = Game.UpgradesInStore[x].basePrice; @@ -2041,9 +2039,12 @@ CM.Disp.UpdateUpgrades = function() { else { arr.sort((a, b) => a.price - b.price); } - - for (var x = 0; x < Game.UpgradesInStore.length; x++){ - l("upgrade" + x).style.order = arr.findIndex(e => e.name === Game.UpgradesInStore[x].name) + 1; + + let nameChecker = function(arr, upgrade) { + return arr.findIndex(e => e.name === upgrade.name); + }; + for (let x = 0; x < Game.UpgradesInStore.length; x++){ + l("upgrade" + x).style.order = nameChecker(arr, Game.UpgradesInStore[x]) + 1; } }; @@ -2095,7 +2096,7 @@ CM.Disp.CreateUpgradeBar = function() { CM.Disp.UpgradeBar.style.textAlign = 'center'; CM.Disp.UpgradeBar.style.fontWeight = 'bold'; CM.Disp.UpgradeBar.style.display = 'none'; - CM.Disp.UpgradeBar.style.zIndex = '21'; + CM.Disp.UpgradeBar.style.zIndex = '21'; CM.Disp.UpgradeBar.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); @@ -2103,7 +2104,7 @@ CM.Disp.CreateUpgradeBar = function() { CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');}; var upgradeNumber = function(id, color) { - var span = document.createElement('span'); + let span = document.createElement('span'); span.id = id; span.className = CM.Disp.colorTextPre + color; span.style.width = '14.28571428571429%'; @@ -2130,16 +2131,16 @@ CM.Disp.CreateUpgradeBarLegend = function() { var legend = document.createElement('div'); legend.style.minWidth = '330px'; legend.style.marginBottom = '4px'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.className = 'name'; title.style.marginBottom = '4px'; title.textContent = 'Legend'; legend.appendChild(title); var legendLine = function(color, text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.verticalAlign = 'middle'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = CM.Disp.colorBackPre + color; span.style.display = 'inline-block'; span.style.height = '10px'; @@ -2188,7 +2189,7 @@ CM.Disp.CreateWhiteScreen = function() { */ CM.Disp.Flash = function(mode, config) { // The arguments check makes the sound not play upon initialization of the mod - if ((CM.Options[config] == 1 && mode == 3 && arguments.callee.caller.caller.caller.caller == null) || mode == 1) { + if ((CM.Options[config] == 1 && mode == 3 && CM.Disp.Flash.caller.caller.caller.caller == null) || mode == 1) { CM.Disp.WhiteScreen.style.opacity = '0.5'; if (mode == 3) { CM.Disp.WhiteScreen.style.display = 'inline'; @@ -2214,7 +2215,7 @@ CM.Disp.Flash = function(mode, config) { */ CM.Disp.PlaySound = function(url, sndConfig, volConfig) { // The arguments check makes the sound not play upon initialization of the mod - if (CM.Options[sndConfig] == 1 && arguments.callee.caller.caller.caller.caller == null) { + if (CM.Options[sndConfig] == 1 && CM.Disp.PlaySound.caller.caller.caller.caller == null) { var sound = new realAudio(url); sound.volume = (CM.Options[volConfig] / 100) * (Game.volume / 100); sound.play(); @@ -2230,7 +2231,7 @@ CM.Disp.PlaySound = function(url, sndConfig, volConfig) { */ CM.Disp.Notification = function(notifyConfig, title, message) { // The arguments check makes the sound not play upon initialization of the mod - if (CM.Options[notifyConfig] == 1 && document.visibilityState == 'hidden' && arguments.callee.caller.caller.caller.caller == null) { + if (CM.Options[notifyConfig] == 1 && document.visibilityState == 'hidden' && CM.Disp.Notification.caller.caller.caller.caller == null) { var CookieIcon = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; notification = new Notification(title, {body: message, badge: CookieIcon}); } @@ -2272,11 +2273,11 @@ CM.Disp.UpdateTitle = function() { document.title = CM.Cache.Title; } else if (CM.Options.Title == 1) { - var addFC = false; - var addSP = false; - var titleGC; - var titleFC; - var titleSP; + let addFC = false; + let addSP = false; + let titleGC; + let titleFC; + let titleSP; if (CM.Cache.spawnedGoldenShimmer) { if (CM.Cache.spawnedGoldenShimmer.wrath) titleGC = '[W ' + Math.ceil(CM.Cache.spawnedGoldenShimmer.life / Game.fps) + ']'; @@ -2301,15 +2302,15 @@ CM.Disp.UpdateTitle = function() { } // Remove previous timers and add current cookies - var str = CM.Cache.Title; + let str = CM.Cache.Title; if (str.charAt(0) == '[') { str = str.substring(str.lastIndexOf(']') + 1); } document.title = titleGC + (addFC ? titleFC : '') + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Options.Title == 2) { - var str = ''; - var spawn = false; + let str = ''; + let spawn = false; if (CM.Cache.spawnedGoldenShimmer) { spawn = true; if (CM.Cache.spawnedGoldenShimmer.wrath) str += '[W ' + Math.ceil(CM.Cache.spawnedGoldenShimmer.life / Game.fps) + ']'; @@ -2324,7 +2325,7 @@ CM.Disp.UpdateTitle = function() { spawn = true; } if (spawn) str += ' - '; - var title = 'Cookie Clicker'; + let title = 'Cookie Clicker'; if (Game.season == 'fools') title = 'Cookie Baker'; str += title; document.title = str; @@ -2348,7 +2349,7 @@ CM.Disp.CreateGCTimer = function(cookie) { GCTimer.style.zIndex = '10000000001'; GCTimer.style.textAlign = 'center'; GCTimer.style.lineHeight = '96px'; - GCTimer.style.fontFamily = '\"Kavoon\", Georgia, serif'; + GCTimer.style.fontFamily = '"Kavoon", Georgia, serif'; GCTimer.style.fontSize = '35px'; GCTimer.style.cursor = 'pointer'; GCTimer.style.display = 'block'; @@ -2396,7 +2397,7 @@ CM.Disp.CreateSimpleTooltip = function(placeholder, text, minWidth) { var desc = document.createElement('div'); desc.style.minWidth = minWidth; desc.style.marginBottom = '4px'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'left'; div.textContent = text; desc.appendChild(div); @@ -2411,10 +2412,9 @@ CM.Disp.CreateSimpleTooltip = function(placeholder, text, minWidth) { CM.Disp.ReplaceTooltipUpgrade = function() { CM.Disp.TooltipUpgradeBackup = []; for (let i of Object.keys(Game.UpgradesInStore)) { - var me = Game.UpgradesInStore[i]; if (l('upgrade' + i).onmouseover != null) { CM.Disp.TooltipUpgradeBackup[i] = l('upgrade' + i).onmouseover; - eval('l(\'upgrade\' + i).onmouseover = function() {if (!Game.mouseDown) {Game.setOnCrate(this); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip(\'u\', \'' + i + '\');}, \'store\'); Game.tooltip.wobble();}}'); + l('upgrade' + i).onmouseover = function() {if (!Game.mouseDown) {Game.setOnCrate(this); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip('u', `${i}`);}, 'store'); Game.tooltip.wobble();}}; } } }; @@ -2499,7 +2499,7 @@ CM.Disp.TooltipCreateTooltipBox = function() { * @returns {object} div An object containing the stylized header */ CM.Disp.TooltipCreateHeader = function(text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.fontWeight = 'bold'; div.className = CM.Disp.colorTextPre + CM.Disp.colorBlue; div.textContent = text; @@ -2514,7 +2514,7 @@ CM.Disp.TooltipCreateHeader = function(text) { */ CM.Disp.TooltipCreateCalculationSection = function(tooltip) { tooltip.appendChild(CM.Disp.TooltipCreateHeader('Bonus Income')); - var income = document.createElement('div'); + let income = document.createElement('div'); income.style.marginBottom = '4px'; income.style.color = 'white'; income.id = 'CMTooltipIncome'; @@ -2661,7 +2661,7 @@ CM.Disp.UpdateTooltipBuilding = function() { if (CM.Options.TooltipBuildUpgrade == 1 && Game.buyMode == 1) { l('CMTooltipIncome').textContent = Beautify(CM.Disp.TooltipBonusIncome, 2); - var increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); + let increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)'; } @@ -2678,22 +2678,19 @@ CM.Disp.UpdateTooltipBuilding = function() { } // Add "production left till next achievement"-bar + l('CMTooltipProductionHeader').style.display = "none"; + l('CMTooltipTime').style.marginBottom = '0px'; for (let i of Object.keys(Game.Objects[CM.Disp.tooltipName].productionAchievs)) { if (!CM.Sim.HasAchiev(Game.Objects[CM.Disp.tooltipName].productionAchievs[i].achiev.name)) { - var nextProductionAchiev = Game.Objects[CM.Disp.tooltipName].productionAchievs[i]; + let nextProductionAchiev = Game.Objects[CM.Disp.tooltipName].productionAchievs[i]; + l('CMTooltipTime').style.marginBottom = '4px'; + l('CMTooltipProductionHeader').style.display = ""; + l('CMTooltipProduction').className = "ProdAchievement" + CM.Disp.tooltipName; + l('CMTooltipProduction').textContent = Beautify(nextProductionAchiev.pow - CM.Sim.Objects[CM.Disp.tooltipName].totalCookies, 15); + l('CMTooltipProduction').style.color = "white"; break; } } - if (typeof nextProductionAchiev != "undefined") { - l('CMTooltipTime').style.marginBottom = '4px'; - l('CMTooltipProductionHeader').style.display = ""; - l('CMTooltipProduction').className = "ProdAchievement" + CM.Disp.tooltipName; - l('CMTooltipProduction').textContent = Beautify(nextProductionAchiev.pow - CM.Sim.Objects[CM.Disp.tooltipName].totalCookies, 15); - l('CMTooltipProduction').style.color = "white"; - } else { - l('CMTooltipProductionHeader').style.display = "none"; - l('CMTooltipTime').style.marginBottom = '0px'; - } } else l('CMTooltipArea').style.display = "none"; }; @@ -2712,7 +2709,7 @@ CM.Disp.UpdateTooltipUpgrade = function() { if (CM.Options.TooltipBuildUpgrade == 1) { l('CMTooltipIncome').textContent = Beautify(CM.Disp.TooltipBonusIncome, 2); - var increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); + let increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)'; } @@ -2867,13 +2864,14 @@ CM.Disp.UpdateTooltipGardenPlots = function() { * It adds to the additional information to l('CMTooltipArea') */ CM.Disp.UpdateTooltipHarvestAll = function() { - var minigame = Game.Objects.Farm.minigame; + let minigame = Game.Objects.Farm.minigame; if (CM.Options.TooltipLump) { l('CMTooltipBorder').appendChild(CM.Disp.TooltipCreateHeader('Cookies gained from harvesting:')); - var totalGain = 0; - if (Game.keys[16] && Game.keys[17]) var mortal = 1; - for (var y=0;y<6;y++) { - for (var x=0;x<6;x++) { + let totalGain = 0; + let mortal = 0; + if (Game.keys[16] && Game.keys[17]) mortal = 1; + for (let y=0;y<6;y++) { + for (let x=0; x<6; x++) { if (minigame.plot[y][x][0]>=1) { let tile = minigame.plot[y][x]; let me = minigame.plantsById[tile[0] - 1]; @@ -3032,7 +3030,7 @@ CM.Disp.CheckWrinklerTooltip = function() { var wrinkler = document.createElement('div'); wrinkler.style.minWidth = '120px'; wrinkler.style.marginBottom = '4px'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'center'; div.id = 'CMTooltipWrinkler'; wrinkler.appendChild(div); @@ -3094,12 +3092,12 @@ CM.Disp.AddAuraInfo = function(aura) { l('dragonAuraInfo').style.minHeight = "60px"; l('dragonAuraInfo').style.margin = "8px"; l('dragonAuraInfo').appendChild(document.createElement("div")).className = "line"; - var div = document.createElement("div"); + let div = document.createElement("div"); div.style.minWidth = "200px"; div.style.textAlign = "center"; div.textContent = "Picking this aura will change CPS by " + bonusCPS + " (" + bonusCPSPercentage + "% of current CPS)."; l('dragonAuraInfo').appendChild(div); - var div2 = document.createElement("div"); + let div2 = document.createElement("div"); div2.style.minWidth = "200px"; div2.style.textAlign = "center"; div2.textContent = "It will take " + timeToRecover + " to recover the cost."; @@ -3131,8 +3129,8 @@ CM.Disp.AddDragonLevelUpTooltip = function() { * It is called by Game.UpdateMenu() */ CM.Disp.AddMenu = function() { - var title = function() { - var div = document.createElement('div'); + let title = function() { + let div = document.createElement('div'); div.className = 'title ' + CM.Disp.colorTextPre + CM.Disp.colorBlue; div.textContent = 'Cookie Monster Goodies'; return div; @@ -3213,13 +3211,13 @@ CM.Disp.AddMenuPref = function(title) { * @returns {object} div The header object */ CM.Disp.CreatePrefHeader = function(config, text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'title'; div.style.opacity = '0.7'; div.style.fontSize = '17px'; div.appendChild(document.createTextNode(text + ' ')); - var span = document.createElement('span'); // Creates the +/- button + let span = document.createElement('span'); // Creates the +/- button span.style.cursor = 'pointer'; span.style.display = 'inline-block'; span.style.height = '14px'; @@ -3244,9 +3242,9 @@ CM.Disp.CreatePrefHeader = function(config, text) { */ CM.Disp.CreatePrefOption = function(config) { if (CM.ConfigData[config].type == "bool") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var a = document.createElement('a'); + let a = document.createElement('a'); if (CM.ConfigData[config].toggle && CM.Options[config] == 0) { a.className = 'option off'; } @@ -3257,21 +3255,21 @@ CM.Disp.CreatePrefOption = function(config) { a.onclick = function() {CM.Config.ToggleConfig(config);}; a.textContent = CM.ConfigData[config].label[CM.Options[config]]; div.appendChild(a); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; } else if (CM.ConfigData[config].type == "vol") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; var volume = document.createElement('div'); volume.className = 'sliderBox'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.style.float = "left"; title.innerHTML = CM.ConfigData[config].desc; volume.appendChild(title); - var percent = title = document.createElement('div'); + var percent = document.createElement('div'); percent.id = "slider" + config + "right"; percent.style.float = "right"; percent.innerHTML = CM.Options[config] + "%"; @@ -3292,13 +3290,13 @@ CM.Disp.CreatePrefOption = function(config) { return div; } else if (CM.ConfigData[config].type == "url") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = 'option'; span.textContent = CM.ConfigData[config].label + ' '; div.appendChild(span); - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.ConfigPrefix + config; input.className = 'option'; input.type = 'text'; @@ -3307,34 +3305,34 @@ CM.Disp.CreatePrefOption = function(config) { input.style.width = '300px'; div.appendChild(input); div.appendChild(document.createTextNode(' ')); - var inputPrompt = document.createElement('input'); + let inputPrompt = document.createElement('input'); inputPrompt.id = CM.ConfigPrefix + config + 'Prompt'; inputPrompt.className = 'option'; inputPrompt.type = 'text'; inputPrompt.setAttribute('value', CM.Options[config]); - var a = document.createElement('a'); + let a = document.createElement('a'); a.className = 'option'; a.onclick = function() {Game.Prompt(inputPrompt.outerHTML, [['Save', 'CM.Options[\'' + config + '\'] = l(CM.ConfigPrefix + \'' + config + '\' + \'Prompt\').value; CM.Config.SaveConfig(); Game.ClosePrompt(); Game.UpdateMenu();'], 'Cancel']);}; a.textContent = 'Edit'; div.appendChild(a); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; } else if (CM.ConfigData[config].type == "color") { - var div = document.createElement('div'); - for (var i = 0; i < CM.Disp.colors.length; i++) { - var innerDiv = document.createElement('div'); + let div = document.createElement('div'); + for (let i = 0; i < CM.Disp.colors.length; i++) { + let innerDiv = document.createElement('div'); innerDiv.className = 'listing'; - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.Disp.colors[i]; input.style.width = '65px'; input.setAttribute('value', CM.Options.Colors[CM.Disp.colors[i]]); innerDiv.appendChild(input); let change = function() {CM.Options.Colors[this.targetElement.id] = this.toHEXString(); CM.Disp.UpdateColors(); CM.Config.SaveConfig(); Game.UpdateMenu();}; - let picker = new JSColor(input, {hash: true, position: "right", onInput: change}); - var label = document.createElement('label'); + let = new JSColor(input, {hash: true, position: "right", onInput: change}); + let label = document.createElement('label'); label.textContent = CM.ConfigData.Colors.desc[CM.Disp.colors[i]]; innerDiv.appendChild(label); div.appendChild(innerDiv); @@ -3342,13 +3340,13 @@ CM.Disp.CreatePrefOption = function(config) { return div; } else if (CM.ConfigData[config].type == "numscale") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = 'option'; span.textContent = CM.ConfigData[config].label + ' '; div.appendChild(span); - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.ConfigPrefix + config; input.className = 'option'; input.type = 'number'; @@ -3356,13 +3354,13 @@ CM.Disp.CreatePrefOption = function(config) { input.min = CM.ConfigData[config].min; input.max = CM.ConfigData[config].max; input.oninput = function() {if (this.value > this.max) console.log("TEST"); - CM.Options[config] = this.value; - CM.Config.SaveConfig(); - CM.Disp.RefreshScale(); - }; + CM.Options[config] = this.value; + CM.Config.SaveConfig(); + CM.Disp.RefreshScale(); + }; div.appendChild(input); div.appendChild(document.createTextNode(' ')); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; @@ -3397,14 +3395,14 @@ CM.Disp.RefreshScale = function() { * The function is therefore called by a change in CM.Options.Colors */ CM.Disp.UpdateColors = function() { - var str = ''; - for (var i = 0; i < CM.Disp.colors.length; i++) { + let str = ''; + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorTextPre + CM.Disp.colors[i] + ' { color: ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } - for (var i = 0; i < CM.Disp.colors.length; i++) { + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorBackPre + CM.Disp.colors[i] + ' { background-color: ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } - for (var i = 0; i < CM.Disp.colors.length; i++) { + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorBorderPre + CM.Disp.colors[i] + ' { border: 1px solid ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } CM.Disp.Css.textContent = str; @@ -3437,7 +3435,7 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(CM.Disp.CreateStatsHeader('Spells', 'Spells')); if (CM.Options.Header.Spells) { stats.appendChild(CM.Disp.CreateStatsSpellsSection()); - } + } stats.appendChild(CM.Disp.CreateStatsHeader('Prestige', 'Prestige')); if (CM.Options.Header.Prestige) { @@ -3573,14 +3571,14 @@ CM.Disp.AddMenuStats = function(title) { * @returns {object} div The header object */ CM.Disp.CreateStatsHeader = function(text, config) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; div.style.padding = '5px 16px'; div.style.opacity = '0.7'; div.style.fontSize = '17px'; - div.style.fontFamily = '\"Kavoon\", Georgia, serif'; + div.style.fontFamily = '"Kavoon", Georgia, serif'; div.appendChild(document.createTextNode(text + ' ')); - var span = document.createElement('span'); + let span = document.createElement('span'); span.style.cursor = 'pointer'; span.style.display = 'inline-block'; span.style.height = '14px'; @@ -3607,7 +3605,7 @@ CM.Disp.CreateStatsHeader = function(text, config) { * @returns {object} div The option object */ CM.Disp.CreateStatsListing = function(type, name, text, placeholder) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; var listingName = document.createElement('b'); @@ -3646,20 +3644,20 @@ CM.Disp.CreateStatsListing = function(type, name, text, placeholder) { CM.Disp.CreateStatsMissDisp = function(theMissDisp) { var frag = document.createDocumentFragment(); frag.appendChild(document.createTextNode(theMissDisp.length + ' ')); - var span = document.createElement('span'); + let span = document.createElement('span'); span.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); var missing = document.createElement('div'); missing.style.minWidth = '140px'; missing.style.marginBottom = '4px'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.className = 'name'; title.style.marginBottom = '4px'; title.style.textAlign = 'center'; title.textContent = 'Missing'; missing.appendChild(title); for (let i of Object.keys(theMissDisp)) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'center'; div.appendChild(document.createTextNode(theMissDisp[i])); missing.appendChild(div); @@ -3705,7 +3703,7 @@ CM.Disp.CreateStatsLuckySection = function() { luckyReqSmall.textContent = ' (' + luckyTime + ')'; luckyReqFrag.appendChild(luckyReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Cookies Required', luckyReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Cookies Required', luckyReqFrag, goldCookTooltip)); var luckyColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; @@ -3721,7 +3719,7 @@ CM.Disp.CreateStatsLuckySection = function() { luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')'; luckyReqFrenFrag.appendChild(luckyReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Cookies Required (Frenzy)', luckyReqFrenFrag, goldCookTooltip)); var luckySplit = CM.Cache.LuckyReward != CM.Cache.LuckyWrathReward; @@ -3729,20 +3727,20 @@ CM.Disp.CreateStatsLuckySection = function() { luckyRewardMaxSpan.style.fontWeight = 'bold'; luckyRewardMaxSpan.className = CM.Disp.colorTextPre + CM.Cache.LuckyReward; luckyRewardMaxSpan.textContent = Beautify(CM.Cache.LuckyReward) + (luckySplit ? (' / ' + Beautify(CM.Cache.LuckyWrathReward)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardMaxSpan, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardMaxSpan, goldCookTooltip)); var luckyRewardFrenzyMaxSpan = document.createElement('span'); luckyRewardFrenzyMaxSpan.style.fontWeight = 'bold'; luckyRewardFrenzyMaxSpan.className = CM.Disp.colorTextPre + luckyRewardFrenzyMaxSpan; luckyRewardFrenzyMaxSpan.textContent = Beautify(CM.Cache.LuckyRewardFrenzy) + (luckySplit ? (' / ' + Beautify(CM.Cache.LuckyWrathRewardFrenzy)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardFrenzyMaxSpan , goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardFrenzyMaxSpan , goldCookTooltip)); var luckyCurBase = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * CM.Cache.DragonsFortuneMultAdjustment * 60 * 15) + 13; var luckyCurSpan = document.createElement('span'); luckyCurSpan.style.fontWeight = 'bold'; luckyCurSpan.className = CM.Disp.colorTextPre + luckyCurSpan; luckyCurSpan.textContent = Beautify(CM.Cache.GoldenCookiesMult * luckyCurBase) + (luckySplit ? (' / ' + Beautify(CM.Cache.WrathCookiesMult * luckyCurBase)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyCurSpan, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyCurSpan, goldCookTooltip)); return section; }; @@ -3770,7 +3768,7 @@ CM.Disp.CreateStatsChainSection = function() { chainReqSmall.textContent = ' (' + chainTime + ')'; chainReqFrag.appendChild(chainReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required', chainReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required', chainReqFrag, goldCookTooltip)); var chainWrathColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainWrathTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -3785,7 +3783,7 @@ CM.Disp.CreateStatsChainSection = function() { chainWrathReqSmall.textContent = ' (' + chainWrathTime + ')'; chainWrathReqFrag.appendChild(chainWrathReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Wrath)', chainWrathReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Wrath)', chainWrathReqFrag, goldCookTooltip)); var chainColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -3800,7 +3798,7 @@ CM.Disp.CreateStatsChainSection = function() { chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')'; chainReqFrenFrag.appendChild(chainReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Frenzy)', chainReqFrenFrag, goldCookTooltip)); var chainWrathColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainWrathTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -3815,17 +3813,17 @@ CM.Disp.CreateStatsChainSection = function() { chainWrathReqFrenSmall.textContent = ' (' + chainWrathTimeFrenzy + ')'; chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag, goldCookTooltip)); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(CM.Cache.ChainReward) + ' / ' + Beautify(CM.Cache.ChainWrathReward)), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(CM.Cache.ChainReward) + ' / ' + Beautify(CM.Cache.ChainWrathReward)), goldCookTooltip)); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode((Beautify(CM.Cache.ChainFrenzyReward) + ' / ' + Beautify(CM.Cache.ChainFrenzyWrathReward))), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode((Beautify(CM.Cache.ChainFrenzyReward) + ' / ' + Beautify(CM.Cache.ChainFrenzyWrathReward))), goldCookTooltip)); // TODO: Place MaxChainMoni function into CM.Cache.RemakeChain and create global variables to store it var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * CM.Cache.DragonsFortuneMultAdjustment * 60 * 60 * 6, (Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.5); var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax, CM.Cache.GoldenCookiesMult); var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax, CM.Cache.WrathCookiesMult); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (CUR) (Golden / Wrath)', document.createTextNode((Beautify(chainCur) + ' / ' + Beautify(chainCurWrath))), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (CUR) (Golden / Wrath)', document.createTextNode((Beautify(chainCur) + ' / ' + Beautify(chainCurWrath))), goldCookTooltip)); return section; }; @@ -3838,7 +3836,6 @@ CM.Disp.CreateStatsSpellsSection = function() { section.className = 'CMStatsSpellsSection'; var conjureColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure) ? CM.Disp.colorRed : CM.Disp.colorGreen; - var conjureCur = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 30); var conjureTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure) ? CM.Disp.FormatTime((CM.Cache.Conjure - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; var conjureReqFrag = document.createDocumentFragment(); @@ -3852,8 +3849,8 @@ CM.Disp.CreateStatsSpellsSection = function() { conjureReqSmall.textContent = ' (' + conjureTime + ')'; conjureReqFrag.appendChild(conjureReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Cookies Required', conjureReqFrag, 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (MAX)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Cookies Required', conjureReqFrag, 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (MAX)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward)), 'GoldCookTooltipPlaceholder')); var conjureFrenzyColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure * 7) ? CM.Disp.colorRed : CM.Disp.colorGreen; var conjureFrenzyCur = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 30); @@ -3870,11 +3867,11 @@ CM.Disp.CreateStatsSpellsSection = function() { conjureFrenzyReqSmall.textContent = ' (' + conjureFrenzyTime + ')'; conjureFrenzyReqFrag.appendChild(conjureFrenzyReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Cookies Required (Frenzy)', conjureFrenzyReqFrag, 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (MAX) (Frenzy)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward * 7)), 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (CUR)', document.createTextNode(CM.Disp.Beautify(conjureFrenzyCur)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Cookies Required (Frenzy)', conjureFrenzyReqFrag, 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (MAX) (Frenzy)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward * 7)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (CUR)', document.createTextNode(CM.Disp.Beautify(conjureFrenzyCur)), 'GoldCookTooltipPlaceholder')); if (CM.Cache.Edifice) { - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Spontaneous Edifice\" Cookies Required (most expensive building)', document.createTextNode(CM.Disp.Beautify(CM.Cache.Edifice) + ' (' + CM.Cache.EdificeBuilding + ")"), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Spontaneous Edifice" Cookies Required (most expensive building)', document.createTextNode(CM.Disp.Beautify(CM.Cache.Edifice) + ' (' + CM.Cache.EdificeBuilding + ")"), 'GoldCookTooltipPlaceholder')); } return section; }; @@ -3905,7 +3902,7 @@ CM.Disp.CreateStatsPrestigeSection = function() { var resetBonus = CM.Sim.ResetBonus(possiblePresMax); var resetFrag = document.createDocumentFragment(); resetFrag.appendChild(document.createTextNode(Beautify(resetBonus))); - var increase = Math.round(resetBonus / Game.cookiesPs * 10000); + let increase = Math.round(resetBonus / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { var resetSmall = document.createElement('small'); resetSmall.textContent = ' (' + (increase / 100) + '% of income)'; @@ -3956,7 +3953,7 @@ CM.Disp.CreateStatsPrestigeSection = function() { CM.Disp.AddMissingUpgrades = function() { if (CM.Cache.MissingUpgradesPrestige) { var prestigeUpgradesOwned = Game.PrestigeUpgrades.length - l('menu').children[5].children[3].children.length; - var title = document.createElement('div'); + let title = document.createElement('div'); title.id = "CMMissingUpgradesPrestigeTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -3969,10 +3966,9 @@ CM.Disp.AddMissingUpgrades = function() { l('menu').children[5].appendChild(upgrades); } if (CM.Cache.MissingUpgrades) { - if (Game.UpgradesOwned) { - var normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool.tech.length - l('menu').children[6].childNodes[2].children.length; - } else var normalUpgradesOwned = 0; - var title = document.createElement('div'); + let normalUpgradesOwned = 0; + if (Game.UpgradesOwned) normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool.tech.length - l('menu').children[6].childNodes[2].children.length; + let title = document.createElement('div'); title.id = "CMMissingUpgradesTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -3986,7 +3982,7 @@ CM.Disp.AddMissingUpgrades = function() { } if (CM.Cache.MissingUpgradesCookies) { var cookieUpgradesOwned = Game.UpgradesByPool.cookie.length - l('menu').children[6].lastChild.children.length; - var title = document.createElement('div'); + let title = document.createElement('div'); title.id = "CMMissingUpgradesCookiesTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -4016,7 +4012,7 @@ CM.Disp.crateMissing = function(me) { if (!Game.prefs.crates) noFrame = 1; if (noFrame) classes += ' noFrame'; - var icon = me.icon; + let icon = me.icon; if (me.iconFunction) icon = me.iconFunction(); tooltip = `function() {return Game.crateTooltip(Game.UpgradesById[${me.id}], 'stats');}`; return `
{ + Array.from(l('gardenPlot').children).forEach((child) => { var coords = child.id.slice(-3,); child.onmouseover = function() {Game.tooltip.dynamic=1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip('p', [`${coords[0]}`,`${coords[2]}`]);}, 'this'); Game.tooltip.wobble();}; }); @@ -4483,7 +4478,7 @@ CM.Main.ReplaceTooltipGarden = function() { CM.Main.FindShimmer = function() { CM.Main.currSpawnedGoldenCookieState = 0; CM.Cache.goldenShimmersByID = {}; - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { CM.Cache.goldenShimmersByID[Game.shimmers[i].id] = Game.shimmers[i]; if (Game.shimmers[i].spawnLead && Game.shimmers[i].type == 'golden') { CM.Cache.spawnedGoldenShimmer = Game.shimmers[i]; @@ -4499,7 +4494,7 @@ CM.Main.FindShimmer = function() { */ CM.Main.CheckGoldenCookie = function() { CM.Main.FindShimmer(); - for (var i in CM.Disp.GCTimers) { + for (let i of Object.keys(CM.Disp.GCTimers)) { if (typeof CM.Cache.goldenShimmersByID[i] == "undefined") { CM.Disp.GCTimers[i].parentNode.removeChild(CM.Disp.GCTimers[i]); // TODO remove delete here @@ -4515,7 +4510,7 @@ CM.Main.CheckGoldenCookie = function() { CM.Disp.Notification('GCNotification', "Golden Cookie Spawned", "A Golden Cookie has spawned. Click it now!"); } - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { if (typeof CM.Disp.GCTimers[Game.shimmers[i].id] == "undefined") { CM.Disp.CreateGCTimer(Game.shimmers[i]); } @@ -4526,7 +4521,7 @@ CM.Main.CheckGoldenCookie = function() { if (CM.Main.currSpawnedGoldenCookieState == 0) CM.Cache.spawnedGoldenShimmer = 0; } else if (CM.Options.GCTimer == 1 && CM.Main.lastGoldenCookieState) { - for (var i in CM.Disp.GCTimers) { + for (let i of Object.keys(CM.Disp.GCTimers)) { CM.Disp.GCTimers[i].style.opacity = CM.Cache.goldenShimmersByID[i].l.style.opacity; CM.Disp.GCTimers[i].style.transform = CM.Cache.goldenShimmersByID[i].l.style.transform; CM.Disp.GCTimers[i].textContent = Math.ceil(CM.Cache.goldenShimmersByID[i].life / Game.fps); @@ -4541,7 +4536,7 @@ CM.Main.CheckGoldenCookie = function() { CM.Main.CheckSeasonPopup = function() { if (CM.Main.lastSeasonPopupState != Game.shimmerTypes.reindeer.spawned) { CM.Main.lastSeasonPopupState = Game.shimmerTypes.reindeer.spawned; - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { if (Game.shimmers[i].spawnLead && Game.shimmers[i].type == 'reindeer') { CM.Cache.seasonPopShimmer = Game.shimmers[i]; break; @@ -4606,7 +4601,7 @@ CM.Main.CheckMagicMeter = function() { CM.Main.CheckWrinklerCount = function() { if (Game.elderWrath > 0) { var CurrentWrinklers = 0; - for (var i in Game.wrinklers) { + for (let i in Game.wrinklers) { if (Game.wrinklers[i].phase == 2) CurrentWrinklers++; } if (CurrentWrinklers > CM.Main.lastWrinklerCount) { @@ -4643,7 +4638,7 @@ CM.Main.AddWrinklerAreaDetect = function() { l('backgroundLeftCanvas').onmouseout = function() { CM.Disp.TooltipWrinklerArea = 0; Game.tooltip.hide(); - for (var i in Game.wrinklers) { + for (let i of Object.keys(Game.wrinklers)) { CM.Disp.TooltipWrinklerBeingShown[i] = 0; } }; @@ -4674,7 +4669,6 @@ CM.HasReplaceNativeGrimoireDraw = false; CM.Main.lastGoldenCookieState = 0; CM.Main.lastSpawnedGoldenCookieState = 0; -CM.Main.currSpawnedGoldenCookieState; CM.Main.lastTickerFortuneState = 0; CM.Main.lastSeasonPopupState = 0; CM.Main.lastGardenNextStep = 0; @@ -4691,8 +4685,8 @@ CM.VersionMinor = '3'; *******/ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { - /*var price=0; - for (var i = Math.max(0 , start); i < Math.max(0, start + increase); i++) { + /*let price=0; + for (let i = Math.max(0 , start); i < Math.max(0, start + increase); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); } if (Game.Has('Season savings')) price *= 0.99; @@ -4703,8 +4697,8 @@ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { return Math.ceil(price);*/ var moni = 0; - for (var i = 0; i < increase; i++) { - var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + for (let i = 0; i < increase; i++) { + let price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); moni += price; @@ -4714,8 +4708,8 @@ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { }; CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { - /*var price=0; - for (var i = Math.max(0, start - amount); i < Math.max(0, start); i++) { + /*let price=0; + for (let i = Math.max(0, start - amount); i < Math.max(0, start); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); } if (Game.Has('Season savings')) price*=0.99; @@ -4737,8 +4731,8 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { var moni = 0; if (amount == -1) amount = start; if (!amount) amount = Game.buyBulk; - for (var i = 0; i < amount; i++) { - var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + for (let i = 0; i < amount; i++) { + let price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); price = noSim ? Game.modifyBuildingPrice(build, price) : CM.Sim.modifyBuildingPrice(build, price); price = Math.ceil(price); var giveBack = noSim ? build.getSellMultiplier() : CM.Sim.getSellMultiplier(); @@ -4752,7 +4746,7 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { }; CM.Sim.Has = function(what) { - var it = CM.Sim.Upgrades[what]; + let it = CM.Sim.Upgrades[what]; if (Game.ascensionMode == 1 && (it.pool == 'prestige' || it.tier == 'fortune')) return 0; return (it ? it.bought : 0); }; @@ -4796,7 +4790,7 @@ CM.Sim.hasGod=function(what) { } var possibleGods = CM.Sim.Objects.Temple.minigame.gods; var god=possibleGods[what]; - for (var i=0;i<3;i++) + for (let i=0;i<3;i++) { if (CM.Sim.Objects.Temple.minigame.slot[i]==god.id) return (i+1); } @@ -4827,7 +4821,7 @@ eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() CM.Sim.getCPSBuffMult = function() { var mult = 1; - for (var i in Game.buffs) { + for (let i of Object.keys(Game.buffs)) { if (typeof Game.buffs[i].multCpS != 'undefined') mult *= Game.buffs[i].multCpS; } return mult; @@ -4843,8 +4837,8 @@ CM.Sim.getCPSBuffMult = function() { * are set by CM.Sim.CopyData. */ CM.Sim.InitialBuildingData = function(buildingName) { - var me = Game.Objects[buildingName]; - var you = {}; + let me = Game.Objects[buildingName]; + let you = {}; eval('you.cps = ' + me.cps.toString() .split('Game.Has').join('CM.Sim.Has') .split('Game.hasAura').join('CM.Sim.hasAura') @@ -4864,8 +4858,8 @@ CM.Sim.InitialBuildingData = function(buildingName) { * so this function just returns an empty object. */ CM.Sim.InitUpgrade = function(upgradeName) { - var me = Game.Upgrades[upgradeName]; - var you = {}; + let me = Game.Upgrades[upgradeName]; + let you = {}; you.pool = me.pool; you.name = me.name; return you; @@ -4877,28 +4871,31 @@ CM.Sim.InitUpgrade = function(upgradeName) { * so this function just returns an empty object. */ CM.Sim.InitAchievement = function(achievementName) { + let me = Game.Achievements[achievementName]; + let you = {}; + you.name = me.name; return {}; }; CM.Sim.InitData = function() { // Buildings CM.Sim.Objects = []; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { CM.Sim.Objects[i] = CM.Sim.InitialBuildingData(i); } // Upgrades CM.Sim.Upgrades = []; - for (var i in Game.Upgrades) { + for (let i of Object.keys(Game.Upgrades)) { CM.Sim.Upgrades[i] = CM.Sim.InitUpgrade(i); } // Achievements CM.Sim.Achievements = []; - for (var i in Game.Achievements) { + for (let i of Object.keys(Game.Achievements)) { CM.Sim.Achievements[i] = CM.Sim.InitAchievement(i); } - CM.Sim.CopyData; + CM.Sim.CopyData(); }; CM.Sim.CopyData = function() { @@ -4910,9 +4907,9 @@ CM.Sim.CopyData = function() { CM.Sim.prestige = Game.prestige; // Buildings - for (var i in Game.Objects) { - var me = Game.Objects[i]; - var you = CM.Sim.Objects[i]; + for (let i of Object.keys(Game.Objects)) { + let me = Game.Objects[i]; + let you = CM.Sim.Objects[i]; if (you == undefined) { // New building! you = CM.Sim.Objects[i] = CM.Sim.InitialBuildingData(i); CM.Disp.CreateBotBarBuildingColumn(i); // Add new building to the bottom bar @@ -4926,9 +4923,9 @@ CM.Sim.CopyData = function() { } // Upgrades - for (var i in Game.Upgrades) { - var me = Game.Upgrades[i]; - var you = CM.Sim.Upgrades[i]; + for (let i of Object.keys(Game.Upgrades)) { + let me = Game.Upgrades[i]; + let you = CM.Sim.Upgrades[i]; if (you == undefined) { you = CM.Sim.Upgrades[i] = CM.Sim.InitUpgrade(i); } @@ -4936,9 +4933,9 @@ CM.Sim.CopyData = function() { } // Achievements - for (var i in Game.Achievements) { - var me = Game.Achievements[i]; - var you = CM.Sim.Achievements[i]; + for (let i of Object.keys(Game.Achievements)) { + let me = Game.Achievements[i]; + let you = CM.Sim.Achievements[i]; if (you == undefined) { you = CM.Sim.Achievements[i] = CM.Sim.InitAchievement(i); } @@ -4956,12 +4953,12 @@ CM.Sim.CalculateGains = function() { var mult = 1; // Include minigame effects var effs={}; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { // TODO Store minigames and effects in Cache // Include possibility of new/modded building and new/modded minigames if (CM.Sim.Objects[i].minigameLoaded && CM.Sim.Objects[i].minigame.effs) { var myEffs = CM.Sim.Objects[i].minigame.effs; - for (var ii in myEffs) { + for (let ii in myEffs) { if (effs[ii]) effs[ii]*=myEffs[ii]; else effs[ii]=myEffs[ii]; } @@ -4977,8 +4974,8 @@ CM.Sim.CalculateGains = function() { // TODO: Make function call cached function where Game.Has is replaced with CM.Has // Related to valentine cookies - for (var i in Game.cookieUpgrades) { - var me = Game.cookieUpgrades[i]; + for (let i of Object.keys(Game.cookieUpgrades)) { + let me = Game.cookieUpgrades[i]; if (CM.Sim.Has(me.name)) { mult *= (1 + (typeof(me.power) == 'function' ? me.power(me) : me.power) * 0.01); } @@ -5004,28 +5001,28 @@ CM.Sim.CalculateGains = function() { // Check effect of chosen Gods var buildMult = 1; if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('asceticism'); + let godLvl = CM.Sim.hasGod('asceticism'); if (godLvl == 1) mult *= 1.15; else if (godLvl == 2) mult *= 1.1; else if (godLvl == 3) mult *= 1.05; // TODO: What does DateAges do? - var godLvl = CM.Sim.hasGod('ages'); + godLvl = CM.Sim.hasGod('ages'); if (godLvl == 1) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 3)) * Math.PI * 2); else if (godLvl == 2) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 12)) * Math.PI*2); else if (godLvl == 3) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 24)) * Math.PI*2); - var godLvl = CM.Sim.hasGod('decadence'); + godLvl = CM.Sim.hasGod('decadence'); if (godLvl == 1) buildMult *= 0.93; else if (godLvl == 2) buildMult *= 0.95; else if (godLvl == 3) buildMult *= 0.98; - var godLvl = CM.Sim.hasGod('industry'); + godLvl = CM.Sim.hasGod('industry'); if (godLvl == 1) buildMult *= 1.1; else if (godLvl == 2) buildMult *= 1.06; else if (godLvl == 3) buildMult *= 1.03; - var godLvl = CM.Sim.hasGod('labor'); + godLvl = CM.Sim.hasGod('labor'); if (godLvl == 1) buildMult *= 0.97; else if (godLvl == 2) buildMult *= 0.98; else if (godLvl == 3) buildMult *= 0.99; @@ -5039,7 +5036,7 @@ CM.Sim.CalculateGains = function() { //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('mother'); + let godLvl = CM.Sim.hasGod('mother'); if (godLvl == 1) milkMult *= 1.1; else if (godLvl == 2) milkMult *= 1.05; else if (godLvl == 3) milkMult *= 1.03; @@ -5065,8 +5062,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Kitten angels')) catMult *= (1 + milkProgress * 0.1 * milkMult); if (CM.Sim.Has('Fortune #103')) catMult *= (1 + milkProgress * 0.05 * milkMult); - for (var i in CM.Sim.Objects) { - var me = CM.Sim.Objects[i]; + for (let i of Object.keys(CM.Sim.Objects)) { + let me = CM.Sim.Objects[i]; var storedCps = (typeof(me.cps) == 'function' ? me.cps(me) : me.cps); if (Game.ascensionMode != 1) storedCps *= (1 + me.level * 0.01) * buildMult; if (me.name == "Grandma" && CM.Sim.Has('Milkhelp® lactose intolerance relief tablets')) storedCps *= 1 + 0.05 * milkProgress * milkMult; @@ -5106,7 +5103,7 @@ CM.Sim.CalculateGains = function() { mult *= 1 + CM.Sim.auraMult('Radiant Appetite'); var rawCookiesPs = CM.Sim.cookiesPs * mult; - for (var i in Game.CpsAchievements) { + for (let i of Object.keys(Game.CpsAchievements)) { if (rawCookiesPs >= Game.CpsAchievements[i].threshold) CM.Sim.Win(Game.CpsAchievements[i].name); } @@ -5114,7 +5111,7 @@ CM.Sim.CalculateGains = function() { var n = Game.shimmerTypes.golden.n; var auraMult = CM.Sim.auraMult('Dragon\'s Fortune'); - for (var i = 0; i < n; i++){ + for (let i = 0; i < n; i++){ mult *= 1 + auraMult * 1.23; } @@ -5130,7 +5127,7 @@ CM.Sim.CalculateGains = function() { var goldenSwitchMult = 1.5; if (CM.Sim.Has('Residual luck')) { var upgrades = Game.goldenCookieUpgrades; - for (var i in upgrades) { + for (let i of Object.keys(upgrades)) { if (CM.Sim.Has(upgrades[i])) goldenSwitchMult += 0.1; } } @@ -5156,7 +5153,7 @@ CM.Sim.CalculateGains = function() { CM.Sim.CheckOtherAchiev = function() { var grandmas = 0; - for (var i in Game.GrandmaSynergies) { + for (let i of Object.keys(Game.GrandmaSynergies)) { if (CM.Sim.Has(Game.GrandmaSynergies[i])) grandmas++; } if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder'); @@ -5166,7 +5163,7 @@ CM.Sim.CheckOtherAchiev = function() { var mathematician = 1; var base10 = 1; var minAmount = 100000; - for (var i in CM.Sim.Objects) { + for (let i of Object.keys(CM.Sim.Objects)) { buildingsOwned += CM.Sim.Objects[i].amount; minAmount = Math.min(CM.Sim.Objects[i].amount, minAmount); if (!CM.Sim.HasAchiev('Mathematician')) { @@ -5211,13 +5208,13 @@ CM.Sim.CheckOtherAchiev = function() { if (CM.Sim.Objects.Cursor.amount + CM.Sim.Objects.Grandma.amount >= 777) CM.Sim.Win('The elder scrolls'); var hasAllHalloCook = true; - for (var i in CM.Data.HalloCookies) { + for (let i of Object.keys(CM.Data.HalloCookies)) { if (!CM.Sim.Has(CM.Data.HalloCookies[i])) hasAllHalloCook = false; } if (hasAllHalloCook) CM.Sim.Win('Spooky cookies'); var hasAllChristCook = true; - for (var i in CM.Data.ChristCookies) { + for (let i of Object.keys(CM.Data.ChristCookies)) { if (!CM.Sim.Has(CM.Data.ChristCookies[i])) hasAllChristCook = false; } if (hasAllChristCook) CM.Sim.Win('Let it snow'); @@ -5225,7 +5222,7 @@ CM.Sim.CheckOtherAchiev = function() { if (CM.Sim.Has('Fortune cookies')) { var list = Game.Tiers.fortune.upgrades; var fortunes = 0; - for (var i in list) { + for (let i of Object.keys(list)) { if (CM.Sim.Has(list[i].name)) fortunes++; } if (fortunes >= list.length) CM.Sim.Win('O Fortuna'); @@ -5234,9 +5231,9 @@ CM.Sim.CheckOtherAchiev = function() { CM.Sim.BuyBuildings = function(amount, target) { CM.Cache[target] = []; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { CM.Sim.CopyData(); - var me = CM.Sim.Objects[i]; + let me = CM.Sim.Objects[i]; me.amount += amount; if (i == 'Cursor') { @@ -5279,10 +5276,10 @@ CM.Sim.BuyBuildings = function(amount, target) { CM.Sim.BuyUpgrades = function() { CM.Cache.Upgrades = []; - for (var i in Game.Upgrades) { + for (let i of Object.keys(Game.Upgrades)) { if (Game.Upgrades[i].pool == 'toggle' || (Game.Upgrades[i].bought == 0 && Game.Upgrades[i].unlocked && Game.Upgrades[i].pool != 'prestige')) { CM.Sim.CopyData(); - var me = CM.Sim.Upgrades[i]; + let me = CM.Sim.Upgrades[i]; me.bought = 1; if (Game.CountsAsUpgradeOwned(Game.Upgrades[i].pool)) CM.Sim.UpgradesOwned++; @@ -5335,20 +5332,22 @@ CM.Sim.CalculateChangeAura = function(aura) { else CM.Sim.dragonAura = aura; // Sell highest building but only if aura is different + let price = 0; if (CM.Sim.dragonAura != CM.Cache.dragonAura || CM.Sim.dragonAura2 != CM.Cache.dragonAura2) { - for (var i = Game.ObjectsById.length; i > -1, --i;) { + for (let i = Game.ObjectsById.length; i > -1, --i;) { if (Game.ObjectsById[i].amount > 0) { var highestBuilding = CM.Sim.Objects[Game.ObjectsById[i].name].name; CM.Sim.Objects[highestBuilding].amount -=1; CM.Sim.buildingsOwned -= 1; + price = CM.Sim.Objects[highestBuilding].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[highestBuilding].amount - 1 -CM.Sim.Objects[highestBuilding].free)); + price = Game.modifyBuildingPrice(CM.Sim.Objects[highestBuilding], price); + price = Math.ceil(price); break; } } // This calculates price of highest building - var price = CM.Sim.Objects[highestBuilding].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[highestBuilding].amount - 1 -CM.Sim.Objects[highestBuilding].free)); - price = Game.modifyBuildingPrice(CM.Sim.Objects[highestBuilding], price); - price = Math.ceil(price); - } else var price = 0; + + } var lastAchievementsOwned = CM.Sim.AchievementsOwned; CM.Sim.CalculateGains(); @@ -5456,7 +5455,7 @@ CM.Sim.modifyBuildingPrice = function(building,price) { if (building.fortune && CM.Sim.Has(building.fortune.name)) price *= 0.93; price *= CM.Sim.eff('buildingCost'); if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('creation'); + let godLvl = CM.Sim.hasGod('creation'); if (godLvl == 1) price *= 0.93; else if (godLvl == 2) price *= 0.95; else if (godLvl == 3) price *= 0.98; @@ -5480,7 +5479,7 @@ CM.Sim.SellBuildingsForChoEgg = function() { CM.Sim.dragonAura = 5; CM.Sim.dragonAura2 = 18; // Sacrifice highest buildings for the aura switch - for (var i = 0; i < buildingsToSacrifice; ++i) { + for (let i = 0; i < buildingsToSacrifice; ++i) { var highestBuilding = 0; for (var j in CM.Sim.Objects) { if (CM.Sim.Objects[j].amount > 0) { @@ -5492,8 +5491,8 @@ CM.Sim.SellBuildingsForChoEgg = function() { } // Get money made by selling all remaining buildings - for (var i in CM.Sim.Objects) { - var me = CM.Sim.Objects[i]; + for (let i of Object.keys(CM.Sim.Objects)) { + let me = CM.Sim.Objects[i]; sellTotal += CM.Sim.BuildingSell(Game.Objects[me.name], Game.Objects[i].basePrice, me.amount, Game.Objects[i].free, me.amount); } @@ -5530,7 +5529,7 @@ CM.Sim.mouseCps = function() { if (CM.Sim.Has('Octillion fingers')) add *= 20; if (CM.Sim.Has('Nonillion fingers')) add *= 20; var num=0; - for (var i in CM.Sim.Objects) {num+=CM.Sim.Objects[i].amount;} + for (let i of Object.keys(CM.Sim.Objects)) {num+=CM.Sim.Objects[i].amount;} num -= CM.Sim.Objects.Cursor.amount; add = add * num; @@ -5574,7 +5573,7 @@ CM.Sim.mouseCps = function() { } } - for (var i in Game.buffs) + for (let i of Object.keys(Game.buffs)) { if (typeof Game.buffs[i].multClick != 'undefined') mult*=Game.buffs[i].multClick; } diff --git a/src/Cache.js b/src/Cache.js index e86c8bf..9f42b2f 100644 --- a/src/Cache.js +++ b/src/Cache.js @@ -102,7 +102,7 @@ CM.Cache.CacheStats = function() { CM.Cache.LuckyWrathRewardFrenzy = wrathMult * (CM.Cache.LuckyFrenzy * 0.15) + 13; CM.Cache.Conjure = CM.Cache.Lucky * 2; CM.Cache.ConjureReward = CM.Cache.Conjure * 0.15; - + CM.Cache.Edifice = 0; var max = 0; var n = 0; @@ -305,7 +305,7 @@ CM.Cache.CacheDragonCost = function() { var target = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1]; var amount = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1]; if (target != "i") { - target = target.replaceAll("\'", ""); + target = target.replaceAll("'", ""); if (Game.Objects[target].amount < amount) { CM.Cache.CostDragonUpgrade = "Not enough buildings to sell"; } @@ -347,7 +347,7 @@ CM.Cache.CacheDragonCost = function() { CM.Cache.lastDragonLevel = Game.dragonLevel; } }; - + /******** * Section: UNSORTED */ @@ -671,4 +671,3 @@ CM.Cache.HadBuildAura = false; CM.Cache.RealCookiesEarned = -1; CM.Cache.goldenShimmersByID = {}; CM.Cache.spawnedGoldenShimmer = 0; - diff --git a/src/Data.js b/src/Data.js index 450620a..344feb2 100644 --- a/src/Data.js +++ b/src/Data.js @@ -154,7 +154,7 @@ CM.ConfigData.GCNotification = {type: 'bool', group: 'NotificationGC', label: [' CM.ConfigData.GCFlash = {type: 'bool', group: 'NotificationGC', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie', toggle: true}; CM.ConfigData.GCSound = {type: 'bool', group: 'NotificationGC', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Golden Cookie', toggle: true}; CM.ConfigData.GCVolume = {type: 'vol', group: 'NotificationGC', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.GCVolume.label[i] = i + '%'; } CM.ConfigData.GCSoundURL = {type: 'url', group: 'NotificationGC', label: 'Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; @@ -162,7 +162,7 @@ CM.ConfigData.FortuneNotification = {type: 'bool', group: 'NotificationFC', labe CM.ConfigData.FortuneFlash = {type: 'bool', group: 'NotificationFC', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneSound = {type: 'bool', group: 'NotificationFC', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneVolume = {type: 'vol', group: 'NotificationFC', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.FortuneVolume.label[i] = i + '%'; } CM.ConfigData.FortuneSoundURL = {type: 'url', group: 'NotificationFC', label: 'Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; @@ -170,14 +170,14 @@ CM.ConfigData.SeaNotification = {type: 'bool', group: 'NotificationSea', label: CM.ConfigData.SeaFlash = {type: 'bool', group: 'NotificationSea', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; CM.ConfigData.SeaSound = {type: 'bool', group: 'NotificationSea', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; CM.ConfigData.SeaVolume = {type: 'vol', group: 'NotificationSea', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.SeaVolume.label[i] = i + '%'; } CM.ConfigData.SeaSoundURL = {type: 'url', group: 'NotificationSea', label: 'Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; CM.ConfigData.GardFlash = {type: 'bool', group: 'NotificationGard', label: ['Garden Tick Flash OFF', 'Flash ON'], desc: 'Flash screen on Garden Tick', toggle: true}; CM.ConfigData.GardSound = {type: 'bool', group: 'NotificationGard', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound on Garden Tick', toggle: true}; CM.ConfigData.GardVolume = {type: 'vol', group: 'NotificationGard', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.GardVolume.label[i] = i + '%'; } CM.ConfigData.GardSoundURL = {type: 'url', group: 'NotificationGard', label: 'Garden Tick Sound URL:', desc: 'URL of the sound to be played when the garden ticks'}; @@ -185,7 +185,7 @@ CM.ConfigData.MagicNotification = {type: 'bool', group: 'NotificationMagi', labe CM.ConfigData.MagicFlash = {type: 'bool', group: 'NotificationMagi', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when magic reaches maximum', toggle: true}; CM.ConfigData.MagicSound = {type: 'bool', group: 'NotificationMagi', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when magic reaches maximum', toggle: true}; CM.ConfigData.MagicVolume = {type: 'vol', group: 'NotificationMagi', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.MagicVolume.label[i] = i + '%'; } CM.ConfigData.MagicSoundURL = {type: 'url', group: 'NotificationMagi', label: 'Sound URL:', desc: 'URL of the sound to be played when magic reaches maxium'}; @@ -193,7 +193,7 @@ CM.ConfigData.WrinklerNotification = {type: 'bool', group: 'NotificationWrink', CM.ConfigData.WrinklerFlash = {type: 'bool', group: 'NotificationWrink', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when a Wrinkler appears', toggle: true}; CM.ConfigData.WrinklerSound = {type: 'bool', group: 'NotificationWrink', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when a Wrinkler appears', toggle: true}; CM.ConfigData.WrinklerVolume = {type: 'vol', group: 'NotificationWrink', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.WrinklerVolume.label[i] = i + '%'; } CM.ConfigData.WrinklerSoundURL = {type: 'url', group: 'NotificationWrink', label: 'Sound URL:', desc: 'URL of the sound to be played when a Wrinkler appears'}; @@ -201,7 +201,7 @@ CM.ConfigData.WrinklerMaxNotification = {type: 'bool', group: 'NotificationWrink CM.ConfigData.WrinklerMaxFlash = {type: 'bool', group: 'NotificationWrinkMax', label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen when the maximum amount of Wrinklers has appeared', toggle: true}; CM.ConfigData.WrinklerMaxSound = {type: 'bool', group: 'NotificationWrinkMax', label: ['Sound OFF', 'Sound ON'], desc: 'Play a sound when the maximum amount of Wrinklers has appeared', toggle: true}; CM.ConfigData.WrinklerMaxVolume = {type: 'vol', group: 'NotificationWrinkMax', label: [], desc: 'Volume'}; -for (var i = 0; i < 101; i++) { +for (let i = 0; i < 101; i++) { CM.ConfigData.WrinklerMaxVolume.label[i] = i + '%'; } CM.ConfigData.WrinklerMaxSoundURL = {type: 'url', group: 'NotificationWrinkMax', label: 'Sound URL:', desc: 'URL of the sound to be played when the maximum amount of Wrinklers has appeared'}; diff --git a/src/Disp.js b/src/Disp.js index 43e6659..a6c10cf 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -137,7 +137,7 @@ CM.Disp.FormatTime = function(time, longFormat) { var h = Math.floor(time % 86400 / 3600); var m = Math.floor(time % 3600 / 60); var s = Math.floor(time % 60); - var str = ''; + let str = ''; if (CM.Options.TimeFormat) { if (time > 3155760000) return 'XX:XX:XX:XX:XX'; str += (y < 10 ? '0' : '') + y + ':'; @@ -424,11 +424,11 @@ CM.Disp.CreateBotBarBuildingColumn = function(buildingName) { var pp = CM.Disp.BotBar.firstChild.firstChild.childNodes[2]; var time = CM.Disp.BotBar.firstChild.firstChild.childNodes[3]; - var i = buildingName; + let i = buildingName; var header = type.appendChild(document.createElement('td')); header.appendChild(document.createTextNode((i.indexOf(' ') != -1 ? i.substring(0, i.indexOf(' ')) : i) + ' (')); - var span = header.appendChild(document.createElement('span')); + let span = header.appendChild(document.createElement('span')); span.className = CM.Disp.colorTextPre + CM.Disp.colorBlue; header.appendChild(document.createTextNode(')')); @@ -488,7 +488,7 @@ CM.Disp.TimerBarCreateBar = function(id, name, bars) { timerBar.style.margin = '0px 10px'; timerBar.style.position = 'relative'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.width = '100%'; div.style.height = '10px'; div.style.margin = 'auto'; @@ -508,7 +508,7 @@ CM.Disp.TimerBarCreateBar = function(id, name, bars) { type.textContent = name; div.appendChild(type); - for (var i = 0; i < bars.length; i++) { + for (let i = 0; i < bars.length; i++) { var colorBar = document.createElement('span'); colorBar.id = bars[i].id; colorBar.style.display = 'inline-block'; @@ -696,11 +696,10 @@ CM.Disp.UpdateBotTimerBarPosition = function() { * And by changes in CM.Options.BuildColor, CM.Options.SortBuild & CM.ConfigData.BulkBuildColor */ CM.Disp.UpdateBuildings = function() { + let target = 'Objects'; + if (Game.buyBulk == 10 && CM.Options.BulkBuildColor == 1) target = 'Objects10'; + else if (Game.buyBulk == 100 && CM.Options.BulkBuildColor == 1) target = 'Objects100'; if (Game.buyMode == 1) { - var target = ''; - if (Game.buyBulk == 10 && CM.Options.BulkBuildColor == 1) target = 'Objects10'; - else if (Game.buyBulk == 100 && CM.Options.BulkBuildColor == 1) target = 'Objects100'; - else target = 'Objects'; if (CM.Options.BuildColor == 1) { for (let i of Object.keys(CM.Cache[target])) { l('productPrice' + Game.Objects[i].id).style.color = CM.Options.Colors[CM.Cache[target][i].color]; @@ -731,7 +730,7 @@ CM.Disp.UpdateBuildings = function() { // (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options) // This regulates sorting of buildings if (Game.buyMode == 1 && CM.Options.SortBuildings) { - var arr = Object.keys(CM.Cache[target]).map(k => + let arr = Object.keys(CM.Cache[target]).map(k => { var o = CM.Cache[target][k]; o.name = k; @@ -741,11 +740,11 @@ CM.Disp.UpdateBuildings = function() { arr.sort(function(a, b){ return (a.pp > b.pp ? 1 : (a.pp < b.pp ? -1 : 0)); }); - for (var x = 0; x < arr.length; x++) { + for (let x = 0; x < arr.length; x++) { Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } } else { - var arr = Object.keys(CM.Cache.Objects).map(k => + let arr = Object.keys(CM.Cache.Objects).map(k => { var o = CM.Cache.Objects[k]; o.name = k; @@ -753,7 +752,7 @@ CM.Disp.UpdateBuildings = function() { return o; }); arr.sort((a, b) => a.id - b.id); - for (var x = 0; x < arr.length; x++) { + for (let x = 0; x < arr.length; x++) { Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } } @@ -779,7 +778,7 @@ CM.Disp.UpdateUpgrades = function() { for (let i of Object.keys(Game.UpgradesInStore)) { var me = Game.UpgradesInStore[i]; var addedColor = false; - for (var j = 0; j < l('upgrade' + i).childNodes.length; j++) { + for (let j = 0; j < l('upgrade' + i).childNodes.length; j++) { if (l('upgrade' + i).childNodes[j].className.indexOf(CM.Disp.colorBackPre) != -1) { l('upgrade' + i).childNodes[j].className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; addedColor = true; @@ -787,7 +786,7 @@ CM.Disp.UpdateUpgrades = function() { } } if (!addedColor) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.width = '10px'; div.style.height = '10px'; div.className = CM.Disp.colorBackPre + CM.Cache.Upgrades[me.name].color; @@ -813,8 +812,8 @@ CM.Disp.UpdateUpgrades = function() { // Build array of pointers, sort by pp, set flex positions // This regulates sorting of upgrades - var arr = []; - for (var x = 0; x < Game.UpgradesInStore.length; x++){ + let arr = []; + for (let x = 0; x < Game.UpgradesInStore.length; x++){ var o = {}; o.name = Game.UpgradesInStore[x].name; o.price = Game.UpgradesInStore[x].basePrice; @@ -828,9 +827,12 @@ CM.Disp.UpdateUpgrades = function() { else { arr.sort((a, b) => a.price - b.price); } - - for (var x = 0; x < Game.UpgradesInStore.length; x++){ - l("upgrade" + x).style.order = arr.findIndex(e => e.name === Game.UpgradesInStore[x].name) + 1; + + let nameChecker = function(arr, upgrade) { + return arr.findIndex(e => e.name === upgrade.name); + }; + for (let x = 0; x < Game.UpgradesInStore.length; x++){ + l("upgrade" + x).style.order = nameChecker(arr, Game.UpgradesInStore[x]) + 1; } }; @@ -882,7 +884,7 @@ CM.Disp.CreateUpgradeBar = function() { CM.Disp.UpgradeBar.style.textAlign = 'center'; CM.Disp.UpgradeBar.style.fontWeight = 'bold'; CM.Disp.UpgradeBar.style.display = 'none'; - CM.Disp.UpgradeBar.style.zIndex = '21'; + CM.Disp.UpgradeBar.style.zIndex = '21'; CM.Disp.UpgradeBar.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); @@ -890,7 +892,7 @@ CM.Disp.CreateUpgradeBar = function() { CM.Disp.UpgradeBar.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML), 'store');}; var upgradeNumber = function(id, color) { - var span = document.createElement('span'); + let span = document.createElement('span'); span.id = id; span.className = CM.Disp.colorTextPre + color; span.style.width = '14.28571428571429%'; @@ -917,16 +919,16 @@ CM.Disp.CreateUpgradeBarLegend = function() { var legend = document.createElement('div'); legend.style.minWidth = '330px'; legend.style.marginBottom = '4px'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.className = 'name'; title.style.marginBottom = '4px'; title.textContent = 'Legend'; legend.appendChild(title); var legendLine = function(color, text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.verticalAlign = 'middle'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = CM.Disp.colorBackPre + color; span.style.display = 'inline-block'; span.style.height = '10px'; @@ -975,7 +977,7 @@ CM.Disp.CreateWhiteScreen = function() { */ CM.Disp.Flash = function(mode, config) { // The arguments check makes the sound not play upon initialization of the mod - if ((CM.Options[config] == 1 && mode == 3 && arguments.callee.caller.caller.caller.caller == null) || mode == 1) { + if ((CM.Options[config] == 1 && mode == 3 && CM.Disp.Flash.caller.caller.caller.caller == null) || mode == 1) { CM.Disp.WhiteScreen.style.opacity = '0.5'; if (mode == 3) { CM.Disp.WhiteScreen.style.display = 'inline'; @@ -1001,7 +1003,7 @@ CM.Disp.Flash = function(mode, config) { */ CM.Disp.PlaySound = function(url, sndConfig, volConfig) { // The arguments check makes the sound not play upon initialization of the mod - if (CM.Options[sndConfig] == 1 && arguments.callee.caller.caller.caller.caller == null) { + if (CM.Options[sndConfig] == 1 && CM.Disp.PlaySound.caller.caller.caller.caller == null) { var sound = new realAudio(url); sound.volume = (CM.Options[volConfig] / 100) * (Game.volume / 100); sound.play(); @@ -1017,7 +1019,7 @@ CM.Disp.PlaySound = function(url, sndConfig, volConfig) { */ CM.Disp.Notification = function(notifyConfig, title, message) { // The arguments check makes the sound not play upon initialization of the mod - if (CM.Options[notifyConfig] == 1 && document.visibilityState == 'hidden' && arguments.callee.caller.caller.caller.caller == null) { + if (CM.Options[notifyConfig] == 1 && document.visibilityState == 'hidden' && CM.Disp.Notification.caller.caller.caller.caller == null) { var CookieIcon = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; notification = new Notification(title, {body: message, badge: CookieIcon}); } @@ -1059,11 +1061,11 @@ CM.Disp.UpdateTitle = function() { document.title = CM.Cache.Title; } else if (CM.Options.Title == 1) { - var addFC = false; - var addSP = false; - var titleGC; - var titleFC; - var titleSP; + let addFC = false; + let addSP = false; + let titleGC; + let titleFC; + let titleSP; if (CM.Cache.spawnedGoldenShimmer) { if (CM.Cache.spawnedGoldenShimmer.wrath) titleGC = '[W ' + Math.ceil(CM.Cache.spawnedGoldenShimmer.life / Game.fps) + ']'; @@ -1088,15 +1090,15 @@ CM.Disp.UpdateTitle = function() { } // Remove previous timers and add current cookies - var str = CM.Cache.Title; + let str = CM.Cache.Title; if (str.charAt(0) == '[') { str = str.substring(str.lastIndexOf(']') + 1); } document.title = titleGC + (addFC ? titleFC : '') + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Options.Title == 2) { - var str = ''; - var spawn = false; + let str = ''; + let spawn = false; if (CM.Cache.spawnedGoldenShimmer) { spawn = true; if (CM.Cache.spawnedGoldenShimmer.wrath) str += '[W ' + Math.ceil(CM.Cache.spawnedGoldenShimmer.life / Game.fps) + ']'; @@ -1111,7 +1113,7 @@ CM.Disp.UpdateTitle = function() { spawn = true; } if (spawn) str += ' - '; - var title = 'Cookie Clicker'; + let title = 'Cookie Clicker'; if (Game.season == 'fools') title = 'Cookie Baker'; str += title; document.title = str; @@ -1135,7 +1137,7 @@ CM.Disp.CreateGCTimer = function(cookie) { GCTimer.style.zIndex = '10000000001'; GCTimer.style.textAlign = 'center'; GCTimer.style.lineHeight = '96px'; - GCTimer.style.fontFamily = '\"Kavoon\", Georgia, serif'; + GCTimer.style.fontFamily = '"Kavoon", Georgia, serif'; GCTimer.style.fontSize = '35px'; GCTimer.style.cursor = 'pointer'; GCTimer.style.display = 'block'; @@ -1183,7 +1185,7 @@ CM.Disp.CreateSimpleTooltip = function(placeholder, text, minWidth) { var desc = document.createElement('div'); desc.style.minWidth = minWidth; desc.style.marginBottom = '4px'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'left'; div.textContent = text; desc.appendChild(div); @@ -1198,10 +1200,9 @@ CM.Disp.CreateSimpleTooltip = function(placeholder, text, minWidth) { CM.Disp.ReplaceTooltipUpgrade = function() { CM.Disp.TooltipUpgradeBackup = []; for (let i of Object.keys(Game.UpgradesInStore)) { - var me = Game.UpgradesInStore[i]; if (l('upgrade' + i).onmouseover != null) { CM.Disp.TooltipUpgradeBackup[i] = l('upgrade' + i).onmouseover; - eval('l(\'upgrade\' + i).onmouseover = function() {if (!Game.mouseDown) {Game.setOnCrate(this); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip(\'u\', \'' + i + '\');}, \'store\'); Game.tooltip.wobble();}}'); + l('upgrade' + i).onmouseover = function() {if (!Game.mouseDown) {Game.setOnCrate(this); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip('u', `${i}`);}, 'store'); Game.tooltip.wobble();}}; } } }; @@ -1286,7 +1287,7 @@ CM.Disp.TooltipCreateTooltipBox = function() { * @returns {object} div An object containing the stylized header */ CM.Disp.TooltipCreateHeader = function(text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.fontWeight = 'bold'; div.className = CM.Disp.colorTextPre + CM.Disp.colorBlue; div.textContent = text; @@ -1301,7 +1302,7 @@ CM.Disp.TooltipCreateHeader = function(text) { */ CM.Disp.TooltipCreateCalculationSection = function(tooltip) { tooltip.appendChild(CM.Disp.TooltipCreateHeader('Bonus Income')); - var income = document.createElement('div'); + let income = document.createElement('div'); income.style.marginBottom = '4px'; income.style.color = 'white'; income.id = 'CMTooltipIncome'; @@ -1448,7 +1449,7 @@ CM.Disp.UpdateTooltipBuilding = function() { if (CM.Options.TooltipBuildUpgrade == 1 && Game.buyMode == 1) { l('CMTooltipIncome').textContent = Beautify(CM.Disp.TooltipBonusIncome, 2); - var increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); + let increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)'; } @@ -1465,22 +1466,19 @@ CM.Disp.UpdateTooltipBuilding = function() { } // Add "production left till next achievement"-bar + l('CMTooltipProductionHeader').style.display = "none"; + l('CMTooltipTime').style.marginBottom = '0px'; for (let i of Object.keys(Game.Objects[CM.Disp.tooltipName].productionAchievs)) { if (!CM.Sim.HasAchiev(Game.Objects[CM.Disp.tooltipName].productionAchievs[i].achiev.name)) { - var nextProductionAchiev = Game.Objects[CM.Disp.tooltipName].productionAchievs[i]; + let nextProductionAchiev = Game.Objects[CM.Disp.tooltipName].productionAchievs[i]; + l('CMTooltipTime').style.marginBottom = '4px'; + l('CMTooltipProductionHeader').style.display = ""; + l('CMTooltipProduction').className = "ProdAchievement" + CM.Disp.tooltipName; + l('CMTooltipProduction').textContent = Beautify(nextProductionAchiev.pow - CM.Sim.Objects[CM.Disp.tooltipName].totalCookies, 15); + l('CMTooltipProduction').style.color = "white"; break; } } - if (typeof nextProductionAchiev != "undefined") { - l('CMTooltipTime').style.marginBottom = '4px'; - l('CMTooltipProductionHeader').style.display = ""; - l('CMTooltipProduction').className = "ProdAchievement" + CM.Disp.tooltipName; - l('CMTooltipProduction').textContent = Beautify(nextProductionAchiev.pow - CM.Sim.Objects[CM.Disp.tooltipName].totalCookies, 15); - l('CMTooltipProduction').style.color = "white"; - } else { - l('CMTooltipProductionHeader').style.display = "none"; - l('CMTooltipTime').style.marginBottom = '0px'; - } } else l('CMTooltipArea').style.display = "none"; }; @@ -1499,7 +1497,7 @@ CM.Disp.UpdateTooltipUpgrade = function() { if (CM.Options.TooltipBuildUpgrade == 1) { l('CMTooltipIncome').textContent = Beautify(CM.Disp.TooltipBonusIncome, 2); - var increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); + let increase = Math.round(CM.Disp.TooltipBonusIncome / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { l('CMTooltipIncome').textContent += ' (' + (increase / 100) + '% of income)'; } @@ -1654,13 +1652,14 @@ CM.Disp.UpdateTooltipGardenPlots = function() { * It adds to the additional information to l('CMTooltipArea') */ CM.Disp.UpdateTooltipHarvestAll = function() { - var minigame = Game.Objects.Farm.minigame; + let minigame = Game.Objects.Farm.minigame; if (CM.Options.TooltipLump) { l('CMTooltipBorder').appendChild(CM.Disp.TooltipCreateHeader('Cookies gained from harvesting:')); - var totalGain = 0; - if (Game.keys[16] && Game.keys[17]) var mortal = 1; - for (var y=0;y<6;y++) { - for (var x=0;x<6;x++) { + let totalGain = 0; + let mortal = 0; + if (Game.keys[16] && Game.keys[17]) mortal = 1; + for (let y=0;y<6;y++) { + for (let x=0; x<6; x++) { if (minigame.plot[y][x][0]>=1) { let tile = minigame.plot[y][x]; let me = minigame.plantsById[tile[0] - 1]; @@ -1819,7 +1818,7 @@ CM.Disp.CheckWrinklerTooltip = function() { var wrinkler = document.createElement('div'); wrinkler.style.minWidth = '120px'; wrinkler.style.marginBottom = '4px'; - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'center'; div.id = 'CMTooltipWrinkler'; wrinkler.appendChild(div); @@ -1881,12 +1880,12 @@ CM.Disp.AddAuraInfo = function(aura) { l('dragonAuraInfo').style.minHeight = "60px"; l('dragonAuraInfo').style.margin = "8px"; l('dragonAuraInfo').appendChild(document.createElement("div")).className = "line"; - var div = document.createElement("div"); + let div = document.createElement("div"); div.style.minWidth = "200px"; div.style.textAlign = "center"; div.textContent = "Picking this aura will change CPS by " + bonusCPS + " (" + bonusCPSPercentage + "% of current CPS)."; l('dragonAuraInfo').appendChild(div); - var div2 = document.createElement("div"); + let div2 = document.createElement("div"); div2.style.minWidth = "200px"; div2.style.textAlign = "center"; div2.textContent = "It will take " + timeToRecover + " to recover the cost."; @@ -1918,8 +1917,8 @@ CM.Disp.AddDragonLevelUpTooltip = function() { * It is called by Game.UpdateMenu() */ CM.Disp.AddMenu = function() { - var title = function() { - var div = document.createElement('div'); + let title = function() { + let div = document.createElement('div'); div.className = 'title ' + CM.Disp.colorTextPre + CM.Disp.colorBlue; div.textContent = 'Cookie Monster Goodies'; return div; @@ -2000,13 +1999,13 @@ CM.Disp.AddMenuPref = function(title) { * @returns {object} div The header object */ CM.Disp.CreatePrefHeader = function(config, text) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'title'; div.style.opacity = '0.7'; div.style.fontSize = '17px'; div.appendChild(document.createTextNode(text + ' ')); - var span = document.createElement('span'); // Creates the +/- button + let span = document.createElement('span'); // Creates the +/- button span.style.cursor = 'pointer'; span.style.display = 'inline-block'; span.style.height = '14px'; @@ -2031,9 +2030,9 @@ CM.Disp.CreatePrefHeader = function(config, text) { */ CM.Disp.CreatePrefOption = function(config) { if (CM.ConfigData[config].type == "bool") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var a = document.createElement('a'); + let a = document.createElement('a'); if (CM.ConfigData[config].toggle && CM.Options[config] == 0) { a.className = 'option off'; } @@ -2044,21 +2043,21 @@ CM.Disp.CreatePrefOption = function(config) { a.onclick = function() {CM.Config.ToggleConfig(config);}; a.textContent = CM.ConfigData[config].label[CM.Options[config]]; div.appendChild(a); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; } else if (CM.ConfigData[config].type == "vol") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; var volume = document.createElement('div'); volume.className = 'sliderBox'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.style.float = "left"; title.innerHTML = CM.ConfigData[config].desc; volume.appendChild(title); - var percent = title = document.createElement('div'); + var percent = document.createElement('div'); percent.id = "slider" + config + "right"; percent.style.float = "right"; percent.innerHTML = CM.Options[config] + "%"; @@ -2079,13 +2078,13 @@ CM.Disp.CreatePrefOption = function(config) { return div; } else if (CM.ConfigData[config].type == "url") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = 'option'; span.textContent = CM.ConfigData[config].label + ' '; div.appendChild(span); - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.ConfigPrefix + config; input.className = 'option'; input.type = 'text'; @@ -2094,34 +2093,34 @@ CM.Disp.CreatePrefOption = function(config) { input.style.width = '300px'; div.appendChild(input); div.appendChild(document.createTextNode(' ')); - var inputPrompt = document.createElement('input'); + let inputPrompt = document.createElement('input'); inputPrompt.id = CM.ConfigPrefix + config + 'Prompt'; inputPrompt.className = 'option'; inputPrompt.type = 'text'; inputPrompt.setAttribute('value', CM.Options[config]); - var a = document.createElement('a'); + let a = document.createElement('a'); a.className = 'option'; a.onclick = function() {Game.Prompt(inputPrompt.outerHTML, [['Save', 'CM.Options[\'' + config + '\'] = l(CM.ConfigPrefix + \'' + config + '\' + \'Prompt\').value; CM.Config.SaveConfig(); Game.ClosePrompt(); Game.UpdateMenu();'], 'Cancel']);}; a.textContent = 'Edit'; div.appendChild(a); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; } else if (CM.ConfigData[config].type == "color") { - var div = document.createElement('div'); - for (var i = 0; i < CM.Disp.colors.length; i++) { - var innerDiv = document.createElement('div'); + let div = document.createElement('div'); + for (let i = 0; i < CM.Disp.colors.length; i++) { + let innerDiv = document.createElement('div'); innerDiv.className = 'listing'; - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.Disp.colors[i]; input.style.width = '65px'; input.setAttribute('value', CM.Options.Colors[CM.Disp.colors[i]]); innerDiv.appendChild(input); let change = function() {CM.Options.Colors[this.targetElement.id] = this.toHEXString(); CM.Disp.UpdateColors(); CM.Config.SaveConfig(); Game.UpdateMenu();}; - let picker = new JSColor(input, {hash: true, position: "right", onInput: change}); - var label = document.createElement('label'); + let = new JSColor(input, {hash: true, position: "right", onInput: change}); + let label = document.createElement('label'); label.textContent = CM.ConfigData.Colors.desc[CM.Disp.colors[i]]; innerDiv.appendChild(label); div.appendChild(innerDiv); @@ -2129,13 +2128,13 @@ CM.Disp.CreatePrefOption = function(config) { return div; } else if (CM.ConfigData[config].type == "numscale") { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; - var span = document.createElement('span'); + let span = document.createElement('span'); span.className = 'option'; span.textContent = CM.ConfigData[config].label + ' '; div.appendChild(span); - var input = document.createElement('input'); + let input = document.createElement('input'); input.id = CM.ConfigPrefix + config; input.className = 'option'; input.type = 'number'; @@ -2143,13 +2142,13 @@ CM.Disp.CreatePrefOption = function(config) { input.min = CM.ConfigData[config].min; input.max = CM.ConfigData[config].max; input.oninput = function() {if (this.value > this.max) console.log("TEST"); - CM.Options[config] = this.value; - CM.Config.SaveConfig(); - CM.Disp.RefreshScale(); - }; + CM.Options[config] = this.value; + CM.Config.SaveConfig(); + CM.Disp.RefreshScale(); + }; div.appendChild(input); div.appendChild(document.createTextNode(' ')); - var label = document.createElement('label'); + let label = document.createElement('label'); label.textContent = CM.ConfigData[config].desc; div.appendChild(label); return div; @@ -2184,14 +2183,14 @@ CM.Disp.RefreshScale = function() { * The function is therefore called by a change in CM.Options.Colors */ CM.Disp.UpdateColors = function() { - var str = ''; - for (var i = 0; i < CM.Disp.colors.length; i++) { + let str = ''; + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorTextPre + CM.Disp.colors[i] + ' { color: ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } - for (var i = 0; i < CM.Disp.colors.length; i++) { + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorBackPre + CM.Disp.colors[i] + ' { background-color: ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } - for (var i = 0; i < CM.Disp.colors.length; i++) { + for (let i = 0; i < CM.Disp.colors.length; i++) { str += '.' + CM.Disp.colorBorderPre + CM.Disp.colors[i] + ' { border: 1px solid ' + CM.Options.Colors[CM.Disp.colors[i]] + '; }\n'; } CM.Disp.Css.textContent = str; @@ -2224,7 +2223,7 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(CM.Disp.CreateStatsHeader('Spells', 'Spells')); if (CM.Options.Header.Spells) { stats.appendChild(CM.Disp.CreateStatsSpellsSection()); - } + } stats.appendChild(CM.Disp.CreateStatsHeader('Prestige', 'Prestige')); if (CM.Options.Header.Prestige) { @@ -2360,14 +2359,14 @@ CM.Disp.AddMenuStats = function(title) { * @returns {object} div The header object */ CM.Disp.CreateStatsHeader = function(text, config) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; div.style.padding = '5px 16px'; div.style.opacity = '0.7'; div.style.fontSize = '17px'; - div.style.fontFamily = '\"Kavoon\", Georgia, serif'; + div.style.fontFamily = '"Kavoon", Georgia, serif'; div.appendChild(document.createTextNode(text + ' ')); - var span = document.createElement('span'); + let span = document.createElement('span'); span.style.cursor = 'pointer'; span.style.display = 'inline-block'; span.style.height = '14px'; @@ -2394,7 +2393,7 @@ CM.Disp.CreateStatsHeader = function(text, config) { * @returns {object} div The option object */ CM.Disp.CreateStatsListing = function(type, name, text, placeholder) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.className = 'listing'; var listingName = document.createElement('b'); @@ -2433,20 +2432,20 @@ CM.Disp.CreateStatsListing = function(type, name, text, placeholder) { CM.Disp.CreateStatsMissDisp = function(theMissDisp) { var frag = document.createDocumentFragment(); frag.appendChild(document.createTextNode(theMissDisp.length + ' ')); - var span = document.createElement('span'); + let span = document.createElement('span'); span.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); var missing = document.createElement('div'); missing.style.minWidth = '140px'; missing.style.marginBottom = '4px'; - var title = document.createElement('div'); + let title = document.createElement('div'); title.className = 'name'; title.style.marginBottom = '4px'; title.style.textAlign = 'center'; title.textContent = 'Missing'; missing.appendChild(title); for (let i of Object.keys(theMissDisp)) { - var div = document.createElement('div'); + let div = document.createElement('div'); div.style.textAlign = 'center'; div.appendChild(document.createTextNode(theMissDisp[i])); missing.appendChild(div); @@ -2492,7 +2491,7 @@ CM.Disp.CreateStatsLuckySection = function() { luckyReqSmall.textContent = ' (' + luckyTime + ')'; luckyReqFrag.appendChild(luckyReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Cookies Required', luckyReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Cookies Required', luckyReqFrag, goldCookTooltip)); var luckyColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.LuckyFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; @@ -2508,7 +2507,7 @@ CM.Disp.CreateStatsLuckySection = function() { luckyReqFrenSmall.textContent = ' (' + luckyTimeFrenzy + ')'; luckyReqFrenFrag.appendChild(luckyReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Cookies Required (Frenzy)', luckyReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Cookies Required (Frenzy)', luckyReqFrenFrag, goldCookTooltip)); var luckySplit = CM.Cache.LuckyReward != CM.Cache.LuckyWrathReward; @@ -2516,20 +2515,20 @@ CM.Disp.CreateStatsLuckySection = function() { luckyRewardMaxSpan.style.fontWeight = 'bold'; luckyRewardMaxSpan.className = CM.Disp.colorTextPre + CM.Cache.LuckyReward; luckyRewardMaxSpan.textContent = Beautify(CM.Cache.LuckyReward) + (luckySplit ? (' / ' + Beautify(CM.Cache.LuckyWrathReward)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardMaxSpan, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (MAX)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardMaxSpan, goldCookTooltip)); var luckyRewardFrenzyMaxSpan = document.createElement('span'); luckyRewardFrenzyMaxSpan.style.fontWeight = 'bold'; luckyRewardFrenzyMaxSpan.className = CM.Disp.colorTextPre + luckyRewardFrenzyMaxSpan; luckyRewardFrenzyMaxSpan.textContent = Beautify(CM.Cache.LuckyRewardFrenzy) + (luckySplit ? (' / ' + Beautify(CM.Cache.LuckyWrathRewardFrenzy)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardFrenzyMaxSpan , goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (MAX) (Frenzy)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyRewardFrenzyMaxSpan , goldCookTooltip)); var luckyCurBase = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * CM.Cache.DragonsFortuneMultAdjustment * 60 * 15) + 13; var luckyCurSpan = document.createElement('span'); luckyCurSpan.style.fontWeight = 'bold'; luckyCurSpan.className = CM.Disp.colorTextPre + luckyCurSpan; luckyCurSpan.textContent = Beautify(CM.Cache.GoldenCookiesMult * luckyCurBase) + (luckySplit ? (' / ' + Beautify(CM.Cache.WrathCookiesMult * luckyCurBase)) : ''); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Lucky!\" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyCurSpan, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Lucky!" Reward (CUR)' + (luckySplit ? ' (Golden / Wrath)' : ''), luckyCurSpan, goldCookTooltip)); return section; }; @@ -2557,7 +2556,7 @@ CM.Disp.CreateStatsChainSection = function() { chainReqSmall.textContent = ' (' + chainTime + ')'; chainReqFrag.appendChild(chainReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required', chainReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required', chainReqFrag, goldCookTooltip)); var chainWrathColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainWrathTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainWrath) ? CM.Disp.FormatTime((CM.Cache.ChainWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -2572,7 +2571,7 @@ CM.Disp.CreateStatsChainSection = function() { chainWrathReqSmall.textContent = ' (' + chainWrathTime + ')'; chainWrathReqFrag.appendChild(chainWrathReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Wrath)', chainWrathReqFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Wrath)', chainWrathReqFrag, goldCookTooltip)); var chainColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzy) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzy - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -2587,7 +2586,7 @@ CM.Disp.CreateStatsChainSection = function() { chainReqFrenSmall.textContent = ' (' + chainTimeFrenzy + ')'; chainReqFrenFrag.appendChild(chainReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Frenzy)', chainReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Frenzy)', chainReqFrenFrag, goldCookTooltip)); var chainWrathColorFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.colorRed : CM.Disp.colorGreen; var chainWrathTimeFrenzy = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.ChainFrenzyWrath) ? CM.Disp.FormatTime((CM.Cache.ChainFrenzyWrath - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; @@ -2602,17 +2601,17 @@ CM.Disp.CreateStatsChainSection = function() { chainWrathReqFrenSmall.textContent = ' (' + chainWrathTimeFrenzy + ')'; chainWrathReqFrenFrag.appendChild(chainWrathReqFrenSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag, goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Cookies Required (Frenzy) (Wrath)', chainWrathReqFrenFrag, goldCookTooltip)); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(CM.Cache.ChainReward) + ' / ' + Beautify(CM.Cache.ChainWrathReward)), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (MAX) (Golden / Wrath)', document.createTextNode(Beautify(CM.Cache.ChainReward) + ' / ' + Beautify(CM.Cache.ChainWrathReward)), goldCookTooltip)); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode((Beautify(CM.Cache.ChainFrenzyReward) + ' / ' + Beautify(CM.Cache.ChainFrenzyWrathReward))), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (MAX) (Frenzy) (Golden / Wrath)', document.createTextNode((Beautify(CM.Cache.ChainFrenzyReward) + ' / ' + Beautify(CM.Cache.ChainFrenzyWrathReward))), goldCookTooltip)); // TODO: Place MaxChainMoni function into CM.Cache.RemakeChain and create global variables to store it var chainCurMax = Math.min(CM.Cache.NoGoldSwitchCookiesPS * CM.Cache.DragonsFortuneMultAdjustment * 60 * 60 * 6, (Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.5); var chainCur = CM.Cache.MaxChainMoni(7, chainCurMax, CM.Cache.GoldenCookiesMult); var chainCurWrath = CM.Cache.MaxChainMoni(6, chainCurMax, CM.Cache.WrathCookiesMult); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Chain\" Reward (CUR) (Golden / Wrath)', document.createTextNode((Beautify(chainCur) + ' / ' + Beautify(chainCurWrath))), goldCookTooltip)); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Chain" Reward (CUR) (Golden / Wrath)', document.createTextNode((Beautify(chainCur) + ' / ' + Beautify(chainCurWrath))), goldCookTooltip)); return section; }; @@ -2625,7 +2624,6 @@ CM.Disp.CreateStatsSpellsSection = function() { section.className = 'CMStatsSpellsSection'; var conjureColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure) ? CM.Disp.colorRed : CM.Disp.colorGreen; - var conjureCur = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 30); var conjureTime = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure) ? CM.Disp.FormatTime((CM.Cache.Conjure - (Game.cookies + CM.Disp.GetWrinkConfigBank())) / CM.Disp.GetCPS()) : ''; var conjureReqFrag = document.createDocumentFragment(); @@ -2639,8 +2637,8 @@ CM.Disp.CreateStatsSpellsSection = function() { conjureReqSmall.textContent = ' (' + conjureTime + ')'; conjureReqFrag.appendChild(conjureReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Cookies Required', conjureReqFrag, 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (MAX)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Cookies Required', conjureReqFrag, 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (MAX)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward)), 'GoldCookTooltipPlaceholder')); var conjureFrenzyColor = ((Game.cookies + CM.Disp.GetWrinkConfigBank()) < CM.Cache.Conjure * 7) ? CM.Disp.colorRed : CM.Disp.colorGreen; var conjureFrenzyCur = Math.min((Game.cookies + CM.Disp.GetWrinkConfigBank()) * 0.15, CM.Cache.NoGoldSwitchCookiesPS * 60 * 30); @@ -2657,11 +2655,11 @@ CM.Disp.CreateStatsSpellsSection = function() { conjureFrenzyReqSmall.textContent = ' (' + conjureFrenzyTime + ')'; conjureFrenzyReqFrag.appendChild(conjureFrenzyReqSmall); } - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Cookies Required (Frenzy)', conjureFrenzyReqFrag, 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (MAX) (Frenzy)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward * 7)), 'GoldCookTooltipPlaceholder')); - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Conjure Baked Goods\" Reward (CUR)', document.createTextNode(CM.Disp.Beautify(conjureFrenzyCur)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Cookies Required (Frenzy)', conjureFrenzyReqFrag, 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (MAX) (Frenzy)', document.createTextNode(CM.Disp.Beautify(CM.Cache.ConjureReward * 7)), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Conjure Baked Goods" Reward (CUR)', document.createTextNode(CM.Disp.Beautify(conjureFrenzyCur)), 'GoldCookTooltipPlaceholder')); if (CM.Cache.Edifice) { - section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '\"Spontaneous Edifice\" Cookies Required (most expensive building)', document.createTextNode(CM.Disp.Beautify(CM.Cache.Edifice) + ' (' + CM.Cache.EdificeBuilding + ")"), 'GoldCookTooltipPlaceholder')); + section.appendChild(CM.Disp.CreateStatsListing("withTooltip", '"Spontaneous Edifice" Cookies Required (most expensive building)', document.createTextNode(CM.Disp.Beautify(CM.Cache.Edifice) + ' (' + CM.Cache.EdificeBuilding + ")"), 'GoldCookTooltipPlaceholder')); } return section; }; @@ -2692,7 +2690,7 @@ CM.Disp.CreateStatsPrestigeSection = function() { var resetBonus = CM.Sim.ResetBonus(possiblePresMax); var resetFrag = document.createDocumentFragment(); resetFrag.appendChild(document.createTextNode(Beautify(resetBonus))); - var increase = Math.round(resetBonus / Game.cookiesPs * 10000); + let increase = Math.round(resetBonus / Game.cookiesPs * 10000); if (isFinite(increase) && increase != 0) { var resetSmall = document.createElement('small'); resetSmall.textContent = ' (' + (increase / 100) + '% of income)'; @@ -2743,7 +2741,7 @@ CM.Disp.CreateStatsPrestigeSection = function() { CM.Disp.AddMissingUpgrades = function() { if (CM.Cache.MissingUpgradesPrestige) { var prestigeUpgradesOwned = Game.PrestigeUpgrades.length - l('menu').children[5].children[3].children.length; - var title = document.createElement('div'); + let title = document.createElement('div'); title.id = "CMMissingUpgradesPrestigeTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -2756,10 +2754,9 @@ CM.Disp.AddMissingUpgrades = function() { l('menu').children[5].appendChild(upgrades); } if (CM.Cache.MissingUpgrades) { - if (Game.UpgradesOwned) { - var normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool.tech.length - l('menu').children[6].childNodes[2].children.length; - } else var normalUpgradesOwned = 0; - var title = document.createElement('div'); + let normalUpgradesOwned = 0; + if (Game.UpgradesOwned) normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool.tech.length - l('menu').children[6].childNodes[2].children.length; + let title = document.createElement('div'); title.id = "CMMissingUpgradesTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -2773,7 +2770,7 @@ CM.Disp.AddMissingUpgrades = function() { } if (CM.Cache.MissingUpgradesCookies) { var cookieUpgradesOwned = Game.UpgradesByPool.cookie.length - l('menu').children[6].lastChild.children.length; - var title = document.createElement('div'); + let title = document.createElement('div'); title.id = "CMMissingUpgradesCookiesTitle"; title.className = "listing"; titlefrag = document.createElement('div'); @@ -2803,7 +2800,7 @@ CM.Disp.crateMissing = function(me) { if (!Game.prefs.crates) noFrame = 1; if (noFrame) classes += ' noFrame'; - var icon = me.icon; + let icon = me.icon; if (me.iconFunction) icon = me.iconFunction(); tooltip = `function() {return Game.crateTooltip(Game.UpgradesById[${me.id}], 'stats');}`; return `
{ + Array.from(l('gardenPlot').children).forEach((child) => { var coords = child.id.slice(-3,); child.onmouseover = function() {Game.tooltip.dynamic=1; Game.tooltip.draw(this, function() {return CM.Disp.Tooltip('p', [`${coords[0]}`,`${coords[2]}`]);}, 'this'); Game.tooltip.wobble();}; }); @@ -349,7 +348,7 @@ CM.Main.ReplaceTooltipGarden = function() { CM.Main.FindShimmer = function() { CM.Main.currSpawnedGoldenCookieState = 0; CM.Cache.goldenShimmersByID = {}; - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { CM.Cache.goldenShimmersByID[Game.shimmers[i].id] = Game.shimmers[i]; if (Game.shimmers[i].spawnLead && Game.shimmers[i].type == 'golden') { CM.Cache.spawnedGoldenShimmer = Game.shimmers[i]; @@ -365,7 +364,7 @@ CM.Main.FindShimmer = function() { */ CM.Main.CheckGoldenCookie = function() { CM.Main.FindShimmer(); - for (var i in CM.Disp.GCTimers) { + for (let i of Object.keys(CM.Disp.GCTimers)) { if (typeof CM.Cache.goldenShimmersByID[i] == "undefined") { CM.Disp.GCTimers[i].parentNode.removeChild(CM.Disp.GCTimers[i]); // TODO remove delete here @@ -381,7 +380,7 @@ CM.Main.CheckGoldenCookie = function() { CM.Disp.Notification('GCNotification', "Golden Cookie Spawned", "A Golden Cookie has spawned. Click it now!"); } - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { if (typeof CM.Disp.GCTimers[Game.shimmers[i].id] == "undefined") { CM.Disp.CreateGCTimer(Game.shimmers[i]); } @@ -392,7 +391,7 @@ CM.Main.CheckGoldenCookie = function() { if (CM.Main.currSpawnedGoldenCookieState == 0) CM.Cache.spawnedGoldenShimmer = 0; } else if (CM.Options.GCTimer == 1 && CM.Main.lastGoldenCookieState) { - for (var i in CM.Disp.GCTimers) { + for (let i of Object.keys(CM.Disp.GCTimers)) { CM.Disp.GCTimers[i].style.opacity = CM.Cache.goldenShimmersByID[i].l.style.opacity; CM.Disp.GCTimers[i].style.transform = CM.Cache.goldenShimmersByID[i].l.style.transform; CM.Disp.GCTimers[i].textContent = Math.ceil(CM.Cache.goldenShimmersByID[i].life / Game.fps); @@ -407,7 +406,7 @@ CM.Main.CheckGoldenCookie = function() { CM.Main.CheckSeasonPopup = function() { if (CM.Main.lastSeasonPopupState != Game.shimmerTypes.reindeer.spawned) { CM.Main.lastSeasonPopupState = Game.shimmerTypes.reindeer.spawned; - for (var i in Game.shimmers) { + for (let i of Object.keys(Game.shimmers)) { if (Game.shimmers[i].spawnLead && Game.shimmers[i].type == 'reindeer') { CM.Cache.seasonPopShimmer = Game.shimmers[i]; break; @@ -472,7 +471,7 @@ CM.Main.CheckMagicMeter = function() { CM.Main.CheckWrinklerCount = function() { if (Game.elderWrath > 0) { var CurrentWrinklers = 0; - for (var i in Game.wrinklers) { + for (let i in Game.wrinklers) { if (Game.wrinklers[i].phase == 2) CurrentWrinklers++; } if (CurrentWrinklers > CM.Main.lastWrinklerCount) { @@ -509,7 +508,7 @@ CM.Main.AddWrinklerAreaDetect = function() { l('backgroundLeftCanvas').onmouseout = function() { CM.Disp.TooltipWrinklerArea = 0; Game.tooltip.hide(); - for (var i in Game.wrinklers) { + for (let i of Object.keys(Game.wrinklers)) { CM.Disp.TooltipWrinklerBeingShown[i] = 0; } }; @@ -540,7 +539,6 @@ CM.HasReplaceNativeGrimoireDraw = false; CM.Main.lastGoldenCookieState = 0; CM.Main.lastSpawnedGoldenCookieState = 0; -CM.Main.currSpawnedGoldenCookieState; CM.Main.lastTickerFortuneState = 0; CM.Main.lastSeasonPopupState = 0; CM.Main.lastGardenNextStep = 0; diff --git a/src/Sim.js b/src/Sim.js index 3e52aa9..014db87 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -3,8 +3,8 @@ *******/ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { - /*var price=0; - for (var i = Math.max(0 , start); i < Math.max(0, start + increase); i++) { + /*let price=0; + for (let i = Math.max(0 , start); i < Math.max(0, start + increase); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); } if (Game.Has('Season savings')) price *= 0.99; @@ -15,8 +15,8 @@ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { return Math.ceil(price);*/ var moni = 0; - for (var i = 0; i < increase; i++) { - var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + for (let i = 0; i < increase; i++) { + let price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); moni += price; @@ -26,8 +26,8 @@ CM.Sim.BuildingGetPrice = function(build, basePrice, start, free, increase) { }; CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { - /*var price=0; - for (var i = Math.max(0, start - amount); i < Math.max(0, start); i++) { + /*let price=0; + for (let i = Math.max(0, start - amount); i < Math.max(0, start); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); } if (Game.Has('Season savings')) price*=0.99; @@ -49,8 +49,8 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { var moni = 0; if (amount == -1) amount = start; if (!amount) amount = Game.buyBulk; - for (var i = 0; i < amount; i++) { - var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + for (let i = 0; i < amount; i++) { + let price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); price = noSim ? Game.modifyBuildingPrice(build, price) : CM.Sim.modifyBuildingPrice(build, price); price = Math.ceil(price); var giveBack = noSim ? build.getSellMultiplier() : CM.Sim.getSellMultiplier(); @@ -64,7 +64,7 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, noSim) { }; CM.Sim.Has = function(what) { - var it = CM.Sim.Upgrades[what]; + let it = CM.Sim.Upgrades[what]; if (Game.ascensionMode == 1 && (it.pool == 'prestige' || it.tier == 'fortune')) return 0; return (it ? it.bought : 0); }; @@ -108,7 +108,7 @@ CM.Sim.hasGod=function(what) { } var possibleGods = CM.Sim.Objects.Temple.minigame.gods; var god=possibleGods[what]; - for (var i=0;i<3;i++) + for (let i=0;i<3;i++) { if (CM.Sim.Objects.Temple.minigame.slot[i]==god.id) return (i+1); } @@ -139,7 +139,7 @@ eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() CM.Sim.getCPSBuffMult = function() { var mult = 1; - for (var i in Game.buffs) { + for (let i of Object.keys(Game.buffs)) { if (typeof Game.buffs[i].multCpS != 'undefined') mult *= Game.buffs[i].multCpS; } return mult; @@ -155,8 +155,8 @@ CM.Sim.getCPSBuffMult = function() { * are set by CM.Sim.CopyData. */ CM.Sim.InitialBuildingData = function(buildingName) { - var me = Game.Objects[buildingName]; - var you = {}; + let me = Game.Objects[buildingName]; + let you = {}; eval('you.cps = ' + me.cps.toString() .split('Game.Has').join('CM.Sim.Has') .split('Game.hasAura').join('CM.Sim.hasAura') @@ -176,8 +176,8 @@ CM.Sim.InitialBuildingData = function(buildingName) { * so this function just returns an empty object. */ CM.Sim.InitUpgrade = function(upgradeName) { - var me = Game.Upgrades[upgradeName]; - var you = {}; + let me = Game.Upgrades[upgradeName]; + let you = {}; you.pool = me.pool; you.name = me.name; return you; @@ -189,28 +189,31 @@ CM.Sim.InitUpgrade = function(upgradeName) { * so this function just returns an empty object. */ CM.Sim.InitAchievement = function(achievementName) { + let me = Game.Achievements[achievementName]; + let you = {}; + you.name = me.name; return {}; }; CM.Sim.InitData = function() { // Buildings CM.Sim.Objects = []; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { CM.Sim.Objects[i] = CM.Sim.InitialBuildingData(i); } // Upgrades CM.Sim.Upgrades = []; - for (var i in Game.Upgrades) { + for (let i of Object.keys(Game.Upgrades)) { CM.Sim.Upgrades[i] = CM.Sim.InitUpgrade(i); } // Achievements CM.Sim.Achievements = []; - for (var i in Game.Achievements) { + for (let i of Object.keys(Game.Achievements)) { CM.Sim.Achievements[i] = CM.Sim.InitAchievement(i); } - CM.Sim.CopyData; + CM.Sim.CopyData(); }; CM.Sim.CopyData = function() { @@ -222,9 +225,9 @@ CM.Sim.CopyData = function() { CM.Sim.prestige = Game.prestige; // Buildings - for (var i in Game.Objects) { - var me = Game.Objects[i]; - var you = CM.Sim.Objects[i]; + for (let i of Object.keys(Game.Objects)) { + let me = Game.Objects[i]; + let you = CM.Sim.Objects[i]; if (you == undefined) { // New building! you = CM.Sim.Objects[i] = CM.Sim.InitialBuildingData(i); CM.Disp.CreateBotBarBuildingColumn(i); // Add new building to the bottom bar @@ -238,9 +241,9 @@ CM.Sim.CopyData = function() { } // Upgrades - for (var i in Game.Upgrades) { - var me = Game.Upgrades[i]; - var you = CM.Sim.Upgrades[i]; + for (let i of Object.keys(Game.Upgrades)) { + let me = Game.Upgrades[i]; + let you = CM.Sim.Upgrades[i]; if (you == undefined) { you = CM.Sim.Upgrades[i] = CM.Sim.InitUpgrade(i); } @@ -248,9 +251,9 @@ CM.Sim.CopyData = function() { } // Achievements - for (var i in Game.Achievements) { - var me = Game.Achievements[i]; - var you = CM.Sim.Achievements[i]; + for (let i of Object.keys(Game.Achievements)) { + let me = Game.Achievements[i]; + let you = CM.Sim.Achievements[i]; if (you == undefined) { you = CM.Sim.Achievements[i] = CM.Sim.InitAchievement(i); } @@ -268,12 +271,12 @@ CM.Sim.CalculateGains = function() { var mult = 1; // Include minigame effects var effs={}; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { // TODO Store minigames and effects in Cache // Include possibility of new/modded building and new/modded minigames if (CM.Sim.Objects[i].minigameLoaded && CM.Sim.Objects[i].minigame.effs) { var myEffs = CM.Sim.Objects[i].minigame.effs; - for (var ii in myEffs) { + for (let ii in myEffs) { if (effs[ii]) effs[ii]*=myEffs[ii]; else effs[ii]=myEffs[ii]; } @@ -289,8 +292,8 @@ CM.Sim.CalculateGains = function() { // TODO: Make function call cached function where Game.Has is replaced with CM.Has // Related to valentine cookies - for (var i in Game.cookieUpgrades) { - var me = Game.cookieUpgrades[i]; + for (let i of Object.keys(Game.cookieUpgrades)) { + let me = Game.cookieUpgrades[i]; if (CM.Sim.Has(me.name)) { mult *= (1 + (typeof(me.power) == 'function' ? me.power(me) : me.power) * 0.01); } @@ -316,28 +319,28 @@ CM.Sim.CalculateGains = function() { // Check effect of chosen Gods var buildMult = 1; if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('asceticism'); + let godLvl = CM.Sim.hasGod('asceticism'); if (godLvl == 1) mult *= 1.15; else if (godLvl == 2) mult *= 1.1; else if (godLvl == 3) mult *= 1.05; // TODO: What does DateAges do? - var godLvl = CM.Sim.hasGod('ages'); + godLvl = CM.Sim.hasGod('ages'); if (godLvl == 1) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 3)) * Math.PI * 2); else if (godLvl == 2) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 12)) * Math.PI*2); else if (godLvl == 3) mult *= 1 + 0.15 * Math.sin((CM.Sim.DateAges / 1000 / (60 * 60 * 24)) * Math.PI*2); - var godLvl = CM.Sim.hasGod('decadence'); + godLvl = CM.Sim.hasGod('decadence'); if (godLvl == 1) buildMult *= 0.93; else if (godLvl == 2) buildMult *= 0.95; else if (godLvl == 3) buildMult *= 0.98; - var godLvl = CM.Sim.hasGod('industry'); + godLvl = CM.Sim.hasGod('industry'); if (godLvl == 1) buildMult *= 1.1; else if (godLvl == 2) buildMult *= 1.06; else if (godLvl == 3) buildMult *= 1.03; - var godLvl = CM.Sim.hasGod('labor'); + godLvl = CM.Sim.hasGod('labor'); if (godLvl == 1) buildMult *= 0.97; else if (godLvl == 2) buildMult *= 0.98; else if (godLvl == 3) buildMult *= 0.99; @@ -351,7 +354,7 @@ CM.Sim.CalculateGains = function() { //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('mother'); + let godLvl = CM.Sim.hasGod('mother'); if (godLvl == 1) milkMult *= 1.1; else if (godLvl == 2) milkMult *= 1.05; else if (godLvl == 3) milkMult *= 1.03; @@ -377,8 +380,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Kitten angels')) catMult *= (1 + milkProgress * 0.1 * milkMult); if (CM.Sim.Has('Fortune #103')) catMult *= (1 + milkProgress * 0.05 * milkMult); - for (var i in CM.Sim.Objects) { - var me = CM.Sim.Objects[i]; + for (let i of Object.keys(CM.Sim.Objects)) { + let me = CM.Sim.Objects[i]; var storedCps = (typeof(me.cps) == 'function' ? me.cps(me) : me.cps); if (Game.ascensionMode != 1) storedCps *= (1 + me.level * 0.01) * buildMult; if (me.name == "Grandma" && CM.Sim.Has('Milkhelp® lactose intolerance relief tablets')) storedCps *= 1 + 0.05 * milkProgress * milkMult; @@ -418,7 +421,7 @@ CM.Sim.CalculateGains = function() { mult *= 1 + CM.Sim.auraMult('Radiant Appetite'); var rawCookiesPs = CM.Sim.cookiesPs * mult; - for (var i in Game.CpsAchievements) { + for (let i of Object.keys(Game.CpsAchievements)) { if (rawCookiesPs >= Game.CpsAchievements[i].threshold) CM.Sim.Win(Game.CpsAchievements[i].name); } @@ -426,7 +429,7 @@ CM.Sim.CalculateGains = function() { var n = Game.shimmerTypes.golden.n; var auraMult = CM.Sim.auraMult('Dragon\'s Fortune'); - for (var i = 0; i < n; i++){ + for (let i = 0; i < n; i++){ mult *= 1 + auraMult * 1.23; } @@ -442,7 +445,7 @@ CM.Sim.CalculateGains = function() { var goldenSwitchMult = 1.5; if (CM.Sim.Has('Residual luck')) { var upgrades = Game.goldenCookieUpgrades; - for (var i in upgrades) { + for (let i of Object.keys(upgrades)) { if (CM.Sim.Has(upgrades[i])) goldenSwitchMult += 0.1; } } @@ -468,7 +471,7 @@ CM.Sim.CalculateGains = function() { CM.Sim.CheckOtherAchiev = function() { var grandmas = 0; - for (var i in Game.GrandmaSynergies) { + for (let i of Object.keys(Game.GrandmaSynergies)) { if (CM.Sim.Has(Game.GrandmaSynergies[i])) grandmas++; } if (!CM.Sim.HasAchiev('Elder') && grandmas >= 7) CM.Sim.Win('Elder'); @@ -478,7 +481,7 @@ CM.Sim.CheckOtherAchiev = function() { var mathematician = 1; var base10 = 1; var minAmount = 100000; - for (var i in CM.Sim.Objects) { + for (let i of Object.keys(CM.Sim.Objects)) { buildingsOwned += CM.Sim.Objects[i].amount; minAmount = Math.min(CM.Sim.Objects[i].amount, minAmount); if (!CM.Sim.HasAchiev('Mathematician')) { @@ -523,13 +526,13 @@ CM.Sim.CheckOtherAchiev = function() { if (CM.Sim.Objects.Cursor.amount + CM.Sim.Objects.Grandma.amount >= 777) CM.Sim.Win('The elder scrolls'); var hasAllHalloCook = true; - for (var i in CM.Data.HalloCookies) { + for (let i of Object.keys(CM.Data.HalloCookies)) { if (!CM.Sim.Has(CM.Data.HalloCookies[i])) hasAllHalloCook = false; } if (hasAllHalloCook) CM.Sim.Win('Spooky cookies'); var hasAllChristCook = true; - for (var i in CM.Data.ChristCookies) { + for (let i of Object.keys(CM.Data.ChristCookies)) { if (!CM.Sim.Has(CM.Data.ChristCookies[i])) hasAllChristCook = false; } if (hasAllChristCook) CM.Sim.Win('Let it snow'); @@ -537,7 +540,7 @@ CM.Sim.CheckOtherAchiev = function() { if (CM.Sim.Has('Fortune cookies')) { var list = Game.Tiers.fortune.upgrades; var fortunes = 0; - for (var i in list) { + for (let i of Object.keys(list)) { if (CM.Sim.Has(list[i].name)) fortunes++; } if (fortunes >= list.length) CM.Sim.Win('O Fortuna'); @@ -546,9 +549,9 @@ CM.Sim.CheckOtherAchiev = function() { CM.Sim.BuyBuildings = function(amount, target) { CM.Cache[target] = []; - for (var i in Game.Objects) { + for (let i of Object.keys(Game.Objects)) { CM.Sim.CopyData(); - var me = CM.Sim.Objects[i]; + let me = CM.Sim.Objects[i]; me.amount += amount; if (i == 'Cursor') { @@ -591,10 +594,10 @@ CM.Sim.BuyBuildings = function(amount, target) { CM.Sim.BuyUpgrades = function() { CM.Cache.Upgrades = []; - for (var i in Game.Upgrades) { + for (let i of Object.keys(Game.Upgrades)) { if (Game.Upgrades[i].pool == 'toggle' || (Game.Upgrades[i].bought == 0 && Game.Upgrades[i].unlocked && Game.Upgrades[i].pool != 'prestige')) { CM.Sim.CopyData(); - var me = CM.Sim.Upgrades[i]; + let me = CM.Sim.Upgrades[i]; me.bought = 1; if (Game.CountsAsUpgradeOwned(Game.Upgrades[i].pool)) CM.Sim.UpgradesOwned++; @@ -647,20 +650,22 @@ CM.Sim.CalculateChangeAura = function(aura) { else CM.Sim.dragonAura = aura; // Sell highest building but only if aura is different + let price = 0; if (CM.Sim.dragonAura != CM.Cache.dragonAura || CM.Sim.dragonAura2 != CM.Cache.dragonAura2) { - for (var i = Game.ObjectsById.length; i > -1, --i;) { + for (let i = Game.ObjectsById.length; i > -1, --i;) { if (Game.ObjectsById[i].amount > 0) { var highestBuilding = CM.Sim.Objects[Game.ObjectsById[i].name].name; CM.Sim.Objects[highestBuilding].amount -=1; CM.Sim.buildingsOwned -= 1; + price = CM.Sim.Objects[highestBuilding].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[highestBuilding].amount - 1 -CM.Sim.Objects[highestBuilding].free)); + price = Game.modifyBuildingPrice(CM.Sim.Objects[highestBuilding], price); + price = Math.ceil(price); break; } } // This calculates price of highest building - var price = CM.Sim.Objects[highestBuilding].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[highestBuilding].amount - 1 -CM.Sim.Objects[highestBuilding].free)); - price = Game.modifyBuildingPrice(CM.Sim.Objects[highestBuilding], price); - price = Math.ceil(price); - } else var price = 0; + + } var lastAchievementsOwned = CM.Sim.AchievementsOwned; CM.Sim.CalculateGains(); @@ -768,7 +773,7 @@ CM.Sim.modifyBuildingPrice = function(building,price) { if (building.fortune && CM.Sim.Has(building.fortune.name)) price *= 0.93; price *= CM.Sim.eff('buildingCost'); if (CM.Sim.Objects.Temple.minigameLoaded) { - var godLvl = CM.Sim.hasGod('creation'); + let godLvl = CM.Sim.hasGod('creation'); if (godLvl == 1) price *= 0.93; else if (godLvl == 2) price *= 0.95; else if (godLvl == 3) price *= 0.98; @@ -792,7 +797,7 @@ CM.Sim.SellBuildingsForChoEgg = function() { CM.Sim.dragonAura = 5; CM.Sim.dragonAura2 = 18; // Sacrifice highest buildings for the aura switch - for (var i = 0; i < buildingsToSacrifice; ++i) { + for (let i = 0; i < buildingsToSacrifice; ++i) { var highestBuilding = 0; for (var j in CM.Sim.Objects) { if (CM.Sim.Objects[j].amount > 0) { @@ -804,8 +809,8 @@ CM.Sim.SellBuildingsForChoEgg = function() { } // Get money made by selling all remaining buildings - for (var i in CM.Sim.Objects) { - var me = CM.Sim.Objects[i]; + for (let i of Object.keys(CM.Sim.Objects)) { + let me = CM.Sim.Objects[i]; sellTotal += CM.Sim.BuildingSell(Game.Objects[me.name], Game.Objects[i].basePrice, me.amount, Game.Objects[i].free, me.amount); } @@ -842,7 +847,7 @@ CM.Sim.mouseCps = function() { if (CM.Sim.Has('Octillion fingers')) add *= 20; if (CM.Sim.Has('Nonillion fingers')) add *= 20; var num=0; - for (var i in CM.Sim.Objects) {num+=CM.Sim.Objects[i].amount;} + for (let i of Object.keys(CM.Sim.Objects)) {num+=CM.Sim.Objects[i].amount;} num -= CM.Sim.Objects.Cursor.amount; add = add * num; @@ -886,7 +891,7 @@ CM.Sim.mouseCps = function() { } } - for (var i in Game.buffs) + for (let i of Object.keys(Game.buffs)) { if (typeof Game.buffs[i].multClick != 'undefined') mult*=Game.buffs[i].multClick; }