// 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:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("Heh... He gave me a ball, but..."));
end;
OnTimer20000:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("I can do this alone!"));
end;
OnTimer60000:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("Tsc...! I'll need reinforcements!"));
end;
OnTimer65000:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("How was the summoning again...?!"));
end;
OnTimer75000:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("Oh, that's right!"));
end;
OnTimer82000:
.@n$=instance_npcname(.name$);
unittalk(.ASSASSIN, ("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.");
}
// Extra extra EXTRA bonus
CsysNpcCraft(SmallKnife, IOPT_SPLASHDAMAGE, 1, 0,0, 0,0, VAR_MAXHPPERCENT, -5);
addtimer 100, instance_npcname(.name$)+"::OnAbort";
end;
OnAbort:
stopnpctimer;
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;
}