summaryrefslogblamecommitdiff
path: root/npc/003-0/mainquest.txt
blob: 97f2cf86228213aec5c5bc9ea21cdc54f32798f9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                        

















                                                                   
                         










                                              
                                                             



                                     











                                                                                             



                                                                     
                                                             
                                                       














































                                                                


                 
                 


                                    
                                      






                                                                                            




                      

               



                                                 

                



                                                    



                                                                               
                                                                      
                                                 



















                                                                           
        

 
// TMW2 scripts.
// Authors:
//    Jesusalva
// Description:
//    Main Quest

003-0,49,35,0	script	#MQ25Trigger	NPC_HIDDEN,3,0,{
    end;

OnTouch:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    if (is_night())
        doevent instance_npcname(.name$)+"::OnBegin";
    else
        addtimer 1000, instance_npcname(.name$)+"::OnCheck";
    end;

// Checks if you are in designated ambush zone. If not, keep hidden
OnCheck:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    if (!isin(.@m$, 44, 24, 54, 34))
        end;
    // goto OnBegin;

// Begin
OnBegin:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    .PLAYER=getcharid(3);

    // Is assassin ambushing you or professor?
    if (is_night()) {
        .@x=any(46, 52);
        .@y=34;
    } else {
        getmapxy(.@m$, .@x, .@y, 0);
        .@y-=3;
        if (.@y < 34)
            .@y=34;
    }
    setcells .@m$, 47, 35, 51, 35, 3, "MQ2Wall"+getcharid(0);
    if (isin(.@m$, 44, 24, 54, 34)) {
        warp .@m$, 49, 33;
        atcommand("@refresh");
    }
    .ASSASSIN=monster(.@m$, .@x, .@y, l("Assassin"), Assassin, 1, .@n$+"::OnAssassinDefeat");
    unittalk(.ASSASSIN, l("Die now!!"));
    // Nerf ATK, boost HP
    /*
	Hp: 4211
	Attack: [198, 214]
    */
    setunitdata(.@REF, UDT_MAXHP, 4750);
    setunitdata(.@REF, UDT_HP, 4750);
    setunitdata(.@REF, UDT_ATKMIN, 150);
    setunitdata(.@REF, UDT_ATKMAX, 180);

    // TODO: unitwalk
    // TODO: Energy Balls. Should they spawn at (21,31) and (69,31)?
    // At this time they are utterly deadly. You could use a skill to
    // disable them... Perhaps... A grenade?
    dispbottom col(l("SCRIPT ERROR (%s/%s)", .@m$, .@n$), 1);
    dispbottom l("An error happened: unitwalk failed");
    // TODO: Assassinate
    initnpctimer;
    end;

OnTimer15000:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("Heh... He gave me a ball, but..."));
    end;

OnTimer20000:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("I can do this alone!"));
    end;

OnTimer60000:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("Tsc...! I'll need reinforcements!"));
    end;

OnTimer65000:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("How was the summoning again...?!"));
    end;

OnTimer75000:
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("Oh, that's right!"));
    end;

OnTimer82000:
    .@n$=instance_npcname(.name$);
    unittalk(.ASSASSIN, l("ENEEEEEEEEERGY BALLLLLLL!"));
    getmapxy(.@m$, .@x, .@y, UNITTYPE_MOB, .ASSASSIN);
    .@REF=monster(.@m$, .@x, .@y, "Energy Ball", EnergyBall, 1);

    // Nerf the monster, be careful, it has a powerful skill!
    setunitdata(.@REF, UDT_AGI, 1);
    setunitdata(.@REF, UDT_LUK, 1);
    setunitdata(.@REF, UDT_DEF, 10);
    setunitdata(.@REF, UDT_MDEF, 20);
    setunitdata(.@REF, UDT_MAXHP, 1000);
    setunitdata(.@REF, UDT_HP, 1000);
    end;

OnAssassinDefeat:
    stopnpctimer;
    .@m$=getmap();
    .@n$=instance_npcname(.name$);
    delcells "MQ2Wall"+getcharid(0);
    LUA_ASKED_TO_SAVE_PROFESSOR=false;
    getexp 16, 5; // Extra bonus :>

    if (is_night()) {
        unittalk(getnpcid(instance_npcname(.name$)), l("Thanks for the help, I guess...?"));
    } else {
        dispbottom l("A mission well done. I should report to lua now.");
    }
    end;

OnInit:
    disablenpc .name$;
    end;

OnInstanceInit:
    if (is_night()) {
        .@n$=instance_npcname("Professor#003-0");
        enablenpc .@n$;
    }
    .ASSASSIN=0;
    .PLAYER=0;
    end;
}

003-0,49,24,4	script	Professor#003-0	NPC_PLAYER,{
    npctalkonce l("I wonder if it'll take too long for the ship to arrive...");
    end;

OnTouchNPC:
    npctalk l("An error happened: professor_was_assasinated() error");
    npctalk ("SCRIPT ERROR (OnTouch Game Over)");
    end;

OnInit:
    .@ini=true;
OnInstanceInit:
    if (.@ini)
        .@npcId = getnpcid(.name$);
    else
        .@npcId = getnpcid(instance_npcname(.name$));

    setunitdata(.@npcId, UDT_HEADTOP, GraduationCap);
    setunitdata(.@npcId, UDT_HEADMIDDLE, GraduationRobe); // TODO: Bathrobe
    setunitdata(.@npcId, UDT_HEADBOTTOM, Slippers); // Hey hey!
    setunitdata(.@npcId, UDT_WEAPON, CottonGloves);
    setunitdata(.@npcId, UDT_HAIRSTYLE, 2);
    setunitdata(.@npcId, UDT_HAIRCOLOR, 4);

    .sex=G_MALE;
    .distance=5;
    disablenpc .name$;
    end;
}