// TMW2 scripts.
// Authors:
// Jesusalva
// Description:
// Nivalis Siege for Liberation Day
// Each player process its own share of monsters. There are 10 waves.
//
// Q_NivalisLibday
// Day, Score, Temporary Time;
020-1,0,0,0 script #NLib_Siege NPC_HIDDEN,{
OnLoop:
@nlib_time+=5; // This is looped every 5 s
// Victory conditions: All monsters dead & number of waves filled. (Or if you reach level 40)
if (BaseLevel >= 40 || (@nlib_wave >= 10 && mobcount("020-1", "#NLib_Siege::OnPetDeath") <= 0))
goto L_CleanUp;
// New wave condition: Waves pending and A- All Mobs Dead B- 4 minutes spent
if (@nlib_wave < 10 && (mobcount("020-1", "#NLib_Siege::OnPetDeath") <= 0 || @nlib_time >= 240))
goto L_NextRound;
// reset timer
addtimer(5000, "#NLib_Siege::OnLoop");
end;
L_NextRound:
@nlib_time=0;
@nlib_wave = @nlib_wave + 1;
// Prepare next round
dispbottom l("Wave @@/10", @nlib_wave);
.@amount=@nlib_wave+rand(1,2);
freeloop(true);
for (.@i = 0; .@i < .@amount; ++.@i) {
.@mid=rand(1,22);
.@monsterId=Piou;
switch (.@mid) {
case 1:
.@monsterId = CaveMaggot ; break;
case 2:
.@monsterId = GiantMaggot ; break;
//.@monsterId = Wolvern ; break;
case 3:
.@monsterId = WhiteSlime ; break;
case 4:
.@monsterId = MagicGoblin ; break;
case 5:
.@monsterId = Bandit ; break;
case 6:
.@monsterId = GreenSlime ; break;
case 7:
.@monsterId = LavaSlime ; break;
case 8:
.@monsterId = CaveSnake ; break;
case 9:
.@monsterId = DesertBandit ; break;
case 10:
.@monsterId = Sarracenus ; break;
case 11:
.@monsterId = AngryRedScorpion ; break;
case 12:
.@monsterId = IcedFluffy ; break;
case 13:
.@monsterId = Scorpion ; break;
case 14:
.@monsterId = RedScorpion ; break;
case 15:
.@monsterId = BlackSlime ; break;
case 16:
.@monsterId = Piousse ; break;
case 17:
.@monsterId = CandiedSlime ; break;
case 18:
.@monsterId = BlueSlime ; break;
case 19:
.@monsterId = SlimeBlast ; break;
case 20:
.@monsterId = BlackSlime ; break;
case 21:
.@monsterId = RedSlime ; break;
default:
.@monsterId = AngryScorpion ; break;
}
areamonster "020-1", 20, 20, 100, 100, strmobinfo(1, .@monsterId), .@monsterId, 1, "#NLib_Siege::OnPetDeath";
}
freeloop(false);
// reset timer
addtimer(5000, "#NLib_Siege::OnLoop");
end;
// Warp you back, and give you a random small score.
L_CleanUp:
.@q2=getq2(Q_NivalisLibday);
setq2 Q_NivalisLibday, .@q2+rand(1,5);
warp "019-2", 43, 55;
end;
OnPetDeath:
.@lf=mobcount("020-1", "#NLib_Siege::OnPetDeath");
dispbottom l("Mobs remaining: @@", .@lf);
end;
}