CultTweaker
Custom items and meals
Register custom inventory items and cooked meals from a config.json - refining, fuel, chest drops, recipes and meal effects.
Items live in BepInEx > plugins > CultTweaker > CustomInventoryItems and meals
in CustomMeals, one folder each, with a config.json and the sprite it names.
A meal is an item with extra fields, so everything on this page's first table
also applies to meals.
Templates for both ship with the mod under
Templates/CustomInventoryItems and Templates/CustomMeals.
Custom inventory items
{
"ItemName": "Cult Tweaker Test Item",
"Lore": "An experimental item created for testing CultTweaker.",
"Description": "A test item used to validate CustomInventoryItem loading.",
"SpritePath": "placeholder.png",
"ItemType": 0,
"CanBeRefined": true,
"RefineryInputQty": 10,
"CustomRefineryDuration": 60.0,
"FuelWeight": 2,
"FoodSatitation": 90,
"IsFish": false,
"IsFood": true,
"IsBigFish": false,
"IsCurrency": false,
"IsBurnableFuel": true,
"CanBeGivenToFollower": true,
"AddItemToOfferingShrine": true,
"AddItemToDungeonChests": true,
"DungeonChestSpawnChance": 50,
"DungeonChestMinAmount": 1,
"DungeonChestMaxAmount": 2
}
| Field | Type | Default | Description |
|---|---|---|---|
ItemName | string | — | The item's name. Spaces become underscores in its internal name. |
Lore | string | Custom Item created with CultTweaker. | The item's lore line. |
Description | string | This is a custom item created with CultTweaker. | The item's description. |
SpritePath | string | — | A PNG in the same folder, used as the inventory icon and world sprite. |
ItemType | int | — | 0 = ITEM, 1 = CURRENCY, 2 = FOOD. |
CanBeRefined | bool | false | Whether the item can be refined. |
RefineryInputQty | int | 15 | How many are consumed per refine. |
CustomRefineryDuration | float | 0 | How long a refine takes. |
FuelWeight | int | 1 | How much fuel one item is worth. |
FoodSatitation | int | 75 | How much hunger the item satisfies. |
IsFish | bool | false | Whether the item counts as a fish. |
IsBigFish | bool | false | Whether the item counts as a big fish. |
IsFood | bool | false | Whether the item counts as food. |
IsCurrency | bool | false | Whether the item counts as currency. |
IsBurnableFuel | bool | false | Whether the item can be burned as fuel. |
CanBeGivenToFollower | bool | false | Whether the item can be given to a follower. |
AddItemToOfferingShrine | bool | false | Whether the item appears at the offering shrine. |
AddItemToDungeonChests | bool | false | Whether the item can appear in dungeon chests. |
DungeonChestSpawnChance | int | 100 | The chance it is rolled for a dungeon chest. |
DungeonChestMinAmount | int | 1 | The fewest that drop at once. |
DungeonChestMaxAmount | int | 1 | The most that drop at once. |
Custom meals
A meal config carries every item field above plus the meal fields below.
{
"ItemName": "Hearty Stew",
"Lore": "A filling stew made from local ingredients.",
"Description": "Restores stamina and heals slightly.",
"SpritePath": "hearty_stew.png",
"ItemType": 2,
"CanBeRefined": false,
"RefineryInputQty": 0,
"CustomRefineryDuration": 0.0,
"FuelWeight": 0,
"FoodSatitation": 150,
"IsFish": false,
"IsFood": true,
"IsBigFish": false,
"IsCurrency": false,
"IsBurnableFuel": false,
"CanBeGivenToFollower": true,
"AddItemToOfferingShrine": false,
"AddItemToDungeonChests": false,
"DungeonChestSpawnChance": 0,
"DungeonChestMinAmount": 0,
"DungeonChestMaxAmount": 0,
"SatiationLevel": 3,
"TummyRating": 0.85,
"MealQuality": "GOOD",
"MealSafeToEat": true,
"Recipe": { "MEAT": 1, "VEGETABLE": 2 },
"MealEffectsDictionary": { "HEAL": 50 }
}
| Field | Type | Default | Description |
|---|---|---|---|
SatiationLevel | int | 0 | How filling the meal is. |
TummyRating | float | 0 | The meal's tummy rating. |
MealQuality | string | NORMAL | The meal's quality. Parsed case-insensitively; an unrecognised value falls back to NORMAL. |
MealSafeToEat | bool | true | Whether the meal is safe to eat. |
Recipe | object | empty | Ingredient name to quantity. |
MealEffectsDictionary | object | empty | Effect name to amount. |
Ingredients and effects are named the same way content is named everywhere else
in CultTweaker: by internal name. Custom items work as ingredients.
The log reports each item and meal as it registers, with the internal name it was
given. Search BepInEx/LogOutput.log for the item's name if it does not turn up
in game.