summaryrefslogtreecommitdiff
path: root/npc/048-2
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2021-04-09 13:33:57 -0300
committerJesusaves <cpntb1@ymail.com>2021-04-09 13:33:57 -0300
commitcf18ce071c79ae37e14ea38943e0b1d88da70a7b (patch)
treef9159c9b60b3018300dd22ffba0d797bc5e828e5 /npc/048-2
parent8a4bf716002a017de77fe7df301ef8e4aaf00a2e (diff)
downloadserverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.gz
serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.bz2
serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.tar.xz
serverdata-cf18ce071c79ae37e14ea38943e0b1d88da70a7b.zip
Override
Diffstat (limited to 'npc/048-2')
-rw-r--r--npc/048-2/_import.txt26
-rw-r--r--npc/048-2/_warps.txt19
-rwxr-xr-xnpc/048-2/bluesageConfig.txt71
-rwxr-xr-xnpc/048-2/helperAccused.txt139
-rwxr-xr-xnpc/048-2/helperBookpages1.txt136
-rwxr-xr-xnpc/048-2/helperBookpages2.txt83
-rwxr-xr-xnpc/048-2/helperBookpages3.txt62
-rwxr-xr-xnpc/048-2/helperChief.txt117
-rwxr-xr-xnpc/048-2/helperCleaning1.txt98
-rwxr-xr-xnpc/048-2/helperCleaning2.txt67
-rwxr-xr-xnpc/048-2/helperCleaning3.txt71
-rwxr-xr-xnpc/048-2/helperCleaning4.txt62
-rwxr-xr-xnpc/048-2/helperCleaning5.txt64
-rwxr-xr-xnpc/048-2/helperJanitor.txt96
-rwxr-xr-xnpc/048-2/helperMInk.txt100
-rwxr-xr-xnpc/048-2/helperMReed.txt89
-rwxr-xr-xnpc/048-2/helperMSilk.txt84
-rwxr-xr-xnpc/048-2/helperMYetiClaw.txt91
-rwxr-xr-xnpc/048-2/helperResting1.txt63
-rwxr-xr-xnpc/048-2/helperResting2.txt64
-rwxr-xr-xnpc/048-2/mapflags.txt1
-rwxr-xr-xnpc/048-2/sageNikolai.txt281
-rwxr-xr-xnpc/048-2/slimes.txt603
-rwxr-xr-xnpc/048-2/traveler.txt7
-rwxr-xr-xnpc/048-2/visitors.txt36
25 files changed, 2530 insertions, 0 deletions
diff --git a/npc/048-2/_import.txt b/npc/048-2/_import.txt
new file mode 100644
index 00000000..d32a99d0
--- /dev/null
+++ b/npc/048-2/_import.txt
@@ -0,0 +1,26 @@
+// Map 048-2: Blue Sages' Mansion
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+"npc/048-2/_warps.txt",
+"npc/048-2/bluesageConfig.txt",
+"npc/048-2/helperAccused.txt",
+"npc/048-2/helperBookpages1.txt",
+"npc/048-2/helperBookpages2.txt",
+"npc/048-2/helperBookpages3.txt",
+"npc/048-2/helperChief.txt",
+"npc/048-2/helperCleaning1.txt",
+"npc/048-2/helperCleaning2.txt",
+"npc/048-2/helperCleaning3.txt",
+"npc/048-2/helperCleaning4.txt",
+"npc/048-2/helperCleaning5.txt",
+"npc/048-2/helperJanitor.txt",
+"npc/048-2/helperMInk.txt",
+"npc/048-2/helperMReed.txt",
+"npc/048-2/helperMSilk.txt",
+"npc/048-2/helperMYetiClaw.txt",
+"npc/048-2/helperResting1.txt",
+"npc/048-2/helperResting2.txt",
+"npc/048-2/mapflags.txt",
+"npc/048-2/sageNikolai.txt",
+"npc/048-2/slimes.txt",
+"npc/048-2/traveler.txt",
+"npc/048-2/visitors.txt",
diff --git a/npc/048-2/_warps.txt b/npc/048-2/_warps.txt
new file mode 100644
index 00000000..a806d9d4
--- /dev/null
+++ b/npc/048-2/_warps.txt
@@ -0,0 +1,19 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Map 048-2: Blue Sages' Mansion warps
+048-2,22,78,0 warp #048-2_22_78 1,0,048-2,84,23
+048-2,60,21,0 warp #048-2_60_21 1,0,048-2,121,26
+048-2,40,50,0 warp #048-2_40_50 0,0,047-1,128,40
+048-2,84,21,0 warp #048-2_84_21 1,0,048-2,22,76
+048-2,113,23,0 warp #048-2_113_23 0,0,048-2,147,35
+048-2,122,28,0 warp #048-2_122_28 1,0,048-2,59,22
+048-2,95,23,0 warp #048-2_95_23 0,0,048-2,178,35
+048-2,147,36,0 warp #048-2_147_36 0,0,048-2,113,24
+048-2,178,36,0 warp #048-2_178_36 0,0,048-2,95,24
+048-2,27,141,0 warp #048-2_27_141 0,0,048-2,52,102
+048-2,60,71,0 warp #048-2_60_71 1,0,048-2,60,104
+048-2,23,73,0 warp #048-2_23_73 0,0,048-2,85,132
+048-2,55,73,0 warp #048-2_55_73 0,0,048-2,121,132
+048-2,61,106,0 warp #048-2_61_106 1,0,048-2,59,73
+048-2,52,101,0 warp #048-2_52_101 0,0,048-2,27,140
+048-2,121,133,0 warp #048-2_121_133 0,0,048-2,55,74
+048-2,85,133,0 warp #048-2_85_133 0,0,048-2,23,74
diff --git a/npc/048-2/bluesageConfig.txt b/npc/048-2/bluesageConfig.txt
new file mode 100755
index 00000000..5a17a304
--- /dev/null
+++ b/npc/048-2/bluesageConfig.txt
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+- script #bluesageconfig NPC32767,{
+ end;
+
+OnInit:
+ $@Q_BlueSageMinimumLevel = 60;
+
+ $@Q_BlueSageBookPages_MASK = 0x1F;
+ $@Q_BlueSageBookPages_SHIFT = 0;
+
+ $@Q_BlueSageGrimoire = 0x20;
+ $@Q_BlueSageIceSword = 0x40;
+
+ $@Q_BlueSageMaterial_MASK = NIBBLE_2_MASK;
+ $@Q_BlueSageMaterial_SHIFT = NIBBLE_2_SHIFT;
+
+ $@Q_BlueSageMaterialReed = 0x100;
+ $@Q_BlueSageMaterialSilk = 0x200;
+ $@Q_BlueSageMaterialClaw = 0x400;
+ $@Q_BlueSageMaterialInk = 0x800;
+
+ $@Q_BlueSageSlimes_MASK = BYTE_2_MASK;
+ $@Q_BlueSageSlimes_SHIFT = BYTE_2_SHIFT;
+ $@Q_BlueSageSlimesStart = 0x010000;
+ $@Q_BlueSageSlime0 = 0x020000;
+ $@Q_BlueSageSlime1 = 0x040000;
+ $@Q_BlueSageSlime2 = 0x080000;
+ $@Q_BlueSageSlime3 = 0x100000;
+ $@Q_BlueSageSlime4 = 0x200000;
+ $@Q_BlueSageSlime5 = 0x400000;
+ $@Q_BlueSageSlime6 = 0x800000;
+ //white
+ $@BlueSageSlime0_Amount = 6;
+ $@BlueSageSlime1_Amount = 5;
+ $@BlueSageSlime2_Amount = 4;
+ $@BlueSageSlime3_Amount = 3;
+ // blue
+ $@BlueSageSlime4_Amount = 3;
+ $@BlueSageSlime5_Amount = 2;
+ $@BlueSageSlime6_Amount = 1;
+ end;
+}
+
+function script updateBlueSageBookPages {
+ QUEST_BlueSage = (QUEST_BlueSage & ~($@Q_BlueSageBookPages_MASK) | (@bookpages << $@Q_BlueSageBookPages_SHIFT));
+ return;
+}
+
+function script blueSageNumberOfClearedNests {
+ @slimenests = 0;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime0)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime1)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime2)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime3)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime4)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime5)
+ @slimenests = @slimenests+1;
+ if (QUEST_BlueSage & $@Q_BlueSageSlime6)
+ @slimenests = @slimenests+1;
+ return;
+}
diff --git a/npc/048-2/helperAccused.txt b/npc/048-2/helperAccused.txt
new file mode 100755
index 00000000..110c5d70
--- /dev/null
+++ b/npc/048-2/helperAccused.txt
@@ -0,0 +1,139 @@
+
+048-2,25,135,0 script Peetu NPC130,{
+ if (QL_BSAGE_INVESTIGATE == 12) goto L_Thank;
+ if (QL_BSAGE_INVESTIGATE > 4 && QL_BSAGE_INVESTIGATE < 13) goto L_Investigate;
+ if (QL_BSAGE_INVESTIGATE > 1 && QL_BSAGE_INVESTIGATE < 13) goto L_Query;
+ if (QL_BSAGE_INVESTIGATE == 1) goto L_Help;
+
+ mes "You see a rather stressed helper, mumbling to himself.";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel || !QL_BSAGE_INVESTIGATE)
+ goto L_close;
+ mes "[Peetu]";
+ mes "\"How could this have happened? I don't understand it... I'm sure I did the sealing correctly. Maybe the ingredients... but that doesn't make sense. They're checked regularly and...\"";
+ next;
+ mes "He startles as he notices you.";
+ mes "[Peetu]";
+ mes "\"Oh, hello. What are you doing here? Uh ... visitors usually don't come up here. I mean, I don't mean to be rude, of course. I'm just surprised to see you here.\"";
+ menu
+ "I'm just having a look around.",L_close,
+ "Sorry, I didn't mean to bother you.",L_close,
+ "Why aren't you downstairs, helping everyone to clean up?",L_Next;
+
+L_Next:
+ mes "[Peetu]";
+ mes "\"I would, but I'm ... under preliminary suspension.\"";
+ mes "He looks close to tears.";
+ next;
+ mes "[Peetu]";
+ mes "\"It's all my fault! It was my job to seal the slimes away for the night, but I somehow messed it up! How could this have happened? And now I'm going to lose my job and I'll have to leave here and no other sage would give me a new appointment and I don't know what else to do! I mean, I spent my whole life on this so far, I don't even know anything else I could do.\"";
+ next;
+ mes "He seems to be having a nervous breakdown, as he latches onto you and starts sobbing on your shoulder.";
+ menu
+ "(Try to console him)",L_More,
+ "(Shake him and tell him to pull himself together)",L_More,
+ "(Push him away from you and leave.)",L_close;
+
+L_More:
+ mes "He calms down a bit.";
+ mes "[Peetu]";
+ mes "\"Uh. You're probably right. I'm very sorry. I'm just... You know, I wanted to become a scholar of the sages, studying and... Oh, how could I mess that up? Did you see the library? It caused so much damage! What else should they do other than kick me out?\"";
+ menu
+ "Maybe you should talk to your chief about that?",L_Less,
+ "It doesn't make much sense to draw overhasty conclusions.",L_Less,
+ "Do you have a clue about what went wrong?",L_Less;
+
+L_Less:
+ mes "[Peetu]";
+ mes "\"Well ... but ... I mean ... I don't know ... ";
+ mes "I have an idea! Would you ... uhm ... would you talk to Chief Oskari for me? And ask him what he plans to do about me? I... I just don't feel capable of doing that myself right now. I'll try to pull myself together in the meanwhile.\"";
+ QL_BSAGE_INVESTIGATE = 1;
+ goto L_close;
+
+L_Help:
+ mes "[Peetu]";
+ mes "\"Please talk to Chief Oskari for me and find out if I'll get fired.";
+ mes "You can probably find him in his office on the second floor.\"";
+ goto L_close;
+
+L_Query:
+ mes "[Peetu]";
+ mes "\"Did you talk to Chief Oskari?\"";
+ menu
+ "Yes, and he doesn't plan to fire you.",L_Continue,
+ "Not yet.",L_close;
+
+L_Continue:
+ mes "You tell Peetu that Chief Oskari has a good opinion of him and explain your task to find out what exactly happened.";
+ next;
+ mes "[Peetu]";
+ mes "\"Alright, I understand. You see, I'm very confused too, because I usually pay a lot of attention to my work. Especially when doing something as delicate as sealing away the slimes for the night.\"";
+ menu
+ "Can you describe to me what exactly you did?",L_TextWall;
+
+L_TextWall:
+ mes "[Peetu]";
+ mes "\"Well, ok, sure. So, as you know we're doing some research on the nature of slimes, their connection to minerals and gemstones, their breeding behavior, and well ... uh ... doing some magical experiments to analyze their reactions to different kinds of magic.";
+ mes "These experiments caused some ... mutations, and the Blue and White Slimes developed some behavior different from the slimes of other colors, making them more dangerous.\"";
+ next;
+ mes "\"This is the reason they have to be magically sealed away for the night, since we didn't want them to get out in the wilderness... Oh, I can only imagine what damage they do to the environment!\"";
+ mes "He sighs.";
+ next;
+ mes "\"However, the sealing involves several steps. I usually start to prepare it while the helpers are still working on their research and experiments. That way, when they're done, they can just come and place the slimes under the seal.";
+ mes "I take the ingredients for the spell from the shelves, mix them together and cast the spell shortly before the other helpers finish their daily work.\"";
+ next;
+ mes "\"You can think of the seal as something like a magical cage. This is a simplified explanation, of course. It's rather advanced magic, a modified version of a shield spell, rather focused on the components that reduce the targets ability to move and... Oh, I seem to be losing you. Never mind then.";
+ mes "Anyway, I create and open the 'cage', then I wait for all the helpers to drop in the slimes and close it when all are in. When it is closed, I additionally cast a guarding spell to prevent unauthorized access.\"";
+ next;
+ mes "\"That night when the slimes escaped, I did all of this as usual. Everything seemed alright after I cast the guarding spell, so I went to bed. But I woke up in the middle of the night because I felt the spells... oh, it's hard to describe... it seems the spell which defines the magical cage started to... inflate itself. That caused the guarding spells to vanish, since they're intended to protect against threats from the outside, not the inside.";
+ mes "While expanding, the cage went thinner and thinner until it just... faded out of existence!\"";
+ next;
+ mes "\"This left all the slimes free in the workshop, right next to the library. Of course I hurried there as fast as I could, yelling to wake up everyone, but that caused so much confusion that we fell over each other in the corridor and when we finally reached the library, the slimes were already spread all over the room, eating the books and dripping out of the windows.\"";
+ next;
+ mes "\"We tried to block the windows to prevent them escaping, but as most of the helpers aren't experienced in fighting and only some of us have a higher magical education, the slimes are rather dangerous for most of them.";
+ mes "We weren't able to get the situation under control until most of the slimes had escaped.\"";
+ next;
+ mes "\"Since it was my responsibility to seal them away, I was preliminarily suspended and sent to my room. Since then I've been thinking over and over again about the happenings and how I cast the spell, trying to find the mistake I made.";
+ mes "But now that I've described the spells to you, I'm sure I cast them correctly. Thinking again about the effect of the seal inflating, I suppose it might have to do with the ingredients I used for the spell.\"";
+ next;
+ mes "\"I never tried it, because it makes no sense to do that, but theoretically adding some Silk Cocoons could have such an effect. That's pretty basic nature magic.";
+ mes "But... how would that have gotten into the ingredients?\"";
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_Investigate:
+ mes "[Peetu]";
+ mes "\"Hello. Did you find out anything else yet?\"";
+ if (QL_BSAGE_INVESTIGATE != 11)
+ menu
+ "I'm still collecting information.",L_close;
+ if (@inventorylist_count == 100)
+ goto L_TooMany;
+ menu
+ "Yes, I have already talked with Chief Oskari.",L_ReallyMore,
+ "Not yet.",L_close;
+
+L_ReallyMore:
+ mes "You explain your gained insights to Peetu and what conclusions Chief Oskari drew.";
+ mes "[Peetu]";
+ mes "\"Oh, I'm so relieved!";
+ mes "I mean, this is alarming news, but I'm so glad that this isn't my fault and that he feels I deserve to keep my job.\"";
+ next;
+ mes "\"It isn't much, but please take these Silk Gloves. We use those when we have to protect our hands, but still need to perform magic.\"";
+ QL_BSAGE_INVESTIGATE = 12;
+ getitem "SilkGloves", 1;
+ goto L_close;
+
+L_Thank:
+ mes "[Peetu]";
+ mes "\"Thanks for all your help.\"";
+ goto L_close;
+
+L_TooMany:
+ mes "[Peetu]";
+ mes "\"Wow, you have a lot of stuff with you! Isn't that uncomfortable?\"";
+ goto L_close;
+
+L_close:
+ @inventorylist_count = 0;
+ close;
+}
diff --git a/npc/048-2/helperBookpages1.txt b/npc/048-2/helperBookpages1.txt
new file mode 100755
index 00000000..529142a2
--- /dev/null
+++ b/npc/048-2/helperBookpages1.txt
@@ -0,0 +1,136 @@
+
+048-2,104,86,0 script Ensio NPC365,{
+ @bookpages = ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
+
+ @old_bookpage_exp = 1000;
+ @new_bookpage_exp = 10000;
+
+ if (@bookpages == 31) goto L_Thank;
+ if (@bookpages > 26) goto L_Almost;
+ if (@bookpages > 18) goto L_Many;
+ if (@bookpages > 8) goto L_Some;
+ if (@bookpages > 0) goto L_Few;
+
+ mes "[Ensio]";
+ mes "\"Hello. Did you come here to see the library? There isn't much left... But we're working on recovering the books by collecting the ripped out book pages, sorting them and recreating the books.\"";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_close;
+ menu
+ "Good luck with that. See you in ten years or something.",L_Investigate,
+ "Can I help somehow?",L_Next;
+
+L_Next:
+ mes "[Ensio]";
+ mes "\"Oh, would you? That'd be great! You see, the slimes ate most of the books and it is difficult to retrieve the bookpages.";
+ mes "If you feel capable of this task, you could go out to hunt the Blue and White Slimes, to get the bookpages back from them.\"";
+ goto L_Progress;
+
+L_Few:
+ mes "[Ensio]";
+ mes "\"So many bookpages are still missing...\"";
+ next;
+ goto L_Progress;
+
+L_Some:
+ mes "[Ensio]";
+ mes "\"Thanks for the pages you brought. There are still some missing.\"";
+ next;
+ goto L_Progress;
+
+L_Many:
+ mes "[Ensio]";
+ mes "\"Wow, you already found quite a lot of bookpages. Please keep it up!\"";
+ next;
+ goto L_Progress;
+
+L_Almost:
+ mes "[Ensio]";
+ mes "\"There are only a few pages missing.\"";
+ next;
+ goto L_Progress;
+
+L_Progress:
+ mes "\"Did you get some bookpages from the slimes?\"";
+ menu
+ "Yes, have a look.",L_Continue,
+ "No.",L_Investigate;
+
+L_Continue:
+ if (countitem("BookPage") < 1)
+ goto L_NoItem;
+ delitem "BookPage", 1;
+
+ if (rand(90 - @bookpages) < 36)
+ goto L_OldPage;
+
+ @bookpages = @bookpages + 1;
+ callfunc "updateBlueSageBookPages";
+ getexp @new_bookpage_exp, 0;
+ mes "[Ensio]";
+ mes "\"Ah, wonderful! This is a page we haven't found yet!\"";
+ if (@bookpages < 31)
+ goto L_Progress;
+ next;
+ mes "\"Amazing. I think you found all the missing pages of which we didn't have a copy. This is a great help! I'll mention this to Nikolai.\"";
+ goto L_Investigate;
+
+L_OldPage:
+ getexp @old_bookpage_exp, 0;
+ mes "[Ensio]";
+ mes "\"Mh, let me see. We already have a copy of this page, but it's helpful nevertheless. Thank you.\"";
+ goto L_Progress;
+
+L_Thank:
+ mes "[Ensio]";
+ mes "\"We'd never be able to recover our books so quickly without your help. Thanks!\"";
+ goto L_Investigate;
+
+L_NoItem:
+ mes "[Ensio]";
+ mes "\"This isn't funny! Come back when you're serious.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Ensio]";
+ mes "\"Visitor with a mask? Ah, I think I know who are you talking about. Black clothes and a golden mask. Rather strange guy.\"";
+ next;
+ mes "\"He was looking around in the library a while, and then came to ask about our research. He seemed to be particularly interested in our experiments with the slimes.";
+ mes "Heh, I wonder what he would've said if he'd have visited us a little bit later. Mh, now that I think about it, the accident with the slimes happened just the night after he was here.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Ensio]";
+ mes "\"Oh, I can't really tell. I'm mostly working in the library, while he's very involved in the research.\"";
+ goto L_close;
+
+L_close:
+ @bookpages = 0;
+ @old_bookpage_exp = 0;
+ @new_bookpage_exp = 0;
+ close;
+}
diff --git a/npc/048-2/helperBookpages2.txt b/npc/048-2/helperBookpages2.txt
new file mode 100755
index 00000000..b7d94be5
--- /dev/null
+++ b/npc/048-2/helperBookpages2.txt
@@ -0,0 +1,83 @@
+
+048-2,94,86,0 script Henriikka NPC363,{
+ @bookpages = ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
+
+ if (@bookpages == 31) goto L_Thank;
+ if (@bookpages > 0) goto L_Progress;
+
+ mes "You see a helper looking through some papers that have a strange smell.";
+ mes "[Henriikka]";
+ mes "\"Oh, hey. Welcome to the library, or what's left of it.\"";
+ mes "She sighs.";
+ menu
+ "What are you doing?",L_Next,
+ "You seem to be busy. See you.",L_close;
+
+L_Next:
+ mes "[Henriikka]";
+ mes "\"We're trying to repair the books by collecting the ripped out bookpages and sorting them and copying them for new books. It's a lot to do, and after being eaten by a slime they stink!";
+ mes "And a lot of pages are missing, since most of the slimes escaped. I suppose we'll have to go out and hunt them once we're done here.\"";
+ menu
+ "Maybe I can help with that?",L_Collect,
+ "Good luck.",L_close;
+
+L_Collect:
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_Careful;
+ mes "[Henriikka]";
+ mes "\"Oh, that'd be awesome! If you find some pages, you can bring them to Ensio.\"";
+ goto L_Investigate;
+
+L_Careful:
+ mes "[Henriikka]";
+ mes "\"Oh, that's very kind, but those slimes are dangerous! Better become a bit stronger first.\"";
+ goto L_close;
+
+L_Progress:
+ mes "[Henriikka]";
+ mes "\"If you get any bookpages from the slimes, bring them to Ensio. Thanks for your help!\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Henriikka]";
+ mes "\"I'm so glad we didn't have to go out to hunt the slimes! Thank you!\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Henriikka]";
+ mes "\"With a mask? I don't really remember... We have so many visitors. Though I suppose someone wearing a mask would be noticeable... But I'm so worn out from the past few days that I'm just glad I can even recall my own name! Sorry.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Henriikka]";
+ mes "\"Oh, I never really thought about that. He was the one who failed the sealing spell, right? But I heard it's a quite difficult spell, so I suppose this could've happened to anyone. I don't know. Why are you asking such difficult questions?\"";
+ next;
+ mes "\"I need to go on with sorting the bookpages now.\"";
+ goto L_close;
+
+L_close:
+ @bookpages = 0;
+ close;
+}
diff --git a/npc/048-2/helperBookpages3.txt b/npc/048-2/helperBookpages3.txt
new file mode 100755
index 00000000..4ac8d497
--- /dev/null
+++ b/npc/048-2/helperBookpages3.txt
@@ -0,0 +1,62 @@
+
+048-2,99,87,0 script Teuvo NPC366,{
+ @bookpages = ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
+
+ if (@bookpages == 31) goto L_Thank;
+ if (@bookpages > 0) goto L_Progress;
+
+ mes "[Teuvo]";
+ mes "\"I always thought it was a bad idea to play around with the slimes. And as if holding them in here isn't bad enough, no, they also had to mess around with magic.\"";
+ mes "He seems to be rather upset.";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Teuvo]";
+ mes "\"Did you find some bookpages? Ensio will take them.\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Teuvo]";
+ mes "\"Thanks for helping out here.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Teuvo]";
+ mes "\"With a mask? Hm. I don't remember.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Teuvo]";
+ mes "\"Peetu? He's one of those magic wielders who think they can do anything. Heh, you see the result here.";
+ mes "But to be fair, from what I've seen Peetu was always very attentive and dutiful.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @bookpages = 0;
+ close;
+}
diff --git a/npc/048-2/helperChief.txt b/npc/048-2/helperChief.txt
new file mode 100755
index 00000000..0a4e3c90
--- /dev/null
+++ b/npc/048-2/helperChief.txt
@@ -0,0 +1,117 @@
+
+048-2,146,26,0 script Oskari NPC134,{
+ if (QL_BSAGE_INVESTIGATE >= 11 && QL_BSAGE_INVESTIGATE < 13) goto L_Goodjob;
+ if (QL_BSAGE_INVESTIGATE > 1 && QL_BSAGE_INVESTIGATE < 13) goto L_Investigate;
+
+ mes "[Oskari]";
+ mes "\"Hello. Welcome to the residence of the Great Nikolai.";
+ mes "You have to excuse me, as you might have heard we're having some trouble at the moment and I, as Chief of Nikolai's helpers, have a lot to do.\"";
+ if (QL_BSAGE_INVESTIGATE == 0)
+ goto L_close;
+ menu
+ "Peetu asked me to talk to you about his mishap.",L_Next,
+ "Ok, see you.",L_close;
+
+L_Next:
+ mes "You tell him about your conversation with Peetu, how he's blaming himself and his worries about losing his job.";
+ next;
+ mes "Oskari keeps silent for a moment after you finish, pondering. Then he talks to you.";
+ mes "[Oskari]";
+ mes "\"You know, Peetu is one of my most experienced and reliable employees. This whole situation is very disquieting, not to say suspicious.\"";
+ next;
+ mes "\"Due to all the trouble, I haven't had time to have a talk with him nor to make further investigations. You already showed some good knowledge of human nature by the way you calmed him down and talked to me.\"";
+ next;
+ mes "\"Would you be willing to talk with Peetu and the other helpers, investigating what actually happened?\"";
+ next;
+ mes "\"As someone who's not a member of our team you might be able to get a more unbiased view of the situation, besides the fact that all of us are very busy with getting the situation under control again.\"";
+ next;
+ mes "\"I suggest to start by talking to Peetu again to get a precise idea of his workflow and what he thinks happened.";
+ mes "Oh, and please tell him that I'm not considering firing him in the current situation. You might need that to calm him down and get meaningful information.\"";
+ next;
+ mes "\"You should find out if someone observed anything unusual during the time before the accident happened.\"";
+ QL_BSAGE_INVESTIGATE = 2;
+ goto L_close;
+
+L_Investigate:
+ mes "[Oskari]";
+ mes "\"Ah, hello. Did you get an overview over the happenings yet?\"";
+ if (QL_BSAGE_INVESTIGATE != 10)
+ menu
+ "I'm still collecting information.",L_close;
+ next;
+ mes "You explain who you talked to, the helpers positive opinions of Peetu and what you found out about the suspicious visitor.";
+ mes "[Oskari]";
+ mes "\"With a mask you say? This reminds me... wait a moment.\"";
+ mes "He turns to his desk and searches through some papers.";
+ next;
+ mes "[Oskari]";
+ mes "\"Mh... yes. It fits together.";
+ mes "Listen, this is a letter from Chief Warrick on Santa's team. It seems they encountered some sabotaging during their preparations for the Christmas time... the letter mentions a masked person as well.\"";
+ next;
+ mes "\"And there are some reports about cases of unusal behaviour from native animals in various places of Kaizei that came to the Sages notice.\"";
+ next;
+ mes "\"And now this accident in our house, also a person with a mask... and given the context of the recent frictions within the Sages...\"";
+ mes "Oskari seems rather excited.";
+ next;
+ mes "[Oskari]";
+ mes "\"I think you revealed some important connections. I need to notify Nikolai and the other Sages.\"";
+ menu
+ "I'm confused now.",L_Continue,
+ "What are you talking about?",L_Continue;
+
+L_Continue:
+ mes "[Oskari]";
+ mes "\"I'm sorry. I think you deserve an explanation. You see, the Sages of Kaizei are a circle of wise wizards who work together for the prosperity of this continent.";
+ mes "Recently there was some conflict among the Sages which caused one of the members to leave the circle. It's all very unfortunate.";
+ next;
+ mes "\"However, taking all these different events into account, I came to the suspicion that there might be a connection. Of course we don't have evidence yet, so I don't want to be too sure. Well, I'll bring this to the Sages' notice.\"";
+ next;
+ mes "\"You were a great help! I'll inform Nikolai about your involvement in clarifying this matter.\"";
+ next;
+ mes "\"And you should also talk with Peetu, I'm sure he'll be relieved to hear about the clarification of this matter too.\"";
+ QL_BSAGE_INVESTIGATE = 11;
+ goto L_close;
+
+L_Goodjob:
+ mes "[Oskari]";
+ mes "\"Thanks again for your investigations.\"";
+ menu
+ "You're welcome.",L_close,
+ "Can you tell me something about the Sages?",L_MoreText;
+
+L_MoreText:
+ mes "[Oskari]";
+ mes "\"Oh, sure. I'm a bit busy right now, but you were a great help, so I think I can take a few minutes for you. What do you want to know?\"";
+ menu
+ "What exactly are the Sages and what do they do?",L_Sages,
+ "What was that conflict you were talking about?",L_Conflict,
+ "Mh, I changed my mind.",L_close;
+
+L_Sages:
+ mes "[Oskari]";
+ mes "\"Well, as I said the Sages are a circle of powerful wizards. There are twelve of them - eh, actually, now there are only eleven of them.\"";
+ mes "He sighs.";
+ next;
+ mes "[Oskari]";
+ mes "\"However, they live in different places all over Kaizei, but they meet sometimes to discuss different matters. They work hard for the prosperity of this continent, trying to improve the living conditions by both political work and magical research, with the aid of their helpers.\"";
+ next;
+ mes "\"The politics on Kaizei are rather complicated. The Sages have great influence, but there are also other organizations and groups. Due to the harsh climate on this continent, villages or towns can be cut off from the rest of the world for several weeks sometimes, so most of them tend to be rather independent.\"";
+ next;
+ mes "\"Also there's the Order of Ice, an organization which represents the national interests of Kaizei in a rather narrow-minded way compared to the Sages.\"";
+ goto L_close;
+
+L_Conflict:
+ mes "[Oskari]";
+ mes "\"Oh, I'm not sure if I should talk about that... It's a rather delicate situation.\"";
+ next;
+ mes "\"Basically there was a disagreement between the Sages. Usually those things can be solved by discussion, but this time... things got rather personal and one of the members accused Santa of valuing his own interests over the general good.\"";
+ next;
+ mes "\"This, of course, is nonsense. Santa would never do that, and it's more that the person accusing him has been suspected to act this way. The other Sages were on Santa's side and I fear this harsh rejection caused a lot of painful feelings.\"";
+ next;
+ mes "\"Personally I think that he has been jealous of Santa's influence and high position for quite a while. However, he took this as a reason to leave the Sages and based on our insights, it seems he decided to work against the Sages.";
+ mes "It really is a shame.\"";
+ goto L_close;
+
+L_close:
+ close;
+}
diff --git a/npc/048-2/helperCleaning1.txt b/npc/048-2/helperCleaning1.txt
new file mode 100755
index 00000000..208a06d3
--- /dev/null
+++ b/npc/048-2/helperCleaning1.txt
@@ -0,0 +1,98 @@
+
+048-2,117,106,0 script Pyry NPC365,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+ if (@slimes > 0) goto L_Progress;
+
+ mes "[Pyry]";
+ mes "\"Welcome to the library of Sage Nikolai. I'm very sorry, but as you see it's not in a good shape at the moment. Most of the books were eaten by the slimes or damaged and we're working hard on cleaning up the mess.";
+ mes "I have to ask you not to go in the deeper parts of the library, since there are still some of the slimes left and they're dangerous.\"";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_close;
+ menu
+ "I can fight them.",L_Next,
+ "Ok, thanks for the warning.",L_Investigate;
+
+L_Next:
+ mes "Pyry seems surprised.";
+ mes "[Pyry]";
+ mes "\"That... I didn't think about this possibility. But it'd be a great help!";
+ mes "Ok, there are some slimes around in the deeper parts of the library. They... erm, developed some very fast breeding behaviour, both the Blue Slimes and the White Slimes, but in a slightly different fashion.\"";
+ next;
+ mes "\"The Blue ones are able to generate smaller slimes which show a self-destructive behaviour to protect their... parent slime if you want to call it that. You have to kill the big one, but be careful of the smaller ones while trying that.\"";
+ next;
+ mes "\"The White Slimes appear in groups and when you attack one of them, they also show some self-destructive behaviour to protect their group as a whole. You have to defeat the entire group, otherwise the remaining slimes will breed new slimes to replace their lost.\"";
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlimesStart;
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Pyry]";
+ mes "\"It's very brave of you to fight against those slimes deeper in the library. Remember that you have to kill the entire group to prevent them from breeding.\"";
+ callfunc "blueSageNumberOfClearedNests";
+ if (@slimenests > 5) goto L_Almost;
+ if (@slimenests > 3) goto L_Some;
+ if (@slimenests > 1) goto L_Few;
+ goto L_Investigate;
+
+L_Almost:
+ next;
+ mes "\"I think there are only very few left.\"";
+ goto L_Investigate;
+
+L_Some:
+ next;
+ mes "\"The amount of slimes decreased noticably, but there are still some left.\"";
+ goto L_Investigate;
+
+L_Few:
+ next;
+ mes "\"I saw you already started, keep it on!\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Pyry]";
+ mes "\"It seems all of the slimes are gone now. I'm so glad! Thanks for your help. I mentioned your assistance to Nikolai.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Pyry]";
+ mes "\"Mh, yes. I remember him. He was very interested in the library and the research we do here. He had an unusual behaviour and appearance. But, well, that isn't a reason to refuse someone, right?\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Pyry]";
+ mes "\"Peetu? I have always been glad to have him on the team. He's really brought forward our work here.\"";
+ next;
+ mes "\"I was very surprised when I heard that he's responsible for the failed sealing spell. I'd never have expected that from him.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/helperCleaning2.txt b/npc/048-2/helperCleaning2.txt
new file mode 100755
index 00000000..4be03d9d
--- /dev/null
+++ b/npc/048-2/helperCleaning2.txt
@@ -0,0 +1,67 @@
+
+048-2,123,87,0 script Nea NPC363,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+ if (@slimes > 0) goto L_Progress;
+
+ mes "[Nea]";
+ mes "\"Oh, hello. If I were you I wouldn't go deeper into the library. There are still some of those monsters left. Slipping between the bookshelves.\"";
+ mes "She shudders.";
+ next;
+ mes "[Nea]";
+ mes "\"And they can explode! Nothing in the world could make me go in there. I'll just do my work right here, clean the floor and tidy up the books, and I'm keeping my eyes open in case they get over here.\"";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Nea]";
+ mes "\"Oh, I'm so glad you're taking care of those scary slimes. You're so brave!";
+ mes "How many of them are still left, do you think? Will it be safe to go there soon?\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Nea]";
+ mes "\"I feel much safer now that you defeated the slimes. Thanks so much!\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Nea]";
+ mes "\"With a mask? Mh, I think I know who are you talking about. I vaguely remember that there was someone with a mask... but I can't recall any details, I wasn't really paying attention.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Nea]";
+ mes "\"Peetu? Yeah, he's the kind of person who always wants to do things perfectly. That makes it a bit difficult to work with him, since his expectations for others are as high as for himself.\"";
+ next;
+ mes "\"I really wonder how that accident with the sealing spell could've happened. I'd have never expected him to mess something up like that.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/helperCleaning3.txt b/npc/048-2/helperCleaning3.txt
new file mode 100755
index 00000000..df072fe1
--- /dev/null
+++ b/npc/048-2/helperCleaning3.txt
@@ -0,0 +1,71 @@
+
+048-2,139,99,0 script Arvo NPC366,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+ if (@slimes > 0) goto L_Progress;
+
+ mes "[Arvo]";
+ mes "\"Oh, this is so much work... I can't believe they let this happen! You would think they'd be careful when playing around with such powerful forces. Hah! Big mistake!\"";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Arvo]";
+ mes "\"We really appreciate your help with the slimes.\"";
+ mes "He sighs.";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Arvo]";
+ mes "\"Good work with the slimes. This will make our task much easier.\"";
+ mes "He sighs and takes a careful look around.";
+ next;
+ mes "[Arvo]";
+ mes "\"But it shows that Nikolai's position isn't what it used to be. There's disturbance in the great circle of our Sages and things have changed. About one year ago, Nikolai's helpers wouldn't have needed the help of a mere adventurer - no offense.\"";
+ next;
+ mes "\"But it appears we were focusing too much on research and this lead to neglect of other duties of a Sage's household. This is dangerous in times of changes. I'm worried about the future.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Arvo]";
+ mes "\"Yes, I remember that one! I welcomed him in the libary and showed him around. But I didn't have the impression he was really listening to what I was saying, though that's hard to tell with the mask.\"";
+ next;
+ mes "\"But when I left him to look at the books on his own, he sneaked over to the workshop area. Visitors are allowed to have a look there, but only if they don't interfere with any research and experiments. But it seems he was being rather disturbing, since they sent them back to the library part.\"";
+ next;
+ mes "\"I tried to keep an eye on him after that, but when I got distracted by some newly arriving visitor he went over to the workshop again! Usually I enjoy my job, because I like talking to people, but this guy... was a pain, really.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Arvo]";
+ mes "\"Peetu? That's one of the high rank helpers. As far as I know, he's very talented with magic and takes part in some important research. But I don't really know about those things.\"";
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/helperCleaning4.txt b/npc/048-2/helperCleaning4.txt
new file mode 100755
index 00000000..ef1397be
--- /dev/null
+++ b/npc/048-2/helperCleaning4.txt
@@ -0,0 +1,62 @@
+
+048-2,131,119,0 script Kristian NPC366,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+ if (@slimes > 0) goto L_Progress;
+
+ mes "[Kristian]";
+ mes "\"Welcome. Please don't go deeper into the library, there are still some slimes left. But in spite of that we have made quite a bit of progress. You should have seen the mess just after most of the slimes escaped!\"";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Kristian]";
+ mes "\"Wow, it's really generous of you to fight those slimes for us.\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Kristian]";
+ mes "\"I'm so glad that you took care of the remaining slimes. Thanks!\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Kristian]";
+ mes "\"Oh, there was such a visitor, yes. Strange guy, and didn't really know how to behave. He sneaked into the workshop area all the time, I think he was rather curious about the things going on there.\"";
+ next;
+ mes "\"But still, he can't just walk in there, fiddle with the experiments and disturb the helpers doing their work.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Kristian]";
+ mes "\"Peetu? I think he's a good guy. Very focused on his work, I think. I don't have that much to do with him, so I can't really tell.\"";
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/helperCleaning5.txt b/npc/048-2/helperCleaning5.txt
new file mode 100755
index 00000000..3e9885a6
--- /dev/null
+++ b/npc/048-2/helperCleaning5.txt
@@ -0,0 +1,64 @@
+
+048-2,100,125,0 script Mirjami NPC363,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+
+ mes "[Mirjami]";
+ mes "\"Where is it? Everything's upside down. These terrible slimes.\"";
+ menu
+ "What are you doing?",L_Next;
+
+L_Next:
+ mes "[Mirjami]";
+ mes "\"Oh? I'm just searching for some cleaning supplies. They must be somewhere around here, but everything went upside down when the slimes escaped.\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Mirjami]";
+ mes "\"I heard you fought the slimes that were still roaming between the bookshelves. Thank you!\"";
+ next;
+ mes "\"I was a bit worried that they might ruin our efforts by messing everything up again after we just cleaned.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Mirjami]";
+ mes "\"Ohh, I think I know who you mean. That was a strange guy. He always came over here in the workshop, said he's very interested in the research. I suppose that's ok, but he didn't keep his hands to himself, and touched some experiments and I caught him near some storage racks.\"";
+ next;
+ mes "\"Visitors should keep away from those!\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Mirjami]";
+ mes "\"Oh, eh, why are you asking me? I've only been here a short while and don't really know all of the people well enough yet.\"";
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/helperJanitor.txt b/npc/048-2/helperJanitor.txt
new file mode 100755
index 00000000..b60b0062
--- /dev/null
+++ b/npc/048-2/helperJanitor.txt
@@ -0,0 +1,96 @@
+
+048-2,36,44,0 script Debug#BlueSage NPC110,{
+ mes "QUEST_BlueSage: "+ QUEST_BlueSage;
+ mes "QL_BSAGE_INVESTIGATE: "+ QL_BSAGE_INVESTIGATE;
+ next;
+ menu
+ "set QL_BSAGE_INVESTIGATE", L_Investigate;
+
+L_Investigate:
+ input @state;
+ if(@state < 0 || @state > 14) set @state, 0;
+ QL_BSAGE_INVESTIGATE = @state;
+ close;
+
+OnInit:
+ if (!debug) disablenpc strnpcinfo(0);
+ end;
+}
+
+048-2,40,41,0 script Elias NPC110,7,6,{
+ if (QL_BSAGE_INVESTIGATE == 11) goto L_Thank;
+ if ((QL_BSAGE_INVESTIGATE == 4) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Confirmed;
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 9)) goto L_Worry;
+ if (QUEST_BlueSage > 0 && QL_BSAGE_INVESTIGATE < 13) goto L_ShortHello;
+
+ mes "[Elias]";
+ mes "\"Welcome to the residence of Nikolai, member of the Sages of Kaizei.\"";
+ next;
+ mes "\"Our house is famous for its extraordinary and well equipped library.";
+ mes "Ahm, usually well equipped.\"";
+ next;
+ mes "\"We had an accident with some magic experiments, that caused some slimes to get out of control. They ate most of the books in the library.\"";
+ mes "He sighs with a regretful look on his face.";
+ next;
+ mes "[Elias]";
+ mes "\"So, if you came because of the library, I'll have to disappoint you, because there isn't much left.";
+ mes "Though you look like a skilled adventurer. If you'd like to offer your help that'd be greatly appreciated.\"";
+ if(QL_BSAGE_INVESTIGATE == 13)
+ QL_BSAGE_INVESTIGATE = 14;
+ next;
+ mes "\"The library is on the third floor.\"";
+ goto L_close;
+
+OnTouch:
+ if (BaseLevel >= $@Q_BlueSageMinimumLevel && !QL_BSAGE_INVESTIGATE)
+ QL_BSAGE_INVESTIGATE = 13;
+ end;
+
+L_ShortHello:
+ mes "[Elias]";
+ mes "\"Welcome back. I heard you're helping with the cleanup efforts in the library.";
+ mes "Thank you very much.\"";
+ if ((QL_BSAGE_INVESTIGATE != 2) && (QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 8))
+ goto L_close;
+ menu
+ "Can you tell me if there were any unusual visitors before the accident?",L_Next;
+
+L_Next:
+ mes "[Elias]";
+ mes "\"Mh, let me think. There were quite a few visitors with different concerns, but that's usual at this time of the year.";
+ mes "One of them was a bit odd, he was wearing a mask and had a strange way of talking. He said he comes from Thermin, which is a mining town in the west. I figured his face might have gotten deformed in some mining accident, but I didn't ask, that would've been rude.";
+ mes "If I remember correctly he wanted to see the library.\"";
+ next;
+ mes "Elias gets a bit excited now.";
+ mes "[Elias]";
+ mes "\"Do you think he may have had something to do with the accident? We're a very hospitable house, so I didn't see a reason to deny him the entrance. I mean, his mask might have been a bit unusual, but hey, there could've been many reasons why someone would wear a mask, don't you think?\"";
+
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+
+ menu
+ "Sure, but it's interesting that he was here shortly before the accident.",L_close,
+ "I'll ask some more people about that guy.",L_close;
+
+L_Worry:
+ mes "[Elias]";
+ mes "\"After your questions I'm really getting worried about this guy with the mask. In retrospect it really seems suspicous.";
+ mes "It might be a good idea to ask around if anyone else observed something odd connected to this person.\"";
+ goto L_close;
+
+L_Confirmed:
+ mes "[Elias]";
+ mes "\"I heard your investigations reminded other people that they observed suspicious behaviour too.\"";
+ next;
+ mes "\"It's all my fault, I should've paid more attention! You should talk to Chief Oskari about this.\"";
+ goto L_close;
+
+L_Thank:
+ mes "[Elias]";
+ mes "\"Now that Chief Oskari knows about the sequence of events, the Sages will take care of it. It's really a shame how malicious people can be.\"";
+ next;
+ mes "\"Thanks a lot for your help revealing the truth.\"";
+ goto L_close;
+
+L_close:
+ close;
+}
diff --git a/npc/048-2/helperMInk.txt b/npc/048-2/helperMInk.txt
new file mode 100755
index 00000000..b695ec85
--- /dev/null
+++ b/npc/048-2/helperMInk.txt
@@ -0,0 +1,100 @@
+
+048-2,95,103,0 script Eevert NPC365,{
+ @water_amount = 5;
+ @spectre_amount = 3;
+ @poltergeist_amount = 3;
+ @wisp_amount = 3;
+ @ironpowder_amount = 4;
+ @ink_exp = 7000;
+
+ if (QUEST_BlueSage & $@Q_BlueSageMaterialInk) goto L_Done;
+
+ mes "[Eevert]";
+ mes "\"Mh. I wonder how I'm expected to perform my task with this meager equipment. The new books will look pathetic.\"";
+ mes "He sighs.";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_close;
+ menu
+ "What do you need?",L_Need,
+ "Not my problem.",L_Investigate;
+
+L_Need:
+ mes "[Eevert]";
+ mes "\"I'm doing the covers and illustrations for the new books we create from the pieces of the old ones. But due to all of the chaos from when the slimes escaped, most of the phials of colored ink were broken. How am I supposed to do the illustrations without color?\"";
+ next;
+ mes "\"I think I'll need at least " + @water_amount + " Bottles of Water, " + @spectre_amount + " Spectre Powders, " + @poltergeist_amount + " Poltergeist Powders, " + @wisp_amount + " Wisp Powders and " + @ironpowder_amount + " Iron Powders to create new ink.\"";
+ menu
+ "I have those with me!",L_TurnIn,
+ "I'll try to get those.",L_close,
+ "Too bad.",L_Investigate;
+
+L_TurnIn:
+ if ((countitem("BottleOfWater") < @water_amount) || (countitem("SpectrePowder") < @spectre_amount) || (countitem("PoltergeistPowder") < @poltergeist_amount) || (countitem("WispPowder") < @wisp_amount) || (countitem("IronPowder") < @ironpowder_amount))
+ goto L_NoItem;
+ delitem "BottleOfWater", @water_amount;
+ delitem "SpectrePowder", @spectre_amount;
+ delitem "PoltergeistPowder", @poltergeist_amount;
+ delitem "WispPowder", @wisp_amount;
+ delitem "IronPowder", @ironpowder_amount;
+ getexp @ink_exp, 0;
+ QUEST_BlueSage = (QUEST_BlueSage | $@Q_BlueSageMaterialInk);
+ mes "[Eevert]";
+ mes "\"Wonderful! Now I can prepare the ink for magnificent illustrations! You're very generous.\"";
+ goto L_Investigate;
+
+L_Done:
+ mes "[Eevert]";
+ mes "\"Thanks for your help with the inks! Now I'll be able to fulfill my tasks adequately. Some of these books were really valuable, and it's important to recreate them as good as possible.\"";
+ goto L_Investigate;
+
+L_NoItem:
+ mes "[Eevert]";
+ mes "\"What does this mean? You don't have it!\"";
+ goto L_close;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Eevert]";
+ mes "\"A visitor? I don't really pay attention to visitors, unless it's someone notable.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Eevert]";
+ mes "\"Ah, Peetu. I really appreciate his sense for high quality work. The requirements to become a helper of a sage are already high, but Peetu is outstanding. He has a talent for magic and combined with his diligence, it's quite remarkable.\"";
+ next;
+ mes "\"That's why I'm really confused about this situation, since he was the one performing the sealing of the slimes. I wonder what went wrong.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @water_amount = 0;
+ @spectre_amount = 0;
+ @poltergeist_amount = 0;
+ @wisp_amount = 0;
+ @ironpowder_amount = 0;
+ @ink_exp = 0;
+ close;
+}
diff --git a/npc/048-2/helperMReed.txt b/npc/048-2/helperMReed.txt
new file mode 100755
index 00000000..4a5bf109
--- /dev/null
+++ b/npc/048-2/helperMReed.txt
@@ -0,0 +1,89 @@
+
+048-2,104,78,0 script Kullervo NPC366,{
+ @reed_amount = 20;
+ @reed_exp = 10000;
+
+ if (QUEST_BlueSage & $@Q_BlueSageMaterialReed) goto L_Done;
+
+ mes "[Kullervo]";
+ mes "\"Oh no! What should we do now?\"";
+ menu
+ "What's wrong?",L_Foo;
+L_Foo:
+ mes "[Kullervo]";
+ mes "\"We're nearly out of paper. The new books require so much material... And it's not easy to get Reed Bundles to create new paper.\"";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_close;
+ menu
+ "I have some.",L_TurnIn,
+ "I'll try to get some.",L_close,
+ "Too bad.",L_Investigate;
+
+L_TurnIn:
+ if(countitem("ReedBundle") < @reed_amount)
+ goto L_NoItem;
+ delitem "ReedBundle", @reed_amount;
+ getexp @reed_exp, 0;
+ QUEST_BlueSage = (QUEST_BlueSage | $@Q_BlueSageMaterialReed);
+ mes "[Kullervo]";
+ mes "\"Thank you! That's very generous of you.\"";
+ goto L_Investigate;
+
+L_Done:
+ mes "[Kullervo]";
+ mes "\"Very well, now I can create more paper.\"";
+ goto L_Investigate;
+
+L_NoItem:
+ mes "[Kullervo]";
+ mes "\"Oh, really? Ah, it's not enough. I need " + @reed_amount + " Reed Bundles.\"";
+ goto L_close;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Kullervo]";
+ mes "\"Oh, yes. There was such a guy, shortly before the accident I think. He sneaked into the workshop several times, sticking his nose into stuff that shouldn't be his business. We had to send him back to the library area at least three times.\"";
+ next;
+ mes "\"Maybe he was confused, not sure. He talked very strangely.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Kullervo]";
+ mes "\"Are you asking because people say it's his fault? Listen, I've known him for many years now. We started our service here about the same time. We share our room and are really close friends.";
+ mes "And in all these years, I've never seen him messing up anything important. He's a perfectionist. He isn't satisfied with anything less than the best possible result when doing his work.\"";
+ next;
+ mes "\"I don't understand what went wrong with that spell, but it just has to have another cause than Peetu. I'm worried about him. He must feel very miserable. But I can't leave my duty here.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @reed_amount = 0;
+ @reed_exp = 0;
+ close;
+}
diff --git a/npc/048-2/helperMSilk.txt b/npc/048-2/helperMSilk.txt
new file mode 100755
index 00000000..58d3f899
--- /dev/null
+++ b/npc/048-2/helperMSilk.txt
@@ -0,0 +1,84 @@
+
+048-2,104,103,0 script Janika NPC363,{
+ @silk_amount = 80;
+ @silk_exp = 10000;
+
+ if (QUEST_BlueSage & $@Q_BlueSageMaterialSilk) goto L_Done;
+ if (BaseLevel >= $@Q_BlueSageMinimumLevel) goto L_Quest;
+
+ mes "[Janika]";
+ mes "\"This is going to be difficult... oh, hello. I'm working on recreating some of the books that were destroyed.\"";
+ goto L_close;
+
+L_Quest:
+ mes "[Janika]";
+ mes "\"This is going to be difficult...";
+ mes "Oh, hello. You don't have " + @silk_amount + " Silk Cocoons with you, do you? I need them for the book covers and binding of some of the more valuable books we're trying to recreate.\"";
+ menu
+ "I have!",L_TurnIn,
+ "I haven't, but I can try to get some.",L_Investigate,
+ "No.",L_Investigate;
+
+L_TurnIn:
+ if(countitem("SilkCocoon") < @silk_amount)
+ goto L_NoItem;
+ delitem "SilkCocoon", @silk_amount;
+ getexp @silk_exp, 0;
+ QUEST_BlueSage = (QUEST_BlueSage | $@Q_BlueSageMaterialSilk);
+ mes "[Janika]";
+ mes "\"Excellent! This is exactly what I need. Thanks a lot. I'll tell Nikolai about your generosity.\"";
+ goto L_Investigate;
+
+L_Done:
+ mes "[Janika]";
+ mes "\"Thanks for the Silk Cocoons. With these the new books are going to be exquisite.\"";
+ goto L_Investigate;
+
+L_NoItem:
+ mes "[Janika]";
+ mes "\"Are you kidding? You don't have it!\"";
+ goto L_close;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Janika]";
+ mes "\"Oh, I know who you mean! That impertinent person came over in the workshop area and fiddled about with all kinds of things here! Such a rude person! Didn't he understand that we had delicate things going on here? We had to send him back to the library area several times.\"";
+ next;
+ mes "She shakes her head.";
+ mes "\"Sometimes I think it'd be better not to allow visitors here. But the sages set a high value on keeping contact with the population. Politics.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Janika]";
+ mes "\"Mh, I don't know him closely.\"";
+ goto L_close;
+
+L_close:
+ @silk_amount = 0;
+ @silk_exp = 0;
+ close;
+}
diff --git a/npc/048-2/helperMYetiClaw.txt b/npc/048-2/helperMYetiClaw.txt
new file mode 100755
index 00000000..062b36d4
--- /dev/null
+++ b/npc/048-2/helperMYetiClaw.txt
@@ -0,0 +1,91 @@
+
+048-2,97,78,0 script Santeri NPC366,{
+ @claw_amount = 8;
+ @claw_exp = 10000;
+
+ if (QUEST_BlueSage & $@Q_BlueSageMaterialClaw) goto L_Done;
+ if (BaseLevel >= $@Q_BlueSageMinimumLevel) goto L_Quest;
+
+ mes "[Santeri]";
+ mes "\"Hm. Please don't disturb me, I'm trying to concentrate.\"";
+ goto L_close;
+
+L_Quest:
+ mes "[Santeri]";
+ mes "\"Welcome. Are you an adventurer? I could use some help.\"";
+ menu
+ "I am. What heroic action is needed?",L_HeroicAction,
+ "How can I help?",L_HeroicAction,
+ "I'm not interested.",L_close;
+
+L_HeroicAction:
+ mes "[Santeri]";
+ mes "\"You see, we're working on repairing all of the damaged books and creating new ones for those that were lost.";
+ mes "Therefore we need a lot of glue, but our supplies are nearly used up. I need " + @claw_amount + " Yeti Claws as ingredient to make new glue. Do you have that?\"";
+ menu
+ "Yes, here you go.",L_TurnIn,
+ "I need to look in my storage.",L_close,
+ "No, sorry.",L_Investigate;
+
+L_TurnIn:
+ if(countitem("YetiClaw") < @claw_amount)
+ goto L_NoItem;
+ delitem "YetiClaw", @claw_amount;
+ getexp @claw_exp, 0;
+ QUEST_BlueSage = (QUEST_BlueSage | $@Q_BlueSageMaterialClaw);
+ mes "[Santeri]";
+ mes "\"Great! Thank you!\"";
+ goto L_Investigate;
+
+L_Done:
+ mes "[Santeri]";
+ mes "\"Thanks to you, our glue supply is replenished and we can repair those books.\"";
+ goto L_Investigate;
+
+L_NoItem:
+ mes "[Santeri]";
+ mes "\"What are you telling me? You don't have it!\"";
+ goto L_close;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Santeri]";
+ mes "\"There was a visitor with a mask? I didn't notice. You see, I spend most of my time in the workshop, and concentrate on my work. There are other helpers who attend to the visitors. And hopefully keep them from disturbing my concentration.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Santeri]";
+ mes "\"Oh, that's an interesting question. I was really surprised when I heard that he was responsible for the sealing spell. I've worked together with him before, and I have to say, it really was a pleasure. He's very accurate and diligent, but also polite and helpful.\"";
+ next;
+ mes "\"I really wonder what went wrong with that sealing spell. I can't imagine Peetu messing up something so important.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @claw_amount = 0;
+ @claw_exp = 0;
+ close;
+}
diff --git a/npc/048-2/helperResting1.txt b/npc/048-2/helperResting1.txt
new file mode 100755
index 00000000..ae6fb407
--- /dev/null
+++ b/npc/048-2/helperResting1.txt
@@ -0,0 +1,63 @@
+
+048-2,36,26,0 script Lenita NPC363,{
+ @bookpages = ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
+
+ if (@bookpages == 254) goto L_Thank;
+ if (@bookpages > 0) goto L_Progress;
+
+ mes "[Lenita]";
+ mes "\"Oh, hello. You didn't choose a good time to visit. The library is a total mess. The slimes got out of control and ate most of the books.\"";
+ next;
+ mes "\"We're trying to repair some of the valuable and important books. It's so much work!";
+ mes "I was up until late last night, and woke up so early today... I'm having a break right now.\"";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Lenita]";
+ mes "\"Teuvo said you're helping to collect some of the missing bookpages to repair the books. That's very kind of you! It's so much work to do, so every bit of help is welcome.\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Lenita]";
+ mes "\"Wow, Ensio told me you collected so many of the lost book pages.\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "I need to leave.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "See you later.",L_close;
+
+L_Ask_Both:
+ menu
+ "Can you tell me anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Visitor:
+ mes "[Lenita]";
+ mes "\"With a mask? Yeah, I remember. That was a strange guy. He came to visit the library, but he lurked around at the workshop area and they had to send him back to the books.\"";
+ if ((QL_BSAGE_INVESTIGATE != 3) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 9))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 1;
+ goto L_close;
+
+L_Helper:
+ mes "[Lenita]";
+ mes "\"Mh, I can't really tell since I usually work in the library while he works at the workshop. Maybe you should ask around among the people who work there.\"";
+ goto L_close;
+
+L_close:
+ @bookpages = 0;
+ close;
+}
diff --git a/npc/048-2/helperResting2.txt b/npc/048-2/helperResting2.txt
new file mode 100755
index 00000000..30f16cd3
--- /dev/null
+++ b/npc/048-2/helperResting2.txt
@@ -0,0 +1,64 @@
+
+048-2,35,27,0 script Miro NPC366,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (@slimes == 255) goto L_Thank;
+ if (@slimes > 0) goto L_Progress;
+
+ mes "[Miro]";
+ mes "\"Hm? Oh, excuse me. I'm feeling so tired. We currently have some problems with some slimes out of control in the library. They ate most of the books and caused total chaos.\"";
+ next;
+ mes "\"We need to clean up the mess and it's so much to do. I was cleaning the floor for hours and I'm having a break now.\"";
+ goto L_Investigate;
+
+L_Progress:
+ mes "[Miro]";
+ mes "\"Pyry mentioned you're helping with the leftover slimes. You're really brave! I'd be afraid they'd eat me like they ate the books!\"";
+ goto L_Investigate;
+
+L_Thank:
+ mes "[Miro]";
+ mes "\"Wow, the way you took care of the slimes in the library! Amazing! This makes our job there much easier... and safer. Thank you so much!\"";
+ goto L_Investigate;
+
+L_Investigate:
+ if ((QL_BSAGE_INVESTIGATE == 3) || (QL_BSAGE_INVESTIGATE == 4)) goto L_Ask_Visitor;
+ if ((QL_BSAGE_INVESTIGATE == 5) || (QL_BSAGE_INVESTIGATE == 8)) goto L_Ask_Helper;
+ if ((QL_BSAGE_INVESTIGATE == 6) || (QL_BSAGE_INVESTIGATE == 7) || (QL_BSAGE_INVESTIGATE == 9) || (QL_BSAGE_INVESTIGATE == 10)) goto L_Ask_Both;
+ goto L_close;
+
+L_Ask_Visitor:
+ menu
+ "Do you know anything about the visitor with the mask?",L_Visitor,
+ "See you.",L_close;
+
+L_Ask_Helper:
+ menu
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "Bye.",L_close;
+
+L_Ask_Both:
+ menu
+ "Do you know anything about the visitor with the mask?",L_Visitor,
+ "What's your opinion of Peetu and how he does his work?",L_Helper,
+ "I need to leave.",L_close;
+
+L_Visitor:
+ mes "[Miro]";
+ mes "\"With a mask? I really don't know. I'm usually in the workshop and most of the visitors spend their time in the library. Sometimes they come to have a quick look in the workshop too, but I don't really pay attention to that, so... I can't recall a visitor with a mask, sorry.\"";
+ goto L_close;
+
+L_Helper:
+ mes "[Miro]";
+ mes "\"Peetu? It was his job to seal away the slimes before the night, right? I have to say I'm really surprised about what happened, because he's a very cautious person. I'd have never guessed that he'd mess up something as important as this.\"";
+ next;
+ mes "\"If Nikolai's helpers weren't so carefully chosen, I'd think this was some kind of a bad joke from someone.\"";
+ if ((QL_BSAGE_INVESTIGATE != 5) && (QL_BSAGE_INVESTIGATE != 6) && (QL_BSAGE_INVESTIGATE != 7))
+ goto L_close;
+ QL_BSAGE_INVESTIGATE = QL_BSAGE_INVESTIGATE + 3;
+ goto L_close;
+
+L_close:
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/mapflags.txt b/npc/048-2/mapflags.txt
new file mode 100755
index 00000000..8ec972d9
--- /dev/null
+++ b/npc/048-2/mapflags.txt
@@ -0,0 +1 @@
+//048-2 mapflag resave 048-2,26,46
diff --git a/npc/048-2/sageNikolai.txt b/npc/048-2/sageNikolai.txt
new file mode 100755
index 00000000..d69cad46
--- /dev/null
+++ b/npc/048-2/sageNikolai.txt
@@ -0,0 +1,281 @@
+
+048-2,98,106,0 script Nikolai NPC362,{
+ @halloween_npc_id = $@halloween_npc_nikolai;
+ callfunc "TrickOrTreat";
+
+ @bookpages = ((QUEST_BlueSage & $@Q_BlueSageBookPages_MASK) >> $@Q_BlueSageBookPages_SHIFT);
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ @material = ((QUEST_BlueSage & $@Q_BlueSageMaterial_MASK) >> $@Q_BlueSageMaterial_SHIFT);
+
+ if ((@bookpages == 31)
+ && (QUEST_BlueSage & $@Q_BlueSageMaterialInk)
+ && (QUEST_BlueSage & $@Q_BlueSageMaterialClaw)
+ && (QUEST_BlueSage & $@Q_BlueSageMaterialReed)
+ && (QUEST_BlueSage & $@Q_BlueSageMaterialSilk)
+ && !(QUEST_BlueSage & $@Q_BlueSageGrimoire))
+ goto L_GrimoireReward;
+
+ if ((@slimes == 255) && !(QUEST_BlueSage & $@Q_BlueSageIceSword))
+ goto L_SlimesReward;
+
+ if ((QUEST_BlueSage & $@Q_BlueSageGrimoire) && (QUEST_BlueSage & $@Q_BlueSageIceSword))
+ goto L_Done;
+
+ if (QUEST_BlueSage > 0)
+ goto L_Hints;
+
+ mes "You see a very reputable looking man who is going through some papers. He looks up as you approach.";
+ mes "[Nikolai]";
+ mes "\"Welcome to my mansion. I am Nikolai, member of the Sages of Kaizei.";
+ mes "I assume you came to see our famous library? As you can see, it isn't in very good shape due to some... misfortunes. I'm very sorry.\"";
+ if (BaseLevel < $@Q_BlueSageMinimumLevel)
+ goto L_close;
+ next;
+ mes "\"You seem to be quite an experienced adventurer. I usually wouldn't ask for this, but since my dear friend Santa mentioned his good experiences with hiring additional helpers in times of pressure, I reconsidered.";
+ mes "If you don't mind, every bit of help with our current situation would be appreciated.\"";
+ next;
+ mes "\"There are many things to take care of at the moment, so if you'd like to aid us, the helpers will be able to tell you what they need.\"";
+ goto L_close;
+
+L_Hints:
+ mes "[Nikolai]";
+ mes "\"I heard you started to help out a bit. That's very kind.\"";
+
+ cleararray @choice_idx, 0, 10;
+ cleararray @choice$, "", 10;
+
+ @C_startBookpages = 1;
+ @C_bookpages = 2;
+ @C_startMaterials = 3;
+ @C_materials = 4;
+ @C_startSlimes = 5;
+ @C_slimes = 6;
+ @C_startInvestigate = 7;
+ @C_investigate = 8;
+ @C_investigate2 = 9;
+ @C_nevermind = 10;
+
+ // counter of available answers
+ @choices_nr = 0;
+
+ if (@bookpages > 0)
+ goto L_NoStartBookpages;
+ @choice_idx[@choices_nr] = @C_startBookpages;
+ @choice$[@choices_nr] = "I heard the slimes ate most of the books...";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoStartBookpages;
+
+L_NoStartBookpages:
+ if ((@bookpages == 0) || (@bookpages == 31))
+ goto L_NoBookpages;
+ @choice_idx[@choices_nr] = @C_bookpages;
+ @choice$[@choices_nr] = "I'm collecting lost bookpages.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoBookpages;
+
+L_NoBookpages:
+ if (@material > 0)
+ goto L_NoStartMaterials;
+ @choice_idx[@choices_nr] = @C_startMaterials;
+ @choice$[@choices_nr] = "There were many valuable books in your library, right?";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoStartMaterials;
+
+L_NoStartMaterials:
+ if ((@material == 0) || (@material == 15))
+ goto L_NoMaterials;
+ @choice_idx[@choices_nr] = @C_materials;
+ @choice$[@choices_nr] = "I brought some material to repair the books.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoMaterials;
+
+L_NoMaterials:
+ if (@slimes > 0)
+ goto L_NoStartSlimes;
+ @choice_idx[@choices_nr] = @C_startSlimes;
+ @choice$[@choices_nr] = "Those slimes really caused a mess!";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoStartSlimes;
+
+L_NoStartSlimes:
+ if ((@slimes == 0) || (@slimes == 255))
+ goto L_NoSlimes;
+ @choice_idx[@choices_nr] = @C_slimes;
+ @choice$[@choices_nr] = "I'm hunting the remaining slimes in the library.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoSlimes;
+
+L_NoSlimes:
+ if (QL_BSAGE_INVESTIGATE > 0 && QL_BSAGE_INVESTIGATE < 13)
+ goto L_NoStartInvestigate;
+ @choice_idx[@choices_nr] = @C_startInvestigate;
+ @choice$[@choices_nr] = "How did this all happen?";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoStartInvestigate;
+
+L_NoStartInvestigate:
+ if ((QL_BSAGE_INVESTIGATE < 2) || (QL_BSAGE_INVESTIGATE > 11 && QL_BSAGE_INVESTIGATE < 13))
+ goto L_NoInvestigate;
+ @choice_idx[@choices_nr] = @C_investigate;
+ @choice$[@choices_nr] = "I'm trying to find out how that accident could've happened.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoInvestigate;
+
+L_NoInvestigate:
+ if (QL_BSAGE_INVESTIGATE != 11)
+ goto L_NoInvestigate2;
+ @choice_idx[@choices_nr] = @C_investigate2;
+ @choice$[@choices_nr] = "I told Chief Oskari what I found out about the accident.";
+ @choices_nr = @choices_nr + 1;
+ goto L_NoInvestigate2;
+
+L_NoInvestigate2:
+ @choice_idx[@choices_nr] = @C_nevermind;
+ @choice$[@choices_nr] = "Nevermind.";
+
+ menu
+ @choice$[0],L_MenuChoice,
+ @choice$[1],L_MenuChoice,
+ @choice$[2],L_MenuChoice,
+ @choice$[3],L_MenuChoice,
+ @choice$[4],L_MenuChoice,
+ @choice$[5],L_MenuChoice,
+ @choice$[6],L_MenuChoice,
+ @choice$[7],L_MenuChoice,
+ @choice$[8],L_MenuChoice,
+ @choice$[9],L_MenuChoice;
+
+L_MenuChoice:
+ @menu = @menu - 1;
+ if (@choice_idx[@menu] == 0)
+ goto L_close;
+ if (@choice_idx[@menu] == @C_startBookpages)
+ goto L_StartPagesAdvice;
+ if (@choice_idx[@menu] == @C_bookpages)
+ goto L_PagesAdvice;
+ if (@choice_idx[@menu] == @C_startMaterials)
+ goto L_StartMaterialAdvice;
+ if (@choice_idx[@menu] == @C_materials)
+ goto L_MaterialAdvice;
+ if (@choice_idx[@menu] == @C_startSlimes)
+ goto L_StartSlimesAdvice;
+ if (@choice_idx[@menu] == @C_slimes)
+ goto L_SlimesAdvice;
+ if (@choice_idx[@menu] == @C_startInvestigate)
+ goto L_StartInvAdvice;
+ if (@choice_idx[@menu] == @C_investigate)
+ goto L_InvestigateAdvice;
+ if (@choice_idx[@menu] == @C_investigate2)
+ goto L_InvestigateAdvice2;
+ if ((@choice_idx[@menu] == @C_nevermind))
+ goto L_close;
+ goto L_close;
+
+L_StartPagesAdvice:
+ // I heard the slimes ate most of the books...
+ mes "[Nikolai]";
+ mes "\"This is true. But while hunting the slimes we discovered that they occasionaly drop bookpages that are still legible.";
+ mes "Since we had several copies of nearly all the books, we might be able to recreate most of them if we can get at least one copy of each page.\"";
+ goto L_close;
+
+L_PagesAdvice:
+ // I'm collecting lost bookpages.
+ mes "[Nikolai]";
+ mes "\"Excellent! This will save us a lot of time. Ensio coordinates the sorting of the pages.\"";
+ goto L_close;
+
+L_StartMaterialAdvice:
+ // There were many valuable books in your library, right?
+ mes "He sighs.";
+ mes "[Nikolai]";
+ mes "\"Yes. There were some really old and rare pieces.\"";
+ next;
+ mes "\"We're going to recreate some of them, but I'm not sure if we have all the needed materials. If you'd like to help you could ask around if someone is missing something.\"";
+ goto L_close;
+
+L_MaterialAdvice:
+ // I brought some material to repair the books.
+ mes "[Nikolai]";
+ mes "\"That's very generous! Though I think not everyone has all they need yet.\"";
+ goto L_close;
+
+L_StartSlimesAdvice:
+ // Those slimes really caused a mess!
+ mes "[Nikolai]";
+ mes "\"Indeed. My helpers did great work to clean the worst of it, but there are still some remaining slimes in the deeper parts of the library.\"";
+ goto L_close;
+
+L_SlimesAdvice:
+ // I'm hunting the remaining slimes in the library.
+ mes "[Nikolai]";
+ mes "\"You're a great help! All helpers who would be capable of dealing with the slimes are occupied with other tasks.\"";
+ goto L_close;
+
+L_StartInvAdvice:
+ // How did this all happen?
+ mes "[Nikolai]";
+ mes "\"We're not sure yet. The helper who was responsible for sealing away the slimes has been sent to his room until the situation calms down and we can start an investigation.\"";
+ goto L_close;
+
+L_InvestigateAdvice:
+ // I'm trying to find out how that accident could've happened.
+ mes "[Nikolai]";
+ mes "\"I see. Well, we were too busy to start with that ourselves, but having someone unbiased looking at this case might be a good thing.\"";
+ next;
+ mes "\"It might be good if you talk to Elias at the reception. He usually has a very good overview of all the things going on and especially about visitors.\"";
+ goto L_close;
+
+L_InvestigateAdvice2:
+ // I told Chief Oskari what I found out about the accident.
+ mes "[Nikolai]";
+ mes "\"Yes, he already let me know. Your investigations were very helpful! This is surely something we need to look into further.\"";
+ next;
+ mes "\"Did you already talk to Peetu? I'm sure he'll be glad to know about your results as well.\"";
+ goto L_close;
+
+L_GrimoireReward:
+ mes "[Nikolai]";
+ mes "\"Ah, " + strcharinfo(0) + "! We're making excellent progress with our attempts to recover the important and valuable of the destroyed books, all thanks to you.\"";
+ next;
+ mes "\"I'd like you to have this as a reward for your help.\"";
+ getinventorylist;
+ if ((checkweight("Grimoire", 1) == 0) || (@inventorylist_count == 100))
+ goto L_Full_Inv;
+ getitem "Grimoire", 1;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageGrimoire;
+ mes "He hands you a very precious book.";
+ next;
+ mes "\"This is an artifact of great power, and holding it while attempting to use magic will allow you to access your inner magic power much better. Use it wisely.\"";
+ goto L_close;
+
+L_SlimesReward:
+ mes "[Nikolai]";
+ mes "\"Ah, I heard you took care of the remaining slimes in the library!\"";
+ next;
+ mes "\"While looking through some old artifacts that we found during the cleaning, we found this sword. We don't really have a use for it.\"";
+ getinventorylist;
+ if ((checkweight("IceGladius", 1) == 0) || (@inventorylist_count == 100))
+ goto L_Full_Inv;
+ getitem "IceGladius", 1;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageIceSword;
+ mes "He gives you a sword with a shimmering blue blade.";
+ next;
+ mes "\"I'm sure you can use this well.\"";
+ goto L_close;
+
+L_Full_Inv:
+ mes "[Nikolai]";
+ mes "\"You have a very full backback. Please come back when you have more room available.\"";
+ goto L_close;
+
+L_Done:
+ mes "[Nikolai]";
+ mes "\"Thanks for all of your help.\"";
+ goto L_close;
+
+L_close:
+ @inventorylist_count = 0;
+ @bookpages = 0;
+ @slimes = 0;
+ close;
+}
diff --git a/npc/048-2/slimes.txt b/npc/048-2/slimes.txt
new file mode 100755
index 00000000..c3d4e5c8
--- /dev/null
+++ b/npc/048-2/slimes.txt
@@ -0,0 +1,603 @@
+
+
+
+048-2,181,95,0 script #Slime0Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime0::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime0_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime0_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime0))
+ end;
+
+ @spawnSlime0 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime0VictimID = getcharid(3);
+ donpcevent "#Slime0::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,181,95,0 script #Slime0 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime0VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime0_Spawn = $@BlueSageSlime0_Amount;
+ areamonster "048-2", 178, 92, 184, 98, "", 1093, $@BlueSageSlime0_Spawn, "#Slime0::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime0_Spawn = $@BlueSageSlime0_Spawn - 1;
+ if (mobcount("048-2", "#Slime0::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime0_Spawn = 0;
+
+ if ($@Slime0VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime0_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime0VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime0 = @spawnSlime0 + 1;
+ if ($@BlueSageSlime0_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime0 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime0VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime0_Amount - @spawnSlime0) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime0;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime0 = 0;
+ goto L_Clean;
+}
+
+
+048-2,164,123,0 script #Slime1Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime1::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime1_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime1_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime1))
+ end;
+
+ @spawnSlime1 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime1VictimID = getcharid(3);
+ donpcevent "#Slime1::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,164,123,0 script #Slime1 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime1VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime1_Spawn = $@BlueSageSlime1_Amount;
+ areamonster "048-2", 161, 120, 167, 126, "", 1093, $@BlueSageSlime1_Spawn, "#Slime1::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime1_Spawn = $@BlueSageSlime1_Spawn - 1;
+ if (mobcount("048-2", "#Slime1::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime1_Spawn = 0;
+
+ if ($@Slime1VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime1_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime1VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime1 = @spawnSlime1 + 1;
+ if ($@BlueSageSlime1_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime1 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime1VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime1_Amount - @spawnSlime1) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime1;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime1 = 0;
+ goto L_Clean;
+}
+
+
+048-2,198,115,0 script #Slime2Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime2::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime2_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime2_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime2))
+ end;
+
+ @spawnSlime2 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime2VictimID = getcharid(3);
+ donpcevent "#Slime2::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,198,115,0 script #Slime2 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime2VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime2_Spawn = $@BlueSageSlime2_Amount;
+ areamonster "048-2", 195, 112, 201, 118, "", 1093, $@BlueSageSlime2_Spawn, "#Slime2::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime2_Spawn = $@BlueSageSlime2_Spawn - 1;
+ if (mobcount("048-2", "#Slime2::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime2_Spawn = 0;
+
+ if ($@Slime2VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime2_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime2VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime2 = @spawnSlime2 + 1;
+ if ($@BlueSageSlime2_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime2 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime2VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime2_Amount - @spawnSlime2) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime2;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime2 = 0;
+ goto L_Clean;
+}
+
+
+048-2,167,79,0 script #Slime3Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime3::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime3_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime3_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime3))
+ end;
+
+ @spawnSlime3 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime3VictimID = getcharid(3);
+ donpcevent "#Slime3::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,167,79,0 script #Slime3 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime3VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime3_Spawn = $@BlueSageSlime3_Amount;
+ areamonster "048-2", 164, 76, 170, 82, "", 1093, $@BlueSageSlime3_Spawn, "#Slime3::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime3_Spawn = $@BlueSageSlime3_Spawn - 1;
+ if (mobcount("048-2", "#Slime3::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime3_Spawn = 0;
+
+ if ($@Slime3VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime3_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime3VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime3 = @spawnSlime3 + 1;
+ if ($@BlueSageSlime3_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime3 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime3VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime3_Amount - @spawnSlime3) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime3;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime3 = 0;
+ goto L_Clean;
+}
+
+
+048-2,192,86,0 script #Slime4Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime4::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime4_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime4_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime4))
+ end;
+
+ @spawnSlime4 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime4VictimID = getcharid(3);
+ donpcevent "#Slime4::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,192,86,0 script #Slime4 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime4VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime4_Spawn = $@BlueSageSlime4_Amount;
+ areamonster "048-2", 189, 83, 195, 89, "", 1091, $@BlueSageSlime4_Spawn, "#Slime4::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime4_Spawn = $@BlueSageSlime4_Spawn - 1;
+ if (mobcount("048-2", "#Slime4::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime4_Spawn = 0;
+
+ if ($@Slime4VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime4_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime4VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime4 = @spawnSlime4 + 1;
+ if ($@BlueSageSlime4_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime4 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime4VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime4_Amount - @spawnSlime4) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime4;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime4 = 0;
+ goto L_Clean;
+}
+
+
+048-2,183,110,0 script #Slime5Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime5::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime5_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime5_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime5))
+ end;
+
+ @spawnSlime5 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime5VictimID = getcharid(3);
+ donpcevent "#Slime5::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,183,110,0 script #Slime5 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime5VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime5_Spawn = $@BlueSageSlime5_Amount;
+ areamonster "048-2", 180, 107, 186, 113, "", 1091, $@BlueSageSlime5_Spawn, "#Slime5::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime5_Spawn = $@BlueSageSlime5_Spawn - 1;
+ if (mobcount("048-2", "#Slime5::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime5_Spawn = 0;
+
+ if ($@Slime5VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime5_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime5VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime5 = @spawnSlime5 + 1;
+ if ($@BlueSageSlime5_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime5 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime5VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime5_Amount - @spawnSlime5) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime5;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime5 = 0;
+ goto L_Clean;
+}
+
+
+048-2,164,102,0 script #Slime6Trigger NPC32767,2,2,{
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+
+ if (mobcount("048-2", "#Slime6::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime6_Spawn = 0;
+
+ // if finished or haven't started yet or spawn already active or spawn already done, do nothing
+ if ((@slimes == 0) || ($@BlueSageSlime6_Spawn > 0) || (QUEST_BlueSage & $@Q_BlueSageSlime6))
+ end;
+
+ @spawnSlime6 = 0;
+ @chance = rand(20);
+ if (@chance < 6)
+ goto L_End;
+ if (@chance < 7)
+ goto L_BlowUp;
+
+ $@Slime6VictimID = getcharid(3);
+ donpcevent "#Slime6::OnSpawn";
+ goto L_End;
+
+L_BlowUp:
+ heal -Hp, 0;
+ message strcharinfo(0), "A slime dripped out of a bookshelf right in front of you and stepped onto it. It exploded. That hurt.";
+ goto L_End;
+
+L_End:
+ @chance = 0;
+ @slimes = 0;
+ end;
+}
+
+048-2,164,102,0 script #Slime6 NPC32767,{
+ end;
+
+OnSpawn:
+ if (attachrid($@Slime6VictimID) == 0)
+ goto L_Clean;
+ $@BlueSageSlime6_Spawn = $@BlueSageSlime6_Amount;
+ areamonster "048-2", 161, 99, 167, 105, "", 1091, $@BlueSageSlime6_Spawn, "#Slime6::OnSlimeDeath";
+ message strcharinfo(0), "You notice a group of slimes emerging from the debris among the shelves.";
+ end;
+
+OnSlimeDeath:
+ $@BlueSageSlime6_Spawn = $@BlueSageSlime6_Spawn - 1;
+ if (mobcount("048-2", "#Slime6::OnSlimeDeath") < 0) // returns -1 if no monsters
+ $@BlueSageSlime6_Spawn = 0;
+
+ if ($@Slime6VictimID == getcharid(3))
+ goto L_Count;
+ if ($@BlueSageSlime6_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_Clean:
+ $@Slime6VictimID = 0;
+ end;
+
+L_Count:
+ @spawnSlime6 = @spawnSlime6 + 1;
+ if ($@BlueSageSlime6_Spawn == 0)
+ goto L_ClearedPoint;
+ end;
+
+L_SlimesEscaped:
+ @spawnSlime6 = 0;
+ message strcharinfo(0), "You don't see any slimes from that nest anymore. But did you really get all of them?";
+ goto L_Clean;
+
+L_ClearedPoint:
+ if (attachrid($@Slime6VictimID) == 0)
+ goto L_Clean;
+ if (rand($@BlueSageSlime6_Amount - @spawnSlime6) != 0)
+ goto L_SlimesEscaped;
+ QUEST_BlueSage = QUEST_BlueSage | $@Q_BlueSageSlime6;
+ message strcharinfo(0), "It wasn't easy, but you think that you extinguished this nest.";
+
+ @slimes = ((QUEST_BlueSage & $@Q_BlueSageSlimes_MASK) >> $@Q_BlueSageSlimes_SHIFT);
+ if (@slimes == 255)
+ message strcharinfo(0), "That was a lot of slimes. You wonder if you're done now.";
+ @slimes = 0;
+ @spawnSlime6 = 0;
+ goto L_Clean;
+}
diff --git a/npc/048-2/traveler.txt b/npc/048-2/traveler.txt
new file mode 100755
index 00000000..41a66bda
--- /dev/null
+++ b/npc/048-2/traveler.txt
@@ -0,0 +1,7 @@
+
+048-2,23,46,0 script Drake the Traveler NPC103,{
+ @npcname$ = "Drake";
+ @NpcTravelBit = $@blue_sage_bit;
+ callfunc "Traveler";
+ end;
+}
diff --git a/npc/048-2/visitors.txt b/npc/048-2/visitors.txt
new file mode 100755
index 00000000..9227627b
--- /dev/null
+++ b/npc/048-2/visitors.txt
@@ -0,0 +1,36 @@
+
+048-2,46,44,0 script Connor NPC150,{
+ mes "[Connor]";
+ mes "\"Oh, hello. There was a big accident in the library! Most of the books were damaged or destroyed!\"";
+ next;
+ mes "\"As far as I understand it had to do with those weird slimes. They're white and blue! I've never seen slimes of that color.\"";
+ next;
+ mes "\"I was so excited to get an opportunity to study some of the rare and valuable books and now this.";
+ mes "I'd never have expected something like this happening in a Sages household. I thought they're so powerful and wise...\"";
+ close;
+}
+
+048-2,28,30,0 script Parcival NPC153,{
+ mes "[Parcival]";
+ mes "\"Hello young one. Did you also come here to see the library?\"";
+ menu
+ "Nah, I'm just having a look around.",L_close,
+ "Yes!", L_More;
+
+L_More:
+ mes "[Parcival]";
+ mes "\"That's very commendable. But you'll be disappointed, there is a huge problem and the library is all upside down.";
+ mes "This is very annoying! I was planning this trip for months and now this!\"";
+ mes "He sighs.";
+ next;
+ mes "[Parcival]";
+ mes "\"I'll probably have to leave and come back another time. But I want to warm up first.\"";
+ next;
+ mes "\"I wonder what they did... I can still feel some distortion in the magic pattern within this mansion. I mean, it's twisted anyway, because the Sages have their houses in a shifted dimension - that's why it is so much larger in the inside than from the outside.\"";
+ next;
+ mes "\"But there's something else... Well, I've heard about the research being done here. Seems there's some very advanced magic involved.\"";
+ goto L_close;
+
+L_close:
+ close;
+}