Browse Source

Added subfunctions to juicmaker and grampa pharmacist npcs.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@219 54d463be-8e91-2dee-dedb-b68131a5f0ec
kobra_k88 20 years ago
parent
commit
ec5d1d3b62
4 changed files with 259 additions and 278 deletions
  1. 5 0
      npc/Changelog.txt
  2. 11 11
      npc/events/xmas.txt
  3. 109 132
      npc/merchants/grandpa_pharmacist.txt
  4. 134 135
      npc/quests/juice_maker.txt

+ 5 - 0
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]
 

+ 11 - 11
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

+ 109 - 132
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;
 }

+ 134 - 135
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;
 }
-