summaryrefslogblamecommitdiff
path: root/npc/001-7/celestia_bossfight.txt
blob: fb0ce89455e8fd72ecb9325e9fafe4659e82eb41 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                                       
  











                                                                                
                           







                                            

                                         
                                                                                                                 
                                                                                                                  

                             
                                                                                           
                                                                                      

             
                                    

                                                                                          
                                    

                                                                                                                       
                                    




                                                                                                                                    

                                   

           
                                             

                    
                         
                                                    
                
                                                                                         

                  

                                                                     

                  

                                                    

                  
                                                  
                  



                                                       
     
                       
                   
                           
                                                 
                                    

                                                                                                                       

                                         
                                                                                                                                                   

             
                                    



                                         
                                                                                                                                                                       








                                                         
                                            

                                                                                        
                                            
                                                                              

                                                        
                                                
                                      








                                                                                                
                    
                 


                                                                     
                                                                                
                                                                   
                                       



                                                            
                  



                                                 
                                   


              







                                   


                                  
              


                                    
              


                                    
              
                          
                                                                   
                                                                                  
                                        

        




                                                        





 
// TMW2 Scripts
// Author:
//   Jesusalva
// Description:
//   Celestia Yeti King's quest. This controls the final showdown, and brings you
//   back home safely.
//
//      If you cheated your way to here, you won't be able to interact with it.
//      No other safety measures are in place. Lone players cannot challenge the
//      Yeti King, there must be at least 2 players there to do the challenge.
//      BEWARE, the Yeti King gains stronger poisons the more people are attacking him.
//
//      $@GM_OVERRIDE allows a single player to challenge him, as usual with all
//      co-op scripts.
//
//      If you do not challenge him, the chance to challenge him again is lost.

001-7,33,39,0	script	#YetiKing	NPC_YETI_KING,0,0,{
    .@q=getq(HurnscaldQuest_Celestia);
    if (.@q == 5 && !mobcount(.map$, "#YetiKing::OnVictory")) goto L_Survivor;
    if (.@q == 6) goto L_GoHome;
    end;

L_GoHome:
    mesc l("Go home now?");
    if (askyesno() == ASK_YES)
        warp "003-1-1", 94, 22;
    closedialog;
    if (!getareausers("001-7", 7))
        setnpcdisplay .name$, NPC_YETI_KING;
    close;

L_Survivor:
    if ($YETIKING_WINNER$ == "") {
        $YETIKING_WINNER$=strcharinfo(0);
        channelmes("#world", $YETIKING_WINNER$+" is the first player to finish Yeti King Quest!! GG, dude! %%N");
        announce "All hail ##B"+$YETIKING_WINNER$+"##b, first to complete the ##3Yeti King Quest!", bc_all|bc_npc;
        getexp 0, 2000;
        getitem PrismGift, 1;
        mesc l("CONGRATULATIONS! You are the first player to finish Yeti King quest!!"), 2;
        mesc l("You just gained a Prism Gift, and 2000 Job Exp for your bravery!"), 2;
        next;
    }
    mesn col(l("The Yeti King"), 3);
    mesq l("Good job, kid. You've survived both the Cave Of Trials and Soren's Village.");
    next;
    mesn col(l("The Yeti King"), 3);
    mesq l("That was only to prove you're strong enough on yourself to do whatever you want to do. You have friends.");
    next;
    mesn col(l("The Yeti King"), 3);
    mesq l("In this world, your friends are your strength. You deserve a reward for the victory, please choose whatever you want.");
    select
        l("I want a gemstone or ore"),
        l("I want experience"),
        l("I want gold"),
        l("I want coal"),
        l("I want monster points");

    mes "";
    .@r=rand(1,100)+(@YetiKing_Challenger*5);
    switch (@menu) {
        case 1:
            if (.@r > 70)
                getitem rand2(Diamond, Amethyst), 1;
            else
                getitem rand2(CopperOre, (REBRITH ? IridiumOre : TitaniumOre)), any(1,2);
            break;
        case 2:
            .@r+=BaseLevel;
            getexp .@r*80, .@r*2; // max 8000 xp and 200 jp (level 0)
            break;
        case 3:
            .@r+=JobLevel;
            Zeny=Zeny+.@r*75; // max 7500 gp (job 0)
            break;
        case 4:
            getitem Coal, (.@r/10); // max 10 coal
            break;
        case 5:
            .@r+=(BaseLevel+JobLevel)/2;
            Mobpt+=.@r*5; // max 500 mobpt (base/job 0)
            break;
    }
    // Completion bonus
    getexp 0, 2500;
    getitem StrangeCoin, 1;
    compareandsetq HurnscaldQuest_Celestia, 5, 6;
    mesn col(l("The Yeti King"), 3);
    mesq l("Here kid. Frostia, the elf town, is somewhere near here, but I'm not sure if you can reach it from here.");
    next;
    if ($@CINDY_STATE > gettimetick(2)) {
        mesn col(l("The Yeti King"), 3);
        mesq l("Some rogue Yetis are trying to escape to Nivalis. I can't hold them back for more than @@.", FuzzyTime($@CINDY_STATE+rand2(5,95)));
        next;
    }
    mesn col(l("The Yeti King"), 3);
    mesq l("I can warp you home now.");
    mes "";
    select
        l("Please, bring me back home."),
        rif((getareausers("001-7", 7) > 1 || $@GM_OVERRIDE) && !mobcount(.map$, "#YetiKing::OnVictory") && @YetiKing_Challenger, l("No, we challenge you to a duel!")),
        l("I'll walk around here a little more.");

    mes "";
    switch (@menu) {
        case 1:
            warp "003-1-1", 94, 22;
            break;
        case 2:
            compareandsetq HurnscaldQuest_Celestia, 6, 7;
            mesn col(l("The Yeti King"), 3);
            mesq l("Foolish kids, do you think violence is the answer to everything?!");
            next;
            mesn col(l("The Yeti King"), 3);
            mesq l("I give you five minutes to defeat me. Witness my wrath!");
            if (mobcount(.map$, "#YetiKing::OnVictory"))
                close;
            setnpcdisplay .name$, NPC_NO_SPRITE;
            npctalk l("*Roaaaaaar!*");
            monster .map$, .x, .y, strmobinfo(1, YetiKing), YetiKing, 1, "#YetiKing::OnVictory";
            initnpctimer;
            break;
    }
    close;

OnVictory:
    stopnpctimer;
    setnpcdisplay .name$, NPC_SUMMONING_CIRC;
    //Karma=Karma+1;
    Mobpt+=10000;
    getitem StrangeCoin, 2;
    getmapxy(.@m$, .@x, .@y, 0);
    makeitem(StrangeCoin, 1, .@m$, .@x+rand2(-1,1), .@y+rand2(-1,1));
    npctalk l("Good job... You can keep the drops. Touch here to return home.");
    areatimer "001-7", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat";
    donpcevent "Celestia::OnClock0002";
    end;

// This allows the challenger to go back home without dying.
OnDefeat:
    getexp 0, 100;
    compareandsetq HurnscaldQuest_Celestia, 7, 6;
    end;

OnTimer60000:
    npctalk "Time left: 4 minutes";
    end;

OnTimer120000:
    npctalk "Time left: 3 minutes";
    end;

OnTimer180000:
    npctalk "Time left: 2 minutes";
    end;

OnTimer240000:
    npctalk "Time left: 1 minute";
    end;

OnTimer270000:
    npctalk "Time left: 30 seconds";
    end;

OnTimer290000:
    npctalk "Time left: 10 seconds";
    end;

OnTimer300000:
    npctalk "Time is up!";
    areatimer "001-7", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat";
    killmonster(.map$, "#YetiKing::OnVictory"); // I could use "All" as label, too
    setnpcdisplay .name$, NPC_YETI_KING;
    end;

// Hourly, check if there are players and fix the sprite
OnMinute17:
    if (!getareausers("001-7", 21))
        setnpcdisplay .name$, NPC_YETI_KING;
    end;
}