mirror of
https://github.com/thepaperpilot/Advent-Incremental.git
synced 2024-11-24 09:21:48 +00:00
attempt at catalysts
This commit is contained in:
parent
20271f880a
commit
7fe120ddaf
1 changed files with 36 additions and 10 deletions
|
@ -847,6 +847,10 @@ const factory = createLayer(id, () => {
|
|||
amount: 2
|
||||
}
|
||||
},
|
||||
catalysts: computed(() => {
|
||||
if (!catalysts.bought.value) return [] as ResourceNames[];
|
||||
return ["block", "clothes", "trucks", "bear", "shovelBucket", "console"];
|
||||
}),
|
||||
canProduce: computed(() => {
|
||||
return Object.values(allToys).some(i =>
|
||||
Decimal.gte(i.value, computedToyMultiplier.value)
|
||||
|
@ -855,6 +859,9 @@ const factory = createLayer(id, () => {
|
|||
onProduce(times, stock) {
|
||||
const value = Object.values(allToys);
|
||||
|
||||
// TODO: use catalysts to multiply present gain
|
||||
// catalysts are essentally excess inputs
|
||||
|
||||
while (times > 0) {
|
||||
while (Decimal.lt(value[toysIndex].value, computedToyMultiplier.value)) {
|
||||
toysIndex = (toysIndex + 1) % value.length;
|
||||
|
@ -1017,9 +1024,13 @@ const factory = createLayer(id, () => {
|
|||
inputs?: Stock;
|
||||
/** amount it produces */
|
||||
outputs?: Stock;
|
||||
catalysts?: ProcessedComputable<ResourceNames[]>;
|
||||
|
||||
/** on produce, do something */
|
||||
onProduce?: (times: number, stock: Stock | undefined) => void;
|
||||
onProduce?: (
|
||||
times: number,
|
||||
stock: Partial<Record<ResourceNames, number>> | undefined
|
||||
) => void;
|
||||
/** can it produce? (in addtion to the stock check) */
|
||||
canProduce?: ComputedRef<boolean>;
|
||||
}
|
||||
|
@ -1266,12 +1277,14 @@ const factory = createLayer(id, () => {
|
|||
title: "Carrying more stuff in boxes",
|
||||
description:
|
||||
"Boxes seem really useful for carrying stuff. Why don't we use them to carry presents as well? Unlocks 2 new rebuyables (one of them is in the boxes layer)."
|
||||
}
|
||||
},
|
||||
visibility: () => showIf(excitmentUpgrade.bought.value)
|
||||
}));
|
||||
const carryBoxes = createBuyable(() => ({
|
||||
resource: noPersist(presents),
|
||||
cost() {
|
||||
return Decimal.add(carryBoxes.amount.value, 1).pow(1.5)
|
||||
return Decimal.add(carryBoxes.amount.value, 1)
|
||||
.pow(1.5)
|
||||
.mul(Decimal.pow(2, carryBoxes.amount.value))
|
||||
.mul(1000);
|
||||
},
|
||||
|
@ -1280,8 +1293,19 @@ const factory = createLayer(id, () => {
|
|||
description:
|
||||
"Presents are made out of boxes, so shouldn't they be able to hold boxes as well? Apparently it makes the boxes more durable. Each level multiplies boxes gain by 1.5.",
|
||||
effectDisplay: jsx(() => <>x{format(Decimal.pow(1.5, carryBoxes.amount.value))}</>)
|
||||
}
|
||||
},
|
||||
visbility: () => showIf(carryPresents.bought.value)
|
||||
})) as GenericBuyable;
|
||||
const catalysts = createUpgrade(() => ({
|
||||
resource: noPersist(presents),
|
||||
cost: 10000,
|
||||
display: {
|
||||
title: "Better Presents",
|
||||
description:
|
||||
"Instead of trying to make more presents, how about we make the ones we make better? Unlocks catalysts for the present maker."
|
||||
},
|
||||
visibility: () => showIf(carryPresents.bought.value)
|
||||
}));
|
||||
const factoryBuyables = { expandFactory, oilFuel, carryToys, carryBoxes };
|
||||
const upgrades = [
|
||||
[
|
||||
|
@ -1399,7 +1423,8 @@ const factory = createLayer(id, () => {
|
|||
visibility: () => showIf(main.days[advancedDay - 1].opened.value)
|
||||
}))
|
||||
],
|
||||
[betterFactory, betterLighting, excitmentUpgrade, carryPresents]
|
||||
[betterFactory, betterLighting, excitmentUpgrade, carryPresents],
|
||||
[catalysts]
|
||||
];
|
||||
|
||||
// pixi
|
||||
|
@ -1508,8 +1533,6 @@ const factory = createLayer(id, () => {
|
|||
|
||||
const factoryTicks = Decimal.times(computedActualTickRate.value, diff).toNumber();
|
||||
|
||||
//debugger
|
||||
// make them produce
|
||||
for (const id in components.value) {
|
||||
const [x, y] = id.split("x").map(p => +p);
|
||||
const _data = components.value[id];
|
||||
|
@ -1572,7 +1595,7 @@ const factory = createLayer(id, () => {
|
|||
if (data.ticksDone >= factoryData.tick) {
|
||||
if (compData.canProduce.value) {
|
||||
const cyclesDone = Math.floor(data.ticksDone / factoryData.tick);
|
||||
factoryData.onProduce?.(cyclesDone, factoryData.inputs);
|
||||
factoryData.onProduce?.(cyclesDone, data.inputStock);
|
||||
if (factoryData.inputs !== undefined) {
|
||||
if (data.inputStock === undefined) data.inputStock = {};
|
||||
for (const [key, val] of Object.entries(factoryData.inputs)) {
|
||||
|
@ -2095,7 +2118,7 @@ const factory = createLayer(id, () => {
|
|||
});
|
||||
|
||||
function showStockAmount(
|
||||
stocks: Partial<Record<ResourceNames, number>> | undefined,
|
||||
stocks: Partial<Record<ResourceNames, number>> | undefined | Record<string, never>,
|
||||
stockData: Stock | undefined,
|
||||
title: string,
|
||||
showAmount = true
|
||||
|
@ -2154,7 +2177,10 @@ const factory = createLayer(id, () => {
|
|||
<>
|
||||
{showStockAmount(
|
||||
(compHovered.value as FactoryComponentProcessor).inputStock,
|
||||
FACTORY_COMPONENTS[compHovered.value.type].inputs,
|
||||
{
|
||||
...(FACTORY_COMPONENTS[compHovered.value.type].inputs ?? {}),
|
||||
...(FACTORY_COMPONENTS[compHovered.value.type].catalysts ?? {})
|
||||
},
|
||||
"Inputs:"
|
||||
)}
|
||||
{showStockAmount(
|
||||
|
|
Loading…
Reference in a new issue