031-4,42,42,0 script Cindy NPC198,{ .@q = getq(KaizeiQuest_Cindy); if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; if (.@q > 4) goto L_Please_Visit; if (.@q == 3) goto L_Reward; if (.@q == 2) goto L_Please_Help; mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage."; next; mes "You don't know what to do."; goto L_close; L_Please_Help: mes "There is a little girl in a cage. As you come near, she starts to shiver and back off from you as far as she can in that small cage."; next; menu "Hello Cindy, I'm here to save you.", L_Next; L_Next: mes "Cindy doesn't look so scared anymore."; next; mesn; mes "\"Hello, adventurer. Did my mother send you?\""; next; mes "\"It's so cold in here! Can you please open the cage?\""; next; mes "\"But be careful. If the Yetis hear you, they will come!\""; menu "Try to open the cage", L_Try_Cage, "Leave", L_close; L_Try_Cage: if (BaseLevel < .minLevel) goto L_To_Weak; if (countitem(TreasureKey) < .KEYS_AMOUNT) goto L_Not_Enough_Keys; delitem TreasureKey, .KEYS_AMOUNT; mes "As you try to open the door of the cage, there is a loud squeaking noise."; next; mes "You get an uncomfortable feeling and Cindy starts to shiver."; if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; npctalk "Oh no, the Yetis..."; // initialize fight $@FIGHT_YETI_STATUS = 1; $@FIGHT_YETI_WAVE = 0; $@YETI_COUNT = 1; $@FIGHT_YETI_PLAYER_COUNT = getmapusers("031-4"); areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, 1, "Cindy::OnPetDeath"; initnpctimer; goto L_close; L_Yeti: mesn; mes "\"Watch out, the Yetis!\""; goto L_close; L_Reward: mesn; mes "\"You are a hero! All these strong monsters!\""; next; mes "\"I've found this thing in the cave - it looks valuable. I want you to have it.\""; next; getinventorylist; if (@inventorylist_count == 100) goto L_Full_Inv; .@reward = rand2(15); if (.@reward < 10) goto L_Wizard_Hat; getitem WoodenStaff, 1; setq(KaizeiQuest_Cindy, 4); goto L_Visit; L_Wizard_Hat: // get a wizard hat in one of the ten colors - no white getitem any(2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209), 1; setq(KaizeiQuest_Cindy, 4); goto L_Visit; L_Visit: mes "\"Thank you so much; please come to my home. It's the house at the beach.\""; next; mes "\"I'm sure my mother wants to thank you as well.\""; goto L_close; L_Please_Visit: mesn; mes "\"Thank you, thank you! You're a hero! Please come home with me to our house at the beach!\""; next; mesc l("You can relive the memories for %d %s, however, the rewards cannot be obtained again.", .KEYS_AMOUNT*2, getitemlink(TreasureKey)); if (countitem(TreasureKey) < .KEYS_AMOUNT*2) goto L_close; mesc l("Do you want to?"); next; if (askyesno() == ASK_YES && !$@FIGHT_YETI_STATUS && BaseLevel >= .minLevel) { delitem TreasureKey, .KEYS_AMOUNT; goto L_Try_Cage; } goto L_close; L_To_Weak: mes "You try to open the cage, but it's stuck. It seems you're too weak!"; goto L_close; L_Not_Enough_Keys: mes "You don't have enough keys to open the cage."; goto L_close; L_Full_Inv: mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\""; goto L_close; L_close: @inventorylist_count = 0; close; OnTimer5000: setnpctimer 0; if ($@FIGHT_YETI_STATUS != 0) goto L_CaveLogic; goto L_Return_1; L_Return_1: $@FIGHT_YETI_PLAYER_COUNT = 0; maptimer2 "031-4", 10, "Cindy::OnTick"; end; L_CaveLogic: $@FIGHT_YETI_ROUND_PEN = $@FIGHT_YETI_PLAYER_COUNT; if ($@FIGHT_YETI_ROUND_PEN > 60) $@FIGHT_YETI_ROUND_PEN = 60; if ($@FIGHT_YETI_PLAYER_COUNT <= 0) goto L_CleanUp; set $@FIGHT_YETI_ROUND_TIMER, $@FIGHT_YETI_ROUND_TIMER + 5; // Advance 5 seconds if (mobcount("031-4", "Cindy::OnPetDeath") <= 0) goto L_NextWave; if ($@FIGHT_YETI_ROUND_TIMER + $@FIGHT_YETI_ROUND_PEN >= 120) goto L_NextWave; goto L_Return_1; L_NextWave: $@FIGHT_YETI_ROUND_TIMER = 0; $@FIGHT_YETI_WAVE = $@FIGHT_YETI_WAVE + 1; if ($@FIGHT_YETI_WAVE > 10 && $@YETI_COUNT == 0) goto L_CleanUp; if ($@FIGHT_YETI_WAVE > 10 && $@FIGHT_YETI_WAVE < 22) goto L_Return_1; if ($@FIGHT_YETI_WAVE > 22) areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5, "Cindy::OnPetDeath"; if ($@FIGHT_YETI_WAVE > 22) $@YETI_COUNT = $@YETI_COUNT + $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5; $@FIGHT_YETI_NUMBER = (5 + (1 * $@FIGHT_YETI_WAVE) + (2 * $@FIGHT_YETI_PLAYER_COUNT))/4; $@YETI_COUNT = $@YETI_COUNT + $@FIGHT_YETI_NUMBER; areamonster "031-4", 0, 0, 95, 91, "Yeti", Yeti, $@FIGHT_YETI_NUMBER, "Cindy::OnPetDeath"; $@msg$ = $@FIGHT_YETI_MESSAGES$[$@FIGHT_YETI_WAVE]; if ($@msg$ == "") goto L_Return_1; mapannounce "031-4", $@msg$, 0; mapannounce "031-3", $@msg$, 0; $@msg$ = ""; goto L_Return_1; OnTick: if (ispcdead()) end; $@FIGHT_YETI_PLAYER_COUNT = $@FIGHT_YETI_PLAYER_COUNT + 1; end; OnPetDeath: $@YETI_COUNT = $@YETI_COUNT - 1; end; L_CleanUp: maptimer2 "031-4", 10, "Cindy::OnReward"; $@FIGHT_YETI_STATUS = 0; $@FIGHT_YETI_PLAYER_COUNT = 0; $@FIGHT_YETI_WAVE = 0; $@FIGHT_YETI_ROUND_TIMER = 0; $@YETI_COUNT = 0; $@FIGHT_YETI_ROUND_PEN = 0; $@FIGHT_YETI_NUMBER = 0; killmonster "031-4", "Cindy::OnPetDeath"; stopnpctimer; setnpctimer 0; end; OnReward: if (ispcdead()) end; @bonus = (BaseLevel/2); DailyQuestBonus = DailyQuestBonus + @bonus; message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ; if (getq(KaizeiQuest_Cindy) != 2) goto L_End; setq(KaizeiQuest_Cindy, 3); message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you."; BOSS_POINTS = BOSS_POINTS + 70; message strcharinfo(0), "You gain 70 Boss Points giving you a total of " + BOSS_POINTS + "."; goto L_End; L_End: @bonus = 0; end; OnInit: setarray $@FIGHT_YETI_MESSAGES$[0], "", // unused // " : " is magic so that it says "global announcement from" "Cindy : Yetis!", "Cindy : Watch out!", "Cindy : More of them are coming!", "Cindy : Be careful! More of them!", "Cindy : Attention! There is another bunch of them!", "Cindy : Hang on! More of them!", "Cindy : More Yetis! Will this never end?", "Cindy : There are coming more and more!", "Cindy : Watch your back! There are so many of them!", "Cindy : This seems to be their final attack! I believe in you!"; .KEYS_AMOUNT = 10; .minLevel = 70; .distance = 5; end; }