// 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("I would like some Mouboo Milk."),
l("Good bye.");
mes "";
switch (@menu) {
// XXX: Sealed Shrine
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;
// XXX: Mouboo Milk
case 2:
if (SAGRATHA_SCORE < 50) {
mesn;
mesq l("You don't need, nor deserve it.");
next;
mesn;
mesq l("Learn milking a Mouboo. And if you harm them, I'll cast a lightning bolt at you!");
next;
break;
}
if (SAGRATHA_MILK > gettimeparam(GETTIME_HOUR)) {
mesn;
mesq l("I just gave you it. Come back later.");
next;
break;
}
inventoryplace Milk, 2;
SAGRATHA_SCORE-=8; // :o
SAGRATHA_MILK=gettimeparam(GETTIME_HOUR)+4;
getitem Milk, 2;
mesn;
mesq l("Here. You know that milking Mouboos won't cause them harm, right? It's a different story with @@.", getitemlink(MoubooSteak));
close;
break;
default:
close;
}
// TODO: Learn Magic
// TODO: Request help with stuff (eg. protecting mouboos?)
} 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;
}