diff options
Diffstat (limited to 'world/map/npc/001-1/tinris.txt')
-rw-r--r-- | world/map/npc/001-1/tinris.txt | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/world/map/npc/001-1/tinris.txt b/world/map/npc/001-1/tinris.txt new file mode 100644 index 00000000..c2b52d85 --- /dev/null +++ b/world/map/npc/001-1/tinris.txt @@ -0,0 +1,219 @@ +// Anwar needs a magic fertilizer for his field +// Quest uses Nibble 3 of QUEST_NorthTulimshar +// Author: Jenalya +// state 1: Anwar sent to Tinris for help to get a magic fertilizer +// state 2: Tinris asked for chocolate cake as present for his girlfriend +// state 3: Tinris asked for ingredients for the fertilizer +// state 4: Tinris gave you the fertilizer +// state 5: Anwar tried it out and it doesn't work well, sent you back to Tinris +// state 6: Tinris asked for more ingredients for a new try +// state 7: Tinris says it's really hard, gives you the fertilizer and tells you to ask Eomie to cast a spell on it +// state 8: Eomie sends you to get some stuff so she can interrupt her spell on the spot of grass +// state 9: Eomie casted a spell on the fertilizer +// state 10: Anwar used it and it worked. he asks you to help him preparing a thank-you-gift for each Tinris and Eomis +// state 11: Anwar asked to bring present to Tinris +// state 12: gave present to Tinris +// state 13: Anwar asked to bring present to Eomie +// state 14: gave present to Eomie +// state 15: reported back to Anwar and done + +001-1.gat,69,29,0|script|Tinris|160 +{ + set @state, ((QUEST_NorthTulimshar & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT); + + set @cake_exp, 50; + set @sweater_exp, 400; + + set @slime_amount1, 6; + set @slime_amount2, 4; + set @bugleg_amount1, 4; + set @bugleg_amount2, 5; + set @stinger_amount1, 3; + set @stinger_amount2, 2; + set @ash_amount1, 1; + set @ash_amount2, 2; + set @cactusp_amount, 1; + + if (@state >= 12) goto L_Done; + if (@state == 11) goto L_GiveGift; + if (@state == 9) goto L_FertilizerDone; + if (@state >= 7) goto L_Eomie; + if (@state == 6) goto L_SecondTry; + if (@state >= 4) goto L_FirstTryDone; + if (@state == 3) goto L_FirstTry; + if (@state == 2) goto L_Annual; + + mes "[Tinris]"; + mes "\"This is a magic school. I'm a student here and focus on ways to magically enhance growth of plants."; + mes "That topic is very important in a desert area.\""; + if (@state != 1) + goto L_Close; + menu + "The farmer Anwar sent me to ask for exactly that! Can you give me something for his field?",L_Next; + +L_Next: + mes "[Tinris]"; + mes "\"Well... in principle yes. I can try to prepare something for him. But...\""; + next; + mes "\"The thing is, my girlfriend and I have our anniversary today. And the teachers won't let me leave the campus to get something for her!"; + mes "Please go to the bakery and buy a Chocolate Cake for me. She loves Chocolate Cakes.\""; + next; + mes "\"When I have a present for her I can focus on creating some magic fertilizer.\""; + set @state, 2; + callsub S_Update_Mask; + goto L_Close; + +L_Annual: // @state == 2 + mes "[Tinris]"; + mes "\"Hello, did you get the Chocolate Cake for my girlfriend? After that I can focus on creating some magic fertilizer for you.\""; + menu + "Fresh from the bakery!",L_FreshFrom, + "I didn't get it yet.",L_Close; + +L_FreshFrom: + if (countitem("ChocolateCake") < 1) + goto L_NoItem; + delitem "ChocolateCake", 1; + getexp @cake_exp, 0; + set @state, 3; + callsub S_Update_Mask; + mes "[Tinris]"; + mes "\"Oh, thank you! You saved me!"; + mes "All right, now we can start with the magic fertilizer.\""; + next; + goto L_FirstTry; + +L_FirstTry: + // @state == 3 + mes "[Tinris]"; + mes "\"You need to bring me some ingredients."; + mes "The ingredients are " + @slime_amount1 + " Maggot Slimes, " + @bugleg_amount1 + " Bug Legs, " + @stinger_amount1 + " Scorpion Stingers and " + @ash_amount1 + " Piles of Ash.\""; + menu + "I have it.",L_Continue, + "Ok, I'll go and get it.",L_Close; + +L_Continue: + if ((countitem("MaggotSlime") < @slime_amount1) || (countitem("BugLeg") < @bugleg_amount1) || (countitem("ScorpionStinger") < @stinger_amount1) || (countitem("PileOfAsh") < @ash_amount1)) + goto L_NoItem; + delitem "MaggotSlime", @slime_amount1; + delitem "BugLeg", @bugleg_amount1; + delitem "ScorpionStinger", @stinger_amount1; + delitem "PileOfAsh", @ash_amount1; + set @state, 4; + callsub S_Update_Mask; + mes "Tinris takes the things and starts to mix them together while mumbling some invocations."; + misceffect sfx_magic_nature; + next; + mes "[Tinris]"; + mes "\"Ok. This should do it. But I'm not sure. I'm still researching this topic."; + mes "Here, bring this to Anwar.\""; + mes "He gives you a bottle with the magic fertilizer. You put it away in a separate pocket, so it doesn't get mixed with your inventory."; + goto L_Close; + +L_FirstTryDone: // @state >= 4 but below 6 + mes "[Tinris]"; + mes "\"Bring the fertilizer to Anwar and let me know if it worked.\""; + if (@state != 5) + goto L_Close; + menu + "I did, the plants went brown and shriveled.",L_More; + +L_More: + set @state, 6; + callsub S_Update_Mask; + goto L_SecondTry; + +L_SecondTry: + // @state == 6 + mes "[Tinris]"; + mes "\"Oh no! All right, we need to do another try."; + mes "Bring me " + @slime_amount2 + " Maggot Slimes, " + @bugleg_amount2 + " Bug Legs, " + @stinger_amount2 + " Scorpion Stingers, " + @ash_amount2 + " Piles of Ash and " + @cactusp_amount + " Cactus Potion.\""; + menu + "Here it is.",L_HereItIs, + "Ok, I'll go and get it.",L_Close; + +L_HereItIs: + if ((countitem("MaggotSlime") < @slime_amount2) || (countitem("BugLeg") < @bugleg_amount2) || (countitem("ScorpionStinger") < @stinger_amount2) || (countitem("PileOfAsh") < @ash_amount2) || (countitem("CactusPotion") < @cactusp_amount)) + goto L_NoItem; + delitem "MaggotSlime", @slime_amount2; + delitem "BugLeg", @bugleg_amount2; + delitem "ScorpionStinger", @stinger_amount2; + delitem "PileOfAsh", @ash_amount2; + delitem "CactusPotion", @cactusp_amount; + set @state, 7; + callsub S_Update_Mask; + mes "Tinris takes the things and starts to mix and mumble again."; + misceffect sfx_magic_nature; + next; + mes "It takes quite a while."; + next; + mes "He looks rather stressed while working on the mixture."; + next; + mes "He sighs."; + mes "[Tinris]"; + mes "\"Mh, I think the mixture itself is good. But I can't get the spells right. Maybe you should ask Professor Eomie to cast it; she's a genius with nature magic.\""; + mes "He gives you the bottle with the magic fertilizer."; + goto L_Close; + +L_Eomie: + // @state >= 7 but below 9 + mes "[Tinris]"; + mes "\"I did the best I could, but it seems I'm not experienced enough to cast the spells correctly. Better ask Professor Eomie for help.\""; + goto L_Close; + +L_FertilizerDone: + // @state == 9 + mes "[Tinris]"; + mes "\"I heard Eomie cast the spell? I really hope it'll work this time. Bring the magic fertilizer to Anwar now.\""; + goto L_Close; + +L_GiveGift: + // @state == 11 + mes "[Tinris]"; + mes "\"Ah, did Anwar try the new fertilizer?\""; + menu + "Yes, it works great and he asked me to give you this Green V-Neck Sweater he made.",L_ItWorksGreat, + "Not yet.",L_Close; + +L_ItWorksGreat: + if (countitem("GreenVNeckSweater") < 1) + goto L_NoItem; + delitem "GreenVNeckSweater", 1; + getexp @sweater_exp, 0; + set @state, 12; + callsub S_Update_Mask; + mes "[Tinris]"; + mes "\"Hey, that's really nice. Tell him my thanks.\""; + goto L_Close; + +L_Done: + // @state >= 12 + mes "[Tinris]"; + mes "\"My girlfriend was delighted with the Chocolate Cake and Professor Eomie was happy with my work on the magic fertilizer.\""; + mes "He twinkles."; + mes "[Tinris]"; + mes "\"We're a good team.\""; + goto L_Close; + +L_NoItem: + mes "[Tinris]"; + mes "\"You don't have it!\""; + goto L_Close; + +L_Close: + set @state, 0; + set @slime_amount1, 0; + set @slime_amount2, 0; + set @bugleg_amount1, 0; + set @bugleg_amount2, 0; + set @stinger_amount1, 0; + set @stinger_amount2, 0; + set @ash_amount1, 0; + set @ash_amount2, 0; + set @cactusp_amount, 0; + close; + +S_Update_Mask: + set QUEST_NorthTulimshar, (QUEST_NorthTulimshar & ~(NIBBLE_3_MASK)) | (@state << NIBBLE_3_SHIFT); + return; +} |