diff options
-rw-r--r-- | db/re/map_zone_db.conf | 24 | ||||
-rw-r--r-- | npc/001-1/_import.txt | 1 | ||||
-rw-r--r-- | npc/001-1/eventmaster.txt | 207 | ||||
-rw-r--r-- | npc/001-1/mapflags.txt | 1 |
4 files changed, 233 insertions, 0 deletions
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf index 1c215eca3..d536515db 100644 --- a/db/re/map_zone_db.conf +++ b/db/re/map_zone_db.conf @@ -60,6 +60,30 @@ zones: ( } }, { + /* Aeros Zone prevent some GM commands and allows others */ + name: "Aeros" + + disabled_skills: { + } + + disabled_items: { + } + + mapflags: ( + "noknockback", + "invincible_time_inc 5000", + ) + + /* "command:min-group-lv-to-override" e.g. "heal: 70" */ + disabled_commands: { + spawn: 100 + monster: 100 + item: 100 + } + skill_damage_cap: { + } +}, +{ /* Normal zone is applied to all maps that are not pkable (where players cant fight each other) */ /* However, it wont be applied to maps with its own zones (specified thru mapflag) */ name: "Normal" /* changing this name requires MAP_ZONE_NORMAL_NAME to also be changed in src/map/map.h file */ diff --git a/npc/001-1/_import.txt b/npc/001-1/_import.txt index 0c9567cfa..c65d775a4 100644 --- a/npc/001-1/_import.txt +++ b/npc/001-1/_import.txt @@ -1,6 +1,7 @@ // Map 001-1: Floating Island of Aeros // This file is generated automatically. All manually added changes will be removed when running the Converter. "npc/001-1/bgmaster.txt", +"npc/001-1/eventmaster.txt", "npc/001-1/mapflags.txt", "npc/001-1/portal.txt", "npc/001-1/rewards.txt", diff --git a/npc/001-1/eventmaster.txt b/npc/001-1/eventmaster.txt new file mode 100644 index 000000000..a9d95d213 --- /dev/null +++ b/npc/001-1/eventmaster.txt @@ -0,0 +1,207 @@ +// TMW2 Script +// Author: +// Jesusalva +// Description: +// This GM NPC controls spawns and item drops on Aeros + +001-1,250,20,0 script Mana Being#001-1 NPC_ALIGE_OUTSIDE_BARREL,{ + function spawner { // (name, ID, amount) + areamonster("001-1", 171, 0, 339, 158, getarg(0), getarg(1), getarg(2), "Mana Being#001-1::OnAerosMobDeath"); + } + + if (!getgmlevel()) goto L_Unauthorized; + + @log_spawns=0; + @log_ratio=.coins_rate; + + mesn; + mes "Tired of walking the whole Aeros to spawn monsters, I was brought to existence."; + +L_Menu: + mes ""; + mes "Please select operation."; + menu + "Abort",L_Close, + "Spawn",L_Spawn, + rif(countitem(StrangeCoin) >= 10, "Drop a Toothbrush! (10x Coins)"),L_Drop, + "Adjust coins drop rate",L_Rate; + +L_Unauthorized: + dispbottom l("I am too far away to talk. Weird floating thingy..."); + end; + +L_Close: + if (@log_spawns > 0) logmes "spawned "+str(@log_spawns)+" beigns.", LOGMES_ATCOMMAND; + if (@log_ratio != .coins_rate) logmes "set aeros ratio from "+str(@log_ratio)+" to"+str(.coins_rate), LOGMES_ATCOMMAND; + close; + +L_Spawn: + mes ""; + mes "Spawn from a preset (with intended levels) from this menu. Otherwise, use @aeros with same syntax."; + mes "(agr) means Agressive Monsters on the set, DO NOT ABUSE."; + next; + select + "Abort", // 1 + "20x Piou, Piousee, Ratto, 10x Croc", // 2 + "20x Little Blub, 10x Plushroom Field", // 3 + "(agr) 10x Tipiu, 10x Cave Maggot, 10x Bat", // 4 + "20x Scorpion, 10x Duck, 10x Maggot", // 5 + "10x Red Scorpion, 20x Fire Goblin, 5x Mana Ghost", // 6 + "(agr) 1x Saxso Ghost, 20x House Maggot", // 7 + "(agr) 5x Slime Blast, 5x Red Slime, 10x White Slime", // 8 + + "(agr) 5x Mouboo, 4x Bandit, 2x Black Scorpion", // 9 + "10x Giant Maggot, 10x Cave Snake, 10x Mana Bug", // 10 + "1x Golden/Night Scorpion, 2x Santa Slime, 5x Copper Slime", // 11 + "(agr) 2x Fallen Guards", // 12 + + "10x Clover Path, 5 groups of 5 random small Bifs", // 13 + "4 groups of 5 random Bifs + 1 group of 5 random Big Bifs"; // 14 + + switch (@menu) { + case 1: + break; + case 2: + spawner(l("Piou"), 1002, 20); + spawner(l("Piousee"), 1003, 20); + spawner(l("Ratto"), 1005, 20); + spawner(l("Croc"), 1006, 10); + @log_spawns=@log_spawns+70; + break; + case 3: + spawner(l("Little Blub"), 1007, 20); + spawner(l("Plushroom Field"), 1011, 10); + @log_spawns=@log_spawns+30; + break; + case 4: + spawner(l("Tipiu"), 1015, 10); + spawner(l("Cave Maggot"), 1027, 10); + spawner(l("Bat"), 1039, 10); + @log_spawns=@log_spawns+30; + break; + case 5: + spawner(l("Scorpion"), 1071, 20); + spawner(l("Duck"), 1029, 10); + spawner(l("Maggot"), 1030, 10); + @log_spawns=@log_spawns+40; + break; + case 6: + spawner(l("Red Scorpion"), 1002, 10); + spawner(l("Fire Goblin"), 1067, 20); + spawner(l("Mana Ghost"), 1068, 5); + @log_spawns=@log_spawns+35; + break; + case 7: + spawner(l("Saxso Ghost"), 1076, 1); + spawner(l("House Maggot"), 1084, 20); + @log_spawns=@log_spawns+21; + break; + case 8: + spawner(l("Slime Blast"), 1090, 5); + spawner(l("Red Slime"), 1092, 5); + spawner(l("White Slime"), 1094, 10); + @log_spawns=@log_spawns+20; + break; + + case 9: + spawner(l("Mouboo"), 1023, 5); + spawner(l("Bandit"), 1024, 4); + spawner(l("Black Scorpion"), 1074, 2); + @log_spawns=@log_spawns+11; + break; + case 10: + spawner(l("Giant Maggot"), 1031, 10); + spawner(l("Cave Snake"), 1035, 10); + spawner(l("Mana Bug"), 1075, 10); + @log_spawns=@log_spawns+30; + break; + case 11: + spawner(l("Golden Scorpion"), 1078, 1); + spawner(l("Night Scorpion"), 1077, 1); + spawner(l("Santa Slime"), 1096, 5); + spawner(l("Copper Slime"), 1088, 10); + @log_spawns=@log_spawns+17; + break; + case 12: + spawner(l("Frostia Guard"), 1081, 1); + spawner(l("Halinarzo Guard"), 1082, 1); + @log_spawns=@log_spawns+2; + break; + + //"10x Clover Path, 5 groups of 5 random small Bifs", // 12 + //"4 groups of 5 random Bifs + 1 group of 5 random Big Bifs"; // 13 + case 13: + spawner(l("Clover Field"), 1028, 10); + @log_spawns=@log_spawns+35; + break; + case 14: + spawner(l("Piou"), 1002, 20); + @log_spawns=@log_spawns+25; + break; + } + + if (@menu == 1) goto L_Menu; + mes ""; + mes "Completed."; + mes "Total spawns: "+str(@log_spawns); + next; + goto L_Spawn; + +L_Drop: + delitem(StrangeCoin,10); + makeitem(Toothbrush, 1, "001-1", rand(171,319), rand(20,138)); + mes ""; + mes "Dropped."; + next; + goto L_Menu; + +L_Rate: + mes ""; + mes "Current drop rate: " + str(.coins_rate); + mes "Insert drop rate (from 0 to 10000)"; + input .coins_rate; + mes ""; + mes "Ratio adjusted."; + next; + goto L_Menu; + +OnAerosMobDeath: + if (rand(10000) <= .coins_rate) + getitem StrangeCoin, 1; + end; + +OnInit: + .coins_rate=0; + end; +} + + + +- script @aeros 32767,{ + end; + +OnCall: + if (!is_evtc()) + end; + if (getmapname() != "001-1") { + dispbottom "This command can only be used at aeros."; + end; + } + //.@atcmd_parameters$ = strtoupper(strip( // nah + + if (.@atcmd_numparameters != 2) { + dispbottom "Use the numeric ID provided by the wiki. This is a safeguard to ensure you are not overkilling players."; + dispbottom "Talk to Mana Being for a less fine-grained but much more optimized control over monsters."; + dispbottom "This command takes exactly this syntax: Mob ID <space> amount."; + end; + } + + areamonster("001-1", 171, 0, 339, 158, "Monster", atoi(.@atcmd_parameters$[0]), atoi(.@atcmd_parameters$[1]), "Mana Being#001-1::OnAerosMobDeath"); + logmes "@aeros "+.@atcmd_parameters$, LOGMES_ATCOMMAND; + dispbottom "All monsters summoned."; + + end; + +OnInit: + bindatcmd "aeros", "@aeros::OnCall", 99, 99, 0; +} diff --git a/npc/001-1/mapflags.txt b/npc/001-1/mapflags.txt index 40a98d89b..c18e4a7b5 100644 --- a/npc/001-1/mapflags.txt +++ b/npc/001-1/mapflags.txt @@ -1,2 +1,3 @@ 001-1 mapflag nosave 002-1,53,38 001-1 mapflag nopenalty +001-1 mapflag zone Aeros |