diff options
Diffstat (limited to 'npc/020-2')
-rw-r--r-- | npc/020-2/_import.txt | 8 | ||||
-rw-r--r-- | npc/020-2/_warps.txt | 8 | ||||
-rwxr-xr-x | npc/020-2/baktar.txt | 225 | ||||
-rwxr-xr-x | npc/020-2/banker.txt | 16 | ||||
-rwxr-xr-x | npc/020-2/furquest.txt | 646 | ||||
-rwxr-xr-x | npc/020-2/mapflags.txt | 2 | ||||
-rwxr-xr-x | npc/020-2/shops.txt | 27 |
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; +} |