summaryrefslogblamecommitdiff
path: root/npc/032-5/episode.txt
blob: 668c2bd36d99521a65add0a59adcbbee9cb0e684 (plain) (tree)
1
2
3
4
5
6
7
8
9
10





                                 

                                                                               

                                                                                



                                                                          
                                                  
 










                                                
                                             






                   

                                                                          


















                                                                   
                                                                 





















                                                                                       

                                                                                              









                                                                       

                                                                                                           
                 
                    

        


                                                                  

                                               





                                       

                                               





                                      








                                               
                                  
                        









































                                                                                                      
                                                                                                                  
                                              
























                                                                                                                                   



                                      


                          
               
                    
                                      








                                          
        
 
 
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Part of the Doctor's Quest.

// NOTE: Several things could be done to ensure the original owner is fighting.
// I did none.
// But if at any moment the boss is alone in the room, the fight resets (FIXME).
// Dead bodies should be warped out automagically. (FIXME)
// Reward is 400,000 experience points (almost enough to level up a Lv 61)
// But the reward is only given when cutscene is completed
// Meaning if you merely espectate/help you won't get it.
// For helpers (Everyone on map) they'll get 30,000 exp
// Therefore, experience given is 30k + 70k + 300k

032-5,37,34,0	script	#EpShow	NPC_HIDDEN,2,0,{
    end;
OnInit:
    .ctrl = false;
    .platy = 0;
    .razor = 0;
    end;

OnTouch:
    if (mobcount("032-5", "all")) end;
    if (getq(LoFQuest_EPISODE) != 15) end;
    //if (getq2(LoFQuest_EPISODE) != 2); end;
    if (.ctrl) end;

    .ctrl=true;
    initnpctimer;
    end;

OnTimer1000:
    .platy=monster("032-5", 39, 55, strmobinfo(1, RedQueen), RedQueen, 1);
    .razor=monster("032-5", 37, 57, "The Black Razor", RedFollower, 1);
    immortal(.platy);
    setunitdata(.platy, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
    immortal(.razor);
    setunitdata(.razor, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
    end;

OnTimer5000:
    unittalk(.razor, "Uh?");
    end;

OnTimer10000:
    unittalk(.razor, "Who are you people!");
    end;

OnTimer15000:
    unittalk(.razor, "Don't tell me... You're with Prsm!");
    end;

OnTimer20000:
    unittalk(.platy, "They think they can conspire against us.");
    end;

OnTimer25000:
    unittalk(.platy, "But I am the original queen and no one can steal this from me.");
    maptimer("032-5", 3000, "#EpShow::OnWarn1");
    end;

OnWarn1:
    dispbottom l("On your marks!");
    sleep2(1000);
    dispbottom l("Ready...");
    sleep2(1000);
    dispbottom l("FIGHT!");
    end;

OnTimer30000:
    unitwarp(.platy, "001-3-1", 19, 21);
    unitwarp(.razor, "001-3-1", 19, 21);
    sleep(25);
    unitkill(.platy);
    unitkill(.razor);
    sleep(25);
    .platy=monster("032-5", 39, 55, strmobinfo(1, RedQueen), RedQueen, 1, "#EpShow::OnPlaty");
    .razor=monster("032-5", 37, 57, "The Black Razor", RedFollower, 1, "#EpShow::OnRazor");

    // The Black Razor needs tweaks
    setunitdata(.razor, UDT_MAXHP, 24000);
    setunitdata(.razor, UDT_HP, 24000);
    setunitdata(.razor, UDT_HIT, 24000);
    setunitdata(.razor, UDT_ADELAY, 1272);
    setunitdata(.razor, UDT_DMOTION, 48);
    setunitdata(.razor, UDT_SPEED, 480);

    // The Red Queen doesn't, but we need spawns and victory conditions
    areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, RedFollower), RedFollower, 12, "#EpShow::OnMini");
    areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, RedFollowerF), RedFollowerF, 12, "#EpShow::OnMini");
    stopnpctimer;
    //.ctrl = false;
    end;

OnMini:
    if (.razor)
        unittalk(.razor, "My fallen comrade, you'll be avenged!");
    sleep(100);
    if (!mobcount("032-5", "all")) goto OnNext;
    end;

OnRazor:
    if (.platy)
        unittalk(.platy, "Razor, no!");
    .razor = 0;
    sleep(100);
    if (!mobcount("032-5", "all")) goto OnNext;
    end;

OnPlaty:
    if (.razor)
        unittalk(.razor, "My queen!");
    .platy = 0;
    sleep(100);
    if (!mobcount("032-5", "all")) goto OnNext;
    end;

OnWin:
    @elli=true;
    getexp 30000, 0;
    if (getq(LoFQuest_EPISODE) == 15) {
        setq LoFQuest_EPISODE, 16, 0, 0;
        getitem RedknightArmor, 1;
        getexp 70000, 0;
    }
    end;

OnSS:
    sshake();
    closeclientdialog;
    end;

OnSSX:
    sshake(8);
    sleep2(350);
    sshake(12);
    closeclientdialog;
    end;

OnNext:
    maptimer("032-5", 10, "#EpShow::OnWin");
    // TODO: Bring the boss!
    .platy=monster("032-5", 39, 55, "Soul Eater", PanthomLord, 1);
    immortal(.platy);
    setunitdata(.platy, UDT_MODE, MD_BOSS|MD_PLANT|MD_NOKNOCKBACK);
    unittalk(.platy, "...");
    sleep(5000);
    unittalk(.platy, "How...");
    maptimer("032-5", 4900, "#EpShow::OnSS");
    sleep(5000);
    unittalk(.platy, "HOW!!!");
    maptimer("032-5", 4900, "#EpShow::OnSS");
    sleep(5000);
    unittalk(.platy, "UNFORGIVABLE!!! You have ruined my disguise!");
    sleep(5000);
    unittalk(.platy, "But you underestimate me...");
    freeloop(true);
    for (.@i=0;.@i < 25;.@i++) {
        .@tmp = areamonster("032-5", 21, 35, 58, 77, strmobinfo(1, JackO), JackO, 1);
        immortal(.@tmp);
        setunitdata(.@tmp, UDT_MODE, MD_NOKNOCKBACK);
        sleep(50);
    }
    freeloop(false);
    unittalk(.platy, "...Of course every one who has fallen here serves me... And all those before!");
    sleep(2500);
    unittalk(.platy, "...And with those from past, present and future... I'll be invencible! And reign forever!");
    maptimer("032-5", 1000, "#EpShow::OnMus");
    sleep(2500);
    // TODO: Bring elli!
    enablenpc("Elli#Ep");
    .razor = getnpcid("Elli#Ep");
    sleep(500);
    unittalk(.razor, "That shall not be.");
    sleep(5000);
    unittalk(.razor, "I am Elli, one of the Originals.");
    sleep(5000);
    unittalk(.razor, "And I am here to pummel you algebraically with a(n) ginormous, frankenstein, gassy, green carnival hammer.");
    sleep(5000);
    unittalk(.razor, "Your reign of terror is over, Soul Eater. I'll destroy you and your followers...");
    sleep(5000);
    unittalk(.razor, "...Past or future. Therefore:");
    maptimer("032-5", 4900, "#EpShow::OnSSX");
    sleep(5000);
    unittalk(.razor, "COME LEGENDARY HOCUS, AND ANNIHILATE EVERYTHING!");
    sleep(500);
    disablenpc("Elli#Ep");
    maptimer("032-5", 100, "#EpShow::OnFin");
    sleep(200);
    killmonsterall("032-5");
    .ctrl = false;
    end;

OnMus:
    changeplayermusic "valkyries.ogg";
    end;

OnFin:
    if (!@elli) end;
    warp "032-1", 59, 130;
    sleep2(25);
    sendmapmask 129;
    changeplayermusic "valkyries.ogg";
    addtimer(100, "Elli::OnFin");
    @elli=false;
    end;
}

032-5,39,52,0	script	Elli#Ep	NPC_ELLI,{
    end;
OnInit:
    disablenpc(.name$);
    end;
}