summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/constants.conf8
-rw-r--r--maps/re/017-4.mcachebin175 -> 158 bytes
-rw-r--r--npc/017-3/_import.txt5
-rw-r--r--npc/017-3/chef.txt367
-rw-r--r--npc/017-3/dimonds.txt629
-rw-r--r--npc/017-3/doug.txt45
-rw-r--r--npc/017-3/loratay.txt1174
-rw-r--r--npc/017-3/workers.txt19
-rw-r--r--npc/017-4/_import.txt1
-rw-r--r--npc/017-4/_warps.txt4
10 files changed, 2252 insertions, 0 deletions
diff --git a/db/constants.conf b/db/constants.conf
index a9631744f..0f4e1cf7a 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -3955,7 +3955,15 @@ constants_db: {
NPC_KOGA: 183
// LoF Non Animated NPCs
+ NPC_TECH_EXPLORER: 208
NPC_CHEF: 210
+ NPC_GLASS_OLD_LADY: 211
+ NPC_BARD_TRUMP: 213
+ NPC_BARD_DRUMS: 227
+ NPC_TOMBOY: 231
+ NPC_LOF_NOBLEMAN: 235
+ NPC_DIMOND: 240
+ NPC_BARD_HARPS: 241
// TMW-BR Non Animated NPCs
NPC_SHOPPAKEP: 301
diff --git a/maps/re/017-4.mcache b/maps/re/017-4.mcache
index 677cae64a..ae36bb94f 100644
--- a/maps/re/017-4.mcache
+++ b/maps/re/017-4.mcache
Binary files differ
diff --git a/npc/017-3/_import.txt b/npc/017-3/_import.txt
index 6fbfddb77..2072b1da7 100644
--- a/npc/017-3/_import.txt
+++ b/npc/017-3/_import.txt
@@ -1,3 +1,8 @@
// Map 017-3: Dimond's Cove
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/017-3/_warps.txt",
+"npc/017-3/chef.txt",
+"npc/017-3/dimonds.txt",
+"npc/017-3/doug.txt",
+"npc/017-3/loratay.txt",
+"npc/017-3/workers.txt",
diff --git a/npc/017-3/chef.txt b/npc/017-3/chef.txt
new file mode 100644
index 000000000..1e3e14216
--- /dev/null
+++ b/npc/017-3/chef.txt
@@ -0,0 +1,367 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Dimond's Cove Chef. He'll disguise Mopox Cure Potion, and he is part from
+// Easter 2011 and Easter 2012 quests.
+
+017-3,33,25,0 script Chef#dimond NPC_CHEF,{
+ goto L_Begin;
+
+L_Begin:
+ mes "";
+ mesn;
+ mesq l("I'm too busy right now to talk.");
+ close;
+ /*
+ .@q=getq(TulimsharQuest_Kadiya);
+ if ((.@q == 9) && (countitem ("MopoxCurePotion") > 0))
+ goto L_lace_chococake;
+ if ((.@q == 11) && (countitem ("MopoxCurePotion") > 0))
+ goto L_lace_cupcake;
+ close;
+
+L_lace_chococake:
+ next;
+ menu
+ "Sorry.", L_Close,
+ "I need your help with a sick young girl!", L_Next;
+
+L_Next:
+ mesn;
+ mes "";
+ mes "You explain Kadiya's situation to him.";
+ mes "\"Hmrmf. I can't help you; I'm a chef, not a baker!\"";
+ close;
+
+L_lace_cupcake:
+ next;
+ menu
+ "Sorry.", L_Close,
+ "I need your help with a sick young girl!", L_Next1;
+
+L_Next1:
+ mesn;
+ mes "";
+ mes "You explain Kadiya's situation to him.";
+ mes "\"Hmrmf. I was about to make another batch of orange cupcakes. Do you have that potion with you?\"";
+ next;
+ menu
+ "No, sorry.", L_bringit,
+ "Yes, here you are.", L_Next2;
+
+L_Next2:
+ if (countitem ("MopoxCurePotion") < 1)
+ goto L_bringit;
+ mesn;
+ mes "";
+ mes "He shudders as he smells the bottle.";
+ mes "\"That is disgusting! How do you expect me to mask this?\"";
+ mes "He ponders his own question for a moment.";
+ next;
+ mesn;
+ mes "";
+ mes "\"Ah yes. We need to bind the smell in gingerbread. Bring me three pieces of gingerbread, one orange, and 500 GP for the other ingredients, and I will make you your cupcake.\"";
+ next;
+ menu
+ "I'll go and get it.", L_Close,
+ "Here you are!", L_Next3,
+ "Not now.", L_Close;
+
+L_Next3:
+ if (countitem ("GingerBreadMan") < 3)
+ goto L_No_gingerbread;
+ if (countitem ("Orange") < 1)
+ goto L_No_orange;
+ if (countitem ("MopoxCurePotion") < 1)
+ goto L_No_Potion;
+ if (Zeny < 500)
+ goto L_No_Zeny;
+
+ Zeny = Zeny - 500;
+ delitem "GingerBreadMan", 3;
+ delitem "Orange", 1;
+ delitem "MopoxCurePotion", 1;
+
+ getitem "LacedOrangeCupcake", 1;
+
+ mesn;
+ mes "";
+ mes "\"Good, good. This should work.\"";
+ mes "He crumbles the gingerbread, mixes it with the potion and some spices, and finally adds some cupcake batter and the orange pieces.";
+ next;
+ mesn;
+ mes "";
+ mes "\"Take a seat.\"";
+ mes "He fills the mixture into a cupcake form and puts it into the oven. You watch the cupcake grow for a while.";
+ mes "Finally, he removes the form and carefully extracts the cupcake.";
+ next;
+ mesn;
+ mes "";
+ mes "\"Here you are. It's a bit bigger than a regular cupcake and will taste a bit like ginger, I think, but otherwise it should be fine.\"";
+ close;
+
+L_No_gingerbread:
+ mesn;
+ mes "";
+ mes "\"I will need three pieces of gingerbread.\"";
+ close;
+
+L_No_orange:
+ mesn;
+ mes "";
+ mes "\"Please bring me an orange for these cupcakes.\"";
+ close;
+
+L_No_Zeny:
+ mesn;
+ mes "";
+ mes "\"No. I need extra ingredients worth 500 GP, and I expect you to pay for those.\"";
+ close;
+
+L_No_Potion:
+ mesn;
+ mes "";
+ mes "\"Where did your Mopox potion go?\"";
+ close;
+
+L_bringit:
+ mesn;
+ mes "";
+ mes "\"Bring it here when you do.\"";
+ next;
+ */
+
+L_Close:
+ close;
+
+/* XXX: Easter 2011 stuff
+L_JellyBean:
+ mesn;
+ mes "";
+ mes "\"I can't talk right now... I'm too busy.\"";
+ next;
+ mes "\"Oh, wait. I see you are the adventurer who was speaking with the Easter Bunny. He has a really bad memory, you know? Every year he forgets who he needs to ask to get Jelly Beans, and every year an adventurer comes to my kitchen asking if I can help the Easter Bunny get some.\"";
+ next;
+ mes "\"Even though I am really busy this time of year, I will help you make some Jelly Beans to put in the basket if you wish. Just to keep the tradition alive...\"";
+ menu
+ "I would really appreciate that!", L_SetJellyBean,
+ "Nah, I decided not to do that stupid quest.", L_Close;
+
+L_SetJellyBean:
+ QUEST_Easter11 = 8;
+ goto L_MakeJellyBean;
+
+L_MakeJellyBean:
+ mesn;
+ mes "";
+ mes "\"I will need you to bring me some candies.\"";
+ mes "\"I think 15 should be enough.\"";
+ mes "\"Sea slimes seem to have those, so try them.\"";
+ mes "\"And because it's the holidays, I'll add in the other ingredient for free.\"";
+ menu
+ "I have some candies!", L_CandyCheck,
+ "Ok, I will be back soon.", L_Close,
+ "I changed my mind, forget about it.", L_Close;
+
+L_CandyCheck:
+ if(countitem("Candy") < 15)
+ goto L_EasterNotEnough;
+ if(countitem("Candy") >= 15)
+ goto L_EasterEnough;
+ close;
+
+L_EasterNotEnough:
+ mesn;
+ mes "";
+ mes "\"You do not have enough candies for me to work with yet.\"";
+ mes "\"Please go get more.\"";
+ close;
+
+L_EasterEnough:
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("Candy") > 15)
+ goto L_EasterTooMany;
+ if(countitem("Candy") < 15)
+ goto L_EasterNotEnough;
+ delitem "Candy", 15;
+ getitem "JellyBeans", 1;
+ QUEST_Easter11 = 9;
+ mesn;
+ mes "";
+ mes "\"You have gathered enough candies for me to make the Jelly Beans.\"";
+ mes "He puts the candies into a pot and starts melting them.";
+ mes "He adds in some gooey stuff, then lets the solution cool for a moment before forming the Jelly Beans.";
+ mes "\"Here are your Jelly Beans.\"";
+ close;
+
+L_EasterTooMany:
+ mesn;
+ mes "";
+ mes "\"You don't have enough room for the Jelly Beans. Come back later.\"";
+ close;
+
+L_SeeBunny:
+ mesn;
+ mes "";
+ mes "\"Oh yeah, you need to return to the Easter Bunny now.\"";
+ next;
+ goto L_Begin;
+ close;
+*/
+
+
+
+
+/* XXX: Easter 201x stuff
+// Really cool script, we must reintroduce it %%e
+
+L_Easter2012_Begin:
+ mesn;
+ mes "\"Ahh, " + strcharinfo(0) + "! I really need to talk to you. Did the Easter Bunny give you a very thick and heavy pan?\"";
+ menu
+ "Yes, he did. Why?", L_Easter2012_Continue;
+
+L_Easter2012_Continue:
+ mesn;
+ mes "\"Good to know! I am asking because now you are my only hope. I have invented the ultimate culinary wonder, a recipe for the most incredibly tasty food you can imagine!\"";
+ next;
+ mes "\"But here is the problem, to complete this recipe I need a very resistant pan, because in the process I need to use a very strong acid solution based on yeti saliva!\"";
+ next;
+ mes "\"Can you believe I ruined ALL of my pans and 17 infantry helmets while trying to cook it? That is why I am asking for this favor. Could you lend me your pan? I promise I will give you a jar of the final product.\"";
+ next;
+ mes "\"Oh, and I will need to keep it with me for a while, as the ingredients need to rest in the acid solution for a long time, but you can always come here to see how it is going.\"";
+ menu
+ "Ok, but I want my pan back when it is done!", L_Accept_Cooking,
+ "No way, I won't let you fill my hat with corrosive yeti saliva!", L_NoWay;
+
+L_NoWay:
+ mesn;
+ mes "\"Ahh, don't say that! Please, think about it and come back if you change your mind.\"";
+ close;
+
+L_Accept_Cooking:
+ mesn;
+ mes "\"Great! But I can't promise anything regarding your hat. What I can promise is: IF it works, you will eat the most spectacular food of all time! I won't say what it is, but it is going to be great! What do you say, are you sure?\"";
+ menu
+ "Ahh, just take the pan and do your thing.", L_CarryOn,
+ "No way!", L_Close;
+
+L_CarryOn:
+ if (countitem("PanHat") < 1)
+ goto L_No_PanHat;
+ delitem "PanHat", 1;
+ QUEST_Easter12 = 7;
+ mes "\"Very good! Now I just need to put the basic ingredients inside a metal pan filled with water, yeti saliva, a little bit of salt and finally... The secret ingredient!\"";
+ next;
+ mes "The chef turns his back to you so he can hide what he is using. But you can clearly distinguish a smell of coal...";
+ mes "\"Hahahah! And now we wait!\"";
+ close;
+
+L_Easter2012_Wait:
+ if ((gettime(6) == 4 && gettime(5) >= $@easter2012_reward_start_day))
+ goto L_Easter2012_Result;
+ mesn;
+ mes "\"Be patient... The basic ingredients are not ready yet.\"";
+ close;
+
+L_Easter2012_Result:
+ @temp = rand(99);
+ mesn;
+ mes "\"Hey! I have some good news and some bad news... Which one do you want to hear first?\"";
+ menu
+ "The good one.", L_SelectNews,
+ "The bad one.", L_SelectNews,
+ "Oh no, I don't even want to hear!", L_Close;
+
+L_SelectNews:
+ if (@temp < 15) goto L_Easter2012_Lucky;
+ if (@temp >= 15) goto L_Easter2012_Unlucky;
+ close;
+
+L_Easter2012_Lucky:
+ mesn;
+ mes "\"Wait! Did I mention bad news? I must be crazy... There is no bad news my friend! The ultimate pickled beets is now ready AND your pan is intact!\"";
+ next;
+ mes "\"Here! Take your pan back and a jar of the best pickled beets of the mana world!\"";
+ QUEST_Easter12 = 10;
+ getitem "PickledBeets", 1;
+ getitem "PanHat", 1;
+ close;
+
+L_Easter2012_Unlucky:
+ mesn;
+ mes "\"Ahh, actually, it doesn't matter! The important thing is that the recipe was a success! I just can't believe how something can be so tasty!\"";
+ next;
+ menu
+ "Nice! Now, what about my hat?", L_HatNext;
+
+L_HatNext:
+ mes "\"Oh, that... Ehh, unfortunately, the pan is not anymore. It was completely destroyed by the time the pickled beets were ready! But don't worry, I will keep my promise and give you a jar of this culinary masterpiece!\"";
+ next;
+ menu
+ "Wait, wait... Are you saying I lost my hat?", L_HatNext2;
+
+L_HatNext2:
+ mesn;
+ mes "\"Hmm, yes. But I must say I really appreciate your effort to help me! You sacrificed your cool hat in the name of the culinary arts, only a great person would do that!\"";
+ next;
+ menu
+ "But... I... My hat...", L_HatNext3;
+
+L_HatNext3:
+ mesn;
+ mes "\"Here, take your pickled beets!\"";
+ getitem "PickledBeets", 1;
+ QUEST_Easter12 = 8;
+ close;
+
+OnEaster2012Out:
+ if (QUEST_Easter12 == 8)
+ QUEST_Easter12 = 9;
+ mesn;
+ mes "\"Hey, I couldn't help but notice your sadness... You really like these silly hats, don't you? Well, since your hat is completely destroyed, just like all my pans, I can give you one of these nice cooking hats. But only if you give my jar of pickled beets back. What do you say?\"";
+ menu
+ "A chef hat for a jar of pickled beets? Of course I want!", L_GetChefhat,
+ "Ahh, keep you silly hat! The pickled beets are way better!", L_KeepBeets;
+ close;
+
+L_GetChefhat:
+ if (countitem("PickledBeets") < 1)
+ goto L_No_Pickledbeets;
+ mesn;
+ mes "\"Really? Well, if you are sure about that... Here is your hat!\"";
+ delitem "PickledBeets", 1;
+ getitem "ChefHat", 1;
+ QUEST_Easter12 = 10;
+ close;
+
+L_KeepBeets:
+ mesn;
+ mes "\"Hmm, I see that at least you are a wise person. See you later!\"";
+ QUEST_Easter12 = 10;
+ close;
+
+L_No_PanHat:
+ mesn;
+ mes "\"So? You said you have the pan, where is it?\"";
+ close;
+
+L_No_Pickledbeets:
+ mesn;
+ mes "\"Hey, no pickled beets means no chef hat.\"";
+ close;
+
+L_Easter2012Foolplayers:
+ mes "The chef can't hear you. He keeps looking and feeling the scent of his new recipe.";
+ close;
+*/
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+
+}
+
diff --git a/npc/017-3/dimonds.txt b/npc/017-3/dimonds.txt
new file mode 100644
index 000000000..822039894
--- /dev/null
+++ b/npc/017-3/dimonds.txt
@@ -0,0 +1,629 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Dimond's Cove NPCs
+
+017-3,34,38,0 script Dimond NPC_DIMOND,{
+ mesn;
+ mesq l("Welcome to Dimond's Cove!");
+ next;
+ mesn;
+ mesq l("Please, don't say I got fat. I DON'T WANNA HEAR IT FROM YOU, WAS I CLEAR?");
+ next;
+ mesn;
+ mesq l("Talk to the waitress to get some food. We also have shops on the 2nd Floor, and an inn on the 3rd Floor.\"";
+ close;
+
+OnInit:
+ .sex=G_FEMALE;
+ .distance=5;
+ end;
+}
+
+017-3,40,35,0 script Phil NPC_BARD_TRUMP,{
+ if (season() == SEASON_SPRING)
+ goto L_Quest;
+ mesn;
+ mesq l("We've finally solved the problem with our instruments!");
+ next;
+ mesn;
+ mesq l("Now we can play any songs! Hooray!");
+ close;
+
+L_Quest:
+ mesn;
+ mesq l("All spring it is the same thing... The instruments stop working!");
+ close;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
+017-3,40,37,0 script Jerry NPC_BARD_DRUMS,{
+ if (season() == SEASON_SPRING)
+ goto L_Quest;
+ mesn;
+ mesq l("I finally figured out what was wrong. I must thank everyone who help us.");
+ next;
+ mesn;
+ mesq l("I can't believe it took so long to fix... And worse, next spring it'll be the same story all over again...");
+ close;
+
+L_Quest:
+ mesn;
+ mesq l("All spring it is the same thing... The instruments stop working!");
+ close;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
+017-3,42,36,0 script Robert NPC_BARD_HARPS,{
+ if (season() == SEASON_SPRING)
+ goto L_Quest;
+ mesn;
+ mesq l("We held to our hope and Jerry figured it out.");
+ next;
+ mesn;
+ mesq l("Now we are no longer useless — we can play music again!");
+ close;
+
+L_Quest:
+ mesn;
+ mesq l("All spring it is the same thing... The instruments stop working!");
+ close;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
+
+017-3,35,35,0 script Shannon NPC_NOBLEMAN,{
+ mesn;
+ mesq l("I'm a traveling poet and admirer of Robert Burns, a bard from the mana world.");
+ next;
+ mesn;
+ mesq l("I wonder if he exists on this world too. Because if he doesn't, I could tell many tales about him!");
+ close;
+ /*
+ @month = 1;
+ @start_day = 24;
+ @end_day = 26;
+ if (gettime(6) != @month) goto L_No_Event;
+ if (gettime(5) < @start_day) goto L_No_Event;
+ if (gettime(5) > @end_day) goto L_No_Event;
+ if (gettimetick(2)-TUT_var < 2*7*86400 ) //player must be created at least 2 weeks ago - WAIT, THAT IS NOT POSSIBLE ON TMW2
+ goto L_No_Event;
+ if (FLAGS & FLAG_HAS_BOWLER_BURNSDAY && FLAGS & FLAG_HAS_STEAMPUNK_BURNSDAY) goto L_Event_Done;
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+
+ mes "[Shannon]";
+ mes "\"Welcome to Dimond's Cove. We are celebrating Robert Burns with supper and poems. You provide the supper and I'll provide a poem by Robert Burns. He was otherwise known as 'The Bard' and wrote many poems. The music of language is what I love most. The language of poetry. While his accent is thick, his poems tell stories that stir the soul. I'll read a poem by him and you can tell me what you think.\"";
+ next;
+ mes "\"Before I start, it is traditional to eat, drink and be merry, so help from you will be great and keep me reading.\"";
+ next;
+ mes "\"O thou! whatever title suit thee,--\"";
+ mes "\"Auld Hornie, Satan, Nick, or Clootie!\"";
+ mes "\"Wha in yon cavern, grim an' sootie,\"";
+ mes "\"Clos'd under hatches,\"";
+ mes "\"Spairges about the brunstane cootie\"";
+ mes "\"To scaud poor wretches!\"";
+ callsub S_food_menu;
+ mes "\"Hear me, Auld Hangie, for a wee,\"";
+ mes "\"An' let poor damned bodies be;\"";
+ mes "\"I'm sure sma' pleasure it can gie,\"";
+ mes "\"E'en to a deil,\"";
+ mes "\"To skelp an' scaud poor dogs like me,\"";
+ mes "\"An' hear us squeel!\"";
+ callsub S_food_menu;
+ mes "\"Great is thy pow'r, an' great thy fame;\"";
+ mes "\"Far ken'd an' noted is thy name;\"";
+ mes "\"An' tho' yon lowin heugh's thy hame,\"";
+ mes "\"Thou travels far;\"";
+ mes "\"An' faith! thou's neither lag nor lame,\"";
+ mes "\"Nor blate nor scaur.\"";
+ callsub S_food_menu;
+ mes "\"Whyles, ranging like a roarin lion,\"";
+ mes "\"For prey a' holes an' corners tryin;\"";
+ mes "\"Whyles, on the strong-wing'd tempest flyin,\"";
+ mes "\"Tirlin' the kirks;\"";
+ mes "\"Whyles, in the human bosom pryin,\"";
+ mes "\"Unseen thou lurks.\"";
+ callsub S_food_menu;
+ mes "\"I've heard my rev'rend graunie say,\"";
+ mes "\"In lanely glens ye like to stray;\"";
+ mes "\"Or whare auld ruin'd castles gray\"";
+ mes "\"Nod to the moon,\"";
+ mes "\"Ye fright the nightly wand'rer's way\"";
+ mes "\"Wi' eldritch croon.\"";
+ callsub S_food_menu;
+ mes "\"When twilight did my graunie summon\"";
+ mes "\"To say her pray'rs, douce honest woman!\"";
+ mes "\"Aft yont the dike she's heard you bummin,\"";
+ mes "\"Wi' eerie drone;\"";
+ mes "\"Or, rustlin thro' the boortrees comin,\"";
+ mes "\"Wi' heavy groan.\"";
+ callsub S_food_menu;
+ mes "\"Ae dreary, windy, winter night,\"";
+ mes "\"The stars shot down wi' sklentin light,\"";
+ mes "\"Wi' you mysel I gat a fright,\"";
+ mes "\"Ayont the lough;\"";
+ mes "\"Ye like a rash-buss stood in sight,\"";
+ mes "\"Wi' waving sugh.\"";
+ callsub S_food_menu;
+ mes "\"The cudgel in my nieve did shake,\"";
+ mes "\"Each bristl'd hair stood like a stake,\"";
+ mes "\"When wi' an eldritch, stoor 'Quaick, quaick,'\"";
+ mes "\"Amang the springs,\"";
+ mes "\"Awa ye squatter'd like a drake,\"";
+ mes "\"On whistling wings.\"";
+ callsub S_food_menu;
+ mes "\"Let warlocks grim an' wither'd hags\"";
+ mes "\"Tell how wi' you on ragweed nags\"";
+ mes "\"They skim the muirs an' dizzy crags\"";
+ mes "\"Wi' wicked speed;\"";
+ mes "\"And in kirk-yards renew their leagues,\"";
+ mes "\"Owre howket dead.\"";
+ callsub S_food_menu;
+ mes "\"Thence, countra wives wi' toil an' pain\"";
+ mes "\"May plunge an' plunge the kirn in vain;\"";
+ mes "\"For oh! the yellow treasure's taen\"";
+ mes "\"By witchin skill;\"";
+ mes "\"An' dawtet, twal-pint hawkie's gaen\"";
+ mes "\"As yell's the bill.\"";
+ callsub S_food_menu;
+ mes "\"Thence, mystic knots mak great abuse,\"";
+ mes "\"On young guidmen, fond, keen, an' croose;\"";
+ mes "\"When the best wark-lume i' the house,\"";
+ mes "\"By cantraip wit,\"";
+ mes "\"Is instant made no worth a louse,\"";
+ mes "\"Just at the bit.\"";
+ callsub S_food_menu;
+ mes "\"When thowes dissolve the snawy hoord,\"";
+ mes "\"An' float the jinglin icy-boord,\"";
+ mes "\"Then water-kelpies haunt the foord\"";
+ mes "\"By your direction,\"";
+ mes "\"An' nighted trav'lers are allur'd\"";
+ mes "\"To their destruction.\"";
+ callsub S_food_menu;
+ mes "\"And aft your moss-traversing spunkies\"";
+ mes "\"Decoy the wight that late an drunk is:\"";
+ mes "\"The bleezin, curst, mischievous monkeys\"";
+ mes "\"Delude his eyes,\"";
+ mes "\"Till in some miry slough he sunk is,\"";
+ mes "\"Ne'er mair to rise.\"";
+ callsub S_food_menu;
+ mes "\"When Masons' mystic word an grip\"";
+ mes "\"In storms an' tempests raise you up,\"";
+ mes "\"Some cock or cat your rage maun stop,\"";
+ mes "\"Or, strange to tell!\"";
+ mes "\"The youngest brither ye wad whip\"";
+ mes "\"Aff straught to hell!\"";
+ callsub S_food_menu;
+ mes "\"Lang syne, in Eden'd bonie yard,\"";
+ mes "\"When youthfu' lovers first were pair'd,\"";
+ mes "\"An all the soul of love they shar'd,\"";
+ mes "\"The raptur'd hour,\"";
+ mes "\"Sweet on the fragrant flow'ry swaird,\"";
+ mes "\"In shady bow'r;\"";
+ callsub S_food_menu;
+ mes "\"Then you, ye auld snick-drawin dog!\"";
+ mes "\"Ye cam to Paradise incog,\"";
+ mes "\"And play'd on man a cursed brogue,\"";
+ mes "\"(Black be your fa'!)\"";
+ mes "\"An gied the infant warld a shog,\"";
+ mes "\"Maist ruin'd a'.\"";
+ callsub S_food_menu;
+ mes "\"D'ye mind that day, when in a bizz,\"";
+ mes "\"Wi' reeket duds an reestet gizz,\"";
+ mes "\"Ye did present your smoutie phiz\"";
+ mes "\"Mang better folk,\"";
+ mes "\"An' sklented on the man of Uz\"";
+ mes "\"Your spitefu' joke?\"";
+ callsub S_food_menu;
+ mes "\"An' how ye gat him i' your thrall,\"";
+ mes "\"An' brak him out o' house and hal',\"";
+ mes "\"While scabs and blotches did him gall,\"";
+ mes "\"Wi' bitter claw,\"";
+ mes "\"An' lows'd his ill-tongued, wicked scaul,\"";
+ mes "\"Was warst ava?\"";
+ callsub S_food_menu;
+ mes "\"But a' your doings to rehearse,\"";
+ mes "\"Your wily snares an' fechtin fierce,\"";
+ mes "\"Sin' that day Michael did you pierce,\"";
+ mes "\"Down to this time,\"";
+ mes "\"Wad ding a Lallan tongue, or Erse,\"";
+ mes "\"In prose or rhyme.\"";
+ callsub S_food_menu;
+ mes "\"An' now, Auld Cloots, I ken ye're thinkin,\"";
+ mes "\"A certain Bardie's rantin, drinkin,\"";
+ mes "\"Some luckless hour will send him linkin,\"";
+ mes "\"To your black pit;\"";
+ mes "\"But faith! he'll turn a corner jinkin,\"";
+ mes "\"An' cheat you yet.\"";
+ callsub S_food_menu;
+ mes "\"But fare you weel, Auld Nickie-ben!\"";
+ mes "\"O wad ye tak a thought an' men'!\"";
+ mes "\"Ye aiblins might--I dinna ken--\"";
+ mes "\"Still hae a stake:\"";
+ mes "\"I'm wae to think upo' yon den,\"";
+ mes "\"Ev'n for your sake!\"";
+ next;
+ mes "\"Well, that was the poem. What do you think of it?\"";
+ menu
+ "It was a bit long and kind of hard to understand, but thanks for reading.", L_Next;
+
+L_Next:
+ mes "[Shannon]";
+ mes "\"Well, thanks for coming to the supper. Also, thanks for helping me make it through the poem. Here, take this hat. When you wear it, wear it with the class you showed me today. Happy Burns' Supper!\"";
+ getinventorylist;
+ if (@inventorylist_count == 100)
+ goto L_Full_Inv;
+ if (FLAGS & FLAG_HAS_BOWLER_BURNSDAY) goto L_Get_SteamTopHat;
+
+ getitem "BowlerHat", 1;
+ FLAGS = FLAGS | FLAG_HAS_BOWLER_BURNSDAY;
+ close;
+
+L_Get_SteamTopHat:
+ getitem "SteamTopHat", 1;
+ FLAGS = FLAGS | FLAG_HAS_STEAMPUNK_BURNSDAY;
+ close;
+
+L_No_Event:
+ mes "[Shannon]";
+ mes "\"I'm a traveling poet and admirer of Robert Burns.\"";
+ close;
+
+L_Event_Done:
+ mes "[Shannon]";
+ mes "\"Ah, my dear friend. Good to see you again in this remarkable time of the year.\"";
+ next;
+ mes "\"Welcome to Dimond's Cove. We are celebrating Robert Burns with supper and poems. You provide the supper and I'll provide a poem by Robert Burns. He was otherwise known as 'The Bard' and wrote many poems. The music of language is I love most. The language of poetry. While his accent is thick, his poems tell stories that stir the soul. I'll read a poem by him and you can tell me what you think.\"";
+ next;
+ mes "\"O thou! whatever title suit thee,--\"";
+ mes "\"Auld Hornie, Satan, Nick, or Clootie!\"";
+ mes "\"Wha in yon cavern, grim an' sootie,\"";
+ mes "\"Clos'd under hatches,\"";
+ mes "\"Spairges about the brunstane cootie\"";
+ mes "\"To scaud poor wretches!\"";
+ next;
+ mes "\"Hear me, Auld Hangie, for a wee,\"";
+ mes "\"An' let poor damned bodies be;\"";
+ mes "\"I'm sure sma' pleasure it can gie,\"";
+ mes "\"E'en to a deil,\"";
+ mes "\"To skelp an' scaud poor dogs like me,\"";
+ mes "\"An' hear us squeel!\"";
+ next;
+ mes "\"Great is thy pow'r, an' great thy fame;\"";
+ mes "\"Far ken'd an' noted is thy name;\"";
+ mes "\"An' tho' yon lowin heugh's thy hame,\"";
+ mes "\"Thou travels far;\"";
+ mes "\"An' faith! thou's neither lag nor lame,\"";
+ mes "\"Nor blate nor scaur.\"";
+ next;
+ mes "\"Whyles, ranging like a roarin lion,\"";
+ mes "\"For prey a' holes an' corners tryin;\"";
+ mes "\"Whyles, on the strong-wing'd tempest flyin,\"";
+ mes "\"Tirlin' the kirks;\"";
+ mes "\"Whyles, in the human bosom pryin,\"";
+ mes "\"Unseen thou lurks.\"";
+ next;
+ mes "\"I've heard my rev'rend graunie say,\"";
+ mes "\"In lanely glens ye like to stray;\"";
+ mes "\"Or whare auld ruin'd castles gray\"";
+ mes "\"Nod to the moon,\"";
+ mes "\"Ye fright the nightly wand'rer's way\"";
+ mes "\"Wi' eldritch croon.\"";
+ next;
+ mes "\"When twilight did my graunie summon\"";
+ mes "\"To say her pray'rs, douce honest woman!\"";
+ mes "\"Aft yont the dike she's heard you bummin,\"";
+ mes "\"Wi' eerie drone;\"";
+ mes "\"Or, rustlin thro' the boortrees comin,\"";
+ mes "\"Wi' heavy groan.\"";
+ next;
+ mes "\"Ae dreary, windy, winter night,\"";
+ mes "\"The stars shot down wi' sklentin light,\"";
+ mes "\"Wi' you mysel I gat a fright,\"";
+ mes "\"Ayont the lough;\"";
+ mes "\"Ye like a rash-buss stood in sight,\"";
+ mes "\"Wi' waving sugh.\"";
+ next;
+ mes "\"The cudgel in my nieve did shake,\"";
+ mes "\"Each bristl'd hair stood like a stake,\"";
+ mes "\"When wi' an eldritch, stoor 'Quaick, quaick,'\"";
+ mes "\"Amang the springs,\"";
+ mes "\"Awa ye squatter'd like a drake,\"";
+ mes "\"On whistling wings.\"";
+ next;
+ mes "\"Let warlocks grim an' wither'd hags\"";
+ mes "\"Tell how wi' you on ragweed nags\"";
+ mes "\"They skim the muirs an' dizzy crags\"";
+ mes "\"Wi' wicked speed;\"";
+ mes "\"And in kirk-yards renew their leagues,\"";
+ mes "\"Owre howket dead.\"";
+ next;
+ mes "\"Thence, countra wives wi' toil an' pain\"";
+ mes "\"May plunge an' plunge the kirn in vain;\"";
+ mes "\"For oh! the yellow treasure's taen\"";
+ mes "\"By witchin skill;\"";
+ mes "\"An' dawtet, twal-pint hawkie's gaen\"";
+ mes "\"As yell's the bill.\"";
+ next;
+ mes "\"Thence, mystic knots mak great abuse,\"";
+ mes "\"On young guidmen, fond, keen, an' croose;\"";
+ mes "\"When the best wark-lume i' the house,\"";
+ mes "\"By cantraip wit,\"";
+ mes "\"Is instant made no worth a louse,\"";
+ mes "\"Just at the bit.\"";
+ next;
+ mes "\"When thowes dissolve the snawy hoord,\"";
+ mes "\"An' float the jinglin icy-boord,\"";
+ mes "\"Then water-kelpies haunt the foord\"";
+ mes "\"By your direction,\"";
+ mes "\"An' nighted trav'lers are allur'd\"";
+ mes "\"To their destruction.\"";
+ next;
+ mes "\"And aft your moss-traversing spunkies\"";
+ mes "\"Decoy the wight that late an drunk is:\"";
+ mes "\"The bleezin, curst, mischievous monkeys\"";
+ mes "\"Delude his eyes,\"";
+ mes "\"Till in some miry slough he sunk is,\"";
+ mes "\"Ne'er mair to rise.\"";
+ next;
+ mes "\"When Masons' mystic word an grip\"";
+ mes "\"In storms an' tempests raise you up,\"";
+ mes "\"Some cock or cat your rage maun stop,\"";
+ mes "\"Or, strange to tell!\"";
+ mes "\"The youngest brither ye wad whip\"";
+ mes "\"Aff straught to hell!\"";
+ next;
+ mes "\"Lang syne, in Eden'd bonie yard,\"";
+ mes "\"When youthfu' lovers first were pair'd,\"";
+ mes "\"An all the soul of love they shar'd,\"";
+ mes "\"The raptur'd hour,\"";
+ mes "\"Sweet on the fragrant flow'ry swaird,\"";
+ mes "\"In shady bow'r;\"";
+ next;
+ mes "\"Then you, ye auld snick-drawin dog!\"";
+ mes "\"Ye cam to Paradise incog,\"";
+ mes "\"And play'd on man a cursed brogue,\"";
+ mes "\"(Black be your fa'!)\"";
+ mes "\"An gied the infant warld a shog,\"";
+ mes "\"Maist ruin'd a'.\"";
+ next;
+ mes "\"D'ye mind that day, when in a bizz,\"";
+ mes "\"Wi' reeket duds an reestet gizz,\"";
+ mes "\"Ye did present your smoutie phiz\"";
+ mes "\"Mang better folk,\"";
+ mes "\"An' sklented on the man of Uz\"";
+ mes "\"Your spitefu' joke?\"";
+ next;
+ mes "\"An' how ye gat him i' your thrall,\"";
+ mes "\"An' brak him out o' house and hal',\"";
+ mes "\"While scabs and blotches did him gall,\"";
+ mes "\"Wi' bitter claw,\"";
+ mes "\"An' lows'd his ill-tongued, wicked scaul,\"";
+ mes "\"Was warst ava?\"";
+ next;
+ mes "\"But a' your doings to rehearse,\"";
+ mes "\"Your wily snares an' fechtin fierce,\"";
+ mes "\"Sin' that day Michael did you pierce,\"";
+ mes "\"Down to this time,\"";
+ mes "\"Wad ding a Lallan tongue, or Erse,\"";
+ mes "\"In prose or rhyme.\"";
+ next;
+ mes "\"An' now, Auld Cloots, I ken ye're thinkin,\"";
+ mes "\"A certain Bardie's rantin, drinkin,\"";
+ mes "\"Some luckless hour will send him linkin,\"";
+ mes "\"To your black pit;\"";
+ mes "\"But faith! he'll turn a corner jinkin,\"";
+ mes "\"An' cheat you yet.\"";
+ next;
+ mes "\"But fare you weel, Auld Nickie-ben!\"";
+ mes "\"O wad ye tak a thought an' men'!\"";
+ mes "\"Ye aiblins might--I dinna ken--\"";
+ mes "\"Still hae a stake:\"";
+ mes "\"I'm wae to think upo' yon den,\"";
+ mes "\"Ev'n for your sake!\"";
+ next;
+ mes "\"Well, that was the poem. What do you think of it?\"";
+ menu
+ "It was a bit long and kind of hard to understand, but thanks for reading.", L_Close;
+
+L_Full_Inv:
+ mes "[Shannon]";
+ mes "\"On second thought, your possessions seems to be a burden to you.\"";
+ next;
+ mes "\"Maybe you should turn away from the mundane world and get rid of this burden to change your view to the beauty of poetry.\"";
+ close;
+
+S_food_menu:
+ setarray @choice_idx, 0,0,0,0,0,0;
+ setarray @choice$, "","","","","","";
+
+ @C_steak = 676;
+ @C_chickenleg = 562;
+ @C_redapple = 535;
+ @C_greenapple = 719;
+ @C_beer = 539;
+
+ // counter of available answers
+ @choices_nr = 0;
+
+ if (countitem("Steak") == 0)
+ goto L_Nosteaks;
+ @choice_idx[@choices_nr] = @C_steak;
+ @choice$[@choices_nr] = "Offer him a steak.";
+ @choices_nr = @choices_nr + 1;
+ goto L_Nosteaks;
+
+L_Nosteaks:
+ if (countitem("ChickenLeg") == 0)
+ goto L_Nochickenleg;
+ @choice_idx[@choices_nr] = @C_chickenleg;
+ @choice$[@choices_nr] = "Offer him a chicken leg.";
+ @choices_nr = @choices_nr + 1;
+ goto L_Nochickenleg;
+
+L_Nochickenleg:
+ if (countitem("RedApple") == 0)
+ goto L_Noredapple;
+ @choice_idx[@choices_nr] = @C_redapple;
+ @choice$[@choices_nr] = "Offer him a red apple.";
+ @choices_nr = @choices_nr + 1;
+ goto L_Noredapple;
+
+L_Noredapple:
+ if (countitem("GreenApple") == 0)
+ goto L_Nogreenapple;
+ @choice_idx[@choices_nr] = @C_greenapple;
+ @choice$[@choices_nr] = "Offer him a green apple.";
+ @choices_nr = @choices_nr + 1;
+ goto L_Nogreenapple;
+
+L_Nogreenapple:
+ if (countitem("Beer") == 0)
+ goto L_NoBeer;
+ @choice_idx[@choices_nr] = @C_beer;
+ @choice$[@choices_nr] = "Offer him a beer.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoBeer;
+
+L_NoBeer:
+ @choice_idx[@choices_nr] = @C_nevermind;
+ @choice$[@choices_nr] = "Leave";
+
+ menu
+ @choice$[0],L_MenuItems,
+ @choice$[1],L_MenuItems,
+ @choice$[2],L_MenuItems,
+ @choice$[3],L_MenuItems,
+ @choice$[4],L_MenuItems,
+ @choice$[5],L_MenuItems,
+ @choice$[6],L_MenuItems,
+ @choice$[7],L_MenuItems,
+ @choice$[8],L_MenuItems,
+ @choice$[9],L_MenuItems,
+ @choice$[10],L_MenuItems;
+
+L_MenuItems:
+ @choose = @menu - 1;
+ if (@choice_idx[@choose] == 0)
+ goto L_Close;
+ if ((countitem("Steak") != 0) && (@choice_idx[@choose] == @C_steak))
+ goto L_RmItem;
+ if ((countitem("ChickenLeg") != 0) && (@choice_idx[@choose] == @C_chickenleg))
+ goto L_RmItem;
+ if ((countitem("RedApple") != 0) && (@choice_idx[@choose] == @C_redapple))
+ goto L_RmItem;
+ if ((countitem("GreenApple") != 0) && (@choice_idx[@choose] == @C_greenapple))
+ goto L_RmItem;
+ if ((countitem("Beer") != 0) && (@choice_idx[@choose] == @C_beer))
+ goto L_RmItem;
+
+ // fallthrough only when player remove the items while in menu, trying to cheat
+ // the quest will need to be started again
+ mes "\"What you are offering, you do not have. Do not try to betray me. Come back when you have better morals.\"";
+ close;
+
+L_RmItem:
+ delitem @choice_idx[@choose], 1;
+ return;
+*/
+L_Close:
+ close;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
+
+017-3,80,32,0 script Dimonds Cove Story NPC_NO_SPRITE,{
+ mesn l("The Story of Dimonds Cove");
+ next;
+ mes l("One day Dimond D. Stone dreamed of her own restaurant.");
+ mes l("Dimond sold her food alone in this spot for some time,");
+ mes l("longing for the day she would have a building.");
+ mes l("She met an adventurer named Merlin outside of the");
+ mes l("desert mines one day.");
+ next;
+ mes l("They became friends and Dimond told Merlin about her idea.");
+ mes l("Merlin was a accomplished carpenter and wanted to make a new");
+ mes l("place in the world. He told Dimond that he would make her");
+ mes l("restaurant for her. He gathered the tools and after much");
+ mes l("hard work, Dimonds Cove was built.");
+ next;
+ mes l("At January 2008 - Construction of Dimonds Cove.");
+ close;
+
+OnInit:
+ .sex=G_OTHER;
+ .distance=3;
+ end;
+}
+
+/*
+017-3,71,30,0 script Inn NPC400,{
+ mes "Welcome to the Dimonds Cove Inn";
+ mes "Rooms are 200 gp a night.";
+ mes "Plese check in with Basil.";
+ close;
+}
+
+017-3,24,27,0 shop Bartender NPC112,539:87,567:250,568:250
+
+017-3,32,34,0 shop Waitress NPC139,519:50,533:55,534:45,562:125,676:100
+
+017-3,85,41,0 shop Blacksmith NPC146,545:5000,529:2,603:1000
+
+017-3,65,41,0 shop General Store#dimond NPC137,586:500,524:800,544:2000,632:500,528:500,735:500
+*/
+
+017-3,75,68,0 script Basil NPC_TOMBOY,{
+ if (!is_night())
+ goto L_Day;
+ mesn;
+ mesq l("For only 100 GP, you can sleep on the beds of the Land Of Fire.");
+ if (Zeny < 100)
+ close;
+ next;
+ mesn;
+ mesq l("The nanorob-- err, the *magic* will seal all your wounds. You trust Basil, right?");
+ next;
+ select
+ rif(Zeny > 100, l("Yes, please, book me a bed.")),
+ l("Uh... I *just* remembered I have something else to do!");
+ if (@menu == 2)
+ close;
+ Zeny=Zeny-100;
+ recovery();
+ if (rand(1,2) == 1)
+ sc_start SC_POISON, 60000, 0, 10000;
+ else
+ sc_start SC_ATTHASTE_POTION1, 60000, 5;
+
+ close;
+
+L_Day:
+ mesn;
+ mesq l("You can't sleep here during daytime!");
+ close;
+
+OnInit:
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
diff --git a/npc/017-3/doug.txt b/npc/017-3/doug.txt
new file mode 100644
index 000000000..4a38f7838
--- /dev/null
+++ b/npc/017-3/doug.txt
@@ -0,0 +1,45 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Permanently repeatable quest, without any special limit
+
+017-3,68,87,0 script Doug NPC_PLAYER,{
+ mesn;
+ mesq l("This room is too dark. I want to brighten it up.");
+ next;
+ .@price=*getiteminfo(CaveSnakeLamp, ITEMINFO_SELLPRICE)*11/10)*5;
+ mesn;
+ mesq l("I am willing to pay @@ GP for each 5 @@ you bring me!", .@price, getitemlink(CaveSnakeLamp));
+ next;
+ select
+ rif(countitem(CaveSnakeLamp >= 5), l("Here they are!")),
+ l("Not now...");
+ mes "";
+ if (@menu == 1) {
+ delitem CaveSnakeLamp, 5;
+ Zeny=Zeny+.@price;
+ getexp .@price, 5;
+ mesn;
+ mesq l("Many, many thanks!");
+ }
+ next;
+ mesn;
+ mesq l("Too bad these lamps wear off after a while... I am making stocks of them now!");
+ close;
+
+OnInit:
+ .@npcId = getnpcid(0, .name$);
+ setunitdata(.@npcId, UDT_HEADTOP, FancyHat);
+ setunitdata(.@npcId, UDT_HEADMIDDLE, CreasedShirt);
+ setunitdata(.@npcId, UDT_HEADBOTTOM, NPCEyes);
+ setunitdata(.@npcId, UDT_WEAPON, CandorBoots); // Boots
+ setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
+ setunitdata(.@npcId, UDT_HAIRCOLOR, 4);
+
+ .sex=G_MALE;
+ .distance=5;
+ end;
+}
+
diff --git a/npc/017-3/loratay.txt b/npc/017-3/loratay.txt
new file mode 100644
index 000000000..b0ff7573a
--- /dev/null
+++ b/npc/017-3/loratay.txt
@@ -0,0 +1,1174 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// TODO
+
+017-3,85,85,0 script Lora Tay NPC_GLASS_OLD_LADY,{
+ mesn;
+ mesq l("Don't interrupt me, I'm busy.");
+ close;
+
+ /*
+ set @ROBE_COCOONS_NR, 150; // must be multiple of ten
+ @ROBE_ZENY = 10000;
+ set @ROBE_SHEETS_NR, 6; // number of silk sheets required for the silk robe. Must be less than 10.
+ set @ROBE_SHEETS_ZENY, 6000; // price of the silk robe when bringing silk sheets.
+ set @Robe_with_sheets, 0; // will be set to 1 if silk robe is made with sheets
+ @FINEDRESS_COCOONS = 180;
+ @SORCERER_ROBE_SEW_ZENY = 25000;
+ @SORCERER_ROBE_NUM_COTTON_CLOTH = 2;
+ setarray @item_colors$, "red", "green", "dark blue", "yellow", "light blue", "pink", "black", "orange", "purple", "dark green", "white";
+
+ if (@loratay_asking_robe == 1) goto L_ExamineSorcererRobe;
+ if (QUEST_WG_state == 10) goto L_agostine_menu;
+ if (QUEST_WG_state == 11 || QUEST_WG_state == 12) goto L_regular_intro;
+ if (QUEST_WG_state == 13) goto L_proposal_intro;
+ if (QUEST_WG_state == 14) goto L_proposal_show_materials;
+ if (QUEST_WG_state == 15) goto L_proposal_search_items;
+ if (QUEST_WG_state == 16) goto L_proposal_retrieve_design;
+ if (QUEST_WG_state == 17) goto L_proposal_bringing_design;
+ if (QUEST_WG_state == 18) goto L_proposal_wait_dress_finished;
+ if (QUEST_WG_state == 19) goto L_proposal_dress_finished;
+ if (QUEST_WG_state >= 20 && QUEST_WG_state < 23) goto L_proposal_deliver_dress;
+ if (QUEST_WG_state >= 23) goto L_regular_intro;
+
+ @t = rand(3);
+ if (@t == 0) goto L_Intro_0;
+ if (@t == 1) goto L_Intro_1;
+
+ mes "You see a middle-aged woman furiously sewing away at what appears to be a very expensive dress. Her fingers are moving so nimbly that you find it near-impossible to follow the needle.";
+ goto L_Intro_over;
+
+L_Intro_0:
+ mes "You notice a middle-aged woman carefully drawing lines on a large sheet of cotton.";
+ goto L_Intro_over;
+
+L_Intro_1:
+ mes "You see a middle-aged woman cautiously but surprisingly swiftly cutting out shapes from a huge cotton sheet. The scissors glide along the cloth as if it were butter, never leaving the premarked lines.";
+ goto L_Intro_over;
+
+L_Intro_over:
+ next;
+ mes "She suddenly stops and looks up.";
+ next;
+ mes "\"Now who are you, and what are you doing here?\"";
+ mes "She squints, pushes her thick spectacles up the bridge of her nose and eyes you suspiciously.";
+ next;
+
+ @agostine_msg0$ = "";
+ @agostine_msg1$ = "";
+
+ if (QUEST_WG_state >= 1)
+ @agostine_msg0$ = "Do you know Agostine?";
+ if ((QUEST_WG_state >= 9) && (countitem("FurBoots")))
+ @agostine_msg1$ = "Can you make fur boots, like Agostine?";
+
+ menu
+ "Hello! My name is " + strcharinfo(0) + ".", L_hello_0,
+ "Hello; are you a tailor?", L_hello_1,
+ "Can you make something for me?", L_hello_2,
+ @agostine_msg0$, L_agostine_0,
+ @agostine_msg1$, L_agostine_1;
+
+L_hello_0:
+ mes "She raises an eyebrow.";
+ mes "\"That,\", she notes dryly, \"is hardly my fault. And now I would greatly appreciate it if you were to get out of here and leave me to my work!\"";
+ close;
+
+L_hello_1:
+ mes "She frowns.";
+ mes "\"No, I am an accupuncturist, I just happen to practice on cloth! Get out of here with your silly questions!\"";
+ close;
+
+L_hello_2:
+ mes "She glares at you indignantly.";
+ mes "\"Do you even know whom you are talking to? I am Lora Tay, greatest of the seven seamstresses of the South!\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"I do not work for petty peasants or arrogant adventurers. Get out of my sight!\"";
+ mes "She waves you away and returns to her work.";
+ close;
+
+L_agostine_0:
+ if (QUEST_WG_state < 1)
+ close;
+ mes "She shoots an incensed glare at you.";
+ mes "\"Ah, Agostine! The 'legendary tailor'! Now who has not heard of him, been inspired by him! Such charisma! Such popularity! Such unprecedented lack of talent!\"";
+ mes "You notice that she prononuces the 't's as if she were trying to slap someone.";
+ next;
+ mes "\"Please spare me your tales of this fool. He couldn't mend a sock without getting himself trapped inside!\"";
+ mes "She frowns and turns back to her work, clearly not interested in discussing the matter further.";
+ close;
+
+L_agostine_1:
+ if ((QUEST_WG_state < 9) || (countitem (655) == 0))
+ close;
+ mes "[Lora Tay the Seamstress]";
+ mes "She glares at your boots, her lips forming barely more than a thin line. Deep furrows form above her brows.";
+ mes "\"I can't believe it! He copied Illana's design but used fluffy fur in place of ice wolvern fur-- Fluffy fur! Of all things! Who would wear such an atrocity of fashion! Everyone knows that you need ice-white, not pale-white, to go with such leather!\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She looks at them more closely.";
+ mes "\"This insolent upstart! Even worse, he copied my very own double-backward cross-stitch pattern... I can't believe it!\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "Angry red spots begin to form on her cheeks.";
+ mes "\"Get those... things out of my sight before I forget myself!\"";
+ if (QUEST_WG_state == 9)
+ QUEST_WG_state = 10;
+ close;
+
+L_agostine_menu:
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress looks up at you from her work.";
+ mes "\"I do hope that you have not had any more dealings with this... this lumberjack of a tailor?\"";
+ next;
+ if (countitem("WinterGloves") > 0)
+ menu
+ "You mean Agostine?", L_agostine_3,
+ "Actually, he also made me gloves...", L_agostine_2,
+ "Why don't you like him?", L_agostine_4,
+ "No, none, really.", L_agostine_5;
+ menu
+ "You mean Agostine?", L_agostine_3,
+ "Why don't you like him?", L_agostine_4,
+ "No, none, really.", L_agostine_5;
+
+L_agostine_2:
+ if ((QUEST_WG_state < 9) || (countitem("WinterGloves") == 0))
+ close;
+ mes "[Lora Tay the Seamstress]";
+ mes "Lora inspects your gloves, shock apparent on her face.";
+ mes "\"Winter gloves? And he managed the join stitches without adding a single crease... no, that can't be the Agostine we were talking about...\"";
+ mes "Without asking, she takes your gloves and inspects them further.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Triple inverted crossbar... he stole another of my stitching patterns! Except... no, that couldn't hold... what kind of yarn...\"";
+ mes "Torn between excitement, worry, and latent disgust, she frantically turns the gloves from side to side, looking for obvious flaws, her face reddening.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No, it's perfect... Inconceivable! How could that little upstart... I don't believe it!\"";
+ mes "Breathing heavily with something that might be anger or confusion, she turns them inside out.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She slides her fingers over the now-exposed inside whilst the color of her face approaches that of an over-ripe tomato.";
+ mes "\"Almost perfectly smooth...\", she whispers.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She jumps up in a fit of sudden rage.";
+ mes "\"That's impossible! Where did he learn to sew like that! How did he cut the shapes so perfectly! When did he...";
+ mes "Suddenly, she breaks into a cough.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"*cough* ... can't possibly... *cough*...\"";
+ mes "Lora sinks back on her chair, trying to control her cough.";
+ next;
+ if (countitem("BottleOfWater"))
+ menu
+ "(sneak out of the room)", L_End,
+ "Are you alright?", L_Next,
+ "Here, have a bottle of water...", L_Give_water,
+ "Can I help you?", L_Next;
+
+ menu
+ "(sneak out of the room)", L_End,
+ "Are you alright?", L_Next,
+ "Can I help you?", L_Next;
+
+L_Next:
+ mes "[Lora Tay the Seamstress]";
+ mes "She holds out your gloves for you to pick up, then waves you out of the room. Fortunately, her cough seems to be slowly subsiding.";
+ close;
+
+L_agostine_3:
+ mes "[Lora Tay the Seamstress]";
+ mes "She frowns at you.";
+ mes "\"What other self-absorbed tailor-pretends with the sewing skill of a mouboo are there around? Stop wasting my time.\"";
+ close;
+
+L_agostine_4:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Is it not obvious? We are talking about someone so self-absorbed that he chose to ignore the advice of myself, greatest of the seven southern seamstresses! I cannot stand such arrogance.\"";
+ close;
+
+L_agostine_5:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Good for you. That arrogant good-for-nothing couldn't tell a piece of cotton from chain mail if he wiped his nose with it!\"";
+ close;
+
+L_No_Water:
+ mes "Checking more closely, you realize that you are out of water.";
+ mes "You apologise to Lora, though it fortunately seems that her cough is subsiding.";
+ mes "She waves you out of the room.";
+ close;
+
+L_regular_intro:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Ah, you again. Is there anything in particular you need?\"";
+ next;
+ if (QUEST_WG_state == 12)
+ goto L_Main_menu2;
+ goto L_Main_menu;
+
+L_Give_water:
+ if (countitem("BottleOfWater") == 0)
+ goto L_No_Water;
+ delitem "BottleOfWater", 1;
+ QUEST_WG_state = 11;
+
+ @xpval = 50000;
+
+ getexp @xpval, 0;
+ mes "[Lora Tay the Seamstress]";
+ mes "Lora grabs your water bottle and take a deep sip. Slowly, her head regains a more natural color. As she puts the bottle down, her cough seems to have subsided.";
+ mes "\"Thank you, dear; that was just the right thing at the right time.\"";
+ mes "[You gain " + @xpval + " experience points]";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She hands you the winter gloves again.";
+ mes "\"Now what happened I don't know, but this wasn't made by the Agostine I remember. But I shan't be made a fool out of by one such as him.\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"If HE can sew petty every-day items for ordinary peasants, then so can I. Very well, is there anything in particular that you need made? I shall show you how a proper seamstress operates!\"";
+ next;
+
+ if (QUEST_WG_state == 12)
+ goto L_Main_menu2;
+ goto L_Main_menu;
+
+L_Main_menu:
+ menu
+ "Can you trim something for me?", L_trim,
+ "Can you lengthen something for me?", L_lengthen,
+ "Can you make me a shirt?", L_Shirt,
+ "Can you make me a tank top?", L_tanktop,
+ "Can you make me a cape?", L_cape,
+ "Can you make fur boots for me?", L_Fur,
+ "Can you make winter gloves me?", L_Fur,
+ "Can you sew a robe for me?", L_robe,
+ "Can you make a desert hat for me?", L_desert_hat,
+ "Can you enhance a sorcerer robe with another line color?", L_sorcerer_robe_linecolor,
+ "Goodbye for now.", L_End;
+
+L_Fur:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"From what? Fluffy fur? I won't work with such lowly materials.\"";
+ next;
+ goto L_Main_menu;
+
+L_Main_menu2:
+ menu
+ "Can you trim something for me?", L_trim,
+ "Can you lengthen something for me?", L_lengthen,
+ "Can you make me a shirt?", L_Shirt,
+ "Can you make me a tank top?", L_tanktop,
+ "Can you make me a cape?", L_cape,
+ "Can you make fur boots for me?", L_Fur1,
+ "Can you make winter gloves me?", L_Fur1,
+ "Can you sew a robe for me?", L_robe,
+ "Can you make a desert hat for me?", L_desert_hat,
+ "Actually...I have a proposal for you...", L_agostine_proposal,
+ "Goodbye for now.", L_End;
+
+L_Fur1:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"From what? Fluffy fur? I won't work with such lowly materials.\"";
+ next;
+ goto L_Main_menu2;
+
+L_agostine_proposal:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"What kind of proposal are you asking of me?\"";
+ next;
+
+ menu
+ "I have talked to Agostine and he needs your help.", L_Next1,
+ "I forgot...", L_Main_menu2;
+
+L_Next1:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"That cheat! What could he possibly want from me?";
+ mes "We don't even have the same style in seaming. Is this a joke?\"";
+ next;
+
+ menu
+ "It's no joke. He needs your help in creating a new fashion!", L_Next2,
+ "Yeah you're right, he was probably joking.", L_End;
+
+L_Next2:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Well it depends what he wants from me.";
+ mes "Go see Agostine, ask him what he's planning and I will think about it.\"";
+
+ QUEST_WG_state = 13;
+
+ close;
+
+L_proposal_intro:
+ mes "Lora Tay seems lost in her thoughts... ";
+ menu
+ "Sorry to disturb you, but...", L_Main_menu,
+ "I better go talk to Agostine.", L_End;
+
+L_proposal_show_materials:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Did you talk to Agostine about his idea?\"";
+ next;
+ menu
+ "Yes, he explained he saw a dress in a dream and gave me these materials.", L_Next3,
+ "No, that guy is a total wacko.", L_End;
+
+L_Next3:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Wow these are such fine materials!";
+ mes "These are certainly not for just any ordinary clothes...";
+ mes "He must be thinking of something magnificent.\"";
+ next;
+
+ menu
+ "He said this garment would be his first dress creation and that he wanted it to be fabulous!", L_Next4;
+
+L_Next4:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Fine I will accept his offer...";
+ mes "But the materials he has given you need some sewing on the edges.\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"I will fix them, but I cannot use normal threading to fix these materials.";
+ mes "I will need a soft thin thread so I won't spoil the textures.\"";
+ next;
+ goto L_proposal_search_items;
+
+L_proposal_search_items:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Please bring me " + @FINEDRESS_COCOONS + " silk cocoons.";
+ mes "This should cover the materials needed, and will leave extra for sewing the pieces together later on.\"";
+ next;
+
+ menu
+ "I will go get them right away!", L_Next5,
+ "Here you are.", L_proposal_give_items,
+ @FINEDRESS_COCOONS+" silk cocoons for a dress? Find somebody else.", L_End;
+
+L_Next5:
+ QUEST_WG_state = 15;
+ close;
+
+L_proposal_not_enough_items:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"This is not funny. I need " + @FINEDRESS_COCOONS + " silk cocoons. No less.";
+ close;
+
+L_proposal_give_items:
+ if (countitem ("SilkCocoon") < @FINEDRESS_COCOONS)
+ goto L_proposal_not_enough_items;
+ delitem "SilkCocoon", @FINEDRESS_COCOONS;
+ QUEST_WG_state = 16;
+
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Great, now I can spin the silk threading and fix this mess made of these fine materials.";
+ mes "While I do this, you will need to go get the design drawings from Agostine...";
+ mes "Every tailor puts their designs on paper before they forget about it.\"";
+ next;
+ goto L_proposal_retrieve_design;
+
+L_proposal_retrieve_design:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"May you go retrieve the design from Agostine?\"";
+ next;
+ menu
+ "Certainly I'll be back soon!", L_End,
+ "Actually I want something else...", L_Main_menu;
+
+L_proposal_bringing_design:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Welcome back, did you get the drawings I requested?\"";
+ next;
+ menu
+ "Here they are!", L_Next6;
+
+L_Next6:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Wonderful, this dress design is magnificent!";
+ mes "I am done with the threading but I will now need to sew these materials together into the design.\"";
+ next;
+ QUEST_WG_state = 18;
+ goto L_proposal_wait_dress_finished;
+
+L_proposal_wait_dress_finished:
+ // Sets @time_start to the current time
+ // if not set yet, or if the player logged off.
+ if (@time_start == 0) set @time_start, gettimetick(2);
+ if (gettimetick(2) - @time_start > 30)
+ goto L_proposal_dress_finished;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"It will take some time to have the dress finished.";
+ mes "Meanwhile, why don't you go take some air outside?\"";
+ close;
+
+L_proposal_dress_finished:
+ QUEST_WG_state = 19;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Well it was difficult seaming with such fragile materials.";
+ mes "But I have done it. The design is finished except for one part of it.\"";
+ next;
+
+ menu
+ "Wow it looks great, but what's missing?", L_Next7;
+
+L_Next7:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Well there are white flare designs on the bottom of the dress.";
+ mes "I'm not great with fine cloth design so this might be something Agostine must do on his own.";
+ next;
+
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
+ next;
+
+ menu
+ "Okay, can't wait to see the finished product! Thanks for your help!", L_Next8;
+
+L_Next8:
+ QUEST_WG_state = 20;
+ close;
+
+L_proposal_deliver_dress:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Please take the unfinished dress to him so he may finish the edges with the cloth.\"";
+ menu
+ "I'm on my way.", L_End,
+ "I have a request...", L_Main_menu;
+
+L_desert_hat:
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress sighs.";
+ mes "\"One of these days it would be nice to have an actual challenge... yes, of course I can make a desert hat. A Cotton Headband, three pieces of cotton cloth. Hmm. And let's add 300 GP to that.\"";
+ next;
+ @default_choice$ = "Never mind.";
+ setarray @items, 724, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149;
+ setarray @item_names$, "Here is a Cotton Headband.", "Here is a Red Cotton Headband.", "Here is a Green Cotton Headband.", "Here is a Dark Blue Cotton Headband.", "Here is a Yellow Cotton Headband.", "Here is a Light Blue Cotton Headband.", "Here is a Pink Cotton Headband.", "Here is a Black Cotton Headband.", "Here is an Orange Cotton Headband.", "Here is a Puple Cotton Headband.", "Here is a Dark Green Cotton Headband.";
+ @items_nr = 11;
+
+ callsub S_pick_one_of_many_items;
+ if (@item == 0)
+ goto L_Main_menu;
+ if (@item == 724)
+ @genitem = 723;
+ if (@item != 724)
+ @genitem = @item - 10;
+ if (countitem(@item) < 1)
+ goto L_desert_hat_noheadband;
+ if (countitem("CottonCloth") < 3)
+ goto L_desert_hat_nocotton;
+ if (Zeny < 300)
+ goto L_desert_hat_nogp;
+ delitem @item, 1;
+ delitem "CottonCloth", 3;
+ Zeny = Zeny - 300;
+ getitem @genitem, 1;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Now then, this should only take a minute.\"";
+ mes "The seamstress folds your cotton cloth in a complicated fashion, wraps the resulting bundle into and out of the headband, and finally sews together several loose ends.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "The result resembles a huge knot.";
+ mes "Lora picks two ends and pulls, hard-- to your amazement, the knot unfolds, yielding a Desert Hat.";
+ mes "\"Here you are.\"";
+ next;
+ goto L_Main_menu;
+
+L_desert_hat_nocotton:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"You're asking me to make a desert hat without enough cloth? Here, have your headband back-- see, that's how much I can do without cloth! And since I'm generous today, you can even keep your GP...\"";
+ next;
+ goto L_Main_menu;
+
+L_desert_hat_nogp:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No, no, no. 300 GP. That's not that much, I've been told. I can't just work for free, now can I?\"";
+ next;
+ goto L_Main_menu;
+
+L_desert_hat_noheadband:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Now that is odd. Where did your headband vanish to? Well, I'm not going to make you something as silly as a headband, so get one from elsewhere.\"";
+ next;
+ goto L_Main_menu;
+
+L_trim:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Trimming... you mean that you can't do that yourself? Well, alright... I suppose I should charge 100 GP and do it.\"";
+ mes "\"Alright. What is it that you want trimmed?\"";
+ next;
+
+ @default_choice$ = "Never mind.";
+ setarray @items, 1202, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 688, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 632, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 648, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189;
+ setarray @item_names$, "Cotton Shirt", "Red Cotton Shirt", "Green Cotton Shirt", "Dark Blue Cotton Shirt", "Yellow Cotton Shirt", "Light Blue Cotton Shirt", "Pink Cotton Shirt", "Black Cotton Shirt", "Orange Cotton Shirt", "Purple Cotton Shirt", "Dark Green Cotton Shirt", "Tank Top", "Red Tank Top", "Green Tank Top", "Dark Blue Tank Top", "Yellow Tank Top", "Light Blue Tank Top", "Pink Tank Top", "Black Tank Top", "Orange Tank Top", "Purple Tank Top", "Dark Green Tank Top", "Cotton Skirt", "Red Cotton Skirt", "Green Cotton Skirt", "Dark Blue Cotton Skirt", "Yellow Cotton Skirt", "Light Blue Cotton Skirt", "Pink Cotton Skirt", "Black Cotton Skirt", "Orange Cotton Skirt", "Purple Cotton Skirt", "Dark Green Cotton Skirt", "Cotton Trousers", "Red Cotton Trousers", "Green Cotton Trousers", "Dark Blue Cotton Trousers", "Yellow Cotton Trousers", "Light Blue Cotton Trousers", "Pink Cotton Trousers", "Black Cotton Trousers", "Orange Cotton Trousers", "Purple Cotton Trousers", "Dark Green Cotton Trousers";
+ @items_nr = 44;
+ callsub S_pick_one_of_many_items;
+ if (@item == 0)
+ goto L_Main_menu;
+ @delitem = @item;
+ @genitem = 0;
+ if (@item == 1202)
+ @genitem = 688;
+ if (@item == 688)
+ @genitem = 689;
+ if (@item == 632)
+ @genitem = 771;
+ if (@item == 648)
+ @genitem = 586;
+ if (@item >= 2090 && @item <= 2099)
+ @genitem = @item + 30;
+ if (@item >= 2050 && @item <= 2059)
+ @genitem = @item + 40;
+ if (@item >= 2100 && @item <= 2109)
+ @genitem = @item + 70;
+ if (@item >= 2180 && @item <= 2189)
+ @genitem = @item - 70;
+ if (@genitem == 0)
+ goto L_trim_impossible;
+ if (Zeny < 100)
+ goto L_trim_noZeny;
+ if (countitem(@delitem) < 1)
+ goto L_Main_menu;
+
+ delitem @delitem, 1;
+ getitem @genitem, 1;
+ Zeny = Zeny - 100;
+ mes "[Lora Tay the Seamstress]";
+ mes "";
+ mes "\"There you are, dear.\"";
+ next;
+ goto L_Main_menu;
+
+L_trim_impossible:
+ mes "[Lora Tay the Seamstress]"; // INTERNAL ERROR
+ mes "\"I don't really want to shorten this any more.\"";
+ next;
+ goto L_Main_menu;
+
+L_trim_noZeny:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Not enough GP? Well, just do it yourself-- trimming really is trivial.\"";
+ next;
+ goto L_Main_menu;
+
+L_lengthen:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Naturally, I will need a piece of Cotton Cloth to sew onto it; I must also charge you some... hmm... does 500 GP sound reasonable? Yes, I think I shall charge that.\"";
+ mes "\"Now, let me see. What is it that you want lengthened?\"";
+ next;
+
+ @default_choice$ = "Never mind.";
+ setarray @items, 688, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 689, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 771, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 586, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119;
+ setarray @item_names$, "Tank Top", "Red Tank Top", "Green Tank Top", "Dark Blue Tank Top", "Yellow Tank Top", "Light Blue Tank Top", "Pink Tank Top", "Black Tank Top", "Orange Tank Top", "Purple Tank Top", "Dark Green Tank Top", "Short Tank Top", "Red Short Tank Top", "Green Short Tank Top", "Dark Blue Short Tank Top", "Yellow Short Tank Top", "Light Blue Short Tank Top", "Pink Short Tank Top", "Black Short Tank Top", "Orange Short Tank Top", "Purple Short Tank Top", "Dark Green Short Tank Top", "Miniskirt", "Red Miniskirt", "Green Miniskirt", "Dark Blue Miniskirt", "Yellow Miniskirt", "Light Blue Miniskirt", "Pink Miniskirt", "Black Miniskirt", "Orange Miniskirt", "Purple Miniskirt", "Dark Green Miniskirt", "Cotton Shorts", "Red Cotton Shorts", "Green Cotton Shorts", "Dark Blue Cotton Shorts", "Yellow Cotton Shorts", "Light Blue Cotton Shorts", "Pink Cotton Shorts", "Black Cotton Shorts", "Orange Cotton Shorts", "Purple Cotton Shorts", "Dark Green Cotton Shorts";
+
+ @items_nr = 44;
+ callsub S_pick_one_of_many_items;
+ if (@item == 0)
+ goto L_Main_menu;
+
+ @delitem = @item;
+ @genitem = 0;
+ if (@item == 688)
+ @genitem = 1202;
+ if (@item == 689)
+ @genitem = 688;
+ if (@item == 771)
+ @genitem = 632;
+ if (@item == 586)
+ @genitem = 648;
+ if (@item >= 2120 && @item <= 2129)
+ @genitem = @item - 30;
+ if (@item >= 2090 && @item <= 2099)
+ @genitem = @item - 40;
+ if (@item >= 2170 && @item <= 2179)
+ @genitem = @item - 70;
+ if (@item >= 2110 && @item <= 2119)
+ @genitem = @item + 70;
+ if (@genitem == 0)
+ goto L_lengthen_impossible;
+ if (Zeny < 500)
+ goto L_lengthen_noZeny;
+ if (countitem ("CottonCloth") < 1)
+ goto L_lengthen_nocotton;
+ if (countitem(@delitem) < 1)
+ goto L_Main_menu;
+
+ delitem @delitem, 1;
+ delitem "CottonCloth", 1;
+ getitem @genitem, 1;
+ Zeny = Zeny - 500;
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress cuts your piece of cotton cloth into stripes and sews them on. Using some odd liquid, she flattens the seams and borders.";
+ if (@delitem > 2000) // dyed
+ mes "She then applies another liquid-- smelling strangely of fermented apples-- to the result, wraps it up, and wrings it tightly. As she unwraps it, you observe to your amazement that the dye has spread to the newly attached area.";
+ mes "\"There you are, dear.\"";
+ next;
+ goto L_Main_menu;
+
+L_lengthen_nocotton:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Who do you think I am? The cotton fairy? Get yourself some cloth before you ask me to sew it on.\"";
+ next;
+ goto L_Main_menu;
+
+L_lengthen_noZeny:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No gold, no sewing.\"";
+ next;
+ goto L_Main_menu;
+
+L_lengthen_impossible:
+ mes "[Lora Tay the Seamstress]"; // INTERNAL ERROR
+ mes "\"I really can't lengthen that any more.\"";
+ next;
+ goto L_Main_menu;
+
+L_Shirt:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Oh, how silly. You can buy those everywhere. Please don't bore me with such trifles, dear.\"";
+ next;
+ goto L_Main_menu;
+
+L_tanktop:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"A tank top? Well, hardly a challenge, but I suppose I could do that. Please get me some cloth-- plain cotton will do-- and, let's see, how does 100,000 GP for my efforts sound?\"";
+ mes "\"Wait, I keep forgetting, you are just an adventurer... let's make that 1000 GP, then.\"";
+ next;
+ goto L_tanktop_menu;
+
+L_tanktop_menu:
+ menu
+ "I think I would like something else.", L_Main_menu,
+ "A tank top, please (6 Cotton Cloth)", L_tanktop_long,
+ "A short tank top, please (5 Cotton Cloth)", L_tanktop_short,
+ "Goodbye for now.", L_End;
+
+L_tanktop_short:
+ if (countitem ("CottonCloth") < 5)
+ goto L_tanktop_ic;
+ if (Zeny < 1000)
+ goto L_tanktop_ins_Z;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("CottonCloth") > 5)
+ goto L_TooMany;
+ Zeny = Zeny - 1000;
+ delitem "CottonCloth", 5;
+ getitem "ShortTankTop", 1;
+ mes "[Lora Tay the Seamstress]";
+ mes "You watch as Lora sews the pieces of cloth together, then flattens the seams and ends with some odd liquid.";
+ mes "Amazingly, the result looks like a single piece of cloth.";
+ mes "After little more than a few elegant cuts and folds, your tank top is ready.";
+ mes "\"Oh dear, it seems that I am done already. Do you need anything else?\"";
+ next;
+ goto L_tanktop_menu;
+
+L_tanktop_long:
+ if (countitem ("CottonCloth") < 6)
+ goto L_tanktop_ic;
+ if (Zeny < 1000)
+ goto L_tanktop_ins_Z;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("CottonCloth") > 6)
+ goto L_TooMany;
+ Zeny = Zeny - 1000;
+ delitem "CottonCloth", 6;
+ getitem "TankTop", 1;
+ mes "[Lora Tay the Seamstress]";
+ mes "After combining your pieces of cloth into one-- miraculously making the seams and stitches vanish-- the seamstress cuts out all that doesn't belong into a tank top, then folds and stabilises the edges with additional seam lines.";
+ mes "\"There you are. Don't worry, I have trimmed it to match your size perfectly.\"";
+ next;
+ goto L_tanktop_menu;
+
+L_tanktop_ic:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No, no, no, count again-- how much Cotton Cloth did I say I needed? That's not enough.\"";
+ next;
+ goto L_tanktop_menu;
+
+L_tanktop_ins_Z:
+ mes "[Lora Tay the Seamstress]";
+ mes "As you note that you don't have enough GP on you, Lora rolls her eyes.";
+ mes "\"I don't work for free, you know. I already gave you a discounted peasant price.\"";
+ next;
+ goto L_Main_menu;
+
+L_cape:
+ if (countitem("GoldenWarlordPlate") > 0) goto L_cape2;
+ mes "[Lora Tay the Seamstress]";
+ mes "She shakes her head.";
+ mes "\"No capes. You're an adventurer, right? Do you want to get caught by a closing portcullis? Or strangled when your cape gets tangled in a tree? Or brought down by a mushroom stomping on your cape while you're trying to run away? No capes.\"";
+ next;
+ goto L_Main_menu;
+
+L_cape2:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Well, it looks like you have some pretty golden armor, I can add a cape if you wish....\"";
+ next;
+ goto L_capemenu;
+
+L_capemenu:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"That will be 20 cotton cloth, 5 iron ingots, and 240,000gp.\"";
+ menu
+ "That sounds awesome! Yes!", L_capeyes,
+ "What a ripoff!?", L_End;
+
+L_capeyes:
+ if (countitem("CottonCloth") < 20) goto L_Missing;
+ if (countitem("IronIngot") < 5) goto L_Missing;
+ if (countitem("GoldenWarlordPlate") < 1) goto L_Missing;
+ if (Zeny < 240000) goto L_NotEnoughMoney;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("Cottoncloth") > 5 && countitem("Ironingot") < 5) goto L_TooMany;
+ delitem "CottonCloth", 20;
+ delitem "IronIngot", 5;
+ delitem "GoldenWarlordPlate", 1;
+ Zeny = Zeny - 240000;
+ getitem "WhiteSaviorArmor", 1;
+ mes "[Lora Tay]";
+ mes "\"There you go!\"";
+ next;
+ goto L_End;
+
+L_NotEnoughMoney:
+ mes "[Lora Tay]";
+ mes "\"I'm not doing this work for charity! Find your money or stop bothering me.\"";
+ next;
+ goto L_Main_menu;
+
+L_Missing:
+ mes "[Lora Tay]";
+ mes "\"You seem to be missing some things.\"";
+ next;
+ goto L_Main_menu;
+
+L_robe:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"A robe? Well, as long as you're not asking me to make it out of cotton...\"";
+ next;
+ if (countitem("SilkCocoon")== 0 && countitem("SilkSheet")== 0)
+ goto L_robe_nosilk;
+ goto L_robe_menu;
+
+L_robe_menu:
+ menu
+ "Here, I have some silk cocoons!", L_Next9,
+ "Here, I have some silk sheets!", L_robe_sheets,
+ "Where can I find silk?", L_where_silk,
+ "How much silk do you need?", L_how_much_silk,
+ "Oh, never mind.", L_Main_menu;
+
+L_Next9:
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress stares at you as if you had gone out of your mind.";
+ mes "\"And what precisely do you expect me to do with Silk Cocoons? String them together in some baubly chain? Somehow remove the thread and spin and weave it so that some random person can have their robe?\"";
+ next;
+ menu
+ "Will you trade cocoons for sheets?", L_Next10,
+ "Never mind.", L_Main_menu;
+
+L_Next10:
+ mes "[Lora Tay the Seamstress]";
+ mes "Lora frowns.";
+ mes "\"It's not all that easy to get properly processed silk around here. Easier for me than for you, I admit...\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She sighs.";
+ mes "\"All right, very well then. I have enough spare silk sheets right now, but you pay the silk processing for your cocoons.\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Let's see... " + @ROBE_COCOONS_NR + " silk cocoons and " + @ROBE_ZENY + " GP should just about cover that.\"";
+ next;
+ menu
+ "I'm not interested.", L_Main_menu,
+ "Very well then, here you are.", L_Next11;
+
+L_Next11:
+ if (countitem("SilkCocoon") < @ROBE_COCOONS_NR)
+ goto L_robe_missing_cocoons;
+ if (Zeny < @ROBE_ZENY)
+ goto L_robe_missing_Zeny;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("SilkCocoon") > @ROBE_COCOONS_NR)
+ goto L_TooMany;
+ Zeny = Zeny - @ROBE_ZENY;
+ delitem "SilkCocoon", @ROBE_COCOONS_NR;
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress puts your cocoons and GP away, takes your measurements and pulls out several silk sheets. She asks you to stretch out your arms, then pins the silk sheets in place all over your body.";
+ next;
+ goto L_Get_robe;
+
+L_robe_sheets:
+ @Robe_with_sheets = 1;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Let's see... " + @ROBE_SHEETS_NR + " silk sheets and " + @ROBE_SHEETS_ZENY + " GP should just about cover that.\"";
+ next;
+ menu
+ "I'm not interested.", L_Main_menu,
+ "Very well then, here you are.", L_Next12;
+
+L_Next12:
+ if (countitem("SilkSheet") < @ROBE_SHEETS_NR)
+ goto L_robe_missing_sheets;
+ if (Zeny < @ROBE_SHEETS_ZENY)
+ goto L_robe_sheet_missing_Zeny;
+ getinventorylist;
+ if (@inventorylist_count == 100 && countitem("SilkSheet") > @ROBE_SHEETS_NR)
+ goto L_TooMany;
+ Zeny = Zeny - @ROBE_SHEETS_ZENY;
+ delitem "SilkSheet", @ROBE_SHEETS_NR;
+ mes "[Lora Tay the Seamstress]";
+ mes "The seamstress puts your GP away, takes your measurements and puts the silk sheets on the table. She asks you to stretch out your arms, then pins the silk sheets in place all over your body.";
+ next;
+ goto L_Get_robe;
+
+L_Get_robe:
+ mes "[Lora Tay the Seamstress]";
+ mes "She proceeds to make a number of mysterious marks on the sheets with a charcoal pen. Meanwhile, your arms are getting tired, but you're afraid to lower them-- she used a lot of pins to put everything into place, and you lost track of where they went...";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Splendid.\"";
+ mes "After removing the sheets (and pins!), she picks up a pair of scissors and plows through the cloth at her usual amazing pace, only stopping briefly to sew together parts here and there.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She then treats the seams with some odorless liquid, making them vanish completely. Finally she hands you the finished robe.";
+ getitem "SilkRobe", 1;
+ if (@Robe_with_sheets == 1)
+ goto L_robe_sheet_end;
+ mes "\"Here you are now, this will fit. And don't you dare tell anyone that I did this! I'm not about to start a silk cocoon collection!\"";
+ next;
+ goto L_Main_menu;
+
+L_robe_sheet_end:
+ mes "\"Here you are now, this will fit. Thank you for bringing the sheets. People are so lazy nowadays! \"";
+ next;
+ goto L_Main_menu;
+
+L_robe_missing_cocoons:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"" + @ROBE_COCOONS_NR + " cocoons is what I said, not " + countitem("SilkCocoon") + ".";
+ mes @ROBE_COCOONS_NR + " is " + (@ROBE_COCOONS_NR / 10) + " as many times as you have fingers, in case that helps.\"";
+ next;
+ goto L_Main_menu;
+
+L_robe_missing_Zeny:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No, no no. The way this works is that you give me the GP first and I give you the robe afterwards. You're " + (@ROBE_ZENY - Zeny) + " GP short, so come back when you can afford the robe!\"";
+ next;
+ goto L_Main_menu;
+
+L_robe_missing_sheets:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"" + @ROBE_SHEETS_NR + " silk sheets is what I said, not " + countitem("SilkSheet") + ".";
+ mes @ROBE_SHEETS_NR + " is " + (10-@ROBE_SHEETS_NR) + " less than you have fingers, in case that helps.\"";
+ next;
+ goto L_Main_menu;
+
+L_robe_sheet_missing_Zeny:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"No, no no. The way this works is that you give me the GP first and I give you the robe afterwards. You're " + (@ROBE_SHEETS_ZENY - Zeny) + " GP short, so come back when you can afford the robe!\"";
+ next;
+ goto L_Main_menu;
+
+L_where_silk:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Oh, Hetchel on the Tulimshar Marketplace can weave them for you.\"";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "She hesitates.";
+ mes "\"I didn't see her there the last time I visited, though. She may be visiting family. Tough luck.\"";
+ next;
+ goto L_robe_menu;
+
+L_how_much_silk:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Six sheets should do fine, if they're the usual double-elbow squares.\"";
+ next;
+ goto L_robe_menu;
+
+L_robe_nosilk:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"What is that? You don't have any silk? Well, you're out of luck, I would say. I shan't make one out of those cotton rags; you might as well be wearing an apple sack.\"";
+ next;
+ goto L_Main_menu;
+
+L_End:
+ @ROBE_COCOONS_NR = 0;
+ @ROBE_ZENY = 0;
+ @ROBE_SHEETS_NR = 0;
+ @ROBE_SHEETS_ZENY = 0;
+ @Robe_with_sheets = 0;
+ close;
+
+S_pick_one_of_many_items:
+ @c = 0;
+ @i = 0;
+
+ setarray @choice_n$, "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "";
+ goto L_SUB_pick_choice_loop;
+
+L_SUB_pick_choice_loop:
+ if (@i >= @items_nr)
+ goto L_SUB_choice_init_done;
+ @current = @items[@i];
+ @current_name$ = @item_names$[@i];
+ @i = @i + 1;
+
+ if (countitem(@current) == 0)
+ goto L_SUB_pick_choice_loop;
+ @choice_v[@c] = @current;
+ @choice_n$[@c] = @current_name$;
+ @c = @c + 1;
+ goto L_SUB_pick_choice_loop;
+
+L_SUB_choice_init_done:
+ @choice_v[@c] = 0;
+ @choice_n$[@c] = @default_choice$;
+ @c = @c + 1;
+
+ if (@c < 10)
+ menu
+ @choice_n$[0], L_SUB_choice_join,
+ @choice_n$[1], L_SUB_choice_join,
+ @choice_n$[2], L_SUB_choice_join,
+ @choice_n$[3], L_SUB_choice_join,
+ @choice_n$[4], L_SUB_choice_join,
+ @choice_n$[5], L_SUB_choice_join,
+ @choice_n$[6], L_SUB_choice_join,
+ @choice_n$[7], L_SUB_choice_join,
+ @choice_n$[8], L_SUB_choice_join,
+ @choice_n$[9], L_SUB_choice_join;
+
+ if (@c < 20)
+ menu
+ @choice_n$[0], L_SUB_choice_join,
+ @choice_n$[1], L_SUB_choice_join,
+ @choice_n$[2], L_SUB_choice_join,
+ @choice_n$[3], L_SUB_choice_join,
+ @choice_n$[4], L_SUB_choice_join,
+ @choice_n$[5], L_SUB_choice_join,
+ @choice_n$[6], L_SUB_choice_join,
+ @choice_n$[7], L_SUB_choice_join,
+ @choice_n$[8], L_SUB_choice_join,
+ @choice_n$[9], L_SUB_choice_join,
+ @choice_n$[10], L_SUB_choice_join,
+ @choice_n$[11], L_SUB_choice_join,
+ @choice_n$[12], L_SUB_choice_join,
+ @choice_n$[13], L_SUB_choice_join,
+ @choice_n$[14], L_SUB_choice_join,
+ @choice_n$[15], L_SUB_choice_join,
+ @choice_n$[16], L_SUB_choice_join,
+ @choice_n$[17], L_SUB_choice_join,
+ @choice_n$[18], L_SUB_choice_join,
+ @choice_n$[19], L_SUB_choice_join;
+
+ menu
+ @choice_n$[0], L_SUB_choice_join,
+ @choice_n$[1], L_SUB_choice_join,
+ @choice_n$[2], L_SUB_choice_join,
+ @choice_n$[3], L_SUB_choice_join,
+ @choice_n$[4], L_SUB_choice_join,
+ @choice_n$[5], L_SUB_choice_join,
+ @choice_n$[6], L_SUB_choice_join,
+ @choice_n$[7], L_SUB_choice_join,
+ @choice_n$[8], L_SUB_choice_join,
+ @choice_n$[9], L_SUB_choice_join,
+ @choice_n$[10], L_SUB_choice_join,
+ @choice_n$[11], L_SUB_choice_join,
+ @choice_n$[12], L_SUB_choice_join,
+ @choice_n$[13], L_SUB_choice_join,
+ @choice_n$[14], L_SUB_choice_join,
+ @choice_n$[15], L_SUB_choice_join,
+ @choice_n$[16], L_SUB_choice_join,
+ @choice_n$[17], L_SUB_choice_join,
+ @choice_n$[18], L_SUB_choice_join,
+ @choice_n$[19], L_SUB_choice_join,
+ @choice_n$[20], L_SUB_choice_join,
+ @choice_n$[21], L_SUB_choice_join,
+ @choice_n$[22], L_SUB_choice_join,
+ @choice_n$[23], L_SUB_choice_join,
+ @choice_n$[24], L_SUB_choice_join,
+ @choice_n$[25], L_SUB_choice_join,
+ @choice_n$[26], L_SUB_choice_join,
+ @choice_n$[27], L_SUB_choice_join,
+ @choice_n$[28], L_SUB_choice_join,
+ @choice_n$[29], L_SUB_choice_join,
+ @choice_n$[30], L_SUB_choice_join,
+ @choice_n$[31], L_SUB_choice_join;
+
+L_SUB_choice_join:
+ @menu = @menu - 1;
+ @item = @choice_v[@menu];
+ if (@menu >= @c)
+ @item = 0;
+ return;
+
+L_TooMany:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"You don't have anywhere to put this. Come back when you have more room.\"";
+ close;
+
+L_sorcerer_robe_linecolor:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Hmm, this has a line sewed on it already. I don't see another way than remove it and sew a new one.";
+ mes "That is quite a difficult work... for a casual tailor of course. I'll do that in a heart beat.\"";
+ next;
+ mes "\"However, you can expect this will cost you a large fee. Let's say " + @SORCERER_ROBE_SEW_ZENY + " GP.";
+ mes "Also, I will need " + @SORCERER_ROBE_NUM_COTTON_CLOTH + " sheets of Cotton Cloth of the color you want.\"";
+ next;
+ mes "\"Ok. Now please wear the robe you want me to change.\"";
+ @loratay_asking_robe = 1;
+ close;
+
+L_ExamineSorcererRobe:
+ @loratay_asking_robe = 0;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Let's see...\"";
+ next;
+ @chest_equip_id = getequipid(equip_torso);
+ callsub S_Get_SorcererRobeColors;
+ mes "Lora Tay takes a closer look at what you are wearing.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Hmm. This " + @item_colors$[@current_linecolor] + " lined " + @item_colors$[@current_maincolor] + " sorcerer robe. I see. Is that ok?\"";
+ if (@current_maincolor == -1 || @current_linecolor == -1)
+ goto L_NotSorcererRobe;
+ menu
+ "Yes, that's fine. Take this one.", L_ChooseSorcererLineColor,
+ "No, I changed my mind.", L_CleanSorcererRobe;
+
+L_NotSorcererRobe:
+ mes "\"This isn't a Sorcerer Robe dear. Stop taking me for a fool.\"";
+ goto L_CleanSorcererRobe;
+
+L_ChooseSorcererLineColor:
+ // Unequip the robe, just to simulate Lora Tay really took it
+ unequipbyid(equip_torso);
+ mes "[Lora Tay the Seamstress]";
+ mes "\"And which Cotton Cloth color will you give me?\"";
+ menu
+ "A " + @item_colors$[0] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[1] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[2] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[3] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[4] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[5] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[6] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[7] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[8] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[9] + " one.", L_ItemMenus2,
+ "A " + @item_colors$[10] + " one.", L_ItemMenus2,
+ "Hum. I changed my mind. Later maybe.", L_End;
+
+L_ItemMenus2:
+ @chosen_color = @menu - 1;
+ @cotton_cloth_id = 2250 + @chosen_color;
+ // The White Cotton Cloth is in fact the undyed one.
+ if (@cotton_cloth_id == 2260)
+ @cotton_cloth_id = 660;
+ if (countitem(@cotton_cloth_id) < 2)
+ goto L_NoColoredCottonCloth;
+ if (@current_linecolor == @chosen_color)
+ goto L_SorcererRobe_SameColor;
+ callsub S_Get_NewSorcererRobeId;
+ // Should not happen since it has been checked the player submitted a sorcerer robe
+ if (@new_sorcerer_robe_id == 0)
+ goto L_End;
+
+ if (Zeny < @SORCERER_ROBE_SEW_ZENY)
+ goto L_SorcererRobe_NoZeny;
+ if (countitem(@chest_equip_id) == 0)
+ goto L_SorcererRobe_Vanished;
+ delitem @cotton_cloth_id, @SORCERER_ROBE_NUM_COTTON_CLOTH;
+ // Since we delete an unstackable item, we don't need to check
+ // for an available inventory slot.
+ delitem @chest_equip_id, 1;
+ Zeny = Zeny - @SORCERER_ROBE_SEW_ZENY;
+ getitem @new_sorcerer_robe_id, 1;
+ mes "Lora Tay adjusts her glasses and removes carefully the " + @item_colors$[@current_linecolor] + " string of the robe.";
+ mes "Then she grabs the " + @item_colors$[@chosen_color] + " cotton cloth, unfolds it and pins her needle in it.";
+ next;
+ mes "She begins to sew the new string onto the sorcerer robe.";
+ next;
+ mes "She regularly flips and flips again the robe, which starts to show her new color.";
+ next;
+ mes "After a few minutes you barely noticed, the robe seems to be ready.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"There you are dear. I have to say I made a perfect job... As always.";
+ mes "I hope you'll enjoy your new robe.\"";
+ goto L_CleanSorcererRobe;
+
+L_SorcererRobe_SameColor:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Are you blind? Your robe is already of this color dear!\"";
+ goto L_CleanSorcererRobe;
+
+L_SorcererRobe_Vanished:
+ mes "Lora Tay adjusts her glasses and looks around, as if something was missing.";
+ next;
+ mes "[Lora Tay the Seamstress]";
+ mes "\"Uh? Where is your sorcerer robe?\"";
+ goto L_CleanSorcererRobe;
+
+S_Get_NewSorcererRobeId:
+ if (@chosen_color == 0 && @current_maincolor == 10)
+ @new_sorcerer_robe_id = 798;
+ if (@chosen_color == 0 && @current_maincolor < 10)
+ @new_sorcerer_robe_id = 2220 + @current_maincolor;
+ if (@chosen_color > 0)
+ @new_sorcerer_robe_id = 5000 + @current_maincolor + (@chosen_color-1)*11;
+ return;
+
+L_NoColoredCottonCloth:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"You don't seem to own enough Cotton Cloth of this color. I need " + @SORCERER_ROBE_NUM_COTTON_CLOTH + " of them. Too bad.\"";
+ goto L_CleanSorcererRobe;
+
+L_SorcererRobe_NoZeny:
+ mes "[Lora Tay the Seamstress]";
+ mes "\"You don't seem to be able to afford my services, dear.\"";
+ goto L_CleanSorcererRobe;
+
+S_Get_SorcererRobeColors:
+ @current_maincolor = -1;
+ @current_linecolor = -1;
+ // Line color
+ if (@chest_equip_id == 798 || (@chest_equip_id >= 2220 && @chest_equip_id <= 2229))
+ @current_linecolor = 0;
+ if (@chest_equip_id >= 5000 && @chest_equip_id <= 5109)
+ @current_linecolor = 1 + (@chest_equip_id-5000)/11;
+ // Main color
+ if (@chest_equip_id == 798)
+ @current_maincolor = 10;
+ if (@chest_equip_id >= 2220 && @chest_equip_id <= 2229)
+ @current_maincolor = @chest_equip_id - (@chest_equip_id/10)*10;
+ if (@chest_equip_id >= 5000 && @chest_equip_id <= 5109)
+ @current_maincolor = @chest_equip_id - 5000 - (@current_linecolor-1)*11;
+ return;
+
+L_CleanSorcererRobe:
+ @current_maincolor = 0;
+ @current_linecolor = 0;
+ @chest_equip_id = 0;
+ @new_sorcerer_robe_id = 0;
+ @chosen_color = 0;
+ @cotton_cloth_id = 0;
+ close;
+
+ */
+
+OnInit:
+ .sex=G_FEMALE;
+ .distance=5;
+ end;
+}
diff --git a/npc/017-3/workers.txt b/npc/017-3/workers.txt
new file mode 100644
index 000000000..7a3046144
--- /dev/null
+++ b/npc/017-3/workers.txt
@@ -0,0 +1,19 @@
+// TMW2/LoF scripts.
+// Authors:
+// TMW-LoF Team
+// Jesusalva
+// Description:
+// Shady NPCs with questionable purposes.
+
+//010-2,23,70,0 script Josh NPC_TECH_EXPLORER,{
+017-3,23,70,0 script Jenny NPC_FEMALE_WORKER,{
+ mesn;
+ mesq l("We're busy here, so please don't bother us.");
+ close;
+}
+
+017-3,39,75,0 script Zack NPC_TECH_EXPLORER,{
+ mesn;
+ mesq l("Why are you here? This area is off-bounds!");
+ close;
+}
diff --git a/npc/017-4/_import.txt b/npc/017-4/_import.txt
index cd24b9ee3..9e1ccf256 100644
--- a/npc/017-4/_import.txt
+++ b/npc/017-4/_import.txt
@@ -1,2 +1,3 @@
// Map 017-4: Tech-User Forge
// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/017-4/_warps.txt",
diff --git a/npc/017-4/_warps.txt b/npc/017-4/_warps.txt
new file mode 100644
index 000000000..544720265
--- /dev/null
+++ b/npc/017-4/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 017-4: Tech-User Forge warps
+017-4,27,42,0 warp #017-4_27_42 0,0,017-1,150,88
+017-4,35,42,0 warp #017-4_35_42 0,0,017-1,155,88