// TMW2 Script // Author: // Jesusalva 006-9 mapflag zone MMO No Tricks 006-9,37,21,0 script #OutOf0069 NPC_HIDDEN,0,0,{ end; OnTouch: if (!$@SURVIVAL_CANDOR) warp "006-6", 54, 36; end; } 006-9,55,32,0 script Bloodbath NPC_NO_SPRITE,{ function spawn; if ($@SURVIVAL_CANDOR) { npctalk3 l("Score: %s / %s", FuzzyTime($@SURVIVAL_CANDOR), FuzzyTime(gettimetick(2)+SCANDORPTS)); end; } mesn; mes l("Goal: Survive the longest possible."); mes l("Monsters will spawn in the south fountain continuously."); mes l("They'll also start spawning on whole map, so be careful."); mesc l("The fee to use this room is %s GP.", fnum(.price)), 1; mes ""; mes l("Current score: %s", FuzzyTime(gettimetick(2)+SCANDORPTS)); if (Zeny < .price) close; next; mesc l("Begin?"); menuint l("Yes"), ASK_YES, l("No"), ASK_NO, l("Scoreboards"), -1; mes ""; if (@menuret == ASK_NO || Zeny < .price) { closeclientdialog; close; } else if (@menuret < 0) { HallOfBloodbath(); close; } Zeny-=.price; $@SURVIVAL_CANDOR = gettimetick(2); initnpctimer; close; // Timer logic OnTimer4000: .diff += 1; if (.diff == 75) mapannounce "006-9","Five minutes have passed, changing spawn pattern!",0; if (.diff == 450) mapannounce "006-9", "Half hour has passed, changing spawn pattern!", 0; if (.diff == 900) mapannounce "006-9", "One hour has passed, changing spawn pattern!", 0; initnpctimer; OnTimer2000: /* Verify for game over */ if (getmapusers("006-9") < 1) { sleep(25); stopnpctimer; .diff = 0; $@SURVIVAL_CANDOR = 0; killmonsterall("006-9"); end; } spawn(.diff); end; // Spawn logic function spawn { .@lv = getarg(0); if (.@lv < 450) { .@mb[0] = MagicGoblin; .@mb[1] = IceMaggot; } // Artillery if (.@lv > 40) array_push(.@mb, RobinBandit); if (.@lv > 50) array_push(.@mb, DustGatling); if (.@lv > 60) array_push(.@mb, DustRifle); if (.@lv > 70) array_push(.@mb, DustRevolver); if (.@lv > 80) array_push(.@mb, DustBoss); if (.@lv > 90) array_push(.@mb, GreatMoubooSlime); if (.@lv > 100) array_push(.@mb, Jhon); // Monsters if (is_between2(0, .@lv, 60)) { array_push(.@mb, Piou); array_push(.@mb, Piousse); array_push(.@mb, Squirrel); array_push(.@mb, ManaPiou); array_push(.@mb, ForestPiou); array_push(.@mb, RedButterfly); array_push(.@mb, Maggot); array_push(.@mb, CandorScorpion); array_push(.@mb, HouseMaggot); array_push(.@mb, LittleYellowSlime); array_push(.@mb, Ratto); array_push(.@mb, RudolphSlime); array_push(.@mb, MoubooSlime); array_push(.@mb, Croc); array_push(.@mb, Scorpion); array_push(.@mb, SmallFrog); } if (is_between2(20, .@lv, 80)) { array_push(.@mb, BigFrog); array_push(.@mb, Lavern); array_push(.@mb, LittleRedSlime); array_push(.@mb, ChocolateSlime); array_push(.@mb, Blub); array_push(.@mb, Duck); array_push(.@mb, Bat); array_push(.@mb, CaveMaggot); array_push(.@mb, ManaGhost); array_push(.@mb, ManaBug); array_push(.@mb, Fluffy); array_push(.@mb, FireGoblin); array_push(.@mb, ViciousSquirrel); array_push(.@mb, RedScorpion); array_push(.@mb, WhiteSlime); array_push(.@mb, AzulSlime); array_push(.@mb, DesertLogHead); } if (is_between2(30, .@lv, 100)) { array_push(.@mb, RedSlime); array_push(.@mb, PoisonSpikyMushroom); array_push(.@mb, DesertBandit); array_push(.@mb, OceanCroc); array_push(.@mb, ToppyBlub); array_push(.@mb, Sarracenus); array_push(.@mb, IceMaggot); array_push(.@mb, VampireBat); array_push(.@mb, Bandit); array_push(.@mb, Pinkie); array_push(.@mb, LivingPotato); array_push(.@mb, Assassin); array_push(.@mb, Skeleton); } if (is_between2(50, .@lv, 120)) { array_push(.@mb, CaveSnake); array_push(.@mb, GreenSlime); array_push(.@mb, CopperSlime); array_push(.@mb, YellowSlime); array_push(.@mb, SantaSlime); array_push(.@mb, LavaSlime); array_push(.@mb, Bluepar); array_push(.@mb, DeathCat); array_push(.@mb, Moggun); array_push(.@mb, SeaSlime); array_push(.@mb, RedMushroom); array_push(.@mb, Mouboo); array_push(.@mb, LogHead); array_push(.@mb, CandiedSlime); array_push(.@mb, OldSnake); array_push(.@mb, GrassSnake); } if (is_between2(60, .@lv, 140)) { array_push(.@mb, GiantMaggot); array_push(.@mb, IcedFluffy); array_push(.@mb, Snake); array_push(.@mb, BlackSlime); array_push(.@mb, Tipiou); array_push(.@mb, AlphaMouboo); array_push(.@mb, Pollet); array_push(.@mb, Snowman); array_push(.@mb, PiouKnight); array_push(.@mb, Shrewboo); } if (is_between2(70, .@lv, 160)) { array_push(.@mb, Wolvern); array_push(.@mb, FireSkull); array_push(.@mb, DarkLizard); } if (is_between2(90, .@lv, 180)) { array_push(.@mb, ArmoredSkeleton); array_push(.@mb, BlackScorpion); array_push(.@mb, ElectroWorm); array_push(.@mb, EarthFairy); array_push(.@mb, FireFairy); array_push(.@mb, WaterFairy); array_push(.@mb, WindFairy); array_push(.@mb, PoisonFairy); array_push(.@mb, MountainSnake); array_push(.@mb, HoodedNinja); array_push(.@mb, ForestMushroom); array_push(.@mb, GoldenScorpion); } if (is_between2(110, .@lv, 200)) { array_push(.@mb, Yeti); array_push(.@mb, FallenGuard1); array_push(.@mb, GreenSlimeMother); array_push(.@mb, SnowFlower); array_push(.@mb, BlueSlimeMother); array_push(.@mb, WickedMushroom); array_push(.@mb, CopperSlimeMother); array_push(.@mb, YellowSlimeMother); array_push(.@mb, RedSlimeMother); array_push(.@mb, ChocolateSlimeMother); array_push(.@mb, WhiteSlimeMother); array_push(.@mb, Archant); array_push(.@mb, Scar); } if (is_between2(140, .@lv, 220)) { array_push(.@mb, AzulSlimeMother); array_push(.@mb, SeaSlimeMother); array_push(.@mb, LavaSlimeMother); array_push(.@mb, BlackSlimeMother); array_push(.@mb, Crafty); array_push(.@mb, Forain); array_push(.@mb, GreenDragon); array_push(.@mb, Michel); array_push(.@mb, Troll); } if (is_between2(160, .@lv, 240)) { array_push(.@mb, EliteDuck); array_push(.@mb, AzulSkullSlime); array_push(.@mb, Moonshroom); array_push(.@mb, RedSkullSlime); array_push(.@mb, Terranite); array_push(.@mb, JackO); array_push(.@mb, BlackMamba); array_push(.@mb, GreenSkullSlime); array_push(.@mb, BloodyMouboo); array_push(.@mb, Centaur); array_push(.@mb, GoboBear); } if (is_between2(180, .@lv, 260)) { array_push(.@mb, CopperSkullSlime); array_push(.@mb, LavaSkullSlime); array_push(.@mb, BlackSkullSlime); array_push(.@mb, GiantCaveMaggot); array_push(.@mb, TerraniteProtector); array_push(.@mb, VanityPixie); array_push(.@mb, HolyPixie); } if (is_between2(200, .@lv, 280)) { array_push(.@mb, ShadowPixie); array_push(.@mb, NulityPixie); array_push(.@mb, Reaper); array_push(.@mb, NightmareDragon); array_push(.@mb, Snail); array_push(.@mb, WhirlyBird); } if (is_between2(250, .@lv, 350)) { array_push(.@mb, PinkieSuseran); array_push(.@mb, Mandragora); array_push(.@mb, PinkieMaximus); } if (.@lv > 240) { array_push(.@mb, Junglefowl); array_push(.@mb, Tengu); array_push(.@mb, Moubi); } if (.@lv > 260) { array_push(.@mb, SuperiorShroom); array_push(.@mb, Nutcracker); array_push(.@mb, Golem); } if (.@lv > 280) { array_push(.@mb, SiegeTower); array_push(.@mb, GreenhornAbomination); array_push(.@mb, ShadowTortuga); array_push(.@mb, FireElement); array_push(.@mb, WaterElement); array_push(.@mb, EarthElement); array_push(.@mb, WindElement); } if (.@lv > 320) { array_push(.@mb, SacredWisp); array_push(.@mb, EvilWisp); array_push(.@mb, PanthomWisp); array_push(.@mb, EpiphanyWisp); } if (.@lv >= 350) array_push(.@mb, Tortuga); /* The final attack pattern is aimed at nukes */ if (.@lv >= 900) .@lv *= 3; // 12 -> 36 mobs /* Spawn them and make hostile */ .@mid = any_of(.@mb); .@m=areamonster("006-9", 35, 63, 36, 65, strmobinfo(1, .@mid), .@mid, 1); set_aggro(.@m); /* After five minutes, spawn some globally */ freeloop(true); for (.@i = 0; .@i < 1+(.@lv / 75); .@i++) { .@mid = any_of(.@mb); .@m=areamonster("006-9", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-9"), getmapinfo(MAPINFO_SIZE_Y,"006-9"), strmobinfo(1, .@mid), .@mid, 1); set_aggro(.@m); } freeloop(false); return; } OnInit: .distance=3; .price=2400; .diff = 0; end; }