// TMW2 scripts. // Authors: // Jesusalva // Description: // Sagratha (variables SAGRATHA_SCORE and SAGRATHA_FRIENDSHIP) // SaggyScoreUpdate( amount ) function script SaggyScoreUpdate { .@val=getarg(0); SAGRATHA_SCORE=max(-50, min(50, SAGRATHA_SCORE+.@val)); return; } function script SaggyMobCount { switch (killedrid) { // She gets angry case Mouboo: case AlphaMouboo: SaggyScoreUpdate(-5); break; case Pollet: case Fluffy: case IcedFluffy: SaggyScoreUpdate(-3); break; case PoisonSpikyMushroom: case LogHead: case ForestMushroom: SaggyScoreUpdate(-2); break; case Squirrel: case SpringSquirrel: case LofSquirrel: case FrozenSquirrel: case FairysSquirrel: case MananaTree: SaggyScoreUpdate(-1); break; // She may get happy. Who knows. case ViciousSquirrel: case WickedMushroom: case Bluepar: case BlackScorpion: case Bandit: case RobinBandit: SaggyScoreUpdate(any(0,0,0,0,1)); break; } return; } 014-5-1,33,37,0 script Sagratha NPC_SAGRATHA,{ if (array_find(.SaggyHats, getequipid(EQI_HEAD_TOP)) >= 0) goto L_HatAttack; if (SAGRATHA_SCORE < 0) goto L_Unhappy; .@q=getq(HurnscaldQuest_Sagratha); .@m=getq(HurnscaldQuest_InjuriedMouboo); // Safety - Impossible Situation if (.@m < 2 || .@m > 3 || .@q < 6) { Exception("Player found cheating/breaking the rules. Character banned. Please contact GM Staff if you believe this is an error.", RB_DEFAULT|RB_SPEECH); atcommand "@jail 7h "+strcharinfo(0); close; } mesn; if (SAGRATHA_FRIENDSHIP >= 2) mesc l("@@ nods as she notices you.", .name$); else if (SAGRATHA_FRIENDSHIP == 1) mesc l("@@ raises an eyebrow as you address her.", .name$); else mesc l("@@ glances at you, suspicion evident in her eyes.", .name$); mesq l("Hello."); next; if (.@m == 2 && .@q == 6) goto L_Reward; if (.@q == 6) goto L_Finish; do { select l("Can I return to the shrine?"), l("Good bye."); mes ""; switch (@menu) { case 1: mesn; mesq l("Why would you want to go back there?"); mesc l("@@ snarls.", .name$); next; mesn; mesq l("That was a Moubootaur's temple. It is not the kind of place to give a stroll on the park."); next; mesn; mesq l("Did you noticed how no monster got close to it?"); next; select l("You're right. Sorry."), l("Don't worry, I'll stay at the caves."), l("I want to pay my respects as a fellow Pink Mouboo cult member."), l("But I need to!"); mes ""; if (@menu == 3) { mesn; mesq l("As a what?"); next; } else if (@menu == 4) { mesn; mesq l("No you don't. Don't disturb the forest for no reason."); close; } else if (@menu == 1) { mesn; mesq l("Hmpf. Wise choice."); next; break; // Return to the while loop } mesn; mesq l("As you wish. But do not mess with things you don't understand."); next; closeclientdialog; warp "015-8", 99, 178; close; default: close; } // TODO: Learn Magic // TODO: Request help with stuff (eg. protecting mouboos?) // TODO: Get Mouboo Milk :> } while (true); close; L_Finish: // WHAT if (.@m != 3) { Exception("Player found cheating/breaking the rules. Character banned. Please contact GM Staff if you believe this is an error.", RB_DEFAULT|RB_SPEECH); atcommand "@jail 7h "+strcharinfo(0); close; } mesn; mesq l("I haven't thanked you yet."); next; select l("You're welcome."), l("For the rescue? You didn't seemed to be in need of aid."), l("Yes, I'm awesome, praise me more."), l("For the mouboo? I was only doing my duty."); mes ""; mesn; if (@menu != 4) mesq l("Not for that! For helping out the injuried mouboo, of course."); else mesq l("Hmpf, it's good to see you're at least trying to follow Wyara's example."); next; mesn; mesq l("Anyway, Wyara told me about the assassins. I'm surprised they followed me until the ruins."); next; mesn; mesq l("I thought I would be safe in the shrine, but seems like they are after the Moubootaur. Great danger will befall all forest creatures if they accomplish that."); next; mesn; mesq l("This will affect humans, too, so don't act as if it is not your bussiness either."); next; mesn; mesq l("For now, take this @@. I hope that you will use this power for something good now.", getitemlink(AlchemyBlueprintB)); inventoryplace AlchemyBlueprintB, 1; getitem AlchemyBlueprintB, 1; getexp 24000, 0; // ~70% from level 40 (quest estimate level) Zeny+=3000; // About 50 carps sold SAGRATHA_FRIENDSHIP+=1; setq HurnscaldQuest_Sagratha, 7; close; L_Reward: select l("Hi! My name is @@.", strcharinfo(0)), l("Are you Sagratha?"), l("Good bye."); mes ""; if (@menu == 3) close; if (@menu == 1) { mesn; mesq l("Ah."); next; select l("Are you Sagratha?"), l("Erm... Good bye."); mes ""; if (@menu == 2) close; } mesn; mesq l("Yes."); next; mesn; mesq l("Do you need something from me?"); next; // A check is not needed, because quest pre-requisites // If you don't have the quest in clearable state... CHEAT! select l("Yep. There was a cursed mouboo on the road."), l("Not really."); mes ""; if (@menu == 2) { mesn; mesq l("Okay then."); close; } mesn; mesq l("Yes, the cursed Mouboo you told me earlier, on the way out."); next; mesn; mesq l("The curse was done by nobody less than... the Moubootaur."); next; mesn; mesq l("Well. I'll take care of that, don't worry with that."); next; mesn; mesq l("It's my duty to protect the beings in the forest... Not all of them are monsters as @@s like you think.", get_race()); compareandsetq HurnscaldQuest_InjuriedMouboo, 3; SAGRATHA_FRIENDSHIP+=1; close; L_HatAttack: mesn; mesc l("@@ seems to be trembling with disgust as she stares at your headgear.", .name$); next; mesn; mesq l("Do you think that is funny?"); mesc l("@@ snarls.", .name$); next; mesn; mesq l("You have no idea what that poor creature felt!"); next; mesn; mesc l("She snaps her fingers."); mesq l("Let me show you..."); specialeffect 312, SELF, getcharid(3); percentheal -30, 0; close; L_Unhappy: mesn; mesc l("@@ glares at you in anger.", .name$); mesq l("I wonder if you can still sleep after killing those innocent forest creatures!"); next; mesn; mesq l("I am sure that they will come back to haunt you in your dreams!"); close; OnInit: setarray .SaggyHats, FluffyHat, MoubooHat, AlphaMoubooHat; .distance=5; npcsit; end; OnInstanceInit: disablenpc instance_npcname(.name$); end; }