Components

All components must be ItemClasses. Any Item that inherits from those classes directly can be used as this component. Adding support for a top-level ItemClass component that is more than one level up from an Item is on the cards in a future release but was deemed too complex for this iteration.

Each Component requires an amount of that type, and a condition. The allowable conditions are:

pub enum ComponentCondition {
    Consumed,
    Presence,
    // Specifically, mint.supply == 0.
    Absence,
    Cooldown,
    CooldownAndConsume,
}

When Cooldown or CooldownAndConsume are used, the use_usage_index field is looked at to figure out what ItemUsageState to check in the given itemโ€™s usage state array to use when looking to see if the Item is on cooldown or not. In this way you can require a user to first bring an item to cooldown through a use before allowing it to be used as a crafting component.

When Consume or CooldownAndConsume are used, the item is destroyed if used as a component here.

Time_to_build should be the same across all components in a component_scope, and will be used (in seconds) to determine how long to force the user to wait once they enter the build phase for creating an item. A component_scope is an arbitrary grouping of components so that multiple component recipes can be stored in the same array without nesting.

Last updated