summaryrefslogtreecommitdiff
path: root/npc/020-1
diff options
context:
space:
mode:
Diffstat (limited to 'npc/020-1')
-rw-r--r--npc/020-1/_import.txt39
-rw-r--r--npc/020-1/_mobs.txt63
-rw-r--r--npc/020-1/_warps.txt46
-rw-r--r--npc/020-1/adrian.txt42
-rw-r--r--npc/020-1/aisha.txt18
-rw-r--r--npc/020-1/anwar.txt148
-rw-r--r--npc/020-1/bodyguard.txt53
-rw-r--r--npc/020-1/boss.txt43
-rw-r--r--npc/020-1/budifis.txt20
-rw-r--r--npc/020-1/cyndala.txt19
-rw-r--r--npc/020-1/ekinu.txt18
-rw-r--r--npc/020-1/eomie.txt192
-rw-r--r--npc/020-1/froma.txt19
-rw-r--r--npc/020-1/harper.txt18
-rw-r--r--npc/020-1/hocus.txt166
-rw-r--r--npc/020-1/inar.txt19
-rw-r--r--npc/020-1/issay.txt15
-rw-r--r--npc/020-1/itka.txt48
-rw-r--r--npc/020-1/joaquim.txt201
-rw-r--r--npc/020-1/joelin.txt18
-rw-r--r--npc/020-1/jossy.txt19
-rw-r--r--npc/020-1/mahoud.txt18
-rw-r--r--npc/020-1/malivox.txt23
-rw-r--r--npc/020-1/marikel.txt18
-rw-r--r--npc/020-1/marine.txt17
-rw-r--r--npc/020-1/martha.txt18
-rw-r--r--npc/020-1/neko.txt19
-rw-r--r--npc/020-1/nickos.txt18
-rw-r--r--npc/020-1/noke.txt19
-rw-r--r--npc/020-1/odonell.txt18
-rw-r--r--npc/020-1/philip.txt18
-rw-r--r--npc/020-1/popaul.txt19
-rw-r--r--npc/020-1/pusco.txt20
-rw-r--r--npc/020-1/ryan.txt18
-rw-r--r--npc/020-1/sander.txt18
-rw-r--r--npc/020-1/tindris.txt30
-rw-r--r--npc/020-1/vaspina.txt20
-rw-r--r--npc/020-1/wateranimation.txt20
38 files changed, 1555 insertions, 0 deletions
diff --git a/npc/020-1/_import.txt b/npc/020-1/_import.txt
new file mode 100644
index 00000000..a993b5ed
--- /dev/null
+++ b/npc/020-1/_import.txt
@@ -0,0 +1,39 @@
+// Map 020-1: Tulimshar
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/020-1/_mobs.txt",
+"npc/020-1/_warps.txt",
+"npc/020-1/adrian.txt",
+"npc/020-1/aisha.txt",
+"npc/020-1/anwar.txt",
+"npc/020-1/bodyguard.txt",
+"npc/020-1/boss.txt",
+"npc/020-1/budifis.txt",
+"npc/020-1/cyndala.txt",
+"npc/020-1/ekinu.txt",
+"npc/020-1/eomie.txt",
+"npc/020-1/froma.txt",
+"npc/020-1/harper.txt",
+"npc/020-1/hocus.txt",
+"npc/020-1/inar.txt",
+"npc/020-1/issay.txt",
+"npc/020-1/itka.txt",
+"npc/020-1/joaquim.txt",
+"npc/020-1/joelin.txt",
+"npc/020-1/jossy.txt",
+"npc/020-1/mahoud.txt",
+"npc/020-1/malivox.txt",
+"npc/020-1/marikel.txt",
+"npc/020-1/marine.txt",
+"npc/020-1/martha.txt",
+"npc/020-1/neko.txt",
+"npc/020-1/nickos.txt",
+"npc/020-1/noke.txt",
+"npc/020-1/odonell.txt",
+"npc/020-1/philip.txt",
+"npc/020-1/popaul.txt",
+"npc/020-1/pusco.txt",
+"npc/020-1/ryan.txt",
+"npc/020-1/sander.txt",
+"npc/020-1/tindris.txt",
+"npc/020-1/vaspina.txt",
+"npc/020-1/wateranimation.txt",
diff --git a/npc/020-1/_mobs.txt b/npc/020-1/_mobs.txt
new file mode 100644
index 00000000..27d030e0
--- /dev/null
+++ b/npc/020-1/_mobs.txt
@@ -0,0 +1,63 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 020-1: Tulimshar mobs
+020-1,165,77,14,12 monster Maggot 1026,6,5000,10000
+020-1,222,172,54,18 monster Maggot 1026,15,5000,10000
+020-1,282,114,12,39 monster Maggot 1026,5,5000,10000
+020-1,175,209,128,38 monster Desert Scorpion 1078,15,12000,36000
+020-1,59,158,18,26 monster Desert Scorpion 1078,5,12000,36000
+020-1,92,189,58,56 monster Desert Snake 1077,8,18000,72000
+020-1,60,174,23,29 monster Black Slime 1079,4,8500,36000
+020-1,188,216,84,32 monster Maggot 1026,20,5000,10000
+020-1,167,81,21,11 monster Brotherhood Fighter 1081,3,6000,18000
+020-1,279,96,13,15 monster Legion Swordswoman 1066,3,6000,18000
+020-1,74,185,23,46 monster Yellow Slime 1073,6,13500,60000
+020-1,254,226,44,30 monster Desert Snake 1077,4,18000,36000
+020-1,277,248,18,10 monster Thief Slime 1105,3,11500,45000
+020-1,126,200,45,11 monster Giant Maggot 1076,2,36000,120000
+020-1,70,73,10,16 monster Giant Maggot 1076,2,36000,120000
+020-1,70,87,14,16 monster Maggot 1026,6,5000,10000
+020-1,70,74,7,10 monster Thief Slime 1105,1,11500,45000
+020-1,103,187,58,57 monster Fire Goblin 1080,10,8000,50000
+020-1,74,95,0,0 monster Manana Tree 1017,1,420000,240000
+020-1,157,130,123,35 monster Tortuga 1004,20,35000,120000
+020-1,43,180,4,22 monster Blub 1008,1,60000,120000
+020-1,282,249,12,7 monster Blub 1008,1,60000,120000
+020-1,114,119,54,62 monster Little Blub 1007,12,25000,120000
+020-1,294,95,0,0 monster Crocotree 1010,1,420000,240000
+020-1,274,105,0,0 monster Crocotree 1010,1,420000,240000
+020-1,278,125,0,0 monster Crocotree 1010,1,420000,240000
+020-1,259,146,0,0 monster Crocotree 1010,1,420000,240000
+020-1,289,144,0,0 monster Crocotree 1010,1,420000,240000
+020-1,246,160,0,0 monster Crocotree 1010,1,420000,240000
+020-1,215,184,0,0 monster Crocotree 1010,1,420000,240000
+020-1,194,175,0,0 monster Crocotree 1010,1,420000,240000
+020-1,187,157,0,0 monster Crocotree 1010,1,420000,240000
+020-1,172,154,0,0 monster Crocotree 1010,1,420000,240000
+020-1,140,133,0,0 monster Crocotree 1010,1,420000,240000
+020-1,176,137,0,0 monster Crocotree 1010,1,420000,240000
+020-1,156,84,0,0 monster Crocotree 1010,1,420000,240000
+020-1,142,77,0,0 monster Crocotree 1010,1,420000,240000
+020-1,104,183,0,0 monster Crocotree 1010,1,420000,240000
+020-1,80,194,0,0 monster Crocotree 1010,1,420000,240000
+020-1,50,188,0,0 monster Crocotree 1010,1,420000,240000
+020-1,49,169,0,0 monster Crocotree 1010,1,420000,240000
+020-1,71,166,0,0 monster Crocotree 1010,1,420000,240000
+020-1,80,154,0,0 monster Crocotree 1010,1,420000,240000
+020-1,90,138,0,0 monster Crocotree 1010,1,420000,240000
+020-1,67,142,0,0 monster Crocotree 1010,1,420000,240000
+020-1,40,139,0,0 monster Crocotree 1010,1,420000,240000
+020-1,39,125,0,0 monster Crocotree 1010,1,420000,240000
+020-1,77,124,0,0 monster Crocotree 1010,1,420000,240000
+020-1,89,97,0,0 monster Crocotree 1010,1,420000,240000
+020-1,63,83,0,0 monster Crocotree 1010,1,420000,240000
+020-1,55,96,0,0 monster Crocotree 1010,1,420000,240000
+020-1,66,64,0,0 monster Crocotree 1010,1,420000,240000
+020-1,291,254,0,0 monster Crocotree 1010,1,420000,240000
+020-1,285,246,0,0 monster Crocotree 1010,1,420000,240000
+020-1,116,251,23,3 monster Mister Prickel 1085,1,100000,200000
+020-1,64,88,6,6 monster Mister Prickel 1085,1,100000,200000
+020-1,268,249,9,3 monster Mister Prickel 1085,1,100000,200000
+020-1,70,132,13,12 monster Fire Wisp 1115,3,10000,60000
+020-1,70,86,12,10 monster Water Wisp 1116,1,10000,60000
+020-1,244,236,47,21 monster Serqet 1119,2,12000,60000
+020-1,228,222,50,19 monster Fire Goblin 1080,5,8000,50000
diff --git a/npc/020-1/_warps.txt b/npc/020-1/_warps.txt
new file mode 100644
index 00000000..30dc8dd5
--- /dev/null
+++ b/npc/020-1/_warps.txt
@@ -0,0 +1,46 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 020-1: Tulimshar warps
+020-1,166,242,0 warp #020-1_166_242 1,0,020-1,165,250
+020-1,166,249,0 warp #020-1_166_249 1,0,020-1,165,241
+020-1,169,135,0 warp #020-1_169_135 0,0,020-2-0,36,40
+020-1,140,71,0 warp #020-1_140_71 0,0,020-2-1,35,38
+020-1,146,70,0 warp #020-1_146_70 0,0,020-2-1,47,36
+020-1,141,59,0 warp #020-1_141_59 0,0,020-2-2,37,22
+020-1,166,77,0 warp #020-1_166_77 0,0,020-2-3,45,33
+020-1,179,98,0 warp #020-1_179_98 0,0,020-2-4,35,28
+020-1,281,85,0 warp #020-1_281_85 0,0,020-2-5,34,30
+020-1,291,88,0 warp #020-1_291_88 0,0,020-2-5,45,37
+020-1,289,80,0 warp #020-1_289_80 0,0,020-2-6,31,29
+020-1,290,72,0 warp #020-1_290_72 0,0,020-2-6,37,22
+020-1,293,106,0 warp #020-1_293_106 0,0,020-2-7,35,32
+020-1,292,130,0 warp #020-1_292_130 0,0,020-2-8,35,32
+020-1,280,140,0 warp #020-1_280_140 0,0,020-2-9,44,36
+020-1,294,148,0 warp #020-1_294_148 0,0,020-2-11,38,31
+020-1,264,152,0 warp #020-1_264_152 0,0,020-2-10,45,32
+020-1,259,152,0 warp #020-1_259_152 0,0,020-2-10,34,32
+020-1,295,163,0 warp #020-1_295_163 0,0,020-2-12,38,31
+020-1,290,157,0 warp #020-1_290_157 0,0,020-2-13,40,31
+020-1,279,168,0 warp #020-1_279_168 0,0,020-2-14,42,33
+020-1,267,181,0 warp #020-1_267_181 0,0,020-2-15,45,32
+020-1,270,173,0 warp #020-1_270_173 0,0,020-2-16,32,25
+020-1,254,165,0 warp #020-1_254_165 0,0,020-2-17,40,26
+020-1,225,190,0 warp #020-1_225_190 0,0,020-2-18,45,33
+020-1,219,190,0 warp #020-1_219_190 0,0,020-2-18,35,33
+020-1,200,186,0 warp #020-1_200_186 0,0,020-2-19,40,26
+020-1,194,168,0 warp #020-1_194_168 0,0,020-2-20,35,37
+020-1,202,168,0 warp #020-1_202_168 0,0,020-2-20,49,37
+020-1,161,146,0 warp #020-1_161_146 0,0,020-2-21,40,26
+020-1,153,131,0 warp #020-1_153_131 0,0,020-2-22,42,32
+020-1,163,72,0 warp #020-1_163_72 0,0,020-2-23,32,28
+020-1,194,162,0 warp #020-1_194_162 0,0,020-2-24,32,28
+020-1,149,128,0 warp #020-1_149_128 0,0,020-2-25,32,28
+020-1,157,128,0 warp #020-1_157_128 0,0,020-2-25,42,28
+020-1,67,116,0 warp #020-1_67_116 0,0,020-2-26,71,43
+020-1,59,117,0 warp #020-1_59_117 1,0,020-2-26,58,45
+020-1,49,115,0 warp #020-1_49_115 0,0,020-2-26,44,41
+020-1,41,118,0 warp #020-1_41_118 0,0,020-2-26,34,48
+020-1,56,107,0 warp #020-1_56_107 0,0,020-2-28,34,32
+020-1,60,107,0 warp #020-1_60_107 0,0,020-2-28,42,32
+020-1,87,114,0 warp #020-1_87_114 0,0,020-2-29,53,33
+020-1,71,56,0 warp #020-1_71_56 0,0,020-2-31,34,30
+020-1,72,44,0 warp #020-1_72_44 0,0,020-2-33,37,22
diff --git a/npc/020-1/adrian.txt b/npc/020-1/adrian.txt
new file mode 100644
index 00000000..6783c004
--- /dev/null
+++ b/npc/020-1/adrian.txt
@@ -0,0 +1,42 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Description:
+// Adrian, a Sailor near the Legion's Docks.
+// THIS IS A PLACEHOLDER!
+
+020-1,272,138,0 script Adrian NPC_ADRIAN,{
+ .@q=getq(TonoriQuest_Kylian);
+
+ speech
+ l("Hi there."),
+ l("I was just having a nap, now the port authority summons me to stand here! I hate this job."),
+ l("Are you here to pick up luggage? I'd like to go get a beer, but I have to wait here until all the luggage is picked up.");
+ if (.@q != 1)
+ close;
+ select
+ l("I've came to fetch Kylian's luggage."),
+ l("Leave");
+ mes "";
+ if (@menu == 2)
+ close;
+ mesn;
+ mesc l("%s examines the ticket.", .name$);
+ mesq l("...");
+ next;
+ mesn;
+ mesq l("Mr. Kylian you say? Of course he would send someone to pick up his luggage. Figures.");
+ next;
+ inventoryplace Suitcase, 1;
+ mesn;
+ mesc l("%s hands you a very heavy suitcase.", .name$);
+ mesq l("Here it is. Good luck carrying that thing.");
+ setq1 TonoriQuest_Kylian, 2;
+ getitembound Suitcase, 1, IBT_CHARACTER;
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/aisha.txt b/npc/020-1/aisha.txt
new file mode 100644
index 00000000..51169144
--- /dev/null
+++ b/npc/020-1/aisha.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Aisha, the young lady at Tulim Docks, Legion area.
+// THIS IS A PLACEHOLDER!
+
+020-1,271,93,0 script Aisha NPC_AIRLIA,{
+ speech
+ l("Good day to you, Sir."),
+ l("I totally forgot why I am standing besides that stiky fish, doing nothing."),
+ l("If you have an idea, please tell me what I could do.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/anwar.txt b/npc/020-1/anwar.txt
new file mode 100644
index 00000000..7d6789ef
--- /dev/null
+++ b/npc/020-1/anwar.txt
@@ -0,0 +1,148 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Description:
+// Anwar, the farmer in Tulimshar.
+
+020-1,178,196,0 script Anwar NPC_ANWAR,{
+ // This code is from Moubootaur Legends and needs cleaning up
+ .@q=getq(TulimsharQuest_AnwarField);
+ if (BaseLevel < 18) {
+ hello;
+ end;
+ }
+
+ if (.@q > 10) goto L_Complete;
+ if (.@q == 10) goto L_SecondReward;
+ if (.@q == 9) goto L_FirstReward;
+ if (.@q == 8) goto L_SecondTry;
+ if (.@q == 7) goto L_AnwarField;
+ if (.@q == 6) goto L_FirstTry;
+ if (.@q == 5) goto L_TryIt;
+ if (.@q >= 1) goto L_FirstTry;
+ // TODO: "What is this contraband fake potion you have there?! I do not accept potions without the seal of the Magic Academy. They might not work and I won't have warranty."
+
+ speech
+ l("Hi there."),
+ l("Nothing grows in this stupid desert."),
+ l("I could try to water it, but where to get water.. also a fertility potion could help."),
+ l("Maybe you can do a small errand for me?");
+ //l("But I have no water, no potion, no script. *cries* ");
+ select
+ l("Sure!"),
+ l("I'm busy, sorry.");
+ mes "";
+ if (@menu == 1)
+ goto L_Sure;
+ close;
+
+L_Complete:
+ mesn;
+ mesq l("Thanks for saving Tulimshar from a famine. I'll be forever grateful.");
+ next;
+ mesn;
+ mesq l("Dealing with raijin is too bothersome to me.");
+ close;
+
+L_AnwarField:
+ mesn;
+ mesq l("My crops! Hurry up, and talk to Hocus!!");
+ close;
+
+L_Sure:
+ mes "";
+ mesn;
+ mesq l("Great! Hocus, the magic academy grandmaster, is a real Nature mage. He probably makes fertilizers.");
+ next;
+ mesn;
+ mesq l("Please, talk to him. I am too busy tending the crops to go myself.");
+ setq TulimsharQuest_AnwarField, 1;
+ close;
+
+L_FirstTry:
+ mesn;
+ mesq l("Good luck getting the fertilizer from Hocus!");
+ if (countitem(FertilityPotion))
+ mesc l("Anwar will only accept fertility potions certified by the Magic Academy.");
+ close;
+
+L_TryIt:
+ .@q2=getq2(TulimsharQuest_AnwarField);
+ if (!countitem(FertilityPotion)) {
+ mesn;
+ mesq l("Bring me the fertilizer!");
+ close;
+ }
+ mesn;
+ mesq l("You've brought me fertilizer! Let me see if it works...");
+ next;
+ delitem FertilityPotion, 1;
+ setq2 TulimsharQuest_AnwarField, .@q2+1;
+
+ // Fail chances are 100% - 13% per attempt
+ if (rand2(0,100) < 100-(.@q2*13)) {
+ setq1 TulimsharQuest_AnwarField, 6;
+ mesc l("Nothing happens.");
+ next;
+ mesn;
+ mesq l("Uhm, it was not enough. Please bring me another one.");
+ } else {
+ setq1 TulimsharQuest_AnwarField, 7;
+ mesc l("Evil worms crawl from earth and starts devouring the plants!");
+ // Okay, maybe Galimatia's potion was a better idea.
+ next;
+ mesn;
+ mesq l("Uh... That should not happen, right? RIGHT?");
+ next;
+ mesn;
+ mesq l("Don't just stand here! Go fetch help, NOW!!");
+ }
+
+ close;
+
+L_SecondTry:
+ if (!countitem(PurificationPotion)) {
+ mesn;
+ mesq l("Bring me the bug bomb or whatever!");
+ close;
+ }
+ mesn strcharinfo(0);
+ mesq l("Here is a certified(R) purification potion! Hocus just gave me. Hurry up!");
+ next;
+ delitem PurificationPotion, 1;
+ getexp 20, 0;
+ specialeffect(51);
+ setq TulimsharQuest_AnwarField, 9;
+ mesn;
+ mesq l("Thanks God... The crops are safe. Not only that, but the fertilizer works!");
+ next;
+ mesn;
+ mesq l("Ah, that was tiresome... I'll go make a reward for them, talk to me again later.");
+ close;
+
+L_FirstReward:
+ mesn;
+ mesq l("Here are two %s. Please deliver it to them. I hope they'll like it.", getitemlink(SilverBell));
+ setq TulimsharQuest_AnwarField, 10, 0;
+ getitembound(SilverBell, 2, 4); // Prevent accidental item loss
+ close;
+
+L_SecondReward:
+ .@q2=getq2(TulimsharQuest_AnwarField);
+ if (.@q2 < 3){
+ mesn;
+ mesq l("Please deliver the two %s to Eomie and Hocus, and then I'll give you something for your help.", getitemlink(SilverBell));
+ close;
+ }
+ setq TulimsharQuest_AnwarField, 11, 0;
+ getitem SilkPants, 1;
+ getexp 750, 0;
+ mesn;
+ mesq l("Many thanks for your help! Here, take this. I'm sure it can be very useful later. It always is.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/bodyguard.txt b/npc/020-1/bodyguard.txt
new file mode 100644
index 00000000..13aea996
--- /dev/null
+++ b/npc/020-1/bodyguard.txt
@@ -0,0 +1,53 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Bodyguard protecting Micksha's chilling place in oasis.
+
+020-1,292,245,0 script Bodyguard NPC_RAIJIN_FEMALE_LEGION_ARTIS,{
+ speech
+ l("Hey, you!"),
+ l("Do not dare sitting on this bench. This is Micksha's place to relax. You better are gone when he arrives."),
+ l("He has to listen to much drama, so he wants to rest here, alone, in silence. Got it?");
+ next;
+ select
+ l("Got it."),
+ l("And what if I sit?"),
+ l("Who's Micksha?"),
+ l("What's the story of this place, anyway?");
+ mes "";
+ mesn;
+ switch (@menu) {
+ case 2:
+ mesq l("Well, if he sees you, a giant foot will descend from the heavens upon you... Or so I've heard.");
+ next;
+ mesn;
+ mesc l("*shivers*");
+ mesq l("I would be afraid if I were you!");
+ next;
+ mesn;
+ break;
+ case 3:
+ mesq l("A popular designer and inventor. A lot of buildings follow their architectonic drawings.");
+ next;
+ mesn;
+ mesq l("You would be amazed at how much engineers and politicians oppose to his architecture, though!");
+ next;
+ mesn;
+ break;
+ case 4:
+ mesq l("Once upon a long time, a local nobleman crushed a gold ingot in this lake. Instead of dust, it became water and then, this pond came to be.");
+ next;
+ mesn;
+ mesq l("It is only a myth, don't expect it to make a lot of sense.");
+ next;
+ mesn;
+ break;
+ }
+ mesq l("Now, get moving.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/boss.txt b/npc/020-1/boss.txt
new file mode 100644
index 00000000..e45eebed
--- /dev/null
+++ b/npc/020-1/boss.txt
@@ -0,0 +1,43 @@
+// The Mana World Script
+// Author:
+// Jesusalva
+// Description:
+// Controls the boss on 020-1 and the Master Book Learning
+// see npc/items/master_skillbook.txt for explanation about variables
+
+020-1,0,0,0 script #BossCtrl_020-1 NPC_HIDDEN,{
+ end;
+
+// Test server: 5 minutes only
+OnTimer300000:
+ if (!debug)
+ end;
+
+// Otherwise, respawn every 15 minutes
+OnTimer900000:
+ stopnpctimer;
+OnInit:
+ $@MB_0201=0;
+ monster "020-1", 160, 254, strmobinfo(1, GoldenScorpion), GoldenScorpion, 1, "#BossCtrl_020-1::OnBossDeath";
+ end;
+
+OnBossDeath:
+ initnpctimer;
+ BossSlain(.name$, "$@MB_0201");
+ end;
+
+OnBossCheck:
+ @mb_BossId=-1;
+ // TODO: Check if you really fought or was just lurking
+ // Check if party is correct
+ if (getcharid(1) != $@MB_0201)
+ end;
+OnBegin:
+ @mb_BossId=GoldenScorpion;
+ @mb_SkillId=GC_DARKILLUSION;
+ @mb_ItemId=MagicFeather; // Placeholder
+ @mb_ItemAm=1;
+ addtimer(15000, "#MasterBook::OnUnset");
+ end;
+
+}
diff --git a/npc/020-1/budifis.txt b/npc/020-1/budifis.txt
new file mode 100644
index 00000000..763d671b
--- /dev/null
+++ b/npc/020-1/budifis.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Budifis the Water Mage.
+// THIS IS A PLACEHOLDER!
+
+020-1,70,47,0 script Budifis NPC_MAGE_BLUE,{
+ speech
+ l("Hi!"),
+ l("I just love watching the ocean from up there."),
+ l("Did you meet Pusco already? He and his crappy Fire Elements. One day I will extinguish him properly, be assured.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
+
+
diff --git a/npc/020-1/cyndala.txt b/npc/020-1/cyndala.txt
new file mode 100644
index 00000000..3a1a6886
--- /dev/null
+++ b/npc/020-1/cyndala.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Cyndala, a lady in the garden in Tulimshar slums.
+// THIS IS A PLACEHOLDER!
+
+020-1,285,156,0 script Cyndala NPC_INYA,{
+ speech
+ l("Hi there."),
+ l("There used to be more pirates around here, but, you know."),
+ l("People are going mad rewriting history and I'm clueless."),
+ l("Whatever.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/ekinu.txt b/npc/020-1/ekinu.txt
new file mode 100644
index 00000000..2e9682c0
--- /dev/null
+++ b/npc/020-1/ekinu.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Ekinu, a Brotherhood Guard protecting the bridge.
+// THIS IS A PLACEHOLDER!
+
+020-1,170,118,0 script Ekinu NPC_RAIJIN_MALE_BROTHERHOOD,{
+ speech
+ l("Hi!"),
+ l("You come from Hurnscald? Oh, did you meet my Grandma there? Is she fine?"),
+ l("Tell her greetings, and give her some flowers from me when you return there.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/eomie.txt b/npc/020-1/eomie.txt
new file mode 100644
index 00000000..7b613c38
--- /dev/null
+++ b/npc/020-1/eomie.txt
@@ -0,0 +1,192 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Jesusalva
+// Description:
+// Eomie, the real Nature Mage. Whatever Hocus is saying.
+// ANWAR QUEST PART IS COPY-PASTA FROM MOUBOOTAUR LEGENDS
+// THIS IS A PLACEHOLDER!! The Nature Magic questline is missing.
+
+020-1,76,96,0 script Eomie NPC_EOMIE,{
+ .@q=getq(TulimsharQuest_AnwarField);
+
+ // Results: 6 - nothing. 7- bug feast.
+ // On status 7, you need to talk to Hocus.
+ // Then Hocus will finish stuff for you, and it's reward time.
+ if (.@q == 10) goto L_Gift;
+ if (.@q == 7) goto L_Success;
+ if (.@q == 6) goto L_Fail;
+ if (.@q == 4) goto L_Craft;
+ if (.@q == 3) goto L_Back;
+ if (.@q == 2) goto L_Start;
+ if (.@q == 1) goto L_Refuse;
+
+ // Placeholder dialog
+ if (.@q == 5)
+ mesc l("I still have Anwar's fertilizer with me.");
+ speech
+ l("Hi!"),
+ l("Did you talk to Hocus already? He will tell you about salad, again."),
+ l("Sometimes I think he is more a chef than a mage, but oh well, everybody should do what suits them best.");
+ close;
+
+// READ THE HOLY DIALOGS!!
+L_Refuse:
+ mesn strcharinfo(0);
+ mesq l("Hello! Anwar sent me to get fertilizer to save Tulimshar from famine, could you help me?");
+ next;
+ mesn;
+ mesq l("Not now, I'm busy tending the garden.");
+ close;
+
+L_Start:
+ mesn strcharinfo(0);
+ mesq l("Hello, could I help you in exchange for fertilizer?");
+ next;
+ mesn;
+ mesq l("Actually, yes. The birthday of me and my boyfriend is coming up. He always give me chocolate cake, so I want to surprise him for once. Bring me 12 @@ and I'll make the fertilizer for you.", getitemlink(CherryCake));
+ setq TulimsharQuest_AnwarField, 3;
+ close;
+
+L_Back:
+ mesn;
+ mesq l("So, did you brought me the twelve cherry cakes?");
+ mes "";
+ mesn strcharinfo(0);
+ if (askyesno() != ASK_YES) {
+ close;
+ }
+ mes "";
+ if (countitem("CherryCake") < 12)
+ goto L_Lying;
+
+ delitem CherryCake, 12;
+ getexp 200, 5;
+ setq TulimsharQuest_AnwarField, 4;
+ mesn;
+ mesq l("Okay, that is very useful. However, I do need a few reagents to make it.");
+ next;
+ mesn;
+ mesq l("Please, come back later. I'll see whatever I can fetch for that.");
+ close;
+
+L_Craft:
+ mesn;
+ mesq l("So, for the fertilizer. The thing is, all that thing is unstable.");
+ next;
+ mesn;
+ mesq l("This fertilizer is projected to protect the plants from plagues, bugs, scorpions and maggots, trying to not be a plague itself.");
+ next;
+ mesn;
+ mesq l("I have no way to know how much fertilizer you'll be needing. I need @@ @@ and @@ @@ to make a Certified Fertility Potion for you.", 3, getitemlink(Plushroom), 9, getitemlink(MaggotSlime));
+ next;
+ mesn;
+ mesq l("Give that to whoever needs them, and see if it works. Then come tell me the result. Do you have the reagents?");
+ if (askyesno() != ASK_YES)
+ close;
+ mes "";
+
+ if (countitem(Plushroom) < 3||
+ countitem(MaggotSlime) < 9)
+ goto L_Lying;
+
+ inventoryplace FertilityPotion, 1;
+ delitem Plushroom, 3;
+ delitem MaggotSlime, 9;
+ getitembound(FertilityPotion, 1, IBT_CHARACTER);
+ setq1 TulimsharQuest_AnwarField, 5;
+
+ mesn;
+ mesq l("Here it is. Come back to report the results.");
+ close;
+
+L_Fail:
+ setq1 TulimsharQuest_AnwarField, 4;
+ .@q2=getq2(TulimsharQuest_AnwarField);
+ if (.@q2 < 10)
+ getexp 180-(.@q2*10), 0;
+ else
+ getexp 90, 0;
+ mesn;
+ switch (.@q2) {
+ case 1:
+ mesq l("Well, that could not be enough, I said. Here is some experience.");
+ break;
+ case 2:
+ mesq l("Don't worry, third time is the charm. Here is some experience. Let's try again.");
+ break;
+ case 3:
+ mesq l("Okay, here is some experience, and forgot what I've said before. We can try again.");
+ break;
+ case 4:
+ mesq l("Don't worry, I've tweaked my formula this time. Here is some experience and let's try again!");
+ break;
+ case 5:
+ mesq l("I'm sorry, I just... Maybe if...? Aha! Here's the EXP, ready for a next go?");
+ break;
+ case 6:
+ mesq l("Uhm, maybe I mashed the Plushroom too hard this time. Here's EXP as usual, let's try again?");
+ break;
+ case 7:
+ mesq l("I shall not fail any further, I think my new formula is perfect! Here's the EXP, but I need material to use it!");
+ break;
+ case 8:
+ mesq l("I never knew you could fail THAT hard. I've took Saulc's Fertilizer's recipe, success chance is of 100% if you want to try again.");
+ break;
+ default:
+ mesq l("Well, that could fail, I said. Here is some experience.");
+ break;
+ }
+ next;
+ if (countitem(Plushroom) >= 3 &&
+ countitem(MaggotSlime) >= 9)
+ goto L_Craft;
+ mesn;
+ mesq l("Now go, and fetch the materials again. I'll make another fertilizer for you.");
+ close;
+
+L_Success:
+ mesn;
+ mesq l("WHAT? The farm is plagued with insects?!");
+ next;
+ mesn;
+ mesq l("Quick, tell that to Hocus. No one is better at Nature Magic than Hocus, I'm sure he can help.");
+ close;
+
+L_Gift:
+ .@q2=getq2(TulimsharQuest_AnwarField);
+ if (.@q2 & 1) {
+ mesn;
+ mesq l("Thanks for the nice gift!");
+ close;
+ }
+ // Tip. WHAT DID YOU DID WITH THE BOUND ITEM? IT SHOULD BE HARD TO GET RID OF IT...
+ if (countitem(SilverBell) < 1) {
+ mesn;
+ mesq l("Ah, I wish I got something for helping people out...");
+ close;
+ }
+ mesn strcharinfo(0);
+ mesq l("Anwar sent you this, erm, hum... @@.", getitemlink(SilverBell));
+ next;
+ setq2 TulimsharQuest_AnwarField, .@q2+1;
+ delitem SilverBell, 1;
+ getexp 95, 1;
+ mesn;
+ mesq l("WOW, THIS IS AWESOME! Many, many thanks!!");
+ close;
+
+L_Lying:
+ mesn;
+ mesq l("Ah, so you think you can fool me?");
+ next;
+ percentheal -5, -5;
+ warp "Save", 0, 0;
+ dispbottom l("Ah... Was I warped?");
+ closedialog;
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/froma.txt b/npc/020-1/froma.txt
new file mode 100644
index 00000000..8e232599
--- /dev/null
+++ b/npc/020-1/froma.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Froma, a Legion Soldier besides the gate to Legion area.
+// THIS IS A PLACEHOLDER!
+
+020-1,291,123,0 script Froma NPC_DEMON_MALE_LEGION_ARTIS,{
+ speech
+ l("Fromage!"),
+ l("It is the only word in french I know. We are very classy."),
+ l("So if you want, you can hunt something, or cook something, or craft somethig."),
+ l("Whatever.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/harper.txt b/npc/020-1/harper.txt
new file mode 100644
index 00000000..104c2f47
--- /dev/null
+++ b/npc/020-1/harper.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Harper, a Sailor helping Joelin.
+// THIS IS A PLACEHOLDER!
+
+020-1,191,150,0 script Harper NPC_ADRIAN,{
+ speech
+ l("Hello!"),
+ l("Ever saw a Captain without a ship?"),
+ l("<--- I am with stupid.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/hocus.txt b/npc/020-1/hocus.txt
new file mode 100644
index 00000000..fcfbe73c
--- /dev/null
+++ b/npc/020-1/hocus.txt
@@ -0,0 +1,166 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Hocus, the Nature Mage and Academy Grandmaster. More interested in food than in nature magic, sometimes.
+// "Hocus: the mages here? They just think they work for me, they never understod that i am just one of them.. no idea why they follow me"
+// THIS IS A PLACEHOLDER!
+
+020-1,73,91,0 script Hocus NPC_MAGE_BROWN,{
+ function anwarNotMe;
+ function anwarFirstAid;
+ function anwarGift;
+
+ setq2 TonoriQuest_Kylian, getq2(TonoriQuest_Kylian) | KYLIAN_HOCUS;
+ speech
+ l("Hi!"),
+ l("You should eat more salad. I see in your face that your nutrition is not good."),
+ l("Can you bug Jesusalva? I really would like to teach you something.");
+ if (getq(HurnscaldQuests_Rossy) == 8) {
+ next;
+ mesn;
+ mesq l("I see you are helping the little girl, Rossy I believe? Her profesor, Mr. David, is on the west wing of the magic academy building.");
+ }
+ next;
+ select
+ rif(getq(General_Cooking) == 15, l("Please enlighten me, O Grandmaster, where can I find Salad to improve my eating habits?")),
+ rif(getq(General_Cooking) == 16, l("I've brought you the promised.")),
+ rif(getq(TulimsharQuest_AnwarField) == 1, l("Hello, do you make Fertility Potions?")),
+ rif(getq(TulimsharQuest_AnwarField) == 7, l("HELP! Anwar field is under worm attack!!")),
+ rif(getq(TulimsharQuest_AnwarField) == 10, l("Anwar sent you a gift.")),
+ l("Thanks for your wise words.");
+ mes "";
+ switch (@menu) {
+ /* Food Questline */
+ case 1:
+ mesn;
+ mesq l("Here. But you probably won't be coming here to eat all the time, so I will teach you a salad recipe.");
+ next;
+ select
+ l("Do you need some monster killed?"),
+ l("Do you need some sort of item?"),
+ l("Do you need money?");
+ mes "";
+ mesn;
+ mesq l("Hm, not really...");
+ next;
+ mesn strcharinfo(0);
+ // FIXME: Carrot Cake? Really??
+ mesq l("I'll bring you 6 %s, 6 %s, and a %s just wait here. I'll also clean up all monsters on the proximity and pay you 1000 E. Wait for my return, Grandmaster!", getitemlink(RoastedAcorn), getitemlink(Carrot), getitemlink(CarrotCake));
+ setq1 General_Cooking, 16;
+ break;
+ case 2:
+ if (countitem(RoastedAcorn) < 6 ||
+ countitem(Carrot) < 6 ||
+ countitem(CarrotCake) < 1 ||
+ Zeny < 1000) {
+ mesn strcharinfo(0);
+ mesc l("I promised to bring him 6 %s, 6 %s, and a %s. I also promised clean up all monsters on the proximity and pay him 1000 E. I'll make the Grandmaster proud!", getitemlink(RoastedAcorn), getitemlink(Carrot), getitemlink(CarrotCake));
+ close;
+ }
+ mesn;
+ mesq l("Child, I do not need your money nor your items. I told you I would teach you the recipe. It is free.");
+ next;
+ mesn;
+ mesq l("I am already happy enough that you want to improve your own eating habits. You don't need to give me anything.");
+ next;
+ mesn;
+ mesq l("Besides, helping each other, even without a compensation is a good thing and accepting help is nothing to be ashamed of. Here. Go in peace, child.");
+ // FIXME: Probably wrong recipe
+ RECIPES[CraftBlueberryCake]=true;
+ RECIPES[CraftCarrotCake]=true;
+ getitem BlueberryCake, 1;
+ setq1 General_Cooking, 17;
+ break;
+ // Anwar Quest
+ case 3:
+ anwarNotMe();
+ break;
+ case 4:
+ anwarFirstAid();
+ break;
+ case 5:
+ anwarGift();
+ break;
+ }
+ close;
+
+function anwarNotMe {
+ mesn strcharinfo(0);
+ mesq l("Hello Mr. Hocus, kind sir Anwar sent me to fetch some fertilizers to save Tulimshar from famine, if you may?");
+ next;
+ mesn;
+ mesq l("Sorry kind friend @@, but no.", strcharinfo(0));
+ next;
+ mesn;
+ mesq l("Or rather, I can't. I would love to help you, just like everybody else, but I don't know how to make fertilizers, only Salad.");
+ next;
+ mesn;
+ mesq l("Eomie probably could do that, she is young but very talented. If you help her, she'll likely help you back.");
+ setq TulimsharQuest_AnwarField, 2;
+ return;
+}
+
+function anwarFirstAid {
+ mesn;
+ mesq l("The crops are under attack? That's terrible!");
+ next;
+ mesn;
+ mesq l("I can do a Certified Purification Potion right away, the warranty covers it. But I still need a few things for it!");
+ next;
+ mesn;
+ mesq l("Do you, perchance, have 2 @@, 2 @@ and 3 @@?", getitemlink(LeftScorpionClaw), getitemlink(RightScorpionClaw), getitemlink(Moss));
+ if (askyesno() != ASK_YES)
+ close;
+ mes "";
+
+ if (countitem(LeftScorpionClaw) < 2 ||
+ countitem(RightScorpionClaw) < 2 ||
+ countitem(Moss) < 3) {
+ mesn;
+ mesq l("Why are you lying? We must cooperate with each other if we want to strive. Otherwise, just like the plants, we will wither and die out. Go fetch the items!");
+ close;
+ }
+
+ inventoryplace PurificationPotion, 1;
+ delitem LeftScorpionClaw, 2;
+ delitem RightScorpionClaw, 2;
+ delitem Moss, 3;
+ getitembound(PurificationPotion, 1, IBT_CHARACTER);
+ setq TulimsharQuest_AnwarField, 8;
+
+ mesn;
+ mesq l("Quick, deliver this to Anwar!");
+ return;
+}
+
+function anwarGift {
+ .@q2=getq2(TulimsharQuest_AnwarField);
+ if (.@q2 & 2) {
+ mesn;
+ mesq l("Thanks for the nice gift!");
+ close;
+ }
+ // Tip. WHAT DID YOU DID WITH THE BOUND ITEM? IT SHOULD BE HARD TO GET RID OF IT...
+ if (countitem(SilverBell) < 1) {
+ mesn;
+ mesq l("Ah, I wish I got something for helping people out...");
+ close;
+ }
+ mesn strcharinfo(0);
+ mesq l("Anwar sent you this, erm, hum... @@.", getitemlink(SilverBell));
+ next;
+ setq2 TulimsharQuest_AnwarField, .@q2+2;
+ delitem SilverBell, 1;
+ getexp 75, 10;
+ mesn;
+ mesq l("WOW, THIS IS AWESOME! Many, many thanks!!");
+ return;
+}
+
+OnInit:
+ .distance = 4;
+ end;
+}
+
+
diff --git a/npc/020-1/inar.txt b/npc/020-1/inar.txt
new file mode 100644
index 00000000..0611eeb6
--- /dev/null
+++ b/npc/020-1/inar.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Inar, a saleswoman in Tulimshar Market.
+// THIS IS A PLACEHOLDER!
+
+020-1,212,171,0 script Inar NPC_SABINE,{
+ speech
+ l("Hi there."),
+ l("You wonder why here are so many idle market stalls, right?"),
+ l("This is due to lazyness of Micksha to prepare placeholders."),
+ l("So, see you later when we have something to sell here.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/issay.txt b/npc/020-1/issay.txt
new file mode 100644
index 00000000..968e58c5
--- /dev/null
+++ b/npc/020-1/issay.txt
@@ -0,0 +1,15 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Description:
+// Issay the Barber.
+// THIS IS A PLACEHOLDER!
+
+020-1,227,179,0 script Issay the Barber NPC_GUMI_THE_DYER,{
+ Barber();
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/itka.txt b/npc/020-1/itka.txt
new file mode 100644
index 00000000..9ca9fb50
--- /dev/null
+++ b/npc/020-1/itka.txt
@@ -0,0 +1,48 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Itka, the spammy spammy little girl in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,194,175,0 script Itka NPC_GIRL_MILLY,{
+ speech
+ l("Hi there."),
+ l("Come to the bakery! Come to the Market! Come to Prison!"),
+ l("I will improve, promised. Come to the Academy! Come to Oasis!");
+ do
+ {
+ next;
+ select
+ l("Where is the bakery?"),
+ l("Where is the market?"),
+ l("Where is the prison?"),
+ l("Where is the academy?"),
+ l("Where is the oasis?"),
+ l("Why are you doing this?"),
+ l("Okay... Spammy little girl.");
+ mes "";
+ switch (@menu) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ mesn;
+ mesq l("I don't know! %%Q");
+ break;
+ case 6:
+ mesn;
+ mesq l("To pay my studies!");
+ break;
+ default:
+ close;
+ break;
+ }
+ } while (true);
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/joaquim.txt b/npc/020-1/joaquim.txt
new file mode 100644
index 00000000..83c90596
--- /dev/null
+++ b/npc/020-1/joaquim.txt
@@ -0,0 +1,201 @@
+// The Mana World Script, ported from Moubootaur Legends
+// TMW2 Script, ported from TMW-BR
+// TMW2 Author: Jesusalva
+//
+// Creator: Cardinalli
+// Review: Lunovox <rui.gravata@gmail.com>
+//
+// Description:
+// A rather easy quest to give players what to kill.
+// Reward:
+// Mouboo pendant + 20% exp of level 55
+
+020-1,95,133,4 script Joaquim NPC_MAGE_BLUE,{
+ function joaquimTooWeak;
+ function joaquimWeak;
+ function joaquimComplete;
+ function joaquimFinish;
+ function joaquimDoIt;
+ function joaquimReturn;
+ function joaquimRecipe;
+ function joaquimFound;
+ function joaquimMissing;
+ function joaquimStart;
+
+ .@q=getq(TonoriQuest_Joaquim);
+ if (BaseLevel < 36) joaquimTooWeak();
+ if (BaseLevel < 55) joaquimWeak();
+ switch (.@q) {
+ case 0: joaquimStart(); break;
+ case 1: joaquimFound(); break;
+ case 2: joaquimReturn(); break;
+ case 3: joaquimDoIt(); break;
+ case 4: joaquimFinish(); break;
+ default: joaquimComplete(); break;
+ }
+ close;
+
+function joaquimTooWeak {
+ mesn;
+ mesq l("Hmm, why can't I find swamp yellowherb here in the desert...?");
+ close;
+}
+
+function joaquimWeak {
+ mesn;
+ .@r=rand2(1,5);
+ switch (.@r) {
+ case 1:
+ mesq l("Watch out! My wife was gravely wounded the other day. Tonori monsters are no child play!");
+ break;
+ case 2:
+ mesq l("Ah, I hate mushrooms. Perhaps in future, I could use their spikes and mushies.");
+ break;
+ case 3:
+ mesq l("Ah, I hate snakes. Perhaps in future, I could use their tongues.");
+ break;
+ case 4:
+ mesq l("Ah, I love mouboos. But their steaks, hmm. Ah, no, I shouldn't eat that...");
+ break;
+ case 5:
+ mesq l("You should never sell your Cactus Drinks. They have many uses.");
+ break;
+ }
+ close;
+}
+
+function joaquimComplete {
+ mesn;
+ mesq l("Thanks for helping my wife, I'll be forever grateful.");
+ return;
+}
+
+function joaquimFinish {
+ inventoryplace ElixirOfLife, 1, MoubooPendant, 1;
+ getitem ElixirOfLife, 1;
+ getitem MoubooPendant, 1;
+ quest_xp(.maxLevel, 39260);
+ quest_jxp(.maxLevel, 75);
+ setq TonoriQuest_Joaquim, 5;
+ mesn;
+ mesq l("Take this spare @@ I did. It heals fully and instantly, so don't hesit to use it if you're about to die.", getitemlink(ElixirOfLife));
+ next;
+ mesn;
+ mesq l("Thanks for helping my wife! Here is, an %s. May the Mouboo watch over you! o.o", getitemlink(MoubooPendant));
+ return;
+}
+
+function joaquimDoIt {
+ mesn;
+ mesq l("Please help my wife Yumi, on the Clinic!");
+ return;
+}
+
+// Quest Core
+function joaquimStart {
+ mesn;
+ mesq l("Ohhhhh..... Please, help me!!! My wife is gravely wounded!!");
+ next;
+ mesn strcharinfo(0);
+ mesq l("Calm down! How can I help you?");
+ next;
+ mesn;
+ mesq l("My grandmother gave me a recipe of the %s, it can cure anything but death.", getitemlink(ElixirOfLife));
+ next;
+ mesn;
+ mesq l("I don't remember what I need now, but if you give me a moment, I'll get the list.");
+ setq TonoriQuest_Joaquim, 1;
+ return;
+}
+
+function joaquimFound {
+ mesn;
+ mesq l("I can make an %s, I still have a bottle of fairy blood, a few mana pearls, and some other rare ingredients.", getitemlink(ElixirOfLife));
+ mesq l("It is the non-rare ingredients I actually need help with!");
+ next;
+ joaquimRecipe();
+ next;
+ select
+ l("I will do it, don't worry."),
+ rif(countitem(ElixirOfLife), l("I have one here...")),
+ l("Ahh, too many items. Sorry.");
+ mes "";
+ mesn;
+ if (@menu == 1) {
+ mes l("Thanks! Thanks! Savior! Hurry up!");
+ setq TonoriQuest_Joaquim, 2;
+ } else if (@menu == 2) {
+ mes l("Uhm, sorry, I don't trust stuff you get at market. You know.");
+ mes l("Full of agrotoxins, transgenics and whatever. Not safe.");
+ } else {
+ mes l("Oh noes, who nows can help my wife? Please reconsider!");
+ }
+ return;
+}
+
+function joaquimReturn {
+ joaquimRecipe();
+ next;
+ select
+ l("I'll be back later with all ingredients."),
+ l("They're with me.");
+ mes "";
+ if (@menu == 1)
+ close;
+
+ if (countitem(CactusDrink) < 100 ||
+ countitem(HardSpike) < 60 ||
+ countitem(SmallMushroom) < 45 ||
+ countitem(SnakeTongue) < 40 ||
+ countitem(BottleOfWater) < 30 ||
+ countitem(BugLeg) < 20 ||
+ countitem(MoubooSteak) < 15)
+ joaquimMissing();
+
+ inventoryplace ElixirOfLife, 1;
+
+ delitem CactusDrink, 100;
+ delitem HardSpike, 60;
+ delitem SmallMushroom, 45;
+ delitem SnakeTongue, 40;
+ delitem BottleOfWater, 30;
+ delitem BugLeg, 20;
+ delitem MoubooSteak, 15;
+ getitem ElixirOfLife, 1;
+ setq TonoriQuest_Joaquim, 3;
+ mesn;
+ mesq l("Thanks, I'll just bake the Elixir right away...!");
+ next;
+ mesc l("%s goes away for a while and returns briefly.", .name$);
+ next;
+ mesn;
+ mesq l("Here, take the Elixir. Please, bring it to my wife! I am counting on you!!");
+ return;
+}
+
+function joaquimMissing {
+ mesn strcharinfo(0);
+ mesq l("Except they're not. I'll be back later.");
+ next;
+ mesn;
+ mesq l("Please, %s! Hurry up!", strcharinfo(0));
+ close;
+}
+
+function joaquimRecipe {
+ mesn l("%s Recipe", getitemlink(ElixirOfLife));
+ mesc l("%d/%d %s", countitem(CactusDrink), 100, getitemlink(CactusDrink));
+ mesc l("%d/%d %s", countitem(HardSpike), 60, getitemlink(HardSpike));
+ mesc l("%d/%d %s", countitem(SmallMushroom), 45, getitemlink(SmallMushroom));
+ mesc l("%d/%d %s", countitem(SnakeTongue), 40, getitemlink(SnakeTongue));
+ mesc l("%d/%d %s", countitem(BottleOfWater), 30, getitemlink(BottleOfWater));
+ mesc l("%d/%d %s", countitem(BugLeg), 20, getitemlink(BugLeg));
+ mesc l("%d/%d %s", countitem(MoubooSteak), 15, getitemlink(MoubooSteak));
+ return;
+}
+
+OnInit:
+ .maxLevel = 75;
+ .distance = 5;
+ end;
+}
diff --git a/npc/020-1/joelin.txt b/npc/020-1/joelin.txt
new file mode 100644
index 00000000..820fe276
--- /dev/null
+++ b/npc/020-1/joelin.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Joelin, the broken, shipless Captain in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,189,150,0 script Joelin NPC_JOELIN,{
+ speech
+ l("Hello!"),
+ l("Do you know the story of the Fleet of Aemil? I also want to discover new Lands."),
+ l("But I do not have a ship. Ah, right, and no script.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/jossy.txt b/npc/020-1/jossy.txt
new file mode 100644
index 00000000..45440fd8
--- /dev/null
+++ b/npc/020-1/jossy.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Jossy, another Brotherhood Member in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,180,87,0 script Jossy NPC_HUMAN_MALE_BROTHERHOOD,{
+ speech
+ l("Hi!"),
+ l("I don't want to talk to you."),
+ l("Here, talk to my hand.");
+ heal -100, 0;
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/mahoud.txt b/npc/020-1/mahoud.txt
new file mode 100644
index 00000000..2ad43518
--- /dev/null
+++ b/npc/020-1/mahoud.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Mahoud, a scammer and a troll besides the Tulimshar Graveyard.
+// THIS IS A PLACEHOLDER!
+
+020-1,180,169,0 script Mahoud NPC_YOUNG_MAN_KFAHR,{
+ speech
+ l("Hey, you!"),
+ l("Got something to bury? I need some job, and I need some money."),
+ l("Ah, wait, we cannot trade anything without some developer. Go find one!");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/malivox.txt b/npc/020-1/malivox.txt
new file mode 100644
index 00000000..583574c5
--- /dev/null
+++ b/npc/020-1/malivox.txt
@@ -0,0 +1,23 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Malivox, a salesman in Tulimshar Market.
+// THIS IS A PLACEHOLDER!
+
+020-1,241,170,0 script Malivox NPC_KPG_MANAGER,{
+ speech
+ l("Hi there."),
+ l("You wonder why here are so many idle market stalls, right?"),
+ l("This is due to lazyness of Micksha to prepare placeholders."),
+ l("Don't steal stuff from them, though. Or you will be imprisoned."),
+ l("What I sell? Well, you can see Mananas... Aquadas... Croc claws..."),
+ l("But they are not for sale! I use them for my custom brew of status reset potions. Are you interested?");
+
+ ConfirmStatusReset();
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/marikel.txt b/npc/020-1/marikel.txt
new file mode 100644
index 00000000..2619e6fe
--- /dev/null
+++ b/npc/020-1/marikel.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Marikel, another Brotherhood Guard protecting the bridge.
+// THIS IS A PLACEHOLDER!
+
+020-1,163,118,0 script Marikel NPC_HUMAN_MALE_BROTHERHOOD,{
+ speech
+ l("Hi!"),
+ l("You come from Hurnscald? Oh, did you meet my Grandpa there? Is she fine?"),
+ l("Tell him greetings, and give him a few beers from me once you return there.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/marine.txt b/npc/020-1/marine.txt
new file mode 100644
index 00000000..65a08adc
--- /dev/null
+++ b/npc/020-1/marine.txt
@@ -0,0 +1,17 @@
+// Moubootaur Legends scripts.
+// Authors:
+// Jesusalva
+// Description:
+// This script controls access to Ships, fixing variables.
+
+// Use NPC_LA_MARINE if needed
+020-1,210,143,0 script La Marine#T NPC_HIDDEN,0,0,{
+ end;
+
+OnTouch:
+ EnterTown("Tulim");
+
+ warp "marine@"+LOCATION$, 42, 26;
+ closedialog;
+ close;
+}
diff --git a/npc/020-1/martha.txt b/npc/020-1/martha.txt
new file mode 100644
index 00000000..2faf9dd3
--- /dev/null
+++ b/npc/020-1/martha.txt
@@ -0,0 +1,18 @@
+// The Mana World scripts.
+// Author:
+// Micksha
+// Description:
+// Martha, sort of Brotherhood Leader in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,164,81,0 script Martha NPC_UKAR_FEMALE_BROTHERHOOD,{
+ speech
+ l("Hi!"),
+ l("Have you ever been to Artis? Did you meet my mom there? Her name is Sophialla."),
+ l("I hope she is fine. It is so dangerous out there.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/neko.txt b/npc/020-1/neko.txt
new file mode 100644
index 00000000..92460cf7
--- /dev/null
+++ b/npc/020-1/neko.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Neko, the Trader in Legion area in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,278,99,0 script Neko NPC_DESERT_HAT_MAN,{
+ speech
+ l("Hi there."),
+ l("I am out of stock, unfortunately."),
+ l("What do you mean to look at my wares?!"),
+ l("My collection of random stuff is not for sale! Go away!");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/nickos.txt b/npc/020-1/nickos.txt
new file mode 100644
index 00000000..fb4c61be
--- /dev/null
+++ b/npc/020-1/nickos.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Nickos, a free soldier working with Nickos on protecting the town from mine mobs.
+// THIS IS A PLACEHOLDER!
+
+020-1,78,237,0 script Nickos NPC_NICKOS,{
+ speech
+ l("Hi there."),
+ l("Sorry, for now you cannot enter. We sealed the entrance to avoid a monster flood."),
+ l("Come back later, perhaps you can help keeping things under control.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/noke.txt b/npc/020-1/noke.txt
new file mode 100644
index 00000000..74337640
--- /dev/null
+++ b/npc/020-1/noke.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Noke, the Trader in Brotherhood area in Tulimshar.
+// THIS IS A PLACEHOLDER!
+
+020-1,171,80,0 script Noke NPC_DESERT_HAT_MAN,{
+ speech
+ l("Hi there."),
+ l("Everyone wants a slice of Tulimshar."),
+ l("So it is hard to know my role on this world."),
+ l("Whatever.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/odonell.txt b/npc/020-1/odonell.txt
new file mode 100644
index 00000000..186929ed
--- /dev/null
+++ b/npc/020-1/odonell.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// O'Donell, a member of Thieves Guild protecting their Cave's entrance.
+// THIS IS A PLACEHOLDER!
+
+020-1,157,157,0 script O'Donell NPC_HENRY,{
+ speech
+ l("Psst!"),
+ l("Did you already meet Nunia, in Woodland? If you bring me a stolen good, I will let you inside our Thieves Guild Headquarters."),
+ l("If you don't - well, go play hide'n'seek with Itka. Her spam annoys me anyways.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/philip.txt b/npc/020-1/philip.txt
new file mode 100644
index 00000000..9b575a8c
--- /dev/null
+++ b/npc/020-1/philip.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Philip, a Legion Soldier besides the gate to Legion area.
+// THIS IS A PLACEHOLDER!
+
+020-1,285,123,0 script Philip NPC_UKAR_MALE_LEGION_ARTIS,{
+ speech
+ l("Hi there."),
+ l("I am just a random soldier, so stop bothering me."),
+ l("Whatever.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/popaul.txt b/npc/020-1/popaul.txt
new file mode 100644
index 00000000..94ed4dcf
--- /dev/null
+++ b/npc/020-1/popaul.txt
@@ -0,0 +1,19 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Popaul, a Legion Soldier in Legion area of Tulim.
+// THIS IS A PLACEHOLDER!
+
+020-1,278,108,0 script Popaul NPC_HUMAN_MALE_LEGION_ARTIS,{
+ speech
+ l("Hi there."),
+ l("I am so lazy today. I wish work hours end soon."),
+ l("Then I'll have a drink with my friends at the inn."),
+ l("Won't be able to walk properly afterwards, but whatever, I get experience either way!");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/pusco.txt b/npc/020-1/pusco.txt
new file mode 100644
index 00000000..2fc15879
--- /dev/null
+++ b/npc/020-1/pusco.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Pusco, the Fire Mage. Still outside, to be moved to the cave (with some lava) later (TM).
+// THIS IS A PLACEHOLDER!
+
+020-1,87,122,0 script Pusco NPC_MAGE_RED,{
+ speech
+ l("Hi!"),
+ l("Fire, I love fire! Its so powerful! It even comes with particle effects most of the time!"),
+ l("Can you bug Jesusalva? I really would like to teach you something.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
+
+
diff --git a/npc/020-1/ryan.txt b/npc/020-1/ryan.txt
new file mode 100644
index 00000000..7ed14715
--- /dev/null
+++ b/npc/020-1/ryan.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Ryan, a Legion Soldier near the Docks.
+// THIS IS A PLACEHOLDER!
+
+020-1,275,97,0 script Ryan NPC_DEMON_MALE_LEGION_ARTIS,{
+ speech
+ l("hmmm..."),
+ l("You were in Hurnscald lately, right? That smell, that Brotherhood smell."),
+ l("Better get out of here, before I become wild.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/sander.txt b/npc/020-1/sander.txt
new file mode 100644
index 00000000..5eac3386
--- /dev/null
+++ b/npc/020-1/sander.txt
@@ -0,0 +1,18 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Sander, a free soldier working with Nickos on protecting the town from mine mobs.
+// THIS IS A PLACEHOLDER!
+
+020-1,200,203,0 script Sander NPC_SANDER,{
+ speech
+ l("Hi there."),
+ l("I will send you to the mines! Later, when we have clearance for the mines, that is."),
+ l("Tell Micksha to get up his ass for mapping desert caves, maybe this will speed it up.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/tindris.txt b/npc/020-1/tindris.txt
new file mode 100644
index 00000000..e35acc2d
--- /dev/null
+++ b/npc/020-1/tindris.txt
@@ -0,0 +1,30 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Tindris, a mage apprentice on the way to magic academy. Twice. It is magic.
+// THIS IS A PLACEHOLDER!
+
+020-1,44,196,0 script Tindris#1 NPC_SIMON,{
+ speech
+ l("Hi!"),
+ l("Past here, the neutral area of the Magic Academy of Tulimshar starts."),
+ l("Don't dare to use any violence against peaceful beings, or you will be punished.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
+
+020-1,46,133,0 script Tindris#2 NPC_SIMON,{
+ speech
+ l("Hi!"),
+ l("Past here, the neutral area of the Magic Academy of Tulimshar starts."),
+ l("Don't dare to use any violence against peaceful beings, or you will be punished.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
diff --git a/npc/020-1/vaspina.txt b/npc/020-1/vaspina.txt
new file mode 100644
index 00000000..7e5b76bd
--- /dev/null
+++ b/npc/020-1/vaspina.txt
@@ -0,0 +1,20 @@
+// Evol scripts.
+// Author:
+// Micksha
+// Description:
+// Vaspina the Harmony Mage.
+// THIS IS A PLACEHOLDER!
+
+020-1,91,112,0 script Vaspina NPC_MORGAN,{
+ speech
+ l("Hi!"),
+ l("Pst, not so loud. You frighten the animals here."),
+ l("You were told to not harm peaceful beings in the Academy, right? Please strictly follow that rule.");
+ close;
+
+OnInit:
+ .distance = 4;
+ end;
+}
+
+
diff --git a/npc/020-1/wateranimation.txt b/npc/020-1/wateranimation.txt
new file mode 100644
index 00000000..a539a944
--- /dev/null
+++ b/npc/020-1/wateranimation.txt
@@ -0,0 +1,20 @@
+// The Mana World scripts.
+// Description:
+// Water animations, splash, fishes, etc...
+
+020-1,103,141,0 duplicate(#fish_seawater) #tulim_fish01 NPC_WATER_SPLASH
+020-1,98,144,0 duplicate(#fish_seawater) #tulim_fish02 NPC_WATER_SPLASH
+020-1,94,148,0 duplicate(#fish_seawater) #tulim_fish03 NPC_WATER_SPLASH
+020-1,181,70,0 duplicate(#fish_seawater) #tulim_fish04 NPC_WATER_SPLASH
+020-1,191,94,0 duplicate(#fish_seawater) #tulim_fish05 NPC_WATER_SPLASH
+020-1,182,117,0 duplicate(#fish_seawater) #tulim_fish06 NPC_WATER_SPLASH
+020-1,187,126,0 duplicate(#fish_seawater) #tulim_fish07 NPC_WATER_SPLASH
+020-1,227,159,0 duplicate(#fish_seawater) #tulim_fish08 NPC_WATER_SPLASH
+020-1,238,158,0 duplicate(#fish_seawater) #tulim_fish09 NPC_WATER_SPLASH
+020-1,247,146,0 duplicate(#fish_seawater) #tulim_fish10 NPC_WATER_SPLASH
+020-1,257,127,0 duplicate(#fish_seawater) #tulim_fish11 NPC_WATER_SPLASH
+020-1,263,126,0 duplicate(#fish_seawater) #tulim_fish12 NPC_WATER_SPLASH
+020-1,268,87,0 duplicate(#fish_seawater) #tulim_fish13 NPC_WATER_SPLASH
+020-1,217,155,0 duplicate(#fish_seawater) #tulim_fish14 NPC_WATER_SPLASH
+020-1,295,74,0 duplicate(#fish_seawater) #tulim_fish15 NPC_WATER_SPLASH
+