// 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 lg("I am, who are you?"), -, lg("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 lg("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 lg("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 lg("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; }