diff --git a/src/data/layers/dyes.tsx b/src/data/layers/dyes.tsx
index 581f183..4eb5246 100644
--- a/src/data/layers/dyes.tsx
+++ b/src/data/layers/dyes.tsx
@@ -35,6 +35,7 @@ import management from "./management";
import oil from "./oil";
import paper from "./paper";
import trees from "./trees";
+import toys from "./toys";
interface Dye {
name: string;
@@ -55,7 +56,7 @@ type DyeUpg =
| "blueDyeUpg2"
| "coalUpg";
-export type enumColor = "blue" | "red" | "green" | "yellow" | "purple" | "orange";
+export type enumColor = "red" | "green" | "blue" | "yellow" | "purple" | "orange" | "black";
const id = "dyes";
const day = 11;
@@ -212,6 +213,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
case "red":
case "yellow":
case "blue":
+ case "black":
dyeBook = paper.books.primaryDyeBook;
break;
case "orange":
@@ -487,6 +489,31 @@ const layer = createLayer(id, function (this: BaseLayer) {
],
dyesToReset: []
}),
+ black: createDye({
+ name: "Black Dye",
+ color: "black",
+ key: "a",
+ costs: () => [
+ {
+ base: "1e60",
+ root: 5,
+ res: trees.logs
+ },
+ {
+ base: computed(() => (upgrades.yellowDyeUpg2.bought.value ? "1e17" : "2e17")),
+ root: 2,
+ res: oil.oil
+ }
+ ],
+ listedBoosts: [
+ {
+ visible: true,
+ desc: computed(() => `*${format(boosts.black1.value)} oil gain.`)
+ }
+ ],
+ dyesToReset: [],
+ visibility: () => showIf(toys.milestones.milestone2.earned.value)
+ }),
orange: createDye({
name: "Orange Dye",
color: "orange",
@@ -664,7 +691,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 +715,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 +950,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..d7bb010 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";
@@ -215,6 +216,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.div(paperBuyable.amount.value, 2).add(1),
description: "Printed Labels"
}))
+
]);
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..ffb1f28 100644
--- a/src/data/layers/metal.tsx
+++ b/src/data/layers/metal.tsx
@@ -36,6 +36,7 @@ import paper from "./paper";
import plastic from "./plastic";
import workshop from "./workshop";
import wrappingPaper from "./wrapping-paper";
+import toys from "./toys";
const id = "metal";
const day = 7;
@@ -207,6 +208,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,6 +288,11 @@ 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));
diff --git a/src/data/layers/oil.tsx b/src/data/layers/oil.tsx
index 8f5dcc7..4b5f00c 100644
--- a/src/data/layers/oil.tsx
+++ b/src/data/layers/oil.tsx
@@ -40,6 +40,7 @@ import management from "./management";
import workshop from "./workshop";
import { WithRequired } from "util/common";
import { ElfBuyable } from "./elves";
+import toys from "./toys";
const id = "oil";
const day = 9;
@@ -874,6 +875,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",
@@ -942,6 +948,15 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: 2,
description: "Cocoa Level 3",
enabled: management.elfTraining.oilElfTraining.milestones[2].earned
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: () => dyes.boosts.black1.value,
+ description: "Black Dye Boost"
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: 50,
+ description: "350 toys",
+ enabled: toys.milestones.milestone4.earned.value
}))
]) as WithRequired
;
const computedOilSpeed = computed(() => oilSpeed.apply(0));
diff --git a/src/data/layers/plastic.tsx b/src/data/layers/plastic.tsx
index 170f25c..d8a070c 100644
--- a/src/data/layers/plastic.tsx
+++ b/src/data/layers/plastic.tsx
@@ -36,6 +36,7 @@ import metal from "./metal";
import oil from "./oil";
import paper from "./paper";
import workshop from "./workshop";
+import toys from "./toys";
const id = "plastic";
const day = 10;
@@ -373,6 +374,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
multiplier: () => Decimal.div(buildRefinery.amount.value, 100).add(1),
description: "Tinsel Level 4",
enabled: management.elfTraining.plasticElfTraining.milestones[3].earned
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: 50,
+ description: "350 toys",
+ enabled: toys.milestones.milestone4.earned.value
}))
]);
const computedPlasticGain = computed(() => plasticGain.apply(0));
diff --git a/src/data/layers/styles/day-gradients.css b/src/data/layers/styles/day-gradients.css
index 8a344df..e35a4d3 100644
--- a/src/data/layers/styles/day-gradients.css
+++ b/src/data/layers/styles/day-gradients.css
@@ -47,4 +47,19 @@
#af0000 10px 20px
);
}
+}
+
+@keyframes toys-bar {
+ from {
+ background: 0 0 / 114px 114px repeat repeating-linear-gradient(-45deg,
+ #4bdc13 0 10px,
+ green 10px 20px
+ );
+ }
+ to {
+ background: 114px 0px / 114px 114px repeat repeating-linear-gradient(-45deg,
+ #4bdc13 0 10px,
+ green 10px 20px
+ );
+ }
}
\ No newline at end of file
diff --git a/src/data/layers/toys.tsx b/src/data/layers/toys.tsx
new file mode 100644
index 0000000..f5d9612
--- /dev/null
+++ b/src/data/layers/toys.tsx
@@ -0,0 +1,340 @@
+/**
+ * @module
+ * @hidden
+ */
+import Spacer from "components/layout/Spacer.vue";
+import Modal from "components/Modal.vue";
+import { main } from "data/projEntry";
+import { createBar } from "features/bars/bar";
+import {
+ createCollapsibleMilestones,
+ createCollapsibleModifierSections,
+ setUpDailyProgressTracker
+} from "data/common";
+import { createBuyable, GenericBuyable } from "features/buyable";
+import { createClickable } from "features/clickables/clickable";
+import { jsx, showIf } from "features/feature";
+import { createHotkey } from "features/hotkey";
+import MainDisplay from "features/resources/MainDisplay.vue";
+import { createMilestone } from "features/milestones/milestone";
+import { createResource, Resource } from "features/resources/resource";
+import { createUpgrade } from "features/upgrades/upgrade";
+import { globalBus } from "game/events";
+import { BaseLayer, createLayer } from "game/layers";
+import {
+ createAdditiveModifier,
+ createExponentialModifier,
+ createMultiplicativeModifier,
+ createSequentialModifier,
+ Modifier
+} from "game/modifiers";
+import { noPersist, persistent } from "game/persistence";
+import Decimal, { DecimalSource, format, formatGain, formatLimit, formatWhole } from "util/bignum";
+import { Direction, WithRequired } from "util/common";
+import { render, renderGrid, renderRow } from "util/vue";
+import { computed, ref } from "vue";
+import metal from "./metal";
+import plastic from "./plastic";
+import cloth from "./cloth";
+import trees from "./trees";
+import dyes from "./dyes";
+import paper from "./paper";
+import workshop from "./workshop";
+const id = "toys";
+const day = 17;
+
+const layer = createLayer(id, function (this: BaseLayer) {
+ const name = "Toys";
+ const colorBright = "#4BDC13";
+ const colorDark = "green";
+
+ const clothes = createResource(0, "clothes");
+ const woodenBlocks = createResource(0, " wooden blocks");
+ const trucks = createResource(0, "trucks");
+ const toyGain = createSequentialModifier(() => []);
+ const toySum = createResource(
+ computed(() => Decimal.add(clothes.value, woodenBlocks.value).add(trucks.value)),
+ "toys"
+ );
+
+ const clothesCost = computed(() => {
+ let clothFactor = Decimal.add(1, clothesBuyable.amount.value);
+ if (milestones.milestone1.earned.value) {
+ clothFactor = clothFactor.div(
+ Decimal.div(workshop.foundationProgress.value, 100).floor()
+ );
+ }
+ return {
+ cloth: clothFactor.mul(1e13),
+ dye: clothFactor.mul(2e14)
+ };
+ });
+ const clothesBuyable = createBuyable(() => ({
+ display: jsx(() => (
+ <>
+ Make Clothes
+
+ Click this buyable to make some clothes!
+
+ You have {formatWhole(clothes.value)} clothes.
+
+
+ Costs {format(clothesCost.value.cloth)} cloth and requires{" "}
+ {format(clothesCost.value.dye)} of red, yellow, and blue dye
+
+ >
+ )),
+ canPurchase(): boolean {
+ return (
+ clothesCost.value.cloth.lte(cloth.cloth.value) &&
+ clothesCost.value.dye.lte(dyes.dyes.blue.amount.value) &&
+ clothesCost.value.dye.lte(dyes.dyes.red.amount.value) &&
+ clothesCost.value.dye.lte(dyes.dyes.yellow.amount.value)
+ );
+ },
+ onPurchase() {
+ cloth.cloth.value = Decimal.sub(cloth.cloth.value, clothesCost.value.cloth);
+ this.amount.value = Decimal.add(this.amount.value, 1);
+ clothes.value = this.amount.value;
+ }
+ })) as GenericBuyable;
+ const woodenBlocksCost = computed(() => {
+ let woodFactor = Decimal.add(1, woodenBlocksBuyable.amount.value).pow(5);
+ if (milestones.milestone1.earned.value) {
+ woodFactor = woodFactor.div(
+ Decimal.div(workshop.foundationProgress.value, 100).floor()
+ );
+ }
+ return {
+ wood: woodFactor.mul(1e63)
+ };
+ });
+ const woodenBlocksBuyable = createBuyable(() => ({
+ display: jsx(() => (
+ <>
+ Make Wooden Blocks
+
+ Click this buyable to make some wooden blocks!
+
+ You have {formatWhole(woodenBlocks.value)} wooden blocks.
+
+ Costs {format(woodenBlocksCost.value.wood)} logs
+ >
+ )),
+ canPurchase(): boolean {
+ return woodenBlocksCost.value.wood.lte(trees.logs.value);
+ },
+ onPurchase() {
+ trees.logs.value = Decimal.sub(trees.logs.value, woodenBlocksCost.value.wood);
+ this.amount.value = Decimal.add(this.amount.value, 1);
+ woodenBlocks.value = this.amount.value;
+ }
+ })) as GenericBuyable;
+ const trucksCost = computed(() => {
+ let factor = Decimal.add(1, trucksBuyable.amount.value).pow(3);
+ let plasticFactor = Decimal.add(1, trucksBuyable.amount.value);
+ if (milestones.milestone1.earned.value) {
+ factor = factor.div(Decimal.div(workshop.foundationProgress.value, 100).floor());
+ plasticFactor = plasticFactor.div(
+ Decimal.div(workshop.foundationProgress.value, 100).floor()
+ );
+ }
+ return {
+ metal: factor.mul(1e43),
+ plastic: plasticFactor.mul(1e14)
+ };
+ });
+ const trucksBuyable = createBuyable(() => ({
+ display: jsx(() => (
+ <>
+ Make Trucks
+
+ Click this buyable to make some trucks!
+
+ You have {formatWhole(trucks.value)} trucks.
+
+
+ Costs {format(trucksCost.value.metal)} metal and{" "}
+ {format(trucksCost.value.plastic)} plastic
+
+ >
+ )),
+ canPurchase(): boolean {
+ return (
+ trucksCost.value.metal.lte(metal.metal.value) &&
+ trucksCost.value.plastic.lte(plastic.plastic.value)
+ );
+ },
+ onPurchase() {
+ metal.metal.value = Decimal.sub(metal.metal.value, trucksCost.value.metal);
+ plastic.plastic.value = Decimal.sub(plastic.plastic.value, trucksCost.value.plastic);
+ this.amount.value = Decimal.add(this.amount.value, 1);
+ trucks.value = this.amount.value;
+ }
+ })) 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 cost of making toys is divided by the number of complete workshops you have."
+ },
+ shouldEarn: () => Decimal.gte(toySum.value, 10)
+ }));
+ const milestone2 = createMilestone(() => ({
+ display: {
+ requirement: "100 toys",
+ effectDisplay: "Unlock black dyes."
+ },
+ shouldEarn: () => Decimal.gte(toySum.value, 100)
+ }));
+
+ const milestone3 = createMilestone(() => ({
+ display: {
+ requirement: "200 toys",
+ effectDisplay: "Beach wrapping paper is much more powerful."
+ },
+ shouldEarn: () => Decimal.gte(toySum.value, 200)
+ }));
+ const milestone4 = createMilestone(() => ({
+ display: {
+ requirement: "350 toys",
+ effectDisplay: "Gain 50x oil and plastic."
+ },
+ shouldEarn: () => Decimal.gte(toySum.value, 350)
+ }));
+ const milestones = { milestone1, milestone2, milestone3, milestone4 };
+ const { collapseMilestones, display: milestonesDisplay } =
+ createCollapsibleMilestones(milestones);
+
+ const [generalTab, generalTabCollapsed] = createCollapsibleModifierSections(() => [
+ {
+ title: `Toy Gain`,
+ modifier: toyGain,
+ base: 1,
+ visible: true
+ }
+ ]);
+ const showModifiersModal = ref(false);
+ const modifiersModal = jsx(() => (
+ (showModifiersModal.value = value)}
+ v-slots={{
+ header: () => {name} Modifiers
,
+ body: generalTab
+ }}
+ />
+ ));
+
+ globalBus.on("update", diff => {
+ 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: 500,
+ name,
+ day,
+ background: {
+ gradient: "toys-bar",
+ duration: "15s"
+ },
+ modal: {
+ show: showModifiersModal,
+ display: modifiersModal
+ }
+ });
+
+ return {
+ name,
+ day,
+ color: colorBright,
+ clothes,
+ woodenBlocks,
+ trucks,
+ toySum,
+ totalToys,
+ buyables,
+ row1Upgrades,
+ milestones,
+ generalTabCollapsed,
+ collapseMilestones,
+ minWidth: 700,
+ display: jsx(() => (
+ <>
+ {render(trackerDisplay)}
+
+
+
+
+
+ {renderRow(...buyables)}
+
+ {renderGrid(row1Upgrades)}
+
+ {milestonesDisplay()}
+ >
+ )),
+ minimizedDisplay: jsx(() => (
+
+ {name} - {format(toySum.value)} {"total toys"}
+
+ ))
+ };
+});
+
+export default layer;
diff --git a/src/data/layers/trees.tsx b/src/data/layers/trees.tsx
index 34f2bcc..8bc2497 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;
@@ -540,6 +541,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
description: "Trees Decoration",
enabled: masteryEffectActive
})),
+ createMultiplicativeModifier(() => ({
+ multiplier: 2,
+ description: "Load logs onto trucks",
+ enabled: toys.row1Upgrades[0].bought
+ })),
createExponentialModifier(() => ({
exponent: 1.2,
description: "100% Foundation Completed",
diff --git a/src/data/layers/workshop.tsx b/src/data/layers/workshop.tsx
index 28edfc9..1b6ea38 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,11 @@ 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,
@@ -69,6 +74,16 @@ const layer = createLayer(id, function (this: BaseLayer) {
exponent: 1 / 0.99,
description: "Holly Level 5",
enabled: management.elfTraining.cutterElfTraining.milestones[4].earned
+ })),
+ createExponentialModifier(() => ({
+ exponent: 0.1,
+ description: "Scaling Jump at 1000%",
+ enabled: computed(() => Decimal.gte(foundationProgress.value, 1000))
+ })),
+ createMultiplicativeModifier(() => ({
+ multiplier: 6969, // note: 6969 is a magic number. Don't touch this or it'll self-destruct.
+ description: "Scaling Jump at 1000%",
+ enabled: computed(() => Decimal.gte(foundationProgress.value, 1000))
}))
])
}));
@@ -98,7 +113,9 @@ 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
)
@@ -110,14 +127,14 @@ const layer = createLayer(id, function (this: BaseLayer) {
if (main.isMastery.value && main.currentlyMastering.value?.name === "Trees") {
return false;
}
- if (
- Decimal.gte(
- foundationProgress.value,
- management.elfTraining.expandersElfTraining.milestones[2].earned.value
- ? 1000
- : 100
- )
- ) {
+ let cap = 100;
+ if (management.elfTraining.expandersElfTraining.milestones[2].earned.value) {
+ cap = 1000;
+ }
+ if (toys.row1Upgrades[2].bought.value) {
+ cap = 1200;
+ }
+ if (Decimal.gte(foundationProgress.value, cap)) {
return false;
}
return true;
@@ -278,6 +295,16 @@ 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 +318,8 @@ const layer = createLayer(id, function (this: BaseLayer) {
extraExpansionMilestone2,
extraExpansionMilestone3,
extraExpansionMilestone4,
- extraExpansionMilestone5
+ extraExpansionMilestone5,
+ extraExpansionMilestone6
};
const { collapseMilestones, display: milestonesDisplay } =
createCollapsibleMilestones(milestones);
diff --git a/src/data/layers/wrapping-paper.tsx b/src/data/layers/wrapping-paper.tsx
index 0622348..9c30853 100644
--- a/src/data/layers/wrapping-paper.tsx
+++ b/src/data/layers/wrapping-paper.tsx
@@ -16,6 +16,7 @@ import { computed, Ref, unref, watchEffect } from "vue";
import { main } from "../projEntry";
import { default as dyes, type enumColor } from "./dyes";
import elves from "./elves";
+import toys from "./toys";
const id = "wrappingPaper";
const day = 15;
@@ -277,7 +278,7 @@ const layer = createLayer(id, () => {
beach1: computed(() =>
main.isMastery.value
? 1
- : Decimal.add(wrappingPaper.beach.buyable.amount.value, 1).log10().add(1)
+ : Decimal.add(wrappingPaper.beach.buyable.amount.value, 1).log10().add(1).pow(toys.milestones.milestone3.earned.value ? 1.6 : 1)
)
};
const wrappingPaperSum = createResource(
diff --git a/src/data/projEntry.tsx b/src/data/projEntry.tsx
index fa376c8..4123930 100644
--- a/src/data/projEntry.tsx
+++ b/src/data/projEntry.tsx
@@ -30,10 +30,11 @@ import metal from "./layers/metal";
import oil from "./layers/oil";
import paper from "./layers/paper";
import plastic from "./layers/plastic";
+import ribbon from "./layers/ribbon";
+import toys from "./layers/toys";
import trees from "./layers/trees";
import workshop from "./layers/workshop";
import wrappingPaper from "./layers/wrapping-paper";
-import ribbon from "./layers/ribbon";
import boxesSymbol from "./symbols/cardboardBox.png";
import clothSymbol from "./symbols/cloth.png";
import coalSymbol from "./symbols/coal.png";
@@ -415,7 +416,7 @@ export const main = createLayer("main", function (this: BaseLayer) {
createDay(() => ({
day: 17,
shouldNotify: false,
- layer: null, // "toys 1"
+ layer: "toys", // "toys1"
symbol: "",
story: "",
completedStory: "",
@@ -424,7 +425,7 @@ export const main = createLayer("main", function (this: BaseLayer) {
createDay(() => ({
day: 18,
shouldNotify: false,
- layer: null, // "toys 2"
+ layer: null, // "toys2"
symbol: "",
story: "",
completedStory: "",
@@ -433,7 +434,7 @@ export const main = createLayer("main", function (this: BaseLayer) {
createDay(() => ({
day: 19,
shouldNotify: false,
- layer: null, // "toys 3"
+ layer: null, // "toys3"
symbol: "",
story: "",
completedStory: "",
@@ -591,7 +592,8 @@ export const getInitialLayers = (
management,
letters,
wrappingPaper,
- ribbon
+ ribbon,
+ toys
];
/**