From 58e4b7d32803b917c2f151d8454279a84f36da27 Mon Sep 17 00:00:00 2001 From: Aktanusa Date: Sat, 5 Mar 2016 10:19:12 -0500 Subject: [PATCH] Accounted for Golden Switch in Title and GC bars, Chocolate Egg stats now accounts for aura, fixed buy/sell function to reflect the real price, not the display price --- CookieMonster.js | 101 +++++++++++++++++++++++++++++++++++++---------- src/Cache.js | 34 ++++++++++++---- src/Disp.js | 20 +++++++--- src/Main.js | 2 +- src/Sim.js | 45 ++++++++++++++++++--- 5 files changed, 162 insertions(+), 40 deletions(-) diff --git a/CookieMonster.js b/CookieMonster.js index 23f3f59f..d0801c93 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -180,13 +180,33 @@ CM.Cache.RemakeSeaSpec = function() { } } -CM.Cache.RemakeSellAllTotal = function() { - 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); +CM.Cache.RemakeSellForChoEgg = function() { + if (Game.hasAura('Earth Shatterer') || Game.dragonLevel < 9) { + 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); + } + } + else { + var highestBuilding = ''; + for (var i in Game.Objects) { + if (Game.Objects[i].amount > 0) highestBuilding = i; + } + var sellTotal = 0; + for (var i in Game.Objects) { + var me = Game.Objects[i]; + var amount = 0; + if (i == highestBuilding) { + amount = me.amount - 1; + } + else { + amount = me.amount; + } + sellTotal += CM.Sim.BuildingSell(me.basePrice, amount, me.free, amount, 1); + } } - CM.Cache.SellAllTotal = sellTotal; + CM.Cache.SellForChoEgg = sellTotal; } CM.Cache.Lucky = 0; @@ -202,7 +222,7 @@ CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzyWrath = 0; CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyWrathReward = 0; -CM.Cache.SellAllTotal = 0; +CM.Cache.SellForChoEgg = 0; /********** * Config * @@ -690,7 +710,7 @@ CM.Disp.UpdateTimerBar = function() { var maxWidth = CM.Disp.TimerBar.offsetWidth - 129; var count = 0; - if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0) { + if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0 && !Game.Has('Golden switch [off]')) { CM.Disp.TimerBarGC.style.display = ''; l('CMTimerBarGCMinBar').style.width = Math.round(Math.max(0, Game.goldenCookie.minTime - Game.goldenCookie.time) * maxWidth / Game.goldenCookie.maxTime) + 'px'; if (Game.goldenCookie.minTime == Game.goldenCookie.maxTime) { @@ -1097,9 +1117,12 @@ CM.Disp.UpdateTitle = function() { titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']'; } } - else { + else if (!Game.Has('Golden switch [off]')) { titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']'; } + else { + titleGC = '[GS]' + } if (Game.season=='christmas') { addSP = true; if (l('seasonPopup').style.display != 'none') { @@ -1134,11 +1157,11 @@ CM.Disp.CreateResetTooltip = function() { CM.Disp.CreateChoEggTooltip = function() { CM.Disp.ChoEggTooltipPlaceholder = document.createElement('div'); var choEggTitleDesc = document.createElement('div'); - choEggTitleDesc.style.minWidth = '240px'; + choEggTitleDesc.style.minWidth = '310px'; choEggTitleDesc.style.marginBottom = '4px'; var div = document.createElement('div'); div.style.textAlign = 'left'; - div.textContent = 'The amount of cookies you would get from selling all buildings, popping all wrinklers, and then buying Chocolate egg'; + div.textContent = 'The amount of cookies you would get from selling all buildings with Earth Shatterer aura (if possible), popping all wrinklers, and then buying Chocolate egg'; choEggTitleDesc.appendChild(div); CM.Disp.ChoEggTooltipPlaceholder.appendChild(choEggTitleDesc); } @@ -1641,7 +1664,7 @@ CM.Disp.AddMenuStats = function(title) { choEggTitleSpan.style.verticalAlign = 'bottom'; choEggTitleSpan.textContent = '?'; choEggTitleFrag.appendChild(choEggTitleSpan); - var choEggTotal = Game.cookies + CM.Cache.SellAllTotal; + var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg; if (Game.cpsSucked > 0) { choEggTotal += totalSucked; } @@ -1803,7 +1826,12 @@ CM.Disp.Tooltip = function(type, name) { } } else if (Game.buyMode == -1) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + l('productPrice' + Game.Objects[name].id).innerHTML); + 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))); + } + 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))); + } } } else { // Upgrades @@ -2187,7 +2215,7 @@ CM.Loop = function() { CM.Cache.RemakeLucky(); CM.Cache.RemakeChain(); CM.Cache.RemakeSeaSpec(); - CM.Cache.RemakeSellAllTotal(); + CM.Cache.RemakeSellForChoEgg(); CM.Disp.UpdateBotBarOther(); CM.Disp.UpdateBuildings(); @@ -2287,7 +2315,7 @@ CM.VersionMinor = '3'; *******/ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { - var price=0; + /*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)); } @@ -2296,11 +2324,25 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { if (Game.Has('Faberge egg')) price *= 0.99; if (Game.Has('Divine discount')) price *= 0.99; if (Game.hasAura('Fierce Hoarder')) price *= 0.98; - return Math.ceil(price); + return Math.ceil(price);*/ + + var moni = 0; + for (var i = 0; i < increase; i++) { + var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + if (Game.Has('Season savings')) price *= 0.99; + if (Game.Has('Santa\'s dominion')) price *= 0.99; + if (Game.Has('Faberge egg')) price *= 0.99; + if (Game.Has('Divine discount')) price *= 0.99; + if (Game.hasAura('Fierce Hoarder')) price *= 0.98; + price = Math.ceil(price); + moni+=price; + start++; + } + return moni; } -CM.Sim.BuildingSell = function(basePrice, start, free, amount) { - var price=0; +CM.Sim.BuildingSell = function(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)); } @@ -2309,13 +2351,32 @@ CM.Sim.BuildingSell = function(basePrice, start, free, amount) { if (Game.Has('Faberge egg')) price*=0.99; if (Game.Has('Divine discount')) price*=0.99; if (Game.hasAura('Fierce Hoarder')) price*=0.98; - if (Game.hasAura('Earth Shatterer')) { + if (Game.hasAura('Earth Shatterer') || emuAura) { price *= 0.85; } else { price *= 0.5; } - return Math.ceil(price); + return Math.ceil(price);*/ + + var moni=0; + for (var i = 0; i < amount; i++) { + var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + if (Game.Has('Season savings')) price *= 0.99; + if (Game.Has('Santa\'s dominion')) price *= 0.99; + if (Game.Has('Faberge egg')) price *= 0.99; + if (Game.Has('Divine discount')) price *= 0.99; + if (Game.hasAura('Fierce Hoarder')) price *= 0.98; + price = Math.ceil(price); + var giveBack = 0.5; + if (Game.hasAura('Earth Shatterer') || emuAura) giveBack=0.85; + price = Math.floor(price * giveBack); + if (start > 0) { + moni += price; + start--; + } + } + return moni; } CM.Sim.Has = function(what) { diff --git a/src/Cache.js b/src/Cache.js index 05baeb17..eb7eecc5 100644 --- a/src/Cache.js +++ b/src/Cache.js @@ -160,13 +160,33 @@ CM.Cache.RemakeSeaSpec = function() { } } -CM.Cache.RemakeSellAllTotal = function() { - 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); +CM.Cache.RemakeSellForChoEgg = function() { + if (Game.hasAura('Earth Shatterer') || Game.dragonLevel < 9) { + 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); + } } - CM.Cache.SellAllTotal = sellTotal; + else { + var highestBuilding = ''; + for (var i in Game.Objects) { + if (Game.Objects[i].amount > 0) highestBuilding = i; + } + var sellTotal = 0; + for (var i in Game.Objects) { + var me = Game.Objects[i]; + var amount = 0; + if (i == highestBuilding) { + amount = me.amount - 1; + } + else { + amount = me.amount; + } + sellTotal += CM.Sim.BuildingSell(me.basePrice, amount, me.free, amount, 1); + } + } + CM.Cache.SellForChoEgg = sellTotal; } CM.Cache.Lucky = 0; @@ -182,5 +202,5 @@ CM.Cache.ChainFrenzy = 0; CM.Cache.ChainFrenzyWrath = 0; CM.Cache.ChainFrenzyReward = 0; CM.Cache.ChainFrenzyWrathReward = 0; -CM.Cache.SellAllTotal = 0; +CM.Cache.SellForChoEgg = 0; diff --git a/src/Disp.js b/src/Disp.js index c7191576..4874ab33 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -332,7 +332,7 @@ CM.Disp.UpdateTimerBar = function() { var maxWidth = CM.Disp.TimerBar.offsetWidth - 129; var count = 0; - if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0) { + if (Game.goldenCookie.life <= 0 && Game.goldenCookie.toDie == 0 && !Game.Has('Golden switch [off]')) { CM.Disp.TimerBarGC.style.display = ''; l('CMTimerBarGCMinBar').style.width = Math.round(Math.max(0, Game.goldenCookie.minTime - Game.goldenCookie.time) * maxWidth / Game.goldenCookie.maxTime) + 'px'; if (Game.goldenCookie.minTime == Game.goldenCookie.maxTime) { @@ -739,9 +739,12 @@ CM.Disp.UpdateTitle = function() { titleGC = '[G ' + Math.ceil(Game.goldenCookie.life / Game.fps) + ']'; } } - else { + else if (!Game.Has('Golden switch [off]')) { titleGC = '[' + Math.ceil((Game.goldenCookie.maxTime - Game.goldenCookie.time) / Game.fps) + ']'; } + else { + titleGC = '[GS]' + } if (Game.season=='christmas') { addSP = true; if (l('seasonPopup').style.display != 'none') { @@ -776,11 +779,11 @@ CM.Disp.CreateResetTooltip = function() { CM.Disp.CreateChoEggTooltip = function() { CM.Disp.ChoEggTooltipPlaceholder = document.createElement('div'); var choEggTitleDesc = document.createElement('div'); - choEggTitleDesc.style.minWidth = '240px'; + choEggTitleDesc.style.minWidth = '310px'; choEggTitleDesc.style.marginBottom = '4px'; var div = document.createElement('div'); div.style.textAlign = 'left'; - div.textContent = 'The amount of cookies you would get from selling all buildings, popping all wrinklers, and then buying Chocolate egg'; + div.textContent = 'The amount of cookies you would get from selling all buildings with Earth Shatterer aura (if possible), popping all wrinklers, and then buying Chocolate egg'; choEggTitleDesc.appendChild(div); CM.Disp.ChoEggTooltipPlaceholder.appendChild(choEggTitleDesc); } @@ -1283,7 +1286,7 @@ CM.Disp.AddMenuStats = function(title) { choEggTitleSpan.style.verticalAlign = 'bottom'; choEggTitleSpan.textContent = '?'; choEggTitleFrag.appendChild(choEggTitleSpan); - var choEggTotal = Game.cookies + CM.Cache.SellAllTotal; + var choEggTotal = Game.cookies + CM.Cache.SellForChoEgg; if (Game.cpsSucked > 0) { choEggTotal += totalSucked; } @@ -1445,7 +1448,12 @@ CM.Disp.Tooltip = function(type, name) { } } else if (Game.buyMode == -1) { - l('tooltip').innerHTML = l('tooltip').innerHTML.split(Beautify(Game.Objects[name].getPrice())).join('-' + l('productPrice' + Game.Objects[name].id).innerHTML); + 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))); + } + 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))); + } } } else { // Upgrades diff --git a/src/Main.js b/src/Main.js index 7542a335..a1266297 100644 --- a/src/Main.js +++ b/src/Main.js @@ -90,7 +90,7 @@ CM.Loop = function() { CM.Cache.RemakeLucky(); CM.Cache.RemakeChain(); CM.Cache.RemakeSeaSpec(); - CM.Cache.RemakeSellAllTotal(); + CM.Cache.RemakeSellForChoEgg(); CM.Disp.UpdateBotBarOther(); CM.Disp.UpdateBuildings(); diff --git a/src/Sim.js b/src/Sim.js index 695aed76..1c986322 100644 --- a/src/Sim.js +++ b/src/Sim.js @@ -3,7 +3,7 @@ *******/ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { - var price=0; + /*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)); } @@ -12,11 +12,25 @@ CM.Sim.BuildingGetPrice = function(basePrice, start, free, increase) { if (Game.Has('Faberge egg')) price *= 0.99; if (Game.Has('Divine discount')) price *= 0.99; if (Game.hasAura('Fierce Hoarder')) price *= 0.98; - return Math.ceil(price); + return Math.ceil(price);*/ + + var moni = 0; + for (var i = 0; i < increase; i++) { + var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + if (Game.Has('Season savings')) price *= 0.99; + if (Game.Has('Santa\'s dominion')) price *= 0.99; + if (Game.Has('Faberge egg')) price *= 0.99; + if (Game.Has('Divine discount')) price *= 0.99; + if (Game.hasAura('Fierce Hoarder')) price *= 0.98; + price = Math.ceil(price); + moni+=price; + start++; + } + return moni; } -CM.Sim.BuildingSell = function(basePrice, start, free, amount) { - var price=0; +CM.Sim.BuildingSell = function(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)); } @@ -25,13 +39,32 @@ CM.Sim.BuildingSell = function(basePrice, start, free, amount) { if (Game.Has('Faberge egg')) price*=0.99; if (Game.Has('Divine discount')) price*=0.99; if (Game.hasAura('Fierce Hoarder')) price*=0.98; - if (Game.hasAura('Earth Shatterer')) { + if (Game.hasAura('Earth Shatterer') || emuAura) { price *= 0.85; } else { price *= 0.5; } - return Math.ceil(price); + return Math.ceil(price);*/ + + var moni=0; + for (var i = 0; i < amount; i++) { + var price = basePrice * Math.pow(Game.priceIncrease, Math.max(0, start - free)); + if (Game.Has('Season savings')) price *= 0.99; + if (Game.Has('Santa\'s dominion')) price *= 0.99; + if (Game.Has('Faberge egg')) price *= 0.99; + if (Game.Has('Divine discount')) price *= 0.99; + if (Game.hasAura('Fierce Hoarder')) price *= 0.98; + price = Math.ceil(price); + var giveBack = 0.5; + if (Game.hasAura('Earth Shatterer') || emuAura) giveBack=0.85; + price = Math.floor(price * giveBack); + if (start > 0) { + moni += price; + start--; + } + } + return moni; } CM.Sim.Has = function(what) {