diff --git a/db/import-tmpl/produce_db.yml b/db/import-tmpl/produce_db.yml
new file mode 100644
index 0000000000..3e9449052c
--- /dev/null
+++ b/db/import-tmpl/produce_db.yml
@@ -0,0 +1,49 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
diff --git a/db/import-tmpl/skill_changematerial_db.txt b/db/import-tmpl/skill_changematerial_db.txt
deleted file mode 100644
index 981c689b95..0000000000
--- a/db/import-tmpl/skill_changematerial_db.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// Change Material Database
-//
-// Structure of Database:
-// ID,ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
-//
-// NOTE:
-// - ID is used to identify item order that will be used for overwriting on db/import.
-// Value is started from 0 until 74 (MAX_SKILL_CHANGEMATERIAL_DB-1). Use same ID on import file to overwrite original result & requirements
-// - Up to 5 ID/Amount pairs can be specified.
-// - Rate = n/10%
-
diff --git a/db/pre-re/produce_db.yml b/db/pre-re/produce_db.yml
new file mode 100644
index 0000000000..8c13d8f91c
--- /dev/null
+++ b/db/pre-re/produce_db.yml
@@ -0,0 +1,54 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Footer:
+ Imports:
+ - Path: db/pre-re/skill_produce_db.yml
+ - Path: db/pre-re/skill_changematerial_db.yml
diff --git a/db/pre-re/skill_changematerial_db.yml b/db/pre-re/skill_changematerial_db.yml
new file mode 100644
index 0000000000..540cb21dd1
--- /dev/null
+++ b/db/pre-re/skill_changematerial_db.yml
@@ -0,0 +1,45 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
diff --git a/db/pre-re/skill_produce_db.yml b/db/pre-re/skill_produce_db.yml
new file mode 100644
index 0000000000..a2adc9a431
--- /dev/null
+++ b/db/pre-re/skill_produce_db.yml
@@ -0,0 +1,3009 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Body:
+ - ItemLevel: 1
+ Recipe:
+ - Product: Sword
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 2
+ - Product: Falchion
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 30
+ - Product: Blade
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 45
+ - Item: Tooth_Of_Bat
+ Amount: 25
+ - Product: Knife
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 1
+ - Item: Jellopy
+ Amount: 10
+ - Product: Cutter
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 25
+ - Product: Main_Gauche
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 50
+ - Product: Katana
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Horrendous_Mouth
+ Amount: 15
+ - Item: Iron
+ Amount: 35
+ - Product: Axe
+ SkillName: BS_AXE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 10
+ - Product: Battle_Axe
+ SkillName: BS_AXE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 110
+ - Product: Club
+ SkillName: BS_MACE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 3
+ - Product: Mace
+ SkillName: BS_MACE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 30
+ - Product: Waghnakh
+ SkillName: BS_KNUCKLE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 160
+ - Item: Scarlet_Jewel
+ Amount: 1
+ - Product: Javelin
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 3
+ - Product: Spear
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 35
+ - Product: Pike
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 70
+ - ItemLevel: 2
+ Recipe:
+ - Product: Lapier
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 20
+ - Product: Scimiter
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 35
+ - Product: Ring_Pommel_Saber
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 50
+ - Item: Steel
+ Amount: 40
+ - Product: Dirk
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 17
+ - Product: Dagger
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 30
+ - Product: Stiletto
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 40
+ - Product: Slayer
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 20
+ - Item: Steel
+ Amount: 25
+ - Product: Bastard_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 45
+ - Product: Hammer
+ SkillName: BS_AXE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 30
+ - Product: Smasher
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 20
+ - Product: Flail
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 33
+ - Product: Chain
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 45
+ - Product: Knuckle_Duster
+ SkillName: BS_KNUCKLE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 50
+ - Product: Hora
+ SkillName: BS_KNUCKLE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 65
+ - Product: Guisarme
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 25
+ - Product: Glaive
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 40
+ - Product: Partizan
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 55
+ - ItemLevel: 3
+ Recipe:
+ - Product: Saber
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 5
+ - Item: White_Jewel
+ Amount: 1
+ - Product: Haedonggum
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Golden_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 10
+ - Product: Tsurugi
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Dark_Red_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 15
+ - Product: Flamberge
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel_
+ Amount: 1
+ - Item: Oridecon
+ Amount: 16
+ - Product: Gladius
+ SkillName: BS_DAGGER
+ SkillLevel: 3
+ Consumed:
+ - Item: Blue_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 40
+ - Product: Damascus
+ SkillName: BS_DAGGER
+ SkillLevel: 3
+ Consumed:
+ - Item: Bluish_Green_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 60
+ - Product: Two_Hand_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 10
+ - Product: Broad_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 20
+ - Product: Claymore
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Crystal_Jewel___
+ Amount: 1
+ - Item: Oridecon
+ Amount: 16
+ - Item: Steel
+ Amount: 20
+ - Product: Buster
+ SkillName: BS_AXE
+ SkillLevel: 3
+ Consumed:
+ - Item: Orcish_Cuspid
+ Amount: 30
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 20
+ - Product: Two_Handed_Axe
+ SkillName: BS_AXE
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 10
+ - Item: Violet_Jewel
+ Amount: 1
+ - Product: Morning_Star
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Crystal_Jewel
+ Amount: 1
+ - Item: Steel
+ Amount: 85
+ - Product: Sword_Mace
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Sharp_Scale
+ Amount: 20
+ - Item: Steel
+ Amount: 100
+ - Product: Stunner
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Steel
+ Amount: 120
+ - Item: Voucher_Of_Orcish_Hero
+ Amount: 1
+ - Product: Fist
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel
+ Amount: 10
+ - Item: Oridecon
+ Amount: 4
+ - Product: Claw
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Golden_Jewel
+ Amount: 10
+ - Item: Oridecon
+ Amount: 8
+ - Product: Finger
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 4
+ - Item: White_Jewel
+ Amount: 10
+ - Product: Trident
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Skyblue_Jewel
+ Amount: 5
+ - Item: Steel
+ Amount: 10
+ - Product: Halberd
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 10
+ - Product: Lance
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel
+ Amount: 3
+ - Item: Evil_Horn
+ Amount: 2
+ - Item: Oridecon
+ Amount: 12
+ - ItemLevel: 11
+ Recipe:
+ - Product: Str_Dish01
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Grasshopper's_Leg
+ Amount: 5
+ - Item: Old_Frying_Pan
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Int_Dish01
+ Consumed:
+ - Item: Grape
+ Amount: 3
+ - Item: Red_Potion
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Vit_Dish01
+ Consumed:
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Nipper
+ Amount: 10
+ - Item: Yellow_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Agi_Dish01
+ Consumed:
+ - Item: Chinese_Ink
+ Amount: 1
+ - Item: Grain
+ Amount: 1
+ - Item: Spawn
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Dex_Dish01
+ Consumed:
+ - Item: Grape
+ Amount: 2
+ - Item: Honey
+ Amount: 1
+ - Item: Red_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Luk_Dish01
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Old_Frying_Pan
+ Amount: 1
+ - Item: Yoyo_Tail
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook01
+ - ItemLevel: 12
+ Recipe:
+ - Product: Str_Dish02
+ Consumed:
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Sticky_Webfoot
+ Amount: 20
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Vit_Dish02
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 1
+ - Item: Fin
+ Amount: 5
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Item: Gill
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Int_Dish02
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 5
+ - Item: Red_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Agi_Dish02
+ Consumed:
+ - Item: Carrot
+ Amount: 3
+ - Item: Grain
+ Amount: 1
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Dex_Dish02
+ Consumed:
+ - Item: Cacao
+ Amount: 10
+ - Item: Milk
+ Amount: 1
+ - Item: Piece_Of_Cake
+ Amount: 1
+ - Item: White_Platter
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Luk_Dish02
+ Consumed:
+ - Item: Apple_Juice
+ Amount: 3
+ - Item: Carrot_Juice
+ Amount: 2
+ - Item: Grape_Juice
+ Amount: 1
+ - Item: Orange_Juice
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook02
+ - ItemLevel: 13
+ Recipe:
+ - Product: Dex_Dish03
+ Consumed:
+ - Item: Apple
+ Amount: 5
+ - Item: Banana
+ Amount: 5
+ - Item: Orange
+ Amount: 5
+ - Item: Strawberry
+ Amount: 5
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Int_Dish03
+ Consumed:
+ - Item: Honey
+ Amount: 2
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Str_Dish03
+ Consumed:
+ - Item: Chilli
+ Amount: 5
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Meat
+ Amount: 4
+ - Item: Old_Frying_Pan
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Vit_Dish03
+ Consumed:
+ - Item: Conch
+ Amount: 10
+ - Item: Flesh_Of_Clam
+ Amount: 20
+ - Item: Honey
+ Amount: 1
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Agi_Dish03
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Nice_Sweet_Potato
+ Amount: 5
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Tentacle
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Luk_Dish03
+ Consumed:
+ - Item: Baked_Yam
+ Amount: 1
+ - Item: Nice_Sweet_Potato
+ Amount: 10
+ - Item: Sweet_Potato
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - ItemLevel: 14
+ Recipe:
+ - Product: Int_Dish04
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Grape
+ Amount: 5
+ - Item: Lemon
+ Amount: 4
+ - Item: Orange
+ Amount: 10
+ - Item: Strawberry
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Vit_Dish04
+ Consumed:
+ - Item: Chinese_Ink
+ Amount: 20
+ - Item: Old_Frying_Pan
+ Amount: 1
+ - Item: Soft_Leaf
+ Amount: 10
+ - Item: Tentacle
+ Amount: 30
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Str_Dish04
+ Consumed:
+ - Item: Green_Herb
+ Amount: 3
+ - Item: Lemon
+ Amount: 1
+ - Item: Meat
+ Amount: 5
+ - Item: Red_Herb
+ Amount: 3
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Dex_Dish04
+ Consumed:
+ - Item: Bread
+ Amount: 5
+ - Item: Cheese
+ Amount: 10
+ - Item: Meat
+ Amount: 1
+ - Item: Milk
+ Amount: 15
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Agi_Dish04
+ Consumed:
+ - Item: Carrot
+ Amount: 10
+ - Item: Grain
+ Amount: 3
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Ice_Piece
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Luk_Dish04
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 5
+ - Item: Lip_Of_Ancient_Fish
+ Amount: 10
+ - Item: Raccoon_Leaf
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 2
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - ItemLevel: 15
+ Recipe:
+ - Product: Int_Dish05
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Blue_Potion
+ Amount: 1
+ - Item: Fruit_Of_Mastela
+ Amount: 4
+ - Item: Lemon
+ Amount: 2
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Str_Dish05
+ Consumed:
+ - Item: Carrot
+ Amount: 3
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Grain
+ Amount: 1
+ - Item: Honey
+ Amount: 2
+ - Item: Sweet_Potato
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Dex_Dish05
+ Consumed:
+ - Item: Great_Leaf
+ Amount: 6
+ - Item: Leaflet_Of_Aloe
+ Amount: 3
+ - Item: Leaflet_Of_Hinal
+ Amount: 2
+ - Item: Sharp_Leaf
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Agi_Dish05
+ Consumed:
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Pot
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 20
+ - Item: Red_Herb
+ Amount: 10
+ - Item: Wing_Of_Red_Bat
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Vit_Dish05
+ Consumed:
+ - Item: Bun
+ Amount: 20
+ - Item: Green_Herb
+ Amount: 20
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Luk_Dish05
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Great_Leaf
+ Amount: 10
+ - Item: Old_Frying_Pan
+ Amount: 2
+ - Item: Scorpion's_Tail
+ Amount: 20
+ - Item: Short_Leg
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - ItemLevel: 16
+ Recipe:
+ - Product: Str_Dish06
+ Consumed:
+ - Item: Fruit_Of_Mastela
+ Amount: 1
+ - Item: Honey
+ Amount: 2
+ - Item: Meat
+ Amount: 10
+ - Item: Shining_Scales
+ Amount: 20
+ - Item: Yellow_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Int_Dish06
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Grape_Juice
+ Amount: 3
+ - Item: Mushroom
+ Amount: 3
+ - Item: Mushroom_Spore
+ Amount: 20
+ - Item: Red_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Dex_Dish06
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Hard_Peach
+ Amount: 20
+ - Item: Milk
+ Amount: 10
+ - Item: Orange_Juice
+ Amount: 5
+ - Item: Piece_Of_Cake
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Agi_Dish06
+ Consumed:
+ - Item: Chilli
+ Amount: 20
+ - Item: Lemon
+ Amount: 20
+ - Item: Prawn
+ Amount: 20
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Vit_Dish06
+ Consumed:
+ - Item: Browny_Root
+ Amount: 20
+ - Item: Honey
+ Amount: 2
+ - Item: Mushroom
+ Amount: 1
+ - Item: Mushroom_Spore
+ Amount: 20
+ - Item: Root_Of_Maneater
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Luk_Dish06
+ Consumed:
+ - Item: Aloe
+ Amount: 1
+ - Item: Clover
+ Amount: 10
+ - Item: Reptile_Tongue
+ Amount: 5
+ - Item: Starsand_Of_Witch
+ Amount: 10
+ - Item: Thin_N'_Long_Tongue
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook06
+ - ItemLevel: 17
+ Recipe:
+ - Product: Str_Dish07
+ Consumed:
+ - Item: Coal
+ Amount: 2
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Live_Coal
+ Amount: 1
+ - Item: Meat
+ Amount: 10
+ - Item: White_Herb
+ Amount: 10
+ - Item: Wooden_Block
+ Amount: 15
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Int_Dish07
+ Consumed:
+ - Item: Honey
+ Amount: 2
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: White_Herb
+ Amount: 5
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Dex_Dish07
+ Consumed:
+ - Item: Amulet
+ Amount: 5
+ - Item: Bread
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 5
+ - Item: Ment
+ Amount: 5
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Unripe_Apple
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Agi_Dish07
+ Consumed:
+ - Item: Anolian_Skin
+ Amount: 10
+ - Item: Carrot
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Vit_Dish07
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 2
+ - Item: Fish_Tail
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 5
+ - Item: Pet_Food
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Wild_Boar's_Mane
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Luk_Dish07
+ Consumed:
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Item: Gill
+ Amount: 5
+ - Item: Meat
+ Amount: 5
+ - Item: Mushroom
+ Amount: 10
+ - Item: Scales_Shell
+ Amount: 10
+ - Item: Soft_Leaf
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook07
+ - ItemLevel: 18
+ Recipe:
+ - Product: Str_Dish08
+ Consumed:
+ - Item: Bear's_Foot
+ Amount: 20
+ - Item: Carrot
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 2
+ - Item: Leaflet_Of_Hinal
+ Amount: 1
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Int_Dish08
+ Consumed:
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Prickly_Fruit
+ Amount: 4
+ - Item: Royal_Jelly
+ Amount: 6
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Dex_Dish08
+ Consumed:
+ - Item: Bread
+ Amount: 10
+ - Item: Cheese
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Meat
+ Amount: 5
+ - Item: Royal_Jelly
+ Amount: 2
+ - Item: Strawberry
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Agi_Dish08
+ Consumed:
+ - Item: Aloebera
+ Amount: 1
+ - Item: Carrot
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Meat
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Vit_Dish08
+ Consumed:
+ - Item: Grain
+ Amount: 2
+ - Item: Leaf_Clothes
+ Amount: 20
+ - Item: Meat
+ Amount: 20
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 10
+ - Item: Rainbow_Carrot
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Luk_Dish08
+ Consumed:
+ - Item: Grain
+ Amount: 5
+ - Item: Leaf_Clothes
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Red_Spice
+ Amount: 2
+ - Item: Strawberry
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - ItemLevel: 19
+ Recipe:
+ - Product: Str_Dish09
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Chinese_Ink
+ Amount: 10
+ - Item: Coal
+ Amount: 2
+ - Item: Green_Herb
+ Amount: 30
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Pot
+ Amount: 1
+ - Item: Tendon
+ Amount: 40
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Int_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 5
+ - Item: Blue_Potion
+ Amount: 2
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Orange
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Dex_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Grape_Juice
+ Amount: 5
+ - Item: Orange
+ Amount: 10
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Strawberry
+ Amount: 10
+ - Item: Tropical_Banana
+ Amount: 1
+ - Item: Unripe_Apple
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Agi_Dish09
+ Consumed:
+ - Item: Meat
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 4
+ - Item: Red_Herb
+ Amount: 5
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Shoot
+ Amount: 20
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Vit_Dish09
+ Consumed:
+ - Item: Dragon's_Skin
+ Amount: 10
+ - Item: Dragon_Train
+ Amount: 20
+ - Item: Fatty_Chubby_Earthworm
+ Amount: 1
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 6
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Luk_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Aloebera
+ Amount: 2
+ - Item: Animal_Blood
+ Amount: 1
+ - Item: Anodyne
+ Amount: 2
+ - Item: Apple_Juice
+ Amount: 10
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 6
+ NotConsumed:
+ - Item: Cookbook09
+ - ItemLevel: 20
+ Recipe:
+ - Product: Str_Dish10
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Aloebera
+ Amount: 2
+ - Item: Blue_Potion
+ Amount: 2
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 10
+ - Item: Pot
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Thin_N'_Long_Tongue
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Int_Dish10
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 5
+ - Item: Lemon
+ Amount: 5
+ - Item: Prickly_Fruit
+ Amount: 5
+ - Item: Root_Of_Maneater
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Singing_Plant
+ Amount: 1
+ - Item: Yggdrasilberry
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Dex_Dish10
+ Consumed:
+ - Item: Alchol
+ Amount: 5
+ - Item: Center_Potion
+ Amount: 3
+ - Item: Ice_Piece
+ Amount: 10
+ - Item: Illusion_Flower
+ Amount: 1
+ - Item: Prickly_Fruit
+ Amount: 2
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: Spawns
+ Amount: 10
+ - Item: Yggdrasilberry
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Agi_Dish10
+ Consumed:
+ - Item: Aloebera
+ Amount: 2
+ - Item: Bitter_Herb
+ Amount: 3
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Pot
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 10
+ - Item: Scorpion's_Tail
+ Amount: 20
+ - Item: Scropion's_Nipper
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Vit_Dish10
+ Consumed:
+ - Item: Amulet
+ Amount: 10
+ - Item: Anodyne
+ Amount: 2
+ - Item: Bitter_Herb
+ Amount: 2
+ - Item: Heart_Of_Mermaid
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 2
+ - Item: Immortal_Heart
+ Amount: 20
+ - Item: Mementos
+ Amount: 10
+ - Item: Seed_Of_Yggdrasil
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Luk_Dish10
+ Consumed:
+ - Item: Four_Leaf_Clover
+ Amount: 2
+ - Item: Fox_Tail
+ Amount: 10
+ - Item: Izidor
+ Amount: 2
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 4
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Root_Of_Maneater
+ Amount: 10
+ - Item: Sharp_Leaf
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - ItemLevel: 21
+ Recipe:
+ - Product: Iron
+ SkillName: BS_IRON
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron_Ore
+ Amount: 1
+ - Product: Steel
+ SkillName: BS_STEEL
+ SkillLevel: 1
+ Consumed:
+ - Item: Coal
+ Amount: 1
+ - Item: Iron
+ Amount: 5
+ - Product: Star_Crumb
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Sparkling_Dust
+ Amount: 10
+ - Product: Flame_Heart
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Boody_Red
+ Amount: 10
+ - Product: Mistic_Frozen
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Crystal_Blue
+ Amount: 10
+ - Product: Great_Nature
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Yellow_Live
+ Amount: 10
+ - Product: Rough_Wind
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Wind_Of_Verdure
+ Amount: 10
+ - ItemLevel: 22
+ Recipe:
+ - Product: Red_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Red_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Yellow_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: White_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: White_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Blue_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Scell
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Red_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Cactus_Needle
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Red_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: Yellow_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Moustache_Of_Mole
+ Amount: 1
+ - Item: Yellow_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: White_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Starsand_Of_Witch
+ Amount: 1
+ - Item: White_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: Holy_Water
+ SkillName: AL_HOLYWATER
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Product: Poison_Bottle
+ SkillName: ASC_CDP
+ SkillLevel: 1
+ Consumed:
+ - Item: Bee_Sting
+ Amount: 1
+ - Item: Berserk_Potion
+ Amount: 1
+ - Item: Cactus_Needle
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Karvodailnirol
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 1
+ - Item: Posionous_Canine
+ Amount: 1
+ - Product: Fire_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Transparent_Cloth
+ Amount: 1
+ NotConsumed:
+ - Item: FireBottle_Create_Book
+ - Product: Acid_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Immortal_Heart
+ Amount: 1
+ NotConsumed:
+ - Item: Acid_Create_Book
+ - Product: MenEater_Plant_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blossom_Of_Maneater
+ Amount: 2
+ - Item: Empty_Bottle
+ Amount: 1
+ NotConsumed:
+ - Item: Plant_Create_Book
+ - Product: Mini_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Detonator
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Tendon
+ Amount: 1
+ NotConsumed:
+ - Item: Mine_Create_Book
+ - Product: Coating_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Heart_Of_Mermaid
+ Amount: 1
+ - Item: Tooth_Of_
+ Amount: 1
+ NotConsumed:
+ - Item: Coating_Create_Book
+ - Product: Resist_Fire
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Lizard_Scruff
+ Amount: 2
+ - Item: Red_Gemstone
+ Amount: 1
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Water
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Heart_Of_Mermaid
+ Amount: 3
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Earth
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Large_Jellopy
+ Amount: 2
+ - Item: Yellow_Gemstone
+ Amount: 1
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Wind
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Moth_Dust
+ Amount: 3
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Anodyne
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Ment
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Aloebera
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Aloe
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Honey
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Alchol
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 5
+ - Item: Stem
+ Amount: 5
+ NotConsumed:
+ - Item: Alcol_Create_Book
+ - Product: Germination_Breed
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Life_Force_Pot
+ Amount: 1
+ - Item: Seed_Of_Life
+ Amount: 1
+ - Item: Yggdrasilberry_Dew
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - ItemLevel: 23
+ Recipe:
+ - Product: Elemental_Fire
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Scorpion's_Tail
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - Product: Elemental_Water
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Scroll
+ Amount: 1
+ - Item: Snail's_Shell
+ Amount: 3
+ - Product: Elemental_Earth
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Horn
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - Product: Elemental_Wind
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Colorful_Shell
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - ItemLevel: 24
+ Recipe:
+ - Product: Ansila
+ SkillName: AB_ANCILLA
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Product: Runstone_Nosiege
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 8
+ Consumed:
+ - Item: Broken_Armor_Piece
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Old_Magic_Circle
+ Amount: 1
+ - Product: Runstone_Rhydo
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 7
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Red_Gemstone
+ Amount: 1
+ - Product: Runstone_Verkana
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 9
+ Consumed:
+ - Item: Dullahan_Armor
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Isia
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 2
+ Consumed:
+ - Item: Burning_Heart
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Asir
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 5
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Ogre_Tooth
+ Amount: 1
+ - Product: Runstone_Urj
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 6
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Honey
+ Amount: 1
+ - Item: Slender_Snake
+ Amount: 1
+ - Product: Runstone_Turisus
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Desert_Wolf
+ Amount: 1
+ - Item: Cobold_Hair
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Pertz
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 3
+ Consumed:
+ - Item: Dragon_Canine
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Tangled_Chain
+ Amount: 1
+ - Product: Runstone_Hagalas
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 4
+ Consumed:
+ - Item: Dragon's_Skin
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Round_Shell
+ Amount: 1
+ - ItemLevel: 25
+ Recipe:
+ - Product: Guillotine_Antidote
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 5
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 1
+ - Item: Green_Herb
+ Amount: 2
+ - Item: White_Herb
+ Amount: 1
+ - Product: Poison_Paralysis
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 1
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Amoena
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Poison_Toad's_Skin
+ Amount: 20
+ - Product: Poison_Leech
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 4
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Nerium
+ Amount: 1
+ - Item: Poison_Herb_Scopolia
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Oblivion
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 9
+ Consumed:
+ - Item: Heart_Of_Mermaid
+ Amount: 10
+ - Item: Izidor
+ Amount: 1
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Contamination
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 3
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 25
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Seratum
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Numb
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 8
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Nerium
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Sticky_Poison
+ Amount: 10
+ - Product: Poison_Fever
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 2
+ Consumed:
+ - Item: Anolian_Skin
+ Amount: 20
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Rantana
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Laughing
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 7
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Makulata
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 10
+ - Product: Poison_Fatigue
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 6
+ Consumed:
+ - Item: Izidor
+ Amount: 1
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Sticky_Poison
+ Amount: 10
+ - ItemLevel: 26
+ Recipe:
+ - Product: Sacred_Masque
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Grasshopper's_Leg
+ Amount: 45
+ - Item: Yoyo_Tail
+ Amount: 35
+ - Product: Long_Hair
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pencil_Case
+ Amount: 40
+ - Item: Tiger's_Skin
+ Amount: 5
+ - Product: Phracon
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Glass_Bead
+ Amount: 40
+ - Item: Spawn
+ Amount: 45
+ - Product: Lantern
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Blossom_Of_Maneater
+ Amount: 20
+ - Item: Solid_Shell
+ Amount: 10
+ - Product: Acorn
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Cactus_Needle
+ Amount: 30
+ - Item: Snail's_Shell
+ Amount: 10
+ - Product: Frozen_Heart
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Moth_Dust
+ Amount: 35
+ - Item: Raccoondog_Doll
+ Amount: 25
+ - Product: Horrendous_Mouth
+ BaseRate: 800
+ Make:
+ - Amount: 9
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Dragon_Scale
+ Amount: 45
+ - Item: Stem
+ Amount: 45
+ - Product: Detrimindexta
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Chrysalis
+ Amount: 40
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Product: Detonator
+ BaseRate: 800
+ Make:
+ - Amount: 7
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather_Of_Birds
+ Amount: 25
+ - Item: Nose_Ring
+ Amount: 45
+ - Product: Tweezer
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Monkey_Doll
+ Amount: 5
+ - Item: Worm_Peelings
+ Amount: 40
+ - Product: Petite_DiablOfs_Horn
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Resin
+ Amount: 10
+ - Item: Stone_Heart
+ Amount: 5
+ - Product: Root_Of_Maneater
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Talon
+ Amount: 25
+ - Item: Tooth_Of_
+ Amount: 20
+ - Product: Conch
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Gill
+ Amount: 5
+ - Item: Immortal_Heart
+ Amount: 25
+ - Product: Rotten_Scale
+ BaseRate: 800
+ Make:
+ - Amount: 7
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Shell
+ Amount: 20
+ - Item: Thin_N'_Long_Tongue
+ Amount: 50
+ - Product: Elder_Pixie's_Beard
+ Make:
+ - Amount: 8
+ Rate: 800
+ - Amount: 12
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bee_Sting
+ Amount: 35
+ - Item: Petite_DiablOfs_Wing
+ Amount: 45
+ - Product: Lizard_Scruff
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Karvodailnirol
+ Amount: 15
+ - Item: Scale_Of_Snakes
+ Amount: 20
+ - Product: Emveretarcon
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Grasshopper_Doll
+ Amount: 40
+ - Item: Heart_Of_Mermaid
+ Amount: 5
+ - Product: Chinese_Ink
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bear's_Foot
+ Amount: 20
+ - Item: Black_Ladle
+ Amount: 25
+ - Product: Spiderweb
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Fin
+ Amount: 50
+ - Item: Slender_Snake
+ Amount: 35
+ - Product: Reins
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Chonchon_Doll
+ Amount: 30
+ - Item: Stuffed_Doll
+ Amount: 50
+ - Product: Wooden_Block
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Rotten_Bandage
+ Amount: 10
+ - Item: Single_Cell
+ Amount: 10
+ - Product: Tentacle
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 40
+ - Item: Wild_Boar's_Mane
+ Amount: 5
+ - Product: Mixture
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Posionous_Canine
+ Amount: 15
+ - Item: Powder_Of_Butterfly
+ Amount: 30
+ - Product: Colorful_Shell
+ Make:
+ - Amount: 9
+ Rate: 800
+ - Amount: 13
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Horn
+ Amount: 50
+ - Item: Zargon
+ Amount: 45
+ - Product: Wing_Of_Moth
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Frozen_Rose
+ Amount: 20
+ - Item: Reptile_Tongue
+ Amount: 30
+ - Product: Nipper
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Earthworm_Peeling
+ Amount: 40
+ - Item: Sticky_Mucus
+ Amount: 25
+ - Product: Turtle_Shell
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Fluff
+ Amount: 5
+ - Item: Poring_Doll
+ Amount: 40
+ - Product: Nail_Of_Orc
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Garlet
+ Amount: 10
+ - Item: Raccoon_Leaf
+ Amount: 50
+ - Product: Dragon_Canine
+ Make:
+ - Amount: 8
+ Rate: 800
+ - Amount: 12
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Osiris_Doll
+ Amount: 50
+ - Item: Sticky_Webfoot
+ Amount: 35
+ - Product: Skirt_Of_Virgin
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Head_Of_Medusa
+ Amount: 35
+ - Item: Scales_Shell
+ Amount: 30
+ - Product: Dragon_Train
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Sharpened_Cuspid
+ Amount: 35
+ - Item: Tooth_Of_Bat
+ Amount: 25
+ - Product: Dokkaebi_Horn
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Lip_Of_Ancient_Fish
+ Amount: 25
+ - Item: Shining_Scales
+ Amount: 15
+ - Product: Grit
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Crystal_Mirror
+ Amount: 35
+ - Item: Limb_Of_Mantis
+ Amount: 50
+ - Product: Sharp_Scale
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Clam_Shell
+ Amount: 20
+ - Item: Horseshoe
+ Amount: 10
+ - Product: Short_Leg
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 20
+ - Item: Scell
+ Amount: 45
+ - Product: Starsand_Of_Witch
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Porcelain
+ Amount: 15
+ - Item: Insect_Feeler
+ Amount: 10
+ - Product: Fox_Tail
+ Make:
+ - Amount: 2
+ Rate: 800
+ - Amount: 3
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Animal's_Skin
+ Amount: 10
+ - Item: Rouge
+ Amount: 15
+ - Product: Cobold_Hair
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Jellopy
+ Amount: 45
+ - Item: Wedding_Bouquet
+ Amount: 20
+ - Product: Jaws_Of_Ant
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Spore_Doll
+ Amount: 20
+ - Item: Witherless_Rose
+ Amount: 20
+ - Product: Voucher_Of_Orcish_Hero
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Nail_Of_Mole
+ Amount: 45
+ - Item: Tree_Root
+ Amount: 5
+ - Product: Sacred_Marks
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pumpkin_Head
+ Amount: 30
+ - Item: Scorpion's_Tail
+ Amount: 10
+ - Product: Alchol
+ BaseRate: 800
+ Make:
+ - Amount: 9
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Voucher
+ Amount: 50
+ - Item: Skel_Bone
+ Amount: 40
+ - Product: Crap_Shell
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Baphomet_Doll
+ Amount: 50
+ - Item: Fish_Tail
+ Amount: 30
+ - Product: Tendon
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather
+ Amount: 5
+ - Item: Orcish_Cuspid
+ Amount: 25
+ - Product: Tiger_Footskin
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pointed_Scale
+ Amount: 5
+ - Item: White_Platter
+ Amount: 20
+ - Product: Hinalle
+ Make:
+ - Amount: 2
+ Rate: 200
+ - Amount: 4
+ Rate: 800
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bunch_Of_Flowers
+ Amount: 45
+ - Item: Moustache_Of_Mole
+ Amount: 40
+ - Product: Counteragent
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Evil_Horn
+ Amount: 15
+ - Item: Mementos
+ Amount: 30
+ - Product: Tooth_Of_Ancient_Fish
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bill_Of_Birds
+ Amount: 35
+ - Item: Transparent_Cloth
+ Amount: 30
+ - Product: Rat_Tail
+ Make:
+ - Amount: 7
+ Rate: 800
+ - Amount: 10
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Golden_Hair
+ Amount: 40
+ - Item: Mushroom_Spore
+ Amount: 35
+ - Product: Coal
+ BaseRate: 500
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Guard
+ Amount: 1
+ - Product: Steel
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Tsurugi
+ Amount: 1
+ - Product: Cigar
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Axe
+ Amount: 1
+ - Product: Bone_Wand
+ BaseRate: 200
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Broken_Farming_Utensil
+ Amount: 100
+ - Item: Clattering_Skull
+ Amount: 100
+ - Product: Cigar
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Axe
+ Amount: 1
+ - Item: Orcish_Voucher
+ Amount: 100
+ - Product: Starsand_Of_Witch
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Moth_Dust
+ Amount: 100
+ - Item: Scell
+ Amount: 100
+ - Product: Soft_Feather
+ Make:
+ - Amount: 1
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather
+ Amount: 30
+ - Item: Feather_Of_Birds
+ Amount: 30
+ - Product: Wind_Of_Verdure
+ Make:
+ - Amount: 1
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Ice_Piece
+ Amount: 100
+ - Product: Crystal_Blue
+ Make:
+ - Amount: 1
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 100
+ - Product: Soft_Silk_Cloth
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Transparent_Cloth
+ Amount: 10
+ - Product: Transparent_Cloth
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Soft_Silk_Cloth
+ Amount: 2
+ - Product: Boost500_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Boost500
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: Full_SwingK_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Full_SwingK
+ Amount: 10
+ - Product: Mana_Plus_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Mana_Plus
+ Amount: 10
+ - Product: Cure_Free_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Cure_Free
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: Stamina_Up_M_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Stamina_Up_M
+ Amount: 10
+ - Product: Digestive_F_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Digestive_F
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: HP_Inc_PotS_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionS
+ Amount: 10
+ - Product: HP_Inc_PotM_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionM
+ Amount: 10
+ - Product: HP_Inc_PotL_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionL
+ Amount: 10
+ - Product: SP_Inc_PotS_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionS
+ Amount: 10
+ - Product: SP_Inc_PotM_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionM
+ Amount: 10
+ - Product: SP_Inc_PotL_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionL
+ Amount: 10
+ - Product: En_White_PotZ_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Enrich_White_PotionZ
+ Amount: 10
+ - Product: Vitata500_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Vitata500
+ Amount: 10
+ - Product: En_Cel_Juice_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Enrich_Celermine_Juice
+ Amount: 10
+ - ItemLevel: 27
+ Recipe:
+ - Product: Savage_BBQ
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Black_Charcoal
+ Amount: 1
+ - Item: Cooking_Skewer
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Savage_Meat
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Wug_Blood_Cocktail
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Cold_Ice
+ Amount: 2
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Wolf_Blood
+ Amount: 3
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Minor_Brisket
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Beef_Head_Meat
+ Amount: 2
+ - Item: Large_Cookpot
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Siroma_Icetea
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Comodo_Tropic_Fruit
+ Amount: 1
+ - Item: Ice_Crystal
+ Amount: 2
+ - Item: Ice_Fragment
+ Amount: 3
+ - Item: Melange_Pot
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Drocera_Herb_Stew
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 3
+ - Item: Drocera_Tentacle
+ Amount: 3
+ - Item: Large_Cookpot
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Red_Herb
+ Amount: 3
+ - Item: White_Herb
+ Amount: 3
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Petti_Tail_Noodle
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Cool_Gravy
+ Amount: 1
+ - Item: Fine_Noodle
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Petti_Tail
+ Amount: 2
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - ItemLevel: 29
+ Recipe:
+ - Product: Seed_Of_Horny_Plant
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Prickly_Fruit
+ Amount: 10
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: Bloodsuck_Plant_Seed
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Root_Of_Maneater
+ Amount: 10
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: Bomb_Mushroom_Spore
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Gun_Powder
+ Amount: 2
+ - Item: Mushroom_Spore
+ Amount: 10
+ - Item: Poison_Spore
+ Amount: 5
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: HP_Increase_PotionS
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Monster's_Feed
+ Amount: 5
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: HP_Increase_PotionM
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: HP_Increase_PotionL
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 3
+ - Item: Holy_Water
+ Amount: 1
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: White_Herb
+ Amount: 15
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: SP_Increase_PotionS
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Grape
+ Amount: 10
+ - Item: Lemon
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: SP_Increase_PotionM
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Honey
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: SP_Increase_PotionL
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 15
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: Enrich_White_PotionZ
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: White_Herb
+ Amount: 10
+ - Item: White_Potion
+ Amount: 20
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Vitata500
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Grape
+ Amount: 10
+ - Item: Honey
+ Amount: 10
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Enrich_Celermine_Juice
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Awakening_Potion
+ Amount: 5
+ - Item: Center_Potion
+ Amount: 5
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 5
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Cure_Free
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 1
+ - Item: Green_Herb
+ Amount: 20
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 1
+ - Item: Panacea
+ Amount: 5
+ NotConsumed:
+ - Item: Quality_Potion_Book
diff --git a/db/produce_db.yml b/db/produce_db.yml
new file mode 100644
index 0000000000..b4f4f049b2
--- /dev/null
+++ b/db/produce_db.yml
@@ -0,0 +1,57 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Footer:
+ Imports:
+ - Path: db/pre-re/produce_db.yml
+ Mode: Prerenewal
+ - Path: db/re/produce_db.yml
+ Mode: Renewal
+ - Path: db/import/produce_db.yml
diff --git a/db/re/produce_db.yml b/db/re/produce_db.yml
new file mode 100644
index 0000000000..ab37f435e3
--- /dev/null
+++ b/db/re/produce_db.yml
@@ -0,0 +1,54 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Footer:
+ Imports:
+ - Path: db/re/skill_produce_db.yml
+ - Path: db/re/skill_changematerial_db.yml
diff --git a/db/re/skill_changematerial_db.yml b/db/re/skill_changematerial_db.yml
new file mode 100644
index 0000000000..da4f43d2d4
--- /dev/null
+++ b/db/re/skill_changematerial_db.yml
@@ -0,0 +1,911 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# Skill: Skill requirement. (Default: null)
+# Name Skill name required.
+# Level Skill level required.
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Body:
+
+ - ItemLevel: 26
+ Recipe:
+ - Product: Sacred_Masque
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Grasshopper's_Leg
+ Amount: 45
+ - Item: Yoyo_Tail
+ Amount: 35
+ - Product: Long_Hair
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pencil_Case
+ Amount: 40
+ - Item: Tiger's_Skin
+ Amount: 5
+ - Product: Phracon
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Glass_Bead
+ Amount: 40
+ - Item: Spawn
+ Amount: 45
+ - Product: Lantern
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Blossom_Of_Maneater
+ Amount: 20
+ - Item: Solid_Shell
+ Amount: 10
+ - Product: Acorn
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Cactus_Needle
+ Amount: 30
+ - Item: Snail's_Shell
+ Amount: 10
+ - Product: Frozen_Heart
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Moth_Dust
+ Amount: 35
+ - Item: Raccoondog_Doll
+ Amount: 25
+ - Product: Horrendous_Mouth
+ BaseRate: 800
+ Make:
+ - Amount: 9
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Dragon_Scale
+ Amount: 45
+ - Item: Stem
+ Amount: 45
+ - Product: Detrimindexta
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Chrysalis
+ Amount: 40
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Product: Detonator
+ BaseRate: 800
+ Make:
+ - Amount: 7
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather_Of_Birds
+ Amount: 25
+ - Item: Nose_Ring
+ Amount: 45
+ - Product: Tweezer
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Monkey_Doll
+ Amount: 5
+ - Item: Worm_Peelings
+ Amount: 40
+ - Product: Petite_DiablOfs_Horn
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Resin
+ Amount: 10
+ - Item: Stone_Heart
+ Amount: 5
+ - Product: Root_Of_Maneater
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Talon
+ Amount: 25
+ - Item: Tooth_Of_
+ Amount: 20
+ - Product: Conch
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Gill
+ Amount: 5
+ - Item: Immortal_Heart
+ Amount: 25
+ - Product: Rotten_Scale
+ BaseRate: 800
+ Make:
+ - Amount: 7
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Shell
+ Amount: 20
+ - Item: Thin_N'_Long_Tongue
+ Amount: 50
+ - Product: Elder_Pixie's_Beard
+ Make:
+ - Amount: 8
+ Rate: 800
+ - Amount: 12
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bee_Sting
+ Amount: 35
+ - Item: Petite_DiablOfs_Wing
+ Amount: 45
+ - Product: Lizard_Scruff
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Karvodailnirol
+ Amount: 15
+ - Item: Scale_Of_Snakes
+ Amount: 20
+ - Product: Emveretarcon
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Grasshopper_Doll
+ Amount: 40
+ - Item: Heart_Of_Mermaid
+ Amount: 5
+ - Product: Chinese_Ink
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bear's_Foot
+ Amount: 20
+ - Item: Black_Ladle
+ Amount: 25
+ - Product: Spiderweb
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Fin
+ Amount: 50
+ - Item: Slender_Snake
+ Amount: 35
+ - Product: Reins
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Chonchon_Doll
+ Amount: 30
+ - Item: Stuffed_Doll
+ Amount: 50
+ - Product: Wooden_Block
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Rotten_Bandage
+ Amount: 10
+ - Item: Single_Cell
+ Amount: 10
+ - Product: Tentacle
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 40
+ - Item: Wild_Boar's_Mane
+ Amount: 5
+ - Product: Mixture
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Posionous_Canine
+ Amount: 15
+ - Item: Powder_Of_Butterfly
+ Amount: 30
+ - Product: Colorful_Shell
+ Make:
+ - Amount: 9
+ Rate: 800
+ - Amount: 13
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Horn
+ Amount: 50
+ - Item: Zargon
+ Amount: 45
+ - Product: Wing_Of_Moth
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Frozen_Rose
+ Amount: 20
+ - Item: Reptile_Tongue
+ Amount: 30
+ - Product: Nipper
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Earthworm_Peeling
+ Amount: 40
+ - Item: Sticky_Mucus
+ Amount: 25
+ - Product: Turtle_Shell
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Fluff
+ Amount: 5
+ - Item: Poring_Doll
+ Amount: 40
+ - Product: Nail_Of_Orc
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Garlet
+ Amount: 10
+ - Item: Raccoon_Leaf
+ Amount: 50
+ - Product: Dragon_Canine
+ Make:
+ - Amount: 8
+ Rate: 800
+ - Amount: 12
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Osiris_Doll
+ Amount: 50
+ - Item: Sticky_Webfoot
+ Amount: 35
+ - Product: Skirt_Of_Virgin
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Head_Of_Medusa
+ Amount: 35
+ - Item: Scales_Shell
+ Amount: 30
+ - Product: Dragon_Train
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Sharpened_Cuspid
+ Amount: 35
+ - Item: Tooth_Of_Bat
+ Amount: 25
+ - Product: Dokkaebi_Horn
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Lip_Of_Ancient_Fish
+ Amount: 25
+ - Item: Shining_Scales
+ Amount: 15
+ - Product: Grit
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Crystal_Mirror
+ Amount: 35
+ - Item: Limb_Of_Mantis
+ Amount: 50
+ - Product: Sharp_Scale
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Clam_Shell
+ Amount: 20
+ - Item: Horseshoe
+ Amount: 10
+ - Product: Short_Leg
+ BaseRate: 800
+ Make:
+ - Amount: 6
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 20
+ - Item: Scell
+ Amount: 45
+ - Product: Starsand_Of_Witch
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Porcelain
+ Amount: 15
+ - Item: Insect_Feeler
+ Amount: 10
+ - Product: Fox_Tail
+ Make:
+ - Amount: 2
+ Rate: 800
+ - Amount: 3
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Animal's_Skin
+ Amount: 10
+ - Item: Rouge
+ Amount: 15
+ - Product: Cobold_Hair
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Jellopy
+ Amount: 45
+ - Item: Wedding_Bouquet
+ Amount: 20
+ - Product: Jaws_Of_Ant
+ Make:
+ - Amount: 4
+ Rate: 800
+ - Amount: 6
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Spore_Doll
+ Amount: 20
+ - Item: Witherless_Rose
+ Amount: 20
+ - Product: Voucher_Of_Orcish_Hero
+ BaseRate: 800
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Nail_Of_Mole
+ Amount: 45
+ - Item: Tree_Root
+ Amount: 5
+ - Product: Sacred_Marks
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pumpkin_Head
+ Amount: 30
+ - Item: Scorpion's_Tail
+ Amount: 10
+ - Product: Alchol
+ BaseRate: 800
+ Make:
+ - Amount: 9
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Voucher
+ Amount: 50
+ - Item: Skel_Bone
+ Amount: 40
+ - Product: Crap_Shell
+ BaseRate: 800
+ Make:
+ - Amount: 8
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Baphomet_Doll
+ Amount: 50
+ - Item: Fish_Tail
+ Amount: 30
+ - Product: Tendon
+ BaseRate: 800
+ Make:
+ - Amount: 3
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather
+ Amount: 5
+ - Item: Orcish_Cuspid
+ Amount: 25
+ - Product: Tiger_Footskin
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Pointed_Scale
+ Amount: 5
+ - Item: White_Platter
+ Amount: 20
+ - Product: Hinalle
+ Make:
+ - Amount: 2
+ Rate: 200
+ - Amount: 4
+ Rate: 800
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bunch_Of_Flowers
+ Amount: 45
+ - Item: Moustache_Of_Mole
+ Amount: 40
+ - Product: Counteragent
+ BaseRate: 800
+ Make:
+ - Amount: 4
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Evil_Horn
+ Amount: 15
+ - Item: Mementos
+ Amount: 30
+ - Product: Tooth_Of_Ancient_Fish
+ Make:
+ - Amount: 6
+ Rate: 800
+ - Amount: 9
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bill_Of_Birds
+ Amount: 35
+ - Item: Transparent_Cloth
+ Amount: 30
+ - Product: Rat_Tail
+ Make:
+ - Amount: 7
+ Rate: 800
+ - Amount: 10
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Golden_Hair
+ Amount: 40
+ - Item: Mushroom_Spore
+ Amount: 35
+ - Product: Coal
+ BaseRate: 500
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Guard
+ Amount: 1
+ - Product: Steel
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Tsurugi
+ Amount: 1
+ - Product: Cigar
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Axe
+ Amount: 1
+ - Product: Bone_Wand
+ BaseRate: 200
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Broken_Farming_Utensil
+ Amount: 100
+ - Item: Clattering_Skull
+ Amount: 100
+ - Product: Cigar
+ Make:
+ - Amount: 1
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Orcish_Axe
+ Amount: 1
+ - Item: Orcish_Voucher
+ Amount: 100
+ - Product: Starsand_Of_Witch
+ BaseRate: 800
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Moth_Dust
+ Amount: 100
+ - Item: Scell
+ Amount: 100
+ - Product: Soft_Feather
+ Make:
+ - Amount: 1
+ Rate: 200
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Feather
+ Amount: 30
+ - Item: Feather_Of_Birds
+ Amount: 30
+ - Product: Wind_Of_Verdure
+ Make:
+ - Amount: 1
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Ice_Piece
+ Amount: 100
+ - Product: Crystal_Blue
+ Make:
+ - Amount: 1
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 100
+ - Product: Soft_Silk_Cloth
+ Make:
+ - Amount: 2
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Transparent_Cloth
+ Amount: 10
+ - Product: Transparent_Cloth
+ Make:
+ - Amount: 5
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Soft_Silk_Cloth
+ Amount: 2
+ - Product: Boost500_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Boost500
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: Full_SwingK_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Full_SwingK
+ Amount: 10
+ - Product: Mana_Plus_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Mana_Plus
+ Amount: 10
+ - Product: Cure_Free_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Cure_Free
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: Stamina_Up_M_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Item: Stamina_Up_M
+ Amount: 10
+ - Product: Digestive_F_To_Throw
+ Make:
+ - Amount: 1
+ Rate: 100
+ - Amount: 2
+ Rate: 250
+ - Amount: 5
+ Rate: 500
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Digestive_F
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 10
+ - Item: Flexible_String
+ Amount: 10
+ - Product: HP_Inc_PotS_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionS
+ Amount: 10
+ - Product: HP_Inc_PotM_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionM
+ Amount: 10
+ - Product: HP_Inc_PotL_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: HP_Increase_PotionL
+ Amount: 10
+ - Product: SP_Inc_PotS_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionS
+ Amount: 10
+ - Product: SP_Inc_PotM_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionM
+ Amount: 10
+ - Product: SP_Inc_PotL_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: SP_Increase_PotionL
+ Amount: 10
+ - Product: En_White_PotZ_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Enrich_White_PotionZ
+ Amount: 10
+ - Product: Vitata500_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Vitata500
+ Amount: 10
+ - Product: En_Cel_Juice_To_Throw
+ Make:
+ - Amount: 10
+ SkillName: GN_CHANGEMATERIAL
+ SkillLevel: 1
+ Consumed:
+ - Item: Bottle_To_Throw
+ Amount: 10
+ - Item: Enrich_Celermine_Juice
+ Amount: 10
diff --git a/db/re/skill_produce_db.yml b/db/re/skill_produce_db.yml
new file mode 100644
index 0000000000..684c289c1d
--- /dev/null
+++ b/db/re/skill_produce_db.yml
@@ -0,0 +1,2535 @@
+# This file is a part of rAthena.
+# Copyright(C) 2022 rAthena Development Team
+# https://rathena.org - https://github.com/rathena
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
+
+Header:
+ Type: PRODUCE_DB
+ Version: 1
+
+Body:
+ - ItemLevel: 1
+ Recipe:
+ - Product: Sword
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 2
+ - Product: Falchion
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 30
+ - Product: Blade
+ SkillName: BS_SWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 45
+ - Item: Tooth_Of_Bat
+ Amount: 25
+ - Product: Knife
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 1
+ - Item: Jellopy
+ Amount: 10
+ - Product: Cutter
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 25
+ - Product: Main_Gauche
+ SkillName: BS_DAGGER
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 50
+ - Product: Katana
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 1
+ Consumed:
+ - Item: Horrendous_Mouth
+ Amount: 15
+ - Item: Iron
+ Amount: 35
+ - Product: Axe
+ SkillName: BS_AXE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 10
+ - Product: Battle_Axe
+ SkillName: BS_AXE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 110
+ - Product: Club
+ SkillName: BS_MACE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 3
+ - Product: Mace
+ SkillName: BS_MACE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 30
+ - Product: Waghnakh
+ SkillName: BS_KNUCKLE
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 160
+ - Item: Scarlet_Jewel
+ Amount: 1
+ - Product: Javelin
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 3
+ - Product: Spear
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 35
+ - Product: Pike
+ SkillName: BS_SPEAR
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron
+ Amount: 70
+ - ItemLevel: 2
+ Recipe:
+ - Product: Lapier
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 20
+ - Product: Scimiter
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 35
+ - Product: Ring_Pommel_Saber
+ SkillName: BS_SWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Claw_Of_Wolves
+ Amount: 50
+ - Item: Steel
+ Amount: 40
+ - Product: Dirk
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 17
+ - Product: Dagger
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 30
+ - Product: Stiletto
+ SkillName: BS_DAGGER
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 40
+ - Product: Slayer
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 20
+ - Item: Steel
+ Amount: 25
+ - Product: Bastard_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 45
+ - Product: Hammer
+ SkillName: BS_AXE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 30
+ - Product: Smasher
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 20
+ - Product: Flail
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 33
+ - Product: Chain
+ SkillName: BS_MACE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 45
+ - Product: Knuckle_Duster
+ SkillName: BS_KNUCKLE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 50
+ - Product: Hora
+ SkillName: BS_KNUCKLE
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 65
+ - Product: Guisarme
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 25
+ - Product: Glaive
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 40
+ - Product: Partizan
+ SkillName: BS_SPEAR
+ SkillLevel: 2
+ Consumed:
+ - Item: Steel
+ Amount: 55
+ - ItemLevel: 3
+ Recipe:
+ - Product: Saber
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 5
+ - Item: White_Jewel
+ Amount: 1
+ - Product: Haedonggum
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Golden_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 10
+ - Product: Tsurugi
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Dark_Red_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 15
+ - Product: Flamberge
+ SkillName: BS_SWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel_
+ Amount: 1
+ - Item: Oridecon
+ Amount: 16
+ - Product: Gladius
+ SkillName: BS_DAGGER
+ SkillLevel: 3
+ Consumed:
+ - Item: Blue_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 40
+ - Product: Damascus
+ SkillName: BS_DAGGER
+ SkillLevel: 3
+ Consumed:
+ - Item: Bluish_Green_Jewel
+ Amount: 1
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 60
+ - Product: Two_Hand_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 10
+ - Product: Broad_Sword
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 20
+ - Product: Claymore
+ SkillName: BS_TWOHANDSWORD
+ SkillLevel: 3
+ Consumed:
+ - Item: Crystal_Jewel___
+ Amount: 1
+ - Item: Oridecon
+ Amount: 16
+ - Item: Steel
+ Amount: 20
+ - Product: Buster
+ SkillName: BS_AXE
+ SkillLevel: 3
+ Consumed:
+ - Item: Orcish_Cuspid
+ Amount: 30
+ - Item: Oridecon
+ Amount: 4
+ - Item: Steel
+ Amount: 20
+ - Product: Two_Handed_Axe
+ SkillName: BS_AXE
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Steel
+ Amount: 10
+ - Item: Violet_Jewel
+ Amount: 1
+ - Product: Morning_Star
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Crystal_Jewel
+ Amount: 1
+ - Item: Steel
+ Amount: 85
+ - Product: Sword_Mace
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Sharp_Scale
+ Amount: 20
+ - Item: Steel
+ Amount: 100
+ - Product: Stunner
+ SkillName: BS_MACE
+ SkillLevel: 3
+ Consumed:
+ - Item: Steel
+ Amount: 120
+ - Item: Voucher_Of_Orcish_Hero
+ Amount: 1
+ - Product: Fist
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel
+ Amount: 10
+ - Item: Oridecon
+ Amount: 4
+ - Product: Claw
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Golden_Jewel
+ Amount: 10
+ - Item: Oridecon
+ Amount: 8
+ - Product: Finger
+ SkillName: BS_KNUCKLE
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 4
+ - Item: White_Jewel
+ Amount: 10
+ - Product: Trident
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 8
+ - Item: Skyblue_Jewel
+ Amount: 5
+ - Item: Steel
+ Amount: 10
+ - Product: Halberd
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Oridecon
+ Amount: 12
+ - Item: Steel
+ Amount: 10
+ - Product: Lance
+ SkillName: BS_SPEAR
+ SkillLevel: 3
+ Consumed:
+ - Item: Cardinal_Jewel
+ Amount: 3
+ - Item: Evil_Horn
+ Amount: 2
+ - Item: Oridecon
+ Amount: 12
+ - ItemLevel: 11
+ Recipe:
+ - Product: Str_Dish01
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Grasshopper's_Leg
+ Amount: 5
+ - Item: Old_Frying_Pan
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Int_Dish01
+ Consumed:
+ - Item: Grape
+ Amount: 3
+ - Item: Red_Potion
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Vit_Dish01
+ Consumed:
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Nipper
+ Amount: 10
+ - Item: Yellow_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Agi_Dish01
+ Consumed:
+ - Item: Chinese_Ink
+ Amount: 1
+ - Item: Grain
+ Amount: 1
+ - Item: Spawn
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Dex_Dish01
+ Consumed:
+ - Item: Grape
+ Amount: 2
+ - Item: Honey
+ Amount: 1
+ - Item: Red_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook01
+ - Product: Luk_Dish01
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Old_Frying_Pan
+ Amount: 1
+ - Item: Yoyo_Tail
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook01
+ - ItemLevel: 12
+ Recipe:
+ - Product: Str_Dish02
+ Consumed:
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Sticky_Webfoot
+ Amount: 20
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Vit_Dish02
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 1
+ - Item: Fin
+ Amount: 5
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Item: Gill
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Int_Dish02
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 5
+ - Item: Red_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Agi_Dish02
+ Consumed:
+ - Item: Carrot
+ Amount: 3
+ - Item: Grain
+ Amount: 1
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Dex_Dish02
+ Consumed:
+ - Item: Cacao
+ Amount: 10
+ - Item: Milk
+ Amount: 1
+ - Item: Piece_Of_Cake
+ Amount: 1
+ - Item: White_Platter
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook02
+ - Product: Luk_Dish02
+ Consumed:
+ - Item: Apple_Juice
+ Amount: 3
+ - Item: Carrot_Juice
+ Amount: 2
+ - Item: Grape_Juice
+ Amount: 1
+ - Item: Orange_Juice
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook02
+ - ItemLevel: 13
+ Recipe:
+ - Product: Dex_Dish03
+ Consumed:
+ - Item: Apple
+ Amount: 5
+ - Item: Banana
+ Amount: 5
+ - Item: Orange
+ Amount: 5
+ - Item: Strawberry
+ Amount: 5
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Int_Dish03
+ Consumed:
+ - Item: Honey
+ Amount: 2
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Str_Dish03
+ Consumed:
+ - Item: Chilli
+ Amount: 5
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Meat
+ Amount: 4
+ - Item: Old_Frying_Pan
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Vit_Dish03
+ Consumed:
+ - Item: Conch
+ Amount: 10
+ - Item: Flesh_Of_Clam
+ Amount: 20
+ - Item: Honey
+ Amount: 1
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Agi_Dish03
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Nice_Sweet_Potato
+ Amount: 5
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Tentacle
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook03
+ - Product: Luk_Dish03
+ Consumed:
+ - Item: Baked_Yam
+ Amount: 1
+ - Item: Nice_Sweet_Potato
+ Amount: 10
+ - Item: Sweet_Potato
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook03
+ - ItemLevel: 14
+ Recipe:
+ - Product: Int_Dish04
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Grape
+ Amount: 5
+ - Item: Lemon
+ Amount: 4
+ - Item: Orange
+ Amount: 10
+ - Item: Strawberry
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Vit_Dish04
+ Consumed:
+ - Item: Chinese_Ink
+ Amount: 20
+ - Item: Old_Frying_Pan
+ Amount: 1
+ - Item: Soft_Leaf
+ Amount: 10
+ - Item: Tentacle
+ Amount: 30
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Str_Dish04
+ Consumed:
+ - Item: Green_Herb
+ Amount: 3
+ - Item: Lemon
+ Amount: 1
+ - Item: Meat
+ Amount: 5
+ - Item: Red_Herb
+ Amount: 3
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Dex_Dish04
+ Consumed:
+ - Item: Bread
+ Amount: 5
+ - Item: Cheese
+ Amount: 10
+ - Item: Meat
+ Amount: 1
+ - Item: Milk
+ Amount: 15
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Agi_Dish04
+ Consumed:
+ - Item: Carrot
+ Amount: 10
+ - Item: Grain
+ Amount: 3
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Ice_Piece
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - Product: Luk_Dish04
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 5
+ - Item: Lip_Of_Ancient_Fish
+ Amount: 10
+ - Item: Raccoon_Leaf
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 2
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook04
+ - ItemLevel: 15
+ Recipe:
+ - Product: Int_Dish05
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Blue_Potion
+ Amount: 1
+ - Item: Fruit_Of_Mastela
+ Amount: 4
+ - Item: Lemon
+ Amount: 2
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Str_Dish05
+ Consumed:
+ - Item: Carrot
+ Amount: 3
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Grain
+ Amount: 1
+ - Item: Honey
+ Amount: 2
+ - Item: Sweet_Potato
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Dex_Dish05
+ Consumed:
+ - Item: Great_Leaf
+ Amount: 6
+ - Item: Leaflet_Of_Aloe
+ Amount: 3
+ - Item: Leaflet_Of_Hinal
+ Amount: 2
+ - Item: Sharp_Leaf
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Agi_Dish05
+ Consumed:
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Pot
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 20
+ - Item: Red_Herb
+ Amount: 10
+ - Item: Wing_Of_Red_Bat
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Vit_Dish05
+ Consumed:
+ - Item: Bun
+ Amount: 20
+ - Item: Green_Herb
+ Amount: 20
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - Product: Luk_Dish05
+ Consumed:
+ - Item: Cooking_Oil
+ Amount: 1
+ - Item: Great_Leaf
+ Amount: 10
+ - Item: Old_Frying_Pan
+ Amount: 2
+ - Item: Scorpion's_Tail
+ Amount: 20
+ - Item: Short_Leg
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook05
+ - ItemLevel: 16
+ Recipe:
+ - Product: Str_Dish06
+ Consumed:
+ - Item: Fruit_Of_Mastela
+ Amount: 1
+ - Item: Honey
+ Amount: 2
+ - Item: Meat
+ Amount: 10
+ - Item: Shining_Scales
+ Amount: 20
+ - Item: Yellow_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Int_Dish06
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Grape_Juice
+ Amount: 3
+ - Item: Mushroom
+ Amount: 3
+ - Item: Mushroom_Spore
+ Amount: 20
+ - Item: Red_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Dex_Dish06
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Hard_Peach
+ Amount: 20
+ - Item: Milk
+ Amount: 10
+ - Item: Orange_Juice
+ Amount: 5
+ - Item: Piece_Of_Cake
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Agi_Dish06
+ Consumed:
+ - Item: Chilli
+ Amount: 20
+ - Item: Lemon
+ Amount: 20
+ - Item: Prawn
+ Amount: 20
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Vit_Dish06
+ Consumed:
+ - Item: Browny_Root
+ Amount: 20
+ - Item: Honey
+ Amount: 2
+ - Item: Mushroom
+ Amount: 1
+ - Item: Mushroom_Spore
+ Amount: 20
+ - Item: Root_Of_Maneater
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook06
+ - Product: Luk_Dish06
+ Consumed:
+ - Item: Aloe
+ Amount: 1
+ - Item: Clover
+ Amount: 10
+ - Item: Reptile_Tongue
+ Amount: 5
+ - Item: Starsand_Of_Witch
+ Amount: 10
+ - Item: Thin_N'_Long_Tongue
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook06
+ - ItemLevel: 17
+ Recipe:
+ - Product: Str_Dish07
+ Consumed:
+ - Item: Coal
+ Amount: 2
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Live_Coal
+ Amount: 1
+ - Item: Meat
+ Amount: 10
+ - Item: White_Herb
+ Amount: 10
+ - Item: Wooden_Block
+ Amount: 15
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Int_Dish07
+ Consumed:
+ - Item: Honey
+ Amount: 2
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: White_Herb
+ Amount: 5
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Dex_Dish07
+ Consumed:
+ - Item: Amulet
+ Amount: 5
+ - Item: Bread
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 5
+ - Item: Ment
+ Amount: 5
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Unripe_Apple
+ Amount: 2
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Agi_Dish07
+ Consumed:
+ - Item: Anolian_Skin
+ Amount: 10
+ - Item: Carrot
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Vit_Dish07
+ Consumed:
+ - Item: Delicious_Fish
+ Amount: 2
+ - Item: Fish_Tail
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 5
+ - Item: Pet_Food
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ - Item: Wild_Boar's_Mane
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook07
+ - Product: Luk_Dish07
+ Consumed:
+ - Item: Flesh_Of_Clam
+ Amount: 10
+ - Item: Gill
+ Amount: 5
+ - Item: Meat
+ Amount: 5
+ - Item: Mushroom
+ Amount: 10
+ - Item: Scales_Shell
+ Amount: 10
+ - Item: Soft_Leaf
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook07
+ - ItemLevel: 18
+ Recipe:
+ - Product: Str_Dish08
+ Consumed:
+ - Item: Bear's_Foot
+ Amount: 20
+ - Item: Carrot
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 2
+ - Item: Leaflet_Of_Hinal
+ Amount: 1
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Int_Dish08
+ Consumed:
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Prickly_Fruit
+ Amount: 4
+ - Item: Royal_Jelly
+ Amount: 6
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Dex_Dish08
+ Consumed:
+ - Item: Bread
+ Amount: 10
+ - Item: Cheese
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Meat
+ Amount: 5
+ - Item: Royal_Jelly
+ Amount: 2
+ - Item: Strawberry
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Agi_Dish08
+ Consumed:
+ - Item: Aloebera
+ Amount: 1
+ - Item: Carrot
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaflet_Of_Hinal
+ Amount: 10
+ - Item: Meat
+ Amount: 10
+ - Item: Pumpkin_Head
+ Amount: 10
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Vit_Dish08
+ Consumed:
+ - Item: Grain
+ Amount: 2
+ - Item: Leaf_Clothes
+ Amount: 20
+ - Item: Meat
+ Amount: 20
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Pumpkin_Head
+ Amount: 10
+ - Item: Rainbow_Carrot
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook08
+ - Product: Luk_Dish08
+ Consumed:
+ - Item: Grain
+ Amount: 5
+ - Item: Leaf_Clothes
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Red_Spice
+ Amount: 2
+ - Item: Strawberry
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook08
+ - ItemLevel: 19
+ Recipe:
+ - Product: Str_Dish09
+ Consumed:
+ - Item: Cheese
+ Amount: 10
+ - Item: Chinese_Ink
+ Amount: 10
+ - Item: Coal
+ Amount: 2
+ - Item: Green_Herb
+ Amount: 30
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Pot
+ Amount: 1
+ - Item: Tendon
+ Amount: 40
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Int_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 5
+ - Item: Blue_Potion
+ Amount: 2
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 10
+ - Item: Orange
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Dex_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Grape_Juice
+ Amount: 5
+ - Item: Orange
+ Amount: 10
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Strawberry
+ Amount: 10
+ - Item: Tropical_Banana
+ Amount: 1
+ - Item: Unripe_Apple
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Agi_Dish09
+ Consumed:
+ - Item: Meat
+ Amount: 10
+ - Item: Plain_Sauce
+ Amount: 4
+ - Item: Red_Herb
+ Amount: 5
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Shoot
+ Amount: 20
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 5
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Vit_Dish09
+ Consumed:
+ - Item: Dragon's_Skin
+ Amount: 10
+ - Item: Dragon_Train
+ Amount: 20
+ - Item: Fatty_Chubby_Earthworm
+ Amount: 1
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 6
+ NotConsumed:
+ - Item: Cookbook09
+ - Product: Luk_Dish09
+ Consumed:
+ - Item: Alchol
+ Amount: 2
+ - Item: Aloebera
+ Amount: 2
+ - Item: Animal_Blood
+ Amount: 1
+ - Item: Anodyne
+ Amount: 2
+ - Item: Apple_Juice
+ Amount: 10
+ - Item: Red_Spice
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 6
+ NotConsumed:
+ - Item: Cookbook09
+ - ItemLevel: 20
+ Recipe:
+ - Product: Str_Dish10
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Aloebera
+ Amount: 2
+ - Item: Blue_Potion
+ Amount: 2
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 10
+ - Item: Pot
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Thin_N'_Long_Tongue
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Int_Dish10
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Leaflet_Of_Aloe
+ Amount: 5
+ - Item: Lemon
+ Amount: 5
+ - Item: Prickly_Fruit
+ Amount: 5
+ - Item: Root_Of_Maneater
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 5
+ - Item: Singing_Plant
+ Amount: 1
+ - Item: Yggdrasilberry
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Dex_Dish10
+ Consumed:
+ - Item: Alchol
+ Amount: 5
+ - Item: Center_Potion
+ Amount: 3
+ - Item: Ice_Piece
+ Amount: 10
+ - Item: Illusion_Flower
+ Amount: 1
+ - Item: Prickly_Fruit
+ Amount: 2
+ - Item: Royal_Jelly
+ Amount: 4
+ - Item: Spawns
+ Amount: 10
+ - Item: Yggdrasilberry
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Agi_Dish10
+ Consumed:
+ - Item: Aloebera
+ Amount: 2
+ - Item: Bitter_Herb
+ Amount: 3
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 3
+ - Item: Pot
+ Amount: 1
+ - Item: Royal_Jelly
+ Amount: 10
+ - Item: Scorpion's_Tail
+ Amount: 20
+ - Item: Scropion's_Nipper
+ Amount: 20
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Vit_Dish10
+ Consumed:
+ - Item: Amulet
+ Amount: 10
+ - Item: Anodyne
+ Amount: 2
+ - Item: Bitter_Herb
+ Amount: 2
+ - Item: Heart_Of_Mermaid
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 2
+ - Item: Immortal_Heart
+ Amount: 20
+ - Item: Mementos
+ Amount: 10
+ - Item: Seed_Of_Yggdrasil
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - Product: Luk_Dish10
+ Consumed:
+ - Item: Four_Leaf_Clover
+ Amount: 2
+ - Item: Fox_Tail
+ Amount: 10
+ - Item: Izidor
+ Amount: 2
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 4
+ - Item: Plain_Sauce
+ Amount: 1
+ - Item: Root_Of_Maneater
+ Amount: 10
+ - Item: Sharp_Leaf
+ Amount: 10
+ - Item: Yellow_Spice
+ Amount: 1
+ NotConsumed:
+ - Item: Cookbook10
+ - ItemLevel: 21
+ Recipe:
+ - Product: Iron
+ SkillName: BS_IRON
+ SkillLevel: 1
+ Consumed:
+ - Item: Iron_Ore
+ Amount: 1
+ - Product: Steel
+ SkillName: BS_STEEL
+ SkillLevel: 1
+ Consumed:
+ - Item: Coal
+ Amount: 1
+ - Item: Iron
+ Amount: 5
+ - Product: Star_Crumb
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Sparkling_Dust
+ Amount: 10
+ - Product: Flame_Heart
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Boody_Red
+ Amount: 10
+ - Product: Mistic_Frozen
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Crystal_Blue
+ Amount: 10
+ - Product: Great_Nature
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Yellow_Live
+ Amount: 10
+ - Product: Rough_Wind
+ SkillName: BS_ENCHANTEDSTONE
+ SkillLevel: 1
+ Consumed:
+ - Item: Wind_Of_Verdure
+ Amount: 10
+ - ItemLevel: 22
+ Recipe:
+ - Product: Red_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Red_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Yellow_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: White_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: White_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Blue_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Scell
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Red_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Cactus_Needle
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Red_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: Yellow_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Moustache_Of_Mole
+ Amount: 1
+ - Item: Yellow_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: White_Slim_Potion
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Starsand_Of_Witch
+ Amount: 1
+ - Item: White_Potion
+ Amount: 1
+ NotConsumed:
+ - Item: Slim_Potion_Create_Book
+ - Product: Holy_Water
+ SkillName: AL_HOLYWATER
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Product: Poison_Bottle
+ SkillName: ASC_CDP
+ SkillLevel: 1
+ Consumed:
+ - Item: Bee_Sting
+ Amount: 1
+ - Item: Berserk_Potion
+ Amount: 1
+ - Item: Cactus_Needle
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Karvodailnirol
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 1
+ - Item: Posionous_Canine
+ Amount: 1
+ - Product: Fire_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Transparent_Cloth
+ Amount: 1
+ NotConsumed:
+ - Item: FireBottle_Create_Book
+ - Product: Acid_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Immortal_Heart
+ Amount: 1
+ NotConsumed:
+ - Item: Acid_Create_Book
+ - Product: MenEater_Plant_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blossom_Of_Maneater
+ Amount: 2
+ - Item: Empty_Bottle
+ Amount: 1
+ NotConsumed:
+ - Item: Plant_Create_Book
+ - Product: Mini_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Detonator
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Tendon
+ Amount: 1
+ NotConsumed:
+ - Item: Mine_Create_Book
+ - Product: Coating_Bottle
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Heart_Of_Mermaid
+ Amount: 1
+ - Item: Tooth_Of_
+ Amount: 1
+ NotConsumed:
+ - Item: Coating_Create_Book
+ - Product: Resist_Fire
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Lizard_Scruff
+ Amount: 2
+ - Item: Red_Gemstone
+ Amount: 1
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Water
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Heart_Of_Mermaid
+ Amount: 3
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Earth
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Large_Jellopy
+ Amount: 2
+ - Item: Yellow_Gemstone
+ Amount: 1
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Resist_Wind
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Item: Empty_Potion
+ Amount: 1
+ - Item: Moth_Dust
+ Amount: 3
+ NotConsumed:
+ - Item: Elemental_Potion_Book
+ - Product: Anodyne
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Ment
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Aloebera
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Aloe
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Honey
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: Alchol
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 5
+ - Item: Stem
+ Amount: 5
+ NotConsumed:
+ - Item: Alcol_Create_Book
+ - Product: Germination_Breed
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Life_Force_Pot
+ Amount: 1
+ - Item: Seed_Of_Life
+ Amount: 1
+ - Item: Yggdrasilberry_Dew
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - Product: aegis_100371
+ SkillName: AM_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 1
+ - Item: Seed_Of_Life
+ Amount: 1
+ - Item: Yellow_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Normal_Potion_Book
+ - ItemLevel: 23
+ Recipe:
+ - Product: Elemental_Fire
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Scorpion's_Tail
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - Product: Elemental_Water
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Scroll
+ Amount: 1
+ - Item: Snail's_Shell
+ Amount: 3
+ - Product: Elemental_Earth
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Horn
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - Product: Elemental_Wind
+ SkillName: SA_CREATECON
+ SkillLevel: 1
+ Consumed:
+ - Item: Colorful_Shell
+ Amount: 3
+ - Item: Scroll
+ Amount: 1
+ - ItemLevel: 24
+ Recipe:
+ - Product: Ansila
+ SkillName: AB_ANCILLA
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Gemstone
+ Amount: 1
+ - Product: Runstone_Nosiege
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 8
+ Consumed:
+ - Item: Broken_Armor_Piece
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Old_Magic_Circle
+ Amount: 1
+ - Product: Runstone_Rhydo
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 7
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Red_Gemstone
+ Amount: 1
+ - Product: Runstone_Verkana
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 9
+ Consumed:
+ - Item: Dullahan_Armor
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Isia
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 2
+ Consumed:
+ - Item: Burning_Heart
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Asir
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 5
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Ogre_Tooth
+ Amount: 1
+ - Product: Runstone_Urj
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 6
+ Consumed:
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Honey
+ Amount: 1
+ - Item: Slender_Snake
+ Amount: 1
+ - Product: Runstone_Turisus
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 1
+ Consumed:
+ - Item: Claw_Of_Desert_Wolf
+ Amount: 1
+ - Item: Cobold_Hair
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Product: Runstone_Pertz
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 3
+ Consumed:
+ - Item: Dragon_Canine
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Light_Granule
+ Amount: 1
+ - Item: Tangled_Chain
+ Amount: 1
+ - Product: Runstone_Hagalas
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 4
+ Consumed:
+ - Item: Dragon's_Skin
+ Amount: 1
+ - Item: Elder_Branch
+ Amount: 1
+ - Item: Round_Shell
+ Amount: 1
+ - Product: Runstone_Lux
+ SkillName: RK_RUNEMASTERY
+ SkillLevel: 10
+ Consumed:
+ - Item: Gold
+ Amount: 3
+ - Item: Light_Granule
+ Amount: 3
+ - ItemLevel: 25
+ Recipe:
+ - Product: Guillotine_Antidote
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 5
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 1
+ - Item: Green_Herb
+ Amount: 2
+ - Item: White_Herb
+ Amount: 1
+ - Product: Poison_Paralysis
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 1
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Amoena
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Poison_Toad's_Skin
+ Amount: 20
+ - Product: Poison_Leech
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 4
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Nerium
+ Amount: 1
+ - Item: Poison_Herb_Scopolia
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Oblivion
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 9
+ Consumed:
+ - Item: Heart_Of_Mermaid
+ Amount: 10
+ - Item: Izidor
+ Amount: 1
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Contamination
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 3
+ Consumed:
+ - Item: Decayed_Nail
+ Amount: 25
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Seratum
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Numb
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 8
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Nerium
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Sticky_Poison
+ Amount: 10
+ - Product: Poison_Fever
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 2
+ Consumed:
+ - Item: Anolian_Skin
+ Amount: 20
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Rantana
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Product: Poison_Laughing
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 7
+ Consumed:
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Herb_Makulata
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Poison_Spore
+ Amount: 10
+ - Product: Poison_Fatigue
+ SkillName: GC_RESEARCHNEWPOISON
+ SkillLevel: 6
+ Consumed:
+ - Item: Izidor
+ Amount: 1
+ - Item: Medicine_Bowl
+ Amount: 1
+ - Item: Poison_Kit
+ Amount: 1
+ - Item: Sticky_Poison
+ Amount: 10
+ - ItemLevel: 27
+ Recipe:
+ - Product: Savage_BBQ
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Black_Charcoal
+ Amount: 1
+ - Item: Cooking_Skewer
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Savage_Meat
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Wug_Blood_Cocktail
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Cold_Ice
+ Amount: 2
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Wolf_Blood
+ Amount: 3
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Minor_Brisket
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Beef_Head_Meat
+ Amount: 2
+ - Item: Large_Cookpot
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Siroma_Icetea
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Comodo_Tropic_Fruit
+ Amount: 1
+ - Item: Ice_Crystal
+ Amount: 2
+ - Item: Ice_Fragment
+ Amount: 3
+ - Item: Melange_Pot
+ Amount: 1
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Drocera_Herb_Stew
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 3
+ - Item: Drocera_Tentacle
+ Amount: 3
+ - Item: Large_Cookpot
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Red_Herb
+ Amount: 3
+ - Item: White_Herb
+ Amount: 3
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - Product: Petti_Tail_Noodle
+ SkillName: GN_MIX_COOKING
+ SkillLevel: 1
+ Consumed:
+ - Item: Cool_Gravy
+ Amount: 1
+ - Item: Fine_Noodle
+ Amount: 1
+ - Item: Melange_Pot
+ Amount: 1
+ - Item: Petti_Tail
+ Amount: 2
+ NotConsumed:
+ - Item: Mix_Cook_Book
+ - ItemLevel: 29
+ Recipe:
+ - Product: Seed_Of_Horny_Plant
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Prickly_Fruit
+ Amount: 10
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: Bloodsuck_Plant_Seed
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Root_Of_Maneater
+ Amount: 10
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: Bomb_Mushroom_Spore
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Gun_Powder
+ Amount: 2
+ - Item: Mushroom_Spore
+ Amount: 10
+ - Item: Poison_Spore
+ Amount: 5
+ NotConsumed:
+ - Item: Plant_Genetic_Grow
+ - Product: HP_Increase_PotionS
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: Monster's_Feed
+ Amount: 5
+ - Item: White_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: HP_Increase_PotionM
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: White_Herb
+ Amount: 10
+ - Item: Yellow_Herb
+ Amount: 10
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: HP_Increase_PotionL
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 3
+ - Item: Holy_Water
+ Amount: 1
+ - Item: Hot_Sauce
+ Amount: 1
+ - Item: White_Herb
+ Amount: 15
+ NotConsumed:
+ - Item: Increase_Stamina_Study
+ - Product: SP_Increase_PotionS
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Grape
+ Amount: 10
+ - Item: Lemon
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: SP_Increase_PotionM
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Honey
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: SP_Increase_PotionL
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 15
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 10
+ - Item: Sweet_Sauce
+ Amount: 1
+ NotConsumed:
+ - Item: Vital_Drink_CB
+ - Product: Enrich_White_PotionZ
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Alchol
+ Amount: 1
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: White_Herb
+ Amount: 10
+ - Item: White_Potion
+ Amount: 20
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Vitata500
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 10
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Grape
+ Amount: 10
+ - Item: Honey
+ Amount: 10
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Enrich_Celermine_Juice
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Awakening_Potion
+ Amount: 5
+ - Item: Center_Potion
+ Amount: 5
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Hot_Sauce
+ Amount: 5
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Cure_Free
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Fruit_Of_Mastela
+ Amount: 1
+ - Item: Green_Herb
+ Amount: 20
+ - Item: Leaf_Of_Yggdrasil
+ Amount: 1
+ - Item: Panacea
+ Amount: 5
+ NotConsumed:
+ - Item: Quality_Potion_Book
+ - Product: Ref_T_Potion
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Gold
+ Amount: 5
+ - Item: Yggdrasilberry
+ Amount: 10
+ - Product: Add_Atk_Potion
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Red_Herb
+ Amount: 45
+ - Item: Seed_Of_Yggdrasil
+ Amount: 5
+ - Product: Add_Matk_Potion
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Herb
+ Amount: 15
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Seed_Of_Yggdrasil
+ Amount: 5
+ - Product: Concentrated_R_P
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 5
+ - Item: Red_Syrup
+ Amount: 15
+ - Product: Concentrated_B_P
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Blue_Syrup
+ Amount: 15
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 5
+ - Product: Concentrated_G_P
+ SkillName: GN_S_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Empty_Cylinder
+ Amount: 10
+ - Item: Empty_Potion
+ Amount: 5
+ - Item: White_Syrup
+ Amount: 10
+ - Item: Yellow_Syrup
+ Amount: 10
+ - ItemLevel: 30
+ Recipe:
+ - Product: Novice_Potion
+ Consumed:
+ - Item: Apple
+ Amount: 1
+ - Item: Red_Herb
+ Amount: 2
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: N_Magnifier
+ Consumed:
+ - Item: Jellopy
+ Amount: 1
+ - Item: Tree_Of_Archer_1
+ Amount: 3
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: N_Fly_Wing
+ Consumed:
+ - Item: Feather
+ Amount: 2
+ - Item: Fluff
+ Amount: 2
+ - Item: Jellopy
+ Amount: 2
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: N_Cutter
+ Consumed:
+ - Item: Phracon
+ Amount: 1
+ - Item: Shell
+ Amount: 10
+ - Item: Worm_Peelings
+ Amount: 10
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Unripe_Apple2
+ Consumed:
+ - Item: Apple
+ Amount: 1
+ - Item: Green_Herb
+ Amount: 1
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Four_Leaf_Clover
+ Consumed:
+ - Item: Clover
+ Amount: 200
+ - Item: Sticky_Mucus
+ Amount: 200
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Banana_Juice
+ Consumed:
+ - Item: Banana
+ Amount: 1
+ - Item: Milk
+ Amount: 1
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Apple_Juice
+ Consumed:
+ - Item: Apple
+ Amount: 1
+ - Item: Milk
+ Amount: 1
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Carrot_Juice
+ Consumed:
+ - Item: Carrot
+ Amount: 1
+ - Item: Milk
+ Amount: 1
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Grape_Juice
+ Consumed:
+ - Item: Grape
+ Amount: 1
+ - Item: Milk
+ Amount: 1
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - Product: Unripe_Apple
+ Consumed:
+ - Item: Apple
+ Amount: 10
+ - Item: Green_Herb
+ Amount: 20
+ - Item: Sticky_Mucus
+ Amount: 10
+ NotConsumed:
+ - Item: Novice_Combi_Book
+ - ItemLevel: 31
+ Recipe:
+ - Product: Device_Capsule
+ SkillName: MT_M_MACHINE
+ SkillLevel: 1
+ Consumed:
+ - Item: Magic_Gear_Fuel
+ Amount: 50
+ - Item: Oridecon_Hammer
+ Amount: 5
+ - Item: Portable_Furnace
+ Amount: 5
+ NotConsumed:
+ - Item: Device_Creation_Guide
+ - Product: Auto_Battle_Capsule
+ SkillName: MT_M_MACHINE
+ SkillLevel: 1
+ Consumed:
+ - Item: Magic_Gear_Fuel
+ Amount: 75
+ - Item: Oridecon_Hammer
+ Amount: 5
+ - Item: Portable_Furnace
+ Amount: 5
+ NotConsumed:
+ - Item: Device_Creation_Guide
+ - ItemLevel: 32
+ Recipe:
+ - Product: Flame_Acid_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Acid_Bottle
+ Amount: 5
+ - Item: Beaker
+ Amount: 1
+ - Item: Boody_Red
+ Amount: 2
+ - Item: Fire_Bottle
+ Amount: 5
+ - Product: Earth_Acid_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Acid_Bottle
+ Amount: 5
+ - Item: Beaker
+ Amount: 1
+ - Item: Fire_Bottle
+ Amount: 5
+ - Item: Yellow_Live
+ Amount: 2
+ - Product: Gale_Acid_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Acid_Bottle
+ Amount: 5
+ - Item: Beaker
+ Amount: 1
+ - Item: Fire_Bottle
+ Amount: 5
+ - Item: Wind_Of_Verdure
+ Amount: 2
+ - Product: Icicle_Acid_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Acid_Bottle
+ Amount: 5
+ - Item: Beaker
+ Amount: 1
+ - Item: Crystal_Blue
+ Amount: 2
+ - Item: Fire_Bottle
+ Amount: 5
+ - Product: High_Coating_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Coating_Bottle
+ Amount: 10
+ - Item: Empty_Bottle
+ Amount: 5
+ - Product: High_Plant_Bottle
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Bloodsuck_Plant_Seed
+ Amount: 2
+ - Item: Mandragora_Flowerpot
+ Amount: 5
+ - Item: MenEater_Plant_Bottle
+ Amount: 10
+ - Item: Seed_Of_Horny_Plant
+ Amount: 2
+ - Product: Eye_Cleaner
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Green_Herb
+ Amount: 3
+ - Item: Holy_Water
+ Amount: 5
+ - Item: White_Herb
+ Amount: 3
+ - Product: Ear_Cleaner
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Blue_Herb
+ Amount: 2
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Green_Herb
+ Amount: 3
+ - Item: Holy_Water
+ Amount: 5
+ - Product: Tonics
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Holy_Water
+ Amount: 5
+ - Item: Royal_Jelly
+ Amount: 3
+ - Item: Yggdrasilberry
+ Amount: 2
+ - Product: Mini_Extinguisher
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Crystal_Blue
+ Amount: 5
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Holy_Water
+ Amount: 5
+ - Item: Iron
+ Amount: 3
+ - Product: Water_Of_Lucky
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Clover
+ Amount: 10
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Green_Herb
+ Amount: 3
+ - Item: Holy_Water
+ Amount: 5
+ - Product: Strong_Antidote
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Green_Herb
+ Amount: 10
+ - Item: Holy_Water
+ Amount: 5
+ - Item: Poison_Bottle
+ Amount: 3
+ - Product: High_Energy_Chocolate
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Cacao
+ Amount: 3
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 3
+ - Item: Seed_Of_Yggdrasil
+ Amount: 5
+ - Product: Refined_Holy_Water
+ SkillName: BO_BIONIC_PHARMACY
+ SkillLevel: 1
+ Consumed:
+ - Item: Beaker
+ Amount: 1
+ - Item: Empty_Bottle
+ Amount: 10
+ - Item: Holy_Water
+ Amount: 10
+ - Item: Royal_Jelly
+ Amount: 3
diff --git a/doc/yaml/db/produce_db.yml b/doc/yaml/db/produce_db.yml
new file mode 100644
index 0000000000..2bde8ce205
--- /dev/null
+++ b/doc/yaml/db/produce_db.yml
@@ -0,0 +1,28 @@
+###########################################################################
+# Item Produce Database
+###########################################################################
+#
+# Item Produce Settings
+#
+###########################################################################
+# - ItemLevel Number which determines what kind of a crafting window will pop-up.
+# Recipe:
+# - Product AegisName of the produced item.
+# SkillName Skill name required. (Default: null)
+# SkillLevel Skill level required. (Default: 1)
+# Consumed: List of items consumed to produce the Product.
+# - Item AegisName of the consumed item.
+# Amount Amount required.
+# Clear Remove the item with the given AegisName from Consumed. (Optional)
+# NotConsumed: List of items not consumed to produce the Product. (Default: null)
+# - Item AegisName of the unconsumed item.
+# Clear Remove the item with the given AegisName from NotConsumed. (Optional)
+#
+###########################################################################
+# Additional fields for Change Material (ItemLevel: 26):
+#
+# BaseRate Base rate (in n/10%). (Default: 1000)
+# Make: List of item amounts with their individual rate produced by Change Material. (Default: null)
+# - Amount Amount of item created (unique to the list).
+# Rate Rate to create the Amount (in n/10%). Default: 1000. 0 to remove on import.
+###########################################################################
diff --git a/src/map/clif.cpp b/src/map/clif.cpp
index 3a7ff9bef0..28d65c44a6 100644
--- a/src/map/clif.cpp
+++ b/src/map/clif.cpp
@@ -6383,37 +6383,34 @@ void clif_skill_estimation(map_session_data *sd,struct block_list *dst)
void clif_skill_produce_mix_list( map_session_data *sd, int skill_id, int trigger ){
nullpo_retv(sd);
- int fd = sd->fd;
-
- if( !session_isActive( fd ) ){
- return;
- }
-
if (sd->menuskill_id == skill_id)
return; //Avoid resending the menu twice or more times...
if (skill_id == GC_CREATENEWPOISON)
skill_id = GC_RESEARCHNEWPOISON;
- WFIFOHEAD( fd, sizeof( struct PACKET_ZC_MAKABLEITEMLIST ) + MAX_SKILL_PRODUCE_DB * sizeof( struct PACKET_ZC_MAKABLEITEMLIST_sub ) );
- struct PACKET_ZC_MAKABLEITEMLIST *p = (struct PACKET_ZC_MAKABLEITEMLIST *)WFIFOP( fd, 0 );
+ struct PACKET_ZC_MAKABLEITEMLIST *p = (struct PACKET_ZC_MAKABLEITEMLIST *)packet_buffer;
p->packetType = 0x18d;
int count = 0;
- for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){
- if (skill_can_produce_mix(sd,skill_produce_db[i].nameid, trigger, 1) &&
- (skill_id <= 0 || skill_produce_db[i].req_skill == skill_id)
- )
- {
- p->items[count].itemId = client_nameid( skill_produce_db[i].nameid );
- p->items[count].material[0] = 0;
- p->items[count].material[1] = 0;
- p->items[count].material[2] = 0;
- count++;
+ for (const auto &itemlvit : skill_produce_db) {
+ if (itemlvit.second->data.empty())
+ continue;
+ for (const auto &datait : itemlvit.second->data) {
+ if (skill_can_produce_mix(sd, datait.second->nameid, trigger, 1) != nullptr &&
+ (skill_id <= 0 || (skill_id > 0 && datait.second->req_skill == skill_id))
+ )
+ {
+ p->items[count].itemId = client_nameid( datait.second->nameid );
+ p->items[count].material[0] = 0;
+ p->items[count].material[1] = 0;
+ p->items[count].material[2] = 0;
+ count++;
+ }
}
}
p->packetLength = sizeof( struct PACKET_ZC_MAKABLEITEMLIST ) + count * sizeof( struct PACKET_ZC_MAKABLEITEMLIST_sub );
- WFIFOSET( fd, p->packetLength );
+ clif_send( p, p->packetLength, &sd->bl, SELF );
if( count > 0 ){
sd->menuskill_id = skill_id;
@@ -6442,31 +6439,28 @@ void clif_cooking_list( map_session_data *sd, int trigger, uint16 skill_id, int
return;
}
- int fd = sd->fd;
-
- if( !session_isActive( fd ) ){
- return;
- }
-
- WFIFOHEAD( fd, sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + MAX_SKILL_PRODUCE_DB * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub ) );
- struct PACKET_ZC_MAKINGITEM_LIST *p = (struct PACKET_ZC_MAKINGITEM_LIST *)WFIFOP( fd, 0 );
+ struct PACKET_ZC_MAKINGITEM_LIST *p = (struct PACKET_ZC_MAKINGITEM_LIST *)packet_buffer;
p->packetType = 0x25a;
p->makeItem = list_type; // list type
int count = 0;
- for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){
- if( !skill_can_produce_mix( sd, skill_produce_db[i].nameid, trigger, qty ) ){
+ for (const auto &itemlvit : skill_produce_db) {
+ if (itemlvit.second->data.empty())
continue;
- }
+ for (const auto &datait : itemlvit.second->data) {
+ if( skill_can_produce_mix( sd, datait.second->nameid, trigger, qty ) == nullptr ){
+ continue;
+ }
- p->items[count].itemId = client_nameid( skill_produce_db[i].nameid );
- count++;
+ p->items[count].itemId = client_nameid( datait.second->nameid );
+ count++;
+ }
}
if( count > 0 || skill_id == AM_PHARMACY ){
p->packetLength = sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + count * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub );
- WFIFOSET( fd, p->packetLength );
+ clif_send( p, p->packetLength, &sd->bl, SELF );
sd->menuskill_id = skill_id;
sd->menuskill_val = trigger;
@@ -6477,7 +6471,7 @@ void clif_cooking_list( map_session_data *sd, int trigger, uint16 skill_id, int
clif_msg_skill( sd, skill_id, INVENTORY_SPACE_FULL );
#else
p->packetLength = sizeof( struct PACKET_ZC_MAKINGITEM_LIST ) + count * sizeof( struct PACKET_ZC_MAKINGITEM_LIST_sub );
- WFIFOSET( fd, p->packetLength );
+ clif_send( p, p->packetLength, &sd->bl, SELF );
#endif
}
}
@@ -13230,10 +13224,10 @@ void clif_parse_ProduceMix(int fd,map_session_data *sd){
return;
}
- int produce_idx;
+ std::shared_ptr produce = skill_can_produce_mix(sd,p->itemId,sd->menuskill_val, 1);
- if( (produce_idx = skill_can_produce_mix(sd,p->itemId,sd->menuskill_val, 1)) )
- skill_produce_mix(sd,0,p->itemId,p->material[0],p->material[1],p->material[2],1,produce_idx-1);
+ if( produce != nullptr )
+ skill_produce_mix(sd,0,p->itemId,p->material[0],p->material[1],p->material[2],1,produce);
clif_menuskill_clear(sd);
}
@@ -13253,7 +13247,6 @@ void clif_parse_Cooking(int fd,map_session_data *sd) {
const struct PACKET_CZ_REQ_MAKINGITEM *p = (struct PACKET_CZ_REQ_MAKINGITEM *)RFIFOP( fd, 0 );
int amount = sd->menuskill_val2 ? sd->menuskill_val2 : 1;
- short food_idx = -1;
if( p->type == 6 && sd->menuskill_id != GN_MIX_COOKING && sd->menuskill_id != GN_S_PHARMACY )
return;
@@ -13264,8 +13257,11 @@ void clif_parse_Cooking(int fd,map_session_data *sd) {
clif_menuskill_clear(sd);
return;
}
- if( (food_idx = skill_can_produce_mix(sd,p->itemId,sd->menuskill_val, amount)) )
- skill_produce_mix(sd,(p->type>1?sd->menuskill_id:0),p->itemId,0,0,0,amount,food_idx-1);
+
+ std::shared_ptr produce = skill_can_produce_mix(sd,p->itemId,sd->menuskill_val, amount);
+
+ if( produce != nullptr )
+ skill_produce_mix(sd,(p->type>1?sd->menuskill_id:0),p->itemId,0,0,0,amount,produce);
clif_menuskill_clear(sd);
}
@@ -13457,7 +13453,7 @@ void clif_parse_SelectArrow(int fd,map_session_data *sd) {
skill_arrow_create(sd,p->itemId);
break;
case SA_CREATECON:
- skill_produce_mix(sd,SA_CREATECON,p->itemId,0,0,0,1,-1);
+ skill_produce_mix(sd,SA_CREATECON,p->itemId,0,0,0,1, nullptr);
break;
case GC_POISONINGWEAPON:
skill_poisoningweapon(sd,p->itemId);
@@ -19521,10 +19517,14 @@ void clif_elementalconverter_list( map_session_data *sd ){
p->packetType = HEADER_ZC_MAKINGARROW_LIST;
int count = 0;
- for( int i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ){
- if( skill_can_produce_mix( sd, skill_produce_db[i].nameid, 23, 1 ) ){
- p->items[count].itemId = client_nameid( skill_produce_db[i].nameid );
- count++;
+ for (const auto &itemlvit : skill_produce_db) {
+ if (itemlvit.second->data.empty())
+ continue;
+ for (const auto &datait : itemlvit.second->data) {
+ if( skill_can_produce_mix( sd, datait.second->nameid, 23, 1 ) ){
+ p->items[count].itemId = client_nameid( datait.second->nameid );
+ count++;
+ }
}
}
diff --git a/src/map/map-server.vcxproj b/src/map/map-server.vcxproj
index b1ef40a27c..c7e7ebff1e 100644
--- a/src/map/map-server.vcxproj
+++ b/src/map/map-server.vcxproj
@@ -363,12 +363,11 @@
-
+
-
diff --git a/src/map/skill.cpp b/src/map/skill.cpp
index 1b78c58815..067ebd2276 100755
--- a/src/map/skill.cpp
+++ b/src/map/skill.cpp
@@ -64,26 +64,11 @@ struct skill_usave {
uint16 skill_id, skill_lv;
};
-struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB];
-static unsigned short skill_produce_count;
-
AbraDatabase abra_db;
+MagicMushroomDatabase magic_mushroom_db;
ReadingSpellbookDatabase reading_spellbook_db;
SkillArrowDatabase skill_arrow_db;
-
-#define MAX_SKILL_CHANGEMATERIAL_DB 75
-#define MAX_SKILL_CHANGEMATERIAL_SET 3
-struct s_skill_changematerial_db {
- t_itemid nameid;
- unsigned short rate;
- unsigned short qty[MAX_SKILL_CHANGEMATERIAL_SET];
- unsigned short qty_rate[MAX_SKILL_CHANGEMATERIAL_SET];
-};
-struct s_skill_changematerial_db skill_changematerial_db[MAX_SKILL_CHANGEMATERIAL_DB];
-static unsigned short skill_changematerial_count;
-
-
-MagicMushroomDatabase magic_mushroom_db;
+SkillProduceDatabase skill_produce_db;
struct s_skill_unit_layout skill_unit_layout[MAX_SKILL_UNIT_LAYOUT];
int firewall_unit_pos;
@@ -9204,7 +9189,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case AL_HOLYWATER:
if(sd) {
- if (skill_produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1, -1)) {
+ if (skill_produce_mix(sd, skill_id, ITEMID_HOLY_WATER, 0, 0, 0, 1, nullptr)) {
struct skill_unit* su;
if ((su = map_find_skill_unit_oncell(bl, bl->x, bl->y, NJ_SUITON, NULL, 0)) != NULL)
skill_delunit(su);
@@ -9239,7 +9224,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
break;
case ASC_CDP:
if(sd) {
- if(skill_produce_mix(sd, skill_id, ITEMID_POISON_BOTTLE, 0, 0, 0, 1, -1)) //Produce a Poison Bottle.
+ if(skill_produce_mix(sd, skill_id, ITEMID_POISON_BOTTLE, 0, 0, 0, 1, nullptr)) //Produce a Poison Bottle.
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
else
clif_skill_fail(sd,skill_id,USESKILL_FAIL_STUFF_INSUFFICIENT,0);
@@ -9429,7 +9414,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if (sd) {
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 White Potions.
- if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_POTION, 0, 0, 0, 200, -1))
+ if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_POTION, 0, 0, 0, 200, nullptr))
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
}
break;
@@ -9437,29 +9422,33 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if (sd) {
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
//Prepare 200 Slim White Potions.
- if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_SLIM_POTION, 0, 0, 0, 200, -1))
+ if (!skill_produce_mix(sd, skill_id, ITEMID_WHITE_SLIM_POTION, 0, 0, 0, 200, nullptr))
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
}
break;
case AM_TWILIGHT3:
if (sd) {
int ebottle = pc_search_inventory(sd,ITEMID_EMPTY_BOTTLE);
- short alcohol_idx = -1, acid_idx = -1, fire_idx = -1;
+
+ std::shared_ptr produce_alcohol = skill_can_produce_mix(sd,ITEMID_ALCOHOL,-1, 100);
+ std::shared_ptr produce_acid = skill_can_produce_mix(sd,ITEMID_ACID_BOTTLE,-1, 50);
+ std::shared_ptr produce_fire = skill_can_produce_mix(sd,ITEMID_FIRE_BOTTLE,-1, 50);
+
if( ebottle >= 0 )
ebottle = sd->inventory.u.items_inventory[ebottle].amount;
//check if you can produce all three, if not, then fail:
- if (!(alcohol_idx = skill_can_produce_mix(sd,ITEMID_ALCOHOL,-1, 100)) //100 Alcohol
- || !(acid_idx = skill_can_produce_mix(sd,ITEMID_ACID_BOTTLE,-1, 50)) //50 Acid Bottle
- || !(fire_idx = skill_can_produce_mix(sd,ITEMID_FIRE_BOTTLE,-1, 50)) //50 Flame Bottle
+ if (produce_alcohol == nullptr //100 Alcohol
+ || produce_acid == nullptr //50 Acid Bottle
+ || produce_fire == nullptr //50 Flame Bottle
|| ebottle < 200 //200 empty bottle are required at total.
) {
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
break;
}
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
- skill_produce_mix(sd, skill_id, ITEMID_ALCOHOL, 0, 0, 0, 100, alcohol_idx-1);
- skill_produce_mix(sd, skill_id, ITEMID_ACID_BOTTLE, 0, 0, 0, 50, acid_idx-1);
- skill_produce_mix(sd, skill_id, ITEMID_FIRE_BOTTLE, 0, 0, 0, 50, fire_idx-1);
+ skill_produce_mix(sd, skill_id, ITEMID_ALCOHOL, 0, 0, 0, 100, produce_alcohol);
+ skill_produce_mix(sd, skill_id, ITEMID_ACID_BOTTLE, 0, 0, 0, 50, produce_acid);
+ skill_produce_mix(sd, skill_id, ITEMID_FIRE_BOTTLE, 0, 0, 0, 50, produce_fire);
}
break;
case SA_DISPELL:
@@ -10818,7 +10807,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case AB_ANCILLA:
if( sd ) {
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
- skill_produce_mix(sd, skill_id, ITEMID_ANCILLA, 0, 0, 0, 1, -1);
+ skill_produce_mix(sd, skill_id, ITEMID_ANCILLA, 0, 0, 0, 1, nullptr);
}
break;
@@ -21406,74 +21395,83 @@ void skill_unit_move_unit_group(std::shared_ptr group, int16
* @param nameid Product requested
* @param trigger Trigger criteria to match will 'ItemLv'
* @param qty Amount of item will be created
- * @return 0 If failed or Index+1 of item found on skill_produce_db[]
+ * @return nullptr If failed or s_skill_produce_db_entry on success
*/
-short skill_can_produce_mix(map_session_data *sd, t_itemid nameid, int trigger, int qty)
+std::shared_ptr skill_can_produce_mix(map_session_data *sd, t_itemid nameid, int trigger, int qty)
{
- nullpo_ret(sd);
+ if (sd == nullptr)
+ return nullptr;
- if (!item_db.exists(nameid))
- return 0;
+ if (!nameid || !item_db.exists(nameid))
+ return nullptr;
- short i, j;
+ std::shared_ptr produce = nullptr;
- for (i = 0; i < MAX_SKILL_PRODUCE_DB; i++) {
- if (skill_produce_db[i].nameid == nameid) {
- if ((j = skill_produce_db[i].req_skill) > 0 &&
- pc_checkskill(sd,j) < skill_produce_db[i].req_skill_lv)
- continue; // must iterate again to check other skills that produce it. [malufett]
- if (j > 0 && sd->menuskill_id > 0 && sd->menuskill_id != j)
- continue; // special case
- break;
+ for (const auto &itemlvit : skill_produce_db) {
+ if (itemlvit.second->data.empty())
+ continue;
+ for (const auto &datait : itemlvit.second->data) {
+ if (datait.second->nameid == nameid) {
+ if (datait.second->req_skill > 0 && pc_checkskill(sd, datait.second->req_skill) < datait.second->req_skill_lv)
+ continue; // must iterate again to check other skills that produce it. [malufett]
+ if (datait.second->req_skill > 0 && sd->menuskill_id > 0 && sd->menuskill_id != datait.second->req_skill)
+ continue; // special case
+ produce = datait.second;
+ break;
+ }
}
+ if (produce != nullptr)
+ break;
}
if (nameid == ITEMID_HOMUNCULUS_SUPPLEMENT) { // Temporary check since the produce_db specifically wants the Pharmacy skill to use
if (pc_checkskill(sd, AM_BIOETHICS) == 0)
- return 0;
+ return nullptr;
}
- if (i >= MAX_SKILL_PRODUCE_DB)
- return 0;
+ if (produce == nullptr)
+ return nullptr;
// Cannot carry the produced stuff
if (pc_checkadditem(sd, nameid, qty) == CHKADDITEM_OVERAMOUNT)
- return 0;
+ return nullptr;
// Matching the requested produce list
if (trigger >= 0) {
if (trigger > 20) { // Non-weapon, non-food item (itemlv must match)
- if (skill_produce_db[i].itemlv != trigger)
- return 0;
+ if (produce->itemlv != trigger)
+ return nullptr;
} else if (trigger > 10) { // Food (any item level between 10 and 20 will do)
- if (skill_produce_db[i].itemlv <= 10 || skill_produce_db[i].itemlv > 20)
- return 0;
+ if (produce->itemlv <= 10 || produce->itemlv > 20)
+ return nullptr;
} else { // Weapon (itemlv must be higher or equal)
- if (skill_produce_db[i].itemlv > trigger)
- return 0;
+ if (produce->itemlv > trigger)
+ return nullptr;
}
}
- // Check on player's inventory
- for (j = 0; j < MAX_PRODUCE_RESOURCE; j++) {
- t_itemid nameid_produce;
+ if (produce->materials.empty())
+ return produce;
- if (!(nameid_produce = skill_produce_db[i].mat_id[j]))
- continue;
- if (skill_produce_db[i].mat_amount[j] == 0) {
- if (pc_search_inventory(sd,nameid_produce) < 0)
- return 0;
+ // Check on player's inventory
+ for (const auto &it : produce->materials) {
+ if (!item_db.exists(it.first))
+ return nullptr;
+ if (it.second == 0) {
+ if (pc_search_inventory(sd, it.first) < 0)
+ return nullptr;
} else {
unsigned short idx, amt;
for (idx = 0, amt = 0; idx < MAX_INVENTORY; idx++)
- if (sd->inventory.u.items_inventory[idx].nameid == nameid_produce)
+ if (sd->inventory.u.items_inventory[idx].nameid == it.first)
amt += sd->inventory.u.items_inventory[idx].amount;
- if (amt < qty * skill_produce_db[i].mat_amount[j])
- return 0;
+ if (amt < qty * it.second)
+ return nullptr;
}
}
- return i + 1;
+
+ return produce;
}
/**
@@ -21485,41 +21483,40 @@ short skill_can_produce_mix(map_session_data *sd, t_itemid nameid, int trigger,
* @param slot2
* @param slot3
* @param qty Amount of requested item
- * @param produce_idx Index of produce entry in skill_produce_db[]. (Optional. Assumed the requirements are complete, checked somewhere)
+ * @param s_skill_produce_db_entry. (Optional. Assumed the requirements are complete, checked somewhere)
* @return True is success, False if failed
*/
-bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, short produce_idx)
+bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, std::shared_ptr produce)
{
- int slot[3];
- int i, sc, ele, idx, equip, wlv, make_per = 0, flag = 0, skill_lv = 0;
- int num = -1; // exclude the recipe
- struct status_data *status;
-
nullpo_ret(sd);
- status = status_get_status_data(&sd->bl);
+ if (!item_db.exists(nameid))
+ return false;
+
+ int i, sc, ele, equip, wlv, make_per = 0, flag = 0, skill_lv = 0;
+ int num = -1; // exclude the recipe
+ struct status_data *status = status_get_status_data(&sd->bl);
if( sd->skill_id_old == skill_id )
skill_lv = sd->skill_lv_old;
- if (produce_idx == -1) {
- if( !(idx = skill_can_produce_mix(sd,nameid,-1, qty)) )
+ if (produce == nullptr) {
+ produce = skill_can_produce_mix(sd,nameid,-1, qty);
+ if( produce == nullptr )
return false;
-
- idx--;
}
- else
- idx = produce_idx;
if (qty < 1)
qty = 1;
if (!skill_id) //A skill can be specified for some override cases.
- skill_id = skill_produce_db[idx].req_skill;
+ skill_id = produce->req_skill;
if( skill_id == GC_RESEARCHNEWPOISON )
skill_id = GC_CREATENEWPOISON;
+ int slot[3];
+
slot[0] = slot1;
slot[1] = slot2;
slot[2] = slot3;
@@ -21542,30 +21539,32 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
}
}
- for (i = 0; i < MAX_PRODUCE_RESOURCE; i++) {
- short x, j;
- t_itemid id = skill_produce_db[idx].mat_id[i];
+ if (!produce->materials.empty()) {
+ for (const auto &mat : produce->materials) {
+ short x, j;
+ t_itemid id = mat.first;
- if (!item_db.exists(id))
- continue;
- num++;
- x = (skill_id == RK_RUNEMASTERY ? 1 : qty) * skill_produce_db[idx].mat_amount[i];
- do {
- int y = 0;
+ if (!item_db.exists(id))
+ continue;
+ num++;
+ x = (skill_id == RK_RUNEMASTERY ? 1 : qty) * mat.second;
+ do {
+ int y = 0;
- j = pc_search_inventory(sd,id);
+ j = pc_search_inventory(sd,id);
- if (j >= 0) {
- y = sd->inventory.u.items_inventory[j].amount;
- if (y > x)
- y = x;
- pc_delitem(sd,j,y,0,0,LOG_TYPE_PRODUCE);
- } else {
- ShowError("skill_produce_mix: material item error\n");
- return false;
- }
- x -= y;
- } while( j >= 0 && x > 0 );
+ if (j >= 0) {
+ y = sd->inventory.u.items_inventory[j].amount;
+ if (y > x)
+ y = x;
+ pc_delitem(sd,j,y,0,0,LOG_TYPE_PRODUCE);
+ } else {
+ ShowError("skill_produce_mix: material item error\n");
+ return false;
+ }
+ x -= y;
+ } while( j >= 0 && x > 0 );
+ }
}
if ((equip = (itemdb_isequip(nameid) && skill_id != GN_CHANGEMATERIAL && skill_id != GN_MAKEBOMB)) && itemdb_type(nameid) == IT_WEAPON )
@@ -21698,12 +21697,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
qty = 1+rnd()%pc_checkskill(sd,GC_RESEARCHNEWPOISON);
break;
case GN_CHANGEMATERIAL:
- for (i = 0; i < MAX_SKILL_CHANGEMATERIAL_DB; i++) {
- if (skill_changematerial_db[i].nameid == nameid) {
- make_per = skill_changematerial_db[i].rate * 10;
- break;
- }
- }
+ make_per = produce->baserate * 10;
break;
case GN_S_PHARMACY:
{
@@ -21828,7 +21822,7 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
+ 20 * (sd->status.base_level + 1)
+ 20 * (status->dex + 1)
+ 100 * (rnd()%(30+5*(sd->cook_mastery/400) - (6+sd->cook_mastery/80)) + (6+sd->cook_mastery/80))
- - 400 * (skill_produce_db[idx].itemlv - 11 + 1)
+ - 400 * (produce->itemlv - 11 + 1)
- 10 * (100 - status->luk + 1)
- 500 * (num - 1)
- 100 * (rnd()%4 + 1);
@@ -21984,36 +21978,33 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
clif_misceffect(&sd->bl,3);
break;
default: //Those that don't require a skill?
- if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20) { //Cooking items.
+ if (produce->itemlv > 10 && produce->itemlv <= 20) { //Cooking items.
clif_specialeffect(&sd->bl, EF_COOKING_OK, AREA);
- pc_setparam(sd, SP_COOKMASTERY, sd->cook_mastery + ( 1 << ( (skill_produce_db[idx].itemlv - 11) / 2 ) ) * 5);
+ pc_setparam(sd, SP_COOKMASTERY, sd->cook_mastery + ( 1 << ( (produce->itemlv - 11) / 2 ) ) * 5);
}
break;
}
}
if (skill_id == GN_CHANGEMATERIAL && tmp_item.amount) { //Success
- int j, k = 0, l;
+ int k = 0, l;
bool isStackable = itemdb_isstackable(tmp_item.nameid);
- for (i = 0; i < MAX_SKILL_CHANGEMATERIAL_DB; i++) {
- if (skill_changematerial_db[i].nameid == nameid){
- for (j = 0; j < MAX_SKILL_CHANGEMATERIAL_SET; j++){
- if (rnd()%1000 < skill_changematerial_db[i].qty_rate[j]){
- uint16 total_qty = qty * skill_changematerial_db[i].qty[j];
- tmp_item.amount = (isStackable ? total_qty : 1);
- for (l = 0; l < total_qty; l += tmp_item.amount) {
- if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
- clif_additem(sd,0,0,flag);
- if( battle_config.skill_drop_items_full ){
- map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
- }
+ if (!produce->qty.empty()) {
+ for (const auto &qtyit : produce->qty) {
+ if (rnd()%1000 < qtyit.second){
+ uint16 total_qty = qty * qtyit.first;
+ tmp_item.amount = (isStackable ? total_qty : 1);
+ for (l = 0; l < total_qty; l += tmp_item.amount) {
+ if ((flag = pc_additem(sd,&tmp_item,tmp_item.amount,LOG_TYPE_PRODUCE))) {
+ clif_additem(sd,0,0,flag);
+ if( battle_config.skill_drop_items_full ){
+ map_addflooritem(&tmp_item,tmp_item.amount,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0,0);
}
}
- k++;
}
+ k++;
}
- break;
}
}
if (k) {
@@ -22138,10 +22129,10 @@ bool skill_produce_mix(map_session_data *sd, uint16 skill_id, t_itemid nameid, i
clif_msg_skill(sd, skill_id, ITEM_PRODUCE_FAIL);
break;
default:
- if (skill_produce_db[idx].itemlv > 10 && skill_produce_db[idx].itemlv <= 20 ) { //Cooking items.
+ if (produce->itemlv > 10 && produce->itemlv <= 20 ) { //Cooking items.
clif_specialeffect(&sd->bl, EF_COOKING_FAIL, AREA);
// todo: What in the world is this calculation
- pc_setparam(sd, SP_COOKMASTERY, sd->cook_mastery - ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) - ( ( ( 1 << ((skill_produce_db[idx].itemlv - 11) / 2) ) >> 1 ) * 3 ));
+ pc_setparam(sd, SP_COOKMASTERY, sd->cook_mastery - ( 1 << ((produce->itemlv - 11) / 2) ) - ( ( ( 1 << ((produce->itemlv - 11) / 2) ) >> 1 ) * 3 ));
}
break;
}
@@ -22483,49 +22474,54 @@ int skill_elementalanalysis(map_session_data* sd, int n, uint16 skill_lv, unsign
}
int skill_changematerial(map_session_data *sd, int n, unsigned short *item_list) {
- int i, j, k, c, p = 0, amount;
+ int k, c, p = 0, amount;
t_itemid nameid;
nullpo_ret(sd);
nullpo_ret(item_list);
+ uint16 item_lv = 26;
+ std::shared_ptr produce = skill_produce_db.find(item_lv);
+ if (produce == nullptr || produce->data.empty())
+ return 0;
+
// Search for objects that can be created.
- for( i = 0; i < MAX_SKILL_PRODUCE_DB; i++ ) {
- if( skill_produce_db[i].itemlv == 26 && skill_produce_db[i].nameid > 0 ) {
- p = 0;
- do {
- c = 0;
- // Verification of overlap between the objects required and the list submitted.
- for( j = 0; j < MAX_PRODUCE_RESOURCE; j++ ) {
- if( skill_produce_db[i].mat_id[j] > 0 ) {
- for( k = 0; k < n; k++ ) {
- int idx = item_list[k*2+0]-2;
+ for (const auto &datait : produce->data) {
+ std::shared_ptr data = datait.second;
- if( idx < 0 || idx >= MAX_INVENTORY ){
- return 0;
- }
+ if (!item_db.exists(data->nameid))
+ return 0;
+ if (data->materials.empty())
+ return 0;
- nameid = sd->inventory.u.items_inventory[idx].nameid;
- amount = item_list[k*2+1];
- if( nameid > 0 && sd->inventory.u.items_inventory[idx].identify == 0 ){
- clif_msg_skill(sd,GN_CHANGEMATERIAL,ITEM_UNIDENTIFIED);
- return 0;
- }
- if( nameid == skill_produce_db[i].mat_id[j] && (amount-p*skill_produce_db[i].mat_amount[j]) >= skill_produce_db[i].mat_amount[j]
- && (amount-p*skill_produce_db[i].mat_amount[j])%skill_produce_db[i].mat_amount[j] == 0 ) // must be in exact amount
- c++; // match
- }
+ p = 0;
+ do {
+ c = 0;
+ // Verification of overlap between the objects required and the list submitted.
+ for (const auto &mat : data->materials) {
+ for( k = 0; k < n; k++ ) {
+ int idx = item_list[k*2]-2;
+
+ if( idx < 0 || idx >= MAX_INVENTORY ){
+ return 0;
}
- else
- break; // No more items required
+
+ nameid = sd->inventory.u.items_inventory[idx].nameid;
+ amount = item_list[k*2+1];
+ if( nameid > 0 && sd->inventory.u.items_inventory[idx].identify == 0 ){
+ clif_msg_skill(sd,GN_CHANGEMATERIAL,ITEM_UNIDENTIFIED);
+ return 0;
+ }
+ if (nameid == mat.first && (amount - p * mat.second) >= mat.second && (amount - p * mat.second) % mat.second == 0) // must be in exact amount
+ c++; // match
}
- p++;
- } while(n == j && c == n);
- p--;
- if ( p > 0 ) {
- skill_produce_mix(sd,GN_CHANGEMATERIAL,skill_produce_db[i].nameid,0,0,0,p,i);
- return 1;
}
+ p++;
+ } while(n == data->materials.size() && c == n);
+ p--;
+ if ( p > 0 ) {
+ skill_produce_mix(sd,GN_CHANGEMATERIAL,datait.second->nameid,0,0,0,p, datait.second);
+ return 1;
}
}
@@ -24574,48 +24570,222 @@ static bool skill_parse_row_nocastdb(char* split[], int columns, int current)
return true;
}
-/** Reads Produce db
- * Structure: ProduceItemID,ItemLV,RequireSkill,Requireskill_lv,MaterialID1,MaterialAmount1,...
+bool SkillProduceDatabase::add_itemconsumed(const ryml::NodeRef& node, std::shared_ptr &entry, bool isConsumed) {
+ for (const auto &it : node) {
+ if (this->nodeExists(it, "Clear")) {
+ std::string item_name;
+
+ if (!this->asString(it, "Clear", item_name))
+ return 0;
+
+ std::shared_ptr item = item_db.search_aegisname(item_name.c_str());
+
+ if (item == nullptr) {
+ this->invalidWarning(it["Clear"], "Item %s does not exist.\n", item_name.c_str());
+ return 0;
+ }
+
+ if (entry->materials.erase(item->nameid) == 0)
+ this->invalidWarning(it["Clear"], "Item %s was not defined.\n", item_name.c_str());
+
+ continue;
+ }
+
+ std::string item_name;
+
+ if (!this->asString(it, "Item", item_name))
+ return 0;
+
+ std::shared_ptr item = item_db.search_aegisname(item_name.c_str());
+
+ if (item == nullptr) {
+ this->invalidWarning(it["Item"], "Item %s does not exist.\n", item_name.c_str());
+ return 0;
+ }
+
+ uint16 amount;
+
+ if (!isConsumed)
+ amount = 0;
+ else {
+ if (!this->asUInt16Rate(it, "Amount", amount, MAX_AMOUNT))
+ return 0;
+ }
+
+ entry->materials[item->nameid] = amount;
+ }
+ return 1;
+}
+
+const std::string SkillProduceDatabase::getDefaultLocation() {
+ return std::string(db_path) + "/produce_db.yml";
+}
+
+/**
+ * Reads and parses an entry from the produce_db.
+ * @param node: YAML node containing the entry.
+ * @return count of successfully parsed rows
*/
-static bool skill_parse_row_producedb(char* split[], int columns, int current)
-{
- unsigned short x, y;
- unsigned short id = atoi(split[0]);
- t_itemid nameid = 0;
- bool found = false;
+uint64 SkillProduceDatabase::parseBodyNode(const ryml::NodeRef &node) {
+ uint16 itemlv;
- if (id >= ARRAYLENGTH(skill_produce_db)) {
- ShowError("skill_parse_row_producedb: Maximum db entries reached.\n");
- return false;
+ if (!this->asUInt16(node, "ItemLevel", itemlv))
+ return 0;
+
+ std::shared_ptr produce = this->find(itemlv);
+ bool exists = produce != nullptr;
+
+ if (!exists) {
+ if (!this->nodesExist(node, { "Recipe" }))
+ return 0;
+
+ produce = std::make_shared();
+ produce->itemlv = itemlv;
}
- // Clear previous data, for importing support
- memset(&skill_produce_db[id], 0, sizeof(skill_produce_db[id]));
- // Import just for clearing/disabling from original data
- if (!(nameid = strtoul(split[1], nullptr, 10))) {
- //ShowInfo("skill_parse_row_producedb: Product list with ID %d removed from list.\n", id);
- return true;
+ t_itemid nameid;
+ const ryml::NodeRef &subNode = node["Recipe"];
+
+ for (const auto &subit : subNode) {
+ std::string produced_name;
+
+ if (this->nodeExists(subit, "Clear")) {
+ if (!this->asString(subit, "Clear", produced_name))
+ return 0;
+
+ std::shared_ptr item = item_db.search_aegisname(produced_name.c_str());
+
+ if (item == nullptr) {
+ this->invalidWarning(subit["Clear"], "Item %s does not exist.\n", produced_name.c_str());
+ return 0;
+ }
+
+ nameid = item->nameid;
+
+ if (produce->data.erase(nameid) == 0)
+ this->invalidWarning(subit["Clear"], "Item %s was not defined.\n", produced_name.c_str());
+
+ continue;
+ }
+
+ if (!this->asString(subit, "Product", produced_name))
+ return 0;
+
+ std::shared_ptr item = item_db.search_aegisname(produced_name.c_str());
+
+ if (item == nullptr) {
+ this->invalidWarning(subit["Product"], "Item %s does not exist.\n", produced_name.c_str());
+ return 0;
+ }
+
+ nameid = item->nameid;
+
+ bool id_exists = produce->data.count(nameid) != 0;
+ std::shared_ptr entry;
+
+ if (id_exists)
+ entry = produce->data[nameid];
+ else {
+ entry = std::make_shared();
+ entry->nameid = nameid;
+ }
+
+ entry->itemlv = itemlv;
+
+ if (this->nodeExists(subit, "BaseRate")) { // note: BaseRate is only used for skill changematerial (itemlv 26)
+ uint16 baserate;
+
+ if (!this->asUInt16Rate(subit, "BaseRate", baserate, 1000))
+ return 0;
+
+ entry->baserate = baserate;
+ } else {
+ if (!id_exists) {
+ entry->baserate = 1000;
+ }
+ }
+
+ if (this->nodeExists(subit, "Make")) { // note: Quantity is only used for skill changematerial (itemlv 26)
+ const ryml::NodeRef &QuantityNode = subit["Make"];
+
+ for (const auto &Quantityit : QuantityNode) {
+ uint16 amount;
+
+ if (!this->asUInt16Rate(Quantityit, "Amount", amount, MAX_AMOUNT))
+ return 0;
+
+ uint16 rate;
+
+ if (this->nodeExists(Quantityit, "Rate")) {
+ if (!this->asUInt16(Quantityit, "Rate", rate))
+ return 0;
+
+ if (rate == 0) {
+ if (entry->qty.erase(amount) == 0)
+ this->invalidWarning(Quantityit["Rate"], "Amount %hu was not defined.\n", amount);
+ continue;
+ }
+ if (rate > 1000) {
+ this->invalidWarning(Quantityit["Rate"], "Rate %hu can't be higher than 1000, capping.\n", rate);
+ rate = 1000;
+ }
+ } else {
+ rate = 1000;
+ }
+
+ entry->qty[amount] = rate;
+ }
+ }
+
+ if (this->nodeExists(subit, "SkillName")) {
+ std::string skill_name;
+
+ if (!this->asString(subit, "SkillName", skill_name))
+ return 0;
+
+ uint16 skill_id = skill_name2id(skill_name.c_str());
+
+ if (!skill_id) {
+ this->invalidWarning(subit["SkillName"], "Invalid skill name \"%s\", skipping.\n", skill_name.c_str());
+ return 0;
+ }
+
+ entry->req_skill = skill_id;
+ }
+
+ if (this->nodeExists(subit, "SkillLevel")) {
+ uint16 skill_lv;
+
+ if (!this->asUInt16(subit, "SkillLevel", skill_lv))
+ return 0;
+
+ entry->req_skill_lv = static_cast(skill_lv);
+ } else {
+ if (!id_exists) {
+ entry->req_skill_lv = 1;
+ }
+ }
+
+ if (this->nodeExists(subit, "Consumed")) {
+ if (!this->add_itemconsumed(subit["Consumed"], entry, true))
+ return 0;
+ }
+
+ if (this->nodeExists(subit, "NotConsumed")) {
+ if (!this->add_itemconsumed(subit["NotConsumed"], entry, false))
+ return 0;
+ }
+
+ if (!id_exists) {
+ produce->data.insert({ nameid, entry });
+ this->total_id++;
+ }
}
- if (!item_db.exists(nameid)) {
- ShowError("skill_parse_row_producedb: Invalid item %u.\n", nameid);
- return false;
- }
+ if (!exists)
+ this->put(itemlv, produce);
- skill_produce_db[id].nameid = nameid;
- skill_produce_db[id].itemlv = atoi(split[2]);
- skill_produce_db[id].req_skill = atoi(split[3]);
- skill_produce_db[id].req_skill_lv = atoi(split[4]);
-
- for (x = 5, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_PRODUCE_RESOURCE; x += 2, y++) {
- skill_produce_db[id].mat_id[y] = strtoul(split[x], nullptr, 10);
- skill_produce_db[id].mat_amount[y] = atoi(split[x+1]);
- }
-
- if (!found)
- skill_produce_count++;
-
- return true;
+ return 1;
}
const std::string SkillArrowDatabase::getDefaultLocation() {
@@ -24764,62 +24934,6 @@ uint64 AbraDatabase::parseBodyNode(const ryml::NodeRef& node) {
return 1;
}
-/** Reads change material db
- * Structure: ProductID,BaseRate,MakeAmount1,MakeAmountRate1...,MakeAmount5,MakeAmountRate5
- */
-static bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
-{
- uint16 id = atoi(split[0]);
- t_itemid nameid = strtoul(split[1], nullptr, 10);
- short rate = atoi(split[2]);
- bool found = false;
- int x, y;
-
- if (id >= MAX_SKILL_CHANGEMATERIAL_DB) {
- ShowError("skill_parse_row_changematerialdb: Maximum amount of entries reached (%d), increase MAX_SKILL_CHANGEMATERIAL_DB\n",MAX_SKILL_CHANGEMATERIAL_DB);
- return false;
- }
-
- // Clear previous data, for importing support
- if (skill_changematerial_db[id].nameid > 0) {
- found = true;
- memset(&skill_changematerial_db[id], 0, sizeof(skill_changematerial_db[id]));
- }
-
- // Import just for clearing/disabling from original data
- // NOTE: If import for disabling, better disable list from produce_db instead of here, or creation just failed with deleting requirements.
- if (nameid == 0) {
- memset(&skill_changematerial_db[id], 0, sizeof(skill_changematerial_db[id]));
- //ShowInfo("skill_parse_row_changematerialdb: Change Material list with ID %d removed from list.\n", id);
- return true;
- }
-
- // Entry must be exists in skill_produce_db and with required skill GN_CHANGEMATERIAL
- for (x = 0; x < MAX_SKILL_PRODUCE_DB; x++) {
- if (skill_produce_db[x].nameid == nameid)
- if( skill_produce_db[x].req_skill == GN_CHANGEMATERIAL )
- break;
- }
-
- if (x >= MAX_SKILL_PRODUCE_DB) {
- ShowError("skill_parse_row_changematerialdb: Not supported item ID (%u) for Change Material. \n", nameid);
- return false;
- }
-
- skill_changematerial_db[id].nameid = nameid;
- skill_changematerial_db[id].rate = rate;
-
- for (x = 3, y = 0; x+1 < columns && split[x] && split[x+1] && y < MAX_SKILL_CHANGEMATERIAL_SET; x += 2, y++) {
- skill_changematerial_db[id].qty[y] = atoi(split[x]);
- skill_changematerial_db[id].qty_rate[y] = atoi(split[x+1]);
- }
-
- if (!found)
- skill_changematerial_count++;
-
- return true;
-}
-
/**
* Reads skill damage adjustment
* @author [Lilith]
@@ -24900,10 +25014,6 @@ static void skill_readdb(void) {
//add other path here
};
- memset(skill_produce_db,0,sizeof(skill_produce_db));
- memset(skill_changematerial_db,0,sizeof(skill_changematerial_db));
- skill_produce_count = skill_changematerial_count = 0;
-
skill_db.load();
for(i=0; i 0);
-
- sv_readdb(dbsubpath2, "produce_db.txt" , ',', 5, 5+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb, i > 0);
- sv_readdb(dbsubpath1, "skill_changematerial_db.txt" , ',', 5, 5+2*MAX_SKILL_CHANGEMATERIAL_SET, MAX_SKILL_CHANGEMATERIAL_DB, skill_parse_row_changematerialdb, i > 0);
sv_readdb(dbsubpath1, "skill_damage_db.txt" , ',', 4, 3+SKILLDMG_MAX, -1, skill_parse_row_skilldamage, i > 0);
aFree(dbsubpath1);
@@ -24934,6 +25041,7 @@ static void skill_readdb(void) {
magic_mushroom_db.load();
reading_spellbook_db.load();
skill_arrow_db.load();
+ skill_produce_db.load();
skill_init_unit_layout();
skill_init_nounit_layout();
@@ -24945,6 +25053,7 @@ void skill_reload (void) {
magic_mushroom_db.clear();
reading_spellbook_db.clear();
skill_arrow_db.clear();
+ skill_produce_db.clear();
skill_readdb();
@@ -24989,6 +25098,7 @@ void do_final_skill(void)
magic_mushroom_db.clear();
reading_spellbook_db.clear();
skill_arrow_db.clear();
+ skill_produce_db.clear();
db_destroy(skillunit_db);
db_destroy(skillusave_db);
diff --git a/src/map/skill.hpp b/src/map/skill.hpp
index 5adc61565b..fd9ca3e179 100644
--- a/src/map/skill.hpp
+++ b/src/map/skill.hpp
@@ -28,8 +28,6 @@ struct s_skill_unit_group;
struct status_change_entry;
class status_change;
-#define MAX_SKILL_PRODUCE_DB 300 /// Max Produce DB
-#define MAX_PRODUCE_RESOURCE 12 /// Max Produce requirements
#define MAX_SKILL_LEVEL 13 /// Max Skill Level (for skill_db storage)
#define MAX_MOBSKILL_LEVEL 100 /// Max monster skill level (on skill usage)
#define MAX_SKILL_CRIMSON_MARKER 3 /// Max Crimson Marker targets (RL_C_MARKER)
@@ -439,15 +437,38 @@ enum e_skill_blown {
};
/// Create Database item
-struct s_skill_produce_db {
+struct s_skill_produce_db_entry {
t_itemid nameid; /// Product ID
- unsigned short req_skill; /// Required Skill
- unsigned char req_skill_lv, /// Required Skill Level
+ uint16 req_skill; /// Required Skill
+ uint16 req_skill_lv, /// Required Skill Level
itemlv; /// Item Level
- t_itemid mat_id[MAX_PRODUCE_RESOURCE]; /// Materials needed
- unsigned short mat_amount[MAX_PRODUCE_RESOURCE]; /// Amount of each materials
+ std::unordered_map materials;
+
+ // additional rates/quantity data for skill_changematerial
+ uint16 baserate;
+ std::unordered_map qty;
};
-extern struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB];
+
+struct s_skill_produce_db {
+ uint16 itemlv; /// Item Level
+ std::unordered_map> data; /// item, entry
+};
+
+class SkillProduceDatabase : public TypesafeYamlDatabase {
+private:
+ uint16 total_id = 0;
+
+public:
+ SkillProduceDatabase() : TypesafeYamlDatabase("PRODUCE_DB", 1) {
+
+ }
+
+ const std::string getDefaultLocation() override;
+ uint64 parseBodyNode(const ryml::NodeRef& node) override;
+ bool add_itemconsumed(const ryml::NodeRef& node, std::shared_ptr &entry, bool isConsumed);
+};
+
+extern SkillProduceDatabase skill_produce_db;
/// Creating database arrow
struct s_skill_arrow_db {
@@ -621,8 +642,8 @@ bool skill_isNotOk_mercenary(uint16 skill_id, s_mercenary_data *md);
bool skill_isNotOk_npcRange(struct block_list *src, uint16 skill_id, uint16 skill_lv, int pos_x, int pos_y);
// Item creation
-short skill_can_produce_mix( map_session_data *sd, t_itemid nameid, int trigger, int qty);
-bool skill_produce_mix( map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, short produce_idx );
+std::shared_ptr skill_can_produce_mix(map_session_data *sd, t_itemid nameid, int trigger, int qty);
+bool skill_produce_mix( map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, std::shared_ptr produce );
bool skill_arrow_create( map_session_data *sd, t_itemid nameid);
diff --git a/src/tool/csv2yaml.cpp b/src/tool/csv2yaml.cpp
index 2787f560c3..a216feb302 100644
--- a/src/tool/csv2yaml.cpp
+++ b/src/tool/csv2yaml.cpp
@@ -156,6 +156,16 @@ static void skilltree_txt_data(const std::string &modePath, const std::string &f
sv_readdb(modePath.c_str(), "skill_tree.txt", ',', 3 + MAX_PC_SKILL_REQUIRE * 2, 5 + MAX_PC_SKILL_REQUIRE * 2, -1, pc_readdb_skilltree, false);
}
+// Produce database data to memory
+static void produce_txt_data(const std::string &modePath, const std::string &fixedPath) {
+ skill_produce.clear();
+
+ if (fileExists(modePath + "/produce_db.txt"))
+ sv_readdb(modePath.c_str(), "produce_db.txt", ',', 5, 5+2*MAX_PRODUCE_RESOURCE, MAX_SKILL_PRODUCE_DB, skill_parse_row_producedb, false);
+ if (fileExists(fixedPath + "/skill_changematerial_db.txt"))
+ sv_readdb(fixedPath.c_str(), "skill_changematerial_db.txt", ',', 5, 5+2*MAX_SKILL_CHANGEMATERIAL_SET, MAX_SKILL_CHANGEMATERIAL_DB, skill_parse_row_changematerialdb, false);
+}
+
template
bool process( const std::string& type, uint32 version, const std::vector& paths, const std::string& name, Func lambda, const std::string& rename = "" ){
for( const std::string& path : paths ){
@@ -560,13 +570,28 @@ bool Csv2YamlTool::initialize( int argc, char* argv[] ){
})) {
return 0;
}
-
+ produce_txt_data(path_db_mode, path_db);
+ if (!process("PRODUCE_DB", 1, { path_db_mode }, "produce_db", [](const std::string &path, const std::string &name_ext) -> bool {
+ return skill_producedb_yaml();
+ })) {
+ return 0;
+ }
+
+ produce_txt_data(path_db_import, path_db_import);
+ if (!process("PRODUCE_DB", 1, { path_db_import }, "produce_db", [](const std::string &path, const std::string &name_ext) -> bool {
+ return skill_producedb_yaml();
+ })) {
+ return 0;
+ }
+
+ // TODO: add implementations ;-)
+
homunculus_txt_data(path_db_import, path_db_import);
if (!process("HOMUNCULUS_DB", 1, { path_db_import }, "homunculus_db", [](const std::string& path, const std::string& name_ext) -> bool {
return sv_readdb(path.c_str(), name_ext.c_str(), ',', 50, 50, MAX_HOMUNCULUS_CLASS, read_homunculusdb, false);
})) {
- return 0;
- }
+ return 0;
+}
// TODO: add implementations ;-)
@@ -2975,7 +3000,7 @@ static bool itemdb_read_db(const char* file) {
body << YAML::Key << "NoUse";
body << YAML::BeginMap;
if (it_nouse->second.override != 100)
- body << YAML::Key << "Override" << YAML::Value << it_nouse->second.override;
+ body << YAML::Key << "Override" << YAML::Value << it_nouse->second.override;
body << YAML::Key << "Sitting" << YAML::Value << "true";
body << YAML::EndMap;
}
@@ -2986,7 +3011,7 @@ static bool itemdb_read_db(const char* file) {
body << YAML::Key << "Trade";
body << YAML::BeginMap;
if (it_trade->second.override != 100)
- body << YAML::Key << "Override" << YAML::Value << it_trade->second.override;
+ body << YAML::Key << "Override" << YAML::Value << it_trade->second.override;
if (it_trade->second.drop)
body << YAML::Key << "NoDrop" << YAML::Value << it_trade->second.drop;
if (it_trade->second.trade)
@@ -5281,3 +5306,166 @@ static bool read_homunculusdb(char* str[], int columns, int current) {
int main( int argc, char *argv[] ){
return main_core( argc, argv );
}
+
+// Copied and adjusted from skill.cpp
+static bool skill_parse_row_producedb(char* split[], int columns, int current) {
+ t_itemid nameid = static_cast(strtoul(split[1], nullptr, 10));
+
+ if (nameid == 0) {
+ ShowError("skill_parse_row_producedb: Removing an item for this DB must be done manually. Skipping.\n");
+ return false;
+ }
+
+ std::string *item_name = util::umap_find(aegis_itemnames, nameid);
+
+ if (!item_name) {
+ ShowError("skill_parse_row_producedb: Invalid item %u.\n", nameid);
+ return false;
+ }
+
+ uint16 skill_id = static_cast(strtoul(split[3], nullptr, 10));
+ std::string* skill_name = util::umap_find( aegis_skillnames, skill_id );
+
+ if (skill_id != 0 && skill_name == nullptr) {
+ ShowError( "Skill name for skill id %hu is not known.\n", skill_id );
+ return false;
+ }
+
+ s_skill_produce_db_csv entry = {};
+
+ uint32 skill_lv = strtoul(split[4], nullptr, 10);
+ uint32 itemlv = strtoul(split[2], nullptr, 10);
+
+ entry.produced_name = *item_name;
+ if (skill_name != nullptr) {
+ entry.req_skill_name = *skill_name;
+ entry.req_skill_lv = skill_lv;
+ }
+
+ for (uint8 x = 5; x+1 < columns && split[x] && split[x+1]; x += 2) {
+ nameid = static_cast(strtoul(split[x], nullptr, 10));
+ item_name = util::umap_find(aegis_itemnames, nameid);
+
+ if (!item_name) {
+ ShowError("skill_parse_row_producedb: Invalid item %u.\n", nameid);
+ return false;
+ }
+
+ uint32 amount = strtoul(split[x+1], nullptr, 10);
+ if (amount == 0)
+ entry.item_notconsumed.push_back(*item_name);
+ else
+ entry.item_consumed[ *item_name ] = amount;
+ }
+
+ const auto &exists = skill_produce.find(itemlv);
+
+ if (exists != skill_produce.end())
+ exists->second.push_back(entry);
+ else {
+ std::vector produce;
+
+ produce.push_back(entry);
+ skill_produce.insert({ itemlv, produce });
+ }
+
+ return true;
+}
+
+// Copied and adjusted from skill.cpp
+static bool skill_parse_row_changematerialdb(char* split[], int columns, int current)
+{
+ t_itemid nameid = static_cast(strtoul(split[1], nullptr, 10));
+
+ // Import just for clearing/disabling from original data
+ // NOTE: If import for disabling, better disable list from produce_db instead of here, or creation just failed with deleting requirements.
+ if (nameid == 0) {
+ ShowError("skill_parse_row_changematerialdb: Removing an item for this DB must be done manually. Skipping.\n");
+ return false;
+ }
+
+ std::string *produced_name = util::umap_find(aegis_itemnames, nameid);
+
+ if (!produced_name) {
+ ShowError("skill_parse_row_changematerialdb: Invalid item %u.\n", nameid);
+ return false;
+ }
+
+ s_skill_changematerial_db_csv item = {};
+
+ item.baserate = static_cast(strtoul(split[2], nullptr, 10));
+ for (uint16 x = 3; x+1 < columns && split[x] && split[x+1]; x += 2) {
+ item.qty.insert({ static_cast(strtoul(split[x], nullptr, 10)), static_cast(strtoul(split[x+1], nullptr, 10)) });
+ }
+
+ skill_changematerial_db.insert({ *produced_name, item });
+
+ return true;
+}
+
+static bool skill_producedb_yaml(void) {
+ for (const auto &produceit : skill_produce) {
+ body << YAML::BeginMap;
+ body << YAML::Key << "ItemLevel" << YAML::Value << produceit.first;
+ body << YAML::Key << "Recipe";
+ body << YAML::BeginSeq;
+
+ for (const auto &it : produceit.second) {
+ body << YAML::BeginMap;
+ body << YAML::Key << "Product" << YAML::Value << it.produced_name;
+
+ // additional lines from skill_changematerial_db (which uses ItemLV 26)
+ if (produceit.first == 26) {
+ s_skill_changematerial_db_csv* changematerial = util::umap_find( skill_changematerial_db, it.produced_name );
+ if (changematerial != nullptr) {
+ if (changematerial->baserate != 1000)
+ body << YAML::Key << "BaseRate" << YAML::Value << changematerial->baserate;
+ if (!changematerial->qty.empty()) {
+ body << YAML::Key << "Make";
+ body << YAML::BeginSeq;
+ for (const auto &qit : changematerial->qty) {
+ body << YAML::BeginMap;
+ body << YAML::Key << "Amount" << YAML::Value << qit.first;
+ if (qit.second != 1000)
+ body << YAML::Key << "Rate" << YAML::Value << qit.second;
+ body << YAML::EndMap;
+ }
+ body << YAML::EndSeq;
+ }
+ }
+ }
+
+ if (it.req_skill_lv > 0) {
+ body << YAML::Key << "SkillName" << YAML::Value << it.req_skill_name;
+ body << YAML::Key << "SkillLevel" << YAML::Value << it.req_skill_lv;
+ }
+
+ if (!it.item_consumed.empty()) {
+ body << YAML::Key << "Consumed";
+ body << YAML::BeginSeq;
+ for (const auto &itemit : it.item_consumed) {
+ body << YAML::BeginMap;
+ body << YAML::Key << "Item" << YAML::Value << itemit.first;
+ body << YAML::Key << "Amount" << YAML::Value << itemit.second;
+ body << YAML::EndMap;
+ }
+ body << YAML::EndSeq;
+ }
+
+ if (!it.item_notconsumed.empty()) {
+ body << YAML::Key << "NotConsumed";
+ body << YAML::BeginSeq;
+ for (const auto &itemit : it.item_notconsumed) {
+ body << YAML::BeginMap;
+ body << YAML::Key << "Item" << YAML::Value << itemit;
+ body << YAML::EndMap;
+ }
+ body << YAML::EndSeq;
+ }
+ body << YAML::EndMap;
+ }
+ body << YAML::EndSeq;
+ body << YAML::EndMap;
+ }
+ return true;
+}
diff --git a/src/tool/csv2yaml.hpp b/src/tool/csv2yaml.hpp
index 7d8317f1e5..c139a6cda9 100644
--- a/src/tool/csv2yaml.hpp
+++ b/src/tool/csv2yaml.hpp
@@ -42,6 +42,10 @@ namespace rathena{
///Maximum amount of items a combo may require
#define MAX_ITEMS_PER_COMBO 6
#define MAX_HOM_SKILL_REQUIRE 5
+#define MAX_SKILL_CHANGEMATERIAL_DB 75
+#define MAX_SKILL_CHANGEMATERIAL_SET 3
+#define MAX_SKILL_PRODUCE_DB 300 /// Max Produce DB
+#define MAX_PRODUCE_RESOURCE 12 /// Max Produce requirements
struct s_skill_tree_entry_csv {
std::string skill_name;
@@ -65,6 +69,23 @@ std::unordered_map skill_nearnpc;
std::unordered_map> hom_skill_tree;
+struct s_skill_produce_db_csv {
+ std::string produced_name,
+ req_skill_name;
+ uint32 req_skill_lv,
+ itemlv;
+ std::map item_consumed;
+ std::vector item_notconsumed;
+};
+
+std::map> skill_produce;
+
+struct s_skill_changematerial_db_csv {
+ uint16 baserate;
+ std::map qty;
+};
+std::unordered_map skill_changematerial_db;
+
static unsigned int level_penalty[3][CLASS_MAX][MAX_LEVEL * 2 + 1];
struct s_item_flag_csv2yaml {
@@ -508,6 +529,9 @@ static bool mob_parse_row_chatdb(char* fields[], int columns, int current);
static bool read_homunculus_expdb(const char* file);
static bool mob_readdb_group(char* str[], int columns, int current);
static bool mob_readdb_group_yaml(void);
+static bool skill_parse_row_producedb(char* fields[], int columns, int current);
+static bool skill_producedb_yaml();
+static bool skill_parse_row_changematerialdb(char* fields[], int columns, int current);
static bool skill_parse_row_createarrowdb(char* fields[], int columns, int current);
static bool pc_read_statsdb(const char* file);
static bool guild_read_castledb(char* str[], int columns, int current);