// TMW2 scripts.
// Authors:
// Jesusalva
// Description:
// Nivalis Liberation Day
// The Walking Monster King
023-2,121,35,0 script The Monster King#NLib NPC_MONSTERKING,{
end;
OnTouch:
percentheal -100, -100;
end;
OnInit:
.sex = G_MALE;
.distance = 5;
OnHour00:
if (!$NLIB_DAY) {
disablenpc .name$;
end;
}
switch ($NLIB_DAY) {
case 1:
movenpc(.name$, 121, 35, DIR_WEST); break;
case 2:
movenpc(.name$, 105, 37, DIR_NORTH); break;
case 3:
movenpc(.name$, 105, 51, DIR_SOUTH); break;
case 4:
movenpc(.name$, 102, 63, DIR_WEST); break;
case 5:
movenpc(.name$, 81, 59, DIR_NORTH); break;
case 6:
movenpc(.name$, 53, 53, DIR_SOUTH); break;
case 7:
movenpc(.name$, 36, 99, DIR_SOUTH); break;
default:
channelmes("#world", "A bug happened: Monster King # Nivalis Liberation Day - Value Out of Range."); disablenpc .name$; break;
}
end;
// Event Handler
L_Finish:
// Just being bigger is not enough. Must be over the double for the advantage draw (about 1 player for 10m)
if (.victory_count > (.defeat_count*2)) {
announce "The fight ends in draw! The Monster King did accomplish what he set, though...", bc_all|bc_npc;
$MANA_BINT-=1;
$MANA_BLVL-=1;
$MANA_JLVL+=1;
} else if (.victory_count < 100) { // 1 player for 5 minutes is enough to prevent this loss
announce "The Monster King, after moping the floor with the players, accomplish what he set, and left...", bc_all|bc_npc;
$MANA_BINT+=1;
$MANA_BLVL+=1;
$MANA_JLVL+=1;
} else {
announce "The fight ends in draw, with advantage to the Monster King...", bc_all|bc_npc;
$MANA_BINT+=1;
$MANA_BLVL-=1;
$MANA_JLVL+=1;
}
L_Finish2:
killmonsterall("023-2");
.wcycle=0;
maptimer("023-2", 10, "The Monster King#NLib::OnReturn");
stopnpctimer;
end;
OnTimer3000:
.wcycle+=3;
.@pl=getareausers("023-2", 21, 109, 31, 114);
.@pla=getmapusers("023-2");
if (.@pl <= 0 && .@pla > 0)
mapannounce "023-2", "##1WARNING: Players outside the Monster King room counts toward DEFEAT count!", 0;
.victory_count+=.@pl;
// Processment
if (.@pl <= 0) {
.defeat_count+=1;
} else if (.wcycle % 30 == 3) {
areamonster "023-2", 21, 109, 31, 114, "Monster", any(AngryScorpion, BlackSlime, BlackScorpion, Wolvern, BlueSlime, SlimeBlast, CaveMaggot), .@pl;
} else if (.wcycle % 30 == 18) {
areamonster "023-2", 21, 109, 31, 114, "Monster", any(BlackSlime, BlueSlime, SlimeBlast), 1; // PS. Drop “Demure Dark Soul” ¬.¬
}
if (.wcycle >= 900) goto L_Finish;
initnpctimer;
end;
OnVictory:
announce "Players have defeated the Monster King! He fleed from the cave after leaving a decoy!", bc_all|bc_npc;
$MANA_BINT-=10;
$MANA_BLVL-=10;
$MANA_JLVL-=5;
goto L_Finish2;
end;
OnBegin:
.defeat_count=0;
.victory_count=0;
.wcycle=0;
announce "The fight against the Monster King ends in 15 minutes. If he is forced to flee, that'll result as victory.", bc_all|bc_npc;
announce "Each cycle there are players fighting against him will result in victory points. The opposite will result in defeat points.", bc_all|bc_npc;
announce "More players fighting will result in more victory points. This may affect drastically the result.", bc_all|bc_npc;
movenpc(.name$, 0, 0);
monster("023-2", 24, 111, "The Monster King", MonsterKing, 1, "The Monster King#NLib::OnVictory");
monster("023-2", 30, 109, "Andrei Sakar", AndreiSakar, 1);
areamonster "023-2", 21, 109, 31, 114, "Monster", AngryScorpion, 1;
areamonster "023-2", 21, 109, 31, 114, "Monster", BlackSlime, 2;
areamonster "023-2", 21, 109, 31, 114, "Monster", BlueSlime, 1;
areamonster "023-2", 21, 109, 31, 114, "Monster", CaveMaggot, 1;
initnpctimer;
end;
OnReturn:
warp "019-2", 43, 55;
end;
}
// Floor triggers
023-2,121,35,0 script #NLIB_T01 NPC_HIDDEN,1,2,{
OnTouch:
if ($NLIB_DAY == 1) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
}
end;
}
023-2,110,36,0 script #NLIB_T02 NPC_HIDDEN,2,2,{
OnTouch:
if ($NLIB_DAY == 2) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
} else if ($NLIB_DAY < 2) {
slide 114, 36;
dispbottom l("I should not veer off too much the path.");
}
end;
}
023-2,105,50,0 script #NLIB_T03 NPC_HIDDEN,2,2,{
OnTouch:
if ($NLIB_DAY == 3) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
} else if ($NLIB_DAY < 3) {
slide 104, 48;
dispbottom l("I should not veer off too much the path.");
}
end;
}
023-2,104,62,0 script #NLIB_T04 NPC_HIDDEN,0,0,{
OnTouch:
if ($NLIB_DAY == 4) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
} else if ($NLIB_DAY < 4) {
slide 104, 61;
dispbottom l("I should not veer off too much the path.");
}
end;
}
023-2,86,59,0 script #NLIB_T05 NPC_HIDDEN,2,5,{
OnTouch:
if ($NLIB_DAY == 5) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
} else if ($NLIB_DAY < 5) {
slide 91, 61;
dispbottom l("I should not veer off too much the path.");
}
end;
}
023-2,53,49,0 script #NLIB_T06 NPC_HIDDEN,0,5,{
OnTouch:
if ($NLIB_DAY == 6) {
@QNL3=1;
dispbottom l("I've found the Monster King.");
} else if ($NLIB_DAY < 6) {
slide 55, 48;
dispbottom l("I should not veer off too much the path.");
}
end;
}
023-2,35,90,0 script #NLIB_T07 NPC_HIDDEN,0,2,{
OnTouch:
if (gettime(2) < 25 || gettime(2) > 35) {
slide 39, 89;
dispbottom l("I should not go ahead... yet.");
}
end;
}