Skip to content

Crucible Package Reference

Andrew Fahlgren edited this page Jan 11, 2023 · 17 revisions

Crucible packages use the Yaml Specification. You can use YAMLLint to validate your yaml files.

This page lists all available package options provided by Crucible on a default installation. Additional mods or plugins can add additional features.

Mod Information

name

The name of your mod. This name can be displayed to the user, so choose something human-friendly.

version

The version of your mod. Version numbers are interpreted with the Semver spec. A good version number should be 3 numbers separated by dots. For example: 5.7.3.

It is important to stick to this method of versioning, so that other mods can properly mark your mod as a dependency.

When updating your mod, choose a number to increment based on your changes.

Patch Changes

For changes that are bug fixes only, do NOT add new features, and do NOT break backwards compatibility, increment the last number: 5.7.3 => 5.7.4

Feature Changes

For changes that add new features, but do NOT break backwards compatibility, increment the second number, and zero out the patch: 5.7.3 => 5.8.0

Breaking Changes

For changes that make the mod incompatible with previous versions (such as removing ingredients or maps), increment the first number and zero out the rest: 5.7.3 => 6.0.0

Dependencies

The dependencies section can be used to indicate that your mod requires a BepInEx plugin to function.

The dependencies key takes an array of dependency objects, each specifying a dependency.

dependencies:
 - bepInExGUID: "RoboPhredDev.PotionCraft.Crucible.Ingredients"

Currently, taking a dependency on another Crucible Package, and specifying required versions, is not supported. These features will be added in the future.

Ingredients

Supplied by plugin: RoboPhredDev.PotionCraft.Crucible.Ingredients

The ingredients property takes an array of Ingredient Items

ingredients:
 - id: my_ingredient
   # ...ingredient properties

Ingredient Items

An ingredient item defines a custom ingredient to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.Ingredients plugin unless otherwise noted.

id

required

Specifies the internal name this ingredient will go by. It can be used by other mods to reference your ingredient.

name

required

The name of your ingredient. This is the name that is displayed to the user when using your ingredient.

This can take two forms.

By setting it to a text value, you can specify the name in all languages:

name: My Ingredient

Or, you can set it to a map of names in different languages:

name:
  en: My Ingredient
  es: Mi ingrediente

description

A description of your ingredient. This is displayed in the tooltip when inspecting the ingredient.

This value can be translated similar to name.

inheritFrom

The ingredient id of a base game ingredient to copy from. The ingredient will be cloned from the base game ingredient, meaning any option you do not specify will be copied from this ingredient. Note: Due to technical reasons, ingredientListIcon is unable to be copied.

Note that this is an ingredient id, not a name. The internal name of the ingredient must be used, which is often not the same as the name the user sees during normal gameplay.

For base game ingredients, the following ids are available:

BloodRuby
Bloodthorn
Boombloom
CloudCrystal
Coldleaf
DragonPepper
DreamBeet
DruidsRosemary
DryadsSaddle
EarthPyrite
EvergreenFern
FableBismuth
Featherbloom
Firebell
FireCitrine
Flameweed
Fluffbloom
FoggyParasol
FrostSapphire
GoblinMushroom
Goldthorn
Goodberry
GraspingRoot
GraveTruffle
HairyBanana
HealersHeather
Icefruit
KrakenMushroom
Lavaroot
LifeCrystal
Lifeleaf
LustMushroom
MadMushroom
Mageberry
MagmaMorel
Marshroom
MossShroom
Mudshroom
PhantomSkirt
PlagueStibnite
Poopshroom
RainbowCap
ShadowChanterelle
Spellbloom
StinkMushroom
SulphurShelf
Tangleweed
Terraria
TerrorBud
Thornstick
ThunderThistle
Waterbloom
Watercap
Weirdshroom
Whirlweed
Windbloom
WitchMushroom

For Crucible-added ingredients, this the id will be <mod_id>.<ingredient_id>.

If left unspecified, "Waterbloom" will be used as the default.

inventoryImage

The image to display in the inventory for your ingredient. This should be the name of a png file inside your mod folder. For best results, the image should be 120px square with a transparent background. Larger or smaller images will not be scaled.

If unspecified, the inventory image of the ingredient specified by inheritFrom is used.

recipeStepImage

The image to be displayed when this ingredient is used in a saved recipe. The image appears on the right hand side of the recipe book when viewing a recipe that uses this ingredient. For best results, this image should be around 70px square with a transparent background, the image should have a sepia filter, and the image content itself should be at most 35px square.

If unspecified, the recipe step image of the ingredient specified by inheritFrom is used.

ingredientListIcon

The image to be used when this ingredient is being displayed in ingredient lists. Such lists are the potion crafting panel in the cauldron room, the ingredients list in a saved recipe, and when viewing the tooltip of a brewed potion. For best results, this image should be trimmed so that the image is exactly as large as the image content, but with a 10% buffer of empty space above and below the image.

If unspecified, the icon will be a red square. Note: For technical reasons, the icons of existing ingredients cannot be copied to new ingredients, so the icon of the ingredient specified by inheritFrom cannot be copied over.

basePrice

The base price of this ingredient. Merchants will use this to calculate the sell and buy price of the ingredient.

If unspecified, the price of the ingredient specified by inheritFrom is used.

path

This property controls the path that the ingredient will apply to the player's potion when used. This property uses the SVG Path format, and supports the H/h (horizontal line), V/v (vertical line), L/l (line), and C/c (cubic bezier curve) commands. Paths can be easily created visually using vector art programs like Inkscape or Adobe Illustrator, or web tools like SvgPathEditor. Keep in mind the limited command set though, as these tools occasionally try to use other unsupported commands.

Note that paths cannot start from anywhere other than the current potion bottle location, and they cannot teleport without leaving a trail. Because of these limitations, the M/m move commands act as L/l line commands.

The path command can take two forms:

# Path specified as text
path: "L 1,3"

or

# Path specifies with transforms
path:
  scaleX: 2
  scaleY: 3
  data: "L 1,3"

The second form allows you to apply scale transformations to your path. This can be useful if you are porting a path previously created for the Pantry custom ingredients mod, which used an upside-down coordinate system. Setting scaleY to -1 will let these paths be used without modification.

grindStartPercent

This value specifies how much of the path is available by default, and how much must be unlocked by grinding the ingredient with the morter. The value must be larger than 0, and less than 1. A value of 0.1 will make 10% of the path be available pre-ground, a value of 0.5 will make 50% of the path be available, and so on.

Note that you cannot use 1 to make an ingredient that does not ever need to be ground, due to the way PotionCraft interprets ingredient paths. You can instead use a value very close to 1, like 0.999.

groundColor

Specifies the color of the ground substance that appears when grinding this ingredient.

This can be a color code in a #rrggbb hexadecimal format, or a map of r, g and b values between 0 and 1.

isTeleportationIngredient

This specifies whether the ingredient makes the potion perform a "teleport" effect, as seen on the crystal ingredients in the base game.

Teleportation effect ingredients will follow the path automatically and without coming into contact with any bones along the path.

stackItems

This property takes an array of objects describing the items that appear when the player drags this ingredient out into the world.

Each stack item has the following properties:

sprite

A file path (relative to this mod's folder) of the sprite to render for this stack item.

collision

SVG path data describing the shape of the hitbox for this item when the item collides against the world (shelves, tables, ground)

This property uses the SVG Path format, and supports the M/m (move) H/h (horizontal line), V/v (vertical line), and L/l (line) commands. Paths can be easily created visually using vector art programs like Inkscape or Adobe Illustrator, or web tools like SvgPathEditor. Keep in mind the limited command set though, as these tools occasionally try to use other unsupported commands.

Note that collision currently only supports making the figure out of straight lines, so the C/c bezier curve commands do not function here.

The value of this property can take two forms: A svg path string, or an object containing the path and scale data:

collision: "M 5,5 L2,3 L3,2"

or

collision:
  data: "M 5,5 L2,3 L3,2"
  scaleX: 0.5
  scaleY: 0.5

selfCollision

SVG path data describing the collision of this item against other stack items, particularly when inside the mortar.

In general, this collision shape should be smaller than the sprite, to allow the stack items to compress up when placed into the mortar and ground.

Otherwise, this option has the same behavior characteristics as collision above.

positionInStack

A vector describing the position of this item when the entire stack of items is being held by the player. When making ingredients that contain multiple items, this is used to position each item relative to the mouse.

It can take the form of a comma seperated string, or an object with x and y values:

positionInStack: 2,3

or

positionInStack:
  x: 2
  y: 3

angleInStack

The angle this item takes when the entire stack of items is being held by the player.

This takes a number that represents the value in degrees.

grindsInto

This takes an array of more stack items. These items will replace the current item when the ingredient is ground in the morter.

Note that you have the option of specifying one or more items. Specifying one item is useful when setting up progressively ground sprites for a single item. Specifying multiple items can be useful when making items that need to split or break into multiple fragments.

This property is recursive, and each object in the array supports all stackItem properties.

isStackItemSolid

If set to true, the stack items will behave as solid objects when being ground in the mortar. Solid items must be crushed with some force, while non solid items smoothly grind as the pestle comes in contact with them.

closenessRequirement

If set to a value greater than 0 this ingredient will only appear in trader's inventories once a certain closeness level has been reached with that trader.

If left unspecified, a value of 0 will be used meaning this ingredient can show up at any level of closeness.

soldBy

Supplied by plugin: RoboPhredDev.PotionCraft.Crucible.NPCs

Specifies one or more npc traders to sell this ingredient.

soldBy:
  - npcTemplateName: "HerbalistNpc 1"
    minCount: 2
    maxCount: 4
    chanceToAppear: 0.4
  - npcTag:
      - SellsOrganic
    minCount: 2
    maxCount: 4
    chanceToAppear: 0.4

The npc to sell the ingredient can be specified in one of two ways: The npc template can be specified directly, or a 'npc tag' can be specified.

NPC Tags

NPC Tags are the recommended way to set up ingredient sales, as they allow your ingredient to be sold by npcs added by other mods, or any future npcs the game may add during development. Each tag corresponds to an attribute an npc may have. Crucible comes with several tags automatically applied to the base game npcs, and mods may define their own custom tags.

The tags that Crucible configures by default are:

SellsHerbs
SellsMushrooms
SellsCrystals
SellsAlchemyMachine
SellsOrganic
SellsInorganic
SellsIngredients
IsHerbalist
IsMushroomer
IsDwarfMiner
IsAlchemist
IsTravelingMerchant
IsGroundhogDayNpc

For example, to make your ingredient be sold by the alchemist after the infinite repeating day has been reached, you can specify:

soldBy:
  npcTag: 
    - IsAlchemist
    - IsGroundhogDayNpc

Or, if you want your ingredient to be sold by anyone who sells crystals:

soldBy:
  npcTag: SellsCrystals

NPC Templates

PotionCraft uses a complex template system to generate its npcs. If you know the name of the specific template of the npc trader you want to sell your ingredient, you can specify it with npcTemplateName.

minCount

The minimum number of items this npc will stock. If the npc decides to stock the item (see chanceToAppear), then the number of items they will have will be between this and maxCount.

maxCount

The maximum number of items this npc will stock. If the npc decides to stock the item (see chanceToAppear), then the number of items they will have will be minCount and this.

chanceToAppear

The percent chance of this item appearing when the npc trader visits. This is in a decimal form; 0.5 is 50%, 1 is 100%.

closenessRequirement

If set to a value greater than 0 this ingredient will only appear in the traders' inventories which are specified by this soldBy node once a certain closeness level has been reached with that trader.

If left unspecified, the default closenessRequirement for the ingredient will be used.

NPCs

Supplied by plugin: RoboPhredDev.PotionCraft.Crucible.NPCs

The customers property takes an array of Customer Items and the traders property takes an array of Trader Items

customers:
 - id: my_customer
   # ...customer properties
traders:
 - id: my_trader
   # ...trader properties

Customer Items

An customer item defines a custom customer to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.NPC plugin unless otherwise noted.

id

required

Specifies the internal name this customer template will go by. It can be used by other mods to reference your customer.

inheritFrom

The customer template name of a base game customer to copy from. The customer will be cloned from the base game customer, meaning any option you do not specify will be copied from this customer.

Your customer will be created from a story customer with unique quests.

For base game story customers, the following template names are available:

Brewer
Fisherman
Guard
MonsterHunter
Witch

For Crucible-added customers, the template name will be <mod_id>.<customer_id>.

If left unspecified, "Brewer" will be used as the default.

maximumCloseness

1-100

Specifies the maximum closeness level that can be acheived with this customer. Each time a player succesfully complete's a customer's quest the closeness level of the customer will rise. Once the maximum closeness is reached this customer will stop spawning.

Effectivly this value will specify the total number of succesful visits for the customer.

Currently the only NPCs which can spawn indefinitely are traders and faction based customers.

If left unspecified, this value will be inherited from the inheritFrom customer.

chanceToAppear

Optional

0-10

Specifies the chance for this customer to appear on any given day. This can be any number greater than 0 but the default for typical plot npcs is 1. This number only comes into play if there are multiple plot/modded customers off cooldown and able to spawn on the same day.

If left unspecified a value of 1 will be used as the default. This will result in a typical spawn rate.

minimumDaysOfCooldown

Optional

1-infinite

Specifies the lower bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as maximumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

maximumDaysOfCooldown

Optional

1-infinite

Specifies the upper bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as minimumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

maximumDaysOfCooldown

Optional

1-infinite

Specifies the upper bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as minimumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

visualMood

Optional

Bad, Normal or Good

Specifies the default visual mood of the customer.

If left unspecified, this value will be inherited from the inheritFrom customer.

gender

Optional

Male or Female

Specifies the gender of the customer. This value is currently used to pick between reactions in some cases.

If left unspecified, this value will be inherited from the inheritFrom customer.

hagglingThemes

Optional

A collection of properties specifing the haggling theme to use at each haggling dificulty level.

Available themes to choose from are:

Alchemy
Alcohol
Assassination
Emotions
Fishing
Food
Herbs
Magic
Minerals
Monsters
Mushrooms
Music
Reading
Terrains
Wealth
Weapons
Weather

If left unspecified, this value will be inherited from the inheritFrom customer.

veryEasyTheme

Required

Specifies the theme used for the very easy haggle difficulty.

easyTheme

Required

Specifies the theme used for the easy haggle difficulty.

mediumTheme

Required

Specifies the theme used for the medium haggle difficulty.

hardTheme

Required

Specifies the theme used for the hardhaggle difficulty.

veryHardTheme

Required

Specifies the theme used for the very hard haggle difficulty.

appearance

A collection of properties controlling the appearance of the customer.

If unspecified, the crucible customer will appear exactly the same as the inherited from customer.

headShape

A collection of properties controlling the appearance of the customer's head shape.

If unspecified, the head shape of the customer specified by inheritFrom is used.

mask

The head shape mask sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

background

The head background sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

contour

The head contour sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

scratches

The scratches background sprite. This should be the name of a png file inside your mod folder. This image should contain the "scratches" which will be overlayed on the head background.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

hairStyle

A collection of properties controlling the appearance of the customer's hair.

If unspecified, the hair of the customer specified by inheritFrom is used.

frontLeft

The frontLeft sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

frontRight

The frontRight sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

back

The back sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

face

A collection of properties controlling the appearance of the customer's face.

If unspecified, the face of the customer specified by inheritFrom is used.

positiveReaction

The positiveReaction sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

negativeReaction

The negativeReaction sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

idle

The idle sprite. This should be the name of a png file inside your mod folder.

If unspecified, not sure...

anger1

The anger1 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

anger2

The anger2 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

happy1

The happy1 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

eyes

A collection of properties controlling the appearance of the customer's eyes.

If unspecified, the eyes of the customer specified by inheritFrom is used.

leftEye

The leftEye sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

rightEye

The rightEye sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

beard

A collection of properties controlling the appearance of the customer's beard.

If unspecified, the beard of the customer specified by inheritFrom is used.

background

The beard background sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

contour

The beard sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

scratches

The scratches background sprite. This should be the name of a png file inside your mod folder. This image should contain the "scratches" which will be overlayed on the beard background.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

body

A collection of properties controlling the appearance of the customer's bace.

If unspecified, the bace of the customer specified by inheritFrom is used.

torso

The torso sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

leftArm

The leftArm sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

rightArm

The rightArm sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

quests

This property takes an array of objects describing each unique quest.

closenessRequirement

required

Ranges from 0 to infinity.

The closeness level required for this quest to appear. Each time a player succesfully complete's a customer's quest the closeness level of the customer will rise. This quest (and corresponding dialogue tree) will only appear once a certain closeness level has been reached.

It is possible to specify a quest/dialogue for every level of closeness or any subset of the total closeness levels. For example if you wanted a customer to have three quests which form a story and then have the customer continue coming in with a repeating quest you could define four quests ranging from closeness level 0-3. You would also need to set a maximumCloseness greater than 3 to allow for more than 3 visits.

quest

required

A collection of properties specifying the non-dialogue details of a quest.

id

Specifies the internal name this quest will go by. This may be useful for debugging your mod in game.

If unspecified an id will be generated for you.

karmaReward

This property specifies the amount of reputation gained/lost on completion of the quest.

If unspecified the corresponding quest from the customer specified by inheritFrom will be used.

desiredEffects

A collection of effect names which can satisfy the quest. This should be the internal name used for this effect. The full list to choose from is here:

Healing
Poison
Fire
Frost
Explosion
WildGrowth
Strength
Dexterity
Swiftness
Lightning
Mana
StoneSkin
Sleep
Light
Charm
Slowness
Rage
MagicalVision
Acid
Libido
Invisibility
Levitation
Necromancy
PoisonProtection
LightningProtection
FireProtection
FrostProtection
Gluing
Slipperiness
Stench
AcidProtection
AntiMagic
Shrinking
Enlargement
Rejuvenation
Inspiration
Fragrance
Fear
Hallucinations
Luck
Curse

For Crucible-added effects, the template name will be <mod_id>.<effect_name>.

If left unspecified, the effects from the corresponding quest from the customer specified by inheritFrom will be used.

subsequentVisitsQuestText

This quest text will be used on subsequent visits if the quest is left uncompleted.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

subsequentVisitsQuestText: Hey, I still need that potion.

Or, you can set it to a map of text in different languages:

subsequentVisitsQuestText:
  en: Hey, I still need that potion.
  es: Oye, todavía necesito esa poción.

generateRandomMandatoryRequirements

This is a property specifying whether or not random mandatory requirements will be generated.

Setting this to false will prevent mandatory requirements from being generated for this customer (outside of your manually specified mandatory requirements).

Setting this to true will compeltely override any mandatory requirements you specify for this quest and allow random mandatory requirements to be generated like for any other quest.

If left unspecified, the value will be set to false.

generateRandomOptionalRequirements

This is a property specifying whether or not random optional requirements will be generated.

Setting this to false will prevent optional requirements from being generated for this customer (outside of your manually specified optional requirements).

Setting this to true will compeltely override any optional requirements you specify for this quest and allow random optional requirements to be generated like for any other quest.

If left unspecified, the value will be set to false.

mandatoryRequirements

This property takes an array of objects describing each mandatory potion requirement.

If left unspecified, mandatory requirements may still be generated depending on how generateRandomMandatoryRequirements is set.

For details on how to specify requirements see: Quest Requirements

optionalRequirements

This property takes an array of objects describing each optional potion requirement.

If left unspecified, optional requirements may still be generated depending on how generateRandomOptionalRequirements is set.

For details on how to specify requirements see: Quest Requirements

Quest Requirements

Each requirement is specified using seperate fields. Some requirements will only require a single field to be specified and some may require two fields to be specified.

additionalEffect

If set to true this property will specify an additional effects requirement.

Example:

optionalRequirements:
  - additionalEffect: true
onlyStrongPotions

If set to true this property will specify a requirement that the potion contain a level 3 effect which satisfies the quest.

Example:

optionalRequirements:
  - onlyStrongPotions: true
onlyWeakPotions

If set to true this property will specify a requirement that the potion contain a level 1 effect which satisfies the quest.

Example:

optionalRequirements:
  - onlyWeakPotions: true
maximumIngredients

Value range: 1-3 If specified this property will specify a requirement that a potion have only n types of different ingredients where n is a value between 1 and 3.

Example:

optionalRequirements:
  - maximumIngredients: 3
ingredientNotAllowed

If specified this property will specify a requirement that a potion not contain a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - ingredientNotAllowed: Waterbloom
needAtleastOneIngredient

If specified this property will specify a requirement that a potion contain at least one of a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - needAtleastOneIngredient: Waterbloom
mainIngredient

If specified this property will specify a requirement that at least half of the potion's ingredients are a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - mainIngredient: Waterbloom

dialogue

required

A collection of properties specifying the full dialogue tree for the customer interaction at this closeness level.

Dialogue is specified in a tree format using dialogue nodes and answers. Dialogue nodes specify some sort of dialogue and a list of answers the player can choose from. Answer nodes specify the text of the answer as well as what happens when that answer is chosen. This can be done by specifying another dialogue node with the nextNode property or by marking it as a isConversationEndAnswer. If neither property is set the answer will simply return to the previous dialogue node.

dialogueText

required A property defining the customer's dialogue text for this dialogue node.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

dialogueText: Hey, I need a potion.

Or, you can set it to a map of text in different languages:

dialogueText:
  en: Hey, I need a potion.
  es: Oye, necesito una poción.

isQuestNode

optional

This is a property specifying whether or not this dialogue node is a quest node. Only one quest node can be specified per dialogue tree.

Setting this to true will treat this dialogue as a quest node. This will mean that only a single answer will be allowed and the scales will be available for a potion to be offered to the customer.

If left unspecified, the first dialogue node will be selected as the quest node. When constructing customers this field is purely optional and only useful if you want to lead the conversation with dialogue instead of starting right off with the quest.

answers

optional

1-4

A collection of properties specifying all possible player responses for this dialogue node.

If left unspecified, a back button will be created for you in cases where a back button is necessary.

Answer nodes specify the text of the answer as well as what happens when that answer is chosen. This can be done by specifying another dialogue node with the nextNode property or by marking it as a isConversationEndAnswer or isBackToBeginningAnswer. If none of these properties are set the answer will simply return to the previous dialogue node.

Only a single answer node may be specified for quest nodes (the first dialogue node by default). On non-quest nodes up to 4 answers can be specified. If none of the 4 answers are back buttons and there is no way back by exploring the dialogue tree the last answer will be removed and a back button will replace it to prevent soft locks.

Note: you do not need to include answer nodes for the default answers for quest nodes. These include:

Give potion Start haggle End dialogue

answerText

required

A property defining the response text for this answer node.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

answerText: Why do you need this potion?

Or, you can set it to a map of text in different languages:

answerText:
  en: Why do you need this potion?
  es: ¿Por qué necesitas esta poción?
nextNode

Optional

A collection of properties which specify a dialogue node. For a full description of the available properties see dialogue

If unspecified this answer will be treated as a back button, going back to the previous node unless isConversationEndAnswer or isBackToBeginningAnswer is specified.

isConversationEndAnswer

Optional

This is a property specifying whether or not this answer node will end the conversation when chosen by the player.

Setting this to true will treat this answer as an end of conversation node.

If left unspecified, the value will be set to false.

isBackToBeginningAnswer

Optional

This is a property specifying whether or not this answer node will work as a back button which returns to the first dialogue node.

Setting this to true will treat this answer as a back to beginning node meaning when this answer is selected the player will be returned to initial dialogue node.

If left unspecified, the value will be set to false.

Trader Items

An trader item defines a custom trader to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.NPC plugin unless otherwise noted.

id

required

Specifies the internal name this trader template will go by. It can be used by other mods to reference your trader.

inheritFrom

The trader template name of a base game trader to copy from. The trader will be cloned from the base game trader, meaning any option you do not specify will be copied from this trader.

For base game traders, the following template names are available:

Herbalist
Mushroomer
Dwarf
WMerchant
Alchemist

For Crucible-added traders, the template name will be <mod_id>.<trader_id>.

If left unspecified, "Herbalist" will be used as the default.

minimumKarmaForSpawn

Optional

-100-100

Specifies the lower bound used when determining if a trader can spawn based on karma (reputation).

If left unspecified, this value will be inherited from the inheritFrom trader.

maximumKarmaForSpawn

Optional

-100-100

Specifies the upper bound used when determining if a trader can spawn based on karma (reputation).

If left unspecified, this value will be inherited from the inheritFrom trader.

unlockAtChapter

Optional

1-10

Specifies the chapter at which this trader unlocks.

If left unspecified, this value will be inherited from the inheritFrom trader.

minimumDaysOfCooldown

Optional

1-infinite

Specifies the lower bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as maximumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

maximumDaysOfCooldown

Optional

1-infinite

Specifies the upper bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as minimumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

maximumDaysOfCooldown

Optional

1-infinite

Specifies the upper bound used when randomizing a customer's cooldown after a visit. If this is set to the same value as minimumDaysOfCooldown the cooldown will be non-random.

If left unspecified, this value will be inherited from the inheritFrom customer.

maximumCloseness

Optional

1-100

Specifies the maximum closeness level that can be acheived with this trader. Each time a player succesfully complete's a trader's quest (or buys/sells when there is no quest) the closeness level of the trader will rise. Raising this can be useful if you want to create more quests or have more visits between quests.

If left unspecified, this value will be inherited from the inheritFrom customer.

dayTimeForSpawn

Optional

0-100

Specifies the time of day the trader will arrive. A value of 0 will cause the trader to appear at the start of the day and a value of 100 will cause the trader to come at the end of the day.

If left unspecified, this value will be inherited from the inheritFrom trader.

gold

Optional

1-infinite

Specifies the amount of gold the trader will have on them when they visit.

If left unspecified, this value will be inherited from the inheritFrom trader. By default this value is 1000.

visualMood

Optional

Bad, Normal or Good

Specifies the default visual mood of the trader.

If left unspecified, this value will be inherited from the inheritFrom trader.

gender

Optional

Male or Female

Specifies the gender of the trader. This value is currently used to pick between reactions in some cases.

If left unspecified, this value will be inherited from the inheritFrom trader.

tags

optional

A collection of internal crucible tags. Custom ingredients can use these tags to add their ingredients to your custom trader.

These are the current tags which are automatically created for base game traders. If any of these tags are added to your trader then custom ingredients which target one of those tags will also be applied to your trader's inventory.

SellsHerbs
SellsMushrooms
SellsCrystals
SellsAlchemyMachine
SellsOrganic
SellsInorganic
SellsIngredients
IsHerbalist
IsMushroomer
IsDwarfMiner
IsAlchemist
IsTravelingMerchant

If left unspecified, the trader will have no tags.

items

A collection of objects which specify the items the trader will sell at each level of closeness.

inventoryItemName

Required

This is the in game name of the item to be sold. This can be the name of any inventory item which includes ingredients, salts, and tradable upgrades (i.e alchemy machine parts and recipe book pages).

You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

This is a full list of the other available inventory item names currently available.

Life Salt
Moon Salt
Philosopher's Salt
Sun Salt
Void Salt
Alchemy Machine Upgrade 1
Alchemy Machine Upgrade 2
Alchemy Machine Upgrade 3
LifeSalt Recipe Upgrade
MoonSalt Recipe Upgrade
PhilosophersSalt Recipe Upgrade
SunSalt Recipe Upgrade
VoidSalt Recipe Upgrade
Oil Upgrade
Wine Upgrade
Recipe Book Slots Upgrade

closenessRequirement

Required 0-maxCloseness

This property specifies the closeness level required for this item to show up in the trader's inventory. It should range from 0 to the maximum trader closeness specified using the maxCloseness property.

chanceToAppear

Required 0-1

This property specifies the chance for this item to appear in the trader's inventory. This is a number between 0 and 1 where 0.5 is equivalent to 50%

minCount

Required 1-infinity

This property specifies the minimum number of an item which can appear in a trader's inventory. If this value is set to the same value as maxCount there will be no randomness to the count of the item if it spawns in the trader's inventory.

maxCount

Required 1-infinity

This property specifies the maximum number of an item which can appear in a trader's inventory. If this value is set to the same value as minCount there will be no randomness to the count of the item if it spawns in the trader's inventory.

hagglingThemes

Optional

A collection of properties specifing the haggling theme to use at each haggling dificulty level.

Available themes to choose from are:

Alchemy
Alcohol
Assassination
Emotions
Fishing
Food
Herbs
Magic
Minerals
Monsters
Mushrooms
Music
Reading
Terrains
Wealth
Weapons
Weather

If left unspecified, this value will be inherited from the inheritFrom customer.

veryEasyTheme

Required

Specifies the theme used for the very easy haggle difficulty.

easyTheme

Required

Specifies the theme used for the easy haggle difficulty.

mediumTheme

Required

Specifies the theme used for the medium haggle difficulty.

hardTheme

Required

Specifies the theme used for the hardhaggle difficulty.

veryHardTheme

Required

Specifies the theme used for the very hard haggle difficulty.

appearance

A collection of properties controlling the appearance of the trader.

If unspecified, the crucible trader will appear exactly the same as the inherited from trader.

headShape

A collection of properties controlling the appearance of the trader's head shape.

If unspecified, the head shape of the trader specified by inheritFrom is used.

mask

The head shape mask sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

background

The head background sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

contour

The head contour sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

scratches

The scratches background sprite. This should be the name of a png file inside your mod folder. This image should contain the "scratches" which will be overlayed on the head background.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

hairStyle

A collection of properties controlling the appearance of the trader's hair.

If unspecified, the hair of the trader specified by inheritFrom is used.

frontLeft

The frontLeft sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

frontRight

The frontRight sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

back

The back sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

face

A collection of properties controlling the appearance of the customer's face.

If unspecified, the face of the customer specified by inheritFrom is used.

positiveReaction

The positiveReaction sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

negativeReaction

The negativeReaction sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

idle

The idle sprite. This should be the name of a png file inside your mod folder.

If unspecified, not sure...

anger1

The anger1 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

anger2

The anger2 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

happy1

The happy1 sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

eyes

A collection of properties controlling the appearance of the trader's eyes.

If unspecified, the eyes of the trader specified by inheritFrom is used.

leftEye

The leftEye sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

rightEye

The rightEye sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

beard

A collection of properties controlling the appearance of the trader's beard.

If unspecified, the beard of the trader specified by inheritFrom is used.

background

The beard background sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

contour

The beard sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

scratches

The scratches background sprite. This should be the name of a png file inside your mod folder. This image should contain the "scratches" which will be overlayed on the beard background.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

body

A collection of properties controlling the appearance of the trader's bace.

If unspecified, the bace of the trader specified by inheritFrom is used.

torso

The torso sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

leftArm

The leftArm sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

rightArm

The rightArm sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

quests

This property takes an array of objects describing each unique quest.

closenessRequirement

required

Ranges from 0 to infinity.

The closeness level required for this quest to appear. Each time a player succesfully complete's a trader's quest or (buy/sell when there is no quest) the closeness level of the trader will rise. This quest (and corresponding dialogue tree) will only appear once a certain closeness level has been reached.

It is possible to specify a quest/dialogue for every level of closeness or any subset of the total closeness levels.

quest

required

A collection of properties specifying the non-dialogue details of a quest.

id

Specifies the internal name this quest will go by. This may be useful for debugging your mod in game.

If unspecified an id will be generated for you.

karmaReward

This property specifies the amount of reputation gained/lost on completion of the quest.

If unspecified the corresponding quest from the customer specified by inheritFrom will be used.

desiredEffects

A collection of effect names which can satisfy the quest. This should be the internal name used for this effect. The full list to choose from is here:

Healing
Poison
Fire
Frost
Explosion
WildGrowth
Strength
Dexterity
Swiftness
Lightning
Mana
StoneSkin
Sleep
Light
Charm
Slowness
Rage
MagicalVision
Acid
Libido
Invisibility
Levitation
Necromancy
PoisonProtection
LightningProtection
FireProtection
FrostProtection
Gluing
Slipperiness
Stench
AcidProtection
AntiMagic
Shrinking
Enlargement
Rejuvenation
Inspiration
Fragrance
Fear
Hallucinations
Luck
Curse

For Crucible-added effects, the template name will be <mod_id>.<effect_name>.

If left unspecified, the effects from the corresponding quest from the customer specified by inheritFrom will be used.

subsequentVisitsQuestText

This quest text will be used on subsequent visits if the quest is left uncompleted.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

subsequentVisitsQuestText: Hey, I still need that potion.

Or, you can set it to a map of text in different languages:

subsequentVisitsQuestText:
  en: Hey, I still need that potion.
  es: Oye, todavía necesito esa poción.

generateRandomMandatoryRequirements

This is a property specifying whether or not random mandatory requirements will be generated.

Setting this to false will prevent mandatory requirements from being generated for this trader (outside of your manually specified mandatory requirements).

Setting this to true will compeltely override any mandatory requirements you specify for this quest and allow random mandatory requirements to be generated like for any other quest.

If left unspecified, the value will be set to false.

generateRandomOptionalRequirements

This is a property specifying whether or not random optional requirements will be generated.

Setting this to false will prevent optional requirements from being generated for this trader (outside of your manually specified optional requirements).

Setting this to true will compeltely override any optional requirements you specify for this quest and allow random optional requirements to be generated like for any other quest.

If left unspecified, the value will be set to false.

mandatoryRequirements

This property takes an array of objects describing each mandatory potion requirement.

If left unspecified, mandatory requirements may still be generated depending on how generateRandomMandatoryRequirements is set.

For details on how to specify requirements see: Quest Requirements

optionalRequirements

This property takes an array of objects describing each optional potion requirement.

If left unspecified, optional requirements may still be generated depending on how generateRandomOptionalRequirements is set.

For details on how to specify requirements see: Quest Requirements

Quest Requirements

Each requirement is specified using seperate fields. Some requirements will only require a single field to be specified and some may require two fields to be specified.

additionalEffect

If set to true this property will specify an additional effects requirement.

Example:

optionalRequirements:
  - additionalEffect: true
onlyStrongPotions

If set to true this property will specify a requirement that the potion contain a level 3 effect which satisfies the quest.

Example:

optionalRequirements:
  - onlyStrongPotions: true
onlyWeakPotions

If set to true this property will specify a requirement that the potion contain a level 1 effect which satisfies the quest.

Example:

optionalRequirements:
  - onlyWeakPotions: true
maximumIngredients

Value range: 1-3 If specified this property will specify a requirement that a potion have only n types of different ingredients where n is a value between 1 and 3.

Example:

optionalRequirements:
  - maximumIngredients: 3
ingredientNotAllowed

If specified this property will specify a requirement that a potion not contain a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - ingredientNotAllowed: Waterbloom
needAtleastOneIngredient

If specified this property will specify a requirement that a potion contain at least one of a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - needAtleastOneIngredient: Waterbloom
mainIngredient

If specified this property will specify a requirement that at least half of the potion's ingredients are a specific ingredient. The value of this property should be set to a valid ingredient id. You can find a full list of valid ingredient ids (and how to reference mod ingredient ids) here.

Example:

optionalRequirements:
  - mainIngredient: Waterbloom

dialogue

required

A collection of properties specifying the full dialogue tree for the trader interaction at this closeness level.

Dialogue is specified in a tree format using dialogue nodes and answers. Dialogue nodes specify some sort of dialogue and a list of answers the player can choose from. Answer nodes specify the text of the answer as well as what happens when that answer is chosen. This can be done by specifying another dialogue node with the nextNode property or by marking it as a isConversationEndAnswer. If neither property is set the answer will simply return to the previous dialogue node.

dialogueText

required A property defining the customer's dialogue text for this dialogue node.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

dialogueText: Hey, I need a potion.

Or, you can set it to a map of text in different languages:

dialogueText:
  en: Hey, I need a potion.
  es: Oye, necesito una poción.

isQuestNode

optional

This is a property specifying whether or not this dialogue node is a quest node. Only one quest node can be specified per dialogue tree.

Setting this to true will treat this dialogue as a quest node. This will mean that only a single answer will be allowed and the scales will be available for a potion to be offered to the trader.

When constructing traders this field will be ignored for the first dialogue node. Traders must start with a regular dialogue node.

If left unspecified for all dialogue nodes, the second dialogue node will be selected as the quest node.

answers

optional

1-4

A collection of properties specifying all possible player responses for this dialogue node.

If left unspecified, a back button will be created for you in cases where a back button is necessary.

Answer nodes specify the text of the answer as well as what happens when that answer is chosen. This can be done by specifying another dialogue node with the nextNode property or by marking it as a isConversationEndAnswer or isBackToBeginningAnswer. If none of these properties are set the answer will simply return to the previous dialogue node.

Only a single answer node may be specified for a quest dialogue node. On non-quest nodes up to 4 answers can be specified. If none of the 4 answers are back buttons and there is no way back by exploring the dialogue tree the last answer will be removed and a back button will replace it to prevent soft locks.

Note: you do not need to include answer nodes for the default answers for quest nodes. These include:

Give potion Start haggle End dialogue

answerText

required

A property defining the response text for this answer node.

This can take two forms.

By setting it to a text value, you can specify the text in all languages:

answerText: Why do you need this potion?

Or, you can set it to a map of text in different languages:

answerText:
  en: Why do you need this potion?
  es: ¿Por qué necesitas esta poción?
nextNode

Optional

A collection of properties which specify a dialogue node. For a full description of the available properties see dialogue

If unspecified this answer will be treated as a back button, going back to the previous node unless isConversationEndAnswer or isBackToBeginningAnswer is specified.

isConversationEndAnswer

Optional

This is a property specifying whether or not this answer node will end the conversation when chosen by the player.

Setting this to true will treat this answer as an end of conversation node.

If left unspecified, the value will be set to false.

isBackToBeginningAnswer

Optional

This is a property specifying whether or not this answer node will work as a back button which returns to the first dialogue node.

Setting this to true will treat this answer as a back to beginning node meaning when this answer is selected the player will be returned to initial dialogue node.

If left unspecified, the value will be set to false.

Potion Bottles

Supplied by plugin: RoboPhredDev.PotionCraft.Crucible.PotionBottles

The potionBottles property takes an array of Potion Bottle Items. The potionBottleStickers property takes an array of Potion Bottle Sticker Items The potionBottleIcons property takes an array of Potion Bottle Icon Items

potionBottles:
 - id: my_potion_bottle
   # ...potion bottle properties
potionBottleStickers:
 - id: my_sticker
   # ...sticker properties
potionBottleIcons:
 - id: my_icon
   # ...icon properties

Potion Bottle Items

A potion bottle item defines a custom potion bottle to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.PotionBottles plugin unless otherwise noted.

id

required

Specifies the internal name this potion bottle will go by. It can be used by other mods to reference your potion bottle.

bottleIcon

The potion bottle icon sprite which will be shown in the potion bottle list when customizing a potion. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleForeground

The potion bottle foreground sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleScratches

The potion bottle scratches sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleShadows

The potion bottle shadows sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleCork

The potion bottle cork sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleMask

The potion bottle mask sprite. This should be the name of a png file inside your mod folder. The png should have a black background and a transparent cuttout representing the shape of your potion bottle. This sprite is used to mask labels and icons applied to the potion bottle.

If unspecified, this sprite will be replaced with a blank sprite meaning no icons or labels will be shown for this potion bottle.

liquidMain

The potion bottle main liquid sprite. This should be the name of a png file inside your mod folder. This sprite will make up the default liquid background for your potion bottle when only a single effect (or no effect) has been added.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid2Of2

The potion bottle liquid2Of2 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the second effect for potions with only two effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid1Of3

The potion bottle liquid1Of3 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the first effect for potions with three effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid3Of3

The potion bottle liquid3Of3 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the third effect for potions with three effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid1Of4

The potion bottle liquid1Of4 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the first effect for potions with four effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid3Of4

The potion bottle liquid3Of4 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the third effect for potions with four effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid4Of4

The potion bottle liquid4Of4 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the fourth effect for potions with four effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid1Of5

The potion bottle liquid1Of5 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the first effect for potions with five effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid2Of5

The potion bottle liquid2Of5 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the second effect for potions with five effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid4Of5

The potion bottle liquid4Of5 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the fourth effect for potions with five effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

liquid5Of5

The potion bottle liquid5Of5 sprite. This should be the name of a png file inside your mod folder. This sprite will make up the liquid background of the firth effect for potions with five effects.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

bottleCollision

SVG path data describing the shape of the hitbox for this item when the item collides against the world (shelves, tables, ground)

This property uses the SVG Path format, and supports the M/m (move) H/h (horizontal line), V/v (vertical line), and L/l (line) commands. Paths can be easily created visually using vector art programs like Inkscape or Adobe Illustrator, or web tools like SvgPathEditor. Keep in mind the limited command set though, as these tools occasionally try to use other unsupported commands.

Note that collision currently only supports making the figure out of straight lines, so the C/c bezier curve commands do not function here.

The value of this property can take two forms: A svg path string, or an object containing the path and scale data:

bottleCollision: "M 5,5 L2,3 L3,2"

or

bottleCollision:
  data: "M 5,5 L2,3 L3,2"
  scaleX: 0.5
  scaleY: 0.5

Potion Bottle Sticker Items

A potion bottle sticker item defines a custom potion bottle sticker to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.PotionBottles plugin unless otherwise noted.

id

required

Specifies the internal name this sticker will go by. It can be used by other mods to reference your sticker.

foreground

The sticker foreground sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

background

The sticker background sprite. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

menuIcon

The sticker icon sprite which will be shown in the sticker list when customizing a potion. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

Potion Bottle Icon Items

A potion bottle icon item defines a custom potion bottle icon to add to the game.

All properties are supplied by the net.RoboPhredDev.PotionCraft.Crucible.PotionBottles plugin unless otherwise noted.

id

required

Specifies the internal name this icon will go by. It can be used by other mods to reference your sticker.

icon

The icon sprite which will be shown in the icon list when customizing a potion. This should be the name of a png file inside your mod folder.

If unspecified, this sprite will be replaced with a blank sprite meaning nothing will be shown for this sprite.

Clone this wiki locally