From b7220816487ded7d73bc0eadf53d7abf55af29cd Mon Sep 17 00:00:00 2001 From: Jessica Tölke Date: Mon, 31 Oct 2011 18:31:57 +0100 Subject: Christmas Event 2011 --- world/map/npc/xmas/2011/badguy.txt | 443 +++++++++++++++++++++++++++++++++++++ 1 file changed, 443 insertions(+) create mode 100644 world/map/npc/xmas/2011/badguy.txt (limited to 'world/map/npc/xmas/2011/badguy.txt') diff --git a/world/map/npc/xmas/2011/badguy.txt b/world/map/npc/xmas/2011/badguy.txt new file mode 100644 index 00000000..81f79972 --- /dev/null +++ b/world/map/npc/xmas/2011/badguy.txt @@ -0,0 +1,443 @@ +// This file is part of Christmas Event 2011 +// author: Jenalya +// Balthasar is sent by Santa's antagonist to sabotage the preparations for Christmas +// gives rewards depending on how much the player helped to sabotage + +030-2.gat,100,31,0|script|Balthasar|336,{ + + if (!(gettime(7) == $@xmas2011_year && gettime(6) == 12 && gettime(5) >= $@xmas2011_start_day)) + goto L_NoEvent; + if ((gettime(7) == $@xmas2011_year && gettime(6) == 12 && gettime(5) >= $@xmas2011_reward_start_day)) + goto L_RewardTime; + if ((BaseLevel > 30) && (gettimetick(2)-TUT_var < 3*7*86400)) // player must be created at least three weeks ago + goto L_NoHelp; + + set @plushmouboo, (xmas11 & $@xmas11_PlushMoubooMask) >> $@xmas11_PlushMoubooShift; + set @stickreinboo, (xmas11 & $@xmas11_StickReinbooMask) >> $@xmas11_StickReinbooShift; + set @ball, (xmas11 & $@xmas11_BallMask) >> $@xmas11_BallShift; + set @doll, (xmas11 & $@xmas11_DollMask) >> $@xmas11_DollShift; + + set @input_amount, 1; + set @output_amount, 3; + + if (xmas11 & $@xmas11_talkedToBadGuy) goto L_Helping; + + mes "[Sneaky person]"; + mes "\"Hey there! Yes, you! Are you here to see the great Santa?"; + mes "But he's hiding in his room, isn't he? Too busy for us normal people, right?\""; + next; + mes "\"Tell me... would you like to help me with some... trick?"; + mes "Don't worry, nothing mean... just a joke. A joke, yes.\""; + menu + "Ahm, sure.",L_Agree, + "You're scary. I don't want to help you.",L_Disagree; + +L_Agree: + mes "He smiles."; + mes "[Sneaky person]"; + mes "\"Very nice, yes, very nice. You will see, it is fun."; + mes "We'll just play some tricks to all this busy busy helpers of the great Santa.\""; + next; + mes "\"They're a bit mixed up.\""; + mes "He giggles in a very creepy way."; + next; + mes "[Sneaky person]"; + mes "\"So, go to see if you can... help them. Talk to the Chief Helper, he should be somewhere upstairs. And when they ask you to do something..."; + mes "You can come to ask the old Balthasar how we can trick them, eh?\""; + set xmas11, xmas11 | $@xmas11_talkedToBadGuy; + goto L_Close; + +L_Disagree: + mes "[Sneaky person]"; + mes "\"Oh, com'on. Do you really think the old Balthasar is scary?"; + mes "No, no, no, I'm very harmless. Like a baby.\""; + mes "He grins in a very creepy way."; + next; + mes "[Balthasar]"; + mes "\"If you change your mind, just come back...\""; + set xmas11, xmas11 | $@xmas11_talkedToBadGuy; + goto L_Close; + +L_Helping: + mes "[Balthasar]"; + mes "\"Welcome back my dear friend. Did you get any tasks to do? Did they ask you for help?"; + mes "Maybe I can give you some advice how to... trick them. Yes, harmless tricks.\""; + + cleararray @choice_idx, 0, 9; + cleararray @choice$, "", 9; + + set @C_reinboo, 1; + set @C_bedding, 2; + set @C_glitter, 3; + set @C_potion, 4; + set @C_plushmouboo, 5; + set @C_stickreinboo, 6; + set @C_ball, 7; + set @C_doll, 8; + set @C_nevermind, 9; + + // counter of available answers + set @choices_nr, 0; + + if (!(xmas11 & $@xmas11_startedReinbooSearch)) + goto L_NoReinboo; + set @choice_idx[@choices_nr], @C_reinboo; + set @choice$[@choices_nr], "I have to search some lost mouboos..."; + set @choices_nr, @choices_nr + 1; + +L_NoReinboo: + if (!(xmas11 & $@xmas11_Bedding) || (xmas11 & $@xmas11_BeddingDone)) + goto L_NoBedding; + set @choice_idx[@choices_nr], @C_bedding; + set @choice$[@choices_nr], "I shall get some White Fur as bedding."; + set @choices_nr, @choices_nr + 1; + +L_NoBedding: + if (!(xmas11 & $@xmas11_Decoration) || (xmas11 & $@xmas11_DecorationDone)) + goto L_NoGlitter; + set @choice_idx[@choices_nr], @C_glitter; + set @choice$[@choices_nr], "They want Diamond and Ruby Powder for decoration."; + set @choices_nr, @choices_nr + 1; + +L_NoGlitter: + if (!(xmas11 & $@xmas11_Potion) || (xmas11 & $@xmas11_PotionDone)) + goto L_NoPotion; + set @choice_idx[@choices_nr], @C_potion; + set @choice$[@choices_nr], "There is some helper not feeling well. He wants a Healing Potion."; + set @choices_nr, @choices_nr + 1; + +L_NoPotion: + if (@plushmouboo != 3) + goto L_NoPlushMouboo; + set @choice_idx[@choices_nr], @C_plushmouboo; + set @choice$[@choices_nr], "I have to pack this Plush Mouboo."; + set @choices_nr, @choices_nr + 1; + +L_NoPlushMouboo: + if (@stickreinboo != 3) + goto L_NoStickReinboo; + set @choice_idx[@choices_nr], @C_stickreinboo; + set @choice$[@choices_nr], "I have to pack this Stick Reinboo."; + set @choices_nr, @choices_nr + 1; + +L_NoStickReinboo: + if (@ball != 3) + goto L_NoBall; + set @choice_idx[@choices_nr], @C_ball; + set @choice$[@choices_nr], "I have to pack this Leather Ball."; + set @choices_nr, @choices_nr + 1; + +L_NoBall: + if (@doll != 3) + goto L_NoDoll; + set @choice_idx[@choices_nr], @C_doll; + set @choice$[@choices_nr], "I have to pack this Doll."; + set @choices_nr, @choices_nr + 1; + +L_NoDoll: + set @choice_idx[@choices_nr], @C_nevermind; + set @choice$[@choices_nr], "Nevermind and leave."; + + menu + @choice$[0],-, + @choice$[1],-, + @choice$[2],-, + @choice$[3],-, + @choice$[4],-, + @choice$[5],-, + @choice$[6],-, + @choice$[7],-, + @choice$[8],-; + + set @menu, @menu - 1; + if (@choice_idx[@menu] == 0) + goto L_Close; + if (@choice_idx[@menu] == @C_reinboo) + goto L_ReinbooAdvice; + if (@choice_idx[@menu] == @C_bedding) + goto L_BeddingAdvice; + if (@choice_idx[@menu] == @C_glitter) + goto L_GlitterAdvice; + if (@choice_idx[@menu] == @C_potion) + goto L_PotionAdvice; + if (@choice_idx[@menu] == @C_plushmouboo) + goto L_PlushMoubooWrapping; + if (@choice_idx[@menu] == @C_stickreinboo) + goto L_StickReinbooWrapping; + if (@choice_idx[@menu] == @C_ball) + goto L_BallWrapping; + if (@choice_idx[@menu] == @C_doll) + goto L_DollWrapping; + if ((@choice_idx[@menu] == @C_nevermind)) + goto L_Close; + goto L_Close; + +L_ReinbooAdvice: + mes "Balthasar giggles spitefully."; + mes "[Balthasar]"; + mes "\"Oh, right, the poor lost Reinboos. So far far away from home.\""; + next; + mes "\"They really really like candy and sweets."; + mes "It would be mean not to give them candy, wouldn't it?\""; + goto L_Close; + +L_BeddingAdvice: + mes "[Balthasar]"; + mes "\"White Fur? Don't you think it's cruel to use fur for that? Real cruel, yes."; + mes "Why not using simple Cotton Cloth instead?\""; + goto L_Close; + +L_GlitterAdvice: + mes "[Balthasar]"; + mes "\"Gem powder is expensive, isn't it? Too expensive to use it for glitter, don't you think so?"; + mes "I can make you some replacement powder easily.\""; + next; + mes "Just bring my some powder of those fuzzy ball things, how are they called again?"; + mes "Ah, Spectres and Wisps was it.\""; + menu + "Here is some Spectre Powder.",L_RedPowder, + "I have some Wisp Powder.",L_YellowPowder, + "I'll go and get it.",L_Close; + goto L_Close; + +L_PotionAdvice: + mes "[Balthasar]"; + mes "\"Oh, feeling not well? What a poor guy! But drinking a healing potion..."; + mes "It's much healthier to let the body recover itself, don't you think so?\""; + next; + mes "\"Too much medication is bad, yes, bad. Why don't you give him something nice to drink instead?\""; + goto L_Close; + +L_RedPowder: + if (countitem("SpectrePowder") < @input_amount) + goto L_NoItem; + delitem "SpectrePowder", @input_amount; + getitem "RedPowder", @output_amount; + mes "[Balthasar]"; + mes "\"Here, here it is.\""; + goto L_Close; + +L_YellowPowder: + if (countitem("WispPowder") < @input_amount) + goto L_NoItem; + delitem "WispPowder", @input_amount; + getitem "YellowPowder", @output_amount; + mes "[Balthasar]"; + mes "\"Here, here it is.\""; + goto L_Close; + +L_PlushMoubooWrapping: + mes "[Balthasar]"; + mes "\"Oh, a Plush Mouboo - what a silly thing, really silly thing."; + mes "Don't you think we should put something more useful, expedient in that box?\""; + next; + mes "\"What about ... a nice Cotton Shirt? A decent Cotton Shirt would be nice, don't you think so?"; + mes "Give me an Empty Present Box, some Cotton Shirt and that Plush Mouboo. I'll pack that box for you.\""; + menu + "Sure, here it is.",-, + "One Moment, I need to get the stuff.",L_Close, + "I don't think this is a good idea.",L_Close; + if ((countitem("CottonShirt") < 1) || (countitem("OpenPresentBox") < 1) || (countitem("PlushMouboo") < 1)) + goto L_NoItem; + delitem "CottonShirt", 1; + delitem "OpenPresentBox", 1; + delitem "PlushMouboo", 1; + getitem "ClosedChristmasBox", 1; + set @plushmouboo, 4; + set xmas11, (xmas11 & ~($@xmas11_PlushMoubooMask) | (@plushmouboo << $@xmas11_PlushMoubooShift)); + mes "He bags the Plush Mouboo you gave him and puts the cotton shirt into the box."; + goto L_Close; + +L_StickReinbooWrapping: + mes "[Balthasar]"; + mes "\"Ooh, a stickreinboo! Don't you think this is an invidious thing for the reinboos? Really really mean, yes."; + mes "Do you know, reinboos are clever, they can even speak. And this is a toy reinboo! Very very disrespectful, right?\""; + next; + mes "\"Do you think... do you think we should punish the brat that wished for this disrespectful toy? I think so, yes, disrespectful brat."; + mes "Let's put... let's put a Raw Log in there instead, yes. Give me an Empty Present Box, some Raw Log and that Stick Reinboo. I'll prepare that box for you.\""; + menu + "Sure, here it is.",-, + "One Moment, I need to get the stuff.",L_Close, + "I think the Stick Reinboo is nice!",L_Close; + if ((countitem("RawLog") < 1) || (countitem("OpenPresentBox") < 1) || (countitem("StickReinboo") < 1)) + goto L_NoItem; + delitem "RawLog", 1; + delitem "OpenPresentBox", 1; + delitem "StickReinboo", 1; + getitem "ClosedChristmasBox", 1; + set @stickreinboo, 4; + set xmas11, (xmas11 & ~($@xmas11_StickReinbooMask) | (@stickreinboo << $@xmas11_StickReinbooShift)); + mes "He puts away the Stick Reinboo and packs the Raw Log in the box."; + goto L_Close; + +L_BallWrapping: + mes "[Balthasar]"; + mes "\"A ball? Eh, ah, a ball... ah -"; + mes "but what if the kid that gets it rather needs something to get warm?\""; + next; + mes "\"Let's put a piece of Coal in there instead! Yes, piece of Coal, that's good."; + mes "Empty Present Box, a piece of Coal and the Ball. I'll pack the box for you.\""; + menu + "Sure, here it is.",-, + "One Moment, I need to get the stuff.",L_Close, + "Come on, now you're getting really implausible.",L_Close; + if ((countitem("Coal") < 1) || (countitem("OpenPresentBox") < 1) || (countitem("LeatherBall") < 1)) + goto L_NoItem; + delitem "Coal", 1; + delitem "OpenPresentBox", 1; + delitem "LeatherBall", 1; + getitem "ClosedChristmasBox", 1; + set @ball, 4; + set xmas11, (xmas11 & ~($@xmas11_BallMask) | (@ball << $@xmas11_BallShift)); + mes "He takes the ball, puts the coal into the box and closes it."; + goto L_Close; + + +L_DollWrapping: + mes "[Balthasar]"; + mes "\"Let me see, have a look... Oh, they made that kind of doll already last year. This is not very creative, isn't it?"; + mes "The child will be disappointed, yes, deeply disappointed to get such an ... uncool present, yes.\""; + next; + mes "\"We should fix that, yes, fix it. We can put some of these nice Mouboo Figurines in the box instead."; + mes "Bring me an Empty Present Box, a Mouboo Figurine and the Doll. I'll pack the box for you.\""; + menu + "Sure, here it is.",-, + "One Moment, I need to get the stuff.",L_Close, + "A Mouboo Figurine is lame.",L_Close; + if ((countitem("MoubooFigurine") < 1) || (countitem("OpenPresentBox") < 1) || (countitem("Doll") < 1)) + goto L_NoItem; + delitem "MoubooFigurine", 1; + delitem "OpenPresentBox", 1; + delitem "Doll", 1; + getitem "ClosedChristmasBox", 1; + set @doll, 4; + set xmas11, (xmas11 & ~($@xmas11_DollMask) | (@doll << $@xmas11_DollShift)); + mes "He puts the doll in his pocket and packs the Mouboo Figurine into the box."; + goto L_Close; + +L_NoEvent: + mes "[Balthasar]"; + mes "\"How did you come in at this time of the year? As sneaky as I am, he?"; + mes "But you should leave anyway.\""; + warp "030-1.gat", 99, 55; + goto L_Close; + +L_RewardTime: + callfunc "xmas2011points"; + if (xmas11 & $@xmas11_BadGuyReward) goto L_Done; + + if (@sabotagepoints == 0) + goto L_NoHelp; + getinventorylist; + if (@inventorylist_count > 80) + goto L_Full_Inv; + mes "[Balthasar]"; + + if (@sabotagepoints < $@xmas2011_main_rewardcost) + goto L_NoMainReward; + getitem "Sunglasses", 1; + set @sabotagepoints, @sabotagepoints - $@xmas2011_main_rewardcost; + mes "\"You've shown great skill in the art of infiltration and sabotage. I'm so proud on you, very proud, yes.\""; + next; + +L_NoMainReward: + if (@sabotagepoints < $@xmas2011_toy_rewardcost) + goto L_NoToyReward; +L_ToyAgain: + set @toy_reward, rand(4); + if (@toy_reward == 0) + getitem "PlushMouboo", 1; + if (@toy_reward == 1) + getitem "StickReinboo", 1; + if (@toy_reward == 2) + getitem "Doll", 1; + if (@toy_reward == 3) + getitem "LeatherBall", 1; + set @sabotagepoints, @sabotagepoints - $@xmas2011_toy_rewardcost; + if (@sabotagepoints >= $@xmas2011_toy_rewardcost) + goto L_ToyAgain; + mes "\"I think you earned yourself some fun with this toy things.\""; + next; + +L_NoToyReward: + if (@sabotagepoints < $@xmas2011_gloves_rewardcost) + goto L_NoGlovesReward; + set @gloves, $@glove_id + rand(10); + getitem @gloves, 1; + set @sabotagepoints, @sabotagepoints - $@xmas2011_gloves_rewardcost; + mes "\"This will help to keep your hands warm when operating in such cold areas.\""; + next; + +L_NoGlovesReward: + if (@sabotagepoints == 0) + goto L_Done; + mes "\"Have some candy.\""; + next; + if (@sabotagepoints < $@xmas2011_gingerbreadman_rewardcost) + goto L_NoGBMReward; + set @candy_amount, @sabotagepoints/$@xmas2011_gingerbreadman_rewardcost; + getitem "GingerBreadMan", @candy_amount; + set @sabotagepoints, @sabotagepoints - @candy_amount*$@xmas2011_gingerbreadman_rewardcost; +L_NoGBMReward: + if (@sabotagepoints < $@xmas2011_xmascake_rewardcost) + goto L_NoXmasCakeReward; + set @candy_amount, @sabotagepoints/$@xmas2011_xmascake_rewardcost; + getitem "XmasCake", @candy_amount; + set @sabotagepoints, @sabotagepoints - @candy_amount*$@xmas2011_xmascake_rewardcost; +L_NoXmasCakeReward: + if (@sabotagepoints < $@xmas2011_candy_rewardcost) + goto L_Done; + set @candy_amount, @sabotagepoints/$@xmas2011_candy_rewardcost; + getitem "Candy", @candy_amount; + set @sabotagepoints, @sabotagepoints - @candy_amount*$@xmas2011_candy_rewardcost; + +L_Done: + mes "[Balthasar]"; + mes "\"It was so much fun, wasn't it?\""; + set xmas11, xmas11 | $@xmas11_BadGuyReward; + goto L_Close; + +L_NoItem: + mes "[Balthasar]"; + mes "\"Eh? Where is it? Go and get it!\""; + goto L_Close; + +L_Full_Inv: + mes "[Balthasar]"; + mes "\"Oh, you have a lot of stuff with you, yes many many things. I'm going to give you some ... allowance for your effort."; + mes "Come back with less things in your backpack.\""; + goto L_Close; + +L_NoHelp: + mes "[Balthasar]"; + mes "\"Eh? Are you having fun with the cheesy Christmas stuff? Pah.\""; + goto L_Close; + +L_Close: + set @input_amount, 0; + set @output_amount, 0; + set @plushmouboo, 0; + set @stickreinboo, 0; + set @ball, 0; + set @doll, 0; + set @C_reinboo, 0; + set @C_bedding, 0; + set @C_glitter, 0; + set @C_potion, 0; + set @C_plushmouboo, 0; + set @C_stickreinboo, 0; + set @C_ball, 0; + set @C_doll, 0; + set @C_nervermind, 0; + set @choices_nr, 0; + cleararray @choice_idx, 0, 9; + cleararray @choice$, "", 9; + set @menu, 0; + set @inventorylist_count, 0; + set @toy_reward, 0; + set @gloves, 0; + set @candy_amount, 0; + set @sabotagepoints, 0; + set @helppoints, 0; + close; +} -- cgit v1.2.3-70-g09d2