summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2016-02-11 13:28:18 +0100
committerHaru <haru@dotalux.com>2016-08-19 21:32:16 +0200
commit85d10885379bbe52930c233f02bf1c94ec86ac30 (patch)
treed05244bcdada0ae2e705b5dfa580e735c4f5a03e
parent9d70a6f590dbbd267e90bff3acee9e70eab2643c (diff)
downloadhercules-85d10885379bbe52930c233f02bf1c94ec86ac30.tar.gz
hercules-85d10885379bbe52930c233f02bf1c94ec86ac30.tar.bz2
hercules-85d10885379bbe52930c233f02bf1c94ec86ac30.tar.xz
hercules-85d10885379bbe52930c233f02bf1c94ec86ac30.zip
Ported map-server.conf to libconfig
Ported to modern Hercules and cleaned up from Panikon's commits: ee48838b12d15902fc14738cfa46d58b39080d11, 55498ebb7ac5d28444d0b01506c88ef6874f6055, 6d1f8f50b0e7349bdab2c53bb172d0b036e47c04, 25dde7e46524ace330b83cb4bf0255cc4d796792 Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r--.gitignore1
-rw-r--r--conf/atcommand.conf2
-rw-r--r--conf/global/console.conf8
-rw-r--r--conf/import-tmpl/map-server.conf32
-rw-r--r--conf/import-tmpl/map_conf.txt0
-rw-r--r--conf/map-server.conf119
-rw-r--r--conf/map/charhelp.txt (renamed from conf/charhelp.txt)0
-rw-r--r--conf/map/help.txt (renamed from conf/help.txt)0
-rw-r--r--conf/map/map-server.conf117
-rw-r--r--conf/map/maps.conf1252
-rw-r--r--conf/maps.conf1225
-rw-r--r--src/map/map.c449
-rw-r--r--src/map/map.h7
-rwxr-xr-xtools/configconverter.pl35
14 files changed, 1776 insertions, 1471 deletions
diff --git a/.gitignore b/.gitignore
index bd33fac60..eaf7a3aa3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,7 +62,6 @@ Thumbs.db
/conf/import/*.conf
/conf/import/battle_conf.txt
/conf/import/log_conf.txt
-/conf/import/map_conf.txt
/conf/import/msg_conf.txt
/conf/import/packet_conf.txt
/conf/import/script_conf.txt
diff --git a/conf/atcommand.conf b/conf/atcommand.conf
index df4972067..175286eb0 100644
--- a/conf/atcommand.conf
+++ b/conf/atcommand.conf
@@ -68,5 +68,5 @@ nolog: {
/* Commands help file */
help: {
- @include "conf/help.txt"
+ @include "conf/map/help.txt"
}
diff --git a/conf/global/console.conf b/conf/global/console.conf
index d26c48352..21ee46bd0 100644
--- a/conf/global/console.conf
+++ b/conf/global/console.conf
@@ -56,4 +56,12 @@ console: {
// [CHAR] Display information on the console whenever characters/guilds/parties/pets are loaded/saved?
save_log: true
+
+ // [MAP] Makes server log selected message types to a file in the /log/ folder
+ //1: Log Warning Messages
+ //2: Log Error and SQL Error messages.
+ //4: Log Debug Messages
+ //Example: "console_msg_log: 7" logs all 3 kinds
+ //Messages logged by this overrides console_silent setting
+ console_msg_log: 0
}
diff --git a/conf/import-tmpl/map-server.conf b/conf/import-tmpl/map-server.conf
new file mode 100644
index 000000000..2c9b16531
--- /dev/null
+++ b/conf/import-tmpl/map-server.conf
@@ -0,0 +1,32 @@
+//================= Hercules Configuration ================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2014-2016 Hercules Dev Team
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Map Server local configuration file.
+//=========================================================================
+
+map_configuration: {
+ // See conf/map/map-server.conf for details
+}
diff --git a/conf/import-tmpl/map_conf.txt b/conf/import-tmpl/map_conf.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/conf/import-tmpl/map_conf.txt
+++ /dev/null
diff --git a/conf/map-server.conf b/conf/map-server.conf
deleted file mode 100644
index d0749e85e..000000000
--- a/conf/map-server.conf
+++ /dev/null
@@ -1,119 +0,0 @@
-//--------------------------------------------------------------
-// Hercules Map-Server Configuration File
-//--------------------------------------------------------------
-
-// Note: "Comments" are all text on the right side of a double slash "//"
-// Whatever text is commented will not be parsed by the servers, and serves
-// only as information/reference.
-
-//--------------------------------------------------------------
-// Configuration Info
-//--------------------------------------------------------------
-// Interserver communication passwords, set in account.txt (or equiv.)
-userid: s1
-passwd: p1
-
-// Character Server IP
-// The map server connects to the character server using this IP address.
-// NOTE: This is useful when you are running behind a firewall or are on
-// a machine with multiple interfaces.
-//char_ip: 127.0.0.1
-
-// The map server listens on the interface with this IP address.
-// NOTE: This allows you to run multiple servers on multiple interfaces
-// while using the same ports for each server.
-//bind_ip: 127.0.0.1
-
-// Character Server Port
-char_port: 6121
-
-// Map Server IP
-// The IP address which clients will use to connect.
-// Set this to what your server's public IP address is.
-//map_ip: 127.0.0.1
-
-// Map Server Port
-map_port: 5121
-
-//Time-stamp format which will be printed before all messages.
-//Can at most be 20 characters long.
-//Common formats:
-// %I:%M:%S %p (hour:minute:second 12 hour, AM/PM format)
-// %H:%M:%S (hour:minute:second, 24 hour format)
-// %d/%b/%Y (day/Month/year)
-//For full format information, consult the strftime() manual.
-//timestamp_format: [%d/%b %H:%M]
-
-//If redirected output contains escape sequences (color codes)
-stdout_with_ansisequence: no
-
-//Makes server log selected message types to a file in the /log/ folder
-//1: Log Warning Messages
-//2: Log Error and SQL Error messages.
-//4: Log Debug Messages
-//Example: "console_msg_log: 7" logs all 3 kinds
-//Messages logged by this overrides console_silent setting
-console_msg_log: 0
-
-//Makes server output more silent by omitting certain types of messages:
-//1: Hide Information messages
-//2: Hide Status messages
-//4: Hide Notice Messages
-//8: Hide Warning Messages
-//16: Hide Error and SQL Error messages.
-//32: Hide Debug Messages
-//Example: "console_silent: 7" Hides information, status and notice messages (1+2+4)
-console_silent: 0
-
-//Where should all database data be read from?
-db_path: db
-
-// Enable the @guildspy and @partyspy at commands?
-// Note that enabling them decreases packet sending performance.
-enable_spy: no
-
-// Read map data from GATs and RSWs in GRF files or a data directory
-// as referenced by grf-files.txt rather than from the mapcache?
-use_grf: no
-
-// Database autosave time
-// All characters are saved on this time in seconds (example:
-// autosave of 60 secs with 60 characters online -> one char is saved every
-// second)
-autosave_time: 300
-
-// Min database save intervals (in ms)
-// Prevent saving characters faster than at this rate (prevents char-server
-// save-load getting too high as character-count increases)
-minsave_time: 100
-
-// Apart from the autosave_time, players will also get saved when involved
-// in the following (add as needed):
-// 1: After every successful trade
-// 2: After every vending transaction
-// 4: After closing storage/guild storage.
-// 8: After hatching/returning to egg a pet.
-// 16: After successfully sending a mail with attachment
-// 32: After successfully submitting an item for auction
-// 64: After successfully get/delete/complete a quest
-// 128: After every buying store transaction
-// 256: After every bank transaction (deposit/withdraw)
-// NOTE: These settings decrease the chance of dupes/lost items when there's a
-// server crash at the expense of increasing the map/char server lag. If your
-// server rarely crashes, but experiences interserver lag, you may want to set
-// these off.
-save_settings: 511
-
-//When employing more than one language (see db/translations.conf),
-//this setting is used as a fallback
-default_language: English
-
-// When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands.
-help_txt: conf/help.txt
-help2_txt: conf/help2.txt
-charhelp_txt: conf/charhelp.txt
-
-// Maps:
-import: conf/maps.conf
-
-import: conf/import/map_conf.txt
diff --git a/conf/charhelp.txt b/conf/map/charhelp.txt
index e3acddbb4..e3acddbb4 100644
--- a/conf/charhelp.txt
+++ b/conf/map/charhelp.txt
diff --git a/conf/help.txt b/conf/map/help.txt
index a65c7de70..a65c7de70 100644
--- a/conf/help.txt
+++ b/conf/map/help.txt
diff --git a/conf/map/map-server.conf b/conf/map/map-server.conf
new file mode 100644
index 000000000..b489e948b
--- /dev/null
+++ b/conf/map/map-server.conf
@@ -0,0 +1,117 @@
+//================= Hercules Configuration ================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2014-2016 Hercules Dev Team
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Map Server Configuration File
+//=========================================================================
+
+map_configuration: {
+ @include "conf/global/console.conf"
+ @include "conf/global/sql_connection.conf"
+
+ // map_list and map_removed
+ @include "conf/map/maps.conf"
+
+ // When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands.
+ help_txt: "conf/map/help.txt"
+ charhelp_txt: "conf/map/charhelp.txt"
+
+ // Enable the @guildspy and @partyspy at commands?
+ // Note that enabling them decreases packet sending performance.
+ enable_spy: false
+
+ // Read map data from GATs and RSWs in GRF files or a data directory
+ // as referenced by grf-files.txt rather than from the mapcache?
+ use_grf: false
+
+ // When employing more than one language (see db/translations.conf),
+ // this setting is used as a fallback
+ default_language: "English"
+
+ // Information related to inter-server behavior
+ inter: {
+ // Interserver communication passwords, set in the login server database
+ userid: "s1"
+ passwd: "p1"
+
+ // Character Server IP
+ // The map server connects to the character server using this IP address.
+ // NOTE: This is useful when you are running behind a firewall or are on
+ // a machine with multiple interfaces.
+ //char_ip: "127.0.0.1"
+
+ // The map server listens on the interface with this IP address.
+ // NOTE: This allows you to run multiple servers on multiple interfaces
+ // while using the same ports for each server.
+ //bind_ip: "127.0.0.1"
+
+ // Character Server Port
+ char_port: 6121
+
+ // Map Server IP
+ // The IP address which clients will use to connect.
+ // Set this to what your server's public IP address is.
+ //map_ip: "127.0.0.1"
+
+ // Map Server Port
+ map_port: 5121
+ }
+
+ database: {
+ // Where should all database data be read from?
+ db_path: "db"
+
+ // Database autosave time
+ // All characters are saved on this time in seconds (example:
+ // autosave of 60 secs with 60 characters online -> one char is
+ // saved every second)
+ autosave_time: 300
+
+ // Min database save intervals (in ms)
+ // Prevent saving characters faster than at this rate (prevents
+ // char-server save-load getting too high as character-count
+ // increases)
+ minsave_time: 100
+
+ // Apart from the autosave_time, players will also get saved
+ // when involved in the following (add as needed):
+ // 0x001: After every successful trade
+ // 0x002: After every vending transaction
+ // 0x004: After closing storage/guild storage.
+ // 0x008: After hatching/returning to egg a pet.
+ // 0x010: After successfully sending a mail with attachment
+ // 0x020: After successfully submitting an item for auction
+ // 0x040: After successfully get/delete/complete a quest
+ // 0x080: After every buying store transaction
+ // 0x100: After every bank transaction (deposit/withdraw)
+ // NOTE: These settings decrease the chance of dupes/lost items
+ // when there's a server crash at the expense of increasing the
+ // map/char server lag. If your server rarely crashes, but
+ // experiences interserver lag, you may want to set these off.
+ save_settings: 0x1ff
+ }
+}
+
+import: "conf/import/map-server.conf"
diff --git a/conf/map/maps.conf b/conf/map/maps.conf
new file mode 100644
index 000000000..dc4798354
--- /dev/null
+++ b/conf/map/maps.conf
@@ -0,0 +1,1252 @@
+//================= Hercules Configuration ================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2014-2016 Hercules Dev Team
+//=
+//= Hercules is free software: you can redistribute it and/or modify
+//= it under the terms of the GNU General Public License as published by
+//= the Free Software Foundation, either version 3 of the License, or
+//= (at your option) any later version.
+//=
+//= This program is distributed in the hope that it will be useful,
+//= but WITHOUT ANY WARRANTY; without even the implied warranty of
+//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+//= GNU General Public License for more details.
+//=
+//= You should have received a copy of the GNU General Public License
+//= along with this program. If not, see <http://www.gnu.org/licenses/>.
+//=========================================================================
+//= Hercules map configuration file.
+//=========================================================================
+// Used to know which maps are currently being supported by Hercules
+//=========================================================================
+
+// Maps that are in map_list but are not supported by your server
+map_removed: (
+ //"mapname",
+)
+
+// Added maps
+map_list: (
+ //------------------------- Normal Maps ---------------------------
+ "alb_ship",
+ "alb2trea",
+ "alberta",
+ "alberta_in",
+ "alde_dun01",
+ "alde_dun02",
+ "alde_dun03",
+ "alde_dun04",
+ "aldeba_in",
+ "aldebaran",
+ "anthell01",
+ "anthell02",
+ "arena_room",
+ "c_tower1",
+ "c_tower2",
+ "c_tower3",
+ "c_tower4",
+ //"force_map1",
+ //"force_map2",
+ //"force_map3",
+ "force_1-1",
+ "force_2-1",
+ "force_3-1",
+ "force_4-1",
+ "force_5-1",
+ "force_1-2",
+ "force_2-2",
+ "force_3-2",
+ "force_1-3",
+ "force_2-3",
+ "force_3-3",
+ "gef_dun00",
+ "gef_dun01",
+ "gef_dun02",
+ "gef_dun03",
+ "gef_fild00",
+ "gef_fild01",
+ "gef_fild02",
+ "gef_fild03",
+ "gef_fild04",
+ "gef_fild05",
+ "gef_fild06",
+ "gef_fild07",
+ "gef_fild08",
+ "gef_fild09",
+ "gef_fild10",
+ "gef_fild11",
+ "gef_fild12",
+ "gef_fild13",
+ "gef_fild14",
+ "gef_tower",
+ "geffen",
+ "geffen_in",
+ "gl_cas01",
+ "gl_cas02",
+ "gl_church",
+ "gl_chyard",
+ "gl_dun01",
+ "gl_dun02",
+ "gl_in01",
+ "gl_knt01",
+ "gl_knt02",
+ "gl_prison",
+ "gl_prison1",
+ "gl_sew01",
+ "gl_sew02",
+ "gl_sew03",
+ "gl_sew04",
+ "gl_step",
+ "glast_01",
+ //"hunter_1-1",
+ //"hunter_2-1",
+ //"hunter_3-1",
+ "in_hunter",
+ "in_moc_16",
+ "in_orcs01",
+ "in_sphinx1",
+ "in_sphinx2",
+ "in_sphinx3",
+ "in_sphinx4",
+ "in_sphinx5",
+ "iz_dun00",
+ "iz_dun01",
+ "iz_dun02",
+ "iz_dun03",
+ "iz_dun04",
+ "izlu2dun",
+ "izlude",
+ "izlude_in",
+ "job_thief1",
+ //"knight_1-1",
+ //"knight_2-1",
+ //"knight_3-1",
+ "mjo_dun01",
+ "mjo_dun02",
+ "mjo_dun03",
+ "mjolnir_01",
+ "mjolnir_02",
+ "mjolnir_03",
+ "mjolnir_04",
+ "mjolnir_05",
+ "mjolnir_06",
+ "mjolnir_07",
+ "mjolnir_08",
+ "mjolnir_09",
+ "mjolnir_10",
+ "mjolnir_11",
+ "mjolnir_12",
+ "moc_castle",
+ "moc_fild01",
+ "moc_fild02",
+ "moc_fild03",
+ //"moc_fild04",
+ //"moc_fild05",
+ //"moc_fild06",
+ "moc_fild07",
+ //"moc_fild08",
+ //"moc_fild09",
+ //"moc_fild10",
+ "moc_fild11",
+ "moc_fild12",
+ "moc_fild13",
+ //"moc_fild14",
+ //"moc_fild15",
+ "moc_fild16",
+ "moc_fild17",
+ "moc_fild18",
+ "moc_fild19",
+ "moc_pryd01",
+ "moc_pryd02",
+ "moc_pryd03",
+ "moc_pryd04",
+ "moc_pryd05",
+ "moc_pryd06",
+ "moc_prydb1",
+ "moc_ruins",
+ "monk_in",
+ "morocc",
+ "morocc_in",
+ "new_zone01",
+ "new_zone02",
+ "new_zone03",
+ "new_zone04",
+ "new_1-1",
+ "new_1-2",
+ "new_1-3",
+ "new_1-4",
+ "new_2-1",
+ "new_2-2",
+ "new_2-3",
+ "new_2-4",
+ "new_3-1",
+ "new_3-2",
+ "new_3-3",
+ "new_3-4",
+ "new_4-1",
+ "new_4-2",
+ "new_4-3",
+ "new_4-4",
+ "new_5-1",
+ "new_5-2",
+ "new_5-3",
+ "new_5-4",
+ "orcsdun01",
+ "orcsdun02",
+ //"ordeal_a00",
+ //"ordeal_a02",
+ "ordeal_1-1",
+ "ordeal_1-2",
+ //"ordeal_1-3",
+ //"ordeal_1-4",
+ "ordeal_2-1",
+ "ordeal_2-2",
+ //"ordeal_2-3",
+ //"ordeal_2-4",
+ "ordeal_3-1",
+ "ordeal_3-2",
+ //"ordeal_3-3",
+ //"ordeal_3-4",
+ "pay_arche",
+ "pay_dun00",
+ "pay_dun01",
+ "pay_dun02",
+ "pay_dun03",
+ "pay_dun04",
+ "pay_fild01",
+ "pay_fild02",
+ "pay_fild03",
+ "pay_fild04",
+ "pay_fild05",
+ "pay_fild06",
+ "pay_fild07",
+ "pay_fild08",
+ "pay_fild09",
+ "pay_fild10",
+ "pay_fild11",
+ //"priest_1-1",
+ //"priest_2-1",
+ //"priest_3-1",
+ "prontera",
+ "prt_are_in",
+ "prt_are01",
+ "prt_castle",
+ "prt_church",
+ "prt_fild00",
+ "prt_fild01",
+ "prt_fild02",
+ "prt_fild03",
+ "prt_fild04",
+ "prt_fild05",
+ "prt_fild06",
+ "prt_fild07",
+ "prt_fild08",
+ "prt_fild09",
+ "prt_fild10",
+ "prt_fild11",
+ "prt_in",
+ "prt_maze01",
+ "prt_maze02",
+ "prt_maze03",
+ "prt_monk",
+ "prt_sewb1",
+ "prt_sewb2",
+ "prt_sewb3",
+ "prt_sewb4",
+ "pvp_room",
+ "pvp_2vs2",
+ "pvp_c_room",
+ "pvp_n_1-1",
+ "pvp_n_1-2",
+ "pvp_n_1-3",
+ "pvp_n_1-4",
+ "pvp_n_1-5",
+ "pvp_n_2-1",
+ "pvp_n_2-2",
+ "pvp_n_2-3",
+ "pvp_n_2-4",
+ "pvp_n_2-5",
+ "pvp_n_3-1",
+ "pvp_n_3-2",
+ "pvp_n_3-3",
+ "pvp_n_3-4",
+ "pvp_n_3-5",
+ "pvp_n_4-1",
+ "pvp_n_4-2",
+ "pvp_n_4-3",
+ "pvp_n_4-4",
+ "pvp_n_4-5",
+ "pvp_n_5-1",
+ "pvp_n_5-2",
+ "pvp_n_5-3",
+ "pvp_n_5-4",
+ "pvp_n_5-5",
+ "pvp_n_6-1",
+ "pvp_n_6-2",
+ "pvp_n_6-3",
+ "pvp_n_6-4",
+ "pvp_n_6-5",
+ "pvp_n_7-1",
+ "pvp_n_7-2",
+ "pvp_n_7-3",
+ "pvp_n_7-4",
+ "pvp_n_7-5",
+ "pvp_n_8-1",
+ "pvp_n_8-2",
+ "pvp_n_8-3",
+ "pvp_n_8-4",
+ "pvp_n_8-5",
+ "pvp_n_room",
+ "pvp_y_1-1",
+ "pvp_y_1-2",
+ "pvp_y_1-3",
+ "pvp_y_1-4",
+ "pvp_y_1-5",
+ "pvp_y_2-1",
+ "pvp_y_2-2",
+ "pvp_y_2-3",
+ "pvp_y_2-4",
+ "pvp_y_2-5",
+ "pvp_y_3-1",
+ "pvp_y_3-2",
+ "pvp_y_3-3",
+ "pvp_y_3-4",
+ "pvp_y_3-5",
+ "pvp_y_4-1",
+ "pvp_y_4-2",
+ "pvp_y_4-3",
+ "pvp_y_4-4",
+ "pvp_y_4-5",
+ "pvp_y_5-1",
+ "pvp_y_5-2",
+ "pvp_y_5-3",
+ "pvp_y_5-4",
+ "pvp_y_5-5",
+ "pvp_y_6-1",
+ "pvp_y_6-2",
+ "pvp_y_6-3",
+ "pvp_y_6-4",
+ "pvp_y_6-5",
+ "pvp_y_7-1",
+ "pvp_y_7-2",
+ "pvp_y_7-3",
+ "pvp_y_7-4",
+ "pvp_y_7-5",
+ "pvp_y_8-1",
+ "pvp_y_8-2",
+ "pvp_y_8-3",
+ "pvp_y_8-4",
+ "pvp_y_8-5",
+ "pvp_y_room",
+ "sword_1-1",
+ "sword_2-1",
+ "sword_3-1",
+ "treasure01",
+ "treasure02",
+ //"wizard_1-1",
+ //"wizard_2-1",
+ //"wizard_3-1",
+ "xmas",
+ "xmas_dun01",
+ "xmas_dun02",
+ "xmas_fild01",
+ "xmas_in",
+
+ //---Ep3.0 Comodo ---
+ "beach_dun",
+ "beach_dun2",
+ "beach_dun3",
+ "cmd_fild01",
+ "cmd_fild02",
+ "cmd_fild03",
+ "cmd_fild04",
+ "cmd_fild05",
+ "cmd_fild06",
+ "cmd_fild07",
+ "cmd_fild08",
+ "cmd_fild09",
+ "cmd_in01",
+ "cmd_in02",
+ "comodo",
+
+ //---EP3.1 Quiz Revolution ---
+ "quiz_00",
+ "quiz_01",
+ "g_room1-1",
+ "g_room1-2",
+ "g_room1-3",
+ "g_room2",
+
+ //--- Ep4.0 Turtle Island ---
+ "tur_dun01",
+ "tur_dun02",
+ "tur_dun03",
+ "tur_dun04",
+ "tur_dun05",
+ "tur_dun06",
+
+ //--- Ep4.1 The War of Emperium ---
+ "alde_gld",
+ "aldeg_cas01",
+ "aldeg_cas02",
+ "aldeg_cas03",
+ "aldeg_cas04",
+ "aldeg_cas05",
+ "gefg_cas01",
+ "gefg_cas02",
+ "gefg_cas03",
+ "gefg_cas04",
+ "gefg_cas05",
+ "gld_dun01",
+ "gld_dun02",
+ "gld_dun03",
+ "gld_dun04",
+ "guild_room",
+ "guild_vs1",
+ "guild_vs2",
+ "guild_vs3",
+ "guild_vs4",
+ "guild_vs5",
+ "guild_vs1-1",
+ "guild_vs1-2",
+ "guild_vs1-3",
+ "guild_vs1-4",
+ "guild_vs2-1",
+ "guild_vs2-2",
+ //"job_hunter",
+ "job_hunte",
+ //"job_knight",
+ "job_knt",
+ //"job_priest",
+ "job_prist",
+ "job_sword1",
+ //"job_wizard",
+ "job_wiz",
+ "pay_gld",
+ "payg_cas01",
+ "payg_cas02",
+ "payg_cas03",
+ "payg_cas04",
+ "payg_cas05",
+ "prt_gld",
+ "prtg_cas01",
+ "prtg_cas02",
+ "prtg_cas03",
+ "prtg_cas04",
+ "prtg_cas05",
+
+ //--- Ep5.0 Juno ---
+ "alde_alche",
+ "in_rogue",
+ "job_cru",
+ "job_duncer",
+ "job_monk",
+ "job_sage",
+ "mag_dun01",
+ "mag_dun02",
+ "monk_test",
+ "quiz_test",
+ "yuno",
+ "yuno_fild01",
+ "yuno_fild02",
+ "yuno_fild03",
+ "yuno_fild04",
+ "yuno_in01",
+ "yuno_in02",
+ "yuno_in03",
+ "yuno_in04",
+ "yuno_in05",
+
+ //--- Ep6.0 - Amatsu ---
+ // Requires: kRO 08-10-03 or newer
+ // or kRO Sakray 09-09-03 or newer
+ "ama_dun01",
+ "ama_dun02",
+ "ama_dun03",
+ "ama_fild01",
+ "ama_in01",
+ "ama_in02",
+ "ama_test",
+ "amatsu",
+
+ //--- Ep6.1 - Kunlun ---
+ "gon_dun01",
+ "gon_dun02",
+ "gon_dun03",
+ "gon_fild01",
+ "gon_in",
+ "gon_test",
+ "gonryun",
+ "sec_in01",
+ "sec_in02",
+ "sec_pri",
+
+ //--- Ep6.2 - Umbala ---
+ // Requires: kRO 01-27-04 or newer
+ // or kRO Sakray 12-02-03 or newer
+ // or Akaru's SuperGRF 1.22 or newer
+ "umbala",
+ "um_dun01",
+ "um_dun02",
+ "um_fild01",
+ "um_fild02",
+ "um_fild03",
+ "um_fild04",
+ "um_in",
+
+ //--- Ep6.3 - Niflheim ---
+ // Requires: kRO 02-23-04 or newer
+ // or kRO Sakray 01-09-04 or newer
+ // or Akaru's SuperGRF 1.32 or newer
+ "niflheim",
+ "nif_fild01",
+ "nif_fild02",
+ "nif_in",
+ "yggdrasil01",
+
+ //--- Ep6.4 - Valkyrie ---
+ // Requires: kRO ??-??-04 or newer
+ // or kRO Sakray 02-03-04 or newer
+ // or Akaru's SuperGRF 1.34 or newer
+ "valkyrie",
+ "himinn",
+
+ //--- Ep6.5 - Louyang ---
+ // Requires kRO Sakray 03-30 or newer
+ //(Akaru's SuperGRF required version: 1.52)
+ "lou_in01",
+ "lou_in02",
+ "lou_dun03",
+ "lou_dun02",
+ "lou_dun01",
+ "lou_fild01",
+ "louyang",
+
+ //--- Ep6.6 - Novice Guild Siege ---
+ //Requires kRO Sakray 04-07 or newer
+ //(Akaru's SuperGRF required version: 1.53)
+ //"siege_test",
+ "n_castle",
+ "nguild_gef",
+ "nguild_prt",
+ "nguild_pay",
+ "nguild_alde",
+
+ //--- Ep6.7 - Jawaii ---
+ //Requires kRO Sakray 06-22 or newer
+ //(Akaru's SuperGRF required version: 1.63)
+ "jawaii",
+ "jawaii_in",
+
+ // --- Ep6.8 - Geffenia ---
+ // Requires kRO Sakray 07-13 or newer
+ // (Akaru's SuperGRF required version: 1.64)
+ "gefenia01",
+ "gefenia02",
+ "gefenia03",
+ "gefenia04",
+
+ // --- Ep6.9 - New Payon ---
+ // Requires kRO Sakray 09-03
+ "payon",
+ "payon_in01",
+ "payon_in02",
+ "payon_in03",
+ //same names as old maps except that payon_in03 got added
+
+ // --- Ep? - Ayothaya ---
+ // Requires kRO Sakray 09-21
+ // -- 2004-10-19sdata_k.gpf --
+ "ayothaya",
+ "ayo_in01",
+ "ayo_in02",
+ "ayo_fild01",
+ "ayo_fild02",
+ "ayo_dun01",
+ "ayo_dun02",
+
+ // --- God item quests maps ---
+ // -- 2004-10-12sdata_k3.gpf --
+ "que_god01",
+ "que_god02",
+
+ // --- Ep? - Schwarzwald Republic ---
+ // -- 2004-12-28sdata_k.gpf --
+ "yuno_fild05",
+ "yuno_fild07",
+ "yuno_fild08",
+ "yuno_fild09",
+ "yuno_fild11",
+ "yuno_fild12",
+
+ // --- Turbo Track Arena ---
+ // -- 2005-03-08sdata_k.gpf --
+ "alde_tt02",
+ "turbo_n_1",
+ "turbo_n_4",
+ "turbo_n_8",
+ "turbo_n_16",
+ "turbo_e_4",
+ "turbo_e_8",
+ "turbo_e_16",
+ "turbo_room",
+
+ // --- Einbroch/Einbech ---
+ // -- 2005-03-15sdata_k.gpf --
+ "airplane",
+ "airport",
+ "einbech",
+ "einbroch",
+ "ein_dun01",
+ "ein_dun02",
+ "ein_fild06",
+ "ein_fild07",
+ "ein_fild08",
+ "ein_fild09",
+ "ein_fild10",
+ "ein_in01",
+ "que_sign01",
+ "que_sign02",
+
+ // --- Einbroch and Lightalzen ---
+ // -- 2005-05-10sdata_k.gpf --
+ "ein_fild03",
+ "ein_fild04",
+ "lhz_fild02",
+ "lhz_fild03",
+
+ // --- Lighthalzen and Juperos Dungeon ---
+ // -- 2005-06-14sdata_k.gpf --
+ "yuno_pre",
+ "lhz_fild01",
+ "lighthalzen",
+ "lhz_in01",
+ "lhz_in02",
+ "lhz_in03",
+ "lhz_que01",
+ "lhz_dun01",
+ "lhz_dun02",
+ "lhz_dun03",
+ "lhz_cube",
+ "juperos_01",
+ "juperos_02",
+ "jupe_area1",
+ "jupe_area2",
+ "jupe_core",
+ "jupe_ele",
+ "jupe_ele_r",
+ "jupe_gate",
+
+ // --- Lighthalzen & Juno Airport ---
+ // -- resnametable clones of airport and airplane --
+ "y_airport",
+ "lhz_airport",
+ "airplane_01",
+
+ // --- Juperos Dungeon ---
+ // -- 2005-06-28sdata_k.gpf --
+ "jupe_cave",
+
+ // --- Quiz Revolution ---
+ // -- 2005-08-02sdata_k.gpf --
+ "quiz_02",
+
+ // --- Hugel Field ---
+ // -- 2005-08-23sdata_k.gpf --
+ "hu_fild07",
+ "hu_fild05",
+ "hu_fild04",
+ "hu_fild01",
+ "yuno_fild06",
+
+ // --- Star Knight And Soul Linker Job Change Maps ---
+ // -- 2005-08-23sdata_k.gpf --
+ "job_soul",
+ "job_star",
+
+ // --- Abyss Lake, Thanatos Tower --
+ // -- 2005-09-13sdata_k.gpf - 2005-09-13sdata_k6.gpf --
+ "que_job01",
+ "que_job02",
+ "que_job03",
+ "abyss_01",
+ "abyss_02",
+ "abyss_03",
+ "thana_step",
+ "thana_boss",
+ "tha_scene01",
+ "tha_t01",
+ "tha_t02",
+ "tha_t03",
+ "tha_t04",
+ "tha_t07",
+ "tha_t05",
+ "tha_t06",
+ "tha_t08",
+
+ // --- Thanatos Tower ---
+ // -- 2005-09-21sdata_k.gpf -- ",
+ "tha_t09",
+ "tha_t10",
+ "tha_t11",
+ "tha_t12",
+
+ // --- Auction Market ---
+ // -- 2005-11-29sdata_k.gpf --
+ "auction_01",
+ "auction_02",
+
+ // ???
+ // -- 2005-12-06gdata_k.gpf --
+ "alde_tt03",
+
+ // --- Garden City Hugel / Kiehl ---
+ // -- 2005-12-20sdata_k.gpf --
+ "hugel",
+ "hu_in01",
+ "que_bingo",
+ "que_hugel",
+ "p_track01",
+ "p_track02",
+ "odin_tem01",
+ "odin_tem02",
+ "odin_tem03",
+ "hu_fild02",
+ "hu_fild03",
+ "hu_fild06",
+ "ein_fild01",
+ "ein_fild02",
+ "ein_fild05",
+ "yuno_fild10",
+ "kh_kiehl02",
+ "kh_kiehl01",
+ "kh_dun02",
+ "kh_dun01",
+ "kh_mansion",
+ "kh_rossi",
+ "kh_school",
+ "kh_vila",
+
+ // --- Poring Arena (?) & Gunslinger/Ninja Job Map ---
+ // -- 2006-03-28sdata_k.gpf --
+ //"poring_c01",
+ //"poring_c02",
+ "que_ng",
+
+ // --- Arunafeltz & Ice Dungeon ---
+ // -- 2006-05-30sdata_k.gpf --
+ "rachel",
+ "ra_in01",
+ "ra_fild01",
+ "ra_fild02",
+ "ra_fild03",
+ "ra_fild04",
+ "ra_fild05",
+ "ra_fild06",
+ "ra_fild07",
+ "ra_fild08",
+ "ra_fild09",
+ "ra_fild10",
+ "ra_fild11",
+ "ra_fild12",
+ "ra_fild13",
+ "ra_san01",
+ "ra_san02",
+ "ra_san03",
+ "ra_san04",
+ "ra_san05",
+ "ra_temin",
+ "ra_temple",
+ "ra_temsky",
+ "que_rachel",
+ "que_san04",
+ "ice_dun01",
+ "ice_dun02",
+ "ice_dun03",
+ "ice_dun04",
+
+ // --- Veins & Thor Dungeon ---
+ // -- 2006-12-19sdata_k.gpf --
+ "que_thor",
+ "thor_camp",
+ "thor_v01",
+ "thor_v02",
+ "thor_v03",
+ "veins",
+ "ve_in",
+ "ve_in02",
+ "ve_fild01",
+ "ve_fild02",
+ "ve_fild03",
+ "ve_fild04",
+ "ve_fild05",
+ "ve_fild06",
+ "ve_fild07",
+
+ // --- Nameless Island & Abbey Dungeon ---
+ // -- 2007-04-03sdata_k.gpf --
+ "nameless_i",
+ "nameless_n",
+ "nameless_in",
+ "abbey01",
+ "abbey02",
+ "abbey03",
+ "poring_w01",
+ "poring_w02",
+
+ // --- ??? ---
+ // -- 2007-??-?? --
+ "06guild_r",
+ "06guild_01",
+ "06guild_02",
+ "06guild_03",
+ "06guild_04",
+ "06guild_05",
+ "06guild_06",
+ "06guild_07",
+ "06guild_08",
+ "z_agit",
+ "que_temsky",
+ "itemmall",
+ "bossnia_01",
+ "bossnia_02",
+ "bossnia_03",
+ "bossnia_04",
+
+ // --- Moscovia ---
+ // -- 2007-06-??? --
+ "moscovia",
+ "mosk_in",
+ "mosk_ship",
+ "mosk_fild01",
+ "mosk_fild02",
+ "mosk_dun01",
+ "mosk_dun02",
+ "mosk_dun03",
+ "mosk_que",
+
+ // --- Episode 12: Satan Morroc & Schwarzwald Siege ---
+ // -- 2007-09-19sdata_k.gpf --
+ "schg_cas01",
+ "schg_cas02",
+ "schg_cas03",
+ "schg_cas04",
+ "schg_cas05",
+ "sch_gld",
+ "cave",
+ "moc_fild20",
+ "moc_fild21",
+ "moc_fild22",
+ "que_ba",
+ "que_moc_16",
+ "que_moon",
+
+ // Arunafeltz Seige
+ // -- 2007-10-24sdata_k.gpf --
+ "arug_cas01",
+ "arug_cas02",
+ "arug_cas03",
+ "arug_cas04",
+ "arug_cas05",
+ "aru_gld",
+
+ // PVP Battle Fields: Tierra Valley, and Flavius
+ // -- 2007-11-14sdata_k.gpf --
+ "bat_room",
+ "bat_a01",
+ "bat_a02",
+ "bat_b01",
+ "bat_b02",
+ "que_qsch01",
+ "que_qsch02",
+ "que_qsch03",
+ "que_qsch04",
+ "que_qsch05",
+ "que_qaru01",
+ "que_qaru02",
+ "que_qaru03",
+ "que_qaru04",
+ "que_qaru05",
+
+ // Endless Tower Memorial Dungeon
+ // -- 2007-11-28sdata_k.gpf --
+ "1@cata",
+ "2@cata",
+ "e_tower",
+ "1@tower",
+ "2@tower",
+ "3@tower",
+ "4@tower",
+ "5@tower",
+ "6@tower",
+
+ // 13.1 Another World
+ // -- 2008-05-28sdata_k.gpf --
+ "mid_camp",
+ "mid_campin",
+ "man_fild01",
+ "man_fild03",
+ "spl_fild02",
+ "spl_fild03",
+ "moc_fild22b",
+ "que_dan01",
+ "que_dan02",
+ "schg_que01",
+ "schg_dun01",
+ "arug_que01",
+ "arug_dun01",
+ "1@orcs",
+ "2@orcs",
+
+ // KvM Battleground
+ // -- 2008-??-??? --
+ "bat_c01",
+ "bat_c02",
+ "bat_c03",
+
+ // 13.2 Another World
+ // -- 2008-11-26 --
+ "1@nyd",
+ "2@nyd",
+ "nyd_dun01",
+ "nyd_dun02",
+ "manuk",
+ "man_fild02",
+ "man_in01",
+ "splendide",
+ "spl_fild01",
+ "spl_in01",
+ "spl_in02",
+
+ // 3rd Job Maps
+ // -- 2009-01-29rdata_k2.gpf --
+ "job3_arch01",
+ "job3_arch02",
+ "job3_arch03",
+ "job3_guil01",
+ "job3_guil02",
+ "job3_guil03",
+ "job3_rang01",
+ "job3_rang02",
+ "job3_rune01",
+ "job3_rune02",
+ "job3_rune03",
+ "job3_war01",
+ "job3_war02",
+ "jupe_core2",
+
+ // ???
+ // -- 2009-05-27rdata_k.gpf --
+ "moc_para01",
+
+ // Brasilis Maps
+ // -- 2009-08-05rdata_k.gpf --
+ "brasilis",
+ "bra_in01",
+ "bra_fild01",
+ "bra_dun01",
+ "bra_dun02",
+
+ // ???
+ // -- 2009-09-30rdata_k.gpf --
+ "s_atelier",
+
+ // 13.3 El Discastes
+ // -- 2009-12-09rdata_k.gpf --
+ "dicastes01",
+ "dicastes02",
+ "dic_in01",
+ "dic_fild01",
+ "dic_fild02",
+ "dic_dun01",
+ "dic_dun02",
+ "job3_gen01",
+ "job3_sha01",
+
+ // Localized Event Maps
+ //"evt_zombie",
+ //"evt_coke",
+
+ // Unknown Maps
+ //"ac_sl_area",
+ //"ac_cl_hall",
+ //"ac_cl_room",
+ //"jp_s_dun11",
+
+ // 14.1 Bifrost
+ // -- 2010-06-09rdata_x.gpf --
+ "mora",
+ "bif_fild01",
+ "bif_fild02",
+ "1@mist",
+
+ // Dewata
+ // -- 2010-09-15rdata_x.gpf --
+ "dewata",
+ "dew_in01",
+ "dew_fild01",
+ "dew_dun01",
+ "dew_dun02",
+
+ // ???
+ // -- 2010-10-06rdata_x.gpf --
+ "que_house_s",
+
+ // Malangdo
+ // -- 2010-11-03rdata_x.gpf --
+ "malangdo",
+ "mal_in01",
+ "mal_in02",
+ "mal_dun01",
+ "1@pump",
+ "2@pump",
+ "1@cash",
+
+ // Undersea Tunnel Expansion
+ // -- 2010-11-10rdata_x.gpf --
+ "iz_dun05",
+
+ // ???
+ // -- 2010-12-01data_x.gpf --
+ "evt_mobroom",
+
+ // ???
+ "dic_dun03",
+ //"mjolnir_04_1",
+ //"evt_swar_b",
+ //"evt_swar_r",
+ //"evt_swar_s",
+ //"evt_swar_t",
+
+ // Lighthalzen Dungeon F4, Wolfchev's Laboratory
+ // -- 2011-03-16rdata_x.gpf --
+ "1@lhz",
+ "lhz_dun04",
+ "que_lhz",
+
+ // Hall Of Abyss
+ // -- 2011-06-15data_x.gpf --
+ "gld_dun01_2",
+ "gld_dun02_2",
+ "gld_dun03_2",
+ "gld_dun04_2",
+ "gld2_ald",
+ "gld2_gef",
+ "gld2_pay",
+ "gld2_prt",
+
+ // Malaya Port
+ // -- 2011-08-30data_x.gpf --
+ "malaya",
+ "ma_fild01",
+ "ma_fild02",
+ "ma_scene01",
+ "ma_in01",
+ "ma_dun01",
+ "1@ma_h",
+ "1@ma_c",
+ "1@ma_b",
+ "ma_zif01",
+ "ma_zif02",
+ "ma_zif03",
+ "ma_zif04",
+ "ma_zif05",
+ "ma_zif06",
+ "ma_zif07",
+ "ma_zif08",
+ "ma_zif09",
+ "job_ko",
+
+ // 14.2 Eclage
+ // -- 2011-11-30data_x.gpf --
+ "eclage",
+ "ecl_fild01",
+ "ecl_in01",
+ "ecl_in02",
+ "ecl_in03",
+ "ecl_in04",
+ "1@ecl",
+ "ecl_tdun01",
+ "ecl_tdun02",
+ "ecl_tdun03",
+ "ecl_tdun04",
+ "ecl_hub01",
+ "que_avan01",
+
+ // Pyramids Basement Nightmare Mode
+ "moc_prydn1",
+ "moc_prydn2",
+
+ // Izlude Novice Academy & Tutorial
+ // New Maps added 2013-02-10
+ "iz_int",
+ "iz_int01",
+ "iz_int02",
+ "iz_int03",
+ "iz_int04",
+ "iz_ac01",
+ "iz_ac02",
+ "iz_ng01",
+ "treasure_n1",
+ "treasure_n2",
+ "iz_ac01_d",
+ "iz_ac02_d",
+ "iz_ac01_c",
+ "iz_ac02_c",
+ "iz_ac01_b",
+ "iz_ac02_b",
+ "iz_ac01_a",
+ "iz_ac02_a",
+ "izlude_d",
+ "izlude_c",
+ "izlude_b",
+ "izlude_a",
+
+ "prt_fild08d",
+ "prt_fild08c",
+ "prt_fild08b",
+ "prt_fild08a",
+
+ // War of Emperium - Third Edition (TE)
+ "te_prt_gld",
+ "te_prtcas01",
+ "te_prtcas02",
+ "te_prtcas03",
+ "te_prtcas04",
+ "te_prtcas05",
+ "teg_dun01",
+ "teg_dun02",
+ "te_alde_gld",
+ "te_aldecas1",
+ "te_aldecas2",
+ "te_aldecas3",
+ "te_aldecas4",
+ "te_aldecas5",
+
+ // Glast Heim Memorial & Nightmare
+ "gl_cas02_",
+ "gl_chyard_",
+ "1@gl_k",
+ "2@gl_k",
+
+ "silk_lair",
+ "evt_bomb",
+
+ // Wave Mode Memorial Dungeon
+ "1@def01",
+ "1@def02",
+ "1@def03",
+
+ // Heroes' Trails - Part 1
+ "1@face",
+ "1@sara",
+ "1@tnm1",
+ "1@tnm2",
+ "1@tnm3",
+ "1@ge_st",
+ "1@gef",
+ "1@gef_in",
+ "1@spa",
+ "dali",
+ "dali02",
+
+ // Episode 14.3
+ "moro_vol",
+ "moro_cav",
+ "1@dth1",
+ "1@dth2",
+ "1@dth3",
+ "1@rev",
+ "1@xm_d",
+ "1@eom",
+ "1@jtb",
+
+ // Clock Tower Nightmare Mode
+ "c_tower2_",
+ "c_tower3_",
+
+ //------------------------- Clone Maps ---------------------------
+ //------------------------- Extra Maps ---------------------------
+
+ // Ragnarok World Championship 2004
+ // Requires: RWC 2004 Client
+ // or Akaru's SuperGRF 1.64 or newer
+ //"rwc01",
+ //"rwc02",
+ //"rwc03",
+
+ // Ragnarok World Championship 2009
+ // Requires: RWC 2009 Map files
+ //"2009rwc_f01",
+ //"2009rwc_01",
+ //"2009rwc_02",
+ //"2009rwc_03",
+ //"2009rwc_04",
+
+ // Ragnarok World Championship 2008?
+ // Requires: RWC 2008 Map files?
+ //"2008rwc_04",
+
+ //Christmas & Sakura Special
+ //Requires Akaru's SuperGRF 1.1 or newer
+ //"prontera_x",
+ //"alberta_x",
+ //"aldebaran_x",
+ //"geffen_x",
+ //"izlude_x",
+ //"prt_church_x",
+ //"prontera_s",
+ //"pay_arche_s",
+
+ //Fenced Lutie",
+ //Requires Akaru's SuperGRF 1.23 or newer",
+ //"xmas_old",
+
+ //Alpha Maps
+ //Requires adata.grf containing alpha maps and data
+ //"fay_vilg00",
+ //"fay_vilg01",
+ //"gef_vilg00",
+ //"gef_vilg01",
+ //"moc_dugn01",
+ //"moc_dugn02",
+ //"moc_fild01",
+ //"moc_fild02",
+ //"moc_fild03",
+ //"moc_fild04",
+ //"moc_intr00",
+ //"moc_intr01",
+ //"moc_intr02",
+ //"moc_intr04",
+ //"moc_vilg00",
+ //"moc_vilg01",
+ //"moc_vilg02",
+ //"probemap",
+ //"probemap02",
+ //"prt_cstl01",
+ //"prt_dugn00",
+ //"prt_dugn01",
+ //"prt_fild00",
+ //"prt_fild01",
+ //"prt_fild03",
+ //"prt_fild04",
+ //"prt_fild05",
+ //"prt_intr01",
+ //"prt_intr01_a",
+ //"prt_intr02",
+ //"prt_vilg00",
+ //"prt_vilg01",
+ //"prt_vilg02",
+ //"tank_test",
+ //"tank_test2",
+ //"test",
+) //map_list
diff --git a/conf/maps.conf b/conf/maps.conf
deleted file mode 100644
index 529afa9ce..000000000
--- a/conf/maps.conf
+++ /dev/null
@@ -1,1225 +0,0 @@
-//------------------------- Normal Maps ---------------------------
-map: alb_ship
-map: alb2trea
-map: alberta
-map: alberta_in
-map: alde_dun01
-map: alde_dun02
-map: alde_dun03
-map: alde_dun04
-map: aldeba_in
-map: aldebaran
-map: anthell01
-map: anthell02
-map: arena_room
-map: c_tower1
-map: c_tower2
-map: c_tower3
-map: c_tower4
-//map: force_map1
-//map: force_map2
-//map: force_map3
-map: force_1-1
-map: force_2-1
-map: force_3-1
-map: force_4-1
-map: force_5-1
-map: force_1-2
-map: force_2-2
-map: force_3-2
-map: force_1-3
-map: force_2-3
-map: force_3-3
-map: gef_dun00
-map: gef_dun01
-map: gef_dun02
-map: gef_dun03
-map: gef_fild00
-map: gef_fild01
-map: gef_fild02
-map: gef_fild03
-map: gef_fild04
-map: gef_fild05
-map: gef_fild06
-map: gef_fild07
-map: gef_fild08
-map: gef_fild09
-map: gef_fild10
-map: gef_fild11
-map: gef_fild12
-map: gef_fild13
-map: gef_fild14
-map: gef_tower
-map: geffen
-map: geffen_in
-map: gl_cas01
-map: gl_cas02
-map: gl_church
-map: gl_chyard
-map: gl_dun01
-map: gl_dun02
-map: gl_in01
-map: gl_knt01
-map: gl_knt02
-map: gl_prison
-map: gl_prison1
-map: gl_sew01
-map: gl_sew02
-map: gl_sew03
-map: gl_sew04
-map: gl_step
-map: glast_01
-//map: hunter_1-1
-//map: hunter_2-1
-//map: hunter_3-1
-map: in_hunter
-map: in_moc_16
-map: in_orcs01
-map: in_sphinx1
-map: in_sphinx2
-map: in_sphinx3
-map: in_sphinx4
-map: in_sphinx5
-map: iz_dun00
-map: iz_dun01
-map: iz_dun02
-map: iz_dun03
-map: iz_dun04
-map: izlu2dun
-map: izlude
-map: izlude_in
-map: job_thief1
-//map: knight_1-1
-//map: knight_2-1
-//map: knight_3-1
-map: mjo_dun01
-map: mjo_dun02
-map: mjo_dun03
-map: mjolnir_01
-map: mjolnir_02
-map: mjolnir_03
-map: mjolnir_04
-map: mjolnir_05
-map: mjolnir_06
-map: mjolnir_07
-map: mjolnir_08
-map: mjolnir_09
-map: mjolnir_10
-map: mjolnir_11
-map: mjolnir_12
-map: moc_castle
-map: moc_fild01
-map: moc_fild02
-map: moc_fild03
-//map: moc_fild04
-//map: moc_fild05
-//map: moc_fild06
-map: moc_fild07
-//map: moc_fild08
-//map: moc_fild09
-//map: moc_fild10
-map: moc_fild11
-map: moc_fild12
-map: moc_fild13
-//map: moc_fild14
-//map: moc_fild15
-map: moc_fild16
-map: moc_fild17
-map: moc_fild18
-map: moc_fild19
-map: moc_pryd01
-map: moc_pryd02
-map: moc_pryd03
-map: moc_pryd04
-map: moc_pryd05
-map: moc_pryd06
-map: moc_prydb1
-map: moc_ruins
-map: monk_in
-map: morocc
-map: morocc_in
-map: new_zone01
-map: new_zone02
-map: new_zone03
-map: new_zone04
-map: new_1-1
-map: new_1-2
-map: new_1-3
-map: new_1-4
-map: new_2-1
-map: new_2-2
-map: new_2-3
-map: new_2-4
-map: new_3-1
-map: new_3-2
-map: new_3-3
-map: new_3-4
-map: new_4-1
-map: new_4-2
-map: new_4-3
-map: new_4-4
-map: new_5-1
-map: new_5-2
-map: new_5-3
-map: new_5-4
-map: orcsdun01
-map: orcsdun02
-//map: ordeal_a00
-//map: ordeal_a02
-map: ordeal_1-1
-map: ordeal_1-2
-//map: ordeal_1-3
-//map: ordeal_1-4
-map: ordeal_2-1
-map: ordeal_2-2
-//map: ordeal_2-3
-//map: ordeal_2-4
-map: ordeal_3-1
-map: ordeal_3-2
-//map: ordeal_3-3
-//map: ordeal_3-4
-map: pay_arche
-map: pay_dun00
-map: pay_dun01
-map: pay_dun02
-map: pay_dun03
-map: pay_dun04
-map: pay_fild01
-map: pay_fild02
-map: pay_fild03
-map: pay_fild04
-map: pay_fild05
-map: pay_fild06
-map: pay_fild07
-map: pay_fild08
-map: pay_fild09
-map: pay_fild10
-map: pay_fild11
-//map: priest_1-1
-//map: priest_2-1
-//map: priest_3-1
-map: prontera
-map: prt_are_in
-map: prt_are01
-map: prt_castle
-map: prt_church
-map: prt_fild00
-map: prt_fild01
-map: prt_fild02
-map: prt_fild03
-map: prt_fild04
-map: prt_fild05
-map: prt_fild06
-map: prt_fild07
-map: prt_fild08
-map: prt_fild09
-map: prt_fild10
-map: prt_fild11
-map: prt_in
-map: prt_maze01
-map: prt_maze02
-map: prt_maze03
-map: prt_monk
-map: prt_sewb1
-map: prt_sewb2
-map: prt_sewb3
-map: prt_sewb4
-map: pvp_room
-map: pvp_2vs2
-map: pvp_c_room
-map: pvp_n_1-1
-map: pvp_n_1-2
-map: pvp_n_1-3
-map: pvp_n_1-4
-map: pvp_n_1-5
-map: pvp_n_2-1
-map: pvp_n_2-2
-map: pvp_n_2-3
-map: pvp_n_2-4
-map: pvp_n_2-5
-map: pvp_n_3-1
-map: pvp_n_3-2
-map: pvp_n_3-3
-map: pvp_n_3-4
-map: pvp_n_3-5
-map: pvp_n_4-1
-map: pvp_n_4-2
-map: pvp_n_4-3
-map: pvp_n_4-4
-map: pvp_n_4-5
-map: pvp_n_5-1
-map: pvp_n_5-2
-map: pvp_n_5-3
-map: pvp_n_5-4
-map: pvp_n_5-5
-map: pvp_n_6-1
-map: pvp_n_6-2
-map: pvp_n_6-3
-map: pvp_n_6-4
-map: pvp_n_6-5
-map: pvp_n_7-1
-map: pvp_n_7-2
-map: pvp_n_7-3
-map: pvp_n_7-4
-map: pvp_n_7-5
-map: pvp_n_8-1
-map: pvp_n_8-2
-map: pvp_n_8-3
-map: pvp_n_8-4
-map: pvp_n_8-5
-map: pvp_n_room
-map: pvp_y_1-1
-map: pvp_y_1-2
-map: pvp_y_1-3
-map: pvp_y_1-4
-map: pvp_y_1-5
-map: pvp_y_2-1
-map: pvp_y_2-2
-map: pvp_y_2-3
-map: pvp_y_2-4
-map: pvp_y_2-5
-map: pvp_y_3-1
-map: pvp_y_3-2
-map: pvp_y_3-3
-map: pvp_y_3-4
-map: pvp_y_3-5
-map: pvp_y_4-1
-map: pvp_y_4-2
-map: pvp_y_4-3
-map: pvp_y_4-4
-map: pvp_y_4-5
-map: pvp_y_5-1
-map: pvp_y_5-2
-map: pvp_y_5-3
-map: pvp_y_5-4
-map: pvp_y_5-5
-map: pvp_y_6-1
-map: pvp_y_6-2
-map: pvp_y_6-3
-map: pvp_y_6-4
-map: pvp_y_6-5
-map: pvp_y_7-1
-map: pvp_y_7-2
-map: pvp_y_7-3
-map: pvp_y_7-4
-map: pvp_y_7-5
-map: pvp_y_8-1
-map: pvp_y_8-2
-map: pvp_y_8-3
-map: pvp_y_8-4
-map: pvp_y_8-5
-map: pvp_y_room
-map: sword_1-1
-map: sword_2-1
-map: sword_3-1
-map: treasure01
-map: treasure02
-//map: wizard_1-1
-//map: wizard_2-1
-//map: wizard_3-1
-map: xmas
-map: xmas_dun01
-map: xmas_dun02
-map: xmas_fild01
-map: xmas_in
-
-//---Ep3.0 Comodo ---
-
-map: beach_dun
-map: beach_dun2
-map: beach_dun3
-map: cmd_fild01
-map: cmd_fild02
-map: cmd_fild03
-map: cmd_fild04
-map: cmd_fild05
-map: cmd_fild06
-map: cmd_fild07
-map: cmd_fild08
-map: cmd_fild09
-map: cmd_in01
-map: cmd_in02
-map: comodo
-
-//---EP3.1 Quiz Revolution ---
-
-map: quiz_00
-map: quiz_01
-map: g_room1-1
-map: g_room1-2
-map: g_room1-3
-map: g_room2
-
-//--- Ep4.0 Turtle Island ---
-
-map: tur_dun01
-map: tur_dun02
-map: tur_dun03
-map: tur_dun04
-map: tur_dun05
-map: tur_dun06
-
-//--- Ep4.1 The War of Emperium ---
-
-map: alde_gld
-map: aldeg_cas01
-map: aldeg_cas02
-map: aldeg_cas03
-map: aldeg_cas04
-map: aldeg_cas05
-map: gefg_cas01
-map: gefg_cas02
-map: gefg_cas03
-map: gefg_cas04
-map: gefg_cas05
-map: gld_dun01
-map: gld_dun02
-map: gld_dun03
-map: gld_dun04
-map: guild_room
-map: guild_vs1
-map: guild_vs2
-map: guild_vs3
-map: guild_vs4
-map: guild_vs5
-map: guild_vs1-1
-map: guild_vs1-2
-map: guild_vs1-3
-map: guild_vs1-4
-map: guild_vs2-1
-map: guild_vs2-2
-//map: job_hunter
-map: job_hunte
-//map: job_knight
-map: job_knt
-//map: job_priest
-map: job_prist
-map: job_sword1
-//map: job_wizard
-map: job_wiz
-map: pay_gld
-map: payg_cas01
-map: payg_cas02
-map: payg_cas03
-map: payg_cas04
-map: payg_cas05
-map: prt_gld
-map: prtg_cas01
-map: prtg_cas02
-map: prtg_cas03
-map: prtg_cas04
-map: prtg_cas05
-
-
-//--- Ep5.0 Yuno ---
-
-map: alde_alche
-map: in_rogue
-map: job_cru
-map: job_duncer
-map: job_monk
-map: job_sage
-map: mag_dun01
-map: mag_dun02
-map: monk_test
-map: quiz_test
-map: yuno
-map: yuno_fild01
-map: yuno_fild02
-map: yuno_fild03
-map: yuno_fild04
-map: yuno_in01
-map: yuno_in02
-map: yuno_in03
-map: yuno_in04
-map: yuno_in05
-
-//--- Ep6.0 - Amatsu ---
-// Requires: kRO 08-10-03 or newer
-// or kRO Sakray 09-09-03 or newer
-
-map: ama_dun01
-map: ama_dun02
-map: ama_dun03
-map: ama_fild01
-map: ama_in01
-map: ama_in02
-map: ama_test
-map: amatsu
-
-//--- Ep6.1 - Gon Ryun ---
-
-map: gon_dun01
-map: gon_dun02
-map: gon_dun03
-map: gon_fild01
-map: gon_in
-map: gon_test
-map: gonryun
-map: sec_in01
-map: sec_in02
-map: sec_pri
-
-//--- Ep6.2 - Umbala ---
-// Requires: kRO 01-27-04 or newer
-// or kRO Sakray 12-02-03 or newer
-// or Akaru's SuperGRF 1.22 or newer
-map: umbala
-map: um_dun01
-map: um_dun02
-map: um_fild01
-map: um_fild02
-map: um_fild03
-map: um_fild04
-map: um_in
-
-//--- Ep6.3 - Niflheim ---
-// Requires: kRO 02-23-04 or newer
-// or kRO Sakray 01-09-04 or newer
-// or Akaru's SuperGRF 1.32 or newer
-map: niflheim
-map: nif_fild01
-map: nif_fild02
-map: nif_in
-map: yggdrasil01
-
-//--- Ep6.4 - Valkyrie ---
-// Requires: kRO ??-??-04 or newer
-// or kRO Sakray 02-03-04 or newer
-// or Akaru's SuperGRF 1.34 or newer
-map: valkyrie
-map: himinn
-
-//--- Ep6.5 - Castle of Dragon (LouYang) ---
-// Requires kRO Sakray 03-30 or newer
-//(Akaru's SuperGRF required version: 1.52)
-map: lou_in01
-map: lou_in02
-map: lou_dun03
-map: lou_dun02
-map: lou_dun01
-map: lou_fild01
-map: louyang
-
-//--- Ep6.6 - Novice Guild Siege ---
-//Requires kRO Sakray 04-07 or newer
-//(Akaru's SuperGRF required version: 1.53)
-//map: siege_test
-map: n_castle
-map: nguild_gef
-map: nguild_prt
-map: nguild_pay
-map: nguild_alde
-
-//--- Ep6.7 - Jawaii ---
-//Requires kRO Sakray 06-22 or newer
-//(Akaru's SuperGRF required version: 1.63)
-map: jawaii
-map: jawaii_in
-
-// --- Ep6.8 - Geffenia ---
-// Requires kRO Sakray 07-13 or newer
-// (Akaru's SuperGRF required version: 1.64)
-map: gefenia01
-map: gefenia02
-map: gefenia03
-map: gefenia04
-
-// --- Ep6.9 - New Payon ---
-// Requires kRO Sakray 09-03
-// -- dunno --
-map: payon
-map: payon_in01
-map: payon_in02
-map: payon_in03
-//same names as old maps except that payon_in03 got added
-
-// --- Ep? - Ayothaya ---
-// Requires kRO Sakray 09-21
-// -- 2004-10-19sdata_k.gpf --
-map: ayothaya
-map: ayo_in01
-map: ayo_in02
-map: ayo_fild01
-map: ayo_fild02
-map: ayo_dun01
-map: ayo_dun02
-
-// --- God item quests maps ---
-// -- 2004-10-12sdata_k3.gpf --
-map: que_god01
-map: que_god02
-
-// --- Ep? - Schwarzwald Republic ---
-// -- 2004-12-28sdata_k.gpf --
-map: yuno_fild05
-map: yuno_fild07
-map: yuno_fild08
-map: yuno_fild09
-map: yuno_fild11
-map: yuno_fild12
-
-// --- Turbo Track Arena ---
-// -- 2005-03-08sdata_k.gpf --
-map: alde_tt02
-map: turbo_n_1
-map: turbo_n_4
-map: turbo_n_8
-map: turbo_n_16
-map: turbo_e_4
-map: turbo_e_8
-map: turbo_e_16
-map: turbo_room
-
-// --- Einbroch/Einbech ---
-// -- 2005-03-15sdata_k.gpf --
-map: airplane
-map: airport
-map: einbech
-map: einbroch
-map: ein_dun01
-map: ein_dun02
-map: ein_fild06
-map: ein_fild07
-map: ein_fild08
-map: ein_fild09
-map: ein_fild10
-map: ein_in01
-map: que_sign01
-map: que_sign02
-
-// --- Einbroch and Lightalzen ---
-// -- 2005-05-10sdata_k.gpf --
-map: ein_fild03
-map: ein_fild04
-map: lhz_fild02
-map: lhz_fild03
-
-// --- Lighthalzen and Juperos Dungeon ---
-// -- 2005-06-14sdata_k.gpf --
-map: yuno_pre
-map: lhz_fild01
-map: lighthalzen
-map: lhz_in01
-map: lhz_in02
-map: lhz_in03
-map: lhz_que01
-map: lhz_dun01
-map: lhz_dun02
-map: lhz_dun03
-map: lhz_cube
-map: juperos_01
-map: juperos_02
-map: jupe_area1
-map: jupe_area2
-map: jupe_core
-map: jupe_ele
-map: jupe_ele_r
-map: jupe_gate
-
-// --- Lighthalzen & Juno Airport ---
-// -- resnametable clones of airport and airplane --
-map: y_airport
-map: lhz_airport
-map: airplane_01
-
-// --- Juperos Dungeon ---
-// -- 2005-06-28sdata_k.gpf --
-map: jupe_cave
-
-// --- Quiz Revolution ---
-// -- 2005-08-02sdata_k.gpf --
-map: quiz_02
-
-// --- Hugel Field ---
-// -- 2005-08-23sdata_k.gpf --
-map: hu_fild07
-map: hu_fild05
-map: hu_fild04
-map: hu_fild01
-map: yuno_fild06
-
-// --- Star Knight And Soul Linker Job Change Maps ---
-// -- 2005-08-23sdata_k.gpf --
-map: job_soul
-map: job_star
-
-// --- Abyss Lake, Thanatos Tower --
-// -- 2005-09-13sdata_k.gpf - 2005-09-13sdata_k6.gpf --
-map: que_job01
-map: que_job02
-map: que_job03
-map: abyss_01
-map: abyss_02
-map: abyss_03
-map: thana_step
-map: thana_boss
-map: tha_scene01
-map: tha_t01
-map: tha_t02
-map: tha_t03
-map: tha_t04
-map: tha_t07
-map: tha_t05
-map: tha_t06
-map: tha_t08
-
-// --- Thanatos Tower ---
-// -- 2005-09-21sdata_k.gpf --
-map: tha_t09
-map: tha_t10
-map: tha_t11
-map: tha_t12
-
-// --- Auction Market ---
-// -- 2005-11-29sdata_k.gpf --
-map: auction_01
-map: auction_02
-
-// ???
-// -- 2005-12-06gdata_k.gpf
-map: alde_tt03
-
-// --- Garden City Hugel / Kiehl ---
-// -- 2005-12-20sdata_k.gpf --
-map: hugel
-map: hu_in01
-map: que_bingo
-map: que_hugel
-map: p_track01
-map: p_track02
-map: odin_tem01
-map: odin_tem02
-map: odin_tem03
-map: hu_fild02
-map: hu_fild03
-map: hu_fild06
-map: ein_fild01
-map: ein_fild02
-map: ein_fild05
-map: yuno_fild10
-map: kh_kiehl02
-map: kh_kiehl01
-map: kh_dun02
-map: kh_dun01
-map: kh_mansion
-map: kh_rossi
-map: kh_school
-map: kh_vila
-
-// --- Poring Arena (?) & Gunslinger/Ninja Job Map ---
-// -- 2006-03-28sdata_k.gpf --
-//map: poring_c01
-//map: poring_c02
-map: que_ng
-
-// --- Arunafeltz & Ice Dungeon ---
-// -- 2006-05-30sdata_k.gpf --
-map: rachel
-map: ra_in01
-map: ra_fild01
-map: ra_fild02
-map: ra_fild03
-map: ra_fild04
-map: ra_fild05
-map: ra_fild06
-map: ra_fild07
-map: ra_fild08
-map: ra_fild09
-map: ra_fild10
-map: ra_fild11
-map: ra_fild12
-map: ra_fild13
-map: ra_san01
-map: ra_san02
-map: ra_san03
-map: ra_san04
-map: ra_san05
-map: ra_temin
-map: ra_temple
-map: ra_temsky
-map: que_rachel
-map: que_san04
-map: ice_dun01
-map: ice_dun02
-map: ice_dun03
-map: ice_dun04
-
-// --- Veins & Thor Dungeon ---
-// -- 2006-12-19sdata_k.gpf --
-map: que_thor
-map: thor_camp
-map: thor_v01
-map: thor_v02
-map: thor_v03
-map: veins
-map: ve_in
-map: ve_in02
-map: ve_fild01
-map: ve_fild02
-map: ve_fild03
-map: ve_fild04
-map: ve_fild05
-map: ve_fild06
-map: ve_fild07
-
-// --- Nameless Island & Abbey Dungeon ---
-// -- 2007-04-03sdata_k.gpf
-map: nameless_i
-map: nameless_n
-map: nameless_in
-map: abbey01
-map: abbey02
-map: abbey03
-map: poring_w01
-map: poring_w02
-
-// --- ??? ---
-// -- 2007-??-??
-map: 06guild_r
-map: 06guild_01
-map: 06guild_02
-map: 06guild_03
-map: 06guild_04
-map: 06guild_05
-map: 06guild_06
-map: 06guild_07
-map: 06guild_08
-map: z_agit
-map: que_temsky
-map: itemmall
-map: bossnia_01
-map: bossnia_02
-map: bossnia_03
-map: bossnia_04
-
-// --- Moscovia ---
-// -- 2007-06-???
-map: moscovia
-map: mosk_in
-map: mosk_ship
-map: mosk_fild01
-map: mosk_fild02
-map: mosk_dun01
-map: mosk_dun02
-map: mosk_dun03
-map: mosk_que
-
-// --- Episode 12: Satan Morroc & Schwaltzvalt Seige ---
-// -- 2007-09-19sdata_k.gpf
-map: schg_cas01
-map: schg_cas02
-map: schg_cas03
-map: schg_cas04
-map: schg_cas05
-map: sch_gld
-map: cave
-map: moc_fild20
-map: moc_fild21
-map: moc_fild22
-map: que_ba
-map: que_moc_16
-map: que_moon
-
-// Arunafeltz Seige
-// -- 2007-10-24sdata_k.gpf
-map: arug_cas01
-map: arug_cas02
-map: arug_cas03
-map: arug_cas04
-map: arug_cas05
-map: aru_gld
-
-// PVP Battle Fields: Tierra Valley, and Frebeus
-// -- 2007-11-14sdata_k.gpf
-map: bat_room
-map: bat_a01
-map: bat_a02
-map: bat_b01
-map: bat_b02
-map: que_qsch01
-map: que_qsch02
-map: que_qsch03
-map: que_qsch04
-map: que_qsch05
-map: que_qaru01
-map: que_qaru02
-map: que_qaru03
-map: que_qaru04
-map: que_qaru05
-
-// Memorial Dungeon
-// -- 2007-11-28sdata_k.gpf
-map: 1@cata
-map: 2@cata
-map: e_tower
-map: 1@tower
-map: 2@tower
-map: 3@tower
-map: 4@tower
-map: 5@tower
-map: 6@tower
-
-// 13.1 Another World
-// -- 2008-05-28sdata_k.gpf
-map: mid_camp
-map: mid_campin
-map: man_fild01
-map: man_fild03
-map: spl_fild02
-map: spl_fild03
-map: moc_fild22b
-map: que_dan01
-map: que_dan02
-map: schg_que01
-map: schg_dun01
-map: arug_que01
-map: arug_dun01
-map: 1@orcs
-map: 2@orcs
-
-// Additional Battleground.
-// -- 2008-??-???
-map: bat_c01
-map: bat_c02
-map: bat_c03
-
-// 13.2 Another World
-// -- 2008-11-26
-map: 1@nyd
-map: 2@nyd
-map: nyd_dun01
-map: nyd_dun02
-map: manuk
-map: man_fild02
-map: man_in01
-map: splendide
-map: spl_fild01
-map: spl_in01
-map: spl_in02
-
-// 3rd Job Maps
-// -- 2009-01-29rdata_k2.gpf
-map: job3_arch01
-map: job3_arch02
-map: job3_arch03
-map: job3_guil01
-map: job3_guil02
-map: job3_guil03
-map: job3_rang01
-map: job3_rang02
-map: job3_rune01
-map: job3_rune02
-map: job3_rune03
-map: job3_war01
-map: job3_war02
-map: jupe_core2
-
-// ???
-// -- 2009-05-27rdata_k.gpf
-map: moc_para01
-
-// Brasilis Maps
-// -- 2009-08-05rdata_k.gpf
-map: brasilis
-map: bra_in01
-map: bra_fild01
-map: bra_dun01
-map: bra_dun02
-
-// ???
-// -- 2009-09-30rdata_k.gpf
-map: s_atelier
-
-// 13.3 El Discastes
-// -- 2009-12-09rdata_k.gpf
-map: dicastes01
-map: dicastes02
-map: dic_in01
-map: dic_fild01
-map: dic_fild02
-map: dic_dun01
-map: dic_dun02
-map: job3_gen01
-map: job3_sha01
-
-// Localized Event Maps
-//map: evt_zombie
-//map: evt_coke
-
-// Unknown Maps
-//ac_sl_area
-//ac_cl_hall
-//ac_cl_room
-//jp_s_dun11
-
-// 14.1 Bifrost
-// -- 2010-06-09rdata_x.gpf
-map: mora
-map: bif_fild01
-map: bif_fild02
-map: 1@mist
-
-// Dewata Maps
-// -- 2010-09-15rdata_x.gpf
-map: dewata
-map: dew_in01
-map: dew_fild01
-map: dew_dun01
-map: dew_dun02
-
-// ???
-// -- 2010-10-06rdata_x.gpf
-map: que_house_s
-
-// Malangdo Maps
-// -- 2010-11-03rdata_x.gpf
-map: malangdo
-map: mal_in01
-map: mal_in02
-map: mal_dun01
-map: 1@pump
-map: 2@pump
-map: 1@cash
-
-// Undersea Tunnel Expansion
-// -- 2010-11-10rdata_x.gpf
-map: iz_dun05
-
-// ???
-// -- 2010-12-01data_x.gpf
-map: evt_mobroom
-
-// ???
-map: dic_dun03
-//map: mjolnir_04_1
-//map: evt_swar_b
-//map: evt_swar_r
-//map: evt_swar_s
-//map: evt_swar_t
-
-// Lighthalzen Dungeon F4, Wolfchev's Laboratory
-// -- 2011-03-16rdata_x.gpf
-map: 1@lhz
-map: lhz_dun04
-map: que_lhz
-
-// Hall Of Abyss
-// -- 2011-06-15data_x.gpf
-map: gld_dun01_2
-map: gld_dun02_2
-map: gld_dun03_2
-map: gld_dun04_2
-map: gld2_ald
-map: gld2_gef
-map: gld2_pay
-map: gld2_prt
-
-// Malaya Port
-// -- 2011-08-30data_x.gpf
-map: malaya
-map: ma_fild01
-map: ma_fild02
-map: ma_scene01
-map: ma_in01
-map: ma_dun01
-map: 1@ma_h
-map: 1@ma_c
-map: 1@ma_b
-map: ma_zif01
-map: ma_zif02
-map: ma_zif03
-map: ma_zif04
-map: ma_zif05
-map: ma_zif06
-map: ma_zif07
-map: ma_zif08
-map: ma_zif09
-map: job_ko
-
-// 14.2 Eclage
-// -- 2011-11-30data_x.gpf
-map: eclage
-map: ecl_fild01
-map: ecl_in01
-map: ecl_in02
-map: ecl_in03
-map: ecl_in04
-map: 1@ecl
-map: ecl_tdun01
-map: ecl_tdun02
-map: ecl_tdun03
-map: ecl_tdun04
-map: ecl_hub01
-map: que_avan01
-
-// Pyramids Basement Nightmare Mode
-map: moc_prydn1
-map: moc_prydn2
-
-// ===============================
-// New Maps added 2013-02-10 (Thanks Streusel!)
-// Credits to Baneado for reporting some
-// ===============================
-// Izlude Novice Academy & Tutorial
-map: iz_int
-map: iz_int01
-map: iz_int02
-map: iz_int03
-map: iz_int04
-map: iz_ac01
-map: iz_ac02
-map: iz_ng01
-map: treasure_n1
-map: treasure_n2
-map: iz_ac01_d
-map: iz_ac02_d
-map: iz_ac01_c
-map: iz_ac02_c
-map: iz_ac01_b
-map: iz_ac02_b
-map: iz_ac01_a
-map: iz_ac02_a
-map: izlude_d
-map: izlude_c
-map: izlude_b
-map: izlude_a
-
-map: prt_fild08d
-map: prt_fild08c
-map: prt_fild08b
-map: prt_fild08a
-
-// War of Emperium - Third Edition (TE)
-map: te_prt_gld
-map: te_prtcas01
-map: te_prtcas02
-map: te_prtcas03
-map: te_prtcas04
-map: te_prtcas05
-map: teg_dun01
-map: teg_dun02
-map: te_alde_gld
-map: te_aldecas1
-map: te_aldecas2
-map: te_aldecas3
-map: te_aldecas4
-map: te_aldecas5
-
-// Glast Heim Memorial & Nightmare
-map: gl_cas02_
-map: gl_chyard_
-map: 1@gl_k
-map: 2@gl_k
-
-map: silk_lair
-map: evt_bomb
-
-// Wave Mode Memorial Dungeon
-map: 1@def01
-map: 1@def02
-map: 1@def03
-
-// Heroes' Trails - Part 1
-map: 1@face
-map: 1@sara
-map: 1@tnm1
-map: 1@tnm2
-map: 1@tnm3
-map: 1@ge_st
-map: 1@gef
-map: 1@gef_in
-map: 1@spa
-map: dali
-map: dali02
-
-// Episode 14.3
-map: moro_vol
-map: moro_cav
-map: 1@dth1
-map: 1@dth2
-map: 1@dth3
-map: 1@rev
-map: 1@xm_d
-map: 1@eom
-map: 1@jtb
-
-// Clock Tower Nightmare Mode
-map: c_tower2_
-map: c_tower3_
-
-//------------------------- Clone Maps ---------------------------
-//------------------------- Extra Maps ---------------------------
-
-// Ragnarok World Championship 2004
-// Requires: RWC 2004 Client
-// or Akaru's SuperGRF 1.64 or newer
-//map: rwc01
-//map: rwc02
-//map: rwc03
-
-// Ragnarok World Championship 2009
-// Requires: RWC 2009 Map files
-//map: 2009rwc_f01
-//map: 2009rwc_01
-//map: 2009rwc_02
-//map: 2009rwc_03
-//map: 2009rwc_04
-
-// Ragnarok World Championship 2008?
-// Requires: RWC 2008 Map files?
-//map: 2008rwc_04
-
-//Christmas & Sakura Special
-//Requires Akaru's SuperGRF 1.1 or newer
-//map: prontera_x
-//map: alberta_x
-//map: aldebaran_x
-//map: geffen_x
-//map: izlude_x
-//map: prt_church_x
-//map: prontera_s
-//map: pay_arche_s
-
-//Fenced Lutie
-//Requires Akaru's SuperGRF 1.23 or newer
-//map: xmas_old
-
-//Alpha Maps
-//Requires adata.grf containing alpha maps and data
-//map: fay_vilg00
-//map: fay_vilg01
-//map: gef_vilg00
-//map: gef_vilg01
-//map: moc_dugn01
-//map: moc_dugn02
-//map: moc_fild01
-//map: moc_fild02
-//map: moc_fild03
-//map: moc_fild04
-//map: moc_intr00
-//map: moc_intr01
-//map: moc_intr02
-//map: moc_intr04
-//map: moc_vilg00
-//map: moc_vilg01
-//map: moc_vilg02
-//map: probemap
-//map: probemap02
-//map: prt_cstl01
-//map: prt_dugn00
-//map: prt_dugn01
-//map: prt_fild00
-//map: prt_fild01
-//map: prt_fild03
-//map: prt_fild04
-//map: prt_fild05
-//map: prt_intr01
-//map: prt_intr01_a
-//map: prt_intr02
-//map: prt_vilg00
-//map: prt_vilg01
-//map: prt_vilg02
-//map: tank_test
-//map: tank_test2
-//map: test
diff --git a/src/map/map.c b/src/map/map.c
index 56af8113b..469747eef 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -79,6 +79,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/stat.h>
#ifndef _WIN32
#include <unistd.h>
#endif
@@ -3798,143 +3799,333 @@ int map_readallmaps (void) {
return 0;
}
-/*==========================================
- * Read map server configuration files (conf/map_server.conf...)
- *------------------------------------------*/
-int map_config_read(char *cfgName) {
- char line[1024], w1[1024], w2[1024];
- FILE *fp;
+/**
+ * Reads 'map_configuration/console' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_console(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
- nullpo_retr(1, cfgName);
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
- fp = fopen(cfgName,"r");
- if( fp == NULL ) {
- ShowError("Map configuration file not found at: %s\n", cfgName);
- return 1;
+ if ((setting = libconfig->lookup(config, "map_configuration/console")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration/console was not found in %s!\n", filename);
+ return false;
}
- while (fgets(line, sizeof(line), fp)) {
- char* ptr;
+ libconfig->setting_lookup_bool_real(setting, "stdout_with_ansisequence", &showmsg->stdout_with_ansisequence);
+ if (libconfig->setting_lookup_int(setting, "console_silent", &showmsg->silent) == CONFIG_TRUE) {
+ if (showmsg->silent) // only bother if its actually enabled
+ ShowInfo("Console Silent Setting: %d\n", showmsg->silent);
+ }
+ libconfig->setting_lookup_mutable_string(setting, "timestamp_format", showmsg->timestamp_format, sizeof(showmsg->timestamp_format));
+ libconfig->setting_lookup_int(setting, "console_msg_log", &showmsg->console_log);
- if (line[0] == '/' && line[1] == '/')
- continue;
- if ((ptr = strstr(line, "//")) != NULL)
- *ptr = '\n'; //Strip comments
- if (sscanf(line, "%1023[^:]: %1023[^\t\r\n]", w1, w2) < 2)
- continue;
+ return true;
+}
- //Strip trailing spaces
- ptr = w2 + strlen(w2);
- while (--ptr >= w2 && *ptr == ' ');
- ptr++;
- *ptr = '\0';
+/**
+ * Reads 'map_configuration/sql_connection' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_connection(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
- if(strcmpi(w1,"timestamp_format")==0)
- safestrncpy(showmsg->timestamp_format, w2, 20);
- else if(strcmpi(w1,"stdout_with_ansisequence")==0)
- showmsg->stdout_with_ansisequence = config_switch(w2) ? true : false;
- else if(strcmpi(w1,"console_silent")==0) {
- showmsg->silent = atoi(w2);
- if (showmsg->silent) // only bother if its actually enabled
- ShowInfo("Console Silent Setting: %d\n", atoi(w2));
- } else if (strcmpi(w1, "userid")==0)
- chrif->setuserid(w2);
- else if (strcmpi(w1, "passwd") == 0)
- chrif->setpasswd(w2);
- else if (strcmpi(w1, "char_ip") == 0)
- map->char_ip_set = chrif->setip(w2);
- else if (strcmpi(w1, "char_port") == 0)
- chrif->setport(atoi(w2));
- else if (strcmpi(w1, "map_ip") == 0)
- map->ip_set = clif->setip(w2);
- else if (strcmpi(w1, "bind_ip") == 0)
- clif->setbindip(w2);
- else if (strcmpi(w1, "map_port") == 0) {
- clif->setport(atoi(w2));
- map->port = (atoi(w2));
- } else if (strcmpi(w1, "map") == 0)
- map->count++;
- else if (strcmpi(w1, "delmap") == 0)
- map->count--;
- else if (strcmpi(w1, "npc") == 0)
- npc->addsrcfile(w2);
- else if (strcmpi(w1, "delnpc") == 0)
- npc->delsrcfile(w2);
- else if (strcmpi(w1, "autosave_time") == 0) {
- map->autosave_interval = atoi(w2);
- if (map->autosave_interval < 1) //Revert to default saving.
- map->autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
- else
- map->autosave_interval *= 1000; //Pass from sec to ms
- } else if (strcmpi(w1, "minsave_time") == 0) {
- map->minsave_interval= atoi(w2);
- if (map->minsave_interval < 1)
- map->minsave_interval = 1;
- } else if (strcmpi(w1, "save_settings") == 0)
- map->save_settings = atoi(w2);
- else if (strcmpi(w1, "help_txt") == 0)
- strcpy(map->help_txt, w2);
- else if (strcmpi(w1, "help2_txt") == 0)
- strcpy(map->help2_txt, w2);
- else if (strcmpi(w1, "charhelp_txt") == 0)
- strcpy(map->charhelp_txt, w2);
- else if(strcmpi(w1,"db_path") == 0)
- safestrncpy(map->db_path,w2,255);
- else if (strcmpi(w1, "enable_spy") == 0)
- map->enable_spy = config_switch(w2);
- else if (strcmpi(w1, "use_grf") == 0)
- map->enable_grf = config_switch(w2);
- else if (strcmpi(w1, "console_msg_log") == 0)
- showmsg->console_log = atoi(w2);//[Ind]
- else if (strcmpi(w1, "default_language") == 0)
- safestrncpy(map->default_lang_str, w2, sizeof(map->default_lang_str));
- else if (strcmpi(w1, "import") == 0)
- map->config_read(w2);
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "map_configuration/sql_connection")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration/sql_connection was not found in %s!\n", filename);
+ ShowWarning("map_config_read_connection: Defaulting sql_connection...\n");
+ return false;
+ }
+
+ libconfig->setting_lookup_int(setting, "db_port", &map->server_port);
+ libconfig->setting_lookup_mutable_string(setting, "db_hostname", map->server_ip, sizeof(map->server_ip));
+ libconfig->setting_lookup_mutable_string(setting, "db_username", map->server_id, sizeof(map->server_id));
+ libconfig->setting_lookup_mutable_string(setting, "db_password", map->server_pw, sizeof(map->server_pw));
+ libconfig->setting_lookup_mutable_string(setting, "db_database", map->server_db, sizeof(map->server_db));
+ libconfig->setting_lookup_mutable_string(setting, "default_codepage", map->default_codepage, sizeof(map->default_codepage));
+ return true;
+}
+
+/**
+ * Reads 'map_configuration/inter' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_inter(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
+ const char *str = NULL;
+ char temp[24];
+ uint16 port;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "map_configuration/inter")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration/inter was not found in %s!\n", filename);
+ return false;
+ }
+
+ // Login information
+ if (libconfig->setting_lookup_mutable_string(setting, "userid", temp, sizeof(temp)) == CONFIG_TRUE)
+ chrif->setuserid(temp);
+ if (libconfig->setting_lookup_mutable_string(setting, "passwd", temp, sizeof(temp)) == CONFIG_TRUE)
+ chrif->setpasswd(temp);
+
+ // Char and map-server information
+ if (libconfig->setting_lookup_string(setting, "char_ip", &str) == CONFIG_TRUE)
+ map->char_ip_set = chrif->setip(str);
+ if (libconfig->setting_lookup_uint16(setting, "char_port", &port) == CONFIG_TRUE)
+ chrif->setport(port);
+
+ if (libconfig->setting_lookup_string(setting, "map_ip", &str) == CONFIG_TRUE)
+ map->ip_set = clif->setip(str);
+ if (libconfig->setting_lookup_uint16(setting, "map_port", &port) == CONFIG_TRUE) {
+ clif->setport(port);
+ map->port = port;
+ }
+ if (libconfig->setting_lookup_string(setting, "bind_ip", &str) == CONFIG_TRUE)
+ clif->setbindip(str);
+
+ return true;
+}
+
+/**
+ * Reads 'map_configuration/database' and initializes required variables
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_database(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "map_configuration/database")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration/database was not found in %s!\n", filename);
+ return false;
+ }
+ libconfig->setting_lookup_mutable_string(setting, "db_path", map->db_path, sizeof(map->db_path));
+ libconfig->setting_lookup_int(setting, "save_settings", &map->save_settings);
+
+ if (libconfig->setting_lookup_int(setting, "autosave_time", &map->autosave_interval) == CONFIG_TRUE) {
+ if (map->autosave_interval < 1) // Revert to default saving
+ map->autosave_interval = DEFAULT_AUTOSAVE_INTERVAL;
else
- ShowWarning("Unknown setting '%s' in file %s\n", w1, cfgName);
+ map->autosave_interval *= 1000; // Pass from s to ms
+ }
+ if (libconfig->setting_lookup_int(setting, "minsave_time", &map->minsave_interval) == CONFIG_TRUE) {
+ if (map->minsave_interval < 1)
+ map->minsave_interval = 1;
}
- fclose(fp);
- return 0;
+ return true;
}
-int map_config_read_sub(char *cfgName) {
- char line[1024], w1[1024], w2[1024];
- FILE *fp;
- nullpo_retr(1, cfgName);
- fp = fopen(cfgName,"r");
- if (fp == NULL) {
- ShowError("Map configuration file not found at: %s\n", cfgName);
- return 1;
+/**
+ * Reads 'map_configuration/map_list' and initializes required variables
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_map_list(const char *filename, struct config_t *config, bool imported)
+{
+ // FIXME: There's no need to run this separately anymore (it can be done in one step when loading the maps)
+ struct config_setting_t *setting = NULL;
+ int count;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "map_configuration/map_list")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration/map_list was not found in %s!\n", filename);
+ return false;
}
- while (fgets(line, sizeof(line), fp)) {
- char* ptr;
+ count = libconfig->setting_length(setting);
+ if (count == 0) {
+ ShowWarning("map_config_read: no maps found in %s!\n", filename);
+ return false;
+ }
+ map->count += count;
- if (line[0] == '/' && line[1] == '/')
+ // Find how many maps should be removed
+ if ((setting = libconfig->lookup(config, "map_configuration/map_removed")) != NULL) {
+ if ((count = libconfig->setting_length(setting)) > 0)
+ map->count -= count;
+ }
+
+ return true;
+}
+
+/**
+ * Reads 'map_configuration/map_list'/'map_configuration/map_removed' and adds
+ * or removes maps from map-server.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read_sub(char *filename)
+{
+ // FIXME: This should be called by map->config_read, rather than re-opening the file!
+ struct config_t config;
+ struct config_setting_t *setting = NULL;
+ int i, count = 0;
+ struct DBMap *deleted_maps;
+
+ nullpo_retr(false, filename);
+
+ if (!libconfig->load_file(&config, filename))
+ return false;
+
+ deleted_maps = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_KEY, MAP_NAME_LENGTH);
+
+ // Remove maps
+ if ((setting = libconfig->lookup(&config, "map_configuration/map_removed")) != NULL) {
+ count = libconfig->setting_length(setting);
+ for (i = 0; i < count; i++) {
+ const char *mapname;
+
+ if ((mapname = libconfig->setting_get_string_elem(setting, i)) == NULL || mapname[0] == '\0')
+ continue;
+
+ strdb_put(deleted_maps, mapname, NULL);
+ // map->delmap is not used because the map is removed from the list before it's added [Panikon]
+ // map->delmap(mapname);
+ }
+ }
+
+ if ((setting = libconfig->lookup(&config, "map_configuration/map_list")) == NULL) {
+ ShowError("map_config_read_sub: map_configuration/map_list was not found in %s!\n", filename);
+ db_destroy(deleted_maps);
+ libconfig->destroy(&config);
+ return false;
+ }
+
+ // Add maps to map->list
+ count = libconfig->setting_length(setting);
+ if (count <= 0) {
+ ShowWarning("map_config_read_sub: no maps found in %s!\n", filename);
+ db_destroy(deleted_maps);
+ libconfig->destroy(&config);
+ return false;
+ }
+ for (i = 0; i < count; i++) {
+ const char *mapname;
+
+ if ((mapname = libconfig->setting_get_string_elem(setting, i)) == NULL || mapname[0] == '\0')
continue;
- if ((ptr = strstr(line, "//")) != NULL)
- *ptr = '\n'; //Strip comments
- if (sscanf(line, "%1023[^:]: %1023[^\t\r\n]", w1, w2) < 2)
+
+ if (strdb_exists(deleted_maps, mapname))
continue;
- //Strip trailing spaces
- ptr = w2 + strlen(w2);
- while (--ptr >= w2 && *ptr == ' ');
- ptr++;
- *ptr = '\0';
+ map->addmap(mapname);
+ }
- if (strcmpi(w1, "map") == 0)
- map->addmap(w2);
- else if (strcmpi(w1, "delmap") == 0)
- map->delmap(w2);
- else if (strcmpi(w1, "import") == 0)
- map->config_read_sub(w2);
+ db_destroy(deleted_maps);
+ libconfig->destroy(&config);
+ return true;
+}
+
+/**
+ * Reads map-server configuration files (map-server.conf) and initialises
+ * required variables.
+ *
+ * @param filename Path to configuration file.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool map_config_read(const char *filename, bool imported)
+{
+ struct config_t config;
+ struct config_setting_t *setting = NULL;
+ const char *import = NULL;
+ bool retval = true;
+
+ nullpo_retr(false, filename);
+
+ if (!libconfig->load_file(&config, filename))
+ return false;
+
+ if ((setting = libconfig->lookup(&config, "map_configuration")) == NULL) {
+ libconfig->destroy(&config);
+ if (imported)
+ return true;
+ ShowError("map_config_read: map_configuration was not found in %s!\n", filename);
+ return false;
}
- fclose(fp);
- return 0;
+ libconfig->setting_lookup_mutable_string(setting, "help_txt", map->help_txt, sizeof(map->help_txt));
+ libconfig->setting_lookup_mutable_string(setting, "charhelp_txt", map->charhelp_txt, sizeof(map->charhelp_txt));
+ libconfig->setting_lookup_bool(setting, "enable_spy", &map->enable_spy);
+ libconfig->setting_lookup_bool(setting, "use_grf", &map->enable_grf);
+ libconfig->setting_lookup_mutable_string(setting, "default_language", map->default_lang_str, sizeof(map->default_lang_str));
+
+ if (!map_config_read_console(filename, &config, imported))
+ retval = false;
+ if (!map_config_read_connection(filename, &config, imported))
+ retval = false;
+ if (!map_config_read_inter(filename, &config, imported))
+ retval = false;
+ if (!map_config_read_database(filename, &config, imported))
+ retval = false;
+ if (!map_config_read_map_list(filename, &config, imported))
+ retval = false;
+
+ // import should overwrite any previous configuration, so it should be called last
+ if (libconfig->lookup_string(&config, "import", &import) == CONFIG_TRUE) {
+ if (strcmp(import, filename) == 0 || strcmp(import, map->MAP_CONF_NAME) == 0) {
+ ShowWarning("map_config_read: Loop detected! Skipping 'import'...\n");
+ } else {
+ if (!map->config_read(import, true))
+ retval = false;
+ }
+ }
+
+ libconfig->destroy(&config);
+ return retval;
}
+
void map_reloadnpc_sub(char *cfgName) {
char line[1024], w1[1024], w2[1024];
FILE *fp;
@@ -6141,7 +6332,7 @@ int do_init(int argc, char *argv[])
map->INTER_CONF_NAME = aStrdup("conf/common/inter-server.conf");
map->LOG_CONF_NAME = aStrdup("conf/logs.conf");
- map->MAP_CONF_NAME = aStrdup("conf/map-server.conf");
+ map->MAP_CONF_NAME = aStrdup("conf/map/map-server.conf");
map->BATTLE_CONF_FILENAME = aStrdup("conf/battle.conf");
map->ATCOMMAND_CONF_FILENAME = aStrdup("conf/atcommand.conf");
map->SCRIPT_CONF_NAME = aStrdup("conf/script.conf");
@@ -6157,11 +6348,30 @@ int do_init(int argc, char *argv[])
cmdline->exec(argc, argv, CMDLINE_OPT_NORMAL);
minimal = map->minimal;/* temp (perhaps make minimal a mask with options of what to load? e.g. plugin 1 does minimal |= mob_db; */
if (!minimal) {
- map->config_read(map->MAP_CONF_NAME);
+ map->config_read(map->MAP_CONF_NAME, false);
CREATE(map->list,struct map_data,map->count);
map->count = 0;
map->config_read_sub(map->MAP_CONF_NAME);
+ {
+ // TODO: Remove this when no longer needed.
+#define CHECK_OLD_LOCAL_CONF(oldname, newname) do { \
+ if (stat((oldname), &fileinfo) == 0 && fileinfo.st_size > 0) { \
+ ShowWarning("An old configuration file \"%s\" was found.\n", (oldname)); \
+ ShowWarning("If it contains settings you wish to keep, please merge them into \"%s\".\n", (newname)); \
+ ShowWarning("Otherwise, just delete it.\n"); \
+ ShowInfo("Resuming in 10 seconds...\n"); \
+ HSleep(10); \
+ } \
+} while (0)
+ struct stat fileinfo;
+
+ CHECK_OLD_LOCAL_CONF("conf/import/map_conf.txt", "conf/import/map-server.conf");
+ CHECK_OLD_LOCAL_CONF("conf/import/inter_conf.txt", "conf/import/inter-server.conf");
+
+#undef CHECK_OLD_LOCAL_CONF
+ }
+
// loads npcs
map->reloadnpc(false);
@@ -6172,7 +6382,7 @@ int do_init(int argc, char *argv[])
sockt->ip2str(sockt->addr_[0], ip_str);
#ifndef BUILDBOT
- ShowWarning("Not all IP addresses in /conf/map-server.conf configured, auto-detecting...\n");
+ ShowWarning("Not all IP addresses in /conf/map/map-server.conf configured, auto-detecting...\n");
#endif
if (sockt->naddr_ == 0)
@@ -6337,7 +6547,6 @@ void map_defaults(void) {
sprintf(map->db_path ,"db");
sprintf(map->help_txt ,"conf/help.txt");
- sprintf(map->help2_txt ,"conf/help2.txt");
sprintf(map->charhelp_txt ,"conf/charhelp.txt");
sprintf(map->wisp_server_name ,"Server"); // can be modified in char-server configuration file
@@ -6352,7 +6561,7 @@ void map_defaults(void) {
map->INTER_CONF_NAME="conf/common/inter-server.conf";
map->LOG_CONF_NAME="conf/logs.conf";
- map->MAP_CONF_NAME = "conf/map-server.conf";
+ map->MAP_CONF_NAME = "conf/map/map-server.conf";
map->BATTLE_CONF_FILENAME = "conf/battle.conf";
map->ATCOMMAND_CONF_FILENAME = "conf/atcommand.conf";
map->SCRIPT_CONF_NAME = "conf/script.conf";
diff --git a/src/map/map.h b/src/map/map.h
index f98e1cb7f..646e39448 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -968,7 +968,6 @@ struct map_interface {
char db_path[256];
char help_txt[256];
- char help2_txt[256];
char charhelp_txt[256];
char wisp_server_name[NAME_LENGTH];
@@ -997,7 +996,7 @@ struct map_interface {
char server_db[32];
struct Sql *mysql_handle;
- int port;
+ uint16 port;
int users;
int enable_grf; //To enable/disable reading maps from GRF files, bypassing mapcache [blackhole89]
bool ip_set;
@@ -1188,8 +1187,8 @@ END_ZEROED_BLOCK;
int (*waterheight) (char *mapname);
int (*readgat) (struct map_data *m);
int (*readallmaps) (void);
- int (*config_read) (char *cfgName);
- int (*config_read_sub) (char *cfgName);
+ bool (*config_read) (const char *filename, bool imported);
+ bool (*config_read_sub) (char *filename);
void (*reloadnpc_sub) (char *cfgName);
bool (*inter_config_read) (const char *filename, bool imported);
bool (*inter_config_read_database_names) (const char *filename, const struct config_t *config, bool imported);
diff --git a/tools/configconverter.pl b/tools/configconverter.pl
index 435e4b246..2d5eebe72 100755
--- a/tools/configconverter.pl
+++ b/tools/configconverter.pl
@@ -169,6 +169,12 @@ sub printcfg_int($$$) {
indent("$variable: $value\n", $nestlevel);
}
+sub printcfg_hexint($$$) {
+ my ($variable, $value, $nestlevel) = @_;
+
+ indent(sprintf("%s: 0x%x\n", $variable, $value), $nestlevel);
+}
+
sub printcfg_bool($$$) {
my ($variable, $value, $nestlevel) = @_;
@@ -441,7 +447,34 @@ my @defaults = (
'account.sql.accreg_db' => {parse => \&parsecfg_string, print => \&printcfg_nil, path => "", default => "global_reg_value"},
import => {parse => \&parsecfg_stringarr, print => \&printcfg_nil, path => "", default => ["conf/inter-server.conf", "conf/import/login_conf.txt"]},
}
- }
+ },
+ {
+ files => ['map-server.conf', 'import/map_conf.txt'],
+ settings => {
+ userid => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/inter/", default => "s1"},
+ passwd => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/inter/", default => "p1"},
+ char_ip => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/inter/", default => "127.0.0.1"},
+ bind_ip => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/inter/", default => "127.0.0.1"},
+ char_port => {parse => \&parsecfg_int, print => \&printcfg_int, path => "map-server:map_configuration/inter/", default => 6121},
+ map_ip => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/inter/", default => "127.0.0.1"},
+ map_port => {parse => \&parsecfg_int, print => \&printcfg_int, path => "map-server:map_configuration/inter/", default => 5121},
+ timestamp_format => {parse => \&parsecfg_string, print => \&printcfg_string, path => "console:console/", default => "[%d/%b %H:%M]"},
+ stdout_with_ansisequence => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "console:console/", default => "false"},
+ console_msg_log => {parse => \&parsecfg_int, print => \&printcfg_int, path => "console:console/", default => 0},
+ console_silent => {parse => \&parsecfg_int, print => \&printcfg_int, path => "console:console/", default => 0},
+ db_path => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/database/", default => "db"},
+ enable_spy => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "map-server:map_configuration/", default => "false"},
+ use_grf => {parse => \&parsecfg_bool, print => \&printcfg_bool, path => "map-server:map_configuration/", default => "false"},
+ autosave_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "map-server:map_configuration/database/", default => 300},
+ minsave_time => {parse => \&parsecfg_int, print => \&printcfg_int, path => "map-server:map_configuration/database/", default => 100},
+ save_settings => {parse => \&parsecfg_int, print => \&printcfg_hexint, path => "map-server:map_configuration/database/", default => 511},
+ default_language => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/", default => "English"},
+ help_txt => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/", default => "conf/help.txt"},
+ charhelp_txt => {parse => \&parsecfg_string, print => \&printcfg_string, path => "map-server:map_configuration/", default => "conf/charhelp.txt"},
+ help2_txt => {parse => \&parsecfg_string, print => \&printcfg_nil, path => "", default => "conf/help2.txt"},
+ import => {parse => \&parsecfg_stringarr, print => \&printcfg_nil, path => "", default => ["conf/maps.conf", "conf/import/map_conf.txt"]},
+ }
+ },
);
for (@ARGV) {