diff options
Diffstat (limited to 'npc/custom/quests')
23 files changed, 5120 insertions, 0 deletions
diff --git a/npc/custom/quests/bandit_beard.txt b/npc/custom/quests/bandit_beard.txt new file mode 100644 index 000000000..0fba60f2f --- /dev/null +++ b/npc/custom/quests/bandit_beard.txt @@ -0,0 +1,237 @@ +//===== rAthena Script ======================================= +//= Bandit Beard Quest +//===== By: ================================================== +//= Mega Man Expert & Lupus +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= A harmless quest for a simply item w/o any bonuses "Bandit Beard" +//===== Additional Comments: ================================= +//= Fully working. +//= 1.0 First release +//= 1.1 Fixed some exploits, bugs and typos. Optimized 8) [Lupus] +//= 1.1b fixed some typos +//= 1.2 fixed donpcevent label [Lupus] +//= 1.3 Removed duplicates [L0ne_W0lf] +//============================================================ + +umbala,126,129,4 script Bearded Man#bandit 120,{ + if(BEARD_QUEST == 4 ) goto L_MAKE; + if(BEARD_QUEST >= 5 ) goto L_DONE; + if(BEARD_QUEST >= 1 ) goto L_THREAD; + + mes "[Bearded Man]"; + mes "Beards! Get your wonderful beards!"; + mes "Would you like a beard?"; + next; + menu "Yes, I'd like some facial hair!",-,"No thanks, thats gross!",M_NO; + + mes "[Bearded Man]"; + mes "HoHo~ So you want some whiskers."; + emotion 18; + mes "Well I would give you my beards but there not cheap."; + mes "Matter of fact I have only one left..."; + mes "but I'm not selling it."; + mes "But don't get mad! I can make you one."; + next; + set BEARD_QUEST,1; +L_THREAD: + mes "[Bearded Man]"; + mes "I would need some ^8080FFThread^000000 for the Beard."; + mes "Talk to my friend in Izlude for some ^8080FFThread^000000."; + next; + + mes "[Bearded Man]"; + mes "Also I would need you to get me some things for the beard."; + mes "They are:"; +L_LIST: + mes "^8080FFElastic Band^000000"; + mes "^8080FF5 Animal Skins^000000"; + mes "^8080FFBlack Dye Stuff^000000"; + mes "^8080FFGranpa Beard^000000"; + mes "^8080FF100 sticky Mucus^000000"; + mes "^8080FFCounteragent^000000"; + mes " and one ^8080FF2 Carat Diamond^000000"; + close; + +M_NO: + mes "[Bearded Man]"; + mes "Fine, be that way!"; + emotion 7; + close; + +L_DONE: + mes "[Bearded Man]"; + mes "Sorry, I can only make one per person."; + mes "We don't want too many beards now. Right?"; + emotion 29; + close; + +L_MAKE: + mes "[Bearded Man]"; + mes "Let's make you your beard!"; + next; + if(countitem(7200) < 1 || countitem(919) < 1 || countitem(983) < 1 || countitem(2241) < 1 || + countitem(938) < 100 || countitem(973) < 1 || countitem(731) < 1) goto L_NOITEMS; + delitem 7200, 1; + delitem 919, 1; + delitem 983, 1; + delitem 2241, 1; + delitem 938, 100; + delitem 973, 1; + delitem 731, 1; + mes "^8080FF~You see him cutting and sewing the beard together~^000000"; + next; + mes "^8080FF~He hands you the finished beard~^000000"; + next; + getitem 2237, 1; + set BEARD_QUEST, 5; + mes "[Bearded Man]"; + mes "Have a nice day!"; + emotion 29; + close; + +L_NOITEMS: + mes "[Bearded Man]"; + mes "What the hell! I can't make a beard without the items!"; + mes "Here is the list again:"; + emotion 23; + goto L_LIST; +} + +//Master Tailor---------- +izlude_in,123,175,4 script Master Tailor#bandit 50,{ + mes "[Master Tailor]"; + mes "Good evening! I am the Master Tailor!"; + if(BEARD_QUEST != 1 ) close; + + next; + mes "[Master Tailor]"; + mes "What? A Bearded Man sent you..."; + mes "Well I'm sorry to say that I am out of ^8080FFThread^000000."; + mes "But I have the address to where I get the shipments."; + mes "It is in Al de Baran Karfa Inc. warehouse area."; + mes "The address is: Al de Baran 59, 221"; + mes "See you later."; + set BEARD_QUEST, 2; + close; +} +// Karfa Thread Clerk--- +aldeba_in,70,179,5 script Karfa Clerk#bandit 113,{ + mes "[Karfa Clerk]"; + if(BEARD_QUEST == 3 ) goto L_REPEAT; + if(BEARD_QUEST > 3 ) goto L_DONE; + + mes "What can I do for you?"; + next; + if(BEARD_QUEST == 2 ) goto L_DELIVERY; + + menu "What's in the boxes?",-,"Nothing.",M_NOPE; + + mes "[Karfa Clerk]"; + mes "They're empty."; +M_NOPE: + close; + +L_DELIVERY: + + mes "[Karfa Clerk]"; + mes "Sorry but we have not received any ^8080FFThread^000000."; + mes "Our shipments have been put off until its safe."; + mes "You see we get our ^8080FFThread^000000 from Alberta and a monsters keeps attacking our merchants."; + next; + mes "[Karfa Clerk]"; + mes "Now this monsters has not been doing this before."; + mes "It may have to do with the warmer months."; + mes "Please help us out!"; + set BEARD_QUEST,3; + next; + mes "[Karfa Clerk]"; +L_REPEAT: + mes "Oh by the way, that Thread Merchant is somewhere around Alberta 60 and 100..."; +L_DONE: + mes "Thank You!"; + close; +} + +//Thread Merchant ------ +alberta,65,123,6 script Man#bandit 85,{ + if(BEARD_QUEST == 3 && $@beardMobD) goto L_KILLED; + if(BEARD_QUEST > 3) goto L_DONE; + + mes "[Thread Merchant]"; + mes "ARGGG!! I can never get my stuff to Al de Baran!"; + mes "I keep getting mobbed by some bugs."; + mes "They steal all my supplies and ^8080FFThread^000000."; + next; + mes "[Thread Merchant]"; + + if(BEARD_QUEST != 3) mes "What am I to do?"; + if(BEARD_QUEST != 3) close; + + if($@beardmob > 0) mes "Kill! Kill them already!!!"; + if($@beardmob > 0) close; + mes "Are you here to help me?"; + emotion 1; + next; + menu "Yes",-,"No",M_NO; + + mes "[Thread Merchant]"; + mes "Oh thank the Gods!"; + mes "If you can only just kill the bugs I would be able to make my delivery."; + next; + mes "[Thread Merchant]"; + mes "Oh NO! Here they come!!"; + emotion 19; + donpcevent "BRDQ_MOBS::OnStart"; + close; + +L_KILLED: + set $@beardMobD,0; + mes "[Thread Merchant]"; + mes "Thank you for killing the Thief Bugs."; + mes "As a token of my gratitude here is a box full of ^8080FFThread^000000."; + set BEARD_QUEST,4; + close; + +L_DONE: + mes "[Thread Merchant]"; + mes "Thank you again!"; + emotion 15; + close; + +M_NO: + mes "[Thread Merchant]"; + mes "What to do..."; + close; +} + +//mobsummons ------- +alberta,1,1,1 script BRDQ_MOBS -1,{ +OnStart: + set $@beardMob,10; + set $@beardMobD,0; + monster "alberta",65,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,120,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,121,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",66,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",67,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + monster "alberta",68,122,"Thef Bug Male",1054,1,"BRDQ_MOBS::OnDie"; + end; +OnDie: + set $@beardmob, $@beardmob - 1; + if($@beardmob > 0) end; + set $@beardMobD,1; + end; +On1201: +On0001: + set $@beardMob,0; + set $@beardMobD,0; + end; +} diff --git a/npc/custom/quests/berzebub.txt b/npc/custom/quests/berzebub.txt new file mode 100644 index 000000000..cfaf78980 --- /dev/null +++ b/npc/custom/quests/berzebub.txt @@ -0,0 +1,64 @@ +//===== rAthena Script ======================================= +//= Berzebub Card Quest +//===== By: ================================================== +//= jabs +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Quest to get the Berzebub Card +//===== Additional Comments: ================================= +//= 1.1 Fixed ingredients. Was too exploitable [Lupus] +//= 1.2 Optimized. [Euphy] +//============================================================ + +prontera,165,178,8 script Old Woman 103,{ + + setarray .@Items[0],714,25,1061,100,1095,200,618,10,1551,2,1614,1,727,20; + set .@n$,"[Old Woman]"; + + mes .@n$; + if(BerzQuest == 1) { + mes "Hey, I remember you! I already told you that you may only complete this quest once."; + close; } + mes "Greeting, lad. I found a really nifty item while I was picking mushrooms near Glast Heim."; + next; + if(select("Keep Talking:Leave")==2) goto M_Leave; + + mes .@n$; + mes "I have never seen an item like this before. I am told it can be placed inside any accessory with a slot available."; + next; + mes .@n$; + mes "If you're interested in this item, I'll tell you what you need for me to make you one of your own. I can only give one of these to each player, so once you finish this quest, you may not do it again."; + next; + if(select("Tell me more about it:Nah, I don't care about it")==2) goto M_Leave; + + mes .@n$; + mes "I believe the item is called a ^FF0000Berzebub Card^000000. It makes you cast spells really fast!"; + next; + mes .@n$; + mes "I need all of the following items:"; + for(set .@i,0; .@i<getarraysize(.@Items); set .@i,.@i+2) { + mes " ~ "+.@Items[.@i+1]+"x "+getitemname(.@Items[.@i]); + if (countitem(.@Items[.@i]) < .@Items[.@i+1]) set .@nr,1; } + next; + if(select("I have all of that!:I'll get those ASAP")==2) goto M_Leave; + + mes .@n$; + if (.@nr) { + mes "You lie! Get out of here and get those items, you sorry excuse for a rock star."; + close; } + for(set .@i,0; .@i<getarraysize(.@Items); set .@i,.@i+2) + delitem .@Items[.@i], .@Items[.@i+1]; + getitem 4145,1; + set BerzQuest, 1; + mes "Congratulations! You have all the items. Here is your ^FF0000Berzebub Card^000000, as promised."; + emotion e_grat; + close; + +M_Leave: + mes .@n$; + mes "Such a great item I have right here..."; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/dead_branch.txt b/npc/custom/quests/dead_branch.txt new file mode 100644 index 000000000..505da6c0a --- /dev/null +++ b/npc/custom/quests/dead_branch.txt @@ -0,0 +1,104 @@ +//===== rAthena Script ======================================= +//= Dead Branch (+Bloody Branch) Quest +//===== By: ================================================== +//= GM-Yevon +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +// Simple item trade-in quest, a person can get a Dead Branch +// by simply providing the items: Log x3 (7201), Wooden Heart x1 (7189), +// Trunk x5 (1019), and Wooden Gnarl x1 (7222). +//===== Additional Comments: ================================= +//= 1.1 Optimized, added Bloody Branch with 0.01% chance [Lupus] +//============================================================ + +niflheim,204,179,3 script Mister Mobry 121,{ + + mes "[Mister Mobry]"; + mes "Trees possess spirits you know..."; + next; + + mes "[Mister Mobry]"; + mes "In fact I know a secret about these spirits that can in some way... perhaps aid you..."; + next; + + mes "[Mister Mobry]"; + mes "I can create a spirited branch... That is, if you can provide me with the correct materials..."; + next; + goto L_MENU; + +L_MENU: + menu "What Do I Need?",-,"Where Can I find this Crap?",M_FIND,"Make me a Dead Branch!",M_CREATE,"Forget it...",M_END; + + mes "[Mister Mobry]"; + mes "Mwehehe... I see you want to control tree spirits am I right? Ok... I need:"; + mes "^1354453 Logs^000000"; + mes "^1354451 Wooden Heart^000000"; + mes "^1354455 Trunk^000000"; + mes "^1354451 Wooden Gnarl^000000"; + next; + goto L_MENU; + +M_FIND: + mes "[Mister Mobry]"; + mes "You can find the following items from certain monsters heheh..."; + mes "^135445Logs can be found off of Tree Golems.^000000"; + mes "^135445Wooden Hearts the essence of Tree Golems.^000000"; + mes "^135445Trunks? Seriously, think wood...^000000"; + mes "^135445Wooden Gnarl... Gibbet...^000000"; + next; + goto L_MENU; + +L_NOLOG: + mes "[Mister Mobry]"; + mes "^135445Logs^000000 are the body... I need more of them."; + mes "Get me three logs and I'll make you the spirit..."; + close; + +L_NOHEART: + mes "[Mister Mobry]"; + mes "The ^135445Wooden Heart^000000 is the essence of the spirit."; + mes "Get me one wooden heart and I'll make you the spirit..."; + close; + +L_NOTRUNK: + mes "[Mister Mobry]"; + mes "What? You couldn't even find ^1354455 Trunks^000000?"; + mes "Kill Elder Willows or something... Geez... no trunks heh... pathetic."; + close; + +L_NOGNARL: + mes "[Mister Mobry]"; + mes "How can I make one without a ^135445Wooden Gnarl^000000?"; + mes "I said Gibbet... they are all around this place..."; + close; + +M_CREATE: + mes "[Mister Mobry]"; + mes "Well...let us see what you brought me..."; + next; + if(countitem(7201)<3) goto L_NOLOG; + if(countitem(7189)<1) goto L_NOHEART; + if(countitem(1019)<5) goto L_NOTRUNK; + if(countitem(7222)<1) goto L_NOGNARL; + delitem 7201,3; + delitem 7189,1; + delitem 1019,5; + delitem 7222,1; + mes "[Mister Mobry]"; + mes "Heh... Hope you have fun with the tree spirits... Careful now..."; + mes "Heh... careful now? What do I care if you di..... Never mind."; + if(rand(1000)==0) goto L_GIVE2; + getitem 604,1; //Dead Branch + close; +L_GIVE2: + getitem 12103,1; //Bloody Branch + close; + +M_END: + mes "[Mister Mobry]"; + mes "No spirit for you... then go!"; + close; +} diff --git a/npc/custom/quests/elvenear.txt b/npc/custom/quests/elvenear.txt new file mode 100644 index 000000000..c547bf524 --- /dev/null +++ b/npc/custom/quests/elvenear.txt @@ -0,0 +1,68 @@ +//===== rAthena Script ======================================= +//= Daily Job Quest For Elven Ears +//===== By: ================================================== +//= someone +//===== Current Version: ===================================== +//= 1.2 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Elven Ears (require 75+ Base Level) +//===== Additional Comments: ================================= +//= Optimized [Lupus], 1.1 misc fix +//= 1.2 Fixed exploit [Lupus] +//============================================================ + +geffen,127,49,5 script Elven Ears Quest 84,{ + mes "[Elven Ears Quest]"; + mes "Hi, today's quest is...."; + mes "Ah, the ^61B031Elven Ears ^000000Quest!"; + next; + menu "Requirements",L_Bl, "Make Item",-,"Cancel",L_Cancel; + + mes "[Elven Ears quest]"; + mes "Good good, let me just check"; + next; + if(countitem(2213)<1 || countitem(1040)<20 || countitem(919)<20) goto L_NoMake; + delitem 2213,1; + delitem 1040,20; + delitem 919,20; + mes "[Elven Ears quest]"; + mes "Give me a second....."; + next; + getitem 2286,1; + mes "[Elven Ears Quest]"; + mes "Ok done!"; + close; + +L_NoMake: + mes "[Elven Ears Quest]"; + mes "You don't have the requirements."; + mes "Please come back another time..."; + close; + +L_Bl: + mes "[Elven Ears Quest]"; + mes "Ok all you have to do is collect:"; + mes "^362ED61 Kitty Band^000000"; + mes "^362ED620 Elder Pixie Mustaches^000000"; + mes "and ^362ED620 Animal Skin^000000"; + next; + menu "Accept",-, "Leave",L_Leave; + + mes "[Elven Ears Quest]"; + mes "When you are done, bring the items to me. Ok good luck finding those items."; + close; + +L_Leave: + mes "[Elven Ears quest]"; + mes "Maybe another time?"; + close; + +L_Cancel: + mes "[Elven Ears quest]"; + mes "Aw, what a shame"; + mes "Giving up already?"; + mes "Oh well maybe you will participate in tommorow's quest."; + close; +} diff --git a/npc/custom/quests/event_6_new_hats.txt b/npc/custom/quests/event_6_new_hats.txt new file mode 100644 index 000000000..56edaed19 --- /dev/null +++ b/npc/custom/quests/event_6_new_hats.txt @@ -0,0 +1,371 @@ +//===== rAthena Script ======================================= +//= Custom Quest For New Headgears +//===== By: ================================================== +//= RedxSwordxHero, Lupus +//===== Current Version: ===================================== +//= 1.4b +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= 4 brothers give you quests to get 6 new hats (missing +//= from official quests) +//= Use this custom quest instead of event_32_new_hats.txt +//= -Bongun Hat +//= -Poring Hat, Sphinx Hat +//= -Kafra Band, Panda Hat +//= -Crescent Hairpin +//===== Additional Comments: ================================= +//= Event New Hats by RedxSwordxHero +//= Ported and improved with timers [Lupus] +//= Thanks to x[tsk],fixed all item requirements to iRO specs exept +//= for hats which cannot be made on the real server. [Lupus] +//= 1.2 removed already existing official hat quests [Lupus] +//= 1.3 Spiffed up the NPC coords and their appearance [Lupus] +//= 1.4 Fixed exploits. 1.4a fixed wrong item ID [Lupus] +//============================================================ + +prt_in,130,66,5 script Zac 704,{ + mes "[Zac]"; + mes "I am the oldest and strongest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; + next; + mes "[Zac]"; + mes "I provide 1 hat and my brothers provides the other 5."; + next; + menu "Join",L1,"Information",L2,"Cancel",L3; +L1: + mes "[Zac]"; + mes "What hat do you want me to make?"; + next; + menu "Bongun Hat",L1_4; +L1_4: + mes "[Zac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(609) < 10) goto L_ITEM_1c;//Items: Amulet, + if(countitem(978) < 1) goto L_ITEM_2c;//Items: Cobaltblue Dyestuff, + if(countitem(2264) < 1) goto L_ITEM_3c;//Items: Munak Hat, + delitem 609,10;//Items: Amulet, + delitem 978,1;//Items: Cobaltblue Dyestuff, + delitem 2264,1; //Items: Munak Hat, + mes "[Zac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Bongun Hat for you right away. Please Wait a Moment."; + next; + mes "[Zac]"; + mes "Tah Dah! ^FF0000Bongun Hat^000000...! Please Take it!"; + getitem 5046,1;//Items: Bongun Hat, + next; + mes "[Zac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1c: + mes "[Zac]"; + mes "Oh, dear. You need 10 Amulets..."; + close; +L_ITEM_2c: + mes "[Zac]"; + mes "Oh, dear. You need 1 Cobaltblue Dyestuffs..."; + close; +L_ITEM_3c: + mes "[Zac]"; + mes "Oh, dear. You need 1 Munak Hat..."; + close; +L2: + mes "[Zac]"; + mes "Which hat materials do you wish to know?"; + next; + menu "Bongun Hat",L2_4; +L2_4: + mes "[Zac]"; + mes "You need 10 Amulets, 1 Cobaltblue Dyestuffs and 1 Munak Hat for Bongun Hat."; + close; +L3: + mes "[Zac]"; + mes "Stop by some other time with the right materials, so I can make the hats for you."; + close; +} + +prt_in,162,131,5 script Blac 732,{ + mes "[Blac]"; + mes "I am the youngest and sexiest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; + next; + mes "[Blac]"; + mes "I provide 1 hat and my brothers provides the other 5."; + next; + menu "Join",L1,"Information",L2,"Cancel",L3; +L1: + mes "[Blac]"; + mes "What hat do you want me to make?"; + next; + menu "Crescent Hairpin",L1_9; +L1_9: + mes "[Blac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(5041) < 1) goto L_ITEM_1;//Items: Heart Hairpin, + if(countitem(999) < 10) goto L_ITEM_2;//Items: Steel, + delitem 5041,1;//Items: Heart Hairpin, + delitem 999,10; //Items: Steel, + mes "[Blac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Crescent Hairpin for you right away. Please Wait a Moment."; + next; + mes "[Blac]"; + mes "Tah Dah! ^FF0000Crescent Hairpin^000000...! Please Take it!"; + getitem 5048,1;//Items: Cresent Hairpin, + next; + mes "[Blac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1: + mes "[Blac]"; + mes "Oh, dear. You need 1 Heart Hairpin..."; + close; +L_ITEM_2: + mes "[Blac]"; + mes "Oh, dear. You need 10 Steels..."; + close; +L2: + mes "[Blac]"; + mes "Which hat materials do you wish to know?"; + next; + menu "Crescent Hairpin",L2_9; +L2_9: + mes "[Blac]"; + mes "You need 1 Heart Hairpin and 10 Steels for Crescent Hairpin."; + close; +L3: + mes "[Blac]"; + mes "Stop by some other time with the right materials, so I can make the hats for you."; + close; +} + +prt_in,53,56,5 script Jac 107,{ + mes "[Jac]"; + mes "I am the 2nd oldest and calmest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat, so I can make them."; + next; + mes "[Jac]"; + mes "I provide 2 hats and my brothers provides the other 4."; + next; + menu "Join",L1,"Information",L2,"Cancel",L3; +L1: + mes "[Jac]"; + mes "What hat do you want me to make?"; + next; + menu "Kafra Band",L1_19,"Panda Hat",L1_24; +L1_19: + mes "[Jac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(10007) < 1) goto L_ITEM_1b;//Items: Silk Ribbon, + if(countitem(10009) < 1) goto L_ITEM_2b;//Items: Wild Flower, + delitem 10007,1;//Items: Silk Ribbon, + delitem 10009,1; //Items: Wild Flower, + mes "[Jac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Kafra Band for you right away. Please Wait a Moment."; + next; + mes "[Jac]"; + mes "Tah Dah! ^FF0000Kafra Band^000000...! Please Take it!"; + getitem 5020,1;//Items: Kafra's Band, + next; + mes "[Jac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1b: + mes "[Jac]"; + mes "Oh, dear. You need 1 Silk Ribbon..."; + close; +L_ITEM_2b: + mes "[Jac]"; + mes "Oh, dear. You need 1 Wild Flower..."; + close; +L1_24: + mes "[Jac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(999) < 10) goto L_ITEM_1g;//Items: Steel, + if(countitem(948) < 200) goto L_ITEM_2g;//Items: Bears Footskin, + delitem 999,10;//Items: Steel, + delitem 948,200; //Items: Bears Footskin, + mes "[Jac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Panda Hat for you right away. Please Wait a Moment."; + next; + mes "[Jac]"; + mes "Tah Dah! ^FF0000Panda Hat^000000...! Please Take it!"; + getitem 5030,1;//Items: Panda Hat, + next; + mes "[Jac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1g: + mes "[Jac]"; + mes "Oh, dear. You need 10 Steels..."; + close; +L_ITEM_2g: + mes "[Jac]"; + mes "Oh, dear. You need 200 Bear Footskins..."; + close; +L2: + mes "[Jac]"; + mes "Which hat materials do you wish to know?"; + next; + menu "Kafra Band",L2_19,"Panda Hat",L2_24; +L2_19: + mes "[Jac]"; + mes "You need 1 Silk Ribbon and 1 Wild Flower for Kafra Band."; + close; +L2_24: + mes "[Jac]"; + mes "You need 10 Steels and 200 Bear Footskins for Panda Hat."; + close; +L3: + mes "[Jac]"; + mes "Stop by some other time with the right materials, so I can make the hats for you."; + close; +} + +prt_in,45,113,5 script Pac 705,{ + mes "[Pac]"; + mes "I am 3rd oldest and wisest of the 4 brothers that makes all the newer hats. You will need to bring me the correct items for each hat so I can make them."; + next; + mes "[Pac]"; + mes "I provide 2 hats and my brothers provides the other 4."; + next; + menu "Join",L1,"Information",L2,"Cancel",L3; +L1: + mes "[Pac]"; + mes "What hat do you want me to make?"; + next; + menu "Poring Hat",L1_26,"Sphinx Hat",L1_29; +L1_26: + mes "[Pac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(741) < 1) goto L_ITEM_1a;//Items: Poring Doll, + if(countitem(909) < 300) goto L_ITEM_2a;//Items: Jellopy, + delitem 741,1;//Items: Poring Doll, + delitem 909,300;//Items: Jellopy, + mes "[Pac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Poring Hat for you right away. Please Wait a Moment."; + next; + mes "[Pac]"; + mes "Tah Dah! ^FF0000Poring Hat^000000...! Please Take it!"; + getitem 5035,1;//Items: Poring Hat, + next; + mes "[Pac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1a: + mes "[Pac]"; + mes "Oh, dear. You need 1 Poring Doll..."; + close; +L_ITEM_2a: + mes "[Pac]"; + mes "Oh, dear. You need 300 Jellopys..."; + close; +L1_29: + mes "[Pac]"; + mes "Let me check the items you have brought here."; + next; + if(countitem(999) < 25) goto L_ITEM_1d;//Items: Steel, + if(countitem(979) < 1) goto L_ITEM_2d;//Items: Darkgreen Dyestuff, + if(countitem(976) < 1) goto L_ITEM_3d;//Items: Lemon Dyestuffs, + if(countitem(1059) < 150) goto L_ITEM_4d;//Items: Fabric, + if(countitem(969) < 2) goto L_ITEM_5d;//Items: Gold, + delitem 999,25;//Items: Steel, + delitem 979,1;//Items: Darkgreen Dyestuff, + delitem 976,1;//Items: Lemon Dyestuffs, + delitem 1059,150;//Items: Fabric, + delitem 969,2; //Items: Gold, + mes "[Pac]"; + mes "Wow!! Well done! Finally you have gathered all items needed! We will make the Sphinx Hat for you right away. Please Wait a Moment."; + next; + mes "[Pac]"; + mes "Tah Dah! ^FF0000Sphinx Hat^000000...! Please Take it!"; + getitem 5053,1;//Items: Sphinx Hat, + next; + mes "[Pac]"; + mes "I liked that, I look forward to making more. Thank you."; + close; +L_ITEM_1d: + mes "[Pac]"; + mes "Oh, dear. You need 25 Steels..."; + close; +L_ITEM_2d: + mes "[Pac]"; + mes "Oh, dear. You need 1 DarkGreen Dyestuffs..."; + close; +L_ITEM_3d: + mes "[Pac]"; + mes "Oh, dear. You need 1 Lemon Dyestuffs..."; + close; +L_ITEM_4d: + mes "[Pac]"; + mes "Oh, dear. You need 150 Fabric..."; + close; +L_ITEM_5d: + mes "[Pac]"; + mes "Oh, dear. You need 2 Gold Bar's..."; + close; +L2: + mes "[Pac]"; + mes "Which hat materials do you wish to know?"; + next; + menu "Poring Hat",L2_26,"Sphinx Hat",L2_29; +L2_26: + mes "[Pac]"; + mes "You need 1 Poring Doll and 300 Jellopys for Poring Hat."; + close; +L2_29: + mes "[Pac]"; + mes "You need 25 Steels, 1 DarkGreen Dyestuffs, 1 Lemon Dyestuffs, 150 Fabric and 2 Gold Bar's for Sphinx Hat."; + close; +L3: + mes "[Pac]"; + mes "Stop by some other time with the right materials, so I can make the hats for you."; + close; +} + + +//these scripts make our brothers to appear and disappear in order +- script EDZac -1,{ +OnInit: +OnMinute15: + disablenpc "Zac"; + end; +OnMinute01: + if(rand(2)) end; + enablenpc "Zac"; + end; +} + +- script EDJac -1,{ +OnInit: +OnMinute30: + disablenpc "Jac"; + end; +OnMinute16: + if(rand(2)) end; + enablenpc "Jac"; + end; +} + +- script EDPac -1,{ +OnInit: +OnMinute45: + disablenpc "Pac"; + end; +OnMinute31: + if(rand(2)) end; + enablenpc "Pac"; + end; +} + +- script EDBlac -1,{ +OnInit: +OnMinute00: + disablenpc "Blac"; + end; +OnMinute46: + if(rand(2)) end; + enablenpc "Blac"; + end; +} diff --git a/npc/custom/quests/hunting_missions.txt b/npc/custom/quests/hunting_missions.txt new file mode 100644 index 000000000..438444a14 --- /dev/null +++ b/npc/custom/quests/hunting_missions.txt @@ -0,0 +1,277 @@ +//===== rAthena Script ======================================= +//= Hunting Missions +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.2b +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Random hunting missions. +//= Rewards are based on quest difficulty. +//============================================================ + +prontera,152,187,6 script Hunting Missions 951,{ +function Chk; function Cm; + mes "[Hunting Missions]"; + mes "Hello, "+strcharinfo(0)+"!"; + if (!#Mission_Delay) { + next; + mes "[Hunting Missions]"; + mes "I can't find any records..."; + mes "You must be new here!"; + emotion e_omg; + next; + callsub Mission_Info; + emotion e_go; + set #Mission_Delay,1; + close; + } + mes rand(2)?"Working hard, as always...":"Not slacking, I hope..."; + mes "Is there anything I can help"; + mes "you with?"; + mes " "; + mes "^777777~ You've completed ^0055FF"+Mission_Total+"^777777 mission"+((Mission_Total == 1)?"":"s")+". ~^000000"; + next; + switch(select(((!Mission0)?" ~ New Mission::":": ~ Mission Status: ~ Abandon Mission")+": ~ Information: ~ Mission Shop: ~ View Top Hunters: ~ ^777777Cancel^000000")) { + case 1: + mes "[Hunting Missions]"; + if (#Mission_Count) { + mes "You've started a mission"; + mes "on another character."; + close; + } + if (#Mission_Delay > gettimetick(2) && .Delay) { + set .@i, #Mission_Delay-gettimetick(2); + if (.@i > 3600) set .@j$, (.@i/3600)+" hour"+(((.@i/3600) == 1)?"":"s"); + else if (.@i > 60) set .@j$, (.@i/60)+" minute"+(((.@i/60) == 1)?"":"s"); + else set .@j$, (.@i)+" second"+((.@i == 1)?"":"s"); + mes "I'm afraid you'll have to wait "+.@j$+" before taking another mission."; + close; + } + mes "You must hunt:"; + query_sql("SELECT ID FROM mob_db WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 ORDER BY rand() LIMIT "+.Quests, .@mob); + for (set .@i,0; .@i<.Quests; set .@i,.@i+1) { + setd "Mission"+.@i, .@mob[.@i]; + setd "Mission"+.@i +"_",0; + } + set #Mission_Count, rand(.Count[0],.Count[1]); + callsub Mission_Status; + next; + mes "[Hunting Missions]"; + mes "Report back when"; + mes "you've finished."; + mes "Good luck!"; + close; + case 2: + mes "[Hunting Missions]"; + mes "Mission status:"; + callsub Mission_Status; + close; + case 3: + mes "[Hunting Missions]"; + mes "Do you really want to"; + mes "abandon your mission?"; + if (.Delay) mes "Your delay time will not be reset."; + next; + switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) { + case 1: + mes "[Hunting Missions]"; + mes "Alright, I've dropped"; + mes "your current mission."; + specialeffect2 EF_STORMKICK4; + for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { + setd "Mission"+.@i,0; + setd "Mission"+.@i+"_",0; + } + set #Mission_Count,0; + if (.Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600); + close; + case 2: + mes "[Hunting Missions]"; + mes "I knew you were kidding!"; + mes "Keep up the good work."; + emotion e_heh; + close; + } + case 4: + callsub Mission_Info; + close; + case 5: + mes "[Hunting Missions]"; + mes "You have ^0055FF"+#Mission_Points+"^000000 Mission Points."; + mes "Use them well!"; + callshop "mission_shop",1; + npcshopattach "mission_shop"; + end; + case 6: + mes "[Hunting Missions]"; + mes "The top hunters are:"; + query_sql("SELECT char_id AS id, (SELECT `name` FROM `char` WHERE char_id = id),`value` FROM `global_reg_value` WHERE str = 'Mission_Total' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 5",.@id,.@name$,.@val); + for(set .@i,0; .@i<5; set .@i,.@i+1) + mes " [Rank "+(.@i+1)+"] "+((.@name$[.@i] == "")?"^777777none":"^0055FF"+.@name$[.@i]+"^000000 : ^FF0000"+.@val[.@i]+" pt.")+"^000000"; + close; + case 7: + mes "[Hunting Missions]"; + mes "Nothing? Okay..."; + emotion e_hmm; + close; + } + +Mission_Status: + set @f,0; + deletearray .@j[0], getarraysize(.@j); + for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { + set .@j[.@i], getd("Mission"+.@i); + set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]); + set .@j[.Quests+1], .@j[.Quests+1]+(strmobinfo(6,.@j[.@i])/(getbattleflag("base_exp_rate")/100)*.Modifier[0]); + set .@j[.Quests+2], .@j[.Quests+2]+(strmobinfo(7,.@j[.@i])/(getbattleflag("job_exp_rate")/100)*.Modifier[1]); + mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000"; + } + + // Reward formulas: + set .@Mission_Points, 3+(.@j[.Quests]/.Quests/6); + set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5; + set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5; + set .@Zeny, #Mission_Count*.Quests*.@j[.@i]*.Modifier[2]; + + next; + mes "[Hunting Missions]"; + mes "Mission rewards:"; + mes " > Mission Points: ^0055FF"+.@Mission_Points+"^000000"; + mes " > Base Experience: ^0055FF"+Cm(.@Base_Exp)+"^000000"; + mes " > Job Experience: ^0055FF"+Cm(.@Job_Exp)+"^000000"; + mes " > Zeny: ^0055FF"+Cm(.@Zeny)+"^000000"; + if (@f) { set @f,0; return; } + next; + mes "[Hunting Missions]"; + mes "Oh, you're done!"; + mes "Good work."; + mes "Here's your reward."; + emotion e_no1; + specialeffect2 EF_ANGEL; + specialeffect2 EF_TRUESIGHT; + set #Mission_Points, #Mission_Points+.@Mission_Points; + set BaseExp, BaseExp+.@Base_Exp; + set JobExp, JobExp+.@Job_Exp; + set Zeny, Zeny+.@Zeny; + for(set .@i,0; .@i<.Quests; set .@i,.@i+1) { + setd "Mission"+.@i,0; + setd "Mission"+.@i+"_",0; + } + set #Mission_Count,0; + if (.Delay) set #Mission_Delay, gettimetick(2)+(.Delay*3600); + set Mission_Total, Mission_Total+1; + if (Mission_Total == 1) query_sql("INSERT INTO `global_reg_value` (`char_id`,`str`,`value`,`type`,`account_id`) VALUES ("+getcharid(0)+",'Mission_Total','1',3,0)"); + else query_sql("UPDATE `global_reg_value` SET `value` = "+Mission_Total+" WHERE char_id = "+getcharid(0)+" AND `str` = 'Mission_Total'"); + close; + +Mission_Info: + mes "[Hunting Missions]"; + mes "If you so choose, I can assign"; + mes "you a random hunting quest."; + mes "Some are easier than others, but"; + mes "the rewards increase with difficulty."; + next; + mes "[Hunting Missions]"; + mes "Missions points are shared"; + mes "amongst all your characters."; + if (.Delay) mes "Delay time is, too."; + mes "You can't take missions on"; + mes "multiple characters at once."; + next; + mes "[Hunting Missions]"; + mes "You can start a quest"; + if (.Delay) mes "every "+((.Delay == 1)?"hour.":.Delay+" hours."); + else mes "whenever you want."; + mes "That's everything~"; + return; + +function Chk { + if (getarg(0) < getarg(1)) { set @f,1; return "^FF0000"; } + else return "^00FF00"; } + +function Cm { + set .@str$, getarg(0); + for(set .@i,getstrlen(.@str$)-3; .@i>0; set .@i,.@i-3) + set .@str$, insertchar(.@str$,",",.@i); + return .@str$; } + +OnBuyItem: + set @cost,0; + for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) + for(set .@j,0; .@j<getarraysize(.Shop); set .@j,.@j+2) + if (@bought_nameid[.@i] == .Shop[.@j]) { + set @cost, @cost+(.Shop[.@j+1]*@bought_quantity[.@i]); + break; + } + mes "[Hunting Missions]"; + if (@cost > #Mission_Points) mes "You don't have enough Mission Points."; + else { + for(set .@i,0; .@i<getarraysize(@bought_nameid); set .@i,.@i+1) { + getitem @bought_nameid[.@i], @bought_quantity[.@i]; + dispbottom "Purchased "+@bought_quantity[.@i]+"x "+getitemname(@bought_nameid[.@i])+"."; + } + set #Mission_Points, #Mission_Points-@cost; + mes "Deal completed."; + emotion e_cash; + } + set @cost,0; + deletearray @bought_nameid[0], getarraysize(@bought_nameid); + deletearray @bought_quantity[0], getarraysize(@bought_quantity); + close; + +OnNPCKillEvent: + if (!getcharid(1) || !.Party) { + if (!#Mission_Count || !Mission0) end; + for (set .@i, 0; .@i<.Quests; set .@i,.@i+1) { + if (strmobinfo(1,killedrid) == strmobinfo(1,getd("Mission"+.@i))) { + if (getd("Mission"+.@i+"_") < #Mission_Count) { + dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@i+"_"),getd("Mission"+.@i+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,killedrid)+"."; + end; + } + } + } + } else if (.Party) { + set .@mob, killedrid; + getmapxy(.@map1$,.@x1,.@y1,0); + getpartymember getcharid(1),1; + getpartymember getcharid(1),2; + for(set .@i,0; .@i<$@partymembercount; set .@i,.@i+1) { + if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) { + attachrid $@partymemberaid[.@i]; + if (#Mission_Count && Mission0 && HP > 0) { + getmapxy(.@map2$,.@x2,.@y2,0); + if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) { + for(set .@j,0; .@j<.Quests; set .@j,.@j+1) { + if (strmobinfo(1,.@mob) == strmobinfo(1,getd("Mission"+.@j))) { + if (getd("Mission"+.@j+"_") < #Mission_Count) { + dispbottom "[Hunting Mission] Killed "+(set(getd("Mission"+.@j+"_"),getd("Mission"+.@j+"_")+1))+" of "+#Mission_Count+" "+strmobinfo(1,.@mob)+"."; + break; + } + } + } + } + } + } + } + } + end; + +OnInit: + set .Delay,12; // Quest delay, in hours (0 to disable). + set .Quests,4; // Number of subquests per mission (increases rewards). + set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only) + setarray .Count[0], // Min and max monsters per subquest (increases rewards). + 40,70; + setarray .Modifier[0], // Multipliers for Base Exp, Job Exp, and Zeny rewards. + getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60; + setarray .Shop[0], // Reward items: <ID>,<point cost> (about 10~20 points per hunt). + 512,1,513,1,514,1,538,5,539,5,558,10,561,10; + + npcshopdelitem "mission_shop",512; + for(set .@i,0; .@i<getarraysize(.Shop); set .@i,.@i+2) + npcshopadditem "mission_shop", .Shop[.@i], .Shop[.@i+1]; + end; +} +- shop mission_shop -1,512:-1
\ No newline at end of file diff --git a/npc/custom/quests/jewel_case.txt b/npc/custom/quests/jewel_case.txt new file mode 100644 index 000000000..dfa52bdf6 --- /dev/null +++ b/npc/custom/quests/jewel_case.txt @@ -0,0 +1,66 @@ +//===== rAthena Script ======================================= +//= Jewel Case Quest +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= A quest for players at base level 99, +//= with Jewel Case as a reward. +//===== Additional Comments: ================================= +//= +//============================================================ + +lighthalzen,108,229,2 script La Fenn 766,{ + mes "[La Fenn]"; + if(BaseLevel<99) { + if(Q_99LVL) { + mes "You... You got younger!!! But you are defenitely YOU!"; + mes "I couldn't think you were able to meet my condition..."; + emotion e_hmm; + next; + mes "[La Fenn]"; + mes "Here is your prize. It's yours for good."; + set Q_99LVL,0; + getitem 12106,1; //Jewel Case + emotion e_grat; + } else { + mes callfunc("F_Hi"); + mes "..."; + emotion e_yawn; + next; + mes "[La Fenn]"; + mes "I've got a riddle for a strong man of 2nd Class and 99 Base Level."; + mes "*Yawn* If you meet some, please tell them about my riddle."; + } + close; + } + if(BaseLevel==99 && Upper==0) { + if(Q_99LVL) { + mes "Now go forth and get younger!"; + mes "If you solve my riddle, then I'll give you a magical Jewel Case with a rare accessory."; + } else { + mes callfunc("F_Hi")+" The Hero!"; + if(BaseExp<1000000) { + mes "Now you're strong."; + mes "But... not quite strong for my riddle."; + if(rand(2)) { + mes "Kill "+((1000000-BaseExp)/3765+1)+" more Seals and return."; + } else { + mes "Kill "+((1000000-BaseExp)/81+1)+" more Poporings and come back."; + } + } else { + mes "Now you're REALLY strong."; + mes "And if you get younger than now I'll give you my treasure."; + set Q_99LVL,1; + emotion e_no1; + } + } + close; + } + emotion e_hmm; + mes "..."; + close; +} diff --git a/npc/custom/quests/kaho_balmung.txt b/npc/custom/quests/kaho_balmung.txt new file mode 100644 index 000000000..f3a82def4 --- /dev/null +++ b/npc/custom/quests/kaho_balmung.txt @@ -0,0 +1,51 @@ +//===== rAthena Script ======================================= +//= Balmung & Lord Kaho's Horns Quest +//===== By: ================================================== +//= MagicalTux +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom quests for Balmung and Lord Kaho's Horns. +//= WARNING: The quests are very easy, so be careful! +//===== Additional Comments: ================================= +//= 1.1 Cleaned and optimized. [Euphy] +//============================================================ + +prontera,158,356,4 script Royal Messenger 105,{ + + setarray .@Req1[0],1161,999,120,984,10,996,10,994,10,995,10,997,10; + setarray .@Req2[0],5013,2298,1,1001,10,996,10,994,10,995,10,997,10; + + mes "[Royal Messenger]"; + mes "Welcome to Prontera."; + mes "I am the messenger in charge of the Royal Quests."; + next; + if(select("Listen...:Walk away")==2) close; + mes "[Royal Messenger]"; + mes "There are two quests."; + mes "Choose the one you like."; + next; + set .@i, select("Balmung:Lord Kaho's Horns:^777777Never mind.^000000"); + mes "[Royal Messenger]"; + if (.@i==3) { + mes "Have a nice day."; + close; } + mes "You will need the following items:"; + for(set .@j,1; .@j<13; set .@j,.@j+2) { + mes " ~ "+getd(".@Req"+.@i+"["+(.@j+1)+"]")+"x ^0055FF"+getitemname(getd(".@Req"+.@i+"["+.@j+"]"))+"^000000"; + if (!.@nr && countitem(getd(".@Req"+.@i+"["+.@j+"]")) < getd(".@Req"+.@i+"["+(.@j+1)+"]")) set .@nr,1; } + mes " ~ 1,000,000z"; + next; + mes "[Royal Messenger]"; + if (.@nr || Zeny < 1000000) { + mes "Come back when you meet all the requirements."; + close; } + for(set .@j,1; .@j<13; set .@j,.@j+2) + delitem getd(".@Req"+.@i+"["+.@j+"]"), getd(".@Req"+.@i+"["+(.@j+1)+"]"); + set Zeny, Zeny-1000000; + mes "I see you already have all the items you need. Here's your "+getitemname(getd(".@Req"+.@i+"[0]"))+", as promised."; + getitem getd(".@Req"+.@i+"[0]"),1; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/kahohorn.txt b/npc/custom/quests/kahohorn.txt new file mode 100644 index 000000000..697047821 --- /dev/null +++ b/npc/custom/quests/kahohorn.txt @@ -0,0 +1,69 @@ +//===== rAthena Script ======================================= +//= Lord Kaho's Horns Quest +//===== By: ================================================== +//= +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom quest for Lord Kaho's Horns. +//===== Additional Comments: ================================= +//= 1.1 Optimized, and fixed some requirements. [Euphy] +//============================================================ + +geffen,115,107,5 script Lord Kaho's Servant 61,{ + + setarray .@Items[0],7005, 968, 923, 734, 724,2268,7036,7020,5053,7018,741,742,743,750,751,752,753,754; + setarray .@Drops[0],1272,1087,1039,1260,1046,1115,1252,1147,1038,1059; + set .@n$, "[Lord Kaho's Servant]"; + + mes .@n$; + mes "I worked myself to death trying to fulfill Lord Kaho's ridiculous expectations for a headgear!"; + mes "Now that I've finally found the formula for the perfect headgear, I'm willing to share my time and talents."; + next; + mes .@n$; + mes "You need the following to get the Kaho horns:"; + mes "3x ^0055FFEmperium^000000"; + next; + mes .@n$; + mes "Oh yeah..."; + mes "I also forgot to mention these..."; + next; + mes .@n$; + for(set .@i,0; .@i<10; set .@i,.@i+1) + mes "1x ^0055FF"+getitemname(.@Items[.@i])+"^000000 (from "+strmobinfo(1,.@Drops[.@i])+")"; + next; + mes .@n$; + mes "We're not done yet, sweetie..."; + mes "I'm a big fan of dolls, so you need to bring me these cuties!"; + for(set .@i,10; .@i<18; set .@i,.@i+1) + mes "1x ^0055FF"+getitemname(.@Items[.@i])+"^000000"; + next; + mes .@n$; + mes "Finally, I've worked hard to make these horns for my master with all the items mentioned above..."; + mes "Please include ^0055FF5 million Zeny^000000 for my efforts."; + next; + mes .@n$; + mes "Are you ready for me to make this special item?"; + next; + if(select("Sure am!:These requirements are unfathomable!")==2) { + mes .@n$; + mes "What I had to go through was more unfathomable..."; + mes "If you succeed in getting these items, you will have incredible strength!"; + close; } + mes .@n$; + for(set .@i,0; .@i<18; set .@i,.@i+1) + if (!countitem(.@Items[.@i])) { set .@nr,1; break; } + if (.@nr || countitem(714) < 3 || Zeny < 5000000) { + mes "I can't afford to make this if you don't bring all materials needed. Please understand this is to benefit heroes such as yourself!"; + close; } + for(set .@i,0; .@i<18; set .@i,.@i+1) + delitem .@Items[.@i],1; + delitem 714,3; + set Zeny, Zeny-5000000; + mes "Wow! You are brave indeed!"; + getitem 5013,1; + mes "Enjoy being God of Rune-Midgard!"; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/kings_items.txt b/npc/custom/quests/kings_items.txt new file mode 100644 index 000000000..8140827c1 --- /dev/null +++ b/npc/custom/quests/kings_items.txt @@ -0,0 +1,79 @@ +//===== rAthena Script ======================================= +//= Event King Items +//===== By: ================================================== +//= $ephiroth +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Grand Circlet Quest combined with Excalibur Quest. +//===== Additional Comments: ================================= +//= 2006/09/27: 1.0 Release and fully working. [$ephiroth] +//= 1.1 Optimized. [Euphy] +//============================================================ + +prt_castle,80,170,4 script King of Prontera 108,{ + mes "[King of Prontera]"; + mes "Hello, can you help me?"; + next; + if(select("Sure, what can I do?:Sorry, I'm busy.")==2) { + mes "[King of Prontera]"; + mes "Ok, that's fine, I'm sure someone else will help."; + close; } + mes "[King of Prontera]"; + mes "Thank you. Well, my daughter next to me is a little rowdy..."; + mes "If you get her these items I'm sure she'll calm down."; + mes "I'll give you my crown or my sword as a reward."; + next; + setarray .@Items1[0],5007,742,30,741,50,753,20,732,1,710,20,629,20; + setarray .@Items2[0],1137,2254,1,2282,1,714,1; + switch(select("What do you need?:I have the items!:Forget it.")) { + case 1: + for(set .@i,1; .@i<3; set .@i,.@i+1) { + mes "[King of Prontera]"; + mes "If you could get me:"; + for(set .@j,1; .@j<getarraysize(getd(".@Items"+.@i)); set .@j,.@j+2) + mes " ~ ^0055FF"+getd(".@Items"+.@i+"["+(.@j+1)+"]")+"^000000x "+getitemname(getd(".@Items"+.@i+"["+.@j+"]")); + mes "I'll give my "+((.@i)?"sword.":"crown."); + if (.@i==2) close; + next; } + case 2: + mes "[King of Prontera]"; + mes "What item do you want?"; + next; + set .@i, select("Crown:Sword"); + for(set .@j,1; .@j<getarraysize(getd(".@Items"+.@i)); set .@j,.@j+2) + if (countitem(getd(".@Items"+.@i+"["+.@j+"]")) < getd(".@Items"+.@i+"["+(.@j+1)+"]")) set .@nr,1; + mes "[King of Prontera]"; + if (.@nr) { + mes "You're missing something."; + mes "Come back after you get ALL the items."; + close; } + for(set .@j,1; .@j<getarraysize(getd(".@Items"+.@i)); set .@j,.@j+2) + delitem getd(".@Items"+.@i+"["+.@j+"]"), getd(".@Items"+.@i+"["+(.@j+1)+"]"); + getitem getd(".@Items"+.@i+"[0]"),1; + mes "THANK YOU SOO MUCH!!"; + mes "This will surely calm her down."; + mes "As promised, here is my "+((.@i==1)?"crown.":"sword."); + close; + case 3: + mes "[King of Prontera]"; + mes "Ok, that's fine, I'm sure someone else will help."; + close; + } +} + +prt_castle,84,170,4 script King's Daughter 62,{ + mes "[King's Daughter]"; + mes "Hmph, I hate my dad right now!!"; + next; + if(select("Why?:Whatever...")==2) { + mes "[King's Daughter]"; + mes "FINE THEN! Hmph!!"; + close; } + mes "[King's Daughter]"; + mes "Well, he won't give me what I want!!"; + mes "He's the King of Prontera. He should be able to get me ANYTHING!!!"; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/may_hats.txt b/npc/custom/quests/may_hats.txt new file mode 100644 index 000000000..10319ae6a --- /dev/null +++ b/npc/custom/quests/may_hats.txt @@ -0,0 +1,180 @@ +//===== rAthena Script ======================================= +//= Quests: Bird Nest, Lion Mask, Skeleton Manteau, +//= Fashion Hip Sack & Sales Banner +//===== By: ================================================== +//= Lupus +//===== Current Version: ===================================== +//= 1.01 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom quest for some RO mobile game bonus items +//===== Additional Comments: ================================= +//= 1 May, 2006 +//= 1.01 translated the rest of dialogues +//============================================================ + +gonryun,187,140,4 script Yakima 850,{ + mes "[Yakima]"; + mes callfunc("F_Hi"); + mes "I can make some items for you."; + mes "They are quite rare novadays..."; + specialeffect 417; + next; + menu "Bird Nest",-,"Lion Mask",M_2,"Skeleton Manteau",M_3,"Fashion Hip Sack",M_4,"Sales Banner",M_5,"Leave",M_EXIT; + + mes "[Yakima]"; + mes "Oh.. it's an excellent item for any beast hunter."; + emotion e_rock; + next; + mes "[Yakima]"; + mes "For the hat I'll need:"; + mes "1 Sombrero,"; + mes "920 Feathers of Birds and"; + mes "310 Bills of Birds."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(5067) < 1 || countitem(916) < 920 || countitem(925) < 310) GOTO L_NOITEM;//Items: Sombrero, Feather_of_Birds, Bill_of_Birds, + delitem 5067,1;//Items: Sombrero, + delitem 916,920;//Items: Feather_of_Birds, + delitem 925,310;//Items: Bill_of_Birds, + getitem 5129,1;//Items: Bird_Nest, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_2: + mes "[Yakima]"; + mes "Bingo! Many people are afraid of lions... to the muteness..."; + emotion e_slur; + next; + mes "[Yakima]"; + mes "For the hat I'll need:"; + mes "1 Tiger Mask,"; + mes "10 Tiger's Footskins,"; + mes "30 Tiger Skins and"; + mes "300 Tiger Panties."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(5098) < 1 || countitem(1030) < 10 || countitem(1029) < 30 || countitem(7267) < 300) GOTO L_NOITEM;//Items: Tiger_Mask, Tiger_Skin, Tiger's_Footskin, Tiger_Panty, + delitem 5098,1;//Items: Tiger_Mask, + delitem 1030,10;//Items: Tiger's_Footskin, + delitem 1029,30;//Items: Tiger_Skin, + delitem 7267,300;//Items: Tiger_Panty, + getitem 5130,1;//Items: Lion_Mask, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_3: + mes "[Yakima]"; + mes "I wish I sold this filthy manteau faster..."; + mes "Guess it isn't so plain as it looks... Hmm."; + emotion e_wah; + next; + mes "[Yakima]"; + mes "I'm giving it almost for free:"; + mes "10 Old Manteaus,"; + mes "3 Skull Rings,"; + mes "2 Manteau[1] and"; + mes "1 Ragamuffin Manteau."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(2508) < 1 || countitem(2506) < 2 || countitem(2609) < 3 || countitem(7207) < 10) GOTO L_NOITEM;//Items: Ragamuffin_Manteau, Manteau_, Skull_Ring, Old_Manteau, + delitem 2508,1;//Items: Ragamuffin_Manteau, + delitem 2506,2;//Items: Manteau_, + delitem 2609,3;//Items: Skull_Ring, + delitem 7207,10;//Items: Old_Manteau, + getitem 2511,1;//Items: Skeleton_Manteau, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_4: + mes "[Yakima]"; + mes "It's a fresh style! Ancessory and a bag all in one! You'd get +2 STR... It's different from that sabby nest!"; + mes "It fits to Merchant classonly."; + emotion e_heh; + next; + mes "[Yakima]"; + mes "Now my stock is full of those bags... So I'll make it from 3 flower things and a rough piece of clothes:"; + mes "3 Romantic Flowers,"; + mes "3 Fancy Flowers,"; + mes "2 Flower Rings and"; + mes "3 Pirate Bandanas."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(2269) < 3 || countitem(2207) < 3 || countitem(2612) < 2 || countitem(2287)<3 ) GOTO L_NOITEM;//Items: Romantic_Flower, Fancy_Flower, Flower_Ring, + delitem 2269,3;//Items: Romantic_Flower, + delitem 2207,3;//Items: Fancy_Flower, + delitem 2612,2;//Items: Flower_Ring, + delitem 2287,3;//Items: Pirate_Bandana + getitem 2641,1;//Items: Fashion_Hip_Sack, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +M_5: + mes "[Yakima]"; + mes "Well, well, well... this sign fits any class from a certain level!"; + mes "Your foes'd be dazzled!"; + emotion e_no1; + next; + mes "[Yakima]"; + mes "Well... we construct it from some common items:"; + mes "1 Scarlet Dyestuffs,"; + mes "1 Orange Dyestuffs,"; + mes "2 Stop Posts,"; + mes "3 Clown Noses,"; + mes "180 Fig Leaves and"; + mes "20 Solid Peaches."; + next; + mes "[Yakima]"; + mes "Do you have all the items?"; + next; + menu "Yeah.",-,"Nay.",M_EXIT; + + if(countitem(975) < 1 || countitem(980) < 1 || countitem(2272) < 2 || countitem(2262) < 3 || countitem(7298) < 180 || countitem(7164) < 20) GOTO L_NOITEM;//Items: Scarlet_Dyestuff, Orange_Dyestuff, Stop_Post, Clown_Nose, Fig_Leaf, Solid_Peach, + delitem 975,1;//Items: Scarlet_Dyestuff, + delitem 980,1;//Items: Orange_Dyestuff, + delitem 2272,2;//Items: Stop_Post, + delitem 2262,3;//Items: Clown_Nose, + delitem 7298,180;//Items: Fig_Leaf, + delitem 7164,20;//Items: Solid_Peach, + getitem 5100,1;//Items: Sales_Banner, + mes "[Yakima]"; + mes "Thank you very very much!"; + mes callfunc("F_Bye"); + close; + +L_NOITEM: + mes "[Yakima]"; + mes "You are lack of items. Please, get all the items."; + emotion e_sry; + close; + +M_EXIT: + mes "[Yakima]"; + mes callfunc("F_Bye"); + close; +} diff --git a/npc/custom/quests/quest_shop.txt b/npc/custom/quests/quest_shop.txt new file mode 100644 index 000000000..539c29f23 --- /dev/null +++ b/npc/custom/quests/quest_shop.txt @@ -0,0 +1,222 @@ +//===== rAthena Script ======================================= +//= Euphy's Quest Shop +//===== By: ================================================== +//= Euphy +//===== Current Version: ===================================== +//= 1.6 +//===== Compatible With: ===================================== +//= rAthena SVN r16862+ +//===== Description: ========================================= +//= A dynamic quest shop based on Lunar's, with easier config. +//= Includes support for multiple shops & cashpoints. +//= Item Preview script by ToastOfDoom. +//============================================================ + +// Shop NPCs -- supplying no argument displays entire menu. +// callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; +//============================================================ +prontera,164,203,6 script Quest Shop#1 998,{ callfunc "qshop"; } + + +// Script Core +//============================================================ +- script quest_shop -1,{ +function Add; function Chk; function Slot; function A_An; +OnInit: + freeloop(1); + +// ----------------------------------------------------------- +// Basic shop settings. +// ----------------------------------------------------------- + + set .Announce,1; // Announce quest completion? (1: yes / 0: no) + set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) + set .ShowID,0; // Show item IDs? (1: yes / 0: no) + set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) + set .MaxStack,100; // Max number of quest items purchased at one time. + +// ----------------------------------------------------------- +// Points variable -- optional quest requirement. +// setarray .Points$[0],"<variable name>","<display name>"; +// ----------------------------------------------------------- + + setarray .Points$[0],"#CASHPOINTS","Cash Points"; + +// ----------------------------------------------------------- +// Shop IDs -- to add shops, copy dummy data at bottom of file. +// setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; +// ----------------------------------------------------------- + + setarray .Shops$[1],"Headgears","Weapons","Other"; + +// ----------------------------------------------------------- +// Quest items -- do NOT use a reward item more than once! +// Add(<shop ID>,<reward ID>,<reward amount>, +// <Zeny cost>,<point cost>, +// <required item ID>,<required item amount>{,...}); +// ----------------------------------------------------------- + + Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); + Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); + Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); + Add(1,5045,1,0,0,2252,1,1054,450,943,1200); + + Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); + Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); + + Add(3,531,1,3,0,512,1,713,1); + Add(3,532,1,3,0,513,1,713,1); + Add(3,533,1,3,0,514,1,713,1); + Add(3,534,1,3,0,515,1,713,1); + +// ----------------------------------------------------------- + + freeloop(0); + set .menu$,""; + for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { + set .menu$, .menu$+.Shops$[.@i]+":"; + npcshopdelitem "qshop"+.@i,909; + } + end; + +OnMenu: + set .@size, getarraysize(@i); + if (!.@size) set .@i, select(.menu$); + else if (.@size == 1) set .@i, @i[0]; + else { + for(set .@j,0; .@j<.@size; set .@j,.@j+1) + set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; + set .@i, @i[select(.@menu$)-1]; + } + deletearray @i[0],getarraysize(@i); + if (.Shops$[.@i] == "") { + message strcharinfo(0),"An error has occurred."; + end; + } + dispbottom "Select one item at a time."; + callshop "qshop"+.@i,1; + npcshopattach "qshop"+.@i; + end; + +OnBuyItem: + // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } + setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); + copyarray .@q[3],getd(".q_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@q[0])); + set .@q[2],.@q[1]*.@q[3]; + if (!.@q[2] || .@q[2] > 30000) { + message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; + end; + } + mes "[Quest Shop]"; + mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; + mes "Requirements:"; + if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; + if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; + if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) + mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; + next; + setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11); + if (((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512)) && @qe[2] > 0) + set .@preview,1; + addtimer 1000, strnpcinfo(0)+"::OnEnd"; + while(1) { + switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[6])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { + case 1: + if (@qe[0]) { + mes "[Quest Shop]"; + mes "You're missing one or more quest requirements."; + close; + } + if (!checkweight(.@q[0],.@q[2])) { + mes "[Quest Shop]"; + mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0],6))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; + close; + } + if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); + if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); + if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) + delitem .@q[.@i],.@q[.@i+1]*.@q[1]; + getitem .@q[0],.@q[2]; + if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):A_An(getitemname(.@q[0])))+"!",0; + specialeffect2 699; + close; + case 2: + setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), 1; + if (@qe[1] & 1) changelook LOOK_HEAD_BOTTOM, @qe[2]; + if (@qe[1] & 256) changelook LOOK_HEAD_TOP, @qe[2]; + if (@qe[1] & 512) changelook LOOK_HEAD_MID, @qe[2]; + break; + case 3: + close; + } + } + +OnEnd: + if (@qe[6]) { + changelook LOOK_HEAD_BOTTOM, @qe[3]; + changelook LOOK_HEAD_TOP, @qe[4]; + changelook LOOK_HEAD_MID, @qe[5]; + } + deletearray @qe[0],7; + end; + +function Add { + if (getitemname(getarg(1)) == "null") { + debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; + return; + } + setarray .@j[0],getarg(2),getarg(3),getarg(4); + for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { + if (getitemname(getarg(.@i)) == "null") { + debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; + return; + } else + setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); + } + copyarray getd(".q_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); + npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); + return; +} + +function Chk { + if (getarg(0) < getarg(1)) { + set @qe[0],1; + return "^FF0000"; + } else + return "^00FF00"; +} + +function Slot { + set .@s$,getitemname(getarg(0)); + switch(.ShowSlot) { + case 1: if (!getitemslots(getarg(0))) return .@s$; + case 2: if (getiteminfo(getarg(0),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; + default: return .@s$; + } +} + +function A_An { + setarray .@A$[0],"a","e","i","o","u"; + set .@B$, "_"+getarg(0); + for(set .@i,0; .@i<5; set .@i,.@i+1) + if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); + return "a "+getarg(0); +} +} + +function script qshop { + deletearray @i[0],getarraysize(@i); + for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) + set @i[.@i],getarg(.@i); + doevent "quest_shop::OnMenu"; + end; +} + + +// Dummy shop data -- copy as needed. +//============================================================ +- shop qshop1 -1,909:-1 +- shop qshop2 -1,909:-1 +- shop qshop3 -1,909:-1 +- shop qshop4 -1,909:-1 +- shop qshop5 -1,909:-1
\ No newline at end of file diff --git a/npc/custom/quests/questboard.txt b/npc/custom/quests/questboard.txt new file mode 100644 index 000000000..cccbea7ee --- /dev/null +++ b/npc/custom/quests/questboard.txt @@ -0,0 +1,324 @@ +//===== rAthena Script ======================================= +//= tr0n's Questboard +//===== By: ================================================== +//= tr0n +//===== Current Version: ===================================== +//= 1.4.4 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Easily add collection and hunting quests. +//===== Additional Comments: ================================= +// 1.0.0 Release +// 1.1.0 Added zeny reward +// 1.2.0 Rewrote checkmob and killcounter +// 1.3.1 Added level restriction +// 1.3.4 Added Reward Item Amount +// 1.4.4 Added Quest delay +//============================================================ + +prontera,129,215,5 script Questboard 857,{ + + if(c_run==1){ + mes "[^FF7700Questboard^000000]"; + mes "^0000FF"+getd("." + currentquest$ + "_collectionname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_collectionitem")); set .@j,.@j+2) { + mes "^FF0000"+getitemname(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+" - "+countitem(getd("."+currentquest$+"_collectionitem["+.@j+"]"))+"/"+getd("."+currentquest$+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +currentquest$+"_collectionprize"))?getitemname(getd("." +currentquest$+"_collectionprize"))+" - "+getd("." +currentquest$+"_collectionamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +currentquest$+"_collectionzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_collectionexp["+1+"]")+"^000000"; + next; + if(select("Finish:Abort") == 2){ + mes "[^FF7700Questboard^000000]"; + mes "Quest aborted."; + set currentquest$, ""; + set c_run, 0; + close; + } + goto L_checkitems; + } + + if(h_run==1){ + mes "[^FF7700Questboard^000000]"; + mes "^0000FF"+getd("." + currentquest$ + "_huntingname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ currentquest$ + "_huntingmob")); set .@j,.@j+2) { + set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@j)+"]"); + mes "^FF0000"+strmobinfo(1,getd("."+currentquest$+"_huntingmob["+.@j+"]"))+" - "+getd(currentquest$+"_"+.@currentmob+"_"+(.@j+1)+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +currentquest$+"_huntingprize"))?getitemname(getd("." +currentquest$+"_huntingprize"))+" - "+getd("." +currentquest$+"_huntingamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +currentquest$+"_huntingzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +currentquest$+"_huntingexp["+1+"]")+"^000000"; + next; + if(select("Finish:Abort") == 2){ + mes "[^FF7700Questboard^000000]"; + mes "Quest aborted."; + for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){ + set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); + setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); + } + set currentquest$, ""; + set h_run, 0; + close; + } + goto L_checkmobs; + } + +L_questmenu: + mes "[^FF7700Questboard^000000]"; + mes "Select category:"; + next; + + switch(select((.collection)?"Collection Quests":"", + (.hunting)?"Hunting Quests":"", + "Exit")) { + +case 1: + set .@collectmenu$, ""; + for( set .@i,0; .@i < .collectionquestcount; set .@i,.@i+1) { + if (.@i) set .@collectmenu$,.@collectmenu$+":"; + set .@collectmenu$, .@collectmenu$ + "[" + getd("." +(.@i+1)+"_collectionmin") + " - " + getd("." +(.@i+1)+"_collectionmax") + "] " + getd("." + (.@i+1) + "_collectionname$"); + } + set .@selection,select(.@collectmenu$); + if(gettimetick(2) < getd(.@selection + "_collection_delay")){ + set .@time_left, getd(.@selection + "_collection_delay")-gettimetick(2); + mes "[^FF7700Questboard^000000]"; + if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; + if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; + mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; + close; + } + mes "[^FF7700Questboard^000000]"; + mes "^0000FF"+getd("." + .@selection + "_collectionname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_collectionitem")); set .@j,.@j+2) { + mes "^FF0000"+getitemname(getd("."+.@selection+"_collectionitem["+.@j+"]"))+" - "+getd("."+.@selection+"_collectionitem["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +.@selection+"_collectionprize"))?getitemname(getd("." +.@selection+"_collectionprize"))+" - "+getd("." +.@selection+"_collectionamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +.@selection+"_collectionzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +.@selection+"_collectionexp["+1+"]")+"^000000"; + next; + if(select("Accept:Decline") == 2){ + close; + } + if(BaseLevel >= getd("." +.@selection+"_collectionmin") && BaseLevel <= getd("." +.@selection+"_collectionmax")) + { + mes "[^FF7700Questboard^000000]"; + mes "Quest accepted."; + set c_run, 1; + set currentquest$, .@selection; + close; + } + else + { + mes "[^FF7700Questboard^000000]"; + mes "You don't have the required"; + mes "level to do this quest."; + close; + } + +case 2: + set .@huntmenu$, ""; + for( set .@i,0; .@i < .huntingquestcount; set .@i,.@i+1) { + if (.@i) set .@huntmenu$,.@huntmenu$+":"; + set .@huntmenu$, .@huntmenu$ + "[" + getd("." +(.@i+1)+"_huntingmin") + " - " + getd("." +(.@i+1)+"_huntingmax") + "] " + getd("." + (.@i+1) + "_huntingname$"); + } + set .@selection,select(.@huntmenu$); + if(gettimetick(2) < getd(.@selection + "_hunting_delay")){ + set .@time_left, getd(.@selection + "_hunting_delay")-gettimetick(2); + mes "[^FF7700Questboard^000000]"; + if(.@time_left < 60) mes "You have to wait ^0000FF"+.@time_left+" seconds^000000 to do this quest again."; + if(.@time_left < 3600) mes "You have to wait ^0000FF"+.@time_left/60+" minutes^000000 to do this quest again."; + mes "You have to wait ^0000FF"+.@time_left/60/60+" hours^000000 to do this quest again."; + close; + } + mes "[^FF7700Questboard^000000]"; + mes "^0000FF"+getd("." + .@selection + "_huntingname$")+"^000000"; + mes "--------------------------------"; + for( set .@j, 0; .@j < getarraysize(getd("."+ .@selection + "_huntingmob")); set .@j,.@j+2) { + mes "^FF0000"+strmobinfo(1,getd("."+.@selection+"_huntingmob["+.@j+"]"))+" - "+getd("."+.@selection+"_huntingmob["+(.@j+1)+"]")+" ea.^000000"; + } + mes "--------------------------------"; + mes "[Reward]"; + mes "Item: ^0000FF"+((getd("." +.@selection+"_huntingprize"))?getitemname(getd("." +.@selection+"_huntingprize"))+" - "+getd("." +.@selection+"_huntingamount")+" ea.^000000":"Nothing^000000"); + mes "Zeny: ^0000FF"+getd("." +.@selection+"_huntingzeny")+"^000000"; + mes "Base EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+0+"]")+"^000000"; + mes "Job EXP: ^0000FF"+getd("." +.@selection+"_huntingexp["+1+"]")+"^000000"; + next; + if(select("Accept:Decline") == 2){ + close; + } + if(BaseLevel >= getd("." +.@selection+"_huntingmin") && BaseLevel <= getd("." +.@selection+"_huntingmax")) + { + mes "[^FF7700Questboard^000000]"; + mes "Quest accepted."; + set h_run, 1; + set currentquest$, .@selection; + close; + } + else + { + mes "[^FF7700Questboard^000000]"; + mes "You don't have the required"; + mes "level to do this quest."; + close; + } + +case 3: + close; + } + +L_checkitems: + for( set .@k,0; .@k < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@k,.@k+2) { + if(countitem(getd("."+currentquest$+"_collectionitem["+.@k+"]"))>=getd("."+currentquest$+"_collectionitem["+(.@k+1)+"]")){ + set .@checkitem,.@checkitem+2; + } + } + if(.@checkitem<getarraysize(getd("."+currentquest$+"_collectionitem"))){ + mes "[^FF7700Questboard^000000]"; + mes "You don't have everything."; + close; + } + for( set .@delcount,0; .@delcount < getarraysize(getd("."+currentquest$+"_collectionitem")); set .@delcount,.@delcount+2) { + delitem getd("."+currentquest$+"_collectionitem["+.@delcount+"]"),getd("."+currentquest$+"_collectionitem["+(.@delcount+1)+"]"); + } + mes "[^FF7700Questboard^000000]"; + mes "Congratulation! Here is your Reward."; + if(getd("." +currentquest$+"_collectionprize")!=0) getitem(getd("." +currentquest$+"_collectionprize"),getd("." +currentquest$+"_collectionamount")); + set Zeny,Zeny+getd("." +currentquest$+"_collectionzeny"); + getexp getd("." +currentquest$+"_collectionexp["+0+"]"),getd("." +currentquest$+"_collectionexp["+1+"]"); + setd(currentquest$ + "_collection_delay"),gettimetick(2)+.quest_delay; + set currentquest$, ""; + set c_run, 0; + close; + +L_checkmobs: + set .@goal, (getarraysize(getd("."+currentquest$+"_huntingmob"))/2); + for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){ + set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); + if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")==getd("."+currentquest$+"_huntingmob["+.@i+"]")){ + set .@checkmonster, .@checkmonster+1; + if(.@checkmonster==.@goal){ + goto L_checkmobs2; + } + continue; + } + goto L_checkmobs2; + } + +L_checkmobs2: + if(.@checkmonster<.@goal){ + mes "[^FF7700Questboard^000000]"; + mes "You didn't kill everything."; + close; + } + mes "[^FF7700Questboard^000000]"; + mes "Congratulation! Here is your Reward."; + for(set .@x, 1; .@x < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@x,.@x+2){ + set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@x-1)+"]"); + setd(currentquest$+"_"+.@currentmob+"_"+.@x+"_killcount", 0); + } + if(getd("." +currentquest$+"_huntingprize")!=0) getitem(getd("." +currentquest$+"_huntingprize"),getd("." +currentquest$+"_huntingamount")); + set Zeny, Zeny+getd("." +currentquest$+"_huntingzeny"); + getexp getd("." +currentquest$+"_huntingexp["+0+"]"),getd("." +currentquest$+"_huntingexp["+1+"]"); + setd(currentquest$ + "_hunting_delay"),gettimetick(2)+.quest_delay; + set currentquest$, ""; + set h_run, 0; + close; + +OnNPCKillEvent: + if(h_run!=1) end; + for(set .@i, 1; .@i < getarraysize(getd("."+currentquest$+"_huntingmob")); set .@i,.@i+2){ + if(killedrid==getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]")){ + set .@currentmob, getd("."+currentquest$+"_huntingmob["+(.@i-1)+"]"); + if(getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")>=getd("."+currentquest$+"_huntingmob["+.@i+"]")) end; + setd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount", getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+1); + dispbottom getd("."+currentquest$+"_huntingname$")+": ["+strmobinfo(1,.@currentmob)+"] ("+ getd(currentquest$+"_"+.@currentmob+"_"+.@i+"_killcount")+"/"+getd("."+currentquest$+"_huntingmob["+.@i+"]")+")"; + end; + } + continue; + } + end; + +OnInit: + + function AddCollection; + function AddHunting; + + //Activate/Deactive quest categories here + set .collection, 1; + set .hunting, 1; + + //Quest Delay (seconds) + //24 hours = 86400 seconds + set .quest_delay, 0; + + //Checks if quests are loaded (prevents out of index) + if(.questsloaded==1) end; + set .questsloaded, 1; + + //Add Collection Quests here + //AddCollection("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Item ID>,<Item Amount>,...); + + + //Add Hunting Quests here + //AddHunting("<Quest Name>",<Min Lvl>,<Max Lvl>,<Reward|Item ID>,<Reward|Item Amount>,<Zeny Reward>,<Base EXP>,<Job EXP>,<Monster ID>,<Monster Amount>,...); + + end; + + +function AddCollection { + set .collectionquestcount,.collectionquestcount+1; + setd ("." +.collectionquestcount+"_collectionname$", getarg(0)); + setd ("." +.collectionquestcount+"_collectionmin", getarg(1)); + setd ("." +.collectionquestcount+"_collectionmax", getarg(2)); + setd ("." +.collectionquestcount+"_collectionprize", getarg(3)); + setd ("." +.collectionquestcount+"_collectionamount", getarg(4)); + setd ("." +.collectionquestcount+"_collectionzeny", getarg(5)); + set .@argcount, 6; + set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionexp")); + setd ("." +.collectionquestcount+"_collectionexp["+.@size+"]",getarg(.@argcount)); + setd ("." +.collectionquestcount+"_collectionexp["+(.@size+1)+"]",getarg(.@argcount+1)); + set .@argcount, .@argcount+2; + while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) { + set .@size, getarraysize(getd("."+ .collectionquestcount + "_collectionitem")); + setd ("."+.collectionquestcount+"_collectionitem["+.@size+"]",getarg(.@argcount)); + setd ("."+.collectionquestcount+"_collectionitem["+(.@size+1)+"]",getarg(.@argcount+1)); + set .@argcount,.@argcount+2; + } + return; +} + +function AddHunting { + set .huntingquestcount,.huntingquestcount+1; + setd ("." +.huntingquestcount+"_huntingname$", getarg(0)); + setd ("." +.huntingquestcount+"_huntingmin", getarg(1)); + setd ("." +.huntingquestcount+"_huntingmax", getarg(2)); + setd ("." +.huntingquestcount+"_huntingprize", getarg(3)); + setd ("." +.huntingquestcount+"_huntingamount", getarg(4)); + setd ("." +.huntingquestcount+"_huntingzeny", getarg(5)); + set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingexp")); + set .@argcount, 6; + setd ("." +.huntingquestcount+"_huntingexp["+.@size+"]",getarg(.@argcount)); + setd ("." +.huntingquestcount+"_huntingexp["+(.@size+1)+"]",getarg(.@argcount+1)); + set .@argcount, .@argcount+2; + while(getarg(.@argcount,-1)!=-1 && getarg(.@argcount+1,-1)!=-1) { + set .@size, getarraysize(getd("."+ .huntingquestcount + "_huntingmob")); + setd ("."+.huntingquestcount+"_huntingmob["+.@size+"]",getarg(.@argcount)); + setd ("."+.huntingquestcount+"_huntingmob["+(.@size+1)+"]",getarg(.@argcount+1)); + set .@argcount, .@argcount+2; + } + return; +} +} diff --git a/npc/custom/quests/sphinx_mask.txt b/npc/custom/quests/sphinx_mask.txt new file mode 100644 index 000000000..00910428c --- /dev/null +++ b/npc/custom/quests/sphinx_mask.txt @@ -0,0 +1,52 @@ +//===== rAthena Script ======================================= +//= Sphinx Mask Quest (custom) +//===== By: ================================================== +//= sabernet09 +//===== Current Version: ===================================== +//= 1.3 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= This quest is related to Umbalian Chief. +//= 1.1 Removed it from official Umbala quests [Lupus] +//= 1.2 Added a missing variable (sphmask_q) [erKURITA] +//= 1.3 Optimized, and coordinates moved. [Euphy] +//============================================================ + +morocc,208,90,6 script Turban Thief 58,{ + mes "[Turban Thief]"; + if(event_umbala < 2) { + mes "What do you wan te withz me? Be gone!"; + close; } + if(sphmask_q) { + mes "You have no more business with me, go away!"; + close; } + mes "E'llo mah frien, would I interesst tu with this rare mask? Its value I assure you is real mah frien. Tis manific!"; + next; + callsub L_Menu,1,"1,000,000",1000000; + callsub L_Menu,2,"750,000",750000; + callsub L_Menu,3,"500,000",500000; + next; + mes "[Turban Thief]"; + mes "Ack! Forgez it! I can do bettaz en elsez where!"; + set sphmask_q,1; + close; + +L_Menu: + mes "[Turban Thief]"; + switch(getarg(0)) { + case 1: mes "Wah? O ho ho ho, so you know thaz I steal dis from those savages no? Well I won'tz give it back. But I will for a pricez... wat you say?"; break; + case 2: mes "Ahh a business man are you no? Fine, how about..."; break; + case 3: mes "Hmmm... you drive a hard bargain, ok... my final offer..."; break; } + next; + if(select("Pay "+getarg(1)+"z:No deal")==2) return; + mes "[Turban Thief]"; + if (Zeny < getarg(2)) { + mes "Are youz playin wit me? You don't have ze money!"; + close; } + set Zeny, Zeny-getarg(2); + mes "O ho ho, it's a deal, then!"; + getitem 7114,1; + set sphmask_q,1; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/sunglasses.txt b/npc/custom/quests/sunglasses.txt new file mode 100644 index 000000000..fb3353556 --- /dev/null +++ b/npc/custom/quests/sunglasses.txt @@ -0,0 +1,108 @@ +//===== rAthena Script ======================================= +//= Slotted Sunglasses Quest +//===== By: ================================================== +//= amichan +//===== Current Version: ===================================== +//= 1.8 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Quest to get Slotted Sunglasses. +//= Will reset after quest completion. +//===== Additional Comments: ================================= +//= 1.0 by Aegis 1.1 by aichan 1.2 by x[tsk] 1.3 by Darkchild +//= 1.5 Fixed Exploit [Lupus] +//= 1.6 Fixed Exploit [KarLaeda] +//= 1.7 Relocated 'Maseph' to moc_fild07. [Kisuka] +//= 1.8 Cleaning. [Euphy] +//============================================================ + +alberta,88,193,5 script Sunglasses Trader 73,{ + mes "[Sunglasses Trader]"; + if(SG_QUEST1 == 1) { + mes "There is nothing more I can tell you."; + next; + mes "[Sunglasses Trader]"; + mes "Go see Maseph. She is somewhere north of Morroc."; + close; } + mes "Hello. What can I do for you?"; + next; + if(select("I heard that you can make ^0000FFSlotted Sunglasses^000000.:Nothing, sorry to bother you.")==2) { + mes "[Sunglasses Trader]"; + mes "Come back to me than you are ready."; + close; } + mes "[Sunglasses Trader]"; + mes "I do not make them, but I can tell you where to find the person who does. For a small fee..."; + next; + if(select("How much?:No way, I will find her myself!")==2) { + mes "[Sunglasses Trader]"; + mes "Suit yourself, the Maker will not make you ^0000FFSlotted Sunglasses^000000 unless she knows that you are coming."; + mes "Only I can tell her you are coming."; + next; + mes "[Sunglasses Trader]"; + mes "Come back to me when you have given up. Hahaha..."; + close; } + mes "[Sunglasses Trader]"; + mes "In order for me to tell you information on ^0000FFSlotted Sunglasses^000000 you need to get me:"; + mes " - ^0000881 Carat Diamond^000000"; + mes " - ^00008850 Feathers^000000"; + mes " - ^000088100000z^000000"; + next; + if(select("Alright, here.:That's too much!")==2) { + mes "[Sunglasses Trader]"; + mes "Suit yourself."; + close; } + mes "[Sunglasses Trader]"; + if (countitem(730) < 1 || countitem(949) < 50 || Zeny < 100000) { + mes "You're missing something. Come back when you've gathered all the materials."; + close; } + delitem 730,1; + delitem 949,50; + set Zeny, Zeny-100000; + set SG_QUEST1,1; + mes "[Sunglasses Trader]"; + mes "Great. Now, listen carefully."; + next; + mes "[Sunglasses Trader]"; + mes "Look for someone named Maseph somewhere north of Morroc."; + mes "I will send her a message to let her know that you are coming."; + close; +} + +moc_fild07,334,186,5 script Maseph 702,{ + mes "[Maseph]"; + if(SG_QUEST1 != 1) { + mes "Lovely day, isn't it ?"; + close; } + mes "Hello there."; + mes "You came for the ^000088Slotted Sunglasses^000000, right?"; + next; + if(select("Yes:No, sorry to bother you.")==2) { + mes "[Maseph]"; + mes "Off you go, then."; + close; } + mes "[Maseph]"; + mes "To make one, I will need one pair of ^000088Sunglasses^000000 and 400000z."; + next; + if(select("Here you go.:No, thanks.")==2) { + mes "[Maseph]"; + mes "As you wish."; + close; } + mes "[Maseph]"; + if (countitem(2201) < 1) { + mes "I need one pair of ^000088Sunglasses^000000. Come back to me when you have one."; + close; } + if (Zeny < 400000) { + mes "You do not have enough Zeny. Come back to me when you do."; + close; } + delitem 2201,1; + set Zeny, Zeny-400000; + mes "Thank you. I will get on it right away..."; + next; + mes "[Maseph]"; + mes "Here you go, my friend."; + mes "Enjoy your ^000088Slotted Sunglasses^000000."; + getitem 2202,1; + set SG_QUEST1,0; + close; +}
\ No newline at end of file diff --git a/npc/custom/quests/tha_statues.txt b/npc/custom/quests/tha_statues.txt new file mode 100644 index 000000000..fb52d7ed4 --- /dev/null +++ b/npc/custom/quests/tha_statues.txt @@ -0,0 +1,269 @@ +//===== rAthena Script ======================================= +//= Custom Thanatos Tower Quest +//===== By: ================================================== +//= Bibilol, Moryagorn +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Custom Thanatos Tower Quest +//===== Additional Comments: ================================= +//= 1.1 Fixed wrong NPC names in their dialogues, added +//= Justin84's gems check in Sox NPC [Lupus] +//============================================================ + +//Statue (NPC)(U: UP, D: DOWN, R: RIGHT, L: LEFT) : +// Explain Npc +tha_t08,69,106,4 script Statue 111,{ + mes "You can read on the back of the statue:"; + mes "'By the spirit of olds, the walls are closed"; + mes "Upper floors or foreign taboo"; + mes "By the order of the Statues you will find the way"; + mes "Which perhaps a day will bring you to me."; + mes ".....Thanatos '"; + close; +} + +//Tha_t09 : +//(Thalos)(U,L)-->tha_t09,17,158,4 +//(Mediane)(D,R)-->tha_t09,84,99,4 +//Script: + +tha_t09,17,158,4 script Thalos 111,{ + if(TSQ_CHK == 1) goto done; + mes "[Thalos]"; + mes "You must find the 2nd Statue now."; + set TSQ_CHK,1; + close; +done: + mes "[Thalos]"; + mes "Go search the 2nd Statue!"; + close; + +} + +tha_t09,84,99,4 script Mediane 111,{ + if(TSQ_CHK != 1) goto nook; + mes "[Mediane]"; + mes "Okay, i am warping you to the next floor now."; + next; + set TSQ_CHK,0; + warp "tha_t10", 165, 138; + close; +nook: + mes "[Mediane]"; + mes "You must talk with the Spirit in the 1st Statue."; + close; +} + +//Tha_t10 : +//(Melkor)(U)-->tha_t10,130,159,4 +//(Zebrus)(D,R)-->tha_t10,160,98,4 +//(Veriaelle)(D,L)-->tha_t10,99,97,4 +//Script: + +tha_t10,130,159,4 script Melkor 111,{ + if(TSQ_CHK == 1) goto done; + mes "[Melkor]"; + mes "You must find the other Spirits now."; + mes "We are 3."; + set TSQ_CHK,1; + close; +done: + mes "[Melkor]"; + mes "Go Search, They are in this floor."; + close; +} + +tha_t10,160,98,4 script Zebrus 111,{ + if(TSQ_CHK != 1) goto nook; + mes "[Zebrus]"; + mes "Keep on this way, There is one Spirit left"; + set TSQ_CHK,2; + close; +nook: + mes "[Zebrus]"; + mes "You seems to be lost, Go back and talk to Melkor."; + next; + set TSQ_CHK,0; + close; +} + +tha_t10,99,97,4 script Veriaelle 111,{ + if(TSQ_CHK != 2) goto nook; + mes "[Veriaelle]"; + mes "Okay, i am warping you to the next floor."; + next; + set TSQ_CHK,0; + warp "tha_t11", 86, 38; + close; +nook: + mes "[Veriaelle]"; + mes "You seems to be lost, Go back and talk to Melkor."; + next; + set TSQ_CHK,0; + close; +} + +//Tha_t11 : +//(Throtre)(U,L)-->tha_t11,16,85,4 +//(Klermaz)(D,R)-->tha_t11,85,16,4 +//(Mihane)(D,L)-->tha_t11,16,16,4 +//(Seranes)(U,R)-->tha_t11,85,85,4 +//Script: + +tha_t11,16,85,4 script Throtre 111,{ + if(TSQ_CHK == 1) goto done; + mes "[Throtre]"; + mes "You got my authorization for the next floor"; + mes "However, you must show how strong you are to the other Spirits"; + set TSQ_CHK,1; + close; +done: + mes "[Throtre]"; + mes "Go search, They Can't leave this floor."; + close; +} + +tha_t11,85,16,4 script Klermaz 111,{ + if(TSQ_CHK != 1) goto nook; + mes "[Klermaz]"; + mes "Hmm it seems that Throtre allowed you to pass."; + mes "Well then you have my blessing, 2 Spirits remaining."; + set TSQ_CHK,2; + close; +nook: + mes "[Klermaz]"; + mes "You seems to be lost, Go back and talk to Throtre."; + next; + set TSQ_CHK,0; + close; +} + +tha_t11,16,16,4 script Mihane 111,{ + if(TSQ_CHK != 2) goto nook; + mes "[Mihane]"; + mes "Keep on this way, Only 1 Left."; + set TSQ_CHK,3; + close; +nook: + mes "[Mihane]"; + mes "Sorry, You must start over from the begining."; + next; + set TSQ_CHK,0; + close; +} + +tha_t11,85,85,4 script Seranes 111,{ + if(TSQ_CHK != 3 ) goto nook; + mes "[Seranes]"; + mes "Perfect, it seems that the other spirits grants you the access."; + mes "I am warping you to the next floor."; + next; + set TSQ_CHK,0; + warp "tha_t12", 129, 58; + close; +nook: + mes "[Seranes]"; + mes "You did not follow the good order, starts again from the begining."; + next; + set TSQ_CHK,0; + close; +} + +//Tha_t12 ( M: Middle): +//(Nox)(D,L)-->tha_t12,103,18,4 +//(Vox)(R)-->tha_t12,162,58,4 +//(Hox)(L)-->tha_t12,96,57,4 +//(Dox)(D,R)-->tha_t12,153,17,4 +//(Sox)(U)-->tha_t12,128,88,4 +//Script: + +tha_t12,103,18,4 script Nox 111,{ + if(TSQ_CHK == 1 ) goto done; + mes "[Nox]"; + mes "Fine, 4 Spirits left."; + set TSQ_CHK,1; + close; +done: + mes "[Nox]"; + mes "Go search, They can't leave this floor."; + close; +} + +tha_t12,162,58,4 script Vox 111,{ + if(TSQ_CHK != 1 ) goto nook; + mes "[Vox]"; + mes "Keep on this way, 3 Spirits remaining !"; + set TSQ_CHK,2; + close; +nook: + mes "[Vox]"; + mes "Sorry, Go back and talk to Nox."; + next; + set TSQ_CHK,0; + close; +} + +tha_t12,96,57,4 script Hox 111,{ + if(TSQ_CHK != 2 ) goto nook; + mes "[Hox]"; + mes "You are on the good way, 2 Spirits remaining !"; + set TSQ_CHK,3; + close; +nook: + mes "[Hox]"; + mes "Sorry, Go back and talk to Vox."; + next; + set TSQ_CHK,0; + close; +} + +tha_t12,153,17,4 script Dox 111,{ + if(TSQ_CHK != 3 ) goto nook; + mes "[Dox]"; + mes "Perfect, 1 Spirit left."; + set TSQ_CHK,4; + close; +nook: + mes "[Dox]"; + mes "Sorry, Go back and talk to Hox."; + next; + set TSQ_CHK,0; + close; +} + +tha_t12,128,88,4 script Sox 111,{ + if(TSQ_CHK != 4 ) goto nook; + mes "[Sox]"; + mes "You have just passed the test successfully."; + next; + mes "[Sox]"; + mes "You have to give me Red Magic Stone, Yellow Magic Stone, Blue Magic Stone & Green Magic Stone."; + next; + if(countitem(7426) < 1 || countitem(7427) < 1 || countitem(7428) < 1 || countitem(7429) < 1) goto nostone; + delitem 7426,1; + delitem 7427,1; + delitem 7428,1; + delitem 7429,1; + mes "[Sox]"; + mes "I will now warp you to steps of Fate."; + mes "Good-bye."; + next; + set TSQ_CHK,0; + warp "thana_step", 186, 223; + close; + +nostone: + mes "[Sox]"; + mes "Oh well, seems you don't have enough stones."; + close; + +nook: + mes "[Sox]"; + mes "Sorry, Go back and talk to Dox."; + next; + set TSQ_CHK,0; + close; +} diff --git a/npc/custom/quests/thq/THQS_ChatingNPC.txt b/npc/custom/quests/thq/THQS_ChatingNPC.txt new file mode 100644 index 000000000..55971e51f --- /dev/null +++ b/npc/custom/quests/thq/THQS_ChatingNPC.txt @@ -0,0 +1,95 @@ +//===== rAthena Script ======================================= +//= Treasure Hunter Quests +//===== By: ================================================== +//= Fredzilla +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Start for Treasure hunter quests +//===== Additional Comments: ================================= +//= Event_THQS - Used to check if you have already registered +//= #Treasure_Token - used to keep track of tokens +//============================================================ + +//Entrance Flags +yuno,48,101,6 script Notice 722,{ + mes "^FF0000[ Treasure Hunter Guild House ]^000000"; + mes " "; + mes "Welcome to the Treasure Hunter's Guild House."; + mes "Feel free to drop in and look around"; + mes "and feel free to become a memeber if you wish."; + mes " "; + mes "For membership applications please talk to Keegan"; + mes "up the stairs and down the hall."; + close; +} +//Saver Girl; +yuno_in01,32,178,3 script Ahlma 94,{ + mes "[Ahlma]"; + if (Event_THQS == 0) goto N_Member; + mes "Welcome to The Treasure Hunter Guild."; + mes "How may I help you?"; + next; + menu "Save",-,"Quit",N_Quit; + mes "[Ahlma]"; + mes "Ok, saved. Thank you ~ See you soon~"; + savepoint "yuno_in01",34,176; + close; +N_Quit: + mes "[Ahlma]"; + mes "Well if you think you are safe, good on you."; + close; +N_Member: + mes "Sorry, members only."; + close; +} +//Retired Smile mask girl; +yuno_in01,33,162,3 script Smile Helper 92,{ + mes "[Smile Gal]"; + mes "Oh man...I am so sick of"; + mes "trading Mr. Smile masks for crap."; + mes " "; + mes "You ask me for one and you'll find yourself 10 pounds lighter!"; + close; +} +//Usless Female Assasin; +yuno_in01,22,162,6 script Female Assasin 725,{ + mes "[Sharlet]"; + if (Event_THQS > 0) goto N_Member; + mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; + close; +N_Member: + set @TEMP,rand(1,2); + if (@TEMP == 1) goto N_Chat1; + if (@TEMP == 2) goto N_Chat2; + mes "How are you reading this???"; + mes "Well unless you are reading the code :)"; + close; +N_Chat1: + mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(0)+"."; + mes "Did you hear about that brave man that went into Glast Heim alone?! He must be crazy."; + close; +N_Chat2: + mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest."; + close; +} +//another usless member +yuno_in01,25,162,6 script Female Wizard 123,{ + mes "[Sasha]"; + if (Event_THQS > 0) goto N_Member; + mes "Umm sorry I'm not gona waste my time talking to you if you arn't even a member!"; + close; +N_Member: + set @TEMP,rand(2); + if (@TEMP == 1) goto N_Chat; + mes "Ahh welcome fellow Treasure Hunter "+strcharinfo(0)+"."; + mes "Did you hear about that goat man running around in the trees?"; + mes " "; + mes "Aperently his name is Baphomet and he has been runing around the Forest Maze out side of prontera for quite some time now."; + close; +N_Chat: + mes ""+strcharinfo(0)+" don't you have something better you could be doing? Like a quest."; + close; +} diff --git a/npc/custom/quests/thq/THQS_GuildNPC.txt b/npc/custom/quests/thq/THQS_GuildNPC.txt new file mode 100644 index 000000000..b5bbf5d28 --- /dev/null +++ b/npc/custom/quests/thq/THQS_GuildNPC.txt @@ -0,0 +1,86 @@ +//===== rAthena Script ======================================= +//= Treasure Hunter Quests +//===== By: ================================================== +//= Fredzilla +//===== Current Version: ===================================== +//= 1.0 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Start for Treasure hunter quests +//===== Additional Comments: ================================= +//= Event_THQS - Used to check if you have already registered +//= #Treasure_Token - used to keep track of tokens +//============================================================ + +yuno_in01,124,164,6 script Guild Leader 108,{ + mes "[Keegan]"; + mes "What brings you here? Have something to say?"; + next; + menu "I want to be a Treasure Hunter",-,"Take a New Quest.",N_NQuest,"Take me to the Official Shop.",N_OShop,"Nevermind.",N_NVM; + if(Event_THQS==1) goto N_AlreadyReg; + mes "[Keegan]"; + mes "Well "+strcharinfo(0)+" if you want to be a Treasure Hunter first you must."; + mes " "; + mes "^FF00001.^000000 You well be changed ^FF000025,000z^000000 for basic training and your proof of being a member."; + mes " "; + mes "Umm... Well that is all you need to do. Hahaha."; + next; + menu "Pay ^FF000025,000z^000000.",-,"Thats way to high!!",N_HighPrice; + if (zeny < 25000) goto N_NoZeny; + set Zeny,Zeny-25000; + //getitem 7950, 1; + //getitem 7951, 1; + set Event_THQS,1; + mes "[Keegan]"; + mes "Congratulations!"; + emotion 46; + next; + mes "[Keegan]"; + mes "Welcome to the Guild of Treasure Hunters."; + mes "You may now take a Treasure Hunting Quest as you see fit."; + close; +N_NoZeny: + mes "[Keegan]"; + mes "Hmmm you don't seem to have ^FF000025,000z^000000 "+strcharinfo(0)+". Please come back when you do."; + close; +N_HighPrice: + mes "[Keegan]"; + mes "Well if you can't afford a small ^FF000025,000z^000000 you shouldent be a Treasure Hunter yet."; + close; +N_AlreadyReg: + mes "[Keegan]"; + mes "Ha ha ha...you are already a member."; + close; +N_NQuest: + if (Event_THQS!=1) goto A_NeedReg; + mes "[Keegan]"; + mes "Well "+strcharinfo(0)+" if you wish to take a quest go talk to the fellow Treasure Hunter in the other room there."; + close; +A_NeedReg: + mes "[Keegan]"; + mes "Sorry you must be a member of the Treasure Hunter Guild if you wish to take a quest."; + mes " "; + mes "Also now that you are a member feel free to use our shops anytime you wish.They are all located on this floor."; + mes " "; + mes "We also have another shop for members only,in which we use little metal diamonds called Treasure Hunter Tokens to exchange for rare goods."; + mes " "; + mes "You will even have access to our exclusive personal Dungeon."; + close; +N_OShop: + if (Event_THQS!=1) goto N_NeedMem; + mes "[Keegan]"; + mes "Yes "+strcharinfo(0)+" I will take you to our shop right away!"; + next; + warp "prt_in",166,171; + close; + end; +N_NeedMem: + mes "[Keegan]"; + mes "Im sorry only members may visit our private shop."; + close; +N_NVM: + mes "[Keegan]"; + mes "Alright come back when you have the free time to spare."; + close; +} diff --git a/npc/custom/quests/thq/THQS_QuestNPC.txt b/npc/custom/quests/thq/THQS_QuestNPC.txt new file mode 100644 index 000000000..6a3b33699 --- /dev/null +++ b/npc/custom/quests/thq/THQS_QuestNPC.txt @@ -0,0 +1,554 @@ +//===== rAthena Script ======================================= +//= Treasure Hunter Quests +//===== By: ================================================== +//= Fredzilla +//===== Current Version: ===================================== +//= 1.4 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Start for Treasure hunter quests +//===== Additional Comments: ================================= +//= Event_THQS - Used to check if you have already registered +//= #Treasure_Token - used to keep track of tokens +//= 1.0 - Straight conversionof Aegis NPC file +//= 1.1 Added time penalty to prevent get quests to often [Lupus] +//= 1.2 Fixed not working penalty, added anti-cheat [Lupus] +//= 1.3 Changed some bad RGB Codes. (bugreport:211) [Samuray22] +//= 1.4 Fixed typos. (bugreport:2607) [Kisuka] +//============================================================ + +yuno_in01,112,151,6 script Quest Manager 62,{ + mes "[Guy]"; + mes "Welcome to the Treasure Hunters Guild "+strcharinfo(0)+"."; + next; + if (On_Quest == 0) goto N_NewQuest; + mes "[Guy]"; + mes "Look " +strcharinfo(0)+ ", you can only 1 quest at a time, you should finish the quest unless you have given up."; + mes "Giving up will cost you ^FF00002500z^000000."; + next; + menu "No, never would I leave a quest!",-,"Yah I'm pathetic... Pay 2500z",N_PayZeny; + mes "[Guy]"; + mes "Good well get back out there."; + close; +N_PayZeny: + if (zeny < 2500) goto N_ZenyFail; + set one_qset, 0; + set two_qset, 0; + set three_qset, 0; + set four_qset, 0; + set five_qset, 0; + set six_qset, 0; + set seven_qset, 0; + set eight_qset, 0; + set nine_qset, 0; + set ten_qset, 0; + set On_Quest, 0; + set Zeny,Zeny-2500; + //add time delay penalty. You can get another quest after 2 - 3 hours. [Lupus] + set #THQ_DELAY, (GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3)+rand(2,3)); + mes "[Guy]"; + mes "Its sad to see someone give a quest up..."; + mes "Shame on you."; + emotion 7; + close; + +N_ZenyFail: + mes "[Guy]"; + mes "Thats sad you don't even have ^FF00002500z^000000."; + close; + +N_NewQuest: + if (Event_THQS == 0) goto N_Signup; + //checking if time penalty is over [Lupus] + if (#THQ_DELAY > (GetTime(7)*12*31*24 + GetTime(6)*31*24 + GetTime(5)*24 + GetTime(3)) ) goto L_NoQuestsForYet; + mes "[Guy]"; + mes "Ahh welcome fellow Treasure Hunter."; + mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; + mes "Would you like me to asign you a Quest?"; + next; + menu "Yes I would like a Quest Please.",-,"Sorry Guy no time today.",N_NoTime; + + mes "[Guy]"; + mes "Ok lets see what quest we can give you today."; + mes "The quest names in ^FF0000This Colour^000000 mean that they are more challanging then the rest, but have better rewards."; + next; + set #THQ_DELAY,(GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3) + 1); //you can get another quest after 1 hour [Lupus] + emotion 21; + if(@treasure_job==0) set @treasure_job,rand(1,10); //doesn't allow cheaters to pick any quest they want + if(@treasure_job==2) goto N_JobList2; + if(@treasure_job==3) goto N_JobList3; + if(@treasure_job==4) goto N_JobList4; + if(@treasure_job==5) goto N_JobList5; + if(@treasure_job==6) goto N_JobList6; + if(@treasure_job==7) goto N_JobList7; + if(@treasure_job==8) goto N_JobList8; + if(@treasure_job==9) goto N_JobList9; + if(@treasure_job==10) goto N_JobList10; + goto N_JobList1; //if(@treasure_job==1) + +N_NoTime: + mes "[Guy]"; + mes "Alright maybe next time "+strcharinfo(0)+"."; + emotion 20; + close; + +N_Signup: + mes "[Guy]"; + mes "I'm afraid you must sign up for the guild before you can go on a quest!"; + emotion 17; + close; + +L_NoQuestsForYet: + mes "[Guy]"; + mes "I'm afraid there aren't any Quests for you yet."; + mes "Call in "+ (#THQ_DELAY - (GetTime(7)*12*31*24+GetTime(6)*31*24+GetTime(5)*24+GetTime(3)) )+" hours later."; + emotion 17; + close; + +L_QuestGiven: + set On_Quest,1; + set @treasure_job,0; //next time u get random quest + close; + +///////Job list 1/////// +N_JobList1: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Lost Old Man.",-,"Master needs his Bow.",N_MasterBow,"The Hit List.",N_HitList,"^FF0000The Sad Widow.^000000",N_SadWidow; + mes "[Guy]"; + mes "^FF0000Lost Old Man^000000"; + mes "^FF0000------------^000000"; + mes "This is an easy and low payed quest."; + mes " "; + mes "A wife came in asking us to find his husband, she seems to come in alot asking us to find him over and over again."; + next; + mes "[Guy]"; + mes "But he always seems to be around the same place so there isn't much looking involved,check the mountains 1 west and 1 north of prontera."; + set one_qset,1; + goto L_QuestGiven; + +N_MasterBow: + mes "[Guy]"; + mes "^FF0000Master needs his Bow^000000"; + mes "^FF0000--------------------^000000"; + mes "This is just a package delivery run, no big deal or anything."; + mes " "; + mes "Take this to an archer in the Archer Village outside of Payon."; + getitem 1072,1; //Delivery_Box + set one_qset,2; + goto L_QuestGiven; + +N_HitList: + mes "[Guy]"; + mes "^FF0000The Hit List^000000"; + mes "^FF0000------------^000000"; + mes "In this quest you get to see some action."; + mes " "; + mes "There has been a farmer that keeps having all his crops eaten by ^FF0000Thief Bugs, Porings, and Lunitics^000000 here is a lost of what I need you to do. He is waiting East of Prontera."; + next; + mes "[Guy]"; + mes "Ok go to the east and bash those little bastards like there is no tommorow. When you are done with that list you have just discard it, but you will NOT get another one!."; + set one_qset,3; + goto L_QuestGiven; + +N_SadWidow: + mes "^FF0000The Sad Widow^000000"; + mes "^FF0000*************^000000"; + mes "This is just another quest with possable well pay."; + mes " "; + mes "There is an old Widow in pontera, she recently lost her husband due to a monster attack.She has requested a Guild member to come talk to her at the Pontera Graveyard."; + set one_qset,4; + goto L_QuestGiven; + +///////Job list 2/////// +N_JobList2: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "The Strange Letter",-,"Jur for Jeramiah",N_JurJeramiah,"Bee Keepers Hunny",N_BeeHunny,"^FF0000The Wander Man^000000",N_WanderMan; + + mes "^FF0000The Strange Letter^000000"; + mes "^FF0000------------------^000000"; + mes "I do not know much about this quest."; + mes " "; + mes "A strange man came in here yesterday and asked me to deliver this ^FF0000Strange Letter^000000 to some woman in Morroc. Knowing us we do not ask questions so you must take care of this delivery."; + mes "The Woman is in located in Morroc and her name is Erika."; + getitem 1072,1; //Delivery_Message + set two_qset, 1; + goto L_QuestGiven; + +N_JurJeramiah: + mes "^FF0000Jur for Jeramiah^000000"; + mes "^FF0000----------------^000000"; + mes "Standard delivery quest."; + mes " "; + mes "Jeramiah ordered a Special Jur from our weapon shop.Your Job is to deliver it to him in the Assasin Temple."; + getitem 1998,1; //Jeramiah's_Jur + set two_qset,2; + goto L_QuestGiven; + +N_BeeHunny: + mes "^FF0000Bee Keepers Hunny^000000"; + mes "^FF0000-----------------^000000"; + mes "Strange man in the marsh need your help."; + mes " "; + mes "There is a strange man in the forest in ^FF00001 south and 1 west^000000 of Prontera, he need your help with something."; + set two_qset,3; + goto L_QuestGiven; + +N_WanderMan: + mes "^FF0000The Wander Man^000000"; + mes "^FF0000**************^000000"; + mes "There is a woman in Payon that is in desperate for aid."; + mes " "; + mes "There is a woman in Payon named Molly please get to her as soon as possable the letter she sent here sounded like someone was killing her."; + set two_qset,4; + goto L_QuestGiven; + +///////Job list 3/////// +N_JobList3: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Damn Pixies!",-,"Package Delivery",N_Delivery1,"Prontera Culvert",N_ProntCulvert,"^FF0000Trouble at the Coal Mine^000000",N_CoalMine; + mes "^FF0000Damn Pixies!^000000"; + mes "^FF0000------------^000000"; + mes "Have you ever been to Hell?"; + mes " "; + mes "A man outside of ^FF0000Ant Hell^000000 has requested your audiance, I suggest you hurry."; + set three_qset,1; + goto L_QuestGiven; + +N_Delivery1: + mes "^FF0000Package Delivery^000000"; + mes "^FF0000----------------^000000"; + mes "Standard drop off quest."; + mes " "; + mes "In this quest you need to deliver a mystery box to someone names ^FF0000Flank at the bridge between Aldebaran and Juno^000000."; + getitem 1082,1; //Delivery_Box_ + set three_qset,2; + goto L_QuestGiven; + +N_ProntCulvert: + mes "^FF0000Prontera Culvert^000000"; + mes "^FF0000----------------^000000"; + mes "The bugs,They are everywere!."; + mes " "; + mes "The ^FF0000Prontera Culvert^000000 is out of control!Sign up as a volenteer to clean out some of the culvert."; + next; + mes "I know it seems like there is no stoping them but however many you kill does makes a differance. After you have signed up, inside the Culvert there will be a Knight that will give you a quest."; + set three_qset,3; + goto L_QuestGiven; + +N_CoalMine: + mes "^FF0000Trouble at the Coal Mine^000000"; + mes "^FF0000************************^000000"; + mes "The fun...err...trouble never stops in Rune Midgar."; + mes " "; + mes "Recently there was an acident at the coal mines. There was a huge chasm that released some undead Evil Druids."; + next; + mes "The Evil Druids started to turn all the workers into the undead. We do not know why, but we do not want to find out, contact a man named Rudolfo outside the Coal Mines."; + set three_qset,4; + goto L_QuestGiven; + +///////Job list 4/////// +N_JobList4: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Zombie Attack",-,"Mystic Wizard",N_MWizard,"Aww shoot!",N_Shoot,"^FF0000Emperium^000000",N_Emp; + mes "^FF0000Zombie Attack^000000"; + mes "^FF0000-------------^000000"; + mes "The undead have invaded Payon Cave!"; + mes " "; + mes "I remember when Payon Cave used to be a safe place to visit, but now undead Zombies have infested the cave! Please contact ^FF0000Flora outside on Payon Cave^000000 and aid her."; + set four_qset,1; + goto L_QuestGiven; + +N_MWizard: + mes "^FF0000Mystic Wizard^000000"; + mes "^FF0000-------------^000000"; + mes "Proto-type of a Staff must be delivered to Zed the Wizard."; + mes " "; + mes "Zed the Wizard has requested to try out a new un-named proto-type staff. It will be your job to deliver this to him. Zed tend to stay within the general area of Juno."; + getitem 1999,1; //Zed's_Staff + set four_qset,2; + goto L_QuestGiven; + +N_Shoot: + mes "^FF0000Aww shoot!^000000"; + mes "^FF0000----------^000000"; + mes "A little girl is in trouble."; + mes " "; + mes "There is a little girl in trouble, her name is Dassy and she is ^FF0000east of the prontera fountan^000000."; + set four_qset,3; + goto L_QuestGiven; + +N_Emp: + mes "^FF0000Emperium^000000"; + mes "^FF0000********^000000"; + mes "This is a strange quest that I know little about."; + mes " "; + mes "Someone in ^FF0000Prontera Guild Hall^000000 has requested to see one of our members, his name is Czhore."; + set four_qset,4; + goto L_QuestGiven; + +///////Job list 5/////// +N_JobList5: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Savage Land",-,"Pyramid's part 1",N_PyrPRT1,"Thinking first",N_Thinkfirst,"^FF0000The not so friendly ghost^000000",N_Ghost; + mes "^FF0000Savage Land^000000"; + mes "^FF0000-----------^000000"; + mes "Easy for some very hard for others."; + mes " "; + mes "A man named Lithin wish's to give you a quest, you can find him north of prontera inside of ^FF0000The Hidden Temple^000000"; + set five_qset,1; + goto L_QuestGiven; + +N_PyrPRT1: + mes "^FF0000Pyramid's^000000"; + mes "^FF0000---------^000000"; + mes "Its funny cause no one knows how these were really made."; + mes " "; + mes "Aperently the Pyramids have are beganing to be infested with undead activity,outside the pyramids a man will be waiting for you. He did no give us his name but he asked for you to hurry."; + set five_qset,2; + goto L_QuestGiven; + +N_Thinkfirst: + mes "^FF0000Thinking first^000000"; + mes "^FF0000--------------^000000"; + mes "This sounds like another one of those ditzy girl quests..."; + mes " "; + mes "Dazzy the local blond around Geffen has asked for you to deliver her these flowers. I don't know why someone would send flowers to herself..."; + getitem 744,1; //Bouquet + set five_qset,3; + goto L_QuestGiven; + +N_Ghost: + mes "^FF0000The not so friendly ghost^000000"; + mes "^FF0000*************************^000000"; + mes "Well no one ever said Casper was nice behind the sceens."; + mes " "; + mes "A wizard on the 3rd floor of geffen tower want's to talk to you about the anchient ruins underneath the city."; + set five_qset,4; + goto L_QuestGiven; + +///////Job list 6/////// +N_JobList6: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Package for thiefs",-,"Pyramid's part 2",N_PyrPRT2,"Special delivery",N_Delivery2,"^FF0000Geffenia^000000",N_Gef; + mes "^FF0000Package for thiefs^000000"; + mes "^FF0000------------------^000000"; + mes "How ironic."; + mes " "; + mes "Deliver this Box to the Thiefs guild."; + getitem 1083,1; //Delivery_Box__ + set six_qset,1; + goto L_QuestGiven; + +N_PyrPRT2: + mes "^FF0000Pyramid's part 2^000000"; + mes "^FF0000----------------^000000"; + mes "More undead action in this triangle!"; + mes " "; + mes "Talk to a man outside the entrance of the pyramids, he seems to have another quest for you."; + set six_qset,2; + goto L_QuestGiven; + +N_Delivery2: + mes "^FF0000Special delivery^000000"; + mes "^FF0000----------------^000000"; + mes "Well most of what we do is run packages, this is no different from other's."; + mes " "; + mes "Take this box, DO NOT OPEN IT! To a little girl in Lutie named Chirach she should be around santa."; + getitem 1083,1; //Delivery_Box__ + set six_qset,3; + goto L_QuestGiven; + +N_Gef: + mes "^FF0000Geffenia^000000"; + mes "^FF0000********^000000"; + mes "The little children of Geffen have been haveing strange nightmares."; + mes " "; + mes "We belive that the ruins underneath geffen are causeing this problem, talk to a Wizard named Zuuzuu inside Geffen Tower for your mission."; + set six_qset,4; + goto L_QuestGiven; + +///////Job list 7/////// +N_JobList7: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Apple Juice",-,"Delivery",N_Delivery3,"^FF0000Golden Thief Bug^000000",N_GTB,"^FF0000Evil Pirates^000000",N_EvilPirates; + mes "^FF0000Apple Juice^000000"; + mes "^FF0000-----------^000000"; + mes "Can't say no to some good apple juice."; + mes " "; + mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her."; + set seven_qset,1; + goto L_QuestGiven; + +N_Delivery3: + mes "^FF0000Delivery^000000"; + mes "^FF0000--------^000000"; + mes "So many packages so little time."; + mes " "; + mes "Take this box to a man in Alberta named Charles."; + getitem 1082,1; //Delivery_Box_ + set seven_qset,2; + goto L_QuestGiven; + +N_GTB: + mes "^FF0000Golden Thief Bug^000000"; + mes "^FF0000****************^000000"; + mes "The prontera Culvert has never been the same..."; + mes " "; + mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert. Talk to a Knight inside the Culvert."; + set seven_qset,3; + goto L_QuestGiven; + +N_EvilPirates: + mes "^FF0000Evil Pirates^000000"; + mes "^FF0000************^000000"; + mes "A ghost ship has washed up on shore on an island outside of Izlude."; + mes " "; + mes "A female assasin has a quest for you, she is waiting outside the Ghost Ship.There have been reports of evil undead pirates lurking around inside the ship."; + set seven_qset,4; + goto L_QuestGiven; + +///////Job list 8/////// +N_JobList8: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Banana Juice",-,"Another Delivery",N_Delivery4,"My lost beeds",N_LostBeeds,"^FF0000Baphomet!^000000",N_Bapho; + mes "^FF0000Banana Juice^000000"; + mes "^FF0000------------^000000"; + mes "Sound gross to some good to others."; + mes " "; + mes "There is a little girl up in prontera Square a bit north from the fountain, go talk to her."; + set eight_qset,1; + goto L_QuestGiven; + +N_Delivery4: + mes "^FF0000Another Delivery^000000"; + mes "^FF0000----------------^000000"; + mes "Well yah box delivering is in high demand,lots of lazy people."; + mes " "; + mes "Take this package to a man in Morroc named Klye."; + getitem 1081,1; //Delivery_Box + set eight_qset,2; + goto L_QuestGiven; + +N_Bapho: + mes "^FF0000Baphomet!^000000"; + mes "^FF0000*********^000000"; + mes "Hidden in the Temple he watches and guards."; + mes " "; + mes "Rumor has it that a Goat Man is lurking in the Hidden Temple, There is also a man in the Hidden Temple names Zack that needs you help with this Goat Man known as Baphomet."; + set eight_qset,3; + goto L_QuestGiven; + +N_LostBeeds: + mes "^FF0000My lost Beeds^000000"; + mes "^FF0000-------------^000000"; + mes "Oh great I smell stupidity..."; + mes " "; + mes "A little girl in Payon wants to talk to you, her name is Flower, What a stupid name,Hahaha."; + set eight_qset,4; + goto L_QuestGiven; + +///////Job list 9/////// +N_JobList9: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "Smelly Box",-,"Payon Cave",N_PayonC,"^FF0000Sohee's Everywere!^000000",N_Sohee,"^FF0000Moonlight Flower^000000",N_Moonlight; + mes "^FF0000Smelly Box^000000"; + mes "^FF0000----------^000000"; + mes "Oh god please get this out of here fast."; + mes " "; + mes "Oh man smells like someone died in here.Take this to the Magic School in Geffen and hurry,ahh the smell its burning my eye's!!!"; + getitem 1082,1; //Delivery_Box_ + set nine_qset,1; + goto L_QuestGiven; + +N_Sohee: + mes "^FF0000Sohee's Everywere!^000000"; + mes "^FF0000******************^000000" ; + mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes " "; + mes "Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school."; + next; + mes "The strange thing about what happened was that the children inside did not seem to die from the flames."; + mes "Speak to the little school girl somewere in Payon."; + set nine_qset,2; + goto L_QuestGiven; + +N_Moonlight: + mes "^FF0000Moonlight Flower^000000"; + mes "^FF0000****************^000000" ; + mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes " "; + mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave, We don't know much because no one ever seems to make it back alive."; + set nine_qset,3; + goto L_QuestGiven; + +N_PayonC: + mes "^FF0000Payon Cave^000000"; + mes "^FF0000----------^000000" ; + mes "Hmmm seem's a man named Jack wants to speak to you in the Archer Guild House."; + mes " "; + mes "The farther we go into the cave the stranger it gets."; + set nine_qset,4; + goto L_QuestGiven; + +///////Job list 10/////// +N_JobList10: + mes "[Guy]"; + mes "Ok you have a couple quests that can be done here."; + next; + menu "The Blank Box",-,"^FF0000Eddga^000000",N_Eddga,"^FF0000Phreeoni^000000",N_Phreeoni,"^FF0000Maya^000000",N_Maya; + + mes "^FF0000The Blank Box^000000"; + mes "^FF0000-------------^000000"; + mes "Package to Morroc"; + mes " "; + mes "There is nothing writen on this box but a notice to deliver it to a man Kreg."; + getitem 1082,1; //Delivery_Box_ + set ten_qset,1; + goto L_QuestGiven; + +N_Eddga: + mes "^FF0000Eddga^000000"; + mes "^FF0000*****^000000"; + mes "Tony the Tiger is on crack and destroying the forest."; + mes " "; + mes "Talk to a man outside the 'Hidden' Hunter Guild, He needs your help."; + set ten_qset,2; + goto L_QuestGiven; + +N_Phreeoni: + mes "^FF0000Phreeoni^000000"; + mes "^FF0000********^000000"; + mes "He is big and Pink and you run and hide!"; + mes " "; + mes "This guy just poped into some hole one day, He dosent look that tough but you would be supprised. Talk to a man named Caral outside of Ant Hell."; + set ten_qset,3; + goto L_QuestGiven; + +N_Maya: + mes "^FF0000Maya^000000"; + mes "^FF0000****^000000"; + mes "Something scary!"; + mes " "; + mes "This half naked freak need an army to take down, now its your job, good luck. Meet a girl named Jeni outside of the back entrance to Ant Hell."; + set ten_qset,4; + goto L_QuestGiven; +} diff --git a/npc/custom/quests/thq/THQS_Quests.txt b/npc/custom/quests/thq/THQS_Quests.txt new file mode 100644 index 000000000..b1e6c1652 --- /dev/null +++ b/npc/custom/quests/thq/THQS_Quests.txt @@ -0,0 +1,1052 @@ +//===== rAthena Script ======================================= +//= Treasure Hunter Quests +//===== By: ================================================== +//= Fredzilla +//===== Current Version: ===================================== +//= 1.6 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Start for Treasure hunter quests +//===== Additional Comments: ================================= +//= Event_THQS - Used to check if you have already registered +//= #Treasure_Token - used to keep track of tokens +//= 1.0 - Straight conversionof Aegis NPC file +//= 1.2 some bugfixes, typos [Lupus] +//= 1.3 Removed Duplicates [Silent] +//= 1.4 Further removed duplicates. [L0ne_W0lf] +//= 1.5 Fixed name collision with 'Little Girl' in cities/lutie.txt [Ai4rei] +//= 1.6 Changed "Caral" coordinates because moc_fild04 no longer exists. [Euphy] +//============================================================ + +///////Job list 1/////// +//1-1 +mjolnir_09,187,189,6 script Old Man 107,{ + if (one_qset==1) goto N_QuestStart; + mes "[Old Man]"; + mes "Eh! Can't and old man walk in peace anymore?!"; + close; +N_QuestStart: + mes "[Old Man]"; + mes "Eh? whats that?!"; + mes " "; + mes "My wife wants me home?! Alright, alright... I'm going, I'm going. Thank you for telling me the message."; + mes " "; + mes "Here take this Treasure Token."; + set one_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +} +//1-2; +pay_arche,86,129,6 script Archer 732,{ + if (one_qset == 2) goto N_QuestStart; + mes "[Kieth]"; + mes "Sorry can't talk, I'm a busy man, I'm waiting for my package."; + close; +N_QuestStart: + mes "[Kieth]"; + if (countitem(1072) < 1) { + mes "Weren't you supposed to deliver me a box? Where is it?"; + close; + } + mes "Ahh, you must be from the Treasure Hunter Agensy. Do you have my bow??"; + mes " "; + mes "Ahh, good,thank you for your time. Take this Treasure Token."; + delitem 1072,1; + set one_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +} +//1-3 +prt_fild06,37,192,6 script Farmer 125,{ + if (one_qset == 3 && countitem(909) > 19 && countitem(955) > 19 && countitem(914) > 19 && countitem(705) > 19) goto N_QuestComp; + if (one_qset==3) goto N_QuestStart; + mes "[Billy-Bob]"; + mes "Arrrg!... Those Bastard Bugs have eaten everything, this place donest even look like my farm anymore!!"; + close; +N_QuestComp: + mes "[Billy-Bob]"; + mes "Ohhh, thank you thats a good start for me."; + mes "Well those bugs can bugger off..."; + mes " "; + mes "Well here take these 2 Treasure Tokens."; + delitem 909,20; + delitem 955,20; + delitem 914,20; + delitem 705,20; + set one_qset,0; + set #Treasure_Token,#Treasure_Token+2; + set On_Quest,0; + close; +N_QuestStart: + mes "[Billy-Bob]"; + mes "Those Bastard Bugs are Everywere!!!"; + mes "You must be from the guild! OK, bring me 20 Worm Peelings, 20 Jellopys, 20 fluff and 20 Clovers."; + close; +} +//1-4 +prontera,264,353,6 script Old Lady#thq 103,{ + if (one_qset == 4 && countitem(934) > 14) goto N_QuestComp; + if (one_qset == 4) goto N_QuestStart; + mes "[Old Lady]"; + mes "This is my husbands grave... I'm just paying him a little visit."; + close; +N_QuestComp: + mes "[Old Lady]"; + mes "You have them?!"; + next; + mes "[Old Lady]"; + mes "Thank you sooo much here have these 3 Treasure Tokens."; + delitem 934,15; + set #Treasure_Token,#Treasure_Token+3; + set one_qset,0; + set On_Quest,0; + close; +N_QuestStart: + mes "[Old Lady]"; + mes "So your the one that has come to help me?"; + mes " "; + mes "Ok well this is what I wanted you to do,this greave beside me is my husbands grave and I promised him that I would bury some Mementos with him, The problem is that I have no Mementos..."; + next; + mes "[Old Lady]"; + mes "Bring me 15 Mementos, please."; + close; +} +///////Job list 2/////// +//2-1; +morocc,59,109,6 script Erika 700,{ + if (two_qset == 1 && countitem(1072) > 0) goto N_QuestComp; + if (two_qset == 1) goto N_QuestStart; + mes "[Erika]"; + mes "Hello my name is Erika."; + close; +N_QuestComp: + mes "[Erika]"; + mes "What's that? You have a letter for me!!"; + mes "Oooooh I just love,love letters :D. next here will I open it."; + next; + mes "[Letter]"; + mes "Dear Erika"; + mes " "; + mes "Sorry to inform you but you have been evicted, please move out within 3-5 days."; + mes " "; + mes "-Managment"; + next; + mes "[Erika]"; + mes "Oh... um... Well fuck, that bastard thinks he can kick me out!!!!! He's got another thing coming!"; + mes " "; + mes "Well thank you for delivering this anyway have this Treasure Token."; + delitem 1072,1; + set two_qset,0; + set #Treasure_Token,#Treasure_Token+1; + set On_Quest,0; + close; +N_QuestStart: + mes "[Erika]"; + mes "So your the one that has a letter for me?"; + mes " "; + mes "Ok well where's the letter?"; + close; +} +//2-2; +in_moc_16,15,30,6 script Jeramiah 730,{ + if (two_qset == 2 && countitem(1998) > 0) goto N_QuestComp; + if (two_qset == 2) goto N_QuestStart; + mes "[Jeramiah]"; + mes "Its so boring when you have to next on people..."; + close; +N_QuestComp: + mes "[Jeramiah]"; + mes "Ahh hello, you must be from the Treasure Hunter Guild."; + mes "Do you have my Jur? Ahh good good. Thank you."; + mes "Here have this Treasure Hunter Token."; + delitem 1998,1; + set two_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Jeramiah]"; + mes "So your the one that is supposed to bring my Jur?"; + mes "So where's my Jur?"; + close; +} +//2-3; +prt_fild07,316,263,6 script Marsh Man 84,{ + if (two_qset == 3 && countitem(518) > 19) goto N_QuestComp; + if (two_qset == 3) goto N_QuestStart; + mes "[Lenith]"; + mes "Hello, sorry I don't have much time to talk I'm waiting for someone."; + close; +N_QuestComp: + mes "[Lenith]"; + mes "Oh hello, OH you have my honey, my bees and I thank you."; + mes " "; + mes "Here have these 2 Treasure Hunter Tokens."; + delitem 518,20; + set #Treasure_Token,#Treasure_Token+2; + set two_qset,0; + set On_Quest,0; + close; +N_QuestStart: + mes "[Lenith]"; + mes "Hello, my name is Lenith and I have a quest for you."; + mes "Well resently a bunch of stupid bears stole the supers off all my bee's nests...Stupid bears."; + mes " "; + mes "What I need you to do is find me some more honey so these bee's can get through the winter. I will need about 20 Honey."; + close; +} +//2-4; +payon,161,72,6 script Molly 714,{ + if (two_qset == 4 && countitem(7005) > 0) goto N_QuestComp; + if (two_qset == 4) goto N_QuestStart; + mes "[Molly]"; + mes "Sorry can't talk, I'm waiting for someone."; + close; +N_QuestComp: + mes "[Molly]"; + mes "WOW YOU DID IT!!!"; + mes " "; + mes "I knew you looked strong, I have no idea how you could have killed that monster though."; + mes "thank you so much, here have these 3 Guild Tokens as a reward."; + delitem 7005,1; + set two_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+3; + close; +N_QuestStart: + mes "[Molly]"; + mes "Wow you must be the brave man from the treasure hunter guild!"; + mes "Ok here is whats happening, I don't know what started it but there is a strange Ronan Skeleton running aroung the woods 2 East from here."; + next; + mes "[Molly]"; + mes "We have try to kill him in the past but it was not...ummm...It was a bad idea. What I want you to do is go there and bring me back his Skull as proof of you killing him."; + mes " "; + mes "Good Luck"; + close; +} +///////Job list 3/////// +//3-1; +moc_fild04,208,322,6 script Clark 65,{ + if (three_qset == 1 && countitem(1040) > 29) goto N_QuestComp; + if (three_qset == 1) goto N_QuestStart; + mes "[Clark]"; + mes "Love to chat, but I'm waiting for someone."; + close; +N_QuestComp: + mes "[Clark]"; + mes "Ok well this is a start."; + mes " "; + mes "I hope that this hole will go away 1 day, and I might have another quest for you in the future."; + mes "here take these 2 Treasure Tokens."; + delitem 1040,30; + set #Treasure_Token,#Treasure_Token+2; + set three_qset,0; + set On_Quest,0; + close; +N_QuestStart: + mes "[Clark]"; + mes "Well hello to you."; + mes "You must be from the Treasure Hunter Guild."; + mes " "; + mes "Ok well this is my problem, yah see that hole in the ground? Yah that thing just popped out of nowhere a couple years ago, inside its full of these ugly ants and these monsters called Giearths."; + next; + mes "[Clark]"; + mes "What I want you to do is kill some of the Giearths.Bring me 30 of there little Moustaches."; + close; +} +//3-2; +yuno_fild01,186,162,6 script Flank 73,{ + if (three_qset == 2 && countitem(1082) > 0) goto N_QuestComp; + if (three_qset == 2) goto N_QuestStart; + mes "[Flank]"; + mes "Sorry I'm waiting for my package so I don't want to talk."; + close; +N_QuestComp: + mes "[Flank]"; + mes "Perfect right on time, now I must be going to plant this bomb.... Err I meen give this package to my mother for her birthday."; + next; + mes "[Flank]"; + mes "Thanks"; + mes "Have this Treasure Token"; + delitem 1082,1; + set three_qset,0; + set #Treasure_Token,#Treasure_Token+1; + set On_Quest,0; + close; +N_QuestStart: + mes "[Flank]"; + mes "So you have my packages?"; + mes "Well where is it then?"; + close; +} +//3-3 Goes to 7-3 using callfunc +prt_sewb1,120,245,6 script Sewer Managment Knight 705,{ + if (three_qset == 3 && countitem(955) > 149) goto N_QuestComp; + if (three_qset == 3) goto N_QuestStart; + if (seven_qset == 3) goto N_QuestStart2; + mes "[Sewer Managmant]"; + mes "Live dosent get any worse for me,working in the bug filled Culvert every day..."; + close; +N_QuestComp: + mes "[Sewer Managment]"; + mes "Well that looked like it was no trouble for you."; + mes "Thanks have these 4 Treause Tokens."; + delitem 955,150; + set #Treasure_Token,#Treasure_Token+4; + set three_qset,0; + set On_Quest,0; + close; +N_QuestStart: + mes "[Sewer Managmant]"; + mes "For a while now we have had monster, mostly bugs infesting the culvert..."; + mes " "; + mes "What I want you to do is kinda clean some of it out, every little bit counts."; + mes "Bring me 150 Worm Peelings."; + close; +N_QuestStart2: + callfunc "seven_qset-3"; + close; +} +//3-4 +mjolnir_02,87,357,6 script Man#01 51,{ + if (three_qset == 4 && countitem(1041) > 49) goto N_QuestComp; + if (three_qset == 4) goto N_QuestStart; + mes "[Rudolfo]"; + mes "Danger, the Coal Mine is now a hostile area."; + close; +N_QuestComp: + mes "[Rudolfo]"; + mes "Well its good to see that you have come back alive."; + mes "I had my doughts but thank you for your help."; + mes " "; + mes "Here have these 4 Treasure Tokens."; + delitem 1041,50; + set three_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Rudolfo]"; + mes "Hello, you must be from the Treasure Hunter Guild."; + mes " "; + mes "They must have filled you in on what is happening on the lower levels of this Coal Mine, I know its desturbing and we are still trying to figure out why and how 2 Evil Druids got down there."; + mes " "; + mes "Well what I want you to do is bring me 50 Lantern's as proof that you have cleaned some of them out, any loot you find down there you may keep other then what I have asked you to get for me."; + close; +} +///////Job list 4/////// +//4-1; +pay_arche,45,138,6 script Flora 724,{ + if (four_qset == 1 && countitem(957) > 49) goto N_QuestComp; + if (four_qset == 1) goto N_QuestStart; + mes "[Flora]"; + mes "Well hello be carfull in the cave, we have heard reports of Undead monster funning around."; + close; +N_QuestComp: + mes "[Flora]"; + mes "Welcome back, good job you did it. (I wonder if that Flaming Bastard is still alive)"; + mes "Well I hope that cut down a bit on the monsters and here have these 2 Tokens."; + delitem 957,50; + set #Treasure_Token,#Treasure_Token+2; + set four_qset,0; + set On_Quest,0; + killmonster "pay_dun00","Flora::OnMobDead"; + close; +N_QuestStart: + mes "[Flora]"; + mes "Well hello there."; + mes " "; + mes "Well this is what I need you to do, bring me 50 Decayed Nails - awile back Payon Cave used to be a safe place to go...But now things have gone out of controll and Zombies have invaded the first floor..."; + mes " "; + mes "There is also these new monsters that have just poped out of no were, we call them Flaming Bastards...Be carfull if you arn't powerfull yet because they are very strong."; + next; + mes "[Flora]"; + mes "Good Luck"; + mes "Remember I need 50 Nail's"; + monster "pay_dun00",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead"; + monster "pay_dun00",0,0,"Flaming Bastard",1072,1,"Flora::OnMobDead"; + close; +OnMobDead: + end; +} +//4-2; +yuno,45,138,6 script Zed 735,{ + if (four_qset == 2 && countitem(1999) > 0) goto N_QuestComp; + if (four_qset == 2) goto N_QuestStart; + mes "[Zed]"; + mes "Get out of my face you flake."; + close; +N_QuestComp: + mes "[Zed]"; + mes "Dear god took you long enough you bastard!"; + mes "You know how much my time is worth!!!!"; + mes "Your slow and I'm never gona recomend a job for you, Gimmie my staff and get out of me face!"; + next; + mes "[Zed]"; + mes "Well you can take this crapy Treausre Token."; + delitem 1999,1; + set On_Quest,0; + set four_qset,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Zed]"; + mes "Where's my staff?"; + close; +} +//4-3; +prontera,176,204,6 script Dassy 95,{ + if (four_qset == 3 && countitem(711) > 19) goto N_QuestComp; + if (four_qset == 3) goto N_QuestStart; + mes "[Dassy]"; + mes "Hello!"; + close; +N_QuestComp: + mes "[Dassy]"; + mes "Yes! Now my pet will not starve!"; + mes "Thank you so much!"; + mes "Have this Treasure Token."; + delitem 711,20; + set On_Quest,0; + set four_qset,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Dassy]"; + mes "Hello person!!"; + mes "You have come to help me? Yes, yes."; + mes " "; + mes "Ok I don't want to talk about it but I need you to fine me 20 Shoot's"; + mes "Thank you!"; + close; +} +//4-4; +prt_gld,157,99,6 script Czhore 752,{ + if (four_qset == 4 && countitem(714) > 0) goto N_QuestComp; + if (four_qset == 4) goto N_QuestStart; + mes "[Czhore]"; + mes "Hello friend"; + mes "Have you come to check out one of these guild halls?"; + close; +N_QuestComp: + mes "[Czhore]"; + mes "Thank god!"; + mes " "; + mes "I'm so happy to see one of these Emperiums! Thank you "+strcharinfo(0)+"."; + next; + mes "[Czhore]"; + mes "Here have these 2 Treasure Tokens."; + mes "And some of my old treasure..."; + delitem 714,1; + monster "prt_gld",155,99,"Old Man's Treasure",1324,1; + set four_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+2; + close; +N_QuestStart: + mes "[Czhore]"; + mes "Hello friend"; + mes "I know this may sound stupid but ever since I was a boy I have dreamed of having an Emperium..."; + mes "As I know I look old, I have just never been able to find one, now that I am retired from the Treasure Hunter Guild there is no more action for me..."; + mes " "; + mes "If you can get me one I shall reward you."; + close; +} +///////Job list 5/////// +//5-1; +prt_maze01,18,184,6 script Lithin#01 752,{ + if (five_qset == 1 && countitem(1028) > 14) goto N_QuestComp; + if (five_qset == 1) goto N_QuestStart; + mes "[Lithin]"; + mes "Well hello."; + mes "Welcome to the Forest Maze."; + close; +N_QuestComp: + mes "[Lithin]"; + mes "Oh thank you so much, but they will be back..."; + next; + mes "Take these 2 Treasure Tokens"; + delitem 1028,15; + set five_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+2; + close; +N_QuestStart: + mes "[Lithin]"; + mes "Well hello."; + mes "Welcome to the Forest Maze, I have a task for you."; + mes " "; + mes "Ever heard of a moster called a Savage? It looks like a boar but it makes very annoying noices."; + mes "What I want you to do is bring me 15 Manes from the savages."; + close; +} +//5-2 goes to 6-2 using callfunc; +moc_ruins,75,167,6 script Lithin#02 87,{ + if (five_qset == 2 && countitem(932) > 29) goto N_QuestComp; + if (five_qset == 2) goto N_QuestStart; + if (six_qset == 2) goto N_QuestStart2; + mes "[Strange Man]"; + mes "..."; + close; +N_QuestComp: + mes "[Strange Man]"; + mes "Much thanks I have for you."; + next; + mes "Take with you these 2 Treasure Token's."; + delitem 932,30; + set #Treasure_Token,#Treasure_Token+2; + set five_qset,0; + set On_Quest,0; + close; +N_QuestStart: + mes "[Strange Man]"; + mes "Must do for me you shall.Venture through the Pyramid."; + mes "When second floor you have reached,slay skeletons of evil."; + mes "Bring me back there bones you must."; + mes "It is 30 that I desire."; + close; +N_QuestStart2: + callfunc "six_qset2"; +} +//5-3; +geffen,57,130,6 script Blonde Girl 724,{ + if (five_qset == 3 && countitem(744) > 0) goto N_QuestComp; + if (five_qset == 3) goto N_QuestStart; + mes "[Blonde Girl]"; + mes "I wonder what happened to my flowers"; + close; +N_QuestComp: + mes "[Blonde Girl]"; + mes "Oh are these my flower! To bad I don't want them anymore..."; + mes " "; + mes "You can keep them is you want."; + next; + mes "[Blonde Girl]"; + mes "Here take this Treasure Token as a reward."; + set five_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Blonde Girl]"; + mes "Hello, did you bring me flowers!?!"; + close; +} +//5-4; +gef_tower,49,27,6 script Wizard#01 735,{ + if (five_qset == 4 && countitem(1059) > 49) goto N_QuestComp; + if (five_qset == 4) goto N_QuestStart; + mes "[Wizard]"; + mes "Hello, have you seen my Whisper friend?"; + close; +N_QuestComp: + mes "[Wizard]"; + mes "Thank you for helping me, I presume the worse."; + next; + mes "[Wizard]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1059,50; + set five_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Wizard]"; + mes "Hello, the reason why I brought you here was because of a long time ago I made a friend, which happened to be a Whipser."; + mes "He told me that he was always bullied by the other ghosts down there and I haven't seen him in a while."; + mes "Thinking of the worse case here, I want vengance!"; + mes " "; + mes "Bring me 50 Fabrics!"; + close; +} +///////Job list 6/////// +//6-1; +moc_prydb1,47,132,6 script Thief 48,{ + if (six_qset == 1 && countitem(1083) > 0) goto N_QuestComp; + if (six_qset == 1) goto N_QuestStart; + mes "[Thief]"; + mes "Welcome to the Thiefs Guild."; + close; +N_QuestComp: + mes "[Thief]"; + mes "Thank you for this delivery."; + next; + mes "[Thief]"; + mes "Here take this Treasure Token as a reward."; + delitem 1083,1; + set six_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Thief]"; + mes "Where's my delivery?"; + close; +} +//6-2 +function script six_qset2 { + if (six_qset == 2 && countitem(930) > 29) goto N_QuestComp2; + mes "[Strange Man]"; + mes "Another quest for you I have."; + mes "Futher into the pyramid you must go."; + mes "Fighting Mummys is future for you."; + mes " "; + mes "Bring back for me their wrappings you must."; + mes "It is 30 Rotten bandages I desire."; + close; +N_QuestComp2: + mes "[Strange Man]"; + mes "Much thanks for you that I have."; + next; + mes "[Strange Man]"; + mes "Take with you these 3 tokens."; + delitem 930,30; + set #Treasure_Token,#Treasure_Token+3; + set On_Quest,0; + set six_qset,0; + close; +} +//6-3; +xmas,144,136,6 script Chirach 48,{ + if (six_qset == 3 && countitem(1083) > 0) goto N_QuestComp; + if (six_qset == 3) goto N_QuestStart; + mes "[Chirach]"; + mes "Welcome."; + close; +N_QuestComp: + mes "[Chirach]"; + mes "Thank you for this delivery."; + next; + mes "[Chirach]"; + mes "Here take this Treasure Token as a reward."; + delitem 1083,1; + set six_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Chirach]"; + mes "Where's my delivery?"; + close; +} +//6-4; +gef_tower,52,87,6 script Wizard#02 735,{ + if (six_qset == 4 && countitem(944) > 19) goto N_QuestComp; + if (six_qset == 4) goto N_QuestStart; + mes "[Zuuzuu]"; + mes "Hello, welcome to geffen tower."; + close; +N_QuestComp: + mes "[Wizard]"; + mes "Thank you for helping me."; + next; + mes "Here take these 4 Treasure Tokens."; + delitem 944,20; + set six_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + next; + mes "[Zuuzuu]"; + mes "Oh dear god!!!"; + mes "One of those evil mosters has followed you up here, Kill it, Kill it!!!"; + next; + monster "gef_tower",42,89,"Evil Nightmare",1061,1; + close; +N_QuestStart: + mes "[Zuuzuu]"; + mes "Hello, the reason I sent for a young adventurer was because of the problems we are having under the tower."; + mes "There seem to be more ghosts day after day down there. What I need you to do is go down there and find these mosters we call Nightmares."; + mes " "; + mes "You must slay them and bring me 20 of there horse shoes."; + close; +} +///////Job list 7/////// +//7-1 goes to 8-1 using callfunc; +prontera,123,208,6 script Little Girl#thq 717,{ + if (seven_qset == 1 && countitem(531) > 4) goto N_QuestComp; + if (seven_qset == 1) goto N_QuestStart; + if (eight_qset == 1) goto N_QuestStart2; + mes "[Girl]"; + mes "Hello mister "+strcharinfo(0)+"."; + close; +N_QuestComp: + mes "[Girl]"; + mes "Thank you so much!"; + next; + mes "[Girl]"; + mes "Have these 1 Treasure Tokens."; + delitem 531,5; + set seven_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Girl]"; + mes "Hi mister person. Can you get me some apple juice?"; + mes "I want 5 of them."; + close; +N_QuestStart2: + callfunc "eight_qset1"; +} +//7-2; +alberta,101,84,6 script Charles 48,{ + if (seven_qset == 2 && countitem(1082) > 0) goto N_QuestComp; + if (seven_qset == 2) goto N_QuestStart; + mes "[Charles]"; + mes "Hello "+strcharinfo(0)+" welcome to Alberta."; + close; +N_QuestComp: + mes "[Charles]"; + mes "Thank you for this delivery."; + next; + mes "[Charles]"; + mes "Here take this Treasure Token as a reward."; + delitem 1082,1; + set seven_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Charles]"; + mes "So where is my package?"; + close; +} +//7-3 +function script seven_qset-3 { + if (seven_qset == 3 && countitem(969) > 0) goto N_QuestComp2; + mes "[Sewer Managment]"; + mes "Well there have been reports of a Golden Thief Bug running around the bottem on the Culvert"; + mes " "; + mes "Bring me 1 Gold Bar from him."; + close; +N_QuestComp2: + mes "[Sewer Managment]"; + mes "Thank you for helping me."; + next; + mes "[Sewer Managment]"; + mes "Here take these 4 Treasure Tokens."; + delitem 969,1; + set seven_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +} +//7-4; +alb2trea,94,102,6 script Scarlet 725,{ + if (seven_qset == 4 && countitem(1127) > 0) goto N_QuestComp; + if (seven_qset == 4) goto N_QuestStart; + mes "[Scarlet]"; + mes "Sorry, busy."; + close; +N_QuestComp: + mes "[Scarlet]"; + mes "Thank you for helping me, I presume the worse."; + next; + mes "[Scarlet]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1127,1; + set seven_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Scarlet]"; + mes "Good your here. Ok there are reports of an old captain named Drake abored this ship. Kill Him!"; + mes " "; + mes "Bring me his Saber as proof!"; + close; +} +///////Job list 8/////// +//8-1 +function script eight_qset1 { + if (eight_qset == 1 && countitem(532) > 4) goto N_QuestComp2; + mes "[Girl]"; + mes "Hi mister person. Can you get me some Banana juice?"; + mes "I want 5 of them."; + close; +N_QuestComp2: + mes "[Girl]"; + mes "Thank you so much!"; + next; + mes "[Girl]"; + mes "Have these 1 Treasure Tokens."; + delitem 532,5; + set eight_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +} +//8-2; +morocc,165,55,6 script Klye 48,{ + if (eight_qset == 2 && countitem(1081) > 0) goto N_QuestComp; + if (eight_qset == 2) goto N_QuestStart; + mes "[Klye]"; + mes "Hello "+strcharinfo(0)+"."; + close; +N_QuestComp: + mes "[Klye]"; + mes "Thank you for this delivery."; + next; + mes "[Klye]"; + mes "Here take this Treasure Token as a reward."; + delitem 1081,1; + set eight_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Kyle]"; + mes "So where's my Delivery"; + close; + +} +//8-3; +prt_maze02,103,86,6 script Zack 751,{ + if (eight_qset == 3 && countitem(923) > 0) goto N_QuestComp; + if (eight_qset == 3) goto N_QuestStart; + mes "[Zack]"; + mes "Hello, have you seen my Whisper friend?"; + close; +N_QuestComp: + mes "[Zack]"; + mes "Thank you for helping me, I presume the worse."; + next; + mes "[Zack]"; + mes "Here take these 5 Treasure Tokens."; + delitem 923,1; + set eight_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+5; + close; +N_QuestStart: + mes "[Zack]"; + mes "Hello,the reason why I brought you here was because of a very strange monster known as Baphomet."; + mes "People say that Baphomet guilds the gate to the under-world but I don't belive them, Kill Baphomet!"; + mes " "; + mes "Bring me his Evil Horn!"; + close; +} +//8-4; +payon,136,129,6 script Flower 703,{ + if (eight_qset == 4 && countitem(746) > 9) goto N_QuestComp; + if (eight_qset == 4) goto N_QuestStart; + mes "[Flower]"; + mes "Sorry I'm waiting for someone. You will have to come back later."; + close; +N_QuestComp: + mes "[Flower]"; + mes "Thank you for helping me, I presume the worse."; + next; + mes "[Flower]"; + mes "Here take these 2 Treasure Tokens."; + delitem 746,10; + set eight_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+2; + close; +N_QuestStart: + mes "[Flower]"; + mes "Help, help I have lost my Beads!! My brother Bush is going to kill me please help"; + mes " "; + mes "Bring me 10 Glass Beads!"; + close; +} +///////Job list 9/////// +//9-1; +geffen_in,168,124,6 script Mage 48,{ + if (nine_qset == 1 && countitem(1082) > 0) goto N_QuestComp; + if (nine_qset == 1) goto N_QuestStart; + mes "[Mage]"; + mes "Hello "+strcharinfo(0)+" welcome to the Mage Guild."; + close; +N_QuestComp: + mes "[Mage]"; + mes "Thank you for this delivery. Sorry about the smell, Its a box of Toad Tounges"; + next; + mes "[Mage]"; + mes "Here take this Treasure Token as a reward."; + delitem 1082,1; + set nine_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Mage]"; + mes "Hello "+strcharinfo(0)+", Where is my box of Toad Tounges?."; + close; +} +//9-2; +pay_arche,98,74,6 script School Girl 703,{ + if (nine_qset == 2 && countitem(1020) > 19) goto N_QuestComp; + if (nine_qset == 2) goto N_QuestStart; + mes "[School Girl]"; + mes "Sorry I'm waiting for someone, you will have to come back later"; + close; +N_QuestComp: + mes "[School Girl]"; + mes "Thank you for helping me."; + next; + mes "[School Girl]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1020,20; + set nine_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[School Girl]"; + mes "Help, Well what we know about Payon is that a while ago there was a freak fire that burnt down the old school."; + next; + mes "[School Girl]"; + mes "The strange thing about what happened was that the children inside did not seem to die from the flames. They have taken over the entire 3rd floor of Payon Cave."; + mes " "; + mes "Bring me 20 Black Hair!"; + close; +} +//9-3 +payon_in02,19,33,6 script Jack 740,{ + if (nine_qset == 3 && countitem(1022) > 0) goto N_QuestComp; + if (nine_qset == 3) goto N_QuestStart; + if (nine_qset == 4) goto N_QuestStart2; + mes "[Jack]"; + mes "Sorry I'm waiting for someone, you will have to come back later"; + close; +N_QuestComp: + mes "[Jack]"; + mes "Thank you for helping me."; + next; + mes "[Jack]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1022,1; + set nine_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Jack]"; + mes "Well I don't know much about this, it has to do with the deepest reagions of Payon Cave. We don't know much because no one ever seems to make it back alive. We suspect a monster we call the Moonlight Flower"; + mes " "; + mes "Bring me back 1 Nine Tales!"; + close; +N_QuestStart2: +//9-4 + if (nine_qset == 4 && countitem(901) > 39) goto N_QuestComp2; + mes "[Jack]"; + mes "Hello, we need you to investigate some crap in the 3rd level of payon."; + mes " "; + mes "Bring me back 40 Daenggie's."; + close; +N_QuestComp2: + mes "[Jack]"; + mes "Thank you for helping me."; + next; + mes "[Jack]"; + mes "Here take these 3 Treasure Tokens."; + delitem 901,40; + set nine_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+3; + close; +} +///////Job list 10/////// +//10-1 +morocc,193,51,6 script Kreg 48,{ + if (ten_qset == 1 && countitem(1082) > 0) goto N_QuestComp; + if (ten_qset == 1) goto N_QuestStart; + mes "[Kreg]"; + mes "Hello "+strcharinfo(0)+" welcome to Morroc."; + close; +N_QuestComp: + mes "[Kreg]"; + mes "Thank you for this delivery."; + next; + mes "[Kreg]"; + mes "Here take this Treasure Token as a reward."; + delitem 1082,1; + set ten_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+1; + close; +N_QuestStart: + mes "[Kreg]"; + mes "So where's my Delivery"; + close; +} +//10-2; +pay_fild10,145,252,6 script Man#02 122,{ + if (ten_qset == 2 && countitem(1029) > 0) goto N_QuestComp; + if (ten_qset == 2) goto N_QuestStart; + mes "[Man]"; + mes "Sorry I'm waiting for someone, you will have to come back later"; + close; +N_QuestComp: + mes "[Man]"; + mes "Thank you for helping me."; + next; + mes "[Man]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1029,1; + set ten_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Man]"; + mes "Tony the Tiger is on Crack! He must be stoped, KILL HIM!"; + mes " "; + mes "Bring me back 1 Tiger's_Skin!"; + close; +} +//10-3; +cmd_fild08,328,349,4 script Caral 119,{ + if (ten_qset == 3 && countitem(1015) > 0) goto N_QuestComp; + if (ten_qset == 3) goto N_QuestStart; + mes "[Caral]"; + mes "Sorry I'm waiting for someone, you will have to come back later."; + close; +N_QuestComp: + mes "[Caral]"; + mes "Thank you for helping me."; + next; + mes "[Caral]"; + mes "Here take these 4 Treasure Tokens."; + delitem 1015,1; + set ten_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+4; + close; +N_QuestStart: + mes "[Caral]"; + mes "Phreeoni the Pink Fluff is terrorizing little novices! He must be stoped, KILL HIM!"; + mes " "; + mes "Bring me back 1 Tounge!"; + close; +} +//10-4 +moc_fild15,250,251,6 script Jeni 727,{ + if (ten_qset == 4 && countitem(1096) > 0) goto N_QuestComp; + if (ten_qset == 4) goto N_QuestStart; + mes "[Jeni]"; + mes "Sorry I'm waiting for someone, You will have to come back later"; + close; +N_QuestComp: + mes "[Jeni]"; + mes "Thank you for helping me."; + next; + mes "[Jeni]"; + mes "Here take these 3 Treasure Tokens."; + delitem 1096,1; + set ten_qset,0; + set On_Quest,0; + set #Treasure_Token,#Treasure_Token+3; + close; +N_QuestStart: + mes "[Jeni]"; + mes "This half naked freak need an army to take down, now its your job,good luck."; + mes " "; + mes "Bring me back 1 Round Shell!"; + close; +} diff --git a/npc/custom/quests/thq/THQS_TTShop.txt b/npc/custom/quests/thq/THQS_TTShop.txt new file mode 100644 index 000000000..7752a0960 --- /dev/null +++ b/npc/custom/quests/thq/THQS_TTShop.txt @@ -0,0 +1,516 @@ +//===== rAthena Script ======================================= +//= Treasure Hunter Quests +//===== By: ================================================== +//= Fredzilla +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= Start for Treasure hunter quests +//===== Additional Comments: ================================= +//= Event_THQS - Used to check if you have already registered +//= #Treasure_Token - used to keep track of tokens +//= 1.0 - Straight conversion of Aegis NPC file +//= 1.1 - balanced some prices, fixed 1 missing label +//= removed Executioner&Mysteltain swords [Lupus] +//============================================================ + +prt_in,159,172,0 warp thqwrp 3,3,yuno_in01,123,155 + +prt_in,164,174,1 script Treasure Hunter's Shop 65,{ + mes "[Ash]"; + mes "Ahh, "+strcharinfo(0)+"! Welcome to the Offical Treasure Hunter's Guild Shop."; + mes "You currently have ^FF0000"+#Treasure_Token+"^000000 treasure tokens!!!"; + next; + menu "How does this place work?",-,"What do you have in stock?",N_Shop,"Nevermind",N_NVM; + mes "[Ash]"; + mes "Well you see here you can exchange your treasure hunter tokens for zeny or rare weapons forged by our blacksmiths."; + mes " "; + mes "Everything has its own price value and the only way you can get the tokens is by completing quests assigned to you,the system normally works like this."; + mes " "; + mes "The harder the mission the more Tokens you will earn. All red quests are worth 4-8 Tokens, and the rest are worth 1-5."; + mes " "; + mes "Hope that solves your problem and questions."; + close; +N_NVM: + close; + end; +N_Shop: +//This is when it gets hard :) + mes "[Ash]"; + mes "Ok here is our Big list of goods."; + mes " "; + mes "(Note T stands for a Treasure Token.)"; + next; + menu "Trade for Zeny",-,"Trade for Weapons",N_BuyWeps,"Trade for Cards",N_BuyCards,"Nevermind",N_NVM; + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "1000z - 1T",-,"10000z - 10T",N_10T,"100000z - 100T",N_100T,"Nevermind",N_NVM; + if (#Treasure_Token > 0) goto N_GetZeny1k; + mes "You don't have enough tokens!"; + close; +N_GetZeny1k: + set #Treasure_Token,#Treasure_Token-1; + set zeny,zeny+1000; + close; +N_10T: + if (#Treasure_Token > 9) goto N_GetZeny10k; + mes "You don't have enough tokens!"; + close; +N_GetZeny10k: + set #Treasure_Token,#Treasure_Token-10; + set zeny,zeny+10000; + close; +N_100T: + if (#Treasure_Token > 99) goto N_GetZeny100k; + mes "You don't have enough tokens!"; + close; +N_GetZeny100k: + set #Treasure_Token,#Treasure_Token-100; + set zeny,zeny+100000; + close; + +N_BuyWeps: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Axe's",-,"1 Handed Swords",N_1HandSword,"2 Handed Swords",N_2HandSword,"Book's",N_Book,"Bow's",N_Bow,"Katar's",N_Katar,"Knuckle's",N_Knuckle,"Mace's",N_Mace,"Whips",N_Whip,"Wands",N_Wand,"Nevermind",N_NVM; + + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Sabbath - 160T",-,"Slaughter - 160T",N_Slau,"Tomahawk - 180T",N_Toma,"Great Axe - 200T",N_GreatA,"Guillotine - 200T",N_Guill,"Nevermind",N_NVM; + + if (#Treasure_Token < 160) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-160; + getitem 1365,1; + logmes "Treasure Token: Bought a Sabbath"; + close; +N_Slau: + if (#Treasure_Token < 160) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-160; + getitem 1367,1; + logmes "Treasure Token: Bought a Slaughter"; + close; +N_Toma: + if (#Treasure_Token < 180) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-180; + getitem 1368,1; + logmes "Treasure Token: Bought a Tomahawk"; + close; +N_GreatA: + if (#Treasure_Token < 200) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-200; + getitem 1364,1; + logmes "Treasure Token: Bought a Great Axe"; + close; +N_Guill: + if (#Treasure_Token < 200) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-200; + getitem 1369,1; + logmes "Treasure Token: Bought a Guillotine"; + close; +N_NeedToken: + mes "[Ash]"; + mes "You don't have enough tokens!"; + close; + + +N_1HandSword: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Edge - 130T",-,"Solar Sword - 150T",N_SolarS,"Caesar's Sword - 170T",N_CaesarS,"Nagan - 180T",N_Nagan,"Immaterial Sword - 200T",N_ImmatS,"Excalibur - 200T",N_Excal,"Byeollungum - 240T",N_Byeoll,"Talefing - 320T",N_Talef,"Nevermind",N_NVM; + + if (#Treasure_Token < 130) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-130; + getitem 1132,1; + logmes "Treasure Token: Bought a Edge"; + close; +N_SolarS: + if (#Treasure_Token < 150) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-150; + logmes "Treasure Token: Bought a Solar Sword"; + getitem 1136,1; + close; +N_CaesarS: + if (#Treasure_Token < 170) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-170; + logmes "Treasure Token: Bought a Caesars Sword"; + getitem 1134,1; + close; +N_Nagan: + if (#Treasure_Token < 180) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-180; + logmes "Treasure Token: Bought a Nagan"; + getitem 1130,1; + close; +N_ImmatS: + if (#Treasure_Token < 200) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-200; + logmes "Treasure Token: Bought a Immaterial Sword"; + getitem 1141,1; + close; +N_Excal: + if (#Treasure_Token < 200) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-200; + logmes "Treasure Token: Bought a Excalibur"; + getitem 1137,1; + close; +N_Byeoll: + if (#Treasure_Token < 240) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-240; + logmes "Treasure Token: Bought a Byeollungum"; + getitem 1140,1; + close; +N_Talef: + if (#Treasure_Token < 320) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-320; + logmes "Treasure Token: Bought a Talefing"; + getitem 1139,1; + close; + + +N_2HandSword: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Dragon Slayer - 140T",-,"Schweizersabel - 200T",N_Schwe,"Katzbalger - 300T",N_Katzb,"Muramasa - 300T",N_Murama,"Masamune - 400T",N_Masamu,"Balmung - 2000T",N_Balmu,"Nevermind",N_NVM; + + if (#Treasure_Token < 140) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-140; + logmes "Treasure Token: Bought a Dragon Slayer"; + getitem 1166,1; + close; +N_Schwe: + if (#Treasure_Token < 200) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-200; + logmes "Treasure Token: Bought a Schweizersabel"; + getitem 1167,1; + close; +N_Katzb: + if (#Treasure_Token < 300) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-300; + logmes "Treasure Token: Bought a Katzbalger"; + getitem 1170,1; + close; +N_Murama: + if (#Treasure_Token < 300) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-300; + logmes "Treasure Token: Bought a Muramasa"; + getitem 1164,1; + close; +N_Masamu: + if (#Treasure_Token < 400) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-400; + logmes "Treasure Token: Bought a Masamune"; + getitem 1165,1; + close; +N_Balmu: + if (#Treasure_Token < 2000) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-2000; + logmes "Treasure Token: Bought a Balmung"; + getitem 1161,1; + close; + + +N_Book: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Book of the Burning Sun - 80T",-,"Book of the Rough Seas - 80T",N_RoughSea,"Book of the Dry Winds - 80T",N_DryWinds,"Book of the Ripe Earth - 80T",N_RipeEarth,"Book of the Revelations - 80T",N_Revela,"Bible - 90T",N_Bible,"Tablet - 120T",N_Tablet,"Nevermind",N_NVM; + + if (#Treasure_Token < 80) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-80; + logmes "Treasure Token: Bought a Book of the Burning Sun"; + getitem 1555,1; + close; +N_RoughSea: + if (#Treasure_Token < 80) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-80; + logmes "Treasure Token: Bought a Book of the Rough Seas"; + getitem 1553,1; + close; +N_DryWinds: + if (#Treasure_Token < 80) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-80; + logmes "Treasure Token: Bought a Book of the Dry Winds"; + getitem 1556,1; + close; +N_RipeEarth: + if (#Treasure_Token < 80) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-80; + logmes "Treasure Token: Bought a Book of the Ripe Earth"; + getitem 1554,1; + close; +N_Revela: + if (#Treasure_Token < 80) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-80; + logmes "Treasure Token: Bought a Book of the Revelations"; + getitem 1557,1; + close; +N_Bible: + if (#Treasure_Token < 90) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-90; + logmes "Treasure Token: Bought a Bible"; + getitem 1551,1; + close; +N_Tablet: + if (#Treasure_Token < 120) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-120; + logmes "Treasure Token: Bought a Tablet"; + getitem 1552,1; + close; + +N_Bow: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Rudra's Bow - 150T",-,"Roguemaster's Bow - 150T",N_Rogue,"Nevermind",N_NVM; + + if (#Treasure_Token < 150) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-150; + logmes "Treasure Token: Bought a Rudra Bow"; + getitem 1720,1; + close; +N_Rogue: + if (#Treasure_Token < 150) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-150; + logmes "Treasure Token: Bought a Roguemaster Bow"; + getitem 1719,1; + close; + +N_Katar: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Katar of the Blazing Rage - 70T",-,"Katar of the Cold Icicle - 70T",N_ColdIce,"Katar of the Piercing Wind - 70T",N_PiercWind,"Katar of the Dusty Thornbush - 70T",N_DustyT,"Sharpened Legbone of Ghoul - 125T",N_Legbone,"Infiltrator - 150T",N_Infiltra,"Nevermind",N_NVM; + + if (#Treasure_Token < 70) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-70; + logmes "Treasure Token: Bought a Katar of the Blazing Rage"; + getitem 1258,1; + close; +N_ColdIce: + if (#Treasure_Token < 70) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-70; + logmes "Treasure Token: Bought a Katar of the Cold Icicle"; + getitem 1256,1; + close; +N_PiercWind: + if (#Treasure_Token < 70) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-70; + logmes "Treasure Token: Bought a Katar of the Piercing Wind"; + getitem 1259,1; + close; +N_DustyT: + if (#Treasure_Token < 70) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-70; + logmes "Treasure Token: Bought a Katar of the Dusty Thornbush"; + getitem 1257,1; + close; +N_Legbone: + if (#Treasure_Token < 125) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-125; + logmes "Treasure Token: Bought a Sharpened Legbone of Ghoul"; + getitem 1260,1; + close; +N_Infiltra: + if (#Treasure_Token < 150) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-150; + logmes "Treasure Token: Bought a Infiltrator"; + getitem 1261,1; + close; + +N_Knuckle: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Kaiser Knuckle - 75T",-,"Berserk - 75T",N_Berserk,"Nevermind",N_NVM; + + if (#Treasure_Token < 75) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-75; + logmes "Treasure Token: Bought a Kaiser Knuckle"; + getitem 1813,1; + close; +N_Berserk: + if (#Treasure_Token < 75) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-75; + logmes "Treasure Token: Bought a Berserk"; + getitem 1814,1; + close; + +N_Mace: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Spike - 65T",-,"Slash - 90T",N_Slash,"Grand Cross - 100T",N_GrandC,"Quadrille - 110T",N_Quadr,"Mjolnir - 1000T",N_MJ,"Nevermind",N_NVM; + + if (#Treasure_Token < 65) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-65; + logmes "Treasure Token: Bought a Spike"; + getitem 1523,1; + close; +N_Slash: + if (#Treasure_Token < 90) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-90; + logmes "Treasure Token: Bought a Slash"; + getitem 1526,1; + close; +N_GrandC: + if (#Treasure_Token < 100) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-100; + logmes "Treasure Token: Bought a Grand Cross"; + getitem 1528,1; + close; +N_Quadr: + if (#Treasure_Token < 110) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-110; + logmes "Treasure Token: Bought a Quadrille"; + getitem 1527,1; + close; +N_MJ: + if (#Treasure_Token < 1000) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-1000; + logmes "Treasure Token: Bought a Mjolnir"; + getitem 1530,1; + close; + +N_Whip: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Rapture Rose - 50T",-,"Chemeti - 65T",N_Chemeti,"Nevermind",N_NVM; + + if (#Treasure_Token < 50) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-50; + logmes "Treasure Token: Bought a Rapture Rose"; + getitem 1963,1; + close; +N_Chemeti: + if (#Treasure_Token < 65) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-65; + logmes "Treasure Token: Bought a Chemeti"; + getitem 1964,1; + close; + +N_Wand: + mes "[Ash]"; + mes "This is what we have to offer."; + next; + menu "Mighty Staff - 90T",-,"Wizardry Staff - 150T",N_Wizardry,"Bone Wand - 110T",N_BoneW,"Staff of Soul - 120T",N_SOSoul,"Nevermind",N_NVM; + + if (#Treasure_Token < 90) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-90; + logmes "Treasure Token: Bought a Mighty Staff"; + getitem 1613,1;//Items: Mighty_Staff, + close; +N_Wizardry: + if (#Treasure_Token < 150) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-150; + logmes "Treasure Token: Bought a Wizardry Staff"; + getitem 1473,1;//Items: Wizardy_Staff, + close; +N_BoneW: + if (#Treasure_Token < 110) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-110; + logmes "Treasure Token: Bought a Bone Wand"; + getitem 1615,1;//Items: Bone_Wand, + close; +N_SOSoul: + if (#Treasure_Token < 120) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-120; + logmes "Treasure Token: Bought a Staff of Soul"; + getitem 1472,1;//Items: Staff_of_Soul, + close; + +N_BuyCards: + mes "[Ash]"; + mes "This is what we have to offer. All Cards are 300T"; + next; + menu "Poring Card - 2T",-,"Pasana Card - 420T",N_CPasana,"Dokebi Card - 420T",N_CDok,"Swordfish Card - 420T",N_CSFish, + "Sandman Card - 420T",N_CSMan,"Drainliar Card - 360T",N_CDrain,"Kaho Card - 360T",N_CKaho,"Mandragora Card - 360T",N_CMand, + "Vadon Card - 360T",N_CVadon,"Mummy Card - 540T",N_CMummy,"Zenorc Card - 240T",N_CZeno,"Condor Card - 240T",N_CCond, + "Zombie Card - 210T",N_CZomb,"Nevermind",N_NVM; + + if (#Treasure_Token < 2) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-2; + logmes "Treasure Token: Bought a Poring Card"; + getitem 4001,1;//Items: Poring_Card, + close; + +N_CPasana: + if (#Treasure_Token < 420) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-420; + logmes "Treasure Token: Bought a Pasana Card"; + getitem 4099,1;//Items: Pasana_Card, + close; +N_CDok: + if (#Treasure_Token < 420) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-420; + logmes "Treasure Token: Bought a Dokebi Card"; + getitem 4098,1;//Items: Dokebi_Card, + close; +N_CSFish: + if (#Treasure_Token < 420) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-420; + logmes "Treasure Token: Bought a Swordfish Card"; + getitem 4089,1;//Items: Sword_Fish_Card, + close; +N_CSMan: + if (#Treasure_Token < 420) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-420; + logmes "Treasure Token: Bought a Sandman Card"; + getitem 4101,1;//Items: Sand_Man_Card, + close; +N_CDrain: + if (#Treasure_Token < 360) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-360; + logmes "Treasure Token: Bought a Drainliar Card"; + getitem 4069,1;//Items: Drainliar_Card, + close; +N_CKaho: + if (#Treasure_Token < 360) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-360; + logmes "Treasure Token: Bought a Kaho Card"; + getitem 4065,1;//Items: Kaho_Card, + close; +N_CMand: + if (#Treasure_Token < 360) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-360; + logmes "Treasure Token: Bought a Mandragora Card"; + getitem 4030,1;//Items: Mandragora_Card, + close; +N_CVadon: + if (#Treasure_Token < 360) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-360; + logmes "Treasure Token: Bought a Vadon Card"; + getitem 4049,1;//Items: Vadon_Card, + close; +N_CMummy: + if (#Treasure_Token < 540) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-540; + logmes "Treasure Token: Bought a Mummy Card"; + getitem 4106,1;//Items: Mummy_Card, + close; +N_CZeno: + if (#Treasure_Token < 240) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-240; + logmes "Treasure Token: Bought a Zenorc Card"; + getitem 4096,1;//Items: Zenorc_Card, + close; +N_CCond: + if (#Treasure_Token < 240) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-240; + logmes "Treasure Token: Bought a Condor Card"; + getitem 4015,1;//Items: Condor_Card, + close; +N_CZomb: + if (#Treasure_Token < 210) goto N_NeedToken; + set #Treasure_Token,#Treasure_Token-210; + logmes "Treasure Token: Bought a Zombie Card"; + getitem 4038,1;//Items: Zombie_Card, + close; +} diff --git a/npc/custom/quests/umbalian_language.txt b/npc/custom/quests/umbalian_language.txt new file mode 100644 index 000000000..674ea6e03 --- /dev/null +++ b/npc/custom/quests/umbalian_language.txt @@ -0,0 +1,208 @@ +//===== rAthena Script ======================================= +//= Custom Umbalian Language Quest +//===== By: ================================================== +//= sabernet09 +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= 1.1 Removed it from offical Umbala Quests [Lupus] +//============================================================ + +prontera,145,290,5 script Mason 742,{ + mes "[Mason]"; + if(umb_lang==0) goto L_NOT_GOT_QUEST; + if(umb_lang==2 || umb_mason==1) goto L_AGAIN; + + mes "Hey there, I came here to Prontera in search of an old lady who can remove cards from slots. Do you know where I can find her?"; + menu "Yes",-, "No",M_NO; + + mes "Oooo, could you please tell me where she's at? I'd be really appreciative."; + menu "Swordsman Association",-, "Sanctuary",M_Boo1,"Prontera Chivalry",M_Boo2,"Trading Post",M_Boo3,"Kit Shop",M_Boo4,"Inn",M_Boo5,"Armory",M_DONE,"Library",M_Boo6,"Job Agency",M_Boo7,"Prontera Castle",M_Boo8,"City Hall",M_Boo9; + + next; + mes "[Mason]"; + mes "Hmm... I dunno why she would be there... guess I'll take a look."; + close; +M_Boo1: + next; + mes "[Mason]"; + mes "Wow I never knew she was a religious person... I'll see to it thanks."; + close; +M_Boo2: + next; + mes "[Mason]"; + mes "Hmm.... are you sure about that?"; + close; +M_Boo3: + next; + mes "[Mason]"; + mes "Why would she need to go there? I think you might be mistaken."; + close; +M_Boo4: + next; + mes "[Mason]"; + mes "The only thing she'd need at a Kit shop is medicine for her rheumatism. She's probably long gone from there by now."; + close; +M_Boo5: + next; + mes "[Mason]"; + mes "I don't think she needs to be there, she LIVES here in Prontera."; + close; +M_Boo6: + next; + mes "[Mason]"; + mes "Ah I see, if she's studying then I don't want to bother her. Thanks anyways."; + close; +M_Boo7: + next; + mes "[Mason]"; + mes "Job Agency? I don't think so. Don't lead me all around Prontera please! She's already a teacher here."; + close; +M_Boo8: + next; + mes "[Mason]"; + mes "The castle eh, I don't want to step in there... just doesn't feel like my style. I don't like that noble feeling of importance type of thing."; + close; +M_Boo9: + next; + mes "[Mason]"; + mes "O wow, did she become an important part of Prontera? I'd think she's too busy for me to visit. I'll try again later."; + close; +M_DONE: + next; + mes "[Mason]"; + mes "Ah, I heard that her class was somewhere around there... thanks a lot! Here's a lil something for your help."; + getitem 7117,1;//Items: Torn Spell Book, + set umb_mason,1; + close; + +L_AGAIN: + emotion e_thx; + mes "Yay, I found her! Thank you very much for you help!"; + close; + +L_NOT_GOT_QUEST: + mes "Hi! I came here to Prontera in search of an old lady... But..."; + close; +M_NO: + mes "Oh.. Ok.. Thanks anyways."; + close; +} + +aldebaran,153,212,1 script Mojo 740,{ + mes "[Mojo]"; + if(umb_lang!=1) goto L_NOT_GOT_QUEST; + mes "Oh no! I lost my teacher's ^FF0000old magic book^000000!"; + mes "What am I going to do... those dumb Bathory..."; + if(umb_lang==1) set umb_mojo,1; + close; +L_NOT_GOT_QUEST: + emotion e_what; + mes "I lost my teacher's book! What am I going to do..."; + close; +} + +amatsu,267,189,4 script Marie 744,{ + mes "[Marie]"; + if(umb_lang==0) goto L_NOT_GOT_QUEST; + if(umb_lang==2 || umb_marie==1) goto L_AGAIN; + if(countitem(9001)>0 && countitem(643)>0) goto L_DONE;//Items: Poring Egg, Pet Incubator, + mes "Hello, is there something you need?"; + next; + menu "No nothing at all.",M_NO,"Your teacher sent me.",-; + + mes "[Marie]"; + mes "What does he want from me?"; + emotion e_what; + next; + mes "[Marie]"; + mes "Oh wait, I see... he wants his reference scroll back am I right? Well, I'm kinda still using it buuut... I'll give it back if you can gimme a poring egg and an incubator. Those things are so cute!"; + close; + +L_NOT_GOT_QUEST: + emotion e_what; + mes "Hi! What do you want from me?"; + close; + +M_NO: + mes "[Marie]"; + mes "Hrrmm okay? Cya then.."; + close; + +L_DONE: + mes "Heyyy there, you have a poring egg and the pet incubator to go with it! Are those for me?"; + menu "Yep!",-, "Sorry, no.",M_DOH; + + mes "[Marie]"; + if(countitem(9001)==0 && countitem(643)==0) goto M_DOH;//Items: Poring Egg, Pet Incubator, + mes "Yatta! Here's a lil something in return."; + delitem 9001,1;//Items: Poring Egg, + delitem 643,1;//Items: Pet Incubator, + getitem 7118,1;//Items: Torn Scroll, + set umb_marie,1; //got Torn Scroll + close; + +M_DOH: + mes "Oh.. pooo... sigh..."; + close; + +L_AGAIN: + emotion e_thx; + mes "Yay! I love Porings!"; + close; +} + +yuno,157,366,2 script Wise Man Fabius 743,{ + mes "[Fabius]"; + if(event_umbala >= 3) set umb_lang,2; //You already learnt Umbalian language from Umbalian Chief. So this Quest is disabled + if(umb_lang<2) goto L_QUEST; + mes "You speak Umbalian fluently! So you will never forget the language of Umbalians!"; + close; +L_QUEST: + if((countitem(1006) < 1) || (countitem(7118) < 1) || (countitem(7117) < 1)) goto L_DONE;//Items: Old Magic Book, Torn Scroll, Torn Spell Book, + delitem 1006,1; //Items: Old Magic Book, + delitem 7118,1; //Items: Torn Scroll, + delitem 7117,1;//Items: Torn Spell Book, + emotion e_thx; + mes "Ah, you've done well in retrieving my references. These artifacts holds information about ruins around the world, from the burning hell of the Magma Dungeon, to the strange eerie Hidden Forest of Yggsadril."; + next; + mes "[Fabius]"; + mes "But enough talk, you're just eager to get your reward aren't you? Well it may not sound much, but my reward for you is knowledge..."; + next; + mes "[Fabius]"; + mes "Actually it is knowledge of the Umbalian people. They are connected to this world of Midgard in some special way, we just can't confirm it yet. There is a theory that they may be like the elves and protect the ancient tree of Yggsadril."; + next; + mes "[Fabius]"; + mes "And I, a great wise man of Yuno, will teach you their language!"; + next; + mes "^0000FF Learned the language of Umbalians! ^000000"; + set umb_lang,2; + //clear subquests + set umb_marie,0; + set umb_mason,0; + set umb_mojo,0; + //make you understand Umbalian people + //it's an alternative way to learn Umbalian Language + if(event_umbala < 3) set event_umbala,3; + close; +L_DONE: + set umb_lang,1; //got Quest + mes "Argh! My three students ran off with my references! Hey you! Can you get them back for me? I'll gladly reward you."; + next; + mes "[Fabius]"; + mes "From what I know, they're in different seperate towns making something out of themselves."; + if(umb_marie==0 && umb_mason==0 && umb_mojo==0) goto L_NOT_MET; + if(umb_marie==1) mes "Oh... You found Marie in Amatsu."; + if(umb_mojo==1) mes "You saw Mojo in Aldebaran?"; + if(umb_mason==1) mes "So... Mason's in Prontera now... Well..."; + if(umb_marie==0) mes "I wonder where is our sea girl Marie?"; + if(umb_mojo==0) mes "Mojo should be somewhere near water..."; + if(umb_mason==0) mes "Where'd Mason go then..."; + mes "Oh yeah, tell them I sent you"; + close; +L_NOT_MET: + mes "Oh yeah, tell them I sent you, their names are Marie, Mason and Mojo."; + close; +} diff --git a/npc/custom/quests/valhallen.txt b/npc/custom/quests/valhallen.txt new file mode 100644 index 000000000..19480b105 --- /dev/null +++ b/npc/custom/quests/valhallen.txt @@ -0,0 +1,68 @@ +//===== rAthena Script ======================================= +//= Valhallen Items Quests NPC +//===== By: ================================================== +//= Avaji +//===== Current Version: ===================================== +//= 1.1 +//===== Compatible With: ===================================== +//= rAthena SVN +//===== Description: ========================================= +//= All-in-one: Mjolnir,Sleipnir,Brisingamen,Gleipnir,Megingjard +//= Custom quest, ingredients based on official RO FAQ +//===== Additional Comments: ================================= +//= 1.1 Optimized. [Euphy] +//============================================================ + +prontera,147,171,5 script Lenneth 811,{ + mes "[Lenneth]"; + mes "I come from Valhalla to aid you."; + mes "I can transmute for you many of the Valhallen items,"; + mes "although they require many rare elements to make."; + next; + switch(select("Mjolnir:Sleipnir:Brisingamen:Gleipnir:Megingjard")) { + case 1: + mes "[Lenneth]"; + mes "^3355FFMjolnir^000000 is the mighty Hammer of Thor."; + setarray .@Items[0],1530,1531,2,984,20,985,5,969,40,7074,2,7075,4,7078,5,7087,5,7089,5; + break; + case 2: + mes "[Lenneth]"; + mes "^3355FFSleipnir^000000 are boots made after Odin's War Horse."; + setarray .@Items[0],2410,2406,2,984,1,969,20,985,10,7076,3,7079,5,7083,3,7086,3; + break; + case 3: + mes "[Lenneth]"; + mes "^3355FFBrisingammen^000000 is the magical Necklace of Freyja, goddess of Beauty."; + setarray .@Items[0],2630,2603,1,726,2,722,3,727,10,723,5,969,20,7073,4,7077,4,7088,3,7090,3,7092,3; + break; + case 4: + mes "[Lenneth]"; + mes "The ^3355FFGleipnir^000000 is a light yet strong rope required to make ^3355FFMegingjard^000000"; + setarray .@Items[0],7058,7080,4,7081,5,7082,4,7084,3,7085,3; + break; + case 5: + mes "[Lenneth]"; + mes "The ^3355FFMegingjard^000000 is the powerful Belt of Thor."; + setarray .@Items[0],2629,7058,1,2627,1,969,10,726,10,984,5; + break; } + mes "^FF0000The items I need are as follows:^000000"; + for(set .@i,1; .@i<getarraysize(.@Items[0]); set .@i,.@i+2) { + mes " ~ "+.@Items[.@i+1]+"x ^3355FF"+getitemname(.@Items[.@i])+"^000000"; + if (countitem(.@Items[.@i]) < .@Items[.@i+1]) set .@nr,1; } + if (.@nr) close; + next; + mes "[Lenneth]"; + mes "Do you desire ^3355FF"+getitemname(.@Items[0])+"^000000?"; + next; + if(select("Yes:No")==2) { + mes "[Lenneth]"; + mes "Please return if you change your mind."; + close; } + mes "[Lenneth]"; + mes "Here is your ^3355FF"+getitemname(.@Items[0])+"^000000."; + mes "May it serve you well."; + for(set .@i,1; .@i<getarraysize(.@Items); set .@i,.@i+2) + delitem .@Items[.@i], .@Items[.@i+1]; + getitem .@Items[0],1; + close; +} |