diff options
-rw-r--r-- | db/Changelog.txt | 2 | ||||
-rw-r--r-- | db/item_db.txt | 10 | ||||
-rw-r--r-- | db/packet_db.txt | 2 | ||||
-rw-r--r-- | npc/Changelog.txt | 2 | ||||
-rw-r--r-- | npc/quests/cooking_quest.txt | 81 | ||||
-rw-r--r-- | src/map/clif.c | 61 | ||||
-rw-r--r-- | src/map/clif.h | 1 | ||||
-rw-r--r-- | src/map/script.c | 17 |
8 files changed, 129 insertions, 47 deletions
diff --git a/db/Changelog.txt b/db/Changelog.txt index b33688da5..fb712f2ca 100644 --- a/db/Changelog.txt +++ b/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 diff --git a/db/item_db.txt b/db/item_db.txt index 1a7eabb96..0a5ab6165 100644 --- a/db/item_db.txt +++ b/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,,,,,,{},{},{} diff --git a/db/packet_db.txt b/db/packet_db.txt index acf1b6fa7..30cdb02ae 100644 --- a/db/packet_db.txt +++ b/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 diff --git a/npc/Changelog.txt b/npc/Changelog.txt index a974f8201..156f5fe54 100644 --- a/npc/Changelog.txt +++ b/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] diff --git a/npc/quests/cooking_quest.txt b/npc/quests/cooking_quest.txt index cd3a9d83c..21ba2e0a1 100644 --- a/npc/quests/cooking_quest.txt +++ b/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"; diff --git a/src/map/clif.c b/src/map/clif.c index 131d870bc..51ca50264 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4507,6 +4507,47 @@ 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 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] *------------------------------------------*/ int clif_status_load(struct block_list *bl,int type, int flag) @@ -9698,6 +9739,23 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd) 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— *------------------------------------------*/ void clif_parse_RepairItem(int fd, struct map_session_data *sd) @@ -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"}, diff --git a/src/map/clif.h b/src/map/clif.h index 7d866a801..ad00176b6 100644 --- a/src/map/clif.h +++ b/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); diff --git a/src/map/script.c b/src/map/script.c index 82c8079d1..8e2d54f3b 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -7246,6 +7246,22 @@ BUILDIN_FUNC(produce) 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ì‚é *------------------------------------------*/ BUILDIN_FUNC(makepet) @@ -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*"), |