Merge pull request #705 from Aktanusa/dev

Push hot fixes to master
This commit is contained in:
Daniël van Noord
2021-03-19 17:51:59 +01:00
committed by GitHub
13 changed files with 442 additions and 1365 deletions

File diff suppressed because one or more lines are too long

View File

@@ -16,7 +16,8 @@ max(cost - cookies in bank, 0)/cps + cost/Δ cps
Cookie Monster also indicates the time left before being able to buy an upgrade or building, and takes it into consideration. It will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, it will know and highlight that building's value. Cookie Monster also indicates the time left before being able to buy an upgrade or building, and takes it into consideration. It will take *everything* in consideration, meaning if buying a building also unlocks an achievement which boosts your income, which unlocks an achievement, it will know and highlight that building's value.
This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value: This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value. It compares the PP across all possible buy options: if a buy 10 option is better than any of the buy 1 options Cookie Monster will colour them accordingly.
Cookie Monster uses the following standard colours:
* Light Blue: (upgrades) This item has a better PP than the best building to buy * Light Blue: (upgrades) This item has a better PP than the best building to buy
* Green: This building has the best PP * Green: This building has the best PP

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1713
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-restricted-syntax */
/* eslint-disable no-unused-vars */ /* eslint-disable no-unused-vars */
/** Functions related to the Dragon */ /** Functions related to the Dragon */
@@ -52,28 +51,27 @@ export default function CacheDragonCost() {
} else { } else {
let cost = 0; let cost = 0;
CopyData(); CopyData();
for (const j of Object.keys(Game.Objects)) { Object.keys(Game.Objects).forEach((j) => {
target = j; target = j;
if (Game.Objects[target].amount < amount) { if (Game.Objects[target].amount < amount) {
CacheCostDragonUpgrade = 'Not enough buildings to sell'; CacheCostDragonUpgrade = 'Not enough buildings to sell';
break; return;
} else { }
for (let i = 0; i < amount; i++) { for (let i = 0; i < amount; i++) {
let price = let price =
SimObjects[target].basePrice * SimObjects[target].basePrice *
Game.priceIncrease ** Game.priceIncrease **
Math.max( Math.max(
0, 0,
SimObjects[target].amount - 1 - SimObjects[target].free, SimObjects[target].amount - 1 - SimObjects[target].free,
); );
price = Game.modifyBuildingPrice(SimObjects[target], price); price = Game.modifyBuildingPrice(SimObjects[target], price);
price = Math.ceil(price); price = Math.ceil(price);
cost += price; cost += price;
SimObjects[target].amount -= 1; SimObjects[target].amount -= 1;
}
} }
CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`;
} });
} }
} }
CacheLastDragonLevel = Game.dragonLevel; CacheLastDragonLevel = Game.dragonLevel;

View File

@@ -19,6 +19,10 @@ import ColourOfPP from './ColourOfPP';
*/ */
function CacheColor(target, amount) { function CacheColor(target, amount) {
Object.keys(target).forEach((i) => { Object.keys(target).forEach((i) => {
if (CMOptions.PPRigidelMode && amount === 1) {
target[i].color = ColorGray;
return;
}
target[i].color = ColourOfPP( target[i].color = ColourOfPP(
target[i], target[i],
Game.Objects[i].getSumPrice(amount), Game.Objects[i].getSumPrice(amount),
@@ -39,7 +43,8 @@ function CachePP(target, amount) {
Game.cookiesPs + Game.cookiesPs +
price / target[i].bonus; price / target[i].bonus;
} else target[i].pp = price / target[i].bonus; } else target[i].pp = price / target[i].bonus;
CachePPArray.push([target[i].pp, amount]); if (!(CMOptions.PPRigidelMode && amount === 1))
CachePPArray.push([target[i].pp, amount]);
}); });
} }

View File

@@ -29,6 +29,7 @@ This update also implements the following functions:</br>
- Added option to show buttons that can hide the upgrade and building section</br> - Added option to show buttons that can hide the upgrade and building section</br>
- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)</br> - Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)</br>
- Statistics page now shows chance for random drops when they have not been achieved</br> - Statistics page now shows chance for random drops when they have not been achieved</br>
- In a later hotfix we have added a Rigidel mode that will colour all buy 1 options grey</br>
</br> </br>
This update fixes the following bugs:</br> This update fixes the following bugs:</br>
- Incorrect amount for "required for max plant reward" in statistics page</br> - Incorrect amount for "required for max plant reward" in statistics page</br>

View File

@@ -221,6 +221,13 @@ const Config = {
'Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values', 'Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values',
true, true,
), ),
PPRigidelMode: new SettingStandard(
'bool',
'Calculation',
['Rigidel Mode OFF', 'Rigidel Mode ON'],
'Makes CookieMonster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',
true,
),
PPSecondsLowerLimit: new SettingInputNumber( PPSecondsLowerLimit: new SettingInputNumber(
'numscale', 'numscale',
'Calculation', 'Calculation',

View File

@@ -13,6 +13,7 @@ const ConfigDefault = {
AvgCPSHist: 3, AvgCPSHist: 3,
AvgClicksHist: 0, AvgClicksHist: 0,
PPExcludeTop: 0, PPExcludeTop: 0,
PPRigidelMode: 0,
PPSecondsLowerLimit: 0, PPSecondsLowerLimit: 0,
PPOnlyConsiderBuyable: 0, PPOnlyConsiderBuyable: 0,
ToolWarnBon: 1, ToolWarnBon: 1,

View File

@@ -38,22 +38,24 @@ function CreateUpgradeBarLegend() {
return div; return div;
}; };
legend.appendChild(legendLine(ColorBlue, 'Better than best PP building'));
legend.appendChild(legendLine(ColorGreen, 'Same as best PP building'));
legend.appendChild( legend.appendChild(
legendLine( legendLine(ColorBlue, 'Better than the best PP of a building option'),
ColorYellow,
'Between best and worst PP buildings closer to best',
),
); );
legend.appendChild( legend.appendChild(
legendLine( legendLine(ColorGreen, 'Same as the best PP building option'),
ColorOrange, );
'Between best and worst PP buildings closer to worst', legend.appendChild(
), legendLine(ColorYellow, 'Within the top 10 of PP for buildings'),
);
legend.appendChild(
legendLine(ColorOrange, 'Within the top 20 of PP for buildings'),
);
legend.appendChild(
legendLine(ColorRed, 'Within the top 30 of PP for buildings'),
);
legend.appendChild(
legendLine(ColorPurple, 'Outside of the top 30 of PP for buildings'),
); );
legend.appendChild(legendLine(ColorRed, 'Same as worst PP building'));
legend.appendChild(legendLine(ColorPurple, 'Worse than worst PP building'));
legend.appendChild(legendLine(ColorGray, 'Negative or infinity PP')); legend.appendChild(legendLine(ColorGray, 'Negative or infinity PP'));
return legend; return legend;
} }

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-restricted-syntax */
import { import {
CacheObjects1, CacheObjects1,
CacheObjects10, CacheObjects10,
@@ -76,6 +75,9 @@ export default function Building() {
// Add "production left till next achievement"-bar // Add "production left till next achievement"-bar
l('CMTooltipProductionHeader').style.display = 'none'; l('CMTooltipProductionHeader').style.display = 'none';
l('CMTooltipTime').style.marginBottom = '0px'; l('CMTooltipTime').style.marginBottom = '0px';
// Can this ESLint error be solved while retaining the functionality of break?
// eslint-disable-next-line no-restricted-syntax
for (const i of Object.keys(Game.Objects[TooltipName].productionAchievs)) { for (const i of Object.keys(Game.Objects[TooltipName].productionAchievs)) {
if ( if (
!Game.HasAchiev( !Game.HasAchiev(

View File

@@ -2,6 +2,7 @@ import {
CacheWrinklersFattest, CacheWrinklersFattest,
CacheWrinklersTotal, CacheWrinklersTotal,
} from '../../../Cache/VariablesAndData'; } from '../../../Cache/VariablesAndData';
import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting';
import { TooltipName } from '../../VariablesAndData'; import { TooltipName } from '../../VariablesAndData';
import * as Create from '../CreateTooltip'; import * as Create from '../CreateTooltip';
@@ -16,9 +17,9 @@ export default function WrinklerButton() {
const WrinklerReward = document.createElement('div'); const WrinklerReward = document.createElement('div');
WrinklerReward.id = 'CMWrinklerReward'; WrinklerReward.id = 'CMWrinklerReward';
if (TooltipName === 'PopAll') { if (TooltipName === 'PopAll') {
WrinklerReward.textContent = CacheWrinklersTotal; WrinklerReward.textContent = Beautify(CacheWrinklersTotal);
} else if (TooltipName === 'PopFattest') { } else if (TooltipName === 'PopFattest') {
WrinklerReward.textContent = CacheWrinklersFattest[0]; WrinklerReward.textContent = Beautify(CacheWrinklersFattest[0]);
} }
l('tooltip').appendChild(WrinklerReward); l('tooltip').appendChild(WrinklerReward);