From 6f80256e134557926c16ef1fcb89df4bebb4e7fe Mon Sep 17 00:00:00 2001 From: kobra_k88 Date: Tue, 16 Nov 2004 17:28:04 +0000 Subject: Added subfunctions to juicmaker and grampa pharmacist npcs. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@219 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/Changelog.txt | 5 + npc/events/xmas.txt | 22 +-- npc/merchants/grandpa_pharmacist.txt | 241 ++++++++++++++----------------- npc/quests/juice_maker.txt | 269 +++++++++++++++++------------------ 4 files changed, 259 insertions(+), 278 deletions(-) diff --git a/npc/Changelog.txt b/npc/Changelog.txt index ff715ee4c..279526e36 100644 --- a/npc/Changelog.txt +++ b/npc/Changelog.txt @@ -36,6 +36,11 @@ Other Ppl Date Added ====== 11/16 + * - grandpa_pharmacist.txt: Added subfunction for potion making as well as zeny/input + exploit safeguards. Used Lupus's "loopless" technique. + - juice_maker.txt: Added subfunction for juice making. Also changed amount of + fruit needed to 1. + - xmas.txt: Corrected some typos. [kobra_k88] * - Removed Empty Bottle from amatsu shops to prevent exploits. - Fixed Npc Position on Lutie( warper.txt and warper2.txt). [shadow] diff --git a/npc/events/xmas.txt b/npc/events/xmas.txt index 528138f41..e65d7be0a 100644 --- a/npc/events/xmas.txt +++ b/npc/events/xmas.txt @@ -10,15 +10,21 @@ //= Beat up Antonios and grab his socks. Get at least 3 and //= give them to Santa Claus Claus in exchange for a present. //= Includes X-mas mobs. -//= This npc will disable, the current Santa Claus Claus npc. +//= This npc will disable, the current Santa Claus npc. //===== Additional Comments: ================================= //= Fixed the spawns [shadowlady] //============================================================ xmas_in.gat,100,96,4 script Father Christmas::Santa2 718,{ - if(event_xmas != 1) goto M_2; mes "[Santa Claus]"; + if(event_xmas == 1) goto L_Start; + mes "Merry Christmas! I have a gift for you! Ho Ho Ho!"; + getitem 644,1; + set event_xmas,1; + close; + +L_Start: mes "I'm having a bit of a problem..."; mes "Do you care to listen?"; next; @@ -84,12 +90,6 @@ xmas_in.gat,100,96,4 script Father Christmas::Santa2 718,{ mes "and get more for me and I'll"; mes "reward you."; close; - - M_2: - mes "Merry Christmas! I got a gift for you!"; - mes "Ho Ho Ho!;" - getitem 644,1; - set event_xmas,1; M_End: mes "[Santa Claus]"; mes "I see. Well, at the very least"; @@ -129,6 +129,9 @@ gef_fild10.gat,0,0,0,0 monster Santa Poring 1062,15,0,0,0 gef_fild11.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 gef_fild11.gat,0,0,0,0 monster Gobline Xmas 1245,5,0,0,0 gef_fild11.gat,0,0,0,0 monster Santa Poring 1062,15,0,0,0 +gef_fild12.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 +gef_fild13.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 +gef_fild14.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 glast_01.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 glast_01.gat,0,0,0,0 monster Santa Poring 1062,15,0,0,0 @@ -243,9 +246,6 @@ prt_fild10.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 prt_fild10.gat,0,0,0,0 monster Santa Poring 1062,15,0,0,0 prt_fild11.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 prt_fild11.gat,0,0,0,0 monster Santa Poring 1062,15,0,0,0 -gef_fild12.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 -gef_fild13.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 -gef_fild14.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 cmd_fild01.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 cmd_fild02.gat,0,0,0,0 monster Antonio 1247,1,0,0,0 diff --git a/npc/merchants/grandpa_pharmacist.txt b/npc/merchants/grandpa_pharmacist.txt index bbeaf97d0..055e9e53c 100644 --- a/npc/merchants/grandpa_pharmacist.txt +++ b/npc/merchants/grandpa_pharmacist.txt @@ -1,173 +1,86 @@ -//===== eAthena Script ======================================= +//===== eAthena Script ======================================= //= Grandpa Pharmacist -//===== By: ================================================== +//===== By: ================================================== //= kobra_k88 -//===== Current Version: ===================================== -//= 1.1 -//===== Compatible With: ===================================== +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== //= eAthena 7.15 + -//===== Description: ========================================= -//= trade in items for potions -//===== Additional Comments: ================================= +//===== Description: ========================================= +//= Trade in items for potions +//=============================== +//= Breakdown of arguments used +//= arg(0): first item id# +//= arg(1): 2nd item id# if needed, or else use 0 +//= arg(2): zeny cost +//= arg(3): potion id# +//= arg(4): potion name +//===== Additional Comments: ================================= //= Fully working //= 1.1 Negative input bug fixed [Lupus] -//============================================================ - - +//= 1.2 Created a subfunc for the potion making part. Added more +//= input/zeny exploit checks. Added Lupus's "loopless" technique.[kobra_k88] +//============================================================ alberta_in.gat,16,28,4 script Grampa Pharmacist 61, { - set @count, 0; - mes "[Grampa Pharmacist]"; mes "Hmmm... what do you want...?"; next; menu "Make Potion",M_Make, "Talk",M_Talk, "Information",M_Info, "Cancel",M_End; M_Make: - if(countitem(713) < 1) goto ssL_NdBottle; mes "[Grampa Pharmacist]"; mes "Did you prepare all the items needed? If so what potion do you want?"; M_Menu: next; - menu "Red Potion",M_0, "Orange Potion",M_1, "Yellow Potion",M_2, "White Potion",M_3, "Blue Potion",M_4, "Green Potion",M_5, - "Nah, I change my mind.",M_End; + menu "Red Potion",M_0, "Orange Potion",M_1, "Yellow Potion",M_2, + "White Potion",M_3, "Blue Potion",M_4, "Green Potion",M_5, + "Nah, I change my mind.",M_End; M_0: - set @pot$, "red"; - set @pot, 501; - set @item1, 507; - set @zeny, 3; - goto sL_Make; + callsub sF_Make, 507, 0, 2, 501, "red"; + goto M_Menu; M_1: - if(countitem(507)<1 || countitem(508)<1) goto ssL_NdHerbs; - if(Zeny < 5) goto ssL_NdZeny; - set @pot$, "orange"; - set @pot, 502; - mes "[Grampa Pharmacist]"; - mes "How many?"; - next; - menu "As many as possible.",sM_1a, "I will set the amount.",sM_1b, "Nah, forget about it",M_Menu; - - sM_1a: - if(countitem(507)<1 || countitem(508)<1 || countitem(713)<1 || Zeny< 5) goto ssL_End; - set @count, @count +1; - delitem 507, 1; - delitem 508, 1; - delitem 713, 1; - set Zeny, Zeny - 5; - goto sM_1a; - - sM_1b: - input @count; - if(@count<1) goto ssL_NdNegative; - if(countitem(507)<@count || countitem(508)<@count) goto ssL_NdHerbs; - if(countitem(713) < @count) goto ssL_NdBottle; - if(Zeny<(5*@count)) goto ssL_NdZeny; - delitem 507, @count; - delitem 508, @count; - delitem 713, @count; - set Zeny, Zeny - (@zeny*@count); - goto ssL_End; - + callsub sF_Make, 507, 508, 5, 502, "orange"; + goto M_Menu; M_2: - set @pot$, "yellow"; - set @pot, 503; - set @item1, 508; - set @zeny, 10; - goto sL_Make; + callsub sF_Make, 508, 0, 10, 503, "yellow"; + goto M_Menu; M_3: - set @pot$, "white"; - set @pot, 504; - set @item1, 509; - set @zeny, 20; - goto sL_Make; + callsub sF_Make, 509, 0, 20, 504, "white"; + goto M_Menu; M_4: - set @pot$, "blue"; - set @pot, 505; - set @item1, 510; - set @zeny, 30; - goto sL_Make; + callsub sF_Make, 510, 0, 30, 505, "blue"; + goto M_Menu; M_5: - set @pot$, "green"; - set @pot, 506; - set @item1, 511; - set @zeny, 3; - - sL_Make: - if(countitem(@item1) < 2) goto ssL_NdHerbs; - if(Zeny < @zeny) goto ssL_NdZeny; - - mes "[Grampa Pharmacist]"; - mes "How many?"; - next; - menu "As many as possible.",sM_0a, "I will set the amount.",sM_0b, "Nah, forget about it",M_Menu; - - sM_0a: - if((countitem(@item1) < 2) || (countitem(713) < 1) || (Zeny < @zeny)) goto ssL_End; - set @count, @count +1; - delitem @item1, 2; - delitem 713, 1; - set Zeny, Zeny - @zeny; - goto sM_0a; - - sM_0b: - input @count; - if(@count<1) goto ssL_NdNegative; - if(countitem(@item1) < (2*@count)) goto ssL_NdHerbs; - if(countitem(713) < @count) goto ssL_NdBottle; - if(Zeny < (@zeny*@count)) goto ssL_NdZeny; - delitem @item1, (2*@count); - delitem 713, @count; - set Zeny, Zeny - (@zeny*@count); - - ssL_End: - mes "[Grampa Pharmacist]"; - mes "Here are your "+@pot$+" potions."; - getitem @pot, @count; - close; - - ssL_NdBottle: - mes "[Grampa Pharmacist]"; - mes "You don't have enough empty tubes to put the medicine in you idiot!!"; - close; - - ssL_NdHerbs: - mes "[Grampa Pharmacist]"; - mes "You rascal! What did you expect from me? You didn't even bring all of the right herbs!"; - mes "Get lost!"; - close; - - ssL_NdNegative: - mes "[Grampa Pharmacist]"; - mes "You dirty cheater! What did you expect from me? Next time set positive amount of the potions!"; - mes "Get off!"; - close; - - ssL_NdZeny: - mes "[Gramp Pharmacist]"; - mes "You don't have enough zeny for potions."; - close; + callsub sF_Make, 511, 0, 3, 506, "green"; + goto M_Menu; M_Talk: mes "[Grampa Pharmacist]"; - mes "The right type of medicinal Herbs can replenish a person's HP or SP."; - mes "~Sigh~ I'm starting to reminisce about my youth.... a sign that I must be getting old....."; + mes "The right type of medicinal Herbs can replenish a person's HP or SP"; + mes ". ~Sigh~ I'm starting to reminisce about my youth.... a sign that I"; + mes "must be getting old....."; next; mes "[Grampa Pharmacist]"; - mes "Anyways, a potion is merely an, 'easy to use', form of medicinal Herbs..... nothing more and nothing less."; + mes "... A potion is merely an, 'easy to use', form of medicinal Herbs"; + mes "..... nothing more and nothing less."; close; M_Info: mes "[Grampa Pharmacist]"; - mes "~Sigh~... you young ones can be quite bothersome... Fine, I will explain to you how potions work...."; + mes "~Sigh~... you young ones can be quite bothersome.. Fine, I will"; + mes "explain to you how potions work...."; next; mes "[Grampa Pharmacist]"; - mes "Though the bennefits from consuming the various Herbs found around Rune-Midgard are great......"; - mes "By refining them into potions, the effects of the Herbs are dramatically enhanced."; + mes "Though the bennefits from consuming the various Herbs found around"; + mes "Rune-Midgard are great... by refining them into potions, the"; + mes "effects of the Herbs are dramatically enhanced."; next; mes "[Grampa Pharmacist]"; - mes "The process of refining herbs into potions is a special one that I created. For a small fee I can make any potion you desire."; + mes "The process of refining herbs into potions is a special one that I"; + mes "created. For a small fee I can make any potion you desire."; next; mes "[Grampa Pharmacist]"; mes "^FF5533Red Potion^000000 - 2 Red Herbs, 1 Empty Bottle, 2 Zeny fee."; @@ -183,4 +96,68 @@ alberta_in.gat,16,28,4 script Grampa Pharmacist 61, mes "[Grampa Pharmacist]"; mes "Didn't you have something to say?!"; close; + +// Subfunction for making potions +//================================ +sF_Make: + set @herbnum, 2; + if(getarg(1) != 0) set @herbnum, 1; + if(countitem(getarg(0)) < @herbnum) goto L_NdHerbs; + if((countitem(getarg(1)) < @herbnum) && (getarg(1) != 0)) goto L_NdHerbs; + if(countitem(713) < 1) goto L_NdBottle; + if(Zeny < getarg(2)) goto L_NdZeny; + + mes "[Grampa Pharmacist]"; + mes "How many?"; + next; + menu "As many as possible.",sM_0a, "I will set the amount.",sM_0b, "Nah, forget about it",M_End; + + sM_0a: + set @amount, 1000; + if(zeny/getarg(2) < @amount) set @amount, zeny/getarg(2); + if(countitem(getarg(0))/@herbnum < @amount) set @amount, countitem(getarg(0))/@herbnum; + if((countitem(getarg(1))/@herbnum < @amount) && (countitem(getarg(1)) != 0)) set @amount, countitem(getarg(1))/@herbnum; + if(countitem(713) < @amount) set @amount, countitem(713); + if(@amount > 0) goto L_End; + mes "[Grampa Pharmacist]"; + mes "Jeez... you don't even have the right items....."; + close; + + sM_0b: + input @amount; + if(@amount<1 || @amount>1000) goto L_BadAmnt; + if(countitem(getarg(0))/@herbnum < @amount) goto L_NdHerbs; + if((countitem(getarg(1))/@herbnum < @amount) && (countitem(getarg(1)) != 0)) goto L_NdHerbs; + if(countitem(713) < @amount) goto L_NdBottle; + if(Zeny < (getarg(2)*@amount)) goto L_NdZeny; + + L_End: + mes "[Grampa Pharmacist]"; + mes "Here are your " +getarg(4)+ " potions."; + delitem getarg(0), (@amount*@herbnum); + if(getarg(1) != 0) delitem getarg(1), (@amount*@herbnum); + delitem 713, @amount; + set Zeny, Zeny - (getarg(2)*@amount); + getitem getarg(3), @amount; + close; + + L_NdBottle: + mes "[Grampa Pharmacist]"; + mes "You don't have enough empty bottles to put the medicine in you idiot!!"; + return; + + L_NdHerbs: + mes "[Grampa Pharmacist]"; + mes "You rascal! What did you expect from me? You didn't even bring all of the right herbs!"; + return; + + L_NdZeny: + mes "[Grampa Pharmacist]"; + mes "You don't have enough zeny for that many potions."; + return; + + L_BadAmnt: + mes "[Grampa Pharmacist]"; + mes "What?! That's not a valid amount!"; + return; } diff --git a/npc/quests/juice_maker.txt b/npc/quests/juice_maker.txt index aeb984143..19819b759 100644 --- a/npc/quests/juice_maker.txt +++ b/npc/quests/juice_maker.txt @@ -1,32 +1,33 @@ -//===== eAthena Script ======================================= +//===== eAthena Script ======================================= //= Juice Maker Quest -//===== By: ================================================== +//===== By: ================================================== //= kobra_k88 -//===== Current Version: ===================================== -//= 1.3 -//===== Compatible With: ===================================== +//===== Current Version: ===================================== +//= 1.3a +//===== Compatible With: ===================================== //= eAthena 7.15 + -//===== Description: ========================================= +//===== Description: ========================================= //= -//===== Additional Comments: ================================= +//===== Additional Comments: ================================= //= Fully working //= 1.1 fixed input number check [Lupus] //= 1.2 fixed misplaced Grape<->Carrot juices [Lupus] //= 1.3 added a loopless menu 'as many as possible' [Lupus] -//============================================================ - - +//= 1.3a Turned the juice making part of the Juicer npc into a +//= subfunc. Changed fruit amount needed to 1.[kobra_k88] +//============================================================ // Morrison ------------------------------------------------ prt_in.gat,47,173,2 script Morrison 97, { + mes "[Little Morrison]"; if(MEAT > 10) goto L_Candy; - if(MARIANNE == 10) goto L_GoAway; + if(MARIANNE == 1) goto L_GoAway; - mes "[Little Morrison]"; mes "Wahhhhh!!! Wahh... NO more! NO more!"; mes "I won't... eat anymore stupid ^0000ffFruit^000000 things!!"; + emotion 28; next; menu "Talk",M_Talk,"Cancel",M_End; @@ -34,8 +35,10 @@ prt_in.gat,47,173,2 script Morrison 97, if(countitem(517) > 0) goto L_Meat; //Meat mes "[Little Morrison]"; - mes "Arhhggg!! I'VE HAD ENOUGH!!! I can't eat anymore ^0000ffFruits^000000!"; - mes "They taste so SOUR..... I have to PEEL them before I can eat them.....they feel sticky and squishy...... it's really ANNOYING!!!!"; + mes "Arhhggg!! I'VE HAD ENOUGH!!! I can't eat anymore ^0000ffFruits^000000! They"; + mes "taste so SOUR..... I have to PEEL them before I can eat them....."; + mes "they feel sticky and squishy...... it's really ANNOYING!!!!"; + emotion 16; next; mes "[LIttle Morrison]"; mes "I just HATE FRUIT! I can't even get full off of the stuff.(~sigh~)"; @@ -45,13 +48,16 @@ prt_in.gat,47,173,2 script Morrison 97, L_Meat: mes "[Little Morrison]"; mes "...(sniff)....(sniff)(sniff).... Oh! Is that ^ff0000Meat^000000???"; + emotion 5; next; mes "[Little Morrison]"; mes "Do you have some ^ff0000Meat^000000?!!!~(drools)~"; mes "Umm... that yummy smell is making me SOOO HUNGRYYYY!!!l"; + emotion 37; next; mes "[Little Morrison]"; mes "... Umm... excuse me..... could you give me some of that meat PLEEAASSSE?"; + emotion 28; next; menu "Give him some",sM_Give,"Ignore him",sM_Ignore; @@ -59,32 +65,36 @@ prt_in.gat,47,173,2 script Morrison 97, set MORRISON,1; set MEAT,MEAT + 1; delitem 517,1; //Meat - mes "[Little Morrison]"; mes "Whoah~!!! It's real Meat, Meat!"; mes "Mmmm! It makes my mouth water."; mes "Oh thank you. Now I feel happy. Yum Yum..."; + emotion 38; close; + sM_Ignore: set MORRISON,2; - mes "[Little Morrison]"; mes "Boo..."; mes "Boo... Fine... Alright, Alright~!!! Selfish meanie!"; + emotion 36; close; M_End: mes "[Little Morrison]"; - mes "Wahhhhh!!! No matter how hard I try, I just can't eat Vegetables or ^0000ffFruit^000000! They're plain disgusting!!"; + mes "Wahhhh!!! No matter how hard I try, I just can't eat Vegetables"; + mes "or ^0000ffFruit^000000! They're plain disgusting!!"; + emotion 28; close; L_GoAway: - mes "[Little Morrison]"; - mes "Pffff... Leave me alone! You DON'T CARE about me! I'm gonna DIE because of these stupid Veggies and Fuits so MIND your own business!"; + mes "Pffff... Leave me alone! You DON'T CARE about me! I'm gonna DIE"; + mes "because of these stupid Veggies and Fuits so MIND your own business!"; + emotion 32; close; + L_Candy: - mes "[Little Morrison]"; - mes "Ah..I am full now."; - mes "You don't have to feed me any more. I think I am gonna BURST if i keep eating more."; + mes "Ah..I am full now. You don't have to feed me any more. I think I"; + mes "am gonna BURST if I keep eating more."; next; mes "[Little Morrison]"; mes "And... um... Take this."; @@ -92,9 +102,9 @@ L_Candy: getitem 529,3; getitem 530,1; set MEAT,0; - mes "[Little Morrison]"; - mes "It is from my secret stash of Candy that I hide from my Mom. Since you gave me some Meat, I will give you some candy." ; + mes "It is from my secret stash of Candy that I hide from my Mom. Since"; + mes "you gave me some Meat, I will give you some candy." ; close; } @@ -102,66 +112,78 @@ L_Candy: // Housewife Marianne --------------------------------------------------- prt_in.gat,49,172,2 script Housewife Marianne 53, { + mes "[Housewife Marianne]"; if(MORRISON == 1) goto L_GaveMeat; if(MORRISON == 2) goto L_Juice; - mes "[Housewife Marianne]"; mes "Morrison!! Please eat some fruit will ya? Fruit~!"; mes "*Sob*~!! Like father like son..."; + emotion 28; next; menu "Talk",M_Talk,"Cancel",M_Cancel; close; M_Talk: mes "[Housewife Marianne]"; - mes "(~Sigh~)...This is Morrison... My one and only son."; - mes "He's going through some kinda faze and doesn't want to eat any ^0000ffFruits^000000 or vegetables. Look at his face, it turns sour just hearing about ^0000fffFruit^000000..."; + mes "(~Sigh~)...This is Morrison... My one and only son. He's going"; + mes "through some kinda faze and doesn't want to eat any ^0000ffFruits^000000 or"; + mes "vegetables."; + emotion 40; next; mes "[Housewife Marianne]"; - mes "All he wants to eat is but ^ff0000Meat^000000... (sigh)...he needs ^0000ffFruits^000000 and vegetables for a proper diet."; + mes "Look at his face..., it turns sour just hearing about ^0000ffFruit^000000..."; + next; + mes "[Housewife Marianne]"; + mes "All he wants to eat is but ^ff0000Meat^000000... (sigh)...he needs"; + mes "^0000ffFruits^000000 and vegetables for a proper diet."; next; - close; M_Cancel: mes "[Housewife Marianne]"; mes "Morrison!! I will get mad at you if you keep doing this!"; + emotion 36; close; L_GaveMeat: set MORRISON,0; - - mes "[Housewife Marianne]"; mes "Oh MY GOD!!... Oh lord..."; + emotion 23; next; mes "[Housewife Marianne]"; mes "WHAT ARE YOU DOING!! HOW DARE YOU feed my son!! And ^ff0000MEAT^000000 of all things!!!"; next; mes "[Housewife Marianne]"; mes "Arrrgh~~!! Get Lost right now!!!!!!"; + emotion 32; close; L_Juice: set MORRISON,0; set MARIANNE,1; - - mes "[Housewife Marianne]"; - mes "Thank you for not giving my son any meat. I'm trying to feed him ^0000ffFruits^000000 and vegetables, but this child doesn't want to eat anything except Meat..."; + mes "Thank you for not giving my son any meat. I'm trying to feed him"; + mes "^0000ffFruits^000000 and vegetables, but this child doesn't want to eat"; + mes "anything except Meat..."; next; mes "[Housewife Marianne]"; - mes "What if I could turn ^0000ffFruits^000000 into a ^0000ffJuice^000000... for example...Orange juice... Would my child like it?"; + mes "What if I could turn ^0000ffFruits^000000 into a ^0000ffJuice^000000... for example...Orange"; + mes "juice... Would my child like it?"; + emotion 20; next; mes "[Housewife Marianne]"; - mes "Ah! Now I remember..There is a town where you can get a variety of ^0000ffFruit^000000 turned into ^0000ffFruit Juices^000000."; + mes "Ah! Now I remember..There is a town where you can get a variety of"; + mes "^0000ffFruit^000000 turned into ^0000ffFruit Juices^000000."; + emotion 5; next; mes "[Housewife Marianne]"; mes "... Was is it...^ff0000Payon^000000...or ^ff0000Morroc^000000...?"; + emotion 20; next; close; } -// Juicer Marx Hansen ----------------------------------------------------------------------- -payon_in01.gat,5,48,3 script Juicer Marx Hansen 86, +// Juicer Marx Hansen --------------------------------------------------------- +payon_in01.gat,5,48,7 script Juicer Marx Hansen 86, { mes "[Juicer Marx Hansen]"; if(MARIANNE == 1) goto L_Juice; @@ -189,120 +211,97 @@ payon_in01.gat,5,48,3 script Juicer Marx Hansen 86, mes "Ok then."; close; +//-------------- L_Juice: - mes "Welcome to my shop. Do you come here to process Fruits like the rest?"; +//--------- + mes "Welcome to my shop. Are you here to process Fruits like everyone else?"; next; - - menu "Yes, I do.",M_1a,"How do you make fruit juice?",M_1b,"No, I don't.",M_1End; + menu "Yes, I am.",M_1a, "How do you make fruit juice?",M_1b, "Nope.",M_1End; M_1a: mes "[Juicer Marx Hansen]"; mes "So what kind of fruit juice would you like to process?"; next; - menu "Apple Juice",sM_1a,"Banana Juice",sM_1b,"Grape Juice",sM_1c,"Carrot Juice",sM_1d,"Nope, I'm fine.",sM_1End; + menu "Apple Juice",sM_1a,"Banana Juice",sM_1b,"Grape Juice",sM_1c,"Carrot Juice",sM_1d,"None.",M_1End; sM_1a: - set @FRUIT,512; - set @JUICE,531; - goto sL_Make; + callsub sF_Make, 512, "apples", 531; + goto M_1a; sM_1b: - set @FRUIT,513; - set @JUICE,532; - goto sL_Make; + callsub sF_Make, 513, "bananas", 532; + goto M_1a; sM_1c: - set @FRUIT,514; - set @JUICE,533; - goto sL_Make; + callsub sF_Make, 514, "grapes", 533; + goto M_1a; sM_1d: - set @FRUIT,515; - set @JUICE,534; - - sL_Make: - mes "[Juicer Marx Hansen]"; - mes "How many bottles would you like?"; - next; - menu "I'll tell you.",sL_Make_InputN, "As many as possible",-, "I've changed my mind.",sM_1End; + callsub sF_Make, 515, "carrots", 534; + goto M_1a; + M_1b: + mes "[Juicer Marx Hansen]"; + mes "# Fruit Juice Info #"; + mes "- ^FF3355Apple^000000 Juice - Apple x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + mes "- ^D5A500Banana^000000 Juice - Banana x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + mes "- ^FF8800Carrot^000000 Juice - Carrot x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + mes "- ^AA00AAGrape^000000 Juice - Grape x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + close; + M_1End: + mes "[Juicer Marx Hansen]"; + mes "Oh well... see you next time."; + close; - set @FRUITNUM,100; //max possible amount of Juice - //calc max possible # juices - if(Zeny/3 < @FRUITNUM) set @FRUITNUM,Zeny/3; - if(countitem(@FRUIT) < @FRUITNUM) set @FRUITNUM,countitem(@FRUIT); - if(countitem(713) < @FRUITNUM) set @FRUITNUM,countitem(713); - if(@FRUITNUM > 0) goto sL_Make_Max; - mes "[Juicer Marx Hansen]"; - mes "Doh! You don't have enough ingredients for a single bottle of juice."; - emotion 0; - close; +// Subfunction for making juice +//---------------------------------- +sF_Make: + mes "[Juicer Marx Hansen]"; + mes "How many bottles would you like?"; + next; + menu "I'll tell you.",M_Tell, "As many as possible",-, "I've changed my mind.",M_1End; + + set @amount,1000; //max possible amount of Juice + //calc max possible # juices + if(Zeny/3 < @amount) set @ipnut, Zeny/3; + if(countitem(getarg(0)) < @amount) set @amount, countitem(getarg(0)); + if(countitem(713) < @amount) set @amount, countitem(713); + if(@amount > 0) goto L_Make; + mes "[Juicer Marx Hansen]"; + mes "Doh! You don't have enough ingredients for a single bottle of juice."; + emotion 0; + close; - sL_Make_Max: - delitem @FRUIT,@FRUITNUM; //del Fruit - delitem 713,@FRUITNUM; //del Empty Bottle - set Zeny,Zeny-@FRUITNUM*3; - getitem @JUICE,@FRUITNUM; //get Juice - goto sL_Make_Got; + M_Tell: + mes "[Juicer Marx Hansen]"; + mes "Very well then. Enter 0 if you don't want any. Also you cannot"; + mes "buy more than 1000 at a time."; + next; + input @amount; + if(@amount < 1 || @amount > 1000) return; + if(countitem(getarg(0)) < @amount) goto sL_NoFruits; + if(countitem(713) < @amount) goto sL_NoBottles; + if(Zeny < @amount * 3) goto sL_NoZeny; + + L_Make: + delitem getarg(0), @amount; //del Fruit + delitem 713, @amount; //del Empty Bottle + set Zeny, Zeny - @amount * 3; + getitem getarg(2), @amount; //get Juice + mes "[Juicer Marx Hansen]"; + mes "Here you are. Take it."; + close; - sL_Make_InputN: + sL_NoFruits: mes "[Juicer Marx Hansen]"; - mes "Very well then. How many bottles would you like?"; - mes "Enter 0 if you don't want any."; + mes "You don't have enough fruit."; + mes "You need " +@amount+ " " +getarg(1)+ " to make that much juice."; next; - input @input; - - if(@input < 1) goto sM_1End; - set @FRUITNUM,(3*@input); - set @ZENYNUM,(3*@input); - if(countitem(@FRUIT) < @FRUITNUM) goto sl_Fruits; - if(countitem(713) < @input) goto sl_Bottles; - if(Zeny < @ZENYNUM) goto sl_Zeny; - - delitem @FRUIT,@FRUITNUM; //del Fruit - delitem 713,@input; //del Empty Bottle - set Zeny,Zeny - @ZENYUM; //get Juice - getitem @JUICE,@input; - sL_Make_Got: + return; + sL_NoBottles: mes "[Juicer Marx Hansen]"; - mes "Here you are. Take it."; - close; - - - sl_Fruits: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough fruit."; - if (@FRUIT == 512) mes "You need "+@FRUITNUM+" apples to make that much apple juice."; - if (@FRUIT == 513) mes "You need "+@FRUITNUM+" bannanas to make that much bannana juice."; - if (@FRUIT == 514) mes "You need "+@FRUITNUM+" grapes to make that much grape juice."; - if (@FRUIT == 515) mes "You need "+@FRUITNUM+" carrots to make that much carrot juice."; - next; - goto M_1a; - close; - - sl_Bottles: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough bottles. You need "+@input+" empty bottle(s) to make that many juice drinks."; - next; - goto M_1a; - - sl_Zeny: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough zeny. You need "+@ZENYNUM+" zeny, to make that many juice drinks."; - next; - goto M_1a; - - sM_1End: + mes "You don't have enough bottles. You need "+@amount+" empty bottle(s) to make that many juice drinks."; + next; + return; + sL_NoZeny: mes "[Juicer Marx Hansen]"; - mes "Oh well... see you next time."; - close; - - M_1b: - mes "[Juicer Marx Hansen]"; - mes "# Fruit Juice Info #"; - mes "Apple Juice - Apple x 3 ea, Empty Bottle x 1 ea, 3 zeny."; - mes "Banane Juice - Banana x 3 ea, Empty Bottle x 1 ea, 3 zeny."; - mes "Carrot Juice - Carrot x 3 ea, Empty Bottle x 1 ea, 3 zeny."; - mes "Grape Juice - Grape x 3 ea, Empty Bottle x 1 ea, 3 zeny."; - close; - - M_1End: - close; + mes "You don't have enough zeny. You need " +(@amount*3)+ " zeny, to make that many juice drinks."; + next; + return; } - -- cgit v1.2.3-70-g09d2