From 78ec726f4a0d552ba6a20d57eed27400159142ec Mon Sep 17 00:00:00 2001 From: Pedro Angelo Date: Wed, 6 Jun 2018 01:46:11 -0300 Subject: [PATCH 01/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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/13] 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) {