Files
CookieMonster/src/Cache/Dragon/Dragon.js
2021-03-14 00:41:14 +01:00

59 lines
2.2 KiB
JavaScript

/* eslint-disable no-unused-vars */
/** Functions related to the Dragon */
import { Beautify } from '../../Disp/BeautifyAndFormatting/BeautifyFormatting';
import CopyData from '../../Sim/SimulationData/CopyData';
import { SimDoSims, SimObjects } from '../../Sim/VariablesAndData';
import {
CacheCostDragonUpgrade, CacheDragonAura, CacheDragonAura2, CacheLastDragonLevel,
} from '../VariablesAndData';
/**
* This functions caches the current cost of upgrading the dragon level so it can be displayed in the tooltip
*/
export default function CacheDragonCost() {
if (CacheLastDragonLevel !== Game.dragonLevel || SimDoSims) {
if (Game.dragonLevel < 25 && Game.dragonLevels[Game.dragonLevel].buy.toString().includes('sacrifice')) {
let target = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];
const amount = Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];
if (target !== 'i') {
target = target.replaceAll("'", '');
if (Game.Objects[target].amount < amount) {
CacheCostDragonUpgrade = 'Not enough buildings to sell';
} else {
let cost = 0;
CopyData();
for (let i = 0; i < amount; i++) {
let price = SimObjects[target].basePrice * Game.priceIncrease ** Math.max(0, SimObjects[target].amount - 1 - SimObjects[target].free);
price = Game.modifyBuildingPrice(SimObjects[target], price);
price = Math.ceil(price);
cost += price;
SimObjects[target].amount--;
}
CacheCostDragonUpgrade = `Cost to rebuy: ${(cost)}`;
}
} else {
let cost = 0;
CopyData();
for (const j of Object.keys(Game.Objects)) {
target = j;
if (Game.Objects[target].amount < amount) {
CacheCostDragonUpgrade = 'Not enough buildings to sell';
break;
} else {
for (let i = 0; i < amount; i++) {
let price = SimObjects[target].basePrice * Game.priceIncrease ** Math.max(0, SimObjects[target].amount - 1 - SimObjects[target].free);
price = Game.modifyBuildingPrice(SimObjects[target], price);
price = Math.ceil(price);
cost += price;
SimObjects[target].amount--;
}
}
CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`;
}
}
}
CacheLastDragonLevel = Game.dragonLevel;
}
}