Modifier
IModifier
, IModifierDataCollection
IModifier
is extended by an Entity that can modify the values of other entities, specifically IModifiable
s. A Modifier (e.g. IUpgradeableCurrency
) must have a IModifierDataCollection
in its static data (e.g. IUpgradeableCurrencyData
), which contains a list of IModifierData
. There are currently three types of IModifiers
in IdleKit:
-
Upgradeable Currency Modifier: modifier associated with an
IUpgradeableCurrency
(e.g. Character cards and Generator cards in TPB). These modifiers remain the same throughout the game and are adjustable inIUpgradeableCurrencyData
. -
Generator Unit Target Modifier: modifier associated with generator payout by increasing the generator units of an
IGeneratorEntity
(e.g. buying Customers in TPB). These modifiers can be different on different Stages and are adjustable inIGeneratorBalanceData
. -
Boost Modifier: modifier associated with an
IBoost
(e.g. video ads in TPB). These modifiers remain the same throughout the game and are adjustable inIBoostData
.
IModifiable
, IModifiableData
IModifiable
is extended by an Entity that can be modified by IModifier
s. A Modifiable (e.g. IGeneratorEntity
) must contain static data that implements IModifiableData
(e.g. IGeneratorData
). There are three types of IModifiable
s currently in IdleKit:
- Collector - payout and speed can be modified
- Generator - generator unit cost, payout, and speed can be modified
- Stage - ascension power can be modified
IModifierData
An IModifierDataCollection
stores a list of IModifierData
. Each IModifierData
stores an array of amounts that can be applied based on the level of the IModifier
. It also stores the targeted IModifierGroupData
id, which determines when and how the modifier is applied.
IModifierGroupData
Each IModifierData
contains an IModifierGroupData
, which is a reusable object that contains logic on how IModifierData
is applied to a value. It contains the mathematical operation
(addition or multiplication) that is applied to all the associated IModifier
.
Tip
For example, consider an IModifier
that has an IModifierDataCollection
, which contains a list of IModifierData
that all target the same IModifierGroupData
. If the operation
of the IModifierGroupData
is "+", the amounts of each IModifierData
in the collection is summed up. This modified value is then used by the IModifierFormula
.
IModifierFormula
, IModifierFormulaData
IModifierFormula
is used to apply numeric logic to groups of IModifier
. IModifierFormulaData
contains the affected IModifiable
types, as well as the actual formula that indicates which mathematical operations are applied to the value from each IModifierGroupData
.
There are currently six IModifierFormula
s in IdleKit:
- AscensionPowerModifierFormula - ModifierFormula that affects the AscensionPower on
IStage
- CollectorPayoutModifierFormula - ModifierFormula that affects the Payout of
ICollectorEntity
- CollectorSpeedModifierFormula - ModifierFormula that affects the Speed of
ICollectorEntity
- GeneratorPayoutModifierFormula - ModifierFormula that affects the Payout of
IGeneratorEntity
- GeneratorSpeedModifierFormula - ModifierFormula that affects the Speed of
IGeneratorEntity
- GeneratorUnitCostModifierFormula - ModifierFormula that affects the Unit Cost of
IGeneratorEntity
IModifierFormulaData.formula = "base * 4 + ( modifierGroupId1 * modifierGroupId2 )"
Tip
The above formula first replaces "base" with a base amount. Then, it collects all IModifierData
entities that target the referenced IModifierGroupData
ids and resolve those amounts down to a single value per IModifierGroupData
. Those values are injected in place of the ids, and the result is a completely numeric formula that can be parsed by IModifierFormulaParser
.
Relationships
Tip
See ModifierService for more information on how it manages and applies logic on Modifier
and Modifiable
entities.