Skip to content

Commit 3bfb39f

Browse files
committed
Minor Balancing Patch: Quark Hepteracts and Golden Quarks
1 parent 09add47 commit 3bfb39f

9 files changed

Lines changed: 50 additions & 30 deletions

File tree

src/Calculate.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,6 +1645,14 @@ export const calculateQuarkMultFromPowder = () => {
16451645
: 1 + (1 / 100000) * player.overfluxPowder
16461646
}
16471647

1648+
export const calculateBaseGoldenQuarks = (singularity: number) => {
1649+
const minimumValue = 100 * Math.pow(1.04, singularity)
1650+
const contributionFromQuarks = player.quarksThisSingularity / 1e5
1651+
const firstTenBonus = 10 * Math.min(player.highestSingularityCount, 10)
1652+
return Math.floor(minimumValue + contributionFromQuarks + firstTenBonus)
1653+
}
1654+
1655+
16481656
export const calculateSingularityAmbrosiaLuckMilestoneBonus = () => {
16491657
let bonus = 0
16501658
const singThresholds1 = [35, 42, 49, 56, 63, 70, 77]

src/Config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
declare const PROD: boolean | undefined
22
declare const DEV: boolean | undefined
33

4-
export const version = '4.0.2 October 20, 2025: The Greater Reimagining'
4+
export const version = '4.0.3 October 20, 2025: The Greater Reimagining'
55

66
/**
77
* If true, the version is marked as a testing version.

src/Hepteracts.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,8 @@ export const hepteracts: { [K in HepteractKeys]: HepteractData<K> } = {
118118
UNLOCKED: () => true,
119119
EFFECTS: (hept) => {
120120
const exponent = hepteracts.quark.DR + hepteracts.quark.DR_INCREASE()
121-
if (hept <= hepteracts.quark.LIMIT) {
122-
return {
123-
quarkMultiplier: Math.pow(1 + 5 * hept / 10000, exponent)
124-
}
125-
}
126121
return {
127-
quarkMultiplier: Math.pow(1.5 + 0.2 * Math.log2(hept / 1000), exponent)
122+
quarkMultiplier: Math.pow(1 + 0.2 * Math.log2(1 + hept / 500), exponent)
128123
}
129124
},
130125
EFFECTSDESCRIPTION: (hept) => {
@@ -133,10 +128,17 @@ export const hepteracts: { [K in HepteractKeys]: HepteractData<K> } = {
133128
x: formatAsPercentIncrease(effects.quarkMultiplier, 2)
134129
})
135130
},
136-
DESCRIPTION: () => i18next.t('wowCubes.hepteractForge.descriptions.quark.effect'),
131+
DESCRIPTION: () => {
132+
const starter = i18next.t('wowCubes.hepteractForge.descriptions.quark.effect')
133+
const DR = hepteracts.quark.DR + hepteracts.quark.DR_INCREASE()
134+
const extra = i18next.t('wowCubes.hepteractForge.descriptions.quark.effect2', {
135+
x: format(DR, 3, true)
136+
})
137+
return `${starter}<br>${extra}`
138+
},
137139
RESET_TIER: 'never',
138140
LIMIT: 1000,
139-
DR: 1,
141+
DR: 2,
140142
DR_INCREASE: () => {
141143
return getGQUpgradeEffect('singQuarkHepteract')
142144
+ getGQUpgradeEffect('singQuarkHepteract2')
@@ -668,7 +670,7 @@ export const hepteractDescriptions = (hept: HepteractKeys) => {
668670
break
669671
}
670672

671-
effectText.textContent = i18next.t(`wowCubes.hepteractForge.descriptions.${hept}.effect`)
673+
effectText.innerHTML = hepteracts[hept].DESCRIPTION()
672674
currentEffectText.innerHTML = currentEffectRecord
673675

674676
balanceText.textContent = i18next.t('wowCubes.hepteractForge.inventory', {

src/Octeracts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ export const octeractUpgrades: Record<OcteractDataKeys, OcteractUpgrade> = {
288288
maxLevel: 25,
289289
costPerLevel: 1 / 10,
290290
effect: (n: number) => {
291-
return n / 50
291+
return n / 100
292292
},
293293
effectDescription: function(n: number) {
294294
const effectValue = this.effect(n)

src/Shop.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
467467
tier: 'Ascension',
468468
price: 2e5 - 1,
469469
priceIncrease: 19999,
470-
maxLevel: 15,
470+
maxLevel: 10,
471471
type: shopUpgradeTypes.UPGRADE,
472472
refundable: false,
473473
refundMinimumLevel: 0
@@ -476,7 +476,7 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
476476
tier: 'Singularity',
477477
price: 2e7 - 1,
478478
priceIncrease: 2e6 - 1,
479-
maxLevel: 15,
479+
maxLevel: 10,
480480
type: shopUpgradeTypes.UPGRADE,
481481
refundable: false,
482482
refundMinimumLevel: 0
@@ -485,7 +485,7 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
485485
tier: 'SingularityVol2',
486486
price: 2e9 - 1,
487487
priceIncrease: 2e9 - 1,
488-
maxLevel: 15,
488+
maxLevel: 10,
489489
type: shopUpgradeTypes.UPGRADE,
490490
refundable: false,
491491
refundMinimumLevel: 0
@@ -494,7 +494,7 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
494494
tier: 'SingularityVol3',
495495
price: 2e11 - 1,
496496
priceIncrease: 2e11 - 1,
497-
maxLevel: 15,
497+
maxLevel: 10,
498498
type: shopUpgradeTypes.UPGRADE,
499499
refundable: false,
500500
refundMinimumLevel: 0
@@ -557,7 +557,7 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
557557
tier: 'SingularityVol4',
558558
price: 1,
559559
priceIncrease: 2.5e13,
560-
maxLevel: 100,
560+
maxLevel: 80,
561561
type: shopUpgradeTypes.UPGRADE,
562562
refundable: false,
563563
refundMinimumLevel: 0
@@ -807,6 +807,13 @@ export const shopData: Record<keyof Player['shopUpgrades'], IShopData> = {
807807
}
808808
}
809809

810+
export const updateShopLevels = () => {
811+
for (const upgrade in player.shopUpgrades){
812+
const k = upgrade as keyof Player['shopUpgrades']
813+
player.shopUpgrades[k] = Math.min(player.shopUpgrades[k], shopData[k].maxLevel)
814+
}
815+
}
816+
810817
// Names of shop upgrades || Top row indicates potions, and all other upgrades are labeled in order.
811818
// If you are adding more upgrades please make sure the order of labelled upgrades is correct!
812819
type ShopUpgradeNames =

src/Statistics.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
calculateAscensionScore,
2525
calculateAscensionSpeedExponentSpread,
2626
calculateAscensionSpeedMult,
27+
calculateBaseGoldenQuarks,
2728
calculateBaseObtainium,
2829
calculateBaseOfferings,
2930
calculateBlueberryInventory,
@@ -2269,8 +2270,7 @@ export const allGoldenQuarkMultiplierStats: NumberStatLine[] = [
22692270
{
22702271
i18n: 'Base',
22712272
stat: () =>
2272-
10 + 2 * player.singularityCount + Math.max(0, 5 * (10 - player.singularityCount))
2273-
+ player.quarksThisSingularity / 1e5 // Base Value
2273+
calculateBaseGoldenQuarks(player.singularityCount) // Base Golden Quarks based on Quarks and Sing Count
22742274
},
22752275
{
22762276
i18n: 'PseudoCoins',

src/Synergism.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,7 @@ import {
244244
import { changeSubTab, changeTab, getActiveSubTab, Tabs } from './Tabs'
245245
import { settingAnnotation, settingSymbols, toggleIconSet, toggleTheme } from './Themes'
246246
import { clearTimeout, clearTimers, setInterval, setTimeout } from './Timers'
247+
import { updateShopLevels } from './Shop'
247248

248249
export const player: Player = {
249250
firstPlayed: new Date().toISOString(),
@@ -5433,6 +5434,7 @@ export const reloadShit = (reset = false) => {
54335434
setAmbrosiaUpgradeLevels()
54345435
setRedAmbrosiaUpgradeLevels()
54355436
refundOvercapResearches()
5437+
updateShopLevels()
54365438

54375439
if (!reset) {
54385440
calculateOffline()

src/singularity.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1124,13 +1124,13 @@ export const goldenQuarkUpgrades: Record<SingularityDataKeys, GoldenQuarkUpgrade
11241124
qualityOfLife: true,
11251125
costPerLevel: 14999,
11261126
minimumSingularity: 5,
1127-
specialCostForm: 'Exponential2',
1127+
specialCostForm: 'Quadratic',
11281128
effect: (n: number) => {
1129-
return n / 50
1129+
return n / 100
11301130
},
11311131
effectDescription: (n: number) =>
11321132
i18next.t('singularity.data.singQuarkHepteract.effect', {
1133-
n: format(n / 50, 2, true)
1133+
n: format(n / 100, 2, true)
11341134
}),
11351135
name: () => i18next.t('singularity.data.singQuarkHepteract.name'),
11361136
description: () => i18next.t('singularity.data.singQuarkHepteract.description')
@@ -1144,13 +1144,13 @@ export const goldenQuarkUpgrades: Record<SingularityDataKeys, GoldenQuarkUpgrade
11441144
qualityOfLife: true,
11451145
costPerLevel: 449999,
11461146
minimumSingularity: 30,
1147-
specialCostForm: 'Exponential2',
1147+
specialCostForm: 'Cubic',
11481148
effect: (n: number) => {
1149-
return n / 50
1149+
return n / 100
11501150
},
11511151
effectDescription: (n: number) =>
11521152
i18next.t('singularity.data.singQuarkHepteract2.effect', {
1153-
n: format(n / 50, 2, true)
1153+
n: format(n / 100, 2, true)
11541154
}),
11551155
name: () => i18next.t('singularity.data.singQuarkHepteract2.name'),
11561156
description: () => i18next.t('singularity.data.singQuarkHepteract2.description')
@@ -1166,11 +1166,11 @@ export const goldenQuarkUpgrades: Record<SingularityDataKeys, GoldenQuarkUpgrade
11661166
minimumSingularity: 61,
11671167
specialCostForm: 'Exponential2',
11681168
effect: (n: number) => {
1169-
return n / 100
1169+
return n / 200
11701170
},
11711171
effectDescription: (n: number) =>
11721172
i18next.t('singularity.data.singQuarkHepteract3.effect', {
1173-
n: format(n / 100, 2, true)
1173+
n: format(n / 200, 3, true)
11741174
}),
11751175
name: () => i18next.t('singularity.data.singQuarkHepteract3.name'),
11761176
description: () => i18next.t('singularity.data.singQuarkHepteract3.description')

translations/en.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3487,7 +3487,7 @@
34873487
},
34883488
"singQuarkHepteract": {
34893489
"name": "I wish my Quark Hepteract was marginally better.",
3490-
"description": "Wrong game, oops. Anyway, would you like more exponent on your Quark Hepteract. +0.02 per level, to be precise.",
3490+
"description": "Wrong game, oops. Anyway, would you like more exponent on your Quark Hepteract. +0.01 per level, to be precise.",
34913491
"effect": "Quark Hepteract Exponent +{{n}}"
34923492
},
34933493
"singQuarkHepteract2": {
@@ -3497,7 +3497,7 @@
34973497
},
34983498
"singQuarkHepteract3": {
34993499
"name": "I wish my Quark Hepteract was marginally better III.",
3500-
"description": "I AM NOT THE GODMOTHER YOU ARE LOOKING FOR! This wish is weaker... but it can be overclocked.",
3500+
"description": "I AM NOT THE GODMOTHER YOU ARE LOOKING FOR! This wish, unlike the others, can be overclocked!",
35013501
"effect": "Quark Hepteract Exponent +{{n}}"
35023502
},
35033503
"singOcteractGain": {
@@ -4757,7 +4757,7 @@
47574757
},
47584758
"octeractImprovedQuarkHept": {
47594759
"name": "I wish for even better Quark Hepteracts.",
4760-
"description": "The godmother is absent, but Derpsmith is here! +0.02 exponent to your Quark Hepteract per level.",
4760+
"description": "The godmother is absent, but Derpsmith is here! +0.01 exponent to your Quark Hepteract per level.",
47614761
"effect": "Quark Hepteract Exponent +{{n}}"
47624762
},
47634763
"octeractImprovedGlobalSpeed": {
@@ -6608,7 +6608,8 @@
66086608
"oneCost": "One of these will cost you {{x}} Hepteracts and {{y}} Offerings."
66096609
},
66106610
"quark": {
6611-
"effect": "One pound, two pound fish, fishy grant +0.05% Quarks per Quark Hepteract fish fish.",
6611+
"effect": "One pound, two pound fish.",
6612+
"effect2": "Grants a Quark Multiplier equal to (1 + 0.2 * log2(1 + QHept / 500))^{{x}}",
66126613
"currentEffect": "Current Effect: Quarks +{{x}}",
66136614
"oneCost": "One of these will cost you {{x}} Hepteracts and {{y}} Quarks."
66146615
},

0 commit comments

Comments
 (0)