summaryrefslogtreecommitdiff
path: root/npc/006-1
diff options
context:
space:
mode:
Diffstat (limited to 'npc/006-1')
-rw-r--r--npc/006-1/_import.txt11
-rw-r--r--npc/006-1/_mobs.txt23
-rw-r--r--npc/006-1/_warps.txt32
-rwxr-xr-xnpc/006-1/mapflags.txt1
-rwxr-xr-xnpc/006-1/mika.txt8
-rwxr-xr-xnpc/006-1/miriam.txt318
-rwxr-xr-xnpc/006-1/pachua.txt240
-rwxr-xr-xnpc/006-1/spirit.txt292
-rwxr-xr-xnpc/006-1/traveler.txt7
-rwxr-xr-xnpc/006-1/tree.txt159
10 files changed, 1091 insertions, 0 deletions
diff --git a/npc/006-1/_import.txt b/npc/006-1/_import.txt
new file mode 100644
index 00000000..e3b85ebe
--- /dev/null
+++ b/npc/006-1/_import.txt
@@ -0,0 +1,11 @@
+// Map 006-1: Desert Mountains
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/006-1/_mobs.txt",
+"npc/006-1/_warps.txt",
+"npc/006-1/mapflags.txt",
+"npc/006-1/mika.txt",
+"npc/006-1/miriam.txt",
+"npc/006-1/pachua.txt",
+"npc/006-1/spirit.txt",
+"npc/006-1/traveler.txt",
+"npc/006-1/tree.txt",
diff --git a/npc/006-1/_mobs.txt b/npc/006-1/_mobs.txt
new file mode 100644
index 00000000..ee538196
--- /dev/null
+++ b/npc/006-1/_mobs.txt
@@ -0,0 +1,23 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 006-1: Desert Mountains mobs
+006-1,49,52,3,1 monster Crocotree 1010,1,100000,30000
+006-1,53,36,8,6 monster Maggot 1026,3,150000,10000
+006-1,89,26,16,6 monster Maggot 1026,5,15000,75000
+006-1,113,41,6,18 monster Maggot 1026,8,15000,75000
+006-1,113,51,3,1 monster Maggot 1026,3,15000,75000
+006-1,86,46,14,2 monster Maggot 1026,3,15000,75000
+006-1,105,73,10,7 monster Maggot 1026,3,15000,75000
+006-1,73,102,4,6 monster Maggot 1026,4,15000,75000
+006-1,104,100,5,7 monster Maggot 1026,8,15000,75000
+006-1,82,72,12,8 monster Maggot 1026,8,15000,75000
+006-1,95,114,8,2 monster Maggot 1026,5,15000,75000
+006-1,57,119,9,1 monster Maggot 1026,4,15000,75000
+006-1,33,97,13,16 monster Piousse 1003,10,100000,30000
+006-1,58,49,1,1 monster Ratto 1005,3,100000,30000
+006-1,34,50,2,2 monster Crocotree 1010,2,40000,50000
+006-1,96,92,10,24 monster Crocotree 1010,2,40000,50000
+006-1,35,97,14,14 monster Piou 1002,20,100000,30000
+006-1,28,73,1,1 monster Ratto 1005,2,100000,30000
+006-1,33,59,1,1 monster Ratto 1005,2,100000,30000
+006-1,37,73,3,1 monster Crocotree 1010,1,100000,30000
+006-1,100,36,19,12 monster Crocotree 1010,2,40000,50000
diff --git a/npc/006-1/_warps.txt b/npc/006-1/_warps.txt
new file mode 100644
index 00000000..b7c5897c
--- /dev/null
+++ b/npc/006-1/_warps.txt
@@ -0,0 +1,32 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 006-1: Desert Mountains warps
+006-1,40,26,0 warp #006-1_40_26 0,0,006-3,40,28
+006-1,60,58,0 warp #006-1_60_58 0,0,006-3,60,70
+006-1,62,30,0 warp #006-1_62_30 0,0,006-3,62,32
+006-1,55,27,0 warp #006-1_55_27 0,0,006-3,55,29
+006-1,77,44,0 warp #006-1_77_44 0,0,006-3,77,46
+006-1,86,24,0 warp #006-1_86_24 0,0,006-3,86,26
+006-1,91,24,0 warp #006-1_91_24 0,0,006-3,91,26
+006-1,98,46,0 warp #006-1_98_46 0,0,006-3,104,46
+006-1,114,22,0 warp #006-1_114_22 0,0,006-3,122,26
+006-1,114,49,0 warp #006-1_114_49 0,0,006-3,114,51
+006-1,102,53,0 warp #006-1_102_53 0,0,006-3,110,58
+006-1,117,57,0 warp #006-1_117_57 0,0,006-3,125,61
+006-1,92,63,0 warp #006-1_92_63 0,0,006-3,92,65
+006-1,112,74,0 warp #006-1_112_74 0,0,006-3,112,76
+006-1,111,110,0 warp #006-1_111_110 0,0,032-3,56,60
+006-1,83,117,0 warp #006-1_83_117 0,0,006-3,79,121
+006-1,38,121,0 warp #006-1_38_121 0,0,006-3,38,123
+006-1,74,90,0 warp #006-1_74_90 0,0,006-3,74,92
+006-1,51,90,0 warp #006-1_51_90 0,0,006-3,51,92
+006-1,30,123,0 warp #006-1_30_123 0,0,032-3,128,33
+006-1,33,85,0 warp #006-1_33_85 0,0,006-2,58,43
+006-1,23,85,0 warp #006-1_23_85 0,0,006-2,48,43
+006-1,23,100,0 warp #006-1_23_100 0,0,006-2,67,64
+006-1,21,108,0 warp #006-1_21_108 0,0,006-2,65,72
+006-1,37,26,0 warp #006-1_37_26 0,0,006-1,37,23
+006-1,37,24,0 warp #006-1_37_24 0,0,006-1,37,27
+006-1,55,46,0 warp #006-1_55_46 0,0,005-3,86,33
+006-1,20,48,0 warp #006-1_20_48 0,1,002-1,118,95
+006-1,51,68,0 warp #006-1_51_68 0,0,005-3,73,61
+006-1,64,77,0 warp #006-1_64_77 0,0,005-3,107,101
diff --git a/npc/006-1/mapflags.txt b/npc/006-1/mapflags.txt
new file mode 100755
index 00000000..2747e250
--- /dev/null
+++ b/npc/006-1/mapflags.txt
@@ -0,0 +1 @@
+//006-1 mapflag resave 006-1,36,18
diff --git a/npc/006-1/mika.txt b/npc/006-1/mika.txt
new file mode 100755
index 00000000..c1134b05
--- /dev/null
+++ b/npc/006-1/mika.txt
@@ -0,0 +1,8 @@
+006-1,39,22,0 script Mika NPC114,{
+ mes "[Mika]";
+ mes "\"My father told me about a man living in this desert who makes clothes out of snake skin.\"";
+ next;
+ mes "[Mika]";
+ mes "\"Maybe you can find him, but be careful you don't get lost in the tunnels!\"";
+ close;
+}
diff --git a/npc/006-1/miriam.txt b/npc/006-1/miriam.txt
new file mode 100755
index 00000000..a42253e6
--- /dev/null
+++ b/npc/006-1/miriam.txt
@@ -0,0 +1,318 @@
+
+006-1,115,111,0 script Miriam NPC175,{
+ @npc_distance = 2;
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+
+ if (getskilllv(SKILL_SPEED)) goto L_fast;
+ if (getequipid(equip_torso) < 0) goto L_Naked;
+ if (QUEST_MIRIAM == 0) goto L_Intro;
+ if (QUEST_MIRIAM == 1) goto L_Ask1;
+ if (QUEST_MIRIAM == 2) goto L_Ask2;
+ if (QUEST_MIRIAM == 3) goto L_Teach;
+ if (QUEST_MIRIAM == 4) goto L_testoffer;
+ if (QUEST_MIRIAM_run != 0) goto L_checktime;
+ if (QUEST_MIRIAM_start != 0) goto L_wasting;
+ if (QUEST_MIRIAM == 5) goto L_testoffer;
+ goto L_Intro;
+
+L_Intro:
+ mes "You see a woman sitting in the hot sand with eyes wide open... But she does not seem to be looking at something in particular...";
+ next;
+ menu
+ "Ehr... Hi, my name is " +strcharinfo(0)+ ". Are you OK?",L_Next;
+
+L_Next:
+ mes "[Miriam]";
+ mes "\"...";
+ next;
+ menu
+ "Hello?",L_Continue;
+
+L_Continue:
+ mes "[Miriam]";
+ mes "\"Yes, I am. Why? Do you think I am not OK? I am OK. You interrupted my meditation. Now I will need hours to calm down and stay quiet! Yes, yes, I know, I'm a fast talker!\"";
+ next;
+ mes "\"In fact, I am fast in everything I do! I can kill a Mountain Snake before it even starts to think about attacking me! Yes my friend, in a battle, speed is power!";
+ next;
+ menu
+ "Wow! Very impressi...",L_More;
+
+L_More:
+ mes "[Miriam]";
+ mes "\"Yes, yes, I know. But if there is one thing I am NOT good at, it is meditation! My master said I need to meditate, but... Ohh! So difficult to stay quiet! And when you FINALLY do, someone INTERRUPTS you, asking if you are 'OK'...\"";
+ next;
+ menu
+ "Oh, I am sorry! I didn't know you were meditating...",L_WallText;
+
+L_WallText:
+ mes "[Miriam]";
+ mes "\"You are really sorry? Ok, but that is not enough... I need you to do something for me. As you can imagine, I will need a lot of time to concentrate and get back to the state I was when you interrupted me.\"";
+ next;
+ mes "\"But the problem is that I wasn't expecting to be here for so long, so I will need some food and something to drink.\"";
+ next;
+ mes "\"So, if you really want to prove that you are sorry, bring me 5 Concentration Potions and 10 Snake Tongues.\"";
+ next;
+ menu
+ "Ok, but those potions will not help with your mental concent...",L_MoreTalking,
+ "Sorry, but I can't help you right now.",L_canthelp;
+
+L_MoreTalking:
+ mes "[Miriam]";
+ mes "\"ah, ah, ah... I know what I am doing! Now run and get what I asked.\"";
+ QUEST_MIRIAM = 2;
+ close;
+
+L_canthelp:
+ mes "[Miriam]";
+ mes "\"Oh, really? So you better pray to not need my help in the future!\"";
+ QUEST_MIRIAM = 1;
+ close;
+
+L_canthelp2:
+ mes "[Miriam]";
+ mes "\"...\"";
+ next;
+ mes "\"...\"";
+ next;
+ mes "\"Well, if you don't have time to help, at least don't make things difficult for me!\"";
+ close;
+
+L_Ask1:
+ mes "[Miriam]";
+ mes "\"So, you are back... have you changed your mind about my request?\"";
+ next;
+ menu
+ "Yes, I will get what you want!",L_WillGetItems,
+ "No, I have no time right now.",L_canthelp2;
+
+L_WillGetItems:
+ QUEST_MIRIAM = 2;
+ mes "\"Good. So, run and get it!\"";
+ close;
+
+L_Ask2:
+ mes "[Miriam]";
+ mes "\"Did you get what I asked for?\"";
+ next;
+ menu
+ "Yes, here it is!",L_Getitems,
+ "What was that again?", L_Ask3,
+ "No, not yet.",L_Hurry;
+
+L_Hurry:
+ mes "\"So please hurry up!\"";
+ close;
+
+L_Ask3:
+ mes "[Miriam]";
+ mes "\"You have a small mind, haven't you? I am meditating here and I asked you to bring me stuff, so I can concentrate better.\"";
+ next;
+ mes "\"And stop asking such silly questions in the future.\"";
+ next;
+ mes "\"So, if you really want to help me now, bring me 5 Concentration Potions and 10 Snake Tongues.\"";
+ close;
+
+L_Getitems:
+ if (countitem("SnakeTongue") < 10
+ || countitem("ConcentrationPotion") < 5)
+ goto L_NotEnough;
+ delitem "SnakeTongue", 10;
+ delitem "ConcentrationPotion", 5;
+ QUEST_MIRIAM = 3;
+ mes "[Miriam]";
+ mes "\"Good job! Now I have enough food to stay in this desert for days!\"";
+ next;
+ mes "\"Now, since you helped me, maybe I can teach you a basic skill, but only if you prove yourself to be a fast runner! Come back and talk to me when you think you are prepared to learn.\"";
+ close;
+
+L_NotEnough:
+ mes "[Miriam]";
+ mes "\"Hey, you don't have all that I asked. Come back when you have everything.\"";
+ close;
+
+L_Teach:
+ mes "[Miriam]";
+ mes "\"Hmm... do you think you can learn the special Speed skill?\"";
+ next;
+ menu
+ "Yes, I am prepared...", L_Prepared,
+ "I am already fast.", L_Notfast;
+
+L_Prepared:
+ @torso$ = getitemlink(getequipid(equip_torso));
+ @weight = MaxWeight/Weight;
+ if (@weight < 3)
+ goto L_heavyweight;
+ if (Agi < 60)
+ goto L_slow;
+ if (BaseLevel < 60)
+ goto L_LowLevel;
+ if (countitem("SteelShield") > 0
+ || countitem("WarlordHelmet") > 0
+ || countitem("CrusadeHelmet") > 0
+ || countitem("WarlordPlate") > 0
+ || countitem("KnightsHelmet") > 0
+ || countitem("InfantryHelmet") > 0
+ || countitem("ChainmailShirt") > 0
+ || countitem("WarlordBoots") > 0
+ || countitem("LightPlatemail") > 0
+ || countitem("CandleHelmet") > 0)
+ goto L_heavymetal;
+ goto L_Offer;
+
+L_heavyweight:
+ mes "[Miriam]";
+ mes "\"Wow... Why do you bring so many things with you? You must be carrying more than one third of your own weight! I won't teach you unless you get rid of some stuff... \"";
+ close;
+
+L_heavymetal:
+ mes "[Miriam]";
+ mes "\"Hmm... I see... You want to be one of those lazy slow warriors... wasting all their strength carrying kilos of metal clothes... Why does no one see the great advantages of a beautiful, flexible, lightweight armor nowadays?\"";
+ next;
+ mes "\"Come back here when you get rid of this junk...\"";
+ close;
+
+L_slow:
+ mes "[Miriam]";
+ mes "Oh, wait, wait... " +Agi+ " Agility? Are you serious? What do you do with all your Character points? Put them all to 'Strength'? Really... I don't even want to know... Come back here when you have a decent character points distribution!\"";
+ close;
+
+L_LowLevel:
+ mes "[Miriam]";
+ mes "\"Come back here when you are old enough. I even wonder how you could get here so unexperienced as you are.\"";
+ close;
+
+L_Offer:
+ mes "[Miriam]";
+ mes "\"Hmm! You look great in these clothes! They look very comfortable too... And it seems like you are not carrying too much weight.\"";
+ next;
+ if (!(getskilllv(SKILL_POOL)))
+ goto L_Noskill;
+ menu
+ "Yes, I look really good in this.",L_TorsoNext;
+
+L_TorsoNext:
+ mes "[Miriam]";
+ mes "\"I see. I like the way you distributed your Character Points too... " +Agi+ " points to Agility! You really know how to prepare yourself for a good fight!\"";
+ next;
+ mes "\"Well... Even if you have a potential to be a good fighter, moving the way you do will not help. You need to be fast to avoid the monsters. \"";
+ next;
+ mes "\"So, if you pass a small test I can teach you a skill that will increase your walking speed! You will not be as fast as I am, but I am sure it will be useful.\"";
+ next;
+ menu
+ "I'm in! What kind of test is it?",L_test,
+ "I don't think I need more speed right now",L_GiveUp;
+
+L_test:
+ mes "[Miriam]";
+ mes "\"Great! The test is simple. You need to run as fast as you can from the place where I am sitting to the mountains and talk to Pachua, the chief. When you get there and talk to Pachua, he will send a special smoke signal to me, so I can know how much time it took for you to get there.\"";
+ next;
+ mes "\"If you make it in a good time, I will teach you the special speeding skill. If not, you can always try again. So, are you ready?\"";
+ next;
+ menu
+ "Yes, let's do it!",L_LetsDoThis,
+ "No, I need to stretch my muscles first!",L_stretch;
+
+L_LetsDoThis:
+ close2;
+ message strcharinfo(0), "Miriam quickly grabs your arm and pull you to the place where she is sitting.";
+ // Warp the player to the place where the NPC is defined, so he can't cheat.
+ warp "032-1",55,21;
+ npctalk strnpcinfo(0), "Run " +strcharinfo(0)+ ", run!";
+ QUEST_MIRIAM = 5;
+ QUEST_MIRIAM_start = gettimetick(2);
+ QUEST_MIRIAM_cheat = 0;
+ end;
+
+L_Naked:
+ mes "[Miriam]";
+ mes "\"Hmmm?! Please put on some clothes before talking to me.\"";
+ close;
+
+L_Notfast:
+ mes "[Miriam]";
+ mes "\"Hah! If you think so...\"";
+ close;
+
+L_Noskill:
+ mes "[Miriam]";
+ mes "\"For a person like you, I could even teach a useful skill! Too bad you don't have the basic abillities to learn it...\"";
+ close;
+
+L_GiveUp:
+ mes "[Miriam]";
+ mes "\"Oh, that is too bad... But if you change your mind, come back!\"";
+ QUEST_MIRIAM = 4;
+ close;
+
+L_testoffer:
+ mes "[Miriam]";
+ mes "\"Are you ready for the test now?\"";
+ next;
+ menu
+ "Yes!",L_test,
+ "Not yet.",L_close;
+
+L_close:
+ close;
+
+L_warning:
+ mes "[Miriam]";
+ mes "\"I know very well what you tried to do. I will not teach you the speed skill if you keep trying this kind of trick!\"";
+ next;
+ goto L_testoffer;
+
+L_stretch:
+ mes "[Miriam]";
+ mes "\"Ok. Good idea... Stretching exercises can increase your flexibility and even prevent injuries!\"";
+ QUEST_MIRIAM = 4;
+ close;
+
+L_wasting:
+ mes "[Miriam]";
+ mes "\"Don't waste your time talking to me! RUN and talk to Pachua!\"";
+ close;
+
+L_checktime:
+ if (QUEST_MIRIAM_cheat != 0)
+ goto L_warning;
+ if (QUEST_MIRIAM_run <= 210)
+ goto L_Goodjob;
+ goto L_tryagain;
+
+L_tryagain:
+ mes "[Miriam]";
+ mes "\"You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. It is not enough.\"";
+ QUEST_MIRIAM_run = 0;
+ close;
+
+L_Goodjob:
+ mes "[Miriam]";
+ mes "\"Great job! You needed " + QUEST_MIRIAM_run + " seconds to reach Pachua. Very impressive for a person like you.\"";
+ next;
+ mes "\"Now I need you to relax. Do NOT move. This teaching process can be painful sometimes.\"";
+ next;
+ mes "Miriam stares into your eyes and starts to scream some strange words very close to your ears.";
+ next;
+ mes "You feel dizzy and as soon as you move your head and look to the ground, Miriam pushes you hard, sending you meters away from her.";
+ close2;
+ warp "032-1",55,22;
+ // free all used player variables. This can be done, since there is a conditional on the speedskill at the beginning.
+ QUEST_MIRIAM_start = 0;
+ QUEST_MIRIAM_run = 0;
+ QUEST_MIRIAM = 0;
+ message strcharinfo(0), "[You gain 2500 experience points]";
+ message strcharinfo(0), "[You learned Speed Skill]";
+ addtoskill SKILL_SPEED, 1;
+ getexp 2500, 0;
+ set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set.
+ close;
+
+L_fast:
+ mes "[Miriam]";
+ mes "\"I hope you make a good use of your new skill... Take care!\"";
+ set QUEST_MIRIAM_cheat, 0; // reset just in case it is still set.
+ close;
+
+}
diff --git a/npc/006-1/pachua.txt b/npc/006-1/pachua.txt
new file mode 100755
index 00000000..4d3c2be1
--- /dev/null
+++ b/npc/006-1/pachua.txt
@@ -0,0 +1,240 @@
+006-1,24,113,0 script Pachua NPC143,{
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+
+ @halloween_npc_id = $@halloween_npc_pachua;
+ callfunc "TrickOrTreat";
+
+ @LEATHER_PATCH_PRICE = 300;
+ @wants_leather_patch = QUEST_Forestbow_state & NIBBLE_4_MASK;
+
+ if (QUEST_MIRIAM_cheat != 0) goto L_Warp2_cheat;
+ if (QUEST_MIRIAM_start != 0) goto L_smoke;
+ goto L_Begin;
+
+L_Begin:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"How!\"";
+ next;
+
+ if (getequipid(equip_head) == 643 || getequipid(equip_head) == 644) goto L_WearingCowboy;
+ if (getequipid(equip_legs) == 642) goto L_WearingChaps;
+
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"For generations my tribe has been crafting special clothes out of different items.\"";
+ next;
+ goto L_Check_Shops;
+
+L_Check_Shops:
+ if((countitem("JeansShorts") > 0 && countitem("SnakeSkin") > 9) && (countitem("FancyHat") > 0 && countitem("SnakeSkin") > 1)) goto L_Super_store;
+ if(countitem("JeansShorts") > 0 && countitem("SnakeSkin") > 9) goto L_Chaps_store;
+ if(countitem("FancyHat") > 0 && countitem("SnakeSkin") > 1) goto L_Cowboy_store;
+
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Maybe if you bring me the right materials I can make something for you.\"";
+ next;
+ if (@wants_leather_patch)
+ menu
+ "Wait, can you make a leather patch for me?", L_leather_patch,
+ "OK, bye.", L_close;
+ goto L_close;
+
+S_CheckStuff:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Let me see what you have there.\"";
+ next;
+ return;
+
+L_Super_store:
+ callsub S_CheckStuff;
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Ahh you have lots of good items to work with.\"";
+ mes "";
+ mes "\"With them I can make you either";
+ mes "a Cowboy hat or Snake Skin Chaps\"";
+ next;
+ if (@wants_leather_patch)
+ menu
+ "Cowboy hat, please.", L_BuyCowboy,
+ "Snake Skin Chaps sound good.", L_BuyChaps,
+ "Can you make a leather patch?", L_leather_patch,
+ "Not now, maybe later.", L_NoDeal;
+ menu
+ "Cowboy hat, please.", L_BuyCowboy,
+ "Snake Skin Chaps sound good.", L_BuyChaps,
+ "Not now, maybe later.", L_NoDeal;
+
+L_Cowboy_store:
+ callsub S_CheckStuff;
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"To make you a Cowboy hat I will need:";
+ mes "1 Fancy hat";
+ mes "2 Snake skins";
+ mes "5.000 GP\"";
+ mes "";
+ mes "\"Do we have a deal?\"";
+ next;
+ if (@wants_leather_patch)
+ menu
+ "Yes, that's fine.", L_BuyCowboy,
+ "Can you make a leather patch?", L_leather_patch,
+ "On second thought, maybe later.", L_NoDeal;
+ menu
+ "Yes, that's fine.", L_BuyCowboy,
+ "On second thought, maybe later.", L_NoDeal;
+
+L_Chaps_store:
+ callsub S_CheckStuff;
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"To make you a pair of Snake Skin Chaps I will need:";
+ mes "1 Jeans Shorts";
+ mes "10 Snake skins";
+ mes "10.000 GP\"";
+ mes "";
+ mes "\"Do we have a deal?\"";
+ next;
+ if (!@wants_leather_patch)
+ menu
+ "Yes, that's fine.", L_BuyChaps,
+ "On second thought, maybe later.", L_NoDeal;
+ menu
+ "Yes, that's fine.", L_BuyChaps,
+ "Can you make a leather patch?", L_leather_patch,
+ "On second thought, maybe later.", L_NoDeal;
+
+L_BuyChaps:
+ if (Zeny < 10000) goto L_NoMoney;
+ if (countitem("JeansShorts") < 1) goto L_NoJeans;
+ if (countitem("SnakeSkin") < 10) goto L_NoSkins;
+ Zeny = Zeny - 10000;
+ delitem "SnakeSkin", 10;
+ delitem "JeansShorts", 1;
+ getitem "JeansChaps", 1;
+ goto L_DealDone;
+
+L_BuyCowboy:
+ if (Zeny < 5000) goto L_NoMoney;
+ if (countitem("FancyHat") < 1) goto L_NoFancy;
+ if (countitem("SnakeSkin") < 2) goto L_NoSkins;
+ Zeny = Zeny - 5000;
+ delitem "SnakeSkin", 2;
+ delitem "FancyHat", 1;
+ @temp = rand(2);
+ if(@temp == 0) goto L_Cowboy_white;
+ goto L_Cowboy_black;
+
+L_Cowboy_white:
+ getitem "WhiteCowboyHat", 1;
+ goto L_DealDone;
+
+L_Cowboy_black:
+ getitem "BlackCowboyHat", 1;
+ goto L_DealDone;
+
+L_leather_patch:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"If you just want a piece of leather, then yes, I can make that. Bring me a snake skin and " + @LEATHER_PATCH_PRICE + " GP.\"";
+ next;
+ menu
+ "Here you are.", L_Next,
+ "OK, I'll be back later.", L_close,
+ "That's too expensive!.", L_NoDeal;
+
+L_Next:
+ if (countitem("SnakeSkin") < 1) goto L_NoSkins;
+ if (Zeny < @LEATHER_PATCH_PRICE) goto L_NoMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("SnakeSkin") > 1) goto L_TooMany;
+
+ Zeny = Zeny - @LEATHER_PATCH_PRICE;
+ delitem "SnakeSkin", 1;
+ getitem "LeatherPatch", 1;
+ goto L_DealDone;
+
+L_DealDone:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Here you are!\"";
+ mes "";
+ mes "\"Come back any time.\"";
+ goto L_close;
+
+L_NoDeal:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Alright, but you won't get a better deal anywhere else!\"";
+ goto L_close;
+
+L_NoMoney:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Oh dear, it seems you don't have enough money.\"";
+ goto L_close;
+
+L_NoJeans:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Oh dear, it seems you don't have enough jeans shorts.\"";
+ goto L_close;
+
+L_NoFancy:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Oh dear, it seems you don't have enough fancy hats.\"";
+ goto L_close;
+
+L_NoSkins:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Oh dear, it seems you don't have enough snake skins.\"";
+ goto L_close;
+
+L_WearingCowboy:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Ah, I see that you are wearing a hat made with the ancient methods of my tribe.\"";
+ next;
+ goto L_Check_Shops;
+
+L_WearingChaps:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"Ah, I see that you are wearing pants made by my tribe.\"";
+ next;
+ goto L_Check_Shops;
+
+L_close:
+ @LEATHER_PATCH_PRICE = 0;
+ @wants_leather_patch = 0;
+ @month = 0;
+ @start_day = 0;
+ @end_day = 0;
+ @temp = 0;
+ close;
+
+L_TooMany:
+ mes "[Chief Pachua]";
+ mes "";
+ mes "\"You don't have room for a leather patch. Come back later.\"";
+ goto L_close;
+
+L_smoke:
+ message strcharinfo(0), "Pachua quickly inhales from his pipe and releases a ring of smoke towards the sky!";
+ QUEST_MIRIAM_run = gettimetick(2) - QUEST_MIRIAM_start;
+ QUEST_MIRIAM_start = 0;
+ end;
+
+L_Warp2_cheat:
+ if (@warp_cheat == 1) goto L_Begin;
+ message strcharinfo(0), "Pachua releases a ring of smoke towards the sky! But, by the look on his face, you can tell he is suspicious about your methods...";
+ @warp_cheat = 1;
+ end;
+}
diff --git a/npc/006-1/spirit.txt b/npc/006-1/spirit.txt
new file mode 100755
index 00000000..4bbcb14a
--- /dev/null
+++ b/npc/006-1/spirit.txt
@@ -0,0 +1,292 @@
+function script EarthImpTouch {
+ if (getskilllv(SKILL_MAGIC)) goto L_message;
+
+ mes "[Well]";
+ mes "You hear noises from within the well.";
+ return;
+
+L_message:
+ @Q_MASK = NIBBLE_0_MASK;
+ @Q_SHIFT = NIBBLE_0_SHIFT;
+ @Q_status = (QUEST_MAGIC2 & @Q_MASK) >> @Q_SHIFT;
+
+ // Set up SkillUp function
+ @SUP_id = SKILL_MAGIC_NATURE;
+ @SUP_name$ = "Nature Magic";
+ @Q_STATUS_INITIAL = 0;
+ @Q_STATUS_ONQUEST = 1;
+ @Q_STATUS_STUDENT0 = 2;
+ @Q_STATUS_STUDENT1 = 3;
+ @Q_STATUS_STUDENT2 = 4;
+ @Q_STATUS_STUDENT3 = 5;
+
+ if (MAGIC_FLAGS & MFLAG_KNOWS_IMP) goto L_wb;
+
+ mes "[Well]";
+ mes "Something is inside that well, and now that you have turned your attention towards it, it seems to be talking to you!";
+ next;
+
+ mes "[Well]";
+ mes "\"Hey! You there! Yes, I'm talking to you!\"";
+ mes "That strange voice seems to be coming from inside your head!";
+ next;
+ menu
+ "Who, me?", L_Next,
+ "Leave me alone!", L_close,
+ "Aaah! I'm hearing voices!", L_silly_close;
+
+L_Next:
+ mes "[Well]";
+ mes "\"I'm in here, in the well, talking to you! If I'm not very mistaken, you are a powerful wizard-to-be, except that nobody has showed you how to properly do magic yet!\"";
+ next;
+ menu
+ "Who are you?", L_Next1,
+ "Aaaah! The voices are after me!", L_silly_close,
+ "Whatever it is, I'm not interested.", L_close;
+
+L_Next1:
+ mes "[Earth Spirit]";
+ mes "\"I'm an earth spirit; my name isn't important... all that matters is that I like you, and that I will help you become a powerful wizard if you help me. Just a fair deal, no more than that...\"";
+ next;
+ MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_KNOWS_IMP;
+ goto L_Main;
+
+L_wb:
+ mes "[Earth Spirit]";
+ mes "\"It's excellent to see you again!\"";
+ next;
+ goto L_Main;
+
+L_Main:
+ menu
+ "How did you get trapped?", L_Q_trapped,
+ "Can you teach me magic and spells?", L_Q_magic,
+ "What do you know about...", L_Q,
+ "Goodbye!", L_close;
+
+L_Q_trapped:
+ mes "[Earth Spirit]";
+ mes "\"Oh, a wicked witch grew jealous of my power and locked me up in this well.\"";
+ next;
+ goto L_Main;
+
+L_Q:
+ mes "[Earth Spirit]";
+ mes "\"Stop bothering me with your questions, will you? I'm trying to make you a powerful wizard, after all!\"";
+ next;
+ goto L_Main;
+
+L_Q_magic:
+ if (@Q_status == @Q_STATUS_ONQUEST) goto L_Q_magic_1;
+ if (@Q_status == @Q_STATUS_STUDENT0) goto L_Q_magic_2;
+ if (@Q_status == @Q_STATUS_STUDENT1) goto L_Q_magic_3;
+ if (@Q_status == @Q_STATUS_STUDENT2) goto L_Q_magic_4;
+
+ mes "[Earth Spirit]";
+ mes "\"Good, good... that's the right attitude! Yes, I can teach you magic, but first you must prove that you are worthy to be my student!\"";
+ next;
+ mes "[Earth Spirit]";
+ mes "\"North-east of here sits and old, dead tree. Well, not completely dead, not yet, but almost. It's nothing special. Well, maybe a little, but not really. I want you to cut off one of its branches.\"";
+ next;
+ menu
+ "No way.", L_silly_close,
+ "Sure.", L_Q_tree_ok,
+ "Why that particular tree?", L_Next2;
+
+L_Next2:
+ mes "[Earth Spirit]";
+ mes "\"Oh, you and your questions! Well, that tree was a druid once, so the branches contain a bit of its lifeforce. And that's useful.\"";
+ next;
+ menu
+ "Yuck.", L_silly_close,
+ "Sure, whatever.", L_Q_tree_ok,
+ "Isn't that like cutting off someone's arm?", L_Next3;
+
+L_Next3:
+ mes "[Earth Spirit]";
+ mes "\"Oooh... now come on! Don't be so sentimental. He turned himself into a tree, he can hardly expect everyone to leave him alone.\"";
+ next;
+ mes "[Earth Spirit]";
+ mes "\"Who knows if he can even feel anything anymore? I'm sure he can't, being wooden and all. Besides, it's only a measly tree. Not like I'm asking you to cut him down!.\"";
+ next;
+ menu
+ "No way.", L_silly_close,
+ "Alright, that makes sense.", L_Q_tree_ok;
+
+L_Q_tree_ok:
+ mes "[Earth Spirit]";
+ mes "\"Good, good, good! Yes, that will be very good! So, come back when you have the branch. Oh, and bring 100,000 GP, too, as an enrollment fee.\"";
+ @Q_status = @Q_STATUS_ONQUEST;
+ callsub S_Update_Var;
+ MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_KNOWS_CUTTREE;
+ next;
+ goto L_Main;
+
+L_Q_magic_1:
+ mes "[Earth Spirit]";
+ mes "\"Yes, yes, if you bring me the branch and the money, then I will!\"";
+ next;
+ menu
+ "Here are the branch and the money.", L_Next4,
+ "How much money did you want again?", L_Q_tree_howmuch,
+ "How can I cut it?", L_Q_tree_how,
+ "Where was the tree again?", L_Q_tree_where,
+ "What is that tree?", L_Q_tree_what;
+
+L_Next4:
+ if (countitem("DruidTreeBranch") < 1) goto L_Q_tree_none;
+ if (!(MAGIC_FLAGS & MFLAG_DID_CUTTREE)) goto L_Q_tree_dry;
+ if (Zeny < 100000) goto L_Q_tree_nomoney;
+
+ Zeny = Zeny - 100000;
+ delitem "DruidTreeBranch", 1;
+ mes "[Earth Spirit]";
+ mes "Following the earth sprite's instructions, you throw branch and GP into the well.";
+ next;
+ mes "[Earth Spirit]";
+ mes "\"Well done, very well done! Consider yourself my student now.\"";
+ @SUP_xp = 5000;
+ @SUP_lvl = 2;
+ callfunc "SkillUp";
+ next;
+ @Q_status = @Q_STATUS_STUDENT0;
+ callsub S_Update_Var;
+ goto L_Main;
+
+L_Q_magic_finish:
+ mes "[1000 experience points]";
+ @Q_status = @Q_status + 1;
+ callsub S_Update_Var;
+ getexp 1000,0;
+ next;
+ goto L_Main;
+
+L_Q_magic_2:
+ mes "[Earth Spirit]";
+ mes "\"Yes, of course! For just 20,000 GP I will teach you your first spell!\"";
+ next;
+ menu
+ "Here you are.", L_Next5,
+ "No.", L_Main;
+
+L_Next5:
+ if (Zeny < 20000) goto L_No20k;
+
+ Zeny = Zeny - 20000;
+ mes "[Earth Spirit]";
+ mes "\"Kekeke... excellent! Yes, here goes your first spell, the flying backpack! If you are overloaded, it will take the load off your shoulders.\"";
+ next;
+ mes "[Earth Spirit]";
+ mes "\"Take a cocoon, living or dead, and suffuse it in magic. Whisper '" + get(.invocation$, "flying-backpack") + "', and feel it float!\"";
+ goto L_Q_magic_finish;
+
+L_Q_magic_3:
+ mes "[Earth Spirit]";
+ mes "\"But yes, yes! Only 20,000 GP, once again, and I will teach you a far more useful spell!\"";
+ next;
+ menu
+ "Here you are.", L_Next6,
+ "No.", L_Main;
+
+L_Next6:
+ if (Zeny < 20000) goto L_No20k;
+ Zeny = Zeny - 20000;
+ mes "[Earth Spirit]";
+ mes "\"Yeees, good! This one is a protection spell, making your skin harder. You need a hard spike for it, though. Hold that spike in your hands, and focus on it.\"";
+ next;
+ mes "[Earth Spirit]";
+ mes "\"Next, say '" + get(.invocation$, "protect") + "', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff.\"";
+ goto L_Q_magic_finish;
+
+L_Q_magic_4:
+ mes "[Earth Spirit]";
+ mes "\"Naah, you're too weak now! Come back later when you have grown!\"";
+ next;
+ goto L_Main;
+
+L_No20k:
+ mes "[Earth Spirit]";
+ mes "\"You can't pay me 20,000 if you don't have that much!\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_none:
+ mes "[Earth Spirit]";
+ mes "\"Where is your branch?\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_dry:
+ mes "[Earth Spirit]";
+ mes "\"That won't do. This branch is completely dead; you'll have to get another.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_nomoney:
+ mes "[Earth Spirit]";
+ mes "\"No, you don't have enough money! Come back when you have 100,000.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_howmuch:
+ mes "[Earth Spirit]";
+ mes "\"It's only 100,000 GP to become my student.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_how:
+ mes "[Earth Spirit]";
+ mes "\"Oh... right, the tree might be protected. Only a bone knife will cut that. No idea where you can find one, but I'm sure you will manage!\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_where:
+ mes "[Earth Spirit]";
+ mes "\"North-east of here.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_what:
+ mes "[Earth Spirit]";
+ mes "\"Just some silly druid who turned himself into a tree; nothing important.\"";
+ next;
+ goto L_Main;
+
+L_silly_close:
+ if (MAGIC_FLAGS & MFLAG_KNOWS_IMP)
+ mes "[Earth Spirit]";
+ if (!(MAGIC_FLAGS & MFLAG_KNOWS_IMP))
+ mes "[Well]";
+ mes "\"Fool.\"";
+ goto L_close;
+
+L_close:
+ @Q_MASK = 0;
+ @Q_SHIFT = 0;
+ @Q_status = 0;
+ @SUP_id = 0;
+ @SUP_name$ = "";
+ @SUP_xp = 0;
+ @SUP_lvl = 0;
+ @Q_STATUS_INITIAL = 0;
+ @Q_STATUS_ONQUEST = 0;
+ @Q_STATUS_STUDENT0 = 0;
+ @Q_STATUS_STUDENT1 = 0;
+ @Q_STATUS_STUDENT2 = 0;
+ @Q_STATUS_STUDENT3 = 0;
+ return;
+
+S_Update_Var:
+ QUEST_MAGIC2 = (QUEST_MAGIC2 & ~(@Q_MASK) | (@Q_status << @Q_SHIFT));
+ return;
+}
+
+006-1,63,79,0 script #EarthImp0#_M NPC400,{
+ callfunc "EarthImpTouch";
+ close;
+}
+
+006-1,64,79,0 script #EarthImp1#_M NPC400,{
+ callfunc "EarthImpTouch";
+ close;
+}
diff --git a/npc/006-1/traveler.txt b/npc/006-1/traveler.txt
new file mode 100755
index 00000000..a16b502a
--- /dev/null
+++ b/npc/006-1/traveler.txt
@@ -0,0 +1,7 @@
+
+006-1,25,95,0 script Rhutan the Traveler NPC103,{
+ @npcname$ = "Rhutan";
+ @NpcTravelBit = $@pachua_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/npc/006-1/tree.txt b/npc/006-1/tree.txt
new file mode 100755
index 00000000..6c961691
--- /dev/null
+++ b/npc/006-1/tree.txt
@@ -0,0 +1,159 @@
+function script QuestTreeTrigger {
+ @Q_MASK = NIBBLE_2_MASK;
+ @Q_SHIFT = NIBBLE_2_SHIFT;
+
+ @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
+ @Q_status_lower = @Q_status & 3;
+ @Q_status = (@Q_status & 12) >> 2;
+
+ if (@Q_status & @flag) goto L_close; // already did that
+
+ if (@flag == 2) goto L_hug;
+ goto L_Cont;
+
+L_Cont:
+ @Q_status = @Q_status | @flag;
+ callsub S_Update_Var;
+
+ if (@Q_status != 3) goto L_close;
+
+ if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_close;
+
+ mes "Maybe it is just a trick of the light, but you can't help but think that the tree looks different... healthier, almost younger.";
+ mes "[20000 experience points]";
+ getexp 20000, 0;
+ @value = 15;
+ callfunc "QuestSagathaHappy";
+ goto L_close;
+
+L_hug:
+ mes "You hug the tree.";
+ next;
+ goto L_Cont;
+
+L_close:
+ @Q_MASK = 0;
+ @Q_SHIFT = 0;
+ @Q_status = 0;
+ @Q_status_lower = 0;
+ @Q_wr_status = 0;
+ @value = 0;
+ return;
+
+S_Update_Var:
+ @Q_wr_status = (@Q_status << 2) | @Q_status_lower;
+ QUEST_MAGIC = (QUEST_MAGIC & ~(@Q_MASK) | (@Q_wr_status << @Q_SHIFT));
+ return;
+}
+
+function script QuestTreeTouch {
+ @Q_MASK = NIBBLE_2_MASK;
+ @Q_SHIFT = NIBBLE_2_SHIFT;
+
+ @Q_status = (QUEST_MAGIC & @Q_MASK) >> @Q_SHIFT;
+ @Q_status = (@Q_status & 12) >> 2;
+
+ if (@Q_status == 3) goto L_Happy;
+
+ if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_CUTTREE) goto L_cut;
+
+ if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) == MFLAG_KNOWS_DRUIDTREE) goto L_Water;
+
+ if ((MAGIC_FLAGS & (MFLAG_KNOWS_DRUIDTREE | MFLAG_KNOWS_CUTTREE)) > 0) //i.e., both are set
+ goto L_both;
+
+ mes "[Dying Tree]";
+ mes "You see a strange tree.";
+ goto L_close;
+
+L_cut:
+ mes "[Dying Tree]";
+ mes "This must be the tree that the earth spirit was referring to.";
+ next;
+ menu
+ "Cut off a branch", L_do_cut,
+ "Leave it alone", L_close;
+
+L_Water:
+ mes "[Dying Tree]";
+ mes "This must be the druid tree.";
+ next;
+ menu
+ "Water the tree", L_Givewater,
+ "Kiss tree", L_kiss,
+ "Leave it alone", L_close;
+
+L_both:
+ mes "[Dying Tree]";
+ mes "This must be the druid tree that Wyara and the earth spirit were talking about.";
+ next;
+ menu
+ "Water the tree", L_Givewater,
+ "Kiss tree", L_kiss,
+ "Cut off a branch", L_do_cut,
+ "Leave it alone", L_close;
+
+L_Givewater:
+ if (countitem("BottleOfWater") < 1) goto L_No_Water;
+ delitem "BottleOfWater", 1;
+ getitem "EmptyBottle", 1;
+
+ mes "[Dying Tree]";
+ mes "You pour a bottle of water into the sand. The water dissipates quickly, without any effect.";
+ goto L_close;
+
+L_No_Water:
+ mes "[Dying Tree]";
+ mes "You don't have any water.";
+ goto L_close;
+
+L_kiss:
+ mes "[Dying Tree]";
+ mes "You pluck out a splinter from your lip.";
+ mes "Somehow, you don't think that this helped.";
+ goto L_close;
+
+L_do_cut:
+ if (countitem("BoneKnife") < 1) goto L_No_boneknife;
+
+ if (MAGIC_FLAGS & MFLAG_DID_CUTTREE) goto L_really_cut;
+
+ mes "[Dying Tree]";
+ mes "You find a suitable branch and put your bone knife in position.";
+ mes "Holding the branch, you have an uneasy feeling – as if something inside the tree were trying to resist you...";
+ mes "Do you want to continue cutting?";
+ next;
+ menu
+ "Nah... better not.", L_close,
+ "Yes, let's cut!", L_really_cut;
+
+L_really_cut:
+ MAGIC_FLAGS = MAGIC_FLAGS | MFLAG_DID_CUTTREE;
+ getitem "DruidTreeBranch", 1;
+ mes "[Dying Tree]";
+ mes "You cut off a branch from the tree.";
+ mes "For an instant, you have an uneasy feeling, as if the branch were writhing in your hand...";
+ goto L_close;
+
+L_No_boneknife:
+ mes "[Dying Tree]";
+ mes "Try as you might, you can't seem to find a way to cut off a branch. Perhaps you need a different tool for cutting?";
+ goto L_close;
+
+L_Happy:
+ mes "[Druid Tree]";
+ mes "The tree looks younger and healthier now.";
+ goto L_close;
+
+L_close:
+ @Q_MASK = 0;
+ @Q_SHIFT = 0;
+ @Q_status = 0;
+ return;
+
+}
+
+006-1,82,59,0 script #DruidTree0#_M NPC400,{
+ callfunc "QuestTreeTouch";
+ close;
+}