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-5 | |
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-5')
-rw-r--r-- | npc/006-5/_import.txt | 4 | ||||
-rw-r--r-- | npc/006-5/_warps.txt | 3 | ||||
-rw-r--r-- | npc/006-5/groata.txt | 477 |
3 files changed, 484 insertions, 0 deletions
diff --git a/npc/006-5/_import.txt b/npc/006-5/_import.txt new file mode 100644 index 0000000..94dce7e --- /dev/null +++ b/npc/006-5/_import.txt @@ -0,0 +1,4 @@ +// Map 006-5: Groata Grotto +// This file is generated automatically. All manually added changes will be removed when running the Converter. +"npc/006-5/_warps.txt", +"npc/006-5/groata.txt", diff --git a/npc/006-5/_warps.txt b/npc/006-5/_warps.txt new file mode 100644 index 0000000..b9d0bcf --- /dev/null +++ b/npc/006-5/_warps.txt @@ -0,0 +1,3 @@ +// This file is generated automatically. All manually added changes will be removed when running the Converter. +// Map 006-5: Groata Grotto warps +006-5,49,54,0 warp #006-5_49_54 0,0,006-3,40,36 diff --git a/npc/006-5/groata.txt b/npc/006-5/groata.txt new file mode 100644 index 0000000..ca149f7 --- /dev/null +++ b/npc/006-5/groata.txt @@ -0,0 +1,477 @@ +// TMW2 Script +// Author: +// Jesusalva +// Note: +// Groata Grotto is NOT instanced, NOT timed, and meant to be weird. + +function script GroataGrotto { + .@lv = getarg(0, $@GROATA); + + .@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, 30)) { + 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(10, .@lv, 40)) { + 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(20, .@lv, 50)) { + 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(30, .@lv, 60)) { + 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(40, .@lv, 70)) { + 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, PiouKnight); + array_push(.@mb, Shrewboo); + } + if (is_between2(40, .@lv, 80)) { + array_push(.@mb, Wolvern); + array_push(.@mb, FireSkull); + array_push(.@mb, DarkLizard); + } + if (is_between2(50, .@lv, 90)) { + 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(60, .@lv, 100)) { + 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(70, .@lv, 110)) { + 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(80, .@lv, 120)) { + 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(90, .@lv, 130)) { + 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(100, .@lv, 140)) { + 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(110, .@lv, 150)) { + array_push(.@mb, PinkieSuseran); + array_push(.@mb, Mandragora); + array_push(.@mb, PinkieMaximus); + } + if (.@lv > 120) { + array_push(.@mb, Junglefowl); + array_push(.@mb, Tengu); + array_push(.@mb, Moubi); + } + if (.@lv > 130) { + array_push(.@mb, SuperiorShroom); + array_push(.@mb, Nutcracker); + array_push(.@mb, Golem); + } + if (.@lv > 140) { + 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 > 150) { + array_push(.@mb, SacredWisp); + array_push(.@mb, EvilWisp); + array_push(.@mb, PanthomWisp); + array_push(.@mb, EpiphanyWisp); + } + if (.@lv > 175) + array_push(.@mb, Tortuga); + + /* Spawn them and make hostile */ + freeloop(true); + for (.@i = 0; .@i < 1+($@GROTTO*2/3); .@i++) { + .@mid = any_of(.@mb); + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), strmobinfo(1, .@mid), .@mid, 1); + set_aggro(.@m); + } + freeloop(false); + + // TODO: Boss Logic if needed + // One boss each 10 grottos or something? + if (is_between2(10, $@GROTTO, 15)) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", MonsterSergeant, 1); + set_aggro(.@m); + } + if ($@GROTTO > 15) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", SaxsoGhost, 1); + set_aggro(.@m); + } + if ($@GROTTO > 20) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", BlueSlime, 1); + set_aggro(.@m); + } + if ($@GROTTO > 25) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", MurdererScorpion, 1); + set_aggro(.@m); + } + if ($@GROTTO > 30) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", NightScorpion, 1); + set_aggro(.@m); + } + if ($@GROTTO > 35) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", SpiderQueen, 1); + set_aggro(.@m); + } + if ($@GROTTO > 40) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", HoodedAssassin, 1); + set_aggro(.@m); + } + if ($@GROTTO > 45) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", BanditLord, 1); + set_aggro(.@m); + } + if ($@GROTTO > 50) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", Tipiu, 1); + set_aggro(.@m); + maptimer2("006-5", 10, "Torch#0065::OnLv50"); + } + if ($@GROTTO > 55) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", FafiDragon, 1); + set_aggro(.@m); + } + if ($@GROTTO > 60) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", NightDragon, 1); + set_aggro(.@m); + } + if ($@GROTTO > 65) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", GiantMutatedBat, 1); + set_aggro(.@m); + } + if ($@GROTTO > 70) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", EvilScythe, 1); + set_aggro(.@m); + } + if ($@GROTTO > 75) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", AndreiSakar, 1); + set_aggro(.@m); + } + if ($@GROTTO > 80) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", Yetifly, 1); + set_aggro(.@m); + } + if ($@GROTTO > 85) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", DemureFirstForm, 1); + set_aggro(.@m); + } + if ($@GROTTO > 90) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", YetiKing, 1); + set_aggro(.@m); + } + if ($@GROTTO > 95) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", FallenKing1, 1); + set_aggro(.@m); + } + if ($@GROTTO > 100) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", PsiConscience, 1); + set_aggro(.@m); + maptimer2("006-5", 10, "Torch#0065::OnLv100"); + } + if ($@GROTTO > 105) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", Isbamuth, 1); + set_aggro(.@m); + } + if ($@GROTTO > 110) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", TerraniteKing, 1); + set_aggro(.@m); + } + if ($@GROTTO > 120) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", PinkieEmperor, 1); + set_aggro(.@m); + } + if ($@GROTTO > 130) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", PanthomLord, 1); + set_aggro(.@m); + } + if ($@GROTTO > 140) { + .@m=areamonster("006-5", 20, 20, getmapinfo(MAPINFO_SIZE_X,"006-5"), getmapinfo(MAPINFO_SIZE_Y,"006-5"), "Groata?", MonsterKing, 1); + set_aggro(.@m); + } + if ($@GROTTO > 150) + maptimer2("006-5", 10, "Torch#0065::OnLv150"); + return; +} + +006-5,49,36,0 script Torch#0065 NPC_NO_SPRITE,{ + if (!mobcount("006-5", "all")) { + if ($@GROTTO) { + mesc l("The torch is currently lit."); + mesc l("Do you want to put it out, or to make it brighter?"); + next; + select + l("I have to think."), + l("Put it out"), + l("Make it brighter"); + mes ""; + // Put it out + if (@menu == 2) { + $@GROTTO = 0; + $@GROATA = 0; + enablenpc "#006-5_49_54"; + } + // I do not want to continue + if (@menu != 3) + close; + } else { + mesc l("Lit the torch?"); + if (askyesno() == ASK_NO) close; + disablenpc "#006-5_49_54"; + } + if (!getq(CandorQuest_Groata)) { + getitem any(Coal, SulfurPowder, FluoPowder, PileOfAsh, Pearl), 2; + setq CandorQuest_Groata, 1; + } + $@GROTTO += 1; + // Create monsters based on GROTTO + $@GROATA = max(BaseLevel, $@GROATA+1); + GroataGrotto(); + close; + } + mesc l("The torch is lit."); + close; + +// Rewards +OnLv50: + if (getq(CandorQuest_Groata) == 1) { + dispbottom l("This is ridiculous. Groata is not here, I am wasting my time!"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Uh? Hey, look! A platinum card! This should be worth something with the Guild Merchant Guild, right?"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("...I'll take it."); + Zeny+=7500; + Mobpt+=2500; + getexp 0, 10000; + setq CandorQuest_Groata, 2; + } + end; + +OnLv100: + if (getq(CandorQuest_Groata) == 2) { + dispbottom l("Groata : Uh. What's happening here?"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : Hey. I live here. Why are you spawning monsters in my home??"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : This is rude. Seriously, stop doing this."); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : Let's make a deal. Take this, clear my house, and get out."); + getitem Mustache, 1; + setq CandorQuest_Groata, 3; + } + end; + +OnLv150: + if (getq(CandorQuest_Groata) == 3) { + dispbottom l("Groata : You must be idiotic in keeping spawning."); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : I wonder for how long you can survive here..."); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : ...Will you seriously just keep running around? Like a headless chicken?"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : C'mon, that is boring. What I need to do to get you out of my house?"); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : ...Meh. I'll give you this... stuff, and for the last time, don't bother me again..."); + sleep2(5000); + if (getmap() != "006-5") end; + dispbottom l("Groata : ...Because I am out of freebies and need to sleep. So shoo."); + getitembound MylarinDust, 1, 1; + setq CandorQuest_Groata, 4; + } + end; + +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + +006-5,52,36,0 script Crystal#0065 NPC_NO_SPRITE,{ + if (!mobcount("006-5", "all")) { + if ($@GROTTO) { + mesc l("The crystal looks damaged."); + mesc l("Do you want to restore it, or to keep breaking it?"); + next; + select + l("I have to think."), + l("Restore it"), + l("Keep breaking"); + mes ""; + // Restore it + if (@menu == 2) { + $@GROTTO = 0; + $@GROATA = 0; + enablenpc "#006-5_49_54"; + } + // I do not want to continue + if (@menu != 3) + close; + } else { + mesc l("Break the crystal?"); + if (askyesno() == ASK_NO) close; + disablenpc "#006-5_49_54"; + } + if (!getq(CandorQuest_Groata)) { + getitem any(WurtziteOre, DarkCrystal, CandorWarpCrystal), 1; + setq CandorQuest_Groata, 1; + } + $@GROTTO += 5; + // Create monsters based on GROTTO + $@GROATA = max(BaseLevel, $@GROATA+1); + GroataGrotto(); + close; + } + mesc l("The crystal has a shard missing."); + close; + +OnInit: + .sex = G_OTHER; + .distance = 1; + end; +} + |