summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--GNUmakefile3
m---------client-data0
-rw-r--r--conf/.gitignore1
-rw-r--r--conf/monitor_athena.conf82
-rw-r--r--conf/monitor_local.conf.example1
-rw-r--r--conf/tmwa-monitor.conf6
-rw-r--r--login/conf/login_athena.conf24
-rw-r--r--login/conf/tmwa-admin-old.conf6
-rw-r--r--login/conf/tmwa-admin.conf7
-rw-r--r--login/conf/tmwa-login-old.conf7
-rw-r--r--login/conf/tmwa-login.conf9
m---------tools0
-rw-r--r--world/conf/char_athena.conf14
-rw-r--r--world/conf/char_local.conf.example3
-rw-r--r--world/conf/tmwa-char-old.conf8
-rw-r--r--world/conf/tmwa-char.conf10
-rw-r--r--world/map/conf/battle_athena.conf13
-rw-r--r--world/map/conf/map_athena.conf3
-rw-r--r--world/map/conf/map_local.conf.example2
-rw-r--r--world/map/conf/tmwa-map.conf33
-rw-r--r--world/map/data/027-4.wlkbin18754 -> 18754 bytes
-rw-r--r--world/map/data/031-1.wlkbin18948 -> 18948 bytes
-rw-r--r--world/map/db/item_db_chest.txt (renamed from world/map/db/chest_item_db.txt)0
-rw-r--r--world/map/db/item_db_foot.txt (renamed from world/map/db/foot_item_db.txt)0
-rw-r--r--world/map/db/item_db_generic.txt (renamed from world/map/db/generic_item_db.txt)0
-rw-r--r--world/map/db/item_db_hand.txt (renamed from world/map/db/hand_item_db.txt)0
-rw-r--r--world/map/db/item_db_head.txt (renamed from world/map/db/head_item_db.txt)0
-rw-r--r--world/map/db/item_db_leg.txt (renamed from world/map/db/leg_item_db.txt)0
-rw-r--r--world/map/db/item_db_offhand.txt (renamed from world/map/db/offhand_item_db.txt)0
-rw-r--r--world/map/db/item_db_trinket.txt (renamed from world/map/db/trinket_item_db.txt)0
-rw-r--r--world/map/db/item_db_use.txt (renamed from world/map/db/use_item_db.txt)0
-rw-r--r--world/map/db/item_db_weapon.txt (renamed from world/map/db/weapon_item_db.txt)0
-rw-r--r--world/map/db/mob_db_0_19.txt (renamed from world/map/db/0_19_mob_db.txt)0
-rw-r--r--world/map/db/mob_db_20_39.txt (renamed from world/map/db/20_39_mob_db.txt)0
-rw-r--r--world/map/db/mob_db_40_59.txt (renamed from world/map/db/40_59_mob_db.txt)0
-rw-r--r--world/map/db/mob_db_60_79.txt (renamed from world/map/db/60_79_mob_db.txt)0
-rw-r--r--world/map/db/mob_db_80_99.txt (renamed from world/map/db/80_99_mob_db.txt)0
-rw-r--r--world/map/db/mob_db_over_100.txt (renamed from world/map/db/over_100_mob_db.txt)0
-rw-r--r--world/map/news.d/45-v2015.01.13.txt28
-rw-r--r--world/map/npc/009-2/trader.txt2
-rw-r--r--world/map/npc/009-7/rouge.txt7
-rw-r--r--world/map/npc/011-6/_warps.txt4
-rw-r--r--world/map/npc/030-2/_import.txt4
-rw-r--r--world/map/npc/030-2/guards.txt (renamed from world/map/npc/030-2/gaurds.txt)0
-rw-r--r--world/map/npc/030-2/present_helper.txt5
-rw-r--r--world/map/npc/030-2/roasted_acorns_helper.txt (renamed from world/map/npc/030-2/roasted_acrons_helper.txt)0
-rw-r--r--world/map/npc/annuals/xmas/core.txt4
-rw-r--r--world/map/npc/annuals/xmas/debug.txt2
48 files changed, 190 insertions, 98 deletions
diff --git a/GNUmakefile b/GNUmakefile
index c22fe72f..35036514 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -9,8 +9,9 @@ maps:
cp "$|" "$@"
conf: world/map/conf/magic-secrets.sex \
login/conf/login_local.conf login/conf/ladmin_local.conf login/save/gm_account.txt login/save/account.txt \
+world/conf/char_local.conf \
world/map/conf/map_local.conf world/map/conf/battle_local.conf world/map/conf/motd.txt world/map/conf/atcommand_local.conf world/map/db/const-debugflag.txt \
-world/conf/char_local.conf
+conf/monitor_local.conf
world/map/conf/magic-secrets.sex: world/map/conf/magic-secrets.sex.template world/map/conf/secrets-build
cd world/map/conf && ./build-magic.sh
diff --git a/client-data b/client-data
-Subproject 2ef1533c7bae630708a7bad9edb58783333506a
+Subproject 2e8b666605df4c5781c9f6eb98698fd2ff334dc
diff --git a/conf/.gitignore b/conf/.gitignore
new file mode 100644
index 00000000..2c43e911
--- /dev/null
+++ b/conf/.gitignore
@@ -0,0 +1 @@
+/*_local.conf
diff --git a/conf/monitor_athena.conf b/conf/monitor_athena.conf
new file mode 100644
index 00000000..68fe65f6
--- /dev/null
+++ b/conf/monitor_athena.conf
@@ -0,0 +1,82 @@
+// Athena Monitor configuration file.
+
+//////////////////////////////////////////////////////////////////////
+// Some notes about the existence of this file:
+//
+// tmwa-monitor is unused in its current form, but plans are
+// to resurrect it in *some* form. See below for what we do use.
+// However, an alternative possibility would be to just install config
+// files to integrate with some existing daemon-monitoring tool.
+//
+// THAT SAID, blindly restarting a server that exited in an unknown
+// way is a really great way to get unrecoverable savefile corruption.
+// For this reason, we only auto-restart the map server, which only
+// persists some unimportant global variables such as high scores.
+// Besides, the other servers are stable enough that they rarely crash.
+//
+// This monitor names three "server"s, but they are just arbitrary.
+// This is not enough for the case of multiple worlds,
+// and is too much for the case of worlds running as different users.
+//
+// Currently the server variables are pointing to local shell scripts
+// (which are themselves deprecated and print a flashing message),
+// which is necessary because the actual servers need to be run inside
+// the appropriate dir to read conf and read/write savefiles from/to
+// the correct location. This will get better once savefiles get put
+// in $localstatedir (i.e. /var), but it's not yet known how that
+// should interact with multiple worlds running at the same time.
+//
+// Likely, however, this will depend on the ability to pass a config
+// file as an argument to the servers.
+//
+// The workdir setting would make a lot more sense if this file was
+// installed in $sysconfdir (i.e. /etc) by tmwa's `make install`,
+// which is still planned but hasn't happened yet, but makes *less*
+// sense if the servers install their config there.
+//
+// And regardless, we need to allow per-server workdirs, including
+// multiple instances, and possible pre/post scripts and exit/signal
+// status handlers. But all that seems complicated, leading back to
+// "shouldn't we just use an existing daemon manager?".
+//
+// Alternatively, we could act like an XDG application, which is
+// admittedly somewhat odd if you're a daemon, but would at least
+// clarify what happens if you run the servers as a user (which we
+// do always. When an init script is written, it should run as
+// somebody other than root!).
+//
+//////////////////////////////////////////////////////////////////////
+//
+// What we actually use instead of tmwa-monitor:
+//
+// On the main server, we run a tmux session, with one window
+// for each server and for each bot. The servers are run directly
+// from inside the appropriate directory.
+//
+// The test server is like the main server without bots, but instead
+// of running `tmwa-map` directly, we use the tmwa-map-wrapper script
+// from tools/, which restarts the server whenever it exits and merges
+// tagged patches from github, except that it does no merges if the
+// server exited too quickly after the restart.
+//
+// On local dev machines, we usually use the `./run-all` script from
+// this repo.
+//
+//////////////////////////////////////////////////////////////////////
+
+
+// Binary to use with message "forked login server".
+login_server: ./login-server
+
+// Binary to use with message "forked char server".
+char_server: ./char-server
+
+// Binary to use with message "forked map server".
+map_server: ./map-server
+
+// Directory in which to run the servers.
+// If never set, dynamically computed as $HOME/tmwserver
+//workdir: /path/to/tmwa-server-data
+
+// local settings for this nonserver in this file
+import: conf/monitor_local.conf
diff --git a/conf/monitor_local.conf.example b/conf/monitor_local.conf.example
new file mode 100644
index 00000000..32d168db
--- /dev/null
+++ b/conf/monitor_local.conf.example
@@ -0,0 +1 @@
+// Athena Monitor local configuration file.
diff --git a/conf/tmwa-monitor.conf b/conf/tmwa-monitor.conf
new file mode 100644
index 00000000..db630d47
--- /dev/null
+++ b/conf/tmwa-monitor.conf
@@ -0,0 +1,6 @@
+// Master config file for The Mana World Athena (monitor component)
+// This file is used since version 14.x.y, but major changes in 15.x.y
+
+// tmwa-monitor is deprecated, see comments in the below file
+
+monitor_conf: conf/monitor_athena.conf
diff --git a/login/conf/login_athena.conf b/login/conf/login_athena.conf
index 7e59d192..a14cfa6f 100644
--- a/login/conf/login_athena.conf
+++ b/login/conf/login_athena.conf
@@ -16,14 +16,6 @@ gm_account_filename_check_timer: 15
// General log.
login_log_filename: log/login.log
-// Log for unknown packets.
-login_log_unknown_packets_filename: log/login_unknown_packets.log
-
-// Are unknown packets from the client saved?
-// (unknown internal packets are always saved)
-// This is not nice to your hard drive.
-save_unknown_packets: no
-
// Print basic header information about incoming client packets.
// Also print a little more about client or char auth attempts.
display_parse_login: no
@@ -41,22 +33,6 @@ display_parse_fromchar: 0
// 0: all players, 1-99: GM level at least this.
min_level_to_connect: 0
-// Behavior of relative time adjustments for unlimited accounts.
-// If true, ladmin timeadd will first set the limit to right now.
-// If false, ladmin timeadd will do nothing on unlimited accounts.
-// In either case, you can use ladmin timeset.
-add_to_unlimited_account: off
-
-// Time, in seconds, that a new account has before it expires.
-// Set to -1 for unlimited time.
-// Use of this setting is not condoned by The Mana World.
-start_limited_time: -1
-
-// Check that a player has the same IP when switching from login to char.
-// To use this, your lan_support.conf files MUST be correct.
-// Disabling this setting is not supported.
-check_ip_flag: yes
-
// How the IP allow/deny lists (below) are interpreted.
// Possible values:
// "deny, allow" (default):
diff --git a/login/conf/tmwa-admin-old.conf b/login/conf/tmwa-admin-old.conf
new file mode 100644
index 00000000..7670b002
--- /dev/null
+++ b/login/conf/tmwa-admin-old.conf
@@ -0,0 +1,6 @@
+// Master config file for The Mana World Athena (admin component)
+// This file is used since version 14.x.y
+
+version-lt: 15.1.23
+
+import: conf/ladmin_athena.conf
diff --git a/login/conf/tmwa-admin.conf b/login/conf/tmwa-admin.conf
index 4584fa13..69f333d9 100644
--- a/login/conf/tmwa-admin.conf
+++ b/login/conf/tmwa-admin.conf
@@ -1,4 +1,7 @@
// Master config file for The Mana World Athena (admin component)
-// This file is used since version 14.x.y
+// This file is used since version 14.x.y, but major changes in 15.x.y
-import: conf/ladmin_athena.conf
+import: conf/tmwa-admin-old.conf
+version-ge: 15.1.23
+
+admin_conf: conf/ladmin_athena.conf
diff --git a/login/conf/tmwa-login-old.conf b/login/conf/tmwa-login-old.conf
new file mode 100644
index 00000000..907ada2e
--- /dev/null
+++ b/login/conf/tmwa-login-old.conf
@@ -0,0 +1,7 @@
+// Master config file for The Mana World Athena (login component)
+// This file is used since version 14.x.y
+
+version-lt: 15.1.23
+
+import: conf/login_athena.conf
+import: conf/lan_support.conf
diff --git a/login/conf/tmwa-login.conf b/login/conf/tmwa-login.conf
index 89eb61ae..44e3adfe 100644
--- a/login/conf/tmwa-login.conf
+++ b/login/conf/tmwa-login.conf
@@ -1,5 +1,8 @@
// Master config file for The Mana World Athena (login component)
-// This file is used since version 14.x.y
+// This file is used since version 14.x.y, but major changes in 15.x.y
-import: conf/login_athena.conf
-import: conf/lan_support.conf
+import: conf/tmwa-login-old.conf
+version-ge: 15.1.23
+
+login_conf: conf/login_athena.conf
+login_lan_conf: conf/lan_support.conf
diff --git a/tools b/tools
-Subproject 0eeec6594246134efc7932567c86f75079e9815
+Subproject e25322ec21909cd57a66575fe6e6febead3f8f3
diff --git a/world/conf/char_athena.conf b/world/conf/char_athena.conf
index 73aab23c..ee2cba1b 100644
--- a/world/conf/char_athena.conf
+++ b/world/conf/char_athena.conf
@@ -5,11 +5,6 @@
// of just under 1024 per server (but a world may be many servers).
max_connect_user: 0
-// Check that a player has the same IP when switching from char to map.
-// To use this, your lan_support.conf files MUST be correct.
-// Disabling this is not supported.
-check_ip_flag: yes
-
// Interval, in seconds, between saves of the flatfile databases.
autosave_time: 300
@@ -23,15 +18,6 @@ start_point: 029-2.gat,22,24
// Log Filename
char_log_filename: log/char.log
-// Manage possible letters/symbol in the name of charater.
-// Control character (0x00-0x1f) are never accepted. Possible values are:
-// 0: no restriction (builtin default, but please don't use)
-// 1: only letters/symbols in 'char_name_letters' option
-// 2: Letters/symbols in 'char_name_letters' option are forbidden.
-// All others are possible (please don't use this).
-// Setting this to anything but 1 is not recommended.
-char_name_option: 1
-
// Set the letters/symbols that you want use with 'char_name_option'.
// This is a cumulative option; specify nothing to reset it.
// Note: if you want to add a space, it can't be at the beginning or end.
diff --git a/world/conf/char_local.conf.example b/world/conf/char_local.conf.example
index 4beab7c9..920d7892 100644
--- a/world/conf/char_local.conf.example
+++ b/world/conf/char_local.conf.example
@@ -7,9 +7,6 @@ passwd: p1
// Server name, no more than 19 characters
server_name: The Mana World
-// Wisp name for server: used to send wisp from server to players (between 4 to 23 characters)
-wisp_server_name: Server
-
// Login Server IP
login_ip:127.0.0.1
// Login Server Port
diff --git a/world/conf/tmwa-char-old.conf b/world/conf/tmwa-char-old.conf
new file mode 100644
index 00000000..b7e37735
--- /dev/null
+++ b/world/conf/tmwa-char-old.conf
@@ -0,0 +1,8 @@
+// Master config file for The Mana World Athena (char component)
+// This file is used since version 14.x.y
+
+version-lt: 15.1.23
+
+import: conf/char_athena.conf
+import: conf/lan_support.conf
+import: conf/inter_athena.conf
diff --git a/world/conf/tmwa-char.conf b/world/conf/tmwa-char.conf
index a55cff1f..84213139 100644
--- a/world/conf/tmwa-char.conf
+++ b/world/conf/tmwa-char.conf
@@ -1,6 +1,8 @@
// Master config file for The Mana World Athena (char component)
-// This file is used since version 14.x.y
+// This file is used since version 14.x.y, but major changes in 15.x.y
-import: conf/char_athena.conf
-import: conf/lan_support.conf
-import: conf/inter_athena.conf
+import: conf/tmwa-char-old.conf
+version-ge: 15.1.23
+char_conf: conf/char_athena.conf
+char_lan_conf: conf/lan_support.conf
+inter_conf: conf/inter_athena.conf
diff --git a/world/map/conf/battle_athena.conf b/world/map/conf/battle_athena.conf
index 8288601d..6e80b1e7 100644
--- a/world/map/conf/battle_athena.conf
+++ b/world/map/conf/battle_athena.conf
@@ -99,8 +99,8 @@ monster_max_aspd: 199
// set to 'Yes', Normal players (gm level 0) can never use a GM command even if you set the command level to 0.
atcommand_gm_only: no
-// [GM] Can equip anything? (No or minimum GM level, can cause client errors.)
-gm_all_equipment: no
+// [GM] Can equip anything? (0 to disable, or minimum GM level, can cause client errors.)
+gm_all_equipment: 0
// Should GMs be given a hashed IP instead of the real one?
mask_ip_gms: 1
@@ -131,9 +131,6 @@ natural_healhp_interval: 6000
// The time interval for SP to restore naturally. (in milliseconds)
natural_healsp_interval: 8000
-// Automatic healing skill's time interval. (in milliseconds)
-natural_heal_skill_interval: 10000
-
// The maximum weight for a character to carry when the character stops healing naturally. (in %)
natural_heal_weight_rate: 50
@@ -211,12 +208,6 @@ prevent_logout: yes
// If skill fails by delay, should it display or not. (Note 1)
display_delay_skill_fail: yes
-// Is a monster summoned via dead branch aggresive? (Note 1)
-dead_branch_active: yes
-
-// If someone loots, show name in party? (Note 1)
-show_steal_in_same_party: no
-
// How to count the number of the enemies who do an agi penalty...
// 1 or less: It is a count altogether.
// 2: Full evasion exclusion
diff --git a/world/map/conf/map_athena.conf b/world/map/conf/map_athena.conf
index f03c0123..f0f59fd7 100644
--- a/world/map/conf/map_athena.conf
+++ b/world/map/conf/map_athena.conf
@@ -6,9 +6,6 @@ autosave_time: 60
// Message of the day file, when a character logs on, this message is displayed.
motd_txt: conf/motd.txt
-// 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
-
mapreg_txt: save/mapreg.txt
import: npc/scripts.conf
diff --git a/world/map/conf/map_local.conf.example b/world/map/conf/map_local.conf.example
index 894a43d3..d4270347 100644
--- a/world/map/conf/map_local.conf.example
+++ b/world/map/conf/map_local.conf.example
@@ -15,4 +15,4 @@ map_ip: 127.0.0.1
map_port: 5122
// Log of map actions, disabled by default because this is huge.
-//map_log: log/map.log
+//log_file: log/map.log
diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf
index 44ac5757..10dd615e 100644
--- a/world/map/conf/tmwa-map.conf
+++ b/world/map/conf/tmwa-map.conf
@@ -5,7 +5,6 @@
// Older server versions hard-coded the loaders in (mostly) this order,
// and there may still be code dependencies.
-// The plan is to turn some of these into just plain 'import' eventually?
map_conf: conf/map_athena.conf
battle_conf: conf/battle_athena.conf
atcommand_conf: conf/atcommand_athena.conf
@@ -15,22 +14,22 @@ const_db: db/const-quest.txt
const_db: db/const-mapflags.txt
const_db: db/const-debugflag.txt
-item_db: db/chest_item_db.txt
-item_db: db/foot_item_db.txt
-item_db: db/generic_item_db.txt
-item_db: db/hand_item_db.txt
-item_db: db/head_item_db.txt
-item_db: db/leg_item_db.txt
-item_db: db/offhand_item_db.txt
-item_db: db/trinket_item_db.txt
-item_db: db/use_item_db.txt
-item_db: db/weapon_item_db.txt
-mob_db: db/0_19_mob_db.txt
-mob_db: db/20_39_mob_db.txt
-mob_db: db/40_59_mob_db.txt
-mob_db: db/60_79_mob_db.txt
-mob_db: db/80_99_mob_db.txt
-mob_db: db/over_100_mob_db.txt
+item_db: db/item_db_chest.txt
+item_db: db/item_db_foot.txt
+item_db: db/item_db_generic.txt
+item_db: db/item_db_hand.txt
+item_db: db/item_db_head.txt
+item_db: db/item_db_leg.txt
+item_db: db/item_db_offhand.txt
+item_db: db/item_db_trinket.txt
+item_db: db/item_db_use.txt
+item_db: db/item_db_weapon.txt
+mob_db: db/mob_db_0_19.txt
+mob_db: db/mob_db_20_39.txt
+mob_db: db/mob_db_40_59.txt
+mob_db: db/mob_db_60_79.txt
+mob_db: db/mob_db_80_99.txt
+mob_db: db/mob_db_over_100.txt
mob_skill_db: db/mob_skill_db.txt
skill_db: db/skill_db.txt
diff --git a/world/map/data/027-4.wlk b/world/map/data/027-4.wlk
index 4d561765..0933cbc6 100644
--- a/world/map/data/027-4.wlk
+++ b/world/map/data/027-4.wlk
Binary files differ
diff --git a/world/map/data/031-1.wlk b/world/map/data/031-1.wlk
index 7ca3abd2..130fd021 100644
--- a/world/map/data/031-1.wlk
+++ b/world/map/data/031-1.wlk
Binary files differ
diff --git a/world/map/db/chest_item_db.txt b/world/map/db/item_db_chest.txt
index de94086c..de94086c 100644
--- a/world/map/db/chest_item_db.txt
+++ b/world/map/db/item_db_chest.txt
diff --git a/world/map/db/foot_item_db.txt b/world/map/db/item_db_foot.txt
index e86be1c2..e86be1c2 100644
--- a/world/map/db/foot_item_db.txt
+++ b/world/map/db/item_db_foot.txt
diff --git a/world/map/db/generic_item_db.txt b/world/map/db/item_db_generic.txt
index efae1569..efae1569 100644
--- a/world/map/db/generic_item_db.txt
+++ b/world/map/db/item_db_generic.txt
diff --git a/world/map/db/hand_item_db.txt b/world/map/db/item_db_hand.txt
index d57062b5..d57062b5 100644
--- a/world/map/db/hand_item_db.txt
+++ b/world/map/db/item_db_hand.txt
diff --git a/world/map/db/head_item_db.txt b/world/map/db/item_db_head.txt
index 922ea4b3..922ea4b3 100644
--- a/world/map/db/head_item_db.txt
+++ b/world/map/db/item_db_head.txt
diff --git a/world/map/db/leg_item_db.txt b/world/map/db/item_db_leg.txt
index 95fb53b4..95fb53b4 100644
--- a/world/map/db/leg_item_db.txt
+++ b/world/map/db/item_db_leg.txt
diff --git a/world/map/db/offhand_item_db.txt b/world/map/db/item_db_offhand.txt
index a36e1778..a36e1778 100644
--- a/world/map/db/offhand_item_db.txt
+++ b/world/map/db/item_db_offhand.txt
diff --git a/world/map/db/trinket_item_db.txt b/world/map/db/item_db_trinket.txt
index f3b77bc9..f3b77bc9 100644
--- a/world/map/db/trinket_item_db.txt
+++ b/world/map/db/item_db_trinket.txt
diff --git a/world/map/db/use_item_db.txt b/world/map/db/item_db_use.txt
index b2b13008..b2b13008 100644
--- a/world/map/db/use_item_db.txt
+++ b/world/map/db/item_db_use.txt
diff --git a/world/map/db/weapon_item_db.txt b/world/map/db/item_db_weapon.txt
index a16425f8..a16425f8 100644
--- a/world/map/db/weapon_item_db.txt
+++ b/world/map/db/item_db_weapon.txt
diff --git a/world/map/db/0_19_mob_db.txt b/world/map/db/mob_db_0_19.txt
index 36169593..36169593 100644
--- a/world/map/db/0_19_mob_db.txt
+++ b/world/map/db/mob_db_0_19.txt
diff --git a/world/map/db/20_39_mob_db.txt b/world/map/db/mob_db_20_39.txt
index b0d1d096..b0d1d096 100644
--- a/world/map/db/20_39_mob_db.txt
+++ b/world/map/db/mob_db_20_39.txt
diff --git a/world/map/db/40_59_mob_db.txt b/world/map/db/mob_db_40_59.txt
index a27c015c..a27c015c 100644
--- a/world/map/db/40_59_mob_db.txt
+++ b/world/map/db/mob_db_40_59.txt
diff --git a/world/map/db/60_79_mob_db.txt b/world/map/db/mob_db_60_79.txt
index 5dd9231a..5dd9231a 100644
--- a/world/map/db/60_79_mob_db.txt
+++ b/world/map/db/mob_db_60_79.txt
diff --git a/world/map/db/80_99_mob_db.txt b/world/map/db/mob_db_80_99.txt
index d6cdde0c..d6cdde0c 100644
--- a/world/map/db/80_99_mob_db.txt
+++ b/world/map/db/mob_db_80_99.txt
diff --git a/world/map/db/over_100_mob_db.txt b/world/map/db/mob_db_over_100.txt
index 3644b4dc..3644b4dc 100644
--- a/world/map/db/over_100_mob_db.txt
+++ b/world/map/db/mob_db_over_100.txt
diff --git a/world/map/news.d/45-v2015.01.13.txt b/world/map/news.d/45-v2015.01.13.txt
new file mode 100644
index 00000000..ea2f4cb6
--- /dev/null
+++ b/world/map/news.d/45-v2015.01.13.txt
@@ -0,0 +1,28 @@
+{title:New tutorial, road between Hurnscald and Nivalis and more}
+{date:2015-01-13}
+
+The hugest change in this patch is the one in
+the tutorial, it's faster and more intuitive,
+making new players more comfortable and able
+to explore The Mana World faster. Also, now
+you can reach Nivalis by going through the
+Woodlands which makes a funny new way to travel.
+
+{ul}
+{li}New tutorial starting at Candor Island.{/li}
+{li}Ferry parting from Hurnscald easening access.{/li}
+{li}New travel point from North Woodlands to Nivalis.{/li}
+{li}Cleaned up maps for Desert and Snow Forest.{/li}
+{li}Fixed mixed up item requirement for Crypt quests.{/li}
+{li}Totally remodeled Tulimshar, sewers included.{/li}
+{li}Latoy now sells all kinds of silk stuff.{/li}
+{li}Now Ragged Shorts isn't that useless at all.{/li}
+{li}Nivalis counts with a new, neat tileset.{/li}
+{li}And Desert Mountains too.{/li}
+{li}Minor typos and tile corrections.{/li}
+{li}Reinboo now uses his own base sprite.{/li}
+{li}Added music for GM Island.{/li}
+{li}Tonori Delight now restores a little MP.{/li}
+{/ul}
+
+{author:TMW Development Team}
diff --git a/world/map/npc/009-2/trader.txt b/world/map/npc/009-2/trader.txt
index 572cad1b..c386b05a 100644
--- a/world/map/npc/009-2/trader.txt
+++ b/world/map/npc/009-2/trader.txt
@@ -3,7 +3,7 @@
// Updated by: TheKandiman
// Reviewed by: Wombat
-009-2.gat,39,93,0|script|Trader|115
+009-2.gat,29,98,0|script|Trader|115
{
set @Ironprice, 1000;
set @Sulphurprice, 1200;
diff --git a/world/map/npc/009-7/rouge.txt b/world/map/npc/009-7/rouge.txt
index 78491431..dd86679c 100644
--- a/world/map/npc/009-7/rouge.txt
+++ b/world/map/npc/009-7/rouge.txt
@@ -1,14 +1,13 @@
009-7.gat,32,45,0|script|Rouge#Duels|181
{
-if (getgmlevel() >= 40 && getequipid(equip_head) == 647) goto L_CallDebug;
-if (!debug && (strcharinfo(0) == "meko") && (getequipid(equip_head) < 1)) goto L_CallDebug; // allow meko to debug (has no dev cap)
+if (getgmlevel() >= 40 && (getequipid(equip_head) == 647 || getequipid(equip_head) == 725)) goto L_CallDebug;
goto L_Main;
L_CallDebug:
mes "You are wearing a dev cap: calling debug menu...";
- mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0";
+ mes "For the documentation, @@https://wiki.themanaworld.org/index.php/FightClub|click here@@##0";
callfunc "fightclub_Debug";
- goto L_Main;
+ goto L_End;
L_Main:
set @requests, 0;
diff --git a/world/map/npc/011-6/_warps.txt b/world/map/npc/011-6/_warps.txt
index f4a1c05f..8465b47d 100644
--- a/world/map/npc/011-6/_warps.txt
+++ b/world/map/npc/011-6/_warps.txt
@@ -5,12 +5,12 @@
011-6.gat,61,71|warp|To Small Bandit Cave|-1,-1,011-6.gat,270,124
011-6.gat,270,125|warp|To Bandit Cave|-1,-1,011-6.gat,61,72
011-6.gat,260,128|warp|To Bandit Cave|-1,-1,011-6.gat,51,76
-011-6.gat,145,118|warp|To Bandit Cave|-1,-1,011-6.gat,48,119
+011-6.gat,145,118|warp|To Bandit Cave|-1,-1,011-6.gat,47,119
011-6.gat,196,26|warp|To Small Bandit Cave|-1,-1,011-6.gat,261,46
011-6.gat,261,47|warp|To Second Bandit Cave|-1,-1,011-6.gat,196,27
011-6.gat,271,52|warp|To Bandit Cave|-1,-1,011-6.gat,98,31
011-6.gat,98,30|warp|To Small Bandit Cave|-1,-1,011-6.gat,271,51
-011-6.gat,47,120|warp|To Second Bandit Cave|-1,-1,011-6.gat,146,117
+011-6.gat,47,120|warp|To Second Bandit Cave|-1,-1,011-6.gat,145,117
011-6.gat,49,101|warp|To Woodland|-1,-1,011-1.gat,38,37
011-6.gat,24,206|warp|To Lake Cave|-1,-1,011-4.gat,16,58
011-6.gat,47,185|warp|To Lake Cave|-1,-1,011-4.gat,39,36
diff --git a/world/map/npc/030-2/_import.txt b/world/map/npc/030-2/_import.txt
index c2c641aa..c3867abf 100644
--- a/world/map/npc/030-2/_import.txt
+++ b/world/map/npc/030-2/_import.txt
@@ -9,11 +9,11 @@ npc: npc/030-2/bedding_helper.txt
npc: npc/030-2/chief_helper.txt
npc: npc/030-2/eljas.txt
npc: npc/030-2/empty_boxes_helper.txt
-npc: npc/030-2/gaurds.txt
npc: npc/030-2/glitter_helper.txt
+npc: npc/030-2/guards.txt
npc: npc/030-2/mapflags.txt
npc: npc/030-2/present_helper.txt
-npc: npc/030-2/roasted_acrons_helper.txt
+npc: npc/030-2/roasted_acorns_helper.txt
npc: npc/030-2/shipping_helper.txt
npc: npc/030-2/storage_helper.txt
npc: npc/030-2/wrapping_paper_helper.txt
diff --git a/world/map/npc/030-2/gaurds.txt b/world/map/npc/030-2/guards.txt
index 3fdc1ffa..3fdc1ffa 100644
--- a/world/map/npc/030-2/gaurds.txt
+++ b/world/map/npc/030-2/guards.txt
diff --git a/world/map/npc/030-2/present_helper.txt b/world/map/npc/030-2/present_helper.txt
index 248c296a..0a027ca0 100644
--- a/world/map/npc/030-2/present_helper.txt
+++ b/world/map/npc/030-2/present_helper.txt
@@ -1,8 +1,8 @@
// Annual Xmas
// Author: wushin
-// Present Reclaimation
+// Present Reclamation
-030-2.gat,47,82,0|script|Jonanthan|328
+030-2.gat,47,82,0|script|Jonathan|328
{
callfunc "XmasStates";
@@ -84,4 +84,3 @@ L_Close:
set @present_name$, "";
close;
}
-
diff --git a/world/map/npc/030-2/roasted_acrons_helper.txt b/world/map/npc/030-2/roasted_acorns_helper.txt
index f942c118..f942c118 100644
--- a/world/map/npc/030-2/roasted_acrons_helper.txt
+++ b/world/map/npc/030-2/roasted_acorns_helper.txt
diff --git a/world/map/npc/annuals/xmas/core.txt b/world/map/npc/annuals/xmas/core.txt
index 30562e13..d064efca 100644
--- a/world/map/npc/annuals/xmas/core.txt
+++ b/world/map/npc/annuals/xmas/core.txt
@@ -209,9 +209,9 @@ L_FinalGift:
set @xmas_reward_item2$, $@xmas_uncommon_reward$[@xmas_uncommon_slot2];
if(checkweight("Iten", 1) == 0)
goto L_FullInv;
- if(@xmas_reward >= 80)
+ if(@xmas_reward >= $@xmas_reward_tally_rare)
getitem @xmas_reward_item$, 1;
- if(@xmas_reward >= 40)
+ if(@xmas_reward >= $@xmas_reward_tally_common)
getitem @xmas_reward_item1$, 1;
getitem @xmas_reward_item2$, 1;
set @xmas_uncommon_slot1, 0;
diff --git a/world/map/npc/annuals/xmas/debug.txt b/world/map/npc/annuals/xmas/debug.txt
index ffde9f3d..fe0582e7 100644
--- a/world/map/npc/annuals/xmas/debug.txt
+++ b/world/map/npc/annuals/xmas/debug.txt
@@ -171,7 +171,7 @@ L_Close:
close;
}
-020-1.gat,86,76,0|script|XmasDebug#5|105
+020-1.gat,86,76,0|script|XmasDebug#1|105
{
callfunc "XmasDebug";
goto L_End;