diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/006-9 | |
download | serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2 serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip |
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/006-9')
-rw-r--r-- | npc/006-9/_config.txt | 9 | ||||
-rw-r--r-- | npc/006-9/_import.txt | 4 | ||||
-rw-r--r-- | npc/006-9/ctrl.txt | 314 |
3 files changed, 327 insertions, 0 deletions
diff --git a/npc/006-9/_config.txt b/npc/006-9/_config.txt new file mode 100644 index 0000000..d24aa8b --- /dev/null +++ b/npc/006-9/_config.txt @@ -0,0 +1,9 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 006-9: The Abyss conf + +006-9,37,22,0 script #006-9_37_22 NPC_HIDDEN,0,0,{ + end; +OnTouch: + doevent "#DungeonCore::OnBleed"; + end; +} diff --git a/npc/006-9/_import.txt b/npc/006-9/_import.txt new file mode 100644 index 0000000..a268948 --- /dev/null +++ b/npc/006-9/_import.txt @@ -0,0 +1,4 @@ +// Map 006-9: The Abyss +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/006-9/_config.txt", +"npc/006-9/ctrl.txt", diff --git a/npc/006-9/ctrl.txt b/npc/006-9/ctrl.txt new file mode 100644 index 0000000..46b1fe3 --- /dev/null +++ b/npc/006-9/ctrl.txt @@ -0,0 +1,314 @@ +// 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; +} + |