summaryrefslogblamecommitdiff
path: root/npc/001-2-22/alige.txt
blob: 4f4fab9d77a81cb160279302537d619dfaa09ef9 (plain) (tree)


















                              
                                                                        

        






                                   
                                          
                                            


          






                                   


           

                 

                                                                  
 


        
                                                           














                                                     

                                           


                    
                                               














                                                                                           
                      





















                                                                                                                              
                                                                                                                                                                           
         
                                                                                                                                            


















                                                                                                                                                        
                                                 


                                                                 
                                                                          






              
                                                                           



















                                                                                     
                                                         




               












                                                                                                              
 
                                







                                                                
                                  








                                                                               
         



                    

              
                                            

















                                                                    



                    





















                                                                                                              
         
               





















                                                                                       
                                                 


                                                                 
                                                                          










                                                                                                                                            
                                                                                                                 


                    
                                                                                                                                                                     
         
                                                                                                                                                       






              
                                                                                                        



          
                  




                                                                                                                                                                   

        
// Evol scripts.
// Authors:
//    Ablu
//    Alige
//    Qwerty Dragon
//    Reid
//    Vasily_Makarov
// Description:
//    Hidden in a ship's hole.
// 2 bits array:
//    ShipQuests
// Variable:
//    ShipQuests_Alige
// Values:
//    0   Never talk.
//    1   First talk.
//    2   Accept the task.
//    3   Bring first food.

001-2-22,43,32,0	script	AligeTrigger#Artis	NPC_HIDDEN,1,1,{

OnTouch:
    if (getareausers() <= 1)
    {
        setnpcdir "Alige#Artis", 2;
        stopnpctimer;
        initnpctimer;
    }

    if (getq(ShipQuests_Alige) > 0) close;
    doevent "Alige#Artis::OnFirstEncounter";

    close;

OnUnTouch:
    if (getareausers() == 0)
    {
        setnpcdir "Alige#Artis", 4;
        stopnpctimer;
        initnpctimer;
    }
    close;

OnTimer190:
    stopnpctimer;

    if (getnpcdir("Alige#Artis") == 2) setnpcdir "Alige#Artis", 6;
    if (getnpcdir("Alige#Artis") == 4) setnpcdir "Alige#Artis", 8;

    end;
}

001-2-22,43,31,0	script	Alige#Artis	NPC_ALIGE,{
    .@q = getq(ShipQuests_Alige);
    if (.@q > 1) goto L_AskForFood;

    goto OnFirstEncounter;

OnFirstEncounter:
    setq ShipQuests_Alige, 1;

    setcamnpc;
    mesn "Hidden Person";
    mesq l("Hey, psst! You're not a sailor, right?");
    next;
    restorecam;

    menu
        l("I am, who are you?"), -,
        l("Indeed, I am not."), L_NeedHelp;

    mes "";
    mesn "Narrator";
    mesc(l("The stowaway doesn't answer."), 9);

    close;

L_NeedHelp:
    setcamnpc;
    mes "";
    mesn "Hidden Person";
    mesq l("Good, good... Hey, could you help me please? I beg you, please, pleeeease...");
    next;
    restorecam;

    menu
        l("Why not, but who are you, and what kind of help do you need?"), L_CanHelp;
        l("Sorry but I have no time for this."), -;

    closeclientdialog;
    close;

L_CanHelp:
    setcamnpc;
    mes "";
    mesn;
    mesq l("My name is Alige, I've been hiding here for weeks. All I have to eat are these berries... berries... berries...");
    next;
    mesq l("I'm losing my mind here, I need something else to eat!");
    next;
    mesq l("Could you please bring me something which isn't a berry, and I'm not big on vegetables either. I need proteins!");
    next;
    restorecam;

    menu
        l("Sure, but what will you give me in exchange?"), L_AboutReward,
        l("Why don't you come out?"), -;

L_ExplainHiding:
    setcamnpc;
    mes "";
    mesn;
    mesq l("No, I can't. I won't! All I wanted was to travel across the seas for fun, growl... sniff. And in this hole in the floor, as you can see, I have lots of fun.");
    next;
    mesq l("Oh... um... actually... all I wanted was to get to Artis. Err... but I didn't, uhm... have enough money to pay for the ferry!");
    next;
    mesq l("Please don't tell people you saw me. I don't want to be decapitated or get thrown into the sea as food for sharks, or get my hair mussed!");
    next;
    restorecam;

    if (getq(ShipQuests_Alige) == 2) goto L_SoAskForFood;
    goto L_Accept;

L_AboutReward:
    setcamnpc;
    mes "";
    mesn;
    mesq l("I'll share my berries with you if you help me.");
    next;
    restorecam;

L_Accept:
    menu
        l("Understood, I will help you."), L_FirstAccepted,
        l("We arrived in Artis today."), L_Artis,
        l("I think I should report you to the crew members."), -;

    setcamnpc;
    mesq l("Growl, sniff, grr! You'd better not tell anyone you saw me!");

    close;

L_Artis:
    setcamnpc;
    mes "";
    mesn;
    mesq l("Of course, so why do I still see open sea from the porthole?");
    next;
    mesq l("I wonder who is in delarium now...");
    next;
    mesq l("But hey, back to me. Remember my mentioning that I'm hun...grrr...eee!");
    next;
    restorecam;

    if (.@q == 2) goto L_SoAskForFood;
    goto L_Accept;

L_FirstAccepted:
    if (getq(ShipQuests_Alige) >= 2) goto L_Accepted;
    setq ShipQuests_Alige, 2;

    goto L_Accepted;

L_Accepted:
    setcamnpc;
    mes "";
    mesn;
    mesq l("Great, what food do you have for me today?");
    next;
    restorecam;

L_GiveFood:
    mes "";

    mes "##B" + l("Drag and drop an item from your inventory.") + "##b";
    .@id = requestitem();
    if (.@id <= 0) goto L_Quit; // Quit message.
    if (countitem(.@id) == 0) goto L_Quit; // If don't have the food

    if (array_find(.vegetables, .@id) >= 0) goto L_NoReward; // In case of wrong food.
    if (array_find(.poisonable, .@id) >= 0) goto L_Poison; // In case of poisoned food (or food with effects).
    if (.@id == Piberries) goto L_NoMore; // In case of Piberries.
    if (.@id == RedPlushWine) goto L_Drunk; // In case of Alcohol.

    // Default message for non food
    if (array_find(.commonfood, .@id) == -1) goto L_NoFood;

    inventoryplace Piberries, 3;
    delitem .@id, 1;

    setcamnpc;
    mes "";
    mesn;
    mesq l("Thank you so much! Here, have some of my berries.");

    setq ShipQuests_Alige, 3;
    getitem Piberries, rand(1, 3);
    next;

    goto L_ReturnMenu;

L_NoReward:
    setcamnpc;
    mes "";
    mesn;
    mesq l("You don't expect me to eat that, do you? Give me something else!");
    next;
    restorecam;

    goto L_GiveFood;

L_Drunk:
    setcamnpc;
    speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
        l("I asked for food but... *hips* Ah, that'll do!");
    restorecam;

    goto L_GiveFood;

L_NoFood:
    setcamnpc;
    // We must first determine if it is at least edible (IT_HEALING)
    if (getiteminfo(.@id, ITEMINFO_TYPE) == IT_HEALING)
    {
        speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
            l("That looks too exotic for me to eat!");
    }
    else
    {
        speech S_FIRST_BLANK_LINE | S_LAST_NEXT,
            l("That doesn't looks edible to me!");
    }
    restorecam;

    goto L_GiveFood;

L_ReturnMenu:
    setcamnpc;
    mesq l("Do you have anything else for me?");
    next;
    restorecam;

    goto L_GiveFood;

L_NoMore:
    setcamnpc;
    mes "";
    mesn;
    mesq l("Grr, don't give me more berries! I don't want them, stupid berries, stupid... Stupid... Stupid!");
    next;

    goto L_ReturnMenu;

L_Poison:
    setcamnpc;
    mes "";
    mesn;
    mesq l("Don't try to poison me! I know what that does!");
    next;
    restorecam;
    goto L_ReturnMenu;

L_SoAskForFood:
    setcamnpc;
    mesn;
    mesq l("So, do you have anything for me today?");
    next;
    restorecam;
    goto L_IntroMenu;

L_AskForFood:
    setcamnpc;
    mesn;
    mesq l("Do you have anything for me today?");
    next;
    restorecam;

L_IntroMenu:
    menu
        l("Yes."), L_GiveFood,
        l("Where can I find some food?"), L_FindFood,
        l("Why are you hiding?") + " " + l("Why don't you come out?"), L_ExplainHiding,
        l("We arrived in Artis today."), L_Artis,
        l("I think I should report you to the crew members."), -;

    setcamnpc;
    mesq l("Growl, sniff, grr! You'd better not tell anyone you saw me!");

    close;

L_FindFood:
    setcamnpc;
    mes "";
    mesn;
    mesq l("There are some flying yellow plushes around you. They're called pious. Getting a roasted leg of one of them would be perfect.");
    next;
    mesq l("I'd like to catch one of them, but they fly away when I try.");
    next;
    mesq l("Walking around a bit, it'll be easy for you to catch one, I bet. Impale one of them for me please.");
    next;
    restorecam;
    mesn "Narrator";
    mesc(l("You can attack a monster by clicking on it, or from your keyboard you can press the 'A' key to select the monster followed by 'Ctrl' to attack it."), 9);
    next;
    mesc(l("Once the monster is dead, click on the dropped items to add them to your inventory. You can also use the 'Z' key to claim the drops."), 9);

    close;

L_Quit:
    setcamnpc;
    mes "";
    mesn;
    mesq l("Too bad... Come back when you'll have some nice food for me. Growl... grumble... grumble.");

    close;

OnInit:
    .distance = 2;

    // Array of foods (remember to update in 000-2-1 as well)
    setarray .commonfood, Bread, Fungus, Cheese, PiouLegs, Aquada, HalfCroconut, Plushroom, PumpkinJuice, Manana, Curshroom, Carrot, CarpSandwich, PioulegSandwich;
    setarray .vegetables, Acorn, LettuceLeaf, Croconut, MananaSandwich;
    setarray .poisonable, SeaDrops, PinkBlobime, PumpkinSeeds, UrchinMeat, EasterEgg;
    end;
}