From 3f131f30d872f3a97ba13e67030d727c7a0c8702 Mon Sep 17 00:00:00 2001 From: L0ne_W0lf Date: Sun, 25 Nov 2007 20:55:07 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11801 54d463be-8e91-2dee-dedb-b68131a5f0ec --- npc/Changelog.txt | 1 + npc/merchants/novice_exchange.txt | 473 +++++++++++++++++++++++-------- npc/quests/juice_maker.txt | 578 ++++++++++++++++++++------------------ 3 files changed, 665 insertions(+), 387 deletions(-) (limited to 'npc') diff --git a/npc/Changelog.txt b/npc/Changelog.txt index 6f7d7822f..43c52c17e 100644 --- a/npc/Changelog.txt +++ b/npc/Changelog.txt @@ -1,6 +1,7 @@ Date Added ====== 2007/11/25 + * 11801 Updated Novice Potion exhanger and juice maker. [L0ne_W0lf] * 11800 Updated Bunny Band and Mr. Smile quests. [L0ne_W0lf] * Fixed an NPC error in lutie quest file (scrap " left behind.) [l0ne_W0lf] * Changed item names to item IDs on some scripts. [Samuray22] diff --git a/npc/merchants/novice_exchange.txt b/npc/merchants/novice_exchange.txt index 1d4b14012..ad87dc4ae 100644 --- a/npc/merchants/novice_exchange.txt +++ b/npc/merchants/novice_exchange.txt @@ -3,157 +3,390 @@ //===== By: ================================================== //= ???, eAthena Team //===== Current Version: ===================================== -//= 1.1a +//= 1.2 //===== Compatible With: ===================================== //= eAthena 1.0+ //===== Description: ========================================= -//= Exchanges your cheap loot to Red Potions. -//= Official NPC. +//= [Aegis COnversion] +//= Exchanges your Basic Monster drops for Red Potions. //===== Additional Comments: ================================= -//= 1.1 Made it as a function. U can add your own Merchs [Lupus] -//= 1.1a Fixed item select [KarLaeda] +//= 1.2 Rescripted to Aegis 10.standards. [L0ne_W0lf[ +//= Made it easier to add new items to exhange list +//= meaning only the exchange is done in a function now. //============================================================ -function script F_NMerch { - mes "["+getarg(0)+"]"; - if((Weight*100)/MaxWeight >= 90){ - mes "You will exceed your weight limit if you exchange for the Red Potions."; +prontera,123,102,5 script Merchant#pron 85,{ + set .@now_weight,MaxWeight-Weight; + if (.@now_weight < 6301) { + mes "[Merchant]"; + mes "Haha!"; + mes "What are you, superhuman?"; + mes "You're carrying so much stuff!"; + mes "You better put some of that"; + mes "into Kafra Storage~"; close; } + mes "[Merchant]"; mes "Good day!"; - mes "Do you have any collection items such as "+getitemname(getarg(1))+" or "+getitemname(getarg(3))+"?"; - if(getarg(5)) - mes "...how about "+getitemname(getarg(5))+"?.."; - mes "Oh, yeah, I need those for something."; + mes "Have you collected any"; + mes "items like Shells or Fluff?"; + mes "What about Jellopies? Oh yeah,"; + mes "I need those for something."; next; - mes "["+getarg(0)+"]"; - mes "Of course I am not asking you to give those for free!"; - mes "How about... if I give you 1 Red"; - mes "Potion for "+getarg(2)+" "+getitemname(getarg(1))+" or "+getarg(4)+" "+getitemname(getarg(3))+"?"; - if(getarg(5)) - mes "Or "+getarg(6)+" "+getitemname(getarg(5))+"?"; + mes "[Merchant]"; + mes "Of course, I won't ask you"; + mes "to give me that stuff for free. What about if I trade a Red Potion for 5 Shells, 10 Fluff,"; + mes "or 10 Jellopies?"; next; - switch (select("Sure!:Think you're ripping me off...:No, thanks")) { + switch(select("Sure!:I think it's a rip-off!:No, thanks.")) { case 1: - mes "["+getarg(0)+"]"; - mes "So which item do you bring me?"; - mes ""+getitemname(getarg(1))+"? "+getitemname(getarg(3))+"?"; - if(getarg(5)) - mes "Or "+getitemname(getarg(5))+"?"; + mes "[Merchant]"; + mes "So which item do"; + mes "you want to bring me?"; + mes "Shells, Fluffs, or Jellopies?"; next; - if(getarg(5)) - set @i,select(""+getitemname(getarg(1))+"",""+getitemname(getarg(3))+"",""+getitemname(getarg(5))+"","Cancel"); - else - set @i,select(""+getitemname(getarg(1))+"",""+getitemname(getarg(3))+"","Cancel"); - if(@i==4 || (@i==3 && !getarg(5))) { - mes "["+getarg(0)+"]"; - mes "Sure, no problem."; - close; - } - set @item,getarg(@i*2-1); - set @amount,getarg(@i*2); - set @have,countitem(@item); - if(@have < @amount) { - mes "["+getarg(0)+"]"; - mes "Hey, where are all those"; - mes getitemname(@item)+" you promised?"; + switch(select("Shells:Jellopies:Fluff:Cancel")) { + case 1: callfunc "F_PotExchange",935,5; + case 2: callfunc "F_PotExchange",909,10; + case 3: callfunc "F_PotExchange",914,10; + case 4: + mes "[Merchant]"; + mes "Sure~"; + mes "No problem."; close; } - mes "["+getarg(0)+"]"; - mes "Okay, let me take a look at the stuff you brought."; - next; - set @max,@have / @amount; - mes "["+getarg(0)+"]"; - mes "You have total "+@have+" "+getitemname(@item)+"..."; - mes "I can give you"; - mes "total "+@max+" Red Potion for those."; - next; - mes "["+getarg(0)+"]"; - mes "What do you say? Deal?"; + case 2: + mes "[Merchant]"; + mes "A rip-off...?"; + mes "If you check the market value"; + mes "of the items being traded, I'm actually the one getting"; + mes "ripped off here."; + close; + case 3: + mes "[Merchant]"; + mes "Alright,"; + mes "no problem."; + mes "But come back to me"; + mes "if you change your mind."; + close; + } +} + +morocc,180,259,3 script Merchant#morroc 85,{ + set .@now_weight,MaxWeight-Weight; + if (.@now_weight < 6301) { + mes "[Merchant]"; + mes "Haha!"; + mes "What are you, superhuman?"; + mes "You're carrying so much stuff!"; + mes "You better put some of that"; + mes "into Kafra Storage~"; + close; + } + mes "[Merchant]"; + mes "Good day!"; + mes "Have you collected any"; + mes "Shells or Feathers of Bird?"; + mes "What about Jellopies? Oh yeah,"; + mes "I need those for something."; + next; + mes "[Merchant]"; + mes "Of course, I won't ask you"; + mes "to give me that stuff for free. What about if I trade a Red Potion for 5 Shells, 7 Feathers of Bird"; + mes "or 10 Jellopies?"; + next; + switch(select("Sure!:I think it's a rip-off!:No, thanks.")) { + case 1: + mes "[Merchant]"; + mes "So which item do"; + mes "you want to bring me?"; + mes "Shells, Feathers of Birds,"; + mes "or Jellopies?"; next; - if(select("Deal.:No deal.")==2) { - mes "["+getarg(0)+"]"; - mes "Bah~ whatever."; - mes "Bah!"; + switch(select("Shells:Feathers of Birds:Jellopies:Cancel")) { + case 1: callfunc "F_PotExchange",935,5; + case 2: callfunc "F_PotExchange",916,7; + case 3: callfunc "F_PotExchange",909,10; + case 4: + mes "[Merchant]"; + mes "Sure~"; + mes "No problem."; close; } - mes "["+getarg(0)+"]"; - mes "You know the exact number of Red Potions"; - mes "you can receive for "+getitemname(@item)+", don't you?"; + case 2: + mes "[Merchant]"; + mes "A rip-off...?"; + mes "If you check the market value"; + mes "of the items being traded, I'm actually the one getting"; + mes "ripped off here."; + close; + case 3: + mes "[Merchant]"; + mes "Alright,"; + mes "no problem."; + mes "But come back to me"; + mes "if you change your mind."; + close; + } +} + +payon,200,134,5 script Merchant#pay 85,{ + set .@now_weight,MaxWeight-Weight; + if (.@now_weight < 6301) { + mes "[Merchant]"; + mes "Haha!"; + mes "What are you, superhuman?"; + mes "You're carrying so much stuff!"; + mes "You better put some of that"; + mes "into Kafra Storage~"; + close; + } + mes "[Merchant]"; + mes "Good day!"; + mes "Have you collected"; + mes "items like Tree Roots?"; + mes "What about Jellopies? Oh yeah,"; + mes "I need those for something."; + next; + mes "[Merchant]"; + mes "Of course, I won't ask you"; + mes "to give me that stuff for free. What about if I trade a Red Potion for 6 Tree Roots or 10 Jellopies?"; + next; + switch(select("Sure!:I think it's a rip-off!:No, thanks.")) { + case 1: + mes "[Merchant]"; + mes "So which item do"; + mes "you want to bring me?"; + mes "Tree Roots, or Jellopies?"; next; - mes "["+getarg(0)+"]"; - mes "You can get Red Potions"; - mes "from minimum 1 to maximum 100 at once."; - mes "If you change your mind, enter '0'"; - mes "to cancel."; - while(1) { - next; - input @val; - if(@val<0 || @val>100) { - mes "["+getarg(0)+"]"; - mes "Uh oh, the number you entered"; - mes "seemed incorrect."; - mes "You'd better check how many Red"; - mes "Potions you can get."; - continue; - } - break; - } - mes "["+getarg(0)+"]"; - if(@val == 0) { - mes "What...how the hell did you even"; - mes "bother to talk to me?"; - mes "Leave, I don't deal with whimsical"; - mes "people."; + switch(select("Tree Roots:Jellopies:Cancel")) { + case 1: callfunc "F_PotExchange",902,6; + case 2: callfunc "F_PotExchange",909,10; + case 3: + mes "[Merchant]"; + mes "Sure~"; + mes "No problem."; close; } - if(@val > @max) { - mes "Uh oh, the number you entered"; - mes "seemed incorrect."; - mes "You'd better check how many Red"; - mes "Potions you can get."; - close; - } - delitem @item,@amount*@val; - getitem 501,@val; - mes "There you go!"; - mes "Thanks, it was a good deal."; - close; case 2: - mes "["+getarg(0)+"]"; - mes "Did you say I am ripping you off?!"; - mes "You got to know how ignorant that comment was!"; - next; - mes "["+getarg(0)+"]"; - mes "When you check the price of each item,"; - mes "I am doing a losing business."; - mes "If you don't want to do then, fine!"; + mes "[Merchant]"; + mes "A rip-off...?"; + mes "If you check the market value"; + mes "of the items being traded, I'm actually the one getting"; + mes "ripped off here."; close; case 3: - mes "["+getarg(0)+"]"; - mes "Hah, no problem."; - mes "Bah!"; + mes "[Merchant]"; + mes "Alright,"; + mes "no problem."; + mes "But come back to me"; + mes "if you change your mind."; close; } } -prontera,123,102,5 script Merchant#1 85,{ - callfunc "F_NMerch","Merchant",935,5,914,10,909,10; -} - -geffen,173,88,5 script Merchant#2 85,{ - callfunc "F_NMerch","Merchant",935,5,915,6,909,10; +aldebaran,152,63,5 script Merchant#alde 85,{ + set .@now_weight,MaxWeight-Weight; + if (.@now_weight < 6301) { + mes "[Merchant]"; + mes "Haha!"; + mes "What are you, superhuman?"; + mes "You're carrying so much stuff!"; + mes "You better put some of that"; + mes "into Kafra Storage~"; + close; + } + mes "[Merchant]"; + mes "Good day!"; + mes "Have you collected any"; + mes "Worm Peelings or Feather of Birds?"; + mes "How about Jellopies? Oh yeah,"; + mes "I need those for something."; + next; + mes "[Merchant]"; + mes "Of course, I won't ask you"; + mes "to give me that stuff for free. What about if I trade a Red Potion for 1 Worm Peeling, 7 Feather of Birds, or 10 Jellopies?"; + next; + switch(select("Sure!:I think it's a rip-off!:No, thanks.")) { + case 1: + mes "[Merchant]"; + mes "So which item do"; + mes "you want to bring me?"; + mes "Feathers of Birds?"; + mes "Worm Peelings?"; + mes "Or Jellopies?"; + next; + switch(select("Worm Peelings:Feathers of Birds:Jellopies:Cancel")) { + case 1: callfunc "F_PotExchange",955,1; + case 2: callfunc "F_PotExchange",916,7; + case 3: callfunc "F_PotExchange",909,10; + case 4: + mes "[Merchant]"; + mes "Sure~"; + mes "No problem."; + close; + } + case 2: + mes "[Merchant]"; + mes "A rip-off...?"; + mes "If you check the market value"; + mes "of the items being traded, I'm actually the one getting"; + mes "ripped off here."; + close; + case 3: + mes "[Merchant]"; + mes "Alright,"; + mes "no problem."; + mes "But come back to me"; + mes "if you change your mind."; + close; + } } -morocc,180,259,3 script Merchant#3 85,{ - callfunc "F_NMerch","Merchant",935,5,916,7,909,10; +geffen,173,88,5 script Merchant#geff 85,{ + set .@now_weight,MaxWeight-Weight; + if (.@now_weight < 6301) { + mes "[Merchant]"; + mes "Haha!"; + mes "What are you, superhuman?"; + mes "You're carrying so much stuff!"; + mes "You better put some of that"; + mes "into Kafra Storage~"; + close; + } + mes "[Merchant]"; + mes "Good day!"; + mes "Have you collected any"; + mes "items like Shells or Chrysalises?"; + mes "What about Jellopies? Oh yeah,"; + mes "I need those for something."; + next; + mes "[Merchant]"; + mes "Of course, I won't ask you"; + mes "to give me that stuff for free. What about if I trade a Red Potion for 5 Shells or 6 Chrysalises, or 10 Jellopies?"; + next; + switch(select("Sure!:I think it's a rip-off!:No, thanks.")) { + case 1: + mes "[Merchant]"; + mes "So which item do"; + mes "you want to bring me?"; + mes "Shells, Chrysalises, or Jellopies?"; + next; + switch(select("Shells:Chrysalises:Jellopies:Cancel")) { + case 1: callfunc "F_PotExchange",935,5; + case 2: callfunc "F_PotExchange",915,6; + case 3: callfunc "F_PotExchange",909,10; + case 4: + mes "[Merchant]"; + mes "Sure~"; + mes "No problem."; + close; + } + case 2: + mes "[Merchant]"; + mes "A rip-off...?"; + mes "If you check the market value"; + mes "of the items being traded, I'm actually the one getting"; + mes "ripped off here."; + close; + case 3: + mes "[Merchant]"; + mes "Alright,"; + mes "no problem."; + mes "But come back to me"; + mes "if you change your mind."; + close; + } } -aldebaran,152,63,5 script Merchant#4 85,{ - callfunc "F_NMerch","Merchant",955,1,916,7,909,10; +function script F_PotExchange { + if (countitem(getarg(0)) < getarg(1)) { + mes "[Merchant]"; + mes "Hey, where are"; + mes "all those Shells"; + mes "that you promised?"; + mes "Give me "+getitemname(getarg(0))+"!"; + close; + } + else { + mes "[Merchant]"; + mes "Okay, let me check"; + mes "how many Shells you"; + mes "have on you. Hmm..."; + next; + mes "[Merchant]"; + mes "You have"; + mes "a total of " + countitem(getarg(0)) + " "+getitemname(getarg(0))+"."; + mes "I can give you a total"; + mes "of " + (countitem(getarg(0))/getarg(1)) + " Red Potions for those."; + next; + mes "[Merchant]"; + mes "What do you say?"; + mes "Do we have a deal?"; + next; + if (select("Deal.:No deal.") == 1) { + mes "[Merchant]"; + mes "You know the exact"; + mes "number of Red Potions"; + mes "you want to receive for"; + mes "those "+getitemname(getarg(0))+", don't you?"; + next; + mes "[Merchant]"; + mes "Now, I can trade you"; + mes "a minimum of 1 Red Potion"; + mes "and a maximum of 100 Red Potions"; + mes "at one time. If you change your"; + mes "mind, just enter '0' to cancel."; + next; + while(1) { + input .@input; + if (.@input == 0) { + mes "[Merchant]"; + mes "What...?"; + mes "Why the hell do you"; + mes "even bother to talk to me?"; + mes "Pretty indecisive, aren't you?"; + close; + } + else if (.@input > 100) { + mes "[Merchant]"; + mes "I can't give you more"; + mes "than 100 Red Potions"; + mes "at once. Let's try"; + mes "this again."; + next; + } + else { + break; + } + } + set .@put_out_item,.@input * getarg(1); + if (countitem(getarg(0)) < .@put_out_item) { + mes "[Merchant]"; + mes "Uh oh, the number you entered doesn't seem right. You better check the number of Red Potions that you can trade for again."; + close; + } + mes "[Merchant]"; + mes "There you go!"; + mes "Check how many Red Potions"; + mes "I've given you, it should be good. Thanks, that was a good deal~"; + delitem getarg(0),.@put_out_item; //Shell + getitem 501,.@input; //Red_Potion + close; + } + mes "[Merchant]"; + mes "Huh~"; + mes "Alright."; + mes "Though aren't"; + mes "Red Potions more useful"; + mes "to an adventurer like you?"; + close; + } } -payon,200,134,5 script Merchant#5 85,{ - //we remove 3rd item, by adding 0,0 - callfunc "F_NMerch","Merchant",902,6,909,10,0,0; -} +//============================================================ +// Old changelog +//============================================================ +//= 1.1 Made it as a function. U can add your own Merchs [Lupus] +//= 1.1a Fixed item select [KarLaeda] +//============================================================ diff --git a/npc/quests/juice_maker.txt b/npc/quests/juice_maker.txt index 718b51eec..ea1850792 100644 --- a/npc/quests/juice_maker.txt +++ b/npc/quests/juice_maker.txt @@ -3,305 +3,349 @@ //===== By: ================================================== //= kobra_k88 //===== Current Version: ===================================== -//= 1.8 +//= 1.9 //===== Compatible With: ===================================== -//= eAthena 7.15 + +//= eAthena SVN //===== Description: ========================================= -//= -//===== Additional Comments: ================================= +//= [Aegis COnversion] +//= Learn where to turn apples, bananas, carrots, and grapes +//= into juice. //= Condition if done: (MISC_QUEST & 1) -//= -//= 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] -//= Fixed exploits [Lupus] -//= 1.6 fixed typo (where did @ipnut came from?) [Lance] -//= 1.8 got rid of vars: 'MEAT',"MARIANNE","MORRISON" -//= From now, all common quests start using bits of the -//= same variable MISC_QUEST [Lupus] +//===== Additional Comments: ================================= +//= 1.9 Rescripted to Aegis 10.3 standards. [L0ne_W0lf] +//= Added tracking variables in, which are unset when complete. //============================================================ - -// Morrison ------------------------------------------------ -prt_in,47,173,2 script Morrison 97,{ - mes "[Little Morrison]"; - if(MISC_QUEST&1 || @MORRISON > 10) goto L_GoAway; - if(@MORRISON == 10) goto L_Candy; - - mes "Wahhhhh!!! Wahh... NO more! NO more!"; - mes "I won't... eat anymore stupid ^0000ffFruit^000000 things!!"; - emotion e_sob; - next; - menu "Talk",M_Talk,"Cancel",M_End; - - M_Talk: - if(countitem(517)) goto L_Meat; //Meat - - mes "[Little Morrison]"; - 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 e_wah; - next; - mes "[LIttle Morrison]"; - mes "I just HATE FRUIT! I can't even get full off of the stuff.(~sigh~)"; - mes "Give me something more edible..... give me some...... ^ff0000MEAT^000000!!!"; - close; - - L_Meat: - mes "[Little Morrison]"; - mes "...(sniff)....(sniff)(sniff).... Oh! Is that ^ff0000Meat^000000???"; - emotion e_ic; - next; - mes "[Little Morrison]"; - mes "Do you have some ^ff0000Meat^000000?!!!~(drools)~"; - mes "Umm... that yummy smell is making me SOOO HUNGRYYYY!!!l"; - emotion e_rice; - next; - mes "[Little Morrison]"; - mes "... Umm... excuse me..... could you give me some of that meat PLEEAASSSE?"; - emotion e_sob; +prt_in,49,172,3 script Marianne#juice 53,{ + if (MISC_QUEST&1 || morison_meat == 15) { + mes "[Housewife Marianne]"; + mes "Whew...!"; + mes "Still, he won't eat anything unless it's Meat. But maybe he will eat fruit if it was cut so that it was easy to eat. Like, if it was blended into juice..."; next; - menu "Give him some",sM_Give,"Ignore him",sM_Ignore; - - sM_Give: - if(countitem(517) == 0) goto L_GoAway; //Meat - delitem 517,1; //Meat - set @MORRISON,@MORRISON+1; - 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 e_awsm; - close; - - sM_Ignore: - set @MORRISON,11; - mes "[Little Morrison]"; - mes "Boo..."; - mes "Boo... Fine... Alright, Alright~!!! Selfish meanie!"; - emotion e_bzz; - close; - M_End: - mes "[Little Morrison]"; - mes "Wahhhh!!! No matter how hard I try, I just can't eat Vegetables"; - mes "or ^0000ffFruit^000000! They're plain disgusting!!"; - emotion e_sob; + set mother_marienu,0; + set morison_meat,0; + set MISC_QUEST,MISC_QUEST | 1; + mes "[Housewife Marianne]"; + mes "Ah! Come to think of it, I heard they were making fruit juice somewhere. Now where was it... Payon Village, or Morroc?"; close; - -L_GoAway: - 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 e_pif; - close; - -L_Candy: - 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."; - next; - getitem 529,3; - getitem 530,1; - set @MORRISON,0; - mes "[Little Morrison]"; - 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; - -} - -// Housewife Marianne --------------------------------------------------- -prt_in,49,172,2 script Housewife Marianne 53,{ - mes "[Housewife Marianne]"; - if(MISC_QUEST&1 || @MORRISON > 10) goto L_Juice; - if(@MORRISON) goto L_GaveMeat; - - mes "Morrison!! Please eat some fruit will ya? Fruit~!"; - mes "*Sob*~!! Like father like son..."; - emotion e_sob; - next; - menu "Talk",M_Talk,"Cancel",M_Cancel; - close; - - M_Talk: + } + if (mother_marienu == 1) { mes "[Housewife Marianne]"; - 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 e_shy; + mes "Morrison!! Eat some fruits!! You don't want to become a slobby fat pig when you grow up, do you?"; next; + if (select("Talk:Cancel") == 1) { + mes "[Housewife Marianne]"; + mes "Hm? ...You!"; + mes "You're the one who gave, my little Morrison that Meat?! Did you come here thinking I wouldn't know about it?!"; + next; + mes "[Housewife Marianne]"; + mes "Go away, get out of my house NOW!!"; + close; + } mes "[Housewife Marianne]"; - mes "Look at his face..., it turns sour just hearing about ^0000ffFruit^000000..."; - next; + mes "Morrison!! I'm going to be very very mad if you keep doing this!"; + close; + } + if (morison_meat > 0) { + set mother_marienu,1; 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."; + mes "Oh!!.... This..."; + mes "what is this...??"; + mes "How could you do something like this to my boy?!"; next; - - M_Cancel: mes "[Housewife Marianne]"; - mes "Morrison!! I will get mad at you if you keep doing this!"; - emotion e_bzz; + mes "Argh! Get out of my house right this instant!"; close; - -L_GaveMeat: - set @MORRISON,0; - mes "Oh MY GOD!!... Oh lord..."; - emotion e_omg; - next; + } mes "[Housewife Marianne]"; - mes "WHAT ARE YOU DOING!! HOW DARE YOU feed my son!! And ^ff0000MEAT^000000 of all things!!!"; + mes "Morrison!! Please eat some fruits!! Please~!"; next; - mes "[Housewife Marianne]"; - mes "Arrrgh~~!! Get Lost right now!!!!!!"; - emotion e_pif; - close; - -L_Juice: - 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"; - mes "juice... Would my child like it?"; - emotion e_hmm; - next; - mes "[Housewife Marianne]"; - 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 e_ic; + mes "[Housewife Marinaa]"; + mes "Sigh~!! Like father, like son..."; next; + switch(select("Talk:Cancel")) { + mes "[Housewife Marianne]"; + mes "*Sigh*... This is Morrison..."; + mes "My one and only son."; + next; + mes "[Housewife Marianne]"; + mes "But these days, he just won't eat fruits. His face is so dull because he refuses to eat healthy. He just wants to eat Meat. I need to find a way to feed him fruits or vegetables...."; + close; + } mes "[Housewife Marianne]"; - mes "... Was is it...^ff0000Payon^000000...or ^ff0000Morroc^000000...?"; - emotion e_hmm; - set @MORRISON,0; - set MISC_QUEST,MISC_QUEST | 1; + mes "Morrison!! You're going to be in big trouble if you keep this up!"; close; } -// Juicer Marx Hansen --------------------------------------------------------- -payon_in03,188,146,5 script Juicer Marx Hansen 86,{ - mes "[Juicer Marx Hansen]"; - if(MISC_QUEST&1) goto L_Juice; - mes "Welcome to my shop. What brings you here?"; - next; - menu "Conversation",-,"I am just looking around",M_End; - - mes "[Juicer Marx Hansen]"; - mes "In the earliest years of humanity, fruits were the only substanace availble for people to eat."; - mes "Fruits were vital for survival and without them people faced certain death."; - mes "During that time Mother Nature was worshiped for her generous offerering."; - next; - mes "[Juicer Marx Hansen]"; - mes "Nowadays food is plentifull and it comes in a variety of flavors and forms."; - mes "With so many other things to eat, fruits aren't consumed as much as they used to be."; - mes "This is especially true among kids who'd rather eat pizza and candy."; - next; - mes "[Juicer Marx Hansen]"; - mes "Because of this I wanted to find a way to make young people realize the importance of fuit."; - mes "I found that when fruits were turned into juices, they became more digestive and even tasty enough for kids."; +prt_in,47,173,3 script Morrison#juice 97,{ + if (MISC_QUEST&1 || morison_meat == 15) { + mes "[Little Morrison]"; + mes "Bleh... Forget it."; + mes "I'm just going to shrivel to death just eating fruits. Don't bother worrying about me ."; close; - M_End: - mes "[Juicer Marx Hansen]"; - mes "Ok then."; + } + if (morison_meat > 9) { + mes "[Little Morrison]"; + mes "Ah... so full~"; + mes "I think I can live now."; + mes "You don't have to give me any more Meat. I feel like I'm going to explode if I eat any more."; + if (morison_meat == 10) { + next; + set morison_meat,morison_meat+1; + mes "[Little Morrison]"; + mes "Oh... and... um."; + mes "Take this."; + next; + mes "[Little Morrison]"; + mes "It's a little something I've been saving to eat for later, but since you gave me Meat, I think I can pass on the sweets."; + close; + getitem 529,3; //Candy + getitem 530,1; //Candy_Striper + } close; - -//-------------- -L_Juice: -//--------- - mes "Welcome to my shop. Are you here to process Fruits like everyone else?"; + } + mes "[Little Morrison]"; + mes "Agh....Noooo!!!"; + mes "No, don't make me eat it! I can't bear to taste fruits!"; next; - 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?"; + if (countitem(517) > 0) { + switch(select("Talk:Show the Meat:Cancel")) { + case 1: + mes "[Little Morrison]"; + mes "Aaaagh!! Once or twice is enough!! I refuse to eat any more fruits! You have to peel them and there's so much juice that it makes you feel icky..."; + next; + mes "[Little Morrison]"; + mes "And they're all slippery and sour... Even if I eat it, I still feel hungry. Aaaah~! Give me Meat!"; + close; + case 2: + mes "[Little Morrison]"; + mes "Ooh! M-Meaaat~"; + mes "Ah... hu...hungry..."; + mes "The scent of Meat..."; + mes "Excuse me..."; + mes "C-can I please have one?"; + next; + if (select("Give Meat:Don't Give Meat") == 1) { + delitem 517,1; //Meat + set morison_meat,morison_meat+1; + mes "[Little Morrison]"; + mes "Wow~!!! Meat!!"; + mes "So yummy!"; + mes "Thank you,"; + mes "I think I can"; + mes "live now."; + mes "*Chew chew*"; + close; + } + set morison_meat,15; + mes "[Little Morrison]"; + mes "Waah...!"; + mes "Fine, I get it now."; + mes "Adults are all the same!"; + close; + case 3: + mes "[Little Morrison]"; + mes "Aaaaah!!! No matter what, I'm not going to eat fruits and vegetables!"; + close; + } + } + if (select("Talk:Cancel") == 1) { + mes "[Little Morrison]"; + mes "Aaah!! I can't eat any more fruits!"; next; - menu "Apple Juice",sM_1a,"Banana Juice",sM_1b,"Grape Juice",sM_1c,"Carrot Juice",sM_1d,"None.",M_1End; - - sM_1a: - callsub sF_Make, 512, "apples", 531; - goto M_1a; - sM_1b: - callsub sF_Make, 513, "bananas", 532; - goto M_1a; - sM_1c: - callsub sF_Make, 514, "grapes", 533; - goto M_1a; - sM_1d: - 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."; + mes "[Little Morrison]"; + mes "I refuse to eat any more fruits! You have to peel them and there's so much juice that it makes you feel icky..."; + next; + mes "[Little Morrison]"; + mes "And they're all slippery and sour... Even if I eat it, I still feel hungry."; + mes "Aaaah~!"; + mes "Give me Meat!"; close; + } + mes "[Little Morrison]"; + mes "Aaaaah!!! No matter what, I'm not going to eat fruits and vegetables!"; + 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; +payon_in03,188,146,5 script Marx Hansen#juice 86,{ + // Check if the user carries 100 items. + //set max_max_c,1201; + //if (max_max_c == 1) { + // mes "- Wait a moment! -"; + // mes "- Currently you're carrying -"; + // mes "- too many items with you. -"; + // mes "- Please come back later -"; + // mes "- after you put some items into kafra storage. -"; + // close; + //} + // end check + if (MISC_QUEST&1) { + mes "[Merchant Marx Hansen]"; + mes "Welcome."; + mes "Did you come to"; + mes "process fruits as well?"; + next; + switch(select("Make Juice.:Talk and get information about fruit processing.:Cancel.")) { + case 1: + mes "[Merchant Marx Hansen]"; + mes "What kind of fruit juice would you like to make?"; + next; + switch(select("Apple Juice:Banana Juice:Carrot Juice:Grape Juice:Cancel")) { + case 1: + set .@fruit,512; + set .@juice,531; + break; + case 2: + set .@fruit,513; + set .@juice,532; + break; + case 3: + set .@fruit,515; + set .@juice,534; + break; + case 4: + set .@fruit,514; + set .@juice,533; + break; + case 5: + mes "[Merchant Marx Hansen]" ; + mes "Well then..."; + mes "See you next time."; + close; + } + if (countitem(.@fruit) == 0 || countitem(713) == 0 || Zeny < 3) { + mes "[Merchant Marx Hansen]"; + mes "Oh no..."; + mes "You don't have all the necessary materials. To make Grape Juice, I need 1 Grape and 1 Empty Bottle. I will also need a 3 zeny fee."; + next; + mes "[Merchant Marx Hansen]"; + mes "When you have prepared everything, I will blend the fruit to give you delicious juice."; + close; + } - set @amount,1000; //max possible amount of Juice - //calc max possible # juices - if(Zeny/3 < @amount) set @amount, 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 e_gasp; - close; + mes "[Merchant Marx Hansen]"; + mes "How many would you like?"; + next; + switch(select("As many as I can.:I want a certain amount.:Cancel.")) { + case 1: + set .@make,countitem(.@fruit); + break; + case 2: + mes "[Merchant Marx Hansen]"; + mes "Choose a number less than 100. If you don't want to, put '0'. You can make up to " + countitem(.@fruit) + " bottles of juice."; + next; + while(1) { + input .@input; + if (.@input == 0) { + mes "[Merchant Marx Hansen]" ; + mes "Well then..."; + mes "Come again."; + close; + } + else if (.@input > 100) { + mes "[Merchant Marx Hansen]" ; + mes "More than 100 bottles is impossible. Choose a different amount."; + next; + } + else { + break; + } + } + set .@make,.@input; + break; + case 3: + mes "[Merchant Marx Hansen]"; + mes "Well then..."; + mes "Come again."; + close; + } - 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; + set .@total_zeny,3 * .@make; - 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; + if (countitem(.@fruit) < .@make || countitem(713) < .@make || Zeny < .@total_zeny) { + mes "[Merchant Marx Hansen]"; + mes "Oh no..."; + mes "You don't have all the necessary materials. I can't help a situation like this. I guess you collect what you need."; + close; + } + delitem .@fruit,.@make; + delitem 713,.@make; + set zeny,zeny-.@total_zeny; + getitem .@juice,.@make; - sL_NoFruits: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough fruit."; - mes "You need " +@amount+ " " +getarg(1)+ " to make that much juice."; + mes "[Merchant Marx Hansen]"; + mes "Here you go! Fresh and delicious juice as promised. It should be very refreshing and palatable."; + next; + mes "[Merchant Marx Hansen]"; + mes "Well then..."; + mes "Come again."; + close; + case 2: + mes "[Merchant Marx Hansen]"; + mes "Before humans were able to develop such vast societies, they gathered fruit from trees to survive. Fruits may have been nature's blessing that allowed us to exist in the world."; next; - return; - sL_NoBottles: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough bottles. You need "+@amount+" empty bottle(s) to make that many juice drinks."; + mes "[Merchant Marx Hansen]"; + mes "Since life became so prosperous, the younger generation seems not to eat fruit any more. So, I started thinking of ways to make fruit easier to eat."; next; - return; - sL_NoZeny: - mes "[Juicer Marx Hansen]"; - mes "You don't have enough zeny. You need " +(@amount*3)+ " zeny, to make that many juice drinks."; + mes "[Merchant Marx Hansen]"; + mes "I realized that when you make fruit juice, it's more convenient to eat and has a much better taste."; next; - return; + mes "# Fruit Juice Information #"; + mes "^CC4E5C- Apple Juice -^000000"; + mes "Apple x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + mes ""; + mes "^E3CF57- Banana Juice -^000000"; + mes "Banana x 1 ea, Empty Bottle x 1 ea, 3 zeny." ; + mes ""; + mes "^ED9121- Carrot Juice -^000000"; + mes "Carrot x 1 ea, Empty Bottle x 1 ea, 3 zeny." ; + mes ""; + mes "^CC00FF- Grape Juice -^000000"; + mes "Grape x 1 ea, Empty Bottle x 1 ea, 3 zeny."; + close; + case 3: + mes "[Merchant Marx Hansen]"; + mes "Hey!"; + mes "If you visit"; + mes "somebody, talk to them!"; + close; + } + } + else { + mes "[Merchant Marx Hansen]"; + mes "Welcome."; + mes "How may I help you?"; + next; + if (select("Talk:Cancel") == 1) { + mes "[Merchant Marx Hansen]"; + mes "Before humans were able to develop such vast societies, they gathered fruit from trees to survive. Fruits may have been nature's blessing that allowed us to exist in the world."; + next; + mes "[Merchant Marx Hansen]"; + mes "Since life became so prosperous, the younger generation seems not to eat fruit any more. So, I started thinking of ways to make fruit easier to eat."; + next; + mes "[Merchant Marx Hansen]"; + mes "I realized that when you make fruit juice, it's more convenient to eat and has a much better taste."; + close; + } + mes "[Merchant Marx Hansen]"; + mes "Hey!"; + mes "If you vist"; + mes "somebody, talk to them!"; + close; + } } + +//============================================================ +// Old changelog +//============================================================ +//= 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] +//= Fixed exploits [Lupus] +//= 1.6 fixed typo (where did @ipnut came from?) [Lance] +//= 1.8 got rid of vars: 'MEAT',"MARIANNE","MORRISON" +//= From now, all common quests start using bits of the +//= same variable MISC_QUEST [Lupus] +//============================================================ -- cgit v1.2.3-70-g09d2