summaryrefslogblamecommitdiff
path: root/npc/014-5-1/sagratha.txt
blob: f59e277c9aedb3af3f65f72f9533bc6267309fae (plain) (tree)
1
2
3
4
5
6





                


















                                                           




                                 




                            
                                 

                  
                                        


                             



                                         




                  
                                                      




                                                              
                                      







                                                                                                                                                                
 









                                                                            

         
                             
                      

                      
 





                                                                                
          
 







































                                                                                                                                                                            
























                                                

                                                               
          
                                                         
                         












                                                                          




                                                                                                                                  

          


                                                                                            



                                          







                                                             
                       










                                                                                             
       

                                                              








                                        
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Sagratha

// 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:
            SaggyScoreUpdate(-1);
            break;

        // She may get happy. Who knows.
        case ViciousSquirrel:
        case WickedMushroom:
        case Bluepar:
        case BlackScorpion:
        case AngryScorpion:
        case AngryRedScorpion:
            SaggyScoreUpdate(any(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 (.@good >= 2)
        mesc l("@@ nods as she notices you.", .name$);
    if (.@good == 1)
        mesc l("@@ raises an eyebrow as you address her.", .name$);
    if (.@good == 0)
        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;

    // TODO: Allow to return to the Sealed Shrine
    // TODO: Learn Magic
    // TODO: Request help with stuff (eg. protecting mouboos?)
    // TODO: Get Mouboo Milk :>
    // TODO: Maybe never update her score with kills and make her more pacifist?

    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
    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;
    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;
}