summaryrefslogtreecommitdiff
path: root/npc/001-1
diff options
context:
space:
mode:
Diffstat (limited to 'npc/001-1')
-rw-r--r--npc/001-1/_import.txt24
-rw-r--r--npc/001-1/_mobs.txt7
-rw-r--r--npc/001-1/_warps.txt16
-rw-r--r--npc/001-1/adrian.txt42
-rw-r--r--npc/001-1/ched.txt14
-rw-r--r--npc/001-1/children.txt91
-rw-r--r--npc/001-1/constable.txt7
-rw-r--r--npc/001-1/dock.txt42
-rw-r--r--npc/001-1/eomie.txt111
-rw-r--r--npc/001-1/ferry_master.txt19
-rw-r--r--npc/001-1/gate_guards.txt21
-rw-r--r--npc/001-1/gossip.txt57
-rw-r--r--npc/001-1/guards.txt93
-rw-r--r--npc/001-1/inac.txt15
-rw-r--r--npc/001-1/mapflags.txt2
-rw-r--r--npc/001-1/north_shops.txt43
-rw-r--r--npc/001-1/npcs.txt70
-rw-r--r--npc/001-1/sewer_east.txt15
-rw-r--r--npc/001-1/sewer_north.txt15
-rw-r--r--npc/001-1/stat_reset.txt6
-rw-r--r--npc/001-1/tinris.txt186
-rw-r--r--npc/001-1/tombstones.txt65
-rw-r--r--npc/001-1/weellos.txt31
23 files changed, 992 insertions, 0 deletions
diff --git a/npc/001-1/_import.txt b/npc/001-1/_import.txt
new file mode 100644
index 00000000..5333d5d4
--- /dev/null
+++ b/npc/001-1/_import.txt
@@ -0,0 +1,24 @@
+// Map 001-1: Tulimshar Port
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/001-1/_mobs.txt",
+"npc/001-1/_warps.txt",
+"npc/001-1/adrian.txt",
+"npc/001-1/ched.txt",
+"npc/001-1/children.txt",
+"npc/001-1/constable.txt",
+"npc/001-1/dock.txt",
+"npc/001-1/eomie.txt",
+"npc/001-1/ferry_master.txt",
+"npc/001-1/gate_guards.txt",
+"npc/001-1/gossip.txt",
+"npc/001-1/guards.txt",
+"npc/001-1/inac.txt",
+"npc/001-1/mapflags.txt",
+"npc/001-1/north_shops.txt",
+"npc/001-1/npcs.txt",
+"npc/001-1/sewer_east.txt",
+"npc/001-1/sewer_north.txt",
+"npc/001-1/stat_reset.txt",
+"npc/001-1/tinris.txt",
+"npc/001-1/tombstones.txt",
+"npc/001-1/weellos.txt",
diff --git a/npc/001-1/_mobs.txt b/npc/001-1/_mobs.txt
new file mode 100644
index 00000000..bc0d50f6
--- /dev/null
+++ b/npc/001-1/_mobs.txt
@@ -0,0 +1,7 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-1: Tulimshar Port mobs
+001-1,32,59,5,5 monster Green Slime 1005,8,100000,30000
+001-1,45,100,5,5 monster Green Slime 1005,8,100000,30000
+001-1,37,75,4,17 monster Sea Slime 1033,8,100000,30000
+001-1,86,84,32,27 monster Maggot 1002,11,100000,30000
+001-1,86,84,32,27 monster Sea Slime 1033,8,100000,30000
diff --git a/npc/001-1/_warps.txt b/npc/001-1/_warps.txt
new file mode 100644
index 00000000..33f9ba6c
--- /dev/null
+++ b/npc/001-1/_warps.txt
@@ -0,0 +1,16 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 001-1: Tulimshar Port warps
+001-1,63,119,0 warp #001-1_63_119 4,0,002-1,63,21
+001-1,103,119,0 warp #001-1_103_119 4,0,002-1,103,21
+001-1,55,71,0 warp #001-1_55_71 0,0,001-2,31,27
+001-1,52,71,0 warp #001-1_52_71 0,0,001-2,28,27
+001-1,49,71,0 warp #001-1_49_71 0,0,001-2,25,27
+001-1,114,99,0 warp #001-1_114_99 0,0,001-2,25,64
+001-1,27,32,0 warp #001-1_27_32 0,0,001-2,28,101
+001-1,37,32,0 warp #001-1_37_32 0,0,001-2,71,101
+001-1,55,34,0 warp #001-1_55_34 1,0,001-2,104,101
+001-1,52,22,0 warp #001-1_52_22 0,0,001-2,95,52
+001-1,57,22,0 warp #001-1_57_22 0,0,001-2,114,52
+001-1,28,23,0 warp #001-1_28_23 0,0,001-2,28,87
+001-1,28,44,0 warp #001-1_28_44 0,0,021-3,29,61
+001-1,59,98,0 warp #001-1_59_98 0,0,001-2,65,25
diff --git a/npc/001-1/adrian.txt b/npc/001-1/adrian.txt
new file mode 100644
index 00000000..03ec3802
--- /dev/null
+++ b/npc/001-1/adrian.txt
@@ -0,0 +1,42 @@
+001-1,113,64,0 script Adrian NPC213,{
+ mes "[Adrian]";
+ mes "\"Hello. Are you here to pick up some luggage?\"";
+ if (QL_KYLIAN == 1)
+ menu
+ "Yes. Kylian sent me to get his luggage.",L_Get,
+ "No.",L_No;
+ menu
+ "No.",L_No;
+L_No:
+ next;
+ mes "[Adrian]";
+ mes "\"Too bad. I'd like to go get a beer, but I have to wait here until all the luggage is picked up.\"";
+ mes "He sighs.";
+ goto L_close;
+
+L_Get:
+ next;
+ mes "[Adrian]";
+ mes "\"Wonderful! Please show me your ticket.\"";
+ mes "He checks the paper Kylian gave you and then gives you a critical look.";
+ next;
+ getinventorylist;
+ if ((checkweight("LeatherSuitcase", 1) == 0) || (@inventorylist_count == 100))
+ goto L_Inventory;
+ mes "[Adrian]";
+ mes "\"Alright. Here it is. Good luck carrying that thing.\"";
+ mes "Adrain hands you a very heavy suitcase.";
+ getitem "LeatherSuitcase", 1;
+ QL_KYLIAN = 2;
+ goto L_close;
+
+L_Inventory:
+ mes "[Adrian]";
+ mes "\"The suitcase is rather heavy. No offense, but you don't look like you can carry it.\"";
+ mes "Maybe you should get rid of some of the other stuff you're carrying.\"";
+ goto L_close;
+
+L_close:
+ @inventorylist_count = 0;
+ close;
+}
diff --git a/npc/001-1/ched.txt b/npc/001-1/ched.txt
new file mode 100644
index 00000000..8bcd94fa
--- /dev/null
+++ b/npc/001-1/ched.txt
@@ -0,0 +1,14 @@
+
+001-1,43,48,0 script Ched NPC113,{
+ mesn;
+ mesq l("I'm trying to get work on my Alchemy homework, but I'm having some trouble.");
+ next;
+ mesn;
+ mesq l("I'm supposed to combine two potions to create a %s, but I can't seem to figure out which two to combine...", getitemlink(ConcentrationPotion));
+ next;
+ mesn;
+ mes l("\"Maybe I should go back to practicing '%s' until I can make potions properly.\" %%6", (getskilllv(SKILL_MAGIC) ? b("miteyo") : b("monsterinfo spell")));
+ if (getskilllv(SKILL_MAGIC) > 1)
+ learnskill SKILL_MONSTERINFO;
+ close;
+}
diff --git a/npc/001-1/children.txt b/npc/001-1/children.txt
new file mode 100644
index 00000000..dd7f7668
--- /dev/null
+++ b/npc/001-1/children.txt
@@ -0,0 +1,91 @@
+
+001-1,102,27,0 script Aisha NPC108,{
+ @temp = rand(10);
+ if(@temp == 1) goto L_1;
+ if(@temp == 2) goto L_2;
+ if(@temp == 3) goto L_3;
+ if(@temp == 4) goto L_4;
+ if(@temp == 5) goto L_5;
+ if(@temp == 6) goto L_6;
+ if(@temp == 7) goto L_7;
+ if(@temp == 8) goto L_8;
+ if(@temp == 9) goto L_9;
+ goto L_1;
+
+L_1:
+ mes "[Aisha]";
+ mes "\"Maggots are so slimey!\" %%^";
+ goto L_close;
+
+L_2:
+ mes "[Aisha]";
+ mes "\"Want to play ball with me?\"";
+ goto L_close;
+
+L_3:
+ mes "[Aisha]";
+ mes "\"There are so many monsters! I hate scorpions!\" %%3";
+ goto L_close;
+
+L_4:
+ mes "[Aisha]";
+ mes "\"When I grow up, I want to be strong enough to kill a scorpion!\" %%=";
+ goto L_close;
+
+L_5:
+ mes "[Aisha]";
+ mes "\"Mommy told me that you can sell the things that monsters drop.\"";
+ goto L_close;
+
+L_6:
+ mes "[Aisha]";
+ mes "\"Have you tried to eat a roasted maggot? They're sooo yummy! Mommy says they're healthy too!\" %%8";
+ goto L_close;
+
+L_7:
+ mes "[Aisha]";
+ mes "\"I want to be a Doctor when I grow up!\"";
+ goto L_close;
+
+L_8:
+ mes "[Aisha]";
+ mes "\"That earthquake was sooo scary! The earth was shaking and everything was breaking down... but now they've rebuilt everything.\"";
+ goto L_close;
+
+L_9:
+ mes "\"I know a very bad word. But I can't say it because monsters will come and get me if I do!\"";
+ next;
+ menu
+ "A bad word?", L_tell,
+ "Oh. You better keep it to yourself then.", L_close;
+
+L_tell:
+ mes "[Aisha]";
+ mes "\"I heard my mother say it once, and she made me promise her to never say it. ##BNever##b!\"";
+ next;
+ menu
+ "If I promise to never tell anyone, can you tell me the word?", L_keepword,
+ "I understand. You don't need to tell me...", L_Giveword,
+ "Goodbye!", L_close;
+
+L_keepword:
+ mesn;
+ mesq l("No.");
+ goto L_close;
+
+L_Giveword:
+ mesn;
+ mes l("Aisha looks around as she leans in and hushes you to silence. After a few seconds, she whispers to you:");
+ mesq l("I like you, so I'll tell you the bad word. But you can't tell anyone else about it! The bad word is %s.'", b("itenplz"));
+ learnskill EVOL_AREA_PROVOKE, 1;
+ next;
+
+ mes "[Aisha]";
+ mes "Terrified, she looks around once more.";
+ mes "\"But you can't tell anyone!\" %%>";
+ goto L_close;
+
+L_close:
+ @temp = 0;
+ close;
+}
diff --git a/npc/001-1/constable.txt b/npc/001-1/constable.txt
new file mode 100644
index 00000000..36e3c224
--- /dev/null
+++ b/npc/001-1/constable.txt
@@ -0,0 +1,7 @@
+
+001-1,50,74,0 script Constable Perry Graf NPC150,{
+ mes "[Constable Perry Graf]";
+ mes "\"Hello. Make sure to follow the rules!\"";
+ callfunc "GameRules";
+ close;
+}
diff --git a/npc/001-1/dock.txt b/npc/001-1/dock.txt
new file mode 100644
index 00000000..dc7195e9
--- /dev/null
+++ b/npc/001-1/dock.txt
@@ -0,0 +1,42 @@
+
+001-1,75,70,0 script Tulimshar Koga NPC395,9,4,{
+ @npc_distance = 10;
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ callfunc "BoardFerry";
+ end;
+
+OnTouch:
+ addtimer get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnBoard";
+ end;
+
+OnBoard:
+ callfunc "BoardFerry";
+ end;
+}
+
+001-1,68,72,0 script Tulimshar Dock NPC400,2,2,{
+ @npc_distance = 3;
+ callfunc "PCtoNPCRange";
+ if(@npc_check) end;
+ callfunc "BoardFerry";
+ end;
+}
+
+001-1,70,70,0 script #TulimsharDock NPC32767,{
+ end;
+OnCommandArrive:
+ disablenpc "Tulimshar Dock";
+ enablenpc "Tulimshar Koga";
+ areatimer 0, "001-1", 66, 71, 77, 73, get(.warp_delay, "#FerryConfig"), strnpcinfo(0)+"::OnAreaWarp"; // warp players on dock
+ end;
+
+OnAreaWarp:
+ callfunc "BoardFerry";
+ end;
+
+OnCommandWarp:
+ disablenpc "Tulimshar Koga";
+ enablenpc "Tulimshar Dock";
+ end;
+}
diff --git a/npc/001-1/eomie.txt b/npc/001-1/eomie.txt
new file mode 100644
index 00000000..44424d26
--- /dev/null
+++ b/npc/001-1/eomie.txt
@@ -0,0 +1,111 @@
+001-1,71,23,0 script Eomie NPC164,{
+ @grass_amount = 5;
+ @water_amount = 2;
+ @ice_amount = 2;
+
+ @silk_exp = 600;
+
+ if (.@q >= 14) goto L_Done;
+ if (.@q >= 9) goto L_CastedSpell;
+ if (.@q == 8) goto L_GetStuff;
+
+ mesn;
+ mes "\"I maintain this little oasis in the desert.\"";
+ if (.@q != 7)
+ goto L_close;
+ menu
+ "I need to learn a spell to use Tinris' magic fertilizer. Can you help me out?",L_Next;
+
+L_Next:
+ mesn;
+ mes "\"Oh? Well, that's a rather difficult task.";
+ mes "I'd be glad to help you, but unfortunately, I can't. If I were to interrupt the magic I use to keep this alive, it would die.\"";
+ next;
+ mes "\"It's unusually hot at the moment – even for this desert area – so it's really out of the question.\"";
+ menu
+ "Is there any chance you could help me?",L_Continue;
+
+L_Continue:
+ mes "She hesitates.";
+ .@q = 8;
+ goto L_GetStuff;
+
+L_GetStuff:
+ // .@q == 8
+ mesn;
+ mes "\"I could try to briefly interrupt my magic and then cast the spell on the fertilizer, but I would need to prepare the grass beforehand.";
+ mes "Bring me " + @grass_amount + " " + getitemlink("GrassSeed") + ", " + @water_amount + " " + getitemlink("BottleOfWater") + ", and " + @ice_amount + " " + getitemlink("IceCube") + ".\"";
+ menu
+ "I've got everything.",L_More,
+ "Where can I get Grass Seeds?",L_Hurnscald,
+ "How can I get Ice Cubes? We're in the middle of the desert!",L_Mine,
+ "Ok. I'll go and get them.",L_close;
+L_More:
+ if ((countitem("GrassSeed") < @grass_amount) || (countitem("BottleOfWater") < @water_amount) || (countitem("IceCube") < @ice_amount))
+ goto L_NoItem;
+
+ delitem "GrassSeed", @grass_amount;
+ delitem "BottleOfWater", @water_amount;
+ delitem "IceCube", @ice_amount;
+ .@q = 9;
+ mesn;
+ mes "\"Very good!\"";
+ mes "She takes the ingredients you brought her and uses them to cast a cool mist into the air.";
+ misceffect sfx_magic_nature;
+ next;
+ mesn;
+ mes "\"That should last long enough to keep the plants alive while I cast the spell on the fertilizer. Besides, I can replant anything that dies with the seeds you brought me.\"";
+ next;
+ mes "She takes the fertilizer and casts some invocations. After a minute, she hands the now-glowing substance back to you.";
+ mesn;
+ mes "\"That should work now. I'm glad you're taking care of the plants! Not enough people do that nowadays.\" %%1";
+ goto L_close;
+
+L_Hurnscald: // player asked how to get Grass Seeds
+ mesn;
+ mes "\"Squirrels tend to pick up " + getitemlink("GrassSeed") + " as they gather food. You can find them around Hurnscald if you ride the ferry over.\"";
+ goto L_close;
+
+L_Mine: // player asked how to get Ice Cubes
+ mesn;
+ mes "\"Quite the quandary – isn't it? Naturally, you can easily find them on the continent of Kaizei, which is far up north and covered with snow most time of the year. But it might be a bit difficult to get there.\"";
+ next;
+ mes "\"I heard that Ice Goblins were seen in the caves surrounding Nivalis. Maybe you can find " + getitemlink("IceCube") + " there.\"";
+ goto L_close;
+
+L_CastedSpell: // .@q >= 9 but below 14
+ mesn;
+ mes "\"Thankfully, the grass wasn't damaged. I hope Anwar finds the magic fertilizer to be useful.\"";
+ if (.@q != 13)
+ goto L_close;
+ menu
+ "It was. He even created this Silk Headband as a present for you!",L_Present,
+ "(Mumble something and leave)",L_close;
+
+L_Present:
+ if (countitem("SilkHeadband") < 1)
+ goto L_NoItem;
+ delitem "SilkHeadband", 1;
+ getexp @silk_exp, 0;
+ .@q = 14;
+ mesn;
+ mes "\"Oh, that's so nice of him! Please tell him that I really like it!\"";
+ mes "She smiles.";
+ goto L_close;
+
+L_Done: // .@q >= 14
+ mesn;
+ mes "\"Hello! I'm happy to see someone like you so dedicated to the environment.\" %%8";
+ goto L_close;
+
+L_NoItem:
+ mesn;
+ mes "\"Where is it?\" %%3";
+ goto L_close;
+
+L_close:
+ @grass_amount = 0;
+ @water_amount = 0;
+ @ice_amount = 0;
+ close;
+}
diff --git a/npc/001-1/ferry_master.txt b/npc/001-1/ferry_master.txt
new file mode 100644
index 00000000..db5c6ec8
--- /dev/null
+++ b/npc/001-1/ferry_master.txt
@@ -0,0 +1,19 @@
+
+001-1,64,75,0 script Ferry Master#tulimshar NPC138,{
+ mes "[Ferry Master]";
+ mes "\"Hello! Do you need something?\"";
+ goto L_Main;
+
+L_Main:
+ menu
+ "How do I use the ferry?", L_Explain,
+ "Nothing, I guess.", L_close;
+
+L_Explain:
+ mes "[Ferry Master]";
+ callfunc "FerryHelp";
+ goto L_Main;
+
+L_close:
+ close;
+}
diff --git a/npc/001-1/gate_guards.txt b/npc/001-1/gate_guards.txt
new file mode 100644
index 00000000..5908bb77
--- /dev/null
+++ b/npc/001-1/gate_guards.txt
@@ -0,0 +1,21 @@
+001-1,39,33,0 script Guard#school NPC104,{
+ mes "[Guard]";
+ mes "\"My presence here is just a formality. The mages inside can easily defend themselves.\"";
+ close;
+}
+001-1,56,47,0 script Guard#castle NPC104,{
+ mes "[Guard]";
+ mes "\"Tulimshar is a resilient city; its citizens have made quite a comeback after the earthquake.\"";
+ close;
+}
+
+001-1,61,99,0 script Guard#east3 NPC104,{
+ mes "[Guard]";
+ mes "\"Just north of here is a palace where you can find both the Council of Wizards and the Magic Institute of Tulimshar.\"";
+ close;
+}
+001-1,53,72,0 script Guard#govt_out NPC123,{
+ mes "[Guard]";
+ mes "\"There are government officials inside who can help you form a party, obtain a trade license, or even get married.\"";
+ close;
+}
diff --git a/npc/001-1/gossip.txt b/npc/001-1/gossip.txt
new file mode 100644
index 00000000..694124a0
--- /dev/null
+++ b/npc/001-1/gossip.txt
@@ -0,0 +1,57 @@
+
+001-1,66,104,0 script Gladys NPC154,{
+ mes "[Gladys]";
+ mes "\"Hello deary! I hear some of the most fascinating rumors!\"";
+ next;
+ mes "\"Would you like me to let you in on the good stuff?\"";
+ menu
+ "Tell me about Lt. Dausen.", L_Intro,
+ "Tell me about Fieri.", L_Cook,
+ "Tell me about Sarah.", L_Sarah,
+ "Tell me about Sandra.", L_Sandra,
+ "Tell me about the Desert Mine.", L_Desert,
+ "Tell me about the Ferry.", L_Ferry,
+ "No thanks.", L_No;
+
+L_No:
+ mes "[Gladys]";
+ mes "\"Very well. Come back later if you want to hear some juicy news!\"";
+ goto L_close;
+
+L_Intro:
+ mes "[Gladys]";
+ mes "\"Have you met our lovely guard captain yet? He usually keeps post just outside the gates to keep an eye on things. He likes to talk to new adventurers too.\"";
+ goto L_close;
+
+L_Cook:
+ mes "[Gladys]";
+ mes "\"I hear the kitchen at the Magic Institute of Tulimshar is in need of some help.\"";
+ next;
+ mes "\"The only thing bigger then a wizard's ego is their waistline. Hehe.\" %%8";
+ goto L_close;
+
+L_Sarah:
+ mes "[Gladys]";
+ mes "\"Do you believe what parents will let their kids do these days?! I heard about this girl in the southeast side of town who does nothing but eat sweets all day! Honestly, what is this world coming to?\"";
+ goto L_close;
+
+L_Sandra:
+ mes "[Gladys]";
+ mes "\"The students and wizards at the Magic Institute of Tulimshar are always looking for people to gather the reagents they need for spells as they are far too busy studying to gather the materials themselves.\"";
+ goto L_close;
+
+L_Desert:
+ mes "[Gladys]";
+ mes "\"If you're still looking for adventure, I would suggest talking to some of the guards. I hear there's a sizable monster threat outside the city walls!\"";
+ goto L_close;
+
+L_Ferry:
+ mes "[Gladys]";
+ mes "\"There's a ferry in the northern part of town that takes travelers to exotic new places!\"";
+ next;
+ mes "\"I haven't been on it myself, but I hear it travels all over the world!\"";
+ goto L_close;
+
+L_close:
+ close;
+}
diff --git a/npc/001-1/guards.txt b/npc/001-1/guards.txt
new file mode 100644
index 00000000..8727a9bf
--- /dev/null
+++ b/npc/001-1/guards.txt
@@ -0,0 +1,93 @@
+
+001-1,103,99,0 script Ekinu NPC104,{
+ mes "[Ekinu the Town Guard]";
+ mes "\"What a disaster... I can't believe that we managed to rebuild the town so quickly.\"";
+ next;
+ menu "Can you give me any tips?", L_Tip,
+ "Do you have any information?", L_Info,
+ "What disaster?", L_disaster;
+
+L_Tip:
+ @temp = rand(7);
+ if(@temp == 1) goto L_1;
+ if(@temp == 2) goto L_2;
+ if(@temp == 3) goto L_3;
+ if(@temp == 4) goto L_4;
+ if(@temp == 5) goto L_5;
+ if(@temp == 6) goto L_6;
+ goto L_0;
+
+L_1:
+ mes "[Ekinu the Town Guard]";
+ mes "\"Try to carry spare food when on quests or in dungeons – they will come in handy. I always take beer, but don't tell the Sergeant...\"";
+ goto L_close;
+
+L_2:
+ mes "[Ekinu the Town Guard]";
+ mes "\"If you ever get lost, check your map to get your bearings and figure out where you need to go.\"";
+ goto L_close;
+
+L_3:
+ mes "[Ekinu the Town Guard]";
+ mes "\"When in a dungeon, monsters are more aggressive – and often more powerful – than if they were outside.\"";
+ goto L_close;
+
+L_4:
+ mes "[Ekinu the Town Guard]";
+ mes "\"When gambling in casinos, make sure to not bet too much or you might become broke.\"";
+ goto L_close;
+
+L_5:
+ mes "[Ekinu the Town Guard]";
+ mes "\"Never underestimate your enemy.\"";
+ goto L_close;
+
+L_6:
+ mes "[Ekinu the Town Guard]";
+ mes "\"When fighting more than one enemy, try to focus on one at a time.\"";
+ goto L_close;
+
+L_0:
+ mes "[Ekinu the Town Guard]";
+ mes "\"Let me think of something... Oh! Do NOT attack the red or black scorpions unless you're sure you can kill it!\"";
+ goto L_close;
+
+L_Info:
+ mes "[Ekinu the Town Guard]";
+ mes "\"Everyone seems to want information... You won't get it – at least not here. I'm not even sure what you mean, to be honest.\"";
+ goto L_close;
+
+L_disaster:
+ mes "[Ekinu the Town Guard]";
+ mes "\"What do you mean, 'what disaster?' Weren't you there? That huge volcano ex...rusion... – whatever they call it – and then the earthquake!\"";
+ next;
+ mes "[Ekinu the Town Guard]";
+ mes "\"Half the town was reduced to rubble! Somehow, no one was seriously injured, so I guess we were lucky...\"";
+ next;
+ mes "[Ekinu the Town Guard]";
+ mes "\"Well, the mayor rebuilt everything quickly, but I still have no idea where he got all the GP from...\"";
+ goto L_close;
+
+L_close:
+ @temp = 0;
+ close;
+}
+
+001-1,107,42,0 script Ryan NPC104,{
+ if (getskilllv(SKILL_MAGIC)) goto L_message;
+
+ mes "[Ryan the Town Guard]";
+ mes "Zzzz... Zzzz...";
+ next;
+ mes "[Ryan the Town Guard]";
+ mes "\"Hmmmmmmh...?";
+ mes "Oh, what? I wasn't sleeping! I was just resting my eyes!\"";
+ close;
+
+L_message:
+ mes "[Ryan the Town Guard]";
+ mes "\" Watch out for Black Scorpions. They are extremely dangerous!\"";
+ next;
+ mes "\"Whenever one approaches the town gate, Ekinu has me run around shouting '" + $@SPELL_AGGRAVATE$ + ".' Somehow, this distracts it so Ekinu can kill it.\"";
+ close;
+}
diff --git a/npc/001-1/inac.txt b/npc/001-1/inac.txt
new file mode 100644
index 00000000..56392535
--- /dev/null
+++ b/npc/001-1/inac.txt
@@ -0,0 +1,15 @@
+
+001-1,58,81,0 script Inac NPC156,{
+ @halloween_npc_id = $@halloween_npc_inac;
+ callfunc "TrickOrTreat";
+
+ mes "[Inac]";
+ mes "\"This cities water system is amazing. It was built centuries ago after the cataclysm that turned Tonori into this desert.\"";
+ next;
+ mes "[Inac]";
+ mes "\"They say that not much maintenance is needed, even though it's so old.\"";
+ next;
+ mes "[Inac]";
+ mes "\"They also say monsters have moved into the underground tunnels that bring and distribute water.\"";
+ close;
+}
diff --git a/npc/001-1/mapflags.txt b/npc/001-1/mapflags.txt
new file mode 100644
index 00000000..4285d7f7
--- /dev/null
+++ b/npc/001-1/mapflags.txt
@@ -0,0 +1,2 @@
+//001-1 mapflag town
+//001-1 mapflag resave 001-1,60,105
diff --git a/npc/001-1/north_shops.txt b/npc/001-1/north_shops.txt
new file mode 100644
index 00000000..36d7df47
--- /dev/null
+++ b/npc/001-1/north_shops.txt
@@ -0,0 +1,43 @@
+// The Mana World Script
+// (C) Jesusalva, 2021
+// Licensed under GPLv2 or later
+
+001-1,106,105,0 script Neko NPC101,{
+ shop .name$;
+ goodbye;
+ close;
+
+OnInit:
+ tradertype(NST_ZENY);
+ sellitem TonoriDelight;
+ sellitem CactusDrink;
+ sellitem CactusPotion;
+ sellitem RoastedMaggot;
+ sellitem Beer;
+ sellitem ChickenLeg;
+ .distance = 5;
+ end;
+}
+
+001-1,111,108,0 script Inar NPC108,{
+ shop .name$;
+ goodbye;
+ close;
+
+OnInit:
+ tradertype(NST_ZENY);
+ sellitem CottonShirt;
+ sellitem SerfHat;
+ sellitem CottonShorts;
+ sellitem CottonBoots;
+ sellitem DesertShirt;
+ sellitem CottonHeadband;
+ sellitem DesertHat;
+ .distance = 5;
+ end;
+}
+
+001-1,48,79,0 script Well NPC400,{
+ callfunc "WaterBottle";
+ end;
+}
diff --git a/npc/001-1/npcs.txt b/npc/001-1/npcs.txt
new file mode 100644
index 00000000..4d65a5ba
--- /dev/null
+++ b/npc/001-1/npcs.txt
@@ -0,0 +1,70 @@
+001-1,49,82,0 script Cyndala NPC210,{
+ @npcname$ = "Cyndala";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"I used to visit the beach, but then the green slimes went crazy. I heard they ate a bunch of pirates that robbed some of Tulimshar's gold ships.\"";
+ next;
+ mes "\"Good riddance!\"";
+ @npcname$ = "";
+ close;
+}
+001-1,100,79,0 script Marikel NPC211,{
+ @npcname$ = "Marikel";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Working on the docks can be hard nowadays.\"";
+ next;
+ mes "\"At least it pays well.\"";
+ menu
+ "Why does it pay well?",L_Marikel_1,
+ "Pfft! Working on the docks is for the birds.",L_Marikel_2;
+
+L_Marikel_1:
+ mes "[" + @npcname$ + "]";
+ mes "\"Tulimshar is the wealthiest and most powerful city in the world!\"";
+ close;
+
+L_Marikel_2:
+ mes "[" + @npcname$ + "]";
+ mes "\"Yeah, killing monsters may pay well, but I'd need more hazard pay than a tower mason to hunt monsters.\"";
+ next;
+ mes "\"I'll just play safe and stick to putting our stock away. Be careful, the monsters outside the city can be dangerous.\"";
+ next;
+ mes "\"The Sandstorm mine, just South of Tulimshar, is blocked from most but miners, soldiers and seasoned monster slayers.\"";
+ close;
+}
+
+001-1,105,53,0 script Joelin NPC212,{
+ @npcname$ = "Joelin";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"My ship's to set sail soon. We'll tour around the Acean Isles, then back around to Argaes, then here in Tonori.\"";
+ next;
+ mes "\"Tulimshar's Fleets also are sending exploration teams to build a dock in Nivalis on Kaizei, which I'm not really hoping for. It's cold up there!\"";
+ close;
+}
+
+001-1,107,53,0 script Harper NPC213,{
+ @npcname$ = "Harper";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"My captain knows an awlful lot about the world's continents.\"";
+ close;
+}
+001-1,75,99,0 script Swezanne NPC206,{
+ @npcname$ = "Swezanne";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Just through over this bridge is the bazaar. I go to the Bazaar and shop at Neko's.\"";
+ close;
+}
+001-1,92,107,0 script Michel NPC215,{
+ @npcname$ = "Michel";
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Elanore is a magician in Southern Tulimshar that helps young adventurers by healing their battle wounds. When they are experienced enough, she stops healing them.\"";
+ next;
+ mes "\"You can find her by going out the south gate and to the east.\"";
+ @npcname$ = "";
+ close;
+}
diff --git a/npc/001-1/sewer_east.txt b/npc/001-1/sewer_east.txt
new file mode 100644
index 00000000..1311b536
--- /dev/null
+++ b/npc/001-1/sewer_east.txt
@@ -0,0 +1,15 @@
+
+001-1,117,110,0 script #tulimsharsewer2 NPC45,0,0,{
+ mes "Descend into the sewers?";
+ next;
+ menu
+ "Yes.", L_Sewer,
+ "Nevermind.", L_close;
+
+L_Sewer:
+ warp "021-3",143,129;
+ goto L_close;
+
+L_close:
+ close;
+}
diff --git a/npc/001-1/sewer_north.txt b/npc/001-1/sewer_north.txt
new file mode 100644
index 00000000..6a77a9b4
--- /dev/null
+++ b/npc/001-1/sewer_north.txt
@@ -0,0 +1,15 @@
+
+001-1,58,83,0 script #tulimsharsewer1 NPC45,0,0,{
+ mes "Descend into the sewers?";
+ next;
+ menu
+ "Yes.", L_Sewer,
+ "Nevermind.", L_close;
+
+L_Sewer:
+ warp "021-3",57,100;
+ goto L_close;
+
+L_close:
+ close;
+}
diff --git a/npc/001-1/stat_reset.txt b/npc/001-1/stat_reset.txt
new file mode 100644
index 00000000..ab326064
--- /dev/null
+++ b/npc/001-1/stat_reset.txt
@@ -0,0 +1,6 @@
+
+001-1,117,105,0 script Malivox NPC103,{
+ @npcname$ = "Malivox";
+ callfunc "StatReset";
+ close;
+}
diff --git a/npc/001-1/tinris.txt b/npc/001-1/tinris.txt
new file mode 100644
index 00000000..1e23ad51
--- /dev/null
+++ b/npc/001-1/tinris.txt
@@ -0,0 +1,186 @@
+001-1,69,29,0 script Tinris NPC160,{
+ @cake_exp = 50;
+ @sweater_exp = 400;
+
+ @slime_amount1 = 6;
+ @slime_amount2 = 4;
+ @bugleg_amount1 = 4;
+ @bugleg_amount2 = 5;
+ @stinger_amount1 = 3;
+ @stinger_amount2 = 2;
+ @ash_amount1 = 1;
+ @ash_amount2 = 2;
+ @cactusp_amount = 1;
+
+ if (.@q >= 12) goto L_Done;
+ if (.@q == 11) goto L_GiveGift;
+ if (.@q == 9) goto L_FertilizerDone;
+ if (.@q >= 7) goto L_Eomie;
+ if (.@q == 6) goto L_SecondTry;
+ if (.@q >= 4) goto L_FirstTryDone;
+ if (.@q == 3) goto L_FirstTry;
+ if (.@q == 2) goto L_Annual;
+
+ mesn;
+ mes "\"This is a magic school. I'm a student here and focus on ways to magically enhance growth of plants.";
+ mes "That topic is very important in a desert area.\"";
+ if (.@q != 1)
+ goto L_close;
+ menu
+ "The farmer Anwar sent me to ask for exactly that! Can you give me something for his field?",L_Next;
+
+L_Next:
+ mesn;
+ mes "\"Well... in principle yes. I can try to prepare something for him. But...\"";
+ next;
+ mes "\"The thing is, my girlfriend and I have our anniversary today. And the teachers won't let me leave the campus to get something for her!";
+ mes "Please go to the bakery and buy a Chocolate Cake for me. She loves Chocolate Cakes.\"";
+ next;
+ mes "\"When I have a present for her I can focus on creating some magic fertilizer.\"";
+ .@q = 2;
+ goto L_close;
+
+L_Annual: // .@q == 2
+ mesn;
+ mes "\"Hello, did you get the Chocolate Cake for my girlfriend? After that I can focus on creating some magic fertilizer for you.\"";
+ menu
+ "Fresh from the bakery!",L_FreshFrom,
+ "I didn't get it yet.",L_close;
+
+L_FreshFrom:
+ if (countitem("ChocolateCake") < 1)
+ goto L_NoItem;
+ delitem "ChocolateCake", 1;
+ getexp @cake_exp, 0;
+ .@q = 3;
+ mesn;
+ mes "\"Oh, thank you! You saved me!";
+ mes "All right, now we can start with the magic fertilizer.\"";
+ next;
+ goto L_FirstTry;
+
+L_FirstTry:
+ // .@q == 3
+ mesn;
+ mes "\"You need to bring me some ingredients.";
+ mes "The ingredients are " + @slime_amount1 + " Maggot Slimes, " + @bugleg_amount1 + " Bug Legs, " + @stinger_amount1 + " Scorpion Stingers and " + @ash_amount1 + " Piles of Ash.\"";
+ menu
+ "I have it.",L_Continue,
+ "Ok, I'll go and get it.",L_close;
+
+L_Continue:
+ if ((countitem("MaggotSlime") < @slime_amount1) || (countitem("BugLeg") < @bugleg_amount1) || (countitem("ScorpionStinger") < @stinger_amount1) || (countitem("PileOfAsh") < @ash_amount1))
+ goto L_NoItem;
+ delitem "MaggotSlime", @slime_amount1;
+ delitem "BugLeg", @bugleg_amount1;
+ delitem "ScorpionStinger", @stinger_amount1;
+ delitem "PileOfAsh", @ash_amount1;
+ .@q = 4;
+ mes "Tinris takes the things and starts to mix them together while mumbling some invocations.";
+ misceffect sfx_magic_nature;
+ next;
+ mesn;
+ mes "\"Ok. This should do it. But I'm not sure. I'm still researching this topic.";
+ mes "Here, bring this to Anwar.\"";
+ mes "He gives you a bottle with the magic fertilizer. You put it away in a separate pocket, so it doesn't get mixed with your inventory.";
+ goto L_close;
+
+L_FirstTryDone: // .@q >= 4 but below 6
+ mesn;
+ mes "\"Bring the fertilizer to Anwar and let me know if it worked.\"";
+ if (.@q != 5)
+ goto L_close;
+ menu
+ "I did, the plants went brown and shriveled.",L_More;
+
+L_More:
+ .@q = 6;
+ goto L_SecondTry;
+
+L_SecondTry:
+ // .@q == 6
+ mesn;
+ mes "\"Oh no! All right, we need to do another try.";
+ mes "Bring me " + @slime_amount2 + " Maggot Slimes, " + @bugleg_amount2 + " Bug Legs, " + @stinger_amount2 + " Scorpion Stingers, " + @ash_amount2 + " Piles of Ash and " + @cactusp_amount + " Cactus Potion.\"";
+ menu
+ "Here it is.",L_HereItIs,
+ "Ok, I'll go and get it.",L_close;
+
+L_HereItIs:
+ if ((countitem("MaggotSlime") < @slime_amount2) || (countitem("BugLeg") < @bugleg_amount2) || (countitem("ScorpionStinger") < @stinger_amount2) || (countitem("PileOfAsh") < @ash_amount2) || (countitem("CactusPotion") < @cactusp_amount))
+ goto L_NoItem;
+ delitem "MaggotSlime", @slime_amount2;
+ delitem "BugLeg", @bugleg_amount2;
+ delitem "ScorpionStinger", @stinger_amount2;
+ delitem "PileOfAsh", @ash_amount2;
+ delitem "CactusPotion", @cactusp_amount;
+ .@q = 7;
+ mes "Tinris takes the things and starts to mix and mumble again.";
+ misceffect sfx_magic_nature;
+ next;
+ mes "It takes quite a while.";
+ next;
+ mes "He looks rather stressed while working on the mixture.";
+ next;
+ mes "He sighs.";
+ mesn;
+ mes "\"Mh, I think the mixture itself is good. But I can't get the spells right. Maybe you should ask Professor Eomie to cast it; she's a genius with nature magic.\"";
+ mes "He gives you the bottle with the magic fertilizer.";
+ goto L_close;
+
+L_Eomie:
+ // .@q >= 7 but below 9
+ mesn;
+ mes "\"I did the best I could, but it seems I'm not experienced enough to cast the spells correctly. Better ask Professor Eomie for help.\"";
+ goto L_close;
+
+L_FertilizerDone:
+ // .@q == 9
+ mesn;
+ mes "\"I heard Eomie cast the spell? I really hope it'll work this time. Bring the magic fertilizer to Anwar now.\"";
+ goto L_close;
+
+L_GiveGift:
+ // .@q == 11
+ mesn;
+ mes "\"Ah, did Anwar try the new fertilizer?\"";
+ menu
+ "Yes, it works great and he asked me to give you this Green V-Neck Sweater he made.",L_ItWorksGreat,
+ "Not yet.",L_close;
+
+L_ItWorksGreat:
+ if (countitem("GreenVNeckSweater") < 1)
+ goto L_NoItem;
+ delitem "GreenVNeckSweater", 1;
+ getexp @sweater_exp, 0;
+ .@q = 12;
+ mesn;
+ mes "\"Hey, that's really nice. Tell him my thanks.\"";
+ goto L_close;
+
+L_Done:
+ // .@q >= 12
+ mesn;
+ mes "\"My girlfriend was delighted with the Chocolate Cake and Professor Eomie was happy with my work on the magic fertilizer.\"";
+ mes "He twinkles.";
+ mesn;
+ mes "\"We're a good team.\"";
+ goto L_close;
+
+L_NoItem:
+ mesn;
+ mes "\"You don't have it!\"";
+ goto L_close;
+
+L_close:
+ @slime_amount1 = 0;
+ @slime_amount2 = 0;
+ @bugleg_amount1 = 0;
+ @bugleg_amount2 = 0;
+ @stinger_amount1 = 0;
+ @stinger_amount2 = 0;
+ @ash_amount1 = 0;
+ @ash_amount2 = 0;
+ @cactusp_amount = 0;
+ close;
+}
diff --git a/npc/001-1/tombstones.txt b/npc/001-1/tombstones.txt
new file mode 100644
index 00000000..ce7a9ae8
--- /dev/null
+++ b/npc/001-1/tombstones.txt
@@ -0,0 +1,65 @@
+
+001-1,56,103,0 script RIP#1 NPC400,{
+
+ mes "~ wushin ~";
+ mes "\"Tonori swallowed him whole.\"";
+ close;
+}
+
+001-1,57,103,0 script RIP#2 NPC400,{
+
+ mes "~ Nard ~";
+ mes "\"Crushed by a loom.\"";
+ close;
+}
+
+001-1,58,103,0 script RIP#3 NPC400,{
+
+ mes "~ tux9th ~";
+ mes "\"Eaten by bugs.\"";
+ close;
+}
+
+001-1,59,103,0 script RIP#4 NPC400,{
+
+ mes "~ o11c ~";
+ mes "\"He asked for it, so they gave it to him.\"";
+ close;
+}
+
+001-1,60,103,0 script RIP#5 NPC400,{
+
+ mes "~ " + strcharinfo(0) + " ~";
+ mes "The epitath is blank and the grave freshly dug.";
+ close;
+}
+001-1,56,106,0 script RIP#6 NPC400,{
+
+ mes "~ Cassy ~";
+ mes "\"Eaten by trolls.\"";
+ close;
+}
+
+001-1,57,106,0 script RIP#7 NPC400,{
+ mes "~ George ~";
+ mes "\"Eaten by snakes.\"";
+ close;
+}
+
+001-1,58,106,0 script RIP#8 NPC400,{
+ mes "~ Kieron ~";
+ mes "\"He was right; monsters were in the cave.\"";
+ close;
+}
+
+001-1,59,106,0 script RIP#9 NPC400,{
+ mes "~ William ~";
+ mes "\"Kieron was definitely right.\"";
+ close;
+}
+
+001-1,60,106,0 script RIP#10 NPC400,{
+ mes "~ Tyer ~";
+ mes "\"An experiement went wrong.\"";
+ close;
+}
diff --git a/npc/001-1/weellos.txt b/npc/001-1/weellos.txt
new file mode 100644
index 00000000..b083b889
--- /dev/null
+++ b/npc/001-1/weellos.txt
@@ -0,0 +1,31 @@
+001-1,55,25,0 script Weellos NPC103,{
+ @halloween_npc_id = $@halloween_npc_weellos;
+ callfunc "TrickOrTreat";
+
+ QUEST_NorthTulimshar = QUEST_NorthTulimshar | $@knowWeellosNT;
+
+ if (isin("001-1", 48, 20, 61, 28)) goto L_In;
+
+ mes "[Weellos]";
+ mes "\"This is a very historic building – in fact, it's one of the oldest in the area.\"";
+ next;
+ mes "\"It's also the current seat of both the Council of Wizards and the Magic Institute of Tulimshar.\"";
+ next;
+ mes "\"Due to its historical significance, part of it has been turned into a museum.\"";
+ goto L_BeforeClose;
+
+L_In:
+ mes "[Weellos]";
+ mes "\"What did you think? Isn't the building intriguing?\"";
+ goto L_BeforeClose;
+
+L_BeforeClose:
+ if (QL_KYLIAN != 4)
+ goto L_close;
+ next;
+ mes "You wonder if Kylian would be interested in seeing this historic landmark...";
+ goto L_close;
+
+L_close:
+ close;
+}