97 lines
3.9 KiB
JavaScript
97 lines
3.9 KiB
JavaScript
import { ChristCookies, HalloCookies } from '../../Data/Gamedata.ts';
|
|
import SimHas from '../ReplacedGameFunctions/SimHas';
|
|
import SimHasAchiev from '../ReplacedGameFunctions/SimHasAchiev';
|
|
import SimWin from '../SimulationData/SimWin';
|
|
import { SimObjects, SimUpgradesOwned } from '../VariablesAndData';
|
|
|
|
/**
|
|
* This function calculates if any special achievements have been obtained
|
|
* If so it SimWin()'s them and the caller function will know to recall CM.Sim.CalculateGains()
|
|
* It is called at the end of any functions that simulates certain behaviour
|
|
*/
|
|
export default function CheckOtherAchiev() {
|
|
let grandmas = 0;
|
|
Object.keys(Game.GrandmaSynergies).forEach((i) => {
|
|
if (SimHas(Game.GrandmaSynergies[i])) grandmas += 1;
|
|
});
|
|
if (!SimHasAchiev('Elder') && grandmas >= 7) SimWin('Elder');
|
|
if (!SimHasAchiev('Veteran') && grandmas >= 14) SimWin('Veteran');
|
|
|
|
let buildingsOwned = 0;
|
|
let mathematician = 1;
|
|
let base10 = 1;
|
|
let minAmount = 100000;
|
|
Object.keys(SimObjects).forEach((i) => {
|
|
buildingsOwned += SimObjects[i].amount;
|
|
minAmount = Math.min(SimObjects[i].amount, minAmount);
|
|
if (!SimHasAchiev('Mathematician')) {
|
|
if (
|
|
SimObjects[i].amount <
|
|
Math.min(128, 2 ** (Game.ObjectsById.length - Game.Objects[i].id - 1))
|
|
)
|
|
mathematician = 0;
|
|
}
|
|
if (!SimHasAchiev('Base 10')) {
|
|
if (SimObjects[i].amount < (Game.ObjectsById.length - Game.Objects[i].id) * 10) base10 = 0;
|
|
}
|
|
});
|
|
if (minAmount >= 1) SimWin('One with everything');
|
|
if (mathematician === 1) SimWin('Mathematician');
|
|
if (base10 === 1) SimWin('Base 10');
|
|
if (minAmount >= 100) SimWin('Centennial');
|
|
if (minAmount >= 150) SimWin('Centennial and a half');
|
|
if (minAmount >= 200) SimWin('Bicentennial');
|
|
if (minAmount >= 250) SimWin('Bicentennial and a half');
|
|
if (minAmount >= 300) SimWin('Tricentennial');
|
|
if (minAmount >= 350) SimWin('Tricentennial and a half');
|
|
if (minAmount >= 400) SimWin('Quadricentennial');
|
|
if (minAmount >= 450) SimWin('Quadricentennial and a half');
|
|
if (minAmount >= 500) SimWin('Quincentennial');
|
|
if (minAmount >= 550) SimWin('Quincentennial and a half');
|
|
if (minAmount >= 600) SimWin('Sexcentennial');
|
|
if (minAmount >= 650) SimWin('Sexcentennial and a half');
|
|
|
|
if (buildingsOwned >= 100) SimWin('Builder');
|
|
if (buildingsOwned >= 500) SimWin('Architect');
|
|
if (buildingsOwned >= 1000) SimWin('Engineer');
|
|
if (buildingsOwned >= 2500) SimWin('Lord of Constructs');
|
|
if (buildingsOwned >= 5000) SimWin('Grand design');
|
|
if (buildingsOwned >= 7500) SimWin('Ecumenopolis');
|
|
if (buildingsOwned >= 10000) SimWin('Myriad');
|
|
|
|
if (SimUpgradesOwned >= 20) SimWin('Enhancer');
|
|
if (SimUpgradesOwned >= 50) SimWin('Augmenter');
|
|
if (SimUpgradesOwned >= 100) SimWin('Upgrader');
|
|
if (SimUpgradesOwned >= 200) SimWin('Lord of Progress');
|
|
if (SimUpgradesOwned >= 300) SimWin('The full picture');
|
|
if (SimUpgradesOwned >= 400) SimWin("When there's nothing left to add");
|
|
if (SimUpgradesOwned >= 500) SimWin("Kaizen");
|
|
if (SimUpgradesOwned >= 600) SimWin("Beyond quality");
|
|
|
|
if (buildingsOwned >= 4000 && SimUpgradesOwned >= 300) SimWin('Polymath');
|
|
if (buildingsOwned >= 8000 && SimUpgradesOwned >= 400) SimWin('Renaissance baker');
|
|
|
|
if (SimObjects.Cursor.amount + SimObjects.Grandma.amount >= 777) SimWin('The elder scrolls');
|
|
|
|
let hasAllHalloCook = true;
|
|
Object.keys(HalloCookies).forEach((i) => {
|
|
if (!SimHas(HalloCookies[i])) hasAllHalloCook = false;
|
|
});
|
|
if (hasAllHalloCook) SimWin('Spooky cookies');
|
|
|
|
let hasAllChristCook = true;
|
|
Object.keys(ChristCookies).forEach((i) => {
|
|
if (!SimHas(ChristCookies[i])) hasAllChristCook = false;
|
|
});
|
|
if (hasAllChristCook) SimWin('Let it snow');
|
|
|
|
if (SimHas('Fortune cookies')) {
|
|
const list = Game.Tiers.fortune.upgrades;
|
|
let fortunes = 0;
|
|
Object.keys(list).forEach((i) => {
|
|
if (SimHas(list[i].name)) fortunes += 1;
|
|
});
|
|
if (fortunes >= list.length) SimWin('O Fortuna');
|
|
}
|
|
}
|