Added tooltip with costs for Dragon Levels (#65)
This commit is contained in:
57
src/Cache.js
57
src/Cache.js
@@ -288,6 +288,63 @@ CM.Cache.UpdateCurrWrinklerCPS = function() {
|
||||
CM.Cache.CurrWrinklerCPSMult = count * (count * 0.05 * 1.1) * (Game.Has('Sacrilegious corruption') * 0.05 + 1) * (Game.Has('Wrinklerspawn') * 0.05 + 1) * godMult;
|
||||
}
|
||||
|
||||
/********
|
||||
* Section: Functions related to "Specials" (Dragon and Santa) */
|
||||
|
||||
/**
|
||||
* This functions caches the current cost of upgrading the dragon level so it can be displayed in the tooltip
|
||||
* It is called by the relevan tooltip-code as a result of CM.Disp.AddDragonLevelUpTooltip() and by CM.Loop()
|
||||
* @global {number} CM.Cache.lastDragonLevel The last cached dragon level
|
||||
* @global {string} CM.Cache.CostDragonUpgrade The Beautified cost of the next upgrade
|
||||
*/
|
||||
CM.Cache.CacheDragonCost = function() {
|
||||
if (CM.Cache.lastDragonLevel != Game.dragonLevel || CM.Sim.DoSims) {
|
||||
if (Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")) {
|
||||
var target = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];
|
||||
var amount = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];
|
||||
if (target != "i") {
|
||||
target = target.replaceAll("\'", "");
|
||||
if (Game.Objects[target].amount < amount) {
|
||||
CM.Cache.CostDragonUpgrade = "Not enough buildings to sell";
|
||||
}
|
||||
else {
|
||||
var cost = 0;
|
||||
CM.Sim.CopyData();
|
||||
for (var i = 0; i < amount; i++) {
|
||||
var price = CM.Sim.Objects[target].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[target].amount - 1 - CM.Sim.Objects[target].free));
|
||||
price = Game.modifyBuildingPrice(CM.Sim.Objects[target], price);
|
||||
price = Math.ceil(price);
|
||||
cost += price;
|
||||
CM.Sim.Objects[target].amount--;
|
||||
}
|
||||
CM.Cache.CostDragonUpgrade = CM.Disp.Beautify(cost);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var cost = 0;
|
||||
CM.Sim.CopyData();
|
||||
for (var j in Game.Objects) {
|
||||
target = j;
|
||||
if (Game.Objects[target].amount < amount) {
|
||||
CM.Cache.CostDragonUpgrade = "Not enough buildings to sell";
|
||||
}
|
||||
else {
|
||||
for (var i = 0; i < amount; i++) {
|
||||
var price = CM.Sim.Objects[target].basePrice * Math.pow(Game.priceIncrease, Math.max(0, CM.Sim.Objects[target].amount - 1 - CM.Sim.Objects[target].free));
|
||||
price = Game.modifyBuildingPrice(CM.Sim.Objects[target], price);
|
||||
price = Math.ceil(price);
|
||||
cost += price;
|
||||
CM.Sim.Objects[target].amount--;
|
||||
}
|
||||
}
|
||||
}
|
||||
CM.Cache.CostDragonUpgrade = CM.Disp.Beautify(cost);
|
||||
}
|
||||
}
|
||||
CM.Cache.lastDragonLevel = Game.dragonLevel;
|
||||
}
|
||||
}
|
||||
|
||||
/********
|
||||
* Section: UNSORTED */
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
*/
|
||||
CM.Config.SaveConfig = function() {
|
||||
let saveString = b64_to_utf8(unescape(localStorage.getItem('CookieClickerGame')).split('!END!')[0]);
|
||||
let pattern = /CookieMonster.*[;$]/;
|
||||
CookieMonsterSave = saveString.match(/CookieMonster.*(;|$)/);
|
||||
if (CookieMonsterSave != null) {
|
||||
newSaveString = saveString.replace(CookieMonsterSave[0], "CookieMonster:" + CM.save());
|
||||
|
||||
22
src/Disp.js
22
src/Disp.js
@@ -1808,7 +1808,7 @@ CM.Disp.UpdateWrinklerTooltip = function() {
|
||||
}
|
||||
|
||||
/********
|
||||
* Section: Functions related to the dragon aura interface */
|
||||
* Section: Functions related to the Dragon */
|
||||
|
||||
/**
|
||||
* This functions adds the two extra lines about CPS and time to recover to the aura picker infoscreen
|
||||
@@ -1838,6 +1838,22 @@ CM.Disp.AddAuraInfo = function(aura) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This functions adds a tooltip to the level up button displaying the cost of rebuying all
|
||||
* It is called by Game.ToggleSpecialMenu() after CM.ReplaceNative()
|
||||
*/
|
||||
CM.Disp.AddDragonLevelUpTooltip = function() {
|
||||
// Check if it is the dragon popup that is on screen
|
||||
if ((l('specialPopup').className.match(/onScreen/) && l('specialPopup').children[0].style.background.match(/dragon/)) != null) {
|
||||
for (let i = 0; i < l('specialPopup').childNodes.length; i++) {
|
||||
if (l('specialPopup').childNodes[i].className == "optionBox") {
|
||||
l('specialPopup').children[i].onmouseover = function() {CM.Cache.CacheDragonCost(); Game.tooltip.dynamic = 1; Game.tooltip.draw(this, CM.Cache.CostDragonUpgrade, 'this'); Game.tooltip.wobble();}
|
||||
l('specialPopup').children[i].onmouseout = function() {Game.tooltip.shouldHide=1;}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/********
|
||||
* Section: General functions related to the Options/Stats pages
|
||||
|
||||
@@ -2400,7 +2416,7 @@ CM.Disp.CreateStatsMissDisp = function(theMissDisp) {
|
||||
* @returns {object} section The object contating the Lucky section
|
||||
*/
|
||||
CM.Disp.CreateStatsLuckySection = function() {
|
||||
// TODO: Remove this and creater better tooltip!!
|
||||
// This sets which tooltip to display for certain stats
|
||||
var goldCookTooltip = CM.Sim.auraMult('Dragon\'s Fortune') ? 'GoldCookDragonsFortuneTooltipPlaceholder' : 'GoldCookTooltipPlaceholder';
|
||||
|
||||
var section = document.createElement('div');
|
||||
@@ -2465,7 +2481,7 @@ CM.Disp.CreateStatsLuckySection = function() {
|
||||
* @returns {object} section The object contating the Chain section
|
||||
*/
|
||||
CM.Disp.CreateStatsChainSection = function() {
|
||||
// TODO: Remove this and creater better tooltip!!
|
||||
// This sets which tooltip to display for certain stats
|
||||
var goldCookTooltip = CM.Sim.auraMult('Dragon\'s Fortune') ? 'GoldCookDragonsFortuneTooltipPlaceholder' : 'GoldCookTooltipPlaceholder';
|
||||
|
||||
var section = document.createElement('div');
|
||||
|
||||
16
src/Main.js
16
src/Main.js
@@ -45,7 +45,7 @@ CM.ReplaceNative = function() {
|
||||
CM.Backup.scriptLoaded = Game.scriptLoaded;
|
||||
Game.scriptLoaded = function(who, script) {
|
||||
CM.Backup.scriptLoaded(who, script);
|
||||
CM.Disp.AddTooltipGrimoire()
|
||||
CM.Disp.ReplaceTooltipGrimoire()
|
||||
CM.ReplaceNativeGrimoire();
|
||||
}
|
||||
|
||||
@@ -70,6 +70,16 @@ CM.ReplaceNative = function() {
|
||||
CM.Disp.AddAuraInfo(aura);
|
||||
}
|
||||
|
||||
CM.Backup.ToggleSpecialMenu = Game.ToggleSpecialMenu;
|
||||
/**
|
||||
* This functions adds the code to display the tooltips for the levelUp button of the dragon
|
||||
*/
|
||||
Game.ToggleSpecialMenu = function(on) {
|
||||
CM.Backup.ToggleSpecialMenu(on);
|
||||
CM.Disp.AddDragonLevelUpTooltip();
|
||||
}
|
||||
|
||||
|
||||
CM.Backup.UpdateMenu = Game.UpdateMenu;
|
||||
Game.UpdateMenu = function() {
|
||||
if (typeof jscolor.picker === 'undefined' || typeof jscolor.picker.owner === 'undefined') {
|
||||
@@ -112,7 +122,7 @@ CM.ReplaceNativeGrimoireLaunch = function() {
|
||||
eval('CM.Backup.GrimoireLaunchMod = ' + minigame.launch.toString().split('=this').join('= Game.Objects[\'Wizard tower\'].minigame'));
|
||||
Game.Objects['Wizard tower'].minigame.launch = function() {
|
||||
CM.Backup.GrimoireLaunchMod();
|
||||
CM.Disp.AddTooltipGrimoire();
|
||||
CM.Disp.ReplaceTooltipGrimoire();
|
||||
CM.HasReplaceNativeGrimoireDraw = false;
|
||||
CM.ReplaceNativeGrimoireDraw();
|
||||
}
|
||||
@@ -149,11 +159,13 @@ CM.Loop = function() {
|
||||
CM.Cache.CacheStats();
|
||||
CM.Cache.CacheMissingUpgrades();
|
||||
CM.Cache.RemakeChain();
|
||||
CM.Cache.CacheDragonCost();
|
||||
|
||||
CM.Cache.RemakeSeaSpec();
|
||||
CM.Cache.RemakeSellForChoEgg();
|
||||
|
||||
CM.Sim.DoSims = 0;
|
||||
|
||||
}
|
||||
|
||||
// Check for aura change to recalculate buildings prices
|
||||
|
||||
Reference in New Issue
Block a user