diff --git a/package.json b/package.json index 591e854ac..919689051 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "lint:fix": "npx @biomejs/biome lint --apply .", "lint:fix-unsafe": "npx @biomejs/biome lint --apply-unsafe .", "fmt": "npx dprint fmt", + "format": "npx dprint fmt", "csslint": "npx stylelint Synergism.css", "csslint:fix": "npx stylelint Synergism.css --fix", "htmllint": "npx htmlhint index.html", diff --git a/src/BlueberryUpgrades.ts b/src/BlueberryUpgrades.ts index 5d9d4dd84..246bf7682 100644 --- a/src/BlueberryUpgrades.ts +++ b/src/BlueberryUpgrades.ts @@ -4,6 +4,7 @@ import { calculateAmbrosiaGenerationSpeed, calculateAmbrosiaLuck } from './Calcu import { DynamicUpgrade } from './DynamicUpgrade' import type { IUpgradeData } from './DynamicUpgrade' import { exportData, saveFilename } from './ImportExport' +import { getQuarkBonus } from './Quark' import { format, player } from './Synergism' import type { Player } from './types/Synergism' import { Alert, Confirm, Prompt } from './UpdateHTML' @@ -665,7 +666,7 @@ export const blueberryUpgradeData: Record< return baseCost * (Math.pow(level + 1, 2) - Math.pow(level, 2)) }, rewards: (n: number) => { - const val = 1 + (n * player.worlds.BONUS) / 100 + const val = 1 + (n * getQuarkBonus()) / 100 return { blueberryGeneration: val, desc: String( diff --git a/src/Calculate.ts b/src/Calculate.ts index b6a33711f..700077ac7 100644 --- a/src/Calculate.ts +++ b/src/Calculate.ts @@ -7,7 +7,7 @@ import { BuffType, calculateEventSourceBuff } from './Event' import { addTimers, automaticTools } from './Helper' import { hepteractEffective } from './Hepteracts' import { disableHotkeys, enableHotkeys } from './Hotkeys' -import { quarkHandler } from './Quark' +import { getQuarkBonus, quarkHandler } from './Quark' import { reset } from './Reset' import { calculateSingularityDebuff } from './singularity' import { getFastForwardTotalMultiplier } from './singularity' @@ -2082,7 +2082,7 @@ export const getOcteractValueMultipliers = () => { +player.singularityUpgrades.singOcteractGain5.getEffect().bonus, // Patreon bonus 1 - + (player.worlds.BONUS / 100) + + (getQuarkBonus() / 100) * +player.singularityUpgrades.singOcteractPatreonBonus.getEffect().bonus, // octeracts for dummies 1 + 0.2 * +player.octeractUpgrades.octeractStarter.getEffect().bonus, @@ -2488,7 +2488,7 @@ export const calculateGoldenQuarkMultiplier = (computeMultiplier = false) => { const arr = [ 1 + Math.max(0, Math.log10(player.challenge15Exponent + 1) - 20) / 2, // Challenge 15 Exponent - 1 + player.worlds.BONUS / 100, // Patreon Bonus + 1 + getQuarkBonus() / 100, // Patreon Bonus +player.singularityUpgrades.goldenQuarks1.getEffect().bonus, // Golden Quarks I 1 + 0.12 * player.cubeUpgrades[69], // Cookie Upgrade 19 +player.singularityChallenges.noSingularityUpgrades.rewards.goldenQuarks, // No Singularity Upgrades diff --git a/src/ImportExport.ts b/src/ImportExport.ts index 8045a74db..27b8bd7ff 100644 --- a/src/ImportExport.ts +++ b/src/ImportExport.ts @@ -8,7 +8,7 @@ import { octeractGainPerSecond } from './Calculate' import { testing, version } from './Config' import { Synergism } from './Events' import { addTimers } from './Helper' -import { quarkHandler } from './Quark' +import { getQuarkBonus, quarkHandler } from './Quark' import { playerJsonSchema } from './saves/PlayerJsonSchema' import { shopData } from './Shop' import { singularityData } from './singularity' @@ -240,7 +240,7 @@ export const exportSynergism = async ( const quarkData = quarkHandler() let bonusGQMultiplier = 1 - bonusGQMultiplier *= 1 + player.worlds.BONUS / 100 + bonusGQMultiplier *= 1 + getQuarkBonus() / 100 bonusGQMultiplier *= player.highestSingularityCount >= 100 ? 1 + player.highestSingularityCount / 50 : 1 diff --git a/src/Login.ts b/src/Login.ts index 8ba169d0b..83b94986f 100644 --- a/src/Login.ts +++ b/src/Login.ts @@ -1,7 +1,7 @@ import i18next from 'i18next' import localforage from 'localforage' import { DOMCacheGetOrSet } from './Cache/DOM' -import { QuarkHandler } from './Quark' +import { QuarkHandler, setQuarkBonus } from './Quark' import { player } from './Synergism' import { Alert } from './UpdateHTML' @@ -86,10 +86,8 @@ export async function handleLogin () { | SynergismDiscordUserAPIResponse | SynergismPatreonUserAPIResponse - player.worlds = new QuarkHandler({ - quarks: Number(player.worlds), - bonus: 100 * (1 + globalBonus / 100) * (1 + personalBonus / 100) - 100 // Multiplicative - }) + setQuarkBonus(100 * (1 + globalBonus / 100) * (1 + personalBonus / 100) - 100) + player.worlds = new QuarkHandler(Number(player.worlds)) currentBonus.textContent = `Generous patrons give you a bonus of ${globalBonus}% more Quarks!` diff --git a/src/Quark.ts b/src/Quark.ts index 64e523ab5..91d230925 100644 --- a/src/Quark.ts +++ b/src/Quark.ts @@ -37,24 +37,23 @@ export const quarkHandler = () => { } } +let bonus = 0 + +export const setQuarkBonus = (newBonus: number) => bonus = newBonus +export const getQuarkBonus = () => bonus + export class QuarkHandler { - /** Global quark bonus */ - public BONUS = 0 /** Quark amount */ private QUARKS = 0 - constructor ({ bonus, quarks }: { bonus?: number; quarks: number }) { + constructor (quarks: number) { this.QUARKS = quarks - - if (bonus) { - this.BONUS = bonus - } } /*** Calculates the number of quarks to give with the current bonus. */ applyBonus (amount: number) { const nonPatreon = calculateQuarkMultiplier() - return amount * (1 + (this.BONUS / 100)) * nonPatreon + return amount * (1 + (getQuarkBonus() / 100)) * nonPatreon } /** Subtracts quarks, as the name suggests. */ diff --git a/src/Synergism.ts b/src/Synergism.ts index ad2d23001..3e7733a51 100644 --- a/src/Synergism.ts +++ b/src/Synergism.ts @@ -158,7 +158,7 @@ import { init as i18nInit } from './i18n' import { handleLogin } from './Login' import { octeractData, OcteractUpgrade } from './Octeracts' import { updatePlatonicUpgradeBG } from './Platonic' -import { QuarkHandler } from './Quark' +import { getQuarkBonus, QuarkHandler } from './Quark' import { playerJsonSchema } from './saves/PlayerJsonSchema' import { playerSchema } from './saves/PlayerSchema' import { getFastForwardTotalMultiplier, singularityData, SingularityUpgrade } from './singularity' @@ -177,7 +177,7 @@ import type { PlayerSave } from './types/LegacySynergism' export const player: Player = { firstPlayed: new Date().toISOString(), - worlds: new QuarkHandler({ quarks: 0, bonus: 0 }), + worlds: new QuarkHandler(0), coins: new Decimal('1e2'), coinsThisPrestige: new Decimal('1e2'), coinsThisTranscension: new Decimal('1e2'), @@ -5040,7 +5040,7 @@ export const resetCheck = async ( i18next.t('main.singularityMessage4', { x: format(nextSingularityNumber), y: format(calculateGoldenQuarkGain(), 2, true), - z: format(player.worlds.BONUS) + z: format(getQuarkBonus()) }) ) await Alert(i18next.t('main.singularityMessage5')) diff --git a/src/UpdateVisuals.ts b/src/UpdateVisuals.ts index 2d7e8f07a..4ca4f2784 100644 --- a/src/UpdateVisuals.ts +++ b/src/UpdateVisuals.ts @@ -29,7 +29,7 @@ import { version } from './Config' import type { IMultiBuy } from './Cubes' import type { hepteractTypes } from './Hepteracts' import { hepteractTypeList } from './Hepteracts' -import { quarkHandler } from './Quark' +import { getQuarkBonus, quarkHandler } from './Quark' import { displayRuneInformation } from './Runes' import { getShopCosts, isShopUpgradeUnlocked, shopData, shopUpgradeTypes } from './Shop' import { getGoldenQuarkCost } from './singularity' @@ -1342,7 +1342,7 @@ export const visualUpdateSettings = () => { const maxExportQuarks = quarkData.capacity let goldenQuarkMultiplier = 1 - goldenQuarkMultiplier *= 1 + player.worlds.BONUS / 100 + goldenQuarkMultiplier *= 1 + getQuarkBonus() / 100 goldenQuarkMultiplier *= player.highestSingularityCount >= 100 ? 1 + player.highestSingularityCount / 50 : 1 diff --git a/src/saves/PlayerSchema.ts b/src/saves/PlayerSchema.ts index a02134759..bedbef91b 100644 --- a/src/saves/PlayerSchema.ts +++ b/src/saves/PlayerSchema.ts @@ -72,7 +72,7 @@ const hepteractCraftSchema = (k: keyof Player['hepteractCrafts']) => export const playerSchema = z.object({ firstPlayed: z.string().datetime().optional().default(() => new Date().toISOString()), - worlds: z.number().transform((quarks) => new QuarkHandler({ quarks })), + worlds: z.number().transform((quarks) => new QuarkHandler(quarks)), coins: decimalSchema, coinsThisPrestige: decimalSchema, coinsThisTranscension: decimalSchema,