Skip to content
On this page

Module: features/conversion

Interfaces

Type Aliases

Conversion

Ƭ Conversion<T>: Replace<T & BaseConversion, { actualGain: GetComputableTypeWithDefault<T["actualGain"], Ref<DecimalSource>> ; buyMax: GetComputableTypeWithDefault<T["buyMax"], true> ; currentAt: GetComputableTypeWithDefault<T["currentAt"], Ref<DecimalSource>> ; currentGain: GetComputableTypeWithDefault<T["currentGain"], Ref<DecimalSource>> ; nextAt: GetComputableTypeWithDefault<T["nextAt"], Ref<DecimalSource>> ; roundUpCost: GetComputableTypeWithDefault<T["roundUpCost"], true> ; spend: undefined extends T["spend"] ? (amountGained: DecimalSource) => void : T["spend"] }>

An object that converts one Resource into another at a given rate.

Type parameters

NameType
Textends ConversionOptions

Defined in

profectus/src/features/conversion.ts:103


GenericConversion

Ƭ GenericConversion: Replace<Conversion<ConversionOptions>, { actualGain: ProcessedComputable<DecimalSource> ; buyMax: ProcessedComputable<boolean> ; currentAt: ProcessedComputable<DecimalSource> ; currentGain: ProcessedComputable<DecimalSource> ; nextAt: ProcessedComputable<DecimalSource> ; roundUpCost: ProcessedComputable<boolean> ; spend: (amountGained: DecimalSource) => void }>

A type that matches any valid Conversion object.

Defined in

profectus/src/features/conversion.ts:117

Functions

addHardcap

addHardcap(scaling, cap): ScalingFunction

Creates a scaling function off an existing function, with a hardcap applied to it. The harcap will ensure that the currentGain will stop at a given cap.

Parameters

NameTypeDescription
scalingScalingFunctionThe raw scaling function.
capProcessedComputable<DecimalSource>The maximum value the scaling function can output.

Returns

ScalingFunction


addSoftcap

addSoftcap(scaling, cap, power?): ScalingFunction

Creates a scaling function based off an existing scaling function, with a softcap applied to it. The softcap will take any value above a certain value and raise it to a power. If the power is <1, this will effectively make the value scale slower after the cap.

See

softcap.

Parameters

NameTypeDefault valueDescription
scalingScalingFunctionundefinedThe raw scaling function.
capProcessedComputable<DecimalSource>undefinedThe value after which the softcap should be applied.
powerProcessedComputable<DecimalSource>0.5The power to raise value about the cap to.

Returns

ScalingFunction


createConversion

createConversion<T>(optionsFunc): Conversion<T>

Lazily creates a conversion with the given options. You typically shouldn't use this function directly. Instead use one of the other conversion constructors, which will then call this.

See

Type parameters

NameType
Textends ConversionOptions

Parameters

NameTypeDescription
optionsFuncOptionsFunc<T, BaseConversion, GenericConversion>Conversion options.

Returns

Conversion<T>


createCumulativeConversion

createCumulativeConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that simply adds to the gainResource amount upon converting. This is similar to the behavior of "normal" layers in The Modding Tree. This is equivalent to just calling createConversion directly.

Type parameters

NameType
Sextends ConversionOptions

Parameters

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Conversion options.

Returns

Conversion<S>


createIndependentConversion

createIndependentConversion<S>(optionsFunc): Conversion<S>

Creates a conversion that will replace the gainResource amount with the new amount upon converting. This is similar to the behavior of "static" layers in The Modding Tree.

Type parameters

NameType
Sextends ConversionOptions

Parameters

NameTypeDescription
optionsFuncOptionsFunc<S, BaseConversion, GenericConversion>Converison options.

Returns

Conversion<S>


createLinearScaling

createLinearScaling(base, coefficient): ScalingFunction

Creates a scaling function based off the formula (baseResource - base) * coefficient. If the baseResource value is less than base then the currentGain will be 0.

Example

A scaling function created via createLinearScaling(10, 0.5) would produce the following values:

Base ResourceCurrent Gain
101
122
206

Parameters

NameTypeDescription
baseComputable<DecimalSource>The base variable in the scaling formula.
coefficientComputable<DecimalSource>The coefficient variable in the scaling formula.

Returns

ScalingFunction


createPolynomialScaling

createPolynomialScaling(base, exponent): ScalingFunction

Creates a scaling function based off the formula (baseResource / base) ^ exponent. If the baseResource value is less than base then the currentGain will be 0.

Example

A scaling function created via createPolynomialScaling(10, 0.5) would produce the following values:

Base ResourceCurrent Gain
101
402
2505

Parameters

NameTypeDescription
baseComputable<DecimalSource>The base variable in the scaling formula.
exponentComputable<DecimalSource>The exponent variable in the scaling formula.

Returns

ScalingFunction


setupPassiveGeneration

setupPassiveGeneration(layer, conversion, rate?, cap?): void

This will automatically increase the value of conversion.gainResource without lowering the value of the input resource. It will by default perform 100% of a conversion's currentGain per second. If you use a ref for the rate you can set it's value to 0 when passive generation should be disabled.

Parameters

NameTypeDefault valueDescription
layerBaseLayerundefinedThe layer this passive generation will be associated with. Typically this when calling this function from inside a layer's options function.
conversionGenericConversionundefinedThe conversion that will determine how much generation there is.
rateComputable<DecimalSource>1A multiplier to multiply against the conversion's currentGain.
capComputable<null | DecimalSource>nullA value that should not be passed via passive generation. If null, no cap is applied.

Returns

void


softcap

softcap(value, cap, power?): DecimalSource

Given a value, this function finds the amount above a certain value and raises it to a power. If the power is <1, this will effectively make the value scale slower after the cap.

Example

A softcap added via addSoftcap(scaling, 100, 0.5) would produce the following values:

Raw ValueSoftcapped Value
11
100100
125105
200110

Parameters

NameTypeDefault valueDescription
valueDecimalSourceundefinedThe raw value.
capDecimalSourceundefinedThe value after which the softcap should be applied.
powerDecimalSource0.5The power to raise value above the cap to.

Returns

DecimalSource