// 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; }