From 545014a0fe48f16bf6fa19dce47a0faaf2598518 Mon Sep 17 00:00:00 2001 From: jarboo Date: Mon, 5 Dec 2022 10:22:00 +0100 Subject: [PATCH 1/8] Octeracts: added buttons Hide Max and Buy Any/Max Octeracts: added buttons Hide Max and Buy Any/Max --- Synergism.css | 4 +- index.html | 105 +++++++++++++++++++-------------------- src/CheckVariables.ts | 8 +++ src/EventListeners.ts | 5 +- src/Octeracts.ts | 34 +++++++------ src/Reset.ts | 2 + src/Synergism.ts | 19 ++++++- src/Toggles.ts | 28 +++++++++++ src/UpdateVisuals.ts | 13 +++++ src/types/Synergism.d.ts | 5 +- 10 files changed, 150 insertions(+), 73 deletions(-) diff --git a/Synergism.css b/Synergism.css index 375e52b66..6dfc2c85c 100644 --- a/Synergism.css +++ b/Synergism.css @@ -1897,7 +1897,7 @@ p#reincarnatehotkeys { margin-top: 20px; } -#shopButtons { +#shopButtons, #octeractButtons { display: flex; justify-content: center; flex-flow: wrap; @@ -1906,7 +1906,7 @@ p#reincarnatehotkeys { margin-top: 5px; } -#shopButtons > button { +#shopButtons > button, #octeractButtons > button { min-width: 150px; min-height: 40px; margin-bottom: 6px; diff --git a/index.html b/index.html index b6bebf43d..2ae0b216e 100644 --- a/index.html +++ b/index.html @@ -3736,10 +3736,11 @@

Artists

cookies4
- cookies5 + cookies5
- ascensions
+ ascensions +
corruptionFourteen
@@ -3747,22 +3748,22 @@

Artists

corruptionFifteen
- platonicTau + platonicTau
offeringAutomatic
- platonicAlpha + platonicAlpha
- platonicDelta + platonicDelta
- platonicPhi + platonicPhi
- singOfferings1 + singOfferings1
singOfferings2 @@ -3831,37 +3832,37 @@

Artists

singQuarkHepteract3
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
@@ -3895,106 +3896,104 @@

Artists

3-7 Dimensional Cubes +199%

Quarks +4%

-
-

Buy multiple levels at once by holding 'SHIFT' while clicking!

-
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
- +
+ + +

- - diff --git a/src/CheckVariables.ts b/src/CheckVariables.ts index f519aecbd..964d1c397 100644 --- a/src/CheckVariables.ts +++ b/src/CheckVariables.ts @@ -779,6 +779,10 @@ export const checkVariablesOnLoad = (data: PlayerSave) => { player.shopConfirmationToggle = true; } + if (data.octeractBuyMaxToggle === undefined) { + player.octeractBuyMaxToggle = false; + } + if (data.wowOcteracts === undefined) { player.wowOcteracts = 0; player.octeractTimer = 0; @@ -788,6 +792,10 @@ export const checkVariablesOnLoad = (data: PlayerSave) => { player.shopHideToggle = false; } + if (data.octeractHideToggle === undefined) { + player.octeractHideToggle = false; + } + if (data.researchBuyMaxToggle === undefined) { player.researchBuyMaxToggle = false; } diff --git a/src/EventListeners.ts b/src/EventListeners.ts index c4361b24e..e0bf3f954 100644 --- a/src/EventListeners.ts +++ b/src/EventListeners.ts @@ -1,4 +1,4 @@ -import { toggleAscStatPerSecond, toggleTabs, toggleSubTab, toggleBuyAmount, toggleAutoTesseracts, toggleSettings, toggleautoreset, toggleautobuytesseract, toggleShops, toggleAutoSacrifice, toggleAutoBuyFragment, toggleautoenhance, toggleautofortify, updateRuneBlessingBuyAmount, toggleSaveOff, toggleChallenges, toggleAutoChallengesIgnore, toggleAutoChallengeRun, updateAutoChallenge, toggleResearchBuy, toggleAutoResearch, toggleAntMaxBuy, toggleAntAutoSacrifice, toggleMaxBuyCube, toggleautoopensCubes, toggleCorruptionLevel, toggleAutoAscend, toggleShopConfirmation, toggleAutoResearchMode, toggleBuyMaxShop, toggleHideShop, toggleHepteractAutoPercentage } from './Toggles' +import { toggleAscStatPerSecond, toggleTabs, toggleSubTab, toggleBuyAmount, toggleAutoTesseracts, toggleSettings, toggleautoreset, toggleautobuytesseract, toggleShops, toggleAutoSacrifice, toggleAutoBuyFragment, toggleautoenhance, toggleautofortify, updateRuneBlessingBuyAmount, toggleSaveOff, toggleChallenges, toggleAutoChallengesIgnore, toggleAutoChallengeRun, updateAutoChallenge, toggleResearchBuy, toggleAutoResearch, toggleAntMaxBuy, toggleAntAutoSacrifice, toggleMaxBuyCube, toggleautoopensCubes, toggleCorruptionLevel, toggleAutoAscend, toggleShopConfirmation, toggleAutoResearchMode, toggleBuyMaxShop, toggleBuyMaxOcteract, toggleHideShop, toggleHideOcteract, toggleHepteractAutoPercentage } from './Toggles' import { resetrepeat, updateAutoReset, updateTesseractAutoBuyAmount, updateAutoCubesOpens } from './Reset' import { player, resetCheck, saveSynergy } from './Synergism' import { boostAccelerator, buyAccelerator, buyMultiplier, buyProducer, buyCrystalUpgrades, buyParticleBuilding, buyTesseractBuilding, buyRuneBonusLevels, buyAllBlessings } from './Buy' @@ -646,6 +646,9 @@ TODO: Fix this entire tab it's utter shit DOMCacheGetOrSet(`${String(key)}`).addEventListener('mouseover', () => player.octeractUpgrades[`${String(key)}`].updateUpgradeHTML()) DOMCacheGetOrSet(`${String(key)}`).addEventListener('click', (event) => player.octeractUpgrades[`${String(key)}`].buyLevel(event)) } + /*Toggle Hide Maxed*/ DOMCacheGetOrSet('toggleHideOcteract').addEventListener('click', () => toggleHideOcteract()) + /*Toggle Buy Max*/ DOMCacheGetOrSet('toggleBuyMaxOcteract').addEventListener('click', () => toggleBuyMaxOcteract()) + //Toggle subtabs of Singularity tab for (let index = 0; index < 4; index++) { DOMCacheGetOrSet(`toggleSingularitySubTab${index+1}`).addEventListener('click', () => toggleSubTab(10, index)) diff --git a/src/Octeracts.ts b/src/Octeracts.ts index ed715ff05..5d58db57e 100644 --- a/src/Octeracts.ts +++ b/src/Octeracts.ts @@ -37,25 +37,31 @@ export class OcteractUpgrade extends DynamicUpgrade { */ public async buyLevel(event: MouseEvent): Promise { let purchased = 0; - let maxPurchasable = 1; - let OCTBudget = player.wowOcteracts; + let maxPurchasable = 1000000; + let octBudget = player.wowOcteracts; - if (event.shiftKey) { - maxPurchasable = 1000000 - const buy = Number(await Prompt(`How many Octeracts would you like to spend? You have ${format(player.wowOcteracts, 0, true)} OCT. Type -1 to use max!`)) + if (!event.shiftKey && player.octeractBuyMaxToggle === false) { + maxPurchasable = 1; + } else { + let octToSpend = -1; - if (isNaN(buy) || !isFinite(buy) || !Number.isInteger(buy)) { // nan + Infinity checks - return Alert('Value must be a finite number!'); + // Shows a prompt to ask how many Octeracts to spend + if (event.shiftKey || player.octeractBuyMaxToggle === 'ANY') { + octToSpend = Number(await Prompt(`How many Octeracts would you like to spend? You have ${format(player.wowOcteracts, 0, true)} OCT. Type -1 to use max!`)) + + if (isNaN(octToSpend) || !isFinite(octToSpend) || !Number.isInteger(octToSpend)) { // nan + Infinity checks + return Alert('Value must be a finite number!'); + } } - if (buy === -1) { - OCTBudget = player.wowOcteracts - } else if (buy <= 0) { + if (octToSpend === -1) { + octBudget = player.wowOcteracts + } else if (octToSpend <= 0) { return Alert('Purchase cancelled!') } else { - OCTBudget = buy + octBudget = octToSpend; } - OCTBudget = Math.min(player.wowOcteracts, OCTBudget) + octBudget = Math.min(player.wowOcteracts, octBudget) } if (this.maxLevel > 0) { @@ -68,11 +74,11 @@ export class OcteractUpgrade extends DynamicUpgrade { while (maxPurchasable > 0) { const cost = this.getCostTNL(); - if (player.wowOcteracts < cost || OCTBudget < cost) { + if (player.wowOcteracts < cost || octBudget < cost) { break; } else { player.wowOcteracts -= cost; - OCTBudget -= cost; + octBudget -= cost; this.octeractsInvested += cost this.level += 1; purchased += 1; diff --git a/src/Reset.ts b/src/Reset.ts index 0aafc5dca..1f78f3962 100644 --- a/src/Reset.ts +++ b/src/Reset.ts @@ -1133,6 +1133,8 @@ export const singularity = async (): Promise => { hold.theme = player.theme hold.notation = player.notation hold.firstPlayed = player.firstPlayed + hold.octeractHideToggle = player.octeractHideToggle + hold.octeractBuyMaxToggle = player.octeractBuyMaxToggle // Quark Hepteract craft is saved entirely. For other crafts we only save their auto setting hold.hepteractCrafts.quark = player.hepteractCrafts.quark; diff --git a/src/Synergism.ts b/src/Synergism.ts index cb47a25c0..2363759f2 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -806,7 +806,9 @@ export const player: Player = { dailyCodeUsed: false, hepteractAutoCraftPercentage: 50, - octeractTimer: 0 + octeractTimer: 0, + octeractHideToggle: false, + octeractBuyMaxToggle: false } export const blankSave = Object.assign({}, player, { @@ -1754,6 +1756,21 @@ const loadSynergy = async () => { } else { DOMCacheGetOrSet('toggleHideShop').textContent = 'Hide Maxed: OFF' } + switch (player.octeractBuyMaxToggle) { + case false: + DOMCacheGetOrSet('toggleBuyMaxOcteract').textContent = 'Buy: 1'; + break; + case true: + DOMCacheGetOrSet('toggleBuyMaxOcteract').textContent = 'Buy: MAX'; + break; + case 'ANY': + DOMCacheGetOrSet('toggleBuyMaxOcteract').textContent = 'Buy: ANY'; + } + if (player.octeractHideToggle) { + DOMCacheGetOrSet('toggleHideOcteract').textContent = 'Hide Maxed: ON' + } else { + DOMCacheGetOrSet('toggleHideOcteract').textContent = 'Hide Maxed: OFF' + } if (player.researchBuyMaxToggle) { DOMCacheGetOrSet('toggleresearchbuy').textContent = 'Upgrade: MAX [if possible]' } else { diff --git a/src/Toggles.ts b/src/Toggles.ts index 20d71efe9..a0d4200ff 100644 --- a/src/Toggles.ts +++ b/src/Toggles.ts @@ -769,6 +769,34 @@ export const toggleHideShop = () => { player.shopHideToggle = !player.shopHideToggle; } +export const toggleBuyMaxOcteract = () => { + const el = DOMCacheGetOrSet('toggleBuyMaxOcteract') + + switch (player.octeractBuyMaxToggle) { + case false: + el.innerHTML = 'Buy: ANY'; + player.octeractBuyMaxToggle = 'ANY'; + break; + case 'ANY': + el.innerHTML = 'Buy: MAX'; + player.octeractBuyMaxToggle = true; + break; + default: + el.innerHTML = 'Buy: 1'; + player.octeractBuyMaxToggle = false; + } +} + +export const toggleHideOcteract = () => { + const el = DOMCacheGetOrSet('toggleHideOcteract') + el.textContent = player.octeractHideToggle + ? 'Hide Maxed: OFF' + : 'Hide Maxed: ON'; + + player.octeractHideToggle = !player.octeractHideToggle; + visualUpdateOcteracts(); +} + export const toggleAntMaxBuy = () => { const el = DOMCacheGetOrSet('toggleAntMax'); el.textContent = player.antMax diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index cf0667397..9e29ce7d2 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -17,6 +17,7 @@ import type { IMultiBuy } from './Cubes'; import { calculateMaxTalismanLevel } from './Talismans'; import { getGoldenQuarkCost } from './singularity'; import { loadStatisticsUpdate } from './Statistics'; +import { octeractData } from './Octeracts'; export const visualUpdateBuildings = () => { if (G['currentTab'] !== 'buildings') { @@ -574,6 +575,18 @@ export const visualUpdateOcteracts = () => { DOMCacheGetOrSet('totalOcteractQuarkBonus').style.display = cTOQB >= 0.001 ? 'block' : 'none'; DOMCacheGetOrSet('octCubeBonus').textContent = `+${format(cTOCB, 3, true)}%` DOMCacheGetOrSet('octQuarkBonus').textContent = `+${format(cTOQB, 3, true)}%` + + const keys = Object.keys(player.octeractUpgrades) as (keyof Player['octeractUpgrades'])[]; + for (const key of keys) { + const octeractItem = octeractData[key]; + const elementToHide = DOMCacheGetOrSet(`${key.toString()}`).parentNode as HTMLElement; + if (player.octeractHideToggle && octeractItem.maxLevel !== -1 && player.octeractUpgrades[key].level >= octeractItem.maxLevel) { + elementToHide.style.display = 'none'; + continue; + } else { + elementToHide.style.display = 'block'; + } + } } export const visualUpdateShop = () => { diff --git a/src/types/Synergism.d.ts b/src/types/Synergism.d.ts index 82bf556be..650cc7f9a 100644 --- a/src/types/Synergism.d.ts +++ b/src/types/Synergism.d.ts @@ -584,8 +584,9 @@ export interface Player { octeractUpgrades: Record dailyCodeUsed: boolean hepteractAutoCraftPercentage: number - octeractTimer: number - + octeractTimer: number, + octeractHideToggle: boolean, + octeractBuyMaxToggle: boolean | 'ANY' } export interface GlobalVariables { From 46c5ce18ff8e024fb4ab821cec9d4e36d7e95956 Mon Sep 17 00:00:00 2001 From: jarboo Date: Mon, 5 Dec 2022 21:03:18 +0100 Subject: [PATCH 2/8] Changed Shop buy Any to have the same behavior Changed Shop buy Any to have the same behavior as Octeracts and Sing Upgrades --- src/EventListeners.ts | 11 ++++------- src/Shop.ts | 40 ++++++++++++++++++++++++---------------- src/Toggles.ts | 19 +++++++++---------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/src/EventListeners.ts b/src/EventListeners.ts index e0bf3f954..6bc854bed 100644 --- a/src/EventListeners.ts +++ b/src/EventListeners.ts @@ -594,7 +594,7 @@ TODO: Fix this entire tab it's utter shit // Part 1: The Settings /*Respec The Upgrades*/ DOMCacheGetOrSet('resetShopUpgrades').addEventListener('click', () => resetShopUpgrades()) /*Toggle Shop Confirmations*/ DOMCacheGetOrSet('toggleConfirmShop').addEventListener('click', () => toggleShopConfirmation()) - /*Toggle Shop Buy Max*/ DOMCacheGetOrSet('toggleBuyMaxShop').addEventListener('click', (event) => toggleBuyMaxShop(event)) + /*Toggle Shop Buy Max*/ DOMCacheGetOrSet('toggleBuyMaxShop').addEventListener('click', () => toggleBuyMaxShop()) /*Toggle Hide Permanent Maxed*/ DOMCacheGetOrSet('toggleHideShop').addEventListener('click', () => toggleHideShop()) // Part 2: Potions @@ -603,8 +603,7 @@ TODO: Fix this entire tab it's utter shit DOMCacheGetOrSet('offeringpotionowned').addEventListener('mouseover', () => shopDescriptions('offeringPotion')) DOMCacheGetOrSet('buyofferingpotion').addEventListener('mouseover', () => shopDescriptions('offeringPotion')) DOMCacheGetOrSet('useofferingpotion').addEventListener('mouseover', () => shopDescriptions('offeringPotion')) - DOMCacheGetOrSet('buyofferingpotion').addEventListener('click', () => buyShopUpgrades('offeringPotion')) - //DOMCacheGetOrSet('offeringPotions').addEventListener('click', () => buyShopUpgrades("offeringPotion")) //Allow clicking of image to buy also + DOMCacheGetOrSet('buyofferingpotion').addEventListener('click', (event) => buyShopUpgrades('offeringPotion', event)) DOMCacheGetOrSet('useofferingpotion').addEventListener('click', () => useConsumable('offeringPotion')) DOMCacheGetOrSet('toggle42').addEventListener('click', () => { player.autoPotionTimer = 0; @@ -614,8 +613,7 @@ TODO: Fix this entire tab it's utter shit DOMCacheGetOrSet('obtainiumpotionowned').addEventListener('mouseover', () => shopDescriptions('obtainiumPotion')) DOMCacheGetOrSet('buyobtainiumpotion').addEventListener('mouseover', () => shopDescriptions('obtainiumPotion')) DOMCacheGetOrSet('useobtainiumpotion').addEventListener('mouseover', () => shopDescriptions('obtainiumPotion')) - DOMCacheGetOrSet('buyobtainiumpotion').addEventListener('click', () => buyShopUpgrades('obtainiumPotion')) - //DOMCacheGetOrSet('obtainiumPotions').addEventListener('click', () => buyShopUpgrades("obtainiumPotion")) //Allow clicking of image to buy also + DOMCacheGetOrSet('buyobtainiumpotion').addEventListener('click', (event) => buyShopUpgrades('obtainiumPotion', event)) DOMCacheGetOrSet('useobtainiumpotion').addEventListener('click', () => useConsumable('obtainiumPotion')) DOMCacheGetOrSet('toggle43').addEventListener('click', () => { player.autoPotionTimerObtainium = 0; @@ -628,8 +626,7 @@ TODO: Fix this entire tab it's utter shit DOMCacheGetOrSet(`${key}`).addEventListener('mouseover', () => shopDescriptions(key)) DOMCacheGetOrSet(`${key}Level`).addEventListener('mouseover', () => shopDescriptions(key)) DOMCacheGetOrSet(`${key}Button`).addEventListener('mouseover', () => shopDescriptions(key)) - //DOMCacheGetOrSet(`${key}`).addEventListener('click', () => buyShopUpgrades(key)) //Allow clicking of image to buy also - DOMCacheGetOrSet(`${key}Button`).addEventListener('click', () => buyShopUpgrades(key)) + DOMCacheGetOrSet(`${key}Button`).addEventListener('click', (event) => buyShopUpgrades(key, event)) } } DOMCacheGetOrSet('buySingularityQuarksButton').addEventListener('click', () => buyGoldenQuarks()); diff --git a/src/Shop.ts b/src/Shop.ts index 142ef7544..f529c77bb 100644 --- a/src/Shop.ts +++ b/src/Shop.ts @@ -874,7 +874,7 @@ export const friendlyShopName = (input: ShopUpgradeNames) => { } -export const buyShopUpgrades = async (input: ShopUpgradeNames) => { +export const buyShopUpgrades = async (input: ShopUpgradeNames, event: MouseEvent) => { const shopItem = shopData[input]; if (player.shopUpgrades[input] >= shopItem.maxLevel) { @@ -896,20 +896,28 @@ export const buyShopUpgrades = async (input: ShopUpgradeNames) => { const maxBuyAmount = shopItem.maxLevel - player.shopUpgrades[input]; let buyAmount; let buyCost; - switch (player.shopBuyMaxToggle) { - case false: - buyAmount = 1; - buyCost = getShopCosts(input); - break; - case 'TEN': - buyData = calculateSummationNonLinear(player.shopUpgrades[input], shopItem.price, +player.worlds, shopItem.priceIncrease / shopItem.price, Math.min(10,maxBuyAmount)) - buyAmount = buyData.levelCanBuy - player.shopUpgrades[input]; - buyCost = buyData.cost; - break; - default: - buyData = calculateSummationNonLinear(player.shopUpgrades[input], shopItem.price, +player.worlds, shopItem.priceIncrease / shopItem.price, maxBuyAmount) - buyAmount = buyData.levelCanBuy - player.shopUpgrades[input]; - buyCost = buyData.cost; + if (event.shiftKey) { + // Buy ANY + buyData = calculateSummationNonLinear(player.shopUpgrades[input], shopItem.price, +player.worlds, shopItem.priceIncrease / shopItem.price, maxBuyAmount) + buyAmount = buyData.levelCanBuy - player.shopUpgrades[input]; + buyCost = buyData.cost; + } else { + switch (player.shopBuyMaxToggle) { + case false: + buyAmount = 1; + buyCost = getShopCosts(input); + break; + case 'TEN': + buyData = calculateSummationNonLinear(player.shopUpgrades[input], shopItem.price, +player.worlds, shopItem.priceIncrease / shopItem.price, Math.min(10,maxBuyAmount)) + buyAmount = buyData.levelCanBuy - player.shopUpgrades[input]; + buyCost = buyData.cost; + break; + default: + // Buy MAX + buyData = calculateSummationNonLinear(player.shopUpgrades[input], shopItem.price, +player.worlds, shopItem.priceIncrease / shopItem.price, maxBuyAmount) + buyAmount = buyData.levelCanBuy - player.shopUpgrades[input]; + buyCost = buyData.cost; + } } const singular = shopItem.maxLevel === 1; @@ -917,7 +925,7 @@ export const buyShopUpgrades = async (input: ShopUpgradeNames) => { const noRefunds = shopItem.refundable ? '' : '\n\n\u26A0\uFE0F !! No Refunds !! \u26A0\uFE0F'; const maxPots = shopItem.type === shopUpgradeTypes.CONSUMABLE ? '\n\nType -1 in Buy: ANY to buy equal amounts of both Potions.' : ''; - if (player.shopBuyMaxToggle === 'ANY' && !singular) { + if (!singular && (event.shiftKey || player.shopBuyMaxToggle === 'ANY')) { const buyInput = await Prompt(`You can afford to purchase up to ${merch} of ${friendlyShopName(input)} for ${buyCost.toLocaleString()} Quarks. How many would you like to buy?${maxPots + noRefunds}`); let buyAny; if (Number(buyInput) === -1 && shopItem.type === shopUpgradeTypes.CONSUMABLE) { diff --git a/src/Toggles.ts b/src/Toggles.ts index a0d4200ff..5d9aff94c 100644 --- a/src/Toggles.ts +++ b/src/Toggles.ts @@ -737,25 +737,24 @@ export const toggleShopConfirmation = () => { player.shopConfirmationToggle = !player.shopConfirmationToggle; } -export const toggleBuyMaxShop = (event: MouseEvent) => { +export const toggleBuyMaxShop = () => { const el = DOMCacheGetOrSet('toggleBuyMaxShop') - if (event.shiftKey) { - el.textContent = 'Buy: ANY'; - player.shopBuyMaxToggle = 'ANY'; - return; - } - const suf = '
Shift-Click for Buy: Any'; + switch (player.shopBuyMaxToggle) { case false: - el.innerHTML = `Buy: 10${suf}`; + el.innerHTML = 'Buy: 10'; player.shopBuyMaxToggle = 'TEN'; break; case 'TEN': - el.innerHTML = `Buy: MAX${suf}`; + el.textContent = 'Buy: ANY'; + player.shopBuyMaxToggle = 'ANY'; + break; + case 'ANY': + el.innerHTML = 'Buy: MAX'; player.shopBuyMaxToggle = true; break; default: - el.innerHTML = `Buy: 1${suf}`; + el.innerHTML = 'Buy: 1'; player.shopBuyMaxToggle = false; } } From 7d700034a1da39e5ccacea549b10fcd9e3577a48 Mon Sep 17 00:00:00 2001 From: jarboo Date: Tue, 6 Dec 2022 14:03:37 +0100 Subject: [PATCH 3/8] Sing Upgrades: added Hide Maxed and Buy Any/Max Sing Upgrades: added Hide Maxed and Buy Any/Max. Same behavior as Octeracts --- Synergism.css | 4 ++-- index.html | 7 ++++--- src/CheckVariables.ts | 8 ++++++++ src/EventListeners.ts | 4 +++- src/Reset.ts | 2 ++ src/Synergism.ts | 19 ++++++++++++++++++- src/Toggles.ts | 31 ++++++++++++++++++++++++++++++- src/UpdateVisuals.ts | 14 +++++++++++++- src/singularity.ts | 20 +++++++++++++------- src/types/Synergism.d.ts | 4 +++- 10 files changed, 96 insertions(+), 17 deletions(-) diff --git a/Synergism.css b/Synergism.css index 6dfc2c85c..66c50f69a 100644 --- a/Synergism.css +++ b/Synergism.css @@ -1897,7 +1897,7 @@ p#reincarnatehotkeys { margin-top: 20px; } -#shopButtons, #octeractButtons { +#shopButtons, #octeractButtons, #singUpgradeButtons { display: flex; justify-content: center; flex-flow: wrap; @@ -1906,7 +1906,7 @@ p#reincarnatehotkeys { margin-top: 5px; } -#shopButtons > button, #octeractButtons > button { +#shopButtons > button, #octeractButtons > button, #singUpgradeButtons > button { min-width: 150px; min-height: 40px; margin-bottom: 6px; diff --git a/index.html b/index.html index 2ae0b216e..de1dc0056 100644 --- a/index.html +++ b/index.html @@ -3680,9 +3680,6 @@

Artists

You have 0 Golden Quarks!

-
-

Buy multiple levels at once by holding 'SHIFT' while clicking!

-
goldenQuarks1 @@ -3865,6 +3862,10 @@

Artists

+
+ + +

diff --git a/src/CheckVariables.ts b/src/CheckVariables.ts index 964d1c397..bd1b512e3 100644 --- a/src/CheckVariables.ts +++ b/src/CheckVariables.ts @@ -783,6 +783,10 @@ export const checkVariablesOnLoad = (data: PlayerSave) => { player.octeractBuyMaxToggle = false; } + if (data.singUpgradeBuyMaxToggle === undefined) { + player.singUpgradeBuyMaxToggle = false; + } + if (data.wowOcteracts === undefined) { player.wowOcteracts = 0; player.octeractTimer = 0; @@ -796,6 +800,10 @@ export const checkVariablesOnLoad = (data: PlayerSave) => { player.octeractHideToggle = false; } + if (data.singUpgradeHideToggle === undefined) { + player.singUpgradeHideToggle = false; + } + if (data.researchBuyMaxToggle === undefined) { player.researchBuyMaxToggle = false; } diff --git a/src/EventListeners.ts b/src/EventListeners.ts index 6bc854bed..b5a4a420f 100644 --- a/src/EventListeners.ts +++ b/src/EventListeners.ts @@ -1,4 +1,4 @@ -import { toggleAscStatPerSecond, toggleTabs, toggleSubTab, toggleBuyAmount, toggleAutoTesseracts, toggleSettings, toggleautoreset, toggleautobuytesseract, toggleShops, toggleAutoSacrifice, toggleAutoBuyFragment, toggleautoenhance, toggleautofortify, updateRuneBlessingBuyAmount, toggleSaveOff, toggleChallenges, toggleAutoChallengesIgnore, toggleAutoChallengeRun, updateAutoChallenge, toggleResearchBuy, toggleAutoResearch, toggleAntMaxBuy, toggleAntAutoSacrifice, toggleMaxBuyCube, toggleautoopensCubes, toggleCorruptionLevel, toggleAutoAscend, toggleShopConfirmation, toggleAutoResearchMode, toggleBuyMaxShop, toggleBuyMaxOcteract, toggleHideShop, toggleHideOcteract, toggleHepteractAutoPercentage } from './Toggles' +import { toggleAscStatPerSecond, toggleTabs, toggleSubTab, toggleBuyAmount, toggleAutoTesseracts, toggleSettings, toggleautoreset, toggleautobuytesseract, toggleShops, toggleAutoSacrifice, toggleAutoBuyFragment, toggleautoenhance, toggleautofortify, updateRuneBlessingBuyAmount, toggleSaveOff, toggleChallenges, toggleAutoChallengesIgnore, toggleAutoChallengeRun, updateAutoChallenge, toggleResearchBuy, toggleAutoResearch, toggleAntMaxBuy, toggleAntAutoSacrifice, toggleMaxBuyCube, toggleautoopensCubes, toggleCorruptionLevel, toggleAutoAscend, toggleShopConfirmation, toggleAutoResearchMode, toggleBuyMaxShop, toggleBuyMaxOcteract, toggleBuyMaxSingUpgrade, toggleHideShop, toggleHideOcteract, toggleHideSingUpgrade, toggleHepteractAutoPercentage } from './Toggles' import { resetrepeat, updateAutoReset, updateTesseractAutoBuyAmount, updateAutoCubesOpens } from './Reset' import { player, resetCheck, saveSynergy } from './Synergism' import { boostAccelerator, buyAccelerator, buyMultiplier, buyProducer, buyCrystalUpgrades, buyParticleBuilding, buyTesseractBuilding, buyRuneBonusLevels, buyAllBlessings } from './Buy' @@ -636,6 +636,8 @@ TODO: Fix this entire tab it's utter shit DOMCacheGetOrSet(`${String(key)}`).addEventListener('mouseover', () => player.singularityUpgrades[`${String(key)}`].updateUpgradeHTML()) DOMCacheGetOrSet(`${String(key)}`).addEventListener('click', (event) => player.singularityUpgrades[`${String(key)}`].buyLevel(event)) } + /*Toggle Hide Maxed*/ DOMCacheGetOrSet('toggleHideSingUpgrade').addEventListener('click', () => toggleHideSingUpgrade()) + /*Toggle Buy Max*/ DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').addEventListener('click', () => toggleBuyMaxSingUpgrade()) // Octeract Upgrades const octeractUpgrades = Object.keys(player.octeractUpgrades) as (keyof Player['octeractUpgrades'])[]; diff --git a/src/Reset.ts b/src/Reset.ts index 1f78f3962..12dbb8c93 100644 --- a/src/Reset.ts +++ b/src/Reset.ts @@ -1135,6 +1135,8 @@ export const singularity = async (): Promise => { hold.firstPlayed = player.firstPlayed hold.octeractHideToggle = player.octeractHideToggle hold.octeractBuyMaxToggle = player.octeractBuyMaxToggle + hold.singUpgradeHideToggle = player.singUpgradeHideToggle + hold.singUpgradeBuyMaxToggle = player.singUpgradeBuyMaxToggle // Quark Hepteract craft is saved entirely. For other crafts we only save their auto setting hold.hepteractCrafts.quark = player.hepteractCrafts.quark; diff --git a/src/Synergism.ts b/src/Synergism.ts index 2363759f2..d9f003bdf 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -808,7 +808,9 @@ export const player: Player = { hepteractAutoCraftPercentage: 50, octeractTimer: 0, octeractHideToggle: false, - octeractBuyMaxToggle: false + octeractBuyMaxToggle: false, + singUpgradeHideToggle: false, + singUpgradeBuyMaxToggle: false } export const blankSave = Object.assign({}, player, { @@ -1771,6 +1773,21 @@ const loadSynergy = async () => { } else { DOMCacheGetOrSet('toggleHideOcteract').textContent = 'Hide Maxed: OFF' } + switch (player.singUpgradeBuyMaxToggle) { + case false: + DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').textContent = 'Buy: 1'; + break; + case true: + DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').textContent = 'Buy: MAX'; + break; + case 'ANY': + DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').textContent = 'Buy: ANY'; + } + if (player.singUpgradeHideToggle) { + DOMCacheGetOrSet('toggleHideSingUpgrade').textContent = 'Hide Maxed: ON' + } else { + DOMCacheGetOrSet('toggleHideSingUpgrade').textContent = 'Hide Maxed: OFF' + } if (player.researchBuyMaxToggle) { DOMCacheGetOrSet('toggleresearchbuy').textContent = 'Upgrade: MAX [if possible]' } else { diff --git a/src/Toggles.ts b/src/Toggles.ts index 5d9aff94c..9a1c59595 100644 --- a/src/Toggles.ts +++ b/src/Toggles.ts @@ -1,7 +1,7 @@ import { revealStuff, hideStuff, updateChallengeDisplay, showCorruptionStatsLoadouts, changeTabColor, Prompt, Alert } from './UpdateHTML'; import { player, format, resetCheck } from './Synergism'; import { Globals as G } from './Variables'; -import { visualUpdateCubes, visualUpdateOcteracts } from './UpdateVisuals'; +import { visualUpdateCubes, visualUpdateOcteracts, visualUpdateSingularity } from './UpdateVisuals'; import { calculateRuneLevels } from './Calculate'; import { reset, resetrepeat } from './Reset'; import { autoResearchEnabled } from './Research'; @@ -796,6 +796,35 @@ export const toggleHideOcteract = () => { visualUpdateOcteracts(); } +export const toggleBuyMaxSingUpgrade = () => { + const el = DOMCacheGetOrSet('toggleBuyMaxSingUpgrade') + + switch (player.singUpgradeBuyMaxToggle) { + case false: + el.innerHTML = 'Buy: ANY'; + player.singUpgradeBuyMaxToggle = 'ANY'; + break; + case 'ANY': + el.innerHTML = 'Buy: MAX'; + player.singUpgradeBuyMaxToggle = true; + break; + case true: + default: + el.innerHTML = 'Buy: 1'; + player.singUpgradeBuyMaxToggle = false; + } +} + +export const toggleHideSingUpgrade = () => { + const el = DOMCacheGetOrSet('toggleHideSingUpgrade') + el.textContent = player.singUpgradeHideToggle + ? 'Hide Maxed: OFF' + : 'Hide Maxed: ON'; + + player.singUpgradeHideToggle = !player.singUpgradeHideToggle; + visualUpdateSingularity(); +} + export const toggleAntMaxBuy = () => { const el = DOMCacheGetOrSet('toggleAntMax'); el.textContent = player.antMax diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index 9e29ce7d2..9202af4ee 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -550,8 +550,20 @@ export const visualUpdateSingularity = () => { if (G['currentTab'] !== 'singularity') { return } - if (player.subtabNumber === 0) { + if (player.subtabNumber <= 1) { DOMCacheGetOrSet('goldenQuarkamount').textContent = 'You have ' + format(player.goldenQuarks, 0, true) + ' Golden Quarks!' + const keys = Object.keys(player.singularityUpgrades) as (keyof Player['singularityUpgrades'])[]; + for (const key of keys) { + const singUpgradeItem = player.singularityUpgrades[key]; + const elementToHide = DOMCacheGetOrSet(`${key.toString()}`).parentNode as HTMLElement; + const computedMaxLevel = singUpgradeItem.computeMaxLevel(); + if (player.singUpgradeHideToggle && computedMaxLevel !== -1 && singUpgradeItem.level >= computedMaxLevel) { + elementToHide.style.display = 'none'; + continue; + } else { + elementToHide.style.display = 'block'; + } + } } } diff --git a/src/singularity.ts b/src/singularity.ts index dd755b0c6..a92757409 100644 --- a/src/singularity.ts +++ b/src/singularity.ts @@ -132,15 +132,21 @@ export class SingularityUpgrade extends DynamicUpgrade { */ public async buyLevel(event: MouseEvent): Promise { let purchased = 0; - let maxPurchasable = 1 - let GQBudget = player.goldenQuarks + let maxPurchasable = 100000; + let GQBudget = player.goldenQuarks; - if (event.shiftKey) { - maxPurchasable = 100000 - const buy = Number(await Prompt(`How many Golden Quarks would you like to spend? You have ${format(player.goldenQuarks, 0, true)} GQ. Type -1 to use max!`)) + if (!event.shiftKey && player.singUpgradeBuyMaxToggle === false) { + maxPurchasable = 1; + } else { + let buy = -1; + + // Shows a prompt to ask how many GQ to spend + if (event.shiftKey || player.singUpgradeBuyMaxToggle === 'ANY') { + buy = Number(await Prompt(`How many Golden Quarks would you like to spend? You have ${format(player.goldenQuarks, 0, true)} GQ. Type -1 to use max!`)) - if (isNaN(buy) || !isFinite(buy) || !Number.isInteger(buy)) { // nan + Infinity checks - return Alert('Value must be a finite number!'); + if (isNaN(buy) || !isFinite(buy) || !Number.isInteger(buy)) { // nan + Infinity checks + return Alert('Value must be a finite number!'); + } } if (buy === -1) { diff --git a/src/types/Synergism.d.ts b/src/types/Synergism.d.ts index 650cc7f9a..a64fff47b 100644 --- a/src/types/Synergism.d.ts +++ b/src/types/Synergism.d.ts @@ -586,7 +586,9 @@ export interface Player { hepteractAutoCraftPercentage: number octeractTimer: number, octeractHideToggle: boolean, - octeractBuyMaxToggle: boolean | 'ANY' + octeractBuyMaxToggle: boolean | 'ANY', + singUpgradeHideToggle: boolean, + singUpgradeBuyMaxToggle: boolean | 'ANY' } export interface GlobalVariables { From 80408dba34140b10d5fc7c1d18802ab0204f093c Mon Sep 17 00:00:00 2001 From: jarboo Date: Tue, 6 Dec 2022 14:24:02 +0100 Subject: [PATCH 4/8] Long live CSS Lint :) Long live CSS Lint :) --- Synergism.css | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Synergism.css b/Synergism.css index 66c50f69a..6b01a9d41 100644 --- a/Synergism.css +++ b/Synergism.css @@ -1897,7 +1897,9 @@ p#reincarnatehotkeys { margin-top: 20px; } -#shopButtons, #octeractButtons, #singUpgradeButtons { +#shopButtons, +#octeractButtons, +#singUpgradeButtons { display: flex; justify-content: center; flex-flow: wrap; @@ -1906,7 +1908,9 @@ p#reincarnatehotkeys { margin-top: 5px; } -#shopButtons > button, #octeractButtons > button, #singUpgradeButtons > button { +#shopButtons > button, +#octeractButtons > button, +#singUpgradeButtons > button { min-width: 150px; min-height: 40px; margin-bottom: 6px; From f6afa34303d50c36432d67ede81a9beae335ec78 Mon Sep 17 00:00:00 2001 From: jarboo Date: Mon, 2 Jan 2023 14:50:46 +0100 Subject: [PATCH 5/8] Update Synergism.ts --- src/Synergism.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Synergism.ts b/src/Synergism.ts index ce412354c..3e3fea5a1 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -817,7 +817,7 @@ export const player: Player = { octeractHideToggle: false, octeractBuyMaxToggle: false, singUpgradeHideToggle: false, - singUpgradeBuyMaxToggle: false + singUpgradeBuyMaxToggle: false, insideSingularityChallenge: false, singularityChallenges: { From 8e97db83363aeee9d7a4204c03ecaae43801f35c Mon Sep 17 00:00:00 2001 From: jarboo Date: Mon, 2 Jan 2023 14:55:08 +0100 Subject: [PATCH 6/8] Update Synergism.d.ts --- src/types/Synergism.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/Synergism.d.ts b/src/types/Synergism.d.ts index 6e0a9b5fc..503ca23d7 100644 --- a/src/types/Synergism.d.ts +++ b/src/types/Synergism.d.ts @@ -594,7 +594,7 @@ export interface Player { octeractHideToggle: boolean octeractBuyMaxToggle: boolean | 'ANY' singUpgradeHideToggle: boolean - singUpgradeBuyMaxToggle: boolean | 'ANY + singUpgradeBuyMaxToggle: boolean | 'ANY' octeractTimer: number insideSingularityChallenge: boolean From 00f8ce47ccbfbd75043d3a5328c94e0f3d1832ea Mon Sep 17 00:00:00 2001 From: jarboo Date: Mon, 2 Jan 2023 15:02:07 +0100 Subject: [PATCH 7/8] Update UpdateVisuals.ts --- src/UpdateVisuals.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index 6db5a3366..c1aa5ec0c 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -557,7 +557,7 @@ export const visualUpdateSingularity = () => { const enhanceVision = G['shopEnhanceVision']; for (const key of keys) { // Check item for Hide - const singUpgradeItem = player.singularityUpgrades[key]; + const singItem = player.singularityUpgrades[key]; const elementToHide = DOMCacheGetOrSet(`${key.toString()}`).parentNode as HTMLElement; const computedMaxLevel = singItem.computeMaxLevel(); if (player.singUpgradeHideToggle && computedMaxLevel !== -1 && singItem.level >= computedMaxLevel) { @@ -571,7 +571,7 @@ export const visualUpdateSingularity = () => { if (key === 'offeringAutomatic') { continue } - const singItem = player.singularityUpgrades[key]; + const el = DOMCacheGetOrSet(`${String(key)}`); if (singItem.maxLevel !== -1 && singItem.level >= singItem.computeMaxLevel()) { el.style.filter = enhanceVision ? 'brightness(.9)' : 'none'; From 4c8e3c2f031af972397f0350842f2eb1d00a650e Mon Sep 17 00:00:00 2001 From: jarboo Date: Wed, 11 Jan 2023 15:49:51 +0100 Subject: [PATCH 8/8] Changes following CR --- src/CheckVariables.ts | 4 ++-- src/Octeracts.ts | 2 +- src/Synergism.ts | 12 ++++++------ src/Toggles.ts | 15 ++++++++------- src/UpdateVisuals.ts | 8 ++++---- src/singularity.ts | 2 +- src/types/Synergism.d.ts | 4 ++-- 7 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/CheckVariables.ts b/src/CheckVariables.ts index 37894a76f..2c38c589e 100644 --- a/src/CheckVariables.ts +++ b/src/CheckVariables.ts @@ -828,11 +828,11 @@ export const checkVariablesOnLoad = (data: PlayerSave) => { } if (data.octeractBuyMaxToggle === undefined) { - player.octeractBuyMaxToggle = false; + player.octeractBuyMaxToggle = 'ONE'; } if (data.singUpgradeBuyMaxToggle === undefined) { - player.singUpgradeBuyMaxToggle = false; + player.singUpgradeBuyMaxToggle = 'ONE'; } if (data.wowOcteracts === undefined) { diff --git a/src/Octeracts.ts b/src/Octeracts.ts index 34743a14c..6f5fed42b 100644 --- a/src/Octeracts.ts +++ b/src/Octeracts.ts @@ -43,7 +43,7 @@ export class OcteractUpgrade extends DynamicUpgrade { let maxPurchasable = 1000000; let octBudget = player.wowOcteracts; - if (!event.shiftKey && player.octeractBuyMaxToggle === false) { + if (!event.shiftKey && player.octeractBuyMaxToggle === 'ONE') { maxPurchasable = 1; } else { let octToSpend = -1; diff --git a/src/Synergism.ts b/src/Synergism.ts index 3e3fea5a1..08e992fa0 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -815,9 +815,9 @@ export const player: Player = { hepteractAutoCraftPercentage: 50, octeractTimer: 0, octeractHideToggle: false, - octeractBuyMaxToggle: false, + octeractBuyMaxToggle: 'ONE', singUpgradeHideToggle: false, - singUpgradeBuyMaxToggle: false, + singUpgradeBuyMaxToggle: 'ONE', insideSingularityChallenge: false, singularityChallenges: { @@ -1770,10 +1770,10 @@ const loadSynergy = async () => { DOMCacheGetOrSet('toggleHideShop').textContent = 'Hide Maxed: OFF' } switch (player.octeractBuyMaxToggle) { - case false: + case 'ONE': DOMCacheGetOrSet('toggleBuyMaxOcteract').textContent = 'Buy: 1'; break; - case true: + case 'MAX': DOMCacheGetOrSet('toggleBuyMaxOcteract').textContent = 'Buy: MAX'; break; case 'ANY': @@ -1785,10 +1785,10 @@ const loadSynergy = async () => { DOMCacheGetOrSet('toggleHideOcteract').textContent = 'Hide Maxed: OFF' } switch (player.singUpgradeBuyMaxToggle) { - case false: + case 'ONE': DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').textContent = 'Buy: 1'; break; - case true: + case 'MAX': DOMCacheGetOrSet('toggleBuyMaxSingUpgrade').textContent = 'Buy: MAX'; break; case 'ANY': diff --git a/src/Toggles.ts b/src/Toggles.ts index a8e7ea5c6..eb047d8fd 100644 --- a/src/Toggles.ts +++ b/src/Toggles.ts @@ -773,17 +773,18 @@ export const toggleBuyMaxOcteract = () => { const el = DOMCacheGetOrSet('toggleBuyMaxOcteract') switch (player.octeractBuyMaxToggle) { - case false: + case 'ONE': el.innerHTML = 'Buy: ANY'; player.octeractBuyMaxToggle = 'ANY'; break; case 'ANY': el.innerHTML = 'Buy: MAX'; - player.octeractBuyMaxToggle = true; + player.octeractBuyMaxToggle = 'MAX'; break; + case 'MAX': default: el.innerHTML = 'Buy: 1'; - player.octeractBuyMaxToggle = false; + player.octeractBuyMaxToggle = 'ONE'; } } @@ -801,18 +802,18 @@ export const toggleBuyMaxSingUpgrade = () => { const el = DOMCacheGetOrSet('toggleBuyMaxSingUpgrade') switch (player.singUpgradeBuyMaxToggle) { - case false: + case 'ONE': el.innerHTML = 'Buy: ANY'; player.singUpgradeBuyMaxToggle = 'ANY'; break; case 'ANY': el.innerHTML = 'Buy: MAX'; - player.singUpgradeBuyMaxToggle = true; + player.singUpgradeBuyMaxToggle = 'MAX'; break; - case true: + case 'MAX': default: el.innerHTML = 'Buy: 1'; - player.singUpgradeBuyMaxToggle = false; + player.singUpgradeBuyMaxToggle = 'ONE'; } } diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index c1aa5ec0c..0f3b4f7d2 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -556,6 +556,10 @@ export const visualUpdateSingularity = () => { const keys = Object.keys(player.singularityUpgrades) as (keyof Player['singularityUpgrades'])[]; const enhanceVision = G['shopEnhanceVision']; for (const key of keys) { + if (key === 'offeringAutomatic') { + continue; + } + // Check item for Hide const singItem = player.singularityUpgrades[key]; const elementToHide = DOMCacheGetOrSet(`${key.toString()}`).parentNode as HTMLElement; @@ -568,10 +572,6 @@ export const visualUpdateSingularity = () => { } // Check item for Enhanced vision - if (key === 'offeringAutomatic') { - continue - } - const el = DOMCacheGetOrSet(`${String(key)}`); if (singItem.maxLevel !== -1 && singItem.level >= singItem.computeMaxLevel()) { el.style.filter = enhanceVision ? 'brightness(.9)' : 'none'; diff --git a/src/singularity.ts b/src/singularity.ts index cdc6caf8a..b1abce105 100644 --- a/src/singularity.ts +++ b/src/singularity.ts @@ -138,7 +138,7 @@ export class SingularityUpgrade extends DynamicUpgrade { let maxPurchasable = 100000; let GQBudget = player.goldenQuarks; - if (!event.shiftKey && player.singUpgradeBuyMaxToggle === false) { + if (!event.shiftKey && player.singUpgradeBuyMaxToggle === 'ONE') { maxPurchasable = 1; } else { let buy = -1; diff --git a/src/types/Synergism.d.ts b/src/types/Synergism.d.ts index 503ca23d7..0bf709868 100644 --- a/src/types/Synergism.d.ts +++ b/src/types/Synergism.d.ts @@ -592,9 +592,9 @@ export interface Player { hepteractAutoCraftPercentage: number octeractHideToggle: boolean - octeractBuyMaxToggle: boolean | 'ANY' + octeractBuyMaxToggle: 'ONE' | 'MAX' | 'ANY' singUpgradeHideToggle: boolean - singUpgradeBuyMaxToggle: boolean | 'ANY' + singUpgradeBuyMaxToggle: 'ONE' | 'MAX' | 'ANY' octeractTimer: number insideSingularityChallenge: boolean