summaryrefslogblamecommitdiff
path: root/npc/001-7/celestia_bossfight.txt
blob: 32009be0ce6cf193faa800c5a17972b0b2109efe (plain) (tree)
































                                                                                       

                                         

                                                                                                                     






                                                                                                      














                                                                                                                                    
                                             

                    
                         






















                                                                                                                       
                                                                                                                                                                       












                                                                                        
                                                                              
                                                
                                      








                                                                                                
                  
                                                                                
                                                                   







                                                            
                                   


              







                                   


                                  
              


                                    
              


                                    
              
                          
                                                                   
                                                                                  
                                        

        




                                                        





 
// 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:
    mes col("Go home now?", 9);
    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 l("All hail ##B@@##b, first to complete the ##3Yeti King Quest!", $YETIKING_WINNER$), bc_all|bc_npc;
        Karma=Karma+1;
        getexp 0, 200;
        getitem SilverGift, 1;
        mes col("CONGRATULATIONS! You are the first player to finish Yeti King quest!!", 2);
        mes col("You just gained a Karma point, a Silver Gift, and 200 Job Exp for your bravery!", 2);
        next;
    }
    mesn col("The Yeti King", 3);
    mesq l("Good job, kid. You've survived both the Cave Of Trials and Soren's Village.");
    next;
    mesn col("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("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");

    mes "";
    .@r=rand(1,100)+(@YetiKing_Challenger*5);
    switch (@menu) {
        case 1:
            if (.@r > 70)
                getitem rand(Diamond, Amethyst), 1;
            else
                getitem rand(CopperOre, TitaniumOre), 1;
            break;
        case 2:
            getexp .@r*20, .@r; // max 2000 xp and 100 jp
            break;
        case 3:
            Zeny=Zeny+.@r*25; // max 2500 gp
            break;
        case 4:
            getitem Coal, (.@r/20); // max 5 coal
            break;
    }
    compareandsetq HurnscaldQuest_Celestia, 5, 6;
    mesn col("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;
    mesn col("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("The Yeti King", 3);
            mesq l("Foolish kids, do you think violence is the answer to everything?!");
            next;
            mesn col("The Yeti King", 3);
            mesq l("I give you five minutes to defeat me. Witness my wrath!");
            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;
    npctalk l("Good job... You can keep the drops. Touch here to return home.");
    areatimer "001-7", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat";
    end;

// This allows the challenger to go back home without dying.
OnDefeat:
    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;
}