diff options
Diffstat (limited to 'npc/merchants')
-rw-r--r-- | npc/merchants/alchemist.txt | 120 | ||||
-rw-r--r-- | npc/merchants/clothes_dyer.txt | 329 | ||||
-rw-r--r-- | npc/merchants/custom/2-2shop.txt | 1 | ||||
-rw-r--r-- | npc/merchants/custom/breeder.txt | 67 | ||||
-rw-r--r-- | npc/merchants/custom/dye.txt | 176 | ||||
-rw-r--r-- | npc/merchants/dye_maker.txt | 277 | ||||
-rw-r--r-- | npc/merchants/grandpa_pharmacist.txt | 163 | ||||
-rw-r--r-- | npc/merchants/hair_dyer.txt | 158 | ||||
-rw-r--r-- | npc/merchants/inn.txt | 172 | ||||
-rw-r--r-- | npc/merchants/milk_trader.txt | 61 | ||||
-rw-r--r-- | npc/merchants/refine.txt | 882 | ||||
-rw-r--r-- | npc/merchants/renters.txt | 155 | ||||
-rw-r--r-- | npc/merchants/shops.txt | 208 |
13 files changed, 2769 insertions, 0 deletions
diff --git a/npc/merchants/alchemist.txt b/npc/merchants/alchemist.txt new file mode 100644 index 000000000..c0999273e --- /dev/null +++ b/npc/merchants/alchemist.txt @@ -0,0 +1,120 @@ +//===== eAthena Script ======================================= +//= Alchemist Shop +//===== By: ================================================== +//= Darkchild (1.0) +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 1.0+ +//===== Description: ========================================= +//= Selling Alchemist Shit :) +//===== Additional Comments: ================================= +//= Working. +//============================================================ +alde_alche.gat,24,188,3 script Gever AI Sharp 740, +{ + mes "[Gever AI Sharp]"; + mes "Welcome to the Alchemist Union."; + mes "How can I assist you today?"; + next; + menu "Purchase materials.",M_Material, "Purchase a production manual.",M_Manual, "Cancel Deal.", M_Bye; + + M_Material: + mes "[Gever AI Sharp]"; + mes "What would you like?"; + next; + menu "Medicine Bowl - 8z",-,"Cancel.",M_Bye; + + mes "[Gever AI Sharp]"; + mes "How many do you want?"; + mes "Enter '0' if you want to quit."; + next; + input @num; + if((@num < 1) || (@num > 10000)) goto M_Bye; + set @price,@num * 8; + mes "[Gever AI Sharp]"; + if(zeny < @price) goto sL_NoZeny; + if (checkweight(@item,@num) == 0) goto sL_OverW; + set zeny,Zeny-@price; + getitem 7134,@num; + goto L_Bye; + M_Manual: + mes "[Gever AI Sharp]"; + mes "What do you need?"; + mes "Manuals are generally 100,000 zeny."; + mes "Except for a couple of special manuals."; + next; + menu "Potion Creation Guide",sM_Pot, "Alchohol Creation Guide",sM_Alc, "Bottle Grenade Creation Guide",sM_Gren, + "Acid Bottle Creation Guide",sM_Acid, "Plant Bottle Creation Guide",sM_Plant, "Marine Sphere Bottle Creation Guide",sM_Mar, + "Glistening Coat Creation Guide",sM_Coat, "Concentration Potion Creation Guide",sM_Con, "Cancel Deal.",M_Bye; + sM_Pot: + set @itemid,7144; + set @price,100000; + set @itemname$,"Potion"; + goto L_Choice; + sM_Alc: + set @itemid,7127; + set @price,100000; + set @itemname$,"Alchohol"; + goto L_Choice; + sM_Gren: + set @itemid,7128; + set @price,100000; + set @itemname$,"Bottle Grenade"; + goto L_Choice; + sM_Acid: + set @itemid,7129; + set @price,100000; + set @itemname$,"Acid Bottle"; + goto L_Choice; + sM_Plant: + set @itemid,7130; + set @price,100000; + set @itemname$,"Plant Bottle"; + goto L_Choice; + sM_Mar: + set @itemid,7131; + set @price,100000; + set @itemname$,"Marine Sphere Bottle"; + goto L_Choice; + sM_Coat: + set @itemid,7132; + set @price,100000; + set @itemname$,"Glistening Coat"; + goto L_Choice; + sM_Con: + set @itemid,7133; + set @price,240000; + set @itemname$,"Concentration Potion"; + goto L_Choice; + L_Choice: + mes "[Gever AI Sharp]"; + mes "An " + @itemname$ + " Creation Guide??"; + if(@price == 100000) mes "That will be 100,000 Zeny"; + if(@price == 240000) mes "That will be 240,000 Zeny"; + next; + menu "Purchase.",-,"Quit.",M_Bye; + + mes "[Gever AI Sharp]"; + if(zeny < @price) goto sL_NoZeny; + if (checkweight(@itemid,1) == 0) goto sL_OverW; + getitem @itemid,1; + set zeny,zeny-@price; + L_Bye: + mes "Thank you for buying!"; + mes "Come again."; + close; + + sL_NoZeny: + mes "You dont seem to have enough money."; + close; + sL_OverW: + mes "Hmm.... it seems that you are overweight..."; + close; + + + M_Bye: + mes "[Gever AI Sharp]"; + mes "Then come again next time."; + close; +} diff --git a/npc/merchants/clothes_dyer.txt b/npc/merchants/clothes_dyer.txt new file mode 100644 index 000000000..023a05086 --- /dev/null +++ b/npc/merchants/clothes_dyer.txt @@ -0,0 +1,329 @@ +//===== eAthena Script ======================================= +//= Clothes Dyer +//===== By: ================================================== +//= Usnul +//===== Current Version: ===================================== +//= 2.0 +//===== Compatible With: ===================================== +//= eAthena 1.0+ +//===== Description: ========================================= +//= Clothes dyer with standard palletes +//===== Additional Comments: ================================= +//= Fully working +//============================================================ + + +// Dyer Ginedin Rephere --------------------------------------------------- +prt_in.gat,284,168,2 script Dyer Ginedin Rephere 55,{ + mes "[Dyer Ginedin Rephere]"; + mes "11... 12... Mmm... good. I think I'll be able ot finish before tonights party. Oh! I didn't notice that you were here. Anyway how may I assist you?"; +M_Menu: + next; + menu "-Talk",L_Talk, "-Dye Clothing",L_Dye, "-Price list",L_PriceList, "-Cancel",L_End; + + L_Talk: + mes "[Dyer Ginedin Rephere]"; + mes "Life may have gotten a little better.... but when I look at all of the orders I've recieved... Whew!"; + mes "It seems that the young women of Rune Midgard must be very well off these days."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "Not that I think that they are indulging in anything luxurious mind you."; + mes "I don't think there is anything wrong with the pursuit of beauty and being fashionable."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "For us humans, who have no colorful fur or decorative scales, clothes are one of the few ways we have to display our personality, style, and beauty."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "Haha... When I think about it, I really feel that my job is worthwhile. I believe that I provide a service that the people desire."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "Can you feel it too? The energy that is released when rough fabric and leather are brought to life with color?....."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "Although the process is very tedious and time consuming, the joy and happiness I feel when a dress is finished....."; + mes "more than makes up for all of the hard work!!"; + goto M_Menu; + + L_Dye: + mes "[Dyer Ginedin Rephere]"; + if(Class==0) goto sL_Novice; + if(Class==12) goto L_Assassin_M; + mes "Oh... you need my work? Well... okay sounds good."; + next; + mes "[Dyer Ginedin Rephere]"; + mes "Please choose a color that suits you."; + next; + if(Sex==0) goto Female_dye; +//================================= +// Clothing Dyeing for Males +//================================= + +Male_dye: + //1 Class + if(Class==5 || Class==1) goto L_Wiz_Hunt_Bard_SN_M; + if(Class==2) goto L_Mage_M; + if(Class==3) goto L_Archer_M; + if(Class==4) goto L_Aco_M; + if(Class==6) goto L_Thief_M; + + //2 Class + if(Class==7 || Class==14) goto L_Knight_Crus_M; + if(Class==8 || Class==15) goto L_Priest_Monk_M; + if(Class==9 || Class==11 || Class==19 || Class==23) goto L_Wiz_Hunt_Bard_SN_M; + if(Class==10 || Class==18) goto L_BlackSmith_Alchemist_M; +// if(Class==12) goto L_Assassin_M; + if(Class==17) goto L_Rogue_M; + + //1 Class + L_Mage_M: + set @red, 1; + set @violet, 2; + set @orange, 3; + set @white, 4; + menu "- Red",L_Dye_Red,"- Violet",L_Dye_Violet,"- Orange",L_Dye_Orange,"- White",L_Dye_White,"- Cancel",L_End; + L_Archer_M: + set @red, 1; + set @violet, 2; + set @green, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Violet",L_Dye_Violet,"- Green",L_Dye_Green,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Aco_M: + set @blue, 1; + set @red, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Thief_M: + set @blue, 1; + set @red, 2; + set @green, 3; + set @white, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- White",L_Dye_White,"- Cancel",L_End; + + //2 Class + L_Knight_Crus_M: + set @orange, 1; + set @violet, 2; + set @red, 3; + set @black, 4; + menu "- Orange",L_Dye_Orange,"- Violet",L_Dye_Violet,"- Red",L_Dye_Red,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Priest_Monk_M: + set @blue, 1; + set @green, 2; + set @red, 3; + set @white, 4; + menu "- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Red",L_Dye_Red,"- White",L_Dye_White,"- Cancel",L_End; + L_Wiz_Hunt_Bard_SN_M: + set @red, 1; + set @blue, 2; + set @green, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Black",L_Dye_Black,"- Cancel",L_End; + L_BlackSmith_Alchemist_M: + set @red, 1; + set @green, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Green",L_Dye_Green,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Assassin_M: + mes "I'm am sorry but I currently cannot dye male Assassin clothing."; + close; +// set @blue, 1; +// set @red, 2; +// set @green, 3; +// set @black, 4; +// menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Rogue_M: + set @red, 2; + set @green, 3; + menu "- Red",L_Dye_Red,"- Green",L_Dye_Green,"- Cancel",L_End; + +//================================= +// Clothing Dyeing for Females +//================================= +Female_dye: + //1 Class + if(Class==1 || Class==4) goto L_Sword_Aco_F; + if(Class==2) goto L_Knight_Crus_F; + if(Class==3) goto L_Priest_F; + if(Class==5) goto L_Merch_F; + //2 Class + if(Class==7 || Class==14) goto L_Knight_Crus_F; + if(Class==8) goto L_Priest_F; + if(Class==9 || Class==16) goto L_Wiz_Sage_F; + if(Class==10 || Class==18) goto L_BlackSmith_Alchemist_F; + if(Class==11 || Class==20) goto L_Hunt_Dancer_F; + if(Class==12 || Class==17) goto L_Assassin_Rogue_F; + if(Class==23) goto L_SN_F; + + //1 Class + L_Sword_Aco_F: + set @blue, 1; + set @red, 2; + set @green, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Merch_F: + set @violet, 1; + set @blue, 2; + set @green, 3; + set @black, 4; + menu "- Violet",L_Dye_Violet,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Thief_F: + set @blue, 1; + set @red, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + + //2 Class + L_Knight_Crus_F: + set @red, 1; + set @blue, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Priest_F: + set @red, 1; + set @green, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Green",L_Dye_Green,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Wiz_Sage_F: + set @red, 1; + set @blue, 2; + set @white, 3; + set @green, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- White",L_Dye_White,"- Green",L_Dye_Green,"- Cancel",L_End; + L_Hunt_Dancer_F: + set @red, 1; + set @blue, 2; + set @green, 3; + set @violet, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- Green",L_Dye_Green,"- Violet",L_Dye_Violet,"- Cancel",L_End; + L_BlackSmith_Alchemist_F: + set @red, 1; + set @green, 2; + set @violet, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Green",L_Dye_Green,"- Violet",L_Dye_Violet,"- Black",L_Dye_Black,"- Cancel",L_End; + L_Assassin_Rogue_F: + set @red, 1; + set @yellow, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Yellow",L_Dye_Yellow,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + L_SN_F: + set @blue, 1; + set @red, 2; + set @white, 3; + set @black, 4; + menu "- Red",L_Dye_Red,"- Blue",L_Dye_Blue,"- White",L_Dye_White,"- Black",L_Dye_Black,"- Cancel",L_End; + +L_Dye_Orange: + mes "[Dyer Ginedin Rephere]"; + if(countitem(980) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes Orange."; + setlook 7,@orange; + delitem 980,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Violet: + mes "[Dyer Ginedin Rephere]"; + if(countitem(981) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes Violet."; + setlook 7,@violet; + delitem 981,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Red: + mes "[Dyer Ginedin Rephere]"; + if(countitem(975) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes red."; + setlook 7,@red; + delitem 975,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Black: + mes "[Dyer Ginedin Rephere]"; + if(countitem(983) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes black."; + setlook 7,@black; + delitem 983,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Green: + mes "[Dyer Ginedin Rephere]"; + if(countitem(979) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes green."; + setlook 7,@green; + delitem 979,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Blue: + mes "[Dyer Ginedin Rephere]"; + if(countitem(978) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes blue."; + setlook 7,@blue; + delitem 978,1; + set Zeny, Zeny - 10000; + close; +L_Dye_White: + mes "[Dyer Ginedin Rephere]"; + if(countitem(982) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes white."; + setlook 7,@white; + delitem 982,1; + set Zeny, Zeny - 10000; + close; +L_Dye_Yellow: + mes "[Dyer Ginedin Rephere]"; + if(countitem(976) < 1) goto sL_NoDye; + if(Zeny < 10000) goto sL_Zeny; + mes "Ok. I will dye you clothes yellow."; + setlook 7,@yellow; + delitem 976,1; + set Zeny, Zeny - 10000; + close; + + sL_Sorry: + mes "Wow, your clothes is very strange, I haven't seen anything like it before . Hmmm... I'm sorry, but there is no way I can paint it."; + close; + sL_NoDye: + mes "For me to dye your clothes, I'll need the appropriate Dyestuff. Please check my price list for the information."; + next; + goto L_PriceList; + + sL_Zeny: + mes "I'm sorry but you don't have enough money."; + close; + + sL_Novice: + mes "I'm sorry, but first you need to get a job."; + close; + + + L_PriceList: + mes "[Dyer Ginedin Rephere]"; + mes "Here is the list of colors you can choose from and their prices:"; + mes " "; + mes " - ^FF4422Red^000000: 10000 zeny, 1 Scarlet Dyestuff"; + mes " - ^D5A500Yellow^000000: 10000 zeny, 1 Lemon Dyestuff"; + mes " - ^AA00AAViolet^000000: 10000 zeny, 1 Violet Dyestuff"; + mes " - ^FF8800Orange^000000: 10000 zeny, 1 Orange Dyestuff"; + mes " - ^4422FFBlue^000000: 10000 zeny, 1 CobaltBlue Dyestuff"; + mes " - ^009500Green^000000: 10000 zeny, 1 DarkGreen Dyestuff"; + goto M_Menu; + + L_End: + mes "[Dyer Ginedin Rephere]"; + mes "Make yourself at home. Even though I don't have time for you."; + close; +} diff --git a/npc/merchants/custom/2-2shop.txt b/npc/merchants/custom/2-2shop.txt new file mode 100644 index 000000000..c8d9edc9b --- /dev/null +++ b/npc/merchants/custom/2-2shop.txt @@ -0,0 +1 @@ +prontera.gat,155,211,5 shop 2-2 Class Shop 86,1950:-1,1952:-1,1954:-1,1956:-1,1958:-1,1960:-1,1801:-1,1803:-1,1805:-1,1811:-1,1809:-1,1901:-1,1903:-1,1905:-1,1909:-1,1911:-1,1907:-1,1550:-1,1551:-1,1552:-1,1553:-1,1554:-1,1555:-1,1556:-1,1557:-1,1558:-1,2341:-1,2343:-1
\ No newline at end of file diff --git a/npc/merchants/custom/breeder.txt b/npc/merchants/custom/breeder.txt new file mode 100644 index 000000000..b5fc6f793 --- /dev/null +++ b/npc/merchants/custom/breeder.txt @@ -0,0 +1,67 @@ +//Peco Peco breeder for Knight by Darkchild v1.1 +//FIXED checkriding/cart/falcon funcs [Lupus] + +prontera.gat,122,200,1 script Universal Rental Npc 726,{ +mes "[Universal Rental Npc]"; +mes "Hi, here you can rent Carts, Falcons or Pecopecos."; +next; +L_Menu: +menu "Rent a Cart",L_Cart,"Rent a Falcon",L_Falcon,"Rent a Pecopeco",L_Peco,"Quit",L_Quit; +close; +L_Cart: +if(Class == 5 && checkcart(0) == 0) goto L_Cart_Ok; +if(Class == 10 && checkcart(0) == 0) goto L_Cart_Ok; +if(Class == 18 && checkcart(0) == 0) goto L_Cart_Ok; +if(Class == 4006 && checkcart(0) == 0) goto L_Cart_Ok; +if(Class == 4011 && checkcart(0) == 0) goto L_Cart_Ok; +if(Class == 4019 && checkcart(0) == 0) goto L_Cart_Ok; +if(getskilllv(39)<1) goto L_Need_Skill; +mes "[Universal Rental Npc]"; +mes "Sorry " + strcharinfo(0) + " but I only rent carts to Merchants, Blacksmiths and Alchimists who have enough skills to handle a cart."; +close; +L_Cart_Ok: + setcart; + goto L_Quit2; +L_Need_Skill: +mes "[Universal Rental Npc]"; +mes "Sorry you don't have the required skill to rent a cart."; +close; +L_Falcon: + if(Class == 11 && checkfalcon(0) == 0) goto L_falc; + if(Class == 4012 && checkfalcon(0) == 0) goto L_falc; + if(getskilllv(127)<1) goto L_Need_Skill2; + mes "[Universal Rental Npc]"; + mes "Sorry " + strcharinfo(0) + " but I only rent falcons to Hunters who the ability to handle 'em."; + close; + L_falc: + setfalcon; + goto L_Quit2; +L_Need_Skill2: +mes "[Universal Rental Npc]"; +mes "Sorry you don't have the required skill to own a Falcon."; +close; +L_Peco: +if (Class == 7 && checkriding(0) == 0) goto L_Peco_Ok; +if (Class == 14 && checkriding(0) == 0) goto L_Peco_Ok; +if (Class == 4008 && checkriding(0) == 0) goto L_Peco_Ok; +if (Class == 4015 && checkriding(0) == 0) goto L_Peco_Ok; +if(getskilllv(63)<1) goto L_Need_Skill3; +mes "[Universal Rental Npc]"; +mes "Sorry" + strcharinfo(0) + "but I only rent pecopecos to Knight and Crusader who have the ability to handle 'em"; +close; +L_Peco_Ok: +setriding; +goto L_Quit2; +L_Need_Skill3: +mes "[Universal Rental Npc]"; +mes "Sorry you don't have the required skill to ride a Peco Peco."; +close; +L_Quit: +mes "[Universal Rental Npc]"; +mes strcharinfo(0) + ", please come back when you are ready to rent something."; +close; +L_Quit2: +mes "[Universal Rental Npc]"; +mes strcharinfo(0) + ", please come again when you want another..."; +close; +}
\ No newline at end of file diff --git a/npc/merchants/custom/dye.txt b/npc/merchants/custom/dye.txt new file mode 100644 index 000000000..0b2738e9f --- /dev/null +++ b/npc/merchants/custom/dye.txt @@ -0,0 +1,176 @@ +//===== eAthena Script ======================================= +//= Stylist & Tailor Script (former Dye Script) +//===== By: ================================================== +//= eAthena Dev team +//= Revised by Nekosume [pyRO v3.0] +//===== Current Version: ===================================== +//= 4.0 +//===== Compatible With: ===================================== +//= Any eAthena Version +//===== Description: ========================================= +//= Revised dye NPC, split into two NPCs, one for hair color +//= and style, the other for clothes color. +//===== Additional Comments: ================================= +//= v4.0 - Refined and Combined [Darkchild] +//= v3.0 - Added the 'Browse' options +//= v2.5 - Added more hair colors +//= v2.0 - Changed palette and hair style select +//= v1.5 - Revised script / different dialog +//= v1.0 - Split into two NPCs +//============================================================ + + +//Stylist------------------------------------------------------------------------------------------------------------ +prontera.gat,149,189,1 script Stylist 122,{ + mes "[^FF8000Stylist^000000]"; + mes "I'm the greatest stylist in all of Rune-Midgard~~!"; + mes "I can change your hair style or color!"; + mes "What do you wish to change?"; + next; + menu "Hair style",Lstyle,"Hair color",Lcolor,"Cloth Color",Lcloth,"Nothing",LCancel; + + Lstyle: + mes "[^FF8000Stylist^000000]"; + mes "Do you want to browse through the choices, or do you know what you want?"; + next; + menu "Browse",Lbrowsesty,"I know what I want",Lwantsty; + + Lwantsty: + mes "[^FF8000Stylist^000000]"; + mes "Great! Now just pick a style and I'll get started!"; + next; + mes "[^FF8000Stylist^000000]"; + mes "Please pick a style number ^0000FFbetween 0 and 18^000000."; + mes "Number 0, by the way, is the default style for your character."; + next; + input @sty; + if (@sty>18) close; + if (@sty<0) close; + setlook 1,@sty; + next; + mes "[^FF8000Stylist^000000]"; + mes "Is this good, or do you want a different style?"; + next; + menu "This is good",-,"Different style, please",Lwantsty; + next; + mes "[^FF8000Stylist^000000]"; + mes "You look great~! Come back again, okay?"; + close; + + Lbrowsesty: + set @look, -1; + mes "[^FF8000Stylist^000000]"; + mes "Okay, here we go~! Just stop me when you see something you like, okay?"; + next; + + Lbrowserep: + set @look,@look+1; + setlook 1,@look; + mes "This is Pallete Number^FF9009 "+@look+" ^000000!"; + if(@look == 18) menu "Back To The Begin",Lbrowsesty,"I like this one",Lstop; + if(@look != 18) menu "Keep going",Lbrowserep,"I like this one",Lstop; + + Lcolor: + mes "[^FF8000Stylist^000000]"; + mes "Do you want to browse through the choices, or do you know what you want?"; + next; + menu "Browse",Lbrowsecolor,"I know what I want",Lwantcolor; + + Lwantcolor: + mes "[^FF8000Stylist^000000]"; + mes "Just pick a color and we can get started."; + next; + mes "[^FF8000Stylist^000000]"; + mes "Please pick a style number ^0000FFbetween 0 and 20^000000."; + mes "Number 0, by the way, is the default color for your character."; + next; + mes "[^FF8000Stylist^000000]"; + mes "0 is default..."; + mes "1 is blonde..."; + mes "2 is lavender..."; + mes "3 is brown..."; + mes "4 is green..."; + mes "5 is blue..."; + mes "6 is white..."; + mes "7 is black..."; + mes "8 is red..."; + mes "and 9-20 are new colors."; + input @color; + if (@color>20) close; + if (@color<0) close; + setlook 6,@color; + next; + mes "[^FF8000Stylist^000000]"; + mes "Is this good, or do you want a different color?"; + next; + menu "This is good",-,"Different color, please",Lwantcolor; + next; + mes "[^FF8000Stylist^000000]"; + mes "You look great~! Come back again, okay?"; + close; + + Lbrowsecolor: + set @look, -1; + mes "[^FF8000Stylist^000000]"; + mes "Okay, here we go~! Just stop me when you see something you like, okay?"; + next; + + Lbrowsecolorrep: + set @look,@look+1; + setlook 6,@look; + mes "This is Pallete Number^FF9009 "+@look+" ^000000!"; + if(@look == 20) menu "Back To The Begin",Lbrowsecolor,"I like this one",Lstop; + if(@look != 20) menu "Keep going",Lbrowsecolorrep,"I like this one",Lstop; + + Lstop: + mes "[^FF8000Stylist^000000]"; + mes "You look great~! I love it~! ^_^"; + close; + + LCancel: + mes "[^FF8000Stylist^000000]"; + mes "Well come again."; + close; + + Lcloth: + mes "[^FF8000Stylist^000000]"; + mes "Do you want to browse through the choices, or do you know what you want?"; + next; + menu "Browse",Lbrowsecloth,"I know what I want",Lwantcloth; + + Lwantcloth: + mes "[^FF8000Stylist^000000]"; + mes "Great! Now just pick a pallete and I'll get started!"; + next; + mes "[^FF8000Stylist^000000]"; + mes "Please pick a style number ^0000FFbetween 0 and 77^000000."; + mes "Number 0, by the way, is the default style for your character."; + next; + input @pal; + if (@pal>77) close; + if (@pal<0) close; + setlook 7,@pal; + next; + mes "[^FF8000Stylist^000000]"; + mes "Is this good, or do you want a different pallet"; + next; + menu "This is good",-,"Different pallet, please",Lwantcloth; + next; + mes "[^FF8000Stylist^000000]"; + mes "You look great~! Come back again, okay?"; + close; + + Lbrowsecloth: + set @look, -1; + mes "[^FF8000Stylist^000000]"; + mes "Okay, here we go~! Just stop me when you see something you like, okay?"; + next; + + Lbrowseclothrep: + set @look,@look+1; + setlook 7,@look; + mes "This is Pallete Number^FF9009 "+@look+" ^000000!"; + if(@look == 77) menu "Back To The Begin",Lbrowsecloth,"I like this one",Lstop; + if(@look != 77) menu "Keep going",Lbrowseclothrep,"I like this one",Lstop; +} + diff --git a/npc/merchants/dye_maker.txt b/npc/merchants/dye_maker.txt new file mode 100644 index 000000000..456499f2f --- /dev/null +++ b/npc/merchants/dye_maker.txt @@ -0,0 +1,277 @@ +//===== eAthena Script ======================================= +//= Dye Maker +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= +//===== Additional Comments: ================================= +//= Fully working +//============================================================ + + + +// Dye Maker JavaDullihan ======================= +morocc_in.gat,146,99,2 script Dye Maker JavaDullihan 122, +{ + mes "[Dye Maker JavaDullihan]"; + mes "Oh... What a Beautiful day today."; + mes "This is a perfect day to make Dyestuffs"; + next; + menu "-Talk",M_Talk,"-Make Dyestuffs",M_Make,"-Cancel",M_End; + + M_Talk: + mes "[Dye Maker JavaDullihan]"; + mes "I don't have much to say..."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "But if you want to know about my past, I'm sure I have a few stories to tell."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Would you like to here some?"; + next; + menu "-Sure, why not.",sM_0a,"-Maybe some other time.",sM_0b; + + sM_0a: + mes "[Dye Maker JavaDullihan]"; + mes "My father had been making dyestuffs since I was young... .."; + mes "I can still picture him making dyestuffs all day long."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Even durring the time of my mother's passing, my father kept making dyestuffs without end."; + mes "This made me angry at him. How could he keep making dyestuffs at a time like that?"; + next; + mes "[Dye Maker JavaDullihan]"; + mes "I just couldn't understand what my father was thinking. I became very disapointed in him."; + mes "My fathers actions made me despise Dye Making, so I ran away from home. I survived by doing a variety of odd jobs."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "However, as you can see, I ended up becoming a Dye Maker just like my father."; + mes "It's been 15 years since I first started making these goddamn things..."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Now that I've been doing this for as long as I have... I think I can finally understand why my father fell in love with his job."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Why he sacrificed everything he had for this job..."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Maybe it was because of how the colors got more and more beautifull each time..."; + mes "Maybe he wanted to find his own perfet color..."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "I now have his feel for the colors... because... I am working with the same passion he had when he was living."; + mes "I am able to feel the colors from within my soul. I know it's hard to understand, but you will see what I mean."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "Father, I make these dyes for you...."; + close; + + sM_0b: + mes "[Dye Maker JavaDullihan]"; + mes "Hahahaha... I guess I can't blame ya, who wants to here about a plain old dye maker's life anyhow.... Hahahaha..."; + close; + + M_Make: + mes "[Dye Maker JavaDullihan]"; + mes "Alright! I will make the exact color you want. The cost of the dyestuff will depend on its quality."; + mes "Don't not be itimitaded by the prices, they are all my Masterpieces."; + next; + mes "[Dye Maker JavaDullihan]"; + mes "So what color do you want?"; + next; + menu "-Scarlet Dyestuffs",sM_Scarlet, "-Lemon Dyestuffs",sM_Lemon, "-Cobaltblue Dyestuffs",sM_Cobaltblue, + "-Darkgreen Dyestuffs",sM_Darkgreen, "-Orange Dyestuffs",sM_Orange, "-Violet Dyestuffs",sM_Violet, + "-White Dyestuffs",sM_White, "-Black Dyestuffs",sM_Black; + + sM_Scarlet: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Scarlet Dyestuffs, I need ^0000ff30 Red Herbs, 1 Counteragent and 1 Empty Bottle^000000."; + mes "The cost of labor will be 3000 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make0, "Cancel",sm_Cancel; + + sm_Make0: + mes "[Dye Maker JavaDullihan]"; + if((countitem(507) < 30) || (countitem(973) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 3000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 507,30; + delitem 973,1; + delitem 713,1; + set Zeny, Zeny - 3000; + getitem 975,1; + close; + + sM_Lemon: + mes "[Dye Maker JavaDullihan]"; + mes "Um... to make a Lemon Dyestuffs I need ^0000ff30 Yellow Herbs, 1 Counteragent, and 1 Empty Bottle^000000."; + mes "The cost of labor will be 3000 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make1,"Cancel",sm_Cancel; + + sm_Make1: + mes "[Dye Maker JavaDullihan]"; + if((countitem(508) < 30) || (countitem(973) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 3000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 508,30; + delitem 973,1; + delitem 713,1; + set Zeny, Zeny - 3000; + getitem 976,1; + close; + + sM_Cobaltblue: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Cobaltblue Dyestuffs, I need ^0000ff20 Blue Herbs, 1 Counteragent, and 1 Empty Bottle^000000."; + mes "Blue Herbs are a little bit difficult to work with, so the cost of labor will be 3500 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make2,"Cancel",sm_Cancel; + + sm_Make2: + mes "[Dye Maker JavaDullihan]"; + if((countitem(510) < 20) || (countitem(973) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 3500) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 510,20; + delitem 973,1; + delitem 713,1; + set Zeny, Zeny - 3500; + getitem 978,1; + close; + + sM_Darkgreen: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Darkgreen Dyestuffs, I need ^0000ff5 Blue Herbs, 20 Green Herbs, 20 Yellow Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle^000000."; + mes "There are a lot of ingredients so please try to remember them all. The cost of labore will be 5000 Zeny. Are you still interested?"; + mes "Ok are you ready?"; + next; + menu "Make Dyestuffs",sm_Make3,"Cancel",sm_Cancel; + + sm_Make3: + mes "[Dye Maker JavaDullihan]"; + if((countitem(510) < 5) || (countitem(511) < 20) || (countitem(508) < 20) || (countitem(973) < 1) || (countitem(974) < 1) || (countitem(713)<1)) goto sl_LowItems; + if(Zeny < 5000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 510,5; + delitem 511,20; + delitem 508,20; + delitem 973,1; + delitem 977,1; + delitem 713,1; + set Zeny, Zeny - 5000; + getitem 979,1; + close; + + sM_Orange: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Orange Dyestuffs, I need ^0000ff20 Red Herbs, 20 Yellow Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle^000000."; + mes "The cost of labor is 5000 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make4,"Cancel",sm_Cancel; + + sm_Make4: + mes "[Dye Maker JavaDullihan]"; + if((countitem(507) < 20) || (countitem(508) < 20) || (countitem(973) < 1) || (countitem(974) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 5000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 507,20; + delitem 508,20; + delitem 973,1; + delitem 977,1; + delitem 713,1; + set Zeny, Zeny - 5000; + getitem 980,1; + close; + + sM_Violet: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Violet Dyestuffs, I need ^0000ff10 Blue Herbs, 30 Red Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle^000000."; + mes "The cost of labor will be 5000 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make5,"Cancel",sm_Cancel; + + sm_Make5: + mes "[Dye Maker JavaDullihan]"; + if((countitem(510) < 10) || (countitem(507) < 20) || (countitem(973) < 1) || (countitem(974) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 5000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 510,10; + delitem 507,20; + delitem 973,1; + delitem 974,1; + delitem 713,1; + set Zeny, Zeny - 5000; + getitem 981,1; + close; + + sM_White: + mes "[Dye Maker JavaDullihan]"; + mes "Umm... To make a White Dyestuffs, I need ^0000ff30 White Herbs, 1 Counteragent, and 1 Empty Bottle^000000."; + mes "The cost of labor will be 3000 Zeny. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make6,"Cancel",sm_Cancel; + + sm_Make6: + mes "[Dye Maker JavaDullihan]"; + if((countitem(509) < 30) || (countitem(973) < 1) || (countitem(713) < 1)) goto sl_LowItems; + if(Zeny < 3000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 509,30; + delitem 973,1; + delitem 713,1; + set Zeny, Zeny - 3000; + getitem 982,1; + close; + + sM_Black: + mes "[Dye Maker JavaDullihan]"; + mes "Hmm... To make a Black Dyestuffs, I need ^0000ff30 Red, Yellow, and Green Herbs, 5 Blue Herbs, 1 Counteragent, 1 Mixture, and 1 Empty Bottle^000000."; + mes "This is the most difficult and time consuming dye to make, so I will have to charge a 7000 Zeny labor fee. Are you still interested?"; + next; + menu "Make Dyestuffs",sm_Make7,"Cancel",sm_Cancel; + + sm_Make7: + mes "[Dye Maker JavaDullihan]"; + if((countitem(507) < 30) || (countitem(508) < 30) || (countitem(511) < 30) || (countitem(510) < 5) || (countitem(973) < 1) || (countitem(974) < 1) || (countitem(713)<1)) goto sl_LowItems; + if(Zeny < 7000) goto sl_LowZeny; + mes "Missing text."; + mes "Under development"; + delitem 507,30; + delitem 508,30; + delitem 511,30; + delitem 510,5; + delitem 973,1; + delitem 974,1; + delitem 713,1; + set Zeny, Zeny - 7000; + getitem 983,1; + close; + + + sl_LowItems: + mes "Hmm... you don't have enough of the items needed for the dyestuffs. Come back when you do."; + close; + + sl_LowZeny: + mes "You don't have enough zeny. I need to make a living ya know...."; + close; + + sm_Cancel: + mes "[Dye Maker JavaDullihan]"; + mes "How could you have change your mind so quickly?... oh boy..."; + close; + M_End: + close; +} diff --git a/npc/merchants/grandpa_pharmacist.txt b/npc/merchants/grandpa_pharmacist.txt new file mode 100644 index 000000000..055e9e53c --- /dev/null +++ b/npc/merchants/grandpa_pharmacist.txt @@ -0,0 +1,163 @@ +//===== eAthena Script ======================================= +//= Grandpa Pharmacist +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== 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, +{ + 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: + 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; + + M_0: + callsub sF_Make, 507, 0, 2, 501, "red"; + goto M_Menu; + M_1: + callsub sF_Make, 507, 508, 5, 502, "orange"; + goto M_Menu; + M_2: + callsub sF_Make, 508, 0, 10, 503, "yellow"; + goto M_Menu; + M_3: + callsub sF_Make, 509, 0, 20, 504, "white"; + goto M_Menu; + M_4: + callsub sF_Make, 510, 0, 30, 505, "blue"; + goto M_Menu; + M_5: + 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"; + mes "must be getting old....."; + next; + mes "[Grampa Pharmacist]"; + 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"; + mes "explain to you how potions work...."; + next; + mes "[Grampa Pharmacist]"; + 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"; + 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."; + mes "^FF8000Orange Potion^000000 - 1 Red Herb, 1 Yellow Herb, 1 Empty Bottle, 5 Zeny fee."; + mes "^E8CF20Yellow Potion^000000 - 2 Yellow Herbs, 1 Empty Bottle, 10 Zeny fee."; + next; + mes "[Grampa Pharmacist]"; + mes "^999999White Potion^000000 - 2 White Herbs, 1 Empty Bottle, 20 Zeny fee."; + mes "^3355FFBlue Potion^000000 - 2 Blue Herbs, 1 Empty Bottle, 30 Zeny fee."; + mes "^00B000Green Potion^000000 - 2 Green Herbs, 1 Empty Bottle, 3 Zeny fee."; + close; + M_End: + 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/merchants/hair_dyer.txt b/npc/merchants/hair_dyer.txt new file mode 100644 index 000000000..02dfbae64 --- /dev/null +++ b/npc/merchants/hair_dyer.txt @@ -0,0 +1,158 @@ +//===== eAthena Script ======================================= +//= Hair Dyer +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= Hair Dyer with standard palletes +//===== Additional Comments: ================================= +//= Fully working +//= 1.1 Bugfix: fixed missing menu label LEnd->M_End [Lupus] +//============================================================ + + + + +// HairDyer Jovovich ----------------------------------------------------- +prt_in.gat,243,168,4 script HairDyer Jovovich 91,{ + mes "[HairDyer Jovovich]"; + mes "Welcome to my Hair Dying shop."; + next; + mes "[HairDyer Jovovich]"; + mes "Oh my..... your hair does not look like it's in good condition. I think it needs some special care. Come have a seat."; + qMenu0: + next; + menu "-Dye Hair.",M_0, "-Price List",M_1, "-Hair Tips",M_2, "-Cancel",M_End; + + M_0: + mes "[HairDyer Jovovich]"; + mes "Hohoho~ That's a good choice~~ Any time is a good time to change your hair color."; + next; + mes "[HairDyer Jovovich]"; + mes "Please choose a color that suits you"; + next; + menu "-Red please.",sM_a, "-Yellow please.",sM_b, "-Violet please.",sM_c, "-Orange please.",sM_d, "-Green please.",sM_e, + "-Blue please.",sM_f, "-White please.",sM_g, "-Black please.",sM_h, "-Sorry, I changed my mind.",M_End; + + sM_a: + mes "[HairDyer Jovovich]"; + if(countitem(975) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair red."; + setlook 6,8; + delitem 975,1; + set Zeny, Zeny - 1000; + close; + + sM_b: + mes "[HairDyer Jovovich]"; + if(countitem(976) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair yellow."; + setlook 6,1; + delitem 976,1; + set Zeny, Zeny - 1000; + close; + + sM_c: + mes "[HairDyer Jovovich]"; + if(countitem(981) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair Violet."; + setlook 6,2; + delitem 981,1; + set Zeny, Zeny - 1000; + close; + + sM_d: + mes "[HairDyer Jovovich]"; + if(countitem(980) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair Orange."; + setlook 6,3; + delitem 980,1; + set Zeny, Zeny - 1000; + close; + + sM_e: + mes "[HairDyer Jovovich]"; + if(countitem(979) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair Green."; + setlook 6,4; + delitem 979,1; + set Zeny, Zeny - 1000; + close; + + sM_f: + mes "[HairDyer Jovovich]"; + if(countitem(978) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair blue."; + setlook 6,5; + delitem 978,1; + set Zeny, Zeny - 1000; + close; + + sM_g: + mes "[HairDyer Jovovich]"; + if(countitem(982) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair white."; + setlook 6,6; + delitem 982,1; + set Zeny, Zeny - 1000; + close; + + sM_h: + mes "[HairDyer Jovovich]"; + if(countitem(983) < 1) goto sL_NoDye; + if(Zeny < 1000) goto sL_Zeny; + mes "Ok. I will dye you hair black."; + setlook 6,7; + delitem 983,1; + set Zeny, Zeny - 1000; + close; + + sL_NoDye: + mes "For me to dye your hair, I'll need the appropriate Dyestuff. Please check my price list for the information."; + close; + + sL_Zeny: + mes "I'm sorry but you don't have enough money."; + close; + + M_1: + mes "[HairDyer Jovovich]"; + mes "Here is the list of colors you can choose from and their prices:"; + mes " - Red: 1000 zeny, 1 Scarlet Dyestuff"; + mes " - Yellow: 1000 zeny, 1 Lemon Dyestuff"; + mes " - Violet: 1000 zeny, 1 Violet Dyestuff"; + mes " - Orange: 1000 zeny, 1 Orange Dyestuff"; + mes " - Green: 1000 zeny, 1 DarkGreen Dyestuff"; + mes " - Blue: 1000 zeny, 1 CobaltBlue Dyestuff"; + mes " - White: 1000 zeny, 1 White Dyestuff"; + mes " - Black: 1000 zeny, 1 Black Dyestuff"; + goto qMenu0; + + M_2: + mes "[HairDyer Jovovich]"; + mes "When your just feeling gloomy, of if you just got dumped... if you want to look hot, or when you just need to look better....."; + next; + mes "[HairDyer Jovovich]"; + mes "Change the color of your hair and your bound to regain your confidence and add an extra bounce to your step!!"; + next; + mes "[HairDyer Jovovich]"; + mes "For the small price of 1000 zeny and a Dyestuff, I can give you the haircolor you've been dreaming of!"; + next; + goto qMenu0; + + M_End: + mes "[HairDyer Jovovich]"; + mes "I think... every human being has the right to become beautiful......"; + close; +} + diff --git a/npc/merchants/inn.txt b/npc/merchants/inn.txt new file mode 100644 index 000000000..63a9d6d08 --- /dev/null +++ b/npc/merchants/inn.txt @@ -0,0 +1,172 @@ +//===== eAthena Script ======================================= +//= Inn Npcs +//===== By: ================================================== +//= Darkchild (1.1) +//===== Current Version: ===================================== +//= 1.1a +//===== Compatible With: ===================================== +//= eAthena 1.0+ +//===== Description: ========================================= +//= Inn Npcs, Save and Heal +//===================================================== +//= variables: +//= arg0 - name of npc +//= arg1 - name of the inn +//= arg2 - map to save at +//= arg3, arg4 - x and y cord. to save at +//= @cost - cost of renting a room +//===== Additional Comments: ================================= +//= 1.1 Blind Effect By Kobra_k88 (Taken from his old script) +//= I added it to all of them though [Darkchild] +//= 1.1a Minor bug fixes and optimizations. Switched from @variables +//= to arguments.[kobra_k88] +//============================================================ + + +//======================== Prontera =================================== +// West Side Inn ------------------- +prt_in.gat,244,135,2 script Inn Maid::Sammy 53,{ + + callfunc "F_InnMaid","[Sammy]","West Inn","prt_in.gat",238,130; + addtimer 3900, "Sammy::OnTimerWarp"; + close; + +OnTimerWarp: + warp "prt_in.gat",237,102; + sc_end SC_BLIND; + end; +} +// East Side Inn ------------------ +prt_in.gat,61,141,2 script Inn Maid::Ahlma 53,{ + + callfunc "F_InnMaid","[Ahlma]","East Inn","prt_in.gat",64,136; + addtimer 3900, "Ahlma::OnTimerWarp"; + close; + +OnTimerWarp: + warp "prt_in.gat",49,173; + sc_end SC_BLIND; + end; +} + +//======================== Alberta ==================================== +// North -------------------------- +alberta_in.gat,32,142,5 script Inn Maid::Moira 53,{ + + callfunc "F_InnMaid","[Moira]","North Inn","alberta_in.gat",26,138; + addtimer 3900, "Moira::OnTimerWarp"; + close; + +OnTimerWarp: + warp "alberta_in.gat",18,188; + sc_end SC_BLIND; + end; +} +// South ----------------------------- +alberta_in.gat,55,142,8 script Inn Maid::Tina 53,{ + + callfunc "F_InnMaid","[Tina]","South Inn","alberta_in.gat",60,140; + addtimer 3900, "Tina::OnTimerWarp"; + close; + +OnTimerWarp: + warp "alberta_in.gat",68,188; + sc_end SC_BLIND; + end; +} + +//====================== Geffen ====================================== +geffen_in.gat,70,64,5 script Inn Maid::Betty 53,{ + + callfunc "F_InnMaid","[Betty]","Inn","geffen_in.gat",74,60; + addtimer 3900, "Betty::OnTimerWarp"; + close; + +OnTimerWarp: + warp "geffen_in.gat",106,106; + sc_end SC_BLIND; + end; +} + +//======================= Payon ====================================== +payon_in01.gat,131,62,5 script Inn Maid::SunHee 53,{ + + callfunc "F_InnMaid","[Sun Hee]","Inn","payon_in01.gat",132,56; + addtimer 3900, "SunHee::OnTimerWarp"; + close; + +OnTimerWarp: + warp "payon_in01.gat",140,15; + sc_end SC_BLIND; + close; +} + +//======================== Morocc ==================================== +// North East -------------------------- +morocc_in.gat,147,138,5 script Inn Maid::Suzie 53,{ + + callfunc "F_InnMaid","[Suzie]","North East Inn","morocc_in.gat",142,140; + addtimer 3900, "Suzie::OnTimerWarp"; + close; + +OnTimerWarp: + warp "morocc_in.gat",174,144; + sc_end SC_BLIND; + end; +} +// South -------------------------------- +morocc_in.gat,80,100,5 script Inn Maid::Shala 53,{ + + callfunc "F_InnMaid","[Shala]","South Inn","morocc_in.gat",78,95; + addtimer 3900, "Shala::OnTimerWarp"; + close; + +OnTimerWarp: + warp "morocc_in.gat",74,128; + sc_end SC_BLIND; + end; +} + +//======================= Inn Function ============================== +function script F_InnMaid { + mes getarg(0); + mes "Welcome to Nenkaras " + getarg(1) + ". What can I do for you?"; + next; + menu "Save",Msave, "Rent a Room",Mrent, "Nothing",Mend; + + Msave: + mes getarg(0); + mes "Location Saved."; + mes "I am waiting for another job to do."; + savepoint getarg(2),getarg(3),getarg(4); + close; + Mrent: + set @cost,50; + if(BaseLevel > 15) set @cost,100; + if(BaseLevel > 30) set @cost,200; + if(BaseLevel > 50) set @cost,300; + if(BaseLevel > 75) set @cost,400; + mes getarg(0); + mes "It will cost " + @cost + " zeny to rent a room for 1 night."; + mes "In the morning your HP and SP will be fully recovered."; + next; + menu "Ok.",-,"No thanks.",Mend; + + mes getarg(0); + mes "Thank you and enjoy your stay here."; + emotion 15; + if(Zeny < @cost) goto NoZeny; + set Zeny,Zeny - @cost; + sc_start SC_BLIND,500000,1; + percentheal 100,100; + return; + + NoZeny: + mes getarg(0); + mes "I'm sorry but you don't have enough money."; + close; + Mend: + mes getarg(0); + mes "I am waiting for a job to do."; + close; +} diff --git a/npc/merchants/milk_trader.txt b/npc/merchants/milk_trader.txt new file mode 100644 index 000000000..1891d8cf4 --- /dev/null +++ b/npc/merchants/milk_trader.txt @@ -0,0 +1,61 @@ +//===== eAthena Script ======================================= +//= Milk Trader +//===== By: ================================================== +//= kobra_k88 +//===== Current Version: ===================================== +//= 1.2a +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= trades bottles for milk +//===== Additional Comments: ================================= +//= Fully working +//= 1.1 Negative input bug fixed [Lupus] +//= 1.2 Raised the price to close zeny exploit [Lupus] +//= 1.2a Switched to Lupus's "loopless" technique.[kobra_k88] +//============================================================ + + +// Milk Trader ------------------------------------------------------------- +prontera.gat,71,131,7 script Milk Trader 86,{ + mes "[Milk Trader]"; + mes "If you bring me an empty bottle and 20 Zeny, I will exchange it for 1 bottle of milk."; + next; + menu "-Exchange as many as possible.",M_0, "-Let me set the amount.",M_1, "-Cancel",M_End; + + M_0: + set @amount, 1000; + if(zeny/20 < @amount) set @amount, zeny/20; + if(countitem(713) < @amount) set @amount, countitem(713); + if(@amount > 0) goto L_Milk; + mes "[Milk Trader]"; + mes "..... Are you trying to make a fool of me.... ?"; + close; + + M_1: + input @amount; + if(@amount < 1 || @amount > 1000) goto M_End; + if(countitem(713) < @amount) goto L_NoBottle; + if(zeny < (@amount*20)) goto L_NoZeny; + + L_Milk: + getitem 519, @amount; + delitem 713, @amount; + set zeny, zeny - (@amount*20); + + M_End: + mes "[Milk Trader]"; + mes "Come back anytime."; + close; + + L_NoBottle: + mes "[Milk Trader]"; + mes "Ok, empty bottle please! Empty Bottle!!"; + mes "... Aww.. you don't have enough...?"; + close; + + L_NoZeny: + mes "[Milk Trader]"; + mes "You need more zeny."; + close; +} diff --git a/npc/merchants/refine.txt b/npc/merchants/refine.txt new file mode 100644 index 000000000..b3e354e68 --- /dev/null +++ b/npc/merchants/refine.txt @@ -0,0 +1,882 @@ +//===== eAthena Script ======================================= +//= Refining NPCs +//===== By: ================================================== +//= Syrus22 (1.1) +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= Any Athena Version +//===== Description: ========================================= +//= Refining NPCs and Metal Salesmen. +//===== Additional Comments: ================================= +//= 1.0 by A bunch of people! +//= Syrus22 - Completely redid the script using functions... also +//= added the option for auto safe refining and multiple refining. +//= 1.1 Negative input bug fixed [Lupus] +//= 1.2 Added additional reparimen in morroc and payon. Added +//= Christopher the blacksmith in Geffen. Edited some dialogue [kobra_k88] +//= 1.3 New Payon Locations [Darkchild] +//= Corrected zeny subtraction thx to jpnmania77.[kobra_k88] +//= 1.3a Temporary corrected an expliot. Need to check sources +//= to fully fix bug [Shinigami] +//= Fixed repairman prices [shadowlady] +//============================================================ + + +//========================================================= +// Christopher: Geffen Blacksmith +//========================================================= +geffen_in.gat,110,172,2 script Christopher 63, +{ + mes "[Christopher Guillenrow]"; + mes "Welcome to Christopher's Workshop. Ye can find all yer forging equipment here. So what can I help ye with?"; + M_Menu: + next; + menu "Purchase Anvil",M_0, "Purchase Forging Item",M_1, "Purchase Metal",M_2, "Purify Rough Ores",M_3, "Cancel",M_End; + + M_0: + mes "[Christopher Guillenrow]"; + mes "Higher quality Anvils gives ye a better chance ta make better weapons, ye know. But they cost more than yer typical ones."; + next; + menu "Anvil - 30000z.",sM_Anvil, "Oridecon Anvil - 120000z.",sM_OriAnvil, "Golden Anvil - 300000z.",sM_GolAnvil, + "Better Anvil than others",sM_BetAnvil, "Cancel",M_Menu; + + sM_Anvil: + if(Zeny < 30000) goto L_NoZeny; + mes "[Christopher Guillenrow]"; + mes "This is the cheapest one but it's very efficient."; + set Zeny, Zeny - 30000; + getitem 986,1; + next; + goto L_Thanks; + sM_OriAnvil: + if(Zeny < 120000) goto L_NoZeny; + mes "[Christopher Guillenrow]"; + mes "Ah! Ye have a good eye for anvils. This here is the proper anvil for a Blacksmith."; + set Zeny, Zeny - 120000; + getitem 987,1; + next; + goto L_Thanks; + sM_GolAnvil: + if(Zeny < 300000) goto L_NoZeny; + mes "[Christopher Guillenrow]"; + mes "This is the best anvil in my workshop! With this ye'll be the best Blasksmith in no time."; + set Zeny, Zeny - 300000; + getitem 988,1; + next; + goto L_Thanks; + sM_BetAnvil: + mes "[Christopher Guillenrow]"; + mes "I'm sorry but I don't have anything better than a Golden Anvil."; + mes "Maybe 'Ringgel' the legendary Anvil maker would have one... but he be a hard fellow ta find."; + close; + + M_1: + mes "[Christopher Guillenrow]"; + mes "A respectable Blacksmith uses fine tools. Ye will come ta know my tools as being the finest around!"; + mes "Choose anything you want."; + sM_Menu1: + next; + menu "Mini-Furnace - 150z.",sM_Furn, "Iron Hammer - 1000z.",sM_IrHam, "Golden Hammer - 3000z.",sM_GldHam, + "Oridecon Hammer - 5000z.",sM_OriHam, "Cancel",M_Menu; + + sM_Furn: + mes "[Christopher Guillenrow]"; + mes "This is a prerequisite for Metal refining!!"; + mes "So, how many do ye wish to buy? If you want to quit, please input the number '0'. However, you the maximum amount you can buy is 1000"; + set @input, 0; + input @input; + next; + if(@input < 1 ) goto sM_Menu1; + if(@input > 1000 ) goto sM_Max; + if(Zeny < 150 * @input) goto L_NoZeny; + set Zeny, Zeny - (150 * @input); + getitem 612, @input; + goto L_Thanks; + sM_IrHam: + if(Zeny < 1000) goto L_NoZeny; + set Zeny, Zeny - 1000; + getitem 613,1; + goto L_Thanks; + sM_GldHam: + if(Zeny < 3000) goto L_NoZeny; + set Zeny, Zeny - 3000; + getitem 614,1; + goto L_Thanks; + sM_OriHam: + if(Zeny < 5000) goto L_NoZeny; + set Zeny, Zeny - 5000; + getitem 615,1; + goto L_Thanks; + sM_Max: + mes "[Christopher Guillenrow]"; + mes "Sorry, you can't buy more than 1000 furnace at a time."; + close; + + M_2: + mes "[Christopher Guillenrow]"; + mes "I have 2 kinds of metals for sale. Which do ye like?"; + set @chris, 1; + set @name$, "Christopher Guillenrow"; + callfunc "phramain"; + + M_3: + mes "[Christopher Guillenrow]"; + mes "I can purify yer rough Oridecon and rough Elunium ores. I'll need 5 rough ores to make 1 pure one."; + mes "Well... which one do ye want ta make?"; + set @chris, 1; + set @name$, "Christopher Guillenrow"; + callfunc "orimain"; + + M_End: + close; + + L_NoZeny: + mes "[Christopher Guillenrow]"; + mes "I don't think I can let ye have this at a lower price. I can't afford ta loose profits because of ye."; + emotion 4; + close; + + L_Thanks: + mes "[Christopher Guillenrow]"; + mes "Thank you for shopping at my workshop. Feel free to come anytime whenever you need."; + emotion 15; + close; + +} + + + +//===================================================================================== +//= Weapon/Armor Refiners +//===================================================================================== +prt_in.gat,63,60,4 script Hollengrhen 85,{ + set @name$,"Hollengrhen"; + callfunc "refinemain"; + break; +} +morocc_in.gat,73,38,4 script Aragham 99,{ + set @name$,"Aragham"; + callfunc "refinemain"; + break; +} +payon.gat,144,173,4 script Antonio 88,{ + set @name$,"Antonio"; + callfunc "refinemain"; + break; +} +alberta_in.gat,28,58,4 script Fredrik 85,{ + set @name$,"Fredrik"; + callfunc "refinemain"; + break; +} +yuno_in01.gat,164,26,6 script Disturb 88,{ + set @name$,"Disturb"; + callfunc "refinemain"; + break; +} + +//============================================================ +//= Main Refiner Function +//============================================================ +//= To allow auto safe refining/multiple refining set the +//= @features variable to 1 +//============================================================ +function script refinemain { + set @features,0; + + mes "[" + @name$ + "]"; + mes "I am the Armsmith... I can refine any weapon or piece of armor you choose!"; + mes "Which piece of equipment do you want to refine?"; + M_Menu: + next; + menu getequipname(1),PART1,getequipname(2),PART2,getequipname(3),PART3,getequipname(4),PART4,getequipname(5),PART5, + getequipname(6),PART6,getequipname(7),PART7,getequipname(8),PART8,getequipname(9),PART9,getequipname(10),PART10; + + //Head Gear + PART1: + set @part,1; + if (getequipisequiped(1)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "Do you want me to refine your dumb brain?"; + emotion 6; + goto M_Menu; + //Armor + PART2: + set @part,2; + if (getequipisequiped(2)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "Do you want me to melt your body with blazing heat...?"; + emotion 6; + goto M_Menu; + //Left Hand + PART3: + set @part,3; + if (getequipisequiped(3)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "I can't make your left hand into an ultimate weapon..."; + emotion 4; + goto M_Menu; + //Right Hand + PART4: + set @part,4; + if (getequipisequiped(4)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "I can't make your right hand into an ultimate weapon..."; + emotion 4; + goto M_Menu; + //Garment + PART5: + set @part,5; + if (getequipisequiped(5)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "Look here... you don't have any Garments on...."; + goto M_Menu; + //Foot Gear + PART6: + set @part,6; + if (getequipisequiped(6)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "Ack!! Those are some stinky feet. I definately can't refine those.... uck!!"; + emotion 16; + goto M_Menu; + //Accessory1 + PART7: + set @part,7; + if (getequipisequiped(7)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "What do you mean by Accessory? Which One?"; + emotion 20; + goto M_Menu; + //Accessory2 + PART8: + set @part,8; + if (getequipisequiped(8)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "What do you mean by Accessory? Which One?"; + emotion 20; + goto M_Menu; + PART9: + set @part,9; + if (getequipisequiped(9)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "What do you want from me? There's nothing equiped there..."; + emotion 20; + goto M_Menu; + PART10: + set @part,10; + if (getequipisequiped(10)) goto CHECK1; + mes "[" + @name$ + "]"; + mes "What do you want from me? There's nothing equiped there..."; + emotion 20; + goto M_Menu; + +//Check if the item is refinable... +CHECK1: + if(getequipisenableref(@part)) goto CHECK2; + mes "[" + @name$ + "]"; + mes "I can't work on this item..."; + close; +//Check if the item is identified... (Don't know why this is in here... but kept it anyway) +CHECK2: + if(getequipisidentify(@part)) goto CHECK3; + mes "[" + @name$ + "]"; + mes "You must appraise this item first."; + close; +//Check to see if the items is already +10 +CHECK3: + if(getequiprefinerycnt(@part) < 10) goto REFINE0; + mes "[" + @name$ + "]"; + mes "This weapon is allready at its maximum level and can no longer be refined."; + close; + +//Refine Armor +REFINE0: + if(getequipweaponlv(@part) > 0) goto REFINE1; + set @matname$,"Elunium"; + set @material,985; + set @price,2000; + set @safe,4; + if(@features == 1) callfunc "refinefeatures"; + callfunc "refinenormal"; +//Refine Level 1 Weapon +REFINE1: + if(getequipweaponlv(@part) > 1) goto REFINE2; + set @matname$,"Phracon"; + set @material,1010; + set @price,50; + set @safe,7; + if(@features == 1) callfunc "refinefeatures"; + callfunc "refinenormal"; +//Refine Level 2 Weapon +REFINE2: + if(getequipweaponlv(@part) > 2) goto REFINE3; + set @matname$,"Emveretarcon"; + set @material,1011; + set @price,200; + set @safe,6; + if(@features == 1) callfunc "refinefeatures"; + callfunc "refinenormal"; +//Refine Level 3 Weapon +REFINE3: + if(getequipweaponlv(@part) > 3) goto REFINE4; + set @matname$,"Oridecon"; + set @material,984; + set @price,5000; + set @safe,5; + if(@features == 1) callfunc "refinefeatures"; + callfunc "refinenormal"; +//Refine Level 4 Weapon +REFINE4: + set @matname$,"Oridecon"; + set @material,984; + set @price,20000; + set @safe,4; + if(@features == 1) callfunc "refinefeatures"; + callfunc "refinenormal"; +} + +// Normal Refining Functions ========================= +function script refinenormal -1,{ + mes "[" + @name$ + "]"; + mes "To refine this stuff,I need ^ff9999" + @matname$ + "^000000 and the fee " + @price + " Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",Lcancel; + + if (getequippercentrefinery(@part) == 100) goto L_Sub; + mes "[" + @name$ + "]"; + mes "Hmm... Hold on! This piece of equipment has already been refined to its maximum safety level."; + mes "I must warn you if it is refined ANYMORE, It could be DESTROYED and become USELESS!!"; + next; + mes "["+@name$+"]"; + mes "Do you still wish you refine it? If so I will not be able to gaurantee my work..."; + next; + menu "Yes",L_Sub,"No",Lcancel1; + + L_Sub: + if ((countitem(@material) < 1) || (Zeny < @price)) goto Lcancel2; + delitem @material,1; + set Zeny,Zeny-@price; + +Lrefine: + if (getequippercentrefinery(@part)<=rand(100)) goto Lfail; + mes "["+@name$+"]"; + mes "Clang! Clang! Clang!"; + successrefitem @part; + next; + mes "["+@name$+"]"; + mes "HAHA! It seems my skills haven't gotten rusty yet! Splendid... just splendid..."; + emotion 21; + close; + +Lfail: + mes "[" + @name$ + "]"; + mes "Clang! Clang! Clang!"; + failedrefitem @part; + next; + mes "["+@name$+"]"; + mes "Aaahhh!! Oh no....!!"; + emotion 16; + next; + mes "["+@name$+"]"; + mes "Eh..Ehem... I'm sorry but the refining proccess ^ff0000failed^000000."; + next; + mes "["+@name$+"]"; + mes "I am deeply ashamed of what I've done... but I DID warn you earlier about the risks."; + close; + +Lcancel: + mes "[" + @name$ + "]"; + mes "You said so..Hmm so be it..."; + close; + +Lcancel1: + mes "[" + @name$ + "]"; + mes "Good Choice."; + mes "Ah... good choice. I'd feel awfull if I'd destroyed another persons piece of equipment with my own hands."; + close; + +Lcancel2: + mes "[" + @name$ + "]"; + mes "Is that all you got? Unfortunately I can't work for you at a lower price. Try putting yourself in my shoes."; + close; +} + +// New Refining Functions ======================== +function script refinefeatures { + if(getequiprefinerycnt(@part) >= @safe) goto Lnosafe; + mes "[" + @name$ + "]"; + mes "I can refine this to the safe limit or a desired number of times... it's your choice..."; + next; + menu "To the safe limit please.",Lsafe,"I'll decide how many times.",Lnosafe,"I've changed my mind...",Lcancel; + +Lsafe: + set @refinecnt,@safe - getequiprefinerycnt(@part); + set @fullprice,@price * @refinecnt; + mes "[" + @name$ + "]"; + mes "That will cost you " + @refinecnt + " " + @matname$ + " and " + @fullprice + " Zeny. Is that ok?"; + next; + menu "Yes",-,"No...",Lcancel; + if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2; + delitem @material,@refinecnt; + set Zeny,Zeny - @fullprice; + callfunc "refinesafe"; + break; + +Lnosafe: + mes "[" + @name$ + "]"; + mes "So how many times would you like me to refine your item?"; + next; + input @refinecnt; + if (@refinecnt<1) goto Lcancel3; //fixed by Lupus + set @refinecheck,@refinecnt + getequiprefinerycnt(@part); + if(@refinecheck > 10) goto Lcancel3; + set @fullprice,@price * @refinecnt; + mes "[" + @name$ + "]"; + mes "This will cost you " + @refinecnt + " " + @matname$ + " and " + @price + " Zeny... Is that ok?"; + next; + menu "Yes...",-,"No...",Lcancel; + if(@refinecheck > @safe) goto Lwarn; + if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2; + delitem @material,@refinecnt; + set Zeny,Zeny - @fullprice; + callfunc "refinenumber"; + break; + + Lwarn: + set @refinecheck,@refinecheck - @safe; + mes "[" + @name$ + "]"; + mes "This will try to refine the equipment " + @refinecheck + " times past the safe limit. Your equipment may be destroyed... is that ok?"; + next; + menu "Yes",-,"No...",Lcancel1; + if((countitem(@material) < @refinecnt) || (Zeny < @fullprice)) goto Lcancel2; + delitem @material,@refinecnt; + set Zeny,Zeny - @fullprice; + callfunc "refinenumber"; + break; +Lcancel: + mes "[" + @name$ + "]"; + mes "If you say so... See you again soon I hope."; + close; +Lcancel1: + mes "[" + @name$ + "]"; + mes "Good... I don't like to break people's equipment..."; + close; +Lcancel2: + mes "[" + @name$ + "]"; + mes "Sorry but you don't have everything I need..."; + close; +Lcancel3: + mes "[" + @name$ + "]"; + mes "I can't refine this item that many times."; + close; +} + +// Function: Safe Refine --------------------- +function script refinesafe { + mes "Clang, clang!!!"; + successrefitem @part; + emotion 21; + set @refinecnt,@refinecnt - 1; + next; + if(@refinecnt == 0) goto Lend; + callfunc "refinesafe"; + break; + + Lend: + mes "[" + @name$ + "]"; + mes "All finished... Come again soon."; + close; +} +// Function: Refine +function script refinenumber { + mes "Clang, clang!!!"; + if (getequippercentrefinery(@part)<=rand(100)) goto Lfail; + successrefitem @part; + emotion 21; + set @refinecnt,@refinecnt - 1; + next; + if(@refinecnt == 0) goto Lend; + callfunc "refinenumber"; + break; + + Lend: + mes "[" + @name$ + "]"; + mes "All finished... Come again soon."; + close; + + Lfail: + failedrefitem @part; + emotion 23; + mes "[" + @name$ + "]"; + mes "WAHHHH!!! I'm so sorry... I warned you this could happen..."; + set @refinecnt,@refinecnt - 1; + if(@refinecnt == 0) goto Lend2; + mes "Here's the unused Zeny and Material back..."; + getitem @material,@refinecnt; + set @fullprice,@refinecnt * @price; + set Zeny,Zeny + @fullprice; + + Lend2: + close; +} + + + +//============================================================================== +//= Material Salesmen +//============================================================================== +prt_in.gat,56,69,4 script Vurewell 86,{ + set @name$,"Vurewell"; + callfunc "phramain"; + break; +} +payon.gat,145,178,4 script Begnahd 88,{ + set @name$,"Begnahd"; + callfunc "phramain"; + break; +} +morocc_in.gat,65,37,4 script Sade 99,{ + set @name$,"Sade"; + callfunc "phramain"; + break; +} +alberta_in.gat,18,59,5 script Kahlamanlith 86,{ + set @name$,"Kahlamanlith"; + callfunc "phramain"; + break; +} +yuno_in01.gat,171,26,6 script Dillemat 88,{ + set @name$,"Dillemat"; + callfunc "phramain"; + break; +} + +//============================================================ +//= Material Salesmen Functions +//============================================================ +function script phramain { + if(@chris == 1) goto M_Menu; + mes "[" + @name$ + "]"; + mes "Hello, Im selling metals I just mined."; + mes "They are Pharacon and Emvertacon."; + mes "Would you like to buy some?"; + M_Menu: + set @chris, 0; + next; + menu"Pharacon - 200z",PHARA,"Emveretarcon - 1000z",EMVER; + + PHARA: + set @itemid,1010; + set @value,200; + goto CONTINUE; + + EMVER: + set @itemid,1011; + set @value,1000; + +CONTINUE: + mes "[" + @name$ + "]"; + mes "How many would you like?"; + next; + input @ammount; + if (@ammount <= 0) goto L_BELOW; + if (@ammount > 999) goto L_ABOVE; + if (zeny<@value*@ammount) goto L_NOZENY; + if (checkweight(@item,@ammount) == 0) goto L_WEIGHT; + getitem @itemid,@ammount; + set Zeny,Zeny-@value*@ammount; + mes "[" + @name$ + "]"; + mes "Here you go."; + close; + +L_NOZENY: + mes "You do not have enough zeny!"; + close; +L_WEIGHT: + mes "You cant hold that many of that item"; + close; +L_BELOW: + mes "You have to buy a POSITIVE amount of items!"; + close; +L_ABOVE: + mes "You cant buy this much of this item!"; + close; +} + + + +//============================================================================== +//= Ori/Elu Refiners +//============================================================================== +prt_in.gat,63,69,4 script Dietrich 84,{ + set @name$,"Dietrich"; + callfunc "orimain"; + break; +} +payon.gat,137,178,4 script Hakhim 88,{ + set @name$,"Hakhim"; + callfunc "orimain"; + break; +} +morocc_in.gat,72,32,4 script Abdul 99,{ + set @name$,"Abdul"; + callfunc "orimain"; + break; +} +alberta_in.gat,21,63,5 script Xenophon 84,{ + set @name$,"Xenophon"; + callfunc "orimain"; + break; +} +yuno_in01.gat,171,22,6 script Delayt 88,{ + set @name$,"Delayt"; + callfunc "orimain"; +break; +} + +//============================================================ +//= Ori/Elu Functions +//============================================================ +function script orimain { + if(@chris == 1) goto M_Menu; + mes "[" + @name$ + "]"; + mes "If you bring Rough Oridecons and"; + mes "Rough Eluniums to me,"; + mes "I can refine them for you."; + mes "However, you must bring 5 of each."; + M_Menu: + set @chris, 0; + next; + menu "Make Oridecon",M_Ori, "Make Elunium",M_Elu, "Ask about enchanted stones",M_Stones; + + M_Ori: + if ((countitem(756) < 5)) goto L_NoOri; + delitem 756,5; + getitem 984,1; + mes "[" + @name$ + "]"; + mes "As promised, here's your oridecon."; + mes "Come back again anytime."; + close; + + L_NoOri: + mes "[" + @name$ + "]"; + mes "Huh? You're kidding, right? Didn't I say I can't make you an Oridecon unless you bring me 5 rough ones?"; + close; + M_Elu: + if ((countitem(757) < 5)) goto L_NoElu; + delitem 757,5; + getitem 985,1; + mes "[" + @name$ + "]"; + mes "As promised, here's your elunium."; + mes "Come back again anytime."; + close; + + L_NoElu: + mes "[" + @name$ + "]"; + mes "Huh? You're kidding, right? Didn't I say I can't make you an Elunium unless you bring me 5 rough ones?"; + close; + M_Stones: + mes "[" + @name$ + "]"; + mes "Enchanted stones, huh ...."; + next; + mes "[" + @name$ + "]"; + mes "Well, in the 20 years that I've been a stonesmith I've heard of them many times... though I've never actually seen them before."; + next; + mes "[" + @name$ + "]"; + mes "I've been told that enchanted stones possess different elemental properties such as ^5533FFWater, Earth, Fire, and Wind^000000."; + next; + mes "[" + @name$ + "]"; + mes "If someone combines an Enchanted Stone with a weapon durring the refining process, that weapon will possess the same property as the stone."; + next; + mes "[" + @name$ + "]"; + mes "Of course, that person needs to be skillfull enough to work on it."; + goto M_Menu; +} + + + +//===================================================================================== +//= Equipment Repairmen +//===================================================================================== +prt_in.gat,62,54,2 script Grendal 84,{ + set @name$,"Grendal"; + callfunc "repairmain"; + break; +} + +//Temp Spot, Not Shure Where To place +payon.gat,149,182,2 script Repairman 88,{ + set @name$,"Repairman"; + callfunc "repairmain"; + break; +} + +morocc_in.gat,71,40,2 script Repairman 99,{ + set @name$,"Repairman"; + callfunc "repairmain"; + break; +} + +//============================================================ +//= Equipment Repair Function +//============================================================ +function script repairmain { + set @repairprice,5000; + mes "[" + @name$ + "]"; + mes "I am the Repair Smith and I can repair any Arms you want."; + mes "Tell me which Equipment you want to repair."; + set @broken1,getbrokenid(1); + set @broken2,getbrokenid(2); + set @broken3,getbrokenid(3); + set @broken4,getbrokenid(4); + set @broken5,getbrokenid(5); + set @broken6,getbrokenid(6); + set @broken7,getbrokenid(7); + set @broken8,getbrokenid(8); + set @broken9,getbrokenid(9); + set @broken10,getbrokenid(10); + next; + if(@broken1==NULL) goto L_CANCEL_3; + menu getitemname(@broken1),REPAIR1,getitemname(@broken2),REPAIR2,getitemname(@broken3),REPAIR3, + getitemname(@broken4),REPAIR4,getitemname(@broken5),REPAIR5,getitemname(@broken6),REPAIR6, + getitemname(@broken7),REPAIR7,getitemname(@broken8),REPAIR8,getitemname(@broken9),REPAIR9, + getitemname(@broken10),REPAIR10; + REPAIR1: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(1); + goto L_CLOSE; + REPAIR2: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(2); + goto L_CLOSE; + REPAIR3: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(3); + goto L_CLOSE; + REPAIR4: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(4); + goto L_CLOSE; + REPAIR5: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(5); + goto L_CLOSE; + REPAIR6: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(6); + goto L_CLOSE; + REPAIR7: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(7); + goto L_CLOSE; + REPAIR8: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(8); + goto L_CLOSE; + REPAIR9: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(9); + goto L_CLOSE; + REPAIR10: + mes "[" + @name$ + "]"; + mes "You're gonna repair " + getitemname(@broken1) + "."; + mes "To repair this, I need ^ff9999One Steel^000000, and @repairprice Zeny."; + mes "Continue?"; + next; + menu "Yes",-,"No",L_CANCEL_2; + if (countitem(999) < 1 || Zeny < @repairprice) goto L_CANCEL_1; + delitem 999,1; + set Zeny,Zeny-@repairprice; + repair(10); + goto L_CLOSE; + +L_CANCEL_1: + mes "[" + @name$ + "]"; + mes "Is it all you got?"; + mes "Unfortunately, I have kids to feed..."; + goto L_CLOSE; +L_CANCEL_2: + mes "[" + @name$ + "]"; + mes "Ok, but don't expect to be using that..."; + goto L_CLOSE; +L_CANCEL_3: + mes "[" + @name$ + "]"; + mes "Looks like you don't need anything repaired today..."; + goto L_CLOSE; +L_CLOSE: + close; +} diff --git a/npc/merchants/renters.txt b/npc/merchants/renters.txt new file mode 100644 index 000000000..7d025919d --- /dev/null +++ b/npc/merchants/renters.txt @@ -0,0 +1,155 @@ +//===== eAthena Script ======================================= +//= Renters +//===== By: ================================================== +//= kobra_k88, mod by Lupus +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= PecoPeco Breeder, Grand PecoPeco Breeder, Falcon tamer scripts +//===== Additional Comments: ================================= +//= Fully working +//= Added another Falcon Master into the Hunters Guild [Lupus] +//= 1.2: replaced checkoption(x) with checkriding,checkfalcon [Lupus] +//= 1.3: Added support for Lord_Knight(2),Paladin(2) and Sniper. +//============================================================ + +// PecoPeco Breeder (for Knights)------------------------------------------- +prontera.gat,61,338,3 script PecoPeco Breeder 86,{ + mes "[PecoPeco Breeder]"; + if((Class == 7)||(Class == 4008)) goto L_Start; + mes "I'm a PecoPeco breeder and I rent out PecoPeco's for^4444FF Knights ^000000to ride on."; + close; + +L_Start: + mes "Good day. Would you like to ride a PecoPeco?"; + next; + mes "[PecoPeco Breeder]"; + mes "You can rent one PecoPeco for 2500 Zeny, provided that you have the PecoPeco Riding skill."; + next; + menu "Lend me a trusty steed!... err... bird!",M_0,"Hmm...It's a bit too expensive.",M_1; + + M_0: + if(getskilllv(63) == 0) goto sL_NeedSkill; + if(Zeny < 2500) goto sL_Zeny; + if(checkriding(0) != 0) goto sL_GotPeco; + set Zeny, Zeny - 2500; + setriding; + mes "Thank you and good day."; + emotion 15; + close; + + sL_NeedSkill: + mes "[PecoPeco Breeder]"; + mes "As I mentioned earlier, you need the^3333FF Riding ^000000skill in order to rent a PecoPeco."; + close; + sL_Zeny: + mes "[PecoPeco Breeder]"; + mes "As I said before it will be 2500z. Come back when you aquire enough zeny."; + close; + sL_GotPeco: + mes "[PecoPeco Breeder]"; + mes "Umm... aren't you already riding a PecoPeco??...."; + emotion 20; + close; + M_1: + mes "[PecoPeco Breeder]"; + mes "Alright. Good day to you."; + close; + +} + +// Grand PecoPeco Breeder (for Crusaders)------------------------------------------- +prontera.gat,238,312,5 script Grand PecoPeco Breeder 86,{ + mes "[Grand PecoPeco Breeder]"; + if((Class == 14)||(Class == 4015)) goto L_Start; + + mes "I'm a Grand PecoPeco breeder and I rent out Grand PecoPeco's for^4444FF Crusaders ^000000to ride on."; + close; + +L_Start: + mes "Good day. Would you like to ride a Grand PecoPeco?"; + next; + mes "[Grand PecoPeco Breeder]"; + mes "You can rent one Grand PecoPeco for 2500 Zeny, provided that you have the PecoPeco Riding skill."; + next; + menu "Lend me a trusty steed!... err... bird!",M_0,"Hmm...It's a bit too expensive.",M_1; + + M_0: + if(getskilllv(63) == 0) goto sL_NeedSkill; + if(Zeny < 2500) goto sL_Zeny; + if(checkriding(0) != 0) goto sL_GotPeco; + set Zeny, Zeny - 2500; + setriding; + mes "Thank you and good day."; + emotion 15; + close; + + sL_NeedSkill: + mes "[Grand PecoPeco Breeder]"; + mes "As I mentioned earlier, you need the^3333FF Riding ^000000skill in order to rent a Grand PecoPeco."; + close; + sL_Zeny: + mes "[Grand PecoPeco Breeder]"; + mes "As I said before it will be 2500z. Come back when you aquire enough zeny."; + close; + sL_GotPeco: + mes "[Grand PecoPeco Breeder]"; + mes "Umm... aren't you already riding a Grand PecoPeco??...."; + emotion 20; + close; + M_1: + mes "[Grand PecoPeco Breeder]"; + mes "Alright. Good day to you."; + close; + +} + +// Falcon Master-------------------------------------------------------------- +in_hunter.gat,146,100,2 script Falcon Master 59,{ + mes "[Falcon Master]"; + mes "Hellooooo, I am the Falcon Master."; + next; + menu "Speak with him",M_0, "Politely back away",M_End; + + M_0: + mes "[Falcon Master]"; + mes "I can train a Falcon for you, but you need to be a Hunter and have mastered the ^5555FF'Falcon Taming' skill^000000."; + next; + menu "Ok",sM_0, "No thanks",M_End; + + sM_0: + if(Class != Job_Hunter && Class != 4012 && Class != Job_Sniper) goto sL_NotHunter; + + if(checkfalcon(0) != 0) goto sL_GotFalc; + if(getskilllv(127)==0) goto sL_NoSkill; + mes "[Falcon Master]"; + mes "It looks like you meet all the requirements to handle a Falcon. Here you are"; + setfalcon; + next; + mes "[Falcon Master]"; + mes "Please take very good care of it. It will prove to be a valuble companion."; + close; + + sL_NotHunter: + mes "[Falcon Master]"; + mes "As I said, Falcons can only be given to Hunters. Falcons are very picky about who they travel with you know."; + close; + sL_GotFalc: + mes "[Falcon Master]"; + mes "You can only have 1 Falcon at a time."; + close; + sL_NoSkill: + mes "[Falcon Master]"; + mes "I'm sorry but you do not have the Falcon Taming skill. Please come back when you have learned it."; + close; + M_End: + mes "[Falcon Master]"; + mes "Have a nice day."; + close; +} + +//Not Supposed To Be One In Payon! +//Coordinate IS Correct For New Payon Map Though IF You Enable It +//payon_in01.gat,206,175,4 duplicate(Falcon Master) Falcon Master 59 diff --git a/npc/merchants/shops.txt b/npc/merchants/shops.txt new file mode 100644 index 000000000..ac887039e --- /dev/null +++ b/npc/merchants/shops.txt @@ -0,0 +1,208 @@ +//===== eAthena Script ======================================= +//= Shops +//===== By: ================================================== +//= eAthena Dev Team +//===== Current Version: ===================================== +//= 1.6 +//===== Compatible With: ===================================== +//= eAthena 7.15 + +//===== Description: ========================================= +//= +//===== Additional Comments: ================================= +//= swapped shop titles in GONRYUN, thanks to Kashy +//= 1.3a Fixed Louyang map name. Added additional shops in Yuno. [kobra_k88] +//= 1.4 Added Niflheim Shops +//= 1.5 New Payon Locations [Darkchild] +//= Moved shops in Umbala.txt here. Commented out the duplicate +//= ones.[kobra_k88] +//= 1.6 Removed GRAPE ID 514 from shops (caused exploits) +//= Raised selling price of Empty Bottles to 10 (it's a quest item...) +//============================================================ + + + +//======================================================= +//ALBERTA +//======================================================= +alb2trea.gat,87,65,1 shop Tool Dealer 83,1750:-1,1751:-1,1752:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,657:-1 +alberta_in.gat,94,56,4 shop Tool Dealer 83,501:-1,502:-1,503:-1,504:-1,506:-1,601:-1,602:-1,611:-1,610:-1,645:-1,656:-1,657:-1 +alberta_in.gat,165,96,1 shop Item Collector 74,909:-1,528:-1 +alberta_in.gat,182,96,1 shop Tool Dealer 73,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1750:-1,2243:-1,645:-1,656:-1,657:-1 +alberta_in.gat,180,15,1 shop Armor Dealer 101,2101:-1,2103:-1,2401:-1,2403:-1,2405:-1,2501:-1,2503:-1,2505:-1,2203:-1,2201:-1,2205:-1,2226:-1,2301:-1,2303:-1,2305:-1,2321:-1,2328:-1,2332:-1,2307:-1,2309:-1,2312:-1,2314:-1 +alberta_in.gat,188,21,1 shop Weapon Dealer 49,1750:-1,1751:-1,1101:-1,1104:-1,1107:-1,1201:-1,1204:-1,1207:-1,1601:-1,1701:-1,1301:-1,1351:-1,1354:-1,1357:-1,1360:-1 +//alberta_in.gat,18,59,5 shop Miner 48,1010:-1,1011:-1 + +//======================================================= +//AL DE BARAN +//======================================================= +aldeba_in.gat,20,60,5 shop Armor Dealer 101,2228:-1,2103:-1,2105:-1,2307:-1,2309:-1,2312:-1,2314:-1,2316:-1,2505:-1,2405:-1 +aldeba_in.gat,28,54,5 shop Weapon Dealer 85,1201:-1,1204:-1,1207:-1,1210:-1,1213:-1,1216:-1,1219:-1,1222:-1 +aldeba_in.gat,94,56,5 shop Tool Dealer 83,501:-1,502:-1,503:-1,504:-1,506:-1,601:-1,602:-1,611:-1,610:-1,645:-1,656:-1,657:-1 + +//======================================================= +//AMATSU +//======================================================= +//Fruit merchant opens a zeny exploit (due to Juice Maker NPC) +amatsu.gat,176,126,4 shop Fruit Merchant 53,512:-1,513:-1,515:-1,516:-1,531:-1,532:-1,534:-1,533:-1 +//amatsu.gat,169,111,6 shop Tool Dealer 83,611:-1,1750:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1065:-1,2239:-1 +amatsu.gat,180,102,3 shop Flower Girl 96,712:-1,744:-1,2612:-1,2215:-1 +amatsu.gat,189,99,7 shop Butcher 49,517:-1,528:-1,540:-1,541:-1 +amatsu.gat,169,119,6 shop Gift Merchant 91,734:-1,735:-1,736:-1,737:-1,746:-1 +amatsu.gat,183,127,5 shop Milk Merchant 90,519:-1 +//1st set +//ama_in01.gat,96,28,4 shop Weapon Dealer 54,1750:-1,1751:-1,1701:-1,1201:-1,1204:-1,1207:-1,1601:-1,1101:-1,1104:-1,1107:-1,1110:-1,1113:-1,1122:-1,1119:-1,1123:-1,1126:-1,1157:-1,1129:-1,1116:-1,1301:-1 +//ama_in01.gat,103,24,1 shop Armor Dealer 48,2101:-1,2103:-1,2401:-1,2403:-1,2501:-1,2503:-1,2220:-1,2226:-1,2301:-1,2303:-1,2305:-1,2328:-1,2307:-1,2309:-1,2312:-1,2314:-1 +ama_in01.gat,101,18,8 shop Weapon Dealer 47,1401:-1,1404:-1,1407:-1,1451:-1,1454:-1,1457:-1,1460:-1,1463:-1,1410:-1 +//2nd set +ama_in01.gat,89,28,4 shop Armor Dealer 757,2211:-1,2401:-1,2403:-1,2501:-1,2503:-1,2101:-1,2103:-1,2305:-1,2321:-1,2332:-1,2314:-1,2627:-1 +ama_in01.gat,102,28,4 shop Weapon Dealer 766,1207:-1,1216:-1,1107:-1,1122:-1,1116:-11154:-1,1407:-1,1457:-1,1354:-1,1519:-1 +ama_in01.gat,24,30,4 shop Tool Dealer 763,1750:-1,1770:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1 + +//======================================================= +//COMODO +//======================================================= +cmd_in01.gat,117,165,4 shop Armor Dealer 101,2226:-1,2228:-1,2103:-1,2105:-1,2405:-1,2503:-1,2505:-1,2305:-1,2321:-1,2307:-1,2309:-1,2335:-1,2312:-1,2314:-1,2316:-1 +cmd_in01.gat,131,165,4 shop Weapon Dealer 49,1903:-1,1905:-1,1907:-1,1950:-1,1952:-1,1954:-1,1956:-1,1401:-1,1404:-1,1407:-1,1451:-1,1454:-1,1457:-1,1460:-1,1463:-1,1410:-1 +cmd_in01.gat,79,182,4 shop Tool Dealer 83,1753:-1,501:-1,502:-1,503:-1,504:-1,645:-1,656:-1,657:-1,601:-1,602:-1,611:-1,1065:-1 +comodo.gat,296,125,4 shop Souvenir Merchant 101,965:-1,964:-1 +comodo.gat,244,296,7 shop Item Collector 74,909:-1,5 + +//======================================================= +//GEFFEN +//======================================================= +geffen_in.gat,25,177,1 shop Armor Dealer 66,2101:-1,2107:-1,2401:-1,2501:-1,2230:-1,2301:-1,2303:-1,2305:-1,2321:-1,2332:-1 +geffen_in.gat,29,177,1 shop Weapon Dealer 47,1750:-1,1751:-1,1101:-1,1701:-1,1201:-1,1204:-1,1207:-1,1210:-1,1213:-1,1216:-1,1601:-1,1604:-1,1607:-1,1610:-1 +geffen_in.gat,74,144,1 shop Trader 66,909:-1,911:-1,910:-1,912:-1 +geffen_in.gat,77,167,1 shop Tool Dealer 68,1750:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,2241:-1,645:-1,656:-1,657:-1 +geffen_in.gat,77,173,1 shop Magical Tool Trade 64,717:-1,1601:-1,1604:-1,1607:-1,1610:-1,2232:-1,2321:-1,2332:-1 +geffen_in.gat,171,123,1 shop Tool Dealer 64,1092:-1,1093:-1 +geffen.gat,193,152,3 shop Pet Merchant 125,537:-1,643:-1,10013:-1,10014:-1 + +//======================================================= +//GONRYUN +//======================================================= +gonryun.gat,147,84,4 shop Tool Dealer 777,1750:-1,1751:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,645:-1,656:-1,601:-1,602:-1,1065:-1 +gonryun.gat,174,101,4 shop Weapon Dealer 774,1207:-1,1216:-1,1107:-1,1122:-1,1116:-1,1154:-1,1407:-1,1457:-1,1354:-1,1519:-1 +gonryun.gat,173,84,4 shop Armor Dealer 770,2211:-1,2401:-1,2403:-1,2501:-1,2503:-1,2101:-1,2103:-1,2305:-1,2321:-1,2332:-1,2328:-1,2627:-1 + +//======================================================= +//IZLUDE +//======================================================= +izlude_in.gat,60,127,4 shop Weapon Dealer 98,1750:-1,1751:-1,1701:-1,1601:-1,1201:-1,1204:-1,1207:-1,1101:-1,1104:-1,1107:-1,1116:-1,1151:-1,1154:-1,1157:-1,1160:-1,1301:-1 +izlude_in.gat,70,127,4 shop Armor Dealer 101,2103:-1,2105:-1,2403:-1,2405:-1,2503:-1,2505:-1,2226:-1,2228:-1,2303:-1,2305:-1,2328:-1,2307:-1,2309:-1,2312:-1,2314:-1,2316:-1 +izlude_in.gat,115,61,1 shop Tool Dealer 47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1750:-1,1065:-1,645:-1,656:-1,657:-1 +izlude.gat,121,138,1 shop Butcher 54,517:-1 +izlude.gat,127,120,1 shop Fruit Merchant 72,512:-1,513:-1,515:-1,516:-1 +izlude.gat,137,126,3 shop Milk Merchant 701,519:-1 +izlude.gat,164,138,4 shop Pet Merchant 125,537:-1,643:-1,10013:-1,10014:-1 + +//======================================================= +//LOUYANG +//======================================================= +lou_in02.gat,121,181,5 shop Armor Dealer 770,2211:-1,2401:-1,2403:-1,2501:-1,2503:-1,2101:-1,2103:-1,2503:-1 +lou_in02.gat,130,182,5 shop Weapon Dealer 774,1204:-1,1216:-1,1107:-1,1113:-1,1116:-1,1157:-1,1407:-1,1410:-1,1354:-1,1519:-1 + +//======================================================= +//MORROC +//======================================================= +morocc_in.gat,141,67,1 shop Weapon Dealer 58,1750:-1,1751:-1,1701:-1,1601:-1,1201:-1,1204:-1,1207:-1,1210:-1,1213:-1,1216:-1,1219:-1,1222:-1,1250:-1,1252:-1,1254:-1 +morocc_in.gat,141,60,1 shop Armor Dealer 58,2101:-1,2103:-1,2401:-1,2403:-1,2405:-1,2501:-1,2503:-1,2218:-1,2301:-1,2303:-1,2305:-1,2321:-1,2328:-1,2332:-1,2307:-1,2309:-1,2335:-1 +morocc.gat,35,69,1 shop Trader 89,2609:-1,1516:-1,1522:-1 +morocc.gat,139,92,1 shop Trader 99,513:-1,513:-1,513:-1,513:-1,513:-1,513:-1 +morocc.gat,145,44,1 shop Jewel Seller 99,730:-1,2613:-1 +morocc.gat,147,102,5 shop Tool Dealer 93,1750:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1065:-1,645:-1,656:-1,657:-1 +morocc.gat,151,243,1 shop Tool Dealer 99,1750:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,2242:-1,645:-1,656:-1,657:-1 +morocc.gat,157,72,6 shop Butcher 49,517:-1 +morocc.gat,166,51,1 shop Jewel Seller 102,721:-1,722:-1,726:-1,728:-1,729:-1 +morocc.gat,170,101,3 shop Tool Dealer 85,909:-1,528:-1,919:-1,925:-1 +morocc.gat,206,250,1 shop Tool Dealer 85,909:-1,528:-1,919:-1,925:-1 +morocc.gat,244,134,1 shop Trader 93,2612:-1 +morocc.gat,259,193,1 shop Trader 99,747:-1 +morocc.gat,268,193,1 shop Trader 93,748:-1 +morocc.gat,269,167,4 shop Pet Merchant 125,537:-1,643:-1,10013:-1,10014:-1 +//morocc_in.gat,65,37,4 shop Miner 48,1010:-1,1011:-1 + +//======================================================= +//NIFLHEIM +//======================================================= +nif_in.gat,35,91,3 shop Armor Dealer 796,2101:-1,2107:-1,2401:-1,2501:-1,2230:-1,2301:-1,2303:-1,2305:-1,2321:-1,2332:-1 +nif_in.gat,35,84,3 shop Weapon Dealer 795,1750:-1,1751:-1,1101:-1,1701:-1,1201:-1,1204:-1,1207:-1,1210:-1,1213:-1,1216:-1,1601:-1,1604:-1,1607:-1,1610:-1 +nif_in.gat,154,21,3 shop Tool Dealer 798,611:-1,1750:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1065:-1,2239:-1,645:-1,656:-1,657:-1 +niflheim.gat,201,209,3 shop Milk Merchant 794,519:-1 +niflheim.gat,224,185,3 shop Fruit Merchant 795,512:-1,513:-1 +niflheim.gat,209,161,3 shop Butcher 794,517:-1,528:-1 +niflheim.gat,205,152,3 shop Gift Merchant 795,734:-1,735:-1,736:-1,737:-1,746:-1 + +//======================================================= +//PAYON +//======================================================= +payon_in01.gat,7,119,4 shop Weapon Dealer 86,1750:-1,1751:-1,1101:-1,1104:-1,1107:-1,1201:-1,1204:-1,1207:-1,1601:-1,1701:-1,1704:-1,1707:-1,1710:-1,1713:-1,1714:-1,1718:-1 +payon_in01.gat,15,119,4 shop Armor Dealer 87,2401:-1,2403:-1,2405:-1,2501:-1,2503:-1,2505:-1,2208:-1,2211:-1,2212:-1,2301:-1,2303:-1,2305:-1,2321:-1,2328:-1,2332:-1,2309:-1,2330:-1 +payon_in02.gat,87,34,1 shop Tool Dealer 98,1750:-1,1751:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1065:-1,645:-1,656:-1,657:-1 +payon.gat,160,97,4 shop Tool Dealer 88,1750:-1,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,601:-1,525:-1,602:-1,1065:-1,645:-1,656:-1,657:-1 +//Not Shure About Pet Shop +payon.gat,104,63,4 shop Pet Merchant 125,537:-1,643:-1,10013:-1,10014:-1 +pay_arche.gat,125,108,1 shop Milk Merchant 90,519:-1 +pay_arche.gat,132,101,1 shop Vegetable Merchant 102,515:-1,516:-1 +pay_arche.gat,140,124,1 shop Butcher 87,517:-1,528:-1 + + +//======================================================= +//PRONTERA +//======================================================= +prontera.gat,73,134,1 shop Milk Merchant 90,519:-1 +prontera.gat,104,49,1 shop Fruit Merchant 102,512:-1,513:-1 +prontera.gat,64,125,1 shop Butcher 87,517:-1,528:-1 +prontera.gat,58,182,1 shop Flower Girl 96,712:-1,744:-1 +prontera.gat,113,42,1 shop Flower Lady 90,712:-1,744:-1 +prontera.gat,105,87,1 shop Gift Merchant 91,734:-1,735:-1,736:-1,737:-1,746:-1 +prontera.gat,218,211,4 shop Pet Merchant 125,537:-1,643:-1,10013:-1,10014:-1 +prontera.gat,248,153,1 shop Doll Merchant 85,740:-1,741:-1,742:-1 +prt_church.gat,108,124,1 shop Nun 79,2608:-1,2216:-1,2323:-1,2325:-1,1501:-1,1504:-1,1507:-1,1510:-1,1513:-1,1519:-1 +prt_fild05.gat,290,221,1 shop Tool Dealer 83,1750:-1,611:-1,501:-1,502:-1,506:-1,601:-1,602:-1,645:-1,656:-1,657:-1 +prt_in.gat,211,169,1 shop Wedding Goods Merchant 71,744:-1,745:-1,2338:-1,2206:-1,7170:-1 +prt_in.gat,126,76,1 shop Tool Dealer 53,611:-1,1750:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1065:-1,2239:-1,645:-1,656:-1,657:-1 +prt_in.gat,172,130,1 shop Weapon Dealer 54,1750:-1,1751:-1,1701:-1,1201:-1,1204:-1,1207:-1,1601:-1,1101:-1,1104:-1,1107:-1,1110:-1,1113:-1,1122:-1,1119:-1,1123:-1,1126:-1,1157:-1,1129:-1,1116:-1,1301:-1 +prt_in.gat,172,132,1 shop Armor Dealer 48,2101:-1,2103:-1,2401:-1,2403:-1,2501:-1,2503:-1,2220:-1,2226:-1,2301:-1,2303:-1,2305:-1,2328:-1,2307:-1,2309:-1,2312:-1,2314:-1 +prt_in.gat,171,140,1 shop Weapon Dealer 47,1401:-1,1404:-1,1407:-1,1451:-1,1454:-1,1457:-1,1460:-1,1463:-1,1410:-1 +//prt_in.gat,56,69,4 shop Miner 48,1010:-1,1011:-1 + +//======================================================= +//TURTLE ISLAND +//======================================================= +tur_dun01.gat,158,54,6 shop Tool Dealer 99,1750:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,645:-1,656:-1,657:-1 +// Spectacles: missing as second item in list +// Luxury Sunglases: not sure of item/price. + +//======================================================= +//UMBALA +//======================================================= +um_in.gat,104,124,3 shop Item Merchant 788,512:15,515:15,535:15,516:15,513:15,517:50,528:60,537:1000,601:60,602:300,645:800,656:1500,610:4000 +um_in.gat,160,125,3 shop Weapon Merchant 789,1501:120,1504:1600,1507:9000,1510:16000,1513:41000,1519:23000,1807:53000,1811:58000,1809:67000 +um_in.gat,151,125,4 shop Armor Merchant 49,2103:-1,2105:-1,2403:-1,2405:-1,2503:-1,2505:-1,2226:-1,2228:-1,2303:-1,2305:-1,2328:-1,2307:-1,2309:-1,2312:-1,2314:-1,2316:-1 +//um_in.gat,159,123,3 shop Weapon Merchant 52,1750:-1,1751:-1,1701:-1,1601:-1,1201:-1,1204:-1,1207:-1,1101:-1,1104:-1,1107:-1,1116:-1,1151:-1,1154:-1,1157:-1,1160:-1,1301:-1 +//um_in.gat,98,124,3 shop Tool Merchant 47,611:-1,501:-1,502:-1,503:-1,504:-1,506:-1,525:-1,601:-1,602:-1,1750:-1,1065:-1 +//um_in.gat,103,124,4 shop Food Merchant 91,515:-1,516:-1,535:-1,519:-1,517:-1 + + +//======================================================= +//YUNO +//======================================================= +yuno.gat,65,122,4 shop Fruit Merchant 93,512:-1,513:-1,515:-1,516:-1 +yuno.gat,217,97,4 shop Tool Dealer 83,611:-1,1750:-1,501:-1,502:-1,503:-1,504:-1,505:-1,506:-1,645:-1,656:-1,601:-1,602:-1 +yuno.gat,226,106,5 shop Trader 97, 909:-1, 911:-1, 910:-1, 912:-1 +yuno.gat,197,115,4 shop Pet Merchant 124, 537:-1, 643:-1, 10013:-1, 10014:-1 +yuno.gat,205,104,4 shop Equip Dealer 84, 2340:-1, 2341:-1, 2411:-1, 2222:-1, 2230:-1; 1721:-1 +yuno.gat,163,187,5 shop Magic Dealer 90,717:-1,1601:-1,1604:-1,1607:-1,1610:-1,2232:-1,2321:-1,2332:-1 +yuno_in01.gat,25,34,4 shop Tool Dealer 83,611:-1,1750:-1,501:-1,502:-1,503:-1,504:-1,505:-1,506:-1,645:-1,656:-1,601:-1,602:-1 +yuno_in01.gat,104,35,4 shop Weapon Dealer 49,1750:-1,1751:-1,1101:-1,1701:-1,1201:-1,1204:-1,1207:-1,1210:-1,1213:-1,1216:-1,1601:-1,1604:-1,1607:-1,1610:-1 +yuno_in01.gat,112,25,5 shop Armor Dealer 101,2628:-1,2101:-1,2107:-1,2401:-1,2501:-1,2230:-1,2301:-1,2303:-1,2305:-1,2321:-1,2332:-1 + + +//======================================================= +// ST. CAPITOLINA ABBEY +//====================================== +//= Monk shop, sells Knuckle weapons) +//======================================================= +prt_monk.gat,135,263,3 shop Blacksmith 726, 1801:8000//Waghnak, 1803:25000//Knuckle Dusters, 1805:32000//Studded Knuckles + |