summaryrefslogtreecommitdiff
path: root/npc/020-2
diff options
context:
space:
mode:
Diffstat (limited to 'npc/020-2')
-rw-r--r--npc/020-2/_import.txt8
-rw-r--r--npc/020-2/_warps.txt8
-rwxr-xr-xnpc/020-2/baktar.txt225
-rwxr-xr-xnpc/020-2/banker.txt16
-rwxr-xr-xnpc/020-2/furquest.txt646
-rwxr-xr-xnpc/020-2/mapflags.txt2
-rwxr-xr-xnpc/020-2/shops.txt27
7 files changed, 932 insertions, 0 deletions
diff --git a/npc/020-2/_import.txt b/npc/020-2/_import.txt
new file mode 100644
index 00000000..62b2af2d
--- /dev/null
+++ b/npc/020-2/_import.txt
@@ -0,0 +1,8 @@
+// Map 020-2: Nivalis Indoor
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/020-2/_warps.txt",
+"npc/020-2/baktar.txt",
+"npc/020-2/banker.txt",
+"npc/020-2/furquest.txt",
+"npc/020-2/mapflags.txt",
+"npc/020-2/shops.txt",
diff --git a/npc/020-2/_warps.txt b/npc/020-2/_warps.txt
new file mode 100644
index 00000000..239da85a
--- /dev/null
+++ b/npc/020-2/_warps.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 020-2: Nivalis Indoor warps
+020-2,25,36,0 warp #020-2_25_36 0,0,020-1,47,49
+020-2,64,23,0 warp #020-2_64_23 0,0,020-1,56,91
+020-2,111,33,0 warp #020-2_111_33 0,0,020-1,64,83
+020-2,32,74,0 warp #020-2_32_74 0,0,020-1,86,47
+020-2,72,71,0 warp #020-2_72_71 0,0,020-1,66,53
+020-2,127,69,0 warp #020-2_127_69 0,0,020-1,59,46
diff --git a/npc/020-2/baktar.txt b/npc/020-2/baktar.txt
new file mode 100755
index 00000000..a3bc5cc8
--- /dev/null
+++ b/npc/020-2/baktar.txt
@@ -0,0 +1,225 @@
+020-2,70,61,0 script Baktar NPC191,{
+ @npcname$ = "[Baktar]";
+
+ @BIT_KNOWHIM = 0;
+
+ @BIT_DESERTHAT = 1;
+ @MONEY_DESERTHAT = 1500;
+ @XP_DESERTHAT = 500;
+
+ @BIT_DESERTSHIRT = 2;
+ @MONEY_DESERTSHIRT = 1500;
+ @XP_DESERTSHIRT = 600;
+
+ @BIT_SERFHAT = 3;
+ @MONEY_SERFHAT = 800;
+ @XP_SERFHAT = 350;
+
+ @BIT_MS_TONGUE = 4;
+ @MONEY_MS_TONGUE = 800;
+ @XP_MS_TONGUE = 350;
+
+ @BIT_MS_EGG = 5;
+ @MONEY_MS_EGG = 800;
+ @XP_MS_EGG = 350;
+
+ @BIT_SNAKESKIN = 6;
+ @MONEY_SNAKESKIN = 800;
+ @XP_SNAKESKIN = 350;
+
+ @BIT_BUGLEG = 7;
+ @MONEY_BUGLEG = 20;
+ @XP_BUGLEG = 130;
+
+ @run = ((QUEST_NorthTulimshar & TWOBIT_8_MASK) >> TWOBIT_8_SHIFT);
+ if ((@run == 3) && (QL_KYLIAN == 13))
+ goto L_Deliver;
+ goto L_Start;
+
+L_Deliver:
+ menu
+ "I have a delivery for you", L_Delivery;
+
+L_Delivery:
+ mes "[Baktar]";
+ mes "\"Ahh my delivery from Tulimshar, how nice it is to get some comforts from back home.\"";
+ QL_KYLIAN = 14;
+ goto L_close;
+
+L_Start:
+
+ if(QL_BAKTAR & (1<<@BIT_KNOWHIM)) goto L_KnowAlready;
+ mes @npcname$;
+ mes "\"Hello, did you come from Tulimshar? Because you have a nice tan. \"";
+ menu
+ "Yes, I'm from Tulimshar", L_exotic,
+ "Well, I just like sunbathing", L_close,
+ "Good bye", L_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;
+
+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!", L_close,
+ "I'll get them. Bye.", L_close;
+
+L_Startitem:
+ setarray @exotic_item$, "", "", "", "", "", "", "";
+ @c = 0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_KNOWHIM);
+ if (countitem("DesertHat") < 1 || QL_BAKTAR & (1<<@BIT_DESERTHAT) ) goto L_DesertShirt;
+ @exotic_item$[@c] = "a Desert Hat ?";
+ @menuid[@c] = 0;
+ @c = @c + 1;
+ goto L_DesertShirt;
+
+L_DesertShirt:
+ if (countitem("DesertShirt") < 1 || QL_BAKTAR & (1<<@BIT_DESERTSHIRT) ) goto L_SerfHat;
+ @exotic_item$[@c] = "a Desert Shirt ?";
+ @menuid[@c] = 1;
+ @c = @c + 1;
+ goto L_SerfHat;
+
+L_SerfHat:
+ if (countitem("SerfHat") < 1 || QL_BAKTAR & (1<<@BIT_SERFHAT) ) goto L_tongue;
+ @exotic_item$[@c] = "a Serf Hat ?";
+ @menuid[@c] = 2;
+ @c = @c + 1;
+ goto L_tongue;
+
+L_tongue:
+ if (countitem("MountainSnakeTongue") < 1 || QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_egg;
+ @exotic_item$[@c] = "a Mountain Snake Tongue ?";
+ @menuid[@c] = 3;
+ @c = @c + 1;
+ goto L_egg;
+
+L_egg:
+ if (countitem("MountainSnakeEgg") < 1 || QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_Skin;
+ @exotic_item$[@c] = "a Mountain Snake Egg?";
+ @menuid[@c] = 4;
+ @c = @c + 1;
+ goto L_Skin;
+
+L_Skin:
+ if (countitem("SnakeSkin") < 1 || QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_bugleg;
+ @exotic_item$[@c] = "a Snake Skin?";
+ @menuid[@c] = 5;
+ @c = @c + 1;
+ goto L_bugleg;
+
+L_bugleg:
+ if (countitem("BugLeg") < 1 || QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_NeverMind;
+ @exotic_item$[@c] = "a Bug Leg?";
+ @menuid[@c] = 6;
+ @c = @c + 1;
+ goto L_NeverMind;
+
+L_NeverMind:
+ @exotic_item$[@c] = "Nevermind";
+ @menuid[@c] = 6;
+ menu
+ @exotic_item$[0], L_MenuItems,
+ @exotic_item$[1], L_MenuItems,
+ @exotic_item$[2], L_MenuItems,
+ @exotic_item$[3], L_MenuItems,
+ @exotic_item$[4], L_MenuItems,
+ @exotic_item$[5], L_MenuItems,
+ @exotic_item$[6], L_MenuItems;
+
+L_MenuItems:
+ @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;
+ mes @npcname$;
+ mes "\"Ok, goodbye then.\"";
+ close;
+
+L_DesertHat_Item:
+ if(QL_BAKTAR & (1<<@BIT_DESERTHAT)) goto L_havealready;
+ if (countitem("DesertHat") < 1) goto L_NoItem;
+ delitem "DesertHat", 1;
+ Zeny = Zeny + @MONEY_DESERTHAT;
+ getexp @XP_DESERTHAT,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_DESERTHAT);
+ close;
+
+L_DesertShirt_Item:
+ if(QL_BAKTAR & (1<<@BIT_DESERTSHIRT)) goto L_havealready;
+ if (countitem("DesertShirt") < 1) goto L_NoItem;
+ delitem "DesertShirt", 1;
+ Zeny = Zeny + @MONEY_DESERTSHIRT;
+ getexp @XP_DESERTSHIRT,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_DESERTSHIRT);
+ close;
+
+L_SerfHat_Item:
+ if(QL_BAKTAR & (1<<@BIT_SERFHAT)) goto L_havealready;
+ if (countitem("SerfHat") < 1) goto L_NoItem;
+ delitem "SerfHat", 1;
+ Zeny = Zeny + @MONEY_SERFHAT;
+ getexp @XP_SERFHAT,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_SERFHAT);
+ close;
+
+L_tongue_Item:
+ if(QL_BAKTAR & (1<<@BIT_MS_TONGUE)) goto L_havealready;
+ if (countitem("MountainSnakeTongue") < 1) goto L_NoItem;
+ delitem "MountainSnakeTongue", 1;
+ Zeny = Zeny + @MONEY_MS_TONGUE;
+ getexp @XP_MS_TONGUE,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_MS_TONGUE);
+ close;
+
+L_egg_Item:
+ if(QL_BAKTAR & (1<<@BIT_MS_EGG)) goto L_havealready;
+ if (countitem("MountainSnakeEgg") < 1) goto L_NoItem;
+ delitem "MountainSnakeEgg", 1;
+ Zeny = Zeny + @MONEY_MS_EGG;
+ getexp @XP_MS_EGG,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_MS_EGG);
+ close;
+
+L_skin_Item:
+ if(QL_BAKTAR & (1<<@BIT_SNAKESKIN)) goto L_havealready;
+ if (countitem("SnakeSkin") < 1) goto L_NoItem;
+ delitem "SnakeSkin", 1;
+ Zeny = Zeny + @MONEY_SNAKESKIN;
+ getexp @XP_SNAKESKIN,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_SNAKESKIN);
+ close;
+
+L_BugLegItem:
+ if(QL_BAKTAR & (1<<@BIT_BUGLEG)) goto L_havealready;
+ if (countitem("BugLeg") < 1) goto L_NoItem;
+ delitem "BugLeg", 1;
+ Zeny = Zeny + @MONEY_BUGLEG;
+ getexp @XP_BUGLEG,0;
+ QL_BAKTAR = QL_BAKTAR | (1<<@BIT_BUGLEG);
+ 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;
+
+L_close:
+ close;
+}
diff --git a/npc/020-2/banker.txt b/npc/020-2/banker.txt
new file mode 100755
index 00000000..9a1ddcc8
--- /dev/null
+++ b/npc/020-2/banker.txt
@@ -0,0 +1,16 @@
+020-2,122,64,0 script Ben NPC193,{
+ @npcname$ = "Ben";
+ callfunc "Banker";
+ close;
+}
+
+020-2,127,63,0 script Maria NPC190,{
+ mes "[Maria]";
+ mes "\"Hello!";
+ mes "\"Isn't it great?\"";
+ next;
+ mes "\"Nivalis has increased trade with merchants from Thermin in the west and the barbarian tribe who live in the mountains northwest of here.\"";
+ next;
+ mes "\"That's why this office was built.\"";
+ close;
+}
diff --git a/npc/020-2/furquest.txt b/npc/020-2/furquest.txt
new file mode 100755
index 00000000..23847336
--- /dev/null
+++ b/npc/020-2/furquest.txt
@@ -0,0 +1,646 @@
+
+020-2,24,26,0 script Agostine Debug NPC137,{
+ mes "[Agostine Debug]";
+ mes "What do you want to do?";
+ menu
+ "Show Quest State", L_ShowState,
+ "Set Quest State", L_SetState,
+ "Reset", L_Reset,
+ "Nothing.", L_close;
+
+L_ShowState:
+ @wg_state = ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
+ mes "Current State is " + @wg_state;
+ goto L_close;
+
+L_SetState:
+ mes "What state do you want?";
+ input @wg_state;
+ callfunc "setWGState";
+ mes "Set to " + @wg_state;
+ goto L_close;
+
+L_Reset:
+ @wg_state = 0;
+ callfunc "setWGState";
+ mes "Reset!";
+ goto L_close;
+
+L_close:
+ close;
+
+OnInit:
+ if (!debug)
+ disablenpc "Agostine Debug";
+ end;
+}
+020-2,27,26,0 script Agostine NPC137,{
+ @CUTFUR_EXP = 10;
+ @FINEDRESS_COTTON_CLOTHS = 20;
+ @FINEDRESS_GP = 20000;
+ @wg_state = ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT);
+
+
+ if (@wg_state == 1) goto L_State_0_3;
+ if (@wg_state == 2) goto L_State_1;
+ if (@wg_state == 3) goto L_State_2;
+ if (@wg_state == 4) goto L_State_4;
+ if (@wg_state == 5) goto L_State_4_success;
+ if (@wg_state == 6) goto L_State_6;
+ if (@wg_state == 7) goto L_State_11;
+ if (@wg_state == 8) goto L_State_12;
+ if (@wg_state >= 9 && @wg_state < 11) goto L_State_13;
+ if (@wg_state == 11) goto L_State_14;
+ if (@wg_state == 12) goto L_State_14_AA;
+ if (@wg_state == 13) goto L_State_15;
+ if (@wg_state > 13 && @wg_state < 16) goto L_State_15_Repeat;
+ if (@wg_state == 16) goto L_State_16;
+ if (@wg_state > 16 && @wg_state < 20) goto L_State_16_Repeat;
+ if (@wg_state == 20) goto L_State_17;
+ if (@wg_state == 21) goto L_State_17_AskItems;
+ if (@wg_state == 22) goto L_State_17_PBD;
+ if (@wg_state >= 23) goto L_State_18;
+
+ 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!", L_close;
+
+
+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!", L_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.", L_close;
+
+L_State_Accept:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Thanks so much.\"";
+ @wg_state = 1;
+ callfunc "setWGState";
+ goto L_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.", L_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;
+
+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;
+
+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;
+
+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;
+
+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;
+
+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;
+ Zeny = Zeny + 500;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"This is a little reward for your help. Take 500 GP, my friend!\"";
+ @wg_state = 2;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_neg:
+ next;
+ mes "\"Seems that you lied. You don't have the drink you told me.\"";
+ goto L_close;
+
+L_State_bad:
+ next;
+ mes "\"Well, I don't like it so much. Bring me something else.\"";
+ goto L_close;
+
+
+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...", L_close,
+ "You really can do this for me?", L_State_2;
+
+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?\"";
+ @wg_state = 3;
+ callfunc "setWGState";
+ next;
+ menu
+ "You are crazy! I won't kill any animal for this!", L_close,
+ "Sure, I will be back soon!", L_State_3;
+
+L_State_3:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Remember, I want the best of fur!\"";
+ @wg_state = 4;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_4:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Oh, my friend! Have you brought me some good furs?\"";
+ if (countitem("WhiteFur") < 1) goto L_close;
+ next;
+ menu
+ "Here, take a look!", L_State_4_try,
+ "Yes, but I need it for something else.", L_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;
+ @Temp1 = rand(30);
+ if (@Temp1 == 0) goto L_State_4_success;
+ mes "Agostine throws away the white fur.";
+ getexp @CUTFUR_EXP, 0;
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"It was awfully cut! You should pay more attention when you kill fluffies!\"";
+ if (countitem("WhiteFur") < 1) goto L_close;
+ next;
+ menu
+ "Here I have another one!", L_State_4_try,
+ "Sorry, I will be careful...", L_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;
+ @wg_state = 5;
+ callfunc "setWGState";
+ 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!!", L_close,
+ "I think it's a reasonable price...", L_State_5_pay;
+
+L_State_5_pay:
+ if (Zeny < 15000) goto L_State_5_nocash;
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_TooMany;
+ Zeny = Zeny - 15000;
+ getitem "WinterGloves", 1;
+ @wg_state = 6;
+ callfunc "setWGState";
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Here they are. You will have the most fashionable hands in the world!\"";
+ goto L_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.\"";
+ goto L_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", L_close;
+
+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!\"";
+ @wg_state = 7;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_11:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"So, my friend, have you brought me the right Fur?\"";
+ if (countitem("WhiteFur") < 1) goto L_close;
+ next;
+ menu
+ "Sure, I'm a fluffy hunter!", L_State_11_try,
+ "Not yet, sorry.", L_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;
+ @Temp2 = rand(30);
+ if (@Temp2 == 0) goto L_State_11_success;
+ mes "Agostine rips the white fur.";
+ getexp @CUTFUR_EXP, 0;
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"That fur was terrible. I won't work with it!\"";
+ if (countitem("WhiteFur") < 1) goto L_close;
+ next;
+ menu
+ "Well, maybe this is better!", L_State_11_try,
+ "I will hunt other fluffies...", L_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.\"";
+ @wg_state = 8;
+ callfunc "setWGState";
+ 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!", L_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
+ Zeny = Zeny - 15000;
+ delitem "Boots", 1;
+ getitem "FurBoots", 1;
+ @wg_state = 9;
+ callfunc "setWGState";
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Enjoy your new boots, my friend!\"";
+ goto L_close;
+
+L_State_12_missing:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Seems you have forgotten something. Check your inventory";
+ mes "and your pockets!\"";
+ goto L_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!\"";
+ goto L_close;
+
+L_TooMany:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You don't have anywhere to put them. Come back when you do.\"";
+ goto L_close;
+
+L_No_Fur:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You don't have any white fur! Stop talking nonsense.\"";
+ goto L_close;
+
+L_State_14:
+ if (BaseLevel < 60)
+ goto 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... But...\"";
+ next;
+
+ menu
+ "But?", L_Next;
+
+L_Next:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"There is a new fashion I've been dying to try out!";
+ mes "But I don't have all the knowledge in the world about seaming this wonderful fashion.\"";
+ next;
+
+ menu
+ "Ah, that's too bad...", L_close,
+ "I know another tailor who might know!", L_Next1;
+
+L_Next1:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"What tailor may that be?";
+ mes "I haven't been out of Nivalis for quite some time since I have been busy with clothes for the people of the town.";
+ mes "If you can tell me the name of this great tailor, maybe we can work something out, like a collaboration!\"";
+ next;
+
+ menu
+ "Well... There is a tailor in Dimond's Cove who makes pretty good clothing. Her name is Lora Tay.", L_Next2;
+
+L_Next2:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"I had almost forgotten about Lora Tay.";
+ mes "She has tried to put me out of business a few times long ago.";
+ mes "But I am willing to collaborate with her to make this fine fashion come alive.";
+ mes "Will you go ask her if she is willing to help sew and seam this fashion I will create?\"";
+
+ menu
+ "Sure thing! Be back soon.", L_State_14_Accept,
+ "It will never happen. I won't waste my time.", L_close;
+
+L_State_14_Accept:
+ @wg_state = 12;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_14_AA:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Please my friend, go talk to Lora Tay about our possible collaboration!\"";
+ goto L_close;
+
+L_State_15:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Hi there fashionable friend, have you talked to Lora Tay about my request?\"";
+ next;
+ menu
+ "Yes, but she would like to know more information about it and I'm kind of curious myself.", L_Next3,
+ "I haven't yet, sorry.", L_close;
+
+L_Next3:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Well I had a dream of a woman in a beautiful dress I would like to recreate from my dream...";
+ mes "But the thing is I have never sewn a dress this fabulous in my life!";
+ mes "This is why I wanted an experienced tailor to help me with it.\"";
+ next;
+
+ menu
+ "You must be thinking of fashion a lot if it's in your dreams! I shall bring this information to Lora Tay.", L_Next4,
+ "You're obsessed, I cant help you.", L_close;
+
+L_Next4:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Please take these materials with you to show Lora Tay the kind of vision I have!";
+ mes "These are the finest materials in my whole house and have been saving them for something special such as this.\"";
+ next;
+
+ message strcharinfo(0), "Agostine gives you bundles of luxurious cloth that you carefully put in your backpack.";
+ mes "Agostine gives you bundles of luxurious cloth that you carefully put in your backpack.";
+ next;
+
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Hurry back my friend!\"";
+
+ @wg_state = 14;
+ callfunc "setWGState";
+
+ goto L_close;
+
+L_State_15_Repeat:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Please take these materials with you to show Lora Tay the kind of vision I have!";
+ mes "Hurry back my friend!\"";
+ goto L_close;
+
+L_State_16:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Hello there! Did you tell Lora Tay about the type of fashion I was hoping to create?\"";
+ next;
+
+ menu
+ "Yes, she is also working on threading to sew the materials together.", L_Next5,
+ "Why would I do that for?", L_close;
+
+L_Next5:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Wow she did not only accept but she is willing to sew these materials for me?";
+ mes "This is amazing... I was quite worried I would ruin these fine cloths sewing them myself.\"";
+ next;
+
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Is there anything I can do in the meanwhile?\"";
+ next;
+ menu
+ "Actually she wanted the design drawings to know what it should look like.", L_Next6;
+
+L_Next6:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Of course! How could I forget, I drew the designs right after the dream I had.";
+ mes "Please take these to Lora Tay and ask her to try and make it as close as she can.\"";
+ next;
+
+ menu
+ "Sure thing be back soon!", L_Next7,
+ "... I'll take a nap first.", L_close;
+
+L_Next7:
+ @wg_state = 17;
+ callfunc "setWGState";
+
+ message strcharinfo(0), "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack.";
+ mes "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack.";
+
+ goto L_close;
+
+L_State_16_Repeat:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Please my friend, bring my designs to Lora Tay.\"";
+ goto L_close;
+
+L_State_17:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Wow is that the dress?";
+ mes "It looks fabulous...\"";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"But I do notice it is missing something from my design.\"";
+ next;
+
+ menu
+ "Lora Tay mentioned the bottom has to be edged with cotton cloths but she cannot do the design you wanted.", L_Next8;
+
+L_Next8:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"That's fine. I will finish it with the cloth but it seems I don't have anymore around...\"";
+ next;
+
+ goto L_State_17_AskItems;
+
+L_State_17_AskItems:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"I will need about " + @FINEDRESS_COTTON_CLOTHS + " cotton cloths to finish this master piece. Do you think you can get some for me?\"";
+ next;
+
+ menu
+ "Sure thing, I will go get them!", L_Next9,
+ "Here you are!", L_State_17_GiveItems;
+
+L_Next9:
+ @wg_state = 21;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_17_NoItems:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"My friend, sorry to disappoint you, but you are lacking some cloth.";
+ mes "I need exactly " + @FINEDRESS_COTTON_CLOTHS + " cotton cloths to finish this master piece.\"";
+ goto L_close;
+
+L_State_17_GiveItems:
+ if (countitem ("CottonCloth") < @FINEDRESS_COTTON_CLOTHS)
+ goto L_State_17_NoItems;
+ delitem "CottonCloth", @FINEDRESS_COTTON_CLOTHS;
+ @wg_state = 22;
+ callfunc "setWGState";
+
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Great now just a little cloth here........\"";
+ next;
+ mes "............................";
+ next;
+ mes "...................";
+ next;
+ mes "..............";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"It's finished!";
+ mes "The finest dress in my design is finally finished!\"";
+ next;
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"I don't know how I can repay you for all your hard work...\"";
+ next;
+
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Hmmm I know something that will be good for you and for myself!\"";
+ next;
+
+ menu
+ "What is it?", L_Next10;
+
+L_Next10:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"How about I let you buy the dress off me?";
+ mes "This will allow you to have a fine dress and allow me to show the world what I'm capable of.";
+ mes "I would charge " + @FINEDRESS_GP +" GP, which I think is a magnificent price for something this fine.\"";
+ next;
+
+ goto L_State_17_BuyDress;
+
+L_State_17_PBD:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Did you consider buying the dress off me?";
+ mes "I would charge " + @FINEDRESS_GP +" GP, which I think is a magnificent price for something this fine.\"";
+ next;
+
+ goto L_State_17_BuyDress;
+
+L_State_17_BuyDress:
+ menu
+ "Wow that sounds great I'll take it!", L_Next11,
+ "I'll think about it...", L_close;
+
+L_Next11:
+ if (Zeny < @FINEDRESS_GP)
+ goto L_State_17_NoMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100)
+ goto L_State_17_InvFull;
+
+ Zeny = Zeny - @FINEDRESS_GP;
+ getitem "FineDress", 1;
+ @wg_state = 23;
+ callfunc "setWGState";
+ goto L_close;
+
+L_State_17_NoMoney:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"Check your pockets my friend,";
+ mes "and come back when you have the money.\"";
+ goto L_close;
+
+L_State_17_InvFull:
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"My friend, you don't have room to carry my master piece. Come back when you do.\"";
+ goto L_close;
+
+L_State_18:
+ // Same dialog as on state 13, but we could add something about the dress
+ mes "[Agostine, The Legendary Tailor]";
+ mes "\"You are so glamourous, my dear friend!";
+ mes "I have done a very good job on your clothes!\"";
+ goto L_close;
+
+L_close:
+ @wg_state = 0;
+ close;
+}
+function script setWGState {
+ QUEST_WG_state = (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT));
+ return;
+}
diff --git a/npc/020-2/mapflags.txt b/npc/020-2/mapflags.txt
new file mode 100755
index 00000000..09eb87cf
--- /dev/null
+++ b/npc/020-2/mapflags.txt
@@ -0,0 +1,2 @@
+//020-2 mapflag town
+//020-2 mapflag resave 020-1,52,118
diff --git a/npc/020-2/shops.txt b/npc/020-2/shops.txt
new file mode 100755
index 00000000..b940e99f
--- /dev/null
+++ b/npc/020-2/shops.txt
@@ -0,0 +1,27 @@
+
+020-2,75,28,0 script Taylor NPC137,{
+ mes "[Taylor]";
+ mes "\"While it can be dangerous up here in Kaizei, I take comfort that Nivalis is not surrounded by the Yeti like Thermin is. What a weird town.\"";
+ next;
+ mes "\"Around Christmas time, this place gets crazy, but most of the time Nivalis serves as a hub for adventurers and tourists that come to Kaizei.\"";
+ next;
+ mes "\"There caves around here can prove to be dangerous, be careful around here and bring friends if you should go into them..otherwise, it might spell your end.\"";
+ next;
+ mes "\"Well, pleasant journeys and I hope I haven't been too much of a bother. Good chatting with you.\"";
+ close;
+}
+020-2,25,65,0 shop Bracco NPC135,529:2,530:8000,521:500,603:1000
+020-2,75,24,0 shop Mede NPC103,501:25,502:35,567:250,568:250,826:120,827:240,828:480
+
+020-2,111,23,0 script Kane NPC120,{
+ @npcname$ = "Kane the Inn Keeper";
+ @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;
+}