Skip to content

ItemProduceRecipe

ItemProduceRecipe.xml defines item production recipes: skill requirements, material costs, success rates, experience rewards, and crafting outputs for the item production system.

VersionStatus
v92Full
v90-
v86-

Entity: itemProduceRecipes Operations: create, update, delete, upsert Inline blocks:

  • item: — creates/updates ItemTemplate.xml with recipe-specific defaults
itemProduceRecipes:
create:
- id: 100001
recipeItemId: 200001
needSkillId: 1
categoryId: 10
result:
id: 300001
count: 5
materials:
- id: 400001
count: 3
update:
- id: 100001
changes:
categoryId: 20
delete:
- 100001
upsert:
- id: 100002
recipeItemId: 200002
needSkillId: 2
categoryId: 15
result:
id: 300002
count: 1
Section titled “Create with Inline Item Block (Recommended)”
itemProduceRecipes:
create:
- id: 100001
# Inline item block - automatically creates ItemTemplate entry
item:
# Tier 3: Required user input (6 fields)
name: "legendary_blade_recipe"
level: 65
rareGrade: 3 # 0=Common, 1=Uncommon, 2=Rare, 3=Superior
icon: "Icon_Items.scroll_weapon_metal_Tex"
buyPrice: 2000000
sellPrice: 200000
# Tier 2: Optional overrides (defaults applied if omitted)
category: "recipe" # Default: "generalMaterial"
combatItemSubType: "combatRecipe" # Default: "generalMaterial"
# Recipe properties
needSkillId: 1
needGrade: 1
needSkillProf: 100
maxSkillProf: 500
categoryId: 10
subFatiguePoint: 5
addOnSuccessProf: 10
obtainable: true
result:
id: 300001
count: 5

Creates recipe 100001 with an automatically generated ItemTemplate entry (ID 100001). The system applies 39 hard defaults (Tier 1) including combatItemType: RECIPE, plus 13 soft defaults (Tier 2) for common recipe item attributes.

Create a Basic Recipe (Traditional Approach)

Section titled “Create a Basic Recipe (Traditional Approach)”
itemProduceRecipes:
create:
- id: 100001
recipeItemId: 200001
needSkillId: 1
needGrade: 1
needSkillProf: 100
maxSkillProf: 500
categoryId: 10
subFatiguePoint: 5
addOnSuccessProf: 10
obtainable: true
result:
id: 300001
count: 5

Creates a basic crafting recipe with ID 100001 that produces 5 units of item 300001. Requires skill ID 1 at grade 1 with 100 proficiency.

itemProduceRecipes:
create:
- id: 100001
recipeItemId: 200001
needSkillId: 1
needGrade: 1
needSkillProf: 100
maxSkillProf: 500
categoryId: 10
subFatiguePoint: 5
addOnSuccessProf: 10
obtainable: true
result:
id: 300001
count: 5
materials:
- id: 400001
count: 3
- id: 400002
count: 5
- id: 400003
count: 1

Creates a recipe requiring three different material items: 3 units of item 400001, 5 units of item 400002, and 1 unit of item 400003.

itemProduceRecipes:
create:
- id: 100001
recipeItemId: 200001
needSkillId: 1
needGrade: 1
needSkillProf: 100
maxSkillProf: 500
produceCriticalRate: 0.15
exp: "50"
categoryId: 10
subFatiguePoint: 5
addOnSuccessProf: 10
obtainable: true
result:
id: 300001
count: 5
criticalItemId: 300002
criticalItemCount: 10

Creates a recipe with a 15% critical success rate. Normal success produces 5 units of item 300001, while critical success produces 10 units of item 300002 instead.

itemProduceRecipes:
update:
- id: 100001
changes:
categoryId: 20
produceCriticalRate: 0.25
exp: "150"

Updates recipe 100001 to change its category to 20, increase critical rate to 25%, and adjust experience reward to “150”.

itemProduceRecipes:
create:
- id: 100001
item:
name: "advanced_armor_design"
level: 70
rareGrade: 2
icon: "Icon_Items.scroll_armor_Tex"
buyPrice: 3500000
sellPrice: 350000
tradable: false # Tier 2 override - make recipe bound
needSkillId: 6
needGrade: 2
needSkillProf: 250
maxSkillProf: 800
categoryId: 15
subFatiguePoint: 10
addOnSuccessProf: 15
obtainable: true
result:
id: 300010
count: 1
materials:
- id: 400001
count: 10
- id: 400002
count: 5
- id: 400003
count: 2

Creates recipe with inline item block that overrides the Tier 2 default for tradable (making the recipe item bound). The 39 Tier 1 defaults and remaining 12 Tier 2 defaults are applied automatically.

itemProduceRecipes:
update:
- id: 100001
changes:
result:
count: 10

Updates only the result count of recipe 100001 from 5 to 10 units. Other result properties (id, criticalItemId, criticalItemCount) remain unchanged.

itemProduceRecipes:
update:
- id: 100001
changes:
materials:
- id: 400001
count: 5
- id: 400004
count: 2

Replaces the entire materials list for recipe 100001. Previous material requirements are discarded and replaced with the new list.

itemProduceRecipes:
delete:
- 100001
- 100002
- 100003

Removes recipes with IDs 100001, 100002, and 100003 from the datasheet.

Upsert with Inline Item (Create or Update)

Section titled “Upsert with Inline Item (Create or Update)”
itemProduceRecipes:
upsert:
- id: 100001
item:
name: "master_weapon_recipe"
level: 75
rareGrade: 3
icon: "Icon_Items.scroll_weapon_master_Tex"
buyPrice: 5000000
sellPrice: 500000
needSkillId: 2
needGrade: 2
needSkillProf: 200
maxSkillProf: 600
categoryId: 20
subFatiguePoint: 10
addOnSuccessProf: 15
obtainable: true
result:
id: 300001
count: 8
materials:
- id: 400001
count: 4

Creates a new recipe and its ItemTemplate entry if ID 100001 doesn’t exist, or replaces both completely if they do exist.

PropertyTypeSinceRequiredDescription
idintv92Unique identifier for this recipe
recipeItemIdintv92Item template ID that unlocks or represents this recipe. Mutually exclusive with item block—use one or the other, not both.
itemobjectv92Inline item block for creating recipe items automatically. See Item (Inline Block) below. Mutually exclusive with recipeItemId.
obtainablebooleanv92Whether this recipe can be obtained by players
needSkillIdintv92Skill ID required to use this recipe
needGradeintv92Minimum skill grade required
needSkillProfintv92Minimum skill proficiency required
maxSkillProfintv92Maximum skill proficiency at which this recipe gives experience
produceCriticalRatedecimalv92Probability of critical success (0.0 to 1.0)
expstringv92Experience points awarded on successful crafting
categoryIdintv92Recipe category for UI organization
subFatiguePointintv92Fatigue points consumed when using this recipe
addOnSuccessProfintv92Skill proficiency points gained on successful crafting
resultobjectv92Output configuration (what items are produced)
materialslistv92Material requirements (max 7 entries)

Represents the output of a successful recipe execution.

PropertyTypeSinceRequiredDescription
idintv92Item template ID produced on normal success
countintv92Quantity of items produced on normal success
criticalItemIdintv92Item template ID produced on critical success
criticalItemCountintv92Quantity of items produced on critical success

Represents a material requirement for the recipe. Maximum 7 materials per recipe.

PropertyTypeSinceRequiredDescription
idintv92Item template ID of the required material
countintv92Quantity of this material required

Defines a recipe item inline during create/upsert operations. When specified, automatically creates/updates the corresponding ItemTemplate entry with recipe-specific defaults.

Three-Tier Default System:

  • Tier 1 (Hard Defaults): 39 attributes with 100% constant values (auto-applied, non-overridable). Includes critical discriminator combatItemType: RECIPE.
  • Tier 2 (Soft Defaults): 13 attributes with high-frequency defaults (auto-applied, user-overridable). See properties marked with “(Tier 2 default)” below.
  • Tier 3 (Required Input): 6 attributes users must provide.

Tier 3 - Required User Input:

PropertyTypeSinceRequiredDescription
namestringv92Display name of the recipe item
levelintv92Required level to use this recipe
rareGradeintv92Rarity grade: 0=Common, 1=Uncommon, 2=Rare, 3=Superior
iconstringv92Icon asset path for the recipe item
buyPriceintv92Purchase price at NPC vendors
sellPriceintv92Sell price at NPC vendors

Tier 2 - Optional Overrides (Defaults Applied if Omitted):

PropertyTypeSinceDefaultDescription
categorystringv92"generalMaterial"Item category. Common override: "recipe" for combat recipes.
combatItemSubTypestringv92"generalMaterial"Combat item subtype. Common override: "combatRecipe" for combat recipes.
rankintv920Item rank for sorting/filtering
requiredLevelintv92<level>Required character level (defaults to recipe level)
sortingNumberintv923UI sorting priority
defaultValueintv92561152Default item value (median from production data)
dropTypeintv920Drop behavior: 0=Normal, 1=Special, 2=Rare
maxDropUnitintv9210Maximum units dropped at once
tradablebooleanv92trueWhether the recipe item can be traded. Override to false for bound recipes.
warehouseStorablebooleanv92trueWhether storable in personal warehouse
guildWarehouseStorablebooleanv92trueWhether storable in guild warehouse
storeSellablebooleanv92trueWhether sellable in player stores
relocatablebooleanv92trueWhether transferable across servers

Tier 1 - Auto-Applied Hard Defaults (Non-Overridable):

39 attributes including combatItemType: RECIPE, boundType: None, boolean flags (artisanable, conversion, dismantlable, enchantEnable, etc.), numeric constants (maxStack=10, itemUseCount=1, etc.), and sound/asset paths. These are applied automatically and cannot be overridden.

ItemProduceRecipe uses 2-level nesting:

<ItemProduceRecipe>
<Recipe id="100001" recipeItemId="200001" obtainable="true"
needSkillId="1" needGrade="1" needSkillProf="100" maxSkillProf="500"
produceCriticalRate="0.15" exp="50" categoryId="10"
subFatiguePoint="5" addOnSuccessProf="10">
<Result id="300001" count="5" criticalItemId="300002" criticalItemCount="10" />
<Materials>
<Material id="400001" count="3" />
<Material id="400002" count="5" />
</Materials>
</Recipe>
<Recipe id="100002" recipeItemId="200002" obtainable="true"
needSkillId="2" needGrade="1" needSkillProf="50" maxSkillProf="300"
categoryId="15" subFatiguePoint="3" addOnSuccessProf="5">
<Result id="300003" count="1" />
<Materials>
<Material id="400003" count="1" />
</Materials>
</Recipe>
</ItemProduceRecipe>

Structure:

  • Recipe: Identified by id
  • Result: Single element within each Recipe
  • Materials/Material: List of material requirements (max 7)
  • Inline Item vs RecipeItemId (Conflict Error E410): You cannot specify both recipeItemId and item: block in the same operation. Choose one approach:

    • Use item: block when creating a new recipe with a new recipe item (recommended, reduces authoring effort)
    • Use recipeItemId when referencing an existing ItemTemplate entry
    • Error message: E410: Cannot specify both 'recipeItemId' and 'item' block at itemProduceRecipes.create[0]
  • Recipe Item ID Usage: The recipeItemId references an item in ItemTemplate.xml that represents the recipe scroll or book. This is distinct from the result.id which is the actual produced item. When using inline item: blocks, the system automatically sets recipeItemId = id (recipe ID and item ID match).

  • Inline Item Required Fields: When using the item: block, all 6 Tier 3 fields are required: name, level, rareGrade, icon, buyPrice, sellPrice. Omitting any will cause a YamlParseException.MissingField error.

  • RareGrade Range: The rareGrade field in inline item blocks must be 0-3 (0=Common, 1=Uncommon, 2=Rare, 3=Superior). Other values will cause an InvalidEnum error.

  • Three-Tier Default System: When using inline item blocks:

    • Tier 1 (39 fields): Automatically applied, non-overridable (e.g., combatItemType: RECIPE)
    • Tier 2 (13 fields): Automatically applied with defaults, but user-overridable (e.g., category: "generalMaterial")
    • Tier 3 (6 fields): User must provide all required values

    Total: 58 item attributes set with only 6 required user inputs (89% reduction in authoring effort).

  • Tier 2 Overrides for Combat Recipes: For combat-related recipes (weapon/armor), override Tier 2 defaults:

    item:
    # Required Tier 3 fields...
    category: "recipe" # Override default "generalMaterial"
    combatItemSubType: "combatRecipe" # Override default "generalMaterial"
  • Required Attributes: When creating recipes with recipeItemId (traditional approach), id, recipeItemId, obtainable, needSkillId, needGrade, needSkillProf, maxSkillProf, categoryId, subFatiguePoint, and addOnSuccessProf are all required. When using inline item: blocks, recipeItemId is automatically set and should not be specified.

  • Result Element Required: While the result property is marked as optional in the schema, in practice most recipes require a result configuration to define what is produced. Create operations should include result data.

  • Material Limit: Each recipe can contain at most 7 material entries. Exceeding this limit will cause validation errors against the XSD schema.

  • Critical Rate Range: If specified, produceCriticalRate must be a decimal value between 0.0 and 1.0 inclusive. Values like 15 (instead of 0.15) will be interpreted incorrectly.

  • Experience as String: The exp field is a string type, not an integer. This allows for formula expressions in some implementations. Numeric values should still be quoted: exp: "100".

  • Partial Updates on Nested Elements: When updating a recipe, you can partially update the result by specifying only the fields you want to change (e.g., just count). However, updating materials replaces the entire materials list.

  • Upsert Replaces Materials: The upsert operation replaces the entire recipe, including all material requirements. If materials are specified in an upsert, they completely replace any existing materials. To preserve existing materials while updating other fields, use the update operation instead.

  • Skill Proficiency Bounds: The needSkillProf value should be less than or equal to maxSkillProf. Recipes where needSkillProf > maxSkillProf may behave unexpectedly in the game logic.