summaryrefslogtreecommitdiff
path: root/world/map/npc/020-2
diff options
context:
space:
mode:
authorBen Longbons <b.r.longbons@gmail.com>2011-06-18 21:58:47 -0700
committerBen Longbons <b.r.longbons@gmail.com>2011-06-19 14:19:55 -0700
commitbae4b92e560c2694eaaf0e8b4d9e95e56204471b (patch)
tree4acc120f6a94cfbf9694bf344658493de5aaa67b /world/map/npc/020-2
parent319f80526f8585ecadaec986e37c9bd326f4d363 (diff)
downloadserverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.gz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.bz2
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.tar.xz
serverdata-bae4b92e560c2694eaaf0e8b4d9e95e56204471b.zip
Move to a subdirectory
Diffstat (limited to 'world/map/npc/020-2')
-rw-r--r--world/map/npc/020-2/_import.txt9
-rw-r--r--world/map/npc/020-2/_mobs.txt8
-rw-r--r--world/map/npc/020-2/_warps.txt8
-rw-r--r--world/map/npc/020-2/baktar.txt388
-rw-r--r--world/map/npc/020-2/furquest.txt338
-rw-r--r--world/map/npc/020-2/mapflags.txt2
-rw-r--r--world/map/npc/020-2/shops.txt22
7 files changed, 775 insertions, 0 deletions
diff --git a/world/map/npc/020-2/_import.txt b/world/map/npc/020-2/_import.txt
new file mode 100644
index 00000000..77e81574
--- /dev/null
+++ b/world/map/npc/020-2/_import.txt
@@ -0,0 +1,9 @@
+// Map 020-2: Nivalis
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 020-2.gat
+npc: npc/020-2/_mobs.txt
+npc: npc/020-2/_warps.txt
+npc: npc/020-2/baktar.txt
+npc: npc/020-2/furquest.txt
+npc: npc/020-2/mapflags.txt
+npc: npc/020-2/shops.txt
diff --git a/world/map/npc/020-2/_mobs.txt b/world/map/npc/020-2/_mobs.txt
new file mode 100644
index 00000000..04e864c0
--- /dev/null
+++ b/world/map/npc/020-2/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Nivalis mobs
+
+
+
+020-2.gat,0,0,0 script Mob020-2 -1,{
+ end;
+}
diff --git a/world/map/npc/020-2/_warps.txt b/world/map/npc/020-2/_warps.txt
new file mode 100644
index 00000000..fab55b38
--- /dev/null
+++ b/world/map/npc/020-2/_warps.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Nivalis warps
+
+020-2.gat,25,35 warp ToOutside -1,-1,020-1.gat,47,50
+020-2.gat,64,25 warp ToOutside -1,-1,020-1.gat,55,90
+020-2.gat,111,32 warp ToOutside -1,-1,020-1.gat,64,83
+020-2.gat,32,73 warp ToOutside -1,-1,020-1.gat,84,48
+020-2.gat,72,70 warp ToOutside -1,-1,020-1.gat,66,54
diff --git a/world/map/npc/020-2/baktar.txt b/world/map/npc/020-2/baktar.txt
new file mode 100644
index 00000000..1bcbf152
--- /dev/null
+++ b/world/map/npc/020-2/baktar.txt
@@ -0,0 +1,388 @@
+//#=========================
+//#== NPC Baktar
+//# Authors: Lien, PjotrOrial
+//# Review: BigCrunch, Mistakes, Jenalya
+//# This NPC has two stages:
+//#
+//# In the first stage you need to bring 7 different items, but only one of each kind.
+//#
+//# In the second stage he tells you what hard life he is living. He will be very aggressive telling you some stuff.
+//# He will send you to kill Scroticular. That npc will be located in the labyrinth caves.
+//# (its a mob actually, to be spawned only, if the players knows his name and his location)
+//#
+//# variables used:
+//# @QUEST_Nivalis_state: NIBBLE0, NIBBLE1, NIBBLE2, NIBBLE3:
+//# BYTE0 ( == NIBBLE0 | NIBBLE1) stores in each bit information if that item was already brought.
+//# bits:
+//# bit 0 if you have met the npc already
+//# bit 1 Desert Hat
+//# bit 2 Desert Shirt
+//# bit 3 Serf Hat
+//# bit 4 tongue_Item
+//# bit 5 eggs_Item
+//# bit 6 skin_Item
+//# bit 7 bugleg
+//# NIBBLE2 store the progress after the item collecting stage:
+//# =0 he will thank you for bringing all stuff.
+//# =1 talking about his youth
+//# =2 talking, you get the mission to hunt down Scroticular
+//# =3 you get information where Scroticular can be found.
+//# NIBBLE3 a bitmasking nibble for stage 2 again
+//# bit 0 knows the name/location of the opponent
+//# bit 1 killed the ugly opponent
+//#=========================
+020-2.gat,70,61,0 script Baktar 191,{
+ set @npcname$, "[Baktar]";
+
+ set @Q_MASK, BYTE_0_MASK;
+ set @Q_SHIFT, BYTE_0_SHIFT;
+ set @Q_status, ((QUEST_Nivalis_state) & @Q_MASK) >> @Q_SHIFT;
+
+ set @Q_MASK2, NIBBLE_2_MASK;
+ set @Q_SHIFT2, NIBBLE_2_SHIFT;
+ set @Q_status2, ((QUEST_Nivalis_state) & @Q_MASK2) >> @Q_SHIFT2;
+
+ set @Q_MASK2_BITS, NIBBLE_3_MASK;
+ set @Q_SHIFT2_BITS, NIBBLE_3_SHIFT;
+ set @Q_status2_bits, ((QUEST_Nivalis_state) & @Q_MASK2_BITS) >> @Q_SHIFT2_BITS;
+
+ // if all bits are set, you brought him everything! Now we continue in Phase 2 of this npc.
+ // this is not ready yet, so do not enable that stage
+ // if(@Q_status == @Q_MASK) goto L_2_init;
+
+ set @BIT_KNOWHIM, 0;
+
+ set @BIT_DESERTHAT,1;
+ set @MONEY_DESERTHAT, 1500;
+ set @XP_DESERTHAT, 500;
+
+ set @BIT_DESERTSHIRT,2;
+ set @MONEY_DESERTSHIRT, 1500;
+ set @XP_DESERTSHIRT, 600;
+
+ set @BIT_SERFHAT,3;
+ set @MONEY_SERFHAT, 800;
+ set @XP_SERFHAT, 350;
+
+ set @BIT_MS_TONGUE,4;
+ set @MONEY_MS_TONGUE, 800;
+ set @XP_MS_TONGUE, 350;
+
+ set @BIT_MS_EGG,5;
+ set @MONEY_MS_EGG, 800;
+ set @XP_MS_EGG, 350;
+
+ set @BIT_SNAKESKIN,6;
+ set @MONEY_SNAKESKIN, 800;
+ set @XP_SNAKESKIN, 350;
+
+ set @BIT_BUGLEG,7;
+ set @MONEY_BUGLEG, 20;
+ set @XP_BUGLEG, 130;
+
+ if(sex)
+ set @type$, "man";
+ if(!sex)
+ set @type$, "woman";
+
+ if(@Q_status & (1<<@BIT_KNOWHIM)) goto L_KnowAlready;
+ mes @npcname$;
+ mes "\"Hello, " + @type$ + ", did you come from Tulimshar? Because you have a nice tan. \"";
+ menu
+ "Yes, I'm from Tulimshar", L_exotic,
+ "Well, I just like sunbathing", -,
+ "Good bye", -;
+ close;
+
+L_KnowAlready:
+ mes @npcname$;
+ mes "\"I love Tulimshar's stuff. I'm collecting souvenirs from Tulimshar to help remind me of all the great times I had there. If you give me an interesting item from the area, I'll give you a nice reward. So, you have a new item?\"";
+ goto L_startitem;
+close;
+
+L_exotic:
+ mes @npcname$;
+ mes "\"I said that because I love Tulimshar's stuff...I'm collecting souvenirs from Tulimshar to help remind me of all the great times I had there. If you give me an interesting item maybe I can give you a nice reward. But I don't need a lot, I just need one of each item.\"";
+ menu "I have some items on me maybe you'll like them ", L_startitem,
+ "Don't touch my stuff!", -,
+ "I'll get them. Bye.", -;
+ close;
+
+L_startitem:
+ setarray @exotic_item$, "", "", "", "", "", "", "";
+ set @c, 0;
+ set @Q_status, @Q_status | (1<<@BIT_KNOWHIM);
+ callsub S_Update_Var;
+ if (countitem("DesertHat") < 1 || @Q_status & (1<<@BIT_DESERTHAT) ) goto L_DesertShirt;
+ set @exotic_item$[@c], "a Desert Hat ?";
+ set @menuid[@c], 0;
+ set @c, @c + 1;
+
+L_DesertShirt:
+ if (countitem("DesertShirt") < 1 || @Q_status & (1<<@BIT_DESERTSHIRT) ) goto L_SerfHat;
+ set @exotic_item$[@c], "a Desert Shirt ?";
+ set @menuid[@c], 1;
+ set @c, @c + 1;
+
+L_SerfHat:
+ if (countitem("SerfHat") < 1 || @Q_status & (1<<@BIT_SERFHAT) ) goto L_tongue;
+ set @exotic_item$[@c], "a Serf Hat ?";
+ set @menuid[@c], 2;
+ set @c, @c + 1;
+
+L_tongue:
+ if (countitem("MountainSnakeTongue") < 1 || @Q_status & (1<<@BIT_MS_TONGUE)) goto L_egg;
+ set @exotic_item$[@c], "a Mountain Snake Tongue ?";
+ set @menuid[@c], 3;
+ set @c, @c + 1;
+
+L_egg:
+ if (countitem("MountainSnakeEgg") < 1 || @Q_status & (1<<@BIT_MS_EGG)) goto L_Skin;
+ set @exotic_item$[@c], "a Mountain Snake Egg?";
+ set @menuid[@c], 4;
+ set @c, @c + 1;
+
+L_Skin:
+ if (countitem("SnakeSkin") < 1 || @Q_status & (1<<@BIT_SNAKESKIN)) goto L_bugleg;
+ set @exotic_item$[@c], "a Snake Skin?";
+ set @menuid[@c], 5;
+ set @c, @c + 1;
+
+L_bugleg:
+ if (countitem("BugLeg") < 1 || @Q_status & (1<<@BIT_BUGLEG)) goto L_NeverMind;
+ set @exotic_item$[@c], "a Bug Leg?";
+ set @menuid[@c], 6;
+ set @c, @c + 1;
+
+L_NeverMind:
+ set @exotic_item$[@c], "Nevermind";
+ set @menuid[@c], 6;
+//menu for the item
+ menu
+ @exotic_item$[0], -,
+ @exotic_item$[1], -,
+ @exotic_item$[2], -,
+ @exotic_item$[3], -,
+ @exotic_item$[4], -,
+ @exotic_item$[5], -,
+ @exotic_item$[6], -;
+
+ set @menu, @menu -1;
+
+ if (@menuid[@menu] == 0) goto L_DesertHat_Item;
+ if (@menuid[@menu] == 1) goto L_DesertShirt_Item;
+ if (@menuid[@menu] == 2) goto L_SerfHat_Item;
+ if (@menuid[@menu] == 3) goto L_tongue_Item;
+ if (@menuid[@menu] == 4) goto L_egg_Item;
+ if (@menuid[@menu] == 5) goto L_skin_Item;
+ if (@menuid[@menu] == 6) goto L_BugLegItem;
+//if Never mind
+ mes @npcname$;
+ mes "\"Ok, goodbye then.\"";
+ close;
+L_DesertHat_Item:
+ if(@Q_status & (1<<@BIT_DESERTHAT)) goto L_havealready;
+ if (countitem("DesertHat") < 1) goto L_Noitem;
+ delitem "DesertHat", 1;
+ set zeny, zeny + @MONEY_DESERTHAT;
+ getexp @XP_DESERTHAT,0;
+ set @Q_status, @Q_status | (1<<@BIT_DESERTHAT);
+ callsub S_Update_Var;
+ close;
+L_DesertShirt_Item:
+ if(@Q_status & (1<<@BIT_DESERTSHIRT)) goto L_havealready;
+ if (countitem("DesertShirt") < 1) goto L_Noitem;
+ delitem "DesertShirt", 1;
+ set zeny, zeny + @MONEY_DESERTSHIRT;
+ getexp @XP_DESERTSHIRT,0;
+ set @Q_status, @Q_status | (1<<@BIT_DESERTSHIRT);
+ callsub S_Update_Var;
+ close;
+L_SerfHat_Item:
+ if(@Q_status & (1<<@BIT_SERFHAT)) goto L_havealready;
+ if (countitem("SerfHat") < 1) goto L_Noitem;
+ delitem "SerfHat", 1;
+ set zeny, zeny + @MONEY_SERFHAT;
+ getexp @XP_SERFHAT,0;
+ set @Q_status, @Q_status | (1<<@BIT_SERFHAT);
+ callsub S_Update_Var;
+ close;
+L_tongue_Item:
+ if(@Q_status & (1<<@BIT_MS_TONGUE)) goto L_havealready;
+ if (countitem("MountainSnakeTongue") < 1) goto L_Noitem;
+ delitem "MountainSnakeTongue", 1;
+ set zeny, zeny + @MONEY_MS_TONGUE;
+ getexp @XP_MS_TONGUE,0;
+ set @Q_status, @Q_status | (1<<@BIT_MS_TONGUE);
+ callsub S_Update_Var;
+close;
+L_egg_Item:
+ if(@Q_status & (1<<@BIT_MS_EGG)) goto L_havealready;
+ if (countitem("MountainSnakeEgg") < 1) goto L_Noitem;
+ delitem "MountainSnakeEgg", 1;
+ set zeny, zeny + @MONEY_MS_EGG;
+ getexp @XP_MS_EGG,0;
+ set @Q_status, @Q_status | (1<<@BIT_MS_EGG);
+ callsub S_Update_Var;
+close;
+L_skin_Item:
+ if(@Q_status & (1<<@BIT_SNAKESKIN)) goto L_havealready;
+ if (countitem("SnakeSkin") < 1) goto L_Noitem;
+ delitem "SnakeSkin", 1;
+ set zeny, zeny + @MONEY_SNAKESKIN;
+ getexp @XP_SNAKESKIN,0;
+ set @Q_status, @Q_status | (1<<@BIT_SNAKESKIN);
+ callsub S_Update_Var;
+close;
+L_BugLegItem:
+ if(@Q_status & (1<<@BIT_BUGLEG)) goto L_havealready;
+ if (countitem("BugLeg") < 1) goto L_Noitem;
+ delitem "BugLeg", 1;
+ set zeny, zeny + @MONEY_BUGLEG;
+ getexp @XP_BUGLEG,0;
+ set @Q_status, @Q_status | (1<<@BIT_BUGLEG);
+ callsub S_Update_Var;
+close;
+
+L_Noitem:
+ mes @npcname$;
+ mes "\"Well, if you happen to get items from Tulimshar, see me first before you sell anything.\"";
+ close;
+
+L_havealready:
+ mes @npcname$;
+ mes "\"I already collected what you can offer me.\"";
+ close;
+
+S_Update_Var:
+ set QUEST_Nivalis_state,
+ (QUEST_Nivalis_state & ~(@Q_MASK)
+ | (@Q_status << @Q_SHIFT));
+ return;
+
+
+
+//# The following stage is completely cutoff the first.
+//# So there is no linking between the upper and lower part, except for one goto at the very beginning
+//
+
+L_2_init:
+
+//# NIBBLE3 a bitmasking nibble for stage 2 again
+//# bit 0 knows the name of the opponent
+//# bit 1 killed the ugly opponent
+ set @BIT_KNOWS_NAME, 0;
+ set @BIT_KILLED_HIM, 1;
+
+ if (@Q_status2 == 1) goto L_2_talk1;
+ if (@Q_status2 == 2) goto L_2_talk2;
+ if (@Q_status2 == 3) goto L_2_talk3;
+ if (@Q_status2 == 4) goto L_2_talk4;
+ // fall through @Q_status2==0:
+ // need to thank for bringing all stuff.
+ mes @npcname$;
+ mes "\"Thanks a lot for bringing me all this nice stuff!\"";
+ next;
+ mes "\"That helps me a lot. You see over there is already another set I collected: There are some pieces of the Hurnscald town. That sign there has been stolen from the inn.\"";
+ next;
+ mes "\"But do not tell anyone, please! I really like collecting things. And that sign is one of the first things I organized.\"";
+ next;
+ mes "\"So thank you for bringing me that stuff for my desert collection\"";
+ next;
+ mes "\"Do you have an idea how to arrange that to make it cool looking for my admirers?\"";
+ next;
+ set @Q_status2, 1;
+ callsub S_Update_Var2;
+ close;
+
+L_2_talk1:
+ mes @npcname$;
+ mes "\"In my childhood I was called a packrat, because I collected old cans.\"";
+ next;
+ mes "\"But everybody does collect things right?\"";
+ next;
+ mes "\"So after I had collected way over 1000 cans, I started collecting snail-shells. Nice? Do you like that?\"";
+ next;
+ mes "\"Not many people like me. And I don't know why. It is nice to talk about such nice things. What did you collect in your childhood?\"";
+ next;
+ mes "He picks in his nose";
+ next;
+ mes @npcname$;
+ mes "\"Ok erm, talk to you later.\"";
+ next;
+ mes "\"Ok.\"";
+ set @Q_status2, 2;
+ callsub S_Update_Var2;
+ close;
+
+L_2_talk2:
+ mes @npcname$;
+ mes "\"Could you do me a favor? This ugly guy, who always attacked me....\"";
+ next;
+ mes "\"*sob*\"";
+ next;
+ mes "\"I was always bullied by him. You know in early childhood we were very nice friends. We played some roleplaying. He was the captain, and I was the soldier.";
+ next;
+ mes "\"Or another day he was the chieftain and I was the redskin.\"";
+ next;
+ mes "\"But to tell you the truth, HE was ALWAYS the one who directed me.\"";
+ next;
+ mes "\"I DO NOT LIKE THAT!\"";
+ next;
+ mes "\"I WANT TO BE THE LEADER!\"";
+ next;
+ mes "\"STOP HIM DOING NASTY THINGS\"";
+ next;
+ mes "\"I WANT YOU TO KILL THAT BASTARD!!\"";
+ set @Q_status2, 3;
+ callsub S_Update_Var2;
+ close;
+
+L_2_talk3:
+ menu "Ok, I am a professional in doing such things", L_2_professional,
+ "Hey do you really mean it? ", L_2_professional,
+ "You calmed down again?", -,
+ "Oh a packrat! By the way, is that trash over there yours?", L_2_name,
+ "Nevermind", -;
+ mes @npcname$;
+ mes "\"Get out of my way, prank!\"";
+ close;
+
+L_2_professional:
+ mes @npcname$;
+ mes "\"What are you talking about?\"";
+ goto L_2_talk3;
+
+L_2_name:
+ mes @npcname$;
+ mes "\"ONE DAY I WILL GET A HUGE REVENGE!\"";
+ next;
+ mes "\"AND I MEAN IT!\"";
+ next;
+ mes "\"You see I am a dangerous killer. Last week I killed five slimes and a pinkie!\"";
+ next;
+ mes "He takes out a piece of paper... mumbling";
+ mes "\"Ok Scroticular first, and then ...\"";
+ set @Q_status2, 4;
+ set @Q_status2_bits, @Q_status2_bits | (1<<@BIT_KNOWS_NAME);
+ callsub S_Update_Var2;
+
+ mes @npcname$;
+ mes "\"What is your name again?\"";
+
+ menu "I am sorry for the joke... Please forgive me", -,
+ "They call me Mistakes. I am a professional killer as well. You heard about that business in the terranite cave?", -;
+ mes @npcname$;
+ mes "\"Alright, I see. Ok maybe I really need to calm down. Please leave me alone... I will try to calm down, ok?\"";
+ close;
+
+S_Update_Var2:
+ set QUEST_Nivalis_state,
+ (QUEST_Nivalis_state & ~(@Q_MASK2)
+ | (@Q_status2 << @Q_SHIFT2));
+ set QUEST_Nivalis_state,
+ (QUEST_Nivalis_state & ~(@Q_MASK2_BITS)
+ | (@Q_status2_bits << @Q_SHIFT2_BITS));
+ return;
+}
+
diff --git a/world/map/npc/020-2/furquest.txt b/world/map/npc/020-2/furquest.txt
new file mode 100644
index 00000000..98d46660
--- /dev/null
+++ b/world/map/npc/020-2/furquest.txt
@@ -0,0 +1,338 @@
+//#################################################################################
+// Script by Shaili and QOAL
+//#################################################################################
+
+// Tulimshar Crafting Workshop - Agostine, The Legendary Tailor
+020-2.gat,27,26,0 script Agostine 137,{
+ if (QUEST_WG_state == 1) goto L_State_0_3;
+ if (QUEST_WG_state == 2) goto L_State_1;
+ if (QUEST_WG_state == 3) goto L_State_2;
+ if (QUEST_WG_state == 4) goto L_State_4;
+ if (QUEST_WG_state == 5) goto L_State_4_success;
+ if (QUEST_WG_state == 6) goto L_State_6;
+ if (QUEST_WG_state == 7) goto L_State_11;
+ if (QUEST_WG_state == 8) goto L_State_12;
+ if (QUEST_WG_state >= 9) goto L_State_13;
+
+ mes "\"This goes up, this goes left...\"";
+ next;
+ mes "\"Mmmm...?\"";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Oh, a customer! Let me introduce myself! My name is Agostine!";
+ mes "Some people say that I am the best tailor in the world,";
+ mes "but I think I am the best one in the universe!";
+ mes "So, What can I do for you, my friend?\"";
+ next;
+ menu
+ "I want something new for my wardrobe!", L_State_0_1,
+ "Oh, nothing, thanks!", -;
+ close;
+
+// Quest #0 - Beginning - Needed: Iron Potion
+
+L_State_0_1:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Well.. you know... working so hard makes me so tired!";
+ mes "Can you bring me something tasty to drink, my friend?\"";
+ next;
+ menu
+ "Sure, what kind of drink you like?", L_State_0_2,
+ "I'm not your waiter!", -;
+ close;
+
+L_State_0_2:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Here we do not have a bar. Let me taste different beverages.";
+ mes "I want something new to drink.\"";
+ next;
+ menu
+ "I'll bring you different drinks to try!", L_State_Accept,
+ "Maybe a bar will open soon, wait for it.", -;
+ close;
+
+L_State_Accept:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Thanks so much.\"";
+ set QUEST_WG_state, 1;
+ close;
+
+L_State_0_3:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Well, what have you brought me?\"";
+ next;
+ menu
+ "A Cactus Drink.", L_State_0_4,
+ "A Cactus Potion.", L_State_0_5,
+ "Some milk.", L_State_0_6,
+ "A pint of beer.", L_State_0_7,
+ "An Iron potion.", L_State_0_9,
+ "A Concentration Potion.", L_State_0_8,
+ "Nothing, at the moment.", -;
+ close;
+
+L_State_0_4:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, a Cactus Drink?\"";
+ if (countitem("CactusDrink") < 1) goto L_State_neg;
+ delitem "CactusDrink", 1;
+ goto L_State_bad;
+ close;
+
+L_State_0_5:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, a Cactus Potion?\"";
+ if (countitem("CactusPotion") < 1) goto L_State_neg;
+ delitem "CactusPotion", 1;
+ goto L_State_bad;
+ close;
+
+L_State_0_6:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, some milk for me?\"";
+ if (countitem("Milk") < 1) goto L_State_neg;
+ delitem "Milk", 1;
+ goto L_State_bad;
+ close;
+
+L_State_0_7:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, a beer?\"";
+ if (countitem("Beer") < 1) goto L_State_neg;
+ delitem "Beer", 1;
+ goto L_State_bad;
+ close;
+
+L_State_0_8:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, a Concentration Potion?\"";
+ if (countitem("ConcentrationPotion") < 1) goto L_State_neg;
+ delitem "ConcentrationPotion", 1;
+ goto L_State_bad;
+ close;
+
+L_State_0_9:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, an Iron Potion?\"";
+ if (countitem("IronPotion") < 1) goto L_State_neg;
+ delitem "IronPotion", 1;
+ next;
+ mes "Agostine looks pleased as he drinks the potion.";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Oh! This is damn good! I feel a new man, my friend!\"";
+ next;
+ set zeny, zeny + 500;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"This is a little reward for your help. Take 500 GP, my friend!\"";
+ set QUEST_WG_state, 2;
+ close;
+
+L_State_neg:
+ next;
+ mes "\"Seems that you lied. You don't have the drink you told me.\"";
+ close;
+
+L_State_bad:
+ next;
+ mes "\"Well, I don't like it so much. Bring me something else.\"";
+ close;
+
+// First Quest: edited version of Forest Bow Quest - Needed: about 30 White Furs and 15.000 GP
+
+L_State_1:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Mmmm... Let me see... This year light colours are fashionable!";
+ mes "Would you like a pair of snow-white Winter Gloves?\"";
+ next;
+ menu
+ "No, thanks. I love dark clothes...", -,
+ "You really can do this for me?", L_State_2;
+ close;
+
+L_State_2:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Well, Winter Gloves are so fashionable for their lovable fur!";
+ mes "Only the best furs can be used for these gloves!";
+ mes "But, as you see, I am a tailor, not a hunter! So, why don't you bring me the best fluffy's fur you can find?\"";
+ set QUEST_WG_state, 3;
+ next;
+ menu
+ "You are crazy! I won't kill any animal for this!", -,
+ "Sure, I will be back soon!", L_State_3;
+ close;
+
+L_State_3:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Remember, I want the best of fur!\"";
+ set QUEST_WG_state, 4;
+ close;
+
+L_State_4:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Oh, my friend! Have you brought me some good furs?\"";
+ if (countitem("WhiteFur") < 1) close;
+ next;
+ menu
+ "Here, take a look!", L_State_4_try,
+ "Yes, but I need it for something else.", -;
+ close;
+
+L_State_4_try:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Let me see, my friend! It needs to be perfect for my gloves!\"";
+ mes "Agostine examines the patch of fur.";
+ next;
+ if (countitem("WhiteFur") < 1) goto L_No_Fur;
+ delitem "WhiteFur", 1;
+ set @Temp1,rand(30);
+ if (@Temp1 == 0) goto L_State_4_success;
+ mes "Agostine throws away the white fur.";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"It was awfully cut! You should pay more attention when you kill fluffies!\"";
+ if (countitem("WhiteFur") < 1) close;
+ next;
+ menu
+ "Here I have another one!", L_State_4_try,
+ "Sorry, I will be careful...", -;
+ close;
+
+L_State_4_success:
+ mes "Agostine breaks into a smile";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"It's perfect! Perfect! Good job, my friend! I will prepare your gloves right now!\"";
+ next;
+ set QUEST_WG_state, 5;
+ goto L_State_5;
+
+L_State_5:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Ehm, my friend, my work is not free. I need 15,000 GP for the work.\"";
+ next;
+ menu
+ "You are not a tailor, you are a thief!!", -,
+ "I think it's a reasonable price...", L_State_5_pay;
+ close;
+
+L_State_5_pay:
+ if (zeny < 15000) goto L_State_5_nocash;
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_TooMany;
+ set zeny, zeny - 15000;
+ getitem "WinterGloves", 1;
+ set QUEST_WG_state, 6;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Here they are. You will have the most fashionable hands in the world!\"";
+ close;
+
+L_State_5_nocash:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Seems like you are out of cash. Come back when you have the money.\"";
+ close;
+
+L_State_6:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Oh, I remember you! Your gloves are sooo fashionable, my friend!";
+ mes "Well, I have a good news for you. In this issue of 'TMW Fashion'";
+ mes "I saw a pretty accessory, a pair of Furry Boots, my friend.";
+ mes "I can make your own pair, if you want!\"";
+ next;
+ menu
+ "It's a great idea!", L_State_10,
+ "I'm glamourous enough, thanks", -;
+ close;
+
+// Start of Second Quest: Furry Boots - Needed: About 30 White Furs, 1 pair of Boots and 15.000 GP
+L_State_10:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Perfect! For satisfying your request I need another perfect White Fur";
+ mes "and a pair of Boots, like those you can find in the mines.";
+ mes "They will make you lovely, my friend!\"";
+ set QUEST_WG_state, 7;
+ close;
+
+L_State_11:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, my friend, have you brought me the right Fur?\"";
+ if (countitem("WhiteFur") < 1) close;
+ next;
+ menu
+ "Sure, I'm a fluffy hunter!", L_State_11_try,
+ "Not yet, sorry.", -;
+ close;
+
+L_State_11_try:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"I'd rather see the patch of fur, first.\"";
+ next;
+ mes "Agostine examines the patch of fur.";
+ next;
+ if (countitem("WhiteFur") < 1) goto L_No_Fur;
+ delitem "WhiteFur", 1;
+ set @Temp2,rand(30);
+ if (@Temp2 == 0) goto L_State_11_success;
+ mes "Agostine rips the white fur.";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"That fur was terrible. I won't work with it!\"";
+ if (countitem("WhiteFur") < 1) close;
+ next;
+ menu
+ "Well, maybe this is better!", L_State_11_try,
+ "I will hunt other fluffies...", -;
+ close;
+
+L_State_11_success:
+ mes "Agostine breaks into a smile";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"This one is good enough, my friend. Good job.\"";
+ set QUEST_WG_state, 8;
+ goto L_State_12;
+
+L_State_12:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"I need also a pair of Boots for the work.";
+ mes "And my payment, obviously. 15,000 GP is right.\"";
+ next;
+ menu
+ "Sure, here it all is.", L_State_12_pay,
+ "I missed something, I will be back soon!", -;
+ close;
+
+L_State_12_pay:
+ if (zeny < 15000) goto L_State_12_missing;
+ if (countitem("Boots") < 1) goto L_State_12_missing;
+ // No inventory check needed, as boots are removed, opening a slot
+ set zeny, zeny - 15000;
+ delitem "Boots", 1;
+ getitem "FurBoots", 1;
+ set QUEST_WG_state, 9;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Enjoy your new boots, my friend!\"";
+ close;
+
+L_State_12_missing:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Seems you have forgotten something. Check your inventory";
+ mes "and your pockets!\"";
+ close;
+
+L_State_13:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You are so glamourous, my dear friend!";
+ mes "I have done a very good job on your clothes!\"";
+ close;
+
+L_TooMany:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You don't have anywhere to put them. Come back when you do.\"";
+ close;
+
+L_No_Fur:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You don't have any white fur! Stop talking nonsense.\"";
+ close;
+}
diff --git a/world/map/npc/020-2/mapflags.txt b/world/map/npc/020-2/mapflags.txt
new file mode 100644
index 00000000..aaa1b90f
--- /dev/null
+++ b/world/map/npc/020-2/mapflags.txt
@@ -0,0 +1,2 @@
+020-2.gat mapflag no_player_drops
+020-2.gat mapflag town
diff --git a/world/map/npc/020-2/shops.txt b/world/map/npc/020-2/shops.txt
new file mode 100644
index 00000000..cc796b55
--- /dev/null
+++ b/world/map/npc/020-2/shops.txt
@@ -0,0 +1,22 @@
+// Snow town shops
+
+// Clothes shop
+020-2.gat,75,28,0 shop Taylor 137,523:2000,524:1600,543:800,544:5000,546:10000,586:1000,741:-1
+// Weapons shop
+020-2.gat,25,65,0 shop Bracco 135,1201:50,521:1000,522:100,529:3,530:-1
+// Potions shop
+020-2.gat,75,24,0 shop Mede 103,501:50,502:70,567:500,568:500
+
+// INN
+020-2.gat,111,23,0 script Kane 120,{
+ set @npcname$, "Kane the Inn Keeper";
+ set @cost, 100;
+
+ mes "[" + @npcname$ + "]";
+ mes "\"Welcome stranger!\"";
+ mes "\"What? You've already seen an INN like mine?\"";
+ mes "\"That's impossible!\"";
+ next;
+ callfunc "Inn";
+ close;
+}