summaryrefslogblamecommitdiff
path: root/npc/023-2/mk.txt
blob: 8b2b789cc960a778be91374b9942e100c5b617f6 (plain) (tree)
1
2
3
4
5
6
7
8
9
10





                            
                           


                                                                 



                           




                  
            













                                                       
                                                      
               
                                                      
               





                                                                                                                                          


                



                                                                                                                 


                                                                                                   

                                                                                                                                 



                                                                                                       
                                                                                                
                                                                                             




                                                             
                                                                                                     












                                      
                                      




                 




                                                                                                                


                    
                         



                                                                                                                                                          
                                   
                                                                       
     




                                      

                                                                                                               


                                                                                                                    
                   




                     
              




                                                                                                                                                        

                                                                                                      
                                                                                                               








                                                                       
        


        

 
























































































                                                                 
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Nivalis Liberation Day

// The Walking Monster King
023-2,121,35,0	script	The Monster King#NLib	NPC_MONSTERKING,{
    end;

OnTouch:
    percentheal -100, -100;
    end;

OnInit:
    .sex = G_MALE;
    .distance = 5;

OnHour00:
OnReprocess:
    if (!$NLIB_DAY) {
        disablenpc .name$;
        end;
    }
    switch ($NLIB_DAY) {
        case 1:
            movenpc(.name$, 121, 35, DIR_WEST); break;
        case 2:
            movenpc(.name$, 105, 37, DIR_NORTH); break;
        case 3:
            movenpc(.name$, 105, 51, DIR_SOUTH); break;
        case 4:
            movenpc(.name$, 102, 63, DIR_WEST); break;
        case 5:
            movenpc(.name$, 81, 59, DIR_NORTH); break;
        case 6:
            movenpc(.name$, 53, 53, DIR_SOUTH); break;
        case 7:
            movenpc(.name$, 36, 99, DIR_SOUTH); break;
        default:
            channelmes("#world", "A bug happened: Monster King # Nivalis Liberation Day - Value Out of Range."); disablenpc .name$; break;
    }

    end;

// Event Handler

L_Finish:
    // Just being bigger is not enough. Must be over the double for the advantage draw (about 1 player for 10m)
    if (.victory_count > (.defeat_count*2)) {
        announce "The fight ends in draw! The Monster King did accomplish what he set, though...", bc_all|bc_npc;
        channelmes("#world", "Congratulations for the draw, that was a good fight.");
        channelmes("#world", "The Monster King stole whatever he wanted and left.");
        channelmes("#world", "Call @Jesusalva or @Saulc to increase drop rates during the day :o");
    } else if (.victory_count < 100) { // 1 player for 5 minutes is enough to prevent this loss
        announce "The Monster King, after moping the floor with the players, accomplish what he set, and left...", bc_all|bc_npc;
        channelmes("#world", "The players failed miserably. Getting magic is now permanently harder.");
        $MANA_BLVL+=5;
        $MANA_JLVL+=5;
    } else {
        announce "The fight ends in draw, with advantage to the Monster King...", bc_all|bc_npc;
        channelmes("#world", "The players weren't capable to really harm the Monster King.");
    }
L_Finish2:
    killmonsterall("023-2");
    .wcycle=0;
    maptimer("023-2", 10, "The Monster King#NLib::OnReturn");
    channelmes("#world", "*FINAL SCORE -  PLAYERS "+.victory_count+" : "+.defeat_count+" MONSTERS*");

    // Clean up the event
    $NIVALIS_LIBDATE=gettimetick(2);
    $NLIB_DAY=0;
    $NLIB_HIGHTIME=0;
    $NLIB_HIGHNAME$="";
    disablenpc "Lightbringer#NLib";

    removemapflag("019-3", mf_bexp);
    removemapflag("019-3", mf_nosave);
    removemapflag("020-1", mf_bexp);
    removemapflag("020-1", mf_nosave);
    removemapflag("023-2", mf_bexp);
    removemapflag("023-2", mf_nosave);
    stopnpctimer;
    end;

OnTimer3000:
    .wcycle+=3;
    .@pl=getareausers("023-2", 21, 109, 31, 114);
    .@pla=getmapusers("023-2");
    if (.@pl <= 0 && .@pla > 0)
        mapannounce "023-2", "##1WARNING: Players outside the Monster King room counts toward DEFEAT count!", 0;
    .victory_count+=.@pl;

    // Processment
    if (.@pl <= 0) {
        .defeat_count+=1;
    } else if (.wcycle % 30 == 3) {
        areamonster "023-2", 21, 109, 31, 114, "Monster", any(AngryScorpion, BlackSlime, BlackScorpion, Wolvern, BlueSlime, SlimeBlast, CaveMaggot), .@pl;
    } else if (.wcycle % 30 == 18) {
        areamonster "023-2", 21, 109, 31, 114, "Monster", any(BlackSlime, BlueSlime, SlimeBlast), 1; // PS. Drop “Demure Dark Soul” ¬.¬
    } else if (.wcycle % 60 == 0) {
        mapannounce "023-2", str(.wcycle/60)+" minute(s) remaining", 0;
    }
    if (.wcycle >= 900) goto L_Finish;
    initnpctimer;
    end;

OnVictory:
    channelmes("#world", "The Monster King was defeated by players, and had to flee!");
    channelmes("#world", "All magic ranks can be obtained with 10 levels and 10 int points less than before!");
    announce "Players have defeated the Monster King! He fleed from the cave after leaving a decoy!", bc_all|bc_npc;
    $MANA_BINT-=10;
    $MANA_BLVL-=10;
    goto L_Finish2;
    end;

OnBegin:
    .defeat_count=0;
    .victory_count=0;
    .wcycle=0;
    channelmes("#world", "The fight against the Monster King ends in 15 minutes. If he is forced to flee, that'll result as victory.");
    channelmes("#world", "Each cycle there are players fighting against him will result in victory points. The opposite will result in defeat points.");
    channelmes("#world", "More players fighting will result in more victory points. This may affect drastically the result.");
    channelmes("#world", "Defeat, decided by a certain threshold of points, will result in MAGIC BEING PERMANENTLY HARDER TO OBTAIN.");
    announce "The Alliance attacks the Monster King! 15 minutes! Rules in #world", bc_all|bc_npc;
    movenpc(.name$, 0, 0);
    monster("023-2", 24, 111, "The Monster King", MonsterKing, 1, "The Monster King#NLib::OnVictory");
    monster("023-2", 30, 109, "Andrei Sakar", AndreiSakar, 1, "The Monster King#NLib::OnSkip", Size_Medium, 1);
    areamonster "023-2", 21, 109, 31, 114, "Monster", AngryScorpion, 1;
    areamonster "023-2", 21, 109, 31, 114, "Monster", BlackSlime, 2;
    areamonster "023-2", 21, 109, 31, 114, "Monster", BlueSlime, 1;
    areamonster "023-2", 21, 109, 31, 114, "Monster", CaveMaggot, 1;
    initnpctimer;
    end;

OnReturn:
    warp "019-2", 43, 55;
    end;

OnSkip:
    end;
}


// Floor triggers
023-2,121,35,0	script	#NLIB_T01	NPC_HIDDEN,1,2,{

OnTouch:
    if ($NLIB_DAY == 1) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    }
    end;
}


023-2,110,36,0	script	#NLIB_T02	NPC_HIDDEN,2,2,{

OnTouch:
    if ($NLIB_DAY == 2) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    } else if ($NLIB_DAY < 2) {
        slide 114, 36;
        dispbottom l("I should not veer off too much the path.");
    }
    end;
}

023-2,105,50,0	script	#NLIB_T03	NPC_HIDDEN,2,2,{

OnTouch:
    if ($NLIB_DAY == 3) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    } else if ($NLIB_DAY < 3) {
        slide 104, 48;
        dispbottom l("I should not veer off too much the path.");
    }
    end;
}

023-2,104,62,0	script	#NLIB_T04	NPC_HIDDEN,0,0,{

OnTouch:
    if ($NLIB_DAY == 4) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    } else if ($NLIB_DAY < 4) {
        slide 104, 61;
        dispbottom l("I should not veer off too much the path.");
    }
    end;
}

023-2,86,59,0	script	#NLIB_T05	NPC_HIDDEN,2,5,{

OnTouch:
    if ($NLIB_DAY == 5) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    } else if ($NLIB_DAY < 5) {
        slide 91, 61;
        dispbottom l("I should not veer off too much the path.");
    }
    end;
}

023-2,53,49,0	script	#NLIB_T06	NPC_HIDDEN,0,5,{

OnTouch:
    if ($NLIB_DAY == 6) {
        @QNL3=1;
        dispbottom l("I've found the Monster King.");
    } else if ($NLIB_DAY < 6) {
        slide 55, 48;
        dispbottom l("I should not veer off too much the path.");
    }
    end;
}

023-2,35,90,0	script	#NLIB_T07	NPC_HIDDEN,0,2,{

OnTouch:
    if (gettime(2) < 25 || gettime(2) > 35) {
        slide 39, 89;
        dispbottom l("I should not go ahead... yet.");
    }
    end;
}