diff options
Diffstat (limited to 'npc/00000SAVE/003-1_stranger.c')
-rw-r--r-- | npc/00000SAVE/003-1_stranger.c | 533 |
1 files changed, 533 insertions, 0 deletions
diff --git a/npc/00000SAVE/003-1_stranger.c b/npc/00000SAVE/003-1_stranger.c new file mode 100644 index 000000000..8323756f9 --- /dev/null +++ b/npc/00000SAVE/003-1_stranger.c @@ -0,0 +1,533 @@ +003-1,35,25,0 script Stranger NPC192,{ + @month = 5; + @start_day = 18; + @end_day = 25; + @iRONINGOT = 5; + @PINKANTENNA = 21; + @Exp = 20000; + + if (FLAGS & FLAG_TOWEL_COMPLETED) goto L_Event_Done; + if (gettime(6) != @month) goto L_No_Event; + if (gettime(5) < @start_day) goto L_No_Event; + if (gettime(5) > @end_day) goto L_No_Event; + if ((gettimetick(2)-TUT_var < 6*7*86400) || (BaseLevel < 42 )) //player must be created at least 6 weeks ago and at least level 42 + goto L_No_Event; + if (FLAGS & FLAG_TOWEL_HelpED) goto L_Towel; + + mes "[Stranger]"; + mes "\"Hello, hello! It's great to see you. Maybe you can help me with a little problem I have.\""; + next; + mes "\"I need some materials to repair my spacesh- ahm, it's not important why I need it.\""; + next; + mes "\"Anyway, I'd be really happy if you can give me " + @iRONINGOT + " Iron Ingots and " + @PINKANTENNA + " Pink Antennas.\""; + next; + mes "\"Do you have that for me?\""; + menu + "Yeah, sure.",L_Items, + "No.",L_close; + +L_Items: + if (countitem("IronIngot") < @iRONINGOT) goto L_No_Item; + if (countitem("PinkAntenna") < @PINKANTENNA) goto L_No_Item; + delitem "IronIngot", @iRONINGOT; + delitem "PinkAntenna", @PINKANTENNA; + getexp @Exp, 0; + FLAGS = FLAGS | FLAG_TOWEL_HelpED; + + mes "[Stranger]"; + mes "\"Great! Thank you!\""; + next; + mes "\"I have a lot of work to do now. But before you leave...\""; + next; + goto L_Towel; + +L_Towel: + getinventorylist; + if (@inventorylist_count == 100) goto L_Full_Inv; + mes "[Stranger]"; + mes "\"On May 25th it is a very special day - Towel Day.\""; + next; + mes "\"To celebrate this I'll ask you some questions about my favourite book, The Hitchhiker's Guide to the Galaxy. If you can answer them, I'll give you something very useful.\""; + next; + mes ""; + mes "[Server]"; + mes "The answers might need to have whitespaces."; + mes "If you're using a client which confirms your answer when pressing space, change this setting before continuing."; + mes ""; + next; + mes "[Stranger]"; + mes "\"The first one is easy.\""; + next; + + setarray @easy_questions$, + "What two words are written in big friendly letters on the back cover?", + "What's the name of the paranoid robot?", + "What is the answer to life, the universe and everything?", + "What is the first name of the author of the hitchhikers guide?", + "What is the last name of the author of the hitchhikers guide?", + "Who is the male human protagonist?", + "Who is the female human protagonist?", + "According to the Guide, space is ____?", + "What is the name of the spaceship which was stolen by the president of the universe?", + "How many heads does Zaphod Beeblebrox have?"; + + setarray @easy_answers_amount,2,2,2,2,2,4,4,2,4,2; + + @random = rand(10); + mes "\"" + @easy_questions$[@random] + "\""; + input @answer$; + + if (@easy_answers_amount[@random] < 4) + goto L_Easy_Skip4; + @quizparam$ = "towelanswer0" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + goto L_Easy_Skip4; + +L_Easy_Skip4: + if (@easy_answers_amount[@random] < 3) + goto L_Easy_Skip3; + @quizparam$ = "towelanswer0" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + goto L_Easy_Skip3; + +L_Easy_Skip3: + @quizparam$ = "towelanswer0" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + + @quizparam$ = "towelanswer0" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Easy; + + goto L_Wrong_Answer; + +L_Right_Answer_Easy: + mes "[Stranger]"; + mes "\"You're absolutely right. The next one will be more tricky.\""; + next; + + setarray @medium_questions$, + "What is the name of the rock group claiming to be the loudest band in the universe?", + "What star is near Ford's home planet?", + "Which country does the human protagonist come from?", + "What is the name of the computer on The Heart of Gold?", + "What color is a Babel Fish?", + "What did the bowl of petunias think?", + "What body orifice should a babel fish be inserted in to work properly?", + "What is the name of the super computer?", + "What were the second most intelligent creatures on Earth?", + "What race creates the worst poetry in universe?", + "What is the name of the Vogon home planet?", + "What is the name of the Restaurant at the End of the Universe?"; + + setarray @medium_answers_amount,2,2,2,2,2,3,2,2,4,4,2,2; + + @random = rand(12); + mes "\"" + @medium_questions$[@random] + "\""; + input @answer$; + + if (@medium_answers_amount[@random] < 4) + goto L_Medium_Skip4; + + @quizparam$ = "towelanswer1" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + goto L_Medium_Skip4; + +L_Medium_Skip4: + if (@medium_answers_amount[@random] < 3) + goto L_Medium_Skip3; + @quizparam$ = "towelanswer1" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + goto L_Medium_Skip3; + +L_Medium_Skip3: + @quizparam$ = "towelanswer1" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + + @quizparam$ = "towelanswer1" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Medium; + + goto L_Wrong_Answer; + +L_Right_Answer_Medium: + mes "[Stranger]"; + mes "\"Not bad, not bad. Let's see if you can answer an even more difficult one.\""; + next; + + setarray @hard_questions$, + "Drinking what drink is like having your brain smashed out by a slice of lemon wrapped round a large gold brick?", + "How many pints of beers should you drink before hitchhiking?", + "What initials are carved into Zaphod Beeblebrox's brain?", + "What is Ford Prefect's nickname?", + "Who is responsible for the fjords of Norway?", + "What game is played on earth as a relict of memories to an ancient war?", + "What is the name of the triple-breasted whore from Eroticon VI?", + "Who will insult every living being in the universe, because he is immortal and getting bored?", + "What is the name of the piteous creature that is continually reincarnated and subsequently killed, each time unknowingly, by Arthur Dent?"; + + setarray @hard_answers_amount,4,2,2,2,2,2,2,4,2; + + @random = rand(9); + mes "\"" + @hard_questions$[@random] + "\""; + input @answer$; + + if (@hard_answers_amount[@random] < 4) + goto L_Hard_Skip4; + @quizparam$ = "towelanswer2" + @random + "d"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + goto L_Hard_Skip4; + +L_Hard_Skip4: + if (@hard_answers_amount[@random] < 3) + goto L_Hard_Skip3; + @quizparam$ = "towelanswer2" + @random + "c"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + goto L_Hard_Skip3; + +L_Hard_Skip3: + @quizparam$ = "towelanswer2" + @random + "b"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + + @quizparam$ = "towelanswer2" + @random + "a"; + callfunc "StrangerQuiz"; + if (("###" + @answer$ == @quizanswer$)) + goto L_Right_Answer_Hard; + + goto L_Wrong_Answer; + +L_Right_Answer_Hard: + mes "[Stranger]"; + mes "\"Unbelievable! You're really a wise person.\""; + next; + mes "\"One last question, but this shouldn't be a problem for you.\""; + next; + mes "\"What is the most important item for every hitchhiker to have?\""; + input @answer$; + if (@answer$ != "Towel" && @answer$ != "towel") + goto L_Wrong_Answer; + + mes "[Stranger]"; + mes "\"There you are! A towel is really the most important item for a hitchhiker to have.\""; + next; + mes "\"Please take this.\""; // no full inventory check, this is done before the game + getitem "HitchhikersTowel", 1; + FLAGS = FLAGS | FLAG_TOWEL_COMPLETED; + next; + goto L_Explain; + +L_Explain: + mes "[Stranger]"; + mes "\"This towel is even more useful than usual towels are. If you change its color, it uses a special techno-, ahm, let's say, it can help you to get to other places.\""; + next; + mes "\"Bring me some powder made from gemstones and a bottle of water, and I can prepare it for you.\""; + next; + mes "\"Depending on the color it will bring you to different places. It might wear out after a while and it'll loose its color, but I can prepare it for you again.\""; + next; + mes "\"Since I'm not familar with this plane-, ahm, with this area, I can't tell which places you will end up in.\""; + goto L_close; + +L_No_Event: + mes "[Stranger]"; + mes "\"Hello. Isn't this a beautiful place?\""; + next; + mes "\"And it really comes in handy that I have my towel with me. A towel is about the most massively useful thing an inte- ahm, a person can have.\""; + next; + mes "\"You can read more about that in my favourite book, 'The Hitchhiker's Guide to the Galaxy'.\""; + if (countitem("HitchhikersTowel") > 0) + menu + "Thanks for the advice.",L_close, + "I have my towel with me too.",L_Dye; + goto L_close; + +L_Dye: + mes "[Stranger]"; + mes "\"Wonderful! Let me have a look.\""; + mes "He's taking a very interested look at your towel."; + next; + mes "[Stranger]"; + mes "\"I'm impressed. This is not an usual towel.\""; + next; + menu + "Oh? Can you explain about it?",L_Explain, + "I know. Could you dye it for me?",L_Dye_Towel, + "It's great, isn't it? I have to go now.",L_close; + +L_No_Item: + mes "[Stranger]"; + mes "\"Hu? It seems you haven't.\""; + goto L_close; + +L_Wrong_Answer: + mes "[Stranger]"; + mes "\"Nah, that's wrong. Come back if you want to try again.\""; + goto L_close; + +L_Event_Done: + mes "[Stranger]"; + mes "\"Ah, welcome back. Thanks again for your help.\""; + next; + mes "\"Shall I dye your towel?\""; + menu + "That would be great!",L_Dye_Towel, + "No, thanks.", L_close; + +L_Dye_Towel: + mes "[Stranger]"; + mes "\"Alright, which color do you want?\""; + menu + "Red",L_Red, + "Yellow",L_Yellow, + "White",L_White, + "Orange",L_Orange, + "Pink",L_Pink, + "I changed my mind.", L_close; + +L_Red: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Ruby Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("RubyPowder") < 2) goto L_No_Powder; + delitem "RubyPowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "RedHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Yellow: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Topaz Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("TopazPowder") < 2) goto L_No_Powder; + delitem "TopazPowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "YellowHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_White: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Diamond Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("DiamondPowder") < 2) goto L_No_Powder; + delitem "DiamondPowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "WhiteHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Blue: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Sapphire Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("SapphirePowder") < 2) goto L_No_Powder; + delitem "SapphirePowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "BlueHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Green: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Emerald Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("EmeraldPowder") < 2) goto L_No_Powder; + delitem "EmeraldPowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "GreenHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Purple: + mes "[Stranger]"; + mes "\"Ok, I'll need two bags of Amethyst Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("AmethystPowder") < 2) goto L_No_Powder; + delitem "AmethystPowder", 2; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "PurpleHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Orange: + mes "[Stranger]"; + mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Topaz Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("RubyPowder") < 1) goto L_No_Powder; + if (countitem("TopazPowder") < 1) goto L_No_Powder; + delitem "RubyPowder", 1; + delitem "TopazPowder", 1; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "OrangeHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Pink: + mes "[Stranger]"; + mes "\"Ok, I'll need one bag of Ruby Powder, one bag of Diamond Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("RubyPowder") < 1) goto L_No_Powder; + if (countitem("DiamondPowder") < 1) goto L_No_Powder; + delitem "RubyPowder", 1; + delitem "DiamondPowder", 1; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "PinkHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Lime: + mes "[Stranger]"; + mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Topaz Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("EmeraldPowder") < 1) goto L_No_Powder; + if (countitem("TopazPowder") < 1) goto L_No_Powder; + delitem "EmeraldPowder", 1; + delitem "TopazPowder", 1; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "LimeHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_Teal: + mes "[Stranger]"; + mes "\"Ok, I'll need one bag of Emerald Powder, one bag of Sapphire Powder and a bottle of water for that.\""; + next; + if (countitem("HitchhikersTowel") < 1) goto L_No_Towel; + getinventorylist; + if ((countitem("HitchhikersTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv; + if (countitem("BottleOfWater") < 1) goto L_No_Water; + if (countitem("EmeraldPowder") < 1) goto L_No_Powder; + if (countitem("SapphirePowder") < 1) goto L_No_Powder; + delitem "EmeraldPowder", 1; + delitem "SapphirePowder", 1; + delitem "HitchhikersTowel", 1; + delitem "BottleOfWater", 1; + getitem "TealHitchhikersTowel", 1; + mes "He takes your towel, the water and the gem powder, then he turns away and does something you can't see. After a few minutes, he turns to you again."; + next; + mes "[Stranger]"; + mes "\"Done! It'll use its color after being used, but just come back and I can dye it again for you.\""; + goto L_close; + +L_No_Water: + mes "[Stranger]"; + mes "\"You don't have water.\""; + goto L_close; + +L_No_Powder: + mes "[Stranger]"; + mes "\"You need to bring me enough gem powder in that color. Maybe someone used to mining can help you with that.\""; + goto L_close; + +L_No_Towel: + mes "[Stranger]"; + mes "\"Where's your towel? It is really useful, you should always keep it with you.\""; + goto L_close; + +L_Full_Inv: + mes "[Stranger]"; + mes "\"You carry a lot of stuff with you, don't you? Maybe you should get rid of something.\""; + goto L_close; + +L_close: + @month = 0; + @start_day = 0; + @end_day = 0; + @iRONINGOT = 0; + @PINKANTENNA = 0; + @Exp = 0; + @random = 0; + @quizparam$ = ""; + close; +} |