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







                                                                     
                                                        
        
 
        
                               
                                      
                       
                    



                               
                                       
                                                                                          

            





                                 
                                                        

        
                               
                                       
                       
                    



                               
                    






                                                                 
























                                                                      

                                                         
                                  



                                         

                                           


          


                                  
                 
                                                                







































































                                                                                                                        
 



                                                 

        

 
 
// TMW2 scripts.
// Author:
//    Jesusalva
// Description:
//    023-3-1 The First Monster King's Throne Room Configuration File

023-3-1	mapflag	zone	MMO

023-3-1,45,27,0	script	#Finish02331	NPC_HIDDEN,0,0,{
    end;

OnTouch:
    .@n=getq(General_Narrator);
    .@q=getq(FrostiaQuest_Homunculus);
    // Cheater Detected
    if (.@n < 15) { 
        warp "Save", 0, 0;
        percentheal -100, -100;
        return false;
    }
    if (.@q < 3) { // TODO: mobcount()?
        dispbottom l("The magic power outflowing in the room prevents you from leaving.");
        end;
    }

	.@mapn$="023-3-2";
    warp .@mapn$, any(39,40), 58;
    end;
}

023-3-1,45,80,0	script	#Exit02331	NPC_HIDDEN,1,0,{
    end;
OnTouch:
    .@n=getq(General_Narrator);
    .@q=getq3(FrostiaQuest_Homunculus);
    // Cheater Detected
    if (.@n < 15) { 
        warp "Save", 0, 0;
        percentheal -100, -100;
        return false;
    }
    if (.@n == 15) {
        dispbottom lg("I'm not a coward! I must press forward!");
        end;
    }
	.@mapn$="001-7";
    warp .@mapn$, 59, 45;
    end;
}
// To the traps!

023-3-1,45,63,0	script	#Ambush02331	NPC_HIDDEN,10,0,{
OnTouch:
    .@q=getq3(FrostiaQuest_Homunculus);
    if (!.@q) {
        .@m$=getmap();
        .@mobID1=monster(.@m$, 43, 55, l("Assassin"), HoodedNinja, 1);
        .@mobID2=monster(.@m$, 48, 55, l("Assassin"), HoodedNinja, 1);
        monster(.@m$, 43, 60, l("Assassin"), Assassin, 1);
        monster(.@m$, 43, 65, l("Assassin"), Assassin, 1);
        monster(.@m$, 48, 60, l("Assassin"), Assassin, 1);
        monster(.@m$, 48, 65, l("Assassin"), Assassin, 1);

        if (any(true,false))
            unitalk(.@mobID1, l("Kill 'em!"));
        else
            unitalk(.@mobID2, l("Kill 'em!"));

        setq3 FrostiaQuest_Homunculus, 1;
    }
    end;
}

// Main event core
023-3-1,45,52,0	script	#Core02331	NPC_HIDDEN,10,0,{
OnTouch:
    .@n$=instance_npcname(.name$);
    .@q=getq3(FrostiaQuest_Homunculus);
    if (.@q == 1) {
        // Begin the event core
        setq3 FrostiaQuest_Homunculus, 2;
        addtimer(1100, .@n$+"::OnEvent01");
        initnpctimer;
    }
    end;
OnEvent01:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    slide 45, 45;
    @ISBAMUTH=monster(.@m$, 45, 34, l("Isbamuth"), Isbamuth, 1);
    .@g1=monster(.@m$, 42, 37, l("Assassin"), HoodedNinja, 1);
    .@g2=monster(.@m$, 48, 37, l("Assassin"), HoodedNinja, 1);
    .@g3=monster(.@m$, 39, 40, l("Assassin"), Assassin, 1);
    .@g4=monster(.@m$, 51, 40, l("Assassin"), Assassin, 1);

    // Block everyone for cutscene (includes invencibility boost)
    setpcblock(255, true);
    sc_start(SC_STUN, 7500, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, @ISBAMUTH);
    sc_start(SC_STUN, 7500, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@g1);
    sc_start(SC_STUN, 7500, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@g2);
    sc_start(SC_STUN, 7500, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@g3);
    sc_start(SC_STUN, 4500, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK, .@g4);

    unittalk(@ISBAMUTH, l("Seems like the rat have come after the cheese."));
    addtimer(1500, .@n$+"::OnE02");
    end;

OnE02:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    unittalk(@ISBAMUTH, l("HAHAHAHA! How foolish of you, didn't even bother trying to sneak in!"));

    addtimer(1500, .@n$+"::OnE03");
    end;

OnE03:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    unittalk(@ISBAMUTH, l("Remember my name: I am Isbamuth, and I've took the Throne which rightfully belongs to me."));

    addtimer(1500, .@n$+"::OnE04");
    end;

OnE04:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    unittalk(@ISBAMUTH, l("This throne is not from the Monster King... IT BELONGS ONLY TO ME!"));

    addtimer(1500, .@n$+"::OnE05");
    end;

OnE05:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    unittalk(@ISBAMUTH, l("Now, as you gave yourself the trouble of coming here..."));

    addtimer(1500, .@n$+"::OnE06");
    end;

OnE06:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    setpcblock(255, false);
    unittalk(@ISBAMUTH, l("LET'S DANCE!"));

    addtimer(15000, .@n$+"::OnW01");
    end;

OnW01:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);

    unittalk(@ISBAMUTH, l("Be cursed, you fool!"));
    sc_start(SC_CURSE, 12000, 1, 10000, SCFLAG_NOAVOID|SCFLAG_FIXEDTICK);

    addtimer(45000, .@n$+"::OnW01");
    end;

OnTimer1000:
    if (getmapusers(instance_mapname("023-3-1")))
        initnpctimer;
    // TODO: Cleanup
    end;
}