[Automated] Merge dev into gh-pages

This commit is contained in:
github-actions[bot]
2024-09-02 07:22:13 +00:00
committed by GitHub
11 changed files with 164 additions and 16 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

18
package-lock.json generated
View File

@@ -4799,8 +4799,7 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
"integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==",
"dev": true,
"requires": {}
"dev": true
},
"@webpack-cli/info": {
"version": "1.5.0",
@@ -4815,8 +4814,7 @@
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz",
"integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==",
"dev": true,
"requires": {}
"dev": true
},
"@xtuc/ieee754": {
"version": "1.2.0",
@@ -4840,8 +4838,7 @@
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"dev": true,
"requires": {}
"dev": true
},
"ajv": {
"version": "6.12.6",
@@ -4859,8 +4856,7 @@
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true,
"requires": {}
"dev": true
},
"ansi-colors": {
"version": "4.1.1",
@@ -5492,8 +5488,7 @@
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz",
"integrity": "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==",
"dev": true,
"requires": {}
"dev": true
},
"eslint-import-resolver-node": {
"version": "0.3.7",
@@ -7455,8 +7450,7 @@
"version": "1.7.6",
"resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz",
"integrity": "sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==",
"dev": true,
"requires": {}
"dev": true
}
}
},

View File

@@ -549,6 +549,14 @@ const settings = {
'Shows a tooltip for plants that have a cookie reward.',
true,
),
TooltipStocks: new settingClasses.SettingStandard(
1,
'bool',
'Tooltip',
['Stock market tooltips OFF', 'Stock market tooltips ON'],
'Shows additional info in the stock market tooltips.',
true,
),
TooltipPantheon: new settingClasses.SettingStandard(
1,
'bool',

View File

@@ -0,0 +1,52 @@
/**
* This function calculates a stock's next expected value
* @param {number} value The stock's current value
* @param {number} delta The stock's current delta
* @param {number} restingValue The stock's resting value
* @param {number} mode The stock's current mode
* @param {number} bankLevel The bank building level
* @param {number} dragonBoost The current aura multiplier from Supreme Intellect and Reality Bending
* @returns {number} value + delta The stock's next expected value
*/
export default function CalculateStockNextExpectedValue(
pValue,
pDelta,
restingValue,
mode,
bankLevel,
dragonBoost,
) {
let value = pValue;
let delta = pDelta;
delta *= 0.97 + 0.01 * dragonBoost;
switch (mode) {
case 0:
delta *= 0.95;
break;
case 1:
delta *= 0.99;
delta += 0.02;
break;
case 2:
delta *= 0.99;
delta -= 0.02;
break;
case 3:
delta += 0.06;
value += 2.5;
break;
case 4:
delta -= 0.06;
value -= 2.5;
break;
default:
break;
}
value += (restingValue - value) * 0.01;
if (mode === 3) value -= 0.582;
if (mode === 4) value += 0.6;
if (value > 100 + (bankLevel - 1) * 3 && delta > 0) delta *= 0.9;
if (value < 5) value += (5 - value) * 0.5;
if (value < 5 && delta < 0) delta *= 0.95;
return Math.max(value + delta, 1);
}

View File

@@ -98,6 +98,8 @@ export function CreateTooltip(type, name) {
l('tooltip').innerHTML = Game.ObjectsById[2].minigame.tileTooltip(name[0], name[1])();
// Harvest all button in garden
else if (type === 'ha') l('tooltip').innerHTML = Game.ObjectsById[2].minigame.toolTooltip(1)();
// Stock market
else if (type === 'sm') l('tooltip').innerHTML = Game.Objects.Bank.minigame.goodTooltip(name)();
else if (type === 'wb') l('tooltip').innerHTML = '';
else if (type === 'pag') l('tooltip').innerHTML = Game.Objects.Temple.minigame.godTooltip(name)();
else if (type === 'pas')
@@ -111,6 +113,7 @@ export function CreateTooltip(type, name) {
type === 'g' ||
(type === 'p' && !Game.keys[16]) ||
type === 'ha' ||
type === 'sm' ||
type === 'wb' ||
type === 'pag' ||
(type === 'pas' && name[1] !== -1)

View File

@@ -0,0 +1,72 @@
import Beautify from '../../BeautifyAndFormatting/Beautify';
import {
TooltipName,
ColourTextPre,
ColourGreen,
ColourYellow,
ColourOrange,
ColourRed,
ColourPurple,
ColourGray,
} from '../../VariablesAndData';
import CalculateStockNextExpectedValue from '../../HelperFunctions/CalculateStockNextExpectedValue';
import * as Create from '../CreateTooltip';
/**
* This function adds extra info to the stock market
* It adds to the additional information to l('CMTooltipArea')
*/
export default function StockMarket() {
const { minigame } = Game.Objects.Bank;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipStocks) {
const tooltipBox = l('CMTooltipBorder');
const stock = minigame.goodsById[TooltipName];
// Current stock mode
tooltipBox.appendChild(Create.TooltipCreateHeader('Current Mode'));
const stockMode = document.createElement('div');
stockMode.id = 'CMTooltipMode';
tooltipBox.appendChild(stockMode);
const modeIndex = stock.mode;
const modes = ['Stable', 'Slow Rise', 'Slow Fall', 'Fast Rise', 'Fast Fall', 'Chaotic'];
stockMode.textContent = modes[modeIndex];
const colours = [ColourGray, ColourYellow, ColourOrange, ColourGreen, ColourRed, ColourPurple];
stockMode.className = ColourTextPre + colours[modeIndex];
// Current stock delta value
tooltipBox.appendChild(Create.TooltipCreateHeader('Delta'));
const delta = document.createElement('div');
delta.id = 'CMTooltipDelta';
tooltipBox.appendChild(delta);
delta.textContent = Beautify(stock.d);
const deltaColour = stock.d < 0 ? ColourRed : ColourGreen;
delta.className = ColourTextPre + deltaColour;
// Stock resting value
tooltipBox.appendChild(Create.TooltipCreateHeader('Resting Value'));
const restingValue = document.createElement('div');
restingValue.id = 'CMTooltipRestingValue';
tooltipBox.appendChild(restingValue);
restingValue.textContent = `$${Beautify(minigame.getRestingVal(stock.id))}`;
restingValue.style.color = 'white';
// Next expected value
tooltipBox.appendChild(Create.TooltipCreateHeader('Expected Next Value'));
const expectedNextValue = document.createElement('div');
expectedNextValue.id = 'CMTooltipExpectedValue';
tooltipBox.appendChild(expectedNextValue);
const expectedValue = CalculateStockNextExpectedValue(
stock.val,
stock.d,
minigame.getRestingVal(stock.id),
stock.mode,
Game.Objects.Bank.level,
Game.auraMult('Supreme Intellect'),
);
expectedNextValue.textContent = `$${Beautify(expectedValue) + (expectedValue < stock.val ? '\u25bc' : '\u25b2')}`;
const expectedNextValueColour = expectedValue < stock.val ? ColourRed : ColourGreen;
expectedNextValue.className = ColourTextPre + expectedNextValueColour;
l('CMTooltipArea').appendChild(tooltipBox);
} else l('CMTooltipArea').style.display = 'none';
}

View File

@@ -3,6 +3,7 @@ import { TooltipName, TooltipType } from '../VariablesAndData';
import * as Create from './CreateTooltip';
import Building from './TypesOfTooltips/Building';
import GardenPlots from './TypesOfTooltips/GardenPlots';
import StockMarket from './TypesOfTooltips/StockMarket';
import Grimoire from './TypesOfTooltips/Grimoire';
import HarvestAll from './TypesOfTooltips/HarvestAll';
import PantheonGods from './TypesOfTooltips/PantheonGods';
@@ -33,6 +34,8 @@ export default function UpdateTooltips() {
GardenPlots();
} else if (TooltipType === 'ha') {
HarvestAll();
} else if (TooltipType === 'sm') {
StockMarket();
} else if (TooltipType === 'wb') {
WrinklerButton();
} else if (TooltipType === 'pag' || (TooltipType === 'pas' && TooltipName[1] !== -1)) {

View File

@@ -58,6 +58,21 @@ function ReplaceTooltipGarden() {
}
}
/**
* This function replaces the original .onmouseover functions of all stocks
*/
function ReplaceTooltipMarket() {
if (Game.Objects.Bank.minigameLoaded) {
for (let i = 0; i < Game.Objects.Bank.minigame.goodsById.length; i++) {
l(`bankGood-${i}`).firstChild.onmouseover = function () {
Game.tooltip.dynamic = 1;
Game.tooltip.draw(this, () => CreateTooltip('sm', i), 'this');
Game.tooltip.wobble();
};
}
}
}
function ReplaceTooltipPantheon() {
if (Game.Objects.Temple.minigameLoaded) {
for (let i = 0; i < 11; i += 1) {
@@ -96,6 +111,7 @@ export default function ReplaceTooltips() {
LoadMinigames();
ReplaceTooltipGarden();
ReplaceTooltipGrimoire();
ReplaceTooltipMarket();
ReplaceTooltipPantheon();
ReplaceNativeGrimoire();
};