You have
{{ format(matter, 2) }} Matter.
+
+ Your best Matter in IC9 is
{{ format(bestMatter, 2) }}.
These upgrades can only be purchased in Infinity Challenge 9
diff --git a/src/components/tabs/mending/KohlersRealm.vue b/src/components/tabs/mending/KohlersRealm.vue
index a45c1a8c7..ba275c72e 100644
--- a/src/components/tabs/mending/KohlersRealm.vue
+++ b/src/components/tabs/mending/KohlersRealm.vue
@@ -29,7 +29,7 @@ export default {
computed: {
upgrades: () => KohlerUpgrades.all,
runningText(){
- return this.isRunning ? "Exit Kohler's Realm" : "Enter Kohler's Realm."
+ return this.isRunning ? "Exit Kohler's Realm" : "Enter Kohler's Realm"
},
unlockInfos: () => KohlerProgressUnlocks.all,
showRunReward() {
diff --git a/src/components/ui-modes/HeaderChallengeDisplay.vue b/src/components/ui-modes/HeaderChallengeDisplay.vue
index a8e43bb5b..2005678c6 100644
--- a/src/components/ui-modes/HeaderChallengeDisplay.vue
+++ b/src/components/ui-modes/HeaderChallengeDisplay.vue
@@ -94,7 +94,7 @@ export default {
},
challengeDisplay() {
if (this.inKohler){
- return "Kohler's Realm"
+ return this.activeChallengeNames.length > 0 ? `${this.activeChallengeNames.join(" + ")} in Kohler's Realm` : "Kohler's Realm"
}
if (this.inPelle && this.activeChallengeNames.length > 0) {
return `${this.activeChallengeNames.join(" + ")} in a Doomed Reality. Good luck.`;
diff --git a/src/core/dimensions/antimatter-dimension.js b/src/core/dimensions/antimatter-dimension.js
index 441278773..b0d891ac4 100644
--- a/src/core/dimensions/antimatter-dimension.js
+++ b/src/core/dimensions/antimatter-dimension.js
@@ -98,12 +98,15 @@ export function getDimensionFinalMultiplierUncached(tier) {
multiplier = multiplier.pow(1.05);
}
if (Kohler.isRunning) {
- multiplier = multiplier.times(Decimal.pow(20, KohlerUpgrade(3).boughtAmount));
- multiplier = multiplier.times(KohlerUpgrade(14).effectOrDefault(1));
- multiplier = multiplier.times(KohlerUpgrade(17).effectOrDefault(1));
- multiplier = multiplier.times(KohlerInfinityUpgrade(7).effectOrDefault(1));
+ multiplier = multiplier.timesEffectsOf(KohlerUpgrade(3),
+ KohlerUpgrade(14),
+ KohlerUpgrade(17),
+ KohlerInfinityUpgrade(7)
+ );
}
- if (tier === 1) multiplier = multiplier.times(KohlerUpgrade(6).effectOrDefault(1))
+ if (tier === 1) multiplier = multiplier.timesEffectsOf(
+ KohlerUpgrade(6),
+ KohlerInfinityUpgrade(11))
if (tier === 8 && KohlerUpgrade(8).isBought) multiplier = multiplier.times(KohlerUpgrade(6).effectOrDefault(1))
return multiplier;
}
@@ -636,6 +639,7 @@ class AntimatterDimensionState extends DimensionState {
if (player.mending.corruptionChallenge.corruptedMend) {
let atomDilutionCorruption = corruptionPenalties.atomDilution[player.mending.corruption[6]];
if(CorruptionUpgrade(22).isBought) atomDilutionCorruption = Math.min(1,atomDilutionCorruption*1.5)
+ if(Kohler.isRunning) atomDilutionCorruption = Math.min(1, atomDilutionCorruption ** MatterUpgrade(10).effectOrDefault(1))
production = Decimal.pow10(Math.pow(production.log10(),atomDilutionCorruption))
}
if(KohlerProgressUnlocks.hostileFragments.isUnlocked){
diff --git a/src/core/dimensions/infinity-dimension.js b/src/core/dimensions/infinity-dimension.js
index 37ff5cc2e..ce6ce7366 100644
--- a/src/core/dimensions/infinity-dimension.js
+++ b/src/core/dimensions/infinity-dimension.js
@@ -264,7 +264,8 @@ class InfinityDimensionState extends DimensionState {
if (Kohler.isRunning){
mult = mult.timesEffectsOf(
KohlerInfinityUpgrade(2),
- KohlerInfinityUpgrade(8)
+ KohlerInfinityUpgrade(8),
+ MatterUpgrade(8)
)
}
return mult;
@@ -536,7 +537,7 @@ export const InfinityDimensions = {
w **= 0.01;
w *= 8;
}*/
- let kiu4Mult = (Kohler.isRunning) ? KohlerInfinityUpgrade(4).effectOrDefault(1) : 1;
- return w * kiu4Mult;
+ let kiu4Pow = (Kohler.isRunning) ? KohlerInfinityUpgrade(4).effectOrDefault(1) : 1;
+ return w ** kiu4Pow;
}
};
diff --git a/src/core/normal-challenges.js b/src/core/normal-challenges.js
index b8e17a050..fb714d053 100644
--- a/src/core/normal-challenges.js
+++ b/src/core/normal-challenges.js
@@ -8,7 +8,20 @@ export function updateNormalAndInfinityChallenges(diff) {
// These caps are values which occur at approximately e308 IP
const cappedBase = 1.03 + Math.clampMax(DimBoost.totalBoosts, 400) / 200 +
Math.clampMax(player.galaxies, 100) / 100;
- Currency.matter.multiply(Decimal.pow(cappedBase, diff.div(20)));
+ if (InfinityChallenge(9).isRunning){
+ let a = diff.times(cappedBase).div(20);
+ a = a.timesEffectsOf(
+ MatterUpgrade(1),
+ MatterUpgrade(7),
+ KohlerInfinityUpgrade(13),
+ MatterUpgrade(9)
+ )
+ Currency.matter.add(a.pow(MatterUpgrade(2).effectOrDefault(1)));
+ if (Currency.matter.value.gt(player.records.bestMatterinIC9)) player.records.bestMatterinIC9 = Currency.matter.value;
+ }
+ else{
+ Currency.matter.multiply(Decimal.pow(cappedBase, diff.div(20)));
+ }
}
if (Currency.matter.gt(Currency.antimatter.value) && NormalChallenge(11).isRunning && !Player.canCrunch) {
const values = [Currency.antimatter.value, Currency.matter.value];
diff --git a/src/core/player.js b/src/core/player.js
index 6607ec358..779cb1ae8 100644
--- a/src/core/player.js
+++ b/src/core/player.js
@@ -407,6 +407,7 @@ window.player = {
fullGameCompletions: 0,
previousRunRealTime: 0,
totalAntimatter: DC.E1,
+ bestMatterinIC9: DC.D0,
recentInfinities: Array.range(0, 10).map(() =>
[Decimal.pow10(Number.MAX_VALUE), Number.MAX_VALUE, DC.D1, DC.D1, ""]),
recentEternities: Array.range(0, 10).map(() =>
diff --git a/src/core/secret-formula/mending/kohler-infinity-upgrades.js b/src/core/secret-formula/mending/kohler-infinity-upgrades.js
index 5f2d139e0..ae0fcfffe 100644
--- a/src/core/secret-formula/mending/kohler-infinity-upgrades.js
+++ b/src/core/secret-formula/mending/kohler-infinity-upgrades.js
@@ -18,10 +18,10 @@ const rebuyable = props => {
}
return Math.pow(effect, player.infinity.kohlerRebuyables[props.id]);
}
- props.description = () => props.textTemplate.replace("{value}", formatInt(effect));
+ props.description = () => props.textTemplate.replace("{value}", format(effect, 2, 2));
props.formatEffect = value => {
- /*if (props.id === 6 || props.id === 16) return effectType + `${formatInt(value)}`
- if (props.id === 11) return effectType + `${formatFloat(value, 3)}`*/
+ if (props.id === 4) return effectType + `${format(value, 2, 2)}`
+ /*if (props.id === 11) return effectType + `${formatFloat(value, 3)}`*/
return effectType + `${format(value, 2, 0)}`
};
props.formatCost = value => format(value, 2, 0);
@@ -61,9 +61,9 @@ export const kohlerInfinityUpgrades = [
name: "Kohler Infinity Upgrade 4",
initialCost: 1e11,
costMult: 1e6,
- textTemplate: `Multiply Infinity Power conversion rate by {value}`,
- effect: 2,
- effectType: "×"
+ textTemplate: `Raise Infinity Power conversion rate by {value}`,
+ effect: 1.05,
+ effectType: "^"
}),
rebuyable({
id: 5,
@@ -109,5 +109,47 @@ export const kohlerInfinityUpgrades = [
name: "Kohler Infinity Upgrade 10",
cost: 1e9,
description: () => `Unlock Matter Upgrades and Infinity Challenge 9`
+ },
+ {
+ id: 11,
+ name: "Kohler Infinity Upgrade 11",
+ cost: 1e11,
+ description: () => `Kohler Infinity Upgrade 7 also applies to the 1st Antimatter Dimension`,
+ effect: () => Currency.infinityPower.value.pow(InfinityDimensions.powerConversionRate).pow(0.1).clampMin(1),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
+ },
+ {
+ id: 12,
+ name: "Kohler Infinity Upgrade 12",
+ cost: 1e12,
+ description: () => `Gamespeed boosts Infinity Point Gain`,
+ effect: () => getGameSpeedupFactor().log10(),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
+ },
+ {
+ id: 13,
+ name: "Kohler Infinity Upgrade 13",
+ cost: 1e14,
+ description: () => `Matter Gain is boosted by Infinity Points`,
+ effect: () => Currency.infinityPoints.value.log10() / 2,
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
+ },
+ {
+ id: 14,
+ name: "Kohler Infinity Upgrade 14",
+ cost: 1e15,
+ description: () => `Infinity Power multiplier to Antimatter Dimensions affect Infinity Point gain at a reduced rate`,
+ effect: () => Math.max(1, Currency.infinityPower.value.pow(InfinityDimensions.powerConversionRate).log10() / 100),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
+ },
+ {
+ id: 15,
+ name: "Kohler Infinity Upgrade 15",
+ cost: 1e300,
+ description: () => `???`
}
];
diff --git a/src/core/secret-formula/mending/matter-upgrades.js b/src/core/secret-formula/mending/matter-upgrades.js
index c02a62cff..53def6276 100644
--- a/src/core/secret-formula/mending/matter-upgrades.js
+++ b/src/core/secret-formula/mending/matter-upgrades.js
@@ -18,10 +18,10 @@ const rebuyable = props => {
}
return Math.pow(effect, player.infinity.matterRebuyables[props.id]);
}
- props.description = () => props.textTemplate.replace("{value}", formatInt(effect));
+ props.description = () => props.textTemplate.replace("{value}", format(effect, 2, 2));
props.formatEffect = value => {
- /*if (props.id === 6 || props.id === 16) return effectType + `${formatInt(value)}`
- if (props.id === 11) return effectType + `${formatFloat(value, 3)}`*/
+ if (props.id === 2) return effectType + `${format(value, 2, 2)}`
+ /*if (props.id === 11) return effectType + `${formatFloat(value, 3)}`*/
return effectType + `${format(value, 2, 0)}`
};
props.formatCost = value => format(value, 2, 0);
@@ -32,20 +32,20 @@ export const matterUpgrades = [
rebuyable({
id: 1,
name: "Matter Upgrade 1",
- initialCost: 1e300,
- costMult: 1e300,
- textTemplate: `[TBD]`,
- effect: 1,
+ initialCost: 100,
+ costMult: 1e3,
+ textTemplate: `Multiply Matter gain by {value} in Infinity Challenge 9`,
+ effect: 2,
effectType: "×"
}),
rebuyable({
id: 2,
name: "Matter Upgrade 2",
- initialCost: 1e300,
- costMult: 1e300,
- textTemplate: `[TBD]`,
- effect: 1,
- effectType: "×"
+ initialCost: 1e8,
+ costMult: 1e4,
+ textTemplate: `Raise Matter gain by {value}`,
+ effect: 1.05,
+ effectType: "^"
}),
rebuyable({
id: 3,
@@ -77,30 +77,46 @@ export const matterUpgrades = [
{
id: 6,
name: "Matter Upgrade 6",
- cost: 1e300,
- description: () => `???`,
+ cost: 1e5,
+ description: () => `Best Matter in Infinity Challenge 9 boosts Infinity Point gain`,
+ effect: () => Math.max(1, player.records.bestMatterinIC9.log10() * 10),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
},
{
id: 7,
name: "Matter Upgrade 7",
- cost: 1e300,
- description: () => `???`,
+ cost: 1e6,
+ description: () => `Matter gain is boosted based on Infinity Challenge 1 reward`,
+ effect: () => InfinityChallenge(1).reward.config.effect().times(10),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
},
{
id: 8,
name: "Matter Upgrade 8",
- cost: 1e300,
- description: () => `???`,
+ cost: 5e6,
+ description: () => `Best Matter in IC9 boosts Infinity Dimension multiplier`,
+ effect: () => player.records.bestMatterinIC9.clampMin(1),
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
},
{
id: 9,
name: "Matter Upgrade 9",
- cost: 1e300,
- description: () => `???`,
- }, {
+ cost: 2.5e7,
+ description: () => `1st Antimatter Dimension multiplier boosts Matter gain`,
+ effect: () => AntimatterDimension(1).multiplier.clampMin(1).log10() / 10,
+ effectType: "×",
+ formatEffect: value => formatX(value, 2, 2)
+ },
+ {
id: 10,
name: "Matter Upgrade 10",
- cost: 1e300,
- description: () => `???`,
+ cost: 1e9,
+ description: () => `Best Matter in IC9 boosts Antimatter Exponent`,
+ effect: () => 1 + (player.records.bestMatterinIC9.log10() / 50),
+ effectType: "^",
+ formatEffect: value => formatPow(value, 2, 2)
},
];
diff --git a/src/core/storage/migrations.js b/src/core/storage/migrations.js
index ab942db61..1ab6242a8 100644
--- a/src/core/storage/migrations.js
+++ b/src/core/storage/migrations.js
@@ -813,7 +813,8 @@ export const migrations = {
3: 0,
4: 0,
5: 0,
- }
+ },
+ player.records.bestMatterinIC9 = DC.D0;
},
51.300: player => {
// This is code that should be enabled on release. Do not enable it earlier. All previous migrations should be shifted up 0.3 on release.
diff --git a/src/game.js b/src/game.js
index 06920e56a..a9cfa71b2 100644
--- a/src/game.js
+++ b/src/game.js
@@ -155,7 +155,10 @@ export function gainedInfinityPoints(noSoftcap = false) {
if (Kohler.isRunning) {
ip = new Decimal(ip.clampMin(1).log10());
ip = ip.timesEffectsOf(
- KohlerInfinityUpgrade(1)
+ KohlerInfinityUpgrade(1),
+ MatterUpgrade(6),
+ KohlerInfinityUpgrade(12),
+ KohlerInfinityUpgrade(14)
)
}
return ip.floor();