summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/003-1_Beach/_import.txt1
-rw-r--r--npc/003-1_Beach/stranger.txt314
2 files changed, 315 insertions, 0 deletions
diff --git a/npc/003-1_Beach/_import.txt b/npc/003-1_Beach/_import.txt
index ebd66af7..661204a3 100644
--- a/npc/003-1_Beach/_import.txt
+++ b/npc/003-1_Beach/_import.txt
@@ -2,3 +2,4 @@
map: 003-1.gat
npc: npc/003-1_Beach/_mobs.txt
npc: npc/003-1_Beach/_warps.txt
+npc: npc/003-1_Beach/stranger.txt
diff --git a/npc/003-1_Beach/stranger.txt b/npc/003-1_Beach/stranger.txt
new file mode 100644
index 00000000..abd1a2b7
--- /dev/null
+++ b/npc/003-1_Beach/stranger.txt
@@ -0,0 +1,314 @@
+//003-1.gat,35,25,0 script Stranger 192, {
+
+ set @month, 5;
+ set @start_day, 18;
+ set @end_day, 25;
+ set @end_day, 18;
+ set @IRONINGOT, 5;
+ set @PINKANTENNA, 21;
+ set @cost, 500;
+
+//TODO: uncomment
+ 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 < 4*7*86400) || (baselevel < 42 )) //player must be created at least 4 weeks ago and at least level 42
+// goto L_No_Event;
+// if ((gettime(5) == @end_day) && (FLAGS & FLAG_TOWEL_HELPED)) goto L_Towel;
+ if (FLAGS & FLAG_TOWEL_HELPED) goto L_Towel; // TODO: remove
+ if (FLAGS & FLAG_TOWEL_HELPED) goto L_Come_Back;
+
+ 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 Ingot]s and " + @PINKANTENNA + " [Pink Antenna]s.\"";
+ next;
+ mes "\"Do you have that for me?\"";
+ menu
+ "Yeah, sure.",L_Items,
+ "No.",L_Close;
+ close;
+
+L_Items:
+ if (countitem("IngotIron") < @IRONINGOT) goto L_No_Item;
+ if (countitem("PinkAntenna") < @PINKANTENNA) goto L_No_Item;
+ delitem "IngotIron", @IRONINGOT;
+ delitem "PinkAntenna", @PINKANTENNA;
+ set FLAGS, FLAGS | FLAG_TOWEL_HELPED;
+
+ mes "[Stranger]";
+ mes "\"Great! Thank you!\"";
+ next;
+ if (gettime(5) == @end_day) goto L_Towel;
+L_Come_Back:
+ mes "\"Excuse me, I have a lot of work to do now. Maybe you want to come back soon to celebrate Towel Day with me.\"";
+ close;
+
+L_Towel:
+ getinventorylist;
+ if (@inventorylist_count == 100) goto L_Full_Inv;
+ mes "[Stranger]";
+ mes "\"Today 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 from 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;
+
+ set @random, rand(10);
+ mes "\"" + @easy_questions$[@random] + "\"";
+ input @answer$;
+
+ if (@easy_answers_amount[@random] < 4)
+ goto L_Easy_Skip4;
+ if (("###" + @answer$ == getspellinvocation("towelanswer0" + @random + "d")))
+ goto L_Right_Answer_Easy;
+L_Easy_Skip4:
+ if (@easy_answers_amount[@random] < 3)
+ goto L_Easy_Skip3;
+ if (("###" + @answer$ == getspellinvocation("towelanswer0" + @random + "c")))
+ goto L_Right_Answer_Easy;
+L_Easy_Skip3:
+ if (("###" + @answer$ == getspellinvocation("towelanswer0" + @random + "a")) || ("###" + @answer$ == getspellinvocation("towelanswer0" + @random + "b")))
+ 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?s",
+ "Which country does the human protagonist come from?",
+ "What is the name of the computer on The Heart of Gold?",
+ "What color has 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;
+
+ set @random, rand(12);
+ mes "\"" + @medium_questions$[@random] + "\"";
+ input @answer$;
+
+ if (@medium_answers_amount[@random] < 4)
+ goto L_Medium_Skip4;
+ if (("###" + @answer$ == getspellinvocation("towelanswer1" + @random + "d")))
+ goto L_Right_Answer_Medium;
+L_Medium_Skip4:
+ if (@medium_answers_amount[@random] < 3)
+ goto L_Medium_Skip3;
+ if (("###" + @answer$ == getspellinvocation("towelanswer1" + @random + "c")))
+ goto L_Right_Answer_Medium;
+L_Medium_Skip3:
+ if (("###" + @answer$ == getspellinvocation("towelanswer1" + @random + "a")) || ("###" + @answer$ == getspellinvocation("towelanswer1" + @random + "b")))
+ 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 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;
+
+ set @random, rand(9);
+ mes "\"" + @hard_questions$[@random] + "\"";
+ input @answer$;
+
+ if (@hard_answers_amount[@random] < 4)
+ goto L_Hard_Skip4;
+ if (("###" + @answer$ == getspellinvocation("towelanswer2" + @random + "d")))
+ goto L_Right_Answer_Hard;
+L_Hard_Skip4:
+ if (@hard_answers_amount[@random] < 3)
+ goto L_Hard_Skip3;
+ if (("###" + @answer$ == getspellinvocation("towelanswer2" + @random + "c")))
+ goto L_Right_Answer_Hard;
+L_Hard_Skip3:
+ if (("###" + @answer$ == getspellinvocation("towelanswer2" + @random + "a")) || ("###" + @answer$ == getspellinvocation("towelanswer2" + @random + "b")))
+ 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 "TODO: remove. again?";
+ menu
+ "Yes.",L_Towel,
+ "Go on.",-,
+ "Close.",L_Close;
+
+ 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 "WhiteWarpTowel", 1;
+ set FLAGS, FLAGS | FLAG_TOWEL_COMPLETED;
+ next;
+ 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 dye, and I can prepare it for you. But it won't work with every color. And it's a bit complicated to accomplish, so a payment of " + @cost + " GP is reasonable.\"";
+ 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.\"";
+ close;
+
+L_No_Item:
+ mes "[Stranger]";
+ mes "\"Hu? It seems you haven't.\"";
+ close;
+
+L_Wrong_Answer:
+ mes "[Stranger]";
+ mes "\"Nah, that's wrong. Come back if you want to try again.\"";
+ 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!",-,
+ "No, thanks.", L_Close;
+L_Dye_Towel:
+ mes "[Stranger]";
+ mes "\"Alright, which color do you want?\"";
+// more colors should be added when more places are released
+ menu
+ "Red", L_Red,
+ "Yellow", L_Yellow,
+ "Light Blue", L_Light_Blue,
+ "I changed my mind.", L_Close;
+ close;
+
+L_Red:
+ if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+ getinventorylist;
+ if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+ if (zeny < 500) goto L_No_Money;
+ if (countitem("RedDye") < 1) goto L_No_Dye;
+ delitem "RedDye", 1;
+ delitem "WhiteWarpTowel", 1;
+ set zeny, zeny - 500;
+ getitem "RedWarpTowel", 1;
+ mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+ next;
+ mes "[Stranger]";
+ mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+ close;
+
+L_Yellow:
+ if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+ getinventorylist;
+ if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+ if (zeny < 500) goto L_No_Money;
+ if (countitem("YellowDye") < 1) goto L_No_Dye;
+ delitem "YellowDye", 1;
+ delitem "WhiteWarpTowel", 1;
+ set zeny, zeny - 500;
+ getitem "YellowWarpTowel", 1;
+ mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+ next;
+ mes "[Stranger]";
+ mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+ close;
+
+L_Light_Blue:
+ if (countitem("WhiteWarpTowel") < 1) goto L_No_Towel;
+ getinventorylist;
+ if ((countitem("WhiteWarpTowel") > 1) && (@inventorylist_count == 100)) goto L_Full_Inv;
+ if (zeny < 500) goto L_No_Money;
+ if (countitem("LightBlueDye") < 1) goto L_No_Dye;
+ delitem "LightBlueDye", 1;
+ delitem "WhiteWarpTowel", 1;
+ set zeny, zeny - 500;
+ getitem "LightBlueWarpTowel", 1;
+ mes "He takes your white towel and the dye, then he turns away and does something you can't see. After some minutes, he turns to you again.";
+ next;
+ mes "[Stranger]";
+ mes "\"Done! It'll use its color after being used, but just come back, I can dye it again for you.\"";
+ close;
+
+L_No_Money:
+ mes "[Stranger]";
+ mes "\"I'm sorry, preparing this towel for travelling is really complicated. I can't explain you the details, but I'll need " + @cost + " GP.\"";
+ close;
+
+L_No_Dye:
+ mes "[Stranger]";
+ mes "\"You need to bring me dye in that color.\"";
+ close;
+
+L_No_Towel:
+ mes "[Stranger]";
+ mes "\"Where's your towel? It is really useful, you should always keep it with you.\"";
+ 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.\"";
+ close;
+
+L_Close:
+ close;
+}