diff options
Diffstat (limited to 'world/map/npc/031-4/cindyCave.txt')
-rw-r--r-- | world/map/npc/031-4/cindyCave.txt | 363 |
1 files changed, 181 insertions, 182 deletions
diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt index 223aa80b..c4a589b2 100644 --- a/world/map/npc/031-4/cindyCave.txt +++ b/world/map/npc/031-4/cindyCave.txt @@ -5,239 +5,238 @@ // state2: Cindy is saved, she gives you a reward (wizard hat or wooden staff) // state3: and greater: Cindy is saved, she asks you to visit them -031-4.gat,42,42,0 script Cindy 198, { - if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; +031-4.gat,42,42,0|script|Cindy|198, { + if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; - set @KEYS_AMOUNT, 10; + set @KEYS_AMOUNT, 10; - set @Q_Nivalis_state_MASK, NIBBLE_5_MASK; - set @Q_Nivalis_state_SHIFT, NIBBLE_5_SHIFT; + set @Q_Nivalis_state_MASK, NIBBLE_5_MASK; + set @Q_Nivalis_state_SHIFT, NIBBLE_5_SHIFT; - set @rescue_Cindy, ((QUEST_Nivalis_state & @Q_Nivalis_state_MASK) >> @Q_Nivalis_state_SHIFT); + set @rescue_Cindy, ((QUEST_Nivalis_state & @Q_Nivalis_state_MASK) >> @Q_Nivalis_state_SHIFT); - if (Sex == 0) set @title$, "Misses"; - if (Sex == 1) set @title$, "Mister"; + if (Sex == 0) set @title$, "Misses"; + if (Sex == 1) set @title$, "Mister"; if (@rescue_Cindy >= 3) goto L_Please_Visit; - if (@rescue_Cindy == 2) goto L_Reward; - if (@rescue_Cindy == 1) goto L_Please_Help; + if (@rescue_Cindy == 2) goto L_Reward; + if (@rescue_Cindy == 1) 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."; - close; + 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."; + 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.", - ; - mes "Cindy doesn't look so scared anymore."; - next; - mes "[Cindy]"; - mes "\"Hello, dear " + @title$ + " 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", -; - close; + 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.", - ; + mes "Cindy doesn't look so scared anymore."; + next; + mes "[Cindy]"; + mes "\"Hello, dear " + @title$ + " 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", -; + close; L_Try_Cage: - if (baselevel < 70) 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."; - next; - mes "\"Oh no, the Yetis...\""; - if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; - - // initialize fight - set $@FIGHT_YETI_STATUS, 1; - set $@FIGHT_YETI_WAVE, 0; - set $@YETI_COUNT, 1; - set $@FIGHT_YETI_PLAYER_COUNT, getareausers("031-4.gat", 0, 0, 95, 91); - // this yeti is spawned because of some timing problems - // without it, the first and second wave start nearly the same time - areamonster "031-4.gat", 0, 0, 95, 91, "", 1072, 1, "Cindy::onPetDeath"; - - startnpctimer; - goto L_Exit; + if (baselevel < 70) 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."; + next; + mes "\"Oh no, the Yetis...\""; + if ($@FIGHT_YETI_STATUS != 0) goto L_Yeti; + + // initialize fight + set $@FIGHT_YETI_STATUS, 1; + set $@FIGHT_YETI_WAVE, 0; + set $@YETI_COUNT, 1; + set $@FIGHT_YETI_PLAYER_COUNT, getareausers("031-4.gat", 0, 0, 95, 91); + // this yeti is spawned because of some timing problems + // without it, the first and second wave start nearly the same time + areamonster "031-4.gat", 0, 0, 95, 91, "", 1072, 1, "Cindy::onPetDeath"; + + startnpctimer; + goto L_Exit; L_Exit: - close; + close; L_Yeti: - mes "[Cindy]"; - mes "\"Watch out, the Yetis!\""; - close; + mes "[Cindy]"; + mes "\"Watch out, the Yetis!\""; + close; L_Reward: - mes "[Cindy]"; - 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; - - set @reward, rand(15); - if (@reward < 10) goto L_Wizard_Hat; - getitem "WoodenStaff", 1; - set @rescue_Cindy, 3; - callsub S_Update_Mask; - goto L_Visit; + mes "[Cindy]"; + 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; + + set @reward, rand(15); + if (@reward < 10) goto L_Wizard_Hat; + getitem "WoodenStaff", 1; + set @rescue_Cindy, 3; + callsub S_Update_Mask; + goto L_Visit; L_Wizard_Hat: - // get a wizard hat in one of the ten colors - no white - setarray @wizardhats, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209; - getitem @wizardhats[@reward], 1; - set @rescue_Cindy, 3; - callsub S_Update_Mask; + // get a wizard hat in one of the ten colors - no white + setarray @wizardhats, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209; + getitem @wizardhats[@reward], 1; + set @rescue_Cindy, 3; + callsub S_Update_Mask; 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.\""; - close; + 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.\""; + close; L_Please_Visit: - mes "[Cindy]"; - mes "\"Thank you, thank you! You're a hero! Please come home with me to our house at the beach!\""; - close; + mes "[Cindy]"; + mes "\"Thank you, thank you! You're a hero! Please come home with me to our house at the beach!\""; + close; L_To_Weak: - mes "You try to open the cage, but it's stuck. It seems you're too weak!"; - close; + mes "You try to open the cage, but it's stuck. It seems you're too weak!"; + close; L_Not_Enough_Keys: - mes "You don't have enough keys to open the cage."; - close; + mes "You don't have enough keys to open the cage."; + close; L_Full_Inv: - mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\""; - close; + mes "\"Oh, it seems you carry so much stuff - I will keep it for you until you can take it.\""; + close; // Fight logic attached to npc OnTimer5000: - setnpctimer 0; - if ($@FIGHT_YETI_STATUS != 0) goto L_CaveLogic; + setnpctimer 0; + if ($@FIGHT_YETI_STATUS != 0) goto L_CaveLogic; L_Return_1: - set $@FIGHT_YETI_PLAYER_COUNT, 0; - areatimer "031-4.gat", 0, 0, 95, 91, 10, "Cindy::onTick"; - end; + set $@FIGHT_YETI_PLAYER_COUNT, 0; + areatimer "031-4.gat", 0, 0, 95, 91, 10, "Cindy::onTick"; + end; L_CaveLogic: - set $@FIGHT_YETI_ROUND_PEN, $@FIGHT_YETI_PLAYER_COUNT; - if ($@FIGHT_YETI_ROUND_PEN > 60) set $@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.gat", "Cindy::onPetDeath") <= 0) goto L_NextWave; - if ($@FIGHT_YETI_ROUND_TIMER + $@FIGHT_YETI_ROUND_PEN >= 120) goto L_NextWave; - goto L_Return_1; + set $@FIGHT_YETI_ROUND_PEN, $@FIGHT_YETI_PLAYER_COUNT; + if ($@FIGHT_YETI_ROUND_PEN > 60) set $@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.gat", "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: - set $@FIGHT_YETI_ROUND_TIMER, 0; - set $@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.gat", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5, "Cindy::onPetDeath"; - if ($@FIGHT_YETI_WAVE > 22) - set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5; - set $@FIGHT_YETI_NUMBER, (1 + (1 * $@FIGHT_YETI_WAVE) + (2 * $@FIGHT_YETI_PLAYER_COUNT))/4; - set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_NUMBER; - - areamonster "031-4.gat", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_NUMBER, "Cindy::onPetDeath"; - - if ($@FIGHT_YETI_WAVE == 1) - mapannounce "031-4.gat", "Cindy: Yetis!", 0; - if ($@FIGHT_YETI_WAVE == 2) - mapannounce "031-4.gat", "Cindy: Watch out!", 0; - if ($@FIGHT_YETI_WAVE == 3) - mapannounce "031-4.gat", "Cindy: More of them are coming!", 0; - if ($@FIGHT_YETI_WAVE == 4) - mapannounce "031-4.gat", "Cindy: Be careful! More of them!", 0; - if ($@FIGHT_YETI_WAVE == 5) - mapannounce "031-4.gat", "Cindy: Attention! There is another bunch of them!", 0; - if ($@FIGHT_YETI_WAVE == 6) - mapannounce "031-4.gat", "Cindy: Hang on! More of them!", 0; - if ($@FIGHT_YETI_WAVE == 7) - mapannounce "031-4.gat", "Cindy: More Yetis! Will this never end?", 0; - if ($@FIGHT_YETI_WAVE == 8) - mapannounce "031-4.gat", "Cindy: There are coming more and more!", 0; - if ($@FIGHT_YETI_WAVE == 9) - mapannounce "031-4.gat", "Cindy: Watch your back! There are so many of them!", 0; - if ($@FIGHT_YETI_WAVE == 10) - mapannounce "031-4.gat", "Cindy: This seems to be their final attack! I believe in you!", 0; - - if ($@FIGHT_YETI_WAVE == 1) - mapannounce "031-3.gat", "Cindy: Yetis!", 0; - if ($@FIGHT_YETI_WAVE == 2) - mapannounce "031-3.gat", "Cindy: Watch out!", 0; - if ($@FIGHT_YETI_WAVE == 3) - mapannounce "031-3.gat", "Cindy: More of them are coming!", 0; - if ($@FIGHT_YETI_WAVE == 4) - mapannounce "031-3.gat", "Cindy: Be careful! More of them!", 0; - if ($@FIGHT_YETI_WAVE == 5) - mapannounce "031-3.gat", "Cindy: Attention! There is another bunch of them!", 0; - if ($@FIGHT_YETI_WAVE == 6) - mapannounce "031-3.gat", "Cindy: Hang on! More of them!", 0; - if ($@FIGHT_YETI_WAVE == 7) - mapannounce "031-3.gat", "Cindy: More Yetis! Will this never end?", 0; - if ($@FIGHT_YETI_WAVE == 8) - mapannounce "031-3.gat", "Cindy: There are coming more and more!", 0; - if ($@FIGHT_YETI_WAVE == 9) - mapannounce "031-3.gat", "Cindy: Watch your back! There are so many of them!", 0; - if ($@FIGHT_YETI_WAVE == 10) - mapannounce "031-3.gat", "Cindy: This seems to be their final attack! I believe in you!", 0; - - goto L_Return_1; + set $@FIGHT_YETI_ROUND_TIMER, 0; + set $@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.gat", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5, "Cindy::onPetDeath"; + if ($@FIGHT_YETI_WAVE > 22) + set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_WAVE*2 + $@FIGHT_YETI_PLAYER_COUNT*5; + set $@FIGHT_YETI_NUMBER, (1 + (1 * $@FIGHT_YETI_WAVE) + (2 * $@FIGHT_YETI_PLAYER_COUNT))/4; + set $@YETI_COUNT, $@YETI_COUNT + $@FIGHT_YETI_NUMBER; + + areamonster "031-4.gat", 0, 0, 95, 91, "", 1072, $@FIGHT_YETI_NUMBER, "Cindy::onPetDeath"; + + if ($@FIGHT_YETI_WAVE == 1) + mapannounce "031-4.gat", "Cindy: Yetis!", 0; + if ($@FIGHT_YETI_WAVE == 2) + mapannounce "031-4.gat", "Cindy: Watch out!", 0; + if ($@FIGHT_YETI_WAVE == 3) + mapannounce "031-4.gat", "Cindy: More of them are coming!", 0; + if ($@FIGHT_YETI_WAVE == 4) + mapannounce "031-4.gat", "Cindy: Be careful! More of them!", 0; + if ($@FIGHT_YETI_WAVE == 5) + mapannounce "031-4.gat", "Cindy: Attention! There is another bunch of them!", 0; + if ($@FIGHT_YETI_WAVE == 6) + mapannounce "031-4.gat", "Cindy: Hang on! More of them!", 0; + if ($@FIGHT_YETI_WAVE == 7) + mapannounce "031-4.gat", "Cindy: More Yetis! Will this never end?", 0; + if ($@FIGHT_YETI_WAVE == 8) + mapannounce "031-4.gat", "Cindy: There are coming more and more!", 0; + if ($@FIGHT_YETI_WAVE == 9) + mapannounce "031-4.gat", "Cindy: Watch your back! There are so many of them!", 0; + if ($@FIGHT_YETI_WAVE == 10) + mapannounce "031-4.gat", "Cindy: This seems to be their final attack! I believe in you!", 0; + + if ($@FIGHT_YETI_WAVE == 1) + mapannounce "031-3.gat", "Cindy: Yetis!", 0; + if ($@FIGHT_YETI_WAVE == 2) + mapannounce "031-3.gat", "Cindy: Watch out!", 0; + if ($@FIGHT_YETI_WAVE == 3) + mapannounce "031-3.gat", "Cindy: More of them are coming!", 0; + if ($@FIGHT_YETI_WAVE == 4) + mapannounce "031-3.gat", "Cindy: Be careful! More of them!", 0; + if ($@FIGHT_YETI_WAVE == 5) + mapannounce "031-3.gat", "Cindy: Attention! There is another bunch of them!", 0; + if ($@FIGHT_YETI_WAVE == 6) + mapannounce "031-3.gat", "Cindy: Hang on! More of them!", 0; + if ($@FIGHT_YETI_WAVE == 7) + mapannounce "031-3.gat", "Cindy: More Yetis! Will this never end?", 0; + if ($@FIGHT_YETI_WAVE == 8) + mapannounce "031-3.gat", "Cindy: There are coming more and more!", 0; + if ($@FIGHT_YETI_WAVE == 9) + mapannounce "031-3.gat", "Cindy: Watch your back! There are so many of them!", 0; + if ($@FIGHT_YETI_WAVE == 10) + mapannounce "031-3.gat", "Cindy: This seems to be their final attack! I believe in you!", 0; + + goto L_Return_1; // Called on each player once every 5 seconds onTick: - if (isdead(0)) end; - set $@FIGHT_YETI_PLAYER_COUNT, $@FIGHT_YETI_PLAYER_COUNT + 1; - end; + if (isdead()) end; + set $@FIGHT_YETI_PLAYER_COUNT, $@FIGHT_YETI_PLAYER_COUNT + 1; + end; onPetDeath: - set $@YETI_COUNT, $@YETI_COUNT - 1; - end; + set $@YETI_COUNT, $@YETI_COUNT - 1; + end; onInit: - initnpctimer; - stopnpctimer; + initnpctimer; + stopnpctimer; L_CleanUp: - areatimer "031-4.gat", 0, 0, 95, 91, 10, "Cindy::onReward"; - set $@FIGHT_YETI_STATUS, 0; - set $@FIGHT_YETI_PLAYER_COUNT, 0; - set $@FIGHT_YETI_WAVE, 1; - set $@FIGHT_YETI_ROUND_TIMER, 0; - killmonster "031-4.gat", "Cindy::onPetDeath"; - stopnpctimer; - setnpctimer 0; - end; + areatimer "031-4.gat", 0, 0, 95, 91, 10, "Cindy::onReward"; + set $@FIGHT_YETI_STATUS, 0; + set $@FIGHT_YETI_PLAYER_COUNT, 0; + set $@FIGHT_YETI_WAVE, 1; + set $@FIGHT_YETI_ROUND_TIMER, 0; + killmonster "031-4.gat", "Cindy::onPetDeath"; + stopnpctimer; + setnpctimer 0; + end; onReward: - if (isdead(0)) end; - set @bonus, (baselevel/2); - set DailyQuestBonus, DailyQuestBonus + @bonus; - message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ; - if (@rescue_Cindy != 1 ) goto L_No_Progress; - set @rescue_Cindy, 2; - callsub S_Update_Mask; - message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you."; -L_No_Progress: - end; + if (isdead()) end; + set @bonus, (baselevel/2); + set DailyQuestBonus, DailyQuestBonus + @bonus; + message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ; + if (@rescue_Cindy != 1 ) end; + set @rescue_Cindy, 2; + callsub S_Update_Mask; + message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you."; + end; ///////// S_Update_Mask: set QUEST_Nivalis_state, - (QUEST_Nivalis_state & ~(@Q_Nivalis_state_MASK)) + (QUEST_Nivalis_state & ~(@Q_Nivalis_state_MASK)) | (@rescue_Cindy << @Q_Nivalis_state_SHIFT); return; } |