// TMW2 scripts. // Authors: // Jesusalva // TMW Org. // Description: // Peetu, gifted since birth, only 1 NPC each 100 are born mages // // NivalisQuest_BlueSage STRUCTURE // FIELD 1: // INVESTIGATION // 1 - STBY OUTSIDE // 2 - ACCESS GRANTED - But Peetu is crying too much // 3 - Peetu was calmed down, go talk to Oskari about him // 4 - Oskari is OK with peetu, but wanna hear from others. He also sends you // to ask what Peetu happened // 5 - Adultered ingredients seems the cause, report to Elias // 6 - Elias is now worried about a visitor. Ask people about and report. // 7 - If everyone found the visitor, confirm Elias the worries // 8 - Elias sent you to Oskari to inform the issue. Blue Sage probably knew all along. // will not advance unless everyone thinks Peetu is good. // 9 - Oskari accepts the cause. Tells to report Peetu that it probably was // a saboutage, to check if the Silk Cocoon really was there. // 10 - Peetu confirmed the saboutage. Report to Blue Sage. // 11 - Blue Sage accepted the evidence, and explains about other sages issues. // It's not known who or what is behind this. He excuses for making you waste // your time. He asks you to return to him later, as he needs to write letters. // 12 - QUEST COMPLETE - You collected your reward // Also picked up a letter for Frostia Mayor, about the incident (Main Story). // FIELD 2: // Bitwise (BS_QVISITOR) // FIELD 3: // Bitwise (BS_QHELPER) 020-7-1,122,27,2 script Peetu NPC_BLUESAGEWORKER_MA,{ function pWaiting; function pIntro; function pContinue; function pReflection; function pInvestigation; function pComplete; .@q=getq(NivalisQuest_BlueSage); .@q2=getq2(NivalisQuest_BlueSage); .@q3=getq3(NivalisQuest_BlueSage); if (.@q <= 4) npctalk3 any(l("*sob sob*"), l("*crying*")); switch (.@q) { case 2: pIntro(); break; case 3: pWaiting("Oskari"); break; case 4: pReflection(); break; case 5: case 6: case 7: case 8: pWaiting("Oskari"); break; case 9: pInvestigation(); break; case 10: case 11: pWaiting("Blue Sage"); break; case 12: pComplete(); break; default: warp "Save", 0, 0; percentheal -100, -100; end; break; } close; // Here we begin function pWaiting { .@name$=getarg(0, "##1##BBUG, REPORT ME: THE FLYING COW##0##b"); mesn; mesc l("*sniff sniff*"); mesq l("I'm waiting for @@ feedback... Please go talk to them! %%S", .@name$); close; } // Peetu is too upset with failing (yeah, he is that kind of perfectionist here). // We should find a way to calm him down. function pIntro { .@q=getq(NivalisQuest_BlueSage); .@q2=getq2(NivalisQuest_BlueSage); .@q3=getq3(NivalisQuest_BlueSage); mesn; mesc l("*sniff sniff*"); next; select l("Hello Peetu."), rif(.@q2 >= 1, l("[Give him some salty Sea Drops?]")), rif(.@q2 >= 2, l("[Give him some tasty Chocolate Bar?]")), rif(.@q2 >= 3, l("[Give him a Mouboo Figurine to play with?]")), rif(.@q2 >= 4, l("[Slap his hands to surprise him and get his attention?]")), rif(.@q2 >= 5, l("SHUT UP PEETU, I'M ALREADY TIRED OF LISTENING YOUR CRIES!")), rif(.@q2 >= 5, l("I give up. You're hopeless.")), rif(.@q2 >= 5, l("Have you cried enough?")), rif(.@q2 >= 5, l("[Pat his shoulder and say everything will be fine.]")), rif(.@q2, l("Hi Peetu, are you calmer now?")); mes ""; switch (@menu) { case 1: if (.@q2 < 1) setq2 NivalisQuest_BlueSage, 1; case 2: if (!countitem(SeaDrops)) { mesc l("You don't have @@.", getitemlink(SeaDrops)); } if (.@q2 < 2) setq2 NivalisQuest_BlueSage, 2; break; case 3: if (!countitem(ChocolateBar)) { mesc l("You don't have @@.", getitemlink(ChocolateBar)); } if (.@q2 < 3) setq2 NivalisQuest_BlueSage, 3; break; case 4: if (!countitem(MoubooFigurine)) { mesc l("You don't have @@.", getitemlink(MoubooFigurine)); } if (.@q2 < 4) setq2 NivalisQuest_BlueSage, 4; break; case 5: mesn; mesq l("AH!"); next; mesc l("You seem to have gotten Peetu's attention for a while."); next; if (.@q2 < 5) setq2 NivalisQuest_BlueSage, 5; break; case 9: pContinue(); break; } mesn; mes l("WAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHH"); mesc l("@@ burst in tears.", .name$); next; mesn strcharinfo(0); mesc l("I probably should look in a way of calming him down."); close; } // He is calmer now function pContinue { mesn; mesc l("*sniff sniff*"); next; select l("What have happened? Why are you crying?"), l("Maybe I can help to ease your pain?"), l("Don't cry any further. I am here to help."), l("Please tell me calmly what happened so I can help."); mes ""; mesn; mesq l("It's *sniff* It's all my fault... *sniff*"); next; mesn; mesc l("*sniff* *sniff*"); mesq l("It was my job to seal the slimes away for the night, but I somehow messed it up!"); next; mesn; mesc l("*tears weeling up*"); mesq l("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!"); next; mesc l("@@ latches onto you and starts sobbing on your shoulder.", .name$); select l("[Try to console him]"), l("[Shake him and tell him to pull himself together]"), l("[Push him away from you and leave]"); mes ""; if (@menu == 3) { setq2 NivalisQuest_BlueSage, 4; close; } mesc l("@@ calms a bit.", .name$); next; mesn; mesq l("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?"); next; mesn; mesq l("I would kick me out myself! I'm such a failure! A complete disaster! %%V"); next; select l("Maybe you should talk to your chief about that?"), l("It doesn't make much sense to draw overhasty conclusions."), l("Do you have a clue about what went wrong?"); mes ""; mesn; mesq l("Well ... but ... I mean ... I don't know ... "); next; mesn; mesq l("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."); setq NivalisQuest_BlueSage, 3, 0; close; } // Report that Oskari is not planning to fire him (yet), and is trying to understand // what went wrong so it do not repeat. function pReflection { .@q=getq(NivalisQuest_BlueSage); .@q2=getq2(NivalisQuest_BlueSage); .@q3=getq3(NivalisQuest_BlueSage); mesn; mesc l("*sniff sniff*"); mesq l("I'm waiting for ##1##BBUG, REPORT ME: PEETU IS WAITING THE FLYING COW##0##b feedback... Please go talk to them! %%S", .@name$); close; } // Peetu hurries back to check what happened. Wait 3 minutes in the library. // He'll then say that in fact there was silk cocoon function pInvestigation { .@q=getq(NivalisQuest_BlueSage); .@q2=getq2(NivalisQuest_BlueSage); .@q3=getq3(NivalisQuest_BlueSage); mesn; mesc l("*sniff sniff*"); mesq l("I'm waiting for ##1##BBUG, REPORT ME: PEETU IS WAITING THE FLYING COW##0##b feedback... Please go talk to them! %%S", .@name$); close; } // The crime was "solved" function pComplete { mesn; mesq l("Oh, hey, welcome back, @@! Many thanks for helping me!", strcharinfo(0)); next; mesn; .@subject$=any(l("town finances"), l("house finances"), l("town damage by monsters"), l("library damage"), l("supply report"), l("magic book"), l("town overview")); mesq l("I'm currently going over some of the household paperwork. Right now I'm inspecting the @@. The work never stops!", .@subject$); close; } OnInit: .sex=G_MALE; .distance=5; npcsit; end; }