summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/map_zone_db.conf24
-rw-r--r--npc/001-1/_import.txt1
-rw-r--r--npc/001-1/eventmaster.txt207
-rw-r--r--npc/001-1/mapflags.txt1
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