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
-rw-r--r--npc/006-1/mapflags.txt1
-rw-r--r--npc/006-1/mika.txt8
-rw-r--r--npc/006-1/miriam.txt323
-rw-r--r--npc/006-1/pachua.txt237
-rw-r--r--npc/006-1/spirit.txt294
-rw-r--r--npc/006-1/traveler.txt7
-rw-r--r--npc/006-1/tree.txt159
10 files changed, 1095 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..77463890
--- /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 Snake 1010,1,100000,30000
+006-1,53,36,8,6 monster Mountain Snake 1026,3,150000,10000
+006-1,89,26,16,6 monster Mountain Snake 1026,5,15000,75000
+006-1,113,41,6,18 monster Mountain Snake 1026,8,15000,75000
+006-1,113,51,3,1 monster Mountain Snake 1026,3,15000,75000
+006-1,86,46,14,2 monster Mountain Snake 1026,3,15000,75000
+006-1,105,73,10,7 monster Mountain Snake 1026,3,15000,75000
+006-1,73,102,4,6 monster Mountain Snake 1026,4,15000,75000
+006-1,104,100,5,7 monster Mountain Snake 1026,8,15000,75000
+006-1,82,72,12,8 monster Mountain Snake 1026,8,15000,75000
+006-1,95,114,8,2 monster Mountain Snake 1026,5,15000,75000
+006-1,57,119,9,1 monster Mountain Snake 1026,4,15000,75000
+006-1,33,97,13,16 monster Scorpion 1003,10,100000,30000
+006-1,58,49,1,1 monster Green Slime 1005,3,100000,30000
+006-1,34,50,2,2 monster Snake 1010,2,40000,50000
+006-1,96,92,10,24 monster Snake 1010,2,40000,50000
+006-1,35,97,14,14 monster Maggot 1002,20,100000,30000
+006-1,28,73,1,1 monster Green Slime 1005,2,100000,30000
+006-1,33,59,1,1 monster Green Slime 1005,2,100000,30000
+006-1,37,73,3,1 monster Snake 1010,1,100000,30000
+006-1,100,36,19,12 monster Snake 1010,2,40000,50000
diff --git a/npc/006-1/_warps.txt b/npc/006-1/_warps.txt
new file mode 100644
index 00000000..9283bc18
--- /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,71,70
+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,143,43
+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 100644
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 100644
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 100644
index 00000000..fdbbdf1c
--- /dev/null
+++ b/npc/006-1/miriam.txt
@@ -0,0 +1,323 @@
+
+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_run > 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 (readparam(bAgi) < 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... " +readparam(bAgi)+ " 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... " +readparam(bAgi)+ " 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_run = gettimetick(2);
+ 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!\"";
+ QUEST_MIRIAM_run = 0;
+ close;
+
+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_expired:
+ mes "[Miriam]";
+ mes "\"You could not reach Pachua in time. Try again some other time.\"";
+ QUEST_MIRIAM_run = 0;
+ close;
+
+L_checktime:
+ @miriam_run_secs = 0 - (QUEST_MIRIAM_run);
+ if (@miriam_run_secs == 1)
+ goto L_warning;
+ if (@miriam_run_secs <= 10)
+ goto L_expired;
+ if (@miriam_run_secs <= 210)
+ goto L_Goodjob;
+ goto L_tryagain;
+
+L_tryagain:
+ mes "[Miriam]";
+ mes "\"You needed " + @miriam_run_secs + " seconds to reach Pachua. It is not enough.\"";
+ QUEST_MIRIAM_run = 0;
+ close;
+
+L_Goodjob:
+ mes "[Miriam]";
+ mes "\"Great job! You needed " + @miriam_run_secs + " 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_run = 0;
+ QUEST_MIRIAM = 0;
+ message strcharinfo(0), "[You gain 2500 experience points]";
+ message strcharinfo(0), "[You learned Speed Skill]";
+ updateskill SKILL_SPEED, 1;
+ getexp 2500, 0;
+ close;
+
+L_fast:
+ mes "[Miriam]";
+ mes "\"I hope you make a good use of your new skill... Take care!\"";
+ close;
+
+}
diff --git a/npc/006-1/pachua.txt b/npc/006-1/pachua.txt
new file mode 100644
index 00000000..f62d8c04
--- /dev/null
+++ b/npc/006-1/pachua.txt
@@ -0,0 +1,237 @@
+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_run == -1) goto L_Warp2_cheat;
+ if (QUEST_MIRIAM_run) 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!";
+ callfunc "MiriamGoal";
+ end;
+
+L_Warp2_cheat:
+ 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...";
+ end;
+}
diff --git a/npc/006-1/spirit.txt b/npc/006-1/spirit.txt
new file mode 100644
index 00000000..21ea02c6
--- /dev/null
+++ b/npc/006-1/spirit.txt
@@ -0,0 +1,294 @@
+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:
+ mesn l("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:
+ mesn l("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:
+ mesn l("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:
+ mesn l("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;
+
+ mesn l("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;
+ mesn l("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:
+ mesn l("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:
+ mesn l("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;
+ mesn l("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:
+ mesn l("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:
+ mesn l("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;
+ mesn l("Earth Spirit");
+ mes "Following the earth sprite's instructions, you throw branch and GP into the well.";
+ next;
+ mesn l("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:
+ mesn l("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;
+ mesn l("Earth Spirit");
+ mesq l("Kekeke... excellent! Yes, here goes your first spell, and it is even a passive: the flying backpack! If you are overloaded, it will take the load off your shoulders.");
+ next;
+ mesn l("Earth Spirit");
+ mesq l("Take a cocoon, living or dead, and suffuse it in magic. Fell the %s, feel its lightness and feel it float! You no longer should be feeling overburned by your stolen goods, kekeke...", b("Plugh"));
+ learnskill ALL_INCCARRY;
+ goto L_Q_magic_finish;
+
+L_Q_magic_3:
+ mesn l("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;
+ mesn l("Earth Spirit");
+ mesq l("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;
+ mesn l("Earth Spirit");
+ mesq l("Next, say '%s', and feel your skin grow rigid! Very useful against stings and stabs and pokes and pricks and that sort of stuff. Lowers attack speed and only works on yourself, party, or guild allies, though.", b("betsanc"));
+ learnskill SKILL_BETSANC;
+ goto L_Q_magic_finish;
+
+L_Q_magic_4:
+ mesn l("Earth Spirit");
+ mesq l("Naah, you're too weak now! Come back later when you have grown!");
+ next;
+ goto L_Main;
+
+L_No20k:
+ mesn l("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:
+ mesn l("Earth Spirit");
+ mes "\"Where is your branch?\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_dry:
+ mesn l("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:
+ mesn l("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:
+ mesn l("Earth Spirit");
+ mes "\"It's only 100,000 GP to become my student.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_how:
+ mesn l("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:
+ mesn l("Earth Spirit");
+ mes "\"North-east of here.\"";
+ next;
+ goto L_Main;
+
+L_Q_tree_what:
+ mesn l("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)
+ mesn l("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,67,68,0 script #EarthImp0#_M NPC400,{
+ callfunc "EarthImpTouch";
+ close;
+}
+
+006-1,68,68,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 100644
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 100644
index 00000000..df6dd2ef
--- /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 & getarg(0, @flag)) goto L_close; // already did that
+
+ if (getarg(0, @flag) == 2) goto L_hug;
+ goto L_Cont;
+
+L_Cont:
+ @Q_status = @Q_status | getarg(0, @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;
+}