summaryrefslogtreecommitdiff
path: root/npc
diff options
context:
space:
mode:
Diffstat (limited to 'npc')
-rw-r--r--npc/030-01/_import.txt2
-rw-r--r--npc/030-02/_import.txt2
-rw-r--r--npc/030-03/_import.txt2
-rw-r--r--npc/030-04/_import.txt2
-rw-r--r--npc/030-05/_import.txt2
-rw-r--r--npc/030-06/_import.txt2
-rw-r--r--npc/030-07/_import.txt2
-rw-r--r--npc/030-08/_import.txt2
-rw-r--r--npc/030-09/_import.txt2
-rw-r--r--npc/030-10/_import.txt2
-rw-r--r--npc/030-11/_import.txt2
-rw-r--r--npc/030-12/_import.txt2
-rw-r--r--npc/030-13/_import.txt2
-rw-r--r--npc/030-14/_import.txt2
-rw-r--r--npc/_import.txt14
-rw-r--r--npc/functions/maze.txt97
-rw-r--r--npc/scripts.conf1
17 files changed, 140 insertions, 0 deletions
diff --git a/npc/030-01/_import.txt b/npc/030-01/_import.txt
new file mode 100644
index 000000000..a4fa24bda
--- /dev/null
+++ b/npc/030-01/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-01: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-02/_import.txt b/npc/030-02/_import.txt
new file mode 100644
index 000000000..542f3cc8f
--- /dev/null
+++ b/npc/030-02/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-02: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-03/_import.txt b/npc/030-03/_import.txt
new file mode 100644
index 000000000..55cb23041
--- /dev/null
+++ b/npc/030-03/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-03: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-04/_import.txt b/npc/030-04/_import.txt
new file mode 100644
index 000000000..af92695d0
--- /dev/null
+++ b/npc/030-04/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-04: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-05/_import.txt b/npc/030-05/_import.txt
new file mode 100644
index 000000000..194df71e5
--- /dev/null
+++ b/npc/030-05/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-05: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-06/_import.txt b/npc/030-06/_import.txt
new file mode 100644
index 000000000..c7a9873c5
--- /dev/null
+++ b/npc/030-06/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-06: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-07/_import.txt b/npc/030-07/_import.txt
new file mode 100644
index 000000000..3187970af
--- /dev/null
+++ b/npc/030-07/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-07: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-08/_import.txt b/npc/030-08/_import.txt
new file mode 100644
index 000000000..a8e16c8e0
--- /dev/null
+++ b/npc/030-08/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-08: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-09/_import.txt b/npc/030-09/_import.txt
new file mode 100644
index 000000000..f35f31398
--- /dev/null
+++ b/npc/030-09/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-09: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-10/_import.txt b/npc/030-10/_import.txt
new file mode 100644
index 000000000..1fbf111f6
--- /dev/null
+++ b/npc/030-10/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-10: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-11/_import.txt b/npc/030-11/_import.txt
new file mode 100644
index 000000000..126df6cae
--- /dev/null
+++ b/npc/030-11/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-11: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-12/_import.txt b/npc/030-12/_import.txt
new file mode 100644
index 000000000..262596248
--- /dev/null
+++ b/npc/030-12/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-12: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-13/_import.txt b/npc/030-13/_import.txt
new file mode 100644
index 000000000..eea031700
--- /dev/null
+++ b/npc/030-13/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-13: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/030-14/_import.txt b/npc/030-14/_import.txt
new file mode 100644
index 000000000..c0ace412b
--- /dev/null
+++ b/npc/030-14/_import.txt
@@ -0,0 +1,2 @@
+// Map 030-14: Mazes and Dragons
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
diff --git a/npc/_import.txt b/npc/_import.txt
index 1bbae746d..f7af0c8a9 100644
--- a/npc/_import.txt
+++ b/npc/_import.txt
@@ -222,6 +222,20 @@
@include "npc/029-7/_import.txt"
@include "npc/029-8/_import.txt"
@include "npc/029-9/_import.txt"
+@include "npc/030-01/_import.txt"
+@include "npc/030-02/_import.txt"
+@include "npc/030-03/_import.txt"
+@include "npc/030-04/_import.txt"
+@include "npc/030-05/_import.txt"
+@include "npc/030-06/_import.txt"
+@include "npc/030-07/_import.txt"
+@include "npc/030-08/_import.txt"
+@include "npc/030-09/_import.txt"
+@include "npc/030-10/_import.txt"
+@include "npc/030-11/_import.txt"
+@include "npc/030-12/_import.txt"
+@include "npc/030-13/_import.txt"
+@include "npc/030-14/_import.txt"
@include "npc/042-0/_import.txt"
@include "npc/042-1/_import.txt"
@include "npc/042-10/_import.txt"
diff --git a/npc/functions/maze.txt b/npc/functions/maze.txt
new file mode 100644
index 000000000..8fd9c438e
--- /dev/null
+++ b/npc/functions/maze.txt
@@ -0,0 +1,97 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva
+// Description:
+// Controls map domain 030 and provide helpers. See constants;
+// Player Variables:
+// MAZE_ID → ID of the maze being used
+// MAZE_MAP$ → Map being used for the maze
+// MAZE_INST → Instance ID of the Maze
+
+/////////////////////////////////////////////////////////////////////////////////
+// CreateMaze(scope=IOT_CHAR)
+// Creates the maze instances so they can be configured
+// But does not initializes anything
+function script CreateMaze {
+ .@scope = getarg(0, IOT_CHAR);
+ // Pseudo-random maze ID
+ // (It is not random at all; But two mazes won't repeat)
+ MAZE_ID += 1;
+ if (MAZE_ID > MAZE_MAX)
+ MAZE_ID = MAZE_MIN;
+ if (MAZE_ID < MAZE_MIN)
+ MAZE_ID = MAZE_MIN;
+
+ .@MAZEMP$=sprintf("030-%02d", MAZE_ID);
+ MAZE_MAP$=sprintf("mz%02d@"+getcharid(0), MAZE_ID);
+
+ // Maze is not yet started
+ if (.@scope == IOT_CHAR) {
+ MAZE_INST = instance_create("Maze "+MAZE_ID+" "+getcharid(0), getcharid(3), IOT_CHAR);
+ // Failed
+ if (MAZE_INST < 0) {
+ consolebug("Instance \"%s\" already exists! (Error %d)", "Maze "+MAZE_ID+" "+getcharid(0), MAZE_INST);
+ return 0;
+ }
+ // Attach map
+ instance_attachmap(.@MAZEMP$, .@inst, false, MAZE_MAP$);
+ } else {
+ consolebug("Scope %d not yet supported by maze system", .@scope);
+ return 0;
+ }
+ return MAZE_ID;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// InitMaze(duration=2 hours)
+// Puts maze to work and send player there.
+// Exit must have been configured prior to the maze.
+function script InitMaze {
+ .@t = getarg(0, 7200);
+ instance_set_timeout(.@t, .@t, MAZE_INST);
+ instance_init(MAZE_INST);
+
+ // Find random, warpable coordinates
+ .@e=0; .@x=0; .@y=0;
+ .@mx=getmapinfo(MAPINFO_SIZE_X, MAZE_MAP$)-20;
+ .@my=getmapinfo(MAPINFO_SIZE_Y, MAZE_MAP$)-20;
+ do {
+ .@x = rand2(20, .@mx);
+ .@y = rand2(20, .@my);
+ .@e += 1;
+ if (.@e > 30) {
+ consolebug("Too many failures at Maze \"%s\"! Trying anyway!", MAZE_MAP$);
+ break;
+ }
+ } while (!checknpccell(MAZE_MAP$, .@x, .@y, cell_chkpass));
+
+ warp MAZE_MAP$, .@x, .@y;
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// RenewMaze(duration=2 hours)
+// Renews the map expiration time
+function script RenewMaze {
+ .@t = getarg(0, 7200);
+ instance_set_timeout(.@t, .@t, MAZE_INST);
+ return true;
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+// Configure maze maps as MMO zones
+030-01 mapflag zone MMO
+030-02 mapflag zone MMO
+030-03 mapflag zone MMO
+030-04 mapflag zone MMO
+030-05 mapflag zone MMO
+030-06 mapflag zone MMO
+030-07 mapflag zone MMO
+030-08 mapflag zone MMO
+030-09 mapflag zone MMO
+030-10 mapflag zone MMO
+030-11 mapflag zone MMO
+030-12 mapflag zone MMO
+030-13 mapflag zone MMO
+030-14 mapflag zone MMO
+
diff --git a/npc/scripts.conf b/npc/scripts.conf
index e10a2ac27..df4ca26d2 100644
--- a/npc/scripts.conf
+++ b/npc/scripts.conf
@@ -145,6 +145,7 @@
"npc/functions/instances.txt",
"npc/functions/captcha.txt",
"npc/functions/dungeon.txt",
+"npc/functions/maze.txt",
"npc/config/easteregg_blackbox.txt",
// Maps specific scripts