diff --git a/index.html b/index.html index 941578ce2..1524c1980 100644 --- a/index.html +++ b/index.html @@ -2549,6 +2549,7 @@ +
/ @@ -2560,6 +2561,7 @@ +
/ @@ -2571,6 +2573,7 @@ +
/ @@ -2582,6 +2585,7 @@ +
/ @@ -2593,6 +2597,7 @@ +
/ @@ -2604,6 +2609,7 @@ +
/ @@ -2615,6 +2621,7 @@ +
/ @@ -2626,6 +2633,7 @@ +
/ @@ -2660,6 +2668,8 @@ 1
+
Auto Setting ----- Ratio: +
diff --git a/src/EventListeners.ts b/src/EventListeners.ts index d48876f3a..6011ad654 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, 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, toggleCorruptionLevel, toggleAutoAscend, toggleShopConfirmation, toggleAutoResearchMode, toggleBuyMaxShop, toggleHideShop, toggleHepteractAutoPercentage, updateAutoChronosRatio, updateAutoHyperrealismRatio, updateAutoQuarkRatio, updateAutoChallengeRatio, updateAutoAbyssRatio, updateAutoAcceleratorRatio, updateAutoAcceleratorBoostRatio, updateAutoMultiplierRatio } from './Toggles' import { resetrepeat, updateAutoReset, updateTesseractAutoBuyAmount } from './Reset' import { player, resetCheck, saveSynergy } from './Synergism' import { boostAccelerator, buyAccelerator, buyMultiplier, buyProducer, buyCrystalUpgrades, buyParticleBuilding, buyTesseractBuilding, buyUpgrades, buyRuneBonusLevels, buyAllBlessings } from './Buy' @@ -545,6 +545,16 @@ export const generateEventHandlers = () => { DOMCacheGetOrSet('hepteractAutoPercentageButton').addEventListener('click', () => toggleHepteractAutoPercentage()) + // Auto hept Ratios inputs + DOMCacheGetOrSet('chronosHepteractAutoRatio').addEventListener('click', () => updateAutoChronosRatio()) + DOMCacheGetOrSet('hyperrealismHepteractAutoRatio').addEventListener('click', () => updateAutoHyperrealismRatio()) + DOMCacheGetOrSet('quarkHepteractAutoRatio').addEventListener('click', () => updateAutoQuarkRatio()) + DOMCacheGetOrSet('challengeHepteractAutoRatio').addEventListener('click', () => updateAutoChallengeRatio()) + DOMCacheGetOrSet('abyssHepteractAutoRatio').addEventListener('click', () => updateAutoAbyssRatio()) + DOMCacheGetOrSet('acceleratorHepteractAutoRatio').addEventListener('click', () => updateAutoAcceleratorRatio()) + DOMCacheGetOrSet('acceleratorBoostHepteractAutoRatio').addEventListener('click', () => updateAutoAcceleratorBoostRatio()) + DOMCacheGetOrSet('multiplierHepteractAutoRatio').addEventListener('click', () => updateAutoMultiplierRatio()) + // CORRUPTION TAB //Part 0: Subtabs DOMCacheGetOrSet('corrStatsBtn').addEventListener('click', () => toggleSubTab(9, 0)) diff --git a/src/Hepteracts.ts b/src/Hepteracts.ts index 69e5ebf83..9ab7fe8e2 100644 --- a/src/Hepteracts.ts +++ b/src/Hepteracts.ts @@ -259,18 +259,18 @@ export class HepteractCraft { toggleAutomatic(newValue?: boolean): Promise | HepteractCraft { const HTML = DOMCacheGetOrSet(`${this.HTML_STRING}HepteractAuto`); - // When newValue is empty, current value is toggled this.AUTO = newValue ?? !this.AUTO; HTML.textContent = `Auto ${this.AUTO ? 'ON' : 'OFF'}`; HTML.style.border = `2px solid ${this.AUTO ? 'green' : 'red'}`; + DOMCacheGetOrSet(`${this.HTML_STRING}HepteractCraft`).style.display = this.AUTO ? 'none' : 'block' + DOMCacheGetOrSet(`${this.HTML_STRING}HepteractAutoRatio`).style.display = this.AUTO ? 'block' : 'none' return this; } autoCraft(heptAmount: number): HepteractCraft { const expandMultiplier = 2; - // Calculate the largest craft amount possible, with an upper limit being craftAmount const hepteractLimitCraft = Math.floor((heptAmount / this.HEPTERACT_CONVERSION) * 1 / (1 - this.DISCOUNT)); @@ -282,11 +282,33 @@ export class HepteractCraft { itemLimits.push(Math.floor((player[item as keyof Player] as number) / this.OTHER_CONVERSIONS[item as keyof Player]!) * 1 / (1 - this.DISCOUNT)) } } - + // Get the largest ratio from hepts + let largestRatio = player.hepteractAutoCraftRatios.chronos + for (const item of Object.entries(player.hepteractAutoCraftRatios)){ + if (largestRatio < item[1]){ + largestRatio = item[1]; + } + } // Get the smallest of the array we created [If Empty, this will be infinite] const smallestItemLimit = Math.min(...itemLimits); - - let amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft); + let amountToCraft; + if (this.HTML_STRING === 'chronos'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.chronos / largestRatio); + } else if (this.HTML_STRING === 'hyperreal'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.hyperreal / largestRatio); + } else if (this.HTML_STRING === 'quark'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.quark / largestRatio); + } else if (this.HTML_STRING === 'challenge'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.challenge / largestRatio); + } else if (this.HTML_STRING === 'abyss'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.abyss / largestRatio); + } else if (this.HTML_STRING === 'accelerator'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.accelerator / largestRatio); + } else if (this.HTML_STRING === 'acceleratorBoost'){ + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.acceleratorBoost / largestRatio); + } else { + amountToCraft = Math.min(smallestItemLimit, hepteractLimitCraft) * (player.hepteractAutoCraftRatios.multiplier / largestRatio); + } let amountCrafted = 0 if (amountToCraft >= this.CAP - this.BAL) { this.BAL = this.CAP diff --git a/src/Reset.ts b/src/Reset.ts index e582d4d69..95e46c30a 100644 --- a/src/Reset.ts +++ b/src/Reset.ts @@ -892,6 +892,8 @@ export const singularity = async (): Promise => { toggleSubTab(9, 0); // set 'corruption main' toggleSubTab(-1, 0); // set 'statistics main' + hold.hepteractAutoCraftPercentage = player.hepteractAutoCraftPercentage + hold.hepteractAutoCraftRatios = player.hepteractAutoCraftRatios hold.singularityCount = player.singularityCount; hold.goldenQuarks = player.goldenQuarks; hold.shopUpgrades = player.shopUpgrades; diff --git a/src/Synergism.ts b/src/Synergism.ts index b1bd0ec87..acff55532 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -726,7 +726,17 @@ export const player: Player = { singQuarkHepteract3: new SingularityUpgrade(singularityData['singQuarkHepteract3']) }, dailyCodeUsed: false, - hepteractAutoCraftPercentage: 50 + hepteractAutoCraftPercentage: 50, + hepteractAutoCraftRatios: { + chronos: 1, + hyperrealism: 1, + quark: 1, + challenge: 1, + abyss: 1, + accelerator: 1, + acceleratorBoost: 1, + multiplier: 1 + } } export const blankSave = Object.assign({}, player, { @@ -1613,6 +1623,10 @@ const loadSynergy = async () => { DOMCacheGetOrSet('autoHepteractPercentage').textContent = `${player.hepteractAutoCraftPercentage}` + DOMCacheGetOrSet('autoHepteractRatios').textContent = `${player.hepteractAutoCraftRatios.chronos}` + `${player.hepteractAutoCraftRatios.hyperrealism}` + + `${player.hepteractAutoCraftRatios.quark}` + `${player.hepteractAutoCraftRatios.challenge}` + `${player.hepteractAutoCraftRatios.abyss}` + + `${player.hepteractAutoCraftRatios.accelerator}` + `${player.hepteractAutoCraftRatios.acceleratorBoost}` + `${player.hepteractAutoCraftRatios.multiplier}` + toggleTalismanBuy(player.buyTalismanShardPercent); updateTalismanInventory(); calculateObtainium(); diff --git a/src/Toggles.ts b/src/Toggles.ts index 77082d845..8c6ee1dca 100644 --- a/src/Toggles.ts +++ b/src/Toggles.ts @@ -12,6 +12,7 @@ import { loadStatisticsCubeMultipliers, loadStatisticsOfferingMultipliers, loadS import { corruptionDisplay, corruptionLoadoutTableUpdate, maxCorruptionLevel } from './Corruptions'; import type { BuildingSubtab, Player } from './types/Synergism'; import { DOMCacheGetOrSet } from './Cache/DOM'; +import { updateAutoHeptRatiosDisplay } from './UpdateVisuals' interface TabValue { tabName: keyof typeof tabNumberConst, unlocked: boolean } type Tab = Record; @@ -1023,4 +1024,212 @@ export const toggleHepteractAutoPercentage = async(): Promise => { if (player.toggles[35]) { return Alert(`Okay. On Ascension, ${player.hepteractAutoCraftPercentage}% of your Hepteracts will be used in crafting.`) } +} + +export const updateAutoChronosRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set chronos hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your chronos hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.chronos}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.chronos && player.toggles[35]) { + return Alert(`Your chronos hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.chronos}.`) + } + player.hepteractAutoCraftRatios.chronos = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new chronos hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.chronos}.`) + } +} + +export const updateAutoHyperrealismRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set hyperrealism hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your hyperrealism hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.hyperrealism}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.hyperrealism && player.toggles[35]) { + return Alert(`Your hyperrealism hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.hyperrealism}.`) + } + player.hepteractAutoCraftRatios.hyperrealism = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new hyperrealism hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.hyperrealism}.`) + } +} + +export const updateAutoQuarkRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set quark hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your quark hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.quark}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.quark && player.toggles[35]) { + return Alert(`Your quark hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.quark}.`) + } + player.hepteractAutoCraftRatios.quark = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new quark hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.quark}.`) + } +} + +export const updateAutoChallengeRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set challenge hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your challenge hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.challenge}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.challenge && player.toggles[35]) { + return Alert(`Your challenge hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.challenge}.`) + } + player.hepteractAutoCraftRatios.challenge = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new challenge hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.challenge}.`) + } +} + +export const updateAutoAbyssRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set abyss hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your abyss hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.abyss}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.abyss && player.toggles[35]) { + return Alert(`Your abyss hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.abyss}.`) + } + player.hepteractAutoCraftRatios.abyss = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new abyss hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.abyss}.`) + } +} + +export const updateAutoAcceleratorRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set accelerator hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your accelerator hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.accelerator}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.accelerator && player.toggles[35]) { + return Alert(`Your acceleraator hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.accelerator}.`) + } + player.hepteractAutoCraftRatios.accelerator = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new accelerator hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.accelerator}.`) + } +} + +export const updateAutoAcceleratorBoostRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set accelerator boost hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your accelerator boost hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.acceleratorBoost}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.acceleratorBoost && player.toggles[35]) { + return Alert(`Your accelerator boost hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.acceleratorBoost}.`) + } + player.hepteractAutoCraftRatios.acceleratorBoost = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new accelerator boost hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.acceleratorBoost}.`) + } +} + +export const updateAutoMultiplierRatio = async(): Promise => { + const amount = await Prompt( + 'Enter a positive non-zero integer to set multiplier hepteract autocraft ratio. ' + ); + if (amount === null) { + if (player.toggles[35]) { + return Alert(`Your multiplier hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.multiplier}.`); + } else { + return + } + } + const ratio = parseInt(amount) + if (Number.isNaN(ratio) || !Number.isFinite(ratio) || !Number.isInteger(ratio)) { + return Alert('Value must be a finite, non-decimal number!'); + } else if (ratio <= 0) { + return Alert('Value must be greater than 0!'); + } else if (ratio === player.hepteractAutoCraftRatios.multiplier && player.toggles[35]) { + return Alert(`Your multiplier hepteract autocraft ratio is kept at ${player.hepteractAutoCraftRatios.multiplier}.`) + } + player.hepteractAutoCraftRatios.multiplier = ratio + updateAutoHeptRatiosDisplay(); + if (player.toggles[35]) { + return Alert(`Okay. Your new multiplier hepteract autocraft ratio will be ${player.hepteractAutoCraftRatios.multiplier}.`) + } } \ No newline at end of file diff --git a/src/UpdateHTML.ts b/src/UpdateHTML.ts index 9db0f295b..4229b760f 100644 --- a/src/UpdateHTML.ts +++ b/src/UpdateHTML.ts @@ -5,7 +5,7 @@ import { CalcCorruptionStuff, calculateAscensionAcceleration, calculateTimeAccel import { achievementaward, totalachievementpoints } from './Achievements'; import { displayRuneInformation } from './Runes'; import { autoResearchEnabled } from './Research'; -import { visualUpdateBuildings, visualUpdateUpgrades, visualUpdateAchievements, visualUpdateRunes, visualUpdateChallenges, visualUpdateResearch, visualUpdateSettings, visualUpdateShop, visualUpdateSingularity, visualUpdateAnts, visualUpdateCubes, visualUpdateCorruptions } from './UpdateVisuals'; +import { visualUpdateBuildings, visualUpdateUpgrades, visualUpdateAchievements, visualUpdateRunes, visualUpdateChallenges, visualUpdateResearch, visualUpdateSettings, visualUpdateShop, visualUpdateSingularity, visualUpdateAnts, visualUpdateCubes, visualUpdateCorruptions, updateAutoHeptRatiosDisplay } from './UpdateVisuals'; import { getMaxChallenges } from './Challenges'; import type { OneToFive, ZeroToFour, ZeroToSeven } from './types/Synergism'; import { DOMCacheGetOrSet } from './Cache/DOM'; @@ -204,7 +204,7 @@ export const revealStuff = () => { } visualUpdateShop(); - + updateAutoHeptRatiosDisplay(); const hepts = DOMCacheGetOrSet('corruptionHepteracts'); hepts.style.display = (player.achievements[255] > 0) ? 'block' : 'none'; diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index 5b89ddfef..58d07ed46 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -702,3 +702,9 @@ export const visualUpdateShop = () => { DOMCacheGetOrSet('buySingularityQuarksAmount').textContent = `Owned: ${format(player.goldenQuarks)}` DOMCacheGetOrSet('buySingularityQuarksButton').textContent = `Buy! ${format(getGoldenQuarkCost().cost)} Quarks Each` } + +export const updateAutoHeptRatiosDisplay = () => { + DOMCacheGetOrSet('autoHepteractRatios').textContent = `${player.hepteractAutoCraftRatios.chronos} ` + `${player.hepteractAutoCraftRatios.hyperrealism} ` + + `${player.hepteractAutoCraftRatios.quark} ` + `${player.hepteractAutoCraftRatios.challenge} ` + `${player.hepteractAutoCraftRatios.abyss} ` + + `${player.hepteractAutoCraftRatios.accelerator} ` + `${player.hepteractAutoCraftRatios.acceleratorBoost} ` + `${player.hepteractAutoCraftRatios.multiplier} ` +} \ No newline at end of file diff --git a/src/types/Synergism.d.ts b/src/types/Synergism.d.ts index 951a3eabb..f2a33a014 100644 --- a/src/types/Synergism.d.ts +++ b/src/types/Synergism.d.ts @@ -543,6 +543,7 @@ export interface Player { singularityUpgrades: Record dailyCodeUsed: boolean hepteractAutoCraftPercentage: number + hepteractAutoCraftRatios: Record }