diff --git a/src/data/layers/dyes.tsx b/src/data/layers/dyes.tsx
index 581f183..e6e7fb4 100644
--- a/src/data/layers/dyes.tsx
+++ b/src/data/layers/dyes.tsx
@@ -34,7 +34,13 @@ import { ElfBuyable } from "./elves";
import management from "./management";
import oil from "./oil";
import paper from "./paper";
+<<<<<<< HEAD
import trees from "./trees";
+=======
+import boxes from "./boxes";
+import { ElfBuyable } from "./elves";
+import toys from "./toys"
+>>>>>>> finish balancing toys layer
interface Dye {
name: string;
@@ -55,7 +61,11 @@ type DyeUpg =
| "blueDyeUpg2"
| "coalUpg";
+<<<<<<< HEAD
export type enumColor = "blue" | "red" | "green" | "yellow" | "purple" | "orange";
+=======
+export type enumColor = "red" | "green" | "blue" | "yellow" | "purple" | "orange" | "black";
+>>>>>>> finish balancing toys layer
const id = "dyes";
const day = 11;
@@ -487,6 +497,34 @@ const layer = createLayer(id, function (this: BaseLayer) {
],
dyesToReset: []
}),
+ black: createDye({
+ name: "Black Dye",
+ color: "black",
+ costs: () => [
+ {
+ base: "1e42",
+ root: 5,
+ res: trees.logs
+ },
+ {
+ base: computed(() => (upgrades.yellowDyeUpg2.bought.value ? "1e15" : "2e15")),
+ root: 2,
+ res: oil.oil
+ }
+ ],
+ listedBoosts: [
+ {
+ visible: true,
+ desc: computed(
+ () =>
+ `*${format(
+ boosts.black1.value
+ )} letters processed.`
+ )
+ }
+ ],
+ dyesToReset: []
+ }),
orange: createDye({
name: "Orange Dye",
color: "orange",
@@ -664,7 +702,12 @@ const layer = createLayer(id, function (this: BaseLayer) {
.pow(upgrades.coalUpg.bought.value ? 1.2 : 1)
.pow(management.elfTraining.clothElfTraining.milestones[3].earned.value ? 1.1 : 1)
),
- purple2: computed(() => Decimal.add(dyes.purple.amount.value, 1).log2().plus(1))
+ purple2: computed(() => Decimal.add(dyes.purple.amount.value, 1).log2().plus(1)),
+ black1: computed(() =>
+ Decimal.pow(2, Decimal.add(dyes.black.amount.value, 1).log2().sqrt())
+ .pow(upgrades.coalUpg.bought.value ? 1.2 : 1)
+ .pow(management.elfTraining.clothElfTraining.milestones[3].earned.value ? 1.1 : 1)
+ )
};
const [generalTab, generalTabCollapsed] = createCollapsibleModifierSections(() => [
@@ -683,6 +726,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
modifier: dyes.blue.toGenerate,
base: 0
},
+ {
+ title: "Black Dye Creation",
+ modifier: dyes.black.toGenerate,
+ base: 0
+ },
{
title: "Orange Dye Creation",
modifier: dyes.orange.toGenerate,
@@ -913,6 +961,9 @@ const layer = createLayer(id, function (this: BaseLayer) {
>
) : null}
+ {renderRow(dyes.black.display)}
+ {renderRow(dyes.black.buyable)}
+
{renderRow(dyes.red.display, dyes.yellow.display, dyes.blue.display)}
{renderRow(dyes.red.buyable, dyes.yellow.buyable, dyes.blue.buyable)}
diff --git a/src/data/layers/letters.tsx b/src/data/layers/letters.tsx
index efc5364..22c2272 100644
--- a/src/data/layers/letters.tsx
+++ b/src/data/layers/letters.tsx
@@ -24,6 +24,7 @@ import { createBuyable, GenericBuyable } from "features/buyable";
import metal from "./metal";
import plastic from "./plastic";
import paper from "./paper";
+import dyes from "./dyes";
import SqrtVue from "components/math/Sqrt.vue";
import { globalBus } from "game/events";
import { main } from "data/projEntry";
@@ -214,7 +215,12 @@ const layer = createLayer(id, function (this: BaseLayer) {
createMultiplicativeModifier(() => ({
multiplier: () => Decimal.div(paperBuyable.amount.value, 2).add(1),
description: "Printed Labels"
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => dyes.boosts.black1.value,
+ description: "Black Dye Boost"
}))
+
]);
const computedLettersGain = computed(() => lettersGain.apply(1));
const processingCooldown = createSequentialModifier(() => [
diff --git a/src/data/layers/metal.tsx b/src/data/layers/metal.tsx
index bf9f7c6..6bd90d3 100644
--- a/src/data/layers/metal.tsx
+++ b/src/data/layers/metal.tsx
@@ -35,7 +35,11 @@ import oil from "./oil";
import paper from "./paper";
import plastic from "./plastic";
import workshop from "./workshop";
+<<<<<<< HEAD
import wrappingPaper from "./wrapping-paper";
+=======
+import toys from "./toys";
+>>>>>>> finish balancing toys layer
const id = "metal";
const day = 7;
@@ -207,6 +211,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.add(industrialCrucible.amount.value, 1).sqrt(),
description: "100,000 Letters Processed",
enabled: letters.milestones.industrialCrucibleMilestone.earned
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => Decimal.add(toys.clothes.value, 1),
+ description: "Give elves clothes to wear",
+ enabled: toys.row1Upgrades[1].bought
}))
]);
const computedAutoSmeltMulti = computed(() => autoSmeltMulti.apply(1));
@@ -282,7 +291,12 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.add(dyes.dyes.blue.amount.value, 1).sqrt(),
description: "1000 Letters Processed",
enabled: letters.milestones.miningMilestone.earned
- }))
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => Decimal.add(toys.clothes.value, 1),
+ description: "Give elves clothes to wear",
+ enabled: toys.row1Upgrades[1].bought
+ })),
]);
const computedOreAmount = computed(() => oreAmount.apply(1));
const oreSpeed = createSequentialModifier(() => [
diff --git a/src/data/layers/oil.tsx b/src/data/layers/oil.tsx
index 8f5dcc7..40d2000 100644
--- a/src/data/layers/oil.tsx
+++ b/src/data/layers/oil.tsx
@@ -874,6 +874,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
description: "Cocoa Level 3",
enabled: management.elfTraining.oilElfTraining.milestones[2].earned
})),
+ createMultiplicativeModifier(() => ({
+ multiplier: 4,
+ description: "Workshop 1200%",
+ enabled: workshop.milestones.extraExpansionMilestone6.earned
+ })),
createMultiplicativeModifier(() => ({
multiplier: () => coalEffectiveness.value,
description: "Effectiveness",
diff --git a/src/data/layers/toys.tsx b/src/data/layers/toys.tsx
index 0c5a202..e01bd13 100644
--- a/src/data/layers/toys.tsx
+++ b/src/data/layers/toys.tsx
@@ -160,7 +160,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
- You have {formatWhole(woodenBlocks.value)} wooden blocks.
+ You have {formatWhole(trucks.value)} trucks.
@@ -182,14 +182,51 @@ const layer = createLayer(id, function (this: BaseLayer) {
},
})) as GenericBuyable;
const buyables = [ clothesBuyable, woodenBlocksBuyable, trucksBuyable ];
+ const trucksUpgrade1 = createUpgrade(() => ({
+ resource: noPersist(trucks),
+ cost: 10,
+ display: {
+ title: "Load logs onto trucks",
+ description: "Log gain is doubled."
+ }
+ }))
+ const clothesUpgrade1 = createUpgrade(() => ({
+ resource: noPersist(clothes),
+ cost: 30,
+ display: {
+ title: "Give elves clothes to wear",
+ description: "Multiply ore per mining operation and auto-smelt purity by the number of clothes you have."
+ }
+ }))
+
+ const woodenBlocksUpgrade1 = createUpgrade(() => ({
+ resource: noPersist(woodenBlocks),
+ cost: 15,
+ display: {
+ title: "Build wooden towers",
+ description: "You can now build 2 extra tall workshops!"
+ }
+ }))
+const row1Upgrades = [
+ trucksUpgrade1,
+ clothesUpgrade1,
+ woodenBlocksUpgrade1
+ ];
const milestone1 = createMilestone(() => ({
display: {
requirement: "10 toys",
- effectDisplay: "The number of complete workshops you have divides the cost to make toys."
+ effectDisplay: "The cost of making toys is divided by the number of complete workshops you have."
},
shouldEarn: () => Decimal.gte(toySum.value, 10)
}));
-const milestones = {milestone1}
+ const milestone2 = createMilestone(() => ({
+ display: {
+ requirement: "100 toys",
+ effectDisplay: "Unlock black dyes."
+ },
+ shouldEarn: () => Decimal.gte(toySum.value, 100)
+ }));
+const milestones = {milestone1, milestone2}
const { collapseMilestones, display: milestonesDisplay } =
createCollapsibleMilestones(milestones);
@@ -217,14 +254,22 @@ const { collapseMilestones, display: milestonesDisplay } =
if (Decimal.lt(main.day.value, day)) {
return;
}
-
+ if (Decimal.lt(clothes.value, clothesBuyable.amount.value)){
+ clothesBuyable.amount.value = clothes.value
+ }
+ if (Decimal.lt(woodenBlocks.value, woodenBlocksBuyable.amount.value)){
+ woodenBlocksBuyable.amount.value = woodenBlocks.value
+ }
+ if (Decimal.lt(trucks.value, trucksBuyable.amount.value)){
+ trucksBuyable.amount.value = trucks.value
+ }
});
const { total: totalToys, trackerDisplay } = setUpDailyProgressTracker({
resource: toySum,
- goal: 8e9,
+ goal: 200,
name,
day,
color: colorDark,
@@ -244,6 +289,7 @@ const { collapseMilestones, display: milestonesDisplay } =
toySum,
totalToys,
buyables,
+ row1Upgrades,
milestones,
generalTabCollapsed,
collapseMilestones,
@@ -273,6 +319,8 @@ const { collapseMilestones, display: milestonesDisplay } =
{renderRow(...buyables)}
+ {renderGrid(row1Upgrades)}
+
{milestonesDisplay()}
>
)),
diff --git a/src/data/layers/trees.tsx b/src/data/layers/trees.tsx
index 7583e26..4a5edc1 100644
--- a/src/data/layers/trees.tsx
+++ b/src/data/layers/trees.tsx
@@ -38,6 +38,7 @@ import management from "./management";
import paper from "./paper";
import workshop from "./workshop";
import wrappingPaper from "./wrapping-paper";
+import toys from "./toys";
const id = "trees";
const day = 1;
@@ -536,9 +537,15 @@ const layer = createLayer(id, function (this: BaseLayer) {
enabled: computed(() => Decimal.gt(wrappingPaper.boosts.christmas1.value, 1))
})),
createMultiplicativeModifier(() => ({
+<<<<<<< HEAD
multiplier: () => Decimal.add(computedTotalTrees.value, 1).log10(),
description: "Trees Decoration",
enabled: masteryEffectActive
+=======
+ multiplier: 2,
+ description: "Load logs onto trucks",
+ enabled: toys.row1Upgrades[0].bought
+>>>>>>> finish balancing toys layer
})),
createExponentialModifier(() => ({
exponent: 1.2,
diff --git a/src/data/layers/workshop.tsx b/src/data/layers/workshop.tsx
index 28edfc9..357875b 100644
--- a/src/data/layers/workshop.tsx
+++ b/src/data/layers/workshop.tsx
@@ -33,6 +33,7 @@ import elves from "./elves";
import management from "./management";
import trees from "./trees";
import wrappingPaper from "./wrapping-paper";
+import toys from "./toys"
const id = "workshop";
const day = 2;
@@ -48,7 +49,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
scaling: addHardcap(
addSoftcap(addSoftcap(createPolynomialScaling(250, 1.5), 5423, 1 / 1e10), 1e20, 3e8),
computed(() =>
- management.elfTraining.expandersElfTraining.milestones[2].earned.value ? 1000 : 100
+ toys.row1Upgrades[2].bought ? 1200 : management.elfTraining.expandersElfTraining.milestones[2].earned.value ? 1000 : 100
)
),
baseResource: trees.logs,
@@ -98,11 +99,12 @@ const layer = createLayer(id, function (this: BaseLayer) {
showIf(
Decimal.lt(
foundationProgress.value,
- management.elfTraining.expandersElfTraining.milestones[2].earned.value
+ toys.row1Upgrades[2].bought.value ? 1200 : management.elfTraining.expandersElfTraining.milestones[2].earned.value
? 1000
: 100
)
),
+<<<<<<< HEAD
canClick: () => {
if (Decimal.lt(trees.logs.value, foundationConversion.nextAt.value)) {
return false;
@@ -122,6 +124,14 @@ const layer = createLayer(id, function (this: BaseLayer) {
}
return true;
},
+=======
+ canClick: () =>
+ Decimal.gte(trees.logs.value, foundationConversion.nextAt.value) &&
+ Decimal.lt(
+ foundationProgress.value,
+ toys.row1Upgrades[2].bought.value ? 1200 : management.elfTraining.expandersElfTraining.milestones[2].earned.value ? 1000 : 100
+ ),
+>>>>>>> finish balancing toys layer
onClick() {
if (!unref(this.canClick)) {
return;
@@ -278,6 +288,19 @@ const layer = createLayer(id, function (this: BaseLayer) {
),
showPopups: shouldShowPopups
}));
+ const extraExpansionMilestone6 = createMilestone(() => ({
+ display: {
+ requirement: "1200% Foundation Completed",
+ effectDisplay: "Quadruple oil gain"
+ },
+ shouldEarn: () => Decimal.gte(foundationProgress.value, 1200),
+ visibility: () =>
+ showIf(
+ extraExpansionMilestone5.earned.value &&
+ toys.row1Upgrades[2].bought.value
+ ),
+ showPopups: shouldShowPopups
+ }));
const milestones = {
logGainMilestone1,
autoCutMilestone1,
@@ -291,7 +314,8 @@ const layer = createLayer(id, function (this: BaseLayer) {
extraExpansionMilestone2,
extraExpansionMilestone3,
extraExpansionMilestone4,
- extraExpansionMilestone5
+ extraExpansionMilestone5,
+ extraExpansionMilestone6
};
const { collapseMilestones, display: milestonesDisplay } =
createCollapsibleMilestones(milestones);