Pārlūkot izejas kodu

Added correct packets for the food item creation window.
Added script command 'cooking' to activate this window and applied it to the 5 cooking kit items.
Renamed the cooking quest variable to cooking_q to avoid a naming collision with the new script command.
(You need to manually rename all occurences of this variable in your txt-savefile/sql-database if you want to preserve player progress.)
The code still relies on the messy skill_produce_mix logic and still uses completely custom equations. To be fixed in a separate commit.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13628 54d463be-8e91-2dee-dedb-b68131a5f0ec

ultramage 16 gadi atpakaļ
vecāks
revīzija
71fbf3e1a4
8 mainītis faili ar 129 papildinājumiem un 47 dzēšanām
  1. 2 0
      db/Changelog.txt
  2. 5 5
      db/item_db.txt
  3. 1 1
      db/packet_db.txt
  4. 2 0
      npc/Changelog.txt
  5. 41 40
      npc/quests/cooking_quest.txt
  6. 60 1
      src/map/clif.c
  7. 1 0
      src/map/clif.h
  8. 17 0
      src/map/script.c

+ 2 - 0
db/Changelog.txt

@@ -41,6 +41,8 @@
 
 =======================
 2009/03/25
+	* Added cooking packets to packet_db.txt
+	* Changed the cooking kit items to use the new 'cooking' function [ultramage]
 	* Added missing 12.1 drops to the monsters [Playtester]
 	* Fixed Sonic Blow's and Arrow Vulcan's aftercast delay being reducable by Bragi [Playtester]
 2009/03/24

+ 5 - 5
db/item_db.txt

@@ -3568,11 +3568,11 @@
 12123,Honey_Pastry,Honey Pastry,0,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_FleeFood,1200000,30; },{},{}
 12124,Rainbow_Cake,Rainbow Cake,0,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_BATKFood,1200000,10; sc_start SC_MATKFood,120000,10; },{},{}
 // Cooking Sets
-12125,Outdoor_Cooking_Kits,Outdoor Cooking Kit,2,500,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 11; },{},{}
-12126,Indoor_Cooking_Kits,Home Cooking Kit,2,1000,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 12; },{},{}
-12127,High_end_Cooking_Kits,Professional Cooking Kit,2,2000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 13; },{},{}
-12128,Imperial_Cooking_Kits,Royal Cooking Kit,2,5000,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 14; },{},{}
-12129,Fantastic_Cooking_Kits,Fantastic Cooking Kit,2,10000,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ produce 15; },{},{}
+12125,Outdoor_Cooking_Kits,Outdoor Cooking Kit,2,500,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ cooking 11; },{},{}
+12126,Indoor_Cooking_Kits,Home Cooking Kit,2,1000,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ cooking 12; },{},{}
+12127,High_end_Cooking_Kits,Professional Cooking Kit,2,2000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ cooking 13; },{},{}
+12128,Imperial_Cooking_Kits,Royal Cooking Kit,2,5000,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ cooking 14; },{},{}
+12129,Fantastic_Cooking_Kits,Fantastic Cooking Kit,2,10000,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ cooking 15; },{},{}
 //
 12130,Cookie_Bag,Cookie Bag,2,2,,70,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_CookieBag),1; getitem groupranditem(IG_CookieBag),1; getitem groupranditem(IG_CookieBag),1; },{},{}
 12131,Lucky_Potion,Lucky Potion,0,2,,100,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}

+ 1 - 1
db/packet_db.txt

@@ -819,7 +819,7 @@ packet_ver: 19
 //2005-10-10aSakexe
 0x020e,32
 0x025a,-1
-0x025b,-1
+0x025b,6,cooking,0
 
 //2005-10-13aSakexe
 0x007a,6

+ 2 - 0
npc/Changelog.txt

@@ -1,6 +1,8 @@
 Date		Added
 ======
 2009/03/25
+	* Renamed the cooking quest variable to cooking_q to avoid a naming collision. [ultramage]
+	- You need to manually rename all occurences of this variable in your txt-savefile/sql-database if you want to preserve player progress.
 	* Fixed Thief Training Quest [Playtester]
 2009/03/18
 	* Fixed Moscovia mob names in the spawn file [Playtester]

+ 41 - 40
npc/quests/cooking_quest.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //= Reddozen; L0ne_W0lf
 //===== Current Version: ===================================== 
-//= 1.7
+//= 1.8
 //===== Compatible With: ===================================== 
 //= eAthena SVN
 //===== Description: ========================================= 
@@ -25,6 +25,7 @@
 //= 1.6a Corrected a bad cutin, a Typo error ";;" and a bad delitem (bugreport:911) [Samuray22]
 //= 1.6b Corrected a "donpcevent" missing a ":". (bugreport:962) [Samuray22]
 //= 1.7 Replaced effect numerics with constants. [L0ne_W0lf]
+//= 1.8 Renamed the variable cooking to cooking_q [ultramage]
 //============================================================ 
 
 prt_castle,43,30,3	script	Charles Orleans#cook	878,{
@@ -229,7 +230,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "reluctantly bid you adieu.";
 		goto L_End;
 	}
-	else if (cooking == 0) {
+	else if (cooking_q == 0) {
 		cutin "orleans_5",0;
 		emotion e_dots;
 		mes "[Charles Orleans]";
@@ -319,7 +320,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		cutin "orleans_6",0;
 		set .@cook_m1,rand(1,6);
 		if (.@cook_m1 == 1) {
-			set cooking,1;
+			set cooking_q,1;
 			mes "[Charles Orleans]";
 			mes "Ahhh, how about";
 			mes "'Fried Grasshopper Legs?'";
@@ -336,7 +337,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			goto L_End;
 		}
 		else if (.@cook_m1 == 2) {
-			set cooking,2;
+			set cooking_q,2;
 			mes "[Charles Orleans]";
 			mes "Ah, I've got it!";
 			mes "Let's make ''Grape Juice";
@@ -353,7 +354,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			goto L_End;
 		}
 		else if (.@cook_m1 == 3) {
-			set cooking,3;
+			set cooking_q,3;
 			mes "[Charles Orleans]";
 			mes "I've got it~";
 			mes "We can make";
@@ -369,7 +370,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			goto L_End;
 		}
 		else if (.@cook_m1 == 4) {
-			set cooking,4;
+			set cooking_q,4;
 			mes "[Charles Orleans]";
 			mes "Mmm, why don't we";
 			mes "make ''Frog Egg and";
@@ -387,7 +388,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			goto L_End;
 		}
 		else if (.@cook_m1 == 5) {
-			set cooking,5;
+			set cooking_q,5;
 			mes "[Charles Orleans]";
 			mes "Ah, I know what";
 			mes "would be perfect right";
@@ -403,7 +404,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			mes "^4D4DFF1 Yellow Potion^000000.";
 			goto L_End;
 		}
-		set cooking,6;
+		set cooking_q,6;
 		mes "[Charles Orleans]";
 		mes "Ooh, you know what";
 		mes "would be scrumptious?";
@@ -419,7 +420,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "^4D4DFF1 Cooking Oil^000000.";
 		goto L_End;
 	}
-	else if (cooking == 1) {
+	else if (cooking_q == 1) {
 		if (countitem(940) > 4 && countitem(7031) > 0 && countitem(7457) > 0) {
 			cutin "orleans_4",0;
 			emotion e_an;
@@ -456,7 +457,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			delitem 940,5; //Grasshopper's_Leg
 			delitem 7031,1; //Old_Frying_Pan
 			delitem 7457,1; //Cooking_Oil
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12041,1; //Str_Dish01
 			goto L_End;
 		}
@@ -479,7 +480,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "legs off--but be humane about it! ";
 		goto L_End;
 	}
-	else if (cooking == 2) {
+	else if (cooking_q == 2) {
 		if (countitem(514) > 2 && countitem(501) > 1) {
 			cutin "orleans_4",0;
 			mes "[Charles Orleans]";
@@ -513,7 +514,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			mes "and practice on your own now.";
 			delitem 514,3; //Grape
 			delitem 501,2; //Red_Potion
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12046,1; //Int_Dish01
 			goto L_End;
 		}
@@ -536,7 +537,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "be humane when you hunt them...";
 		goto L_End;
 	}
-	else if (cooking == 3) {
+	else if (cooking_q == 3) {
 		if (countitem(518) > 0 && countitem(514) > 1 && countitem(501) > 0) {
 			cutin "orleans_4",0;
 			mes "[Charles Orleans]";
@@ -574,7 +575,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			delitem 518,1; //Honey
 			delitem 514,2; //Grape
 			delitem 501,1; //Red_Potion
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12061,1; //Dex_Dish01
 			goto L_End;
 		}
@@ -598,7 +599,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "of that Honey around.";
 		goto L_End;
 	}
-	else if (cooking == 4) {
+	else if (cooking_q == 4) {
 		if (countitem(577) > 0 && countitem(908) > 9 && countitem(1024) > 0) {
 			cutin "orleans_4",0;
 			mes "[Charles Orleans]";
@@ -635,7 +636,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			delitem 577,1; //Grain
 			delitem 908,10; //Spawn
 			delitem 1024,1; //Chinese_ink
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12056,1; //Agi_Dish01
 			goto L_End;
 		}
@@ -658,7 +659,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "decidely less than magnifique.";
 		goto L_End;
 	}
-	else if (cooking == 5) {
+	else if (cooking_q == 5) {
 		if (countitem(960) > 9 && countitem(511) > 9 && countitem(503) > 0) {
 			cutin "orleans_4",0;
 			mes "[Charles Orleans]";
@@ -695,7 +696,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			delitem 960,10; //Nipper
 			delitem 511,10; //Green_Herb
 			delitem 503,1; //Yellow_Potion
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12051,1; //Vit_Dish01
 			goto L_End;
 		}
@@ -719,7 +720,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "their Nippers. That sounds strange, I know, but just do it.";
 		goto L_End;
 	}
-	else if (cooking == 6) {
+	else if (cooking_q == 6) {
 		if (countitem(942) > 4 && countitem(7031) > 0 && countitem(7457) > 0) {
 			cutin "orleans_4",0;
 			mes "[Charles Orleans]";
@@ -756,7 +757,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			delitem 942,5; //Yoyo_Tail
 			delitem 7031,1; //Old_Frying_Pan
 			delitem 7457,1; //Cooking_Oil
-			set cooking,7;
+			set cooking_q,7;
 			getitem 12066,1; //Luk_Dish01
 			goto L_End;
 		}
@@ -781,7 +782,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "allow you to be inhumane!";
 		goto L_End;
 	}
-	else if (cooking == 7) {
+	else if (cooking_q == 7) {
 		cutin "orleans_7",0;
 		mes "[Charles Orleans]";
 		mes "Oh... I'm so exhausted!";
@@ -801,7 +802,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "It will take some time...";
 		goto L_End;
 	}
-	else if (cooking == 8) {
+	else if (cooking_q == 8) {
 		cutin "orleans_5",0;
 		mes "[Charles Orleans]";
 		mes "Strange, strange...";
@@ -891,7 +892,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 			goto L_End;
 		}
 	}
-	else if (cooking == 9) {
+	else if (cooking_q == 9) {
 		cutin "orleans_5",0;
 		emotion e_an;
 		mes "[Charles Orleans]";
@@ -1022,7 +1023,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "lady... Madam Wickebine...";
 		goto L_End;
 	}
-	else if (cooking == 10) {
+	else if (cooking_q == 10) {
 		cutin "orleans_5",0;
 		mes "[Charles Orleans]";
 		mes "It's been bothering";
@@ -1064,7 +1065,7 @@ prt_castle,43,30,3	script	Charles Orleans#cook	878,{
 		mes "Long live King Tristram III!";
 		goto L_End;
 	}
-	else if (cooking == 11) {
+	else if (cooking_q == 11) {
 		cutin "orleans_5",0;
 		emotion e_dots;
 		mes "[Charles Orleans]";
@@ -1542,7 +1543,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		//EnableItemMove
 		end;
 	}
-	if (cooking == 0) {
+	if (cooking_q == 0) {
 		mes "[Madeleine Chu]";
 		mes "Oh, hello~";
 		mes "I'm Madeleine Chu,";
@@ -1640,7 +1641,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 			close;
 		}
 	}
-	else if (cooking > 0 && cooking < 7) {
+	else if (cooking_q > 0 && cooking_q < 7) {
 		mes "[Madeleine Chu]";
 		mes "Hello, is there any";
 		mes "way I can help you today?";
@@ -1712,7 +1713,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		mes "the recipe as soon as you can~";
 		close;
 	}
-	else if (cooking == 7) {
+	else if (cooking_q == 7) {
 		mes "[Madeleine Chu]";
 		mes "Sir Charles taught you";
 		mes "a recipe? That's great!";
@@ -1742,7 +1743,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		mes "improve as you practice. ";
 		mes "Please take this cookbook";
 		mes "with the basic Level 1 recipes.";
-		set cooking,8;
+		set cooking_q,8;
 		getitem 7472,1; //Cookbook01
 		next;
 		mes "[Madeleine Chu]";
@@ -1753,7 +1754,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		getitem 12125,10; //Outdoor_Cooking_Kits
 		close;
 	}
-	else if (cooking == 8) {
+	else if (cooking_q == 8) {
 		mes "[Madeleine Chu]";
 		mes "So how has your cooking";
 		mes "been coming along? You'll";
@@ -1820,7 +1821,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 				delitem 12056,1; //Agi_Dish01
 				delitem 12051,1; //Vit_Dish01
 				delitem 12066,1; //Luk_Dish01
-				set cooking,9;
+				set cooking_q,9;
 				getitem 12111,1; //Food_Package
 				mes "[Madeleine Chu]";
 				mes "There you go, it's ready";
@@ -1876,7 +1877,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 			close;
 		}
 	}
-	else if (cooking == 9) {
+	else if (cooking_q == 9) {
 		if (countitem(12111) > 0) {
 			mes "[Madeleine Chu]";
 			mes "Please find my friend";
@@ -1917,7 +1918,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 				mes "very ashamed of you...";
 				next;
 				delitem 7472,1; //Cookbook01
-				set cooking,0;
+				set cooking_q,0;
 				mes "[Madeleine Chu]";
 				mes "First of all, I'd like";
 				mes "you to return my cookbook.";
@@ -1935,7 +1936,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 			close;
 		}
 	}
-	else if (cooking == 10) {
+	else if (cooking_q == 10) {
 		mes "[Madeleine Chu]";
 		mes "I just received a";
 		mes "message from Chulsoo";
@@ -1951,7 +1952,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		mes "skills are the most important";
 		mes "factor in quality cuisine.";
 		next;
-		set cooking,11;
+		set cooking_q,11;
 		getitem 12126,10; //Indoor_Cooking_Kits
 		mes "[Madeleine Chu]";
 		mes "Please try these Indoor";
@@ -1968,7 +1969,7 @@ prt_castle,45,35,5	script	Madeleine Chu#cook	886,{
 		mes "good luck, and I'll see you later~ ";
 		close;
 	}
-	else if (cooking == 11) {
+	else if (cooking_q == 11) {
 		mes "[Madeleine Chu]";
 		mes "How are you? I hope";
 		mes "that you've been honing";
@@ -2259,7 +2260,7 @@ payon,209,127,3	script	Servant	88,{
 		//EnableItemMove;
 		end;
 	}
-	if (cooking == 10) {
+	if (cooking_q == 10) {
 		mes "[Chulsoo]";
 		mes "When you get the chance,";
 		mes "please give Madeline my";
@@ -2268,7 +2269,7 @@ payon,209,127,3	script	Servant	88,{
 		mes "make amends with Sir Charles.";
 		close;
 	}
-	else if (cooking == 9) {
+	else if (cooking_q == 9) {
 		mes "[Chulsoo]";
 		mes "How would you like";
 		mes "to buy a Rice Cake?";
@@ -2378,7 +2379,7 @@ payon,209,127,3	script	Servant	88,{
 				mes "to tell me. In return, please have one of my humble Rice Cakes.";
 				next;
 				delitem 12111,1; //Food_Package
-				set cooking,10;
+				set cooking_q,10;
 				getitem 555,1; //Rice_Cake
 				mes "[Chulsoo]";
 				mes "I better visit Prontera";
@@ -2403,7 +2404,7 @@ payon,209,127,3	script	Servant	88,{
 			close;
 		}
 	}
-	else if (cooking == 8) {
+	else if (cooking_q == 8) {
 		mes "[Chulsoo]";
 		mes "Lately, it seems that";
 		mes "no one wants to buy my";

+ 60 - 1
src/map/clif.c

@@ -4506,6 +4506,47 @@ int clif_skill_produce_mix_list(struct map_session_data *sd, int trigger)
 	return 0;
 }
 
+/*==========================================
+ *
+ *------------------------------------------*/
+void clif_cooking_list(struct map_session_data *sd, int trigger)
+{
+	int fd;
+	int i, c;
+	int view;
+
+	nullpo_retv(sd);
+	fd = sd->fd;
+
+	WFIFOHEAD(fd, 6 + 2*MAX_SKILL_PRODUCE_DB);
+	WFIFOW(fd,0) = 0x25a;
+	WFIFOW(fd,4) = 1; // list type
+
+	c = 0;
+	for( i = 0; i < MAX_SKILL_PRODUCE_DB; i++ )
+	{
+		if( !skill_can_produce_mix(sd,skill_produce_db[i].nameid,trigger, 1) )
+			continue;
+
+		if( (view = itemdb_viewid(skill_produce_db[i].nameid)) > 0 )
+			WFIFOW(fd, 6+2*c)= view;
+		else
+			WFIFOW(fd, 6+2*c)= skill_produce_db[i].nameid;
+
+		c++;
+	}
+
+	WFIFOW(fd,2) = 6 + 2*c;
+	WFIFOSET(fd,WFIFOW(fd,2));
+
+	//TODO: replace with proper solution
+	if( c > 0 )
+	{
+		sd->menuskill_id = AM_PHARMACY;
+		sd->menuskill_val = trigger;
+	}
+}
+
 /*==========================================
  * Sends a status change packet to the object only, used for loading status changes. [Skotlex]
  *------------------------------------------*/
@@ -9697,6 +9738,23 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
 	skill_produce_mix(sd,0,RFIFOW(fd,2),RFIFOW(fd,4),RFIFOW(fd,6),RFIFOW(fd,8), 1);
 	sd->menuskill_val = sd->menuskill_id = 0;
 }
+/*==========================================
+ *
+ *------------------------------------------*/
+void clif_parse_Cooking(int fd,struct map_session_data *sd)
+{
+	int type = RFIFOW(fd,2); // '1' for cooking
+	int nameid = RFIFOW(fd,4);
+
+	if (pc_istrading(sd)) {
+		//Make it fail to avoid shop exploits where you sell something different than you see.
+		clif_skill_fail(sd,sd->ud.skillid,0,0);
+		sd->menuskill_val = sd->menuskill_id = 0;
+		return;
+	}
+	skill_produce_mix(sd,0,nameid,0,0,0,1);
+	sd->menuskill_val = sd->menuskill_id = 0;
+}
 /*==========================================
  * •�Ší�C—�
  *------------------------------------------*/
@@ -13371,7 +13429,7 @@ static int packetdb_readdb(void)
 	   12, 26,  9, 11, -1, -1, 10,  2, 282, 11,  4, 36, -1, -1,  4,  2,
 	//#0x0240
 	   -1, -1, -1, -1, -1,  3,  4,  8,  -1,  3, 70,  4,  8, 12,  4, 10,
-	    3, 32, -1,  3,  3,  5,  5,  8,   2,  3, -1, -1,  4, -1,  4,  0,
+	    3, 32, -1,  3,  3,  5,  5,  8,   2,  3, -1,  6,  4, -1,  4,  0,
 	    6,  0,  0,  0,  0,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
 	    0,  0,  0,  0,  8,  0,  0,  0,   0,  0,  0,  0,  0,  0,  0,  0,
 	//#0x0280
@@ -13438,6 +13496,7 @@ static int packetdb_readdb(void)
 		{clif_parse_UseSkillMap,"useskillmap"},
 		{clif_parse_RequestMemo,"requestmemo"},
 		{clif_parse_ProduceMix,"producemix"},
+		{clif_parse_Cooking,"cooking"},
 		{clif_parse_NpcSelectMenu,"npcselectmenu"},
 		{clif_parse_NpcNextClicked,"npcnextclicked"},
 		{clif_parse_NpcAmountInput,"npcamountinput"},

+ 1 - 0
src/map/clif.h

@@ -232,6 +232,7 @@ void clif_skill_warppoint(struct map_session_data* sd, short skill_num, short sk
 void clif_skill_memomessage(struct map_session_data* sd, int type);
 void clif_skill_teleportmessage(struct map_session_data* sd, int type);
 int clif_skill_produce_mix_list(struct map_session_data *sd, int trigger);
+void clif_cooking_list(struct map_session_data *sd, int trigger);
 
 int clif_produceeffect(struct map_session_data* sd,int flag,int nameid);
 

+ 17 - 0
src/map/script.c

@@ -7245,6 +7245,22 @@ BUILDIN_FUNC(produce)
 	clif_skill_produce_mix_list(sd, trigger);
 	return 0;
 }
+/*==========================================
+ *
+ *------------------------------------------*/
+BUILDIN_FUNC(cooking)
+{
+	int trigger;
+	TBL_PC* sd;
+
+	sd = script_rid2sd(st);
+	if( sd == NULL )
+		return 0;
+
+	trigger=script_getnum(st,2);
+	clif_cooking_list(sd, trigger);
+	return 0;
+}
 /*==========================================
  * NPC‚Ńyƒbƒg�ì‚é
  *------------------------------------------*/
@@ -13716,6 +13732,7 @@ struct script_function buildin_func[] = {
 	BUILDIN_DEF(guildopenstorage,"*"),
 	BUILDIN_DEF(itemskill,"vi"),
 	BUILDIN_DEF(produce,"i"),
+	BUILDIN_DEF(cooking,"i"),
 	BUILDIN_DEF(monster,"siisii*"),
 	BUILDIN_DEF(getmobdrops,"i"),
 	BUILDIN_DEF(areamonster,"siiiisii*"),