summaryrefslogblamecommitdiff
path: root/npc/001-2-2/moon.txt
blob: ea76d3b733968674f183feebbd784ea94f748aef (plain) (tree)





















































































































































































































                                                                                                                      
// Evol scripts.
// Authors:
//    Reid
//    Travolta
// Description:
//    Moon, main NPC for the urchin quest.
// Variables:
//    ArtisQuests_Urchin  - quest var
// Quest stages:
//    0  - not started
//    1  - started, searching for Croc Claws
//    2  - quest finished

001-2-2,33,32,0	script	Moon#001-2-2	NPC_ELVEN_FEMALE,3,3,{

    function SayRandomGreeting {
        .@q = getq(ArtisQuests_Urchin);
        .@tick = gettimetick(1);
        if (.@tick > @ArtisQuests_Urchin_MoonMsgTick + 12)
        {
            setarray .messages$[0], l("Ouch!"), l("It hurts so bad!"),
                                    l("Help me!"), l("Hurry up!"),
                                    l("I can't wait all day!"),
                                    l("I need more Croc Claws."),
                                    l("What a relief."),
                                    l("No more pain, thanks to you."),
                                    l("I can walk again!");
            setarray .msg_first[0], 0, 3, 6;
            setarray .msg_last[0], 2, 5, 8;
            .@r = rand(.msg_first[.@q],.msg_last[.@q]);
            .@msg$ = .messages$[.@r];
            npctalk3 .@msg$;
            @ArtisQuests_Urchin_MoonMsgTick = .@tick;
        }
    }

    function CheckCrowClaw {
        if (getq(ArtisQuests_Urchin) != 1)
            return -1;

        mes "";
        mesn;
        if (countitem("CrocClaw") > 0)
        {
            delitem "CrocClaw", 1;
            if (rand(8) == 7)  // the lucky 7
            {
                mesq l("Yay, it worked! I removed a spike.");
                ArtisQuests_Urchin_ULeft--;
                next;
                if (!ArtisQuests_Urchin_ULeft)
                {
                    mesq l("It seems I got them all!");
                    next;
                    mesq l("Here is your reward.");
                    setq ArtisQuests_Urchin, 2;
                    getexp 1500, 100;
                    close2;
                    return 1;
                }
                else
                {
                    mesq l("But I still have some spikes left in my foot.");
                    next;
                    return 0;
                }
            }
            else
            {
                mesq l("This one is useless! Give me another @@.", getitemlink("CrocClaw"));
                next;
                return 0;
            }
        }
        else
        {
            mesq l("You don't have any @@, are you mocking me?", getitemlink("CrocClaw"));
            close2;
            return 1;
        }
    }

    stopnpctimer;

    .@q = getq(ArtisQuests_Urchin);
    if (.@q < 2)
    {
        mesn "Narrator";
        mes col(l("You see a young elven girl, with a strong sense of pain in her face."), 9);
        next;
    }
    else
    {
        mesn;
        mesq l("I appreciate your help, @@.", strcharinfo(0));
        goto L_Close;
    }
    if (.@q == 1) goto L_QuestStarted;

L_Story:
    select
        l("Hi, can I help you somehow?");
    mes "";
    mesn;
    mesq l("That would be great!");
    next;
    mesq l("Hi, my name is Moon. This morning I went for a walk on the beach.");
    next;
    mesq l("Walking barefoot, feeling the hot sand with my feet, daydreaming... I like such things, you know.");
    next;
    mesq l("I didn't notice that a Pikpik was in my way, and when I stepped on it, my foot was full of spikes.");
    next;
    mesq l("Luckily the beach is nearby, and somehow I made my way home.");
    next;
    mesq l("Please bring me @@s so I can pull out these spikes from my foot.", getitemlink("CrocClaw"));
    next;

    switch (select(l("Stay here, I will be back as soon as I have some."),
                   l("Maybe next time.")))
    {
        case 1:
            setq ArtisQuests_Urchin, 1;
            mes "";
            mesn;
            mesq l("It really hurts, please hurry!");

            ArtisQuests_Urchin_ULeft = rand(3,5);

            next;
            goto L_Where;
            break;
        case 2:
            mes "";
            mesn "Narrator";
            mes col(l("The girl looks desperate."),9);
    }
    goto L_Close;

L_QuestStarted:
    mesn;
    mesq l("Do you have @@s for me?", getitemlink("CrocClaw"));
    next;

    select
        l("Check out this one."),
        l("I should put more effort into this."),
        l("Where can I find some Croc Claws?");

    switch (@menu)
    {
        case 1:
            .@MustRepeat = CheckCrowClaw;
            if (!.@MustRepeat)
                goto L_CheckLoop;
            goto L_Close;
        case 2:
            mes "";
            mesn;
            mesq l("It really hurts, please hurry!");
            goto L_Close;
        case 3:
            mes "";
            mesn;
            goto L_Where;
    }

L_CheckLoop:
    while (!.@MustRepeat)
    {
        switch (select(l("Here is another one."),
                       l("I must leave to get more.")))
        {
            case 1:
                .@MustRepeat = CheckCrowClaw;
                break;
            case 2:
                goto L_Close;
        }
    }
    goto L_Close;

L_Where:
    mesq l("You can find some Crocs on the beach, you could look up at the one after the gate, on top of this city.");

    goto L_Close;

L_Close:
    initnpctimer;
    close;

OnTimer1000:
    domovestep;

OnTouch:
    SayRandomGreeting;
    end;

OnHour00:
    if (playerattached())
       @ArtisQuests_Urchin_MoonMsgTick = 0;
    end;

OnInit:
    .sex = G_FEMALE;
    .distance = 3;
    initpath "move", 41, 30,
             "dir", DOWN, 0,
             "wait", 2, 0,
             "move", 33, 32,
             "dir", DOWN, 0,
             "wait", 10, 0;
    initialmove;
    initnpctimer;
}