summaryrefslogblamecommitdiff
path: root/npc/boss/throne.txt
blob: 8bf51d0c51e8764fbfcbadff82ac0bbabc896a93 (plain) (tree)
1
2
3
4
5



                
                                        










                                                                             

                     
              
                        

                                                                                          

                                                      
 


                              



                                                                
 
                                                 



                            
                                     

                                                                            
                             










                                          








                                                                   
                                                                    



                               
                                                                    
     

















                                                                                          











              


                        




                                                      
                         



                                                                         
                                                  



                                                                 
                                                   


                                      
                                      


                                                                                                           
                                                                                                   
        
 
 
































                                                                            
// TMW2 Scripts.
// Author:
//  Jesusalva
// Description:
//  Monster King Throne ($@MK_CHALLENGE)

boss,45,45,0	script	#monsterthrone	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    if (strcharinfo(2) == "Monster King") end;
    warp "boss", 45, 48;
    percentheal -15,0;
    dispbottom "The throne is cursed, only the Monster King may seat on it.";
    end;

// Controls the Event
OnBegin:
    .CYCLES=0;
    $@MK_CHALLENGE=true;
    .MK=monster("boss", 45, 45, "The Monster King", MonsterKing, 1, .name$+"::OnVictory");
    .@bhp=getunitdata(.MK, UDT_MAXHP);
    setunitdata(.MK, UDT_MAXHP,    .@bhp+2000*.FAILS);
    setunitdata(.MK, UDT_HP,       .@bhp+2000*.FAILS);

    // Spawn reinforcements
    .@mobId=MonsterLieutenant;
    .@ts$="Lieutenant";
    monster("boss", 40, 40, strmobinfo(1, .@mobId), .@mobId, 1);
    monster("boss", 50, 50, strmobinfo(1, .@mobId), .@mobId, 1);
    monster("boss", 40, 50, strmobinfo(1, .@mobId), .@mobId, 1);
    monster("boss", 50, 40, strmobinfo(1, .@mobId), .@mobId, 1);

    mapannounce("boss", "Begin!", bc_map|bc_npc);
    initnpctimer;
    end;

function CheckFinalAssault {
    if (!siege_calcdiff("boss", 5)) {
        kamibroadcast("You noobs, you all deserve to die!", "Monster King");
        stopnpctimer;
        $@MK_CHALLENGE=false;
        // Clean Up
        mapwarp("boss", "017-1", 120, 88);
        killmonsterall("boss");
        // Raise difficulty
        .FAILS+=1;
        // Halt execution
        end;
    }
    return;
}

OnTimer120000:
    .CYCLES+=1;
    //areamonster("boss", 20, 20, 70, 70, "Monster King Slave", );
    // Spawn several monsters on the Boss Room every 2 minutes
    siege_cast("boss", .name$, .FAILS, TP_TULIM|TP_HURNS|TP_NIVAL);
    // Spawn an extra mini-boss at minutes: 10 and 30
    if (.CYCLES == 5) {
        .@mobId=MonsterColonel;
        .@ts$="Colonel";
        monster("boss", 45, 44, strmobinfo(1, .@mobId), .@mobId, 1);
    }
    if (.CYCLES == 15) {
        .@mobId=MonsterGeneral;
        .@ts$="General";
        monster("boss", 45, 44, strmobinfo(1, .@mobId), .@mobId, 1);
    }
    initnpctimer;
OnTimer15000:
    // Each fail raise curse duration in 0.1s - chance of curse is 15% each 15s
    if (rand2(100) <= 15) {
        areasc2("boss", 45, 45, 25, 3000+(.FAILS*100), SC_CURSE, BL_PC | BL_HOM | BL_MER);
        //globalmes("MSG");
        unittalk(.MK, "Be cursed, you fools! I am the mighty Monster King!!");
    }
OnTimer5000:
OnTimer10000:
OnTimer20000:
OnTimer25000:
OnTimer30000:
OnTimer35000:
OnTimer40000:
OnTimer45000:
OnTimer50000:
OnTimer55000:
OnTimer60000:
OnTimer65000:
OnTimer70000:
OnTimer75000:
OnTimer80000:
OnTimer85000:
OnTimer90000:
OnTimer95000:
OnTimer100000:
OnTimer105000:
OnTimer110000:
OnTimer115000:
    CheckFinalAssault();
    end;

// Monster King was defeated - game won
OnVictory:
    // Not killed by a player? It doesn't counts, then
    if (!playerattached())
        end;
    $@MK_CHALLENGE=false;
    kamibroadcast("has just defeated the Monster King.", strcharinfo(0));
    stopnpctimer;
    mapwarp("boss", "017-1", 120, 88);
    $GAME_STORYLINE=5;
    specialeffect(FX_FANFARE, AREA, getcharid(3));
    // Without the Monster King to rule monsters... TODO Isbamuth
    setbattleflag("monster_ai", 0x209);
    setbattleflag("monster_active_enable", false);
    setbattleflag("mob_count_rate", 25);
    //charcommand("@reloadbattleconf"); // Careful!
    donpcevent("@exprate::OnReload");
    donpcevent("@droprate::OnReload");
    // Player Reward
    /*getitembound(AegisShield, 1, 1);
    dispbottom l("For defeating the Monster King, you've got the Legendary @@.", getitemlink(AegisShield));
    dispbottom l("This item cannot be traded normally and is a Legendary Item.");
    dispbottom l("You can transfer it with \"@grantpower\" command. Please contact a GM for more info.");
    dispbottom l("Protip: If you plan in selling it, it's adviseable to ask for GM mediation."); */
    end;
}

// Room Traps, only against players
boss,0,0,0	script	#MKBossTrap01	NPC_TRAP,0,0,{
    end;

OnTouch:
    SteelTrap(rand2(10, 20));
    end;

OnTimer10000:
    stopnpctimer;
    setnpctimer 0;
    setnpcdisplay .name$, NPC_TRAP;
    //end;
    // Move the trap away after it disarms

OnMinute14:
OnMinute26:
OnMinute40:
OnMinute54:
OnInit:
    .@x=rand2(20,70);
    .@y=rand2(20,70);
    movenpc .name$, .@x, .@y;
    end;
}

// Create more traps. (They can be on walls)
boss,0,0,0	duplicate(#MKBossTrap01)	#MKBossTrap02	NPC_TRAP,0,0
boss,0,0,0	duplicate(#MKBossTrap01)	#MKBossTrap03	NPC_TRAP,0,0
boss,0,0,0	duplicate(#MKBossTrap01)	#MKBossTrap04	NPC_TRAP,0,0
boss,0,0,0	duplicate(#MKBossTrap01)	#MKBossTrap05	NPC_TRAP,0,0