summaryrefslogblamecommitdiff
path: root/npc/031-4/cindyCave.txt
blob: 284a58f81c6d0a3f5eabc499a089d484031c728e (plain) (tree)
1
2
3
4
5
6
7
8

                                        
                                  

                                              


                                     














                                                                                                                                               
         









                                                                     
                              
                       
                                              
                               
                                      











                                                                                    
                                                                            




                 
         



                                    
         







                                                                                            

                         
                          

                               



                                                           

                                                                               








                                                                                      
         
                                                                                                       
         

                                                                                                                                              




                                
                               
     
                                          

                        














                                                                                                   
                             









                                  
                                           








                                                                                    
                                                    














                                                                 
                                                                                                                                




                                                                                            
                                                                                              


















                                                              
                                             
















                                                                                                                          
                                     
                   
                               






















                                                                                                 



                      

        
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 strnpcinfo(0), "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;
}