diff --git a/src/data/layers/management.tsx b/src/data/layers/management.tsx
index 9b2359e..d4e7eb5 100644
--- a/src/data/layers/management.tsx
+++ b/src/data/layers/management.tsx
@@ -75,6 +75,9 @@ const layer = createLayer(id, () => {
}
return elfLevel;
});
+ const totalElfExp = computed(() =>
+ Object.values(elfTraining).reduce((acc, curr) => acc.add(curr.exp.value), new Decimal(0))
+ );
// ------------------------------------------------------------------------------- Upgrades
@@ -169,7 +172,8 @@ const layer = createLayer(id, () => {
createMultiplicativeModifier(() => ({
multiplier: focusMulti,
description: "Focus Multiplier",
- enabled: () => Decimal.gt(focusTime.value, 0) && focusTargets.value[elf.name] == true
+ enabled: () =>
+ Decimal.gt(focusTime.value, 0) && focusTargets.value[elf.name] == true
})),
...modifiers
]);
@@ -390,7 +394,11 @@ const layer = createLayer(id, () => {
createMilestone(() => ({
display: {
requirement: "Jack Level 4",
- effectDisplay: "Oil gain is multiplied based on total elf levels."
+ effectDisplay: jsx(() => (
+ <>
+ Oil gain is multiplied by total elf levels.
+ >
+ ))
},
visibility: () =>
showIf(heatedCutterElfMilestones[2].earned.value && main.day.value >= 13),
@@ -903,8 +911,8 @@ const layer = createLayer(id, () => {
);
}
}
- focusTime.value = Decimal.sub(focusTime.value, diff).max(0)
- focusCooldown.value = Decimal.sub(focusCooldown.value, diff).max(0)
+ focusTime.value = Decimal.sub(focusTime.value, diff).max(0);
+ focusCooldown.value = Decimal.sub(focusCooldown.value, diff).max(0);
if (Decimal.eq(focusTime.value, 0)) {
focusMulti.value = Decimal.pow(
focusMaxMulti.value,
@@ -993,7 +1001,7 @@ const layer = createLayer(id, () => {
function rerollFocusTargets(range: number, count: DecimalSource) {
let x = 0;
focusTargets.value = {};
- const newCount = Decimal.min(count, range)
+ const newCount = Decimal.min(count, range);
while (newCount.gte(x)) {
const roll = Object.values(elfTraining)[Math.floor(Math.random() * range)]?.name ?? "";
if (!focusTargets.value[roll]) {
@@ -1267,6 +1275,7 @@ const layer = createLayer(id, () => {
elfTraining,
totalElfLevels,
+ totalElfExp,
currentShown,
generalTabCollapsed,
diff --git a/src/data/layers/metal.tsx b/src/data/layers/metal.tsx
index c0c06cd..81d0166 100644
--- a/src/data/layers/metal.tsx
+++ b/src/data/layers/metal.tsx
@@ -12,6 +12,7 @@ import { persistent } from "game/persistence";
import { globalBus } from "game/events";
import {
createAdditiveModifier,
+ createExponentialModifier,
createMultiplicativeModifier,
createSequentialModifier
} from "game/modifiers";
@@ -30,6 +31,7 @@ import boxes from "./boxes";
import cloth from "./cloth";
import plastic from "./plastic";
import dyes from "./dyes";
+import management from "./management";
const id = "metal";
const day = 7;
@@ -78,6 +80,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.add(cloth.cloth.value, 1).log10().plus(1),
description: "Glistening Paint",
enabled: dyes.upgrades.redDyeUpg.bought
+ })),
+ createExponentialModifier(() => ({
+ exponent: 1.1,
+ description: "Mary Level 4",
+ enabled: management.elfTraining.heatedPlanterElfTraining.milestones[3].earned
}))
]);
const computedOrePurity = computed(() => orePurity.apply(0.1));
@@ -108,6 +115,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.add(plastic.activeRefinery.value, 1).sqrt(),
description: "De Louvre",
enabled: dyes.upgrades.redDyeUpg2.bought
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => Decimal.div(management.totalElfExp.value, 1000).add(1).sqrt(),
+ description: "Mary Level 5",
+ enabled: management.elfTraining.heatedPlanterElfTraining.milestones[4].earned
}))
]);
const computedAutoSmeltSpeed = computed(() => autoSmeltSpeed.apply(0));
diff --git a/src/data/layers/oil.tsx b/src/data/layers/oil.tsx
index aa7a515..f4636ba 100644
--- a/src/data/layers/oil.tsx
+++ b/src/data/layers/oil.tsx
@@ -35,6 +35,7 @@ import { formatGain } from "util/bignum";
import plastic from "./plastic";
import paper from "./paper";
import dyes from "./dyes";
+import management from "./management";
const id = "oil";
const day = 9;
@@ -247,8 +248,8 @@ const layer = createLayer(id, function (this: BaseLayer) {
Pump that oil from the ground.
- Gain oil based on the number of Heavy buildings active and well
- depth, but coal usage is multiplied by {row2Upgrades[3].bought.value ? 4 : 5}×.
+ Gain oil based on the number of Heavy buildings active and well depth, but coal
+ usage is multiplied by {row2Upgrades[3].bought.value ? 4 : 5}×.
Currently:
@@ -718,6 +719,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => coalEffectiveness.value,
description: "Effectiveness",
enabled: () => Decimal.lt(coalEffectiveness.value, 1)
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => Decimal.sqrt(management.totalElfLevels.value),
+ description: "Jack Level 4",
+ enabled: management.elfTraining.heatedCutterElfTraining.milestones[3].earned
}))
]);
const computedOilSpeed = computed(() => oilSpeed.apply(0));
diff --git a/src/data/layers/plastic.tsx b/src/data/layers/plastic.tsx
index 3e3717e..ddaf7a5 100644
--- a/src/data/layers/plastic.tsx
+++ b/src/data/layers/plastic.tsx
@@ -32,6 +32,7 @@ import boxes from "./boxes";
import metal from "./metal";
import oil from "./oil";
import dyes from "./dyes";
+import management from "./management";
const id = "plastic";
const day = 10;
@@ -66,7 +67,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
resource: metal.metal,
cost() {
const v = new Decimal(this.amount.value);
- return Decimal.pow(1.2, v).times(1e7);
+ let cost = Decimal.pow(1.2, v).times(1e7);
+ if (management.elfTraining.fertilizerElfTraining.milestones[3].earned.value) {
+ cost = Decimal.sub(cost, Decimal.pow(plastic.value, 2)).max(0);
+ }
+ return cost;
},
display: jsx(() => (
<>
@@ -299,11 +304,16 @@ const layer = createLayer(id, function (this: BaseLayer) {
<>
{render(trackerDisplay)}
-
+ }
+ />
{render(buildRefinery)}