mirror of
https://github.com/thepaperpilot/Advent-Incremental.git
synced 2025-03-31 21:11:02 +00:00
Implemented metal mastery
This commit is contained in:
parent
f9cca20a14
commit
98a8681711
1 changed files with 51 additions and 30 deletions
|
@ -49,6 +49,9 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
const ore = createResource<DecimalSource>(0, "ore");
|
const ore = createResource<DecimalSource>(0, "ore");
|
||||||
const bestOre = trackBest(ore);
|
const bestOre = trackBest(ore);
|
||||||
|
|
||||||
|
const lastOreGained = ref<DecimalSource>(0);
|
||||||
|
const lastOreSmelted = ref<DecimalSource>(0);
|
||||||
|
|
||||||
const orePurity = createSequentialModifier(() => [
|
const orePurity = createSequentialModifier(() => [
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: 5,
|
multiplier: 5,
|
||||||
|
@ -94,23 +97,17 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: () => Decimal.add(oil.buildHeavy.amount.value, 1).sqrt(),
|
multiplier: () => Decimal.add(oil.buildHeavy.amount.value, 1).sqrt(),
|
||||||
description: "Joy Level 4",
|
description: "Joy Level 4",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.smallfireElfTraining.milestones[3].earned
|
||||||
management.elfTraining.smallfireElfTraining.milestones[3].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: () => Decimal.add(management.schools.amount.value, 1),
|
multiplier: () => Decimal.add(management.schools.amount.value, 1),
|
||||||
description: "Twinkle Level 1",
|
description: "Twinkle Level 1",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.metalElfTraining.milestones[0].earned
|
||||||
management.elfTraining.metalElfTraining.milestones[0].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createExponentialModifier(() => ({
|
createExponentialModifier(() => ({
|
||||||
exponent: 1.1,
|
exponent: 1.1,
|
||||||
description: "Mary Level 2",
|
description: "Mary Level 2",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.heatedPlanterElfTraining.milestones[1].earned
|
||||||
management.elfTraining.heatedPlanterElfTraining.milestones[1].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
}))
|
}))
|
||||||
]);
|
]);
|
||||||
const computedOrePurity = computed(() => orePurity.apply(0.1));
|
const computedOrePurity = computed(() => orePurity.apply(0.1));
|
||||||
|
@ -124,23 +121,17 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
createExponentialModifier(() => ({
|
createExponentialModifier(() => ({
|
||||||
exponent: 1.1,
|
exponent: 1.1,
|
||||||
description: "Joy Level 5",
|
description: "Joy Level 5",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.smallfireElfTraining.milestones[4].earned
|
||||||
management.elfTraining.smallfireElfTraining.milestones[4].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createExponentialModifier(() => ({
|
createExponentialModifier(() => ({
|
||||||
exponent: 1.1,
|
exponent: 1.1,
|
||||||
description: "Faith Level 5",
|
description: "Faith Level 5",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.bonfireElfTraining.milestones[4].earned
|
||||||
management.elfTraining.bonfireElfTraining.milestones[4].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createExponentialModifier(() => ({
|
createExponentialModifier(() => ({
|
||||||
exponent: 1.1,
|
exponent: 1.1,
|
||||||
description: "Snowball Level 5",
|
description: "Snowball Level 5",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.kilnElfTraining.milestones[4].earned
|
||||||
management.elfTraining.kilnElfTraining.milestones[4].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: 2,
|
multiplier: 2,
|
||||||
|
@ -166,17 +157,13 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: () => Decimal.div(management.totalElfExp.value, 1e6).add(1).sqrt(),
|
multiplier: () => Decimal.div(management.totalElfExp.value, 1e6).add(1).sqrt(),
|
||||||
description: "Mary Level 5",
|
description: "Mary Level 5",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.heatedPlanterElfTraining.milestones[4].earned
|
||||||
management.elfTraining.heatedPlanterElfTraining.milestones[4].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: () =>
|
multiplier: () =>
|
||||||
Decimal.pow(1.25, management.elfTraining.metalElfTraining.level.value),
|
Decimal.pow(1.25, management.elfTraining.metalElfTraining.level.value),
|
||||||
description: "Twinkle Level 2",
|
description: "Twinkle Level 2",
|
||||||
enabled: () =>
|
enabled: management.elfTraining.metalElfTraining.milestones[1].earned
|
||||||
management.elfTraining.metalElfTraining.milestones[1].earned.value &&
|
|
||||||
!main.isMastery.value
|
|
||||||
})),
|
})),
|
||||||
createMultiplicativeModifier(() => ({
|
createMultiplicativeModifier(() => ({
|
||||||
multiplier: () =>
|
multiplier: () =>
|
||||||
|
@ -191,6 +178,11 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
multiplier: wrappingPaper.boosts.jazzy1,
|
multiplier: wrappingPaper.boosts.jazzy1,
|
||||||
description: "Jazzy Wrapping Paper",
|
description: "Jazzy Wrapping Paper",
|
||||||
enabled: computed(() => Decimal.gt(wrappingPaper.boosts.jazzy1.value, 1))
|
enabled: computed(() => Decimal.gt(wrappingPaper.boosts.jazzy1.value, 1))
|
||||||
|
})),
|
||||||
|
createAdditiveModifier(() => ({
|
||||||
|
addend: () => Decimal.sub(lastOreGained.value, lastOreSmelted.value).max(0),
|
||||||
|
description: "Metal Decoration",
|
||||||
|
enabled: masteryEffectActive
|
||||||
}))
|
}))
|
||||||
]);
|
]);
|
||||||
const computedAutoSmeltSpeed = computed(() => autoSmeltSpeed.apply(0));
|
const computedAutoSmeltSpeed = computed(() => autoSmeltSpeed.apply(0));
|
||||||
|
@ -327,6 +319,14 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
),
|
),
|
||||||
description: "100 Letters Processed",
|
description: "100 Letters Processed",
|
||||||
enabled: letters.milestones.autoSmeltingMilestone.earned
|
enabled: letters.milestones.autoSmeltingMilestone.earned
|
||||||
|
})),
|
||||||
|
createAdditiveModifier(() => ({
|
||||||
|
addend: () =>
|
||||||
|
Decimal.sub(lastOreSmelted.value, lastOreGained.value)
|
||||||
|
.max(0)
|
||||||
|
.div(computedOreAmount.value),
|
||||||
|
description: "Metal Decoration",
|
||||||
|
enabled: masteryEffectActive
|
||||||
}))
|
}))
|
||||||
]);
|
]);
|
||||||
const computedOreSpeed = computed(() => oreSpeed.apply(Decimal.recip(maxOreProgress)));
|
const computedOreSpeed = computed(() => oreSpeed.apply(Decimal.recip(maxOreProgress)));
|
||||||
|
@ -336,7 +336,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
width: 400,
|
width: 400,
|
||||||
height: 25,
|
height: 25,
|
||||||
direction: Direction.Right,
|
direction: Direction.Right,
|
||||||
fillStyle: { backgroundColor: color },
|
fillStyle: { backgroundColor: color, transitionDuration: "0s" },
|
||||||
progress: () => oreProgress.value
|
progress: () => oreProgress.value
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
@ -583,6 +583,17 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const oreGained = Decimal.sub(
|
||||||
|
Decimal.times(computedOreSpeed.value, computedOreAmount.value),
|
||||||
|
Decimal.sub(lastOreSmelted.value, lastOreGained.value).max(0)
|
||||||
|
);
|
||||||
|
const oreSmelted = Decimal.sub(
|
||||||
|
computedAutoSmeltSpeed.value,
|
||||||
|
Decimal.sub(lastOreGained.value, lastOreSmelted.value).max(0)
|
||||||
|
);
|
||||||
|
lastOreGained.value = Decimal.isNaN(oreGained) ? 0 : oreGained;
|
||||||
|
lastOreSmelted.value = Decimal.isNaN(oreSmelted) ? 0 : oreSmelted;
|
||||||
|
|
||||||
oreProgress.value = Decimal.times(diff, computedOreSpeed.value).plus(oreProgress.value);
|
oreProgress.value = Decimal.times(diff, computedOreSpeed.value).plus(oreProgress.value);
|
||||||
const oreGain = oreProgress.value.trunc();
|
const oreGain = oreProgress.value.trunc();
|
||||||
oreProgress.value = oreProgress.value.minus(oreGain);
|
oreProgress.value = oreProgress.value.minus(oreGain);
|
||||||
|
@ -603,7 +614,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
base: 0,
|
base: 0,
|
||||||
unit: "/s",
|
unit: "/s",
|
||||||
visible() {
|
visible() {
|
||||||
return Decimal.gt(industrialCrucible.amount.value, 0);
|
return Decimal.gt(industrialCrucible.amount.value, 0) || masteryEffectActive.value;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -703,6 +714,13 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
<>
|
<>
|
||||||
{render(trackerDisplay)}
|
{render(trackerDisplay)}
|
||||||
<Spacer />
|
<Spacer />
|
||||||
|
{masteryEffectActive.value ? (
|
||||||
|
<>
|
||||||
|
Decoration effect: The lesser of ore mining amount x speed and auto smelting
|
||||||
|
speed is increased to match the greater
|
||||||
|
<Spacer />
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
<MainDisplay
|
<MainDisplay
|
||||||
resource={metal}
|
resource={metal}
|
||||||
color={color}
|
color={color}
|
||||||
|
@ -711,7 +729,8 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
productionDisplay={jsx(() => (
|
productionDisplay={jsx(() => (
|
||||||
<>
|
<>
|
||||||
{autoSmeltEnabled.value &&
|
{autoSmeltEnabled.value &&
|
||||||
Decimal.gte(industrialCrucible.amount.value, 1)
|
(Decimal.gte(industrialCrucible.amount.value, 1) ||
|
||||||
|
masteryEffectActive.value)
|
||||||
? `+${formatLimit(
|
? `+${formatLimit(
|
||||||
[
|
[
|
||||||
[computedAutoSmeltSpeed.value, "smelting speed"],
|
[computedAutoSmeltSpeed.value, "smelting speed"],
|
||||||
|
@ -733,7 +752,7 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
/>
|
/>
|
||||||
<Spacer />
|
<Spacer />
|
||||||
{render(smeltOreButton)}
|
{render(smeltOreButton)}
|
||||||
{Decimal.gte(industrialCrucible.amount.value, 1) ? (
|
{Decimal.gte(industrialCrucible.amount.value, 1) || masteryEffectActive.value ? (
|
||||||
<div style={{ width: "150px" }}>
|
<div style={{ width: "150px" }}>
|
||||||
<Toggle
|
<Toggle
|
||||||
title="Auto Smelt"
|
title="Auto Smelt"
|
||||||
|
@ -775,8 +794,10 @@ const layer = createLayer(id, function (this: BaseLayer) {
|
||||||
minimizedDisplay: jsx(() => (
|
minimizedDisplay: jsx(() => (
|
||||||
<div>
|
<div>
|
||||||
{name}{" "}
|
{name}{" "}
|
||||||
<span class="desc">{format(metal.value)} {metal.displayName}</span>
|
<span class="desc">
|
||||||
</div>
|
{format(metal.value)} {metal.displayName}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
)),
|
)),
|
||||||
mastery,
|
mastery,
|
||||||
mastered
|
mastered
|
||||||
|
|
Loading…
Add table
Reference in a new issue