From 78ec726f4a0d552ba6a20d57eed27400159142ec Mon Sep 17 00:00:00 2001 From: Pedro Angelo Date: Wed, 6 Jun 2018 01:46:11 -0300 Subject: [PATCH 01/35] Change UpBarColor to allow for colors but no bar --- src/Config.js | 2 +- src/Disp.js | 8 ++++++-- src/Main.js | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/Config.js b/src/Config.js index 9e6172d..15e1f10 100644 --- a/src/Config.js +++ b/src/Config.js @@ -119,7 +119,7 @@ CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timer CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar Position (Bottom)'], desc: 'Placement of the Timer Bar', toggle: false, func: function() {CM.Disp.ToggleTimerBarPos();}}; CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}}; -CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}}; +CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors ON', 'Upgrade Colors with no bar', 'Upgrade Colors/Bar OFF'], desc: 'Color code upgrades and add a counter bar', toggle: false, func: function() {CM.Disp.ToggleUpBarColor();}}; CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; diff --git a/src/Disp.js b/src/Disp.js index fc4aeb3..0b4ff2e 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -617,10 +617,14 @@ CM.Disp.CreateUpgradeBar = function() { } CM.Disp.ToggleUpBarColor = function() { - if (CM.Config.UpBarColor == 1) { + if (CM.Config.UpBarColor == 0) { CM.Disp.UpgradeBar.style.display = ''; CM.Disp.UpdateUpgrades(); } + else if (CM.Config.UpBarColor == 1) { + CM.Disp.UpgradeBar.style.display = 'none'; + CM.Disp.UpdateUpgrades(); + } else { CM.Disp.UpgradeBar.style.display = 'none'; Game.RebuildUpgrades(); @@ -628,7 +632,7 @@ CM.Disp.ToggleUpBarColor = function() { } CM.Disp.UpdateUpgrades = function() { - if (CM.Config.UpBarColor == 1) { + if (CM.Config.UpBarColor == 0 || CM.Config.UpBarColor == 1) { var blue = 0; var green = 0; var yellow = 0; diff --git a/src/Main.js b/src/Main.js index ff2c224..44c4728 100644 --- a/src/Main.js +++ b/src/Main.js @@ -247,7 +247,7 @@ CM.DelayInit = function() { CM.HasReplaceNativeGrimoireLaunch = false; CM.HasReplaceNativeGrimoireDraw = false; -CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 0, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; +CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 0, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 0, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.0106'; From eb62576e5fa9c2c0f047cdd91d7808b288a69163 Mon Sep 17 00:00:00 2001 From: Pedro Angelo Date: Wed, 6 Jun 2018 01:50:55 -0300 Subject: [PATCH 02/35] Run Combine.sh --- CookieMonster.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index fe8236e..24a0581 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -513,7 +513,7 @@ CM.ConfigData.TimerBar = {label: ['Timer Bar OFF', 'Timer Bar ON'], desc: 'Timer CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar Position (Bottom)'], desc: 'Placement of the Timer Bar', toggle: false, func: function() {CM.Disp.ToggleTimerBarPos();}}; CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}}; -CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}}; +CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors ON', 'Upgrade Colors with no bar', 'Upgrade Colors/Bar OFF'], desc: 'Color code upgrades and add a counter bar', toggle: false, func: function() {CM.Disp.ToggleUpBarColor();}}; CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; @@ -1169,10 +1169,14 @@ CM.Disp.CreateUpgradeBar = function() { } CM.Disp.ToggleUpBarColor = function() { - if (CM.Config.UpBarColor == 1) { + if (CM.Config.UpBarColor == 0) { CM.Disp.UpgradeBar.style.display = ''; CM.Disp.UpdateUpgrades(); } + else if (CM.Config.UpBarColor == 1) { + CM.Disp.UpgradeBar.style.display = 'none'; + CM.Disp.UpdateUpgrades(); + } else { CM.Disp.UpgradeBar.style.display = 'none'; Game.RebuildUpgrades(); @@ -1180,7 +1184,7 @@ CM.Disp.ToggleUpBarColor = function() { } CM.Disp.UpdateUpgrades = function() { - if (CM.Config.UpBarColor == 1) { + if (CM.Config.UpBarColor == 0 || CM.Config.UpBarColor == 1) { var blue = 0; var green = 0; var yellow = 0; @@ -2760,7 +2764,7 @@ CM.DelayInit = function() { CM.HasReplaceNativeGrimoireLaunch = false; CM.HasReplaceNativeGrimoireDraw = false; -CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 0, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; +CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 0, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 0, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, Tooltip: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.0106'; From 0255afd75d1cf205bdfd77f62255854a590a9625 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 28 Nov 2018 13:02:06 -0500 Subject: [PATCH 03/35] Change to Version 2.016.2 --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 80ea6ae..54f85fa 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2817,7 +2817,7 @@ CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkB CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.016'; -CM.VersionMinor = '1'; +CM.VersionMinor = '2'; /******* * Sim * diff --git a/src/Main.js b/src/Main.js index 944187a..21ee541 100644 --- a/src/Main.js +++ b/src/Main.js @@ -248,5 +248,5 @@ CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkB CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.016'; -CM.VersionMinor = '1'; +CM.VersionMinor = '2'; From 963f950039daac6f79fdeca4de5313bf00b43b7e Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 12 Dec 2018 10:50:58 -0500 Subject: [PATCH 04/35] Separate the configuration for flash/sound for Golden Cookies and Season Special, rearrange the option menu a little bit, and some code cleanup/formatting --- CookieMonster.js | 194 +++++++++++++++++++++++++++++++++-------------- src/Config.js | 33 ++++++-- src/Disp.js | 102 +++++++++++++++---------- src/Main.js | 48 ++++++++++-- src/Sim.js | 11 ++- 5 files changed, 278 insertions(+), 110 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 54f85fa..8546754 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -514,23 +514,42 @@ CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}}; -CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}}; +CM.ConfigData.Colors = { + desc: { + Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', + Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', + Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', + Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', + Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', + Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', + Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', + Pink: 'Color Pink. Used for Dragonflight bar', + Brown: 'Color Brown. Used for Dragon Harvest bar' + }, + func: function() {CM.Disp.UpdateColors();} +}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 10s', 'Average CPS for past 15s', 'Average CPS for past 30s', 'Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false}; CM.ConfigData.AvgClicksHist = {label: ['Average Cookie Clicks for past 1s', 'Average Cookie Clicks for past 5s', 'Average Cookie Clicks for past 10s', 'Average Cookie Clicks for past 15s', 'Average Cookie Clicks for past 30s'], desc: 'How much time average Cookie Clicks should consider', toggle: false}; CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true}; -CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true}; -CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true}; -CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'}; +CM.ConfigData.GCFlash = {label: ['Golden Cookie Flash OFF', 'Golden Cookie Flash ON'], desc: 'Flash screen on Golden Cookie', toggle: true}; +CM.ConfigData.GCSound = {label: ['Golden Cookie Sound OFF', 'Golden Cookie Sound ON'], desc: 'Play a sound on Golden Cookie', toggle: true}; +CM.ConfigData.GCVolume = {label: [], desc: 'Volume of the Golden Cookie sound'}; for (var i = 0; i < 101; i++) { - CM.ConfigData.Volume.label[i] = i + '%'; + CM.ConfigData.GCVolume.label[i] = i + '%'; } CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; -CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}}; -CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}}; +CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; +CM.ConfigData.SeaSound = {label: ['Season Special Sound OFF', 'Season Special Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; +CM.ConfigData.SeaVolume = {label: [], desc: 'Volume of the Season Special sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.SeaVolume.label[i] = i + '%'; +} +CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; +CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.TooltipBuildUp = {label: ['Buildings/Upgrades Tooltip Information OFF', 'Buildings/Upgrades Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true}; CM.ConfigData.TooltipAmor = {label: ['Buildings Tooltip Amortization Information OFF', 'Buildings Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true}; CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}}; @@ -1299,30 +1318,30 @@ CM.Disp.CreateWhiteScreen = function() { l('wrapper').appendChild(CM.Disp.WhiteScreen); } -CM.Disp.Flash = function(mode) { - if ((CM.Config.Flash == 1 && mode == 3) || mode == 1) { +CM.Disp.Flash = function(mode, config) { + if ((CM.Config[config] == 1 && mode == 3) || mode == 1) { CM.Disp.WhiteScreen.style.opacity = '0.5'; if (mode == 3) { CM.Disp.WhiteScreen.style.display = 'inline'; - setTimeout(function() {CM.Disp.Flash(2);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(2, config);}, 1000/Game.fps); } else { - setTimeout(function() {CM.Disp.Flash(0);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(0, config);}, 1000/Game.fps); } } else if (mode == 2) { CM.Disp.WhiteScreen.style.opacity = '1'; - setTimeout(function() {CM.Disp.Flash(1);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(1, config);}, 1000/Game.fps); } else if (mode == 0) { CM.Disp.WhiteScreen.style.display = 'none'; } } -CM.Disp.PlaySound = function(url) { - if (CM.Config.Sound == 1) { +CM.Disp.PlaySound = function(url, sndConfig, volConfig) { + if (CM.Config[sndConfig] == 1) { var sound = new realAudio(url); - sound.volume = CM.Config.Volume / 100; + sound.volume = CM.Config[volConfig] / 100; sound.play(); } } @@ -1407,8 +1426,8 @@ CM.Disp.CheckGoldenCookie = function() { CM.Disp.GCTimer.style.top = CM.Disp.goldenShimmer.l.style.top; } - CM.Disp.Flash(3); - CM.Disp.PlaySound(CM.Config.GCSoundURL); + CM.Disp.Flash(3, 'GCFlash'); + CM.Disp.PlaySound(CM.Config.GCSoundURL, 'GCSound', 'GCVolume'); } else if (CM.Config.GCTimer == 1) CM.Disp.GCTimer.style.display = 'none'; } @@ -1432,8 +1451,8 @@ CM.Disp.CheckSeasonPopup = function() { } } - CM.Disp.Flash(3); - CM.Disp.PlaySound(CM.Config.SeaSoundURL); + CM.Disp.Flash(3, 'SeaFlash'); + CM.Disp.PlaySound(CM.Config.SeaSoundURL, 'SeaSound', 'SeaVolume'); } } } @@ -1557,6 +1576,30 @@ CM.Disp.AddMenuPref = function(title) { div.appendChild(label); return div; } + + var vol = function(config) { + var volConfig = config; + var volume = document.createElement('div'); + volume.className = 'listing'; + var minus = document.createElement('a'); + minus.className = 'option'; + minus.onclick = function() {CM.ToggleConfigDown(volConfig);}; + minus.textContent = '-'; + volume.appendChild(minus); + var volText = document.createElement('span'); + volText.id = CM.ConfigPrefix + volConfig; + volText.textContent = CM.Disp.GetConfigDisplay(volConfig); + volume.appendChild(volText); + var plus = document.createElement('a'); + plus.className = 'option'; + plus.onclick = function() {CM.ToggleConfigUp(volConfig);}; + plus.textContent = '+'; + volume.appendChild(plus); + var volLabel = document.createElement('label'); + volLabel.textContent = CM.ConfigData[volConfig].desc; + volume.appendChild(volLabel); + return volume; + } var url = function(config) { var div = document.createElement('div'); @@ -1622,34 +1665,17 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('ToolWarnCautBon')); frag.appendChild(header('Golden Cookie/Season Popup Emphasis')); - frag.appendChild(listing('Flash')); - frag.appendChild(listing('Sound')); - var volConfig = 'Volume'; - var volume = document.createElement('div'); - volume.className = 'listing'; - var minus = document.createElement('a'); - minus.className = 'option'; - minus.onclick = function() {CM.ToggleConfigDown(volConfig);}; - minus.textContent = '-'; - volume.appendChild(minus); - var volText = document.createElement('span'); - volText.id = CM.ConfigPrefix + volConfig; - volText.textContent = CM.Disp.GetConfigDisplay(volConfig); - volume.appendChild(volText); - var plus = document.createElement('a'); - plus.className = 'option'; - plus.onclick = function() {CM.ToggleConfigUp(volConfig);}; - plus.textContent = '+'; - volume.appendChild(plus); - var volLabel = document.createElement('label'); - volLabel.textContent = CM.ConfigData[volConfig].desc; - volume.appendChild(volLabel); - frag.appendChild(volume); + frag.appendChild(listing('GCFlash')); + frag.appendChild(listing('GCSound')); + frag.appendChild(vol('GCVolume')); frag.appendChild(url('GCSoundURL')); - frag.appendChild(url('SeaSoundURL')); frag.appendChild(listing('GCTimer')); - frag.appendChild(listing('Title')); frag.appendChild(listing('Favicon')); + frag.appendChild(listing('SeaFlash')); + frag.appendChild(listing('SeaSound')); + frag.appendChild(vol('SeaVolume')); + frag.appendChild(url('SeaSoundURL')); + frag.appendChild(listing('Title')); frag.appendChild(header('Tooltip')); frag.appendChild(listing('TooltipBuildUp')); @@ -1680,7 +1706,8 @@ CM.Disp.AddMenuPref = function(title) { l('menu').childNodes[2].insertBefore(frag, l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1]); CM.Disp.FormatButtonOnClickBak = l('formatButton').onclick; - l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON', '1'); PlaySound('snd/tick.mp3'); CM.Disp.RefreshScale();}; + eval('l(\'formatButton\').onclick = ' + l('formatButton').onclick.toString().split('mp3\');').join('mp3\'); CM.Disp.RefreshScale();')); + //l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON', '1'); PlaySound('snd/tick.mp3'); CM.Disp.RefreshScale();}; } CM.Disp.AddMenuStats = function(title) { @@ -2024,7 +2051,10 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(header('Miscellaneous', 'Misc')); if (CM.Config.StatsPref.Misc) { - stats.appendChild(listing('Average Cookies Per Second (Past ' + (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] < 60 ? (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] + ' seconds') : ((CM.Disp.cookieTimes[CM.Config.AvgCPSHist] / 60) + (CM.Config.AvgCPSHist == 3 ? ' minute' : ' minutes'))) + ')', document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)))); + stats.appendChild(listing( + 'Average Cookies Per Second (Past ' + (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] < 60 ? (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] + ' seconds') : ((CM.Disp.cookieTimes[CM.Config.AvgCPSHist] / 60) + (CM.Config.AvgCPSHist == 3 ? ' minute' : ' minutes'))) + ')', + document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)) + )); stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.clickTimes[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1)))); stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks)))); } @@ -2190,7 +2220,9 @@ CM.Disp.Tooltip = function(type, name) { var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); var amortizeAmount = buildPrice - Game.Objects[name].totalCookies; if (amortizeAmount > 0) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split('so far').join('so far
' + Beautify(amortizeAmount) + ' ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')'); + l('tooltip').innerHTML = l('tooltip').innerHTML + .split('so far') + .join('so far
' + Beautify(amortizeAmount) + ' ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')'); } } if (Game.buyMode == 1) { @@ -2567,6 +2599,15 @@ for (var i in Game.wrinklers) { CM.Disp.TooltipWrinklerCache[i] = 0; } +CM.Disp.TooltipText = [ + ['GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'], + ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '380px'], + ['NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'], + ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'], + ['ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'], + ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '280px'] +]; + /******** * Main * ********/ @@ -2785,12 +2826,9 @@ CM.DelayInit = function() { CM.Disp.CreateWhiteScreen(); CM.Disp.CreateFavicon(); CM.Disp.CreateGCTimer(); - CM.Disp.CreateTooltip('GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'); - CM.Disp.CreateTooltip('PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '370px'); - CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'); - CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'); - CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'); - CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '360px'); + for (var i in CM.Disp.TooltipText) { + CM.Disp.CreateTooltip(CM.Disp.TooltipText[i][0], CM.Disp.TooltipText[i][1], CM.Disp.TooltipText[i][2]); + } CM.Disp.CreateTooltipWarnCaut(); CM.Disp.AddTooltipBuild(); CM.Disp.AddTooltipGrimoire(); @@ -2813,7 +2851,44 @@ CM.DelayInit = function() { CM.HasReplaceNativeGrimoireLaunch = false; CM.HasReplaceNativeGrimoireDraw = false; -CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 3, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, TooltipBuildUp: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, TooltipGrim:1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, GrimoireBar: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; +CM.ConfigDefault = { + BotBar: 1, + TimerBar: 1, + TimerBarPos: 0, + BuildColor: 1, + BulkBuildColor: 0, + UpBarColor: 1, + CalcWrink: 0, + CPSMode: 1, + AvgCPSHist: 3, + AvgClicksHist: 0, + ToolWarnCautBon: 0, + GCFlash: 1, + GCSound: 1, + GCVolume: 100, + GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', + GCTimer: 1, + Favicon: 1, + SeaFlash: 1, + SeaSound: 1, + SeaVolume: 100, + SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', + Title: 1, + TooltipBuildUp: 1, + TooltipAmor: 0, + ToolWarnCaut: 1, + ToolWarnCautPos: 1, + TooltipGrim:1, + ToolWrink: 1, + Stats: 1, + UpStats: 1, + TimeFormat: 0, + SayTime: 1, + GrimoireBar: 1, + Scale: 2, + StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, + Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'} +}; CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.016'; @@ -2906,7 +2981,16 @@ CM.Sim.hasAura = function(what) { return false; } -eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString().split('Game.Has').join('CM.Sim.Has').split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades').split('me.synergies').join('Game.Objects[me.name].synergies').split('syn.buildingTie1.amount').join('CM.Sim.Objects[syn.buildingTie1.name].amount').split('syn.buildingTie2.amount').join('CM.Sim.Objects[syn.buildingTie2.name].amount').split('me.grandma').join('Game.Objects[me.name].grandma').split('me.id').join('Game.Objects[me.name].id').split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']')); +eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() + .split('Game.Has').join('CM.Sim.Has') + .split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades') + .split('me.synergies').join('Game.Objects[me.name].synergies') + .split('syn.buildingTie1.amount').join('CM.Sim.Objects[syn.buildingTie1.name].amount') + .split('syn.buildingTie2.amount').join('CM.Sim.Objects[syn.buildingTie2.name].amount') + .split('me.grandma').join('Game.Objects[me.name].grandma') + .split('me.id').join('Game.Objects[me.name].id') + .split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']') +); CM.Sim.getCPSBuffMult = function() { var mult = 1; diff --git a/src/Config.js b/src/Config.js index f709f88..b1de8be 100644 --- a/src/Config.js +++ b/src/Config.js @@ -120,23 +120,42 @@ CM.ConfigData.TimerBarPos = {label: ['Timer Bar Position (Top Left)', 'Timer Bar CM.ConfigData.BuildColor = {label: ['Building Colors OFF', 'Building Colors ON'], desc: 'Color code buildings', toggle: true, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.BulkBuildColor = {label: ['Bulk Building Colors (Single Buildings Color)', 'Bulk Building Colors (Calculated Color)'], desc: 'Color code bulk buildings based on single buildings color or calculated bulk value color', toggle: false, func: function() {CM.Disp.UpdateBuildings();}}; CM.ConfigData.UpBarColor = {label: ['Upgrade Bar/Colors OFF', 'Upgrade Bar/Colors ON'], desc: 'Color code upgrades and add a counter', toggle: true, func: function() {CM.Disp.ToggleUpBarColor();}}; -CM.ConfigData.Colors = {desc: {Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', Brown: 'Color Brown. Used for Dragon Harvest bar'}, func: function() {CM.Disp.UpdateColors();}}; +CM.ConfigData.Colors = { + desc: { + Blue: 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', + Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', + Yellow: 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', + Orange: 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', + Red: 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', + Purple: 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', + Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', + Pink: 'Color Pink. Used for Dragonflight bar', + Brown: 'Color Brown. Used for Dragon Harvest bar' + }, + func: function() {CM.Disp.UpdateColors();} +}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 10s', 'Average CPS for past 15s', 'Average CPS for past 30s', 'Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false}; CM.ConfigData.AvgClicksHist = {label: ['Average Cookie Clicks for past 1s', 'Average Cookie Clicks for past 5s', 'Average Cookie Clicks for past 10s', 'Average Cookie Clicks for past 15s', 'Average Cookie Clicks for past 30s'], desc: 'How much time average Cookie Clicks should consider', toggle: false}; CM.ConfigData.ToolWarnCautBon = {label: ['Calculate Tooltip Warning/Caution With Bonus CPS OFF', 'Calculate Tooltip Warning/Caution With Bonus CPS ON'], desc: 'Calculate the warning/caution with or without the bonus CPS you get from buying', toggle: true}; -CM.ConfigData.Flash = {label: ['Flash OFF', 'Flash ON'], desc: 'Flash screen on Golden Cookie/Season Popup', toggle: true}; -CM.ConfigData.Sound = {label: ['Sounds OFF', 'Sounds ON'], desc: 'Play a sound on Golden Cookie/Season Popup', toggle: true}; -CM.ConfigData.Volume = {label: [], desc: 'Volume of the sound'}; +CM.ConfigData.GCFlash = {label: ['Golden Cookie Flash OFF', 'Golden Cookie Flash ON'], desc: 'Flash screen on Golden Cookie', toggle: true}; +CM.ConfigData.GCSound = {label: ['Golden Cookie Sound OFF', 'Golden Cookie Sound ON'], desc: 'Play a sound on Golden Cookie', toggle: true}; +CM.ConfigData.GCVolume = {label: [], desc: 'Volume of the Golden Cookie sound'}; for (var i = 0; i < 101; i++) { - CM.ConfigData.Volume.label[i] = i + '%'; + CM.ConfigData.GCVolume.label[i] = i + '%'; } CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; -CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}}; -CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}}; +CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; +CM.ConfigData.SeaSound = {label: ['Season Special Sound OFF', 'Season Special Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; +CM.ConfigData.SeaVolume = {label: [], desc: 'Volume of the Season Special sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.SeaVolume.label[i] = i + '%'; +} +CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; +CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.TooltipBuildUp = {label: ['Buildings/Upgrades Tooltip Information OFF', 'Buildings/Upgrades Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true}; CM.ConfigData.TooltipAmor = {label: ['Buildings Tooltip Amortization Information OFF', 'Buildings Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true}; CM.ConfigData.ToolWarnCaut = {label: ['Tooltip Warning/Caution OFF', 'Tooltip Warning/Caution ON'], desc: 'A warning/caution when buying if it will put the bank under the amount needed for max "Lucky!"/"Lucky!" (Frenzy) rewards', toggle: true, func: function() {CM.Disp.ToggleToolWarnCaut();}}; diff --git a/src/Disp.js b/src/Disp.js index 8eeafe4..873ff2a 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -745,30 +745,30 @@ CM.Disp.CreateWhiteScreen = function() { l('wrapper').appendChild(CM.Disp.WhiteScreen); } -CM.Disp.Flash = function(mode) { - if ((CM.Config.Flash == 1 && mode == 3) || mode == 1) { +CM.Disp.Flash = function(mode, config) { + if ((CM.Config[config] == 1 && mode == 3) || mode == 1) { CM.Disp.WhiteScreen.style.opacity = '0.5'; if (mode == 3) { CM.Disp.WhiteScreen.style.display = 'inline'; - setTimeout(function() {CM.Disp.Flash(2);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(2, config);}, 1000/Game.fps); } else { - setTimeout(function() {CM.Disp.Flash(0);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(0, config);}, 1000/Game.fps); } } else if (mode == 2) { CM.Disp.WhiteScreen.style.opacity = '1'; - setTimeout(function() {CM.Disp.Flash(1);}, 1000/Game.fps); + setTimeout(function() {CM.Disp.Flash(1, config);}, 1000/Game.fps); } else if (mode == 0) { CM.Disp.WhiteScreen.style.display = 'none'; } } -CM.Disp.PlaySound = function(url) { - if (CM.Config.Sound == 1) { +CM.Disp.PlaySound = function(url, sndConfig, volConfig) { + if (CM.Config[sndConfig] == 1) { var sound = new realAudio(url); - sound.volume = CM.Config.Volume / 100; + sound.volume = CM.Config[volConfig] / 100; sound.play(); } } @@ -853,8 +853,8 @@ CM.Disp.CheckGoldenCookie = function() { CM.Disp.GCTimer.style.top = CM.Disp.goldenShimmer.l.style.top; } - CM.Disp.Flash(3); - CM.Disp.PlaySound(CM.Config.GCSoundURL); + CM.Disp.Flash(3, 'GCFlash'); + CM.Disp.PlaySound(CM.Config.GCSoundURL, 'GCSound', 'GCVolume'); } else if (CM.Config.GCTimer == 1) CM.Disp.GCTimer.style.display = 'none'; } @@ -878,8 +878,8 @@ CM.Disp.CheckSeasonPopup = function() { } } - CM.Disp.Flash(3); - CM.Disp.PlaySound(CM.Config.SeaSoundURL); + CM.Disp.Flash(3, 'SeaFlash'); + CM.Disp.PlaySound(CM.Config.SeaSoundURL, 'SeaSound', 'SeaVolume'); } } } @@ -1003,6 +1003,30 @@ CM.Disp.AddMenuPref = function(title) { div.appendChild(label); return div; } + + var vol = function(config) { + var volConfig = config; + var volume = document.createElement('div'); + volume.className = 'listing'; + var minus = document.createElement('a'); + minus.className = 'option'; + minus.onclick = function() {CM.ToggleConfigDown(volConfig);}; + minus.textContent = '-'; + volume.appendChild(minus); + var volText = document.createElement('span'); + volText.id = CM.ConfigPrefix + volConfig; + volText.textContent = CM.Disp.GetConfigDisplay(volConfig); + volume.appendChild(volText); + var plus = document.createElement('a'); + plus.className = 'option'; + plus.onclick = function() {CM.ToggleConfigUp(volConfig);}; + plus.textContent = '+'; + volume.appendChild(plus); + var volLabel = document.createElement('label'); + volLabel.textContent = CM.ConfigData[volConfig].desc; + volume.appendChild(volLabel); + return volume; + } var url = function(config) { var div = document.createElement('div'); @@ -1068,34 +1092,17 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('ToolWarnCautBon')); frag.appendChild(header('Golden Cookie/Season Popup Emphasis')); - frag.appendChild(listing('Flash')); - frag.appendChild(listing('Sound')); - var volConfig = 'Volume'; - var volume = document.createElement('div'); - volume.className = 'listing'; - var minus = document.createElement('a'); - minus.className = 'option'; - minus.onclick = function() {CM.ToggleConfigDown(volConfig);}; - minus.textContent = '-'; - volume.appendChild(minus); - var volText = document.createElement('span'); - volText.id = CM.ConfigPrefix + volConfig; - volText.textContent = CM.Disp.GetConfigDisplay(volConfig); - volume.appendChild(volText); - var plus = document.createElement('a'); - plus.className = 'option'; - plus.onclick = function() {CM.ToggleConfigUp(volConfig);}; - plus.textContent = '+'; - volume.appendChild(plus); - var volLabel = document.createElement('label'); - volLabel.textContent = CM.ConfigData[volConfig].desc; - volume.appendChild(volLabel); - frag.appendChild(volume); + frag.appendChild(listing('GCFlash')); + frag.appendChild(listing('GCSound')); + frag.appendChild(vol('GCVolume')); frag.appendChild(url('GCSoundURL')); - frag.appendChild(url('SeaSoundURL')); frag.appendChild(listing('GCTimer')); - frag.appendChild(listing('Title')); frag.appendChild(listing('Favicon')); + frag.appendChild(listing('SeaFlash')); + frag.appendChild(listing('SeaSound')); + frag.appendChild(vol('SeaVolume')); + frag.appendChild(url('SeaSoundURL')); + frag.appendChild(listing('Title')); frag.appendChild(header('Tooltip')); frag.appendChild(listing('TooltipBuildUp')); @@ -1126,7 +1133,8 @@ CM.Disp.AddMenuPref = function(title) { l('menu').childNodes[2].insertBefore(frag, l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1]); CM.Disp.FormatButtonOnClickBak = l('formatButton').onclick; - l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON', '1'); PlaySound('snd/tick.mp3'); CM.Disp.RefreshScale();}; + eval('l(\'formatButton\').onclick = ' + l('formatButton').onclick.toString().split('mp3\');').join('mp3\'); CM.Disp.RefreshScale();')); + //l('formatButton').onclick = function() {Game.Toggle('format', 'formatButton', 'Short numbers OFF', 'Short numbers ON', '1'); PlaySound('snd/tick.mp3'); CM.Disp.RefreshScale();}; } CM.Disp.AddMenuStats = function(title) { @@ -1470,7 +1478,10 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(header('Miscellaneous', 'Misc')); if (CM.Config.StatsPref.Misc) { - stats.appendChild(listing('Average Cookies Per Second (Past ' + (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] < 60 ? (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] + ' seconds') : ((CM.Disp.cookieTimes[CM.Config.AvgCPSHist] / 60) + (CM.Config.AvgCPSHist == 3 ? ' minute' : ' minutes'))) + ')', document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)))); + stats.appendChild(listing( + 'Average Cookies Per Second (Past ' + (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] < 60 ? (CM.Disp.cookieTimes[CM.Config.AvgCPSHist] + ' seconds') : ((CM.Disp.cookieTimes[CM.Config.AvgCPSHist] / 60) + (CM.Config.AvgCPSHist == 3 ? ' minute' : ' minutes'))) + ')', + document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)) + )); stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.clickTimes[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1)))); stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks)))); } @@ -1636,7 +1647,9 @@ CM.Disp.Tooltip = function(type, name) { var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); var amortizeAmount = buildPrice - Game.Objects[name].totalCookies; if (amortizeAmount > 0) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split('so far').join('so far
' + Beautify(amortizeAmount) + ' ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')'); + l('tooltip').innerHTML = l('tooltip').innerHTML + .split('so far') + .join('so far
' + Beautify(amortizeAmount) + ' ' + (Math.floor(amortizeAmount) == 1 ? 'cookie' : 'cookies') + ' left to amortize (' + CM.Disp.GetTimeColor(buildPrice, Game.Objects[name].totalCookies, (Game.Objects[name].storedTotalCps * Game.globalCpsMult)).text + ')'); } } if (Game.buyMode == 1) { @@ -2013,3 +2026,12 @@ for (var i in Game.wrinklers) { CM.Disp.TooltipWrinklerCache[i] = 0; } +CM.Disp.TooltipText = [ + ['GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'], + ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '380px'], + ['NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'], + ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'], + ['ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'], + ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '280px'] +]; + diff --git a/src/Main.js b/src/Main.js index 21ee541..c256c03 100644 --- a/src/Main.js +++ b/src/Main.js @@ -216,12 +216,9 @@ CM.DelayInit = function() { CM.Disp.CreateWhiteScreen(); CM.Disp.CreateFavicon(); CM.Disp.CreateGCTimer(); - CM.Disp.CreateTooltip('GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'); - CM.Disp.CreateTooltip('PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '370px'); - CM.Disp.CreateTooltip('NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'); - CM.Disp.CreateTooltip('HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'); - CM.Disp.CreateTooltip('ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'); - CM.Disp.CreateTooltip('ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '360px'); + for (var i in CM.Disp.TooltipText) { + CM.Disp.CreateTooltip(CM.Disp.TooltipText[i][0], CM.Disp.TooltipText[i][1], CM.Disp.TooltipText[i][2]); + } CM.Disp.CreateTooltipWarnCaut(); CM.Disp.AddTooltipBuild(); CM.Disp.AddTooltipGrimoire(); @@ -244,7 +241,44 @@ CM.DelayInit = function() { CM.HasReplaceNativeGrimoireLaunch = false; CM.HasReplaceNativeGrimoireDraw = false; -CM.ConfigDefault = {BotBar: 1, TimerBar: 1, TimerBarPos: 0, BuildColor: 1, BulkBuildColor: 0, UpBarColor: 1, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 3, AvgClicksHist: 0, ToolWarnCautBon: 0, Flash: 1, Sound: 1, Volume: 100, GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', GCTimer: 1, Title: 1, Favicon: 1, TooltipBuildUp: 1, TooltipAmor: 0, ToolWarnCaut: 1, ToolWarnCautPos: 1, TooltipGrim:1, ToolWrink: 1, Stats: 1, UpStats: 1, TimeFormat: 0, SayTime: 1, GrimoireBar: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}}; +CM.ConfigDefault = { + BotBar: 1, + TimerBar: 1, + TimerBarPos: 0, + BuildColor: 1, + BulkBuildColor: 0, + UpBarColor: 1, + CalcWrink: 0, + CPSMode: 1, + AvgCPSHist: 3, + AvgClicksHist: 0, + ToolWarnCautBon: 0, + GCFlash: 1, + GCSound: 1, + GCVolume: 100, + GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', + GCTimer: 1, + Favicon: 1, + SeaFlash: 1, + SeaSound: 1, + SeaVolume: 100, + SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', + Title: 1, + TooltipBuildUp: 1, + TooltipAmor: 0, + ToolWarnCaut: 1, + ToolWarnCautPos: 1, + TooltipGrim:1, + ToolWrink: 1, + Stats: 1, + UpStats: 1, + TimeFormat: 0, + SayTime: 1, + GrimoireBar: 1, + Scale: 2, + StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, + Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'} +}; CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.016'; diff --git a/src/Sim.js b/src/Sim.js index 8686781..b5ce315 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -85,7 +85,16 @@ CM.Sim.hasAura = function(what) { return false; } -eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString().split('Game.Has').join('CM.Sim.Has').split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades').split('me.synergies').join('Game.Objects[me.name].synergies').split('syn.buildingTie1.amount').join('CM.Sim.Objects[syn.buildingTie1.name].amount').split('syn.buildingTie2.amount').join('CM.Sim.Objects[syn.buildingTie2.name].amount').split('me.grandma').join('Game.Objects[me.name].grandma').split('me.id').join('Game.Objects[me.name].id').split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']')); +eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() + .split('Game.Has').join('CM.Sim.Has') + .split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades') + .split('me.synergies').join('Game.Objects[me.name].synergies') + .split('syn.buildingTie1.amount').join('CM.Sim.Objects[syn.buildingTie1.name].amount') + .split('syn.buildingTie2.amount').join('CM.Sim.Objects[syn.buildingTie2.name].amount') + .split('me.grandma').join('Game.Objects[me.name].grandma') + .split('me.id').join('Game.Objects[me.name].id') + .split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']') +); CM.Sim.getCPSBuffMult = function() { var mult = 1; From 9f2a7cda7846fdfda23a2544a7185f38038a9803 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Fri, 14 Dec 2018 17:50:27 -0500 Subject: [PATCH 05/35] Added notification on garden tick (based on @doorajar code) (Issue #180) and minor code formatting cleanup --- CookieMonster.js | 35 ++++++++++++++++++++++++++++++++--- src/Config.js | 7 +++++++ src/Disp.js | 21 ++++++++++++++++++--- src/Main.js | 7 +++++++ 4 files changed, 64 insertions(+), 6 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 8546754..ab91ba4 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -549,6 +549,13 @@ for (var i = 0; i < 101; i++) { CM.ConfigData.SeaVolume.label[i] = i + '%'; } CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; +CM.ConfigData.GardFlash = {label: ['Garden Tick Flash OFF', 'Garden Tick Flash ON'], desc: 'Flash screen on Garden Tick', toggle: true}; +CM.ConfigData.GardSound = {label: ['Garden Tick Sound OFF', 'Garden Tick Sound ON'], desc: 'Play a sound on Garden Tick', toggle: true}; +CM.ConfigData.GardVolume = {label: [], desc: 'Volume of the Garden Tick sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.GardVolume.label[i] = i + '%'; +} +CM.ConfigData.GardSoundURL = {label: 'Garden Tick Sound URL:', desc: 'URL of the sound to be played when the garden ticks'}; CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.TooltipBuildUp = {label: ['Buildings/Upgrades Tooltip Information OFF', 'Buildings/Upgrades Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true}; CM.ConfigData.TooltipAmor = {label: ['Buildings Tooltip Amortization Information OFF', 'Buildings Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true}; @@ -1457,6 +1464,16 @@ CM.Disp.CheckSeasonPopup = function() { } } +CM.Disp.CheckGardenTick = function() { + if (Game.Objects['Farm'].minigameLoaded && CM.Disp.lastGardenNextStep != Game.Objects['Farm'].minigame.nextStep) { + if (CM.Disp.lastGardenNextStep != 0 && CM.Disp.lastGardenNextStep < Date.now()) { + CM.Disp.Flash(3, 'GardFlash'); + CM.Disp.PlaySound(CM.Config.GardSoundURL, 'GardSound', 'GardVolume'); + } + CM.Disp.lastGardenNextStep = Game.Objects['Farm'].minigame.nextStep; + } +} + CM.Disp.UpdateTitle = function() { if (Game.OnAscend || CM.Config.Title == 0) { document.title = CM.Cache.Title; @@ -1480,7 +1497,7 @@ CM.Disp.UpdateTitle = function() { else { titleGC = '[GS]' } - if (Game.season=='christmas') { + if (Game.season == 'christmas') { addSP = true; if (CM.Disp.lastSeasonPopupState) { titleSP = '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; @@ -1509,7 +1526,7 @@ CM.Disp.UpdateTitle = function() { str += '[G ' + Math.ceil(CM.Disp.goldenShimmer.life / Game.fps) + ']'; } } - if (Game.season=='christmas' && CM.Disp.lastSeasonPopupState) { + if (Game.season == 'christmas' && CM.Disp.lastSeasonPopupState) { str += '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; spawn = true; } @@ -1664,7 +1681,7 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('AvgClicksHist')); frag.appendChild(listing('ToolWarnCautBon')); - frag.appendChild(header('Golden Cookie/Season Popup Emphasis')); + frag.appendChild(header('Notification')); frag.appendChild(listing('GCFlash')); frag.appendChild(listing('GCSound')); frag.appendChild(vol('GCVolume')); @@ -1675,6 +1692,10 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); frag.appendChild(url('SeaSoundURL')); + frag.appendChild(listing('GardFlash')); + frag.appendChild(listing('GardSound')); + frag.appendChild(vol('GardVolume')); + frag.appendChild(url('GardSoundURL')); frag.appendChild(listing('Title')); frag.appendChild(header('Tooltip')); @@ -2582,6 +2603,7 @@ CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM CM.Disp.buffColors = {'Frenzy': CM.Disp.colorYellow, 'Dragon Harvest': CM.Disp.colorBrown, 'Elder frenzy': CM.Disp.colorGreen, 'Clot': CM.Disp.colorRed, 'Click frenzy': CM.Disp.colorBlue, 'Dragonflight': CM.Disp.colorPink}; CM.Disp.lastGoldenCookieState = 0; CM.Disp.lastSeasonPopupState = 0; +CM.Disp.lastGardenNextStep = 0; CM.Disp.goldenShimmer; CM.Disp.seasonPopShimmer; CM.Disp.lastAscendState = -1; @@ -2795,6 +2817,9 @@ CM.Loop = function() { // Check Season Popup CM.Disp.CheckSeasonPopup(); + // Check Garden Tick + CM.Disp.CheckGardenTick(); + // Update Average CPS (might need to move) CM.Cache.UpdateAvgCPS() } @@ -2873,6 +2898,10 @@ CM.ConfigDefault = { SeaSound: 1, SeaVolume: 100, SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', + GardFlash: 1, + GardSound: 1, + GardVolume: 100, + GardSoundURL: 'https://freesound.org/data/previews/103/103046_861714-lq.mp3', Title: 1, TooltipBuildUp: 1, TooltipAmor: 0, diff --git a/src/Config.js b/src/Config.js index b1de8be..9c83a6a 100644 --- a/src/Config.js +++ b/src/Config.js @@ -155,6 +155,13 @@ for (var i = 0; i < 101; i++) { CM.ConfigData.SeaVolume.label[i] = i + '%'; } CM.ConfigData.SeaSoundURL = {label: 'Season Special Sound URL:', desc: 'URL of the sound to be played when a Season Special spawns'}; +CM.ConfigData.GardFlash = {label: ['Garden Tick Flash OFF', 'Garden Tick Flash ON'], desc: 'Flash screen on Garden Tick', toggle: true}; +CM.ConfigData.GardSound = {label: ['Garden Tick Sound OFF', 'Garden Tick Sound ON'], desc: 'Play a sound on Garden Tick', toggle: true}; +CM.ConfigData.GardVolume = {label: [], desc: 'Volume of the Garden Tick sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.GardVolume.label[i] = i + '%'; +} +CM.ConfigData.GardSoundURL = {label: 'Garden Tick Sound URL:', desc: 'URL of the sound to be played when the garden ticks'}; CM.ConfigData.Title = {label: ['Title OFF', 'Title ON', 'Title Pinned Tab Highlight'], desc: 'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns', toggle: true}; CM.ConfigData.TooltipBuildUp = {label: ['Buildings/Upgrades Tooltip Information OFF', 'Buildings/Upgrades Tooltip Information ON'], desc: 'Extra information in tooltip for buildings/upgrades', toggle: true}; CM.ConfigData.TooltipAmor = {label: ['Buildings Tooltip Amortization Information OFF', 'Buildings Tooltip Amortization Information ON'], desc: 'Add amortization information to buildings tooltip', toggle: true}; diff --git a/src/Disp.js b/src/Disp.js index 873ff2a..dfcde43 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -884,6 +884,16 @@ CM.Disp.CheckSeasonPopup = function() { } } +CM.Disp.CheckGardenTick = function() { + if (Game.Objects['Farm'].minigameLoaded && CM.Disp.lastGardenNextStep != Game.Objects['Farm'].minigame.nextStep) { + if (CM.Disp.lastGardenNextStep != 0 && CM.Disp.lastGardenNextStep < Date.now()) { + CM.Disp.Flash(3, 'GardFlash'); + CM.Disp.PlaySound(CM.Config.GardSoundURL, 'GardSound', 'GardVolume'); + } + CM.Disp.lastGardenNextStep = Game.Objects['Farm'].minigame.nextStep; + } +} + CM.Disp.UpdateTitle = function() { if (Game.OnAscend || CM.Config.Title == 0) { document.title = CM.Cache.Title; @@ -907,7 +917,7 @@ CM.Disp.UpdateTitle = function() { else { titleGC = '[GS]' } - if (Game.season=='christmas') { + if (Game.season == 'christmas') { addSP = true; if (CM.Disp.lastSeasonPopupState) { titleSP = '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; @@ -936,7 +946,7 @@ CM.Disp.UpdateTitle = function() { str += '[G ' + Math.ceil(CM.Disp.goldenShimmer.life / Game.fps) + ']'; } } - if (Game.season=='christmas' && CM.Disp.lastSeasonPopupState) { + if (Game.season == 'christmas' && CM.Disp.lastSeasonPopupState) { str += '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; spawn = true; } @@ -1091,7 +1101,7 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('AvgClicksHist')); frag.appendChild(listing('ToolWarnCautBon')); - frag.appendChild(header('Golden Cookie/Season Popup Emphasis')); + frag.appendChild(header('Notification')); frag.appendChild(listing('GCFlash')); frag.appendChild(listing('GCSound')); frag.appendChild(vol('GCVolume')); @@ -1102,6 +1112,10 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); frag.appendChild(url('SeaSoundURL')); + frag.appendChild(listing('GardFlash')); + frag.appendChild(listing('GardSound')); + frag.appendChild(vol('GardVolume')); + frag.appendChild(url('GardSoundURL')); frag.appendChild(listing('Title')); frag.appendChild(header('Tooltip')); @@ -2009,6 +2023,7 @@ CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM CM.Disp.buffColors = {'Frenzy': CM.Disp.colorYellow, 'Dragon Harvest': CM.Disp.colorBrown, 'Elder frenzy': CM.Disp.colorGreen, 'Clot': CM.Disp.colorRed, 'Click frenzy': CM.Disp.colorBlue, 'Dragonflight': CM.Disp.colorPink}; CM.Disp.lastGoldenCookieState = 0; CM.Disp.lastSeasonPopupState = 0; +CM.Disp.lastGardenNextStep = 0; CM.Disp.goldenShimmer; CM.Disp.seasonPopShimmer; CM.Disp.lastAscendState = -1; diff --git a/src/Main.js b/src/Main.js index c256c03..d050e8f 100644 --- a/src/Main.js +++ b/src/Main.js @@ -185,6 +185,9 @@ CM.Loop = function() { // Check Season Popup CM.Disp.CheckSeasonPopup(); + // Check Garden Tick + CM.Disp.CheckGardenTick(); + // Update Average CPS (might need to move) CM.Cache.UpdateAvgCPS() } @@ -263,6 +266,10 @@ CM.ConfigDefault = { SeaSound: 1, SeaVolume: 100, SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3', + GardFlash: 1, + GardSound: 1, + GardVolume: 100, + GardSoundURL: 'https://freesound.org/data/previews/103/103046_861714-lq.mp3', Title: 1, TooltipBuildUp: 1, TooltipAmor: 0, From ab7f35e6d98d5ffd9135bb5166a58343f9c57279 Mon Sep 17 00:00:00 2001 From: Scott Crunkleton Date: Wed, 20 Feb 2019 01:15:54 -0700 Subject: [PATCH 06/35] Change vanilla favicon URLs to https. --- CookieMonster.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 80ea6ae..869002d 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -1345,7 +1345,7 @@ CM.Disp.CreateFavicon = function() { CM.Disp.Favicon = document.createElement('link'); CM.Disp.Favicon.id = 'CMFavicon'; CM.Disp.Favicon.rel = 'shortcut icon'; - CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico'; + CM.Disp.Favicon.href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; document.getElementsByTagName('head')[0].appendChild(CM.Disp.Favicon); } @@ -1359,7 +1359,7 @@ CM.Disp.UpdateFavicon = function() { } } else { - CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico'; + CM.Disp.Favicon.href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; } } From 7d5e3ee4373522de87ec186a4fdb5dbd878add55 Mon Sep 17 00:00:00 2001 From: florensie Date: Wed, 20 Feb 2019 11:24:39 +0100 Subject: [PATCH 07/35] Add https inclusion to userscript The game wouldn't load with the default http include when using https on the cookie clicker page. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5457758..72ba7c1 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ If you'd rather use the addon as a script via per example *Greasemonkey* or *Tam // @name Cookie Monster // @namespace Cookie // @include http://orteil.dashnet.org/cookieclicker/ +// @include https://orteil.dashnet.org/cookieclicker/ // @version 1 // @grant none // ==/UserScript== @@ -99,6 +100,7 @@ If you are using the beta, use this instead: // @name Cookie Monster Beta // @namespace Cookie // @include http://orteil.dashnet.org/cookieclicker/beta/ +// @include https://orteil.dashnet.org/cookieclicker/ // @version 1 // @grant none // ==/UserScript== @@ -139,4 +141,4 @@ All suggestions are welcome, even the smallest ones. * **[Alhifar](https://github.com/Alhifar)**: Missed Golden Cookie Stat * **[BlackenedGem](https://github.com/BlackenedGem)**: Golden/Wrath Cookie Favicons * **[Sandworm](https://github.com/svschouw)**: Modified PP calculation -* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer \ No newline at end of file +* **[Aktanusa](https://github.com/Aktanusa)**: Current maintainer From 77421c11c0e274506550429cb43d8f178b64d3ef Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Tue, 12 Mar 2019 20:38:30 -0400 Subject: [PATCH 08/35] Change to Version 2.018.1 --- CookieMonster.js | 4 ++-- src/Main.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index ab91ba4..9f1f183 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2920,8 +2920,8 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.016'; -CM.VersionMinor = '2'; +CM.VersionMajor = '2.018'; +CM.VersionMinor = '1'; /******* * Sim * diff --git a/src/Main.js b/src/Main.js index d050e8f..e78d732 100644 --- a/src/Main.js +++ b/src/Main.js @@ -288,6 +288,6 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.016'; -CM.VersionMinor = '2'; +CM.VersionMajor = '2.018'; +CM.VersionMinor = '1'; From 1f366430cfa7cc402ad0a21b84d0c952cde27972 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 13 Mar 2019 17:44:18 -0400 Subject: [PATCH 09/35] Fixed for Version 2.018 of Cookie Clicker (Issue #239 and #241) --- CookieMonster.js | 6 +++++- src/Sim.js | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 9f1f183..ba7d45f 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -3249,7 +3249,11 @@ CM.Sim.CalculateGains = function() { } mult *= goldenSwitchMult; } - if (CM.Sim.Has('Shimmering veil [off]')) mult *= 1.5; + if (CM.Sim.Has('Shimmering veil [off]')) { + var veilMult = 0.5; + if (CM.Sim.Has('Reinforced membrane')) veilMult += 0.1; + mult *= 1 + veilMult; + } // Removed debug upgrades // Removed buffs diff --git a/src/Sim.js b/src/Sim.js index b5ce315..82a3773 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -324,7 +324,11 @@ CM.Sim.CalculateGains = function() { } mult *= goldenSwitchMult; } - if (CM.Sim.Has('Shimmering veil [off]')) mult *= 1.5; + if (CM.Sim.Has('Shimmering veil [off]')) { + var veilMult = 0.5; + if (CM.Sim.Has('Reinforced membrane')) veilMult += 0.1; + mult *= 1 + veilMult; + } // Removed debug upgrades // Removed buffs From 9a8f1bdb863e8974ef20800fc3582211986cbd38 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 13 Mar 2019 17:52:05 -0400 Subject: [PATCH 10/35] Fixed https link in beta userscript in the README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 72ba7c1..c142a8f 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ If you are using the beta, use this instead: // @name Cookie Monster Beta // @namespace Cookie // @include http://orteil.dashnet.org/cookieclicker/beta/ -// @include https://orteil.dashnet.org/cookieclicker/ +// @include https://orteil.dashnet.org/cookieclicker/beta/ // @version 1 // @grant none // ==/UserScript== From f359999f9b327796ff85ff1bb32aa61164e9d5ea Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 13 Mar 2019 18:06:09 -0400 Subject: [PATCH 11/35] Applied pull request #233 patch to the source also --- src/Disp.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Disp.js b/src/Disp.js index dfcde43..ce4f87e 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -791,7 +791,7 @@ CM.Disp.CreateFavicon = function() { CM.Disp.Favicon = document.createElement('link'); CM.Disp.Favicon.id = 'CMFavicon'; CM.Disp.Favicon.rel = 'shortcut icon'; - CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico'; + CM.Disp.Favicon.href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; document.getElementsByTagName('head')[0].appendChild(CM.Disp.Favicon); } @@ -805,7 +805,7 @@ CM.Disp.UpdateFavicon = function() { } } else { - CM.Disp.Favicon.href = 'http://orteil.dashnet.org/cookieclicker/favicon.ico'; + CM.Disp.Favicon.href = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; } } From 9b0f416a029a3055ba68ab9bdd32ef1fe2ddc901 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 13 Mar 2019 19:04:20 -0400 Subject: [PATCH 12/35] Fixed Century Egg tooltip sometimes show wrong income (Issue #232) --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 683acee..13a1ba9 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2643,7 +2643,7 @@ CM.ReplaceNative = function() { Beautify = CM.Disp.Beautify; CM.Backup.CalculateGains = Game.CalculateGains; - eval('CM.Backup.CalculateGainsMod = ' + Game.CalculateGains.toString().split('ages\');').join('ages\');CM.Sim.DateAges = Date.now();').split('var day').join('CM.Sim.DateCentury = Date.now();var day')); + eval('CM.Backup.CalculateGainsMod = ' + Game.CalculateGains.toString().split('ages\');').join('ages\');CM.Sim.DateAges = Date.now();').split('if (Game.Has(\'Century').join('CM.Sim.DateCentury = Date.now();if (Game.Has(\'Century')); Game.CalculateGains = function() { CM.Backup.CalculateGainsMod(); CM.Sim.DoSims = 1; diff --git a/src/Main.js b/src/Main.js index e78d732..4f8c444 100644 --- a/src/Main.js +++ b/src/Main.js @@ -7,7 +7,7 @@ CM.ReplaceNative = function() { Beautify = CM.Disp.Beautify; CM.Backup.CalculateGains = Game.CalculateGains; - eval('CM.Backup.CalculateGainsMod = ' + Game.CalculateGains.toString().split('ages\');').join('ages\');CM.Sim.DateAges = Date.now();').split('var day').join('CM.Sim.DateCentury = Date.now();var day')); + eval('CM.Backup.CalculateGainsMod = ' + Game.CalculateGains.toString().split('ages\');').join('ages\');CM.Sim.DateAges = Date.now();').split('if (Game.Has(\'Century').join('CM.Sim.DateCentury = Date.now();if (Game.Has(\'Century')); Game.CalculateGains = function() { CM.Backup.CalculateGainsMod(); CM.Sim.DoSims = 1; From d0f5a5594bf1e45a5ae0970ff082a8d6a723b6b9 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 13 Mar 2019 22:43:41 -0400 Subject: [PATCH 13/35] Fixed display of cookie clicks being lower after loading Cookie Monster (Issue #238) --- CookieMonster.js | 4 ++++ src/Main.js | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/CookieMonster.js b/CookieMonster.js index 13a1ba9..e69698c 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2675,6 +2675,10 @@ CM.ReplaceNative = function() { CM.Disp.FixMouseY(CM.Backup.UpdateSpecial); } + // Assumes newer browsers + l('bigCookie').removeEventListener('click', Game.ClickCookie, false); + l('bigCookie').addEventListener('click', function() { CM.Disp.FixMouseY(Game.ClickCookie); }, false); + // Probably better to load per minigame CM.Backup.scriptLoaded = Game.scriptLoaded; Game.scriptLoaded = function(who, script) { diff --git a/src/Main.js b/src/Main.js index 4f8c444..e4a543d 100644 --- a/src/Main.js +++ b/src/Main.js @@ -39,6 +39,10 @@ CM.ReplaceNative = function() { CM.Disp.FixMouseY(CM.Backup.UpdateSpecial); } + // Assumes newer browsers + l('bigCookie').removeEventListener('click', Game.ClickCookie, false); + l('bigCookie').addEventListener('click', function() { CM.Disp.FixMouseY(Game.ClickCookie); }, false); + // Probably better to load per minigame CM.Backup.scriptLoaded = Game.scriptLoaded; Game.scriptLoaded = function(who, script) { From 9937efddb6b6158345806d53535c898f031897fc Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Mon, 1 Apr 2019 13:26:48 -0400 Subject: [PATCH 14/35] Change to Version 2.019.1 --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index e69698c..8aa733b 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2928,7 +2928,7 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.018'; +CM.VersionMajor = '2.019'; CM.VersionMinor = '1'; /******* diff --git a/src/Main.js b/src/Main.js index e4a543d..4a87586 100644 --- a/src/Main.js +++ b/src/Main.js @@ -292,6 +292,6 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.018'; +CM.VersionMajor = '2.019'; CM.VersionMinor = '1'; From 108a0d836d14c3160958ecf92cab52ea1832046f Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Fri, 4 Oct 2019 21:02:37 -0400 Subject: [PATCH 15/35] Change to Version 2.021.1 --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 8aa733b..eb2c36b 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2928,7 +2928,7 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.019'; +CM.VersionMajor = '2.021'; CM.VersionMinor = '1'; /******* diff --git a/src/Main.js b/src/Main.js index 4a87586..2b4843d 100644 --- a/src/Main.js +++ b/src/Main.js @@ -292,6 +292,6 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.019'; +CM.VersionMajor = '2.021'; CM.VersionMinor = '1'; From 3ff3b970a0b87cc719c12ba5c199b2a428353324 Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Fri, 4 Oct 2019 23:42:05 -0600 Subject: [PATCH 16/35] Fortune Cookie Effects configuration --- src/Config.js | 7 +++++++ src/Main.js | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/src/Config.js b/src/Config.js index 63c6b18..a75f8f8 100644 --- a/src/Config.js +++ b/src/Config.js @@ -148,6 +148,13 @@ for (var i = 0; i < 101; i++) { CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}}; CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}}; +CM.ConfigData.FortuneFlash = {label: ['Fortune Cookie Flash OFF', 'Fortune Cookie Flash ON'], desc: 'Flash screen on Fortune Cookie', toggle: true}; +CM.ConfigData.FortuneSound = {label: ['Fortune Cookie Sound OFF', 'Fortune Cookie Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; +CM.ConfigData.FortuneVolume = {label: [], desc: 'Volume of the Fortune Cookie sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.FortuneVolume.label[i] = i + '%'; +} +CM.ConfigData.FortuneSoundURL = {label: 'Fortune Cookie Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; CM.ConfigData.SeaSound = {label: ['Season Special Sound OFF', 'Season Special Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; CM.ConfigData.SeaVolume = {label: [], desc: 'Volume of the Season Special sound'}; diff --git a/src/Main.js b/src/Main.js index 4a87586..34bb595 100644 --- a/src/Main.js +++ b/src/Main.js @@ -266,6 +266,10 @@ CM.ConfigDefault = { GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', GCTimer: 1, Favicon: 1, + FortuneFlash: 1, + FortuneSound: 1, + FortuneVolume: 100, + FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, From 8e2777df0eea0b0e32d427e3659d8520e19ced8e Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Fri, 4 Oct 2019 23:44:33 -0600 Subject: [PATCH 17/35] more Fortune Cookie config stuff --- src/Disp.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Disp.js b/src/Disp.js index 4197b76..8bdff76 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -1112,6 +1112,10 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(url('GCSoundURL')); frag.appendChild(listing('GCTimer')); frag.appendChild(listing('Favicon')); + frag.appendChild(listing('FortuneFlash')); + frag.appendChild(listing('FortuneSound')); + frag.appendChild(vol('FortuneVolume')); + frag.appendChild(url('FortuneSoundURL')); frag.appendChild(listing('SeaFlash')); frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); From 8af54cfe8c302f4ccc9cb49babcc6d50dcb25352 Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Fri, 4 Oct 2019 23:46:42 -0600 Subject: [PATCH 18/35] Fortune Cookie checker function and added to the main loop --- src/Disp.js | 10 ++++++++++ src/Main.js | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/Disp.js b/src/Disp.js index 8bdff76..c8f98be 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -869,6 +869,15 @@ CM.Disp.CheckGoldenCookie = function() { } } +CM.Disp.CheckTickerFortune = function() { + if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { + CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); + if (CM.Disp.lastTickerFortuneState) { + CM.Disp.Flash(3, 'FortuneFlash'); + CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); + } + } +} CM.Disp.CheckSeasonPopup = function() { if (CM.Disp.lastSeasonPopupState != Game.shimmerTypes['reindeer'].spawned) { @@ -2030,6 +2039,7 @@ CM.Disp.colorBrown = 'Brown'; CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM.Disp.colorOrange, CM.Disp.colorRed, CM.Disp.colorPurple, CM.Disp.colorGray, CM.Disp.colorPink, CM.Disp.colorBrown]; CM.Disp.buffColors = {'Frenzy': CM.Disp.colorYellow, 'Dragon Harvest': CM.Disp.colorBrown, 'Elder frenzy': CM.Disp.colorGreen, 'Clot': CM.Disp.colorRed, 'Click frenzy': CM.Disp.colorBlue, 'Dragonflight': CM.Disp.colorPink}; CM.Disp.lastGoldenCookieState = 0; +CM.Disp.lastTickerFortuneState = 0; CM.Disp.lastSeasonPopupState = 0; CM.Disp.lastGardenNextStep = 0; CM.Disp.goldenShimmer; diff --git a/src/Main.js b/src/Main.js index 34bb595..75c5bb7 100644 --- a/src/Main.js +++ b/src/Main.js @@ -186,6 +186,9 @@ CM.Loop = function() { // Check Golden Cookies CM.Disp.CheckGoldenCookie(); + // Check Fortune Cookies + CM.Disp.CheckTickerFortune(); + // Check Season Popup CM.Disp.CheckSeasonPopup(); From 836804b3f957f2c7491e6a6560f4e6880f80f4f9 Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Fri, 4 Oct 2019 23:58:30 -0600 Subject: [PATCH 19/35] combine Fortune Cooke effect commits into CookieMonster.js --- CookieMonster.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CookieMonster.js b/CookieMonster.js index 8aa733b..ab60b8b 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -542,6 +542,13 @@ for (var i = 0; i < 101; i++) { CM.ConfigData.GCSoundURL = {label: 'Golden Cookie Sound URL:', desc: 'URL of the sound to be played when a Golden Cookie spawns'}; CM.ConfigData.GCTimer = {label: ['Golden Cookie Timer OFF', 'Golden Cookie Timer ON'], desc: 'A timer on the Golden Cookie when it has been spawned', toggle: true, func: function() {CM.Disp.ToggleGCTimer();}}; CM.ConfigData.Favicon = {label: ['Favicon OFF', 'Favicon ON'], desc: 'Update favicon with Golden/Wrath Cookie', toggle: true, func: function() {CM.Disp.UpdateFavicon();}}; +CM.ConfigData.FortuneFlash = {label: ['Fortune Cookie Flash OFF', 'Fortune Cookie Flash ON'], desc: 'Flash screen on Fortune Cookie', toggle: true}; +CM.ConfigData.FortuneSound = {label: ['Fortune Cookie Sound OFF', 'Fortune Cookie Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; +CM.ConfigData.FortuneVolume = {label: [], desc: 'Volume of the Fortune Cookie sound'}; +for (var i = 0; i < 101; i++) { + CM.ConfigData.FortuneVolume.label[i] = i + '%'; +} +CM.ConfigData.FortuneSoundURL = {label: 'Fortune Cookie Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; CM.ConfigData.SeaSound = {label: ['Season Special Sound OFF', 'Season Special Sound ON'], desc: 'Play a sound on Season Popup', toggle: true}; CM.ConfigData.SeaVolume = {label: [], desc: 'Volume of the Season Special sound'}; @@ -1449,6 +1456,15 @@ CM.Disp.CheckGoldenCookie = function() { } } +CM.Disp.CheckTickerFortune = function() { + if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { + CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); + if (CM.Disp.lastTickerFortuneState) { + CM.Disp.Flash(3, 'FortuneFlash'); + CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); + } + } +} CM.Disp.CheckSeasonPopup = function() { if (CM.Disp.lastSeasonPopupState != Game.shimmerTypes['reindeer'].spawned) { @@ -1692,6 +1708,10 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(url('GCSoundURL')); frag.appendChild(listing('GCTimer')); frag.appendChild(listing('Favicon')); + frag.appendChild(listing('FortuneFlash')); + frag.appendChild(listing('FortuneSound')); + frag.appendChild(vol('FortuneVolume')); + frag.appendChild(url('FortuneSoundURL')); frag.appendChild(listing('SeaFlash')); frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); @@ -2606,6 +2626,7 @@ CM.Disp.colorBrown = 'Brown'; CM.Disp.colors = [CM.Disp.colorBlue, CM.Disp.colorGreen, CM.Disp.colorYellow, CM.Disp.colorOrange, CM.Disp.colorRed, CM.Disp.colorPurple, CM.Disp.colorGray, CM.Disp.colorPink, CM.Disp.colorBrown]; CM.Disp.buffColors = {'Frenzy': CM.Disp.colorYellow, 'Dragon Harvest': CM.Disp.colorBrown, 'Elder frenzy': CM.Disp.colorGreen, 'Clot': CM.Disp.colorRed, 'Click frenzy': CM.Disp.colorBlue, 'Dragonflight': CM.Disp.colorPink}; CM.Disp.lastGoldenCookieState = 0; +CM.Disp.lastTickerFortuneState = 0; CM.Disp.lastSeasonPopupState = 0; CM.Disp.lastGardenNextStep = 0; CM.Disp.goldenShimmer; @@ -2822,6 +2843,9 @@ CM.Loop = function() { // Check Golden Cookies CM.Disp.CheckGoldenCookie(); + // Check Fortune Cookies + CM.Disp.CheckTickerFortune(); + // Check Season Popup CM.Disp.CheckSeasonPopup(); @@ -2902,6 +2926,10 @@ CM.ConfigDefault = { GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', GCTimer: 1, Favicon: 1, + FortuneFlash: 1, + FortuneSound: 1, + FortuneVolume: 100, + FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, From 431b1e6cd0c8636c913278f0c3e73c442b34b284 Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Sat, 5 Oct 2019 00:29:57 -0600 Subject: [PATCH 20/35] cleaned-up whitespace formatting to match the rest (tabs instead of spaces) --- CookieMonster.js | 30 +++++++++++++++--------------- src/Config.js | 2 +- src/Disp.js | 20 ++++++++++---------- src/Main.js | 8 ++++---- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index ab60b8b..e82666d 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -546,7 +546,7 @@ CM.ConfigData.FortuneFlash = {label: ['Fortune Cookie Flash OFF', 'Fortune Cooki CM.ConfigData.FortuneSound = {label: ['Fortune Cookie Sound OFF', 'Fortune Cookie Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneVolume = {label: [], desc: 'Volume of the Fortune Cookie sound'}; for (var i = 0; i < 101; i++) { - CM.ConfigData.FortuneVolume.label[i] = i + '%'; + CM.ConfigData.FortuneVolume.label[i] = i + '%'; } CM.ConfigData.FortuneSoundURL = {label: 'Fortune Cookie Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; @@ -1457,13 +1457,13 @@ CM.Disp.CheckGoldenCookie = function() { } CM.Disp.CheckTickerFortune = function() { - if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { - CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); - if (CM.Disp.lastTickerFortuneState) { - CM.Disp.Flash(3, 'FortuneFlash'); - CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); - } - } + if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { + CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); + if (CM.Disp.lastTickerFortuneState) { + CM.Disp.Flash(3, 'FortuneFlash'); + CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); + } + } } CM.Disp.CheckSeasonPopup = function() { @@ -1709,9 +1709,9 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('GCTimer')); frag.appendChild(listing('Favicon')); frag.appendChild(listing('FortuneFlash')); - frag.appendChild(listing('FortuneSound')); - frag.appendChild(vol('FortuneVolume')); - frag.appendChild(url('FortuneSoundURL')); + frag.appendChild(listing('FortuneSound')); + frag.appendChild(vol('FortuneVolume')); + frag.appendChild(url('FortuneSoundURL')); frag.appendChild(listing('SeaFlash')); frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); @@ -2926,10 +2926,10 @@ CM.ConfigDefault = { GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', GCTimer: 1, Favicon: 1, - FortuneFlash: 1, - FortuneSound: 1, - FortuneVolume: 100, - FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', + FortuneFlash: 1, + FortuneSound: 1, + FortuneVolume: 100, + FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, diff --git a/src/Config.js b/src/Config.js index a75f8f8..1598ebf 100644 --- a/src/Config.js +++ b/src/Config.js @@ -152,7 +152,7 @@ CM.ConfigData.FortuneFlash = {label: ['Fortune Cookie Flash OFF', 'Fortune Cooki CM.ConfigData.FortuneSound = {label: ['Fortune Cookie Sound OFF', 'Fortune Cookie Sound ON'], desc: 'Play a sound on Fortune Cookie', toggle: true}; CM.ConfigData.FortuneVolume = {label: [], desc: 'Volume of the Fortune Cookie sound'}; for (var i = 0; i < 101; i++) { - CM.ConfigData.FortuneVolume.label[i] = i + '%'; + CM.ConfigData.FortuneVolume.label[i] = i + '%'; } CM.ConfigData.FortuneSoundURL = {label: 'Fortune Cookie Sound URL:', desc: 'URL of the sound to be played when the Ticker has a Fortune Cookie'}; CM.ConfigData.SeaFlash = {label: ['Season Special Flash OFF', 'Season Special Flash ON'], desc: 'Flash screen on Season Popup', toggle: true}; diff --git a/src/Disp.js b/src/Disp.js index c8f98be..63caeba 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -870,13 +870,13 @@ CM.Disp.CheckGoldenCookie = function() { } CM.Disp.CheckTickerFortune = function() { - if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { - CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); - if (CM.Disp.lastTickerFortuneState) { - CM.Disp.Flash(3, 'FortuneFlash'); - CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); - } - } + if (CM.Disp.lastTickerFortuneState != (Game.TickerEffect && Game.TickerEffect.type == 'fortune')) { + CM.Disp.lastTickerFortuneState = (Game.TickerEffect && Game.TickerEffect.type == 'fortune'); + if (CM.Disp.lastTickerFortuneState) { + CM.Disp.Flash(3, 'FortuneFlash'); + CM.Disp.PlaySound(CM.Config.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); + } + } } CM.Disp.CheckSeasonPopup = function() { @@ -1122,9 +1122,9 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('GCTimer')); frag.appendChild(listing('Favicon')); frag.appendChild(listing('FortuneFlash')); - frag.appendChild(listing('FortuneSound')); - frag.appendChild(vol('FortuneVolume')); - frag.appendChild(url('FortuneSoundURL')); + frag.appendChild(listing('FortuneSound')); + frag.appendChild(vol('FortuneVolume')); + frag.appendChild(url('FortuneSoundURL')); frag.appendChild(listing('SeaFlash')); frag.appendChild(listing('SeaSound')); frag.appendChild(vol('SeaVolume')); diff --git a/src/Main.js b/src/Main.js index 75c5bb7..8181f9a 100644 --- a/src/Main.js +++ b/src/Main.js @@ -269,10 +269,10 @@ CM.ConfigDefault = { GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3', GCTimer: 1, Favicon: 1, - FortuneFlash: 1, - FortuneSound: 1, - FortuneVolume: 100, - FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', + FortuneFlash: 1, + FortuneSound: 1, + FortuneVolume: 100, + FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, From b5eac1ce224561b4891dfa3670efc179f5b29763 Mon Sep 17 00:00:00 2001 From: Eric Olsen Date: Sat, 5 Oct 2019 15:33:36 -0600 Subject: [PATCH 21/35] Add [F] to title when Fortune Cookie is present (remove when it's not) --- CookieMonster.js | 9 ++++++++- src/Disp.js | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index e82666d..3e58a23 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -1502,6 +1502,7 @@ CM.Disp.UpdateTitle = function() { var addSP = false; var titleGC; + var titleFC = ''; var titleSP; if (CM.Disp.lastGoldenCookieState) { if (CM.Disp.goldenShimmer.wrath) { @@ -1517,6 +1518,9 @@ CM.Disp.UpdateTitle = function() { else { titleGC = '[GS]' } + if (CM.Disp.lastTickerFortuneState) { + titleFC = '[F]'; + } if (Game.season == 'christmas') { addSP = true; if (CM.Disp.lastSeasonPopupState) { @@ -1532,11 +1536,14 @@ CM.Disp.UpdateTitle = function() { str = str.substring(str.lastIndexOf(']') + 1); } - document.title = titleGC + (addSP ? titleSP : '') + ' ' + str; + document.title = titleFC + titleGC + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Config.Title == 2) { var str = ''; var spawn = false; + if (CM.Disp.lastTickerFortuneState) { + str += '[F]'; + } if (CM.Disp.lastGoldenCookieState) { spawn = true; if (CM.Disp.goldenShimmer.wrath) { diff --git a/src/Disp.js b/src/Disp.js index 63caeba..1b201ba 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -915,6 +915,7 @@ CM.Disp.UpdateTitle = function() { var addSP = false; var titleGC; + var titleFC = ''; var titleSP; if (CM.Disp.lastGoldenCookieState) { if (CM.Disp.goldenShimmer.wrath) { @@ -930,6 +931,9 @@ CM.Disp.UpdateTitle = function() { else { titleGC = '[GS]' } + if (CM.Disp.lastTickerFortuneState) { + titleFC = '[F]'; + } if (Game.season == 'christmas') { addSP = true; if (CM.Disp.lastSeasonPopupState) { @@ -945,11 +949,14 @@ CM.Disp.UpdateTitle = function() { str = str.substring(str.lastIndexOf(']') + 1); } - document.title = titleGC + (addSP ? titleSP : '') + ' ' + str; + document.title = titleFC + titleGC + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Config.Title == 2) { var str = ''; var spawn = false; + if (CM.Disp.lastTickerFortuneState) { + str += '[F]'; + } if (CM.Disp.lastGoldenCookieState) { spawn = true; if (CM.Disp.goldenShimmer.wrath) { From cb4b85a594899fbaeadbff518ad5cad8b3d2f220 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Sun, 6 Oct 2019 22:01:37 -0400 Subject: [PATCH 22/35] Fixed for Version 2.021 of Cookie Clicker (Issues #257, #259, and #265) --- CookieMonster.js | 121 ++++++++++++++++++++++++++++++++++------------- src/Cache.js | 32 +++++++++---- src/Disp.js | 17 ++++--- src/Main.js | 10 ++-- src/Sim.js | 62 +++++++++++++++++++----- 5 files changed, 178 insertions(+), 64 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index eb2c36b..e4c1031 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -39,8 +39,8 @@ CM.Cache.NextNumber = function(base) { CM.Cache.RemakeBuildingsPrices = function() { for (var i in Game.Objects) { - CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10); - CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100); + CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i], Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10); + CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i], Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100); } } @@ -223,11 +223,11 @@ CM.Cache.RemakeSeaSpec = function() { } CM.Cache.RemakeSellForChoEgg = function() { - if (Game.hasAura('Earth Shatterer') || Game.dragonLevel < 9) { + if (Game.auraMult('Earth Shatterer') == 1.1) { var sellTotal = 0; for (var i in Game.Objects) { var me = Game.Objects[i]; - sellTotal += CM.Sim.BuildingSell(me.basePrice, me.amount, me.free, me.amount, 0); + sellTotal += CM.Sim.BuildingSell(me, me.basePrice, me.amount, me.free, me.amount, 0); } } else { @@ -235,17 +235,29 @@ CM.Cache.RemakeSellForChoEgg = function() { for (var i in Game.Objects) { if (Game.Objects[i].amount > 0) highestBuilding = i; } + var secondHighBuild = ''; + if (Game.auraMult('Earth Shatterer') == 0 && highestBuilding != '') { + if (Game.Objects[highestBuilding].amount > 1) { + secondHighBuild = highestBuilding; + } + else { + for (var i in Game.Objects) { + if (i != highestBuilding && Game.Objects[i].amount > 0) secondHighBuild = i; + } + } + } + var sellTotal = 0; for (var i in Game.Objects) { var me = Game.Objects[i]; - var amount = 0; + var amount = me.amount; if (i == highestBuilding) { - amount = me.amount - 1; + amount -= 1; } - else { - amount = me.amount; + if (i == secondHighBuild) { + amount -= 1; } - sellTotal += CM.Sim.BuildingSell(me.basePrice, amount, me.free, amount, 1); + sellTotal += CM.Sim.BuildingSell(me, me.basePrice, amount, me.free, amount, 1); } } CM.Cache.SellForChoEgg = sellTotal; @@ -377,7 +389,7 @@ CM.Cache.ChainFrenzyWrathReward = 0; CM.Cache.CentEgg = 0; CM.Cache.SellForChoEgg = 0; CM.Cache.Title = ''; -CM.Cache.HadFierHoard = false; +CM.Cache.HadBuildAura = false; CM.Cache.RealCookiesEarned = -1; CM.Cache.lastDate = -1; CM.Cache.lastCookies = -1; @@ -1812,11 +1824,16 @@ CM.Disp.AddMenuStats = function(title) { var luckyRewardFrenzyMaxWrath = CM.Cache.LuckyRewardFrenzy; var luckyCur = luckyCurBase; var luckyCurWrath = luckyCurBase; + // Old way if (Game.hasAura('Ancestral Metamorphosis')) { luckyRewardMax *= 1.1; luckyRewardFrenzyMax *= 1.1; luckyCur *= 1.1; } + /*luckyRewardMax *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1; + luckyRewardFrenzyMax *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1; + luckyCur *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1;*/ + // Old way if (Game.hasAura('Unholy Dominion')) { luckyRewardMaxWrath *= 1.1; luckyRewardFrenzyMaxWrath *= 1.1; @@ -2242,7 +2259,7 @@ CM.Disp.Tooltip = function(type, name) { if (type == 'b') { l('tooltip').innerHTML = Game.Objects[name].tooltip(); if (CM.Config.TooltipAmor == 1) { - var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); + var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name], Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); var amortizeAmount = buildPrice - Game.Objects[name].totalCookies; if (amortizeAmount > 0) { l('tooltip').innerHTML = l('tooltip').innerHTML @@ -2267,10 +2284,10 @@ CM.Disp.Tooltip = function(type, name) { } else if (Game.buyMode == -1) { if (Game.buyBulk == -1) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.Objects[name].amount, 0))); + l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name], Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.Objects[name].amount, 0))); } else { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.buyBulk, 0))); + l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name], Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.buyBulk, 0))); } } } @@ -2627,11 +2644,11 @@ for (var i in Game.wrinklers) { CM.Disp.TooltipText = [ ['GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'], - ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '380px'], + ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg', '320px'], ['NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'], - ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'], + ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg', '330px'], ['ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'], - ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '280px'] + ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg', '300px'] ]; /******** @@ -2778,13 +2795,13 @@ CM.Loop = function() { } // Check for aura change to recalculate buildings prices - var hasFierHoard = Game.hasAura('Fierce Hoarder'); - if (!CM.Cache.HadFierHoard && hasFierHoard) { - CM.Cache.HadFierHoard = true; + var hasBuildAura = Game.auraMult('Fierce Hoarder') > 0; + if (!CM.Cache.HadBuildAura && hasBuildAura) { + CM.Cache.HadBuildAura = true; CM.Cache.DoRemakeBuildPrices = 1; } - else if (CM.Cache.HadFierHoard && !hasFierHoard) { - CM.Cache.HadFierHoard = false; + else if (CM.Cache.HadBuildAura && !hasBuildAura) { + CM.Cache.HadBuildAura = false; CM.Cache.DoRemakeBuildPrices = 1; } @@ -2935,7 +2952,7 @@ CM.VersionMinor = '1'; * Sim * *******/ -CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { +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++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); @@ -2950,7 +2967,7 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { var moni = 0; for (var i = 0; i < increase; i++) { var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); - price = Game.modifyBuildingPrice(null, price); + price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); moni += price; start++; @@ -2958,7 +2975,7 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { return moni; } -CM.Sim.BuildingSell = function(basePrice, start, free, amount, emuAura) { +CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, emuAura) { /*var price=0; for (var i = Math.max(0, start - amount); i < Math.max(0, start); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); @@ -2979,10 +2996,15 @@ CM.Sim.BuildingSell = function(basePrice, start, free, amount, emuAura) { var moni=0; for (var i = 0; i < amount; i++) { var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); - price = Game.modifyBuildingPrice(null, price); + price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); var giveBack = 0.25; - if (Game.hasAura('Earth Shatterer') || emuAura) giveBack = 0.5; + if (emuAura) { + giveBack = 0.5; + } + else { + giveBack *= 1 + Game.auraMult('Earth Shatterer'); + } price = Math.floor(price * giveBack); if (start > 0) { moni += price; @@ -3009,7 +3031,7 @@ CM.Sim.Win = function(what) { eval('CM.Sim.HasAchiev = ' + Game.HasAchiev.toString().split('Game').join('CM.Sim')); -eval('CM.Sim.GetHeavenlyMultiplier = ' + Game.GetHeavenlyMultiplier.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura')); +eval('CM.Sim.GetHeavenlyMultiplier = ' + Game.GetHeavenlyMultiplier.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura').split('Game.auraMult').join('CM.Sim.auraMult')); CM.Sim.hasAura = function(what) { if (Game.dragonAuras[CM.Sim.dragonAura].name == what || Game.dragonAuras[CM.Sim.dragonAura2].name == what) @@ -3018,6 +3040,15 @@ CM.Sim.hasAura = function(what) { return false; } +CM.Sim.auraMult = function(what) { + var n = 0; + if (Game.dragonAuras[CM.Sim.dragonAura].name == what || Game.dragonAuras[CM.Sim.dragonAura2].name == what) + n = 1; + if (Game.dragonAuras[CM.Sim.dragonAura].name == 'Reality Bending' || Game.dragonAuras[CM.Sim.dragonAura2].name == 'Reality Bending') + n += 0.1; + return n; +} + eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() .split('Game.Has').join('CM.Sim.Has') .split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades') @@ -3027,6 +3058,7 @@ eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() .split('me.grandma').join('Game.Objects[me.name].grandma') .split('me.id').join('Game.Objects[me.name].id') .split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']') + .split('me.fortune').join('Game.Objects[me.name].fortune') ); CM.Sim.getCPSBuffMult = function() { @@ -3044,7 +3076,13 @@ CM.Sim.InitData = function() { CM.Sim.Objects[i] = {}; var me = Game.Objects[i]; var you = CM.Sim.Objects[i]; - eval('you.cps = ' + me.cps.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura').split('Game.Objects').join('CM.Sim.Objects').split('Game.GetTieredCpsMult').join('CM.Sim.GetTieredCpsMult')); + eval('you.cps = ' + me.cps.toString() + .split('Game.Has').join('CM.Sim.Has') + .split('Game.hasAura').join('CM.Sim.hasAura') + .split('Game.Objects').join('CM.Sim.Objects') + .split('Game.GetTieredCpsMult').join('CM.Sim.GetTieredCpsMult') + .split('Game.auraMult').join('CM.Sim.auraMult') + ); // Below is needed for above eval! you.baseCps = me.baseCps; you.name = me.name; @@ -3129,6 +3167,9 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('An itchy sweater')) mult *= 1.01; if (CM.Sim.Has('Santa\'s dominion')) mult *= 1.2; + if (CM.Sim.Has('Fortune #100')) mult *= 1.01; + if (CM.Sim.Has('Fortune #101')) mult *= 1.07; + var buildMult = 1; if (Game.hasGod) { var godLvl = Game.hasGod('asceticism'); @@ -3170,7 +3211,8 @@ CM.Sim.CalculateGains = function() { var milkMult=1; if (CM.Sim.Has('Santa\'s milk and cookies')) milkMult *= 1.05; - if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; + //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; + milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; if (Game.hasGod) { var godLvl = Game.hasGod('mother'); if (godLvl == 1) milkMult *= 1.1; @@ -3194,7 +3236,9 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); + if (CM.Sim.Has('Kitten executives')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.115 * milkMult); if (CM.Sim.Has('Kitten angels')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); + if (CM.Sim.Has('Fortune #103')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.05 * milkMult); mult *= catMult; @@ -3223,12 +3267,14 @@ CM.Sim.CalculateGains = function() { // TODO Store lumps? if (CM.Sim.Has('Sugar baking')) mult *= (1 + Math.min(100, Game.lumps) * 0.01); - if (CM.Sim.hasAura('Radiant Appetite')) mult *= 2; + //if (CM.Sim.hasAura('Radiant Appetite')) mult *= 2; + mult *= 1 + CM.Sim.auraMult('Radiant Appetite'); - if (Game.hasAura('Dragon\'s Fortune')) { + if (true) { // || CM.Sim.hasAura('Dragon\'s Fortune')) { var n = Game.shimmerTypes['golden'].n; + var auraMult = CM.Sim.auraMult('Dragon\'s Fortune'); for (var i = 0; i < n; i++) { - mult *= 2.23; + mult *= 1 + auraMult * 1.23; } } @@ -3333,6 +3379,15 @@ CM.Sim.CheckOtherAchiev = function() { if (!CM.Sim.Has(CM.Data.ChristCookies[i])) hasAllChristCook = false; } if (hasAllChristCook) CM.Sim.Win('Let it snow'); + + if (CM.Sim.Has('Fortune cookies')) { + var list = Game.Tiers['fortune'].upgrades; + var fortunes = 0; + for (var i in list) { + if (CM.Sim.Has(list[i].name)) fortunes++; + } + if (fortunes >= list.length) CM.Sim.Win('O Fortuna'); + } } CM.Sim.BuyBuildings = function(amount, target) { @@ -3465,6 +3520,8 @@ CM.Sim.ResetBonus = function(possiblePresMax) { if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000) CM.Sim.Win('The end of the world'); if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000) CM.Sim.Win('Oh, you\'re back'); if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000) CM.Sim.Win('Lazarus'); + if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000000) CM.Sim.Win('Smurf account'); + if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000000000) CM.Sim.Win('If at first you don\'t succeed'); CM.Sim.Upgrades['Heavenly chip secret'].bought = 1; CM.Sim.Upgrades['Heavenly cookie stand'].bought = 1; diff --git a/src/Cache.js b/src/Cache.js index fe2196f..1c31723 100644 --- a/src/Cache.js +++ b/src/Cache.js @@ -19,8 +19,8 @@ CM.Cache.NextNumber = function(base) { CM.Cache.RemakeBuildingsPrices = function() { for (var i in Game.Objects) { - CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10); - CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100); + CM.Cache.Objects10[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i], Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 10); + CM.Cache.Objects100[i].price = CM.Sim.BuildingGetPrice(Game.Objects[i], Game.Objects[i].basePrice, Game.Objects[i].amount, Game.Objects[i].free, 100); } } @@ -203,11 +203,11 @@ CM.Cache.RemakeSeaSpec = function() { } CM.Cache.RemakeSellForChoEgg = function() { - if (Game.hasAura('Earth Shatterer') || Game.dragonLevel < 9) { + if (Game.auraMult('Earth Shatterer') == 1.1) { var sellTotal = 0; for (var i in Game.Objects) { var me = Game.Objects[i]; - sellTotal += CM.Sim.BuildingSell(me.basePrice, me.amount, me.free, me.amount, 0); + sellTotal += CM.Sim.BuildingSell(me, me.basePrice, me.amount, me.free, me.amount, 0); } } else { @@ -215,17 +215,29 @@ CM.Cache.RemakeSellForChoEgg = function() { for (var i in Game.Objects) { if (Game.Objects[i].amount > 0) highestBuilding = i; } + var secondHighBuild = ''; + if (Game.auraMult('Earth Shatterer') == 0 && highestBuilding != '') { + if (Game.Objects[highestBuilding].amount > 1) { + secondHighBuild = highestBuilding; + } + else { + for (var i in Game.Objects) { + if (i != highestBuilding && Game.Objects[i].amount > 0) secondHighBuild = i; + } + } + } + var sellTotal = 0; for (var i in Game.Objects) { var me = Game.Objects[i]; - var amount = 0; + var amount = me.amount; if (i == highestBuilding) { - amount = me.amount - 1; + amount -= 1; } - else { - amount = me.amount; + if (i == secondHighBuild) { + amount -= 1; } - sellTotal += CM.Sim.BuildingSell(me.basePrice, amount, me.free, amount, 1); + sellTotal += CM.Sim.BuildingSell(me, me.basePrice, amount, me.free, amount, 1); } } CM.Cache.SellForChoEgg = sellTotal; @@ -357,7 +369,7 @@ CM.Cache.ChainFrenzyWrathReward = 0; CM.Cache.CentEgg = 0; CM.Cache.SellForChoEgg = 0; CM.Cache.Title = ''; -CM.Cache.HadFierHoard = false; +CM.Cache.HadBuildAura = false; CM.Cache.RealCookiesEarned = -1; CM.Cache.lastDate = -1; CM.Cache.lastCookies = -1; diff --git a/src/Disp.js b/src/Disp.js index 4197b76..f5b4e35 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -1232,11 +1232,16 @@ CM.Disp.AddMenuStats = function(title) { var luckyRewardFrenzyMaxWrath = CM.Cache.LuckyRewardFrenzy; var luckyCur = luckyCurBase; var luckyCurWrath = luckyCurBase; + // Old way if (Game.hasAura('Ancestral Metamorphosis')) { luckyRewardMax *= 1.1; luckyRewardFrenzyMax *= 1.1; luckyCur *= 1.1; } + /*luckyRewardMax *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1; + luckyRewardFrenzyMax *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1; + luckyCur *= 1 + Game.auraMult('Ancestral Metamorphosis') * 0.1;*/ + // Old way if (Game.hasAura('Unholy Dominion')) { luckyRewardMaxWrath *= 1.1; luckyRewardFrenzyMaxWrath *= 1.1; @@ -1662,7 +1667,7 @@ CM.Disp.Tooltip = function(type, name) { if (type == 'b') { l('tooltip').innerHTML = Game.Objects[name].tooltip(); if (CM.Config.TooltipAmor == 1) { - var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); + var buildPrice = CM.Sim.BuildingGetPrice(Game.Objects[name], Game.Objects[name].basePrice, 0, Game.Objects[name].free, Game.Objects[name].amount); var amortizeAmount = buildPrice - Game.Objects[name].totalCookies; if (amortizeAmount > 0) { l('tooltip').innerHTML = l('tooltip').innerHTML @@ -1687,10 +1692,10 @@ CM.Disp.Tooltip = function(type, name) { } else if (Game.buyMode == -1) { if (Game.buyBulk == -1) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.Objects[name].amount, 0))); + l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name], Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.Objects[name].amount, 0))); } else { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.buyBulk, 0))); + l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + Beautify(CM.Sim.BuildingSell(Game.Objects[name], Game.Objects[name].basePrice, Game.Objects[name].amount, Game.Objects[name].free, Game.buyBulk, 0))); } } } @@ -2047,10 +2052,10 @@ for (var i in Game.wrinklers) { CM.Disp.TooltipText = [ ['GoldCookTooltipPlaceholder', 'Calculated with Golden Switch off', '200px'], - ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '380px'], + ['PrestMaxTooltipPlaceholder', 'The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg', '320px'], ['NextPrestTooltipPlaceholder', 'Calculated with cookies gained from wrinklers and Chocolate egg', '200px'], - ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and buying Chocolate egg', '390px'], + ['HeavenChipMaxTooltipPlaceholder', 'The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg', '330px'], ['ResetTooltipPlaceholder', 'The bonus income you would get from new prestige levels unlocked at 100% of its potential and from reset achievements if you have the same buildings/upgrades after reset', '370px'], - ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer aura, and then buying Chocolate egg', '280px'] + ['ChoEggTooltipPlaceholder', 'The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg', '300px'] ]; diff --git a/src/Main.js b/src/Main.js index 2b4843d..5ca6c15 100644 --- a/src/Main.js +++ b/src/Main.js @@ -142,13 +142,13 @@ CM.Loop = function() { } // Check for aura change to recalculate buildings prices - var hasFierHoard = Game.hasAura('Fierce Hoarder'); - if (!CM.Cache.HadFierHoard && hasFierHoard) { - CM.Cache.HadFierHoard = true; + var hasBuildAura = Game.auraMult('Fierce Hoarder') > 0; + if (!CM.Cache.HadBuildAura && hasBuildAura) { + CM.Cache.HadBuildAura = true; CM.Cache.DoRemakeBuildPrices = 1; } - else if (CM.Cache.HadFierHoard && !hasFierHoard) { - CM.Cache.HadFierHoard = false; + else if (CM.Cache.HadBuildAura && !hasBuildAura) { + CM.Cache.HadBuildAura = false; CM.Cache.DoRemakeBuildPrices = 1; } diff --git a/src/Sim.js b/src/Sim.js index 82a3773..feed0f6 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -2,7 +2,7 @@ * Sim * *******/ -CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { +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++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); @@ -17,7 +17,7 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { var moni = 0; for (var i = 0; i < increase; i++) { var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); - price = Game.modifyBuildingPrice(null, price); + price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); moni += price; start++; @@ -25,7 +25,7 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { return moni; } -CM.Sim.BuildingSell = function(basePrice, start, free, amount, emuAura) { +CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, emuAura) { /*var price=0; for (var i = Math.max(0, start - amount); i < Math.max(0, start); i++) { price += basePrice * Math.pow(Game.priceIncrease, Math.max(0, i - free)); @@ -46,10 +46,15 @@ CM.Sim.BuildingSell = function(basePrice, start, free, amount, emuAura) { var moni=0; for (var i = 0; i < amount; i++) { var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); - price = Game.modifyBuildingPrice(null, price); + price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); var giveBack = 0.25; - if (Game.hasAura('Earth Shatterer') || emuAura) giveBack = 0.5; + if (emuAura) { + giveBack = 0.5; + } + else { + giveBack *= 1 + Game.auraMult('Earth Shatterer'); + } price = Math.floor(price * giveBack); if (start > 0) { moni += price; @@ -76,7 +81,7 @@ CM.Sim.Win = function(what) { eval('CM.Sim.HasAchiev = ' + Game.HasAchiev.toString().split('Game').join('CM.Sim')); -eval('CM.Sim.GetHeavenlyMultiplier = ' + Game.GetHeavenlyMultiplier.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura')); +eval('CM.Sim.GetHeavenlyMultiplier = ' + Game.GetHeavenlyMultiplier.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura').split('Game.auraMult').join('CM.Sim.auraMult')); CM.Sim.hasAura = function(what) { if (Game.dragonAuras[CM.Sim.dragonAura].name == what || Game.dragonAuras[CM.Sim.dragonAura2].name == what) @@ -85,6 +90,15 @@ CM.Sim.hasAura = function(what) { return false; } +CM.Sim.auraMult = function(what) { + var n = 0; + if (Game.dragonAuras[CM.Sim.dragonAura].name == what || Game.dragonAuras[CM.Sim.dragonAura2].name == what) + n = 1; + if (Game.dragonAuras[CM.Sim.dragonAura].name == 'Reality Bending' || Game.dragonAuras[CM.Sim.dragonAura2].name == 'Reality Bending') + n += 0.1; + return n; +} + eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() .split('Game.Has').join('CM.Sim.Has') .split('me.tieredUpgrades').join('Game.Objects[me.name].tieredUpgrades') @@ -94,6 +108,7 @@ eval('CM.Sim.GetTieredCpsMult = ' + Game.GetTieredCpsMult.toString() .split('me.grandma').join('Game.Objects[me.name].grandma') .split('me.id').join('Game.Objects[me.name].id') .split('Game.Objects[\'Grandma\']').join('CM.Sim.Objects[\'Grandma\']') + .split('me.fortune').join('Game.Objects[me.name].fortune') ); CM.Sim.getCPSBuffMult = function() { @@ -111,7 +126,13 @@ CM.Sim.InitData = function() { CM.Sim.Objects[i] = {}; var me = Game.Objects[i]; var you = CM.Sim.Objects[i]; - eval('you.cps = ' + me.cps.toString().split('Game.Has').join('CM.Sim.Has').split('Game.hasAura').join('CM.Sim.hasAura').split('Game.Objects').join('CM.Sim.Objects').split('Game.GetTieredCpsMult').join('CM.Sim.GetTieredCpsMult')); + eval('you.cps = ' + me.cps.toString() + .split('Game.Has').join('CM.Sim.Has') + .split('Game.hasAura').join('CM.Sim.hasAura') + .split('Game.Objects').join('CM.Sim.Objects') + .split('Game.GetTieredCpsMult').join('CM.Sim.GetTieredCpsMult') + .split('Game.auraMult').join('CM.Sim.auraMult') + ); // Below is needed for above eval! you.baseCps = me.baseCps; you.name = me.name; @@ -196,6 +217,9 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('An itchy sweater')) mult *= 1.01; if (CM.Sim.Has('Santa\'s dominion')) mult *= 1.2; + if (CM.Sim.Has('Fortune #100')) mult *= 1.01; + if (CM.Sim.Has('Fortune #101')) mult *= 1.07; + var buildMult = 1; if (Game.hasGod) { var godLvl = Game.hasGod('asceticism'); @@ -237,7 +261,8 @@ CM.Sim.CalculateGains = function() { var milkMult=1; if (CM.Sim.Has('Santa\'s milk and cookies')) milkMult *= 1.05; - if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; + //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; + milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; if (Game.hasGod) { var godLvl = Game.hasGod('mother'); if (godLvl == 1) milkMult *= 1.1; @@ -261,7 +286,9 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); + if (CM.Sim.Has('Kitten executives')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.115 * milkMult); if (CM.Sim.Has('Kitten angels')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); + if (CM.Sim.Has('Fortune #103')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.05 * milkMult); mult *= catMult; @@ -290,12 +317,14 @@ CM.Sim.CalculateGains = function() { // TODO Store lumps? if (CM.Sim.Has('Sugar baking')) mult *= (1 + Math.min(100, Game.lumps) * 0.01); - if (CM.Sim.hasAura('Radiant Appetite')) mult *= 2; + //if (CM.Sim.hasAura('Radiant Appetite')) mult *= 2; + mult *= 1 + CM.Sim.auraMult('Radiant Appetite'); - if (Game.hasAura('Dragon\'s Fortune')) { + if (true) { // || CM.Sim.hasAura('Dragon\'s Fortune')) { var n = Game.shimmerTypes['golden'].n; + var auraMult = CM.Sim.auraMult('Dragon\'s Fortune'); for (var i = 0; i < n; i++) { - mult *= 2.23; + mult *= 1 + auraMult * 1.23; } } @@ -400,6 +429,15 @@ CM.Sim.CheckOtherAchiev = function() { if (!CM.Sim.Has(CM.Data.ChristCookies[i])) hasAllChristCook = false; } if (hasAllChristCook) CM.Sim.Win('Let it snow'); + + if (CM.Sim.Has('Fortune cookies')) { + var list = Game.Tiers['fortune'].upgrades; + var fortunes = 0; + for (var i in list) { + if (CM.Sim.Has(list[i].name)) fortunes++; + } + if (fortunes >= list.length) CM.Sim.Win('O Fortuna'); + } } CM.Sim.BuyBuildings = function(amount, target) { @@ -532,6 +570,8 @@ CM.Sim.ResetBonus = function(possiblePresMax) { if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000) CM.Sim.Win('The end of the world'); if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000) CM.Sim.Win('Oh, you\'re back'); if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000) CM.Sim.Win('Lazarus'); + if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000000) CM.Sim.Win('Smurf account'); + if (CM.Cache.RealCookiesEarned >= 1000000000000000000000000000000000000000000000000000000) CM.Sim.Win('If at first you don\'t succeed'); CM.Sim.Upgrades['Heavenly chip secret'].bought = 1; CM.Sim.Upgrades['Heavenly cookie stand'].bought = 1; From 06ba2ad00004980c6d70186b7cbd052d0774d6f2 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Wed, 9 Oct 2019 21:23:24 -0400 Subject: [PATCH 23/35] Change to Version 2.021.2 --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index e4c1031..fd344f0 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2946,7 +2946,7 @@ CM.ConfigDefault = { CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.021'; -CM.VersionMinor = '1'; +CM.VersionMinor = '2'; /******* * Sim * diff --git a/src/Main.js b/src/Main.js index 5ca6c15..eb23caf 100644 --- a/src/Main.js +++ b/src/Main.js @@ -293,5 +293,5 @@ CM.ConfigDefault = { CM.ConfigPrefix = 'CMConfig'; CM.VersionMajor = '2.021'; -CM.VersionMinor = '1'; +CM.VersionMinor = '2'; From 244d0342ecac9ce978c6c934ea6fb16091fd68a0 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Thu, 10 Oct 2019 20:23:23 -0400 Subject: [PATCH 24/35] Minor code cleanup from merge --- CookieMonster.js | 13 ++++++++----- src/Disp.js | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 0f915a8..856cef2 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -1511,10 +1511,11 @@ CM.Disp.UpdateTitle = function() { document.title = CM.Cache.Title; } else if (CM.Config.Title == 1) { + var addFC = false; var addSP = false; var titleGC; - var titleFC = ''; + var titleFC; var titleSP; if (CM.Disp.lastGoldenCookieState) { if (CM.Disp.goldenShimmer.wrath) { @@ -1531,6 +1532,7 @@ CM.Disp.UpdateTitle = function() { titleGC = '[GS]' } if (CM.Disp.lastTickerFortuneState) { + addFC = true; titleFC = '[F]'; } if (Game.season == 'christmas') { @@ -1548,14 +1550,11 @@ CM.Disp.UpdateTitle = function() { str = str.substring(str.lastIndexOf(']') + 1); } - document.title = titleFC + titleGC + (addSP ? titleSP : '') + ' ' + str; + document.title = titleGC + (addFC ? titleFC : '') + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Config.Title == 2) { var str = ''; var spawn = false; - if (CM.Disp.lastTickerFortuneState) { - str += '[F]'; - } if (CM.Disp.lastGoldenCookieState) { spawn = true; if (CM.Disp.goldenShimmer.wrath) { @@ -1565,6 +1564,10 @@ CM.Disp.UpdateTitle = function() { str += '[G ' + Math.ceil(CM.Disp.goldenShimmer.life / Game.fps) + ']'; } } + if (CM.Disp.lastTickerFortuneState) { + spawn = true; + str += '[F]'; + } if (Game.season == 'christmas' && CM.Disp.lastSeasonPopupState) { str += '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; spawn = true; diff --git a/src/Disp.js b/src/Disp.js index 3996bb0..53fbcb0 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -912,10 +912,11 @@ CM.Disp.UpdateTitle = function() { document.title = CM.Cache.Title; } else if (CM.Config.Title == 1) { + var addFC = false; var addSP = false; var titleGC; - var titleFC = ''; + var titleFC; var titleSP; if (CM.Disp.lastGoldenCookieState) { if (CM.Disp.goldenShimmer.wrath) { @@ -932,6 +933,7 @@ CM.Disp.UpdateTitle = function() { titleGC = '[GS]' } if (CM.Disp.lastTickerFortuneState) { + addFC = true; titleFC = '[F]'; } if (Game.season == 'christmas') { @@ -949,14 +951,11 @@ CM.Disp.UpdateTitle = function() { str = str.substring(str.lastIndexOf(']') + 1); } - document.title = titleFC + titleGC + (addSP ? titleSP : '') + ' ' + str; + document.title = titleGC + (addFC ? titleFC : '') + (addSP ? titleSP : '') + ' ' + str; } else if (CM.Config.Title == 2) { var str = ''; var spawn = false; - if (CM.Disp.lastTickerFortuneState) { - str += '[F]'; - } if (CM.Disp.lastGoldenCookieState) { spawn = true; if (CM.Disp.goldenShimmer.wrath) { @@ -966,6 +965,10 @@ CM.Disp.UpdateTitle = function() { str += '[G ' + Math.ceil(CM.Disp.goldenShimmer.life / Game.fps) + ']'; } } + if (CM.Disp.lastTickerFortuneState) { + spawn = true; + str += '[F]'; + } if (Game.season == 'christmas' && CM.Disp.lastSeasonPopupState) { str += '[R ' + Math.ceil(CM.Disp.seasonPopShimmer.life / Game.fps) + ']'; spawn = true; From fa6b998f67fabd8630321757644f290371b68e6b Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Thu, 10 Oct 2019 20:34:36 -0400 Subject: [PATCH 25/35] Changed default Fortune Cookie sound effect --- CookieMonster.js | 2 +- src/Main.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 856cef2..773f055 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -2956,7 +2956,7 @@ CM.ConfigDefault = { FortuneFlash: 1, FortuneSound: 1, FortuneVolume: 100, - FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', + FortuneSoundURL: 'https://freesound.org/data/previews/174/174027_3242494-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, diff --git a/src/Main.js b/src/Main.js index f582da7..b5a582e 100644 --- a/src/Main.js +++ b/src/Main.js @@ -272,7 +272,7 @@ CM.ConfigDefault = { FortuneFlash: 1, FortuneSound: 1, FortuneVolume: 100, - FortuneSoundURL: 'https://freesound.org/data/previews/419/419594_7062176-lq.mp3', + FortuneSoundURL: 'https://freesound.org/data/previews/174/174027_3242494-lq.mp3', SeaFlash: 1, SeaSound: 1, SeaVolume: 100, From a920e9e5fb7ceb5b4b03f7c45bad402823d9b424 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Thu, 10 Oct 2019 22:22:44 -0400 Subject: [PATCH 26/35] Added stat to show missing Fortune upgrades left to buy (Issue #263 and #271) --- CookieMonster.js | 119 ++++++++++++++++++++++++++++++----------------- src/Data.js | 24 ++++++++++ src/Disp.js | 95 ++++++++++++++++++++----------------- 3 files changed, 154 insertions(+), 84 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 773f055..fc68285 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -593,6 +593,30 @@ CM.ConfigData.Scale = {label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', * Data * ********/ +CM.Data.Fortunes = [ + 'Fortune #001', + 'Fortune #002', + 'Fortune #003', + 'Fortune #004', + 'Fortune #005', + 'Fortune #006', + 'Fortune #007', + 'Fortune #008', + 'Fortune #009', + 'Fortune #010', + 'Fortune #011', + 'Fortune #012', + 'Fortune #013', + 'Fortune #014', + 'Fortune #015', + 'Fortune #016', + 'Fortune #017', + 'Fortune #100', + 'Fortune #101', + 'Fortune #102', + 'Fortune #103', + 'Fortune #104' +]; CM.Data.HalloCookies = ['Skull cookies', 'Ghost cookies', 'Bat cookies', 'Slime cookies', 'Pumpkin cookies', 'Eyeball cookies', 'Spider cookies']; CM.Data.ChristCookies = ['Christmas tree biscuits', 'Snowflake biscuits', 'Snowman biscuits', 'Holly biscuits', 'Candy cane biscuits', 'Bell biscuits', 'Present biscuits']; CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits']; @@ -1840,6 +1864,45 @@ CM.Disp.AddMenuStats = function(title) { frag.appendChild(span); return frag; } + + var createMissDisp = function(theMissDisp) { + var frag = document.createDocumentFragment(); + frag.appendChild(document.createTextNode(theMissDisp.length + ' ')); + var 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'); + title.className = 'name'; + title.style.marginBottom = '4px'; + title.style.textAlign = 'center'; + title.textContent = 'Missing'; + missing.appendChild(title); + for (var i in theMissDisp) { + var div = document.createElement('div'); + div.style.textAlign = 'center'; + div.appendChild(document.createTextNode(theMissDisp[i])); + missing.appendChild(div); + } + placeholder.appendChild(missing); + span.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML));}; + span.style.cursor = 'default'; + span.style.display = 'inline-block'; + span.style.height = '10px'; + span.style.width = '10px'; + span.style.borderRadius = '5px'; + span.style.textAlign = 'center'; + span.style.backgroundColor = '#C0C0C0'; + span.style.color = 'black'; + span.style.fontSize = '9px'; + span.style.verticalAlign = 'bottom'; + span.textContent = '?'; + frag.appendChild(span); + return frag; + } + stats.appendChild(header('Lucky Cookies', 'Lucky')); if (CM.Config.StatsPref.Lucky) { @@ -2067,48 +2130,11 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(header('Season Specials', 'Sea')); if (CM.Config.StatsPref.Sea) { if (specDisp) { - var createSpecDisp = function(theSpecDisp) { - var frag = document.createDocumentFragment(); - frag.appendChild(document.createTextNode(theSpecDisp.length + ' ')); - var 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'); - title.className = 'name'; - title.style.marginBottom = '4px'; - title.style.textAlign = 'center'; - title.textContent = 'Missing'; - missing.appendChild(title); - for (var i in theSpecDisp) { - var div = document.createElement('div'); - div.style.textAlign = 'center'; - div.appendChild(document.createTextNode(theSpecDisp[i])); - missing.appendChild(div); - } - placeholder.appendChild(missing); - span.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML));}; - span.style.cursor = 'default'; - span.style.display = 'inline-block'; - span.style.height = '10px'; - span.style.width = '10px'; - span.style.borderRadius = '5px'; - span.style.textAlign = 'center'; - span.style.backgroundColor = '#C0C0C0'; - span.style.color = 'black'; - span.style.fontSize = '9px'; - span.style.verticalAlign = 'bottom'; - span.textContent = '?'; - frag.appendChild(span); - return frag; - } - if (halloCook.length != 0) stats.appendChild(listing('Halloween Cookies Left to Buy', createSpecDisp(halloCook))); - if (christCook.length != 0) stats.appendChild(listing('Christmas Cookies Left to Buy', createSpecDisp(christCook))); - if (valCook.length != 0) stats.appendChild(listing('Valentine Cookies Left to Buy', createSpecDisp(valCook))); - if (normEggs.length != 0) stats.appendChild(listing('Normal Easter Eggs Left to Unlock', createSpecDisp(normEggs))); - if (rareEggs.length != 0) stats.appendChild(listing('Rare Easter Eggs Left to Unlock', createSpecDisp(rareEggs))); + if (halloCook.length != 0) stats.appendChild(listing('Halloween Cookies Left to Buy', createMissDisp(halloCook))); + if (christCook.length != 0) stats.appendChild(listing('Christmas Cookies Left to Buy', createMissDisp(christCook))); + if (valCook.length != 0) stats.appendChild(listing('Valentine Cookies Left to Buy', createMissDisp(valCook))); + if (normEggs.length != 0) stats.appendChild(listing('Normal Easter Eggs Left to Unlock', createMissDisp(normEggs))); + if (rareEggs.length != 0) stats.appendChild(listing('Rare Easter Eggs Left to Unlock', createMissDisp(rareEggs))); } if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec)))); @@ -2128,6 +2154,15 @@ CM.Disp.AddMenuStats = function(title) { document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)) )); stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.clickTimes[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1)))); + if (Game.Has('Fortune cookies')) { + var fortunes = []; + for (var i in CM.Data.Fortunes) { + if (!Game.Has(CM.Data.Fortunes[i])) { + fortunes.push(CM.Data.Fortunes[i]); + } + } + if (fortunes.length != 0) stats.appendChild(listing('Fortune Upgrades Left to Buy', createMissDisp(fortunes))); + } stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks)))); } diff --git a/src/Data.js b/src/Data.js index 84571d8..4202c89 100644 --- a/src/Data.js +++ b/src/Data.js @@ -2,6 +2,30 @@ * Data * ********/ +CM.Data.Fortunes = [ + 'Fortune #001', + 'Fortune #002', + 'Fortune #003', + 'Fortune #004', + 'Fortune #005', + 'Fortune #006', + 'Fortune #007', + 'Fortune #008', + 'Fortune #009', + 'Fortune #010', + 'Fortune #011', + 'Fortune #012', + 'Fortune #013', + 'Fortune #014', + 'Fortune #015', + 'Fortune #016', + 'Fortune #017', + 'Fortune #100', + 'Fortune #101', + 'Fortune #102', + 'Fortune #103', + 'Fortune #104' +]; CM.Data.HalloCookies = ['Skull cookies', 'Ghost cookies', 'Bat cookies', 'Slime cookies', 'Pumpkin cookies', 'Eyeball cookies', 'Spider cookies']; CM.Data.ChristCookies = ['Christmas tree biscuits', 'Snowflake biscuits', 'Snowman biscuits', 'Holly biscuits', 'Candy cane biscuits', 'Bell biscuits', 'Present biscuits']; CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits']; diff --git a/src/Disp.js b/src/Disp.js index 53fbcb0..fcb1d2d 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -1241,6 +1241,45 @@ CM.Disp.AddMenuStats = function(title) { frag.appendChild(span); return frag; } + + var createMissDisp = function(theMissDisp) { + var frag = document.createDocumentFragment(); + frag.appendChild(document.createTextNode(theMissDisp.length + ' ')); + var 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'); + title.className = 'name'; + title.style.marginBottom = '4px'; + title.style.textAlign = 'center'; + title.textContent = 'Missing'; + missing.appendChild(title); + for (var i in theMissDisp) { + var div = document.createElement('div'); + div.style.textAlign = 'center'; + div.appendChild(document.createTextNode(theMissDisp[i])); + missing.appendChild(div); + } + placeholder.appendChild(missing); + span.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML));}; + span.style.cursor = 'default'; + span.style.display = 'inline-block'; + span.style.height = '10px'; + span.style.width = '10px'; + span.style.borderRadius = '5px'; + span.style.textAlign = 'center'; + span.style.backgroundColor = '#C0C0C0'; + span.style.color = 'black'; + span.style.fontSize = '9px'; + span.style.verticalAlign = 'bottom'; + span.textContent = '?'; + frag.appendChild(span); + return frag; + } + stats.appendChild(header('Lucky Cookies', 'Lucky')); if (CM.Config.StatsPref.Lucky) { @@ -1468,48 +1507,11 @@ CM.Disp.AddMenuStats = function(title) { stats.appendChild(header('Season Specials', 'Sea')); if (CM.Config.StatsPref.Sea) { if (specDisp) { - var createSpecDisp = function(theSpecDisp) { - var frag = document.createDocumentFragment(); - frag.appendChild(document.createTextNode(theSpecDisp.length + ' ')); - var 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'); - title.className = 'name'; - title.style.marginBottom = '4px'; - title.style.textAlign = 'center'; - title.textContent = 'Missing'; - missing.appendChild(title); - for (var i in theSpecDisp) { - var div = document.createElement('div'); - div.style.textAlign = 'center'; - div.appendChild(document.createTextNode(theSpecDisp[i])); - missing.appendChild(div); - } - placeholder.appendChild(missing); - span.onmouseover = function() {Game.tooltip.draw(this, escape(placeholder.innerHTML));}; - span.style.cursor = 'default'; - span.style.display = 'inline-block'; - span.style.height = '10px'; - span.style.width = '10px'; - span.style.borderRadius = '5px'; - span.style.textAlign = 'center'; - span.style.backgroundColor = '#C0C0C0'; - span.style.color = 'black'; - span.style.fontSize = '9px'; - span.style.verticalAlign = 'bottom'; - span.textContent = '?'; - frag.appendChild(span); - return frag; - } - if (halloCook.length != 0) stats.appendChild(listing('Halloween Cookies Left to Buy', createSpecDisp(halloCook))); - if (christCook.length != 0) stats.appendChild(listing('Christmas Cookies Left to Buy', createSpecDisp(christCook))); - if (valCook.length != 0) stats.appendChild(listing('Valentine Cookies Left to Buy', createSpecDisp(valCook))); - if (normEggs.length != 0) stats.appendChild(listing('Normal Easter Eggs Left to Unlock', createSpecDisp(normEggs))); - if (rareEggs.length != 0) stats.appendChild(listing('Rare Easter Eggs Left to Unlock', createSpecDisp(rareEggs))); + if (halloCook.length != 0) stats.appendChild(listing('Halloween Cookies Left to Buy', createMissDisp(halloCook))); + if (christCook.length != 0) stats.appendChild(listing('Christmas Cookies Left to Buy', createMissDisp(christCook))); + if (valCook.length != 0) stats.appendChild(listing('Valentine Cookies Left to Buy', createMissDisp(valCook))); + if (normEggs.length != 0) stats.appendChild(listing('Normal Easter Eggs Left to Unlock', createMissDisp(normEggs))); + if (rareEggs.length != 0) stats.appendChild(listing('Rare Easter Eggs Left to Unlock', createMissDisp(rareEggs))); } if (Game.season == 'christmas') stats.appendChild(listing('Reindeer Reward', document.createTextNode(Beautify(CM.Cache.SeaSpec)))); @@ -1529,6 +1531,15 @@ CM.Disp.AddMenuStats = function(title) { document.createTextNode(Beautify(CM.Cache.AvgCPS, 3)) )); stats.appendChild(listing('Average Cookie Clicks Per Second (Past ' + CM.Disp.clickTimes[CM.Config.AvgClicksHist] + (CM.Config.AvgClicksHist == 0 ? ' second' : ' seconds') + ')', document.createTextNode(Beautify(CM.Cache.AvgClicks, 1)))); + if (Game.Has('Fortune cookies')) { + var fortunes = []; + for (var i in CM.Data.Fortunes) { + if (!Game.Has(CM.Data.Fortunes[i])) { + fortunes.push(CM.Data.Fortunes[i]); + } + } + if (fortunes.length != 0) stats.appendChild(listing('Fortune Upgrades Left to Buy', createMissDisp(fortunes))); + } stats.appendChild(listing('Missed Golden Cookies', document.createTextNode(Beautify(Game.missedGoldenClicks)))); } From a13efd0c5b4832729916a747db512fed867fef81 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Sun, 20 Oct 2019 17:43:12 -0400 Subject: [PATCH 27/35] Change to Version 2.022.1 and fixed for Version 2.022 of Cookie Clicker (Issues #276) --- CookieMonster.js | 9 +++++---- src/Main.js | 4 ++-- src/Sim.js | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index fc68285..204ec8a 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -3018,8 +3018,8 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.021'; -CM.VersionMinor = '2'; +CM.VersionMajor = '2.022'; +CM.VersionMinor = '1'; /******* * Sim * @@ -3088,8 +3088,9 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, emuAura) { } CM.Sim.Has = function(what) { - if (Game.ascensionMode == 1 && Game.Upgrades[what].pool == 'prestige') return 0; - return (CM.Sim.Upgrades[what] ? CM.Sim.Upgrades[what].bought : 0); + var it = CM.Sim.Upgrades[what]; + if (Game.ascensionMode == 1 && (it.pool == 'prestige' || it.tier == 'fortune')) return 0; + return (it ? it.bought : 0); } diff --git a/src/Main.js b/src/Main.js index b5a582e..55c5de3 100644 --- a/src/Main.js +++ b/src/Main.js @@ -299,6 +299,6 @@ CM.ConfigDefault = { }; CM.ConfigPrefix = 'CMConfig'; -CM.VersionMajor = '2.021'; -CM.VersionMinor = '2'; +CM.VersionMajor = '2.022'; +CM.VersionMinor = '1'; diff --git a/src/Sim.js b/src/Sim.js index feed0f6..d2ea864 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -65,8 +65,9 @@ CM.Sim.BuildingSell = function(build, basePrice, start, free, amount, emuAura) { } CM.Sim.Has = function(what) { - if (Game.ascensionMode == 1 && Game.Upgrades[what].pool == 'prestige') return 0; - return (CM.Sim.Upgrades[what] ? CM.Sim.Upgrades[what].bought : 0); + var it = CM.Sim.Upgrades[what]; + if (Game.ascensionMode == 1 && (it.pool == 'prestige' || it.tier == 'fortune')) return 0; + return (it ? it.bought : 0); } From 2ff37d561c257e83cc7a4b9ae0ea57865539600b Mon Sep 17 00:00:00 2001 From: Tydus Date: Sun, 22 Dec 2019 00:19:46 +0900 Subject: [PATCH 28/35] Extend metric unit prefixes The extra unit prefixes are combinations of basic prefixes (KMGTPEZY) with several Y's, means to combine (multiply) these prefixes. E.g. KY means 1,000 * Y => 1e27 --- src/Disp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Disp.js b/src/Disp.js index fcb1d2d..2e4a85b 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -2075,7 +2075,7 @@ CM.Disp.lastAscendState = -1; CM.Disp.cookieTimes = [10, 15, 30, 60, 300, 600, 900, 1800]; CM.Disp.clickTimes = [1, 5, 10, 15, 30]; -CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y']; +CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'KY', 'MY', 'GY', 'TY', 'PY', 'EY', 'ZY', 'YY', 'KYY', 'MYY', 'GYY', 'TYY', 'PYY', 'EYY', 'ZYY', 'YYY']; CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec', 'Quattuordec', 'Quindec', 'Sexdec', 'Septendec', 'Octodec', 'Novemdec', 'Vigint', 'Unvigint', 'Duovigint', 'Trevigint', 'Quattuorvigint']; CM.Disp.TooltipWrinklerArea = 0; From c05071ab6e2bbb27f6870f7d6cd75a4245260942 Mon Sep 17 00:00:00 2001 From: Chorizorro Date: Wed, 4 Nov 2020 13:54:52 +0100 Subject: [PATCH 29/35] Add sim gains calculation support up to v2.0.31 Add the Dragon scale upgrade in gains calculation. Add the following achievements in gains calculation: - Quincentennial and a half - Sexcentennial - Grand design - Ecumenopolis - The full picture - When there's nothing left to add - Polymath - Renaissance baker - Gotta hand it to you - The devil's workshop --- CookieMonster.js | 14 ++++++++++++-- src/Sim.js | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index fc68285..fd1fa5e 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -3243,6 +3243,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Fortune #100')) mult *= 1.01; if (CM.Sim.Has('Fortune #101')) mult *= 1.07; + if (CM.Sim.Has('Dragon scale')) mult *= 1.03; + var buildMult = 1; if (Game.hasGod) { var godLvl = Game.hasGod('asceticism'); @@ -3425,19 +3427,25 @@ CM.Sim.CheckOtherAchiev = function() { if (minAmount >= 400) CM.Sim.Win('Quadricentennial'); if (minAmount >= 450) CM.Sim.Win('Quadricentennial and a half'); if (minAmount >= 500) CM.Sim.Win('Quincentennial'); + if (minAmount >= 550) CM.Sim.Win('Quincentennial and a half'); + if (minAmount >= 600) CM.Sim.Win('Sexcentennial'); if (buildingsOwned >= 100) CM.Sim.Win('Builder'); if (buildingsOwned >= 500) CM.Sim.Win('Architect'); if (buildingsOwned >= 1000) CM.Sim.Win('Engineer'); if (buildingsOwned >= 2000) CM.Sim.Win('Lord of Constructs'); + if (buildingsOwned >= 4000) CM.Sim.Win('Grand design'); + if (buildingsOwned >= 8000) CM.Sim.Win('Ecumenopolis'); if (CM.Sim.UpgradesOwned >= 20) CM.Sim.Win('Enhancer'); if (CM.Sim.UpgradesOwned >= 50) CM.Sim.Win('Augmenter'); if (CM.Sim.UpgradesOwned >= 100) CM.Sim.Win('Upgrader'); if (CM.Sim.UpgradesOwned >= 200) CM.Sim.Win('Lord of Progress'); + if (CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('The full picture'); + if (CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('When there\'s nothing left to add'); - if (buildingsOwned >= 3000 && CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('Polymath'); - if (buildingsOwned >= 4000 && CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('Renaissance baker'); + if (buildingsOwned >= 4000 && CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('Polymath'); + if (buildingsOwned >= 8000 && CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('Renaissance baker'); if (CM.Sim.Objects['Cursor'].amount + CM.Sim.Objects['Grandma'].amount >= 777) CM.Sim.Win('The elder scrolls'); @@ -3480,6 +3488,8 @@ CM.Sim.BuyBuildings = function(amount, target) { if (me.amount >= 400) CM.Sim.Win('Dr. T'); if (me.amount >= 500) CM.Sim.Win('Thumbs, phalanges, metacarpals'); if (me.amount >= 600) CM.Sim.Win('With her finger and her thumb'); + if (me.amount >= 700) CM.Sim.Win('Gotta hand it to you'); + if (me.amount >= 800) CM.Sim.Win('The devil\'s workshop'); } else { for (var j in Game.Objects[me.name].tieredAchievs) { diff --git a/src/Sim.js b/src/Sim.js index feed0f6..0e6b60f 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -220,6 +220,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Fortune #100')) mult *= 1.01; if (CM.Sim.Has('Fortune #101')) mult *= 1.07; + if (CM.Sim.Has('Dragon scale')) mult *= 1.03; + var buildMult = 1; if (Game.hasGod) { var godLvl = Game.hasGod('asceticism'); @@ -402,19 +404,25 @@ CM.Sim.CheckOtherAchiev = function() { if (minAmount >= 400) CM.Sim.Win('Quadricentennial'); if (minAmount >= 450) CM.Sim.Win('Quadricentennial and a half'); if (minAmount >= 500) CM.Sim.Win('Quincentennial'); + if (minAmount >= 550) CM.Sim.Win('Quincentennial and a half'); + if (minAmount >= 600) CM.Sim.Win('Sexcentennial'); if (buildingsOwned >= 100) CM.Sim.Win('Builder'); if (buildingsOwned >= 500) CM.Sim.Win('Architect'); if (buildingsOwned >= 1000) CM.Sim.Win('Engineer'); if (buildingsOwned >= 2000) CM.Sim.Win('Lord of Constructs'); + if (buildingsOwned >= 4000) CM.Sim.Win('Grand design'); + if (buildingsOwned >= 8000) CM.Sim.Win('Ecumenopolis'); if (CM.Sim.UpgradesOwned >= 20) CM.Sim.Win('Enhancer'); if (CM.Sim.UpgradesOwned >= 50) CM.Sim.Win('Augmenter'); if (CM.Sim.UpgradesOwned >= 100) CM.Sim.Win('Upgrader'); if (CM.Sim.UpgradesOwned >= 200) CM.Sim.Win('Lord of Progress'); + if (CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('The full picture'); + if (CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('When there\'s nothing left to add'); - if (buildingsOwned >= 3000 && CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('Polymath'); - if (buildingsOwned >= 4000 && CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('Renaissance baker'); + if (buildingsOwned >= 4000 && CM.Sim.UpgradesOwned >= 300) CM.Sim.Win('Polymath'); + if (buildingsOwned >= 8000 && CM.Sim.UpgradesOwned >= 400) CM.Sim.Win('Renaissance baker'); if (CM.Sim.Objects['Cursor'].amount + CM.Sim.Objects['Grandma'].amount >= 777) CM.Sim.Win('The elder scrolls'); @@ -457,6 +465,8 @@ CM.Sim.BuyBuildings = function(amount, target) { if (me.amount >= 400) CM.Sim.Win('Dr. T'); if (me.amount >= 500) CM.Sim.Win('Thumbs, phalanges, metacarpals'); if (me.amount >= 600) CM.Sim.Win('With her finger and her thumb'); + if (me.amount >= 700) CM.Sim.Win('Gotta hand it to you'); + if (me.amount >= 800) CM.Sim.Win('The devil\'s workshop'); } else { for (var j in Game.Objects[me.name].tieredAchievs) { From f69fe119214cfc51c085b3e4f0d6cd6615432d3b Mon Sep 17 00:00:00 2001 From: Chorizorro Date: Wed, 4 Nov 2020 13:55:48 +0100 Subject: [PATCH 30/35] =?UTF-8?q?Fix=20grandma=20Cps=20gains=20calculation?= =?UTF-8?q?=20with=20Milkhelp=C2=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add support for the "Milkhelp® lactose intolerance relief tablets" ascension upgrade, as it isn't computed in the game's Grandma CpS. --- CookieMonster.js | 52 +++++++++++++++++++++++++----------------------- src/Sim.js | 52 +++++++++++++++++++++++++----------------------- 2 files changed, 54 insertions(+), 50 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index fd1fa5e..6ef8eb7 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -3275,16 +3275,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Santa\'s legacy')) mult *= 1 + (Game.santaLevel + 1) * 0.03; - for (var i in CM.Sim.Objects) { - var 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; - CM.Sim.cookiesPs += me.amount * storedCps; - } - - if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9; // "egg" - - var milkMult=1; + var milkProgress = CM.Sim.AchievementsOwned / 25; + var milkMult = 1; if (CM.Sim.Has('Santa\'s milk and cookies')) milkMult *= 1.05; //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; @@ -3299,21 +3291,31 @@ CM.Sim.CalculateGains = function() { var catMult = 1; - if (CM.Sim.Has('Kitten helpers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); - if (CM.Sim.Has('Kitten workers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); - if (CM.Sim.Has('Kitten engineers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); - if (CM.Sim.Has('Kitten overseers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); - if (CM.Sim.Has('Kitten managers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten accountants')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten specialists')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten experts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten consultants')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); - if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); - if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); - if (CM.Sim.Has('Kitten executives')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.115 * milkMult); - if (CM.Sim.Has('Kitten angels')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); - if (CM.Sim.Has('Fortune #103')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.05 * milkMult); + if (CM.Sim.Has('Kitten helpers')) catMult *= (1 + milkProgress * 0.1 * milkMult); + if (CM.Sim.Has('Kitten workers')) catMult *= (1 + milkProgress * 0.125 * milkMult); + if (CM.Sim.Has('Kitten engineers')) catMult *= (1 + milkProgress * 0.15 * milkMult); + if (CM.Sim.Has('Kitten overseers')) catMult *= (1 + milkProgress * 0.175 * milkMult); + if (CM.Sim.Has('Kitten managers')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten accountants')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten specialists')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten experts')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten consultants')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + milkProgress * 0.175 * milkMult); + if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + milkProgress * 0.15 * milkMult); + if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + milkProgress * 0.125 * milkMult); + if (CM.Sim.Has('Kitten executives')) catMult *= (1 + milkProgress * 0.115 * milkMult); + 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]; + 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; + CM.Sim.cookiesPs += me.amount * storedCps; + } + + if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9;//"egg" mult *= catMult; diff --git a/src/Sim.js b/src/Sim.js index 0e6b60f..15adeb1 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -252,16 +252,8 @@ CM.Sim.CalculateGains = function() { if (CM.Sim.Has('Santa\'s legacy')) mult *= 1 + (Game.santaLevel + 1) * 0.03; - for (var i in CM.Sim.Objects) { - var 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; - CM.Sim.cookiesPs += me.amount * storedCps; - } - - if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9; // "egg" - - var milkMult=1; + var milkProgress = CM.Sim.AchievementsOwned / 25; + var milkMult = 1; if (CM.Sim.Has('Santa\'s milk and cookies')) milkMult *= 1.05; //if (CM.Sim.hasAura('Breath of Milk')) milkMult *= 1.05; milkMult *= 1 + CM.Sim.auraMult('Breath of Milk') * 0.05; @@ -276,21 +268,31 @@ CM.Sim.CalculateGains = function() { var catMult = 1; - if (CM.Sim.Has('Kitten helpers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); - if (CM.Sim.Has('Kitten workers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); - if (CM.Sim.Has('Kitten engineers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); - if (CM.Sim.Has('Kitten overseers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); - if (CM.Sim.Has('Kitten managers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten accountants')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten specialists')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten experts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten consultants')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.2 * milkMult); - if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.175 * milkMult); - if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.15 * milkMult); - if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.125 * milkMult); - if (CM.Sim.Has('Kitten executives')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.115 * milkMult); - if (CM.Sim.Has('Kitten angels')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.1 * milkMult); - if (CM.Sim.Has('Fortune #103')) catMult *= (1 + (CM.Sim.AchievementsOwned / 25) * 0.05 * milkMult); + if (CM.Sim.Has('Kitten helpers')) catMult *= (1 + milkProgress * 0.1 * milkMult); + if (CM.Sim.Has('Kitten workers')) catMult *= (1 + milkProgress * 0.125 * milkMult); + if (CM.Sim.Has('Kitten engineers')) catMult *= (1 + milkProgress * 0.15 * milkMult); + if (CM.Sim.Has('Kitten overseers')) catMult *= (1 + milkProgress * 0.175 * milkMult); + if (CM.Sim.Has('Kitten managers')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten accountants')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten specialists')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten experts')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten consultants')) catMult *= (1 + milkProgress * 0.2 * milkMult); + if (CM.Sim.Has('Kitten assistants to the regional manager')) catMult *= (1 + milkProgress * 0.175 * milkMult); + if (CM.Sim.Has('Kitten marketeers')) catMult *= (1 + milkProgress * 0.15 * milkMult); + if (CM.Sim.Has('Kitten analysts')) catMult *= (1 + milkProgress * 0.125 * milkMult); + if (CM.Sim.Has('Kitten executives')) catMult *= (1 + milkProgress * 0.115 * milkMult); + 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]; + 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; + CM.Sim.cookiesPs += me.amount * storedCps; + } + + if (CM.Sim.Has('"egg"')) CM.Sim.cookiesPs += 9;//"egg" mult *= catMult; From 356b1fec573b16bd7a55d860e175830b7b5695f5 Mon Sep 17 00:00:00 2001 From: Chorizorro Date: Thu, 5 Nov 2020 00:11:02 +0100 Subject: [PATCH 31/35] Handle Prism heart biscuits from Valentine season Add Prism heart biscuits to Valentine cookies data. Update required Valentine upgrade for "Lovely cookies" achievement to "Prism heart biscuits". --- CookieMonster.js | 4 ++-- src/Data.js | 2 +- src/Sim.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 6ef8eb7..112ead6 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -619,7 +619,7 @@ CM.Data.Fortunes = [ ]; CM.Data.HalloCookies = ['Skull cookies', 'Ghost cookies', 'Bat cookies', 'Slime cookies', 'Pumpkin cookies', 'Eyeball cookies', 'Spider cookies']; CM.Data.ChristCookies = ['Christmas tree biscuits', 'Snowflake biscuits', 'Snowman biscuits', 'Holly biscuits', 'Candy cane biscuits', 'Bell biscuits', 'Present biscuits']; -CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits']; +CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits', 'Prism heart biscuits']; /******** * Disp * @@ -3535,7 +3535,7 @@ CM.Sim.BuyUpgrades = function() { else if (i == 'Elder Covenant') { CM.Sim.Win('Elder calm') } - else if (i == 'Eternal heart biscuits') { + else if (i == 'Prism heart biscuits') { CM.Sim.Win('Lovely cookies'); } else if (i == 'Heavenly key') { diff --git a/src/Data.js b/src/Data.js index 4202c89..3f0c872 100644 --- a/src/Data.js +++ b/src/Data.js @@ -28,5 +28,5 @@ CM.Data.Fortunes = [ ]; CM.Data.HalloCookies = ['Skull cookies', 'Ghost cookies', 'Bat cookies', 'Slime cookies', 'Pumpkin cookies', 'Eyeball cookies', 'Spider cookies']; CM.Data.ChristCookies = ['Christmas tree biscuits', 'Snowflake biscuits', 'Snowman biscuits', 'Holly biscuits', 'Candy cane biscuits', 'Bell biscuits', 'Present biscuits']; -CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits']; +CM.Data.ValCookies = ['Pure heart biscuits', 'Ardent heart biscuits', 'Sour heart biscuits', 'Weeping heart biscuits', 'Golden heart biscuits', 'Eternal heart biscuits', 'Prism heart biscuits']; diff --git a/src/Sim.js b/src/Sim.js index 15adeb1..8d5a712 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -512,7 +512,7 @@ CM.Sim.BuyUpgrades = function() { else if (i == 'Elder Covenant') { CM.Sim.Win('Elder calm') } - else if (i == 'Eternal heart biscuits') { + else if (i == 'Prism heart biscuits') { CM.Sim.Win('Lovely cookies'); } else if (i == 'Heavenly key') { From e2ec8a34f29344046cea202fb41cc4644725b797 Mon Sep 17 00:00:00 2001 From: Chorizorro Date: Thu, 5 Nov 2020 00:13:16 +0100 Subject: [PATCH 32/35] Add Fortune #018 to Fortunes data. Add Fortune #018 (Idleverse related fortune cookie) introduced in v2.031 to the list of fortune cookies. --- CookieMonster.js | 1 + src/Data.js | 1 + 2 files changed, 2 insertions(+) diff --git a/CookieMonster.js b/CookieMonster.js index 112ead6..8df1f29 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -611,6 +611,7 @@ CM.Data.Fortunes = [ 'Fortune #015', 'Fortune #016', 'Fortune #017', + 'Fortune #018', 'Fortune #100', 'Fortune #101', 'Fortune #102', diff --git a/src/Data.js b/src/Data.js index 3f0c872..f5a8bde 100644 --- a/src/Data.js +++ b/src/Data.js @@ -20,6 +20,7 @@ CM.Data.Fortunes = [ 'Fortune #015', 'Fortune #016', 'Fortune #017', + 'Fortune #018', 'Fortune #100', 'Fortune #101', 'Fortune #102', From 7660e6dff3c968244323245b9383c0623cd78032 Mon Sep 17 00:00:00 2001 From: DanielNoord Date: Mon, 23 Nov 2020 16:32:27 +0100 Subject: [PATCH 33/35] Config option to make upgrade bar sticky (#323) Option to make Upgrade Bar sticky --- CookieMonster.js | 12 ++++++++++++ src/Config.js | 1 + src/Disp.js | 11 +++++++++++ 3 files changed, 24 insertions(+) diff --git a/CookieMonster.js b/CookieMonster.js index d1a16a8..8d71f0a 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -540,6 +540,7 @@ CM.ConfigData.Colors = { }, func: function() {CM.Disp.UpdateColors();} }; +CM.ConfigData.UpgradeBarFixedPos = {label: ['Upgrade Bar Fixed Position OFF', 'Upgrade Bar Fixed Positione ON'], desc: 'Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling', toggle: true, func: function() {CM.Disp.ToggleUpgradeBarFixedPos();}}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 10s', 'Average CPS for past 15s', 'Average CPS for past 30s', 'Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false}; @@ -1227,6 +1228,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.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); @@ -1360,6 +1362,16 @@ CM.Disp.UpdateColors = function() { CM.Disp.UpdateBuildings(); // Class has been already set } +CM.Disp.ToggleUpgradeBarFixedPos = function() { + if (CM.Config.UpgradeBarFixedPos() == 1) { + CM.Disp.UpgradeBar.style.position = 'sticky'; + CM.Disp.UpgradeBar.style.top = '0px'; + } + else { + CM.Disp.UpgradeBar.style.position = ''; + } +} + CM.Disp.CreateWhiteScreen = function() { CM.Disp.WhiteScreen = document.createElement('div'); CM.Disp.WhiteScreen.id = 'CMWhiteScreen'; diff --git a/src/Config.js b/src/Config.js index 1598ebf..907a8f7 100644 --- a/src/Config.js +++ b/src/Config.js @@ -134,6 +134,7 @@ CM.ConfigData.Colors = { }, func: function() {CM.Disp.UpdateColors();} }; +CM.ConfigData.UpgradeBarFixedPos = {label: ['Upgrade Bar Fixed Position OFF', 'Upgrade Bar Fixed Positione ON'], desc: 'Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling', toggle: true, func: function() {CM.Disp.ToggleUpgradeBarFixedPos();}}; CM.ConfigData.CalcWrink = {label: ['Calculate with Wrinklers OFF', 'Calculate with Wrinklers ON'], desc: 'Calculate times and average Cookies Per Second with Wrinklers', toggle: true}; CM.ConfigData.CPSMode = {label: ['Current Cookies Per Second', 'Average Cookies Per Second'], desc: 'Calculate times using current Cookies Per Second or average Cookies Per Second', toggle: false}; CM.ConfigData.AvgCPSHist = {label: ['Average CPS for past 10s', 'Average CPS for past 15s', 'Average CPS for past 30s', 'Average CPS for past 1m', 'Average CPS for past 5m', 'Average CPS for past 10m', 'Average CPS for past 15m', 'Average CPS for past 30m'], desc: 'How much time average Cookies Per Second should consider', toggle: false}; diff --git a/src/Disp.js b/src/Disp.js index fcb1d2d..a1f5f1d 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -603,6 +603,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.onmouseout = function() { Game.tooltip.hide(); }; var placeholder = document.createElement('div'); @@ -736,6 +737,16 @@ CM.Disp.UpdateColors = function() { CM.Disp.UpdateBuildings(); // Class has been already set } +CM.Disp.ToggleUpgradeBarFixedPos = function() { + if (CM.Config.UpgradeBarFixedPos() == 1) { + CM.Disp.UpgradeBar.style.position = 'sticky'; + CM.Disp.UpgradeBar.style.top = '0px'; + } + else { + CM.Disp.UpgradeBar.style.position = ''; + } +} + CM.Disp.CreateWhiteScreen = function() { CM.Disp.WhiteScreen = document.createElement('div'); CM.Disp.WhiteScreen.id = 'CMWhiteScreen'; From bcef69a344d2f32a81e103f6ab59f6be355e1d20 Mon Sep 17 00:00:00 2001 From: Fabian Date: Mon, 23 Nov 2020 16:41:46 +0100 Subject: [PATCH 34/35] Sort buildings and upgrades by PP (#253) --- CookieMonster.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++-- src/Config.js | 3 ++- src/Disp.js | 47 +++++++++++++++++++++++++++++++++++++++++ src/Main.js | 4 +++- 4 files changed, 104 insertions(+), 4 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 8d71f0a..030470a 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -589,7 +589,8 @@ CM.ConfigData.TimeFormat = {label: ['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX CM.ConfigData.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', toggle: true, func: function() {CM.Disp.ToggleSayTime();}}; CM.ConfigData.GrimoireBar = {label: ['Grimoire Magic Meter Timer OFF', 'Grimoire Magic Meter Timer ON'], desc: 'A timer on how long before the Grimoire magic meter is full', toggle: true}; CM.ConfigData.Scale = {label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation', 'Engineering Notation'], desc: 'Change how long numbers are handled', toggle: false, func: function() {CM.Disp.RefreshScale();}}; - +CM.ConfigData.SortBuildings = {label: ['Sort Buildings: Default', 'Sort Buildings: PP'], desc: 'Sort the display of buildings in either default order or by PP', toggle: false, func: function () { CM.Disp.UpdateBuildings();}}; +CM.ConfigData.SortUpgrades = {label: ['Sort Upgrades: Default', 'Sort Upgrades: PP'], desc: 'Sort the display of upgrades in either default order or by PP', toggle: false, func: function () { CM.Disp.UpdateUpgrades();}}; /******** * Data * ********/ @@ -831,6 +832,14 @@ CM.Disp.CreateCssArea = function() { CM.Disp.Css.type = 'text/css'; document.head.appendChild(CM.Disp.Css); + + // given the architecture of your code, you probably want these lines somewhere else, + // but I stuck them here for convenience + l("products").style.display = "grid"; + l("storeBulk").style.gridRow = "1/1"; + + l("upgrades").style.display = "flex"; + l("upgrades").style["flex-wrap"] = "wrap"; } CM.Disp.CreateBotBar = function() { @@ -1218,6 +1227,24 @@ CM.Disp.UpdateBuildings = function() { l('productPrice' + Game.Objects[i].id).style.color = ''; } } + + // Build array of pointers, sort by pp, use array index (+2) as the grid row number + // (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options) + var arr = Object.keys(CM.Cache.Objects).map(k => + { + var o = CM.Cache.Objects[k]; + o.name = k; + o.id = Game.Objects[k].id; + return o; + }); + + if (CM.Config.SortBuildings) + arr.sort((a, b) => a.pp - b.pp); + else + arr.sort((a, b) => a.id - b.id); + + for (var x = 0; x < arr.length; x++) + Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } CM.Disp.CreateUpgradeBar = function() { @@ -1345,6 +1372,25 @@ CM.Disp.UpdateUpgrades = function() { l('CMUpgradeBarPurple').textContent = purple; l('CMUpgradeBarGray').textContent = gray; } + + // Build array of pointers, sort by pp, set flex positions + var arr = []; + for (var x = 0; x < Game.UpgradesInStore.length; x++){ + var o = {}; + o.name = Game.UpgradesInStore[x].name; + o.price = Game.UpgradesInStore[x].basePrice; + o.pp = CM.Cache.Upgrades[o.name].pp; + arr.push(o); + } + + if (CM.Config.SortUpgrades) + arr.sort((a, b) => a.pp - b.pp); + 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 + } } CM.Disp.UpdateColors = function() { @@ -1733,6 +1779,8 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('BotBar')); frag.appendChild(listing('TimerBar')); frag.appendChild(listing('TimerBarPos')); + frag.appendChild(listing('SortBuildings')); + frag.appendChild(listing('SortUpgrades')); frag.appendChild(listing('BuildColor')); frag.appendChild(listing('BulkBuildColor')); frag.appendChild(listing('UpBarColor')); @@ -3027,7 +3075,9 @@ CM.ConfigDefault = { GrimoireBar: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, - Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'} + Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}, + SortBuildings: 0, + SortUpgrades: 0 }; CM.ConfigPrefix = 'CMConfig'; diff --git a/src/Config.js b/src/Config.js index 907a8f7..56974a8 100644 --- a/src/Config.js +++ b/src/Config.js @@ -183,4 +183,5 @@ CM.ConfigData.TimeFormat = {label: ['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX CM.ConfigData.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', toggle: true, func: function() {CM.Disp.ToggleSayTime();}}; CM.ConfigData.GrimoireBar = {label: ['Grimoire Magic Meter Timer OFF', 'Grimoire Magic Meter Timer ON'], desc: 'A timer on how long before the Grimoire magic meter is full', toggle: true}; CM.ConfigData.Scale = {label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation', 'Engineering Notation'], desc: 'Change how long numbers are handled', toggle: false, func: function() {CM.Disp.RefreshScale();}}; - +CM.ConfigData.SortBuildings = {label: ['Sort Buildings: Default', 'Sort Buildings: PP'], desc: 'Sort the display of buildings in either default order or by PP', toggle: false, func: function () { CM.Disp.UpdateBuildings();}}; +CM.ConfigData.SortUpgrades = {label: ['Sort Upgrades: Default', 'Sort Upgrades: PP'], desc: 'Sort the display of upgrades in either default order or by PP', toggle: false, func: function () { CM.Disp.UpdateUpgrades();}}; diff --git a/src/Disp.js b/src/Disp.js index 8e65ec9..5f5fe96 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -206,6 +206,14 @@ CM.Disp.CreateCssArea = function() { CM.Disp.Css.type = 'text/css'; document.head.appendChild(CM.Disp.Css); + + // given the architecture of your code, you probably want these lines somewhere else, + // but I stuck them here for convenience + l("products").style.display = "grid"; + l("storeBulk").style.gridRow = "1/1"; + + l("upgrades").style.display = "flex"; + l("upgrades").style["flex-wrap"] = "wrap"; } CM.Disp.CreateBotBar = function() { @@ -593,6 +601,24 @@ CM.Disp.UpdateBuildings = function() { l('productPrice' + Game.Objects[i].id).style.color = ''; } } + + // Build array of pointers, sort by pp, use array index (+2) as the grid row number + // (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options) + var arr = Object.keys(CM.Cache.Objects).map(k => + { + var o = CM.Cache.Objects[k]; + o.name = k; + o.id = Game.Objects[k].id; + return o; + }); + + if (CM.Config.SortBuildings) + arr.sort((a, b) => a.pp - b.pp); + else + arr.sort((a, b) => a.id - b.id); + + for (var x = 0; x < arr.length; x++) + Game.Objects[arr[x].name].l.style.gridRow = (x + 2) + "/" + (x + 2); } CM.Disp.CreateUpgradeBar = function() { @@ -720,6 +746,25 @@ CM.Disp.UpdateUpgrades = function() { l('CMUpgradeBarPurple').textContent = purple; l('CMUpgradeBarGray').textContent = gray; } + + // Build array of pointers, sort by pp, set flex positions + var arr = []; + for (var x = 0; x < Game.UpgradesInStore.length; x++){ + var o = {}; + o.name = Game.UpgradesInStore[x].name; + o.price = Game.UpgradesInStore[x].basePrice; + o.pp = CM.Cache.Upgrades[o.name].pp; + arr.push(o); + } + + if (CM.Config.SortUpgrades) + arr.sort((a, b) => a.pp - b.pp); + 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 + } } CM.Disp.UpdateColors = function() { @@ -1108,6 +1153,8 @@ CM.Disp.AddMenuPref = function(title) { frag.appendChild(listing('BotBar')); frag.appendChild(listing('TimerBar')); frag.appendChild(listing('TimerBarPos')); + frag.appendChild(listing('SortBuildings')); + frag.appendChild(listing('SortUpgrades')); frag.appendChild(listing('BuildColor')); frag.appendChild(listing('BulkBuildColor')); frag.appendChild(listing('UpBarColor')); diff --git a/src/Main.js b/src/Main.js index 55c5de3..2d3b3e8 100644 --- a/src/Main.js +++ b/src/Main.js @@ -295,7 +295,9 @@ CM.ConfigDefault = { GrimoireBar: 1, Scale: 2, StatsPref: {Lucky: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, - Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'} + Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}, + SortBuildings: 0, + SortUpgrades: 0 }; CM.ConfigPrefix = 'CMConfig'; From 981dc2d1c0d9418ac235a764d831e2a33f957099 Mon Sep 17 00:00:00 2001 From: DanielNoord Date: Mon, 23 Nov 2020 16:45:09 +0100 Subject: [PATCH 35/35] Revert "Extend metric unit prefixes" (#325) --- src/Disp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Disp.js b/src/Disp.js index 5f5fe96..0e4642f 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -2133,7 +2133,7 @@ CM.Disp.lastAscendState = -1; CM.Disp.cookieTimes = [10, 15, 30, 60, 300, 600, 900, 1800]; CM.Disp.clickTimes = [1, 5, 10, 15, 30]; -CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'KY', 'MY', 'GY', 'TY', 'PY', 'EY', 'ZY', 'YY', 'KYY', 'MYY', 'GYY', 'TYY', 'PYY', 'EYY', 'ZYY', 'YYY']; +CM.Disp.metric = ['M', 'G', 'T', 'P', 'E', 'Z', 'Y']; CM.Disp.shortScale = ['M', 'B', 'Tr', 'Quadr', 'Quint', 'Sext', 'Sept', 'Oct', 'Non', 'Dec', 'Undec', 'Duodec', 'Tredec', 'Quattuordec', 'Quindec', 'Sexdec', 'Septendec', 'Octodec', 'Novemdec', 'Vigint', 'Unvigint', 'Duovigint', 'Trevigint', 'Quattuorvigint']; CM.Disp.TooltipWrinklerArea = 0;