diff --git a/.dockerignore b/.dockerignore index 811d5e3..169e1b6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -10,9 +10,12 @@ Dockerfile .gitkeep # Compiled quests -gamefiles/locale/english/quest/object/ -gamefiles/locale/english/quest/pre_qc/ -gamefiles/locale/english/quest/qc +gamefiles/data/quest/object/ +gamefiles/data/quest/pre_qc/ +gamefiles/data/quest/qc # Test folder -test/ \ No newline at end of file +test/ + +# Built files +build/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 6a95430..8c970af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,15 @@ -FROM ubuntu:latest as build +FROM ubuntu:22.04 as build WORKDIR /app +# Set up the CMake repository +RUN apt-get update && apt-get install -y ca-certificates gpg wget +RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null +RUN echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null + # Update the system and install various dependencies RUN apt-get update && \ apt-get install -y git cmake ninja-build build-essential tar curl zip unzip pkg-config autoconf python3 \ - libdevil-dev libncurses5-dev libbsd-dev + libdevil-dev libncurses5-dev libbsd-dev # Arm specific ENV VCPKG_FORCE_SYSTEM_BINARIES=1 @@ -12,7 +17,7 @@ ENV VCPKG_FORCE_SYSTEM_BINARIES=1 # Install vcpkg and the required libraries RUN git clone https://github.com/Microsoft/vcpkg.git RUN bash ./vcpkg/bootstrap-vcpkg.sh -RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog +RUN ./vcpkg/vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog argon2 COPY . . @@ -21,10 +26,10 @@ RUN mkdir build/ RUN cd build && cmake -DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake .. RUN cd build && make -j $(nproc) -FROM ubuntu:latest as app +FROM ubuntu:22.04 as app WORKDIR /app -RUN apt-get update && apt-get install -y python2 libdevil-dev libbsd-dev && apt-get clean +RUN apt-get update && apt-get install -y gettext python2 libdevil-dev libbsd-dev && apt-get clean # Copy the binaries from the build stage COPY --from=build /app/build/src/db/db /bin/db @@ -34,8 +39,11 @@ COPY --from=build /app/build/src/quest/qc /bin/qc # Copy the game files COPY ./gamefiles/ . +# Copy the auxiliary files +COPY ./docker/ . + # Compile the quests -RUN cd /app/locale/english/quest && python2 make.py +RUN cd /app/data/quest && python2 make.py # Symlink the configuration files RUN ln -s "./conf/CMD" "CMD" @@ -43,3 +51,9 @@ RUN ln -s ./conf/item_names_en.txt item_names.txt RUN ln -s ./conf/item_proto.txt item_proto.txt RUN ln -s ./conf/mob_names_en.txt mob_names.txt RUN ln -s ./conf/mob_proto.txt mob_proto.txt + +# Set up default environment variables +ENV PUBLIC_BIND_IP 0.0.0.0 +ENV INTERNAL_BIND_IP 0.0.0.0 + +ENTRYPOINT ["/usr/bin/bash", "docker-entrypoint.sh"] diff --git a/README.md b/README.md index d6408c2..f07e890 100644 --- a/README.md +++ b/README.md @@ -35,11 +35,11 @@ Also install DevIL (1.7.8) and the BSD compatibility library: apt-get install -y libdevil-dev libbsd-dev ``` -Install `vcpkg` according to the [lastest instructions](https://vcpkg.io/en/getting-started.html). +Install `vcpkg` according to the [latest instructions](https://vcpkg.io/en/getting-started.html). Build and install the required libraries: ```shell -vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog +vcpkg install boost-system cryptopp effolkronium-random libmysql libevent lzo fmt spdlog argon2 ``` Then, it's time to build your binaries. Your commands should look along the lines of: @@ -79,8 +79,9 @@ goodies you wish. Also, a lot of time. - Removed unused functionalities (time bombs, activation servers, other Korean stuff) - Switched to the [effolkronium/random PRNG](https://github.com/effolkronium/random) instead of the standard C functions. - Refactored macros to modern C++ functions. -- Network settings are manually configurable through the `PUBLIC_IP`, `PUBLIC_BIND_IP`, `INTERNAL_IP`, `INTERNAL_BIND_IP` settings in the `CONFIG` file. (Might need further work) +- Network settings are manually configurable through the `PUBLIC_IP`, `PUBLIC_BIND_IP`, `INTERNAL_IP`, `INTERNAL_BIND_IP` settings in the `game.conf` file. (Might need further work) - Refactored logging to use [spdlog](https://github.com/gabime/spdlog) for more consistent function calls. +- Refactored login code to use Argon2ID. ## 4. Bugfixes **WARNING: This project is based on the "kraizy" leak. That was over 10 years ago. @@ -101,7 +102,7 @@ This is a very serious security risk and one of the reasons this project is stil - Fixed buffer overruns and integer overflows in SQL queries. ## 5. Further plans -- Migrate `conf.txt` and `CONFIG` to a modern dotenv-like format, which would enable pretty nice Docker images. +- Migrate `db.conf` and `game.conf` to a modern dotenv-like format, which would enable pretty nice Docker images. - Add a health check to the Docker image. - Use the [fmt](https://fmt.dev/latest/index.html) library for safe and modern string formatting. - Handle kernel signals (SIGTERM, SIGHUP etc.) for gracefully shutting down the game server. diff --git a/docker/conf/db.conf.tmpl b/docker/conf/db.conf.tmpl new file mode 100644 index 0000000..3f9493b --- /dev/null +++ b/docker/conf/db.conf.tmpl @@ -0,0 +1,18 @@ +WELCOME_MSG = "DB Server has been started" + +SQL_ACCOUNT = "${MYSQL_HOST} ${MYSQL_DB_ACCOUNT} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}" +SQL_COMMON = "${MYSQL_HOST} ${MYSQL_DB_COMMON} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}" +SQL_PLAYER = "${MYSQL_HOST} ${MYSQL_DB_PLAYER} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_PORT}" + +TABLE_POSTFIX = "" + +BIND_PORT = ${DB_PORT} +DB_SLEEP_MSEC = 10 +CLIENT_HEART_FPS = 10 +HASH_PLAYER_LIFE_SEC = 600 +BACKUP_LIMIT_SEC = 3600 +PLAYER_ID_START = 100 +PLAYER_DELETE_LEVEL_LIMIT = 70 + +ITEM_ID_RANGE = 10000001 20000000 +TEST_SERVER = ${TEST_SERVER} diff --git a/docker/conf/game.conf.tmpl b/docker/conf/game.conf.tmpl new file mode 100644 index 0000000..dbf8e37 --- /dev/null +++ b/docker/conf/game.conf.tmpl @@ -0,0 +1,41 @@ +HOSTNAME: ${GAME_HOSTNAME} +CHANNEL: ${GAME_CHANNEL} + +PUBLIC_IP: ${PUBLIC_IP} +PUBLIC_BIND_IP: ${PUBLIC_BIND_IP} +INTERNAL_IP: ${INTERNAL_IP} +INTERNAL_BIND_IP: ${INTERNAL_BIND_IP} +PORT: ${GAME_PORT} +P2P_PORT: ${GAME_P2P_PORT} + +DB_ADDR: ${DB_ADDR} +DB_PORT: ${DB_PORT} + +COMMON_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_COMMON} ${MYSQL_PORT} +LOG_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_LOG} ${MYSQL_PORT} +PLAYER_SQL: ${MYSQL_HOST} ${MYSQL_USER} ${MYSQL_PASSWORD} ${MYSQL_DB_PLAYER} ${MYSQL_PORT} +TABLE_POSTFIX: + +AUTH_SERVER: ${GAME_AUTH_SERVER} +MARK_SERVER: ${GAME_MARK_SERVER} + +MAP_ALLOW: ${GAME_MAP_ALLOW} +MAX_LEVEL: ${GAME_MAX_LEVEL} +PK_PROTECT_LEVEL: 15 +SPAM_BLOCK_MAX_LEVEL: 90 +GOLD_DROP_LIMIT_TIME: 10 +MALL_URL: ${GAME_MALL_URL} + +CHECK_MULTIHACK: 0 +SPEEDHACK_LIMIT_COUNT: 300 +SPEEDHACK_LIMIT_BONUS: 80 + +ADMINPAGE_IP: 127.0.0.1 +ADMINPAGE_PASSWORD: metin2adminpass + +PASSES_PER_SEC: 25 +SAVE_EVENT_SECOND_CYCLE: 180 +PING_EVENT_SECOND_CYCLE: 180 +VIEW_RANGE: 8000 + +TEST_SERVER: ${TEST_SERVER} diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh new file mode 100644 index 0000000..ba8200b --- /dev/null +++ b/docker/docker-entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# docker-entrypoint.sh + +# Generate configuration files based on environment variables +envsubst <"/app/conf/db.conf.tmpl" >"/app/db.conf" +envsubst <"/app/conf/game.conf.tmpl" >"/app/game.conf" + +# Run the standard container command. +exec "$@" diff --git a/gamefiles/locale/english/BlueDragon.lua b/gamefiles/data/BlueDragon.lua similarity index 100% rename from gamefiles/locale/english/BlueDragon.lua rename to gamefiles/data/BlueDragon.lua diff --git a/gamefiles/locale/english/blend.txt b/gamefiles/data/blend.txt similarity index 100% rename from gamefiles/locale/english/blend.txt rename to gamefiles/data/blend.txt diff --git a/gamefiles/locale/english/charset.txt b/gamefiles/data/charset.txt similarity index 100% rename from gamefiles/locale/english/charset.txt rename to gamefiles/data/charset.txt diff --git a/gamefiles/locale/english/common_drop_item.txt b/gamefiles/data/common_drop_item.txt similarity index 100% rename from gamefiles/locale/english/common_drop_item.txt rename to gamefiles/data/common_drop_item.txt diff --git a/gamefiles/locale/english/cube.txt b/gamefiles/data/cube.txt similarity index 100% rename from gamefiles/locale/english/cube.txt rename to gamefiles/data/cube.txt diff --git a/gamefiles/locale/english/dragon_soul_table.txt b/gamefiles/data/dragon_soul_table.txt similarity index 100% rename from gamefiles/locale/english/dragon_soul_table.txt rename to gamefiles/data/dragon_soul_table.txt diff --git a/gamefiles/locale/english/drop_item_group.txt b/gamefiles/data/drop_item_group.txt similarity index 100% rename from gamefiles/locale/english/drop_item_group.txt rename to gamefiles/data/drop_item_group.txt diff --git a/gamefiles/locale/english/etc_drop_item.txt b/gamefiles/data/etc_drop_item.txt similarity index 100% rename from gamefiles/locale/english/etc_drop_item.txt rename to gamefiles/data/etc_drop_item.txt diff --git a/gamefiles/locale/english/fishing.txt b/gamefiles/data/fishing.txt similarity index 100% rename from gamefiles/locale/english/fishing.txt rename to gamefiles/data/fishing.txt diff --git a/gamefiles/locale/english/forkedmapindex.txt b/gamefiles/data/forkedmapindex.txt similarity index 100% rename from gamefiles/locale/english/forkedmapindex.txt rename to gamefiles/data/forkedmapindex.txt diff --git a/gamefiles/locale/english/group.txt b/gamefiles/data/group.txt similarity index 100% rename from gamefiles/locale/english/group.txt rename to gamefiles/data/group.txt diff --git a/gamefiles/locale/english/group_group.txt b/gamefiles/data/group_group.txt similarity index 100% rename from gamefiles/locale/english/group_group.txt rename to gamefiles/data/group_group.txt diff --git a/gamefiles/locale/english/insult.txt b/gamefiles/data/insult.txt similarity index 100% rename from gamefiles/locale/english/insult.txt rename to gamefiles/data/insult.txt diff --git a/gamefiles/locale/english/locale_string_cz.txt b/gamefiles/data/locale_string_cz.txt similarity index 100% rename from gamefiles/locale/english/locale_string_cz.txt rename to gamefiles/data/locale_string_cz.txt diff --git a/gamefiles/locale/english/locale_string_de.txt b/gamefiles/data/locale_string_de.txt similarity index 100% rename from gamefiles/locale/english/locale_string_de.txt rename to gamefiles/data/locale_string_de.txt diff --git a/gamefiles/locale/english/locale_string_dk.txt b/gamefiles/data/locale_string_dk.txt similarity index 100% rename from gamefiles/locale/english/locale_string_dk.txt rename to gamefiles/data/locale_string_dk.txt diff --git a/gamefiles/locale/english/locale_string_es.txt b/gamefiles/data/locale_string_es.txt similarity index 100% rename from gamefiles/locale/english/locale_string_es.txt rename to gamefiles/data/locale_string_es.txt diff --git a/gamefiles/locale/english/locale_string_fr.txt b/gamefiles/data/locale_string_fr.txt similarity index 100% rename from gamefiles/locale/english/locale_string_fr.txt rename to gamefiles/data/locale_string_fr.txt diff --git a/gamefiles/locale/english/locale_string_gr.txt b/gamefiles/data/locale_string_gr.txt similarity index 100% rename from gamefiles/locale/english/locale_string_gr.txt rename to gamefiles/data/locale_string_gr.txt diff --git a/gamefiles/locale/english/locale_string_hu.txt b/gamefiles/data/locale_string_hu.txt similarity index 100% rename from gamefiles/locale/english/locale_string_hu.txt rename to gamefiles/data/locale_string_hu.txt diff --git a/gamefiles/locale/english/locale_string_it.txt b/gamefiles/data/locale_string_it.txt similarity index 100% rename from gamefiles/locale/english/locale_string_it.txt rename to gamefiles/data/locale_string_it.txt diff --git a/gamefiles/locale/english/locale_string_kr.txt b/gamefiles/data/locale_string_kr.txt similarity index 100% rename from gamefiles/locale/english/locale_string_kr.txt rename to gamefiles/data/locale_string_kr.txt diff --git a/gamefiles/locale/english/locale_string_nl.txt b/gamefiles/data/locale_string_nl.txt similarity index 100% rename from gamefiles/locale/english/locale_string_nl.txt rename to gamefiles/data/locale_string_nl.txt diff --git a/gamefiles/locale/english/locale_string_pl.txt b/gamefiles/data/locale_string_pl.txt similarity index 100% rename from gamefiles/locale/english/locale_string_pl.txt rename to gamefiles/data/locale_string_pl.txt diff --git a/gamefiles/locale/english/locale_string_pt.txt b/gamefiles/data/locale_string_pt.txt similarity index 100% rename from gamefiles/locale/english/locale_string_pt.txt rename to gamefiles/data/locale_string_pt.txt diff --git a/gamefiles/locale/english/locale_string_ro.txt b/gamefiles/data/locale_string_ro.txt similarity index 100% rename from gamefiles/locale/english/locale_string_ro.txt rename to gamefiles/data/locale_string_ro.txt diff --git a/gamefiles/locale/english/locale_string_ru.txt b/gamefiles/data/locale_string_ru.txt similarity index 100% rename from gamefiles/locale/english/locale_string_ru.txt rename to gamefiles/data/locale_string_ru.txt diff --git a/gamefiles/locale/english/locale_string_tr.txt b/gamefiles/data/locale_string_tr.txt similarity index 100% rename from gamefiles/locale/english/locale_string_tr.txt rename to gamefiles/data/locale_string_tr.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/MapProperty.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/MapProperty.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/MapProperty.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/Setting.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/Setting.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/Setting.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/Town.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/Town.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/Town.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/Town.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/boss.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/boss.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/boss.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/boss.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/npc.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/npc.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/npc.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/npc.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/regen.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/regen.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/regen.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/regen.txt diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/server_attr b/gamefiles/data/map/Metin2_map_CapeDragonHead/server_attr similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/server_attr rename to gamefiles/data/map/Metin2_map_CapeDragonHead/server_attr diff --git a/gamefiles/locale/english/map/Metin2_map_CapeDragonHead/stone.txt b/gamefiles/data/map/Metin2_map_CapeDragonHead/stone.txt similarity index 100% rename from gamefiles/locale/english/map/Metin2_map_CapeDragonHead/stone.txt rename to gamefiles/data/map/Metin2_map_CapeDragonHead/stone.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level10.txt b/gamefiles/data/map/easter/metin_regen_level10.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level10.txt rename to gamefiles/data/map/easter/metin_regen_level10.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level20.txt b/gamefiles/data/map/easter/metin_regen_level20.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level20.txt rename to gamefiles/data/map/easter/metin_regen_level20.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level30.txt b/gamefiles/data/map/easter/metin_regen_level30.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level30.txt rename to gamefiles/data/map/easter/metin_regen_level30.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level40.txt b/gamefiles/data/map/easter/metin_regen_level40.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level40.txt rename to gamefiles/data/map/easter/metin_regen_level40.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level50.txt b/gamefiles/data/map/easter/metin_regen_level50.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level50.txt rename to gamefiles/data/map/easter/metin_regen_level50.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level60.txt b/gamefiles/data/map/easter/metin_regen_level60.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level60.txt rename to gamefiles/data/map/easter/metin_regen_level60.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level70.txt b/gamefiles/data/map/easter/metin_regen_level70.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level70.txt rename to gamefiles/data/map/easter/metin_regen_level70.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level80.txt b/gamefiles/data/map/easter/metin_regen_level80.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level80.txt rename to gamefiles/data/map/easter/metin_regen_level80.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level90.txt b/gamefiles/data/map/easter/metin_regen_level90.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level90.txt rename to gamefiles/data/map/easter/metin_regen_level90.txt diff --git a/gamefiles/locale/english/map/easter/metin_regen_level95.txt b/gamefiles/data/map/easter/metin_regen_level95.txt similarity index 100% rename from gamefiles/locale/english/map/easter/metin_regen_level95.txt rename to gamefiles/data/map/easter/metin_regen_level95.txt diff --git a/gamefiles/locale/english/map/find_map.py b/gamefiles/data/map/find_map.py similarity index 100% rename from gamefiles/locale/english/map/find_map.py rename to gamefiles/data/map/find_map.py diff --git a/gamefiles/locale/english/map/find_map.sh b/gamefiles/data/map/find_map.sh similarity index 100% rename from gamefiles/locale/english/map/find_map.sh rename to gamefiles/data/map/find_map.sh diff --git a/gamefiles/locale/english/map/gm_guild_build/Setting.txt b/gamefiles/data/map/gm_guild_build/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/gm_guild_build/Setting.txt rename to gamefiles/data/map/gm_guild_build/Setting.txt diff --git a/gamefiles/locale/english/map/gm_guild_build/Town.txt b/gamefiles/data/map/gm_guild_build/Town.txt similarity index 100% rename from gamefiles/locale/english/map/gm_guild_build/Town.txt rename to gamefiles/data/map/gm_guild_build/Town.txt diff --git a/gamefiles/locale/english/map/gm_guild_build/npc.txt b/gamefiles/data/map/gm_guild_build/npc.txt similarity index 100% rename from gamefiles/locale/english/map/gm_guild_build/npc.txt rename to gamefiles/data/map/gm_guild_build/npc.txt diff --git a/gamefiles/locale/english/map/gm_guild_build/server_attr b/gamefiles/data/map/gm_guild_build/server_attr similarity index 100% rename from gamefiles/locale/english/map/gm_guild_build/server_attr rename to gamefiles/data/map/gm_guild_build/server_attr diff --git a/gamefiles/locale/english/map/gm_guild_build/server_attr_old b/gamefiles/data/map/gm_guild_build/server_attr_old similarity index 100% rename from gamefiles/locale/english/map/gm_guild_build/server_attr_old rename to gamefiles/data/map/gm_guild_build/server_attr_old diff --git a/gamefiles/locale/english/map/index b/gamefiles/data/map/index similarity index 100% rename from gamefiles/locale/english/map/index rename to gamefiles/data/map/index diff --git a/gamefiles/locale/english/map/map_n_snowm_01/Setting.txt b/gamefiles/data/map/map_n_snowm_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/Setting.txt rename to gamefiles/data/map/map_n_snowm_01/Setting.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_01/Town.txt b/gamefiles/data/map/map_n_snowm_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/Town.txt rename to gamefiles/data/map/map_n_snowm_01/Town.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_01/boss.txt b/gamefiles/data/map/map_n_snowm_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/boss.txt rename to gamefiles/data/map/map_n_snowm_01/boss.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_01/npc.txt b/gamefiles/data/map/map_n_snowm_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/npc.txt rename to gamefiles/data/map/map_n_snowm_01/npc.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_01/regen.txt b/gamefiles/data/map/map_n_snowm_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/regen.txt rename to gamefiles/data/map/map_n_snowm_01/regen.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_01/server_attr b/gamefiles/data/map/map_n_snowm_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/server_attr rename to gamefiles/data/map/map_n_snowm_01/server_attr diff --git a/gamefiles/locale/english/map/map_n_snowm_01/stone.txt b/gamefiles/data/map/map_n_snowm_01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_01/stone.txt rename to gamefiles/data/map/map_n_snowm_01/stone.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/Setting.txt b/gamefiles/data/map/map_n_snowm_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/Setting.txt rename to gamefiles/data/map/map_n_snowm_02/Setting.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/Town.txt b/gamefiles/data/map/map_n_snowm_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/Town.txt rename to gamefiles/data/map/map_n_snowm_02/Town.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/boss.txt b/gamefiles/data/map/map_n_snowm_02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/boss.txt rename to gamefiles/data/map/map_n_snowm_02/boss.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/npc.txt b/gamefiles/data/map/map_n_snowm_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/npc.txt rename to gamefiles/data/map/map_n_snowm_02/npc.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/regen.txt b/gamefiles/data/map/map_n_snowm_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/regen.txt rename to gamefiles/data/map/map_n_snowm_02/regen.txt diff --git a/gamefiles/locale/english/map/map_n_snowm_02/server_attr b/gamefiles/data/map/map_n_snowm_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/server_attr rename to gamefiles/data/map/map_n_snowm_02/server_attr diff --git a/gamefiles/locale/english/map/map_n_snowm_02/stone.txt b/gamefiles/data/map/map_n_snowm_02/stone.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_snowm_02/stone.txt rename to gamefiles/data/map/map_n_snowm_02/stone.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/Setting.txt b/gamefiles/data/map/map_n_threeway/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/Setting.txt rename to gamefiles/data/map/map_n_threeway/Setting.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/Town.txt b/gamefiles/data/map/map_n_threeway/Town.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/Town.txt rename to gamefiles/data/map/map_n_threeway/Town.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/boss.txt b/gamefiles/data/map/map_n_threeway/boss.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/boss.txt rename to gamefiles/data/map/map_n_threeway/boss.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/npc.txt b/gamefiles/data/map/map_n_threeway/npc.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/npc.txt rename to gamefiles/data/map/map_n_threeway/npc.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/regen.txt b/gamefiles/data/map/map_n_threeway/regen.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/regen.txt rename to gamefiles/data/map/map_n_threeway/regen.txt diff --git a/gamefiles/locale/english/map/map_n_threeway/server_attr b/gamefiles/data/map/map_n_threeway/server_attr similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/server_attr rename to gamefiles/data/map/map_n_threeway/server_attr diff --git a/gamefiles/locale/english/map/map_n_threeway/stone.txt b/gamefiles/data/map/map_n_threeway/stone.txt similarity index 100% rename from gamefiles/locale/english/map/map_n_threeway/stone.txt rename to gamefiles/data/map/map_n_threeway/stone.txt diff --git a/gamefiles/locale/english/map/metin2_ad4/Setting.txt b/gamefiles/data/map/metin2_ad4/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_ad4/Setting.txt rename to gamefiles/data/map/metin2_ad4/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_ad4/Town.txt b/gamefiles/data/map/metin2_ad4/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_ad4/Town.txt rename to gamefiles/data/map/metin2_ad4/Town.txt diff --git a/gamefiles/locale/english/map/metin2_ad4/npc.txt b/gamefiles/data/map/metin2_ad4/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_ad4/npc.txt rename to gamefiles/data/map/metin2_ad4/npc.txt diff --git a/gamefiles/locale/english/map/metin2_ad4/regen.txt b/gamefiles/data/map/metin2_ad4/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_ad4/regen.txt rename to gamefiles/data/map/metin2_ad4/regen.txt diff --git a/gamefiles/locale/english/map/metin2_ad4/server_attr b/gamefiles/data/map/metin2_ad4/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_ad4/server_attr rename to gamefiles/data/map/metin2_ad4/server_attr diff --git a/gamefiles/locale/english/map/metin2_guild_village_01/Setting.txt b/gamefiles/data/map/metin2_guild_village_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_01/Setting.txt rename to gamefiles/data/map/metin2_guild_village_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_01/Town.txt b/gamefiles/data/map/metin2_guild_village_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_01/Town.txt rename to gamefiles/data/map/metin2_guild_village_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_01/npc.txt b/gamefiles/data/map/metin2_guild_village_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_01/npc.txt rename to gamefiles/data/map/metin2_guild_village_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_01/server_attr b/gamefiles/data/map/metin2_guild_village_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_01/server_attr rename to gamefiles/data/map/metin2_guild_village_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_guild_village_02/Setting.txt b/gamefiles/data/map/metin2_guild_village_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_02/Setting.txt rename to gamefiles/data/map/metin2_guild_village_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_02/Town.txt b/gamefiles/data/map/metin2_guild_village_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_02/Town.txt rename to gamefiles/data/map/metin2_guild_village_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_02/npc.txt b/gamefiles/data/map/metin2_guild_village_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_02/npc.txt rename to gamefiles/data/map/metin2_guild_village_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_02/server_attr b/gamefiles/data/map/metin2_guild_village_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_02/server_attr rename to gamefiles/data/map/metin2_guild_village_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_guild_village_03/Setting.txt b/gamefiles/data/map/metin2_guild_village_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_03/Setting.txt rename to gamefiles/data/map/metin2_guild_village_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_03/Town.txt b/gamefiles/data/map/metin2_guild_village_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_03/Town.txt rename to gamefiles/data/map/metin2_guild_village_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_03/npc.txt b/gamefiles/data/map/metin2_guild_village_03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_03/npc.txt rename to gamefiles/data/map/metin2_guild_village_03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_guild_village_03/server_attr b/gamefiles/data/map/metin2_guild_village_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_guild_village_03/server_attr rename to gamefiles/data/map/metin2_guild_village_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/MapProperty.txt b/gamefiles/data/map/metin2_map_BayBlackSand/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/MapProperty.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/Setting.txt b/gamefiles/data/map/metin2_map_BayBlackSand/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/Setting.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/Town.txt b/gamefiles/data/map/metin2_map_BayBlackSand/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/Town.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/boss.txt b/gamefiles/data/map/metin2_map_BayBlackSand/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/boss.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/npc.txt b/gamefiles/data/map/metin2_map_BayBlackSand/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/npc.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/regen.txt b/gamefiles/data/map/metin2_map_BayBlackSand/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/regen.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/server_attr b/gamefiles/data/map/metin2_map_BayBlackSand/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/server_attr rename to gamefiles/data/map/metin2_map_BayBlackSand/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_BayBlackSand/stone.txt b/gamefiles/data/map/metin2_map_BayBlackSand/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_BayBlackSand/stone.txt rename to gamefiles/data/map/metin2_map_BayBlackSand/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/MapProperty.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/MapProperty.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/Setting.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/Setting.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/Town.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/Town.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/boss.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/boss.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/npc.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/npc.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/regen.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/regen.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/server_attr b/gamefiles/data/map/metin2_map_Mt_Thunder/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/server_attr rename to gamefiles/data/map/metin2_map_Mt_Thunder/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_Mt_Thunder/stone.txt b/gamefiles/data/map/metin2_map_Mt_Thunder/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_Mt_Thunder/stone.txt rename to gamefiles/data/map/metin2_map_Mt_Thunder/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/MonsterArrange.txt b/gamefiles/data/map/metin2_map_WL_01/MonsterArrange.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/MonsterArrange.txt rename to gamefiles/data/map/metin2_map_WL_01/MonsterArrange.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/Setting.txt b/gamefiles/data/map/metin2_map_WL_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/Setting.txt rename to gamefiles/data/map/metin2_map_WL_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/Town.txt b/gamefiles/data/map/metin2_map_WL_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/Town.txt rename to gamefiles/data/map/metin2_map_WL_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/npc.txt b/gamefiles/data/map/metin2_map_WL_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/npc.txt rename to gamefiles/data/map/metin2_map_WL_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/regen.txt b/gamefiles/data/map/metin2_map_WL_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/regen.txt rename to gamefiles/data/map/metin2_map_WL_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_WL_01/server_attr b/gamefiles/data/map/metin2_map_WL_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_WL_01/server_attr rename to gamefiles/data/map/metin2_map_WL_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_a1/Setting.txt b/gamefiles/data/map/metin2_map_a1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/Setting.txt rename to gamefiles/data/map/metin2_map_a1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_a1/Town.txt b/gamefiles/data/map/metin2_map_a1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/Town.txt rename to gamefiles/data/map/metin2_map_a1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_a1/boss.txt b/gamefiles/data/map/metin2_map_a1/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/boss.txt rename to gamefiles/data/map/metin2_map_a1/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_a1/npc.txt b/gamefiles/data/map/metin2_map_a1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/npc.txt rename to gamefiles/data/map/metin2_map_a1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_a1/regen.txt b/gamefiles/data/map/metin2_map_a1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/regen.txt rename to gamefiles/data/map/metin2_map_a1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_a1/server_attr b/gamefiles/data/map/metin2_map_a1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/server_attr rename to gamefiles/data/map/metin2_map_a1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_a1/stone.txt b/gamefiles/data/map/metin2_map_a1/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a1/stone.txt rename to gamefiles/data/map/metin2_map_a1/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/Setting.txt b/gamefiles/data/map/metin2_map_a2_1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/Setting.txt rename to gamefiles/data/map/metin2_map_a2_1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/Town.txt b/gamefiles/data/map/metin2_map_a2_1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/Town.txt rename to gamefiles/data/map/metin2_map_a2_1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/boss.txt b/gamefiles/data/map/metin2_map_a2_1/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/boss.txt rename to gamefiles/data/map/metin2_map_a2_1/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/npc.txt b/gamefiles/data/map/metin2_map_a2_1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/npc.txt rename to gamefiles/data/map/metin2_map_a2_1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/regen.txt b/gamefiles/data/map/metin2_map_a2_1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/regen.txt rename to gamefiles/data/map/metin2_map_a2_1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/server_attr b/gamefiles/data/map/metin2_map_a2_1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/server_attr rename to gamefiles/data/map/metin2_map_a2_1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_a2_1/stone.txt b/gamefiles/data/map/metin2_map_a2_1/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a2_1/stone.txt rename to gamefiles/data/map/metin2_map_a2_1/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/Setting.txt b/gamefiles/data/map/metin2_map_a3/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/Setting.txt rename to gamefiles/data/map/metin2_map_a3/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/Town.txt b/gamefiles/data/map/metin2_map_a3/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/Town.txt rename to gamefiles/data/map/metin2_map_a3/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/boss.txt b/gamefiles/data/map/metin2_map_a3/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/boss.txt rename to gamefiles/data/map/metin2_map_a3/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/npc.txt b/gamefiles/data/map/metin2_map_a3/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/npc.txt rename to gamefiles/data/map/metin2_map_a3/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/regen.txt b/gamefiles/data/map/metin2_map_a3/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/regen.txt rename to gamefiles/data/map/metin2_map_a3/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_a3/server_attr b/gamefiles/data/map/metin2_map_a3/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/server_attr rename to gamefiles/data/map/metin2_map_a3/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_a3/stone.txt b/gamefiles/data/map/metin2_map_a3/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_a3/stone.txt rename to gamefiles/data/map/metin2_map_a3/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/Setting.txt b/gamefiles/data/map/metin2_map_b1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/Setting.txt rename to gamefiles/data/map/metin2_map_b1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/Town.txt b/gamefiles/data/map/metin2_map_b1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/Town.txt rename to gamefiles/data/map/metin2_map_b1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/boss.txt b/gamefiles/data/map/metin2_map_b1/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/boss.txt rename to gamefiles/data/map/metin2_map_b1/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/npc.txt b/gamefiles/data/map/metin2_map_b1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/npc.txt rename to gamefiles/data/map/metin2_map_b1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/regen.txt b/gamefiles/data/map/metin2_map_b1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/regen.txt rename to gamefiles/data/map/metin2_map_b1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_b1/server_attr b/gamefiles/data/map/metin2_map_b1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/server_attr rename to gamefiles/data/map/metin2_map_b1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_b1/stone.txt b/gamefiles/data/map/metin2_map_b1/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b1/stone.txt rename to gamefiles/data/map/metin2_map_b1/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/Setting.txt b/gamefiles/data/map/metin2_map_b3/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/Setting.txt rename to gamefiles/data/map/metin2_map_b3/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/Town.txt b/gamefiles/data/map/metin2_map_b3/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/Town.txt rename to gamefiles/data/map/metin2_map_b3/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/boss.txt b/gamefiles/data/map/metin2_map_b3/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/boss.txt rename to gamefiles/data/map/metin2_map_b3/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/npc.txt b/gamefiles/data/map/metin2_map_b3/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/npc.txt rename to gamefiles/data/map/metin2_map_b3/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/regen.txt b/gamefiles/data/map/metin2_map_b3/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/regen.txt rename to gamefiles/data/map/metin2_map_b3/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_b3/server_attr b/gamefiles/data/map/metin2_map_b3/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/server_attr rename to gamefiles/data/map/metin2_map_b3/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_b3/stone.txt b/gamefiles/data/map/metin2_map_b3/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_b3/stone.txt rename to gamefiles/data/map/metin2_map_b3/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena01/Setting.txt b/gamefiles/data/map/metin2_map_battlearena01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena01/Setting.txt rename to gamefiles/data/map/metin2_map_battlearena01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena01/Town.txt b/gamefiles/data/map/metin2_map_battlearena01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena01/Town.txt rename to gamefiles/data/map/metin2_map_battlearena01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena01/npc.txt b/gamefiles/data/map/metin2_map_battlearena01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena01/npc.txt rename to gamefiles/data/map/metin2_map_battlearena01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena01/regen00.txt b/gamefiles/data/map/metin2_map_battlearena01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena01/regen00.txt rename to gamefiles/data/map/metin2_map_battlearena01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena01/server_attr b/gamefiles/data/map/metin2_map_battlearena01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena01/server_attr rename to gamefiles/data/map/metin2_map_battlearena01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_battlearena02/Setting.txt b/gamefiles/data/map/metin2_map_battlearena02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena02/Setting.txt rename to gamefiles/data/map/metin2_map_battlearena02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena02/Town.txt b/gamefiles/data/map/metin2_map_battlearena02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena02/Town.txt rename to gamefiles/data/map/metin2_map_battlearena02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena02/npc.txt b/gamefiles/data/map/metin2_map_battlearena02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena02/npc.txt rename to gamefiles/data/map/metin2_map_battlearena02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena02/regen00.txt b/gamefiles/data/map/metin2_map_battlearena02/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena02/regen00.txt rename to gamefiles/data/map/metin2_map_battlearena02/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena02/server_attr b/gamefiles/data/map/metin2_map_battlearena02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena02/server_attr rename to gamefiles/data/map/metin2_map_battlearena02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_battlearena03/Setting.txt b/gamefiles/data/map/metin2_map_battlearena03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena03/Setting.txt rename to gamefiles/data/map/metin2_map_battlearena03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena03/Town.txt b/gamefiles/data/map/metin2_map_battlearena03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena03/Town.txt rename to gamefiles/data/map/metin2_map_battlearena03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena03/npc.txt b/gamefiles/data/map/metin2_map_battlearena03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena03/npc.txt rename to gamefiles/data/map/metin2_map_battlearena03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena03/regen00.txt b/gamefiles/data/map/metin2_map_battlearena03/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena03/regen00.txt rename to gamefiles/data/map/metin2_map_battlearena03/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_battlearena03/server_attr b/gamefiles/data/map/metin2_map_battlearena03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_battlearena03/server_attr rename to gamefiles/data/map/metin2_map_battlearena03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_bf/Setting.txt b/gamefiles/data/map/metin2_map_bf/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf/Setting.txt rename to gamefiles/data/map/metin2_map_bf/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf/Town.txt b/gamefiles/data/map/metin2_map_bf/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf/Town.txt rename to gamefiles/data/map/metin2_map_bf/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf/npc.txt b/gamefiles/data/map/metin2_map_bf/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf/npc.txt rename to gamefiles/data/map/metin2_map_bf/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf/regen.txt b/gamefiles/data/map/metin2_map_bf/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf/regen.txt rename to gamefiles/data/map/metin2_map_bf/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf/server_attr b/gamefiles/data/map/metin2_map_bf/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf/server_attr rename to gamefiles/data/map/metin2_map_bf/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_bf_02/Setting.txt b/gamefiles/data/map/metin2_map_bf_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_02/Setting.txt rename to gamefiles/data/map/metin2_map_bf_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_02/Town.txt b/gamefiles/data/map/metin2_map_bf_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_02/Town.txt rename to gamefiles/data/map/metin2_map_bf_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_02/npc.txt b/gamefiles/data/map/metin2_map_bf_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_02/npc.txt rename to gamefiles/data/map/metin2_map_bf_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_02/regen.txt b/gamefiles/data/map/metin2_map_bf_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_02/regen.txt rename to gamefiles/data/map/metin2_map_bf_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_02/server_attr b/gamefiles/data/map/metin2_map_bf_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_02/server_attr rename to gamefiles/data/map/metin2_map_bf_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_bf_03/Setting.txt b/gamefiles/data/map/metin2_map_bf_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_03/Setting.txt rename to gamefiles/data/map/metin2_map_bf_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_03/Town.txt b/gamefiles/data/map/metin2_map_bf_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_03/Town.txt rename to gamefiles/data/map/metin2_map_bf_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_03/npc.txt b/gamefiles/data/map/metin2_map_bf_03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_03/npc.txt rename to gamefiles/data/map/metin2_map_bf_03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_03/regen.txt b/gamefiles/data/map/metin2_map_bf_03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_03/regen.txt rename to gamefiles/data/map/metin2_map_bf_03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_bf_03/server_attr b/gamefiles/data/map/metin2_map_bf_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_bf_03/server_attr rename to gamefiles/data/map/metin2_map_bf_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_c1/Setting.txt b/gamefiles/data/map/metin2_map_c1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/Setting.txt rename to gamefiles/data/map/metin2_map_c1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_c1/Town.txt b/gamefiles/data/map/metin2_map_c1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/Town.txt rename to gamefiles/data/map/metin2_map_c1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_c1/boss.txt b/gamefiles/data/map/metin2_map_c1/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/boss.txt rename to gamefiles/data/map/metin2_map_c1/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_c1/npc.txt b/gamefiles/data/map/metin2_map_c1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/npc.txt rename to gamefiles/data/map/metin2_map_c1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_c1/regen.txt b/gamefiles/data/map/metin2_map_c1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/regen.txt rename to gamefiles/data/map/metin2_map_c1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_c1/server_attr b/gamefiles/data/map/metin2_map_c1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/server_attr rename to gamefiles/data/map/metin2_map_c1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_c1/stone.txt b/gamefiles/data/map/metin2_map_c1/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c1/stone.txt rename to gamefiles/data/map/metin2_map_c1/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/Setting.txt b/gamefiles/data/map/metin2_map_c3/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/Setting.txt rename to gamefiles/data/map/metin2_map_c3/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/Town.txt b/gamefiles/data/map/metin2_map_c3/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/Town.txt rename to gamefiles/data/map/metin2_map_c3/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/boss.txt b/gamefiles/data/map/metin2_map_c3/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/boss.txt rename to gamefiles/data/map/metin2_map_c3/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/npc.txt b/gamefiles/data/map/metin2_map_c3/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/npc.txt rename to gamefiles/data/map/metin2_map_c3/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/regen.txt b/gamefiles/data/map/metin2_map_c3/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/regen.txt rename to gamefiles/data/map/metin2_map_c3/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_c3/server_attr b/gamefiles/data/map/metin2_map_c3/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/server_attr rename to gamefiles/data/map/metin2_map_c3/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_c3/stone.txt b/gamefiles/data/map/metin2_map_c3/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_c3/stone.txt rename to gamefiles/data/map/metin2_map_c3/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/MapProperty.txt b/gamefiles/data/map/metin2_map_dawnmistwood/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/MapProperty.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/Setting.txt b/gamefiles/data/map/metin2_map_dawnmistwood/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/Setting.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/Town.txt b/gamefiles/data/map/metin2_map_dawnmistwood/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/Town.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/boss.txt b/gamefiles/data/map/metin2_map_dawnmistwood/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/boss.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/npc.txt b/gamefiles/data/map/metin2_map_dawnmistwood/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/npc.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/regen.txt b/gamefiles/data/map/metin2_map_dawnmistwood/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/regen.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/server_attr b/gamefiles/data/map/metin2_map_dawnmistwood/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/server_attr rename to gamefiles/data/map/metin2_map_dawnmistwood/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_dawnmistwood/stone.txt b/gamefiles/data/map/metin2_map_dawnmistwood/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dawnmistwood/stone.txt rename to gamefiles/data/map/metin2_map_dawnmistwood/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/Setting.txt b/gamefiles/data/map/metin2_map_dd/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/Setting.txt rename to gamefiles/data/map/metin2_map_dd/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/Town.txt b/gamefiles/data/map/metin2_map_dd/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/Town.txt rename to gamefiles/data/map/metin2_map_dd/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base2_npc.txt b/gamefiles/data/map/metin2_map_dd/base2_npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base2_npc.txt rename to gamefiles/data/map/metin2_map_dd/base2_npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base2_regen.txt b/gamefiles/data/map/metin2_map_dd/base2_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base2_regen.txt rename to gamefiles/data/map/metin2_map_dd/base2_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base3_regen.txt b/gamefiles/data/map/metin2_map_dd/base3_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base3_regen.txt rename to gamefiles/data/map/metin2_map_dd/base3_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base4_portals.txt b/gamefiles/data/map/metin2_map_dd/base4_portals.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base4_portals.txt rename to gamefiles/data/map/metin2_map_dd/base4_portals.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base4_regen.txt b/gamefiles/data/map/metin2_map_dd/base4_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base4_regen.txt rename to gamefiles/data/map/metin2_map_dd/base4_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base5_regen.txt b/gamefiles/data/map/metin2_map_dd/base5_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base5_regen.txt rename to gamefiles/data/map/metin2_map_dd/base5_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base6_regen.txt b/gamefiles/data/map/metin2_map_dd/base6_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base6_regen.txt rename to gamefiles/data/map/metin2_map_dd/base6_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/base7_regen.txt b/gamefiles/data/map/metin2_map_dd/base7_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/base7_regen.txt rename to gamefiles/data/map/metin2_map_dd/base7_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/boss.txt b/gamefiles/data/map/metin2_map_dd/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/boss.txt rename to gamefiles/data/map/metin2_map_dd/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/npc.txt b/gamefiles/data/map/metin2_map_dd/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/npc.txt rename to gamefiles/data/map/metin2_map_dd/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/regen.txt b/gamefiles/data/map/metin2_map_dd/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/regen.txt rename to gamefiles/data/map/metin2_map_dd/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dd/server_attr b/gamefiles/data/map/metin2_map_dd/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/server_attr rename to gamefiles/data/map/metin2_map_dd/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_dd/stone.txt b/gamefiles/data/map/metin2_map_dd/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dd/stone.txt rename to gamefiles/data/map/metin2_map_dd/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_devilcatacomb/Setting.txt b/gamefiles/data/map/metin2_map_devilcatacomb/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_devilcatacomb/Setting.txt rename to gamefiles/data/map/metin2_map_devilcatacomb/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_devilcatacomb/Town.txt b/gamefiles/data/map/metin2_map_devilcatacomb/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_devilcatacomb/Town.txt rename to gamefiles/data/map/metin2_map_devilcatacomb/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_devilcatacomb/regen.txt b/gamefiles/data/map/metin2_map_devilcatacomb/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_devilcatacomb/regen.txt rename to gamefiles/data/map/metin2_map_devilcatacomb/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_devilcatacomb/server_attr b/gamefiles/data/map/metin2_map_devilcatacomb/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_devilcatacomb/server_attr rename to gamefiles/data/map/metin2_map_devilcatacomb/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/Setting.txt b/gamefiles/data/map/metin2_map_deviltower1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/Setting.txt rename to gamefiles/data/map/metin2_map_deviltower1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/Town.txt b/gamefiles/data/map/metin2_map_deviltower1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/Town.txt rename to gamefiles/data/map/metin2_map_deviltower1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/npc.txt b/gamefiles/data/map/metin2_map_deviltower1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/npc.txt rename to gamefiles/data/map/metin2_map_deviltower1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/regen.txt b/gamefiles/data/map/metin2_map_deviltower1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/regen.txt rename to gamefiles/data/map/metin2_map_deviltower1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/server_attr b/gamefiles/data/map/metin2_map_deviltower1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/server_attr rename to gamefiles/data/map/metin2_map_deviltower1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_deviltower1/stone.txt b/gamefiles/data/map/metin2_map_deviltower1/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_deviltower1/stone.txt rename to gamefiles/data/map/metin2_map_deviltower1/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/Setting.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/Setting.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/Town.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/Town.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/regen.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/regen.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/server_attr b/gamefiles/data/map/metin2_map_dragon_timeattack_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_01/server_attr rename to gamefiles/data/map/metin2_map_dragon_timeattack_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/Setting.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/Setting.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/Town.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/Town.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/regen.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/regen.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/server_attr b/gamefiles/data/map/metin2_map_dragon_timeattack_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_02/server_attr rename to gamefiles/data/map/metin2_map_dragon_timeattack_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/Setting.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/Setting.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/Town.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/Town.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/regen.txt b/gamefiles/data/map/metin2_map_dragon_timeattack_03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/regen.txt rename to gamefiles/data/map/metin2_map_dragon_timeattack_03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/server_attr b/gamefiles/data/map/metin2_map_dragon_timeattack_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_dragon_timeattack_03/server_attr rename to gamefiles/data/map/metin2_map_dragon_timeattack_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_duel/Setting.txt b/gamefiles/data/map/metin2_map_duel/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_duel/Setting.txt rename to gamefiles/data/map/metin2_map_duel/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_duel/Town.txt b/gamefiles/data/map/metin2_map_duel/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_duel/Town.txt rename to gamefiles/data/map/metin2_map_duel/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_duel/server_attr b/gamefiles/data/map/metin2_map_duel/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_duel/server_attr rename to gamefiles/data/map/metin2_map_duel/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/MapProperty.txt b/gamefiles/data/map/metin2_map_empirewar01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/MapProperty.txt rename to gamefiles/data/map/metin2_map_empirewar01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/Setting.txt b/gamefiles/data/map/metin2_map_empirewar01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/Setting.txt rename to gamefiles/data/map/metin2_map_empirewar01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/Town.txt b/gamefiles/data/map/metin2_map_empirewar01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/Town.txt rename to gamefiles/data/map/metin2_map_empirewar01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/npc.txt b/gamefiles/data/map/metin2_map_empirewar01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/npc.txt rename to gamefiles/data/map/metin2_map_empirewar01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/regen.txt b/gamefiles/data/map/metin2_map_empirewar01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/regen.txt rename to gamefiles/data/map/metin2_map_empirewar01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar01/server_attr b/gamefiles/data/map/metin2_map_empirewar01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar01/server_attr rename to gamefiles/data/map/metin2_map_empirewar01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/MapProperty.txt b/gamefiles/data/map/metin2_map_empirewar02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/MapProperty.txt rename to gamefiles/data/map/metin2_map_empirewar02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/Setting.txt b/gamefiles/data/map/metin2_map_empirewar02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/Setting.txt rename to gamefiles/data/map/metin2_map_empirewar02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/Town.txt b/gamefiles/data/map/metin2_map_empirewar02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/Town.txt rename to gamefiles/data/map/metin2_map_empirewar02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/npc.txt b/gamefiles/data/map/metin2_map_empirewar02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/npc.txt rename to gamefiles/data/map/metin2_map_empirewar02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/regen.txt b/gamefiles/data/map/metin2_map_empirewar02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/regen.txt rename to gamefiles/data/map/metin2_map_empirewar02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar02/server_attr b/gamefiles/data/map/metin2_map_empirewar02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar02/server_attr rename to gamefiles/data/map/metin2_map_empirewar02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/MapProperty.txt b/gamefiles/data/map/metin2_map_empirewar03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/MapProperty.txt rename to gamefiles/data/map/metin2_map_empirewar03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/Setting.txt b/gamefiles/data/map/metin2_map_empirewar03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/Setting.txt rename to gamefiles/data/map/metin2_map_empirewar03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/Town.txt b/gamefiles/data/map/metin2_map_empirewar03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/Town.txt rename to gamefiles/data/map/metin2_map_empirewar03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/npc.txt b/gamefiles/data/map/metin2_map_empirewar03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/npc.txt rename to gamefiles/data/map/metin2_map_empirewar03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/regen.txt b/gamefiles/data/map/metin2_map_empirewar03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/regen.txt rename to gamefiles/data/map/metin2_map_empirewar03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_empirewar03/server_attr b/gamefiles/data/map/metin2_map_empirewar03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_empirewar03/server_attr rename to gamefiles/data/map/metin2_map_empirewar03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_ew02/MapProperty.txt b/gamefiles/data/map/metin2_map_ew02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_ew02/MapProperty.txt rename to gamefiles/data/map/metin2_map_ew02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_ew02/Setting.txt b/gamefiles/data/map/metin2_map_ew02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_ew02/Setting.txt rename to gamefiles/data/map/metin2_map_ew02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_ew02/server_attr b/gamefiles/data/map/metin2_map_ew02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_ew02/server_attr rename to gamefiles/data/map/metin2_map_ew02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_fielddungeon/Setting.txt b/gamefiles/data/map/metin2_map_fielddungeon/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_fielddungeon/Setting.txt rename to gamefiles/data/map/metin2_map_fielddungeon/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_fielddungeon/Town.txt b/gamefiles/data/map/metin2_map_fielddungeon/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_fielddungeon/Town.txt rename to gamefiles/data/map/metin2_map_fielddungeon/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_fielddungeon/regen.txt b/gamefiles/data/map/metin2_map_fielddungeon/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_fielddungeon/regen.txt rename to gamefiles/data/map/metin2_map_fielddungeon/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_fielddungeon/server_attr b/gamefiles/data/map/metin2_map_fielddungeon/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_fielddungeon/server_attr rename to gamefiles/data/map/metin2_map_fielddungeon/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_football/Setting.txt b/gamefiles/data/map/metin2_map_football/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/Setting.txt rename to gamefiles/data/map/metin2_map_football/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_football/Town.txt b/gamefiles/data/map/metin2_map_football/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/Town.txt rename to gamefiles/data/map/metin2_map_football/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Setting.txt b/gamefiles/data/map/metin2_map_football/metin2_map_test1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Setting.txt rename to gamefiles/data/map/metin2_map_football/metin2_map_test1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Town.txt b/gamefiles/data/map/metin2_map_football/metin2_map_test1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Town.txt rename to gamefiles/data/map/metin2_map_football/metin2_map_test1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Town.txt.txt b/gamefiles/data/map/metin2_map_football/metin2_map_test1/Town.txt.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/Town.txt.txt rename to gamefiles/data/map/metin2_map_football/metin2_map_test1/Town.txt.txt diff --git a/gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/server_attr b/gamefiles/data/map/metin2_map_football/metin2_map_test1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/metin2_map_test1/server_attr rename to gamefiles/data/map/metin2_map_football/metin2_map_test1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_football/server_attr b/gamefiles/data/map/metin2_map_football/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_football/server_attr rename to gamefiles/data/map/metin2_map_football/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/Setting.txt b/gamefiles/data/map/metin2_map_guild_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/Setting.txt rename to gamefiles/data/map/metin2_map_guild_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/Town.txt b/gamefiles/data/map/metin2_map_guild_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/Town.txt rename to gamefiles/data/map/metin2_map_guild_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/npc.txt b/gamefiles/data/map/metin2_map_guild_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/npc.txt rename to gamefiles/data/map/metin2_map_guild_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/regen.txt b/gamefiles/data/map/metin2_map_guild_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/regen.txt rename to gamefiles/data/map/metin2_map_guild_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/server_attr b/gamefiles/data/map/metin2_map_guild_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/server_attr rename to gamefiles/data/map/metin2_map_guild_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_guild_01/stone.txt b/gamefiles/data/map/metin2_map_guild_01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_01/stone.txt rename to gamefiles/data/map/metin2_map_guild_01/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/Setting.txt b/gamefiles/data/map/metin2_map_guild_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/Setting.txt rename to gamefiles/data/map/metin2_map_guild_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/Town.txt b/gamefiles/data/map/metin2_map_guild_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/Town.txt rename to gamefiles/data/map/metin2_map_guild_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/npc.txt b/gamefiles/data/map/metin2_map_guild_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/npc.txt rename to gamefiles/data/map/metin2_map_guild_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/regen.txt b/gamefiles/data/map/metin2_map_guild_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/regen.txt rename to gamefiles/data/map/metin2_map_guild_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/server_attr b/gamefiles/data/map/metin2_map_guild_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/server_attr rename to gamefiles/data/map/metin2_map_guild_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_guild_02/stone.txt b/gamefiles/data/map/metin2_map_guild_02/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_02/stone.txt rename to gamefiles/data/map/metin2_map_guild_02/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/Setting.txt b/gamefiles/data/map/metin2_map_guild_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/Setting.txt rename to gamefiles/data/map/metin2_map_guild_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/Town.txt b/gamefiles/data/map/metin2_map_guild_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/Town.txt rename to gamefiles/data/map/metin2_map_guild_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/npc.txt b/gamefiles/data/map/metin2_map_guild_03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/npc.txt rename to gamefiles/data/map/metin2_map_guild_03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/regen.txt b/gamefiles/data/map/metin2_map_guild_03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/regen.txt rename to gamefiles/data/map/metin2_map_guild_03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/server_attr b/gamefiles/data/map/metin2_map_guild_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/server_attr rename to gamefiles/data/map/metin2_map_guild_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_guild_03/stone.txt b/gamefiles/data/map/metin2_map_guild_03/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_03/stone.txt rename to gamefiles/data/map/metin2_map_guild_03/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_inside01/Setting.txt b/gamefiles/data/map/metin2_map_guild_inside01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_inside01/Setting.txt rename to gamefiles/data/map/metin2_map_guild_inside01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_inside01/Town.txt b/gamefiles/data/map/metin2_map_guild_inside01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_inside01/Town.txt rename to gamefiles/data/map/metin2_map_guild_inside01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_guild_inside01/server_attr b/gamefiles/data/map/metin2_map_guild_inside01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_guild_inside01/server_attr rename to gamefiles/data/map/metin2_map_guild_inside01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_holyplace_flame/Setting.txt b/gamefiles/data/map/metin2_map_holyplace_flame/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_holyplace_flame/Setting.txt rename to gamefiles/data/map/metin2_map_holyplace_flame/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_holyplace_flame/Town.txt b/gamefiles/data/map/metin2_map_holyplace_flame/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_holyplace_flame/Town.txt rename to gamefiles/data/map/metin2_map_holyplace_flame/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_holyplace_flame/regen.txt b/gamefiles/data/map/metin2_map_holyplace_flame/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_holyplace_flame/regen.txt rename to gamefiles/data/map/metin2_map_holyplace_flame/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_holyplace_flame/server_attr b/gamefiles/data/map/metin2_map_holyplace_flame/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_holyplace_flame/server_attr rename to gamefiles/data/map/metin2_map_holyplace_flame/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/Setting.txt b/gamefiles/data/map/metin2_map_milgyo/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/Setting.txt rename to gamefiles/data/map/metin2_map_milgyo/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/Town.txt b/gamefiles/data/map/metin2_map_milgyo/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/Town.txt rename to gamefiles/data/map/metin2_map_milgyo/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/boss.txt b/gamefiles/data/map/metin2_map_milgyo/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/boss.txt rename to gamefiles/data/map/metin2_map_milgyo/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/npc.txt b/gamefiles/data/map/metin2_map_milgyo/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/npc.txt rename to gamefiles/data/map/metin2_map_milgyo/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/regen.txt b/gamefiles/data/map/metin2_map_milgyo/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/regen.txt rename to gamefiles/data/map/metin2_map_milgyo/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/server_attr b/gamefiles/data/map/metin2_map_milgyo/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/server_attr rename to gamefiles/data/map/metin2_map_milgyo/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_milgyo/stone.txt b/gamefiles/data/map/metin2_map_milgyo/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo/stone.txt rename to gamefiles/data/map/metin2_map_milgyo/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/Setting.txt b/gamefiles/data/map/metin2_map_milgyo_a/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/Setting.txt rename to gamefiles/data/map/metin2_map_milgyo_a/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/Town.txt b/gamefiles/data/map/metin2_map_milgyo_a/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/Town.txt rename to gamefiles/data/map/metin2_map_milgyo_a/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/boss.txt b/gamefiles/data/map/metin2_map_milgyo_a/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/boss.txt rename to gamefiles/data/map/metin2_map_milgyo_a/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/npc.txt b/gamefiles/data/map/metin2_map_milgyo_a/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/npc.txt rename to gamefiles/data/map/metin2_map_milgyo_a/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/regen.txt b/gamefiles/data/map/metin2_map_milgyo_a/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/regen.txt rename to gamefiles/data/map/metin2_map_milgyo_a/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/server_attr b/gamefiles/data/map/metin2_map_milgyo_a/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/server_attr rename to gamefiles/data/map/metin2_map_milgyo_a/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_milgyo_a/stone.txt b/gamefiles/data/map/metin2_map_milgyo_a/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_milgyo_a/stone.txt rename to gamefiles/data/map/metin2_map_milgyo_a/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon2/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon2/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon2/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon2/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon2/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon2/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon2/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon2/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon2/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon2/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon2/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon2/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon2/regen.txt b/gamefiles/data/map/metin2_map_monkey_dungeon2/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon2/regen.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon2/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon2/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon2/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon2/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon2/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon3/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon3/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon3/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon3/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon3/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon3/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon3/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon3/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon3/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon3/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon3/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon3/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon3/regen.txt b/gamefiles/data/map/metin2_map_monkey_dungeon3/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon3/regen.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon3/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon3/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon3/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon3/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon3/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_11/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_11/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_11/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_11/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_11/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_11/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/regen.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_11/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/regen.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_11/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon_11/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_11/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon_11/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_12/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_12/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_12/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_12/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_12/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_12/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/regen.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_12/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/regen.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_12/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon_12/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_12/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon_12/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/Setting.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_13/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/Setting.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_13/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/Town.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_13/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/Town.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_13/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/npc.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_13/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/npc.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_13/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/regen.txt b/gamefiles/data/map/metin2_map_monkey_dungeon_13/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/regen.txt rename to gamefiles/data/map/metin2_map_monkey_dungeon_13/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/server_attr b/gamefiles/data/map/metin2_map_monkey_dungeon_13/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_monkey_dungeon_13/server_attr rename to gamefiles/data/map/metin2_map_monkey_dungeon_13/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/Setting.txt b/gamefiles/data/map/metin2_map_n_desert_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/Setting.txt rename to gamefiles/data/map/metin2_map_n_desert_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/Town.txt b/gamefiles/data/map/metin2_map_n_desert_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/Town.txt rename to gamefiles/data/map/metin2_map_n_desert_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/boss.txt b/gamefiles/data/map/metin2_map_n_desert_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/boss.txt rename to gamefiles/data/map/metin2_map_n_desert_01/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/npc.txt b/gamefiles/data/map/metin2_map_n_desert_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/npc.txt rename to gamefiles/data/map/metin2_map_n_desert_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/regen.txt b/gamefiles/data/map/metin2_map_n_desert_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/regen.txt rename to gamefiles/data/map/metin2_map_n_desert_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/server_attr b/gamefiles/data/map/metin2_map_n_desert_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/server_attr rename to gamefiles/data/map/metin2_map_n_desert_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_01/stone.txt b/gamefiles/data/map/metin2_map_n_desert_01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_01/stone.txt rename to gamefiles/data/map/metin2_map_n_desert_01/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/Setting.txt b/gamefiles/data/map/metin2_map_n_desert_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/Setting.txt rename to gamefiles/data/map/metin2_map_n_desert_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/Town.txt b/gamefiles/data/map/metin2_map_n_desert_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/Town.txt rename to gamefiles/data/map/metin2_map_n_desert_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/boss.txt b/gamefiles/data/map/metin2_map_n_desert_02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/boss.txt rename to gamefiles/data/map/metin2_map_n_desert_02/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/npc.txt b/gamefiles/data/map/metin2_map_n_desert_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/npc.txt rename to gamefiles/data/map/metin2_map_n_desert_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/regen.txt b/gamefiles/data/map/metin2_map_n_desert_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/regen.txt rename to gamefiles/data/map/metin2_map_n_desert_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/server_attr b/gamefiles/data/map/metin2_map_n_desert_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/server_attr rename to gamefiles/data/map/metin2_map_n_desert_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_desert_02/stone.txt b/gamefiles/data/map/metin2_map_n_desert_02/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_desert_02/stone.txt rename to gamefiles/data/map/metin2_map_n_desert_02/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/Setting.txt b/gamefiles/data/map/metin2_map_n_flame_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/Setting.txt rename to gamefiles/data/map/metin2_map_n_flame_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/Town.txt b/gamefiles/data/map/metin2_map_n_flame_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/Town.txt rename to gamefiles/data/map/metin2_map_n_flame_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/boss.txt b/gamefiles/data/map/metin2_map_n_flame_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/boss.txt rename to gamefiles/data/map/metin2_map_n_flame_01/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/npc.txt b/gamefiles/data/map/metin2_map_n_flame_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/npc.txt rename to gamefiles/data/map/metin2_map_n_flame_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/regen.txt b/gamefiles/data/map/metin2_map_n_flame_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/regen.txt rename to gamefiles/data/map/metin2_map_n_flame_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/server_attr b/gamefiles/data/map/metin2_map_n_flame_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/server_attr rename to gamefiles/data/map/metin2_map_n_flame_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/server_attr_old b/gamefiles/data/map/metin2_map_n_flame_01/server_attr_old similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/server_attr_old rename to gamefiles/data/map/metin2_map_n_flame_01/server_attr_old diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_01/stone.txt b/gamefiles/data/map/metin2_map_n_flame_01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_01/stone.txt rename to gamefiles/data/map/metin2_map_n_flame_01/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/Setting.txt b/gamefiles/data/map/metin2_map_n_flame_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/Setting.txt rename to gamefiles/data/map/metin2_map_n_flame_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/Town.txt b/gamefiles/data/map/metin2_map_n_flame_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/Town.txt rename to gamefiles/data/map/metin2_map_n_flame_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/boss.txt b/gamefiles/data/map/metin2_map_n_flame_02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/boss.txt rename to gamefiles/data/map/metin2_map_n_flame_02/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/npc.txt b/gamefiles/data/map/metin2_map_n_flame_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/npc.txt rename to gamefiles/data/map/metin2_map_n_flame_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/regen.txt b/gamefiles/data/map/metin2_map_n_flame_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/regen.txt rename to gamefiles/data/map/metin2_map_n_flame_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/server_attr b/gamefiles/data/map/metin2_map_n_flame_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/server_attr rename to gamefiles/data/map/metin2_map_n_flame_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_02/stone.txt b/gamefiles/data/map/metin2_map_n_flame_02/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_02/stone.txt rename to gamefiles/data/map/metin2_map_n_flame_02/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/MapProperty.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/Setting.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/Setting.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/Town.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/Town.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/boss.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/boss.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/npc.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/npc.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/regen.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/regen.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/server_attr b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/server_attr rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/stone.txt b/gamefiles/data/map/metin2_map_n_flame_dungeon_01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_n_flame_dungeon_01/stone.txt rename to gamefiles/data/map/metin2_map_n_flame_dungeon_01/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_naga1/Setting.txt b/gamefiles/data/map/metin2_map_naga1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_naga1/Setting.txt rename to gamefiles/data/map/metin2_map_naga1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_naga1/Town.txt b/gamefiles/data/map/metin2_map_naga1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_naga1/Town.txt rename to gamefiles/data/map/metin2_map_naga1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_naga1/npc.txt b/gamefiles/data/map/metin2_map_naga1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_naga1/npc.txt rename to gamefiles/data/map/metin2_map_naga1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_naga1/regen.txt b/gamefiles/data/map/metin2_map_naga1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_naga1/regen.txt rename to gamefiles/data/map/metin2_map_naga1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_naga1/server_attr b/gamefiles/data/map/metin2_map_naga1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_naga1/server_attr rename to gamefiles/data/map/metin2_map_naga1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/Setting.txt b/gamefiles/data/map/metin2_map_nusluck01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/Setting.txt rename to gamefiles/data/map/metin2_map_nusluck01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/Town.txt b/gamefiles/data/map/metin2_map_nusluck01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/Town.txt rename to gamefiles/data/map/metin2_map_nusluck01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/npc.txt b/gamefiles/data/map/metin2_map_nusluck01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/npc.txt rename to gamefiles/data/map/metin2_map_nusluck01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/regen.txt b/gamefiles/data/map/metin2_map_nusluck01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/regen.txt rename to gamefiles/data/map/metin2_map_nusluck01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/server_attr b/gamefiles/data/map/metin2_map_nusluck01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/server_attr rename to gamefiles/data/map/metin2_map_nusluck01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_nusluck01/stone.txt b/gamefiles/data/map/metin2_map_nusluck01/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_nusluck01/stone.txt rename to gamefiles/data/map/metin2_map_nusluck01/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_oxevent/Setting.txt b/gamefiles/data/map/metin2_map_oxevent/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_oxevent/Setting.txt rename to gamefiles/data/map/metin2_map_oxevent/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_oxevent/Town.txt b/gamefiles/data/map/metin2_map_oxevent/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_oxevent/Town.txt rename to gamefiles/data/map/metin2_map_oxevent/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_oxevent/npc.txt b/gamefiles/data/map/metin2_map_oxevent/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_oxevent/npc.txt rename to gamefiles/data/map/metin2_map_oxevent/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_oxevent/server_attr b/gamefiles/data/map/metin2_map_oxevent/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_oxevent/server_attr rename to gamefiles/data/map/metin2_map_oxevent/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_pvp_arena/Setting.txt b/gamefiles/data/map/metin2_map_pvp_arena/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_pvp_arena/Setting.txt rename to gamefiles/data/map/metin2_map_pvp_arena/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_pvp_arena/Town.txt b/gamefiles/data/map/metin2_map_pvp_arena/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_pvp_arena/Town.txt rename to gamefiles/data/map/metin2_map_pvp_arena/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_pvp_arena/npc.txt b/gamefiles/data/map/metin2_map_pvp_arena/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_pvp_arena/npc.txt rename to gamefiles/data/map/metin2_map_pvp_arena/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_pvp_arena/server_attr b/gamefiles/data/map/metin2_map_pvp_arena/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_pvp_arena/server_attr rename to gamefiles/data/map/metin2_map_pvp_arena/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_resources_zon/Setting.txt b/gamefiles/data/map/metin2_map_resources_zon/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_resources_zon/Setting.txt rename to gamefiles/data/map/metin2_map_resources_zon/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_resources_zon/Town.txt b/gamefiles/data/map/metin2_map_resources_zon/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_resources_zon/Town.txt rename to gamefiles/data/map/metin2_map_resources_zon/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_resources_zon/server_attr b/gamefiles/data/map/metin2_map_resources_zon/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_resources_zon/server_attr rename to gamefiles/data/map/metin2_map_resources_zon/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_shinsutest_01/Setting.txt b/gamefiles/data/map/metin2_map_shinsutest_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_shinsutest_01/Setting.txt rename to gamefiles/data/map/metin2_map_shinsutest_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_shinsutest_01/server_attr b/gamefiles/data/map/metin2_map_shinsutest_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_shinsutest_01/server_attr rename to gamefiles/data/map/metin2_map_shinsutest_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_siege_01/Setting.txt b/gamefiles/data/map/metin2_map_siege_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_01/Setting.txt rename to gamefiles/data/map/metin2_map_siege_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_01/Town.txt b/gamefiles/data/map/metin2_map_siege_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_01/Town.txt rename to gamefiles/data/map/metin2_map_siege_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_01/npc.txt b/gamefiles/data/map/metin2_map_siege_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_01/npc.txt rename to gamefiles/data/map/metin2_map_siege_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_01/server_attr b/gamefiles/data/map/metin2_map_siege_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_01/server_attr rename to gamefiles/data/map/metin2_map_siege_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_siege_02/Setting.txt b/gamefiles/data/map/metin2_map_siege_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_02/Setting.txt rename to gamefiles/data/map/metin2_map_siege_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_02/Town.txt b/gamefiles/data/map/metin2_map_siege_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_02/Town.txt rename to gamefiles/data/map/metin2_map_siege_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_02/npc.txt b/gamefiles/data/map/metin2_map_siege_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_02/npc.txt rename to gamefiles/data/map/metin2_map_siege_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_02/server_attr b/gamefiles/data/map/metin2_map_siege_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_02/server_attr rename to gamefiles/data/map/metin2_map_siege_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_siege_03/Setting.txt b/gamefiles/data/map/metin2_map_siege_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_03/Setting.txt rename to gamefiles/data/map/metin2_map_siege_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_03/Town.txt b/gamefiles/data/map/metin2_map_siege_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_03/Town.txt rename to gamefiles/data/map/metin2_map_siege_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_03/npc.txt b/gamefiles/data/map/metin2_map_siege_03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_03/npc.txt rename to gamefiles/data/map/metin2_map_siege_03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_siege_03/server_attr b/gamefiles/data/map/metin2_map_siege_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_siege_03/server_attr rename to gamefiles/data/map/metin2_map_siege_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/MapProperty.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/boss.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/boss.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_01/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_011/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_011/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_011/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_011/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_011/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_011/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_011/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_011/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_011/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_011/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_011/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_012/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_012/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_012/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_012/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_012/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_012/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_012/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_012/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_012/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_012/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_012/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_013/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_013/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_013/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_013/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_013/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_013/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_013/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_013/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_013/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_013/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_013/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/MapProperty.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/MapProperty.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/boss.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/boss.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_02/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_021/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_021/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_021/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_021/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_021/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_021/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_021/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_021/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_021/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_021/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_021/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_022/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_022/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_022/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_022/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_022/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_022/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_022/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_022/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_022/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_022/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_022/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_023/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_023/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_023/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_023/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_023/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_023/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_023/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_023/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_023/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_023/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_023/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/Setting.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/Setting.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/Town.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/Town.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/instance_regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/instance_regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/instance_regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/instance_regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/npc.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/npc.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/regen.txt b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/regen.txt rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/regen.txt.bak b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/regen.txt.bak similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/regen.txt.bak rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/regen.txt.bak diff --git a/gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/server_attr b/gamefiles/data/map/metin2_map_skipia_dungeon_boss/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_skipia_dungeon_boss/server_attr rename to gamefiles/data/map/metin2_map_skipia_dungeon_boss/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderd/Setting.txt b/gamefiles/data/map/metin2_map_spiderd/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderd/Setting.txt rename to gamefiles/data/map/metin2_map_spiderd/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderd/Town.txt b/gamefiles/data/map/metin2_map_spiderd/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderd/Town.txt rename to gamefiles/data/map/metin2_map_spiderd/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderd/server_attr b/gamefiles/data/map/metin2_map_spiderd/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderd/server_attr rename to gamefiles/data/map/metin2_map_spiderd/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/Setting.txt b/gamefiles/data/map/metin2_map_spiderdungeon/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/Setting.txt rename to gamefiles/data/map/metin2_map_spiderdungeon/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/Town.txt b/gamefiles/data/map/metin2_map_spiderdungeon/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/Town.txt rename to gamefiles/data/map/metin2_map_spiderdungeon/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/boss.txt b/gamefiles/data/map/metin2_map_spiderdungeon/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/boss.txt rename to gamefiles/data/map/metin2_map_spiderdungeon/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/npc.txt b/gamefiles/data/map/metin2_map_spiderdungeon/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/npc.txt rename to gamefiles/data/map/metin2_map_spiderdungeon/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/regen.txt b/gamefiles/data/map/metin2_map_spiderdungeon/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/regen.txt rename to gamefiles/data/map/metin2_map_spiderdungeon/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon/server_attr b/gamefiles/data/map/metin2_map_spiderdungeon/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon/server_attr rename to gamefiles/data/map/metin2_map_spiderdungeon/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/MapProperty.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/MapProperty.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/Setting.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/Setting.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/Town.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/Town.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/boss.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/boss.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/npc.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/npc.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/regen.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/regen.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02/server_attr b/gamefiles/data/map/metin2_map_spiderdungeon_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02/server_attr rename to gamefiles/data/map/metin2_map_spiderdungeon_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/MapProperty.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/MapProperty.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/Setting.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/Setting.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/Town.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/Town.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/npc.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/npc.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/regen.txt b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/regen.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/server_attr b/gamefiles/data/map/metin2_map_spiderdungeon_02_1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_02_1/server_attr rename to gamefiles/data/map/metin2_map_spiderdungeon_02_1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/MapProperty.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/MapProperty.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/Setting.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/Setting.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/Town.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/Town.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/boss.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/boss.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/npc.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/npc.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/regen.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/regen.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03/server_attr b/gamefiles/data/map/metin2_map_spiderdungeon_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03/server_attr rename to gamefiles/data/map/metin2_map_spiderdungeon_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/Setting.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03_old/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/Setting.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03_old/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/Town.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03_old/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/Town.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03_old/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/npc.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03_old/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/npc.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03_old/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/regen.txt b/gamefiles/data/map/metin2_map_spiderdungeon_03_old/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/regen.txt rename to gamefiles/data/map/metin2_map_spiderdungeon_03_old/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/server_attr b/gamefiles/data/map/metin2_map_spiderdungeon_03_old/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_spiderdungeon_03_old/server_attr rename to gamefiles/data/map/metin2_map_spiderdungeon_03_old/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/Setting.txt b/gamefiles/data/map/metin2_map_sungzi/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/Town.txt b/gamefiles/data/map/metin2_map_sungzi/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/Town.txt rename to gamefiles/data/map/metin2_map_sungzi/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/regen00.txt b/gamefiles/data/map/metin2_map_sungzi/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi/server_attr b/gamefiles/data/map/metin2_map_sungzi/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi/server_attr rename to gamefiles/data/map/metin2_map_sungzi/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/Town.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/boss.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/boss.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_01/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_01/server_attr b/gamefiles/data/map/metin2_map_sungzi_desert_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_desert_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/Town.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/server_attr b/gamefiles/data/map/metin2_map_sungzi_desert_hill_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/Town.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/server_attr b/gamefiles/data/map/metin2_map_sungzi_desert_hill_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_02/server_attr rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/Town.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/server_attr b/gamefiles/data/map/metin2_map_sungzi_desert_hill_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_desert_hill_03/server_attr rename to gamefiles/data/map/metin2_map_sungzi_desert_hill_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_hill_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_hill_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_02/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_hill_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_hill_03/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_hill_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/npc.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/regen.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_pass01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_pass01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/npc.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/regen.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_pass02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass02/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_pass02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/Town.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/npc.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/regen.txt b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/server_attr b/gamefiles/data/map/metin2_map_sungzi_flame_pass03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_flame_pass03/server_attr rename to gamefiles/data/map/metin2_map_sungzi_flame_pass03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo/server_attr b/gamefiles/data/map/metin2_map_sungzi_milgyo/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo/server_attr rename to gamefiles/data/map/metin2_map_sungzi_milgyo/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/server_attr b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/server_attr b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_02/server_attr rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/server_attr b/gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_milgyo_pass_03/server_attr rename to gamefiles/data/map/metin2_map_sungzi_milgyo_pass_03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_snow/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_snow/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/Town.txt b/gamefiles/data/map/metin2_map_sungzi_snow/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_snow/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_snow/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow/server_attr b/gamefiles/data/map/metin2_map_sungzi_snow/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow/server_attr rename to gamefiles/data/map/metin2_map_sungzi_snow/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/Town.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/npc.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/server_attr b/gamefiles/data/map/metin2_map_sungzi_snow_pass01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass01/server_attr rename to gamefiles/data/map/metin2_map_sungzi_snow_pass01/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/Town.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/npc.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/server_attr b/gamefiles/data/map/metin2_map_sungzi_snow_pass02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass02/server_attr rename to gamefiles/data/map/metin2_map_sungzi_snow_pass02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/MapProperty.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/MapProperty.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/MapProperty.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/MapProperty.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/Setting.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/Setting.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/Town.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/Town.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/npc.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/npc.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/npc00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/npc00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/npc00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/npc00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_1.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_1.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_1.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_1.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_2.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_2.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_2.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_2.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_3.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_3.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_3.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_3.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_4.txt b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_4.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/regen00_4.txt rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/regen00_4.txt diff --git a/gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/server_attr b/gamefiles/data/map/metin2_map_sungzi_snow_pass03/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_sungzi_snow_pass03/server_attr rename to gamefiles/data/map/metin2_map_sungzi_snow_pass03/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_t1/Setting.txt b/gamefiles/data/map/metin2_map_t1/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t1/Setting.txt rename to gamefiles/data/map/metin2_map_t1/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_t1/Town.txt b/gamefiles/data/map/metin2_map_t1/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t1/Town.txt rename to gamefiles/data/map/metin2_map_t1/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_t1/npc.txt b/gamefiles/data/map/metin2_map_t1/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t1/npc.txt rename to gamefiles/data/map/metin2_map_t1/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_t1/regen.txt b/gamefiles/data/map/metin2_map_t1/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t1/regen.txt rename to gamefiles/data/map/metin2_map_t1/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_t1/server_attr b/gamefiles/data/map/metin2_map_t1/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t1/server_attr rename to gamefiles/data/map/metin2_map_t1/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_t2/Setting.txt b/gamefiles/data/map/metin2_map_t2/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t2/Setting.txt rename to gamefiles/data/map/metin2_map_t2/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_t2/Town.txt b/gamefiles/data/map/metin2_map_t2/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t2/Town.txt rename to gamefiles/data/map/metin2_map_t2/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_t2/server_attr b/gamefiles/data/map/metin2_map_t2/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t2/server_attr rename to gamefiles/data/map/metin2_map_t2/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_t3/Setting.txt b/gamefiles/data/map/metin2_map_t3/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t3/Setting.txt rename to gamefiles/data/map/metin2_map_t3/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_t3/Town.txt b/gamefiles/data/map/metin2_map_t3/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t3/Town.txt rename to gamefiles/data/map/metin2_map_t3/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_t3/server_attr b/gamefiles/data/map/metin2_map_t3/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t3/server_attr rename to gamefiles/data/map/metin2_map_t3/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_t4/Setting.txt b/gamefiles/data/map/metin2_map_t4/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t4/Setting.txt rename to gamefiles/data/map/metin2_map_t4/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_t4/Town.txt b/gamefiles/data/map/metin2_map_t4/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t4/Town.txt rename to gamefiles/data/map/metin2_map_t4/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_t4/server_attr b/gamefiles/data/map/metin2_map_t4/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_t4/server_attr rename to gamefiles/data/map/metin2_map_t4/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_trent/Setting.txt b/gamefiles/data/map/metin2_map_trent/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/Setting.txt rename to gamefiles/data/map/metin2_map_trent/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent/Town.txt b/gamefiles/data/map/metin2_map_trent/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/Town.txt rename to gamefiles/data/map/metin2_map_trent/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent/npc.txt b/gamefiles/data/map/metin2_map_trent/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/npc.txt rename to gamefiles/data/map/metin2_map_trent/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent/regen.txt b/gamefiles/data/map/metin2_map_trent/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/regen.txt rename to gamefiles/data/map/metin2_map_trent/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent/server_attr b/gamefiles/data/map/metin2_map_trent/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/server_attr rename to gamefiles/data/map/metin2_map_trent/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_trent/stone.txt b/gamefiles/data/map/metin2_map_trent/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent/stone.txt rename to gamefiles/data/map/metin2_map_trent/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/Setting.txt b/gamefiles/data/map/metin2_map_trent02/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/Setting.txt rename to gamefiles/data/map/metin2_map_trent02/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/Town.txt b/gamefiles/data/map/metin2_map_trent02/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/Town.txt rename to gamefiles/data/map/metin2_map_trent02/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/boss.txt b/gamefiles/data/map/metin2_map_trent02/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/boss.txt rename to gamefiles/data/map/metin2_map_trent02/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/npc.txt b/gamefiles/data/map/metin2_map_trent02/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/npc.txt rename to gamefiles/data/map/metin2_map_trent02/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/regen.txt b/gamefiles/data/map/metin2_map_trent02/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/regen.txt rename to gamefiles/data/map/metin2_map_trent02/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02/server_attr b/gamefiles/data/map/metin2_map_trent02/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/server_attr rename to gamefiles/data/map/metin2_map_trent02/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_trent02/stone.txt b/gamefiles/data/map/metin2_map_trent02/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02/stone.txt rename to gamefiles/data/map/metin2_map_trent02/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/Setting.txt b/gamefiles/data/map/metin2_map_trent02_a/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/Setting.txt rename to gamefiles/data/map/metin2_map_trent02_a/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/Town.txt b/gamefiles/data/map/metin2_map_trent02_a/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/Town.txt rename to gamefiles/data/map/metin2_map_trent02_a/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/boss.txt b/gamefiles/data/map/metin2_map_trent02_a/boss.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/boss.txt rename to gamefiles/data/map/metin2_map_trent02_a/boss.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/npc.txt b/gamefiles/data/map/metin2_map_trent02_a/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/npc.txt rename to gamefiles/data/map/metin2_map_trent02_a/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/regen.txt b/gamefiles/data/map/metin2_map_trent02_a/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/regen.txt rename to gamefiles/data/map/metin2_map_trent02_a/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/server_attr b/gamefiles/data/map/metin2_map_trent02_a/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/server_attr rename to gamefiles/data/map/metin2_map_trent02_a/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/stone.txt b/gamefiles/data/map/metin2_map_trent02_a/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/stone.txt rename to gamefiles/data/map/metin2_map_trent02_a/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent02_a/trent02.msenv b/gamefiles/data/map/metin2_map_trent02_a/trent02.msenv similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent02_a/trent02.msenv rename to gamefiles/data/map/metin2_map_trent02_a/trent02.msenv diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/Setting.txt b/gamefiles/data/map/metin2_map_trent_a/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/Setting.txt rename to gamefiles/data/map/metin2_map_trent_a/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/Town.txt b/gamefiles/data/map/metin2_map_trent_a/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/Town.txt rename to gamefiles/data/map/metin2_map_trent_a/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/atlas.sub b/gamefiles/data/map/metin2_map_trent_a/atlas.sub similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/atlas.sub rename to gamefiles/data/map/metin2_map_trent_a/atlas.sub diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/npc.txt b/gamefiles/data/map/metin2_map_trent_a/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/npc.txt rename to gamefiles/data/map/metin2_map_trent_a/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/regen.txt b/gamefiles/data/map/metin2_map_trent_a/regen.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/regen.txt rename to gamefiles/data/map/metin2_map_trent_a/regen.txt diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/server_attr b/gamefiles/data/map/metin2_map_trent_a/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/server_attr rename to gamefiles/data/map/metin2_map_trent_a/server_attr diff --git a/gamefiles/locale/english/map/metin2_map_trent_a/stone.txt b/gamefiles/data/map/metin2_map_trent_a/stone.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_trent_a/stone.txt rename to gamefiles/data/map/metin2_map_trent_a/stone.txt diff --git a/gamefiles/locale/english/map/metin2_map_wedding_01/Setting.txt b/gamefiles/data/map/metin2_map_wedding_01/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_wedding_01/Setting.txt rename to gamefiles/data/map/metin2_map_wedding_01/Setting.txt diff --git a/gamefiles/locale/english/map/metin2_map_wedding_01/Town.txt b/gamefiles/data/map/metin2_map_wedding_01/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_wedding_01/Town.txt rename to gamefiles/data/map/metin2_map_wedding_01/Town.txt diff --git a/gamefiles/locale/english/map/metin2_map_wedding_01/npc.txt b/gamefiles/data/map/metin2_map_wedding_01/npc.txt similarity index 100% rename from gamefiles/locale/english/map/metin2_map_wedding_01/npc.txt rename to gamefiles/data/map/metin2_map_wedding_01/npc.txt diff --git a/gamefiles/locale/english/map/metin2_map_wedding_01/server_attr b/gamefiles/data/map/metin2_map_wedding_01/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin2_map_wedding_01/server_attr rename to gamefiles/data/map/metin2_map_wedding_01/server_attr diff --git a/gamefiles/locale/english/map/metin_test/Setting.txt b/gamefiles/data/map/metin_test/Setting.txt similarity index 100% rename from gamefiles/locale/english/map/metin_test/Setting.txt rename to gamefiles/data/map/metin_test/Setting.txt diff --git a/gamefiles/locale/english/map/metin_test/Town.txt b/gamefiles/data/map/metin_test/Town.txt similarity index 100% rename from gamefiles/locale/english/map/metin_test/Town.txt rename to gamefiles/data/map/metin_test/Town.txt diff --git a/gamefiles/locale/english/map/metin_test/server_attr b/gamefiles/data/map/metin_test/server_attr similarity index 100% rename from gamefiles/locale/english/map/metin_test/server_attr rename to gamefiles/data/map/metin_test/server_attr diff --git a/gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_1.txt b/gamefiles/data/map/mob_invasion/mobs_regen_1_1_1.txt similarity index 100% rename from gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_1.txt rename to gamefiles/data/map/mob_invasion/mobs_regen_1_1_1.txt diff --git a/gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_2.txt b/gamefiles/data/map/mob_invasion/mobs_regen_1_1_2.txt similarity index 100% rename from gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_2.txt rename to gamefiles/data/map/mob_invasion/mobs_regen_1_1_2.txt diff --git a/gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_3.txt b/gamefiles/data/map/mob_invasion/mobs_regen_1_1_3.txt similarity index 100% rename from gamefiles/locale/english/map/mob_invasion/mobs_regen_1_1_3.txt rename to gamefiles/data/map/mob_invasion/mobs_regen_1_1_3.txt diff --git a/gamefiles/locale/english/map/mob_invasion/mobs_regen_21_1_1.txt b/gamefiles/data/map/mob_invasion/mobs_regen_21_1_1.txt similarity index 100% rename from gamefiles/locale/english/map/mob_invasion/mobs_regen_21_1_1.txt rename to gamefiles/data/map/mob_invasion/mobs_regen_21_1_1.txt diff --git a/gamefiles/locale/english/map/mob_invasion/mobs_regen_41_1_1.txt b/gamefiles/data/map/mob_invasion/mobs_regen_41_1_1.txt similarity index 100% rename from gamefiles/locale/english/map/mob_invasion/mobs_regen_41_1_1.txt rename to gamefiles/data/map/mob_invasion/mobs_regen_41_1_1.txt diff --git a/gamefiles/locale/english/mob_drop_item.txt b/gamefiles/data/mob_drop_item.txt similarity index 100% rename from gamefiles/locale/english/mob_drop_item.txt rename to gamefiles/data/mob_drop_item.txt diff --git a/gamefiles/locale/english/mob_proto.csv b/gamefiles/data/mob_proto.csv similarity index 100% rename from gamefiles/locale/english/mob_proto.csv rename to gamefiles/data/mob_proto.csv diff --git a/gamefiles/locale/english/monkey_dungeon.lua b/gamefiles/data/monkey_dungeon.lua similarity index 100% rename from gamefiles/locale/english/monkey_dungeon.lua rename to gamefiles/data/monkey_dungeon.lua diff --git a/gamefiles/locale/english/ori_to_new_table.txt b/gamefiles/data/ori_to_new_table.txt similarity index 100% rename from gamefiles/locale/english/ori_to_new_table.txt rename to gamefiles/data/ori_to_new_table.txt diff --git a/gamefiles/locale/english/oxquiz.lua b/gamefiles/data/oxquiz.lua similarity index 100% rename from gamefiles/locale/english/oxquiz.lua rename to gamefiles/data/oxquiz.lua diff --git a/gamefiles/locale/english/oxquiz_germany.lua b/gamefiles/data/oxquiz_germany.lua similarity index 100% rename from gamefiles/locale/english/oxquiz_germany.lua rename to gamefiles/data/oxquiz_germany.lua diff --git a/gamefiles/locale/english/quest/.gitignore b/gamefiles/data/quest/.gitignore similarity index 100% rename from gamefiles/locale/english/quest/.gitignore rename to gamefiles/data/quest/.gitignore diff --git a/gamefiles/locale/english/quest/GFquestlib.lua b/gamefiles/data/quest/GFquestlib.lua similarity index 100% rename from gamefiles/locale/english/quest/GFquestlib.lua rename to gamefiles/data/quest/GFquestlib.lua diff --git a/gamefiles/locale/english/quest/ItemInformer.quest b/gamefiles/data/quest/ItemInformer.quest similarity index 100% rename from gamefiles/locale/english/quest/ItemInformer.quest rename to gamefiles/data/quest/ItemInformer.quest diff --git a/gamefiles/locale/english/quest/arena_manager.quest b/gamefiles/data/quest/arena_manager.quest similarity index 100% rename from gamefiles/locale/english/quest/arena_manager.quest rename to gamefiles/data/quest/arena_manager.quest diff --git a/gamefiles/locale/english/quest/arne_test1.quest b/gamefiles/data/quest/arne_test1.quest similarity index 100% rename from gamefiles/locale/english/quest/arne_test1.quest rename to gamefiles/data/quest/arne_test1.quest diff --git a/gamefiles/locale/english/quest/arne_test2.quest b/gamefiles/data/quest/arne_test2.quest similarity index 100% rename from gamefiles/locale/english/quest/arne_test2.quest rename to gamefiles/data/quest/arne_test2.quest diff --git a/gamefiles/locale/english/quest/assassin_shop_box.quest b/gamefiles/data/quest/assassin_shop_box.quest similarity index 100% rename from gamefiles/locale/english/quest/assassin_shop_box.quest rename to gamefiles/data/quest/assassin_shop_box.quest diff --git a/gamefiles/locale/english/quest/blacksmith.quest b/gamefiles/data/quest/blacksmith.quest similarity index 100% rename from gamefiles/locale/english/quest/blacksmith.quest rename to gamefiles/data/quest/blacksmith.quest diff --git a/gamefiles/locale/english/quest/buy_fishrod.quest b/gamefiles/data/quest/buy_fishrod.quest similarity index 100% rename from gamefiles/locale/english/quest/buy_fishrod.quest rename to gamefiles/data/quest/buy_fishrod.quest diff --git a/gamefiles/locale/english/quest/change_empire.quest b/gamefiles/data/quest/change_empire.quest similarity index 100% rename from gamefiles/locale/english/quest/change_empire.quest rename to gamefiles/data/quest/change_empire.quest diff --git a/gamefiles/locale/english/quest/change_guild_master.quest b/gamefiles/data/quest/change_guild_master.quest similarity index 100% rename from gamefiles/locale/english/quest/change_guild_master.quest rename to gamefiles/data/quest/change_guild_master.quest diff --git a/gamefiles/locale/english/quest/change_name.quest b/gamefiles/data/quest/change_name.quest similarity index 100% rename from gamefiles/locale/english/quest/change_name.quest rename to gamefiles/data/quest/change_name.quest diff --git a/gamefiles/locale/english/quest/charge_cash_by_voucher.quest b/gamefiles/data/quest/charge_cash_by_voucher.quest similarity index 100% rename from gamefiles/locale/english/quest/charge_cash_by_voucher.quest rename to gamefiles/data/quest/charge_cash_by_voucher.quest diff --git a/gamefiles/locale/english/quest/check_collect_reward.quest b/gamefiles/data/quest/check_collect_reward.quest similarity index 100% rename from gamefiles/locale/english/quest/check_collect_reward.quest rename to gamefiles/data/quest/check_collect_reward.quest diff --git a/gamefiles/locale/english/quest/check_trans_ticket.quest b/gamefiles/data/quest/check_trans_ticket.quest similarity index 100% rename from gamefiles/locale/english/quest/check_trans_ticket.quest rename to gamefiles/data/quest/check_trans_ticket.quest diff --git a/gamefiles/locale/english/quest/christmas_costume_shop_box.quest b/gamefiles/data/quest/christmas_costume_shop_box.quest similarity index 100% rename from gamefiles/locale/english/quest/christmas_costume_shop_box.quest rename to gamefiles/data/quest/christmas_costume_shop_box.quest diff --git a/gamefiles/locale/english/quest/christmas_santa.quest b/gamefiles/data/quest/christmas_santa.quest similarity index 100% rename from gamefiles/locale/english/quest/christmas_santa.quest rename to gamefiles/data/quest/christmas_santa.quest diff --git a/gamefiles/locale/english/quest/christmas_tree.quest b/gamefiles/data/quest/christmas_tree.quest similarity index 100% rename from gamefiles/locale/english/quest/christmas_tree.quest rename to gamefiles/data/quest/christmas_tree.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv10.quest b/gamefiles/data/quest/collect_herb_lv10.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv10.quest rename to gamefiles/data/quest/collect_herb_lv10.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv15.quest b/gamefiles/data/quest/collect_herb_lv15.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv15.quest rename to gamefiles/data/quest/collect_herb_lv15.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv20.quest b/gamefiles/data/quest/collect_herb_lv20.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv20.quest rename to gamefiles/data/quest/collect_herb_lv20.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv25.quest b/gamefiles/data/quest/collect_herb_lv25.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv25.quest rename to gamefiles/data/quest/collect_herb_lv25.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv4.quest b/gamefiles/data/quest/collect_herb_lv4.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv4.quest rename to gamefiles/data/quest/collect_herb_lv4.quest diff --git a/gamefiles/locale/english/quest/collect_herb_lv7.quest b/gamefiles/data/quest/collect_herb_lv7.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_herb_lv7.quest rename to gamefiles/data/quest/collect_herb_lv7.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv30.quest b/gamefiles/data/quest/collect_quest_lv30.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv30.quest rename to gamefiles/data/quest/collect_quest_lv30.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv40.quest b/gamefiles/data/quest/collect_quest_lv40.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv40.quest rename to gamefiles/data/quest/collect_quest_lv40.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv50.quest b/gamefiles/data/quest/collect_quest_lv50.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv50.quest rename to gamefiles/data/quest/collect_quest_lv50.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv60.quest b/gamefiles/data/quest/collect_quest_lv60.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv60.quest rename to gamefiles/data/quest/collect_quest_lv60.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv70.quest b/gamefiles/data/quest/collect_quest_lv70.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv70.quest rename to gamefiles/data/quest/collect_quest_lv70.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv80.quest b/gamefiles/data/quest/collect_quest_lv80.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv80.quest rename to gamefiles/data/quest/collect_quest_lv80.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv85.quest b/gamefiles/data/quest/collect_quest_lv85.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv85.quest rename to gamefiles/data/quest/collect_quest_lv85.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv90.quest b/gamefiles/data/quest/collect_quest_lv90.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv90.quest rename to gamefiles/data/quest/collect_quest_lv90.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv92.quest b/gamefiles/data/quest/collect_quest_lv92.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv92.quest rename to gamefiles/data/quest/collect_quest_lv92.quest diff --git a/gamefiles/locale/english/quest/collect_quest_lv94.quest b/gamefiles/data/quest/collect_quest_lv94.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_lv94.quest rename to gamefiles/data/quest/collect_quest_lv94.quest diff --git a/gamefiles/locale/english/quest/collect_quest_reset.quest b/gamefiles/data/quest/collect_quest_reset.quest similarity index 100% rename from gamefiles/locale/english/quest/collect_quest_reset.quest rename to gamefiles/data/quest/collect_quest_reset.quest diff --git a/gamefiles/locale/english/quest/couple_ring.quest b/gamefiles/data/quest/couple_ring.quest similarity index 100% rename from gamefiles/locale/english/quest/couple_ring.quest rename to gamefiles/data/quest/couple_ring.quest diff --git a/gamefiles/locale/english/quest/cube.quest b/gamefiles/data/quest/cube.quest similarity index 100% rename from gamefiles/locale/english/quest/cube.quest rename to gamefiles/data/quest/cube.quest diff --git a/gamefiles/locale/english/quest/cube_opener_list.quest b/gamefiles/data/quest/cube_opener_list.quest similarity index 100% rename from gamefiles/locale/english/quest/cube_opener_list.quest rename to gamefiles/data/quest/cube_opener_list.quest diff --git a/gamefiles/locale/english/quest/devilcatacomb_zone.quest b/gamefiles/data/quest/devilcatacomb_zone.quest similarity index 100% rename from gamefiles/locale/english/quest/devilcatacomb_zone.quest rename to gamefiles/data/quest/devilcatacomb_zone.quest diff --git a/gamefiles/locale/english/quest/deviltower_2.quest b/gamefiles/data/quest/deviltower_2.quest similarity index 100% rename from gamefiles/locale/english/quest/deviltower_2.quest rename to gamefiles/data/quest/deviltower_2.quest diff --git a/gamefiles/locale/english/quest/deviltower_zone.quest b/gamefiles/data/quest/deviltower_zone.quest similarity index 100% rename from gamefiles/locale/english/quest/deviltower_zone.quest rename to gamefiles/data/quest/deviltower_zone.quest diff --git a/gamefiles/locale/english/quest/dragon_lair.quest b/gamefiles/data/quest/dragon_lair.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_lair.quest rename to gamefiles/data/quest/dragon_lair.quest diff --git a/gamefiles/locale/english/quest/dragon_lair_access.quest b/gamefiles/data/quest/dragon_lair_access.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_lair_access.quest rename to gamefiles/data/quest/dragon_lair_access.quest diff --git a/gamefiles/locale/english/quest/dragon_lair_weekly.quest b/gamefiles/data/quest/dragon_lair_weekly.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_lair_weekly.quest rename to gamefiles/data/quest/dragon_lair_weekly.quest diff --git a/gamefiles/locale/english/quest/dragon_soul.quest b/gamefiles/data/quest/dragon_soul.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_soul.quest rename to gamefiles/data/quest/dragon_soul.quest diff --git a/gamefiles/locale/english/quest/dragon_soul_daily_gift.quest b/gamefiles/data/quest/dragon_soul_daily_gift.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_soul_daily_gift.quest rename to gamefiles/data/quest/dragon_soul_daily_gift.quest diff --git a/gamefiles/locale/english/quest/dragon_soul_daily_gift_mgr.quest b/gamefiles/data/quest/dragon_soul_daily_gift_mgr.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_soul_daily_gift_mgr.quest rename to gamefiles/data/quest/dragon_soul_daily_gift_mgr.quest diff --git a/gamefiles/locale/english/quest/dragon_soul_refine.quest b/gamefiles/data/quest/dragon_soul_refine.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_soul_refine.quest rename to gamefiles/data/quest/dragon_soul_refine.quest diff --git a/gamefiles/locale/english/quest/dragon_soul_shop.quest b/gamefiles/data/quest/dragon_soul_shop.quest similarity index 100% rename from gamefiles/locale/english/quest/dragon_soul_shop.quest rename to gamefiles/data/quest/dragon_soul_shop.quest diff --git a/gamefiles/locale/english/quest/energy_system.quest b/gamefiles/data/quest/energy_system.quest similarity index 100% rename from gamefiles/locale/english/quest/energy_system.quest rename to gamefiles/data/quest/energy_system.quest diff --git a/gamefiles/locale/english/quest/entry_event_map.quest b/gamefiles/data/quest/entry_event_map.quest similarity index 100% rename from gamefiles/locale/english/quest/entry_event_map.quest rename to gamefiles/data/quest/entry_event_map.quest diff --git a/gamefiles/locale/english/quest/event_easter.quest b/gamefiles/data/quest/event_easter.quest similarity index 100% rename from gamefiles/locale/english/quest/event_easter.quest rename to gamefiles/data/quest/event_easter.quest diff --git a/gamefiles/locale/english/quest/event_easter_2012.quest b/gamefiles/data/quest/event_easter_2012.quest similarity index 100% rename from gamefiles/locale/english/quest/event_easter_2012.quest rename to gamefiles/data/quest/event_easter_2012.quest diff --git a/gamefiles/locale/english/quest/event_easter_2013.quest b/gamefiles/data/quest/event_easter_2013.quest similarity index 100% rename from gamefiles/locale/english/quest/event_easter_2013.quest rename to gamefiles/data/quest/event_easter_2013.quest diff --git a/gamefiles/locale/english/quest/event_flame_dungeon_open.quest b/gamefiles/data/quest/event_flame_dungeon_open.quest similarity index 100% rename from gamefiles/locale/english/quest/event_flame_dungeon_open.quest rename to gamefiles/data/quest/event_flame_dungeon_open.quest diff --git a/gamefiles/locale/english/quest/event_halloween_hair.quest b/gamefiles/data/quest/event_halloween_hair.quest similarity index 100% rename from gamefiles/locale/english/quest/event_halloween_hair.quest rename to gamefiles/data/quest/event_halloween_hair.quest diff --git a/gamefiles/locale/english/quest/event_mob_invasion.quest b/gamefiles/data/quest/event_mob_invasion.quest similarity index 100% rename from gamefiles/locale/english/quest/event_mob_invasion.quest rename to gamefiles/data/quest/event_mob_invasion.quest diff --git a/gamefiles/locale/english/quest/event_mystery_box.quest b/gamefiles/data/quest/event_mystery_box.quest similarity index 100% rename from gamefiles/locale/english/quest/event_mystery_box.quest rename to gamefiles/data/quest/event_mystery_box.quest diff --git a/gamefiles/locale/english/quest/event_ramadan.quest b/gamefiles/data/quest/event_ramadan.quest similarity index 100% rename from gamefiles/locale/english/quest/event_ramadan.quest rename to gamefiles/data/quest/event_ramadan.quest diff --git a/gamefiles/locale/english/quest/extractKeys.sh b/gamefiles/data/quest/extractKeys.sh similarity index 100% rename from gamefiles/locale/english/quest/extractKeys.sh rename to gamefiles/data/quest/extractKeys.sh diff --git a/gamefiles/locale/english/quest/find_brother_article.quest b/gamefiles/data/quest/find_brother_article.quest similarity index 100% rename from gamefiles/locale/english/quest/find_brother_article.quest rename to gamefiles/data/quest/find_brother_article.quest diff --git a/gamefiles/locale/english/quest/find_senior_soldier.quest b/gamefiles/data/quest/find_senior_soldier.quest similarity index 100% rename from gamefiles/locale/english/quest/find_senior_soldier.quest rename to gamefiles/data/quest/find_senior_soldier.quest diff --git a/gamefiles/locale/english/quest/find_squareguard.quest b/gamefiles/data/quest/find_squareguard.quest similarity index 100% rename from gamefiles/locale/english/quest/find_squareguard.quest rename to gamefiles/data/quest/find_squareguard.quest diff --git a/gamefiles/locale/english/quest/fisher.quest b/gamefiles/data/quest/fisher.quest similarity index 100% rename from gamefiles/locale/english/quest/fisher.quest rename to gamefiles/data/quest/fisher.quest diff --git a/gamefiles/locale/english/quest/flame_dungeon.quest b/gamefiles/data/quest/flame_dungeon.quest similarity index 100% rename from gamefiles/locale/english/quest/flame_dungeon.quest rename to gamefiles/data/quest/flame_dungeon.quest diff --git a/gamefiles/locale/english/quest/forked_road.quest b/gamefiles/data/quest/forked_road.quest similarity index 100% rename from gamefiles/locale/english/quest/forked_road.quest rename to gamefiles/data/quest/forked_road.quest diff --git a/gamefiles/locale/english/quest/fortune_telling.quest b/gamefiles/data/quest/fortune_telling.quest similarity index 100% rename from gamefiles/locale/english/quest/fortune_telling.quest rename to gamefiles/data/quest/fortune_telling.quest diff --git a/gamefiles/locale/english/quest/game_option.quest b/gamefiles/data/quest/game_option.quest similarity index 100% rename from gamefiles/locale/english/quest/game_option.quest rename to gamefiles/data/quest/game_option.quest diff --git a/gamefiles/locale/english/quest/ghost_story.quest b/gamefiles/data/quest/ghost_story.quest similarity index 100% rename from gamefiles/locale/english/quest/ghost_story.quest rename to gamefiles/data/quest/ghost_story.quest diff --git a/gamefiles/locale/english/quest/give_basic_weapon.quest b/gamefiles/data/quest/give_basic_weapon.quest similarity index 100% rename from gamefiles/locale/english/quest/give_basic_weapon.quest rename to gamefiles/data/quest/give_basic_weapon.quest diff --git a/gamefiles/locale/english/quest/give_basic_weapon_new.quest b/gamefiles/data/quest/give_basic_weapon_new.quest similarity index 100% rename from gamefiles/locale/english/quest/give_basic_weapon_new.quest rename to gamefiles/data/quest/give_basic_weapon_new.quest diff --git a/gamefiles/locale/english/quest/goldbar.quest b/gamefiles/data/quest/goldbar.quest similarity index 100% rename from gamefiles/locale/english/quest/goldbar.quest rename to gamefiles/data/quest/goldbar.quest diff --git a/gamefiles/locale/english/quest/goto_empire_castle.quest b/gamefiles/data/quest/goto_empire_castle.quest similarity index 100% rename from gamefiles/locale/english/quest/goto_empire_castle.quest rename to gamefiles/data/quest/goto_empire_castle.quest diff --git a/gamefiles/locale/english/quest/guild_building.quest b/gamefiles/data/quest/guild_building.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_building.quest rename to gamefiles/data/quest/guild_building.quest diff --git a/gamefiles/locale/english/quest/guild_building_alter_of_power.quest b/gamefiles/data/quest/guild_building_alter_of_power.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_building_alter_of_power.quest rename to gamefiles/data/quest/guild_building_alter_of_power.quest diff --git a/gamefiles/locale/english/quest/guild_building_melt.quest b/gamefiles/data/quest/guild_building_melt.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_building_melt.quest rename to gamefiles/data/quest/guild_building_melt.quest diff --git a/gamefiles/locale/english/quest/guild_building_npc.quest b/gamefiles/data/quest/guild_building_npc.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_building_npc.quest rename to gamefiles/data/quest/guild_building_npc.quest diff --git a/gamefiles/locale/english/quest/guild_create.quest b/gamefiles/data/quest/guild_create.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_create.quest rename to gamefiles/data/quest/guild_create.quest diff --git a/gamefiles/locale/english/quest/guild_manage.quest b/gamefiles/data/quest/guild_manage.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_manage.quest rename to gamefiles/data/quest/guild_manage.quest diff --git a/gamefiles/locale/english/quest/guild_ranking.quest b/gamefiles/data/quest/guild_ranking.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_ranking.quest rename to gamefiles/data/quest/guild_ranking.quest diff --git a/gamefiles/locale/english/quest/guild_war_bet.quest b/gamefiles/data/quest/guild_war_bet.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_war_bet.quest rename to gamefiles/data/quest/guild_war_bet.quest diff --git a/gamefiles/locale/english/quest/guild_war_join.quest b/gamefiles/data/quest/guild_war_join.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_war_join.quest rename to gamefiles/data/quest/guild_war_join.quest diff --git a/gamefiles/locale/english/quest/guild_war_observer.quest b/gamefiles/data/quest/guild_war_observer.quest similarity index 100% rename from gamefiles/locale/english/quest/guild_war_observer.quest rename to gamefiles/data/quest/guild_war_observer.quest diff --git a/gamefiles/locale/english/quest/hair.quest b/gamefiles/data/quest/hair.quest similarity index 100% rename from gamefiles/locale/english/quest/hair.quest rename to gamefiles/data/quest/hair.quest diff --git a/gamefiles/locale/english/quest/hair_shop.quest b/gamefiles/data/quest/hair_shop.quest similarity index 100% rename from gamefiles/locale/english/quest/hair_shop.quest rename to gamefiles/data/quest/hair_shop.quest diff --git a/gamefiles/locale/english/quest/harvest_festival.quest b/gamefiles/data/quest/harvest_festival.quest similarity index 100% rename from gamefiles/locale/english/quest/harvest_festival.quest rename to gamefiles/data/quest/harvest_festival.quest diff --git a/gamefiles/locale/english/quest/harvest_festival.quest.1 b/gamefiles/data/quest/harvest_festival.quest.1 similarity index 100% rename from gamefiles/locale/english/quest/harvest_festival.quest.1 rename to gamefiles/data/quest/harvest_festival.quest.1 diff --git a/gamefiles/locale/english/quest/harvest_festival.quest.2 b/gamefiles/data/quest/harvest_festival.quest.2 similarity index 100% rename from gamefiles/locale/english/quest/harvest_festival.quest.2 rename to gamefiles/data/quest/harvest_festival.quest.2 diff --git a/gamefiles/locale/english/quest/heavens_cave_escape.quest b/gamefiles/data/quest/heavens_cave_escape.quest similarity index 100% rename from gamefiles/locale/english/quest/heavens_cave_escape.quest rename to gamefiles/data/quest/heavens_cave_escape.quest diff --git a/gamefiles/locale/english/quest/heavens_cave_keyquest.quest b/gamefiles/data/quest/heavens_cave_keyquest.quest similarity index 100% rename from gamefiles/locale/english/quest/heavens_cave_keyquest.quest rename to gamefiles/data/quest/heavens_cave_keyquest.quest diff --git a/gamefiles/locale/english/quest/horse_exchange_ticket.quest b/gamefiles/data/quest/horse_exchange_ticket.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_exchange_ticket.quest rename to gamefiles/data/quest/horse_exchange_ticket.quest diff --git a/gamefiles/locale/english/quest/horse_guard.quest b/gamefiles/data/quest/horse_guard.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_guard.quest rename to gamefiles/data/quest/horse_guard.quest diff --git a/gamefiles/locale/english/quest/horse_levelup.quest b/gamefiles/data/quest/horse_levelup.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_levelup.quest rename to gamefiles/data/quest/horse_levelup.quest diff --git a/gamefiles/locale/english/quest/horse_menu.quest b/gamefiles/data/quest/horse_menu.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_menu.quest rename to gamefiles/data/quest/horse_menu.quest diff --git a/gamefiles/locale/english/quest/horse_revive.quest b/gamefiles/data/quest/horse_revive.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_revive.quest rename to gamefiles/data/quest/horse_revive.quest diff --git a/gamefiles/locale/english/quest/horse_ride.quest b/gamefiles/data/quest/horse_ride.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_ride.quest rename to gamefiles/data/quest/horse_ride.quest diff --git a/gamefiles/locale/english/quest/horse_summon.quest b/gamefiles/data/quest/horse_summon.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_summon.quest rename to gamefiles/data/quest/horse_summon.quest diff --git a/gamefiles/locale/english/quest/horse_upgrade.quest b/gamefiles/data/quest/horse_upgrade.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_upgrade.quest rename to gamefiles/data/quest/horse_upgrade.quest diff --git a/gamefiles/locale/english/quest/horse_upgrade2.quest b/gamefiles/data/quest/horse_upgrade2.quest similarity index 100% rename from gamefiles/locale/english/quest/horse_upgrade2.quest rename to gamefiles/data/quest/horse_upgrade2.quest diff --git a/gamefiles/locale/english/quest/ingame_message.quest b/gamefiles/data/quest/ingame_message.quest similarity index 100% rename from gamefiles/locale/english/quest/ingame_message.quest rename to gamefiles/data/quest/ingame_message.quest diff --git a/gamefiles/locale/english/quest/is_yang.quest b/gamefiles/data/quest/is_yang.quest similarity index 100% rename from gamefiles/locale/english/quest/is_yang.quest rename to gamefiles/data/quest/is_yang.quest diff --git a/gamefiles/locale/english/quest/item_change_sex.quest b/gamefiles/data/quest/item_change_sex.quest similarity index 100% rename from gamefiles/locale/english/quest/item_change_sex.quest rename to gamefiles/data/quest/item_change_sex.quest diff --git a/gamefiles/locale/english/quest/item_delete.quest b/gamefiles/data/quest/item_delete.quest similarity index 100% rename from gamefiles/locale/english/quest/item_delete.quest rename to gamefiles/data/quest/item_delete.quest diff --git a/gamefiles/locale/english/quest/item_mall.quest b/gamefiles/data/quest/item_mall.quest similarity index 100% rename from gamefiles/locale/english/quest/item_mall.quest rename to gamefiles/data/quest/item_mall.quest diff --git a/gamefiles/locale/english/quest/knut_shop_box.quest b/gamefiles/data/quest/knut_shop_box.quest similarity index 100% rename from gamefiles/locale/english/quest/knut_shop_box.quest rename to gamefiles/data/quest/knut_shop_box.quest diff --git a/gamefiles/locale/english/quest/levelup.quest b/gamefiles/data/quest/levelup.quest similarity index 100% rename from gamefiles/locale/english/quest/levelup.quest rename to gamefiles/data/quest/levelup.quest diff --git a/gamefiles/locale/english/quest/locale.lua b/gamefiles/data/quest/locale.lua similarity index 100% rename from gamefiles/locale/english/quest/locale.lua rename to gamefiles/data/quest/locale.lua diff --git a/gamefiles/locale/english/quest/locale_list b/gamefiles/data/quest/locale_list similarity index 100% rename from gamefiles/locale/english/quest/locale_list rename to gamefiles/data/quest/locale_list diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv100.quest b/gamefiles/data/quest/main_quest_flame_lv100.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv100.quest rename to gamefiles/data/quest/main_quest_flame_lv100.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv101.quest b/gamefiles/data/quest/main_quest_flame_lv101.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv101.quest rename to gamefiles/data/quest/main_quest_flame_lv101.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv102.quest b/gamefiles/data/quest/main_quest_flame_lv102.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv102.quest rename to gamefiles/data/quest/main_quest_flame_lv102.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv103.quest b/gamefiles/data/quest/main_quest_flame_lv103.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv103.quest rename to gamefiles/data/quest/main_quest_flame_lv103.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv104.quest b/gamefiles/data/quest/main_quest_flame_lv104.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv104.quest rename to gamefiles/data/quest/main_quest_flame_lv104.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv105.quest b/gamefiles/data/quest/main_quest_flame_lv105.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv105.quest rename to gamefiles/data/quest/main_quest_flame_lv105.quest diff --git a/gamefiles/locale/english/quest/main_quest_flame_lv99.quest b/gamefiles/data/quest/main_quest_flame_lv99.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_flame_lv99.quest rename to gamefiles/data/quest/main_quest_flame_lv99.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv1.quest b/gamefiles/data/quest/main_quest_lv1.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv1.quest rename to gamefiles/data/quest/main_quest_lv1.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv10.quest b/gamefiles/data/quest/main_quest_lv10.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv10.quest rename to gamefiles/data/quest/main_quest_lv10.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv12.quest b/gamefiles/data/quest/main_quest_lv12.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv12.quest rename to gamefiles/data/quest/main_quest_lv12.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv14.quest b/gamefiles/data/quest/main_quest_lv14.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv14.quest rename to gamefiles/data/quest/main_quest_lv14.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv15.quest b/gamefiles/data/quest/main_quest_lv15.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv15.quest rename to gamefiles/data/quest/main_quest_lv15.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv16.quest b/gamefiles/data/quest/main_quest_lv16.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv16.quest rename to gamefiles/data/quest/main_quest_lv16.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv2.quest b/gamefiles/data/quest/main_quest_lv2.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv2.quest rename to gamefiles/data/quest/main_quest_lv2.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv27.quest b/gamefiles/data/quest/main_quest_lv27.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv27.quest rename to gamefiles/data/quest/main_quest_lv27.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv3.quest b/gamefiles/data/quest/main_quest_lv3.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv3.quest rename to gamefiles/data/quest/main_quest_lv3.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv30.quest b/gamefiles/data/quest/main_quest_lv30.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv30.quest rename to gamefiles/data/quest/main_quest_lv30.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv32.quest b/gamefiles/data/quest/main_quest_lv32.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv32.quest rename to gamefiles/data/quest/main_quest_lv32.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv40.quest b/gamefiles/data/quest/main_quest_lv40.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv40.quest rename to gamefiles/data/quest/main_quest_lv40.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv47.quest b/gamefiles/data/quest/main_quest_lv47.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv47.quest rename to gamefiles/data/quest/main_quest_lv47.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv50.quest b/gamefiles/data/quest/main_quest_lv50.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv50.quest rename to gamefiles/data/quest/main_quest_lv50.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv55.quest b/gamefiles/data/quest/main_quest_lv55.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv55.quest rename to gamefiles/data/quest/main_quest_lv55.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv6.quest b/gamefiles/data/quest/main_quest_lv6.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv6.quest rename to gamefiles/data/quest/main_quest_lv6.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv60.quest b/gamefiles/data/quest/main_quest_lv60.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv60.quest rename to gamefiles/data/quest/main_quest_lv60.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv66.quest b/gamefiles/data/quest/main_quest_lv66.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv66.quest rename to gamefiles/data/quest/main_quest_lv66.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv7.quest b/gamefiles/data/quest/main_quest_lv7.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv7.quest rename to gamefiles/data/quest/main_quest_lv7.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv72.quest b/gamefiles/data/quest/main_quest_lv72.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv72.quest rename to gamefiles/data/quest/main_quest_lv72.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv78.quest b/gamefiles/data/quest/main_quest_lv78.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv78.quest rename to gamefiles/data/quest/main_quest_lv78.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv84.quest b/gamefiles/data/quest/main_quest_lv84.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv84.quest rename to gamefiles/data/quest/main_quest_lv84.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv9.quest b/gamefiles/data/quest/main_quest_lv9.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv9.quest rename to gamefiles/data/quest/main_quest_lv9.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv90.quest b/gamefiles/data/quest/main_quest_lv90.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv90.quest rename to gamefiles/data/quest/main_quest_lv90.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv91.quest b/gamefiles/data/quest/main_quest_lv91.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv91.quest rename to gamefiles/data/quest/main_quest_lv91.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv92.quest b/gamefiles/data/quest/main_quest_lv92.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv92.quest rename to gamefiles/data/quest/main_quest_lv92.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv93.quest b/gamefiles/data/quest/main_quest_lv93.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv93.quest rename to gamefiles/data/quest/main_quest_lv93.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv94.quest b/gamefiles/data/quest/main_quest_lv94.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv94.quest rename to gamefiles/data/quest/main_quest_lv94.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv95.quest b/gamefiles/data/quest/main_quest_lv95.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv95.quest rename to gamefiles/data/quest/main_quest_lv95.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv96.quest b/gamefiles/data/quest/main_quest_lv96.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv96.quest rename to gamefiles/data/quest/main_quest_lv96.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv97.quest b/gamefiles/data/quest/main_quest_lv97.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv97.quest rename to gamefiles/data/quest/main_quest_lv97.quest diff --git a/gamefiles/locale/english/quest/main_quest_lv98.quest b/gamefiles/data/quest/main_quest_lv98.quest similarity index 100% rename from gamefiles/locale/english/quest/main_quest_lv98.quest rename to gamefiles/data/quest/main_quest_lv98.quest diff --git a/gamefiles/locale/english/quest/make.py b/gamefiles/data/quest/make.py similarity index 100% rename from gamefiles/locale/english/quest/make.py rename to gamefiles/data/quest/make.py diff --git a/gamefiles/locale/english/quest/make_wonso.quest b/gamefiles/data/quest/make_wonso.quest similarity index 100% rename from gamefiles/locale/english/quest/make_wonso.quest rename to gamefiles/data/quest/make_wonso.quest diff --git a/gamefiles/locale/english/quest/manwoo.quest b/gamefiles/data/quest/manwoo.quest similarity index 100% rename from gamefiles/locale/english/quest/manwoo.quest rename to gamefiles/data/quest/manwoo.quest diff --git a/gamefiles/locale/english/quest/map_warp.quest b/gamefiles/data/quest/map_warp.quest similarity index 100% rename from gamefiles/locale/english/quest/map_warp.quest rename to gamefiles/data/quest/map_warp.quest diff --git a/gamefiles/locale/english/quest/marriage_manage.quest b/gamefiles/data/quest/marriage_manage.quest similarity index 100% rename from gamefiles/locale/english/quest/marriage_manage.quest rename to gamefiles/data/quest/marriage_manage.quest diff --git a/gamefiles/locale/english/quest/mining.quest b/gamefiles/data/quest/mining.quest similarity index 100% rename from gamefiles/locale/english/quest/mining.quest rename to gamefiles/data/quest/mining.quest diff --git a/gamefiles/locale/english/quest/mount_catcher.quest b/gamefiles/data/quest/mount_catcher.quest similarity index 100% rename from gamefiles/locale/english/quest/mount_catcher.quest rename to gamefiles/data/quest/mount_catcher.quest diff --git a/gamefiles/locale/english/quest/mount_prolongation.quest b/gamefiles/data/quest/mount_prolongation.quest similarity index 100% rename from gamefiles/locale/english/quest/mount_prolongation.quest rename to gamefiles/data/quest/mount_prolongation.quest diff --git a/gamefiles/locale/english/quest/mystery_key.quest b/gamefiles/data/quest/mystery_key.quest similarity index 100% rename from gamefiles/locale/english/quest/mystery_key.quest rename to gamefiles/data/quest/mystery_key.quest diff --git a/gamefiles/locale/english/quest/neutral_warp.quest b/gamefiles/data/quest/neutral_warp.quest similarity index 100% rename from gamefiles/locale/english/quest/neutral_warp.quest rename to gamefiles/data/quest/neutral_warp.quest diff --git a/gamefiles/locale/english/quest/new_christmas.quest b/gamefiles/data/quest/new_christmas.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas.quest rename to gamefiles/data/quest/new_christmas.quest diff --git a/gamefiles/locale/english/quest/new_christmas_2012.quest b/gamefiles/data/quest/new_christmas_2012.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_2012.quest rename to gamefiles/data/quest/new_christmas_2012.quest diff --git a/gamefiles/locale/english/quest/new_christmas_2012_gift_box.quest b/gamefiles/data/quest/new_christmas_2012_gift_box.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_2012_gift_box.quest rename to gamefiles/data/quest/new_christmas_2012_gift_box.quest diff --git a/gamefiles/locale/english/quest/new_christmas_2012_nog.quest b/gamefiles/data/quest/new_christmas_2012_nog.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_2012_nog.quest rename to gamefiles/data/quest/new_christmas_2012_nog.quest diff --git a/gamefiles/locale/english/quest/new_christmas_2012_sock.quest b/gamefiles/data/quest/new_christmas_2012_sock.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_2012_sock.quest rename to gamefiles/data/quest/new_christmas_2012_sock.quest diff --git a/gamefiles/locale/english/quest/new_christmas_gift_box.quest b/gamefiles/data/quest/new_christmas_gift_box.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_gift_box.quest rename to gamefiles/data/quest/new_christmas_gift_box.quest diff --git a/gamefiles/locale/english/quest/new_christmas_nog.quest b/gamefiles/data/quest/new_christmas_nog.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_nog.quest rename to gamefiles/data/quest/new_christmas_nog.quest diff --git a/gamefiles/locale/english/quest/new_christmas_sock.quest b/gamefiles/data/quest/new_christmas_sock.quest similarity index 100% rename from gamefiles/locale/english/quest/new_christmas_sock.quest rename to gamefiles/data/quest/new_christmas_sock.quest diff --git a/gamefiles/locale/english/quest/new_easter_gift_box.quest b/gamefiles/data/quest/new_easter_gift_box.quest similarity index 100% rename from gamefiles/locale/english/quest/new_easter_gift_box.quest rename to gamefiles/data/quest/new_easter_gift_box.quest diff --git a/gamefiles/locale/english/quest/new_easter_gift_box_gf.quest b/gamefiles/data/quest/new_easter_gift_box_gf.quest similarity index 100% rename from gamefiles/locale/english/quest/new_easter_gift_box_gf.quest rename to gamefiles/data/quest/new_easter_gift_box_gf.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv17.quest b/gamefiles/data/quest/new_quest_lv17.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv17.quest rename to gamefiles/data/quest/new_quest_lv17.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv22.quest b/gamefiles/data/quest/new_quest_lv22.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv22.quest rename to gamefiles/data/quest/new_quest_lv22.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv26.quest b/gamefiles/data/quest/new_quest_lv26.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv26.quest rename to gamefiles/data/quest/new_quest_lv26.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv28.quest b/gamefiles/data/quest/new_quest_lv28.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv28.quest rename to gamefiles/data/quest/new_quest_lv28.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv29.quest b/gamefiles/data/quest/new_quest_lv29.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv29.quest rename to gamefiles/data/quest/new_quest_lv29.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv42.quest b/gamefiles/data/quest/new_quest_lv42.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv42.quest rename to gamefiles/data/quest/new_quest_lv42.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv43.quest b/gamefiles/data/quest/new_quest_lv43.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv43.quest rename to gamefiles/data/quest/new_quest_lv43.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv52.quest b/gamefiles/data/quest/new_quest_lv52.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv52.quest rename to gamefiles/data/quest/new_quest_lv52.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv54.quest b/gamefiles/data/quest/new_quest_lv54.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv54.quest rename to gamefiles/data/quest/new_quest_lv54.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv7.quest b/gamefiles/data/quest/new_quest_lv7.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv7.quest rename to gamefiles/data/quest/new_quest_lv7.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv75.quest b/gamefiles/data/quest/new_quest_lv75.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv75.quest rename to gamefiles/data/quest/new_quest_lv75.quest diff --git a/gamefiles/locale/english/quest/new_quest_lv80.quest b/gamefiles/data/quest/new_quest_lv80.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_lv80.quest rename to gamefiles/data/quest/new_quest_lv80.quest diff --git a/gamefiles/locale/english/quest/new_quest_premium_lv4.quest b/gamefiles/data/quest/new_quest_premium_lv4.quest similarity index 100% rename from gamefiles/locale/english/quest/new_quest_premium_lv4.quest rename to gamefiles/data/quest/new_quest_premium_lv4.quest diff --git a/gamefiles/locale/english/quest/new_valentine_day_gift_box.quest b/gamefiles/data/quest/new_valentine_day_gift_box.quest similarity index 100% rename from gamefiles/locale/english/quest/new_valentine_day_gift_box.quest rename to gamefiles/data/quest/new_valentine_day_gift_box.quest diff --git a/gamefiles/locale/english/quest/notify_test_server.quest b/gamefiles/data/quest/notify_test_server.quest similarity index 100% rename from gamefiles/locale/english/quest/notify_test_server.quest rename to gamefiles/data/quest/notify_test_server.quest diff --git a/gamefiles/locale/english/quest/npc_talk.quest b/gamefiles/data/quest/npc_talk.quest similarity index 100% rename from gamefiles/locale/english/quest/npc_talk.quest rename to gamefiles/data/quest/npc_talk.quest diff --git a/gamefiles/locale/english/quest/olympic_badge.quest b/gamefiles/data/quest/olympic_badge.quest similarity index 100% rename from gamefiles/locale/english/quest/olympic_badge.quest rename to gamefiles/data/quest/olympic_badge.quest diff --git a/gamefiles/locale/english/quest/olympic_event_box.quest b/gamefiles/data/quest/olympic_event_box.quest similarity index 100% rename from gamefiles/locale/english/quest/olympic_event_box.quest rename to gamefiles/data/quest/olympic_event_box.quest diff --git a/gamefiles/locale/english/quest/oxevent.quest b/gamefiles/data/quest/oxevent.quest similarity index 100% rename from gamefiles/locale/english/quest/oxevent.quest rename to gamefiles/data/quest/oxevent.quest diff --git a/gamefiles/locale/english/quest/patrol_townaround.quest b/gamefiles/data/quest/patrol_townaround.quest similarity index 100% rename from gamefiles/locale/english/quest/patrol_townaround.quest rename to gamefiles/data/quest/patrol_townaround.quest diff --git a/gamefiles/locale/english/quest/penetration.quest b/gamefiles/data/quest/penetration.quest similarity index 100% rename from gamefiles/locale/english/quest/penetration.quest rename to gamefiles/data/quest/penetration.quest diff --git a/gamefiles/locale/english/quest/pet_system.quest b/gamefiles/data/quest/pet_system.quest similarity index 100% rename from gamefiles/locale/english/quest/pet_system.quest rename to gamefiles/data/quest/pet_system.quest diff --git a/gamefiles/locale/english/quest/polymarble_test.quest b/gamefiles/data/quest/polymarble_test.quest similarity index 100% rename from gamefiles/locale/english/quest/polymarble_test.quest rename to gamefiles/data/quest/polymarble_test.quest diff --git a/gamefiles/locale/english/quest/pony_buy.quest b/gamefiles/data/quest/pony_buy.quest similarity index 100% rename from gamefiles/locale/english/quest/pony_buy.quest rename to gamefiles/data/quest/pony_buy.quest diff --git a/gamefiles/locale/english/quest/pony_levelup.quest b/gamefiles/data/quest/pony_levelup.quest similarity index 100% rename from gamefiles/locale/english/quest/pony_levelup.quest rename to gamefiles/data/quest/pony_levelup.quest diff --git a/gamefiles/locale/english/quest/pre_event_heavens_cave.quest b/gamefiles/data/quest/pre_event_heavens_cave.quest similarity index 100% rename from gamefiles/locale/english/quest/pre_event_heavens_cave.quest rename to gamefiles/data/quest/pre_event_heavens_cave.quest diff --git a/gamefiles/locale/english/quest/pre_qc.py b/gamefiles/data/quest/pre_qc.py similarity index 100% rename from gamefiles/locale/english/quest/pre_qc.py rename to gamefiles/data/quest/pre_qc.py diff --git a/gamefiles/locale/english/quest/pricing_lv12.quest b/gamefiles/data/quest/pricing_lv12.quest similarity index 100% rename from gamefiles/locale/english/quest/pricing_lv12.quest rename to gamefiles/data/quest/pricing_lv12.quest diff --git a/gamefiles/locale/english/quest/pricing_lv3.quest b/gamefiles/data/quest/pricing_lv3.quest similarity index 100% rename from gamefiles/locale/english/quest/pricing_lv3.quest rename to gamefiles/data/quest/pricing_lv3.quest diff --git a/gamefiles/locale/english/quest/pricing_lv40.quest b/gamefiles/data/quest/pricing_lv40.quest similarity index 100% rename from gamefiles/locale/english/quest/pricing_lv40.quest rename to gamefiles/data/quest/pricing_lv40.quest diff --git a/gamefiles/locale/english/quest/pricing_lv9.quest b/gamefiles/data/quest/pricing_lv9.quest similarity index 100% rename from gamefiles/locale/english/quest/pricing_lv9.quest rename to gamefiles/data/quest/pricing_lv9.quest diff --git a/gamefiles/locale/english/quest/priv_empire.quest b/gamefiles/data/quest/priv_empire.quest similarity index 100% rename from gamefiles/locale/english/quest/priv_empire.quest rename to gamefiles/data/quest/priv_empire.quest diff --git a/gamefiles/locale/english/quest/prototype_challenge.quest b/gamefiles/data/quest/prototype_challenge.quest similarity index 100% rename from gamefiles/locale/english/quest/prototype_challenge.quest rename to gamefiles/data/quest/prototype_challenge.quest diff --git a/gamefiles/locale/english/quest/prototype_training_fight.quest b/gamefiles/data/quest/prototype_training_fight.quest similarity index 100% rename from gamefiles/locale/english/quest/prototype_training_fight.quest rename to gamefiles/data/quest/prototype_training_fight.quest diff --git a/gamefiles/locale/english/quest/purge_test.quest b/gamefiles/data/quest/purge_test.quest similarity index 100% rename from gamefiles/locale/english/quest/purge_test.quest rename to gamefiles/data/quest/purge_test.quest diff --git a/gamefiles/locale/english/quest/quest_functions b/gamefiles/data/quest/quest_functions similarity index 100% rename from gamefiles/locale/english/quest/quest_functions rename to gamefiles/data/quest/quest_functions diff --git a/gamefiles/locale/english/quest/questing.lua b/gamefiles/data/quest/questing.lua similarity index 95% rename from gamefiles/locale/english/quest/questing.lua rename to gamefiles/data/quest/questing.lua index f7f93ba..f366a82 100644 --- a/gamefiles/locale/english/quest/questing.lua +++ b/gamefiles/data/quest/questing.lua @@ -46,13 +46,13 @@ Mysql-Funktion der neuesten Generation. --]] mysql_query = function(query) if not pre then - local rt = io.open('CONFIG','r'):read('*all') + local rt = io.open('game.conf','r'):read('*all') pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4') end math.randomseed(os.time()) local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{} - --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- fr MySQL51 - os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- fr MySQL55 + --os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- f�r MySQL51 + os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- f�r MySQL55 for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi); for i = 2, table.getn(t) do table.foreach(t[i],function(a,b) out[i-1] = out[i-1] or {} @@ -100,7 +100,7 @@ function mysql_query_old(query,user,pass,db,ip) os.remove(path) if type(q.l[1]) ~= "table" then return "ERROR" - --error("Fehler bei der MySQL Verbindung oder bei der Rckgabe! Abbruch!") + --error("Fehler bei der MySQL Verbindung oder bei der R�ckgabe! Abbruch!") end local ix = 0 table.foreachi(q.l,function(i,l) @@ -115,7 +115,7 @@ function mysql_query_old(query,user,pass,db,ip) end) end end) -- ENDE der eigentlichen MySQL-Funktion - -- START Zusatz: Hanashi-Kompatibilitt & Fehlerbehandlung + -- START Zusatz: Hanashi-Kompatibilit�t & Fehlerbehandlung q.out.__data = q.l[1] setmetatable(q.out, { __index = function(a,b) if type(b) == "number" then @@ -132,7 +132,7 @@ end @name define @author Mijago @descr -Gibt die Mglichkeit, globale Variablen zu definieren. Es knnen auch Funktionen genutzt werden! Diese werden dann AUSGEFHRT zurckgegeben! +Gibt die M�glichkeit, globale Variablen zu definieren. Es k�nnen auch Funktionen genutzt werden! Diese werden dann AUSGEF�HRT zur�ckgegeben! --]] _G.__data = {} local meta = getmetatable(_G) or {} @@ -155,7 +155,7 @@ end @name duration @author Mijago @descr -Gibt die verbleibende Zeit als String zurck. +Gibt die verbleibende Zeit als String zur�ck. --]] function duration(ipe) local ipe,dat= ipe or 0,'' @@ -183,7 +183,7 @@ end @name is_number @author Mijago @descr -Prft, ob eine Variable eine Zahl ist. +Pr�ft, ob eine Variable eine Zahl ist. --]] function is_number(var) return (type(var) == "number") @@ -194,7 +194,7 @@ end @name is_string @author Mijago @descr -Prft, ob eine Variable ein String ist. +Pr�ft, ob eine Variable ein String ist. --]] function is_string(var) return (type(var) == "string") @@ -205,7 +205,7 @@ end @name is_table @author Mijago @descr -Prft, ob eine Variable eine Tabelle ist. +Pr�ft, ob eine Variable eine Tabelle ist. --]] function is_table(var) return (type(var) == "table") @@ -216,7 +216,7 @@ end @name in_table @author Mijago @descr -Prft, ob eine Variablei in einer Tabelle ist. +Pr�ft, ob eine Variablei in einer Tabelle ist. Aufruf: in_table(var,table) --]] function in_table ( e, t ) @@ -292,7 +292,7 @@ end @name math.minmax @author Mijago @descr -Ermglicht die Angabe von min und max auf einmal +Erm�glicht die Angabe von min und max auf einmal --]] math.minmax = function(min,num,max) return math.min(math.max(num,min),max) @@ -304,8 +304,8 @@ end @name n_input @author Mijago @descr -Fr Inputs nur fr Zahlen. -Die Zahl ist IMMER positiv. Wenn sie nicht gltig ist, ist sie 0. +F�r Inputs nur f�r Zahlen. +Die Zahl ist IMMER positiv. Wenn sie nicht g�ltig ist, ist sie 0. --]] function n_input() return math.abs(tonumber(input()) or 0) @@ -316,7 +316,7 @@ end @name long_input @author Mijago @descr -Ermglicht es, lngere Inputs zu nutzen. +Erm�glicht es, l�ngere Inputs zu nutzen. --]] function long_input() local str,t = "",input() @@ -358,7 +358,7 @@ function select2(tab,...) outputstr=outputstr..'sel = select("'..l..'"' elseif outputcount == max and tablen > outputcount+incit then if tablen ~= outputcount+incit+1 then - outputstr=outputstr..',"'..l..'","Nchste Seite") + '..incit..' ' + outputstr=outputstr..',"'..l..'","N�chste Seite") + '..incit..' ' if nextc > 0 then outputstr = outputstr..'end ' end @@ -392,7 +392,7 @@ end @descr Wie Select2: Eine Tabelle oder eine Stringliste wird auf Seiten aufgeteilt. -Weiter, Zurck und Abbrechen (-1) Buttons. +Weiter, Zur�ck und Abbrechen (-1) Buttons. --]] function select3(...) arg.n = nil @@ -438,7 +438,7 @@ function select3(...) pe[i] = copy_tab(px[i]) local next,back,exit = 0,0,0 if i < table.getn(pe) and table.getn(pe) ~=1 then table.insert(pe[i],table.getn(pe[i])+1,'Weiter zu Seite '..(i+1)); next = table.getn(pe[i]) end - if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zurck zu Seite '..(i-1)); back = table.getn(pe[i]) end + if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zur�ck zu Seite '..(i-1)); back = table.getn(pe[i]) end table.insert(pe[i],table.getn(pe[i])+1,'Abbruch'); exit = table.getn(pe[i]) if table.getn(pe) > 1 then say('Seite '..i..' von '..table.getn(pe)) @@ -564,7 +564,7 @@ zt.s_ms = function(s) @name Autoumbruch in Say @author Mijago @descr -Fgt die Funktion say2 an. +F�gt die Funktion say2 an. Mit ihr werden Texte automatisch umgebrochen. --]] function say2(str,dx) @@ -616,13 +616,14 @@ end @author Mijago; Idee von Benhero @needs mysql_query @descr -Funktion zum ndern des Nutzerpasswortes. +Funktion zum �ndern des Nutzerpasswortes. Angabe des Accounts kann weggelassen werden, als Accountname oder als Account ID angegeben werden. --]] account = account or {} function account.set_pw(pw,ac) if pw == nil then error("Fehler... Passwort muss gesetzt werden!") end local ac = ac or pc.get_account_id() + -- This is weird behaviour and might need to be changed if ever used. if type(ac) == "string" then mysql_query("UPDATE player.player,account.account SET account.password = password("..string.format('%q',pw)..") WHERE account.id = player.account_id and player.name = '"..ac.."' LIMIT 1") elseif type(ac) == "number" then @@ -635,7 +636,7 @@ end @name pc.check_inventory_place @author Mijago @descr -Checkt auf Freie Inventarpltze fr Items der gre X (Hhe). +Checkt auf Freie Inventarpl�tze f�r Items der gr��e X (H�he). --]] function pc.check_inventory_place(size) if size <= 0 or size > 3 then @@ -663,7 +664,7 @@ end @name do_for_other @author Mijago @descr -Fhrt einen String als Luabefehle bei einem anderem User aus. +F�hrt einen String als Luabefehle bei einem anderem User aus. --]] function do_for_other(name,ding) local t = pc.select(find_pc_by_name(name)) @@ -678,7 +679,7 @@ end @descr Setzt die Questflag eines anderen Spielers. --]] -function local_pc_setqf(name, qf,wert) -- Fr die aktuelle Quest +function local_pc_setqf(name, qf,wert) -- F�r die aktuelle Quest local target = find_pc_by_name(name) local t = pc.select(target) pc.setqf(qf,wert) @@ -753,7 +754,7 @@ end @name download @author Mijago @descr -Ldt eine Datei in den Data-Ordner. +L�dt eine Datei in den Data-Ordner. --]] function download(url) os.execute("cd data && fetch "..url.." && cd ..") end @@ -762,7 +763,7 @@ function download(url) os.execute("cd data && fetch "..url.." && cd ..") end @name dot @author Mijago @descr -Fhrt alles Zwischen $ und $ im String aus. +F�hrt alles Zwischen $ und $ im String aus. --]] function dot(x) return string.gsub(x, "%$(.-)%$", function (s) return loadstring(s)() end) @@ -773,7 +774,7 @@ end @name dostr @author Mijago @descr -Fhrt einen String als Lua-Befehl aus. +F�hrt einen String als Lua-Befehl aus. --]] function dostr(str) assert(loadstring(str))() @@ -785,7 +786,7 @@ end @author Mijago @needs mysql_query @descr -Versetzt alle Accounts (auer GM-Accounts) in einen "Wartungsmodus" und wieder zurck. +Versetzt alle Accounts (au�er GM-Accounts) in einen "Wartungsmodus" und wieder zur�ck. --]] function wartungsmodus(v) if v == 1 or v == true then @@ -815,7 +816,7 @@ end @name INI-Parser @author Mijago @descr -Ein NEUER Parser fr INI-Dateien. +Ein NEUER Parser f�r INI-Dateien. --]] ini = { open = function(path) @@ -840,7 +841,7 @@ ini = { else r = r.."\n["..section.."]\n"..key.."="..value end - -- berflssige leerzeichen lschen + -- �berfl�ssige leerzeichen l�schen r=string.gsub(string.gsub(string.gsub(r,"^(\n)",""),"(\n)$",""),"\n\n","\n") local d = io.open(self.path,"w") d:write(r) @@ -895,7 +896,7 @@ ini = { @needs split @descr -- OUTDATED -- -Ein Parser fr Ini-Dateien. +Ein Parser f�r Ini-Dateien. Besitzt eine Eigene Beschreibung der einzelnen Funktionen im Code. --]] do @@ -906,9 +907,9 @@ do -- var:write_int(sub,name,wert) -- var:write_bool(sub,name,boolean) -- var:clear() - -- var:read_str(sub,name,norm) -- Gibt einen String zurck. -| - -- var:read_int(sub,name,norm) -- Gibt eine Zahl zurck -| norm wird zurckgegeben, wenn sub[name] nicht existiert. - -- var:read_bool(sub,name,norm) -- Gibt true / False zurck -| + -- var:read_str(sub,name,norm) -- Gibt einen String zur�ck. -| + -- var:read_int(sub,name,norm) -- Gibt eine Zahl zur�ck -| norm wird zur�ckgegeben, wenn sub[name] nicht existiert. + -- var:read_bool(sub,name,norm) -- Gibt true / False zur�ck -| -- var:delete_key(sub,nm) -- var:delete_section(sub) local ini_f = {} @@ -997,7 +998,7 @@ do if self.sub[sub] == nil then return norm end if self.sub[sub][nm] == nil then return norm else return tonumber(self.sub[sub][nm]) end end - function ini_f:read_bool(sub,nm,norm) -- Norm wird zurckgegeben, wenn der Key nm nicht existiert + function ini_f:read_bool(sub,nm,norm) -- Norm wird zur�ckgegeben, wenn der Key nm nicht existiert if sub == '' or nm == '' or sub == nil or nm == nil then return end self:parse() if self.sub[sub] == nil then return norm end @@ -1032,7 +1033,7 @@ end Wie die alten col-Befehle, sendet aber selbst. Also kein say(col.red('bla')) sondern -csay.red('bla') reicht vllig aus. +csay.red('bla') reicht v�llig aus. --]] csay = setmetatable({__d = { ["aliceblue"] = {240, 248, 255}, ["antiquewhite"] = {250, 235, 215}, ["aqua"] = {0, 255, 255}, ["aquamarine"] = {127, 255, 212}, @@ -1082,7 +1083,7 @@ csay = setmetatable({__d = { @name Farbcodes @author Mijago @descr -Farbcodes fr Say +Farbcodes f�r Say --]] col = col or {} col.list= { diff --git a/gamefiles/locale/english/quest/questlib.lua b/gamefiles/data/quest/questlib.lua similarity index 100% rename from gamefiles/locale/english/quest/questlib.lua rename to gamefiles/data/quest/questlib.lua diff --git a/gamefiles/locale/english/quest/questnpc.txt b/gamefiles/data/quest/questnpc.txt similarity index 100% rename from gamefiles/locale/english/quest/questnpc.txt rename to gamefiles/data/quest/questnpc.txt diff --git a/gamefiles/locale/english/quest/questscroll1.quest b/gamefiles/data/quest/questscroll1.quest similarity index 100% rename from gamefiles/locale/english/quest/questscroll1.quest rename to gamefiles/data/quest/questscroll1.quest diff --git a/gamefiles/locale/english/quest/questscroll2.quest b/gamefiles/data/quest/questscroll2.quest similarity index 100% rename from gamefiles/locale/english/quest/questscroll2.quest rename to gamefiles/data/quest/questscroll2.quest diff --git a/gamefiles/locale/english/quest/questscroll3.quest b/gamefiles/data/quest/questscroll3.quest similarity index 100% rename from gamefiles/locale/english/quest/questscroll3.quest rename to gamefiles/data/quest/questscroll3.quest diff --git a/gamefiles/locale/english/quest/questscroll4.quest b/gamefiles/data/quest/questscroll4.quest similarity index 100% rename from gamefiles/locale/english/quest/questscroll4.quest rename to gamefiles/data/quest/questscroll4.quest diff --git a/gamefiles/locale/english/quest/questscroll5.quest b/gamefiles/data/quest/questscroll5.quest similarity index 100% rename from gamefiles/locale/english/quest/questscroll5.quest rename to gamefiles/data/quest/questscroll5.quest diff --git a/gamefiles/locale/english/quest/reset_scroll.quest b/gamefiles/data/quest/reset_scroll.quest similarity index 100% rename from gamefiles/locale/english/quest/reset_scroll.quest rename to gamefiles/data/quest/reset_scroll.quest diff --git a/gamefiles/locale/english/quest/reset_status.quest b/gamefiles/data/quest/reset_status.quest similarity index 100% rename from gamefiles/locale/english/quest/reset_status.quest rename to gamefiles/data/quest/reset_status.quest diff --git a/gamefiles/locale/english/quest/ride.quest b/gamefiles/data/quest/ride.quest similarity index 100% rename from gamefiles/locale/english/quest/ride.quest rename to gamefiles/data/quest/ride.quest diff --git a/gamefiles/locale/english/quest/ride_halloween.quest b/gamefiles/data/quest/ride_halloween.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_halloween.quest rename to gamefiles/data/quest/ride_halloween.quest diff --git a/gamefiles/locale/english/quest/ride_mount_change.quest b/gamefiles/data/quest/ride_mount_change.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_mount_change.quest rename to gamefiles/data/quest/ride_mount_change.quest diff --git a/gamefiles/locale/english/quest/ride_mystery_boxes.quest b/gamefiles/data/quest/ride_mystery_boxes.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_mystery_boxes.quest rename to gamefiles/data/quest/ride_mystery_boxes.quest diff --git a/gamefiles/locale/english/quest/ride_ramadan.quest b/gamefiles/data/quest/ride_ramadan.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_ramadan.quest rename to gamefiles/data/quest/ride_ramadan.quest diff --git a/gamefiles/locale/english/quest/ride_ticket_change.quest b/gamefiles/data/quest/ride_ticket_change.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_ticket_change.quest rename to gamefiles/data/quest/ride_ticket_change.quest diff --git a/gamefiles/locale/english/quest/ride_upgradable.quest b/gamefiles/data/quest/ride_upgradable.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_upgradable.quest rename to gamefiles/data/quest/ride_upgradable.quest diff --git a/gamefiles/locale/english/quest/ride_xmas.quest b/gamefiles/data/quest/ride_xmas.quest similarity index 100% rename from gamefiles/locale/english/quest/ride_xmas.quest rename to gamefiles/data/quest/ride_xmas.quest diff --git a/gamefiles/locale/english/quest/ring_warp.quest b/gamefiles/data/quest/ring_warp.quest similarity index 100% rename from gamefiles/locale/english/quest/ring_warp.quest rename to gamefiles/data/quest/ring_warp.quest diff --git a/gamefiles/locale/english/quest/setstate_test.quest b/gamefiles/data/quest/setstate_test.quest similarity index 100% rename from gamefiles/locale/english/quest/setstate_test.quest rename to gamefiles/data/quest/setstate_test.quest diff --git a/gamefiles/locale/english/quest/shop_reminder.quest b/gamefiles/data/quest/shop_reminder.quest similarity index 100% rename from gamefiles/locale/english/quest/shop_reminder.quest rename to gamefiles/data/quest/shop_reminder.quest diff --git a/gamefiles/locale/english/quest/shop_ride.quest b/gamefiles/data/quest/shop_ride.quest similarity index 100% rename from gamefiles/locale/english/quest/shop_ride.quest rename to gamefiles/data/quest/shop_ride.quest diff --git a/gamefiles/locale/english/quest/skill_group.quest b/gamefiles/data/quest/skill_group.quest similarity index 100% rename from gamefiles/locale/english/quest/skill_group.quest rename to gamefiles/data/quest/skill_group.quest diff --git a/gamefiles/locale/english/quest/skill_reset2.quest b/gamefiles/data/quest/skill_reset2.quest similarity index 100% rename from gamefiles/locale/english/quest/skill_reset2.quest rename to gamefiles/data/quest/skill_reset2.quest diff --git a/gamefiles/locale/english/quest/spider_dungeon_2floor.quest b/gamefiles/data/quest/spider_dungeon_2floor.quest similarity index 100% rename from gamefiles/locale/english/quest/spider_dungeon_2floor.quest rename to gamefiles/data/quest/spider_dungeon_2floor.quest diff --git a/gamefiles/locale/english/quest/spider_dungeon_3floor_boss.quest b/gamefiles/data/quest/spider_dungeon_3floor_boss.quest similarity index 100% rename from gamefiles/locale/english/quest/spider_dungeon_3floor_boss.quest rename to gamefiles/data/quest/spider_dungeon_3floor_boss.quest diff --git a/gamefiles/locale/english/quest/spider_dungeon_3floor_boss.quest.lua b/gamefiles/data/quest/spider_dungeon_3floor_boss.quest.lua similarity index 100% rename from gamefiles/locale/english/quest/spider_dungeon_3floor_boss.quest.lua rename to gamefiles/data/quest/spider_dungeon_3floor_boss.quest.lua diff --git a/gamefiles/locale/english/quest/subquest_01.quest b/gamefiles/data/quest/subquest_01.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_01.quest rename to gamefiles/data/quest/subquest_01.quest diff --git a/gamefiles/locale/english/quest/subquest_02.quest b/gamefiles/data/quest/subquest_02.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_02.quest rename to gamefiles/data/quest/subquest_02.quest diff --git a/gamefiles/locale/english/quest/subquest_03.quest b/gamefiles/data/quest/subquest_03.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_03.quest rename to gamefiles/data/quest/subquest_03.quest diff --git a/gamefiles/locale/english/quest/subquest_04.quest b/gamefiles/data/quest/subquest_04.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_04.quest rename to gamefiles/data/quest/subquest_04.quest diff --git a/gamefiles/locale/english/quest/subquest_05.quest b/gamefiles/data/quest/subquest_05.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_05.quest rename to gamefiles/data/quest/subquest_05.quest diff --git a/gamefiles/locale/english/quest/subquest_06.quest b/gamefiles/data/quest/subquest_06.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_06.quest rename to gamefiles/data/quest/subquest_06.quest diff --git a/gamefiles/locale/english/quest/subquest_07.quest b/gamefiles/data/quest/subquest_07.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_07.quest rename to gamefiles/data/quest/subquest_07.quest diff --git a/gamefiles/locale/english/quest/subquest_08.quest b/gamefiles/data/quest/subquest_08.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_08.quest rename to gamefiles/data/quest/subquest_08.quest diff --git a/gamefiles/locale/english/quest/subquest_09.quest b/gamefiles/data/quest/subquest_09.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_09.quest rename to gamefiles/data/quest/subquest_09.quest diff --git a/gamefiles/locale/english/quest/subquest_10.quest b/gamefiles/data/quest/subquest_10.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_10.quest rename to gamefiles/data/quest/subquest_10.quest diff --git a/gamefiles/locale/english/quest/subquest_11.quest b/gamefiles/data/quest/subquest_11.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_11.quest rename to gamefiles/data/quest/subquest_11.quest diff --git a/gamefiles/locale/english/quest/subquest_12.quest b/gamefiles/data/quest/subquest_12.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_12.quest rename to gamefiles/data/quest/subquest_12.quest diff --git a/gamefiles/locale/english/quest/subquest_13.quest b/gamefiles/data/quest/subquest_13.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_13.quest rename to gamefiles/data/quest/subquest_13.quest diff --git a/gamefiles/locale/english/quest/subquest_15.quest b/gamefiles/data/quest/subquest_15.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_15.quest rename to gamefiles/data/quest/subquest_15.quest diff --git a/gamefiles/locale/english/quest/subquest_16.quest b/gamefiles/data/quest/subquest_16.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_16.quest rename to gamefiles/data/quest/subquest_16.quest diff --git a/gamefiles/locale/english/quest/subquest_17.quest b/gamefiles/data/quest/subquest_17.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_17.quest rename to gamefiles/data/quest/subquest_17.quest diff --git a/gamefiles/locale/english/quest/subquest_18.quest b/gamefiles/data/quest/subquest_18.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_18.quest rename to gamefiles/data/quest/subquest_18.quest diff --git a/gamefiles/locale/english/quest/subquest_19.quest b/gamefiles/data/quest/subquest_19.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_19.quest rename to gamefiles/data/quest/subquest_19.quest diff --git a/gamefiles/locale/english/quest/subquest_20.quest b/gamefiles/data/quest/subquest_20.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_20.quest rename to gamefiles/data/quest/subquest_20.quest diff --git a/gamefiles/locale/english/quest/subquest_21.quest b/gamefiles/data/quest/subquest_21.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_21.quest rename to gamefiles/data/quest/subquest_21.quest diff --git a/gamefiles/locale/english/quest/subquest_22.quest b/gamefiles/data/quest/subquest_22.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_22.quest rename to gamefiles/data/quest/subquest_22.quest diff --git a/gamefiles/locale/english/quest/subquest_23.quest b/gamefiles/data/quest/subquest_23.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_23.quest rename to gamefiles/data/quest/subquest_23.quest diff --git a/gamefiles/locale/english/quest/subquest_24.quest b/gamefiles/data/quest/subquest_24.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_24.quest rename to gamefiles/data/quest/subquest_24.quest diff --git a/gamefiles/locale/english/quest/subquest_25.quest b/gamefiles/data/quest/subquest_25.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_25.quest rename to gamefiles/data/quest/subquest_25.quest diff --git a/gamefiles/locale/english/quest/subquest_26.quest b/gamefiles/data/quest/subquest_26.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_26.quest rename to gamefiles/data/quest/subquest_26.quest diff --git a/gamefiles/locale/english/quest/subquest_27.quest b/gamefiles/data/quest/subquest_27.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_27.quest rename to gamefiles/data/quest/subquest_27.quest diff --git a/gamefiles/locale/english/quest/subquest_30.quest b/gamefiles/data/quest/subquest_30.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_30.quest rename to gamefiles/data/quest/subquest_30.quest diff --git a/gamefiles/locale/english/quest/subquest_31.quest b/gamefiles/data/quest/subquest_31.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_31.quest rename to gamefiles/data/quest/subquest_31.quest diff --git a/gamefiles/locale/english/quest/subquest_32.quest b/gamefiles/data/quest/subquest_32.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_32.quest rename to gamefiles/data/quest/subquest_32.quest diff --git a/gamefiles/locale/english/quest/subquest_33.quest b/gamefiles/data/quest/subquest_33.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_33.quest rename to gamefiles/data/quest/subquest_33.quest diff --git a/gamefiles/locale/english/quest/subquest_34.quest b/gamefiles/data/quest/subquest_34.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_34.quest rename to gamefiles/data/quest/subquest_34.quest diff --git a/gamefiles/locale/english/quest/subquest_36.quest b/gamefiles/data/quest/subquest_36.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_36.quest rename to gamefiles/data/quest/subquest_36.quest diff --git a/gamefiles/locale/english/quest/subquest_37.quest b/gamefiles/data/quest/subquest_37.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_37.quest rename to gamefiles/data/quest/subquest_37.quest diff --git a/gamefiles/locale/english/quest/subquest_38.quest b/gamefiles/data/quest/subquest_38.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_38.quest rename to gamefiles/data/quest/subquest_38.quest diff --git a/gamefiles/locale/english/quest/subquest_39.quest b/gamefiles/data/quest/subquest_39.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_39.quest rename to gamefiles/data/quest/subquest_39.quest diff --git a/gamefiles/locale/english/quest/subquest_40.quest b/gamefiles/data/quest/subquest_40.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_40.quest rename to gamefiles/data/quest/subquest_40.quest diff --git a/gamefiles/locale/english/quest/subquest_41.quest b/gamefiles/data/quest/subquest_41.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_41.quest rename to gamefiles/data/quest/subquest_41.quest diff --git a/gamefiles/locale/english/quest/subquest_42.quest b/gamefiles/data/quest/subquest_42.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_42.quest rename to gamefiles/data/quest/subquest_42.quest diff --git a/gamefiles/locale/english/quest/subquest_44.quest b/gamefiles/data/quest/subquest_44.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_44.quest rename to gamefiles/data/quest/subquest_44.quest diff --git a/gamefiles/locale/english/quest/subquest_45.quest b/gamefiles/data/quest/subquest_45.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_45.quest rename to gamefiles/data/quest/subquest_45.quest diff --git a/gamefiles/locale/english/quest/subquest_46.quest b/gamefiles/data/quest/subquest_46.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_46.quest rename to gamefiles/data/quest/subquest_46.quest diff --git a/gamefiles/locale/english/quest/subquest_47.quest b/gamefiles/data/quest/subquest_47.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_47.quest rename to gamefiles/data/quest/subquest_47.quest diff --git a/gamefiles/locale/english/quest/subquest_48.quest b/gamefiles/data/quest/subquest_48.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_48.quest rename to gamefiles/data/quest/subquest_48.quest diff --git a/gamefiles/locale/english/quest/subquest_49.quest b/gamefiles/data/quest/subquest_49.quest similarity index 100% rename from gamefiles/locale/english/quest/subquest_49.quest rename to gamefiles/data/quest/subquest_49.quest diff --git a/gamefiles/locale/english/quest/test_att_resist.quest b/gamefiles/data/quest/test_att_resist.quest similarity index 100% rename from gamefiles/locale/english/quest/test_att_resist.quest rename to gamefiles/data/quest/test_att_resist.quest diff --git a/gamefiles/locale/english/quest/training_grandmaster_skill.quest b/gamefiles/data/quest/training_grandmaster_skill.quest similarity index 100% rename from gamefiles/locale/english/quest/training_grandmaster_skill.quest rename to gamefiles/data/quest/training_grandmaster_skill.quest diff --git a/gamefiles/locale/english/quest/training_mount.quest b/gamefiles/data/quest/training_mount.quest similarity index 100% rename from gamefiles/locale/english/quest/training_mount.quest rename to gamefiles/data/quest/training_mount.quest diff --git a/gamefiles/locale/english/quest/training_mount_v2.quest b/gamefiles/data/quest/training_mount_v2.quest similarity index 100% rename from gamefiles/locale/english/quest/training_mount_v2.quest rename to gamefiles/data/quest/training_mount_v2.quest diff --git a/gamefiles/locale/english/quest/upgrade_mount.quest b/gamefiles/data/quest/upgrade_mount.quest similarity index 100% rename from gamefiles/locale/english/quest/upgrade_mount.quest rename to gamefiles/data/quest/upgrade_mount.quest diff --git a/gamefiles/locale/english/quest/upgrade_refine_scroll.quest b/gamefiles/data/quest/upgrade_refine_scroll.quest similarity index 100% rename from gamefiles/locale/english/quest/upgrade_refine_scroll.quest rename to gamefiles/data/quest/upgrade_refine_scroll.quest diff --git a/gamefiles/locale/english/quest/user_tracking.quest b/gamefiles/data/quest/user_tracking.quest similarity index 100% rename from gamefiles/locale/english/quest/user_tracking.quest rename to gamefiles/data/quest/user_tracking.quest diff --git a/gamefiles/locale/english/quest/warehouse.quest b/gamefiles/data/quest/warehouse.quest similarity index 100% rename from gamefiles/locale/english/quest/warehouse.quest rename to gamefiles/data/quest/warehouse.quest diff --git a/gamefiles/locale/english/quest/x_bernhard.quest b/gamefiles/data/quest/x_bernhard.quest similarity index 100% rename from gamefiles/locale/english/quest/x_bernhard.quest rename to gamefiles/data/quest/x_bernhard.quest diff --git a/gamefiles/locale/english/quest/xxx_change_to_lotto.quest b/gamefiles/data/quest/xxx_change_to_lotto.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_change_to_lotto.quest rename to gamefiles/data/quest/xxx_change_to_lotto.quest diff --git a/gamefiles/locale/english/quest/xxx_collect_quest_lv85.quest b/gamefiles/data/quest/xxx_collect_quest_lv85.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_collect_quest_lv85.quest rename to gamefiles/data/quest/xxx_collect_quest_lv85.quest diff --git a/gamefiles/locale/english/quest/xxx_collect_quest_lv90.quest b/gamefiles/data/quest/xxx_collect_quest_lv90.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_collect_quest_lv90.quest rename to gamefiles/data/quest/xxx_collect_quest_lv90.quest diff --git a/gamefiles/locale/english/quest/xxx_huanso_deliverdrag.quest b/gamefiles/data/quest/xxx_huanso_deliverdrag.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_huanso_deliverdrag.quest rename to gamefiles/data/quest/xxx_huanso_deliverdrag.quest diff --git a/gamefiles/locale/english/quest/xxx_japan_invader_kill.quest b/gamefiles/data/quest/xxx_japan_invader_kill.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_japan_invader_kill.quest rename to gamefiles/data/quest/xxx_japan_invader_kill.quest diff --git a/gamefiles/locale/english/quest/xxx_kids_day_quiz.quest b/gamefiles/data/quest/xxx_kids_day_quiz.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_kids_day_quiz.quest rename to gamefiles/data/quest/xxx_kids_day_quiz.quest diff --git a/gamefiles/locale/english/quest/xxx_kill_straydog.quest b/gamefiles/data/quest/xxx_kill_straydog.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_kill_straydog.quest rename to gamefiles/data/quest/xxx_kill_straydog.quest diff --git a/gamefiles/locale/english/quest/xxx_larbor_day.quest b/gamefiles/data/quest/xxx_larbor_day.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_larbor_day.quest rename to gamefiles/data/quest/xxx_larbor_day.quest diff --git a/gamefiles/locale/english/quest/xxx_main_quest_mgr.quest b/gamefiles/data/quest/xxx_main_quest_mgr.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_main_quest_mgr.quest rename to gamefiles/data/quest/xxx_main_quest_mgr.quest diff --git a/gamefiles/locale/english/quest/xxx_monarch.quest b/gamefiles/data/quest/xxx_monarch.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_monarch.quest rename to gamefiles/data/quest/xxx_monarch.quest diff --git a/gamefiles/locale/english/quest/xxx_monkey_dungeon.quest b/gamefiles/data/quest/xxx_monkey_dungeon.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_monkey_dungeon.quest rename to gamefiles/data/quest/xxx_monkey_dungeon.quest diff --git a/gamefiles/locale/english/quest/xxx_notify_shopmeeting.quest b/gamefiles/data/quest/xxx_notify_shopmeeting.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_notify_shopmeeting.quest rename to gamefiles/data/quest/xxx_notify_shopmeeting.quest diff --git a/gamefiles/locale/english/quest/xxx_priv_guild.quest b/gamefiles/data/quest/xxx_priv_guild.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_priv_guild.quest rename to gamefiles/data/quest/xxx_priv_guild.quest diff --git a/gamefiles/locale/english/quest/xxx_rice_cake_tiger.quest b/gamefiles/data/quest/xxx_rice_cake_tiger.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_rice_cake_tiger.quest rename to gamefiles/data/quest/xxx_rice_cake_tiger.quest diff --git a/gamefiles/locale/english/quest/xxx_years_greetings.quest b/gamefiles/data/quest/xxx_years_greetings.quest similarity index 100% rename from gamefiles/locale/english/quest/xxx_years_greetings.quest rename to gamefiles/data/quest/xxx_years_greetings.quest diff --git a/gamefiles/locale/english/settings.lua b/gamefiles/data/settings.lua similarity index 100% rename from gamefiles/locale/english/settings.lua rename to gamefiles/data/settings.lua diff --git a/gamefiles/locale/english/skill_power.txt b/gamefiles/data/skill_power.txt similarity index 100% rename from gamefiles/locale/english/skill_power.txt rename to gamefiles/data/skill_power.txt diff --git a/gamefiles/locale/english/special_item_group.txt b/gamefiles/data/special_item_group.txt similarity index 100% rename from gamefiles/locale/english/special_item_group.txt rename to gamefiles/data/special_item_group.txt diff --git a/gamefiles/locale/english/translate_cz.lua b/gamefiles/data/translate_cz.lua similarity index 100% rename from gamefiles/locale/english/translate_cz.lua rename to gamefiles/data/translate_cz.lua diff --git a/gamefiles/locale/english/translate_de.lua b/gamefiles/data/translate_de.lua similarity index 100% rename from gamefiles/locale/english/translate_de.lua rename to gamefiles/data/translate_de.lua diff --git a/gamefiles/locale/english/translate_dk.lua b/gamefiles/data/translate_dk.lua similarity index 100% rename from gamefiles/locale/english/translate_dk.lua rename to gamefiles/data/translate_dk.lua diff --git a/gamefiles/locale/english/translate.lua b/gamefiles/data/translate_en.lua similarity index 100% rename from gamefiles/locale/english/translate.lua rename to gamefiles/data/translate_en.lua diff --git a/gamefiles/locale/english/translate_es.lua b/gamefiles/data/translate_es.lua similarity index 100% rename from gamefiles/locale/english/translate_es.lua rename to gamefiles/data/translate_es.lua diff --git a/gamefiles/locale/english/translate_fr.lua b/gamefiles/data/translate_fr.lua similarity index 100% rename from gamefiles/locale/english/translate_fr.lua rename to gamefiles/data/translate_fr.lua diff --git a/gamefiles/locale/english/translate_gr.lua b/gamefiles/data/translate_gr.lua similarity index 100% rename from gamefiles/locale/english/translate_gr.lua rename to gamefiles/data/translate_gr.lua diff --git a/gamefiles/locale/english/translate_hu.lua b/gamefiles/data/translate_hu.lua similarity index 100% rename from gamefiles/locale/english/translate_hu.lua rename to gamefiles/data/translate_hu.lua diff --git a/gamefiles/locale/english/translate_it.lua b/gamefiles/data/translate_it.lua similarity index 100% rename from gamefiles/locale/english/translate_it.lua rename to gamefiles/data/translate_it.lua diff --git a/gamefiles/locale/english/translate_nl.lua b/gamefiles/data/translate_nl.lua similarity index 100% rename from gamefiles/locale/english/translate_nl.lua rename to gamefiles/data/translate_nl.lua diff --git a/gamefiles/locale/english/translate_pl.lua b/gamefiles/data/translate_pl.lua similarity index 100% rename from gamefiles/locale/english/translate_pl.lua rename to gamefiles/data/translate_pl.lua diff --git a/gamefiles/locale/english/translate_pt.lua b/gamefiles/data/translate_pt.lua similarity index 100% rename from gamefiles/locale/english/translate_pt.lua rename to gamefiles/data/translate_pt.lua diff --git a/gamefiles/locale/english/translate_ro.lua b/gamefiles/data/translate_ro.lua similarity index 100% rename from gamefiles/locale/english/translate_ro.lua rename to gamefiles/data/translate_ro.lua diff --git a/gamefiles/locale/english/translate_ru.lua b/gamefiles/data/translate_ru.lua similarity index 100% rename from gamefiles/locale/english/translate_ru.lua rename to gamefiles/data/translate_ru.lua diff --git a/gamefiles/locale/english/translate_tr.lua b/gamefiles/data/translate_tr.lua similarity index 100% rename from gamefiles/locale/english/translate_tr.lua rename to gamefiles/data/translate_tr.lua diff --git a/gamefiles/locale/english/locale_string.txt b/gamefiles/locale/english/locale_string.txt deleted file mode 100644 index b42cba9..0000000 --- a/gamefiles/locale/english/locale_string.txt +++ /dev/null @@ -1,2228 +0,0 @@ -"Everyone will be teleported into the city shortly."; -"Everyone will be teleported into the city shortly."; - -"This item does not exist."; -"This item does not exist."; - -"The box suddenly exploded! You have lost Hit Points (HP)."; -"The box suddenly exploded! You have lost Hit Points (HP)."; - -"If you inhale the green smoke that is coming out of the box, the poison will spread through your body!"; -"If you inhale the green smoke that is coming out of the box, the poison will spread through your body!"; - -"You have received %s, %d units."; -"You have received %s, %d units."; - -"The box contains %s."; -"The box contains %s."; - -"This key does not seem to fit the lock."; -"This key does not seem to fit the lock."; - -"You have not received anything."; -"You have not received anything."; - -"You do not have enough Yang to use this item."; -"You do not have enough Yang to use this item."; - -"You have lowered your Skill Level."; -"You have lowered your Skill Level."; - -"You cannot lower your Skill Level."; -"You cannot lower your Skill Level."; - -"This effect is already activated."; -"This effect is already activated."; - -"This item can only be used in an Internet cafe."; -"This item can only be used in an Internet cafe."; - -"That is over the limit."; -"That is over the limit."; - -"Unfortunately you don't have enough space in your inventory."; -"Unfortunately you don't have enough space in your inventory."; - -"Used Moon Cake or Seed."; -"Used Moon Cake or Seed."; - -"You cannot wear a Wedding Ring if you are not married."; -"You cannot wear a Wedding Ring if you are not married."; - -"You cannot use the Event Detector from this position."; -"You cannot use the Event Detector from this position."; - -"This item cannot be absorbed."; -"This item cannot be absorbed."; - -"The Event Detector vanished in a mysterious light."; -"The Event Detector vanished in a mysterious light."; - -"The Event Detector has vanished."; -"The Event Detector has vanished."; - -"The Compass for Metin Stones does not work in dungeons."; -"The Compass for Metin Stones does not work in dungeons."; - -"The Compass for Metin Stones has vanished in the mysterious light."; -"The Compass for Metin Stones has vanished in the mysterious light."; - -"Receive: %s - %d"; -"Receive: %s - %d"; - -"The Compass for Metin Stones has vanished."; -"The Compass for Metin Stones has vanished."; - -"You find a simple Piece of Stone in the Clam."; -"You find a simple Piece of Stone in the Clam."; - -"The Clam has vanished."; -"The Clam has vanished."; - -"There is a White Pearl inside the Clam."; -"There is a White Pearl inside the Clam."; - -"There is a Blue Pearl inside the Clam."; -"There is a Blue Pearl inside the Clam."; - -"There is a Blood-Red Pearl inside the Clam."; -"There is a Blood-Red Pearl inside the Clam."; - -"It isn't easy to understand this book."; -"It isn't easy to understand this book."; - -"This book will not help you."; -"This book will not help you."; - -"You need to have a minimum level of 30 to understand this book."; -"You need to have a minimum level of 30 to understand this book."; - -"You need a minimum level of 50 to understand this book."; -"You need a minimum level of 50 to understand this book."; - -"You can't train any more Combos."; -"You can't train any more Combos."; - -"%s has captured the flag of %s!"; -"%s has captured the flag of %s!"; - -"You already understand this language."; -"You already understand this language."; - -"You have to improve your Level to read this Book."; -"You have to improve your Level to read this Book."; - -"The book is too hard for practising."; -"The book is too hard for practising."; - -"You cannot train with this Book any more."; -"You cannot train with this Book any more."; - -"Taxes are set to %d%%."; -"Taxes are set to %d%%."; - -"You need a minimum level of 50 to get riding training."; -"You need a minimum level of 50 to get riding training."; - -"You have escaped the evil ghost curse with the help of an Exorcism Scroll."; -"You have escaped the evil ghost curse with the help of an Exorcism Scroll."; - -"You cannot read any more Riding Guides."; -"You cannot read any more Riding Guides."; - -"You read the Horse Riding Manual and received a Riding Point."; -"You read the Horse Riding Manual and received a Riding Point."; - -"You can use this point to improve your riding skill!"; -"You can use this point to improve your riding skill!"; - -"The guild %s's flag has been stolen by player %s."; -"The guild %s's flag has been stolen by player %s."; - -"You did not understand the riding guide."; -"You did not understand the riding guide."; - -"Your mind is clear. You can concentrate really well now."; -"Your mind is clear. You can concentrate really well now."; - -"Your rank has increased by %d points."; -"Your rank has increased by %d points."; - -"You cannot dye or bleach your current hairstyle."; -"You cannot dye or bleach your current hairstyle."; - -"You need to have reached level %d to be able to dye your hair again."; -"You need to have reached level %d to be able to dye your hair again."; - -"This item can only be opened by the another gender."; -"This item can only be opened by the another gender."; - -"You cannot use this from your current position."; -"You cannot use this from your current position."; - -"You are ready to warp, so you cannot use the Scroll of the Location."; -"You are ready to warp, so you cannot use the Scroll of the Location."; - -"You are being brought back to the place of origin."; -"You are being brought back to the place of origin."; - -"%s%s cannot be used in a dungeon."; -"%s%s cannot be used in a dungeon."; - -"[Quest] You have already received your reward."; -"[Quest] You have already received your reward."; - -"the"; -"the"; - -"There aren't any Pieces of Broken Stone available for removal."; -"There aren't any Pieces of Broken Stone available for removal."; - -"You cannot change the upgrade of this item."; -"You cannot change the upgrade of this item."; - -"There is no upgrade that you can change."; -"There is no upgrade that you can change."; - -"You can only do this %d minutes after an upgrade. (%d minutes left)"; -"You can only do this %d minutes after an upgrade. (%d minutes left)"; - -"You have changed the upgrade."; -"You have changed the upgrade."; - -"Upgrade successfully added."; -"Upgrade successfully added."; - -"No upgrade added."; -"No upgrade added."; - -"You must use the Blessing Marble in order to add another bonus to this item."; -"You must use the Blessing Marble in order to add another bonus to this item."; - -"You cannot use this in the duel arena."; -"You cannot use this in the duel arena."; - -"This item can no longer be improved. The maximum number of bonuses has been reached."; -"This item can no longer be improved. The maximum number of bonuses has been reached."; - -"You can only use the Blessing Marble with an item which already has 4 bonuses."; -"You can only use the Blessing Marble with an item which already has 4 bonuses."; - -"Socket successfully added."; -"Socket successfully added."; - -"No socket added."; -"No socket added."; - -"No additional sockets could be added to this item."; -"No additional sockets could be added to this item."; - -"You cannot add a socket to this item."; -"You cannot add a socket to this item."; - -"Arming successful."; -"Arming successful."; - -"Arming has failed."; -"Arming has failed."; - -"You have to add a socket first. Use a diamond in order to do this."; -"You have to add a socket first. Use a diamond in order to do this."; - -"There are no sockets for gemstones in this item."; -"There are no sockets for gemstones in this item."; - -"You can do this when you wear an Emotion Mask."; -"You can do this when you wear an Emotion Mask."; - -"You have to add a socket if you want to use a Diamond."; -"You have to add a socket if you want to use a Diamond."; - -"No more gems can be added to this item."; -"No more gems can be added to this item."; - -"These items cannot be used together."; -"These items cannot be used together."; - -"You cannot change the Bait whilst fishing."; -"You cannot change the Bait whilst fishing."; - -"You are exchanging the current Bait for %s."; -"You are exchanging the current Bait for %s."; - -"You attached %s to the hook as bait."; -"You attached %s to the hook as bait."; - -"You are missing some ingredients to make the potion."; -"You are missing some ingredients to make the potion."; - -"You do not have enough material (%s)."; -"You do not have enough material (%s)."; - -"You do not have enough empty bottles."; -"You do not have enough empty bottles."; - -"The potion production has failed."; -"The potion production has failed."; - -"Only women can do this."; -"Only women can do this."; - -"You cannot attach several stones of the same type."; -"You cannot attach several stones of the same type."; - -"This Spirit Stone cannot be attached to this type of item."; -"This Spirit Stone cannot be attached to this type of item."; - -"You cannot attach this Spirit Stone to a weapon."; -"You cannot attach this Spirit Stone to a weapon."; - -"You have attached the Spirit Stone successfully."; -"You have attached the Spirit Stone successfully."; - -"The Spirit Stone broke while being attached."; -"The Spirit Stone broke while being attached."; - -"No slot free."; -"No slot free."; - -"This function is not available right now."; -"This function is not available right now."; - -"You cannot use a Scroll of the Location whilst taking part in a kingdom battle."; -"You cannot use a Scroll of the Location whilst taking part in a kingdom battle."; - -"After opening the Storeroom you cannot use a Scroll of the Location for %d seconds."; -"After opening the Storeroom you cannot use a Scroll of the Location for %d seconds."; - -"You cannot use a Scroll of the Location while another window is open."; -"You cannot use a Scroll of the Location while another window is open."; - -"This person does not exist."; -"This person does not exist."; - -"After a trade, you cannot use a scroll for another %d seconds."; -"After a trade, you cannot use a scroll for another %d seconds."; - -"After opening a storeroom you cannot use a Scroll of the Location for another %d seconds."; -"After opening a storeroom you cannot use a Scroll of the Location for another %d seconds."; - -"You cannot use the Scroll of the Location because the distance is too small."; -"You cannot use the Scroll of the Location because the distance is too small."; - -"After a trade you cannot use a Scroll of the Location for %d seconds."; -"After a trade you cannot use a Scroll of the Location for %d seconds."; - -"You cannot open the Storeroom if another window is already open."; -"You cannot open the Storeroom if another window is already open."; - -"You cannot drop this item."; -"You cannot drop this item."; - -"The dropped item will vanish in 5 minutes."; -"The dropped item will vanish in 5 minutes."; - -"%s received"; -"%s received"; - -"You have too many items in your inventory."; -"You have too many items in your inventory."; - -"%s receives %s."; -"%s receives %s."; - -"You are too near."; -"You are too near."; - -"Item Trade: %s, %s"; -"Item Trade: %s, %s"; - -"You cannot change the equipped item while you are transformed."; -"You cannot change the equipped item while you are transformed."; - -"You have to stand still to equip the item."; -"You have to stand still to equip the item."; - -"Monkey Herbs cannot be fed to living horses. It is used to revive dead horses."; -"Monkey Herbs cannot be fed to living horses. It is used to revive dead horses."; - -"You cannot feed a dead Horse."; -"You cannot feed a dead Horse."; - -"You fed the Horse with Herbs."; -"You fed the Horse with Herbs."; - -"You have fed the Horse."; -"You have fed the Horse."; - -"Your level is too low to wear this Hairstyle."; -"Your level is too low to wear this Hairstyle."; - -"You already have this Hairstyle."; -"You already have this Hairstyle."; - -"You have already transformed."; -"You have already transformed."; - -"You are too far away."; -"You are too far away."; - -"That's the wrong trading item."; -"That's the wrong trading item."; - -"You cannot transform into a monster who has a higher level than you."; -"You cannot transform into a monster who has a higher level than you."; - -"Your level is too low to equip this item."; -"Your level is too low to equip this item."; - -"You are not strong enough to equip yourself with this item."; -"You are not strong enough to equip yourself with this item."; - -"Your intelligence is too low to equip yourself with this item."; -"Your intelligence is too low to equip yourself with this item."; - -"Your dexterity is too low to equip yourself with this item."; -"Your dexterity is too low to equip yourself with this item."; - -"Your vitality is too low to equip yourself with this item."; -"Your vitality is too low to equip yourself with this item."; - -"You cannot use this item because you are not married."; -"You cannot use this item because you are not married."; - -"You cannot equip this item twice."; -"You cannot equip this item twice."; - -"Time left until the removal of the socket of %s: %d"; -"Time left until the removal of the socket of %s: %d"; - -"This action can only be done with another gender."; -"This action can only be done with another gender."; - -"A gem socketed in the %s has vanished."; -"A gem socketed in the %s has vanished."; - -"[Guild] This guild name is invalid."; -"[Guild] This guild name is invalid."; - -"[Guild] This guild name is already taken."; -"[Guild] This guild name is already taken."; - -"[Guild] You cannot found a guild."; -"[Guild] You cannot found a guild."; - -"The guild %s has declared war on %s!"; -"The guild %s has declared war on %s!"; - -"[Guild] %s has refused the Guild war."; -"[Guild] %s has refused the Guild war."; - -"The guild war between %s and %s will start in a few seconds!"; -"The guild war between %s and %s will start in a few seconds!"; - -"The guild war between %s and %s has begun!"; -"The guild war between %s and %s has begun!"; - -"The guild war between %s and %s has ended in a draw."; -"The guild war between %s and %s has ended in a draw."; - -"%s has won the guild war against %s."; -"%s has won the guild war against %s."; - -"You need your fellow player's approval for this."; -"You need your fellow player's approval for this."; - -"[Guild] The guild war has been cancelled."; -"[Guild] The guild war has been cancelled."; - -"The guild war between %s and %s has been cancelled."; -"The guild war between %s and %s has been cancelled."; - -"Close"; -"Close"; - -"Action cancelled. You have entered a battle."; -"Action cancelled. You have entered a battle."; - -"Someone has logged into your account. You will be disconnected from the server."; -"Someone has logged into your account. You will be disconnected from the server."; - -"A mysterious light appears from the tree."; -"A mysterious light appears from the tree."; - -"%d Playtime added to your account. (Payment number %d)"; -"%d Playtime added to your account. (Payment number %d)"; - -"You can participate in the guild battle in viewer mode."; -"You can participate in the guild battle in viewer mode."; - -"While choosing a character, an icon appears."; -"While choosing a character, an icon appears."; - -"There are no opponents."; -"There are no opponents."; - -"The battle with %s has begun!"; -"The battle with %s has begun!"; - -"If no enemy can be found, the guild war will be ended automatically."; -"If no enemy can be found, the guild war will be ended automatically."; - -"Because the guild war finished early, the result will judged as a draw."; -"Because the guild war finished early, the result will judged as a draw."; - -"The energy is reflected because of the Emperors Blessing."; -"The energy is reflected because of the Emperors Blessing."; - -"After %d seconds you can use the Emperors Blessing."; -"After %d seconds you can use the Emperors Blessing."; - -"Not enough tax income : %d."; -"Not enough tax income : %d."; - -"[TEST_ONLY]Tax : %d"; -"[TEST_ONLY]Tax : %d"; - -"Transformation error."; -"Transformation error."; - -"You learned the transmutation completely."; -"You learned the transmutation completely."; - -"Please call your Horse first."; -"Please call your Horse first."; - -"You have sent your horse away."; -"You have sent your horse away."; - -"%s challenged you to a battle!"; -"%s challenged you to a battle!"; - -"You have to get off your Horse."; -"You have to get off your Horse."; - -"You cannot feed your Horse whilst sitting on it."; -"You cannot feed your Horse whilst sitting on it."; - -"You have fed the Horse with %s%s."; -"You have fed the Horse with %s%s."; - -"You need %s."; -"You need %s."; - -"%d seconds until Exit."; -"%d seconds until Exit."; - -"The game will be closed in %d seconds."; -"The game will be closed in %d seconds."; - -"Your logout has been cancelled."; -"Your logout has been cancelled."; - -"Back to login window. Please wait."; -"Back to login window. Please wait."; - -"You have been disconnected from the server. Please wait."; -"You have been disconnected from the server. Please wait."; - -"You have challenged %s to a battle."; -"You have challenged %s to a battle."; - -"You are changing character. Please wait."; -"You are changing character. Please wait."; - -"A new start is not possible at the moment. Please wait %d seconds."; -"A new start is not possible at the moment. Please wait %d seconds."; - -"You cannot restart yet. Please wait another %d seconds."; -"You cannot restart yet. Please wait another %d seconds."; - -"You cannot restart in the city yet. Wait another %d seconds."; -"You cannot restart in the city yet. Wait another %d seconds."; - -"The waiting time has expired. You will be revived in the city."; -"The waiting time has expired. You will be revived in the city."; - -"You cannot change your status while you are transformed."; -"You cannot change your status while you are transformed."; - -"This player is currently fighting."; -"This player is currently fighting."; - -"[Guild] It does not belong to the guild."; -"[Guild] It does not belong to the guild."; - -"[Guild] You do not have the authority to change the level of the guild skills."; -"[Guild] You do not have the authority to change the level of the guild skills."; - -"Your choice is incorrect."; -"Your choice is incorrect."; - -"[Storeroom] You have entered an incorrect password."; -"[Storeroom] You have entered an incorrect password."; - -"[Storeroom] The Storeroom is already open."; -"[Storeroom] The Storeroom is already open."; - -"[Storeroom] You have to wait 10 seconds before you can open the Storeroom again."; -"[Storeroom] You have to wait 10 seconds before you can open the Storeroom again."; - -"[Storeroom] You are too far away to open the storeroom."; -"[Storeroom] You are too far away to open the storeroom."; - -"[Group] The server cannot execute this group request."; -"[Group] The server cannot execute this group request."; - -"[Group] You cannot leave a group while you are in a dungeon."; -"[Group] You cannot leave a group while you are in a dungeon."; - -"[Group] You have left the group."; -"[Group] You have left the group."; - -"[Guild] Your guild is already participating in another war."; -"[Guild] Your guild is already participating in another war."; - -"[Guild] No one is entitled to a guild war."; -"[Guild] No one is entitled to a guild war."; - -"[Guild] No guild with this name exists."; -"[Guild] No guild with this name exists."; - -"There already is a candidacy."; -"There already is a candidacy."; - -"[Guild] This guild is already participating in a war."; -"[Guild] This guild is already participating in a war."; - -"[Guild] Not enough Yang to participate in a guild war."; -"[Guild] Not enough Yang to participate in a guild war."; - -"[Guild] The guild does not have enough Yang to participate in a guild war."; -"[Guild] The guild does not have enough Yang to participate in a guild war."; - -"[Guild] This Guild is already scheduled for another war."; -"[Guild] This Guild is already scheduled for another war."; - -"[Guild] This guild is already participating in another war."; -"[Guild] This guild is already participating in another war."; - -"[Guild] A minimum of %d players are needed to participate in a guild war."; -"[Guild] A minimum of %d players are needed to participate in a guild war."; - -"[Guild] The guild does not have enough points to participate in a guild war."; -"[Guild] The guild does not have enough points to participate in a guild war."; - -"[Guild] The guild does not have enough members to participate in a guild war."; -"[Guild] The guild does not have enough members to participate in a guild war."; - -"Your level has to be higher than 20 to register a cell phone number."; -"Your level has to be higher than 20 to register a cell phone number."; - -"You do not have the emperor qualification."; -"You do not have the emperor qualification."; - -"%s declined the invitation."; -"%s declined the invitation."; - -"You cannot accept the invitation because you are already in the group."; -"You cannot accept the invitation because you are already in the group."; - -"Only the emperor can use this."; -"Only the emperor can use this."; - -"Cooldown time for approximately %d seconds"; -"Cooldown time for approximately %d seconds"; - -"Lack of Taxes. Current Capital : %u Missing Capital : %u"; -"Lack of Taxes. Current Capital : %u Missing Capital : %u"; - -"Command: warpto "; -"Command: warpto "; - -"You cannot be warped to an unknown player."; -"You cannot be warped to an unknown player."; - -"Adding player %d into the channel. (Present channel %d)"; -"Adding player %d into the channel. (Present channel %d)"; - -"Warp to player %s."; -"Warp to player %s."; - -"You cannot call unknown players."; -"You cannot call unknown players."; - -"[Guild] There are no experience points for hunting during a guild war."; -"[Guild] There are no experience points for hunting during a guild war."; - -"When the Blessing of the Emperor is used %s the HP and SP are restored again."; -"When the Blessing of the Emperor is used %s the HP and SP are restored again."; - -"My information about the emperor"; -"My information about the emperor"; - -"[%sMonarch] : %s Yang owned %lld"; -"[%sMonarch] : %s Yang owned %lld"; - -"[%sMonarch] : %s"; -"[%sMonarch] : %s"; - -"Information about the emperor"; -"Information about the emperor"; - -"Only an emperor can use this."; -"Only an emperor can use this."; - -"Choose a number between 1 and 50."; -"Choose a number between 1 and 50."; - -"The Monster cannot be called. Check the Mob Number."; -"The Monster cannot be called. Check the Mob Number."; - -"Hit Points +%d"; -"Hit Points +%d"; - -"Spell Points +%d"; -"Spell Points +%d"; - -"The Emperor Blessing is activated."; -"The Emperor Blessing is activated."; - -"Endurance +%d"; -"Endurance +%d"; - -"Intelligence +%d"; -"Intelligence +%d"; - -"Strength +%d"; -"Strength +%d"; - -"Dexterity +%d"; -"Dexterity +%d"; - -"Attack Speed +%d"; -"Attack Speed +%d"; - -"Movement Speed %d"; -"Movement Speed %d"; - -"Cooldown Time -%d"; -"Cooldown Time -%d"; - -"Energy Recovery +%d"; -"Energy Recovery +%d"; - -"Spell Point Recovery +%d"; -"Spell Point Recovery +%d"; - -"Poison Attack %d"; -"Poison Attack %d"; - -"Star +%d"; -"Star +%d"; - -"Speed Reduction +%d"; -"Speed Reduction +%d"; - -"Critical Attack with a chance of %d%%"; -"Critical Attack with a chance of %d%%"; - -"Chance of a Speared Attack of %d%%"; -"Chance of a Speared Attack of %d%%"; - -"Player's Attack Power against Monsters +%d%%"; -"Player's Attack Power against Monsters +%d%%"; - -"Horse's Attack Power against Monsters +%d%%"; -"Horse's Attack Power against Monsters +%d%%"; - -"Attack Boost against Wonggui + %d%%"; -"Attack Boost against Wonggui + %d%%"; - -"Attack Boost against Milgyo + %d%%"; -"Attack Boost against Milgyo + %d%%"; - -"Attack boost against zombies + %d%%"; -"Attack boost against zombies + %d%%"; - -"Attack boost against devils + %d%%"; -"Attack boost against devils + %d%%"; - -"Due to Emperor Sa-Za-Hu, the player %s will receive an attack power increase of 10 %% for 3 minutes in this area."; -"Due to Emperor Sa-Za-Hu, the player %s will receive an attack power increase of 10 %% for 3 minutes in this area."; - -"Absorbing of Energy %d%% while attacking."; -"Absorbing of Energy %d%% while attacking."; - -"Absorption of Spell Points (SP) %d%% while attacking."; -"Absorption of Spell Points (SP) %d%% while attacking."; - -"With a chance of %d%% Spell Points (SP) will be taken from the enemy."; -"With a chance of %d%% Spell Points (SP) will be taken from the enemy."; - -"Absorbing of Spell Points (SP) with a chance of %d%%"; -"Absorbing of Spell Points (SP) with a chance of %d%%"; - -"%d%% Chance of blocking a close-combat attack"; -"%d%% Chance of blocking a close-combat attack"; - -"%d%% Chance of blocking a long range attack"; -"%d%% Chance of blocking a long range attack"; - -"One-Handed Sword defence %d%%"; -"One-Handed Sword defence %d%%"; - -"Two-Handed Sword Defence %d%%"; -"Two-Handed Sword Defence %d%%"; - -"Bell Defence %d%%"; -"Bell Defence %d%%"; - -"By the Emperor Geum-Gang-Gwon the player %s gets 10 %% more armour for 3 minutes."; -"By the Emperor Geum-Gang-Gwon the player %s gets 10 %% more armour for 3 minutes."; - -"Fan Defence %d%%"; -"Fan Defence %d%%"; - -"Distant Attack Resistance %d%%"; -"Distant Attack Resistance %d%%"; - -"Fire Resistance %d%%"; -"Fire Resistance %d%%"; - -"Lightning Resistance %d%%"; -"Lightning Resistance %d%%"; - -"Magic Resistance %d%%"; -"Magic Resistance %d%%"; - -"Wind Resistance %d%%"; -"Wind Resistance %d%%"; - -"Reflect Direct Hit: %d%%"; -"Reflect Direct Hit: %d%%"; - -"Reflect Curse: %d%%"; -"Reflect Curse: %d%%"; - -"Poison Resistance %d%%"; -"Poison Resistance %d%%"; - -"Spell Points (SP) will be increased by %d%% if you win."; -"Spell Points (SP) will be increased by %d%% if you win."; - -"The event is already running. (Flag: %d)"; -"The event is already running. (Flag: %d)"; - -"Experience increases by %d%% if you win against an opponent."; -"Experience increases by %d%% if you win against an opponent."; - -"Increase of Yang up to %d%% if you win."; -"Increase of Yang up to %d%% if you win."; - -"Increase of captured Items up to %d%% if you win."; -"Increase of captured Items up to %d%% if you win."; - -"Power increase of up to %d%% after taking the potion."; -"Power increase of up to %d%% after taking the potion."; - -"%d%% Chance of filling up Hit Points after a victory."; -"%d%% Chance of filling up Hit Points after a victory."; - -"No Dizziness %d%%"; -"No Dizziness %d%%"; - -"No Slowing Down %d%%"; -"No Slowing Down %d%%"; - -"No falling down %d%%"; -"No falling down %d%%"; - -"Attack Power + %d"; -"Attack Power + %d"; - -"Armour + %d"; -"Armour + %d"; - -"OX quiz script could not be loaded."; -"OX quiz script could not be loaded."; - -"Magical Attack + %d"; -"Magical Attack + %d"; - -"Magical Defence + %d"; -"Magical Defence + %d"; - -"Maximum Endurance + %d"; -"Maximum Endurance + %d"; - -"Strong against Warriors + %d%%"; -"Strong against Warriors + %d%%"; - -"Strong against Ninjas + %d%%"; -"Strong against Ninjas + %d%%"; - -"Strong against Sura + %d%%"; -"Strong against Sura + %d%%"; - -"Strong against Shamans + %d%%"; -"Strong against Shamans + %d%%"; - -"Strength against monsters + %d%%"; -"Strength against monsters + %d%%"; - -"Attack + %d%%"; -"Attack + %d%%"; - -"Defence + %d%%"; -"Defence + %d%%"; - -"OX quiz script has loaded."; -"OX quiz script has loaded."; - -"Experience %d%%"; -"Experience %d%%"; - -"Chance to find an Item %. 1f"; -"Chance to find an Item %. 1f"; - -"Chance to find Yang %. 1f"; -"Chance to find Yang %. 1f"; - -"Maximum Energy +%d%%"; -"Maximum Energy +%d%%"; - -"Skill Damage %d%%"; -"Skill Damage %d%%"; - -"Hit Damage %d%%"; -"Hit Damage %d%%"; - -"Resistance against Skill Damage %d%%"; -"Resistance against Skill Damage %d%%"; - -"Resistance against Hits %d%%"; -"Resistance against Hits %d%%"; - -"%d%% Resistance against Warrior Attacks"; -"%d%% Resistance against Warrior Attacks"; - -"Welcome to Metin2."; -"Welcome to Metin2."; - -"%d%% Resistance against Ninja Attacks"; -"%d%% Resistance against Ninja Attacks"; - -"%d%% Resistance against Sura Attacks"; -"%d%% Resistance against Sura Attacks"; - -"%d%% Resistance against Shaman Attacks"; -"%d%% Resistance against Shaman Attacks"; - -"(Procedure: %d y- %d m - %d d)"; -"(Procedure: %d y- %d m - %d d)"; - -"Your chat is blocked."; -"Your chat is blocked."; - -"You need a higher level to be able to call."; -"You need a higher level to be able to call."; - -"You need a minimum level of %d to be able to call."; -"You need a minimum level of %d to be able to call."; - -"You are not in this Group."; -"You are not in this Group."; - -"You did not join this Guild."; -"You did not join this Guild."; - -"The player has rejected your request to add him to your friend list."; -"The player has rejected your request to add him to your friend list."; - -"OX Event has started."; -"OX Event has started."; - -"[Friends] You cannot add a GM to your list."; -"[Friends] You cannot add a GM to your list."; - -"%s is not online."; -"%s is not online."; - -"After a trade, you have to wait %d seconds before you can open a shop."; -"After a trade, you have to wait %d seconds before you can open a shop."; - -"You can trade again in %d seconds."; -"You can trade again in %d seconds."; - -"You have more than 2 Billion Yang. You cannot trade."; -"You have more than 2 Billion Yang. You cannot trade."; - -"You cannot open a private shop while another window is open."; -"You cannot open a private shop while another window is open."; - -"The player has more than 2 Billion Yang. You cannot trade with him."; -"The player has more than 2 Billion Yang. You cannot trade with him."; - -"[Storeroom] No movement possible."; -"[Storeroom] No movement possible."; - -"[Storeroom] The item cannot be stored."; -"[Storeroom] The item cannot be stored."; - -"[Group] The player who invited you is not online."; -"[Group] The player who invited you is not online."; - -"Uriel allowed to enter."; -"Uriel allowed to enter."; - -"[Group] Only the group leader can change this."; -"[Group] Only the group leader can change this."; - -"[Group] The target is not a member of your group."; -"[Group] The target is not a member of your group."; - -"[Group] You cannot kick out a player while you are in a dungeon."; -"[Group] You cannot kick out a player while you are in a dungeon."; - -"[Group] You have been out kicked of the group."; -"[Group] You have been out kicked of the group."; - -"[Group] You cannot kick out group members."; -"[Group] You cannot kick out group members."; - -"[Guild] After disbanding a guild, you cannot create a new one for %d days."; -"[Guild] After disbanding a guild, you cannot create a new one for %d days."; - -"[Guild] After leaving a guild, you cannot create a new one for %d days."; -"[Guild] After leaving a guild, you cannot create a new one for %d days."; - -"This guild name is invalid."; -"This guild name is invalid."; - -"We request the participation of a lot of players."; -"We request the participation of a lot of players."; - -"[Guild] [%s] guild has been created."; -"[Guild] [%s] guild has been created."; - -"[Guild] Creation of the guild has failed."; -"[Guild] Creation of the guild has failed."; - -"[Group] Only the group leader can use group skills."; -"[Group] Only the group leader can use group skills."; - -"[Group] The target has not been found."; -"[Group] The target has not been found."; - -"[Guild] That is not the correct amount of Yang."; -"[Guild] That is not the correct amount of Yang."; - -"[Guild] You do not have enough Yang."; -"[Guild] You do not have enough Yang."; - -"[Guild] The person you were searching for cannot be found."; -"[Guild] The person you were searching for cannot be found."; - -"[Guild] This person is not in the same guild."; -"[Guild] This person is not in the same guild."; - -"[Guild] You do not have the authority to kick out guild members."; -"[Guild] You do not have the authority to kick out guild members."; - -"[Guild] The guild member %s has been kicked out of the Guild."; -"[Guild] The guild member %s has been kicked out of the Guild."; - -"OX The Event has not ended yet. An error has occurred. (flag: %d)"; -"OX The Event has not ended yet. An error has occurred. (flag: %d)"; - -"[Guild] You have kicked a guild member out."; -"[Guild] You have kicked a guild member out."; - -"[Guild] You do not have the authority to change your rank name."; -"[Guild] You do not have the authority to change your rank name."; - -"[Guild] The guild leader's rights cannot be changed."; -"[Guild] The guild leader's rights cannot be changed."; - -"[Guild] This rank name is invalid."; -"[Guild] This rank name is invalid."; - -"[Guild] You do not have the authority to change your position."; -"[Guild] You do not have the authority to change your position."; - -"[Guild] The rights of the guild leader cannot be changed."; -"[Guild] The rights of the guild leader cannot be changed."; - -"[Guild] %u experience points used."; -"[Guild] %u experience points used."; - -"[Guild] Experience usage has failed."; -"[Guild] Experience usage has failed."; - -"[Guild] Insufficient Yang in the guild treasury."; -"[Guild] Insufficient Yang in the guild treasury."; - -"[Guild] Dragon ghost was not restored."; -"[Guild] Dragon ghost was not restored."; - -"The OX Event will be restarted shortly."; -"The OX Event will be restarted shortly."; - -"[Guild] You do not have the authority to make an announcement."; -"[Guild] You do not have the authority to make an announcement."; - -"[Guild] You do not have the authority to change the position."; -"[Guild] You do not have the authority to change the position."; - -"[Guild] The guild leader's position cannot be changed."; -"[Guild] The guild leader's position cannot be changed."; - -"[Guild] You cannot make yourself guild leader."; -"[Guild] You cannot make yourself guild leader."; - -"[Guild] You do not have the authority to choose the guild leader."; -"[Guild] You do not have the authority to choose the guild leader."; - -"[Guild] You cannot choose any more guild leaders."; -"[Guild] You cannot choose any more guild leaders."; - -"You cannot trade this item."; -"You cannot trade this item."; - -"Illegal software has been detected. The game is being shut down."; -"Illegal software has been detected. The game is being shut down."; - -"You have more than 2 Billion Yang with you. You cannot trade."; -"You have more than 2 Billion Yang with you. You cannot trade."; - -"Invalid Yang."; -"Invalid Yang."; - -"The present event is limited to one area."; -"The present event is limited to one area."; - -"Start Item Roulette."; -"Start Item Roulette."; - -"Start Yang Roulette."; -"Start Yang Roulette."; - -"The player is online. Please use whisper to chat."; -"The player is online. Please use whisper to chat."; - -"The cell phone number is not registered."; -"The cell phone number is not registered."; - -"You need to be at least on level 20 to be able to send text messages."; -"You need to be at least on level 20 to be able to send text messages."; - -"You need 2000 DT to send a text message."; -"You need 2000 DT to send a text message."; - -"Your text message has been sent."; -"Your text message has been sent."; - -"%s of the Guild %s raised up to %d%% !"; -"%s of the Guild %s raised up to %d%% !"; - -"%s of the Guild %s normal again."; -"%s of the Guild %s normal again."; - -"%s: %s has increased by %d%%!"; -"%s: %s has increased by %d%%!"; - -"%s 's %s normal again."; -"%s 's %s normal again."; - -"Your mining points have reached their maximum. (%d)"; -"Your mining points have reached their maximum. (%d)"; - -"Your mining points have reached their maximum level."; -"Your mining points have reached their maximum level."; - -"You can get lumberjack Deokbae to upgrade your Pickaxe."; -"You can get lumberjack Deokbae to upgrade your Pickaxe."; - -"Your Mining Points have increased! (%d/%d)"; -"Your Mining Points have increased! (%d/%d)"; - -"You cannot mine without a Pick."; -"You cannot mine without a Pick."; - -"Nothing to mine here."; -"Nothing to mine here."; - -"The mining has been successful."; -"The mining has been successful."; - -"The mining has failed."; -"The mining has failed."; - -"[Friends] You have added %s as a friend."; -"[Friends] You have added %s as a friend."; - -"The player will be teleported into the city shortly."; -"The player will be teleported into the city shortly."; - -"[Friends] You have deleted %s from the list."; -"[Friends] You have deleted %s from the list."; - -"A critical server error has occurred. The server will restart automatically."; -"A critical server error has occurred. The server will restart automatically."; - -"You will be disconnected automatically in 10 seconds."; -"You will be disconnected automatically in 10 seconds."; - -"You can connect again after 5 minutes."; -"You can connect again after 5 minutes."; - -"(%s) guild has been created. [Temporary]"; -"(%s) guild has been created. [Temporary]"; - -"This guild is at war."; -"This guild is at war."; - -"%s: This guild does not exist."; -"%s: This guild does not exist."; - -"A guild with this name or number does not exist."; -"A guild with this name or number does not exist."; - -"The building does not exist."; -"The building does not exist."; - -"This type of building can only be erected once."; -"This type of building can only be erected once."; - -"Close the OX event card first. (Flag: %d)"; -"Close the OX event card first. (Flag: %d)"; - -"The Main Building has to be erected first."; -"The Main Building has to be erected first."; - -"Building failed because of incorrect pricing."; -"Building failed because of incorrect pricing."; - -"Your guild does not have enough Yang to erect this building."; -"Your guild does not have enough Yang to erect this building."; - -"You do not have enough resources to build a building."; -"You do not have enough resources to build a building."; - -"You cannot erect a building at this place."; -"You cannot erect a building at this place."; - -"This character does not exist."; -"This character does not exist."; - -"Duel has not been successfully cancelled."; -"Duel has not been successfully cancelled."; - -"Duel cancelled successfully."; -"Duel cancelled successfully."; - -"The duel has been successfully started."; -"The duel has been successfully started."; - -"There is a problem with initiating the duel."; -"There is a problem with initiating the duel."; - -"No errors occurred."; -"No errors occurred."; - -"There are no combatants."; -"There are no combatants."; - -"No status points left."; -"No status points left."; - -"Remaining status points are too low."; -"Remaining status points are too low."; - -"You entered an incorrect value."; -"You entered an incorrect value."; - -"Suborder or the Order is incorrect."; -"Suborder or the Order is incorrect."; - -"Broken contract between player %d and player %d."; -"Broken contract between player %d and player %d."; - -"Turn the Roulette for %d Yang."; -"Turn the Roulette for %d Yang."; - -"The Item log placed into the syslog."; -"The Item log placed into the syslog."; - -"Information for the Kingdoms"; -"Information for the Kingdoms"; - -"Choose the Map Information of the Holy Land %d Entrance %d %d %d"; -"Choose the Map Information of the Holy Land %d Entrance %d %d %d"; - -"An error has occurred."; -"An error has occurred."; - -"%s killcount %d mobkillcount %d bosskillcount %d Number Holy Land %d"; -"%s killcount %d mobkillcount %d bosskillcount %d Number Holy Land %d"; - -"Information about the status of the kingdom battle"; -"Information about the status of the kingdom battle"; - -"Your request is loading. Please wait."; -"Your request is loading. Please wait."; - -"You cannot open a Storeroom while another window is open."; -"You cannot open a Storeroom while another window is open."; - -"[Storeroom] Storeroom password has been changed."; -"[Storeroom] Storeroom password has been changed."; - -"[Storeroom] You have entered the wrong password."; -"[Storeroom] You have entered the wrong password."; - -"Your playing time is going to run out in %d minutes."; -"Your playing time is going to run out in %d minutes."; - -"Regularly voted."; -"Regularly voted."; - -"Already voted."; -"Already voted."; - -"%s player already in the vote."; -"%s player already in the vote."; - -"OX Event is over. No errors occurred. (Flag: %d)"; -"OX Event is over. No errors occurred. (Flag: %d)"; - -"Cannot run for office."; -"Cannot run for office."; - -"%s still has %u Yang available."; -"%s still has %u Yang available."; - -"%s still has %d Yang available."; -"%s still has %d Yang available."; - -"You do not have enough Yang."; -"You do not have enough Yang."; - -"%s is deleted as an Emperor Candidate."; -"%s is deleted as an Emperor Candidate."; - -"%s is not a candidate for the emperor elections."; -"%s is not a candidate for the emperor elections."; - -"%s has been nominated as emperor."; -"%s has been nominated as emperor."; - -"%s cannot be nominated as emperor."; -"%s cannot be nominated as emperor."; - -"The %s Emperor gets driven out."; -"The %s Emperor gets driven out."; - -"The %s Emperor cannot be driven out."; -"The %s Emperor cannot be driven out."; - -"OX Event is not accepting any more participants."; -"OX Event is not accepting any more participants."; - -"Shinsoo Kingdom"; -"Shinsoo Kingdom"; - -"Chunjo Kingdom"; -"Chunjo Kingdom"; - -"Jinno Kingdom"; -"Jinno Kingdom"; - -"Your fishing points have increased! (%d/%d)"; -"Your fishing points have increased! (%d/%d)"; - -"You have reached the maximum number of fishing points."; -"You have reached the maximum number of fishing points."; - -"Go to the Fisherman and get your Fishing Pole upgraded!"; -"Go to the Fisherman and get your Fishing Pole upgraded!"; - -"You lost your bait to the fish."; -"You lost your bait to the fish."; - -"You have caught a fish! (%s)"; -"You have caught a fish! (%s)"; - -"The length of the captured fish is %.2fcm."; -"The length of the captured fish is %.2fcm."; - -"Fishing Event 'Great Zander'"; -"Fishing Event 'Great Zander'"; - -"OX The other event participants are being noted down."; -"OX The other event participants are being noted down."; - -"Fishing Event 'Carp'"; -"Fishing Event 'Carp'"; - -"%s: %d"; -"%s: %d"; - -"You have caught %d of %d ."; -"You have caught %d of %d ."; - -"The fish vanished in the depths of the water."; -"The fish vanished in the depths of the water."; - -"There is a Clam inside the Fish."; -"There is a Clam inside the Fish."; - -"There is a Worm inside the Fish."; -"There is a Worm inside the Fish."; - -"You are roasting %s over the fire."; -"You are roasting %s over the fire."; - -"You cannot trade because you are carrying more than 2 billion Yang."; -"You cannot trade because you are carrying more than 2 billion Yang."; - -"You can't give your shop an invalid name."; -"You can't give your shop an invalid name."; - -"You can't sell Item-Shop items in a private shop."; -"You can't sell Item-Shop items in a private shop."; - -"OX The other event participants have not been noted down."; -"OX The other event participants have not been noted down."; - -"Mining is finished."; -"Mining is finished."; - -"You need a Pickaxe in order to extract ore!"; -"You need a Pickaxe in order to extract ore!"; - -"Please choose a Fishing Pole."; -"Please choose a Fishing Pole."; - -"Place the Bait on the Hook first."; -"Place the Bait on the Hook first."; - -"You can't go fishing without a fishing pole!"; -"You can't go fishing without a fishing pole!"; - -"[Group] You cannot make a request because the group leader is not online."; -"[Group] You cannot make a request because the group leader is not online."; - -"[Group] You cannot form a group with players from another kingdom."; -"[Group] You cannot form a group with players from another kingdom."; - -"[Group] You cannot invite players while you are in a dungeon."; -"[Group] You cannot invite players while you are in a dungeon."; - -"[Group] You cannot invite a player while you are in observer mode."; -"[Group] You cannot invite a player while you are in observer mode."; - -"[Group] Only players with a level difference of -30 to +30 can be invited."; -"[Group] Only players with a level difference of -30 to +30 can be invited."; - -"Number of other participants : %d"; -"Number of other participants : %d"; - -"[Group] You cannot invite this player, as their level is too low."; -"[Group] You cannot invite this player, as their level is too low."; - -"[Group] You cannot invite this player, as their level is too high."; -"[Group] You cannot invite this player, as their level is too high."; - -"[Group] You cannot invite any more players into your group."; -"[Group] You cannot invite any more players into your group."; - -"You want to join %s's group."; -"You want to join %s's group."; - -"This player is not in this group."; -"This player is not in this group."; - -"[Group] You cannot join this group because it is already full."; -"[Group] You cannot join this group because it is already full."; - -"[Group] You do not have the right to invite someone."; -"[Group] You do not have the right to invite someone."; - -"[Group] %s has declined your group invitation."; -"[Group] %s has declined your group invitation."; - -"[Group] %s is already in the group."; -"[Group] %s is already in the group."; - -"[Group] You cannot accept an invitation into a dungeon."; -"[Group] You cannot accept an invitation into a dungeon."; - -"OX Event is finishing."; -"OX Event is finishing."; - -"[Group] You cannot accept the invitation."; -"[Group] You cannot accept the invitation."; - -"[Group] %s has declined your invitation."; -"[Group] %s has declined your invitation."; - -"[Group] %s has joined your group."; -"[Group] %s has joined your group."; - -"[Group] %s has joined your Group."; -"[Group] %s has joined your Group."; - -"You can't use a private shop now."; -"You can't use a private shop now."; - -"This player is already trading with another player."; -"This player is already trading with another player."; - -"Metin2 Confirmation Number: %s"; -"Metin2 Confirmation Number: %s"; - -"Your Confirmation Number is not correct. Please try again."; -"Your Confirmation Number is not correct. Please try again."; - -"The mobile phone number is registered."; -"The mobile phone number is registered."; - -"You cannot teleport to the player."; -"You cannot teleport to the player."; - -"OX The prize has been awarded. ID: %d Quantity: %d"; -"OX The prize has been awarded. ID: %d Quantity: %d"; - -"This player is not online."; -"This player is not online."; - -"The player is playing on channel %d. (You are on channel %d.)"; -"The player is playing on channel %d. (You are on channel %d.)"; - -"After opening the Storeroom, you cannot go anywhere else for %d seconds."; -"After opening the Storeroom, you cannot go anywhere else for %d seconds."; - -"You cannot go elsewhere for a period of time after the trade."; -"You cannot go elsewhere for a period of time after the trade."; - -"After trading you cannot go elsewhere for %d seconds."; -"After trading you cannot go elsewhere for %d seconds."; - -"The duel has finished, because your combatant vanished."; -"The duel has finished, because your combatant vanished."; - -"There is no limit for Potions."; -"There is no limit for Potions."; - -"You can use up to %d potions."; -"You can use up to %d potions."; - -"The fight will start in 10 seconds."; -"The fight will start in 10 seconds."; - -"The duel has begun."; -"The duel has begun."; - -"TRUE"; -"TRUE"; - -"The duel is being finished because there is a problem in the duel arena."; -"The duel is being finished because there is a problem in the duel arena."; - -"The duel has finished because of a timeout."; -"The duel has finished because of a timeout."; - -"In 10 seconds you will be teleported into the city."; -"In 10 seconds you will be teleported into the city."; - -"The duel has been stopped because there is a problem in the arena."; -"The duel has been stopped because there is a problem in the arena."; - -"Your combatant has got some problems. The duel is being cancelled."; -"Your combatant has got some problems. The duel is being cancelled."; - -"The duel is being cancelled as there is a problem with the combatant."; -"The duel is being cancelled as there is a problem with the combatant."; - -"%s has won the duel."; -"%s has won the duel."; - -"%s has won."; -"%s has won."; - -"You will be teleported into the city in 10 seconds."; -"You will be teleported into the city in 10 seconds."; - -"The next round will begin in 10 seconds."; -"The next round will begin in 10 seconds."; - -"FALSE"; -"FALSE"; - -"The combatants have been separated. The duel has been stopped."; -"The combatants have been separated. The duel has been stopped."; - -"The quota of the Item Drop is at the moment plus %d%%"; -"The quota of the Item Drop is at the moment plus %d%%"; - -"The quota of the Yang Drop is at the moment plus %d%%"; -"The quota of the Yang Drop is at the moment plus %d%%"; - -"The drop rate for Yang rain is currently %d%% higher."; -"The drop rate for Yang rain is currently %d%% higher."; - -"The experience bonus is currently an additional %d%%."; -"The experience bonus is currently an additional %d%%."; - -"You do not have the correct client version. Please install the normal patch."; -"You do not have the correct client version. Please install the normal patch."; - -"You cannot trade in the shop while another window is open."; -"You cannot trade in the shop while another window is open."; - -"You are too far away from the shop to buy something."; -"You are too far away from the shop to buy something."; - -"You are too far away from the shop to sell something."; -"You are too far away from the shop to sell something."; - -"Total number of the Quiz: %d"; -"Total number of the Quiz: %d"; - -"This sale will be taxed %d%%."; -"This sale will be taxed %d%%."; - -"You cannot ride a Horse while you are transformed."; -"You cannot ride a Horse while you are transformed."; - -"You cannot ride while you are wearing a Wedding Dress or a Tuxedo."; -"You cannot ride while you are wearing a Wedding Dress or a Tuxedo."; - -"You do not have a Horse."; -"You do not have a Horse."; - -"Your Horse is dead."; -"Your Horse is dead."; - -"Your Horse's endurance is too low."; -"Your Horse's endurance is too low."; - -"Calling the Horse has failed."; -"Calling the Horse has failed."; - -"'s Horse"; -"'s Horse"; - -"The wedding is finishing soon."; -"The wedding is finishing soon."; - -"Will be left automatically."; -"Will be left automatically."; - -"The war is already over."; -"The war is already over."; - -"The result will follow in 10 seconds."; -"The result will follow in 10 seconds."; - -"You cannot trade while observing."; -"You cannot trade while observing."; - -"If the window is open, you cannot trade with others."; -"If the window is open, you cannot trade with others."; - -"The other person is currently busy so you cannot trade right now."; -"The other person is currently busy so you cannot trade right now."; - -"The other person has cancelled the trade."; -"The other person has cancelled the trade."; - -"Not enough Yang or not enough space in the inventory."; -"Not enough Yang or not enough space in the inventory."; - -"The other person does not have enough Yang or does not have any space left in their inventory."; -"The other person does not have enough Yang or does not have any space left in their inventory."; - -"The other person has no space left in their inventory."; -"The other person has no space left in their inventory."; - -"The trade with %s has been successful."; -"The trade with %s has been successful."; - -"You did not lose any Experience because of the Blessing of the Dragon God."; -"You did not lose any Experience because of the Blessing of the Dragon God."; - -"Current score: Shinsoo %d, Chunjo %d, Jinno %d"; -"Current score: Shinsoo %d, Chunjo %d, Jinno %d"; - -"The correct answer is:"; -"The correct answer is:"; - -"%s deadcount %d Empire %d killcount %d(Purpose %d) killmobcount %d, RegenFlag %d"; -"%s deadcount %d Empire %d killcount %d(Purpose %d) killmobcount %d, RegenFlag %d"; - -"The devil of the hallowed place: [ENTER][ENTER]"; -"The devil of the hallowed place: [ENTER][ENTER]"; - -", you don't have any right to be here! The members of your kingdom will leave this hallowed ground in 10 seconds."; -", you don't have any right to be here! The members of your kingdom will leave this hallowed ground in 10 seconds."; - -"%s has been defeated and drops out of the Kingdom Battle."; -"%s has been defeated and drops out of the Kingdom Battle."; - -"Number of Monsters in the Kingdom Battle:"; -"Number of Monsters in the Kingdom Battle:"; - -"If you defeat the Guard of the Holy Place, you will become the owner of it."; -"If you defeat the Guard of the Holy Place, you will become the owner of it."; - -"You did not drop any Item(s) as you are protected by the Dragon God."; -"You did not drop any Item(s) as you are protected by the Dragon God."; - -"Additional Stabbing Weapon Damage %d"; -"Additional Stabbing Weapon Damage %d"; - -"%s block! (%d%%)"; -"%s block! (%d%%)"; - -"%s avoid! (%d%%)"; -"%s avoid! (%d%%)"; - -"Yes (O)"; -"Yes (O)"; - -"%s[%d]'s Attack Position: %d %d"; -"%s[%d]'s Attack Position: %d %d"; - -"Please enter the Order in full length."; -"Please enter the Order in full length."; - -"You cannot do this whilst sitting on a Horse."; -"You cannot do this whilst sitting on a Horse."; - -"You cannot do that while you are lying on the ground."; -"You cannot do that while you are lying on the ground."; - -"In my Dreams? What?"; -"In my Dreams? What?"; - -"Get up first."; -"Get up first."; - -"This command does not exist."; -"This command does not exist."; - -"[Group] This group has been disbanded."; -"[Group] This group has been disbanded."; - -"[Group] You cannot call the target."; -"[Group] You cannot call the target."; - -"[Group] You cannot call group members over to your current position."; -"[Group] You cannot call group members over to your current position."; - -"No (X)"; -"No (X)"; - -"Your group works well together, and group members near the group leader will receive an experience bonus."; -"Your group works well together, and group members near the group leader will receive an experience bonus."; - -"Leader"; -"Leader"; - -"Member"; -"Member"; - -"[Guild] Provided Experience is larger then left Experience."; -"[Guild] Provided Experience is larger then left Experience."; - -"[Guild] This message cannot be deleted."; -"[Guild] This message cannot be deleted."; - -"[Guild] Not enough Dragon Ghost. (%d, %d)"; -"[Guild] Not enough Dragon Ghost. (%d, %d)"; - -"[Guild] You cannot use the guild skills yet."; -"[Guild] You cannot use the guild skills yet."; - -"[Guild] %d skill has been applied (%d, %d) to %u."; -"[Guild] %d skill has been applied (%d, %d) to %u."; - -"[Guild] This player is on channel %d. (Current channel: %d)"; -"[Guild] This player is on channel %d. (Current channel: %d)"; - -"[Guild] This player is not online."; -"[Guild] This player is not online."; - -"In 5 sec. everyone who gave an incorrect answer will be removed."; -"In 5 sec. everyone who gave an incorrect answer will be removed."; - -"[Guild] This guild skill can only be used during war."; -"[Guild] This guild skill can only be used during war."; - -"[Guild] %u Dragon ghost points have been restored."; -"[Guild] %u Dragon ghost points have been restored."; - -"[Guild] Only the guild leader can withdraw Yang."; -"[Guild] Only the guild leader can withdraw Yang."; - -"[Guild] The player has declined the guild invitation."; -"[Guild] The player has declined the guild invitation."; - -"[Guild] You do not have the authority to invite someone to join the guild."; -"[Guild] You do not have the authority to invite someone to join the guild."; - -"[Guild] You cannot invite players from another kingdom into the guild."; -"[Guild] You cannot invite players from another kingdom into the guild."; - -"[Guild] This player can be invited again after %d day(s)."; -"[Guild] This player can be invited again after %d day(s)."; - -"[Guild] After the rearrangement you can invite members again after %d days."; -"[Guild] After the rearrangement you can invite members again after %d days."; - -"[Guild] This person is already a member of another Guild."; -"[Guild] This person is already a member of another Guild."; - -"[Guild] The maximum guild capacity has been reached."; -"[Guild] The maximum guild capacity has been reached."; - -"Ready for the next question?"; -"Ready for the next question?"; - -"You cannot train this skill."; -"You cannot train this skill."; - -"You cannot train this skill up to Grand Master level."; -"You cannot train this skill up to Grand Master level."; - -"You already are a Master of this skill. You cannot train this skill any further."; -"You already are a Master of this skill. You cannot train this skill any further."; - -"Your Skill is not high enough to become a Grand Master."; -"Your Skill is not high enough to become a Grand Master."; - -"That did not work. Damn!"; -"That did not work. Damn!"; - -"Training has failed. Please try again later."; -"Training has failed. Please try again later."; - -"My body is full of energy!"; -"My body is full of energy!"; - -"The training seems to be working already..."; -"The training seems to be working already..."; - -"You successfully finished your training with the book."; -"You successfully finished your training with the book."; - -"You cannot read this due to your lack of experience."; -"You cannot read this due to your lack of experience."; - -"Question."; -"Question."; - -"You cannot train this skill with a Book."; -"You cannot train this skill with a Book."; - -"This skill's level is not high enough to be trained with a Book."; -"This skill's level is not high enough to be trained with a Book."; - -"I'm making progress, but I still haven't understood everything."; -"I'm making progress, but I still haven't understood everything."; - -"These instructions are difficult to understand. I have to carry on studying."; -"These instructions are difficult to understand. I have to carry on studying."; - -"I understand this chapter. But I've got to carry on working hard."; -"I understand this chapter. But I've got to carry on working hard."; - -"You have successfully finished your training with the Book."; -"You have successfully finished your training with the Book."; - -"Teleportation has failed."; -"Teleportation has failed."; - -"No Horse here. Ask the Stable Boy."; -"No Horse here. Ask the Stable Boy."; - -"Please use an item to call a Horse."; -"Please use an item to call a Horse."; - -"%s FP-Consumption: %d"; -"%s FP-Consumption: %d"; - -"If it's correct, then go to O. If it's wrong, go to X."; -"If it's correct, then go to O. If it's wrong, go to X."; - -"I am burning inside, but it is calming down my body. My Chi has to stabilise."; -"I am burning inside, but it is calming down my body. My Chi has to stabilise."; - -"A little slow, but steady... Without stopping!"; -"A little slow, but steady... Without stopping!"; - -"Yes, that feels great. My body is full of Chi."; -"Yes, that feels great. My body is full of Chi."; - -"I have read it! Now the Chi will spread through my body."; -"I have read it! Now the Chi will spread through my body."; - -"The training is completed."; -"The training is completed."; - -"I am on the last page of the book. The training is nearly finished!"; -"I am on the last page of the book. The training is nearly finished!"; - -"Nearly finished! Just a little bit more to go!"; -"Nearly finished! Just a little bit more to go!"; - -"Eureka! I have nearly finished reading it!"; -"Eureka! I have nearly finished reading it!"; - -"Only a few more pages and then I'll have read everything."; -"Only a few more pages and then I'll have read everything."; - -"I feel refreshed."; -"I feel refreshed."; - -"Correct!"; -"Correct!"; - -"Now I understand it!"; -"Now I understand it!"; - -"Okay I have to stay concentrated!"; -"Okay I have to stay concentrated!"; - -"I keep reading the same line over and over again."; -"I keep reading the same line over and over again."; - -"I do not want to learn any more."; -"I do not want to learn any more."; - -"It is a lot more complicated and more difficult to understand than I thought."; -"It is a lot more complicated and more difficult to understand than I thought."; - -"It's hard for me to concentrate. I should take a break."; -"It's hard for me to concentrate. I should take a break."; - -"Your chat has been blocked by a GM."; -"Your chat has been blocked by a GM."; - -"Your chat block has been lifted."; -"Your chat block has been lifted."; - -"The Build window is already open."; -"The Build window is already open."; - -"You cannot build something while another trade/storeroom window is open."; -"You cannot build something while another trade/storeroom window is open."; - -"No further improvements possible."; -"No further improvements possible."; - -"The build window is not open."; -"The build window is not open."; - -"You do not have the right material."; -"You do not have the right material."; - -"[Guild] Please try again later."; -"[Guild] Please try again later."; - -"You have to read %d more skill books to improve this skill."; -"You have to read %d more skill books to improve this skill."; - -"You are only able to use this function while you are at the castle."; -"You are only able to use this function while you are at the castle."; - -"TEST: The Gold Bar has been paid back to your kingdom's safe."; -"TEST: The Gold Bar has been paid back to your kingdom's safe."; - -"TEST: In your kingdom's safe there are: %d"; -"TEST: In your kingdom's safe there are: %d"; - -"TEST: You cannot pay the Gold Bar back into your kingdom's safe."; -"TEST: You cannot pay the Gold Bar back into your kingdom's safe."; - -"[Guild] The guild has reached %d points."; -"[Guild] The guild has reached %d points."; - -"This item cannot be improved."; -"This item cannot be improved."; - -"The free weapon improvements can only be used on weapons up to level 20."; -"The free weapon improvements can only be used on weapons up to level 20."; - -"You cannot use this item because you do not fulfil all the requirements."; -"You cannot use this item because you do not fulfil all the requirements."; - -"You are not able to use that item because you do not have the right gender."; -"You are not able to use that item because you do not have the right gender."; - -"Use: transfer "; -"Use: transfer "; - -"This function can only be used by the emperor."; -"This function can only be used by the emperor."; - -"You cannot recruit players from another kingdom."; -"You cannot recruit players from another kingdom."; - -"The player %s is on channel %d at the moment. (Your channel: %d)"; -"The player %s is on channel %d at the moment. (Your channel: %d)"; - -"You have recruited %s players."; -"You have recruited %s players."; - -"There is no user with this name."; -"There is no user with this name."; - -"You cannot recruit yourself."; -"You cannot recruit yourself."; - -"Your level is too low to use this item."; -"Your level is too low to use this item."; - -"You cannot upgrade anything while another window is open."; -"You cannot upgrade anything while another window is open."; - -"The emperor of %s has changed to %s."; -"The emperor of %s has changed to %s."; - -"There are %s wars to inflame the bonfires."; -"There are %s wars to inflame the bonfires."; - -"%s has successfully defended."; -"%s has successfully defended."; - -"30 minutes from now on the player %s can get a reward because he destroyed the bonfire."; -"30 minutes from now on the player %s can get a reward because he destroyed the bonfire."; - -"30 minutes are over. The bonfires have disappeared."; -"30 minutes are over. The bonfires have disappeared."; - -"A bonfire was inflamed at %s to warn because of a battle."; -"A bonfire was inflamed at %s to warn because of a battle."; - -"%s has destroyed the bonfire."; -"%s has destroyed the bonfire."; - -"%s lost the war as they have not been able to defend the castle."; -"%s lost the war as they have not been able to defend the castle."; - -"%s has destroyed all the bonfires."; -"%s has destroyed all the bonfires."; - -"You can only open the shop if you take off your armour."; -"You can only open the shop if you take off your armour."; - -"%d hours %d minutes %d seconds left on your chat block"; -"%d hours %d minutes %d seconds left on your chat block"; - -"%d hours %d seconds left on your chat block"; -"%d hours %d seconds left on your chat block"; - -"%d minutes %d seconds left on your chat block"; -"%d minutes %d seconds left on your chat block"; - -"Yang rain drop rate"; -"Yang rain drop rate"; - -"Not the right material for an upgrade."; -"Not the right material for an upgrade."; - -"All kingdoms"; -"All kingdoms"; - -"Item drop rate in percent"; -"Item drop rate in percent"; - -"Yang drop rate in percent"; -"Yang drop rate in percent"; - -"Experience percentage"; -"Experience percentage"; - -"%d seconds left on your chat block"; -"%d seconds left on your chat block"; - -"You cannot express emotions whilst riding a horse."; -"You cannot express emotions whilst riding a horse."; - -"You cannot use emotions with a player who is riding on a Horse."; -"You cannot use emotions with a player who is riding on a Horse."; - -"[Guild] The enemy's guild leader is offline."; -"[Guild] The enemy's guild leader is offline."; - -"[Guild] This guild is taking part in a battle at the moment."; -"[Guild] This guild is taking part in a battle at the moment."; - -"You're already riding. Get off first."; -"You're already riding. Get off first."; - -"You cannot upgrade items with this Scroll."; -"You cannot upgrade items with this Scroll."; - -"You can only be rewarded once for the Demon Tower Quest."; -"You can only be rewarded once for the Demon Tower Quest."; - -"Dragon Stone has been removed."; -"Dragon Stone has been removed."; - -"You cannot move the item within the refinement window."; -"You cannot move the item within the refinement window."; - -"Dragon Stone remaining duration has been extracted."; -"Dragon Stone remaining duration has been extracted."; - -"Remaining duration extraction failed."; -"Remaining duration extraction failed."; - -"Removal of Dragon Stone failed. But you have received the following: %s"; -"Removal of Dragon Stone failed. But you have received the following: %s"; - -"Removal of Dragon Stone failed."; -"Removal of Dragon Stone failed."; - -"This item is not required for improving the clarity level."; -"This item is not required for improving the clarity level."; - -"This item cannot be advanced this way."; -"This item cannot be advanced this way."; - -"Improvement of the clarity level successful."; -"Improvement of the clarity level successful."; - -"Refinement up one class failed."; -"Refinement up one class failed."; - -"This item is not required for refinement."; -"This item is not required for refinement."; - -"Refinement up one class was successful."; -"Refinement up one class was successful."; - -"Improvement of the clarity level failed."; -"Improvement of the clarity level failed."; - -"You do not own the materials required to strengthen the Dragon Stone."; -"You do not own the materials required to strengthen the Dragon Stone."; - -"This Dragon Stone cannot be used for strengthening."; -"This Dragon Stone cannot be used for strengthening."; - -"Strengthening was successful."; -"Strengthening was successful."; - -"Strengthening failed."; -"Strengthening failed."; - -"You are already carrying a Dragon Stone of this type."; -"You are already carrying a Dragon Stone of this type."; - -"The Dragon Stone cannot be removed."; -"The Dragon Stone cannot be removed."; - -"You have already equipped this kind of Dragon Stone."; -"You have already equipped this kind of Dragon Stone."; - -"Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy."; -"Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy."; - -"You can only discard the belt when there are no longer any items in its inventory."; -"You can only discard the belt when there are no longer any items in its inventory."; - -"You can combine the Blessing Scroll with the Magic Iron Ore."; -"You can combine the Blessing Scroll with the Magic Iron Ore."; - -"You cannot equip this item in your belt inventory."; -"You cannot equip this item in your belt inventory."; - -"[1106-??]No puedes unir esto."; -"[1106-??]No puedes unir esto."; - -"You have invested %d Yang."; -"You have invested %d Yang."; - -"There is no Stone available to take out."; -"There is no Stone available to take out."; - -"You cannot store this location."; -"You cannot store this location."; - -"There isn't enough space in your inventory."; -"There isn't enough space in your inventory."; - -"You cannot teleport to a safe position in a foreign Kingdom."; -"You cannot teleport to a safe position in a foreign Kingdom."; - -"You don't have enough HP."; -"You don't have enough HP."; - -"You don't have enough Spell Points (SP) to use this."; -"You don't have enough Spell Points (SP) to use this."; - -"You'll reach your destination in %d seconds."; -"You'll reach your destination in %d seconds."; - -"You can only use a Moon Cake every 5 seconds."; -"You can only use a Moon Cake every 5 seconds."; - -"You cannot use this item in a duel."; -"You cannot use this item in a duel."; - -"You have won %d Yang."; -"You have won %d Yang."; - -"You cannot build a campfire here."; -"You cannot build a campfire here."; - -"You cannot build a campfire under water."; -"You cannot build a campfire under water."; - -"Closed. You should look for the key."; -"Closed. You should look for the key."; - -"This item cannot be opened with a key."; -"This item cannot be opened with a key."; - -"That's the right key."; -"That's the right key."; - -"You have received %d Yang."; -"You have received %d Yang."; - -"A mysterious light comes out of the box."; -"A mysterious light comes out of the box."; - -"You have received %d experience points."; -"You have received %d experience points."; - -"Look what came out of the box!"; -"Look what came out of the box!"; - -"[Guild] The guild level is too low."; -"[Guild] The guild level is too low."; - -"If you inhale the red smoke coming out of the box, your speed will increase!"; -"If you inhale the red smoke coming out of the box, your speed will increase!"; - -"You cannot add more bonus."; -"You cannot add more bonus."; - -"New bonus added successfully."; -"New bonus added successfully."; - -"You cannot change the bonuses."; -"You cannot change the bonuses."; - -"%s needed."; -"%s needed."; - -"OX-Question: "; -"OX-Question: "; diff --git a/gamefiles/locale/english/mob_drop_item.txt.edited b/gamefiles/locale/english/mob_drop_item.txt.edited deleted file mode 100644 index 495eebc..0000000 --- a/gamefiles/locale/english/mob_drop_item.txt.edited +++ /dev/null @@ -1,9135 +0,0 @@ -<<<<<<< .mine -Group θ -{ - Mob 103 - Type drop - 1 1012 1 0.2 - 2 4012 1 0.2 - 3 11402 1 0.2 - 4 16022 1 0.2 -} -Group Ǫ -{ - Mob 104 - Type drop - 1 32 1 0.2 - 2 52 1 0.2 - 3 15002 1 0.2 - 4 2022 1 0.2 - 5 16002 1 0.2 -} -Group Ǫθ -{ - Mob 105 - Type drop - 1 11602 1 0.2 - 2 12482 1 0.2 - 3 15022 1 0.2 - 4 16062 1 0.2 -} -Group ȸθ -{ - Mob 107 - Type drop - 1 12342 1 0.2 - 2 11401 1 0.2 - 3 17022 1 0.2 - 4 17002 1 0.2 -} -Group -{ - Mob 109 - Type drop - 1 11802 1 0.2 - 2 12622 1 0.2 - 3 15042 1 0.2 - 4 5012 1 0.2 - 5 7032 1 0.2 -} -Group ȸ -{ - Mob 111 - Type drop - 1 50721 1 1 -} -Group -{ - Mob 112 - Type drop - 1 50723 1 1 -} -Group Ұ -{ - Mob 113 - Type drop - 1 50721 1 1 -} -Group ȣ -{ - Mob 115 - Type drop - 1 50723 1 1 -} -Group ֹ_θ -{ - Kill_drop 400 - Mob 131 - Type kill - 1 7160 1 25 10 -} -Group ֹ -{ - Mob 131 - Type drop - 1 50722 1 2 -} -Group ֹθ -{ - Mob 132 - Type drop - 1 50723 1 1 -} -Group ֹ_Ǫθ -{ - Kill_drop 400 - Mob 134 - Type kill - 1 5110 1 25 10 - 2 290 1 15 10 -} -Group ֹ_ -{ - Kill_drop 400 - Mob 138 - Type kill - 1 1170 1 25 10 -} -Group ֹ -{ - Mob 139 - Type drop - 1 50724 1 1 -} -Group ֹȸ -{ - Mob 140 - Type drop - 1 50726 1 1 -} -Group ֹ_ -{ - Kill_drop 400 - Mob 141 - Type kill - 1 13192 1 25 20 - 2 13193 1 20 20 - 3 3210 1 15 10 -} -Group ֹȣ -{ - Mob 143 - Type drop - 1 50723 1 1 -} -Group Ǫθû -{ - Mob 151 - Type drop - 1 1013 1 4 - 2 4013 1 4 - 3 11403 1 4 - 4 16023 1 4 - 5 1014 1 4 - 6 4014 1 4 - 7 11404 1 4 - 8 16024 1 4 -} -Group ȸθ빫 -{ - Mob 152 - Type drop - 1 33 1 4 - 2 53 1 4 - 3 15003 1 4 - 4 2023 1 4 - 5 16003 1 4 - 6 34 1 4 - 7 54 1 4 - 8 15004 1 4 - 9 2024 1 4 - 10 16004 1 4 -} -Group -{ - Mob 153 - Type drop - 1 11803 1 4 - 2 12623 1 4 - 3 15043 1 4 - 4 5013 1 4 - 5 7033 1 4 - 6 11804 1 4 - 7 12624 1 4 - 8 15044 1 4 - 9 5014 1 4 - 10 7034 1 4 -} -Group Ұ -{ - Mob 154 - Type drop - 1 11211 1 12 - 2 11212 1 8 - 3 11213 1 4 - 4 11411 1 12 - 5 11412 1 8 - 6 11413 1 4 -} -Group ȣϾ -{ - Mob 155 - Type drop - 1 11611 1 12 - 2 11612 1 8 - 3 11613 1 4 - 4 11811 1 12 - 5 11812 1 8 - 6 11813 1 4 -} -Group ߽ -{ - Mob 191 - Type drop - 1 71 1 4 - 2 70 1 8 - 3 11611 1 4 - 4 11610 1 8 - 5 72 1 0.3 - 6 11612 1 0.2 - 7 15002 1 0.4 - 8 16042 1 0.4 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30070 1 400 -} -Group -{ - Mob 192 - Type drop - 1 4021 1 4 - 2 4020 1 8 - 3 11411 1 4 - 4 11410 1 8 - 5 1031 1 0.3 - 6 1032 1 0.2 - 7 15042 1 0.5 - 8 27002 30 100 - 9 27003 20 50 - 10 27005 20 50 - 11 27006 10 50 - 12 30004 1 400 -} -Group -{ - Mob 193 - Type drop - 1 7051 1 4 - 2 7050 1 8 - 3 11831 1 4 - 4 11830 1 8 - 5 7061 1 0.3 - 6 7062 1 0.2 - 7 15062 1 0.5 - 8 17042 1 0.5 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30072 1 400 -} -Group ȣ -{ - Mob 194 - Type drop - 1 3051 1 4 - 2 3050 1 8 - 3 11211 1 4 - 4 11210 1 8 - 5 3062 1 0.3 - 6 11212 1 0.2 - 7 15042 1 0.5 - 8 17022 1 0.5 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30037 1 400 -} -Group ܿ -{ - Kill_drop 800 - Mob 301 - Type kill - 1 16082 1 25 10 - 2 16102 1 20 10 - 3 16122 1 15 10 - 4 16142 1 10 10 -} -Group ܿ -{ - Mob 301 - Type drop - 1 50722 1 2 -} -Group ú -{ - Mob 302 - Type drop - 1 8001 30 12 - 2 50724 1 1 -} -Group _̷ -{ - Kill_drop 350 - Mob 304 - Type kill - 1 11232 1 65 10 - 2 11233 1 35 10 - 3 11432 1 65 10 - 4 11433 1 35 10 - 5 11632 1 65 10 - 6 11633 1 35 10 - 7 11832 1 65 10 - 8 11833 1 35 10 -} -Group ܿ -{ - Mob 331 - Type drop - 1 16083 1 4 - 2 16103 1 4 - 3 16123 1 4 - 4 16143 1 4 -} -Group ú -{ - Mob 332 - Type drop - 1 4021 1 4 - 2 4020 1 4 - 3 2051 1 4 - 4 2050 1 4 - 5 15122 1 4 -} -Group -{ - Mob 333 - Type drop - 1 3041 1 4 - 2 3040 1 4 - 3 2041 1 4 - 4 2050 1 4 - 5 15122 1 4 -} -Group -{ - Mob 334 - Type drop - 1 11234 1 6 - 2 11233 1 4 - 3 11434 1 6 - 4 11433 1 4 - 5 11634 1 6 - 6 11633 1 4 - 7 11834 1 6 - 8 11833 1 4 -} -Group -{ - Mob 391 - Type drop - 1 61 1 0.2 - 2 60 1 0.2 - 3 12641 1 0.2 - 4 12640 1 0.2 - 5 15062 1 0.2 -} -Group -{ - Mob 392 - Type drop - 1 4021 1 0.2 - 2 4020 1 0.2 - 3 2051 1 0.2 - 4 2050 1 0.2 - 5 15122 1 0.01 -} -Group -{ - Mob 393 - Type drop - 1 3041 1 4 - 2 3040 1 8 - 3 2041 1 4 - 4 2050 1 8 - 5 15122 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Mob 394 - Type drop - 1 62 1 4 - 2 61 1 8 - 3 92 1 4 - 4 11222 1 8 - 5 15062 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group dzܿ -{ - Kill_drop 1000 - Mob 401 - Type kill - 1 15082 1 25 10 - 2 15102 1 20 10 - 3 15122 1 15 10 - 4 15142 1 10 10 -} -Group dzܿ -{ - Mob 401 - Type drop - 1 50724 1 1 -} -Group dzü -{ - Mob 403 - Type drop - 1 50007 1 0.5 - 2 8001 30 4 -} -Group dz_۵ -{ - Kill_drop 800 - Mob 404 - Type kill - 1 5042 1 65 10 - 2 5032 1 35 10 - 3 12222 1 35 10 - 4 12223 1 15 10 - 5 12362 1 35 10 - 6 12363 1 15 10 - 7 12502 1 35 10 - 8 12503 1 15 10 - 9 12642 1 35 10 - 10 12643 1 15 10 -} -Group dz_ -{ - Kill_drop 500 - Mob 405 - Type kill - 1 7072 1 1 10 - 2 7052 1 1 10 - 3 4022 1 1 10 - 4 1042 1 1 10 -} -Group dz -{ - Mob 405 - Type drop - 1 50721 1 1 -} -Group dz_ -{ - Kill_drop 300 - Mob 406 - Type kill - 1 82 1 65 10 - 2 83 1 35 10 -} -Group dzܿκ -{ - Mob 431 - Type drop - 1 12222 1 4 - 2 12223 1 4 - 3 12362 1 4 - 4 12363 1 4 - 5 50009 1 2 -} -Group dzݴ -{ - Mob 432 - Type drop - 1 12502 1 4 - 2 12503 1 4 - 3 12642 1 4 - 4 12643 1 4 - 5 50009 1 2 -} -Group dzü -{ - Mob 433 - Type drop - 1 7072 1 4 - 2 7052 1 4 - 3 4022 1 4 - 4 1042 1 4 - 5 50009 1 2 -} -Group dz -{ - Mob 434 - Type drop - 1 61 1 4 - 2 12640 1 4 - 3 91 1 4 - 4 15060 1 4 - 5 50009 1 2 -} -Group dzȣ -{ - Mob 435 - Type drop - 1 16041 1 4 - 2 7050 1 4 - 3 15141 1 4 - 4 11820 1 4 - 5 50009 1 2 -} -Group dz -{ - Mob 436 - Type drop - 1 71 1 4 - 2 5040 1 4 - 3 12501 1 4 - 4 17100 1 4 - 5 15102 1 4 - 6 50009 1 2 -} -Group ȯ -{ - Mob 491 - Type drop - 1 4021 1 4 - 2 12360 1 8 - 3 13001 1 4 - 4 15080 1 8 - 5 17082 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Mob 492 - Type drop - 1 61 1 4 - 2 12640 1 8 - 3 91 1 4 - 4 15060 1 8 - 5 27002 30 100 - 6 27003 20 50 - 7 27005 20 50 - 8 27006 10 50 -} -Group -{ - Mob 493 - Type drop - 1 16041 1 4 - 2 7050 1 8 - 3 15141 1 4 - 4 11820 1 8 - 5 27002 30 100 - 6 27003 20 50 - 7 27005 20 50 - 8 27006 10 50 -} -Group -{ - Mob 494 - Type drop - 1 71 1 4 - 2 5040 1 8 - 3 12501 1 4 - 4 17100 1 8 - 5 15102 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Kill_drop 2000 - Mob 502 - Type kill - 1 17082 1 25 10 - 2 17102 1 20 10 - 3 17122 1 15 10 - 4 17142 1 10 10 -} -Group -{ - Mob 502 - Type drop - 1 50724 1 1 -} -Group ijü -{ - Mob 503 - Type drop - 1 50013 1 0.5 - 2 8001 50 20 - 3 50721 1 1 -} -Group ɱü -{ - Kill_drop 500 - Mob 503 - Type kill - 1 2072 1 10 10 - 2 290 1 10 10 - 3 2150 1 15 10 -} -Group -{ - Kill_drop 400 - Mob 504 - Type kill - 1 3072 1 65 10 - 2 3073 1 35 10 - 3 290 1 40 10 - 4 2150 1 20 10 - 5 11242 1 35 10 - 6 11243 1 15 10 - 7 11442 1 35 10 - 8 11443 1 15 10 - 9 11642 1 35 10 - 10 11643 1 15 10 - 11 11842 1 35 10 - 12 11843 1 15 10 -} -Group -{ - Mob 504 - Type drop - 1 50725 1 1 -} -Group ij -{ - Mob 531 - Type drop - 1 17083 1 8 - 2 17103 1 6 - 3 17123 1 4 - 4 17143 1 4 - 5 50008 1 2 -} -Group ij -{ - Mob 532 - Type drop - 1 16083 1 4 - 2 16103 1 4 - 3 16123 1 4 - 4 16143 1 4 - 5 50008 1 2 -} -Group ijüõ -{ - Mob 533 - Type drop - 1 2073 1 4 - 2 292 1 4 - 3 2152 1 4 - 4 50008 1 2 -} -Group ijδ尭õ -{ - Mob 534 - Type drop - 1 3072 1 8 - 2 3073 1 4 - 3 290 1 6 - 4 2150 1 4 - 5 11244 1 2 - 6 11243 1 4 - 7 11444 1 2 - 8 11443 1 4 - 9 11644 1 2 - 10 11643 1 4 - 11 11844 1 2 - 12 11843 1 4 - 13 50008 1 2 -} -Group ܴ -{ - Mob 591 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11432 1 0.2 - 4 15122 1 0.2 - 5 27002 50 100 - 6 27003 30 50 - 7 27005 30 50 - 8 27006 20 50 -} -Group ͺл -{ - Mob 601 - Type drop - 1 7082 1 8 - 2 5052 1 8 - 3 14082 1 4 - 4 14102 1 4 - 5 14122 1 4 - 6 14142 1 4 -} -Group ôĺǸ -{ - Mob 602 - Type drop - 1 93 1 8 - 2 1053 1 8 - 3 1172 1 8 -} -Group ε -{ - Mob 603 - Type drop - 1 71 1 4 - 2 5040 1 8 - 3 12501 1 4 - 4 17100 1 8 - 5 15102 1 4 -} -Group ͸ο -{ - Mob 604 - Type drop - 1 1042 1 4 - 2 2072 1 4 - 3 11422 1 4 - 4 15122 1 4 -} -Group ͺ -{ - Kill_drop 400 - Mob 631 - Type kill - 1 7082 1 20 10 - 2 5052 1 10 10 - 3 14082 1 25 10 - 4 14102 1 20 10 - 5 14122 1 15 10 - 6 14142 1 10 10 -} -Group ͺ -{ - Mob 631 - Type drop - 1 50722 1 1 -} -Group _ôĺ -{ - Kill_drop 600 - Mob 632 - Type kill - 1 92 1 10 20 - 2 1052 1 10 20 - 3 1170 1 10 20 -} -Group ôĺ -{ - Mob 632 - Type drop - 1 50726 1 1 -} -Group _ -{ - Kill_drop 1200 - Mob 633 - Type kill - 1 3082 1 10 20 - 2 1170 1 10 20 -} -Group -{ - Mob 633 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11432 1 0.2 - 4 15122 1 0.2 -} -Group ͸ -{ - Mob 634 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11422 1 0.2 - 4 15122 1 0.2 -} -Group 屺 -{ - Mob 635 - Type drop - 1 50722 1 1 -} -Group -{ - Kill_drop 500 - Mob 636 - Type kill - 1 7092 1 65 10 - 2 7093 1 35 10 -} -Group -{ - Mob 636 - Type drop - 1 50721 1 4 -} -Group Ŵ_ -{ - Kill_drop 900 - Mob 637 - Type kill - 1 5062 1 65 10 - 2 5063 1 35 10 -} -Group -{ - Kill_drop 1 - Mob 691 - Type kill - 1 50070 1 100 0 -} -Group -{ - Mob 691 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 40 -} -Group б -{ - Kill_drop 300 - Mob 701 - Type kill - 1 2082 1 35 30 - 2 15162 1 32 10 - 3 15182 1 16 10 - 4 15202 1 12 10 - 5 15222 1 8 10 -} -Group бѺ -{ - Kill_drop 500 - Mob 702 - Type kill - 1 11252 1 30 10 - 2 11452 1 30 10 - 3 11652 1 30 10 - 4 11852 1 30 10 - 5 11253 1 60 10 - 6 11453 1 60 10 - 7 11653 1 60 10 - 8 11853 1 60 10 - 9 3210 1 40 10 -} -Group бѺ -{ - Mob 702 - Type drop - 1 50725 1 1 -} -Group б -{ - Kill_drop 200 - Mob 703 - Type kill - 1 15163 1 25 10 - 2 15183 1 20 10 - 3 15203 1 15 10 - 4 15223 1 10 10 - 5 3210 1 20 10 -} -Group б -{ - Mob 703 - Type drop - 1 103 1 0.2 - 2 112 1 0.2 - 3 1062 1 0.2 - 4 11642 1 0.2 - 5 16162 1 0.2 - 6 50724 1 1 -} -Group б -{ - Kill_drop 500 - Mob 704 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 -} -Group б -{ - Mob 704 - Type drop - 1 50723 1 2 -} -Group бິ -{ - Mob 705 - Type drop - 1 50724 1 1 -} -Group бڷ -{ - Kill_drop 100 - Mob 706 - Type kill - 1 102 1 65 10 - 2 103 1 35 10 - 3 12242 1 45 10 - 4 12243 1 30 10 - 5 12382 1 35 10 - 6 12383 1 20 10 - 7 12522 1 25 10 - 8 12523 1 20 10 - 9 12662 1 20 10 - 10 12663 1 15 10 -} -Group бȯ -{ - Kill_drop 40 - Mob 707 - Type kill - 1 3092 1 65 10 - 2 3093 1 35 10 - 3 16162 1 54 30 - 4 16163 1 27 30 - 5 16182 1 36 30 - 6 16183 1 18 30 - 7 16202 1 18 30 - 8 16203 1 9 30 -} -Group бȯ -{ - Mob 707 - Type drop - 1 50723 1 1 -} -Group б -{ - Mob 731 - Type drop - 1 50726 1 2 -} -Group б -{ - Mob 733 - Type drop - 1 50725 1 2 -} -Group б -{ - Kill_drop 700 - Mob 734 - Type kill - 1 11260 1 65 20 - 2 11261 1 35 20 - 3 11460 1 65 20 - 4 11461 1 35 20 - 5 11660 1 65 20 - 6 11661 1 35 20 - 7 11860 1 65 20 - 8 11861 1 35 20 -} -Group бڷ -{ - Kill_drop 300 - Mob 736 - Type kill - 1 122 1 65 10 - 2 123 1 35 10 -} -Group бڷ -{ - Mob 736 - Type drop - 1 50725 1 2 -} -Group бȯ -{ - Kill_drop 300 - Mob 737 - Type kill - 1 3111 1 65 10 - 2 3112 1 35 10 -} -Group бȯ -{ - Mob 737 - Type drop - 1 50727 1 0.8 -} -Group б -{ - Kill_drop 1 - Mob 791 - Type kill - 1 50071 1 100 0 -} -Group б -{ - Mob 791 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 50 -} -Group ȯѹб -{ - Mob 792 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 200 -} -Group ñ -{ - Kill_drop 500 - Mob 901 - Type kill - 1 15162 1 12 30 - 2 15182 1 9 30 - 3 15202 1 6 30 - 4 15222 1 3 30 -} -Group ñ -{ - Mob 901 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11442 1 0.2 - 4 15122 1 0.2 -} -Group -{ - Kill_drop 400 - Mob 902 - Type kill - 1 17162 1 18 30 - 2 17163 1 9 30 - 3 17182 1 12 30 - 4 17183 1 6 30 - 5 17202 1 6 30 - 6 17203 1 3 30 -} -Group -{ - Mob 902 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 -} -Group -{ - Mob 903 - Type drop - 1 50723 1 1 -} -Group -{ - Kill_drop 450 - Mob 904 - Type kill - 1 132 1 6 10 - 2 133 1 3 10 - 3 1092 1 6 10 - 4 1093 1 3 10 -} -Group -{ - Mob 904 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 -} -Group â -{ - Kill_drop 900 - Mob 905 - Type kill - 1 2122 1 65 10 - 2 2123 1 35 10 -} -Group â -{ - Mob 905 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 - 3 50722 1 2 -} -Group ü -{ - Kill_drop 250 - Mob 906 - Type kill - 1 12242 1 6 10 - 2 12243 1 3 10 - 3 12382 1 6 10 - 4 12383 1 3 10 - 5 12522 1 6 10 - 6 12523 1 3 10 - 7 12662 1 6 10 - 8 12663 1 3 10 -} -Group ü -{ - Mob 906 - Type drop - 1 50006 1 1 - 2 8004 100 20 - 3 50723 1 2 -} -Group -{ - Kill_drop 200 - Mob 907 - Type kill - 1 3122 1 65 10 - 2 3123 1 30 10 -} -Group -{ - Mob 907 - Type drop - 1 5062 1 0.2 - 2 11652 1 0.2 - 3 2092 1 0.2 - 4 11452 1 0.2 - 5 15122 1 0.2 - 6 70049 1 0.1 - 7 50728 1 1 -} -Group ͺ -{ - Mob 1001 - Type drop - 1 50728 1 1 -} -Group ͱú -{ - Kill_drop 200 - Mob 1002 - Type kill - 1 2122 1 35 0 -} -Group ͱú -{ - Mob 1002 - Type drop - 1 50012 1 0.4 - 2 8005 100 20 - 3 50724 1 1 -} -Group â -{ - Kill_drop 100 - Mob 1003 - Type kill - 1 1092 1 65 30 - 2 1093 1 35 30 - 3 14162 1 54 30 - 4 14163 1 27 30 - 5 14182 1 36 30 - 6 14183 1 18 30 - 7 14202 1 18 30 - 8 14203 1 9 30 -} -Group â -{ - Mob 1003 - Type drop - 1 50721 1 2 -} -Group ּ -{ - Kill_drop 50 - Mob 1004 - Type kill - 1 3122 1 65 10 - 2 3123 1 35 10 -} -Group ͱú -{ - Mob 1032 - Type drop - 1 50012 1 0.9 - 2 8005 100 20 -} -Group Ȱͺ -{ - Kill_drop 0 - Mob 1061 - Type kill -} -Group Ȱͺ -{ - Mob 1061 - Type drop - 1 50724 1 2 - 2 30193 1 0.02 -} -Group Ȱͱú -{ - Kill_drop 0.0 - Mob 1062 - Type drop - 1 30193 1 0.02 -} -Group Ȱâ -{ - Kill_drop 10000 - Mob 1063 - Type kill - 1 11270 1 10 20 - 2 11470 1 10 20 - 3 11670 1 10 20 - 4 11870 1 10 20 - 5 11271 1 1 20 - 6 11471 1 1 20 - 7 11671 1 1 20 - 8 11871 1 1 20 -} -Group Ȱâ -{ - Mob 1063 - Type drop - 1 50726 1 2 - 2 30193 1 0.02 -} -Group Refining_1064 -{ - Mob 1064 - Type drop - 1 30193 1 0.2 -} -Group Ȱּ -{ - Kill_drop 10000 - Mob 1064 - Type kill - 1 11272 1 1 20 - 2 11472 1 1 20 - 3 11672 1 1 20 - 4 11872 1 1 20 - 5 11271 1 10 20 - 6 11471 1 10 20 - 7 11671 1 10 20 - 8 11871 1 10 20 -} -Group ȰѿǸ -{ - Kill_drop 40000 - Mob 1065 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ȰѿǸ -{ - Mob 1065 - Type drop - 1 50728 1 2 -} -Group ȰȥǸ -{ - Kill_drop 0 - Mob 1066 - Type kill -} -Group ȰȥǸ -{ - Mob 1066 - Type drop - 1 50724 1 2 -} -Group Ȱ -{ - Kill_drop 0 - Mob 1068 - Type kill -} -Group Ȱ -{ - Mob 1068 - Type drop - 1 50721 1 4 -} -Group Ȱ -{ - Level_limit 75 - Mob 1068 - Type limit - 1 14004 1 0.08 - 2 14024 1 0.08 - 3 14044 1 0.08 - 4 14064 1 0.08 - 5 1110 1 0.08 - 6 2130 1 0.08 - 7 7140 1 0.08 - 8 13120 1 0.01 -} -Group Ȱɻ -{ - Kill_drop 0 - Mob 1069 - Type kill -} -Group Ȱɻ -{ - Mob 1069 - Type drop - 1 50725 1 2 -} -Group Ȱɻ -{ - Level_limit 75 - Mob 1069 - Type limit - 1 14084 1 0.08 - 2 14104 1 0.08 - 3 14124 1 0.08 - 4 14144 1 0.08 - 5 7140 1 0.08 - 6 5100 1 0.08 - 7 160 1 0.08 - 8 13100 1 0.01 -} -Group ȰѺһ -{ - Kill_drop 0 - Mob 1070 - Type kill -} -Group ȰѺһ -{ - Mob 1070 - Type drop - 1 50727 1 1 -} -Group ȰѺһ -{ - Level_limit 75 - Mob 1070 - Type limit - 1 14084 1 0.08 - 2 14104 1 0.08 - 3 14124 1 0.08 - 4 14144 1 0.08 - 5 2130 1 0.08 - 6 5100 1 0.08 - 7 13080 1 0.01 -} -Group ȰȰ -{ - Kill_drop 0 - Mob 1071 - Type kill -} -Group ȰȰ -{ - Mob 1071 - Type drop - 1 50721 1 4 -} -Group ȰȰ -{ - Level_limit 75 - Mob 1071 - Type limit - 1 14164 1 0.08 - 2 14184 1 0.08 - 3 14204 1 0.08 - 4 3140 1 0.08 - 5 1110 1 0.08 - 6 2130 1 0.08 - 7 7140 1 0.08 - 8 160 1 0.08 - 9 240 1 0.08 - 10 13060 1 0.01 -} -Group Ϳ -{ - Mob 1091 - Type drop - 1 130 1 25 - 2 1090 1 25 - 3 2120 1 25 - 4 7120 1 25 - 5 5080 1 25 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 30 150 - 17 27003 50 200 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 400 -} -Group Ϳ -{ - Kill_drop 1 - Mob 1092 - Type kill - 1 50081 1 100 0 -} -Group -{ - Level_limit 75 - Mob 1093 - Type limit - 1 50082 1 100 -} -Group -{ - Mob 1101 - Type drop - 1 90011 1 0.09 -} -Group Թ -{ - Mob 1102 - Type drop - 1 90011 1 0.1 - 2 50728 1 1 -} -Group -{ - Mob 1103 - Type drop - 1 102 1 0.2 - 2 112 1 0.2 - 3 1072 1 0.2 - 4 11252 1 0.2 - 5 15122 1 0.2 - 6 70050 1 0.1 - 7 90011 1 0.2 - 8 50722 1 1 -} -Group -{ - Kill_drop 350 - Mob 1104 - Type kill - 1 12242 1 6 30 - 2 12382 1 6 30 - 3 12522 1 6 30 - 4 12662 1 6 30 - 5 12243 1 3 30 - 6 12383 1 3 30 - 7 12523 1 3 30 - 8 12663 1 3 30 -} -Group -{ - Mob 1104 - Type drop - 1 50723 1 2 -} -Group -{ - Kill_drop 700 - Mob 1105 - Type kill - 1 11262 1 6 20 - 2 11263 1 3 20 - 3 11462 1 6 20 - 4 11463 1 3 20 - 5 11662 1 6 20 - 6 11663 1 3 20 - 7 11862 1 6 20 - 8 11863 1 3 20 -} -Group -{ - Mob 1105 - Type drop - 1 2092 1 0.2 - 2 7092 1 0.2 - 3 11852 1 0.2 - 4 15142 1 0.2 - 5 70048 1 0.1 - 6 90011 1 0.3 - 7 50725 1 2 -} -Group -{ - Kill_drop 1000 - Mob 1106 - Type kill - 1 1092 1 60 20 - 2 1093 1 30 20 - 3 50009 1 10 0 -} -Group -{ - Mob 1106 - Type drop - 1 102 1 0.2 - 2 112 1 0.2 - 3 1072 1 0.2 - 4 11252 1 0.2 - 5 15122 1 0.2 - 6 70051 1 0.1 - 7 90011 1 0.4 - 8 50728 1 1 -} -Group -{ - Mob 1107 - Type drop - 1 50721 1 2 -} -Group -{ - Kill_drop 300 - Mob 1107 - Type kill - 1 3123 1 60 20 - 2 3124 1 30 20 - 3 50009 1 10 0 -} -Group EisSplitter -{ - Level_limit 75 - Mob 1131 - Type limit - 1 50060 1 0.08 - 2 27987 1 0.1 - 3 50901 1 2.1 - 4 14045 1 0.17 - 5 11885 1 0.7 - 6 11685 1 0.7 - 7 50124 1 0.07 -} -Group Refine_1131 -{ - Mob 1131 - Type drop - 1 30198 1 0.09 -} -Group Eiskillerwal -{ - Level_limit 75 - Mob 1132 - Type limit - 1 50060 1 0.08 - 2 27987 1 0.1 - 3 50901 1 2.1 - 4 30048 1 0.55 - 5 14085 1 0.9 - 6 11485 1 0.7 - 7 11285 1 0.7 - 8 50124 1 0.07 -} -Group Eisinsekt -{ - Level_limit 75 - Mob 1133 - Type limit - 1 50901 1 2.1 - 2 30088 1 0.8 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 14105 1 0.9 - 6 11885 1 0.7 - 7 11685 1 0.7 - 8 50124 1 0.07 -} -Group Eisl?e -{ - Level_limit 75 - Mob 1134 - Type limit - 1 50901 1 2.1 - 2 30089 1 0.32 - 3 50060 1 0.08 - 4 70049 1 0.11 - 5 16163 1 0.85 - 6 11485 1 0.7 - 7 11285 1 0.7 - 8 50124 1 0.07 -} -Group Eismann -{ - Level_limit 75 - Mob 1135 - Type limit - 1 50901 1 2.1 - 2 30090 1 0.55 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 16164 1 0.68 - 6 11886 1 0.4 - 7 11686 1 0.4 - 8 50124 1 0.07 -} -Group Yeti -{ - Level_limit 75 - Mob 1136 - Type limit - 1 50901 1 2.1 - 2 30014 1 0.55 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 14125 1 0.64 - 6 11486 1 0.1 - 7 11286 1 0.1 - 8 50124 1 0.07 -} -Group Eisgolem -{ - Level_limit 75 - Mob 1137 - Type limit - 1 19 1 0.04 - 2 1009 1 0.04 - 3 2009 1 0.04 - 4 3009 1 0.04 - 5 5009 1 0.04 - 6 7009 1 0.04 - 7 30050 1 0.19 - 8 27105 10 0.323 - 9 50009 1 0.34 - 10 27987 1 0.1 - 11 11886 1 0.1 - 12 11686 1 0.1 - 13 11486 1 0.1 - 14 11286 1 0.1 - 15 50124 1 0.07 -} -Group Refine_1137 -{ - Mob 1137 - Type drop - 1 30198 1 0.125 -} -Group ice_witch -{ - Level_limit 80 - Mob 1192 - Type drop - 1 11294 1 50 15 - 2 11494 1 50 15 - 3 11694 1 50 15 - 4 11894 1 50 15 - 5 13066 1 50 15 - 6 13086 1 50 15 - 7 13106 1 50 15 - 8 13126 1 50 15 - 9 15187 1 50 15 - 10 15167 1 50 15 - 11 15207 1 50 15 - 12 15227 1 50 15 - 13 16207 1 50 15 - 14 16187 1 50 15 - 15 17147 1 50 15 - 16 17167 1 50 15 - 17 17187 1 50 15 - 18 17207 1 50 15 - 19 28430 1 50 15 - 20 28431 1 50 15 - 21 28432 1 50 15 - 22 28433 1 50 15 - 23 28434 1 50 15 - 24 28435 1 50 15 - 25 28436 1 50 15 - 26 28437 1 50 15 - 27 28438 1 50 15 - 28 28439 1 50 15 - 29 28440 1 50 15 - 30 28441 1 50 15 - 31 28442 1 50 15 - 32 28443 1 50 15 - 33 70031 1 50 15 - 34 71056 1 50 15 - 35 30190 1 400 100 - 36 30190 5 100 10 -} -Group ûͺ -{ - Kill_drop 400 - Mob 1301 - Type kill - 1 16160 1 18 30 - 2 16161 1 9 30 - 3 16180 1 12 30 - 4 16181 1 6 30 - 5 16200 1 6 30 - 6 16201 1 3 30 -} -Group ûͺ -{ - Mob 1301 - Type drop - 1 90012 1 0.2 - 2 12260 1 2.5 - 3 12390 1 2.5 - 4 12530 1 5 - 5 12670 1 5 -} -Group û -{ - Kill_drop 800 - Mob 1302 - Type kill - 1 5082 1 65 20 - 2 5083 1 35 20 -} -Group û -{ - Mob 1302 - Type drop - 1 90012 1 0.3 - 2 12260 1 5 - 3 12390 1 5 - 4 12530 1 2.5 - 5 12670 1 2.5 -} -Group ǮٸӸ -{ - Kill_drop 1000 - Mob 1303 - Type kill - 1 2122 1 1 20 -} -Group ǮٸӸ -{ - Mob 1303 - Type drop - 1 90012 1 0.1 -} -Group -{ - Kill_drop 1 - Mob 1304 - Type kill - 1 50078 1 100 0 -} -Group -{ - Mob 1304 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 300 -} -Group 屺 -{ - Kill_drop 350 - Mob 1305 - Type kill - 1 7122 1 65 20 - 2 7123 1 35 20 -} -Group 屺 -{ - Mob 1305 - Type drop - 1 15162 1 0.2 - 2 16162 1 0.2 - 3 12382 1 0.2 - 4 17142 1 0.2 - 5 90012 1 0.4 - 6 12260 1 0.75 - 7 12390 1 0.75 - 8 12530 1 0.75 - 9 12670 1 0.75 -} -Group ͺ -{ - Kill_drop 0 - Mob 1401 - Type kill -} -Group ͺ -{ - Mob 1401 - Type drop - 1 50723 1 2 -} -Group ôĺ -{ - Kill_drop 1500 - Mob 1402 - Type kill - 1 11273 1 20 30 - 2 11473 1 20 30 - 3 11673 1 20 30 - 4 11873 1 20 30 - 5 11274 1 10 30 - 6 11474 1 10 30 - 7 11674 1 10 30 - 8 11874 1 10 30 -} -Group ôĺ -{ - Mob 1402 - Type drop - 1 50726 1 2 -} -Group õ -{ - Kill_drop 500 - Mob 1403 - Type kill - 1 11290 1 5 30 - 2 11490 1 5 30 - 3 11890 1 5 30 - 4 11690 1 5 30 - 5 170 1 1 20 - 6 250 1 1 20 - 7 1120 1 1 20 - 8 2180 1 1 20 - 9 3150 1 1 20 - 10 7150 1 1 20 -} -Group õ -{ - Mob 1403 - Type drop - 1 50725 1 2 -} -Group õ -{ - Level_limit 86 - Mob 1403 - Type limit - 1 11290 1 0.1 - 2 11490 1 0.1 - 3 11890 1 0.1 - 4 11690 1 0.1 - 5 70003 1 0.1 - 6 70005 1 0.1 - 7 70008 1 0.1 - 8 70038 1 0.1 - 9 170 1 0.1 - 10 250 1 0.1 - 11 1120 1 0.1 - 12 2180 1 0.1 - 13 3150 1 0.1 - 14 7150 1 0.1 -} -Group Refine_1501 -{ - Mob 1501 - Type drop - 1 30195 1 1 -} -Group -{ - Kill_drop 100 - Mob 1501 - Type kill - 1 8002 100 1 0 -} -Group -{ - Kill_drop 100 - Mob 1502 - Type kill - 1 8002 100 1 0 -} -Group -{ - Mob 1502 - Type drop - 1 50722 1 1 - 2 30195 1 1 -} -Group Ŵ -{ - Kill_drop 3000 - Mob 1503 - Type kill - 1 11282 1 1 10 - 2 11882 1 1 10 - 3 11482 1 1 10 - 4 11682 1 1 10 -} -Group Ŵ -{ - Mob 1503 - Type drop - 1 50723 1 4 - 2 30195 1 1 -} -Group ϱ -{ - Kill_drop 0 - Mob 1601 - Type kill -} -Group ϲ -{ - Mob 1601 - Type drop - 1 50728 1 2 - 2 30194 1 1.0 -} -Group Ͱ -{ - Kill_drop 1000 - Mob 1602 - Type kill - 1 11271 1 20 20 - 2 11471 1 20 20 - 3 11671 1 20 20 - 4 11871 1 20 20 - 5 11272 1 10 10 - 6 11472 1 10 10 - 7 11672 1 10 10 - 8 11872 1 10 10 -} -Group Ͱ -{ - Mob 1602 - Type drop - 1 50721 1 4 - 2 30194 1 1 -} -Group ͹ -{ - Kill_drop 2000 - Mob 1603 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 -} -Group ͹ -{ - Mob 1603 - Type drop - 1 50722 1 2 - 2 30194 1 1 -} -Group ͹ -{ - Level_limit 86 - Mob 1603 - Type limit - 1 11290 1 0.03 - 2 11490 1 0.03 - 3 11890 1 0.03 - 4 11690 1 0.03 - 5 170 1 0.03 - 6 250 1 0.03 - 7 1120 1 0.03 - 8 2180 1 0.03 - 9 3150 1 0.03 - 10 7150 1 0.03 -} -Group ȣ -{ - Kill_drop 1 - Mob 1901 - Type kill - 1 50077 1 100 0 -} -Group ȣ -{ - Mob 1901 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 200 -} -Group ȣ -{ - Mob 1902 - Type drop - 1 151 1 25 30 - 2 152 1 10 30 - 3 5091 1 25 30 - 4 5092 1 10 30 - 5 141 1 25 30 - 6 142 1 10 30 - 7 3131 1 25 30 - 8 3132 1 10 30 - 9 1101 1 25 30 - 10 1102 1 10 30 - 11 7131 1 25 30 - 12 7132 1 10 30 - 13 2141 1 25 30 - 14 2142 1 10 30 - 15 11682 1 50 30 - 16 11683 1 20 30 - 17 11882 1 50 30 - 18 11883 1 20 30 - 19 11482 1 50 30 - 20 11483 1 20 30 - 21 11282 1 50 30 - 22 11283 1 20 30 - 23 17204 1 50 30 - 24 17205 1 25 30 - 25 17206 1 10 30 - 26 16204 1 50 30 - 27 16205 1 25 30 - 28 16206 1 10 30 - 29 14204 1 50 30 - 30 14205 1 25 30 - 31 14206 1 10 30 - 32 50006 1 400 - 33 50007 1 400 - 34 50012 1 400 - 35 50013 1 400 - 36 12222 1 50 - 37 12223 1 25 - 38 12362 1 50 - 39 12363 1 25 - 40 12502 1 50 - 41 12503 1 25 - 42 12642 1 50 - 43 12643 1 25 - 44 30015 1 100 - 45 30035 1 100 - 46 30058 1 100 - 47 30006 1 100 - 48 30082 1 100 - 49 30076 1 100 - 50 30018 1 100 - 51 30046 1 100 - 52 30021 1 100 - 53 30086 1 100 - 54 30005 1 100 - 55 30072 1 100 - 56 30080 1 100 - 57 30077 1 100 - 58 30069 1 100 - 59 30067 1 100 - 60 12282 1 0.05 - 61 12402 1 0.05 - 62 12542 1 0.05 - 63 12682 1 0.05 - 64 12284 1 0.0125 - 65 12404 1 0.0125 - 66 12544 1 0.0125 - 67 12684 1 0.0125 -} -Group Ź -{ - Mob 2001 - Type drop - 1 50721 1 2 -} -Group Ź -{ - Mob 2002 - Type drop - 1 50725 1 1 -} -Group Ź -{ - Kill_drop 1000 - Mob 2003 - Type kill - 1 7102 1 1 10 -} -Group Ź -{ - Mob 2003 - Type drop - 1 50725 1 1 - 2 50009 1 0.2 -} -Group ԰Ź -{ - Kill_drop 1000 - Mob 2004 - Type kill - 1 5072 1 1 10 -} -Group ԰Ź -{ - Mob 2004 - Type drop - 1 50721 1 2 -} -Group Ź -{ - Kill_drop 500 - Mob 2005 - Type kill - 1 12242 1 1 10 - 2 12382 1 1 10 - 3 12522 1 1 10 - 4 12662 1 1 10 -} -Group Ź -{ - Mob 2005 - Type drop - 1 50727 1 0.8 -} -Group Ź -{ - Mob 2031 - Type drop - 1 50722 1 1 -} -Group ͵Ź -{ - Kill_drop 300 - Mob 2033 - Type kill - 1 112 1 65 10 - 2 113 1 35 10 -} -Group ͵Ź -{ - Mob 2033 - Type drop - 1 50727 1 0.8 -} -Group ԵŹ -{ - Kill_drop 500 - Mob 2034 - Type kill - 1 1072 1 1 10 -} -Group ԵŹ -{ - Mob 2034 - Type drop - 1 50726 1 2 -} -Group Ź -{ - Kill_drop 300 - Mob 2035 - Type kill - 1 11260 1 1 10 - 2 11460 1 1 10 - 3 11660 1 1 10 - 4 11860 1 1 10 -} -Group Ź -{ - Mob 2035 - Type drop - 1 50726 1 2 -} -Group Ź -{ - Kill_drop 90 - Mob 2036 - Type kill - 1 3112 1 65 10 - 2 3113 1 35 10 -} -Group Ź -{ - Mob 2061 - Type drop - 1 50724 1 2 -} -Group Ź -{ - Level_limit 60 - Mob 2061 - Type limit - 1 104 1 0.5 - 2 114 1 0.5 - 3 124 1 0.5 - 4 134 1 0.5 - 5 13006 1 0.5 - 6 13194 1 0.5 - 7 13205 1 0.5 - 8 13060 1 0.05 - 9 13100 1 0.05 -} -Group ͵Ź -{ - Mob 2062 - Type drop - 1 50721 1 4 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2062 - Type limit - 1 1064 1 0.5 - 2 1074 1 0.5 - 3 1084 1 0.5 - 4 1094 1 0.5 - 5 12626 1 0.5 - 6 12645 1 0.5 - 7 12664 1 0.5 - 8 13080 1 0.05 - 9 13120 1 0.05 -} -Group ͵Ź -{ - Mob 2063 - Type drop - 1 50724 1 2 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2063 - Type limit - 1 2094 1 0.5 - 2 2104 1 0.5 - 3 2114 1 0.5 - 4 2124 1 0.5 - 5 12486 1 0.5 - 6 12505 1 0.5 - 7 12524 1 0.5 - 8 13120 1 0.1 -} -Group ԵŹ -{ - Mob 2064 - Type drop - 1 50722 1 2 -} -Group ԵŹ -{ - Level_limit 60 - Mob 2064 - Type limit - 1 3094 1 0.5 - 2 3104 1 0.5 - 3 3114 1 0.5 - 4 3124 1 0.5 - 5 12346 1 0.5 - 6 12365 1 0.5 - 7 12384 1 0.5 - 8 13120 1 0.1 -} -Group Ź -{ - Mob 2065 - Type drop - 1 50723 1 2 - 2 50009 1 0.2 -} -Group Ź -{ - Level_limit 60 - Mob 2065 - Type limit - 1 5064 1 0.5 - 2 5074 1 0.5 - 3 5084 1 0.5 - 4 12206 1 0.5 - 5 12225 1 0.5 - 6 12244 1 0.5 - 7 13100 1 0.1 -} -Group հŹ -{ - Kill_drop 1 - Mob 2091 - Type kill - 1 50073 1 100 0 -} -Group հŹ -{ - Mob 2091 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90011 1 60 -} -Group 񸶱; -{ - Kill_drop 400 - Mob 2102 - Type kill - 1 12222 1 6 10 - 2 12362 1 6 10 - 3 12502 1 6 10 - 4 12642 1 6 10 - 5 12223 1 3 10 - 6 12363 1 3 10 - 7 12503 1 3 10 - 8 12643 1 3 10 -} -Group 񸶱; -{ - Mob 2102 - Type drop - 1 50722 1 2 -} -Group -{ - Kill_drop 1000 - Mob 2103 - Type kill - 1 14160 1 18 10 - 2 14161 1 9 10 - 3 14180 1 12 10 - 4 14181 1 6 10 - 5 14200 1 6 10 - 6 14201 1 3 10 -} -Group -{ - Mob 2103 - Type drop - 1 50721 1 4 -} -Group ΰ -{ - Kill_drop 800 - Mob 2104 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 - 3 7160 1 40 10 - 4 5110 1 20 10 -} -Group ΰ -{ - Mob 2104 - Type drop - 1 50724 1 1 -} -Group ü -{ - Kill_drop 500 - Mob 2105 - Type kill - 1 2092 1 65 10 - 2 2093 1 35 10 - 3 7160 1 20 10 - 4 5110 1 40 10 -} -Group ü -{ - Mob 2105 - Type drop - 1 50013 1 1 - 2 8002 100 40 - 3 30081 1 1 - 4 50009 1 0.2 - 5 50722 1 2 -} -Group ιݻ˺ -{ - Kill_drop 700 - Mob 2106 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 -} -Group ιݻ˺ -{ - Mob 2106 - Type drop - 1 50726 1 1 - 2 50009 1 0.2 -} -Group ιݻú -{ - Kill_drop 400 - Mob 2107 - Type kill - 1 13202 1 65 30 - 2 13203 1 35 30 -} -Group ιݻú -{ - Mob 2107 - Type drop - 1 50006 1 0.7 - 2 8003 50 40 - 3 30082 1 1 - 4 50725 1 2 -} -Group 縷ǹ -{ - Kill_drop 100 - Mob 2108 - Type kill - 1 17162 1 18 10 - 2 17163 1 9 10 - 3 17182 1 12 10 - 4 17183 1 6 10 - 5 17202 1 6 10 - 6 17203 1 3 10 -} -Group 縷ǹ -{ - Mob 2108 - Type drop - 1 92 1 0.2 - 2 2082 1 0.2 - 3 11841 1 0.2 - 4 15122 1 0.2 - 5 27002 30 50 - 6 27003 20 25 - 7 27005 20 50 - 8 27006 10 25 - 9 70008 1 0.1 - 10 50728 1 0.8 -} -Group Ź -{ - Level_limit 60 - Mob 2131 - Type limit - 1 16004 1 0.5 - 2 16024 1 0.5 - 3 16044 1 0.5 - 4 16064 1 0.5 - 5 13006 1 0.5 - 6 13194 1 0.5 - 7 13205 1 0.5 - 8 13100 1 0.1 - 9 50009 1 0.1 -} -Group ΰ -{ - Mob 2131 - Type drop - 1 50727 1 2 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2132 - Type limit - 1 16084 1 0.5 - 2 16104 1 0.5 - 3 16124 1 0.5 - 4 16144 1 0.5 - 5 17164 1 0.5 - 6 17184 1 0.5 - 7 17204 1 0.5 - 8 13080 1 0.1 - 9 50009 1 0.1 -} -Group ü -{ - Mob 2132 - Type drop - 1 50726 1 4 -} -Group ιݻ˺ -{ - Mob 2133 - Type drop - 1 50725 1 4 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2133 - Type limit - 1 15164 1 0.5 - 2 15184 1 0.5 - 3 15204 1 0.5 - 4 15224 1 0.5 - 5 17104 1 0.5 - 6 17124 1 0.5 - 7 17144 1 0.5 - 8 13080 1 0.1 - 9 50009 1 0.1 -} -Group ιݻú -{ - Mob 2134 - Type drop - 1 50727 1 2 -} -Group ԵŹ -{ - Level_limit 60 - Mob 2134 - Type limit - 1 15084 1 0.5 - 2 15104 1 0.5 - 3 15124 1 0.5 - 4 15144 1 0.5 - 5 16164 1 0.5 - 6 16184 1 0.5 - 7 16204 1 0.5 - 8 13060 1 0.1 - 9 50009 1 0.1 -} -Group Ź -{ - Level_limit 60 - Mob 2135 - Type limit - 1 15004 1 0.5 - 2 15024 1 0.5 - 3 15044 1 0.5 - 4 15064 1 0.5 - 5 17044 1 0.5 - 6 17064 1 0.5 - 7 13060 1 0.1 - 8 50009 1 0.1 -} -Group 縷ǹ -{ - Mob 2135 - Type drop - 1 50725 1 4 -} -Group Ŵ縷ź -{ - Kill_drop 1 - Mob 2191 - Type kill - 1 50076 1 100 0 -} -Group Ŵ縷ź -{ - Mob 2191 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 80 -} -Group -{ - Kill_drop 0 - Mob 2201 - Type kill -} -Group -{ - Mob 2201 - Type drop - 1 90010 1 0.09 - 2 50722 1 1 -} -Group ȭ -{ - Kill_drop 1000 - Mob 2202 - Type kill - 1 50009 1 10 0 -} -Group ȭ -{ - Mob 2202 - Type drop - 1 90010 1 0.1 - 2 50727 1 2 -} -Group -{ - Kill_drop 1000 - Mob 2203 - Type kill - 1 132 1 65 20 - 2 133 1 35 20 -} -Group -{ - Mob 2203 - Type drop - 1 90010 1 0.2 - 2 50728 1 1 -} -Group -{ - Kill_drop 1000 - Mob 2204 - Type kill - 1 1092 1 65 20 - 2 1093 1 35 20 -} -Group -{ - Mob 2204 - Type drop - 1 90010 1 0.3 - 2 12280 1 0.041 - 3 12400 1 0.041 - 4 12540 1 0.041 - 5 12680 1 0.041 -} -Group ȭ -{ - Kill_drop 500 - Mob 2205 - Type kill - 1 3123 1 65 20 - 2 3124 1 35 20 -} -Group ȭ -{ - Mob 2205 - Type drop - 1 90010 1 0.4 - 2 50723 1 4 - 3 12280 1 0.041 - 4 12400 1 0.041 - 5 12540 1 0.041 - 6 12680 1 0.041 -} -Group ȭ -{ - Kill_drop 1 - Mob 2206 - Type kill - 1 50079 1 100 0 -} -Group ȭ -{ - Mob 2206 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 200 -} -Group ͸ -{ - Kill_drop 0 - Mob 2301 - Type kill -} -Group ͸ -{ - Mob 2301 - Type drop - 1 50727 1 2 -} -Group صձ͸ -{ - Kill_drop 2000 - Mob 2302 - Type kill - 1 50008 1 1 0 -} -Group صձ͸ -{ - Mob 2302 - Type drop - 1 50726 1 1 - 2 30192 1 0.5 -} -Group -{ - Kill_drop 1000 - Mob 2303 - Type kill - 1 11270 1 30 30 - 2 11470 1 30 30 - 3 11670 1 30 30 - 4 11870 1 30 30 - 5 11271 1 20 20 - 6 11471 1 20 20 - 7 11671 1 20 20 - 8 11871 1 20 20 - 9 11272 1 10 10 - 10 11472 1 10 10 - 11 11672 1 10 10 - 12 11872 1 10 10 - 13 50008 1 20 0 -} -Group -{ - Mob 2303 - Type drop - 1 50725 1 2 - 2 30192 1 0.05 -} -Group Refining_2304 -{ - Mob 2304 - Type drop - 1 30192 1 0.05 -} -Group ȭ͸ -{ - Kill_drop 15000 - Mob 2304 - Type kill - 1 11280 1 1 10 - 2 11880 1 1 10 - 3 11480 1 1 10 - 4 11680 1 1 10 -} -Group ͸ -{ - Kill_drop 10000 - Mob 2305 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ͸ -{ - Kill_drop 800 - Mob 2311 - Type kill - 1 50008 1 1 0 -} -Group ͸ -{ - Mob 2311 - Type drop - 1 50728 1 0.8 - 2 30197 1 0.03 -} -Group ص͸ -{ - Kill_drop 800 - Mob 2312 - Type kill - 1 50008 1 1 0 -} -Group ص͸ -{ - Mob 2312 - Type drop - 1 50724 1 1 - 2 30197 1 0.03 -} -Group -{ - Kill_drop 1000 - Mob 2313 - Type kill - 1 11272 1 20 30 - 2 11472 1 20 30 - 3 11672 1 20 30 - 4 11872 1 20 30 - 5 11273 1 10 30 - 6 11473 1 10 30 - 7 11673 1 10 30 - 8 11873 1 10 30 - 9 50008 1 20 0 -} -Group -{ - Mob 2313 - Type drop - 1 50726 1 1 - 2 30197 1 0.03 -} -Group -{ - Level_limit 86 - Mob 2313 - Type limit - 1 17204 1 0.03 - 2 17205 1 0.03 - 3 17206 1 0.03 - 4 3140 1 0.03 - 5 1110 1 0.03 - 6 2130 1 0.03 - 7 7140 1 0.03 - 8 5100 1 0.03 - 9 160 1 0.03 - 10 240 1 0.03 -} -Group ȭ͸ -{ - Kill_drop 6000 - Mob 2314 - Type kill - 1 11280 1 1 10 - 2 11880 1 1 10 - 3 11480 1 1 10 - 4 11680 1 1 10 -} -Group ȭ͸ -{ - Mob 2314 - Type drop - 1 50727 1 0.8 - 2 30197 1 0.03 -} -Group ȭ͸ -{ - Level_limit 86 - Mob 2314 - Type limit - 1 16204 1 0.03 - 2 16205 1 0.03 - 3 16206 1 0.03 - 4 3140 1 0.06 - 5 1110 1 0.06 - 6 2130 1 0.06 - 7 7140 1 0.06 - 8 5100 1 0.06 - 9 160 1 0.06 - 10 240 1 0.06 -} -Group ͸ -{ - Kill_drop 3000 - Mob 2315 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ͸ -{ - Mob 2315 - Type drop - 1 50728 1 1 -} -Group ͸ -{ - Level_limit 86 - Mob 2315 - Type limit - 1 11291 1 0.03 - 2 11491 1 0.03 - 3 11891 1 0.03 - 4 11691 1 0.03 - 5 27987 1 0.09 - 6 14204 1 0.09 - 7 14205 1 0.09 - 8 14206 1 0.09 - 9 3140 1 0.15 - 10 1110 1 0.15 - 11 2130 1 0.15 - 12 7140 1 0.15 - 13 5100 1 0.15 - 14 160 1 0.15 - 15 240 1 0.15 -} -Group Setaou-K?pfer87 -{ - Level_limit 75 - Mob 2401 - Type limit - 1 250 1 0.07 - 2 12525 1 0.4 - 3 50060 1 0.04 - 4 27987 1 0.05 - 5 50721 5 0.63 - 6 50725 5 0.63 - 7 70050 1 0.2 - 8 166 1 0.08 - 9 164 1 0.17 - 10 15185 1 0.34 - 11 254 1 0.09 - 12 255 1 0.05 - 13 70031 1 0.004 - 14 11485 1 0.1 - 15 11285 1 0.1 - 16 190 1 0.04 - 17 180 1 0.04 - 18 50124 1 0.02 - 19 50121 1 0.06 -} -Group Setaou-J?er89 -{ - Level_limit 75 - Mob 2402 - Type limit - 1 1120 1 0.07 - 2 2180 1 0.07 - 3 8005 30 0.6 - 4 8005 60 0.42 - 5 12385 1 0.4 - 6 14184 1 0.25 - 7 27987 1 0.05 - 8 50722 5 0.63 - 9 50726 5 0.63 - 10 1106 1 0.08 - 11 2136 1 0.08 - 12 2184 1 0.09 - 13 1124 1 0.09 - 14 70031 1 0.007 - 15 11885 1 0.15 - 16 11685 1 0.15 - 17 2170 1 0.04 - 18 1130 1 0.04 - 19 50124 1 0.02 - 20 50120 1 0.06 -} -Group Setaou-Seherin89 -{ - Level_limit 75 - Mob 2403 - Type limit - 1 7150 1 0.17 - 2 12665 1 0.8 - 3 14164 1 0.34 - 4 17163 1 0.85 - 5 27987 1 0.1 - 6 50723 5 1.25 - 7 50727 5 1.25 - 8 5096 1 0.2 - 9 7136 1 0.2 - 10 11885 1 0.8 - 11 11685 1 0.4 - 12 15224 1 0.34 - 13 7154 1 0.15 - 14 7155 1 0.15 - 15 70031 1 0.007 - 16 5120 1 0.04 - 17 50124 1 0.02 - 18 50122 1 0.06 -} -Group Refine_2404 -{ - Mob 2404 - Type drop - 1 30199 1 0.13 -} -Group Setaou-Anf?rer90 -{ - Level_limit 75 - Mob 2404 - Type limit - 1 170 1 0.1 - 2 174 1 0.09 - 3 50060 1 0.08 - 4 50724 5 1.25 - 5 50728 5 1.25 - 6 70048 1 0.23 - 7 70051 1 0.39 - 8 3146 1 0.16 - 9 3136 1 0.16 - 10 11285 1 0.60 - 11 11485 1 0.20 - 12 15085 1 0.85 - 13 12245 1 0.8 - 14 3152 1 0.14 - 15 70031 1 0.007 - 16 181 1 0.05 - 17 191 1 0.05 - 18 1131 1 0.05 - 19 5121 1 0.05 - 20 2171 1 0.05 - 21 50120 1 0.02 - 22 50121 1 0.02 - 23 50122 1 0.02 -} -Group Setaou-Soldat91 -{ - Level_limit 75 - Mob 2411 - Type limit - 1 251 1 0.09 - 2 12526 1 0.1 - 3 14204 1 0.22 - 4 50060 1 0.08 - 5 27987 1 0.1 - 6 50721 5 0.65 - 7 50725 5 0.65 - 8 156 1 0.16 - 9 246 1 0.16 - 10 2144 1 0.16 - 11 70031 1 0.01 - 12 71056 1 0.005 - 13 182 1 0.1 - 14 192 1 0.1 - 15 50121 1 0.06 - 16 30196 1 0.02 -} -Group Setaou-J?er93 -{ - Level_limit 75 - Mob 2412 - Type limit - 1 1121 1 0.09 - 2 2181 1 0.09 - 3 8005 35 1.6 - 4 8005 55 0.85 - 5 12386 1 0.17 - 6 14186 1 0.28 - 7 27987 1 0.1 - 8 50009 1 0.34 - 9 50722 5 0.75 - 10 50726 5 0.75 - 11 144 1 0.16 - 12 1116 1 0.16 - 13 2146 1 0.16 - 14 70031 1 0.01 - 15 71056 1 0.005 - 16 2170 1 0.1 - 17 1130 1 0.1 - 18 50120 1 0.06 - 19 30196 1 0.03 -} -Group Refine_2413 -{ - Mob 2413 - Type drop - 1 30199 1 0.13 - 2 30196 1 0.07 -} -Group Setaou-Seherin95 -{ - Level_limit 75 - Mob 2413 - Type limit - 1 7151 1 0.1 - 2 12666 1 0.17 - 3 14166 1 0.26 - 4 15164 1 0.38 - 5 17164 1 0.41 - 6 17183 1 0.68 - 7 27987 1 0.1 - 8 50009 1 0.34 - 9 50723 5 1.25 - 10 50727 5 1.25 - 11 154 1 0.16 - 12 5106 1 0.16 - 13 7146 1 0.26 - 14 7144 1 0.26 - 15 70031 1 0.01 - 16 71056 1 0.005 - 17 5122 1 0.1 - 18 50122 1 0.06 -} -Group Refine_2414 -{ - Mob 2414 - Type drop - 1 30199 1 0.2 - 2 30196 1 0.07 -} -Group Setaou_Commander -{ - Level_limit 75 - Mob 2414 - Type limit - 1 182 1 0.2 - 2 192 1 0.2 - 3 1132 1 0.2 - 4 5122 1 0.2 - 5 2172 1 0.2 - 6 50120 1 0.02 - 7 50121 1 0.02 - 8 50122 1 0.02 -} -Group Setaou-General1 -{ - Level_limit 85 - Mob 2491 - Type drop - 1 30179 1 400 - 2 30196 1 1 -} -Group Setaou-General2 -{ - Level_limit 85 - Mob 2492 - Type drop - 1 30179 1 400 - 2 30179 2 100 - 3 30190 1 100 - 4 13063 1 100 - 5 14206 1 50 - 6 27987 1 100 - 7 70051 1 50 - 8 13083 1 100 - 9 70050 1 50 - 10 13103 1 100 - 11 15165 1 30 - 12 16203 1 50 - 13 17184 1 50 - 14 17203 1 30 - 15 13123 1 50 - 16 14143 1 30 - 17 15204 1 30 - 18 16184 1 50 -} -Group Water_Dragon -{ - Mob 2493 - Type drop - 1 30190 1 400 - 2 30190 2 50 - 3 12284 1 20 - 4 12404 1 20 - 5 12544 1 20 - 6 12684 1 20 - 7 15374 1 20 - 8 15394 1 20 - 9 15414 1 20 - 10 15434 1 20 - 11 27987 1 75 - 12 50124 1 20 - 13 50124 1 20 - 14 50124 1 20 - 15 50121 1 20 - 16 50121 1 40 - 17 50121 1 40 - 18 71123 1 5 - 19 71129 1 5 - 20 71083 1 1 - 21 25040 1 0.5 - 22 71085 1 0.5 - 23 71084 1 0.5 -} -Group Water_Dragon_HL -{ - Level_limit 90 - Mob 2493 - Type limit - 1 30190 4 5 - 2 27992 1 20 - 3 27993 1 10 - 4 27994 1 5 - 5 70024 1 0.5 - 6 50124 1 25 - 7 50124 1 25 - 8 50121 1 50 - 9 50121 1 50 - 10 50513 1 15 - 11 50513 1 15 - 12 71085 3 0.2 - 13 71084 3 0.2 -} -Group Setaou-General3 -{ - Level_limit 85 - Mob 2494 - Type drop - 1 30179 1 400 100 -} -Group Setaou-General4 -{ - Level_limit 85 - Mob 2495 - Type drop - 1 30179 1 400 - 2 30179 3 100 - 3 30190 1 100 - 4 11691 1 30 - 5 11491 1 30 - 6 11891 1 30 - 7 11291 1 30 - 8 13064 1 100 - 9 13084 1 30 - 10 13104 1 100 - 11 16204 1 50 - 12 17204 1 30 - 13 13124 1 100 - 14 15205 1 30 - 15 70050 1 50 - 16 70051 1 50 - 17 50009 1 100 - 18 27987 1 100 -} -Group -{ - Kill_drop 1 - Mob 5002 - Type kill - 1 134 1 46 30 - 2 135 1 20 30 - 3 1094 1 46 30 - 4 1095 1 20 30 - 5 3124 1 46 30 - 6 3125 1 20 30 - 7 2124 1 46 30 - 8 2125 1 20 30 - 9 5084 1 46 30 - 10 5085 1 20 30 - 11 7124 1 46 30 - 12 7125 1 20 30 - 13 11263 1 46 30 - 14 11264 1 20 30 - 15 11463 1 46 30 - 16 11464 1 20 30 - 17 11663 1 46 30 - 18 11664 1 20 30 - 19 11863 1 46 30 - 20 11864 1 20 30 - 21 13203 1 46 30 - 22 13204 1 20 30 - 23 70038 1 40 0 - 24 70048 1 40 0 - 25 70050 1 40 0 - 26 70051 1 40 0 - 27 70012 1 40 0 - 28 70037 1 40 0 - 29 70014 1 40 0 - 30 25040 1 40 0 -} -Group -{ - Mob 5002 - Type drop - 1 27002 100 400 - 2 27003 50 400 - 3 27005 100 400 - 4 27006 50 400 -} -Group ̺Ʈ_ٳ -{ - Kill_drop 1 - Mob 5004 - Type kill - 1 30202 1 1 0 -} -Group ϼ_ -{ - Kill_drop 550 - Mob 5101 - Type kill - 1 50050 1 20 0 -} -Group ϼ -{ - Mob 5101 - Type drop - 1 50722 1 2 -} -Group ϼ_ -{ - Kill_drop 250 - Mob 5102 - Type kill - 1 50050 1 20 0 -} -Group ϼ_ -{ - Kill_drop 250 - Mob 5103 - Type kill - 1 5042 1 65 10 - 2 82 1 65 10 - 3 83 1 35 10 - 4 5032 1 35 10 - 5 50050 1 100 0 -} -Group ϼ_ -{ - Kill_drop 100 - Mob 5104 - Type kill - 1 7073 1 20 10 - 2 7053 1 20 10 - 3 4023 1 20 10 - 4 1043 1 20 10 - 5 50050 1 20 0 -} -Group ϼ -{ - Mob 5104 - Type drop - 1 50721 1 1 -} -Group ߼_ -{ - Kill_drop 550 - Mob 5111 - Type kill - 1 50050 1 20 0 -} -Group ߼ -{ - Mob 5111 - Type drop - 1 50723 1 2 -} -Group ߼_ -{ - Kill_drop 300 - Mob 5112 - Type kill - 1 50050 1 20 0 -} -Group ߼_ -{ - Kill_drop 250 - Mob 5113 - Type kill - 1 7083 1 20 10 - 2 5053 1 10 10 - 3 50050 1 30 0 -} -Group ߼_ -{ - Kill_drop 100 - Mob 5114 - Type kill - 1 93 1 20 20 - 2 1053 1 20 20 - 3 50050 1 40 0 -} -Group ߼ -{ - Mob 5114 - Type drop - 1 50722 1 1 -} -Group ߼_ -{ - Kill_drop 100 - Mob 5115 - Type kill - 1 3083 1 20 20 - 2 50050 1 20 0 -} -Group ߼ -{ - Mob 5115 - Type drop - 1 50725 1 1 -} -Group ߼ -{ - Mob 5116 - Type drop - 1 50726 1 1 -} -Group 󼱵_ -{ - Kill_drop 550 - Mob 5121 - Type kill - 1 50050 1 20 0 -} -Group 󼱵 -{ - Mob 5121 - Type drop - 1 50726 1 1 -} -Group 󼱵_ -{ - Kill_drop 300 - Mob 5122 - Type kill - 1 50050 1 20 0 -} -Group 󼱵 -{ - Mob 5122 - Type drop - 1 50723 1 1 -} -Group 󼱵_ -{ - Kill_drop 250 - Mob 5123 - Type kill - 1 7103 1 20 10 - 2 50050 1 20 0 -} -Group 󼱵_ -{ - Kill_drop 100 - Mob 5124 - Type kill - 1 5073 1 20 10 - 2 50050 1 20 0 -} -Group 󼱵_ -{ - Kill_drop 80 - Mob 5125 - Type kill - 1 113 1 65 10 - 2 114 1 35 10 - 3 50050 1 100 0 -} -Group 󼱵 -{ - Mob 5125 - Type drop - 1 50724 1 1 -} -Group 󼱵_ݿ -{ - Kill_drop 30 - Mob 5126 - Type kill - 1 3113 1 65 10 - 2 3114 1 35 10 - 3 50050 1 100 0 -} -Group 󼱵ݿ -{ - Mob 5126 - Type drop - 1 50721 1 2 -} -Group 󼱵 -{ - Mob 5127 - Type drop - 1 50722 1 2 -} -Group ̻뼺 -{ - Kill_drop 10 - Mob 5161 - Type kill - 1 74 1 10 30 - 2 1034 1 10 30 - 3 2064 1 10 30 - 4 3064 1 10 30 - 5 5044 1 10 30 - 6 7064 1 10 30 -} -Group ̻뼺 -{ - Mob 5161 - Type drop - 1 50057 1 200 -} -Group õ뼺 -{ - Kill_drop 10 - Mob 5162 - Type kill - 1 104 1 10 30 - 2 1064 1 10 30 - 3 2094 1 10 30 - 4 3094 1 10 30 - 5 5064 1 10 30 - 6 7094 1 10 30 - 7 11253 1 10 30 - 8 11453 1 10 30 - 9 11653 1 10 30 - 10 11853 1 10 30 -} -Group õ뼺 -{ - Mob 5162 - Type drop - 1 50058 1 200 -} -Group õ뼺 -{ - Kill_drop 10 - Mob 5163 - Type kill - 1 134 1 10 30 - 2 1094 1 10 30 - 3 2124 1 10 30 - 4 5084 1 10 30 - 5 3124 1 10 30 - 6 7124 1 10 30 - 7 11272 1 10 30 - 8 11472 1 10 30 - 9 11672 1 10 30 - 10 11872 1 10 30 -} -Group õ뼺 -{ - Mob 5163 - Type drop - 1 50059 1 200 -} -Group 񸶼 -{ - Mob 8001 - Type drop - 1 20 1 20 - 2 4000 1 20 - 3 3010 1 20 - 4 2010 1 20 - 5 7010 1 20 - 6 11200 1 20 - 7 11400 1 20 - 8 11600 1 20 - 9 22 1 15 - 10 4002 1 15 - 11 3012 1 15 - 12 2012 1 15 - 13 7012 1 15 - 14 11202 1 15 - 15 11402 1 15 - 16 11602 1 15 - 17 11802 1 15 - 18 27002 50 100 - 19 27003 30 50 - 20 27005 30 50 - 21 27006 20 50 - 22 50300 1 100 -} -Group -{ - Mob 8002 - Type drop - 1 5000 1 20 - 2 11210 1 20 - 3 11410 1 20 - 4 11610 1 20 - 5 11810 1 20 - 6 30 1 20 - 7 1010 1 20 - 8 3020 1 20 - 9 2020 1 20 - 10 7020 1 20 - 11 5001 1 15 - 12 11211 1 15 - 13 11411 1 15 - 14 11611 1 15 - 15 11811 1 15 - 16 31 1 15 - 17 1011 1 15 - 18 3021 1 15 - 19 2021 1 15 - 20 7021 1 15 - 21 5002 1 10 - 22 11212 1 10 - 23 11412 1 10 - 24 11612 1 10 - 25 11812 1 10 - 26 32 1 5 - 27 1012 1 5 - 28 3022 1 5 - 29 2022 1 5 - 30 7022 1 5 - 31 27002 50 100 - 32 27003 30 50 - 33 27005 30 50 - 34 27006 20 50 - 35 50300 1 150 -} -Group -{ - Mob 8003 - Type drop - 1 40 1 20 - 2 4010 1 20 - 3 3030 1 20 - 4 2030 1 20 - 5 7030 1 20 - 6 5011 1 20 - 7 11210 1 20 - 8 11410 1 20 - 9 11610 1 20 - 10 11810 1 20 - 11 41 1 10 - 12 4011 1 10 - 13 3031 1 10 - 14 2031 1 10 - 15 7031 1 10 - 16 5010 1 10 - 17 11211 1 15 - 18 11411 1 15 - 19 11611 1 15 - 20 11811 1 15 - 21 42 1 5 - 22 4012 1 5 - 23 3032 1 5 - 24 2032 1 5 - 25 7032 1 5 - 26 5011 1 5 - 27 11212 1 10 - 28 11412 1 10 - 29 11612 1 10 - 30 11812 1 10 - 31 27002 50 100 - 32 27003 30 50 - 33 27005 30 50 - 34 27006 20 50 - 35 50300 1 150 -} -Group 帶 -{ - Mob 8004 - Type drop - 1 50 1 20 - 2 1020 1 20 - 3 3040 1 20 - 4 2040 1 20 - 5 5021 1 20 - 6 7041 1 20 - 7 51 1 15 - 8 1021 1 15 - 9 3041 1 15 - 10 2041 1 15 - 11 5020 1 15 - 12 7041 1 15 - 13 52 1 10 - 14 1022 1 10 - 15 3042 1 10 - 16 2042 1 10 - 17 5021 1 10 - 18 7041 1 10 - 19 11220 1 15 - 20 11420 1 15 - 21 11620 1 15 - 22 11820 1 15 - 23 11221 1 10 - 24 11421 1 10 - 25 11621 1 10 - 26 11821 1 10 - 27 27002 50 100 - 28 27003 30 50 - 29 27005 30 50 - 30 27006 20 50 - 31 50300 1 150 - 32 70014 1 1 - 33 70037 1 1 -} -Group 渶 -{ - Mob 8005 - Type drop - 1 60 1 20 - 2 4020 1 20 - 3 3050 1 20 - 4 2050 1 20 - 5 7050 1 20 - 6 61 1 15 - 7 4021 1 15 - 8 3051 1 15 - 9 2051 1 15 - 10 7051 1 15 - 11 62 1 10 - 12 4022 1 10 - 13 3052 1 10 - 14 2052 1 10 - 15 7052 1 10 - 16 11220 1 20 - 17 11420 1 20 - 18 11620 1 20 - 19 11820 1 20 - 20 11221 1 15 - 21 11421 1 15 - 22 11621 1 15 - 23 11821 1 15 - 24 11222 1 10 - 25 11422 1 10 - 26 11622 1 10 - 27 11822 1 10 - 28 27002 50 150 - 29 27003 30 100 - 30 27005 30 150 - 31 27006 20 100 - 32 50300 1 150 - 33 70014 1 1 - 34 70037 1 1 -} -Group ϸ -{ - Mob 8006 - Type drop - 1 70 1 20 - 2 1030 1 20 - 3 3060 1 20 - 4 2060 1 20 - 5 7060 1 20 - 6 5030 1 20 - 7 71 1 15 - 8 1031 1 15 - 9 3061 1 15 - 10 2061 1 15 - 11 7061 1 15 - 12 5030 1 20 - 13 11230 1 20 - 14 11430 1 20 - 15 11630 1 20 - 16 11830 1 20 - 17 72 1 10 - 18 1032 1 10 - 19 3062 1 10 - 20 2062 1 10 - 21 7062 1 10 - 22 5031 1 10 - 23 11231 1 10 - 24 11431 1 10 - 25 11631 1 10 - 26 11831 1 10 - 27 27002 50 150 - 28 27003 30 100 - 29 27005 30 150 - 30 27006 20 100 - 31 50300 1 200 - 32 70014 1 1 - 33 70037 1 1 -} -Group -{ - Mob 8007 - Type drop - 1 11230 1 20 - 2 11430 1 20 - 3 11630 1 20 - 4 11830 1 20 - 5 80 1 20 - 6 1040 1 20 - 7 3070 1 20 - 8 2070 1 20 - 9 7070 1 20 - 10 5040 1 20 - 11 11231 1 15 - 12 11431 1 15 - 13 11631 1 15 - 14 11831 1 15 - 15 81 1 15 - 16 1041 1 15 - 17 3071 1 15 - 18 2071 1 15 - 19 7071 1 15 - 20 5041 1 15 - 21 11232 1 10 - 22 11432 1 10 - 23 11632 1 10 - 24 11832 1 10 - 25 27002 50 150 - 26 27003 30 100 - 27 27005 30 150 - 28 27006 20 100 - 29 50300 1 200 - 30 70014 1 1 - 31 70037 1 1 -} -Group ȥ -{ - Mob 8008 - Type drop - 1 11240 1 20 - 2 11440 1 20 - 3 11640 1 20 - 4 11840 1 20 - 5 90 1 20 - 6 1050 1 20 - 7 3080 1 20 - 8 2080 1 20 - 9 7080 1 20 - 10 5050 1 20 - 11 11241 1 15 - 12 11441 1 15 - 13 11641 1 15 - 14 11841 1 15 - 15 91 1 15 - 16 1051 1 15 - 17 3081 1 15 - 18 2081 1 15 - 19 7081 1 15 - 20 5051 1 15 - 21 11242 1 10 - 22 11442 1 10 - 23 11642 1 10 - 24 11842 1 10 - 25 27002 50 150 - 26 27003 30 100 - 27 27005 30 150 - 28 27006 20 100 - 29 50300 1 200 - 30 70014 1 1 - 31 70037 1 1 -} -Group -{ - Mob 8009 - Type drop - 1 5050 1 20 - 2 100 1 20 - 3 1060 1 20 - 4 2090 1 20 - 5 7090 1 20 - 6 5051 1 20 - 7 11250 1 15 - 8 11450 1 15 - 9 11650 1 15 - 10 11850 1 15 - 11 101 1 15 - 12 1061 1 15 - 13 2091 1 15 - 14 7091 1 15 - 15 5052 1 15 - 16 11251 1 15 - 17 11451 1 15 - 18 11651 1 15 - 19 11851 1 15 - 20 102 1 10 - 21 1062 1 10 - 22 2092 1 10 - 23 7092 1 10 - 24 11252 1 10 - 25 11452 1 10 - 26 11652 1 10 - 27 11852 1 10 - 28 27002 50 150 - 29 27003 30 100 - 30 27005 30 150 - 31 27006 20 100 - 32 50300 1 200 - 33 70014 1 1 - 34 70037 1 1 -} -Group -{ - Mob 8010 - Type drop - 1 11250 1 20 - 2 11450 1 20 - 3 11650 1 20 - 4 11850 1 20 - 5 110 1 20 - 6 1070 1 20 - 7 2100 1 20 - 8 7100 1 20 - 9 5060 1 20 - 10 11251 1 15 - 11 11451 1 15 - 12 11651 1 15 - 13 11851 1 15 - 14 111 1 15 - 15 1071 1 15 - 16 2101 1 15 - 17 7101 1 15 - 18 5061 1 15 - 19 11252 1 10 - 20 11452 1 10 - 21 11652 1 10 - 22 11852 1 10 - 23 27002 50 150 - 24 27003 30 100 - 25 27005 30 150 - 26 27006 20 100 - 27 50300 1 250 - 28 70014 1 1 - 29 70037 1 1 -} -Group Ǹ -{ - Mob 8011 - Type drop - 1 120 1 30 - 2 1080 1 30 - 3 2110 1 30 - 4 7110 1 30 - 5 5070 1 30 - 6 121 1 20 - 7 1081 1 20 - 8 2111 1 20 - 9 7111 1 20 - 10 5071 1 20 - 11 122 1 15 - 12 1082 1 15 - 13 2112 1 15 - 14 7112 1 15 - 15 5072 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 250 - 21 70014 1 1 - 22 70037 1 1 -} -Group  -{ - Mob 8012 - Type drop - 1 130 1 30 - 2 1090 1 30 - 3 2120 1 30 - 4 7120 1 30 - 5 5080 1 30 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 1 - 22 70037 1 1 -} -Group 縶 -{ - Mob 8013 - Type drop - 1 120 1 25 - 2 1080 1 25 - 3 2110 1 25 - 4 7110 1 25 - 5 5070 1 25 - 6 121 1 20 - 7 1081 1 20 - 8 2111 1 20 - 9 7111 1 20 - 10 5071 1 20 - 11 122 1 15 - 12 1082 1 15 - 13 2112 1 15 - 14 7112 1 15 - 15 5072 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 1 - 22 70037 1 1 -} -Group 츶 -{ - Mob 8014 - Type drop - 1 130 1 25 - 2 1090 1 25 - 3 2120 1 25 - 4 7120 1 25 - 5 5080 1 25 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 50 - 22 70037 1 50 -} -Group -{ - Mob 8015 - Type drop - 1 110 1 10 - 2 1070 1 10 - 3 2100 1 10 - 4 7100 1 10 - 5 5060 1 10 - 6 111 1 5 - 7 1071 1 5 - 8 2101 1 5 - 9 7101 1 5 - 10 5061 1 1 - 11 27002 50 150 - 12 27003 30 100 - 13 27005 30 150 - 14 27006 20 100 - 15 50300 1 400 - 16 70014 1 1 - 17 70037 1 1 -} -Group Ǹ -{ - Mob 8016 - Type drop - 1 120 1 20 - 2 1080 1 20 - 3 2110 1 20 - 4 7110 1 20 - 5 5070 1 20 - 6 121 1 10 - 7 1081 1 10 - 8 2111 1 10 - 9 7111 1 10 - 10 5071 1 10 - 11 122 1 5 - 12 1082 1 5 - 13 2112 1 5 - 14 7112 1 5 - 15 5072 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group  -{ - Mob 8017 - Type drop - 1 130 1 20 - 2 1090 1 20 - 3 2120 1 20 - 4 7120 1 20 - 5 5080 1 20 - 6 131 1 10 - 7 1091 1 10 - 8 2121 1 10 - 9 7121 1 10 - 10 5081 1 10 - 11 132 1 5 - 12 1092 1 5 - 13 2122 1 5 - 14 7122 1 5 - 15 5082 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group 縶 -{ - Mob 8018 - Type drop - 1 120 1 15 - 2 1080 1 15 - 3 2110 1 15 - 4 7110 1 15 - 5 5070 1 15 - 6 121 1 10 - 7 1081 1 10 - 8 2111 1 10 - 9 7111 1 10 - 10 5071 1 10 - 11 122 1 5 - 12 1082 1 5 - 13 2112 1 5 - 14 7112 1 5 - 15 5072 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group 츶 -{ - Mob 8019 - Type drop - 1 130 1 15 - 2 1090 1 15 - 3 2120 1 15 - 4 7120 1 15 - 5 5080 1 15 - 6 131 1 10 - 7 1091 1 10 - 8 2121 1 10 - 9 7121 1 10 - 10 5081 1 10 - 11 132 1 5 - 12 1092 1 5 - 13 2122 1 5 - 14 27002 50 100 - 15 27003 30 200 - 16 27005 30 100 - 17 27006 20 150 - 18 50300 1 400 - 19 70014 1 1 - 20 70037 1 1 -} -Group dz -{ - Mob 8024 - Type drop - 1 3140 1 10 - 2 3141 1 5 - 3 1110 1 10 - 4 1111 1 5 - 5 2130 1 10 - 6 2131 1 5 - 7 7140 1 10 - 8 7141 1 5 - 9 5100 1 10 - 10 5101 1 5 - 11 160 1 10 - 12 161 1 5 - 13 240 1 10 - 14 241 1 5 - 15 27002 50 100 - 16 27003 30 200 - 17 27005 30 100 - 18 27006 20 150 - 19 70014 1 1 - 20 70037 1 1 - 21 12280 1 0.05 - 22 12400 1 0.05 - 23 12540 1 0.05 - 24 12680 1 0.05 - 25 12281 1 0.0125 - 26 12401 1 0.0125 - 27 12541 1 0.0125 - 28 12681 1 0.0125 -} -Group ȼ -{ - Mob 8025 - Type drop - 1 3141 1 10 - 2 3142 1 5 - 3 1111 1 10 - 4 1112 1 5 - 5 2131 1 10 - 6 2132 1 5 - 7 7141 1 10 - 8 7142 1 5 - 9 5101 1 10 - 10 5102 1 5 - 11 161 1 10 - 12 162 1 5 - 13 241 1 10 - 14 242 1 5 - 15 27002 50 100 - 16 27003 30 200 - 17 27005 30 100 - 18 27006 20 150 - 19 70014 1 1 - 20 70037 1 1 - 21 12280 1 0.05 - 22 12400 1 0.05 - 23 12540 1 0.05 - 24 12680 1 0.05 - 25 12281 1 0.0125 - 26 12401 1 0.0125 - 27 12541 1 0.0125 - 28 12681 1 0.0125 -} -Group 뼮 -{ - Mob 8026 - Type drop - 1 3142 1 10 - 2 3143 1 25 - 3 1112 1 15 - 4 1113 1 10 - 5 2132 1 25 - 6 2133 1 15 - 7 7142 1 10 - 8 7143 1 25 - 9 5102 1 15 - 10 5103 1 10 - 11 162 1 25 - 12 163 1 15 - 13 242 1 10 - 14 243 1 25 - 15 11681 1 15 - 16 11682 1 10 - 17 11881 1 25 - 18 11882 1 15 - 19 11481 1 10 - 20 11482 1 25 - 21 11281 1 15 - 22 11282 1 9 - 23 70038 1 15 - 24 25040 1 21 - 25 70048 1 20 - 26 70037 1 25 - 27 70014 1 25 - 28 72006 1 20 - 29 70005 1 20 - 30 27002 50 100 - 31 27003 30 200 - 32 27005 30 100 - 33 27006 20 150 - 34 70014 1 1 - 35 70037 1 1 -} -Group  -{ - Mob 8027 - Type drop - 1 151 1 5 - 2 152 1 15 - 3 153 1 10 - 4 5091 1 5 - 5 5092 1 15 - 6 5093 1 10 - 7 141 1 5 - 8 142 1 15 - 9 143 1 10 - 10 3131 1 5 - 11 3132 1 15 - 12 3133 1 10 - 13 1101 1 5 - 14 1102 1 15 - 15 1103 1 10 - 16 7131 1 5 - 17 7132 1 15 - 18 7133 1 10 - 19 2141 1 5 - 20 2142 1 15 - 21 2143 1 10 - 22 11681 1 5 - 23 11682 1 15 - 24 11683 1 10 - 25 11881 1 5 - 26 11882 1 15 - 27 11883 1 10 - 28 11481 1 5 - 29 11482 1 15 - 30 11483 1 10 - 31 11281 1 5 - 32 11282 1 15 - 33 11283 1 10 - 34 17164 1 9 - 35 17165 1 24 - 36 17166 1 14 - 37 16164 1 9 - 38 16165 1 24 - 39 16166 1 14 - 40 14164 1 9 - 41 14165 1 24 - 42 14166 1 14 - 43 70012 1 15 - 44 70038 1 15 - 45 25040 1 21 - 46 70048 1 20 - 47 70037 1 25 - 48 70014 1 25 - 49 72006 1 20 - 50 70005 1 20 - 51 27002 50 100 - 52 27003 30 200 - 53 27005 30 100 - 54 27006 20 150 - 55 50300 1 400 - 56 70014 1 1 - 57 70037 1 1 -} -Group ȭ -{ - Mob 11506 - Type drop - 1 50117 1 40 30 - 2 182 1 10 30 - 3 192 1 25 30 - 4 1132 1 10 30 - 5 2172 1 25 30 - 6 3162 1 10 30 - 7 5122 1 25 30 - 8 183 1 10 30 - 9 193 1 25 30 - 10 1133 1 10 30 - 11 2173 1 25 30 - 12 3163 1 10 30 - 13 5123 1 25 30 - 14 11293 1 10 30 - 15 11294 1 50 30 - 16 11693 1 20 30 - 17 11694 1 50 30 - 18 11493 1 20 30 - 19 11494 1 50 30 - 20 11893 1 20 30 - 21 11894 1 50 30 -} -Group ȭ -{ - Mob 11507 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11508 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11509 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11510 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group -{ - Mob 11041 - Type drop - 1 50726 1 2 -} -Group Setaou-Anf?rer97 -{ - Level_limit 85 - Mob 2475 - Type limit - 1 171 1 0.07 - 2 12246 1 0.12 - 3 14141 1 0.12 - 4 16183 1 0.21 - 5 50060 1 0.08 - 6 50009 1 0.34 - 7 50724 5 1.25 - 8 50728 5 1.25 - 9 244 1 0.34 - 10 146 1 0.27 - 11 1114 1 0.34 - 12 5104 1 0.34 - 13 70031 1 0.01 - 14 71056 1 0.005 -} -Group Setaou-Soldat80 -{ - Level_limit 80 - Mob 2431 - Type limit - 1 13063 1 0.16 - 2 14206 1 0.14 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 50721 5 1.25 - 6 50725 5 1.25 - 7 70051 1 0.39 - 8 16065 1 0.48 - 9 70031 1 0.01 -} -Group Setaou-J?er82 -{ - Level_limit 80 - Mob 2432 - Type limit - 1 13083 1 0.16 - 2 8005 10 0.94 - 3 8005 20 0.36 - 4 27987 1 0.1 - 5 50722 5 1.25 - 6 50726 5 1.25 - 7 70050 1 0.39 - 8 17104 1 0.22 - 9 70031 1 0.01 -} -Group Setaou-Seherin82 -{ - Level_limit 80 - Mob 2433 - Type limit - 1 13103 1 0.16 - 2 15165 1 0.17 - 3 16203 1 0.11 - 4 17184 1 0.27 - 5 17203 1 0.323 - 6 27987 1 0.1 - 7 50723 5 1.25 - 8 50727 5 1.25 - 9 17105 1 0.34 - 10 70031 1 0.01 -} -Group Setaou-Anf?rer83 -{ - Level_limit 80 - Mob 2434 - Type limit - 1 13123 1 0.16 - 2 14143 1 0.17 - 3 15204 1 0.22 - 4 16184 1 0.11 - 5 50060 1 0.08 - 6 27987 1 0.1 - 7 50724 5 1.25 - 8 50728 5 1.25 - 9 70031 1 0.01 -} -Group Setaou-Soldat84 -{ - Level_limit 80 - Mob 2451 - Type limit - 1 11690 1 0.06 - 2 11691 1 0.05 - 3 13064 1 0.11 - 4 50060 1 0.08 - 5 27987 1 0.1 - 6 50721 5 1.25 - 7 50725 5 1.25 - 8 70031 1 0.01 - 9 71056 1 0.005 -} -Group Setaou-J?er86 -{ - Level_limit 80 - Mob 2452 - Type limit - 1 11490 1 0.06 - 2 11491 1 0.05 - 3 13084 1 0.11 - 4 8005 10 0.94 - 5 8005 20 0.36 - 6 27987 1 0.1 - 7 50009 1 0.34 - 8 50722 5 1.25 - 9 50726 5 1.25 - 10 70031 1 0.01 - 11 71056 1 0.005 -} -Group Setaou-Seherin88 -{ - Level_limit 80 - Mob 2453 - Type limit - 1 11890 1 0.06 - 2 11891 1 0.05 - 3 13104 1 0.11 - 4 16204 1 0.17 - 5 17204 1 0.16 - 6 27987 1 0.1 - 7 50009 1 0.34 - 8 70031 1 0.01 - 9 71056 1 0.005 -} -Group Setaou-Anf?rer90 -{ - Level_limit 80 - Mob 2454 - Type limit - 1 11290 1 0.06 - 2 11291 1 0.05 - 3 13124 1 0.11 - 4 15205 1 0.17 - 5 50060 1 0.08 - 6 50009 1 0.34 - 7 70051 1 0.39 - 8 70050 1 0.39 - 9 70031 1 0.01 - 10 71056 1 0.005 -} -======= -Group θ -{ - Mob 103 - Type drop - 1 1012 1 0.2 - 2 4012 1 0.2 - 3 11402 1 0.2 - 4 16022 1 0.2 -} -Group Ǫ -{ - Mob 104 - Type drop - 1 32 1 0.2 - 2 52 1 0.2 - 3 15002 1 0.2 - 4 2022 1 0.2 - 5 16002 1 0.2 -} -Group Ǫθ -{ - Mob 105 - Type drop - 1 11602 1 0.2 - 2 12482 1 0.2 - 3 15022 1 0.2 - 4 16062 1 0.2 -} -Group ȸθ -{ - Mob 107 - Type drop - 1 12342 1 0.2 - 2 11401 1 0.2 - 3 17022 1 0.2 - 4 17002 1 0.2 -} -Group -{ - Mob 109 - Type drop - 1 11802 1 0.2 - 2 12622 1 0.2 - 3 15042 1 0.2 - 4 5012 1 0.2 - 5 7032 1 0.2 -} -Group ȸ -{ - Mob 111 - Type drop - 1 50721 1 1 -} -Group -{ - Mob 112 - Type drop - 1 50723 1 1 -} -Group Ұ -{ - Mob 113 - Type drop - 1 50721 1 1 -} -Group ȣ -{ - Mob 115 - Type drop - 1 50723 1 1 -} -Group ֹ_θ -{ - Kill_drop 400 - Mob 131 - Type kill - 1 7160 1 25 10 -} -Group ֹ -{ - Mob 131 - Type drop - 1 50722 1 2 -} -Group ֹθ -{ - Mob 132 - Type drop - 1 50723 1 1 -} -Group ֹ_Ǫθ -{ - Kill_drop 400 - Mob 134 - Type kill - 1 5110 1 25 10 - 2 290 1 15 10 -} -Group ֹ_ -{ - Kill_drop 400 - Mob 138 - Type kill - 1 1170 1 25 10 -} -Group ֹ -{ - Mob 139 - Type drop - 1 50724 1 1 -} -Group ֹȸ -{ - Mob 140 - Type drop - 1 50726 1 1 -} -Group ֹ_ -{ - Kill_drop 400 - Mob 141 - Type kill - 1 13192 1 25 20 - 2 13193 1 20 20 - 3 3210 1 15 10 -} -Group ֹȣ -{ - Mob 143 - Type drop - 1 50723 1 1 -} -Group Ǫθû -{ - Mob 151 - Type drop - 1 1013 1 4 - 2 4013 1 4 - 3 11403 1 4 - 4 16023 1 4 - 5 1014 1 4 - 6 4014 1 4 - 7 11404 1 4 - 8 16024 1 4 -} -Group ȸθ빫 -{ - Mob 152 - Type drop - 1 33 1 4 - 2 53 1 4 - 3 15003 1 4 - 4 2023 1 4 - 5 16003 1 4 - 6 34 1 4 - 7 54 1 4 - 8 15004 1 4 - 9 2024 1 4 - 10 16004 1 4 -} -Group -{ - Mob 153 - Type drop - 1 11803 1 4 - 2 12623 1 4 - 3 15043 1 4 - 4 5013 1 4 - 5 7033 1 4 - 6 11804 1 4 - 7 12624 1 4 - 8 15044 1 4 - 9 5014 1 4 - 10 7034 1 4 -} -Group Ұ -{ - Mob 154 - Type drop - 1 11211 1 12 - 2 11212 1 8 - 3 11213 1 4 - 4 11411 1 12 - 5 11412 1 8 - 6 11413 1 4 -} -Group ȣϾ -{ - Mob 155 - Type drop - 1 11611 1 12 - 2 11612 1 8 - 3 11613 1 4 - 4 11811 1 12 - 5 11812 1 8 - 6 11813 1 4 -} -Group ߽ -{ - Mob 191 - Type drop - 1 71 1 4 - 2 70 1 8 - 3 11611 1 4 - 4 11610 1 8 - 5 72 1 0.3 - 6 11612 1 0.2 - 7 15002 1 0.4 - 8 16042 1 0.4 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30070 1 400 -} -Group -{ - Mob 192 - Type drop - 1 4021 1 4 - 2 4020 1 8 - 3 11411 1 4 - 4 11410 1 8 - 5 1031 1 0.3 - 6 1032 1 0.2 - 7 15042 1 0.5 - 8 27002 30 100 - 9 27003 20 50 - 10 27005 20 50 - 11 27006 10 50 - 12 30004 1 400 -} -Group -{ - Mob 193 - Type drop - 1 7051 1 4 - 2 7050 1 8 - 3 11831 1 4 - 4 11830 1 8 - 5 7061 1 0.3 - 6 7062 1 0.2 - 7 15062 1 0.5 - 8 17042 1 0.5 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30072 1 400 -} -Group ȣ -{ - Mob 194 - Type drop - 1 3051 1 4 - 2 3050 1 8 - 3 11211 1 4 - 4 11210 1 8 - 5 3062 1 0.3 - 6 11212 1 0.2 - 7 15042 1 0.5 - 8 17022 1 0.5 - 9 27002 30 100 - 10 27003 20 50 - 11 27005 20 50 - 12 27006 10 50 - 13 30037 1 400 -} -Group ܿ -{ - Kill_drop 800 - Mob 301 - Type kill - 1 16082 1 25 10 - 2 16102 1 20 10 - 3 16122 1 15 10 - 4 16142 1 10 10 -} -Group ܿ -{ - Mob 301 - Type drop - 1 50722 1 2 -} -Group ú -{ - Mob 302 - Type drop - 1 8001 30 12 - 2 50724 1 1 -} -Group _̷ -{ - Kill_drop 350 - Mob 304 - Type kill - 1 11232 1 65 10 - 2 11233 1 35 10 - 3 11432 1 65 10 - 4 11433 1 35 10 - 5 11632 1 65 10 - 6 11633 1 35 10 - 7 11832 1 65 10 - 8 11833 1 35 10 -} -Group ܿ -{ - Mob 331 - Type drop - 1 16083 1 4 - 2 16103 1 4 - 3 16123 1 4 - 4 16143 1 4 -} -Group ú -{ - Mob 332 - Type drop - 1 4021 1 4 - 2 4020 1 4 - 3 2051 1 4 - 4 2050 1 4 - 5 15122 1 4 -} -Group -{ - Mob 333 - Type drop - 1 3041 1 4 - 2 3040 1 4 - 3 2041 1 4 - 4 2050 1 4 - 5 15122 1 4 -} -Group -{ - Mob 334 - Type drop - 1 11234 1 6 - 2 11233 1 4 - 3 11434 1 6 - 4 11433 1 4 - 5 11634 1 6 - 6 11633 1 4 - 7 11834 1 6 - 8 11833 1 4 -} -Group -{ - Mob 391 - Type drop - 1 61 1 0.2 - 2 60 1 0.2 - 3 12641 1 0.2 - 4 12640 1 0.2 - 5 15062 1 0.2 -} -Group -{ - Mob 392 - Type drop - 1 4021 1 0.2 - 2 4020 1 0.2 - 3 2051 1 0.2 - 4 2050 1 0.2 - 5 15122 1 0.01 -} -Group -{ - Mob 393 - Type drop - 1 3041 1 4 - 2 3040 1 8 - 3 2041 1 4 - 4 2050 1 8 - 5 15122 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Mob 394 - Type drop - 1 62 1 4 - 2 61 1 8 - 3 92 1 4 - 4 11222 1 8 - 5 15062 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group dzܿ -{ - Kill_drop 1000 - Mob 401 - Type kill - 1 15082 1 25 10 - 2 15102 1 20 10 - 3 15122 1 15 10 - 4 15142 1 10 10 -} -Group dzܿ -{ - Mob 401 - Type drop - 1 50724 1 1 -} -Group dzü -{ - Mob 403 - Type drop - 1 50007 1 0.5 - 2 8001 30 4 -} -Group dz_۵ -{ - Kill_drop 800 - Mob 404 - Type kill - 1 5042 1 65 10 - 2 5032 1 35 10 - 3 12222 1 35 10 - 4 12223 1 15 10 - 5 12362 1 35 10 - 6 12363 1 15 10 - 7 12502 1 35 10 - 8 12503 1 15 10 - 9 12642 1 35 10 - 10 12643 1 15 10 -} -Group dz_ -{ - Kill_drop 500 - Mob 405 - Type kill - 1 7072 1 1 10 - 2 7052 1 1 10 - 3 4022 1 1 10 - 4 1042 1 1 10 -} -Group dz -{ - Mob 405 - Type drop - 1 50721 1 1 -} -Group dz_ -{ - Kill_drop 300 - Mob 406 - Type kill - 1 82 1 65 10 - 2 83 1 35 10 -} -Group dzܿκ -{ - Mob 431 - Type drop - 1 12222 1 4 - 2 12223 1 4 - 3 12362 1 4 - 4 12363 1 4 - 5 50009 1 2 -} -Group dzݴ -{ - Mob 432 - Type drop - 1 12502 1 4 - 2 12503 1 4 - 3 12642 1 4 - 4 12643 1 4 - 5 50009 1 2 -} -Group dzü -{ - Mob 433 - Type drop - 1 7072 1 4 - 2 7052 1 4 - 3 4022 1 4 - 4 1042 1 4 - 5 50009 1 2 -} -Group dz -{ - Mob 434 - Type drop - 1 61 1 4 - 2 12640 1 4 - 3 91 1 4 - 4 15060 1 4 - 5 50009 1 2 -} -Group dzȣ -{ - Mob 435 - Type drop - 1 16041 1 4 - 2 7050 1 4 - 3 15141 1 4 - 4 11820 1 4 - 5 50009 1 2 -} -Group dz -{ - Mob 436 - Type drop - 1 71 1 4 - 2 5040 1 4 - 3 12501 1 4 - 4 17100 1 4 - 5 15102 1 4 - 6 50009 1 2 -} -Group ȯ -{ - Mob 491 - Type drop - 1 4021 1 4 - 2 12360 1 8 - 3 13001 1 4 - 4 15080 1 8 - 5 17082 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Mob 492 - Type drop - 1 61 1 4 - 2 12640 1 8 - 3 91 1 4 - 4 15060 1 8 - 5 27002 30 100 - 6 27003 20 50 - 7 27005 20 50 - 8 27006 10 50 -} -Group -{ - Mob 493 - Type drop - 1 16041 1 4 - 2 7050 1 8 - 3 15141 1 4 - 4 11820 1 8 - 5 27002 30 100 - 6 27003 20 50 - 7 27005 20 50 - 8 27006 10 50 -} -Group -{ - Mob 494 - Type drop - 1 71 1 4 - 2 5040 1 8 - 3 12501 1 4 - 4 17100 1 8 - 5 15102 1 0.2 - 6 27002 30 100 - 7 27003 20 50 - 8 27005 20 50 - 9 27006 10 50 -} -Group -{ - Kill_drop 2000 - Mob 502 - Type kill - 1 17082 1 25 10 - 2 17102 1 20 10 - 3 17122 1 15 10 - 4 17142 1 10 10 -} -Group -{ - Mob 502 - Type drop - 1 50724 1 1 -} -Group ijü -{ - Mob 503 - Type drop - 1 50013 1 0.5 - 2 8001 50 20 - 3 50721 1 1 -} -Group ɱü -{ - Kill_drop 500 - Mob 503 - Type kill - 1 2072 1 10 10 - 2 290 1 10 10 - 3 2150 1 15 10 -} -Group -{ - Kill_drop 400 - Mob 504 - Type kill - 1 3072 1 65 10 - 2 3073 1 35 10 - 3 290 1 40 10 - 4 2150 1 20 10 - 5 11242 1 35 10 - 6 11243 1 15 10 - 7 11442 1 35 10 - 8 11443 1 15 10 - 9 11642 1 35 10 - 10 11643 1 15 10 - 11 11842 1 35 10 - 12 11843 1 15 10 -} -Group -{ - Mob 504 - Type drop - 1 50725 1 1 -} -Group ij -{ - Mob 531 - Type drop - 1 17083 1 8 - 2 17103 1 6 - 3 17123 1 4 - 4 17143 1 4 - 5 50008 1 2 -} -Group ij -{ - Mob 532 - Type drop - 1 16083 1 4 - 2 16103 1 4 - 3 16123 1 4 - 4 16143 1 4 - 5 50008 1 2 -} -Group ijüõ -{ - Mob 533 - Type drop - 1 2073 1 4 - 2 292 1 4 - 3 2152 1 4 - 4 50008 1 2 -} -Group ijδ尭õ -{ - Mob 534 - Type drop - 1 3072 1 8 - 2 3073 1 4 - 3 290 1 6 - 4 2150 1 4 - 5 11244 1 2 - 6 11243 1 4 - 7 11444 1 2 - 8 11443 1 4 - 9 11644 1 2 - 10 11643 1 4 - 11 11844 1 2 - 12 11843 1 4 - 13 50008 1 2 -} -Group ܴ -{ - Mob 591 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11432 1 0.2 - 4 15122 1 0.2 - 5 27002 50 100 - 6 27003 30 50 - 7 27005 30 50 - 8 27006 20 50 -} -Group ͺл -{ - Mob 601 - Type drop - 1 7082 1 8 - 2 5052 1 8 - 3 14082 1 4 - 4 14102 1 4 - 5 14122 1 4 - 6 14142 1 4 -} -Group ôĺǸ -{ - Mob 602 - Type drop - 1 93 1 8 - 2 1053 1 8 - 3 1172 1 8 -} -Group ε -{ - Mob 603 - Type drop - 1 71 1 4 - 2 5040 1 8 - 3 12501 1 4 - 4 17100 1 8 - 5 15102 1 4 -} -Group ͸ο -{ - Mob 604 - Type drop - 1 1042 1 4 - 2 2072 1 4 - 3 11422 1 4 - 4 15122 1 4 -} -Group ͺ -{ - Kill_drop 400 - Mob 631 - Type kill - 1 7082 1 20 10 - 2 5052 1 10 10 - 3 14082 1 25 10 - 4 14102 1 20 10 - 5 14122 1 15 10 - 6 14142 1 10 10 -} -Group ͺ -{ - Mob 631 - Type drop - 1 50722 1 1 -} -Group _ôĺ -{ - Kill_drop 600 - Mob 632 - Type kill - 1 92 1 10 20 - 2 1052 1 10 20 - 3 1170 1 10 20 -} -Group ôĺ -{ - Mob 632 - Type drop - 1 50726 1 1 -} -Group _ -{ - Kill_drop 1200 - Mob 633 - Type kill - 1 3082 1 10 20 - 2 1170 1 10 20 -} -Group -{ - Mob 633 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11432 1 0.2 - 4 15122 1 0.2 -} -Group ͸ -{ - Mob 634 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11422 1 0.2 - 4 15122 1 0.2 -} -Group 屺 -{ - Mob 635 - Type drop - 1 50722 1 1 -} -Group -{ - Kill_drop 500 - Mob 636 - Type kill - 1 7092 1 65 10 - 2 7093 1 35 10 -} -Group -{ - Mob 636 - Type drop - 1 50721 1 4 -} -Group Ŵ_ -{ - Kill_drop 900 - Mob 637 - Type kill - 1 5062 1 65 10 - 2 5063 1 35 10 -} -Group -{ - Kill_drop 1 - Mob 691 - Type kill - 1 50070 1 100 0 -} -Group -{ - Mob 691 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 40 -} -Group б -{ - Kill_drop 300 - Mob 701 - Type kill - 1 2082 1 35 30 - 2 15162 1 32 10 - 3 15182 1 16 10 - 4 15202 1 12 10 - 5 15222 1 8 10 -} -Group бѺ -{ - Kill_drop 500 - Mob 702 - Type kill - 1 11252 1 30 10 - 2 11452 1 30 10 - 3 11652 1 30 10 - 4 11852 1 30 10 - 5 11253 1 60 10 - 6 11453 1 60 10 - 7 11653 1 60 10 - 8 11853 1 60 10 - 9 3210 1 40 10 -} -Group бѺ -{ - Mob 702 - Type drop - 1 50725 1 1 -} -Group б -{ - Kill_drop 200 - Mob 703 - Type kill - 1 15163 1 25 10 - 2 15183 1 20 10 - 3 15203 1 15 10 - 4 15223 1 10 10 - 5 3210 1 20 10 -} -Group б -{ - Mob 703 - Type drop - 1 103 1 0.2 - 2 112 1 0.2 - 3 1062 1 0.2 - 4 11642 1 0.2 - 5 16162 1 0.2 - 6 50724 1 1 -} -Group б -{ - Kill_drop 500 - Mob 704 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 -} -Group б -{ - Mob 704 - Type drop - 1 50723 1 2 -} -Group бິ -{ - Mob 705 - Type drop - 1 50724 1 1 -} -Group бڷ -{ - Kill_drop 100 - Mob 706 - Type kill - 1 102 1 65 10 - 2 103 1 35 10 - 3 12242 1 45 10 - 4 12243 1 30 10 - 5 12382 1 35 10 - 6 12383 1 20 10 - 7 12522 1 25 10 - 8 12523 1 20 10 - 9 12662 1 20 10 - 10 12663 1 15 10 -} -Group бȯ -{ - Kill_drop 40 - Mob 707 - Type kill - 1 3092 1 65 10 - 2 3093 1 35 10 - 3 16162 1 54 30 - 4 16163 1 27 30 - 5 16182 1 36 30 - 6 16183 1 18 30 - 7 16202 1 18 30 - 8 16203 1 9 30 -} -Group бȯ -{ - Mob 707 - Type drop - 1 50723 1 1 -} -Group б -{ - Mob 731 - Type drop - 1 50726 1 2 -} -Group б -{ - Mob 733 - Type drop - 1 50725 1 2 -} -Group б -{ - Kill_drop 700 - Mob 734 - Type kill - 1 11260 1 65 20 - 2 11261 1 35 20 - 3 11460 1 65 20 - 4 11461 1 35 20 - 5 11660 1 65 20 - 6 11661 1 35 20 - 7 11860 1 65 20 - 8 11861 1 35 20 -} -Group бڷ -{ - Kill_drop 300 - Mob 736 - Type kill - 1 122 1 65 10 - 2 123 1 35 10 -} -Group бڷ -{ - Mob 736 - Type drop - 1 50725 1 2 -} -Group бȯ -{ - Kill_drop 300 - Mob 737 - Type kill - 1 3111 1 65 10 - 2 3112 1 35 10 -} -Group бȯ -{ - Mob 737 - Type drop - 1 50727 1 0.8 -} -Group б -{ - Kill_drop 1 - Mob 791 - Type kill - 1 50071 1 100 0 -} -Group б -{ - Mob 791 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 50 -} -Group ȯѹб -{ - Mob 792 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 200 -} -Group ñ -{ - Kill_drop 500 - Mob 901 - Type kill - 1 15162 1 12 30 - 2 15182 1 9 30 - 3 15202 1 6 30 - 4 15222 1 3 30 -} -Group ñ -{ - Mob 901 - Type drop - 1 1042 1 0.2 - 2 2072 1 0.2 - 3 11442 1 0.2 - 4 15122 1 0.2 -} -Group -{ - Kill_drop 400 - Mob 902 - Type kill - 1 17162 1 18 30 - 2 17163 1 9 30 - 3 17182 1 12 30 - 4 17183 1 6 30 - 5 17202 1 6 30 - 6 17203 1 3 30 -} -Group -{ - Mob 902 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 -} -Group -{ - Mob 903 - Type drop - 1 50723 1 1 -} -Group -{ - Kill_drop 450 - Mob 904 - Type kill - 1 132 1 6 10 - 2 133 1 3 10 - 3 1092 1 6 10 - 4 1093 1 3 10 -} -Group -{ - Mob 904 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 -} -Group â -{ - Kill_drop 900 - Mob 905 - Type kill - 1 2122 1 65 10 - 2 2123 1 35 10 -} -Group â -{ - Mob 905 - Type drop - 1 27110 1 1 - 2 50008 1 0.2 - 3 50722 1 2 -} -Group ü -{ - Kill_drop 250 - Mob 906 - Type kill - 1 12242 1 6 10 - 2 12243 1 3 10 - 3 12382 1 6 10 - 4 12383 1 3 10 - 5 12522 1 6 10 - 6 12523 1 3 10 - 7 12662 1 6 10 - 8 12663 1 3 10 -} -Group ü -{ - Mob 906 - Type drop - 1 50006 1 1 - 2 8004 100 20 - 3 50723 1 2 -} -Group -{ - Kill_drop 200 - Mob 907 - Type kill - 1 3122 1 65 10 - 2 3123 1 30 10 -} -Group -{ - Mob 907 - Type drop - 1 5062 1 0.2 - 2 11652 1 0.2 - 3 2092 1 0.2 - 4 11452 1 0.2 - 5 15122 1 0.2 - 6 70049 1 0.1 - 7 50728 1 1 -} -Group ͺ -{ - Mob 1001 - Type drop - 1 50728 1 1 -} -Group ͱú -{ - Kill_drop 200 - Mob 1002 - Type kill - 1 2122 1 35 0 -} -Group ͱú -{ - Mob 1002 - Type drop - 1 50012 1 0.4 - 2 8005 100 20 - 3 50724 1 1 -} -Group â -{ - Kill_drop 100 - Mob 1003 - Type kill - 1 1092 1 65 30 - 2 1093 1 35 30 - 3 14162 1 54 30 - 4 14163 1 27 30 - 5 14182 1 36 30 - 6 14183 1 18 30 - 7 14202 1 18 30 - 8 14203 1 9 30 -} -Group â -{ - Mob 1003 - Type drop - 1 50721 1 2 -} -Group ּ -{ - Kill_drop 50 - Mob 1004 - Type kill - 1 3122 1 65 10 - 2 3123 1 35 10 -} -Group ͱú -{ - Mob 1032 - Type drop - 1 50012 1 0.9 - 2 8005 100 20 -} -Group Ȱͺ -{ - Kill_drop 0 - Mob 1061 - Type kill -} -Group Ȱͺ -{ - Mob 1061 - Type drop - 1 50724 1 2 - 2 30193 1 0.02 -} -Group Ȱͱú -{ - Kill_drop 0.0 - Mob 1062 - Type drop - 1 30193 1 0.02 -} -Group Ȱâ -{ - Kill_drop 10000 - Mob 1063 - Type kill - 1 11270 1 10 20 - 2 11470 1 10 20 - 3 11670 1 10 20 - 4 11870 1 10 20 - 5 11271 1 1 20 - 6 11471 1 1 20 - 7 11671 1 1 20 - 8 11871 1 1 20 -} -Group Ȱâ -{ - Mob 1063 - Type drop - 1 50726 1 2 - 2 30193 1 0.02 -} -Group Refining_1064 -{ - Mob 1064 - Type drop - 1 30193 1 0.2 -} -Group Ȱּ -{ - Kill_drop 10000 - Mob 1064 - Type kill - 1 11272 1 1 20 - 2 11472 1 1 20 - 3 11672 1 1 20 - 4 11872 1 1 20 - 5 11271 1 10 20 - 6 11471 1 10 20 - 7 11671 1 10 20 - 8 11871 1 10 20 -} -Group ȰѿǸ -{ - Kill_drop 40000 - Mob 1065 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ȰѿǸ -{ - Mob 1065 - Type drop - 1 50728 1 2 -} -Group ȰȥǸ -{ - Kill_drop 0 - Mob 1066 - Type kill -} -Group ȰȥǸ -{ - Mob 1066 - Type drop - 1 50724 1 2 -} -Group Ȱ -{ - Kill_drop 0 - Mob 1068 - Type kill -} -Group Ȱ -{ - Mob 1068 - Type drop - 1 50721 1 4 -} -Group Ȱ -{ - Level_limit 75 - Mob 1068 - Type limit - 1 14004 1 0.08 - 2 14024 1 0.08 - 3 14044 1 0.08 - 4 14064 1 0.08 - 5 1110 1 0.08 - 6 2130 1 0.08 - 7 7140 1 0.08 - 8 13120 1 0.01 -} -Group Ȱɻ -{ - Kill_drop 0 - Mob 1069 - Type kill -} -Group Ȱɻ -{ - Mob 1069 - Type drop - 1 50725 1 2 -} -Group Ȱɻ -{ - Level_limit 75 - Mob 1069 - Type limit - 1 14084 1 0.08 - 2 14104 1 0.08 - 3 14124 1 0.08 - 4 14144 1 0.08 - 5 7140 1 0.08 - 6 5100 1 0.08 - 7 160 1 0.08 - 8 13100 1 0.01 -} -Group ȰѺһ -{ - Kill_drop 0 - Mob 1070 - Type kill -} -Group ȰѺһ -{ - Mob 1070 - Type drop - 1 50727 1 1 -} -Group ȰѺһ -{ - Level_limit 75 - Mob 1070 - Type limit - 1 14084 1 0.08 - 2 14104 1 0.08 - 3 14124 1 0.08 - 4 14144 1 0.08 - 5 2130 1 0.08 - 6 5100 1 0.08 - 7 13080 1 0.01 -} -Group ȰȰ -{ - Kill_drop 0 - Mob 1071 - Type kill -} -Group ȰȰ -{ - Mob 1071 - Type drop - 1 50721 1 4 -} -Group ȰȰ -{ - Level_limit 75 - Mob 1071 - Type limit - 1 14164 1 0.08 - 2 14184 1 0.08 - 3 14204 1 0.08 - 4 3140 1 0.08 - 5 1110 1 0.08 - 6 2130 1 0.08 - 7 7140 1 0.08 - 8 160 1 0.08 - 9 240 1 0.08 - 10 13060 1 0.01 -} -Group Ϳ -{ - Mob 1091 - Type drop - 1 130 1 25 - 2 1090 1 25 - 3 2120 1 25 - 4 7120 1 25 - 5 5080 1 25 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 30 150 - 17 27003 50 200 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 400 -} -Group Ϳ -{ - Kill_drop 1 - Mob 1092 - Type kill - 1 50081 1 100 0 -} -Group -{ - Level_limit 75 - Mob 1093 - Type limit - 1 50082 1 100 -} -Group -{ - Mob 1101 - Type drop - 1 90011 1 0.09 -} -Group Թ -{ - Mob 1102 - Type drop - 1 90011 1 0.1 - 2 50728 1 1 -} -Group -{ - Mob 1103 - Type drop - 1 102 1 0.2 - 2 112 1 0.2 - 3 1072 1 0.2 - 4 11252 1 0.2 - 5 15122 1 0.2 - 6 70050 1 0.1 - 7 90011 1 0.2 - 8 50722 1 1 -} -Group -{ - Kill_drop 350 - Mob 1104 - Type kill - 1 12242 1 6 30 - 2 12382 1 6 30 - 3 12522 1 6 30 - 4 12662 1 6 30 - 5 12243 1 3 30 - 6 12383 1 3 30 - 7 12523 1 3 30 - 8 12663 1 3 30 -} -Group -{ - Mob 1104 - Type drop - 1 50723 1 2 -} -Group -{ - Kill_drop 700 - Mob 1105 - Type kill - 1 11262 1 6 20 - 2 11263 1 3 20 - 3 11462 1 6 20 - 4 11463 1 3 20 - 5 11662 1 6 20 - 6 11663 1 3 20 - 7 11862 1 6 20 - 8 11863 1 3 20 -} -Group -{ - Mob 1105 - Type drop - 1 2092 1 0.2 - 2 7092 1 0.2 - 3 11852 1 0.2 - 4 15142 1 0.2 - 5 70048 1 0.1 - 6 90011 1 0.3 - 7 50725 1 2 -} -Group -{ - Kill_drop 1000 - Mob 1106 - Type kill - 1 1092 1 60 20 - 2 1093 1 30 20 - 3 50009 1 10 0 -} -Group -{ - Mob 1106 - Type drop - 1 102 1 0.2 - 2 112 1 0.2 - 3 1072 1 0.2 - 4 11252 1 0.2 - 5 15122 1 0.2 - 6 70051 1 0.1 - 7 90011 1 0.4 - 8 50728 1 1 -} -Group -{ - Mob 1107 - Type drop - 1 50721 1 2 -} -Group -{ - Kill_drop 300 - Mob 1107 - Type kill - 1 3123 1 60 20 - 2 3124 1 30 20 - 3 50009 1 10 0 -} -Group EisSplitter -{ - Level_limit 75 - Mob 1131 - Type limit - 1 50060 1 0.08 - 2 27987 1 0.1 - 3 50901 1 2.1 - 4 14045 1 0.17 - 5 11885 1 0.7 - 6 11685 1 0.7 - 7 50124 1 0.07 -} -Group Refine_1131 -{ - Mob 1131 - Type drop - 1 30198 1 0.09 -} -Group Eiskillerwal -{ - Level_limit 75 - Mob 1132 - Type limit - 1 50060 1 0.08 - 2 27987 1 0.1 - 3 50901 1 2.1 - 4 30048 1 0.55 - 5 14085 1 0.9 - 6 11485 1 0.7 - 7 11285 1 0.7 - 8 50124 1 0.07 -} -Group Eisinsekt -{ - Level_limit 75 - Mob 1133 - Type limit - 1 50901 1 2.1 - 2 30088 1 0.8 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 14105 1 0.9 - 6 11885 1 0.7 - 7 11685 1 0.7 - 8 50124 1 0.07 -} -Group Eisl?e -{ - Level_limit 75 - Mob 1134 - Type limit - 1 50901 1 2.1 - 2 30089 1 0.32 - 3 50060 1 0.08 - 4 70049 1 0.11 - 5 16163 1 0.85 - 6 11485 1 0.7 - 7 11285 1 0.7 - 8 50124 1 0.07 -} -Group Eismann -{ - Level_limit 75 - Mob 1135 - Type limit - 1 50901 1 2.1 - 2 30090 1 0.55 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 16164 1 0.68 - 6 11886 1 0.4 - 7 11686 1 0.4 - 8 50124 1 0.07 -} -Group Yeti -{ - Level_limit 75 - Mob 1136 - Type limit - 1 50901 1 2.1 - 2 30014 1 0.55 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 14125 1 0.64 - 6 11486 1 0.1 - 7 11286 1 0.1 - 8 50124 1 0.07 -} -Group Eisgolem -{ - Level_limit 75 - Mob 1137 - Type limit - 1 19 1 0.04 - 2 1009 1 0.04 - 3 2009 1 0.04 - 4 3009 1 0.04 - 5 5009 1 0.04 - 6 7009 1 0.04 - 7 30050 1 0.19 - 8 27105 10 0.323 - 9 50009 1 0.34 - 10 27987 1 0.1 - 11 11886 1 0.1 - 12 11686 1 0.1 - 13 11486 1 0.1 - 14 11286 1 0.1 - 15 50124 1 0.07 -} -Group Refine_1137 -{ - Mob 1137 - Type drop - 1 30198 1 0.125 -} -Group ice_witch -{ - Level_limit 80 - Mob 1192 - Type drop - 1 11294 1 50 15 - 2 11494 1 50 15 - 3 11694 1 50 15 - 4 11894 1 50 15 - 5 13066 1 50 15 - 6 13086 1 50 15 - 7 13106 1 50 15 - 8 13126 1 50 15 - 9 15187 1 50 15 - 10 15167 1 50 15 - 11 15207 1 50 15 - 12 15227 1 50 15 - 13 16207 1 50 15 - 14 16187 1 50 15 - 15 17147 1 50 15 - 16 17167 1 50 15 - 17 17187 1 50 15 - 18 17207 1 50 15 - 19 28430 1 50 15 - 20 28431 1 50 15 - 21 28432 1 50 15 - 22 28433 1 50 15 - 23 28434 1 50 15 - 24 28435 1 50 15 - 25 28436 1 50 15 - 26 28437 1 50 15 - 27 28438 1 50 15 - 28 28439 1 50 15 - 29 28440 1 50 15 - 30 28441 1 50 15 - 31 28442 1 50 15 - 32 28443 1 50 15 - 33 70031 1 50 15 - 34 71056 1 50 15 - 35 30190 1 400 100 - 36 30190 5 100 10 -} -Group ûͺ -{ - Kill_drop 400 - Mob 1301 - Type kill - 1 16160 1 18 30 - 2 16161 1 9 30 - 3 16180 1 12 30 - 4 16181 1 6 30 - 5 16200 1 6 30 - 6 16201 1 3 30 -} -Group ûͺ -{ - Mob 1301 - Type drop - 1 90012 1 0.2 - 2 12260 1 2.5 - 3 12390 1 2.5 - 4 12530 1 5 - 5 12670 1 5 -} -Group û -{ - Kill_drop 800 - Mob 1302 - Type kill - 1 5082 1 65 20 - 2 5083 1 35 20 -} -Group û -{ - Mob 1302 - Type drop - 1 90012 1 0.3 - 2 12260 1 5 - 3 12390 1 5 - 4 12530 1 2.5 - 5 12670 1 2.5 -} -Group ǮٸӸ -{ - Kill_drop 1000 - Mob 1303 - Type kill - 1 2122 1 1 20 -} -Group ǮٸӸ -{ - Mob 1303 - Type drop - 1 90012 1 0.1 -} -Group -{ - Kill_drop 1 - Mob 1304 - Type kill - 1 50078 1 100 0 -} -Group -{ - Mob 1304 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 300 -} -Group 屺 -{ - Kill_drop 350 - Mob 1305 - Type kill - 1 7122 1 65 20 - 2 7123 1 35 20 -} -Group 屺 -{ - Mob 1305 - Type drop - 1 15162 1 0.2 - 2 16162 1 0.2 - 3 12382 1 0.2 - 4 17142 1 0.2 - 5 90012 1 0.4 - 6 12260 1 0.75 - 7 12390 1 0.75 - 8 12530 1 0.75 - 9 12670 1 0.75 -} -Group ͺ -{ - Kill_drop 0 - Mob 1401 - Type kill -} -Group ͺ -{ - Mob 1401 - Type drop - 1 50723 1 2 -} -Group ôĺ -{ - Kill_drop 1500 - Mob 1402 - Type kill - 1 11273 1 20 30 - 2 11473 1 20 30 - 3 11673 1 20 30 - 4 11873 1 20 30 - 5 11274 1 10 30 - 6 11474 1 10 30 - 7 11674 1 10 30 - 8 11874 1 10 30 -} -Group ôĺ -{ - Mob 1402 - Type drop - 1 50726 1 2 -} -Group õ -{ - Kill_drop 500 - Mob 1403 - Type kill - 1 11290 1 5 30 - 2 11490 1 5 30 - 3 11890 1 5 30 - 4 11690 1 5 30 - 5 170 1 1 20 - 6 250 1 1 20 - 7 1120 1 1 20 - 8 2180 1 1 20 - 9 3150 1 1 20 - 10 7150 1 1 20 -} -Group õ -{ - Mob 1403 - Type drop - 1 50725 1 2 -} -Group õ -{ - Level_limit 86 - Mob 1403 - Type limit - 1 11290 1 0.1 - 2 11490 1 0.1 - 3 11890 1 0.1 - 4 11690 1 0.1 - 5 70003 1 0.1 - 6 70005 1 0.1 - 7 70008 1 0.1 - 8 70038 1 0.1 - 9 170 1 0.1 - 10 250 1 0.1 - 11 1120 1 0.1 - 12 2180 1 0.1 - 13 3150 1 0.1 - 14 7150 1 0.1 -} -Group Refine_1501 -{ - Mob 1501 - Type drop - 1 30195 1 1 -} -Group -{ - Kill_drop 100 - Mob 1501 - Type kill - 1 8002 100 1 0 -} -Group -{ - Kill_drop 100 - Mob 1502 - Type kill - 1 8002 100 1 0 -} -Group -{ - Mob 1502 - Type drop - 1 50722 1 1 - 2 30195 1 1 -} -Group Ŵ -{ - Kill_drop 3000 - Mob 1503 - Type kill - 1 11282 1 1 10 - 2 11882 1 1 10 - 3 11482 1 1 10 - 4 11682 1 1 10 -} -Group Ŵ -{ - Mob 1503 - Type drop - 1 50723 1 4 - 2 30195 1 1 -} -Group ϱ -{ - Kill_drop 0 - Mob 1601 - Type kill -} -Group ϲ -{ - Mob 1601 - Type drop - 1 50728 1 2 - 2 30194 1 1.0 -} -Group Ͱ -{ - Kill_drop 1000 - Mob 1602 - Type kill - 1 11271 1 20 20 - 2 11471 1 20 20 - 3 11671 1 20 20 - 4 11871 1 20 20 - 5 11272 1 10 10 - 6 11472 1 10 10 - 7 11672 1 10 10 - 8 11872 1 10 10 -} -Group Ͱ -{ - Mob 1602 - Type drop - 1 50721 1 4 - 2 30194 1 1 -} -Group ͹ -{ - Kill_drop 2000 - Mob 1603 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 -} -Group ͹ -{ - Mob 1603 - Type drop - 1 50722 1 2 - 2 30194 1 1 -} -Group ͹ -{ - Level_limit 86 - Mob 1603 - Type limit - 1 11290 1 0.03 - 2 11490 1 0.03 - 3 11890 1 0.03 - 4 11690 1 0.03 - 5 170 1 0.03 - 6 250 1 0.03 - 7 1120 1 0.03 - 8 2180 1 0.03 - 9 3150 1 0.03 - 10 7150 1 0.03 -} -Group ȣ -{ - Kill_drop 1 - Mob 1901 - Type kill - 1 50077 1 100 0 -} -Group ȣ -{ - Mob 1901 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90010 1 200 -} -Group ȣ -{ - Mob 1902 - Type drop - 1 151 1 25 30 - 2 152 1 10 30 - 3 5091 1 25 30 - 4 5092 1 10 30 - 5 141 1 25 30 - 6 142 1 10 30 - 7 3131 1 25 30 - 8 3132 1 10 30 - 9 1101 1 25 30 - 10 1102 1 10 30 - 11 7131 1 25 30 - 12 7132 1 10 30 - 13 2141 1 25 30 - 14 2142 1 10 30 - 15 11682 1 50 30 - 16 11683 1 20 30 - 17 11882 1 50 30 - 18 11883 1 20 30 - 19 11482 1 50 30 - 20 11483 1 20 30 - 21 11282 1 50 30 - 22 11283 1 20 30 - 23 17204 1 50 30 - 24 17205 1 25 30 - 25 17206 1 10 30 - 26 16204 1 50 30 - 27 16205 1 25 30 - 28 16206 1 10 30 - 29 14204 1 50 30 - 30 14205 1 25 30 - 31 14206 1 10 30 - 32 50006 1 400 - 33 50007 1 400 - 34 50012 1 400 - 35 50013 1 400 - 36 12222 1 50 - 37 12223 1 25 - 38 12362 1 50 - 39 12363 1 25 - 40 12502 1 50 - 41 12503 1 25 - 42 12642 1 50 - 43 12643 1 25 - 44 30015 1 100 - 45 30035 1 100 - 46 30058 1 100 - 47 30006 1 100 - 48 30082 1 100 - 49 30076 1 100 - 50 30018 1 100 - 51 30046 1 100 - 52 30021 1 100 - 53 30086 1 100 - 54 30005 1 100 - 55 30072 1 100 - 56 30080 1 100 - 57 30077 1 100 - 58 30069 1 100 - 59 30067 1 100 - 60 12282 1 0.05 - 61 12402 1 0.05 - 62 12542 1 0.05 - 63 12682 1 0.05 - 64 12284 1 0.0125 - 65 12404 1 0.0125 - 66 12544 1 0.0125 - 67 12684 1 0.0125 -} -Group Ź -{ - Mob 2001 - Type drop - 1 50721 1 2 -} -Group Ź -{ - Mob 2002 - Type drop - 1 50725 1 1 -} -Group Ź -{ - Kill_drop 1000 - Mob 2003 - Type kill - 1 7102 1 1 10 -} -Group Ź -{ - Mob 2003 - Type drop - 1 50725 1 1 - 2 50009 1 0.2 -} -Group ԰Ź -{ - Kill_drop 1000 - Mob 2004 - Type kill - 1 5072 1 1 10 -} -Group ԰Ź -{ - Mob 2004 - Type drop - 1 50721 1 2 -} -Group Ź -{ - Kill_drop 500 - Mob 2005 - Type kill - 1 12242 1 1 10 - 2 12382 1 1 10 - 3 12522 1 1 10 - 4 12662 1 1 10 -} -Group Ź -{ - Mob 2005 - Type drop - 1 50727 1 0.8 -} -Group Ź -{ - Mob 2031 - Type drop - 1 50722 1 1 -} -Group ͵Ź -{ - Kill_drop 300 - Mob 2033 - Type kill - 1 112 1 65 10 - 2 113 1 35 10 -} -Group ͵Ź -{ - Mob 2033 - Type drop - 1 50727 1 0.8 -} -Group ԵŹ -{ - Kill_drop 500 - Mob 2034 - Type kill - 1 1072 1 1 10 -} -Group ԵŹ -{ - Mob 2034 - Type drop - 1 50726 1 2 -} -Group Ź -{ - Kill_drop 300 - Mob 2035 - Type kill - 1 11260 1 1 10 - 2 11460 1 1 10 - 3 11660 1 1 10 - 4 11860 1 1 10 -} -Group Ź -{ - Mob 2035 - Type drop - 1 50726 1 2 -} -Group Ź -{ - Kill_drop 90 - Mob 2036 - Type kill - 1 3112 1 65 10 - 2 3113 1 35 10 -} -Group Ź -{ - Mob 2061 - Type drop - 1 50724 1 2 -} -Group Ź -{ - Level_limit 60 - Mob 2061 - Type limit - 1 104 1 0.5 - 2 114 1 0.5 - 3 124 1 0.5 - 4 134 1 0.5 - 5 13006 1 0.5 - 6 13194 1 0.5 - 7 13205 1 0.5 - 8 13060 1 0.05 - 9 13100 1 0.05 -} -Group ͵Ź -{ - Mob 2062 - Type drop - 1 50721 1 4 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2062 - Type limit - 1 1064 1 0.5 - 2 1074 1 0.5 - 3 1084 1 0.5 - 4 1094 1 0.5 - 5 12626 1 0.5 - 6 12645 1 0.5 - 7 12664 1 0.5 - 8 13080 1 0.05 - 9 13120 1 0.05 -} -Group ͵Ź -{ - Mob 2063 - Type drop - 1 50724 1 2 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2063 - Type limit - 1 2094 1 0.5 - 2 2104 1 0.5 - 3 2114 1 0.5 - 4 2124 1 0.5 - 5 12486 1 0.5 - 6 12505 1 0.5 - 7 12524 1 0.5 - 8 13120 1 0.1 -} -Group ԵŹ -{ - Mob 2064 - Type drop - 1 50722 1 2 -} -Group ԵŹ -{ - Level_limit 60 - Mob 2064 - Type limit - 1 3094 1 0.5 - 2 3104 1 0.5 - 3 3114 1 0.5 - 4 3124 1 0.5 - 5 12346 1 0.5 - 6 12365 1 0.5 - 7 12384 1 0.5 - 8 13120 1 0.1 -} -Group Ź -{ - Mob 2065 - Type drop - 1 50723 1 2 - 2 50009 1 0.2 -} -Group Ź -{ - Level_limit 60 - Mob 2065 - Type limit - 1 5064 1 0.5 - 2 5074 1 0.5 - 3 5084 1 0.5 - 4 12206 1 0.5 - 5 12225 1 0.5 - 6 12244 1 0.5 - 7 13100 1 0.1 -} -Group հŹ -{ - Kill_drop 1 - Mob 2091 - Type kill - 1 50073 1 100 0 -} -Group հŹ -{ - Mob 2091 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90011 1 60 -} -Group 񸶱; -{ - Kill_drop 400 - Mob 2102 - Type kill - 1 12222 1 6 10 - 2 12362 1 6 10 - 3 12502 1 6 10 - 4 12642 1 6 10 - 5 12223 1 3 10 - 6 12363 1 3 10 - 7 12503 1 3 10 - 8 12643 1 3 10 -} -Group 񸶱; -{ - Mob 2102 - Type drop - 1 50722 1 2 -} -Group -{ - Kill_drop 1000 - Mob 2103 - Type kill - 1 14160 1 18 10 - 2 14161 1 9 10 - 3 14180 1 12 10 - 4 14181 1 6 10 - 5 14200 1 6 10 - 6 14201 1 3 10 -} -Group -{ - Mob 2103 - Type drop - 1 50721 1 4 -} -Group ΰ -{ - Kill_drop 800 - Mob 2104 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 - 3 7160 1 40 10 - 4 5110 1 20 10 -} -Group ΰ -{ - Mob 2104 - Type drop - 1 50724 1 1 -} -Group ü -{ - Kill_drop 500 - Mob 2105 - Type kill - 1 2092 1 65 10 - 2 2093 1 35 10 - 3 7160 1 20 10 - 4 5110 1 40 10 -} -Group ü -{ - Mob 2105 - Type drop - 1 50013 1 1 - 2 8002 100 40 - 3 30081 1 1 - 4 50009 1 0.2 - 5 50722 1 2 -} -Group ιݻ˺ -{ - Kill_drop 700 - Mob 2106 - Type kill - 1 1062 1 65 10 - 2 1063 1 35 10 -} -Group ιݻ˺ -{ - Mob 2106 - Type drop - 1 50726 1 1 - 2 50009 1 0.2 -} -Group ιݻú -{ - Kill_drop 400 - Mob 2107 - Type kill - 1 13202 1 65 30 - 2 13203 1 35 30 -} -Group ιݻú -{ - Mob 2107 - Type drop - 1 50006 1 0.7 - 2 8003 50 40 - 3 30082 1 1 - 4 50725 1 2 -} -Group 縷ǹ -{ - Kill_drop 100 - Mob 2108 - Type kill - 1 17162 1 18 10 - 2 17163 1 9 10 - 3 17182 1 12 10 - 4 17183 1 6 10 - 5 17202 1 6 10 - 6 17203 1 3 10 -} -Group 縷ǹ -{ - Mob 2108 - Type drop - 1 92 1 0.2 - 2 2082 1 0.2 - 3 11841 1 0.2 - 4 15122 1 0.2 - 5 27002 30 50 - 6 27003 20 25 - 7 27005 20 50 - 8 27006 10 25 - 9 70008 1 0.1 - 10 50728 1 0.8 -} -Group Ź -{ - Level_limit 60 - Mob 2131 - Type limit - 1 16004 1 0.5 - 2 16024 1 0.5 - 3 16044 1 0.5 - 4 16064 1 0.5 - 5 13006 1 0.5 - 6 13194 1 0.5 - 7 13205 1 0.5 - 8 13100 1 0.1 - 9 50009 1 0.1 -} -Group ΰ -{ - Mob 2131 - Type drop - 1 50727 1 2 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2132 - Type limit - 1 16084 1 0.5 - 2 16104 1 0.5 - 3 16124 1 0.5 - 4 16144 1 0.5 - 5 17164 1 0.5 - 6 17184 1 0.5 - 7 17204 1 0.5 - 8 13080 1 0.1 - 9 50009 1 0.1 -} -Group ü -{ - Mob 2132 - Type drop - 1 50726 1 4 -} -Group ιݻ˺ -{ - Mob 2133 - Type drop - 1 50725 1 4 -} -Group ͵Ź -{ - Level_limit 60 - Mob 2133 - Type limit - 1 15164 1 0.5 - 2 15184 1 0.5 - 3 15204 1 0.5 - 4 15224 1 0.5 - 5 17104 1 0.5 - 6 17124 1 0.5 - 7 17144 1 0.5 - 8 13080 1 0.1 - 9 50009 1 0.1 -} -Group ιݻú -{ - Mob 2134 - Type drop - 1 50727 1 2 -} -Group ԵŹ -{ - Level_limit 60 - Mob 2134 - Type limit - 1 15084 1 0.5 - 2 15104 1 0.5 - 3 15124 1 0.5 - 4 15144 1 0.5 - 5 16164 1 0.5 - 6 16184 1 0.5 - 7 16204 1 0.5 - 8 13060 1 0.1 - 9 50009 1 0.1 -} -Group Ź -{ - Level_limit 60 - Mob 2135 - Type limit - 1 15004 1 0.5 - 2 15024 1 0.5 - 3 15044 1 0.5 - 4 15064 1 0.5 - 5 17044 1 0.5 - 6 17064 1 0.5 - 7 13060 1 0.1 - 8 50009 1 0.1 -} -Group 縷ǹ -{ - Mob 2135 - Type drop - 1 50725 1 4 -} -Group Ŵ縷ź -{ - Kill_drop 1 - Mob 2191 - Type kill - 1 50076 1 100 0 -} -Group Ŵ縷ź -{ - Mob 2191 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 80 -} -Group -{ - Kill_drop 0 - Mob 2201 - Type kill -} -Group -{ - Mob 2201 - Type drop - 1 90010 1 0.09 - 2 50722 1 1 -} -Group ȭ -{ - Kill_drop 1000 - Mob 2202 - Type kill - 1 50009 1 10 0 -} -Group ȭ -{ - Mob 2202 - Type drop - 1 90010 1 0.1 - 2 50727 1 2 -} -Group -{ - Kill_drop 1000 - Mob 2203 - Type kill - 1 132 1 65 20 - 2 133 1 35 20 -} -Group -{ - Mob 2203 - Type drop - 1 90010 1 0.2 - 2 50728 1 1 -} -Group -{ - Kill_drop 1000 - Mob 2204 - Type kill - 1 1092 1 65 20 - 2 1093 1 35 20 -} -Group -{ - Mob 2204 - Type drop - 1 90010 1 0.3 - 2 12280 1 0.041 - 3 12400 1 0.041 - 4 12540 1 0.041 - 5 12680 1 0.041 -} -Group ȭ -{ - Kill_drop 500 - Mob 2205 - Type kill - 1 3123 1 65 20 - 2 3124 1 35 20 -} -Group ȭ -{ - Mob 2205 - Type drop - 1 90010 1 0.4 - 2 50723 1 4 - 3 12280 1 0.041 - 4 12400 1 0.041 - 5 12540 1 0.041 - 6 12680 1 0.041 -} -Group ȭ -{ - Kill_drop 1 - Mob 2206 - Type kill - 1 50079 1 100 0 -} -Group ȭ -{ - Mob 2206 - Type drop - 1 27002 200 400 - 2 27003 100 400 - 3 27005 200 400 - 4 27006 100 400 - 5 90012 1 200 -} -Group ͸ -{ - Kill_drop 0 - Mob 2301 - Type kill -} -Group ͸ -{ - Mob 2301 - Type drop - 1 50727 1 2 -} -Group صձ͸ -{ - Kill_drop 2000 - Mob 2302 - Type kill - 1 50008 1 1 0 -} -Group صձ͸ -{ - Mob 2302 - Type drop - 1 50726 1 1 - 2 30192 1 0.5 -} -Group -{ - Kill_drop 1000 - Mob 2303 - Type kill - 1 11270 1 30 30 - 2 11470 1 30 30 - 3 11670 1 30 30 - 4 11870 1 30 30 - 5 11271 1 20 20 - 6 11471 1 20 20 - 7 11671 1 20 20 - 8 11871 1 20 20 - 9 11272 1 10 10 - 10 11472 1 10 10 - 11 11672 1 10 10 - 12 11872 1 10 10 - 13 50008 1 20 0 -} -Group -{ - Mob 2303 - Type drop - 1 50725 1 2 - 2 30192 1 0.05 -} -Group Refining_2304 -{ - Mob 2304 - Type drop - 1 30192 1 0.05 -} -Group ȭ͸ -{ - Kill_drop 15000 - Mob 2304 - Type kill - 1 11280 1 1 10 - 2 11880 1 1 10 - 3 11480 1 1 10 - 4 11680 1 1 10 -} -Group ͸ -{ - Kill_drop 10000 - Mob 2305 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ͸ -{ - Kill_drop 800 - Mob 2311 - Type kill - 1 50008 1 1 0 -} -Group ͸ -{ - Mob 2311 - Type drop - 1 50728 1 0.8 - 2 30197 1 0.03 -} -Group ص͸ -{ - Kill_drop 800 - Mob 2312 - Type kill - 1 50008 1 1 0 -} -Group ص͸ -{ - Mob 2312 - Type drop - 1 50724 1 1 - 2 30197 1 0.03 -} -Group -{ - Kill_drop 1000 - Mob 2313 - Type kill - 1 11272 1 20 30 - 2 11472 1 20 30 - 3 11672 1 20 30 - 4 11872 1 20 30 - 5 11273 1 10 30 - 6 11473 1 10 30 - 7 11673 1 10 30 - 8 11873 1 10 30 - 9 50008 1 20 0 -} -Group -{ - Mob 2313 - Type drop - 1 50726 1 1 - 2 30197 1 0.03 -} -Group -{ - Level_limit 86 - Mob 2313 - Type limit - 1 17204 1 0.03 - 2 17205 1 0.03 - 3 17206 1 0.03 - 4 3140 1 0.03 - 5 1110 1 0.03 - 6 2130 1 0.03 - 7 7140 1 0.03 - 8 5100 1 0.03 - 9 160 1 0.03 - 10 240 1 0.03 -} -Group ȭ͸ -{ - Kill_drop 6000 - Mob 2314 - Type kill - 1 11280 1 1 10 - 2 11880 1 1 10 - 3 11480 1 1 10 - 4 11680 1 1 10 -} -Group ȭ͸ -{ - Mob 2314 - Type drop - 1 50727 1 0.8 - 2 30197 1 0.03 -} -Group ȭ͸ -{ - Level_limit 86 - Mob 2314 - Type limit - 1 16204 1 0.03 - 2 16205 1 0.03 - 3 16206 1 0.03 - 4 3140 1 0.06 - 5 1110 1 0.06 - 6 2130 1 0.06 - 7 7140 1 0.06 - 8 5100 1 0.06 - 9 160 1 0.06 - 10 240 1 0.06 -} -Group ͸ -{ - Kill_drop 3000 - Mob 2315 - Type kill - 1 3140 1 1 10 - 2 1110 1 1 10 - 3 2130 1 1 10 - 4 7140 1 1 10 - 5 5100 1 1 10 - 6 160 1 1 10 - 7 240 1 1 10 - 8 150 1 1 10 - 9 5090 1 1 10 - 10 140 1 1 10 - 11 3130 1 1 10 - 12 1100 1 1 10 - 13 7130 1 1 10 - 14 2140 1 1 10 -} -Group ͸ -{ - Mob 2315 - Type drop - 1 50728 1 1 -} -Group ͸ -{ - Level_limit 86 - Mob 2315 - Type limit - 1 11291 1 0.03 - 2 11491 1 0.03 - 3 11891 1 0.03 - 4 11691 1 0.03 - 5 27987 1 0.09 - 6 14204 1 0.09 - 7 14205 1 0.09 - 8 14206 1 0.09 - 9 3140 1 0.15 - 10 1110 1 0.15 - 11 2130 1 0.15 - 12 7140 1 0.15 - 13 5100 1 0.15 - 14 160 1 0.15 - 15 240 1 0.15 -} -Group Setaou-K?pfer87 -{ - Level_limit 75 - Mob 2401 - Type limit - 1 250 1 0.07 - 2 12525 1 0.4 - 3 50060 1 0.04 - 4 27987 1 0.05 - 5 50721 5 0.63 - 6 50725 5 0.63 - 7 70050 1 0.2 - 8 166 1 0.08 - 9 164 1 0.17 - 10 15185 1 0.34 - 11 254 1 0.09 - 12 255 1 0.05 - 13 70031 1 0.004 - 14 11485 1 0.1 - 15 11285 1 0.1 - 16 190 1 0.04 - 17 180 1 0.04 - 18 50124 1 0.02 - 19 50121 1 0.06 -} -Group Setaou-J?er89 -{ - Level_limit 75 - Mob 2402 - Type limit - 1 1120 1 0.07 - 2 2180 1 0.07 - 3 8005 30 0.6 - 4 8005 60 0.42 - 5 12385 1 0.4 - 6 14184 1 0.25 - 7 27987 1 0.05 - 8 50722 5 0.63 - 9 50726 5 0.63 - 10 1106 1 0.08 - 11 2136 1 0.08 - 12 2184 1 0.09 - 13 1124 1 0.09 - 14 70031 1 0.007 - 15 11885 1 0.15 - 16 11685 1 0.15 - 17 2170 1 0.04 - 18 1130 1 0.04 - 19 50124 1 0.02 - 20 50120 1 0.06 -} -Group Setaou-Seherin89 -{ - Level_limit 75 - Mob 2403 - Type limit - 1 7150 1 0.17 - 2 12665 1 0.8 - 3 14164 1 0.34 - 4 17163 1 0.85 - 5 27987 1 0.1 - 6 50723 5 1.25 - 7 50727 5 1.25 - 8 5096 1 0.2 - 9 7136 1 0.2 - 10 11885 1 0.8 - 11 11685 1 0.4 - 12 15224 1 0.34 - 13 7154 1 0.15 - 14 7155 1 0.15 - 15 70031 1 0.007 - 16 5120 1 0.04 - 17 50124 1 0.02 - 18 50122 1 0.06 -} -Group Refine_2404 -{ - Mob 2404 - Type drop - 1 30199 1 0.13 -} -Group Setaou-Anf?rer90 -{ - Level_limit 75 - Mob 2404 - Type limit - 1 170 1 0.1 - 2 174 1 0.09 - 3 50060 1 0.08 - 4 50724 5 1.25 - 5 50728 5 1.25 - 6 70048 1 0.23 - 7 70051 1 0.39 - 8 3146 1 0.16 - 9 3136 1 0.16 - 10 11285 1 0.60 - 11 11485 1 0.20 - 12 15085 1 0.85 - 13 12245 1 0.8 - 14 3152 1 0.14 - 15 70031 1 0.007 - 16 181 1 0.05 - 17 191 1 0.05 - 18 1131 1 0.05 - 19 5121 1 0.05 - 20 2171 1 0.05 - 21 50120 1 0.02 - 22 50121 1 0.02 - 23 50122 1 0.02 -} -Group Setaou-Soldat91 -{ - Level_limit 75 - Mob 2411 - Type limit - 1 251 1 0.09 - 2 12526 1 0.1 - 3 14204 1 0.22 - 4 50060 1 0.08 - 5 27987 1 0.1 - 6 50721 5 0.65 - 7 50725 5 0.65 - 8 156 1 0.16 - 9 246 1 0.16 - 10 2144 1 0.16 - 11 70031 1 0.01 - 12 71056 1 0.005 - 13 182 1 0.1 - 14 192 1 0.1 - 15 50121 1 0.06 - 16 30196 1 0.02 -} -Group Setaou-J?er93 -{ - Level_limit 75 - Mob 2412 - Type limit - 1 1121 1 0.09 - 2 2181 1 0.09 - 3 8005 35 1.6 - 4 8005 55 0.85 - 5 12386 1 0.17 - 6 14186 1 0.28 - 7 27987 1 0.1 - 8 50009 1 0.34 - 9 50722 5 0.75 - 10 50726 5 0.75 - 11 144 1 0.16 - 12 1116 1 0.16 - 13 2146 1 0.16 - 14 70031 1 0.01 - 15 71056 1 0.005 - 16 2170 1 0.1 - 17 1130 1 0.1 - 18 50120 1 0.06 - 19 30196 1 0.03 -} -Group Refine_2413 -{ - Mob 2413 - Type drop - 1 30199 1 0.13 - 2 30196 1 0.07 -} -Group Setaou-Seherin95 -{ - Level_limit 75 - Mob 2413 - Type limit - 1 7151 1 0.1 - 2 12666 1 0.17 - 3 14166 1 0.26 - 4 15164 1 0.38 - 5 17164 1 0.41 - 6 17183 1 0.68 - 7 27987 1 0.1 - 8 50009 1 0.34 - 9 50723 5 1.25 - 10 50727 5 1.25 - 11 154 1 0.16 - 12 5106 1 0.16 - 13 7146 1 0.26 - 14 7144 1 0.26 - 15 70031 1 0.01 - 16 71056 1 0.005 - 17 5122 1 0.1 - 18 50122 1 0.06 -} -Group Refine_2414 -{ - Mob 2414 - Type drop - 1 30199 1 0.2 - 2 30196 1 0.07 -} -Group Setaou_Commander -{ - Level_limit 75 - Mob 2414 - Type limit - 1 182 1 0.2 - 2 192 1 0.2 - 3 1132 1 0.2 - 4 5122 1 0.2 - 5 2172 1 0.2 - 6 50120 1 0.02 - 7 50121 1 0.02 - 8 50122 1 0.02 -} -Group Setaou-General1 -{ - Level_limit 85 - Mob 2491 - Type drop - 1 30179 1 400 - 2 30196 1 1 -} -Group Setaou-General2 -{ - Level_limit 85 - Mob 2492 - Type drop - 1 30179 1 400 - 2 30179 2 100 - 3 30190 1 100 - 4 13063 1 100 - 5 14206 1 50 - 6 27987 1 100 - 7 70051 1 50 - 8 13083 1 100 - 9 70050 1 50 - 10 13103 1 100 - 11 15165 1 30 - 12 16203 1 50 - 13 17184 1 50 - 14 17203 1 30 - 15 13123 1 50 - 16 14143 1 30 - 17 15204 1 30 - 18 16184 1 50 -} -Group Water_Dragon -{ - Mob 2493 - Type drop - 1 30190 1 400 - 2 30190 2 50 - 3 12284 1 20 - 4 12404 1 20 - 5 12544 1 20 - 6 12684 1 20 - 7 15374 1 20 - 8 15394 1 20 - 9 15414 1 20 - 10 15434 1 20 - 11 27987 1 75 - 12 50124 1 20 - 13 50124 1 20 - 14 50124 1 20 - 15 50121 1 20 - 16 50121 1 40 - 17 50121 1 40 - 18 71123 1 5 - 19 71129 1 5 - 20 71083 1 1 - 21 25040 1 0.5 - 22 71085 1 0.5 - 23 71084 1 0.5 -} -Group Water_Dragon_HL -{ - Level_limit 90 - Mob 2493 - Type limit - 1 30190 4 5 - 2 27992 1 20 - 3 27993 1 10 - 4 27994 1 5 - 5 70024 1 0.5 - 6 50124 1 25 - 7 50124 1 25 - 8 50121 1 50 - 9 50121 1 50 - 10 50513 1 15 - 11 50513 1 15 - 12 71085 3 0.2 - 13 71084 3 0.2 -} -Group Setaou-General3 -{ - Level_limit 85 - Mob 2494 - Type drop - 1 30179 1 400 100 -} -Group Setaou-General4 -{ - Level_limit 85 - Mob 2495 - Type drop - 1 30179 1 400 - 2 30179 3 100 - 3 30190 1 100 - 4 11691 1 30 - 5 11491 1 30 - 6 11891 1 30 - 7 11291 1 30 - 8 13064 1 100 - 9 13084 1 30 - 10 13104 1 100 - 11 16204 1 50 - 12 17204 1 30 - 13 13124 1 100 - 14 15205 1 30 - 15 70050 1 50 - 16 70051 1 50 - 17 50009 1 100 - 18 27987 1 100 -} -Group -{ - Kill_drop 1 - Mob 5002 - Type kill - 1 134 1 46 30 - 2 135 1 20 30 - 3 1094 1 46 30 - 4 1095 1 20 30 - 5 3124 1 46 30 - 6 3125 1 20 30 - 7 2124 1 46 30 - 8 2125 1 20 30 - 9 5084 1 46 30 - 10 5085 1 20 30 - 11 7124 1 46 30 - 12 7125 1 20 30 - 13 11263 1 46 30 - 14 11264 1 20 30 - 15 11463 1 46 30 - 16 11464 1 20 30 - 17 11663 1 46 30 - 18 11664 1 20 30 - 19 11863 1 46 30 - 20 11864 1 20 30 - 21 13203 1 46 30 - 22 13204 1 20 30 - 23 70038 1 40 0 - 24 70048 1 40 0 - 25 70050 1 40 0 - 26 70051 1 40 0 - 27 70012 1 40 0 - 28 70037 1 40 0 - 29 70014 1 40 0 - 30 25040 1 40 0 -} -Group -{ - Mob 5002 - Type drop - 1 27002 100 400 - 2 27003 50 400 - 3 27005 100 400 - 4 27006 50 400 -} -Group ̺Ʈ_ٳ -{ - Kill_drop 1 - Mob 5004 - Type kill - 1 30202 1 1 0 -} -Group ϼ_ -{ - Kill_drop 550 - Mob 5101 - Type kill - 1 50050 1 20 0 -} -Group ϼ -{ - Mob 5101 - Type drop - 1 50722 1 2 -} -Group ϼ_ -{ - Kill_drop 250 - Mob 5102 - Type kill - 1 50050 1 20 0 -} -Group ϼ_ -{ - Kill_drop 250 - Mob 5103 - Type kill - 1 5042 1 65 10 - 2 82 1 65 10 - 3 83 1 35 10 - 4 5032 1 35 10 - 5 50050 1 100 0 -} -Group ϼ_ -{ - Kill_drop 100 - Mob 5104 - Type kill - 1 7073 1 20 10 - 2 7053 1 20 10 - 3 4023 1 20 10 - 4 1043 1 20 10 - 5 50050 1 20 0 -} -Group ϼ -{ - Mob 5104 - Type drop - 1 50721 1 1 -} -Group ߼_ -{ - Kill_drop 550 - Mob 5111 - Type kill - 1 50050 1 20 0 -} -Group ߼ -{ - Mob 5111 - Type drop - 1 50723 1 2 -} -Group ߼_ -{ - Kill_drop 300 - Mob 5112 - Type kill - 1 50050 1 20 0 -} -Group ߼_ -{ - Kill_drop 250 - Mob 5113 - Type kill - 1 7083 1 20 10 - 2 5053 1 10 10 - 3 50050 1 30 0 -} -Group ߼_ -{ - Kill_drop 100 - Mob 5114 - Type kill - 1 93 1 20 20 - 2 1053 1 20 20 - 3 50050 1 40 0 -} -Group ߼ -{ - Mob 5114 - Type drop - 1 50722 1 1 -} -Group ߼_ -{ - Kill_drop 100 - Mob 5115 - Type kill - 1 3083 1 20 20 - 2 50050 1 20 0 -} -Group ߼ -{ - Mob 5115 - Type drop - 1 50725 1 1 -} -Group ߼ -{ - Mob 5116 - Type drop - 1 50726 1 1 -} -Group 󼱵_ -{ - Kill_drop 550 - Mob 5121 - Type kill - 1 50050 1 20 0 -} -Group 󼱵 -{ - Mob 5121 - Type drop - 1 50726 1 1 -} -Group 󼱵_ -{ - Kill_drop 300 - Mob 5122 - Type kill - 1 50050 1 20 0 -} -Group 󼱵 -{ - Mob 5122 - Type drop - 1 50723 1 1 -} -Group 󼱵_ -{ - Kill_drop 250 - Mob 5123 - Type kill - 1 7103 1 20 10 - 2 50050 1 20 0 -} -Group 󼱵_ -{ - Kill_drop 100 - Mob 5124 - Type kill - 1 5073 1 20 10 - 2 50050 1 20 0 -} -Group 󼱵_ -{ - Kill_drop 80 - Mob 5125 - Type kill - 1 113 1 65 10 - 2 114 1 35 10 - 3 50050 1 100 0 -} -Group 󼱵 -{ - Mob 5125 - Type drop - 1 50724 1 1 -} -Group 󼱵_ݿ -{ - Kill_drop 30 - Mob 5126 - Type kill - 1 3113 1 65 10 - 2 3114 1 35 10 - 3 50050 1 100 0 -} -Group 󼱵ݿ -{ - Mob 5126 - Type drop - 1 50721 1 2 -} -Group 󼱵 -{ - Mob 5127 - Type drop - 1 50722 1 2 -} -Group ̻뼺 -{ - Kill_drop 10 - Mob 5161 - Type kill - 1 74 1 10 30 - 2 1034 1 10 30 - 3 2064 1 10 30 - 4 3064 1 10 30 - 5 5044 1 10 30 - 6 7064 1 10 30 -} -Group ̻뼺 -{ - Mob 5161 - Type drop - 1 50057 1 200 -} -Group õ뼺 -{ - Kill_drop 10 - Mob 5162 - Type kill - 1 104 1 10 30 - 2 1064 1 10 30 - 3 2094 1 10 30 - 4 3094 1 10 30 - 5 5064 1 10 30 - 6 7094 1 10 30 - 7 11253 1 10 30 - 8 11453 1 10 30 - 9 11653 1 10 30 - 10 11853 1 10 30 -} -Group õ뼺 -{ - Mob 5162 - Type drop - 1 50058 1 200 -} -Group õ뼺 -{ - Kill_drop 10 - Mob 5163 - Type kill - 1 134 1 10 30 - 2 1094 1 10 30 - 3 2124 1 10 30 - 4 5084 1 10 30 - 5 3124 1 10 30 - 6 7124 1 10 30 - 7 11272 1 10 30 - 8 11472 1 10 30 - 9 11672 1 10 30 - 10 11872 1 10 30 -} -Group õ뼺 -{ - Mob 5163 - Type drop - 1 50059 1 200 -} -Group 񸶼 -{ - Mob 8001 - Type drop - 1 20 1 20 - 2 4000 1 20 - 3 3010 1 20 - 4 2010 1 20 - 5 7010 1 20 - 6 11200 1 20 - 7 11400 1 20 - 8 11600 1 20 - 9 22 1 15 - 10 4002 1 15 - 11 3012 1 15 - 12 2012 1 15 - 13 7012 1 15 - 14 11202 1 15 - 15 11402 1 15 - 16 11602 1 15 - 17 11802 1 15 - 18 27002 50 100 - 19 27003 30 50 - 20 27005 30 50 - 21 27006 20 50 - 22 50300 1 100 -} -Group -{ - Mob 8002 - Type drop - 1 5000 1 20 - 2 11210 1 20 - 3 11410 1 20 - 4 11610 1 20 - 5 11810 1 20 - 6 30 1 20 - 7 1010 1 20 - 8 3020 1 20 - 9 2020 1 20 - 10 7020 1 20 - 11 5001 1 15 - 12 11211 1 15 - 13 11411 1 15 - 14 11611 1 15 - 15 11811 1 15 - 16 31 1 15 - 17 1011 1 15 - 18 3021 1 15 - 19 2021 1 15 - 20 7021 1 15 - 21 5002 1 10 - 22 11212 1 10 - 23 11412 1 10 - 24 11612 1 10 - 25 11812 1 10 - 26 32 1 5 - 27 1012 1 5 - 28 3022 1 5 - 29 2022 1 5 - 30 7022 1 5 - 31 27002 50 100 - 32 27003 30 50 - 33 27005 30 50 - 34 27006 20 50 - 35 50300 1 150 -} -Group -{ - Mob 8003 - Type drop - 1 40 1 20 - 2 4010 1 20 - 3 3030 1 20 - 4 2030 1 20 - 5 7030 1 20 - 6 5011 1 20 - 7 11210 1 20 - 8 11410 1 20 - 9 11610 1 20 - 10 11810 1 20 - 11 41 1 10 - 12 4011 1 10 - 13 3031 1 10 - 14 2031 1 10 - 15 7031 1 10 - 16 5010 1 10 - 17 11211 1 15 - 18 11411 1 15 - 19 11611 1 15 - 20 11811 1 15 - 21 42 1 5 - 22 4012 1 5 - 23 3032 1 5 - 24 2032 1 5 - 25 7032 1 5 - 26 5011 1 5 - 27 11212 1 10 - 28 11412 1 10 - 29 11612 1 10 - 30 11812 1 10 - 31 27002 50 100 - 32 27003 30 50 - 33 27005 30 50 - 34 27006 20 50 - 35 50300 1 150 -} -Group 帶 -{ - Mob 8004 - Type drop - 1 50 1 20 - 2 1020 1 20 - 3 3040 1 20 - 4 2040 1 20 - 5 5021 1 20 - 6 7041 1 20 - 7 51 1 15 - 8 1021 1 15 - 9 3041 1 15 - 10 2041 1 15 - 11 5020 1 15 - 12 7041 1 15 - 13 52 1 10 - 14 1022 1 10 - 15 3042 1 10 - 16 2042 1 10 - 17 5021 1 10 - 18 7041 1 10 - 19 11220 1 15 - 20 11420 1 15 - 21 11620 1 15 - 22 11820 1 15 - 23 11221 1 10 - 24 11421 1 10 - 25 11621 1 10 - 26 11821 1 10 - 27 27002 50 100 - 28 27003 30 50 - 29 27005 30 50 - 30 27006 20 50 - 31 50300 1 150 - 32 70014 1 1 - 33 70037 1 1 -} -Group 渶 -{ - Mob 8005 - Type drop - 1 60 1 20 - 2 4020 1 20 - 3 3050 1 20 - 4 2050 1 20 - 5 7050 1 20 - 6 61 1 15 - 7 4021 1 15 - 8 3051 1 15 - 9 2051 1 15 - 10 7051 1 15 - 11 62 1 10 - 12 4022 1 10 - 13 3052 1 10 - 14 2052 1 10 - 15 7052 1 10 - 16 11220 1 20 - 17 11420 1 20 - 18 11620 1 20 - 19 11820 1 20 - 20 11221 1 15 - 21 11421 1 15 - 22 11621 1 15 - 23 11821 1 15 - 24 11222 1 10 - 25 11422 1 10 - 26 11622 1 10 - 27 11822 1 10 - 28 27002 50 150 - 29 27003 30 100 - 30 27005 30 150 - 31 27006 20 100 - 32 50300 1 150 - 33 70014 1 1 - 34 70037 1 1 -} -Group ϸ -{ - Mob 8006 - Type drop - 1 70 1 20 - 2 1030 1 20 - 3 3060 1 20 - 4 2060 1 20 - 5 7060 1 20 - 6 5030 1 20 - 7 71 1 15 - 8 1031 1 15 - 9 3061 1 15 - 10 2061 1 15 - 11 7061 1 15 - 12 5030 1 20 - 13 11230 1 20 - 14 11430 1 20 - 15 11630 1 20 - 16 11830 1 20 - 17 72 1 10 - 18 1032 1 10 - 19 3062 1 10 - 20 2062 1 10 - 21 7062 1 10 - 22 5031 1 10 - 23 11231 1 10 - 24 11431 1 10 - 25 11631 1 10 - 26 11831 1 10 - 27 27002 50 150 - 28 27003 30 100 - 29 27005 30 150 - 30 27006 20 100 - 31 50300 1 200 - 32 70014 1 1 - 33 70037 1 1 -} -Group -{ - Mob 8007 - Type drop - 1 11230 1 20 - 2 11430 1 20 - 3 11630 1 20 - 4 11830 1 20 - 5 80 1 20 - 6 1040 1 20 - 7 3070 1 20 - 8 2070 1 20 - 9 7070 1 20 - 10 5040 1 20 - 11 11231 1 15 - 12 11431 1 15 - 13 11631 1 15 - 14 11831 1 15 - 15 81 1 15 - 16 1041 1 15 - 17 3071 1 15 - 18 2071 1 15 - 19 7071 1 15 - 20 5041 1 15 - 21 11232 1 10 - 22 11432 1 10 - 23 11632 1 10 - 24 11832 1 10 - 25 27002 50 150 - 26 27003 30 100 - 27 27005 30 150 - 28 27006 20 100 - 29 50300 1 200 - 30 70014 1 1 - 31 70037 1 1 -} -Group ȥ -{ - Mob 8008 - Type drop - 1 11240 1 20 - 2 11440 1 20 - 3 11640 1 20 - 4 11840 1 20 - 5 90 1 20 - 6 1050 1 20 - 7 3080 1 20 - 8 2080 1 20 - 9 7080 1 20 - 10 5050 1 20 - 11 11241 1 15 - 12 11441 1 15 - 13 11641 1 15 - 14 11841 1 15 - 15 91 1 15 - 16 1051 1 15 - 17 3081 1 15 - 18 2081 1 15 - 19 7081 1 15 - 20 5051 1 15 - 21 11242 1 10 - 22 11442 1 10 - 23 11642 1 10 - 24 11842 1 10 - 25 27002 50 150 - 26 27003 30 100 - 27 27005 30 150 - 28 27006 20 100 - 29 50300 1 200 - 30 70014 1 1 - 31 70037 1 1 -} -Group -{ - Mob 8009 - Type drop - 1 5050 1 20 - 2 100 1 20 - 3 1060 1 20 - 4 2090 1 20 - 5 7090 1 20 - 6 5051 1 20 - 7 11250 1 15 - 8 11450 1 15 - 9 11650 1 15 - 10 11850 1 15 - 11 101 1 15 - 12 1061 1 15 - 13 2091 1 15 - 14 7091 1 15 - 15 5052 1 15 - 16 11251 1 15 - 17 11451 1 15 - 18 11651 1 15 - 19 11851 1 15 - 20 102 1 10 - 21 1062 1 10 - 22 2092 1 10 - 23 7092 1 10 - 24 11252 1 10 - 25 11452 1 10 - 26 11652 1 10 - 27 11852 1 10 - 28 27002 50 150 - 29 27003 30 100 - 30 27005 30 150 - 31 27006 20 100 - 32 50300 1 200 - 33 70014 1 1 - 34 70037 1 1 -} -Group -{ - Mob 8010 - Type drop - 1 11250 1 20 - 2 11450 1 20 - 3 11650 1 20 - 4 11850 1 20 - 5 110 1 20 - 6 1070 1 20 - 7 2100 1 20 - 8 7100 1 20 - 9 5060 1 20 - 10 11251 1 15 - 11 11451 1 15 - 12 11651 1 15 - 13 11851 1 15 - 14 111 1 15 - 15 1071 1 15 - 16 2101 1 15 - 17 7101 1 15 - 18 5061 1 15 - 19 11252 1 10 - 20 11452 1 10 - 21 11652 1 10 - 22 11852 1 10 - 23 27002 50 150 - 24 27003 30 100 - 25 27005 30 150 - 26 27006 20 100 - 27 50300 1 250 - 28 70014 1 1 - 29 70037 1 1 -} -Group Ǹ -{ - Mob 8011 - Type drop - 1 120 1 30 - 2 1080 1 30 - 3 2110 1 30 - 4 7110 1 30 - 5 5070 1 30 - 6 121 1 20 - 7 1081 1 20 - 8 2111 1 20 - 9 7111 1 20 - 10 5071 1 20 - 11 122 1 15 - 12 1082 1 15 - 13 2112 1 15 - 14 7112 1 15 - 15 5072 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 250 - 21 70014 1 1 - 22 70037 1 1 -} -Group  -{ - Mob 8012 - Type drop - 1 130 1 30 - 2 1090 1 30 - 3 2120 1 30 - 4 7120 1 30 - 5 5080 1 30 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 1 - 22 70037 1 1 -} -Group 縶 -{ - Mob 8013 - Type drop - 1 120 1 25 - 2 1080 1 25 - 3 2110 1 25 - 4 7110 1 25 - 5 5070 1 25 - 6 121 1 20 - 7 1081 1 20 - 8 2111 1 20 - 9 7111 1 20 - 10 5071 1 20 - 11 122 1 15 - 12 1082 1 15 - 13 2112 1 15 - 14 7112 1 15 - 15 5072 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 1 - 22 70037 1 1 -} -Group 츶 -{ - Mob 8014 - Type drop - 1 130 1 25 - 2 1090 1 25 - 3 2120 1 25 - 4 7120 1 25 - 5 5080 1 25 - 6 131 1 20 - 7 1091 1 20 - 8 2121 1 20 - 9 7121 1 20 - 10 5081 1 20 - 11 132 1 15 - 12 1092 1 15 - 13 2122 1 15 - 14 7122 1 15 - 15 5082 1 15 - 16 27002 50 150 - 17 27003 30 100 - 18 27005 30 150 - 19 27006 20 100 - 20 50300 1 300 - 21 70014 1 50 - 22 70037 1 50 -} -Group -{ - Mob 8015 - Type drop - 1 110 1 10 - 2 1070 1 10 - 3 2100 1 10 - 4 7100 1 10 - 5 5060 1 10 - 6 111 1 5 - 7 1071 1 5 - 8 2101 1 5 - 9 7101 1 5 - 10 5061 1 1 - 11 27002 50 150 - 12 27003 30 100 - 13 27005 30 150 - 14 27006 20 100 - 15 50300 1 400 - 16 70014 1 1 - 17 70037 1 1 -} -Group Ǹ -{ - Mob 8016 - Type drop - 1 120 1 20 - 2 1080 1 20 - 3 2110 1 20 - 4 7110 1 20 - 5 5070 1 20 - 6 121 1 10 - 7 1081 1 10 - 8 2111 1 10 - 9 7111 1 10 - 10 5071 1 10 - 11 122 1 5 - 12 1082 1 5 - 13 2112 1 5 - 14 7112 1 5 - 15 5072 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group  -{ - Mob 8017 - Type drop - 1 130 1 20 - 2 1090 1 20 - 3 2120 1 20 - 4 7120 1 20 - 5 5080 1 20 - 6 131 1 10 - 7 1091 1 10 - 8 2121 1 10 - 9 7121 1 10 - 10 5081 1 10 - 11 132 1 5 - 12 1092 1 5 - 13 2122 1 5 - 14 7122 1 5 - 15 5082 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group 縶 -{ - Mob 8018 - Type drop - 1 120 1 15 - 2 1080 1 15 - 3 2110 1 15 - 4 7110 1 15 - 5 5070 1 15 - 6 121 1 10 - 7 1081 1 10 - 8 2111 1 10 - 9 7111 1 10 - 10 5071 1 10 - 11 122 1 5 - 12 1082 1 5 - 13 2112 1 5 - 14 7112 1 5 - 15 5072 1 5 - 16 27002 50 100 - 17 27003 30 200 - 18 27005 30 100 - 19 27006 20 150 - 20 50300 1 400 - 21 70014 1 1 - 22 70037 1 1 -} -Group 츶 -{ - Mob 8019 - Type drop - 1 130 1 15 - 2 1090 1 15 - 3 2120 1 15 - 4 7120 1 15 - 5 5080 1 15 - 6 131 1 10 - 7 1091 1 10 - 8 2121 1 10 - 9 7121 1 10 - 10 5081 1 10 - 11 132 1 5 - 12 1092 1 5 - 13 2122 1 5 - 14 27002 50 100 - 15 27003 30 200 - 16 27005 30 100 - 17 27006 20 150 - 18 50300 1 400 - 19 70014 1 1 - 20 70037 1 1 -} -Group dz -{ - Mob 8024 - Type drop - 1 3140 1 10 - 2 3141 1 5 - 3 1110 1 10 - 4 1111 1 5 - 5 2130 1 10 - 6 2131 1 5 - 7 7140 1 10 - 8 7141 1 5 - 9 5100 1 10 - 10 5101 1 5 - 11 160 1 10 - 12 161 1 5 - 13 240 1 10 - 14 241 1 5 - 15 27002 50 100 - 16 27003 30 200 - 17 27005 30 100 - 18 27006 20 150 - 19 70014 1 1 - 20 70037 1 1 - 21 12280 1 0.05 - 22 12400 1 0.05 - 23 12540 1 0.05 - 24 12680 1 0.05 - 25 12281 1 0.0125 - 26 12401 1 0.0125 - 27 12541 1 0.0125 - 28 12681 1 0.0125 -} -Group ȼ -{ - Mob 8025 - Type drop - 1 3141 1 10 - 2 3142 1 5 - 3 1111 1 10 - 4 1112 1 5 - 5 2131 1 10 - 6 2132 1 5 - 7 7141 1 10 - 8 7142 1 5 - 9 5101 1 10 - 10 5102 1 5 - 11 161 1 10 - 12 162 1 5 - 13 241 1 10 - 14 242 1 5 - 15 27002 50 100 - 16 27003 30 200 - 17 27005 30 100 - 18 27006 20 150 - 19 70014 1 1 - 20 70037 1 1 - 21 12280 1 0.05 - 22 12400 1 0.05 - 23 12540 1 0.05 - 24 12680 1 0.05 - 25 12281 1 0.0125 - 26 12401 1 0.0125 - 27 12541 1 0.0125 - 28 12681 1 0.0125 -} -Group 뼮 -{ - Mob 8026 - Type drop - 1 3142 1 10 - 2 3143 1 25 - 3 1112 1 15 - 4 1113 1 10 - 5 2132 1 25 - 6 2133 1 15 - 7 7142 1 10 - 8 7143 1 25 - 9 5102 1 15 - 10 5103 1 10 - 11 162 1 25 - 12 163 1 15 - 13 242 1 10 - 14 243 1 25 - 15 11681 1 15 - 16 11682 1 10 - 17 11881 1 25 - 18 11882 1 15 - 19 11481 1 10 - 20 11482 1 25 - 21 11281 1 15 - 22 11282 1 9 - 23 70038 1 15 - 24 25040 1 21 - 25 70048 1 20 - 26 70037 1 25 - 27 70014 1 25 - 28 72006 1 20 - 29 70005 1 20 - 30 27002 50 100 - 31 27003 30 200 - 32 27005 30 100 - 33 27006 20 150 - 34 70014 1 1 - 35 70037 1 1 -} -Group  -{ - Mob 8027 - Type drop - 1 151 1 5 - 2 152 1 15 - 3 153 1 10 - 4 5091 1 5 - 5 5092 1 15 - 6 5093 1 10 - 7 141 1 5 - 8 142 1 15 - 9 143 1 10 - 10 3131 1 5 - 11 3132 1 15 - 12 3133 1 10 - 13 1101 1 5 - 14 1102 1 15 - 15 1103 1 10 - 16 7131 1 5 - 17 7132 1 15 - 18 7133 1 10 - 19 2141 1 5 - 20 2142 1 15 - 21 2143 1 10 - 22 11681 1 5 - 23 11682 1 15 - 24 11683 1 10 - 25 11881 1 5 - 26 11882 1 15 - 27 11883 1 10 - 28 11481 1 5 - 29 11482 1 15 - 30 11483 1 10 - 31 11281 1 5 - 32 11282 1 15 - 33 11283 1 10 - 34 17164 1 9 - 35 17165 1 24 - 36 17166 1 14 - 37 16164 1 9 - 38 16165 1 24 - 39 16166 1 14 - 40 14164 1 9 - 41 14165 1 24 - 42 14166 1 14 - 43 70012 1 15 - 44 70038 1 15 - 45 25040 1 21 - 46 70048 1 20 - 47 70037 1 25 - 48 70014 1 25 - 49 72006 1 20 - 50 70005 1 20 - 51 27002 50 100 - 52 27003 30 200 - 53 27005 30 100 - 54 27006 20 150 - 55 50300 1 400 - 56 70014 1 1 - 57 70037 1 1 -} -Group ȭ -{ - Mob 11506 - Type drop - 1 50117 1 40 30 - 2 182 1 10 30 - 3 192 1 25 30 - 4 1132 1 10 30 - 5 2172 1 25 30 - 6 3162 1 10 30 - 7 5122 1 25 30 - 8 183 1 10 30 - 9 193 1 25 30 - 10 1133 1 10 30 - 11 2173 1 25 30 - 12 3163 1 10 30 - 13 5123 1 25 30 - 14 11293 1 10 30 - 15 11294 1 50 30 - 16 11693 1 20 30 - 17 11694 1 50 30 - 18 11493 1 20 30 - 19 11494 1 50 30 - 20 11893 1 20 30 - 21 11894 1 50 30 -} -Group ȭ -{ - Mob 11507 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11508 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11509 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group ȭ -{ - Mob 11510 - Type drop - 1 50117 1 40 30 - 2 182 1 20 30 - 3 192 1 20 30 - 4 1132 1 20 30 - 5 2172 1 20 30 - 6 3162 1 20 30 - 7 5122 1 20 30 - 8 183 1 20 30 - 9 193 1 20 30 - 10 1133 1 20 30 - 11 2173 1 20 30 - 12 3163 1 20 30 - 13 5123 1 20 30 - 14 11293 1 20 30 - 15 11294 1 20 30 - 16 11693 1 20 30 - 17 11694 1 20 30 - 18 11493 1 20 30 - 19 11494 1 20 30 - 20 11893 1 20 30 - 21 11894 1 20 30 -} -Group -{ - Mob 11041 - Type drop - 1 50726 1 2 -} -Group Setaou-Anf?rer97 -{ - Level_limit 85 - Mob 2475 - Type limit - 1 171 1 0.07 - 2 12246 1 0.12 - 3 14141 1 0.12 - 4 16183 1 0.21 - 5 50060 1 0.08 - 6 50009 1 0.34 - 7 50724 5 1.25 - 8 50728 5 1.25 - 9 244 1 0.34 - 10 146 1 0.27 - 11 1114 1 0.34 - 12 5104 1 0.34 - 13 70031 1 0.01 - 14 71056 1 0.005 -} -Group Setaou-Soldat80 -{ - Level_limit 80 - Mob 2431 - Type limit - 1 13063 1 0.16 - 2 14206 1 0.14 - 3 50060 1 0.08 - 4 27987 1 0.1 - 5 50721 5 1.25 - 6 50725 5 1.25 - 7 70051 1 0.39 - 8 16065 1 0.48 - 9 70031 1 0.01 -} -Group Setaou-J?er82 -{ - Level_limit 80 - Mob 2432 - Type limit - 1 13083 1 0.16 - 2 8005 10 0.94 - 3 8005 20 0.36 - 4 27987 1 0.1 - 5 50722 5 1.25 - 6 50726 5 1.25 - 7 70050 1 0.39 - 8 17104 1 0.22 - 9 70031 1 0.01 -} -Group Setaou-Seherin82 -{ - Level_limit 80 - Mob 2433 - Type limit - 1 13103 1 0.16 - 2 15165 1 0.17 - 3 16203 1 0.11 - 4 17184 1 0.27 - 5 17203 1 0.323 - 6 27987 1 0.1 - 7 50723 5 1.25 - 8 50727 5 1.25 - 9 17105 1 0.34 - 10 70031 1 0.01 -} -Group Setaou-Anf?rer83 -{ - Level_limit 80 - Mob 2434 - Type limit - 1 13123 1 0.16 - 2 14143 1 0.17 - 3 15204 1 0.22 - 4 16184 1 0.11 - 5 50060 1 0.08 - 6 27987 1 0.1 - 7 50724 5 1.25 - 8 50728 5 1.25 - 9 70031 1 0.01 -} -Group Setaou-Soldat84 -{ - Level_limit 80 - Mob 2451 - Type limit - 1 11690 1 0.06 - 2 11691 1 0.05 - 3 13064 1 0.11 - 4 50060 1 0.08 - 5 27987 1 0.1 - 6 50721 5 1.25 - 7 50725 5 1.25 - 8 70031 1 0.01 - 9 71056 1 0.005 -} -Group Setaou-J?er86 -{ - Level_limit 80 - Mob 2452 - Type limit - 1 11490 1 0.06 - 2 11491 1 0.05 - 3 13084 1 0.11 - 4 8005 10 0.94 - 5 8005 20 0.36 - 6 27987 1 0.1 - 7 50009 1 0.34 - 8 50722 5 1.25 - 9 50726 5 1.25 - 10 70031 1 0.01 - 11 71056 1 0.005 -} -Group Setaou-Seherin88 -{ - Level_limit 80 - Mob 2453 - Type limit - 1 11890 1 0.06 - 2 11891 1 0.05 - 3 13104 1 0.11 - 4 16204 1 0.17 - 5 17204 1 0.16 - 6 27987 1 0.1 - 7 50009 1 0.34 - 8 70031 1 0.01 - 9 71056 1 0.005 -} -Group Setaou-Anf?rer90 -{ - Level_limit 80 - Mob 2454 - Type limit - 1 11290 1 0.06 - 2 11291 1 0.05 - 3 13124 1 0.11 - 4 15205 1 0.17 - 5 50060 1 0.08 - 6 50009 1 0.34 - 7 70051 1 0.39 - 8 70050 1 0.39 - 9 70031 1 0.01 - 10 71056 1 0.005 -} ->>>>>>> .r11874 diff --git a/gamefiles/locale/english/mob_drop_item_hector.txt b/gamefiles/locale/english/mob_drop_item_hector.txt deleted file mode 100644 index b33780e..0000000 Binary files a/gamefiles/locale/english/mob_drop_item_hector.txt and /dev/null differ diff --git a/gamefiles/locale/english/ori_to_new_table.txt_bakcup b/gamefiles/locale/english/ori_to_new_table.txt_bakcup deleted file mode 100644 index c9ef833..0000000 --- a/gamefiles/locale/english/ori_to_new_table.txt_bakcup +++ /dev/null @@ -1,88 +0,0 @@ -25041 39001 -70005 39002 -70020 39003 -70024 39004 -70035 39005 -70038 39006 -70039 39007 -71001 39008 -71003 39009 -71014 39010 -71018 39011 -71019 39012 -71020 39013 -71021 39014 -71025 39015 -71026 39016 -71027 39017 -71028 39018 -71029 39019 -71030 39020 -71031 39021 -71032 39022 -71035 39023 -71044 39024 -71045 39025 -71050 39026 -71083 39027 -71084 39028 -71085 39029 -71094 39030 -71101 39031 -71107 39032 -71109 39033 -71110 39034 -71113 39035 -72701 39036 -72723 39037 -72724 39038 -72725 39039 -72727 39040 -72728 39041 -72729 39042 -22010 39043 -30320 39044 -25040 72301 -70003 72302 -70005 72303 -70024 72304 -70026 72305 -70027 72306 -70028 72307 -70035 72308 -70039 72309 -71001 72310 -71020 72311 -71028 72312 -71030 72313 -71032 72314 -27051 27001 -27052 27004 -27053 27100 -27054 27103 -76000 70020 -76001 71002 -76003 71101 -76004 72727 -76005 72727 -76006 27989 -76007 27989 -76008 71004 -76009 71032 -76010 30190 -76011 70003 -76012 71050 -76013 71085 -76014 71084 -76015 70024 -76016 25040 -76017 71014 -76018 71034 -76019 71095 -76020 71035 -76021 72723 -76022 72723 -76023 71151 -76024 71152 -71151 71084 -71152 71085 diff --git a/src/common/length.h b/src/common/length.h index a22cea8..c49d348 100644 --- a/src/common/length.h +++ b/src/common/length.h @@ -664,16 +664,6 @@ enum SPECIAL_EFFECT SE_EQUIP_LOVE_PENDANT, // 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님) } ; -enum ETeenFlags -{ - TEENFLAG_NONE = 0, - TEENFLAG_1HOUR, - TEENFLAG_2HOUR, - TEENFLAG_3HOUR, - TEENFLAG_4HOUR, - TEENFLAG_5HOUR, -}; - #include "item_length.h" // inventory의 position을 나타내는 구조체 diff --git a/src/common/teen_packet.h b/src/common/teen_packet.h deleted file mode 100644 index 0c85886..0000000 --- a/src/common/teen_packet.h +++ /dev/null @@ -1,20 +0,0 @@ -/********************************************************************* - * date : 2007.06.07 - * file : teen_packet.h - * author : mhh - * description : - */ - -#ifndef _teen_packet_h_ -#define _teen_packet_h_ - -#define HEADER_GT_LOGIN 0x10 -#define HEADER_GT_LOGOUT 0x11 - - -#define HEADER_TG_TEEN_NOTICE 0x12 -#define HEADER_TG_FORCE_LOGOUT 0x13 -#define HEADER_TG_LOGIN_NOTICE 0x14 - -#endif /* _teen_packet_h_ */ - diff --git a/src/db/src/Main.cpp b/src/db/src/Main.cpp index 3fdf6d2..add0cba 100644 --- a/src/db/src/Main.cpp +++ b/src/db/src/Main.cpp @@ -126,9 +126,9 @@ void emptybeat(LPHEART heart, int pulse) // int Start() { - if (!CConfig::instance().LoadFile("conf.txt")) + if (!CConfig::instance().LoadFile("db.conf")) { - SPDLOG_ERROR("Loading conf.txt failed."); + SPDLOG_ERROR("Loading db.conf failed."); return false; } diff --git a/src/game/CMakeLists.txt b/src/game/CMakeLists.txt index a9f7d76..12c85b8 100644 --- a/src/game/CMakeLists.txt +++ b/src/game/CMakeLists.txt @@ -30,6 +30,10 @@ target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char) find_package(unofficial-libmysql REQUIRED) target_link_libraries(${PROJECT_NAME} unofficial::libmysql::libmysql) +# Argon2 +find_package(unofficial-argon2 CONFIG REQUIRED) +target_link_libraries(${PROJECT_NAME} unofficial::argon2::libargon2) + # Crypto++ find_package(cryptopp CONFIG REQUIRED) target_link_libraries (${PROJECT_NAME} cryptopp::cryptopp) diff --git a/src/game/src/OXEvent.cpp b/src/game/src/OXEvent.cpp index a63e3ba..2156afb 100644 --- a/src/game/src/OXEvent.cpp +++ b/src/game/src/OXEvent.cpp @@ -215,14 +215,7 @@ EVENTFUNC(oxevent_timer) SendNoticeMap(LC_TEXT("No (X)"), OXEVENT_MAP_INDEX, true); } - if (LC_IsJapan()) - { - SendNoticeMap("??????X??O??????????B", OXEVENT_MAP_INDEX, true); - } - else - { - SendNoticeMap(LC_TEXT("In 5 sec. everyone who gave an incorrect answer will be removed."), OXEVENT_MAP_INDEX, true); - } + SendNoticeMap(LC_TEXT("In 5 sec. everyone who gave an incorrect answer will be removed."), OXEVENT_MAP_INDEX, true); flag++; return PASSES_PER_SEC(5); diff --git a/src/game/src/arena.cpp b/src/game/src/arena.cpp index 60f7e9a..e3172bd 100644 --- a/src/game/src/arena.cpp +++ b/src/game/src/arena.cpp @@ -1097,38 +1097,3 @@ bool CArena::RegisterObserverPtr(LPCHARACTER pChar) return true; } -bool CArenaManager::IsLimitedItem( int lMapIndex, DWORD dwVnum ) -{ - if ( IsArenaMap( lMapIndex ) == true ) - { - if ( LC_IsCanada() == true ) - { - switch ( dwVnum ) - { - case 50020: - case 50021: - case 50022: - case 50801: - case 50802: - case 50813: - case 50814: - case 50817: - case 50818: - case 50819: - case 50820: - case 50821: - case 50822: - case 50823: - case 50824: - case 50825: - case 50826: - case 71044: - case 71055: - return true; - } - } - } - - return false; -} - diff --git a/src/game/src/arena.h b/src/game/src/arena.h index 7d683d8..833655a 100644 --- a/src/game/src/arena.h +++ b/src/game/src/arena.h @@ -131,8 +131,6 @@ class CArenaManager : public singleton bool IsArenaMap(DWORD dwMapIndex); MEMBER_IDENTITY IsMember(DWORD dwMapIndex, DWORD PID); - - bool IsLimitedItem( int lMapIndex, DWORD dwVnum ); }; #endif /*__CLASS_ARENA_MANAGER__*/ diff --git a/src/game/src/battle.cpp b/src/game/src/battle.cpp index 5430d96..d30fd28 100644 --- a/src/game/src/battle.cpp +++ b/src/game/src/battle.cpp @@ -205,25 +205,14 @@ int CalcMagicDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim) float CalcAttackRating(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, bool bIgnoreTargetRating) { - int iARSrc; - int iERSrc; + int attacker_dx = pkAttacker->GetPolymorphPoint(POINT_DX); + int attacker_lv = pkAttacker->GetLevel(); - if (LC_IsYMIR()) // 천마 - { - iARSrc = std::min(90, pkAttacker->GetPolymorphPoint(POINT_DX)); - iERSrc = std::min(90, pkVictim->GetPolymorphPoint(POINT_DX)); - } - else - { - int attacker_dx = pkAttacker->GetPolymorphPoint(POINT_DX); - int attacker_lv = pkAttacker->GetLevel(); + int victim_dx = pkVictim->GetPolymorphPoint(POINT_DX); + int victim_lv = pkAttacker->GetLevel(); - int victim_dx = pkVictim->GetPolymorphPoint(POINT_DX); - int victim_lv = pkAttacker->GetLevel(); - - iARSrc = std::min(90, (attacker_dx * 4 + attacker_lv * 2) / 6); - iERSrc = std::min(90, (victim_dx * 4 + victim_lv * 2) / 6); - } + int iARSrc = std::min(90, (attacker_dx * 4 + attacker_lv * 2) / 6); + int iERSrc = std::min(90, (victim_dx * 4 + victim_lv * 2) / 6); float fAR = ((float) iARSrc + 210.0f) / 300.0f; // fAR = 0.7 ~ 1.0 diff --git a/src/game/src/char.cpp b/src/game/src/char.cpp index 1fd2070..ae92060 100644 --- a/src/game/src/char.cpp +++ b/src/game/src/char.cpp @@ -1,6 +1,5 @@ #include "stdafx.h" -#include #include #include "char.h" @@ -598,7 +597,6 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE if (m_stShopSign.length() == 0) return; - if (LC_IsCanada() == false) { if (CBanwordManager::instance().CheckString(m_stShopSign.c_str(), m_stShopSign.length())) { @@ -714,8 +712,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE RemoveAffect(AFFECT_MOUNT); RemoveAffect(AFFECT_MOUNT_BONUS); } - //if (!LC_IsNewCIBN()) - SetPolymorph(30000, true); + SetPolymorph(30000, true); } @@ -735,8 +732,7 @@ void CHARACTER::CloseMyShop() PacketAround(&p, sizeof(p)); - //if (!LC_IsNewCIBN()) - SetPolymorph(GetJob(), true); + SetPolymorph(GetJob(), true); } } @@ -861,47 +857,24 @@ void CHARACTER::EncodeInsertPacket(LPENTITY entity) addPacket.dwMountVnum = GetMountVnum(); addPacket.bEmpire = m_bEmpire; - if (IsPC() == true && (LC_IsEurope() == true || LC_IsCanada() == true || LC_IsSingapore() == true)) + if (IsPC() == true) { addPacket.dwLevel = GetLevel(); } - else - { - addPacket.dwLevel = 0; - } - if (false) - { - LPCHARACTER ch = (LPCHARACTER) entity; + strlcpy(addPacket.name, GetName(), sizeof(addPacket.name)); - if (GetEmpire() == ch->GetEmpire() || ch->GetGMLevel() > GM_PLAYER || m_bCharType == CHAR_TYPE_NPC) - { - goto show_all_info; - } - else - { - memset(addPacket.name, 0, CHARACTER_NAME_MAX_LEN); - addPacket.dwGuildID = 0; - addPacket.sAlignment = 0; - } + if (GetGuild() != NULL) + { + addPacket.dwGuildID = GetGuild()->GetID(); } else { - show_all_info: - strlcpy(addPacket.name, GetName(), sizeof(addPacket.name)); - - if (GetGuild() != NULL) - { - addPacket.dwGuildID = GetGuild()->GetID(); - } - else - { - addPacket.dwGuildID = 0; - } - - addPacket.sAlignment = m_iAlignment / 10; + addPacket.dwGuildID = 0; } + addPacket.sAlignment = m_iAlignment / 10; + d->Packet(&addPacket, sizeof(TPacketGCCharacterAdditionalInfo)); } @@ -1302,12 +1275,6 @@ void CHARACTER::Disconnect(const char * c_pszReason) LogManager::instance().CharLog(this, 0, "LOGOUT", buf); - if (LC_IsYMIR() || LC_IsKorea() || LC_IsBrazil()) - { - int playTime = GetRealPoint(POINT_PLAYTIME) - m_dwLoginPlayTime; - LogManager::instance().LoginLog(false, GetDesc()->GetAccountTable().id, GetPlayerID(), GetLevel(), GetJob(), playTime); - } - if (m_pWarMap) SetWarMap(NULL); @@ -1356,24 +1323,6 @@ void CHARACTER::Disconnect(const char * c_pszReason) MessengerManager::instance().Logout(GetName()); - if (g_TeenDesc) - { - int offset = 0; - char buf[245] = {0}; - - buf[0] = HEADER_GT_LOGOUT; - offset += 1; - - memset(buf+offset, 0x00, 2); - offset += 2; - - TAccountTable &acc_table = GetDesc()->GetAccountTable(); - memcpy(buf+offset, &acc_table.id, 4); - offset += 4; - - g_TeenDesc->Packet(buf, offset); - } - if (GetDesc()) { GetDesc()->BindCharacter(NULL); @@ -1880,10 +1829,7 @@ void CHARACTER::SetProto(const CMob * pkMob) if (GetRaceNum() == xmas::MOB_SANTA_VNUM) { SetPoint(POINT_ATT_GRADE_BONUS, 10); - if (g_iUseLocale) - SetPoint(POINT_DEF_GRADE_BONUS, 6); - else - SetPoint(POINT_DEF_GRADE_BONUS, 15); + SetPoint(POINT_DEF_GRADE_BONUS, 6); //산타용 //m_dwPlayStartTime = get_dword_time() + 10 * 60 * 1000; @@ -2146,15 +2092,8 @@ void CHARACTER::ComputeBattlePoints() iArmor += GetPoint(POINT_PARTY_DEFENDER_BONUS); // INTERNATIONAL_VERSION - if (LC_IsYMIR()) - { - PointChange(POINT_DEF_GRADE, iShowDef + iArmor); - } - else - { - PointChange(POINT_DEF_GRADE, iDef + iArmor); - PointChange(POINT_CLIENT_DEF_GRADE, (iShowDef + iArmor) - GetPoint(POINT_DEF_GRADE)); - } + PointChange(POINT_DEF_GRADE, iDef + iArmor); + PointChange(POINT_CLIENT_DEF_GRADE, (iShowDef + iArmor) - GetPoint(POINT_DEF_GRADE)); // END_OF_INTERNATIONAL_VERSION PointChange(POINT_MAGIC_ATT_GRADE, GetLevel() * 2 + GetPoint(POINT_IQ) * 2 + GetPoint(POINT_MAGIC_ATT_GRADE_BONUS)); @@ -3020,25 +2959,6 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast DWORD exp = GetExp(); DWORD next_exp = GetNextExp(); - // 청소년보호 - if (LC_IsNewCIBN()) - { - if (IsOverTime(OT_NONE)) - { - SPDLOG_TRACE(" {} = NONE", GetName()); - } - else if (IsOverTime(OT_3HOUR)) - { - amount = (amount / 2); - SPDLOG_TRACE(" {} = 3HOUR", GetName()); - } - else if (IsOverTime(OT_5HOUR)) - { - amount = 0; - SPDLOG_TRACE(" {} = 5HOUR", GetName()); - } - } - // exp가 0 이하로 가지 않도록 한다 if (amount < 0 && exp < -amount) { @@ -3294,25 +3214,6 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast return; } - // 청소년보호 - if (LC_IsNewCIBN() && amount > 0) - { - if (IsOverTime(OT_NONE)) - { - SPDLOG_TRACE(" {} = NONE", GetName()); - } - else if (IsOverTime(OT_3HOUR)) - { - amount = (amount / 2); - SPDLOG_TRACE(" {} = 3HOUR", GetName()); - } - else if (IsOverTime(OT_5HOUR)) - { - amount = 0; - SPDLOG_TRACE(" {} = 5HOUR", GetName()); - } - } - SetGold(GetGold() + amount); val = GetGold(); } @@ -4646,17 +4547,9 @@ CHARACTER::PartyJoinErrCode CHARACTER::IsPartyJoinableCondition(const LPCHARACTE static bool __party_can_join_by_level(LPCHARACTER leader, LPCHARACTER quest) { + //TODO: make the group level limit configurable int level_limit = 30; - if (LC_IsCanada()) - level_limit = 15; - else if (LC_IsBrazil() == true) - { - level_limit = 10; - } - else - level_limit = 30; - return (abs(leader->GetLevel() - quest->GetLevel()) <= level_limit); } @@ -4881,22 +4774,6 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser) } } - // 청소년은 퀘스트 못함 - if (LC_IsNewCIBN()) - { - if (pkChrCauser->IsOverTime(OT_3HOUR)) - { - SPDLOG_DEBUG("Teen OverTime : name = {}, hour = {})", pkChrCauser->GetName(), 3); - return; - } - else if (pkChrCauser->IsOverTime(OT_5HOUR)) - { - SPDLOG_DEBUG("Teen OverTime : name = {}, hour = {})", pkChrCauser->GetName(), 5); - return; - } - } - - pkChrCauser->SetQuestNPCID(GetVID()); if (quest::CQuestManager::instance().Click(pkChrCauser->GetPlayerID(), this)) @@ -5225,12 +5102,9 @@ bool CHARACTER::WarpSet(int x, int y, int lPrivateMapIndex) GetDesc()->Packet(&p, sizeof(TPacketGCWarp)); - //if (!LC_IsNewCIBN()) - { - char buf[256]; - snprintf(buf, sizeof(buf), "%s MapIdx %d DestMapIdx%d DestX%d DestY%d Empire%d", GetName(), GetMapIndex(), lPrivateMapIndex, x, y, GetEmpire()); - LogManager::instance().CharLog(this, 0, "WARP", buf); - } + char buf[256]; + snprintf(buf, sizeof(buf), "%s MapIdx %d DestMapIdx%d DestX%d DestY%d Empire%d", GetName(), GetMapIndex(), lPrivateMapIndex, x, y, GetEmpire()); + LogManager::instance().CharLog(this, 0, "WARP", buf); return true; } @@ -5695,10 +5569,7 @@ bool CHARACTER::BuildUpdatePartyPacket(TPacketGCPartyUpdate & out) if (l && DISTANCE_APPROX(GetX() - l->GetX(), GetY() - l->GetY()) < PARTY_DEFAULT_RANGE) { - if (g_iUseLocale) - out.affects[0] = GetParty()->GetPartyBonusExpPercent(); - else - out.affects[0] = GetParty()->GetExpBonusPercent(); + out.affects[0] = GetParty()->GetPartyBonusExpPercent(); out.affects[1] = GetPoint(POINT_PARTY_ATTACKER_BONUS); out.affects[2] = GetPoint(POINT_PARTY_TANKER_BONUS); out.affects[3] = GetPoint(POINT_PARTY_BUFFER_BONUS); @@ -6925,18 +6796,6 @@ EVENTFUNC(check_speedhack_event) { // write hack log LogManager::instance().SpeedHackLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(), ch->m_speed_hack_count); - - if (false == LC_IsEurope()) - { - // close connection - LPDESC desc = ch->GetDesc(); - - if (desc) - { - DESC_MANAGER::instance().DestroyDesc(desc); - return 0; - } - } } ch->m_speed_hack_count = 0; diff --git a/src/game/src/char_affect.cpp b/src/game/src/char_affect.cpp index ec775cc..cd5cb4c 100644 --- a/src/game/src/char_affect.cpp +++ b/src/game/src/char_affect.cpp @@ -99,16 +99,7 @@ bool CHARACTER::UpdateAffect() } else { - int iVal = 0; - - if (LC_IsYMIR()) - { - iVal = std::min(GetPoint(POINT_HP_RECOVERY), GetMaxHP() * 9 / 100); - } - else - { - iVal = std::min(GetPoint(POINT_HP_RECOVERY), GetMaxHP() * 7 / 100); - } + int iVal = std::min(GetPoint(POINT_HP_RECOVERY), GetMaxHP() * 7 / 100);; PointChange(POINT_HP, iVal); PointChange(POINT_HP_RECOVERY, -iVal); @@ -121,12 +112,7 @@ bool CHARACTER::UpdateAffect() PointChange(POINT_SP_RECOVERY, -GetPoint(POINT_SP_RECOVERY)); else { - int iVal; - - if (!g_iUseLocale) - iVal = std::min(GetPoint(POINT_SP_RECOVERY), GetMaxSP() * 7 / 100); - else - iVal = std::min(GetPoint(POINT_SP_RECOVERY), GetMaxSP() * 7 / 100); + int iVal = std::min(GetPoint(POINT_SP_RECOVERY), GetMaxSP() * 7 / 100); PointChange(POINT_SP, iVal); PointChange(POINT_SP_RECOVERY, -iVal); diff --git a/src/game/src/char_battle.cpp b/src/game/src/char_battle.cpp index c91f6ac..a7979cb 100644 --- a/src/game/src/char_battle.cpp +++ b/src/game/src/char_battle.cpp @@ -302,17 +302,7 @@ void CHARACTER::DeathPenalty(BYTE bTown) REMOVE_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_DEATH_PENALTY); // NO_DEATH_PENALTY_BUG_FIX - if (LC_IsYMIR()) // 천마 버전에서는 언제나 용신의 가호 아이템을 체크한다. - { - if (FindAffect(AFFECT_NO_DEATH_PENALTY)) - { - SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName()); - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not lose any Experience because of the Blessing of the Dragon God.")); - RemoveAffect(AFFECT_NO_DEATH_PENALTY); - return; - } - } - else if (!bTown) // 국제 버전에서는 제자리 부활시만 용신의 가호를 사용한다. (마을 복귀시는 경험치 패널티 없음) + if (!bTown) // 국제 버전에서는 제자리 부활시만 용신의 가호를 사용한다. (마을 복귀시는 경험치 패널티 없음) { if (FindAffect(AFFECT_NO_DEATH_PENALTY)) { @@ -326,32 +316,11 @@ void CHARACTER::DeathPenalty(BYTE bTown) int iLoss = ((GetNextExp() * aiExpLossPercents[std::clamp(GetLevel(), 1, PLAYER_EXP_TABLE_MAX)]) / 100); - if (true == LC_IsYMIR()) - { - if (PLAYER_EXP_TABLE_MAX < GetLevel()) - { - iLoss = std::min(500000, iLoss); - } - else - { - iLoss = std::min(200000, iLoss); - } - } - else if (true == LC_IsEurope()) - { - iLoss = std::min(800000, iLoss); - } + iLoss = std::min(800000, iLoss); if (bTown) { - if (g_iUseLocale) - { iLoss = 0; - } - else - { - iLoss -= iLoss / 3; - } } if (IsEquipUniqueItem(UNIQUE_ITEM_TEARDROP_OF_GODNESS)) @@ -681,7 +650,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker) int iSplitCount; - if (iGold >= 3 && !LC_IsYMIR()) + if (iGold >= 3) iSplitCount = Random::get(1, 3); else if (GetMobRank() >= MOB_RANK_BOSS) { @@ -977,11 +946,8 @@ void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller) if (GetMyShop()) return; - if (false == LC_IsYMIR()) - { - if (GetLevel() < 50) - return; - } + if (GetLevel() < 50) + return; if (CBattleArena::instance().IsBattleArenaMap(GetMapIndex()) == true) { @@ -1321,19 +1287,16 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead) { int iNoPenaltyProb = 0; - if (g_iUseLocale) - { - if (pkKiller->GetAlignment() >= 0) // 1/3 percent down - iNoPenaltyProb = 33; - else // 4/5 percent down - iNoPenaltyProb = 20; - } + if (pkKiller->GetAlignment() >= 0) // 1/3 percent down + iNoPenaltyProb = 33; + else // 4/5 percent down + iNoPenaltyProb = 20; if (Random::get(1, 100) < iNoPenaltyProb) pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not drop any Item(s) as you are protected by the Dragon God.")); else { - if (g_iUseLocale && pkKiller->GetParty()) + if (pkKiller->GetParty()) { FPartyAlignmentCompute f(-20000, pkKiller->GetX(), pkKiller->GetY()); pkKiller->GetParty()->ForEachOnlineMember(f); @@ -1348,8 +1311,6 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead) pkKiller->GetParty()->ForEachOnlineMember(f); } } - else - pkKiller->UpdateAlignment(-20000); } } @@ -2070,14 +2031,6 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu int lMapIndex = GetMapIndex(); int iMapEmpire = SECTREE_MANAGER::instance().GetEmpireFromMapIndex(lMapIndex); - if (LC_IsYMIR() == true) - { - if (iEmpire && iMapEmpire && iEmpire != iMapEmpire) - { - dam += (dam * 30) / 100; - } - } - if (pAttacker->IsPC()) { iEmpire = pAttacker->GetEmpire(); @@ -2087,22 +2040,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu // 다른 제국 사람인 경우 데미지 10% 감소 if (iEmpire && iMapEmpire && iEmpire != iMapEmpire) { - int percent = 10; - - if (184 <= lMapIndex && lMapIndex <= 189) - { - if (LC_IsYMIR() == true) - percent = 7; - else - percent = 9; - } - else - { - if (LC_IsYMIR() == true) - percent = 8; - else - percent = 9; - } + const int percent = 9; dam = dam * percent / 10; } @@ -2177,15 +2115,6 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu } } - // ------------------------ - // 독일 프리미엄 모드 - // ----------------------- - if (LC_IsGermany() && pAttacker && pAttacker->IsPC()) - { - int iDmgPct = CHARACTER_MANAGER::instance().GetUserDamageRate(pAttacker); - dam = dam * iDmgPct / 100; - } - // STONE SKIN : 피해 반으로 감소 if (IsMonster() && IsStoneSkinner()) { @@ -2381,7 +2310,6 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp) } // 아이템 몰 판매 경험치 보너스 - if (LC_IsHongKong() || LC_IsEurope() || LC_IsCanada()) { // 아이템 몰: 경험치 결제 if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0) @@ -2397,38 +2325,6 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp) // 결혼 보너스 iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100; } - else if (/*LC_IsNewCIBN() || */LC_IsBrazil()) - { - // 아이템 몰: 경험치 결제 - if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0) - { - iExp += iExp; - } - - if (to->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_EXP) == true) - { - iExp += iExp; - } - - // 결혼 보너스 - iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100; - } - else - { - // 아이템 몰: 경험치 결제 - if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0) - { - iExp += (iExp * 20 / 100); - } - - if (to->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_EXP) == true) - { - iExp += (iExp * 20 / 100); - } - - // 결혼 보너스 - iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100; - } iExp += (iExp * to->GetPoint(POINT_RAMADAN_CANDY_BONUS_EXP)/100); iExp += (iExp * to->GetPoint(POINT_MALL_EXPBONUS)/100); @@ -2502,11 +2398,7 @@ namespace NPartyExpDistribute { if (DISTANCE_APPROX(ch->GetX() - x, ch->GetY() - y) <= PARTY_DEFAULT_RANGE) { - if (LC_IsYMIR()) - total += ch->GetLevel(); - else - total += party_exp_distribute_table[ch->GetLevel()]; - + total += party_exp_distribute_table[ch->GetLevel()]; ++member_count; } } @@ -2537,10 +2429,7 @@ namespace NPartyExpDistribute switch (m_iMode) { case PARTY_EXP_DISTRIBUTION_NON_PARITY: - if (LC_IsYMIR()) - iExp2 = (DWORD) ((_iExp * ch->GetLevel()) / total); - else - iExp2 = (DWORD) (_iExp * (float) party_exp_distribute_table[ch->GetLevel()] / total); + iExp2 = (DWORD) (_iExp * (float) party_exp_distribute_table[ch->GetLevel()] / total); break; case PARTY_EXP_DISTRIBUTION_PARITY: @@ -3293,7 +3182,7 @@ void CHARACTER::UpdateKillerMode() if (!IsKillerMode()) return; - int iKillerSeconds = ! LC_IsYMIR() ? 30 : 60; + int iKillerSeconds = 30; if (thecore_pulse() - m_iKillerModePulse >= PASSES_PER_SEC(iKillerSeconds)) SetKillerMode(false); diff --git a/src/game/src/char_horse.cpp b/src/game/src/char_horse.cpp index 05317a7..258d268 100644 --- a/src/game/src/char_horse.cpp +++ b/src/game/src/char_horse.cpp @@ -36,11 +36,6 @@ bool CHARACTER::StartRiding() return false; } - if (LC_IsCanada() == true) - { - if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true) - return false; - } DWORD dwMountVnum = m_chHorse ? m_chHorse->GetRaceNum() : GetMyHorseVnum(); diff --git a/src/game/src/char_item.cpp b/src/game/src/char_item.cpp index 3b149c8..995a8ee 100644 --- a/src/game/src/char_item.cpp +++ b/src/game/src/char_item.cpp @@ -146,24 +146,6 @@ bool IS_SUMMONABLE_ZONE(int map_index) return true; } -bool IS_BOTARYABLE_ZONE(int nMapIndex) -{ - if (LC_IsYMIR() == false && LC_IsKorea() == false) return true; - - switch (nMapIndex) - { - case 1 : - case 3 : - case 21 : - case 23 : - case 41 : - case 43 : - return true; - } - - return false; -} - // item socket 이 프로토타입과 같은지 체크 -- by mhh static bool FN_check_item_socket(LPITEM item) { @@ -861,26 +843,6 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly) return false; } - // Check level limit in korea only - if (!g_iUseLocale) - { - for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i) - { - int limit = pProto->aLimits[i].lValue; - - switch (pProto->aLimits[i].bType) - { - case LIMIT_LEVEL: - if (GetLevel() < limit) - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item.")); - return false; - } - break; - } - } - } - // REFINE_COST if (GetGold() < cost) { @@ -1066,26 +1028,6 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item) return false; } - // Check level limit in korea only - if (!g_iUseLocale) - { - for (int i = 0; i < ITEM_LIMIT_MAX_NUM; ++i) - { - int limit = pProto->aLimits[i].lValue; - - switch (pProto->aLimits[i].bType) - { - case LIMIT_LEVEL: - if (GetLevel() < limit) - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item.")); - return false; - } - break; - } - } - } - if (GetGold() < prt->cost) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item.")); @@ -1126,16 +1068,10 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item) if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL) { - if (LC_IsYMIR() == true || LC_IsKorea() == true) - success_prob = hyuniron_prob_euckr[std::clamp(item->GetRefineLevel(), 0, 8)]; - else success_prob = hyuniron_prob[std::clamp(item->GetRefineLevel(), 0, 8)]; } else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL) { - if (LC_IsYMIR() == true || LC_IsKorea() == true) - success_prob = yagong_prob_euckr[std::clamp(item->GetRefineLevel(), 0, 8)]; - else success_prob = yagong_prob[std::clamp(item->GetRefineLevel(), 0, 8)]; } else @@ -1696,12 +1632,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) SPDLOG_TRACE("USE_ITEM {}, Inven {}, Cell {}, ItemType {}, SubType {}", item->GetName(), bDestInven, wDestCell, item->GetType(), item->GetSubType()); - if ( CArenaManager::instance().IsLimitedItem( GetMapIndex(), item->GetVnum() ) == true ) - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel.")); - return false; - } - // 아이템 최초 사용 이후부터는 사용하지 않아도 시간이 차감되는 방식 처리. if (-1 != iLimitRealtimeStartFirstUseFlagIndex) { @@ -1854,21 +1784,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) switch (item->GetVnum()) { case 71049: // 비단보따리 - if (LC_IsYMIR() == true || LC_IsKorea() == true) - { - if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true) - { - UseSilkBotary(); - } - else - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't open a personal shop in this region")); - } - } - else - { - UseSilkBotary(); - } + UseSilkBotary(); break; } } @@ -2026,15 +1942,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) std::vector item_gets; int count = 0; - if (dwBoxVnum == 50033 && LC_IsYMIR()) // 알수없는 상자 - { - if (GetLevel() < 15) - { - ChatPacket(CHAT_TYPE_INFO, "Not available at level 15 and below."); - return false; - } - } - if( (dwBoxVnum > 51500 && dwBoxVnum < 52000) || (dwBoxVnum >= 50255 && dwBoxVnum <= 50260) ) // 용혼원석들 { if( !(this->DragonSoul_IsQualified()) ) @@ -2148,10 +2055,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) if (distribution_test_server) iReadDelay /= 3; - //한국 본섭의 경우에는 시간을 24시간 고정 - if (LC_IsKorea()) - iReadDelay = 86400; - SetSkillNextReadTime(dwVnum, get_global_time() + iReadDelay); } } @@ -2546,7 +2449,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) DWORD count; int prob; DWORD vnum; - } b1[MAX_BAG_INFO] = + } bi[MAX_BAG_INFO] = { { 1000, 302, 1 }, { 10, 150, 27002 }, @@ -2576,42 +2479,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) { 1, 1, 11882 }, }; - struct LuckyBagInfo b2[MAX_BAG_INFO] = - { - { 1000, 302, 1 }, - { 10, 150, 27002 }, - { 10, 75, 27002 }, - { 10, 100, 27005 }, - { 10, 50, 27005 }, - { 10, 80, 27001 }, - { 10, 50, 27002 }, - { 10, 80, 27004 }, - { 10, 50, 27005 }, - { 1, 10, 50300 }, - { 1, 6, 92 }, - { 1, 2, 132 }, - { 1, 6, 1052 }, - { 1, 2, 1092 }, - { 1, 6, 2082 }, - { 1, 2, 2122 }, - { 1, 6, 3082 }, - { 1, 2, 3122 }, - { 1, 6, 5052 }, - { 1, 2, 5082 }, - { 1, 6, 7082 }, - { 1, 2, 7122 }, - { 1, 1, 11282 }, - { 1, 1, 11482 }, - { 1, 1, 11682 }, - { 1, 1, 11882 }, - }; - - LuckyBagInfo * bi = NULL; - if (LC_IsHongKong()) - bi = b2; - else - bi = b1; - int pct = Random::get(1, 1000); int i; @@ -2970,7 +2837,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) 95, 97, 99 }; - const int * prob_table = !g_iUseLocale ? prob_table_euckr : prob_table_gb2312; + const int * prob_table = prob_table_gb2312; if (r <= prob_table[0]) { @@ -3012,21 +2879,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) break; case 50200: // 보따리 - if (LC_IsYMIR() == true || LC_IsKorea() == true) - { - if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true) - { - __OpenPrivateShop(); - } - else - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't open a personal shop in this region")); - } - } - else - { - __OpenPrivateShop(); - } + __OpenPrivateShop(); break; case fishing::FISH_MIND_PILL_VNUM: @@ -3803,10 +3656,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) case 71051 : // 진재가 { - // 유럽, 싱가폴, 베트남 진재가 사용금지 - if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) - return false; - LPITEM item2; if (!IsValidItemPosition(DestCell) || !(item2 = GetInventoryItem(wDestCell))) @@ -3850,10 +3699,6 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) case 71052 : // 진재경 { - // 유럽, 싱가폴, 베트남 진재가 사용금지 - if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam()) - return false; - LPITEM item2; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) @@ -5354,11 +5199,6 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) SPDLOG_TRACE("[DROP_ITEM] drop item count == 0"); return false; } - - // check non-split items for china - //if (LC_IsNewCIBN()) - // if (item->GetVnum() == 71095 || item->GetVnum() == 71050 || item->GetVnum() == 70038) - // return false; item->SetCount(item->GetCount() - bCount); ITEM_MANAGER::instance().FlushDelayedSave(item); @@ -5377,11 +5217,6 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount) if (pkItemToDrop->AddToGround(GetMapIndex(), pxPos)) { - // 한국에는 아이템을 버리고 복구해달라는 진상유저들이 많아서 - // 아이템을 바닥에 버릴 시 속성로그를 남긴다. - if (LC_IsYMIR()) - item->AttrLog(); - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in 5 minutes.")); pkItemToDrop->StartDestroyEvent(); @@ -5426,32 +5261,12 @@ bool CHARACTER::DropGold(int gold) //Motion(MOTION_PICKUP); PointChange(POINT_GOLD, -gold, true); - // 브라질에 돈이 없어진다는 버그가 있는데, - // 가능한 시나리오 중에 하나는, - // 메크로나, 핵을 써서 1000원 이하의 돈을 계속 버려 골드를 0으로 만들고, - // 돈이 없어졌다고 복구 신청하는 것일 수도 있다. - // 따라서 그런 경우를 잡기 위해 낮은 수치의 골드에 대해서도 로그를 남김. - if (LC_IsBrazil() == true) - { - if (gold >= 213) - LogManager::instance().CharLog(this, gold, "DROP_GOLD", ""); - } - else - { - if (gold > 1000) // 천원 이상만 기록한다. - LogManager::instance().CharLog(this, gold, "DROP_GOLD", ""); - } - - if (false == LC_IsBrazil()) - { - item->StartDestroyEvent(150); - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in %d minutes."), 150/60); - } - else - { - item->StartDestroyEvent(60); - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in %d minutes."), 1); - } + + if (gold > 1000) // 천원 이상만 기록한다. + LogManager::instance().CharLog(this, gold, "DROP_GOLD", ""); + + item->StartDestroyEvent(150); + ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in %d minutes."), 150/60); } Save(); @@ -5579,15 +5394,6 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count) } else if (count < item->GetCount()) { - //check non-split items - //if (LC_IsNewCIBN()) - //{ - // if (item->GetVnum() == 71095 || item->GetVnum() == 71050 || item->GetVnum() == 70038) - // { - // return false; - // } - //} - SPDLOG_DEBUG("{}: ITEM_SPLIT {} (window: {}, cell : {}) -> (window:{}, cell {}) count {}", GetName(), item->GetName(), Cell.window_type, Cell.cell, DestCell.window_type, DestCell.cell, count); @@ -5707,21 +5513,8 @@ void CHARACTER::GiveGold(int iAmount) { PointChange(POINT_GOLD, iAmount, true); - // 브라질에 돈이 없어진다는 버그가 있는데, - // 가능한 시나리오 중에 하나는, - // 메크로나, 핵을 써서 1000원 이하의 돈을 계속 버려 골드를 0으로 만들고, - // 돈이 없어졌다고 복구 신청하는 것일 수도 있다. - // 따라서 그런 경우를 잡기 위해 낮은 수치의 골드에 대해서도 로그를 남김. - if (LC_IsBrazil() == true) - { - if (iAmount >= 213) - LogManager::instance().CharLog(this, iAmount, "GET_GOLD", ""); - } - else - { - if (iAmount > 1000) // 천원 이상만 기록한다. - LogManager::instance().CharLog(this, iAmount, "GET_GOLD", ""); - } + if (iAmount > 1000) // 천원 이상만 기록한다. + LogManager::instance().CharLog(this, iAmount, "GET_GOLD", ""); } } @@ -7150,16 +6943,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item) int iDuration = GetSkillLevel(POLYMORPH_SKILL_ID) == 0 ? 5 : (5 + (5 + GetSkillLevel(POLYMORPH_SKILL_ID)/40 * 25)); iDuration *= 60; - DWORD dwBonus = 0; - - if (true == LC_IsYMIR() || true == LC_IsKorea()) - { - dwBonus = GetSkillLevel(POLYMORPH_SKILL_ID) + 60; - } - else - { - dwBonus = (2 + GetSkillLevel(POLYMORPH_SKILL_ID)/40) * 100; - } + DWORD dwBonus = (2 + GetSkillLevel(POLYMORPH_SKILL_ID)/40) * 100; AddAffect(AFFECT_POLYMORPH, POINT_POLYMORPH, dwVnum, AFF_POLYMORPH, iDuration, 0, true); AddAffect(AFFECT_POLYMORPH, POINT_ATT_BONUS, dwBonus, AFF_POLYMORPH, iDuration, 0, false); diff --git a/src/game/src/char_manager.cpp b/src/game/src/char_manager.cpp index 7724f2f..f475753 100644 --- a/src/game/src/char_manager.cpp +++ b/src/game/src/char_manager.cpp @@ -923,21 +923,6 @@ LPCHARACTER CHARACTER_MANAGER::FindSpecifyPC(unsigned int uiJobFlag, int lMapInd int CHARACTER_MANAGER::GetMobItemRate(LPCHARACTER ch) { - //PREVENT_TOXICATION_FOR_CHINA - if ( LC_IsNewCIBN() ) - { - if ( ch->IsOverTime( OT_3HOUR ) ) - { - if (ch && ch->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0) - return m_iMobItemRatePremium/2; - return m_iMobItemRate/2; - } - else if ( ch->IsOverTime( OT_5HOUR ) ) - { - return 0; - } - } - //END_PREVENT_TOXICATION_FOR_CHINA if (ch && ch->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0) return m_iMobItemRatePremium; return m_iMobItemRate; @@ -953,21 +938,6 @@ int CHARACTER_MANAGER::GetMobGoldAmountRate(LPCHARACTER ch) if ( !ch ) return m_iMobGoldAmountRate; - //PREVENT_TOXICATION_FOR_CHINA - if ( LC_IsNewCIBN() ) - { - if ( ch->IsOverTime( OT_3HOUR ) ) - { - if (ch && ch->GetPremiumRemainSeconds(PREMIUM_GOLD) > 0) - return m_iMobGoldAmountRatePremium/2; - return m_iMobGoldAmountRate/2; - } - else if ( ch->IsOverTime( OT_5HOUR ) ) - { - return 0; - } - } - //END_PREVENT_TOXICATION_FOR_CHINA if (ch && ch->GetPremiumRemainSeconds(PREMIUM_GOLD) > 0) return m_iMobGoldAmountRatePremium; return m_iMobGoldAmountRate; @@ -977,22 +947,6 @@ int CHARACTER_MANAGER::GetMobGoldDropRate(LPCHARACTER ch) { if ( !ch ) return m_iMobGoldDropRate; - - //PREVENT_TOXICATION_FOR_CHINA - if ( LC_IsNewCIBN() ) - { - if ( ch->IsOverTime( OT_3HOUR ) ) - { - if (ch && ch->GetPremiumRemainSeconds(PREMIUM_GOLD) > 0) - return m_iMobGoldDropRatePremium/2; - return m_iMobGoldDropRate/2; - } - else if ( ch->IsOverTime( OT_5HOUR ) ) - { - return 0; - } - } - //END_PREVENT_TOXICATION_FOR_CHINA if (ch && ch->GetPremiumRemainSeconds(PREMIUM_GOLD) > 0) return m_iMobGoldDropRatePremium; @@ -1004,19 +958,6 @@ int CHARACTER_MANAGER::GetMobExpRate(LPCHARACTER ch) if ( !ch ) return m_iMobExpRate; - if ( LC_IsNewCIBN() ) - { - if ( ch->IsOverTime( OT_3HOUR ) ) - { - if (ch && ch->GetPremiumRemainSeconds(PREMIUM_EXP) > 0) - return m_iMobExpRatePremium/2; - return m_iMobExpRate/2; - } - else if ( ch->IsOverTime( OT_5HOUR ) ) - { - return 0; - } - } if (ch && ch->GetPremiumRemainSeconds(PREMIUM_EXP) > 0) return m_iMobExpRatePremium; return m_iMobExpRate; diff --git a/src/game/src/char_resist.cpp b/src/game/src/char_resist.cpp index 4eb411e..5baa0cc 100644 --- a/src/game/src/char_resist.cpp +++ b/src/game/src/char_resist.cpp @@ -18,10 +18,7 @@ int GetPoisonDamageRate(LPCHARACTER ch) if (ch->IsPC()) { - if (LC_IsYMIR()) - iRate = 40; - else - iRate = 50; + iRate = 50; } else iRate = poison_damage_rate[ch->GetMobRank()]; diff --git a/src/game/src/char_skill.cpp b/src/game/src/char_skill.cpp index bdbdcf5..6fa3643 100644 --- a/src/game/src/char_skill.cpp +++ b/src/game/src/char_skill.cpp @@ -331,28 +331,6 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum) int iBookCount = aiGrandMasterSkillBookCountForLevelUp[idx]; - if ( LC_IsYMIR() == true || LC_IsKorea() == true ) - { - const int aiGrandMasterSkillBookCountForLevelUp_euckr[10] = - { - 3, 3, 4, 5, 6, 7, 8, 9, 10, 15, - }; - - const int aiGrandMasterSkillBookMinCount_euckr[10] = - { - 1, 1, 1, 2, 2, 2, 3, 3, 4, 5 - }; - - const int aiGrandMasterSkillBookMaxCount_euckr[10] = - { - 5, 7, 9, 11, 13, 15, 18, 23, 25, 30 - }; - - iMinReadCount = aiGrandMasterSkillBookMinCount_euckr[idx]; - iMaxReadCount = aiGrandMasterSkillBookMaxCount_euckr[idx]; - iBookCount = aiGrandMasterSkillBookCountForLevelUp_euckr[idx]; - } - if (FindAffect(AFFECT_SKILL_BOOK_BONUS)) { if (iBookCount&1) @@ -400,18 +378,6 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum) } // END_OF_ADD_GRANDMASTER_SKILL -static bool FN_should_check_exp(LPCHARACTER ch) -{ - if (LC_IsCanada()) - return ch->GetLevel() < gPlayerMaxLevel; - - if (!LC_IsYMIR()) - return true; - - return false; -} - - bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb) { const CSkillProto* pkSk = CSkillManager::instance().Get(dwSkillVnum); @@ -425,17 +391,12 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb) return false; } - DWORD need_exp = 0; + DWORD need_exp = 20000; - if (FN_should_check_exp(this)) + if ( GetExp() < need_exp ) { - need_exp = 20000; - - if ( GetExp() < need_exp ) - { - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot read this due to your lack of experience.")); - return false; - } + ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot read this due to your lack of experience.")); + return false; } // bType이 0이면 처음부터 책으로 수련 가능 @@ -501,103 +462,69 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb) SPDLOG_DEBUG("LearnSkillByBook {} table idx {} value {}", GetName(), idx, aiSkillBookCountForLevelUp[idx]); - if (!LC_IsYMIR()) + int need_bookcount = GetSkillLevel(dwSkillVnum) - 20; + + PointChange(POINT_EXP, -need_exp); + + quest::CQuestManager& q = quest::CQuestManager::instance(); + quest::PC* pPC = q.GetPC(GetPlayerID()); + + if (pPC) { - int need_bookcount = GetSkillLevel(dwSkillVnum) - 20; + char flag[128+1]; + memset(flag, 0, sizeof(flag)); + snprintf(flag, sizeof(flag), "traning_master_skill.%u.read_count", dwSkillVnum); - PointChange(POINT_EXP, -need_exp); - - quest::CQuestManager& q = quest::CQuestManager::instance(); - quest::PC* pPC = q.GetPC(GetPlayerID()); - - if (pPC) - { - char flag[128+1]; - memset(flag, 0, sizeof(flag)); - snprintf(flag, sizeof(flag), "traning_master_skill.%u.read_count", dwSkillVnum); - - int read_count = pPC->GetFlag(flag); - int percent = 65; - - if (FindAffect(AFFECT_SKILL_BOOK_BONUS)) - { - percent = 0; - RemoveAffect(AFFECT_SKILL_BOOK_BONUS); - } - - if (Random::get(1, 100) > percent) - { - // 책읽기에 성공 - if (read_count >= need_bookcount) - { - SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK); - pPC->SetFlag(flag, 0); - - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully finished your training with the Book.")); - LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", ""); - return true; - } - else - { - pPC->SetFlag(flag, read_count + 1); - - switch (Random::get(1, 3)) - { - case 1: - ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I'm making progress, but I still haven't understood everything.")); - break; - - case 2: - ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("These instructions are difficult to understand. I have to carry on studying.")); - break; - - case 3: - default: - ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I understand this chapter. But I've got to carry on working hard.")); - break; - } - - ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to read %d more skill books to improve this skill."), need_bookcount - read_count); - return true; - } - } - } - else - { - // 사용자의 퀘스트 정보 로드 실패 - } - } - // INTERNATIONAL_VERSION - else - { - int iBookCount = 99; - - if (LC_IsYMIR() == true) - { - const int aiSkillBookCountForLevelUp_euckr[10] = - { - 2, 2, 3, 3, 3, 3, 3, 3, 4, 5 - }; - - iBookCount = aiSkillBookCountForLevelUp_euckr[idx]; - } - else - iBookCount = aiSkillBookCountForLevelUp[idx]; + int read_count = pPC->GetFlag(flag); + int percent = 65; if (FindAffect(AFFECT_SKILL_BOOK_BONUS)) { - if (iBookCount & 1) // iBookCount % 2 - iBookCount = iBookCount / 2 + 1; - else - iBookCount = iBookCount / 2; - + percent = 0; RemoveAffect(AFFECT_SKILL_BOOK_BONUS); } - if (Random::get(1, iBookCount) == 2) - SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK); + if (Random::get(1, 100) > percent) + { + // 책읽기에 성공 + if (read_count >= need_bookcount) + { + SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK); + pPC->SetFlag(flag, 0); + + ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully finished your training with the Book.")); + LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", ""); + return true; + } + else + { + pPC->SetFlag(flag, read_count + 1); + + switch (Random::get(1, 3)) + { + case 1: + ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I'm making progress, but I still haven't understood everything.")); + break; + + case 2: + ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("These instructions are difficult to understand. I have to carry on studying.")); + break; + + case 3: + default: + ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I understand this chapter. But I've got to carry on working hard.")); + break; + } + + ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to read %d more skill books to improve this skill."), need_bookcount - read_count); + return true; + } + } + } + else + { + // 사용자의 퀘스트 정보 로드 실패 } - // END_OF_INTERNATIONAL_VERSION } if (bLastLevel != GetSkillLevel(dwSkillVnum)) @@ -1197,10 +1124,6 @@ struct FuncSplashDamage if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER) { - //if (!g_iUseLocale) - if ( LC_IsYMIR() ) - adjust += 1.0f; - else adjust += 0.5f; } } @@ -1208,14 +1131,11 @@ struct FuncSplashDamage { adjust = 1.0f; - if ( !LC_IsYMIR() ) - { - if (bUnderEunhyung) - adjust += 0.5f; + if (bUnderEunhyung) + adjust += 0.5f; - if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER) - adjust += 0.5f; - } + if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER) + adjust += 0.5f; } iAmount = (int) (iAmount * adjust); @@ -1226,11 +1146,7 @@ struct FuncSplashDamage if (m_pkChr->GetWear(WEAR_WEAPON) && m_pkChr->GetWear(WEAR_WEAPON)->GetSubType() == WEAPON_DAGGER) { - //if (!g_iUseLocale) - if ( LC_IsYMIR() ) - adjust = 1.4f; - else - adjust = 1.35f; + adjust = 1.35f; } iAmount = (int) (iAmount * adjust); @@ -1480,11 +1396,7 @@ struct FuncSplashDamage if (m_pkChr->IsPC() && m_pkChr->m_SkillUseInfo[m_pkSk->dwVnum].GetMainTargetVID() == (DWORD) pkChrVictim->GetVID()) { - //if (!g_iUseLocale) - if (LC_IsYMIR()) - SkillAttackAffect(pkChrVictim, 1000, IMMUNE_STUN, m_pkSk->dwVnum, POINT_NONE, 0, AFF_STUN, 3, m_pkSk->szName); - else - SkillAttackAffect(pkChrVictim, 1000, IMMUNE_STUN, m_pkSk->dwVnum, POINT_NONE, 0, AFF_STUN, 4, m_pkSk->szName); + SkillAttackAffect(pkChrVictim, 1000, IMMUNE_STUN, m_pkSk->dwVnum, POINT_NONE, 0, AFF_STUN, 4, m_pkSk->szName); } else { @@ -2277,17 +2189,10 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel DWORD affact_flag = pkSk->dwAffectFlag; // ADD_GRANDMASTER_SKILL - //if (g_iUseLocale) - if ( !LC_IsYMIR() ) { if ((pkSk->dwVnum == SKILL_CHUNKEON && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_GRAND_MASTER)) affact_flag = AFF_CHEONGEUN_WITH_FALL; } - else - { - if ((pkSk->dwVnum == SKILL_CHUNKEON && GetUsedSkillMasterType(pkSk->dwVnum) < SKILL_MASTER)) - affact_flag = AFF_CHEONGEUN_WITH_FALL; - } // END_OF_ADD_GRANDMASTER_SKILL pkVictim->AddAffect(pkSk->dwVnum, diff --git a/src/game/src/char_state.cpp b/src/game/src/char_state.cpp index 38e8310..854ac9c 100644 --- a/src/game/src/char_state.cpp +++ b/src/game/src/char_state.cpp @@ -555,11 +555,7 @@ void CHARACTER::__StateIdle_NPC() { // 이곳입니다. M2_DESTROY_CHARACTER(this); - int iNextSpawnDelay = 0; - if (LC_IsYMIR()) - iNextSpawnDelay = 20 * 60; - else - iNextSpawnDelay = 50 * 60; + int iNextSpawnDelay = 50 * 60; xmas::SpawnSanta(lNextMapIndex, iNextSpawnDelay); } diff --git a/src/game/src/cmd.cpp b/src/game/src/cmd.cpp index 5284a53..cbf67e5 100644 --- a/src/game/src/cmd.cpp +++ b/src/game/src/cmd.cpp @@ -711,13 +711,10 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len) { if (cmd_info[icmd].gm_level >= GM_LOW_WIZARD) { - if (LC_IsEurope() == true || /*LC_IsNewCIBN() == true || */LC_IsCanada() == true || LC_IsBrazil() == true || LC_IsSingapore() == true ) - { - char buf[1024]; - snprintf( buf, sizeof(buf), "%s", argument ); + char buf[1024]; + snprintf( buf, sizeof(buf), "%s", argument ); - LogManager::instance().GMCommandLog(ch->GetPlayerID(), ch->GetName(), ch->GetDesc()->GetHostName(), g_bChannel, buf); - } + LogManager::instance().GMCommandLog(ch->GetPlayerID(), ch->GetName(), ch->GetDesc()->GetHostName(), g_bChannel, buf); } } } diff --git a/src/game/src/cmd_general.cpp b/src/game/src/cmd_general.cpp index da851b0..9af2aba 100644 --- a/src/game/src/cmd_general.cpp +++ b/src/game/src/cmd_general.cpp @@ -271,23 +271,20 @@ EVENTFUNC(timed_event) { ch->m_pkTimedEvent = NULL; - if (true == LC_IsEurope() || true == LC_IsYMIR() || true == LC_IsKorea()) + switch (info->subcmd) { - switch (info->subcmd) - { - case SCMD_LOGOUT: - case SCMD_QUIT: - case SCMD_PHASE_SELECT: - { - TPacketNeedLoginLogInfo acc_info; - acc_info.dwPlayerID = ch->GetDesc()->GetAccountTable().id; + case SCMD_LOGOUT: + case SCMD_QUIT: + case SCMD_PHASE_SELECT: + { + TPacketNeedLoginLogInfo acc_info; + acc_info.dwPlayerID = ch->GetDesc()->GetAccountTable().id; - db_clientdesc->DBPacket( HEADER_GD_VALID_LOGOUT, 0, &acc_info, sizeof(acc_info) ); + db_clientdesc->DBPacket( HEADER_GD_VALID_LOGOUT, 0, &acc_info, sizeof(acc_info) ); - LogManager::instance().DetailLoginLog( false, ch ); - } - break; - } + LogManager::instance().DetailLoginLog( false, ch ); + } + break; } switch (info->subcmd) @@ -359,7 +356,7 @@ ACMD(do_cmd) int nExitLimitTime = 10; - if (ch->IsHack(false, true, nExitLimitTime) && + if (ch->IsHack(true, true, nExitLimitTime) && false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()) && (!ch->GetWarMap() || ch->GetWarMap()->GetType() == GUILD_WAR_TYPE_FLAG)) { @@ -903,21 +900,6 @@ ACMD(do_safebox_change_password) return; } - if (LC_IsBrazil() == true) - { - for (int i = 0; i < 6; ++i) - { - if (arg2[i] == '\0') - break; - - if (isalpha(arg2[i]) == false) - { - ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The password must be alphanumeric.")); - return; - } - } - } - TSafeboxChangePasswordPacket p; p.dwID = ch->GetDesc()->GetAccountTable().id; @@ -1443,9 +1425,6 @@ ACMD(do_party_request_deny) ACMD(do_monarch_warpto) { - if (true == LC_IsYMIR() || true == LC_IsKorea()) - return; - if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire())) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor.")); @@ -1559,9 +1538,6 @@ ACMD(do_monarch_warpto) ACMD(do_monarch_transfer) { - if (true == LC_IsYMIR() || true == LC_IsKorea()) - return; - char arg1[256]; one_argument(argument, arg1, sizeof(arg1)); @@ -1845,15 +1821,6 @@ ACMD(do_monarch_mob) BYTE pcEmpire = ch->GetEmpire(); BYTE mapEmpire = SECTREE_MANAGER::instance().GetEmpireFromMapIndex(ch->GetMapIndex()); - if (LC_IsYMIR() == true || LC_IsKorea() == true) - { - if (mapEmpire != pcEmpire && mapEmpire != 0) - { - ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This feature is only available in your home territory")); - return; - } - } - // 군주 몹 소환 비용 const int SummonPrice = 5000000; @@ -2264,92 +2231,15 @@ ACMD(do_cube) ACMD(do_in_game_mall) { - if (LC_IsYMIR() == true || LC_IsKorea() == true) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://metin2.co.kr/04_mall/mall/login.htm"); - return; - } + char country_code[3]; + country_code[0] = 'd'; country_code[1] = 'e'; country_code[2] = '\0'; - if (true == LC_IsTaiwan()) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://203.69.141.203/mall/mall/item_main.htm"); - return; - } + char buf[512+1]; - // ㅠ_ㅠ 쾌도서버 아이템몰 URL 하드코딩 추가 - if (true == LC_IsWE_Korea()) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://metin2.co.kr/50_we_mall/mall/login.htm"); - return; - } + snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d", + g_strWebMallURL.c_str(), ch->GetPlayerID(), country_code, g_server_id); - if (LC_IsJapan() == true) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://mt2.oge.jp/itemmall/itemList.php"); - return; - } - - if (LC_IsNewCIBN() == true && test_server) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://218.99.6.51/04_mall/mall/login.htm"); - return; - } - - if (LC_IsSingapore() == true) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://www.metin2.sg/ishop.php"); - return; - } - - /* - if (LC_IsCanada() == true) - { - ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://mall.z8games.com/mall_entry.aspx?tb=m2"); - return; - }*/ - - if (LC_IsEurope() == true) - { - char country_code[3]; - - switch (LC_GetLocalType()) - { - case LC_GERMANY: country_code[0] = 'd'; country_code[1] = 'e'; country_code[2] = '\0'; break; - case LC_FRANCE: country_code[0] = 'f'; country_code[1] = 'r'; country_code[2] = '\0'; break; - case LC_ITALY: country_code[0] = 'i'; country_code[1] = 't'; country_code[2] = '\0'; break; - case LC_SPAIN: country_code[0] = 'e'; country_code[1] = 's'; country_code[2] = '\0'; break; - case LC_UK: country_code[0] = 'e'; country_code[1] = 'n'; country_code[2] = '\0'; break; - case LC_TURKEY: country_code[0] = 't'; country_code[1] = 'r'; country_code[2] = '\0'; break; - case LC_POLAND: country_code[0] = 'p'; country_code[1] = 'l'; country_code[2] = '\0'; break; - case LC_PORTUGAL: country_code[0] = 'p'; country_code[1] = 't'; country_code[2] = '\0'; break; - case LC_GREEK: country_code[0] = 'g'; country_code[1] = 'r'; country_code[2] = '\0'; break; - case LC_RUSSIA: country_code[0] = 'r'; country_code[1] = 'u'; country_code[2] = '\0'; break; - case LC_DENMARK: country_code[0] = 'd'; country_code[1] = 'k'; country_code[2] = '\0'; break; - case LC_BULGARIA: country_code[0] = 'b'; country_code[1] = 'g'; country_code[2] = '\0'; break; - case LC_CROATIA: country_code[0] = 'h'; country_code[1] = 'r'; country_code[2] = '\0'; break; - case LC_MEXICO: country_code[0] = 'm'; country_code[1] = 'x'; country_code[2] = '\0'; break; - case LC_ARABIA: country_code[0] = 'a'; country_code[1] = 'e'; country_code[2] = '\0'; break; - case LC_CZECH: country_code[0] = 'c'; country_code[1] = 'z'; country_code[2] = '\0'; break; - case LC_ROMANIA: country_code[0] = 'r'; country_code[1] = 'o'; country_code[2] = '\0'; break; - case LC_HUNGARY: country_code[0] = 'h'; country_code[1] = 'u'; country_code[2] = '\0'; break; - case LC_NETHERLANDS: country_code[0] = 'n'; country_code[1] = 'l'; country_code[2] = '\0'; break; - case LC_USA: country_code[0] = 'u'; country_code[1] = 's'; country_code[2] = '\0'; break; - case LC_CANADA: country_code[0] = 'c'; country_code[1] = 'a'; country_code[2] = '\0'; break; - default: - if (test_server == true) - { - country_code[0] = 'd'; country_code[1] = 'e'; country_code[2] = '\0'; - } - break; - } - - char buf[512+1]; - - snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d", - g_strWebMallURL.c_str(), ch->GetPlayerID(), country_code, g_server_id); - - ch->ChatPacket(CHAT_TYPE_COMMAND, buf); - } + ch->ChatPacket(CHAT_TYPE_COMMAND, buf); } // 주사위 diff --git a/src/game/src/cmd_gm.cpp b/src/game/src/cmd_gm.cpp index 0a8ba5c..ef48beb 100644 --- a/src/game/src/cmd_gm.cpp +++ b/src/game/src/cmd_gm.cpp @@ -3267,17 +3267,8 @@ ACMD(do_duel) if (set > 5) set = 5; if (!str_to_number(minute, szMinute)) - { - // 캐나다는 기본 10분. - if (LC_IsCanada() == true) - { - minute = 10; - } - else - { - minute = 5; - } - } + minute = 5; + if (minute < 5) minute = 5; diff --git a/src/game/src/config.cpp b/src/game/src/config.cpp index 209a20e..6391930 100644 --- a/src/game/src/config.cpp +++ b/src/game/src/config.cpp @@ -37,9 +37,6 @@ WORD p2p_port = 50900; char db_addr[ADDRESS_MAX_LEN + 1]; WORD db_port = 0; - -char teen_addr[ADDRESS_MAX_LEN + 1] = {0}; -WORD teen_port = 0; // End of networking BYTE g_bChannel = 0; @@ -90,9 +87,10 @@ static std::set s_set_dwProcessCRC; string g_stHostname = ""; string g_table_postfix = ""; -string g_stQuestDir = "./quest"; -//string g_stQuestObjectDir = "./quest/object"; -string g_stDefaultQuestObjectDir = "./quest/object"; +string g_stBasePath = "data"; +string g_stMapPath = "data/map"; +string g_stQuestDir = "data/quest"; +string g_stDefaultQuestObjectDir = "data/quest/object"; std::set g_setQuestObjectDir; std::vector g_stAdminPageIP; @@ -300,7 +298,7 @@ void config_init(const string& st_localeServiceName) string st_configFileName; st_configFileName.reserve(32); - st_configFileName = "CONFIG"; + st_configFileName = "game.conf"; if (!st_localeServiceName.empty()) { @@ -530,17 +528,15 @@ void config_init(const string& st_localeServiceName) SPDLOG_INFO("CommonSQL connected"); - // 로케일 정보를 가져오자 - // <경고> 쿼리문에 절대 조건문(WHERE) 달지 마세요. (다른 지역에서 문제가 생길수 있습니다) + // Initialize locale settings { - char szQuery[512]; - snprintf(szQuery, sizeof(szQuery), "SELECT mKey, mValue FROM locale"); + std::string szQuery = "SELECT mKey, mValue FROM locale WHERE mKey = 'LANGUAGE'"; - std::unique_ptr pMsg(AccountDB::instance().DirectQuery(szQuery)); + std::unique_ptr pMsg(AccountDB::instance().DirectQuery(szQuery.c_str())); if (pMsg->Get()->uiNumRows == 0) { - SPDLOG_CRITICAL("COMMON_SQL: DirectQuery failed: {}", szQuery); + SPDLOG_CRITICAL("COMMON_SQL: LANGUAGE setting was not found in database!"); exit(EXIT_FAILURE); } @@ -549,7 +545,7 @@ void config_init(const string& st_localeServiceName) while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult))) { // 로케일 세팅 - if (strcasecmp(row[0], "LOCALE") == 0) + if (strcasecmp(row[0], "LANGUAGE") == 0) { if (LocaleService_Init(row[1]) == false) { @@ -797,19 +793,27 @@ void config_init(const string& st_localeServiceName) TOKEN("test_server") { - printf("-----------------------------------------------\n"); - printf("TEST_SERVER\n"); - printf("-----------------------------------------------\n"); str_to_number(test_server, value_string); + + if (test_server) { + printf("-----------------------------------------------\n"); + printf("TEST_SERVER\n"); + printf("-----------------------------------------------\n"); + } + continue; } TOKEN("speed_server") { - printf("-----------------------------------------------\n"); - printf("SPEED_SERVER\n"); - printf("-----------------------------------------------\n"); str_to_number(speed_server, value_string); + + if (speed_server) { + printf("-----------------------------------------------\n"); + printf("SPEED_SERVER\n"); + printf("-----------------------------------------------\n"); + } + continue; } #ifdef __AUCTION__ @@ -909,7 +913,11 @@ void config_init(const string& st_localeServiceName) two_arguments(value_string, szIP, sizeof(szIP), szPort, sizeof(szPort)); - if (!*szIP || (!*szPort && strcasecmp(szIP, "master"))) + // Skip if arguments are empty + if (!*szIP) + continue; + + if (!*szPort && strcasecmp(szIP, "master")) { SPDLOG_CRITICAL("AUTH_SERVER: syntax error: "); exit(EXIT_FAILURE); @@ -951,24 +959,6 @@ void config_init(const string& st_localeServiceName) } } - TOKEN("teen_addr") - { - strlcpy(teen_addr, value_string, sizeof(teen_addr)); - - for (int n =0; n < ADDRESS_MAX_LEN; ++n) - { - if (teen_addr[n] == ' ') - teen_addr[n] = '\0'; - } - - continue; - } - - TOKEN("teen_port") - { - str_to_number(teen_port, value_string); - } - TOKEN("synchack_limit_count") { str_to_number(g_iSyncHackLimitCount, value_string); @@ -1197,14 +1187,7 @@ bool LoadClientVersion() void CheckClientVersion() { - if (LC_IsEurope()) - { - g_bCheckClientVersion = true; - } - else - { - g_bCheckClientVersion = false; - } + g_bCheckClientVersion = true; const DESC_MANAGER::DESC_SET & set = DESC_MANAGER::instance().GetClientSet(); DESC_MANAGER::DESC_SET::const_iterator it = set.begin(); @@ -1236,8 +1219,7 @@ void LoadStateUserCount() if (!fp) return; - if (!LC_IsHongKong()) - fscanf(fp, " %d %d ", &g_iFullUserCount, &g_iBusyUserCount); + fscanf(fp, " %d %d ", &g_iFullUserCount, &g_iBusyUserCount); fclose(fp); } diff --git a/src/game/src/config.h b/src/game/src/config.h index 0853a37..6d0a264 100644 --- a/src/game/src/config.h +++ b/src/game/src/config.h @@ -20,9 +20,6 @@ extern WORD p2p_port; extern char db_addr[ADDRESS_MAX_LEN + 1]; extern WORD db_port; -extern char teen_addr[ADDRESS_MAX_LEN + 1]; -extern WORD teen_port; - extern int passes_per_sec; extern int save_event_second_cycle; extern int ping_event_second_cycle; @@ -78,8 +75,9 @@ extern std::string g_stClientVersion; extern bool g_bCheckClientVersion; extern void CheckClientVersion(); +extern std::string g_stBasePath; +extern std::string g_stMapPath; extern std::string g_stQuestDir; -//extern std::string g_stQuestObjectDir; extern std::set g_setQuestObjectDir; diff --git a/src/game/src/constants.cpp b/src/game/src/constants.cpp index d2c4e96..d03e04f 100644 --- a/src/game/src/constants.cpp +++ b/src/game/src/constants.cpp @@ -56,137 +56,7 @@ TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM] = { -20, 20, -10, 0 }, // BATTLE_TYPE_SUPER_TANKER, }; -const DWORD * exp_table = NULL; - -const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] = -{ - 0, // 0 - - 100, - 150, - 260, - 380, - 600, - - 1300, - 3300, - 5700, - 8700, - 12800, // 10 - 18000, - 25000, - 36000, - 52000, - 73000, - 100000, - 125000, - 160000, - 220000, - 280000, // 20 - 370000, - 540000, - 670000, - 880000, - 1000000, - - 1237000, - 1418000, - 1624000, - 1857000, - 2122000, // 30 - 2421000, - 2761000, - 3145000, - 3580000, - 4073000, - 4632000, - 5194000, - 5717000, - 6264000, - 6837000, // 40 - 7600000, - 8274000, - 8990000, - 9753000, - 10560000, - 11410000, - 12320000, - 13270000, - 14280000, - 15340000, // 50 - 16870000, - 18960000, - 19980000, - 21420000, - 22930000, - 24530000, - 26200000, - 27960000, - 29800000, - 32780000, // 60 - 36060000, - 39670000, - 43640000, - 48000000, - 52800000, - 58080000, - 63890000, - 70280000, - 77310000, - 85040000, // 70 - 93540000, - 102900000, - 113200000, - 124500000, - 137000000, - 150700000, - 165700000, - 236990000, - 260650000, - 286780000, // 80 - 315380000, - 346970000, - 381680000, - 419770000, - 461760000, - 508040000, - 558740000, - 614640000, - 676130000, - 743730000, // 90 - 1041222000, - 1145344200, - 1259878620, - 1385866482, - 1524453130, - 1676898443, - 1844588288, - 2029047116, - 2100000000, // 99 99레벨일 때 필요경험치 (100레벨이 되기 위한) - 2100000000, // 100 - 2100000000, - 2100000000, - 2100000000, - 2100000000, - 2100000000, // 105 - 2100000000, - 2100000000, - 2100000000, - 2100000000, - 2100000000, // 110 - 2100000000, - 2100000000, - 2100000000, - 2100000000, - 2100000000, // 115 - 2100000000, - 2100000000, - 2100000000, - 2100000000, - 2100000000, // 120 -}; - -const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] = +const DWORD exp_table[PLAYER_EXP_TABLE_MAX + 1] = { 0, // 0 300, @@ -311,137 +181,9 @@ const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] = 2500000000, // 120 }; -const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] = -{ - 300, // 0 - 800, // 1 - 1500, - 2500, - 4300, - 7200, - 11400, - 17000, - 24000, - 33000, - 46000, // 10 - 62000, - 83000, - 111000, - 149000, - 200000, - 268000, - 360000, - 482000, - 647000, - 868000, // 20 - 996000, - 1143000, - 1312000, - 1506000, - 1729000, - 1984000, - 2277000, - 2614000, - 3000000, - 3443000, // 30 - 3952000, - 4536000, - 5206000, - 5975000, - 6858000, - 7730000, - 8504000, - 9307000, - 10140000, - 11330000, // 40 - 12320000, - 13370000, - 14490000, - 15670000, - 16920000, - 18240000, - 19630000, - 21090000, - 22630000, - 24670000, // 50 - 26890000, - 29310000, - 31950000, - 34820000, - 37960000, - 41370000, - 45100000, - 49160000, - 53580000, - 58400000, // 60 - 63660000, - 69390000, - 75630000, - 82440000, - 89860000, - 97950000, - 106760000, - 136370000, - 151800000, - 168300000, // 70 - 250000000, - 340000000, - 450000000, - 570000000, - 690000000, - 810000000, - 912600000, - 1004000000, - 1094000000, - 1182000000, // 80 - 1269000000, - 1354000000, - 1438000000, - 1521000000, - 1603000000, - 1684000000, - 1764000000, - 1844000000, - 1922000000, - 2000000000, // 90 - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, // 99 99레벨일 때 필요경험치 (100레벨이 되기 위한).. 현재 CIBN이 어떻게 운영하고 있는 지 모르니 신규 테이블을 쓰지 않고 기존값 계속 연장 유지 - 2000000000, // 100 - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, // 105 - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, // 110 - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, // 115 - 2000000000, - 2000000000, - 2000000000, - 2000000000, - 2000000000, // 120 -}; - -const int * aiPercentByDeltaLev = NULL; -const int * aiPercentByDeltaLevForBoss = NULL; - // 적과 나와의 레벨차이에 의한 계산에 사용되는 테이블 // MIN(MAX_EXP_DELTA_OF_LEV - 1, (적렙 + 15) - 내렙)) -const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] = +const int aiPercentByDeltaLevForBoss[MAX_EXP_DELTA_OF_LEV] = { 1, // -15 0 3, // -14 1 @@ -478,7 +220,7 @@ const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] = -const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] = +const int aiPercentByDeltaLev[MAX_EXP_DELTA_OF_LEV] = { 1, // -15 0 5, // -14 1 @@ -695,33 +437,8 @@ Coord aArroundCoords[ARROUND_COORD_MAX_NUM] = { -707, 707 }, }; -const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] = -{ - 0, - 15000UL, - 45000UL, - 90000UL, - 160000UL, - 235000UL, - 325000UL, - 430000UL, - 550000UL, - 685000UL, - 835000UL, - 1000000UL, - 1500000UL, - 2100000UL, - 2800000UL, - 3600000UL, - 4500000UL, - 6500000UL, - 8000000UL, - 10000000UL, - 42000000UL -}; - // INTERNATIONAL_VERSION 길드경험치 -const DWORD guild_exp_table2[GUILD_MAX_LEVEL+1] = +const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] = { 0, 6000UL, @@ -979,43 +696,14 @@ const int aiGrandMasterSkillBookMaxCount[10] = }; // END_OF_ADD_GRANDMASTER_SKILL -const int CHN_aiPartyBonusExpPercentByMemberCount[9] = +// UPGRADE_PARTY_BONUS +const int aiPartyBonusExpPercentByMemberCount[9] = { 0, 0, 12, 18, 26, 40, 53, 70, 100 }; - - -// UPGRADE_PARTY_BONUS -const int KOR_aiPartyBonusExpPercentByMemberCount[9] = -{ - 0, - 0, - 30, // 66% * 2 - 100 - 60, // 53% * 3 - 100 - 75, // 44% * 4 - 100 - 90, // 38% * 5 - 100 - 105, // 34% * 6 - 100 - 110, // 30% * 7 - 100 - 140, // 30% * 8 - 100 -}; - -const int KOR_aiUniqueItemPartyBonusExpPercentByMemberCount[9] = -{ - 0, - 0, - 15*2, - 14*3, - 13*4, - 12*5, - 11*6, - 10*7, - 10*8, -}; // END_OF_UPGRADE_PARTY_BONUS -const int * aiChainLightningCountBySkillLevel = NULL; - -const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL+1] = +const int aiChainLightningCountBySkillLevel[SKILL_MAX_LEVEL+1] = { 0, // 0 2, // 1 diff --git a/src/game/src/constants.h b/src/game/src/constants.h index d3bf88f..b570bdf 100644 --- a/src/game/src/constants.h +++ b/src/game/src/constants.h @@ -97,23 +97,16 @@ extern TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM]; extern const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1]; -extern const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1]; -extern const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]; -extern const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1]; - -extern const DWORD* exp_table; +extern const DWORD exp_table[PLAYER_EXP_TABLE_MAX + 1]; extern const DWORD guild_exp_table[GUILD_MAX_LEVEL + 1]; -extern const DWORD guild_exp_table2[GUILD_MAX_LEVEL + 1]; #define MAX_EXP_DELTA_OF_LEV 31 #define PERCENT_LVDELTA(me, victim) aiPercentByDeltaLev[std::clamp((victim + 15) - me, 0, MAX_EXP_DELTA_OF_LEV - 1)] #define PERCENT_LVDELTA_BOSS(me, victim) aiPercentByDeltaLevForBoss[std::clamp((victim + 15) - me, 0, MAX_EXP_DELTA_OF_LEV - 1)] #define CALCULATE_VALUE_LVDELTA(me, victim, val) ((val * PERCENT_LVDELTA(me, victim)) / 100) -extern const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV]; -extern const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV]; -extern const int * aiPercentByDeltaLev; -extern const int * aiPercentByDeltaLevForBoss; +extern const int aiPercentByDeltaLev[MAX_EXP_DELTA_OF_LEV]; +extern const int aiPercentByDeltaLevForBoss[MAX_EXP_DELTA_OF_LEV]; #define ARROUND_COORD_MAX_NUM 161 extern Coord aArroundCoords[ARROUND_COORD_MAX_NUM]; @@ -144,7 +137,7 @@ extern const int aiSkillBookCountForLevelUp[10]; extern const int aiGrandMasterSkillBookCountForLevelUp[10]; extern const int aiGrandMasterSkillBookMinCount[10]; extern const int aiGrandMasterSkillBookMaxCount[10]; -extern const int CHN_aiPartyBonusExpPercentByMemberCount[9]; +extern const int aiPartyBonusExpPercentByMemberCount[9]; extern const int KOR_aiPartyBonusExpPercentByMemberCount[9]; extern const int KOR_aiUniqueItemPartyBonusExpPercentByMemberCount[9]; @@ -152,8 +145,7 @@ typedef std::map TItemAttrMap; extern TItemAttrMap g_map_itemAttr; extern TItemAttrMap g_map_itemRare; -extern const int * aiChainLightningCountBySkillLevel; -extern const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL + 1]; +extern const int aiChainLightningCountBySkillLevel[SKILL_MAX_LEVEL + 1]; extern const char * c_apszEmpireNames[EMPIRE_MAX_NUM]; extern const char * c_apszPrivNames[MAX_PRIV_NUM]; diff --git a/src/game/src/db.cpp b/src/game/src/db.cpp index e039e49..540b55a 100644 --- a/src/game/src/db.cpp +++ b/src/game/src/db.cpp @@ -1,21 +1,19 @@ #include "stdafx.h" #include #include +#include #include "db.h" - #include "config.h" #include "desc_client.h" #include "desc_manager.h" #include "char.h" #include "char_manager.h" #include "item.h" -#include "item_manager.h" #include "p2p.h" #include "matrix_card.h" #include "log.h" #include "login_data.h" -#include "locale_service.h" #include "spam.h" extern std::string g_stBlockDate; @@ -275,8 +273,8 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) if (pMsg->Get()->uiNumRows == 0) { - SPDLOG_DEBUG(" NOID"); - LoginFailure(d, "NOID"); + SPDLOG_DEBUG(" WRONGCRD"); + LoginFailure(d, "WRONGCRD"); M2_DELETE(pinfo); } else @@ -284,31 +282,21 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); int col = 0; - // PASSWORD('%s'), password, securitycode, social_id, id, status - char szEncrytPassword[45 + 1]; - char szPassword[45 + 1]; + // password, securitycode, social_id, id, status + char szHashedPassword[128 + 1]; char szMatrixCode[MATRIX_CODE_MAX_LEN + 1]; char szSocialID[SOCIAL_ID_MAX_LEN + 1]; char szStatus[ACCOUNT_STATUS_MAX_LEN + 1]; DWORD dwID = 0; if (!row[col]) - { + { SPDLOG_ERROR("error column {}", col); M2_DELETE(pinfo); - break; + break; } - - strlcpy(szEncrytPassword, row[col++], sizeof(szEncrytPassword)); - if (!row[col]) - { - SPDLOG_ERROR("error column {}", col); - M2_DELETE(pinfo); - break; - } - - strlcpy(szPassword, row[col++], sizeof(szPassword)); + strlcpy(szHashedPassword, row[col++], sizeof(szHashedPassword)); if (!row[col]) { @@ -321,29 +309,29 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) } if (!row[col]) - { + { SPDLOG_ERROR("error column {}", col); M2_DELETE(pinfo); break; - } + } strlcpy(szSocialID, row[col++], sizeof(szSocialID)); if (!row[col]) - { - SPDLOG_ERROR("error column {}", col); - M2_DELETE(pinfo); - break; - } - - str_to_number(dwID, row[col++]); - - if (!row[col]) { - SPDLOG_ERROR("error column {}", col); + SPDLOG_ERROR("error column {}", col); M2_DELETE(pinfo); break; - } + } + + str_to_number(dwID, row[col++]); + + if (!row[col]) + { + SPDLOG_ERROR("error column {}", col); + M2_DELETE(pinfo); + break; + } strlcpy(szStatus, row[col++], sizeof(szStatus)); @@ -355,52 +343,31 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) char szCreateDate[256] = "00000000"; - if (!g_iUseLocale) + str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]); + str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]); + + int retValue = 0; + str_to_number(retValue, row[col]); + + time_t create_time = retValue; + struct tm * tm1; + tm1 = localtime(&create_time); + strftime(szCreateDate, 255, "%Y%m%d", tm1); + + SPDLOG_DEBUG("Create_Time {} {}", retValue, szCreateDate); + SPDLOG_DEBUG("Block Time {} ", strncmp(szCreateDate, g_stBlockDate.c_str(), 8)); + + bool loginStatus = argon2id_verify(szHashedPassword, pinfo->passwd, strlen(pinfo->passwd)) == ARGON2_OK; + + if (!loginStatus) { - str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]); - } - else - { - str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]); - - if (LC_IsEurope() || test_server) - { - int retValue = 0; - str_to_number(retValue, row[col]); - - time_t create_time = retValue; - struct tm * tm1; - tm1 = localtime(&create_time); - strftime(szCreateDate, 255, "%Y%m%d", tm1); - - SPDLOG_DEBUG("Create_Time {} {}", retValue, szCreateDate); - SPDLOG_DEBUG("Block Time {} ", strncmp(szCreateDate, g_stBlockDate.c_str(), 8)); - } - } - - int nPasswordDiff = strcmp(szEncrytPassword, szPassword); - - if (true == LC_IsBrazil()) - { - nPasswordDiff = 0; // 브라질 버전에서는 비밀번호 체크를 하지 않는다. - } - - if (nPasswordDiff) - { - LoginFailure(d, "WRONGPWD"); - SPDLOG_DEBUG(" WRONGPWD"); + LoginFailure(d, "WRONGCRD"); + SPDLOG_DEBUG(" WRONGCRD"); M2_DELETE(pinfo); } else if (bNotAvail) @@ -423,22 +390,20 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) } else { - if (LC_IsEurope()) + //stBlockData >= 0 == 날짜가 BlockDate 보다 미래 + if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0) { - //stBlockData >= 0 == 날짜가 BlockDate 보다 미래 - if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0) - { - LoginFailure(d, "BLKLOGIN"); - SPDLOG_DEBUG(" BLKLOGIN"); - M2_DELETE(pinfo); - break; - } - - char szQuery[1024]; - snprintf(szQuery, sizeof(szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID); - std::unique_ptr msg( DBManager::instance().DirectQuery(szQuery) ); + LoginFailure(d, "BLKLOGIN"); + SPDLOG_DEBUG(" BLKLOGIN"); + M2_DELETE(pinfo); + break; } + char szQuery[1024]; + snprintf(szQuery, sizeof(szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID); + std::unique_ptr msg( DBManager::instance().DirectQuery(szQuery) ); + + TAccountTable & r = d->GetAccountTable(); r.id = dwID; diff --git a/src/game/src/desc.cpp b/src/game/src/desc.cpp index 5dabf35..cf71d43 100644 --- a/src/game/src/desc.cpp +++ b/src/game/src/desc.cpp @@ -48,11 +48,6 @@ void DescWriteHandler(bufferevent *bev, void *ctx) { evbuffer *output = bufferevent_get_output(bev); size_t buf_size = evbuffer_get_length(output); } - else if (g_TeenDesc==d) - { - evbuffer *output = bufferevent_get_output(bev); - size_t buf_size = evbuffer_get_length(output); - } } void DescEventHandler(bufferevent *bev, short events, void *ctx) { diff --git a/src/game/src/desc_client.cpp b/src/game/src/desc_client.cpp index cbb76be..38aa84b 100644 --- a/src/game/src/desc_client.cpp +++ b/src/game/src/desc_client.cpp @@ -14,7 +14,6 @@ LPCLIENT_DESC db_clientdesc = NULL; LPCLIENT_DESC g_pkAuthMasterDesc = NULL; LPCLIENT_DESC g_NetmarbleDBDesc = NULL; -LPCLIENT_DESC g_TeenDesc = NULL; static const char* GetKnownClientDescName(LPCLIENT_DESC desc) { if (desc == db_clientdesc) { @@ -23,9 +22,7 @@ static const char* GetKnownClientDescName(LPCLIENT_DESC desc) { return "g_pkAuthMasterDesc"; } else if (desc == g_NetmarbleDBDesc) { return "g_NetmarbleDBDesc"; - } else if (desc == g_TeenDesc) { - return "g_TeenDesc"; - } + } return "unknown"; } @@ -243,11 +240,6 @@ void CLIENT_DESC::SetPhase(int iPhase) m_pInputProcessor = NULL; break; - case PHASE_TEEN: - m_inputTeen.SetStep(0); - m_pInputProcessor = &m_inputTeen; - break; - } m_iPhase = iPhase; @@ -333,4 +325,4 @@ void CLIENT_DESC::Reset() m_evbase = evbase; m_stHost = host; m_wPort = port; -} \ No newline at end of file +} diff --git a/src/game/src/desc_client.h b/src/game/src/desc_client.h index 03169a1..e8ad34c 100644 --- a/src/game/src/desc_client.h +++ b/src/game/src/desc_client.h @@ -42,13 +42,11 @@ class CLIENT_DESC : public DESC CInputDB m_inputDB; CInputP2P m_inputP2P; - CInputTeen m_inputTeen; }; extern LPCLIENT_DESC db_clientdesc; extern LPCLIENT_DESC g_pkAuthMasterDesc; extern LPCLIENT_DESC g_NetmarbleDBDesc; -extern LPCLIENT_DESC g_TeenDesc; #endif diff --git a/src/game/src/empire_text_convert.cpp b/src/game/src/empire_text_convert.cpp index fd7178c..c5814c5 100644 --- a/src/game/src/empire_text_convert.cpp +++ b/src/game/src/empire_text_convert.cpp @@ -54,35 +54,10 @@ void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct) { if (*pbText & 0x80) { - if (g_iUseLocale) - { - static char s_cChinaTable[][3] = {"\xA1\xF2","\xA3\xA3","\xA3\xA4","\xA1\xF9","\xA1\xF0" }; - int n = Random::get(0, 4); - pbText[0] = s_cChinaTable[n][0]; - pbText[1] = s_cChinaTable[n][1]; - } - else - { - if (pbText[0] >= 0xB0 && pbText[0] <= 0xC8 && pbText[1] >= 0xA1 && pbText[1] <= 0xFE) - { - UINT uHanPos = (pbText[0] - 0xB0) * (0xFE - 0xA1 + 1) + (pbText[1] - 0xA1); - pbText[0] = rkTextConvTable.aacHan[uHanPos][0]; - pbText[1] = rkTextConvTable.aacHan[uHanPos][1]; - } - else if ( pbText[0] == 0xA4 ) - { - if ( pbText[1] >=0xA1 && pbText[1] <= 0xBE ) - { - pbText[0] = rkTextConvTable.aacJaum[pbText[1]-0xA1][0]; - pbText[1] = rkTextConvTable.aacJaum[pbText[1]-0xA1][1]; - } - else if ( pbText[1] >= 0xBF && pbText[1] <= 0xD3 ) - { - pbText[0] = rkTextConvTable.aacMoum[pbText[1]-0xBF][0]; - pbText[1] = rkTextConvTable.aacMoum[pbText[1]-0xBF][1]; - } - } - } + static char s_cChinaTable[][3] = {"\xA1\xF2","\xA3\xA3","\xA3\xA4","\xA1\xF9","\xA1\xF0" }; + int n = Random::get(0, 4); + pbText[0] = s_cChinaTable[n][0]; + pbText[1] = s_cChinaTable[n][1]; ++pbText; --len; diff --git a/src/game/src/exchange.cpp b/src/game/src/exchange.cpp index 9095d41..8707a67 100644 --- a/src/game/src/exchange.cpp +++ b/src/game/src/exchange.cpp @@ -253,13 +253,11 @@ bool CExchange::AddGold(int gold) return false; } - if ( LC_IsCanada() == true || LC_IsEurope() == true ) + if ( m_lGold > 0 ) { - if ( m_lGold > 0 ) - { - return false; - } + return false; } + Accept(false); GetCompany()->Accept(false); diff --git a/src/game/src/fishing.cpp b/src/game/src/fishing.cpp index da7dd92..6ab79c3 100644 --- a/src/game/src/fishing.cpp +++ b/src/game/src/fishing.cpp @@ -387,20 +387,10 @@ int DetermineFish(LPCHARACTER ch) int * p = std::lower_bound(g_prob_accumulate[prob_idx], g_prob_accumulate[prob_idx] + MAX_FISH, rv); int fish_idx = p - g_prob_accumulate[prob_idx]; - //if (!g_iUseLocale) - if ( LC_IsYMIR() ) - { - if (fish_info[fish_idx].vnum >= 70040 && fish_info[fish_idx].vnum <= 70052) - return 0; - } + DWORD vnum = fish_info[fish_idx].vnum; - if (g_iUseLocale) // 중국에서는 금덩어리, 금열쇠, 은열쇠 나오지 않게 함 - { - DWORD vnum = fish_info[fish_idx].vnum; - - if (vnum == 50008 || vnum == 50009 || vnum == 80008) - return 0; - } + if (vnum == 50008 || vnum == 50009 || vnum == 80008) + return 0; return (fish_idx); } @@ -772,11 +762,6 @@ void UseFish(LPCHARACTER ch, LPITEM item) break; case USED_SHELLFISH: // 1 - if ( LC_IsCanada() == true ) - { - if ( Random::get(0, 2) != 2 ) return; - } - ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a Clam inside the Fish.")); ch->AutoGiveItem(SHELLFISH_VNUM); break; diff --git a/src/game/src/gm.cpp b/src/game/src/gm.cpp index 68d0499..bc05cb8 100644 --- a/src/game/src/gm.cpp +++ b/src/game/src/gm.cpp @@ -64,49 +64,16 @@ BYTE gm_new_get_level( const char * name, const char * host, const char* account if (g_map_GM.end() == it) return GM_PLAYER; - // GERMAN_GM_NOT_CHECK_HOST - // 독일 버전은 호스트 체크를 하지 않는다. - if ( LC_IsEurope() && !LC_IsTaiwan() || LC_IsSingapore() ) + if (account) { - if (account) - { - if ( strcmp ( it->second.Info.m_szAccount, account ) != 0 ) + if ( strcmp ( it->second.Info.m_szAccount, account ) != 0 ) { - SPDLOG_DEBUG("GM_NEW_GET_LEVEL : BAD ACCOUNT [ACCOUNT:{}/{}", it->second.Info.m_szAccount, account); - return GM_PLAYER; + SPDLOG_DEBUG("GM_NEW_GET_LEVEL : BAD ACCOUNT [ACCOUNT:{}/{}", it->second.Info.m_szAccount, account); + return GM_PLAYER; } - } - SPDLOG_DEBUG("GM_NEW_GET_LEVEL : FIND ACCOUNT"); - return it->second.Info.m_Authority; } - // END_OF_GERMAN_GM_NOT_CHECK_HOST - else - { - - if ( host ) - { - if ( it->second.pset_Host ) - { - if ( it->second.pset_Host->end() == it->second.pset_Host->find( host ) ) - { - SPDLOG_DEBUG("GM_NEW_GET_LEVEL : BAD HOST IN HOST_LIST"); - return GM_PLAYER; - } - } - else - { - if ( strcmp ( it->second.Info.m_szContactIP, host ) != 0 ) - { - SPDLOG_DEBUG("GM_NEW_GET_LEVEL : BAD HOST IN GMLIST"); - return GM_PLAYER; - } - } - } - SPDLOG_DEBUG("GM_NEW_GET_LEVEL : FIND HOST"); - - return it->second.Info.m_Authority; - } - return GM_PLAYER; + SPDLOG_DEBUG("GM_NEW_GET_LEVEL : FIND ACCOUNT"); + return it->second.Info.m_Authority; } //END_ADMIN_MANAGER diff --git a/src/game/src/guild.cpp b/src/game/src/guild.cpp index 854dca5..254b709 100644 --- a/src/game/src/guild.cpp +++ b/src/game/src/guild.cpp @@ -228,11 +228,6 @@ bool CGuild::RemoveMember(DWORD pid) ch->SetGuild(NULL); } - if ( LC_IsBrazil() == true ) - { - DBManager::instance().Query("REPLACE INTO guild_invite_limit VALUES(%d, %d)", GetID(), get_global_time()); - } - return true; } @@ -1470,14 +1465,7 @@ void CGuild::UpdateSkill(BYTE skill_point, BYTE* skill_levels) static DWORD __guild_levelup_exp(int level) { - if (LC_IsYMIR()) - { - return guild_exp_table[level]; - } - else - { - return guild_exp_table2[level]; - } + return guild_exp_table[level]; } void CGuild::GuildPointChange(BYTE type, int amount, bool save) @@ -1776,19 +1764,6 @@ int CGuild::GetMaxMemberCount() m_iMemberCountBonus = 0; // END_GUILD_IS_FULL_BUG_FIX - if ( LC_IsHongKong() == true ) - { - quest::PC* pPC = quest::CQuestManager::instance().GetPC(GetMasterPID()); - - if ( pPC != NULL ) - { - if ( pPC->GetFlag("guild.is_unlimit_member") == 1 ) - { - return INT_MAX; - } - } - } - return 32 + 2 * (m_data.level-1) + m_iMemberCountBonus; } // END_OF_GUILD_MEMBER_COUNT_BONUS @@ -2086,28 +2061,6 @@ CGuild::GuildJoinErrCode CGuild::VerifyGuildJoinableCondition( const LPCHARACTER { return GERR_GUILD_IS_IN_WAR; } - else if ( LC_IsBrazil() == true ) - { - std::unique_ptr pMsg( DBManager::instance().DirectQuery("SELECT value FROM guild_invite_limit WHERE id=%d", GetID()) ); - - if ( pMsg->Get()->uiNumRows > 0 ) - { - MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); - time_t limit_time=0; - str_to_number( limit_time, row[0] ); - - if ( test_server == true ) - { - limit_time += quest::CQuestManager::instance().GetEventFlag("guild_invite_limit") * 60; - } - else - { - limit_time += quest::CQuestManager::instance().GetEventFlag("guild_invite_limit") * 24 * 60 * 60; - } - - if ( get_global_time() < limit_time ) return GERR_INVITE_LIMIT; - } - } return GERR_NONE; } diff --git a/src/game/src/guild_manager.cpp b/src/game/src/guild_manager.cpp index 8145d09..2212392 100644 --- a/src/game/src/guild_manager.cpp +++ b/src/game/src/guild_manager.cpp @@ -538,12 +538,9 @@ void CGuildManager::DeclareWar(DWORD guild_id1, DWORD guild_id2, BYTE bType) if (g1->DeclareWar(guild_id2, bType, GUILD_WAR_SEND_DECLARE) && g2->DeclareWar(guild_id1, bType, GUILD_WAR_RECV_DECLARE)) { - if (false == LC_IsGermany()) - { - char buf[256]; - snprintf(buf, sizeof(buf), LC_TEXT("The guild %s has declared war on %s!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName()); - SendNotice(buf); - } + char buf[256]; + snprintf(buf, sizeof(buf), LC_TEXT("The guild %s has declared war on %s!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName()); + SendNotice(buf); } } diff --git a/src/game/src/input.h b/src/game/src/input.h index 8f6a237..e660e8a 100644 --- a/src/game/src/input.h +++ b/src/game/src/input.h @@ -13,7 +13,6 @@ enum INPROC_DB, INPROC_P2P, INPROC_AUTH, - INPROC_TEEN, }; void LoginFailure(LPDESC d, const char * c_pszStatus); @@ -335,23 +334,5 @@ class CInputAuth : public CInputProcessor void Login(LPDESC d, const char * c_pData); }; -class CInputTeen : public CInputProcessor -{ - public : - virtual BYTE GetType() { return INPROC_TEEN; } - - void SetStep(int step); - - protected : - virtual bool Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed); - virtual int Analyze(LPDESC d, BYTE bHeader, const char * c_pData) { return 0; }; - - private: - int m_step; - - bool ProcessHandshake(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed); - bool ProcessMain(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed); -}; - #endif /* __INC_METIN_II_GAME_INPUT_PROCESSOR__ */ diff --git a/src/game/src/input_auth.cpp b/src/game/src/input_auth.cpp index 31f7509..d01dad9 100644 --- a/src/game/src/input_auth.cpp +++ b/src/game/src/input_auth.cpp @@ -4,9 +4,6 @@ #include "input.h" #include "desc_client.h" #include "desc_manager.h" -#include "protocol.h" -#include "matrix_card.h" -#include "locale_service.h" #include "db.h" extern time_t get_global_time(); @@ -27,75 +24,12 @@ bool FN_IS_VALID_LOGIN_STRING(const char *str) if (isdigit(*tmp) || isalpha(*tmp)) continue; - // 캐나다는 몇몇 특수문자 허용 - if (LC_IsCanada()) - { - switch (*tmp) - { - case ' ': - case '_': - case '-': - case '.': - case '!': - case '@': - case '#': - case '$': - case '%': - case '^': - case '&': - case '*': - case '(': - case ')': - continue; - } - } - - if (LC_IsYMIR() == true || LC_IsKorea() == true) - { - switch (*tmp) - { - case '-' : - case '_' : - continue; - } - } - - if (LC_IsBrazil() == true) - { - switch (*tmp) - { - case '_' : - case '-' : - case '=' : - continue; - } - } - - if (LC_IsJapan() == true) - { - switch (*tmp) - { - case '-' : - case '_' : - case '@': - case '#': - continue; - } - } - return false; } return true; } -bool Login_IsInChannelService(const char* c_login) -{ - if (c_login[0] == '[') - return true; - return false; -} - CInputAuth::CInputAuth() { } @@ -111,7 +45,7 @@ void CInputAuth::Login(LPDESC d, const char * c_pData) return; } - // string 무결성을 위해 복사 + // Copy for string integrity char login[LOGIN_MAX_LEN + 1]; trim_and_lower(pinfo->login, login, sizeof(login)); @@ -126,7 +60,7 @@ void CInputAuth::Login(LPDESC d, const char * c_pData) { SPDLOG_DEBUG("InputAuth::Login : IS_NOT_VALID_LOGIN_STRING({}) desc {}", login, (void*) get_pointer(d)); - LoginFailure(d, "NOID"); + LoginFailure(d, "WRONGCRD"); return; } @@ -156,47 +90,21 @@ void CInputAuth::Login(LPDESC d, const char * c_pData) TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3; memcpy(p, pinfo, sizeof(TPacketCGLogin3)); - char szPasswd[PASSWD_MAX_LEN * 2 + 1]; - DBManager::instance().EscapeString(szPasswd, sizeof(szPasswd), passwd, strlen(passwd)); - char szLogin[LOGIN_MAX_LEN * 2 + 1]; DBManager::instance().EscapeString(szLogin, sizeof(szLogin), login, strlen(login)); - // CHANNEL_SERVICE_LOGIN - if (Login_IsInChannelService(szLogin)) - { - SPDLOG_DEBUG("ChannelServiceLogin [{}]", szLogin); - - DBManager::instance().ReturnQuery(QID_AUTH_LOGIN, dwKey, p, - "SELECT '%s',password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - - szPasswd, szLogin); - } - // END_OF_CHANNEL_SERVICE_LOGIN - else - { - DBManager::instance().ReturnQuery(QID_AUTH_LOGIN, dwKey, p, - "SELECT PASSWORD('%s'),password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - szPasswd, szLogin); - } + DBManager::instance().ReturnQuery(QID_AUTH_LOGIN, dwKey, p, + "SELECT password,securitycode,social_id,id,status,availDt - NOW() > 0," + "UNIX_TIMESTAMP(silver_expire)," + "UNIX_TIMESTAMP(gold_expire)," + "UNIX_TIMESTAMP(safebox_expire)," + "UNIX_TIMESTAMP(autoloot_expire)," + "UNIX_TIMESTAMP(fish_mind_expire)," + "UNIX_TIMESTAMP(marriage_fast_expire)," + "UNIX_TIMESTAMP(money_drop_rate_expire)," + "UNIX_TIMESTAMP(create_time)" + " FROM account WHERE login='%s'", + szLogin); } int CInputAuth::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) diff --git a/src/game/src/input_db.cpp b/src/game/src/input_db.cpp index 70e4e33..e0d2f07 100644 --- a/src/game/src/input_db.cpp +++ b/src/game/src/input_db.cpp @@ -26,11 +26,9 @@ #include "building.h" #include "login_sim.h" #include "wedding.h" -#include "login_data.h" #include "unique_item.h" #include "monarch.h" -#include "affect.h" #include "castle.h" #include "motion.h" @@ -414,12 +412,6 @@ void CInputDB::PlayerLoad(LPDESC d, const char * data) snprintf(buf, sizeof(buf), "%s %d %d %d %d", ch->GetDesc()->GetHostName(), ch->GetGold(), g_bChannel, ch->GetMapIndex(), ch->GetAlignment()); LogManager::instance().CharLog(ch, 0, "LOGIN", buf); - - if (LC_IsYMIR() || LC_IsKorea() || LC_IsBrazil() || LC_IsJapan()) - { - LogManager::instance().LoginLog(true, - ch->GetDesc()->GetAccountTable().id, ch->GetPlayerID(), ch->GetLevel(), ch->GetJob(), ch->GetRealPoint(POINT_PLAYTIME)); - } } d->SetPhase(PHASE_LOADING); @@ -1962,11 +1954,11 @@ int CInputDB::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) break; case HEADER_DG_LOGIN_NOT_EXIST: - LoginFailure(DESC_MANAGER::instance().FindByHandle(m_dwHandle), "NOID"); + LoginFailure(DESC_MANAGER::instance().FindByHandle(m_dwHandle), "WRONGCRD"); break; case HEADER_DG_LOGIN_WRONG_PASSWD: - LoginFailure(DESC_MANAGER::instance().FindByHandle(m_dwHandle), "WRONGPWD"); + LoginFailure(DESC_MANAGER::instance().FindByHandle(m_dwHandle), "WRONGCRD"); break; case HEADER_DG_LOGIN_ALREADY: @@ -2414,14 +2406,11 @@ void CInputDB::GuildChangeMaster(TPacketChangeGuildMaster* p) void CInputDB::DetailLog(const TPacketNeedLoginLogInfo* info) { - if (true == LC_IsEurope() || true == LC_IsYMIR() || true == LC_IsKorea() ) - { - LPCHARACTER pChar = CHARACTER_MANAGER::instance().FindByPID( info->dwPlayerID ); + LPCHARACTER pChar = CHARACTER_MANAGER::instance().FindByPID( info->dwPlayerID ); - if (NULL != pChar) - { - LogManager::instance().DetailLoginLog(true, pChar); - } + if (NULL != pChar) + { + LogManager::instance().DetailLoginLog(true, pChar); } } diff --git a/src/game/src/input_login.cpp b/src/game/src/input_login.cpp index f6b9ad3..d60747c 100644 --- a/src/game/src/input_login.cpp +++ b/src/game/src/input_login.cpp @@ -1,6 +1,5 @@ #include "stdafx.h" #include "constants.h" -#include #include "config.h" #include "utils.h" #include "input.h" @@ -91,7 +90,7 @@ void CInputLogin::Login(LPDESC d, const char * data) TPacketGCLoginFailure failurePacket; - if (g_iUseLocale && !test_server) + if (!test_server) { failurePacket.header = HEADER_GC_LOGIN_FAILURE; strlcpy(failurePacket.szStatus, "VERSION", sizeof(failurePacket.szStatus)); @@ -431,33 +430,20 @@ void CInputLogin::CharacterCreate(LPDESC d, const char * data) // 사용할 수 없는 이름이거나, 잘못된 평상복이면 생설 실패 if (!check_name(pinfo->name) || pinfo->shape > 1) { - if (LC_IsCanada() == true) - { - TPacketGCCreateFailure pack; - pack.header = HEADER_GC_CHARACTER_CREATE_FAILURE; - pack.bType = 1; - - d->Packet(&pack, sizeof(pack)); - return; - } - d->Packet(&packFailure, sizeof(packFailure)); return; } - if (LC_IsEurope() == true) + const TAccountTable & c_rAccountTable = d->GetAccountTable(); + + if (0 == strcmp(c_rAccountTable.login, pinfo->name)) { - const TAccountTable & c_rAccountTable = d->GetAccountTable(); + TPacketGCCreateFailure pack; + pack.header = HEADER_GC_CHARACTER_CREATE_FAILURE; + pack.bType = 1; - if (0 == strcmp(c_rAccountTable.login, pinfo->name)) - { - TPacketGCCreateFailure pack; - pack.header = HEADER_GC_CHARACTER_CREATE_FAILURE; - pack.bType = 1; - - d->Packet(&pack, sizeof(pack)); - return; - } + d->Packet(&pack, sizeof(pack)); + return; } memset(&player_create_packet, 0, sizeof(TPlayerCreatePacket)); @@ -469,8 +455,6 @@ void CInputLogin::CharacterCreate(LPDESC d, const char * data) return; } - const TAccountTable & c_rAccountTable = d->GetAccountTable(); - trim_and_lower(c_rAccountTable.login, player_create_packet.login, sizeof(player_create_packet.login)); strlcpy(player_create_packet.passwd, c_rAccountTable.passwd, sizeof(player_create_packet.passwd)); @@ -620,52 +604,42 @@ void CInputLogin::Entergame(LPDESC d, const char * data) SPDLOG_DEBUG("PREMIUM: {} type {} {}min", ch->GetName(), i, remain); } - if (LC_IsEurope()) + if (g_bCheckClientVersion) { - if (g_bCheckClientVersion) + int version = atoi(g_stClientVersion.c_str()); + int date = atoi(d->GetClientVersion()); + + SPDLOG_DEBUG("VERSION CHECK {} {} {} {}", version, date, g_stClientVersion.c_str(), d->GetClientVersion()); + + if (!d->GetClientVersion()) { - int version = atoi(g_stClientVersion.c_str()); - int date = atoi(d->GetClientVersion()); - - SPDLOG_DEBUG("VERSION CHECK {} {} {} {}", version, date, g_stClientVersion.c_str(), d->GetClientVersion()); - - if (!d->GetClientVersion()) - { - d->DelayedDisconnect(10); - } - else - { - //if (0 != g_stClientVersion.compare(d->GetClientVersion())) - if (version > date) - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch.")); - d->DelayedDisconnect(10); - LogManager::instance().HackLog("VERSION_CONFLICT", ch); - - SPDLOG_WARN("VERSION : WRONG VERSION USER : account:{} name:{} hostName:{} server_version:{} client_version:{}", - d->GetAccountTable().login, - ch->GetName(), - d->GetHostName(), - g_stClientVersion.c_str(), - d->GetClientVersion()); - } - } + d->DelayedDisconnect(10); } else { - SPDLOG_WARN("VERSION : NO CHECK"); + //if (0 != g_stClientVersion.compare(d->GetClientVersion())) + if (version > date) + { + ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch.")); + d->DelayedDisconnect(10); + LogManager::instance().HackLog("VERSION_CONFLICT", ch); + + SPDLOG_WARN("VERSION : WRONG VERSION USER : account:{} name:{} hostName:{} server_version:{} client_version:{}", + d->GetAccountTable().login, + ch->GetName(), + d->GetHostName(), + g_stClientVersion.c_str(), + d->GetClientVersion()); + } } } else { - SPDLOG_WARN("VERSION : NO LOGIN"); + SPDLOG_WARN("VERSION : NO CHECK"); } - if (LC_IsEurope() == true) - { - if (ch->IsGM() == true) - ch->ChatPacket(CHAT_TYPE_COMMAND, "ConsoleEnable"); - } + if (ch->IsGM() == true) + ch->ChatPacket(CHAT_TYPE_COMMAND, "ConsoleEnable"); if (ch->GetMapIndex() >= 10000) { @@ -752,19 +726,6 @@ void CInputLogin::Entergame(LPDESC d, const char * data) } } - // 청소년 보호 - if (g_TeenDesc) // RawPacket 사용 금지 - { - TPacketGTLogin p; - - p.header = HEADER_GT_LOGIN; - p.empty = 0; - p.id = d->GetAccountTable().id; - - g_TeenDesc->Packet(&p, sizeof(p)); - SPDLOG_DEBUG("TEEN_SEND: ({}, {})", d->GetAccountTable().id, ch->GetName()); - } - if (ch->GetHorseLevel() > 0) { DWORD pid = ch->GetPlayerID(); diff --git a/src/game/src/input_main.cpp b/src/game/src/input_main.cpp index 62f48bc..a97934b 100644 --- a/src/game/src/input_main.cpp +++ b/src/game/src/input_main.cpp @@ -411,10 +411,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes) return iExtraLen; } - if (LC_IsCanada() == false) - { - CBanwordManager::instance().ConvertString(buf, buflen); - } + CBanwordManager::instance().ConvertString(buf, buflen); if (g_bEmpireWhisper) if (!ch->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE)) @@ -495,11 +492,6 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes) tmpbuf.write(buf, buflen); pkDesc->Packet(tmpbuf.read_peek(), tmpbuf.size()); - - if (LC_IsEurope() != true) - { - SPDLOG_DEBUG("WHISPER: {} -> {} : {}", ch->GetName(), pinfo->szNameTo, buf); - } } } } @@ -695,10 +687,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes) LogManager::instance().ShoutLog(g_bChannel, ch->GetEmpire(), chatbuf); } - if (LC_IsCanada() == false) - { - CBanwordManager::instance().ConvertString(buf, buflen); - } + CBanwordManager::instance().ConvertString(buf, buflen); if (len < 0 || len >= (int) sizeof(chatbuf)) len = sizeof(chatbuf) - 1; @@ -722,7 +711,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes) if (pinfo->type == CHAT_TYPE_SHOUT) { - const int SHOUT_LIMIT_LEVEL = g_iUseLocale ? 15 : 3; + const int SHOUT_LIMIT_LEVEL = 15; if (ch->GetLevel() < SHOUT_LIMIT_LEVEL) { @@ -1539,14 +1528,6 @@ void CInputMain::Move(LPCHARACTER ch, const char * data) if (((false == ch->IsRiding() && fDist > 25) || fDist > 40) && OXEVENT_MAP_INDEX != ch->GetMapIndex()) { - if( false == LC_IsEurope() ) - { - const PIXEL_POSITION & warpPos = ch->GetWarpPosition(); - - if (warpPos.x == 0 && warpPos.y == 0) - LogManager::instance().HackLog("Teleport", ch); // 부정확할 수 있음 - } - SPDLOG_WARN("MOVE: {} trying to move too far (dist: {:.1f}m) Riding({})", ch->GetName(), fDist, ch->IsRiding()); ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ()); @@ -2436,14 +2417,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData) int GuildCreateFee; - if (LC_IsBrazil()) - { - GuildCreateFee = 500000; - } - else - { - GuildCreateFee = 200000; - } + GuildCreateFee = 200000; ch->PointChange(POINT_GOLD, -GuildCreateFee); DBManager::instance().SendMoneyLog(MONEY_LOG_GUILD, ch->GetPlayerID(), -GuildCreateFee); @@ -2452,9 +2426,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData) snprintf(Log, sizeof(Log), "GUILD_NAME %s MASTER %s", cp.name, ch->GetName()); LogManager::instance().CharLog(ch, 0, "MAKE_GUILD", Log); - if (g_iUseLocale) - ch->RemoveSpecifyItem(GUILD_CREATE_ITEM_VNUM, 1); - //ch->SendGuildName(dwGuildID); + ch->RemoveSpecifyItem(GUILD_CREATE_ITEM_VNUM, 1); } else ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Creation of the guild has failed.")); @@ -2606,15 +2578,6 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes) if (!ch->IsPC()) return SubPacketLen; - if (LC_IsCanada() == true) - { - if (newmember->GetQuestFlag("change_guild_master.be_other_member") > get_global_time()) - { - ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This character can't join yet")); - return SubPacketLen; - } - } - pGuild->Invite(ch, newmember); } return SubPacketLen; @@ -2651,11 +2614,6 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes) member->SetQuestFlag("guild_manage.new_withdraw_time", get_global_time()); pGuild->RequestRemoveMember(member->GetPlayerID()); - - if (LC_IsBrazil() == true) - { - DBManager::instance().Query("REPLACE INTO guild_invite_limit VALUES(%d, %d)", pGuild->GetID(), get_global_time()); - } } else { @@ -2728,7 +2686,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes) { DWORD offer = *reinterpret_cast(c_pData); - if (pGuild->GetLevel() >= GUILD_MAX_LEVEL && LC_IsHongKong() == false) + if (pGuild->GetLevel() >= GUILD_MAX_LEVEL) { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Your guild is already the highest level.")); } @@ -3050,28 +3008,17 @@ int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) case HEADER_CG_MOVE: Move(ch, c_pData); - if (LC_IsEurope()) + if (g_bCheckClientVersion) { - if (g_bCheckClientVersion) - { - int version = atoi(g_stClientVersion.c_str()); - int date = atoi(d->GetClientVersion()); + int version = atoi(g_stClientVersion.c_str()); + int date = atoi(d->GetClientVersion()); - //if (0 != g_stClientVersion.compare(d->GetClientVersion())) - if (version > date) - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch.")); - d->DelayedDisconnect(10); - LogManager::instance().HackLog("VERSION_CONFLICT", d->GetAccountTable().login, ch->GetName(), d->GetHostName()); - } - } - } - else - { - if (!*d->GetClientVersion()) - { - SPDLOG_ERROR("Version not recieved name {}", ch->GetName()); - d->SetPhase(PHASE_CLOSE); + //if (0 != g_stClientVersion.compare(d->GetClientVersion())) + if (version > date) + { + ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch.")); + d->DelayedDisconnect(10); + LogManager::instance().HackLog("VERSION_CONFLICT", d->GetAccountTable().login, ch->GetName(), d->GetHostName()); } } break; diff --git a/src/game/src/input_p2p.cpp b/src/game/src/input_p2p.cpp index 87c0225..0de7eab 100644 --- a/src/game/src/input_p2p.cpp +++ b/src/game/src/input_p2p.cpp @@ -329,12 +329,7 @@ void CInputP2P::XmasWarpSanta(const char * c_pData) if (p->bChannel == g_bChannel && map_allow_find(p->lMapIndex)) { - int iNextSpawnDelay = 60; - - if (LC_IsYMIR()) - iNextSpawnDelay = 20 * 60; - else - iNextSpawnDelay = 50 * 60; + int iNextSpawnDelay = 50 * 60; xmas::SpawnSanta(p->lMapIndex, iNextSpawnDelay); // 50분있다가 새로운 산타가 나타남 (한국은 20분) diff --git a/src/game/src/input_teen.cpp b/src/game/src/input_teen.cpp deleted file mode 100644 index ea4d8b5..0000000 --- a/src/game/src/input_teen.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/********************************************************************* - * date : 2007.06.07 - * file : input_teen.cpp - * author : mhh - * description : - */ - -#define _input_teen_cpp_ - -#include "stdafx.h" -#include "constants.h" -#include -#include "input.h" -#include "desc.h" -#include "desc_manager.h" -#include "db.h" -#include "protocol.h" -#include "char.h" - -#define HANDSHAKE_XOR 0x6AB3D224 - -void CInputTeen::SetStep(int step) -{ - m_step = step; -} - -bool CInputTeen::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes, int & r_iBytesProceed) -{ - switch (m_step) - { - case 0: - return this->ProcessHandshake(lpDesc, c_pvOrig, iBytes, r_iBytesProceed); - break; - case 1: - return this->ProcessMain(lpDesc, c_pvOrig, iBytes, r_iBytesProceed); - break; - } - return false; -} /* end of CInputTeen::Process() */ - -bool CInputTeen::ProcessHandshake(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed) -{ - const char *c_pData = (const char*) c_pvOrig; - size_t packet_len = sizeof(DWORD); - - if (uiBytes < packet_len) - return false; - - DWORD handshake = decode_4bytes(c_pData); - - c_pData += packet_len; - m_iBufferLeft -= packet_len; - r_iBytesProceed += packet_len; - - this->SetStep(1); - - char buf[256]; - *((DWORD *) buf) = handshake ^ HANDSHAKE_XOR; - lpDesc->Packet(buf, sizeof(DWORD)); - - return true; -} - - -static int __packet_len(BYTE header) -{ - const int header_size = sizeof(BYTE) + sizeof(WORD); - - switch (header) - { - case HEADER_TG_TEEN_NOTICE: return (header_size + LOGIN_MAX_LEN + 4); - case HEADER_TG_FORCE_LOGOUT: return (header_size + LOGIN_MAX_LEN); - case HEADER_TG_LOGIN_NOTICE: return (header_size + LOGIN_MAX_LEN + 4 + 4); - } - return 0; -} - - -static void __proc_teen_notice(char *login, int hour) -{ - LPDESC desc = DESC_MANAGER::instance().FindByLoginName(login); - if (NULL==desc) return; - - LPCHARACTER ch = desc->GetCharacter(); - if (NULL==ch) return; - - switch (hour) - { - case 0: - { - SET_OVER_TIME(ch, OT_NONE); - return; - } - break; - case 1: - case 2: - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time is already %d hours."), hour); - SET_OVER_TIME(ch, OT_NONE); - } - break; - case 3: - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time has already reached %d hours,"), hour); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Please disconnect as soon as possible and get some rest for your health.")); - SET_OVER_TIME(ch, OT_3HOUR); - } - break; - case 4: - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You have already entered game fatigue,")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("your in-game earnings are reduced to 50%% of normal.")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("For your own health, please disconnect as soon as possible")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("and focus on resting and studying.")); - SET_OVER_TIME(ch, OT_3HOUR); - } - break; - default: - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You have already entered an unhealthy game time.")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("For your health, please disconnect and rest as soon as possible,")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("otherwise you may suffer health damage and your in-game numbers will be zeroed out.")); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You will return to normal when your cumulative offline time reaches 5 hours.")); - SET_OVER_TIME(ch, OT_5HOUR); - } - break; - } -} - -static inline void __sec_to_timestring(int sec, char *buf, size_t buflen) -{ - int hour = (sec/60)/60; - int min = (sec/60); - - if (hour>0) - snprintf(buf, buflen, LC_TEXT("%dh"), hour); - else - snprintf(buf, buflen, LC_TEXT("%dm"), min); -} - -static void __proc_login_notice(char *login, int on_time, int off_time) -{ - //{ check player's name - LPDESC desc = DESC_MANAGER::instance().FindByLoginName(login); - if (NULL==desc) return; - - LPCHARACTER ch = desc->GetCharacter(); - if (NULL==ch) return; - //} check player's name - - char on_time_string[64]; - char off_time_string[64]; - - __sec_to_timestring(on_time, on_time_string, sizeof(on_time_string)); - __sec_to_timestring(off_time, off_time_string, sizeof(off_time_string)); - - if (0==on_time) - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative offline time is %s."), off_time_string); - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time is now zero. You are 100%% effective.")); - return; - } - else - { - ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative offline time is %s, and your cumulative online time is %s."), - off_time_string, on_time_string); - } -} - - -static void __input_teen(BYTE header, WORD desc_num, char *body) -{ - switch (header) - { - case HEADER_TG_FORCE_LOGOUT: - { - char *data = body; - char login[LOGIN_MAX_LEN+1] = {0}; - memcpy(login, data, LOGIN_MAX_LEN); - data += LOGIN_MAX_LEN; - LPDESC d = DESC_MANAGER::instance().FindByLoginName(login); - - if (NULL==d) - return; - - d->SetPhase(PHASE_CLOSE); - } - break; - case HEADER_TG_TEEN_NOTICE: - { - char *data = body; - char login[LOGIN_MAX_LEN+1] = {0}; - memcpy(login, data, LOGIN_MAX_LEN); - data += LOGIN_MAX_LEN; - int hour = decode_4bytes(data); - data += 4; - - __proc_teen_notice(login, hour); - } - break; - case HEADER_TG_LOGIN_NOTICE: - { - char *data = body; - char login[LOGIN_MAX_LEN+1] = {0}; - memcpy(login, data, LOGIN_MAX_LEN); - data += LOGIN_MAX_LEN; - int on_time = decode_4bytes(data); - data += 4; - int off_time = decode_4bytes(data); - data += 4; - - __proc_login_notice(login, on_time, off_time); - } - break; - } -} - - -bool CInputTeen::ProcessMain(LPDESC lpDesc, const void * c_pvOrig, size_t uiBytes, int & r_iBytesProceed) -{ - const char *c_pData = (const char*) c_pvOrig; - const size_t header_size = sizeof(BYTE) + sizeof(WORD); - - if (uiBytes < header_size) - return false; - - for (m_iBufferLeft = uiBytes; m_iBufferLeft > 0;) - { - BYTE header = decode_byte(c_pData); - WORD desc_num = decode_2bytes(c_pData+sizeof(BYTE)); - char *body = (char*) c_pData + header_size; - - int packet_len = __packet_len(header); - - if (m_iBufferLeft < packet_len) - return true; - - c_pData += packet_len; - m_iBufferLeft -= packet_len; - r_iBytesProceed += packet_len; - - __input_teen(header, desc_num, body); - } - - return true; -} - diff --git a/src/game/src/item.cpp b/src/game/src/item.cpp index b604459..7fa631f 100644 --- a/src/game/src/item.cpp +++ b/src/game/src/item.cpp @@ -1085,11 +1085,8 @@ void CItem::SetOwnership(LPCHARACTER ch, int iSec) if (m_pkOwnershipEvent) return; - if (true == LC_IsEurope()) - { - if (iSec <= 10) - iSec = 30; - } + if (iSec <= 10) + iSec = 30; m_dwOwnershipPID = ch->GetPlayerID(); @@ -1154,60 +1151,31 @@ void CItem::AlterToMagicItem() int iSecondPct; int iThirdPct; - if (g_iUseLocale) + switch (GetType()) { - switch (GetType()) - { - case ITEM_WEAPON: - iSecondPct = 20; - iThirdPct = 5; - break; + case ITEM_WEAPON: + iSecondPct = 20; + iThirdPct = 5; + break; - case ITEM_ARMOR: - case ITEM_COSTUME: - if (GetSubType() == ARMOR_BODY) - { - iSecondPct = 10; - iThirdPct = 2; - } - else - { - iSecondPct = 10; - iThirdPct = 1; - } - break; + case ITEM_ARMOR: + case ITEM_COSTUME: + if (GetSubType() == ARMOR_BODY) + { + iSecondPct = 10; + iThirdPct = 2; + } + else + { + iSecondPct = 10; + iThirdPct = 1; + } + break; - default: - return; - } - } - else - { - switch (GetType()) - { - case ITEM_WEAPON: - iSecondPct = 30; - iThirdPct = 15; - break; - - case ITEM_ARMOR: - case ITEM_COSTUME: - if (GetSubType() == ARMOR_BODY) - { - iSecondPct = 20; - iThirdPct = 10; - } - else - { - iSecondPct = 10; - iThirdPct = 5; - } - break; - - default: - return; - } + default: + return; } + // 100% 확률로 좋은 속성 하나 PutAttribute(aiItemMagicAttributePercentHigh); diff --git a/src/game/src/item_manager.cpp b/src/game/src/item_manager.cpp index 09912a4..2846e98 100644 --- a/src/game/src/item_manager.cpp +++ b/src/game/src/item_manager.cpp @@ -151,29 +151,6 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi dwMaskVnum = GetMaskVnum(vnum); } - if (LC_IsKorea() || LC_IsYMIR()) - { - if (vnum == 50300 && bTryMagic) - { - // 수련서를 아이템 번호를 다르게 만들어 준다. - DWORD dwSkillVnum; - - do - { - dwSkillVnum = Random::get(1, 111); - - CSkillProto * pkSk = CSkillManager::instance().Get(dwSkillVnum); - - if (!pkSk) - continue; - - break; - } while (1); - - vnum = 50400 + dwSkillVnum; - } - } - const TItemTable* table = GetTable(vnum); if (NULL == table) @@ -768,7 +745,7 @@ int GetDropPerKillPct(int iMinimum, int iDefault, int iDeltaPercent, const char if ((iVal = quest::CQuestManager::instance().GetEventFlag(c_pszFlag))) { - if (!test_server && !LC_IsJapan()) + if (!test_server) { if (iVal < iMinimum) iVal = iDefault; @@ -1055,55 +1032,6 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std:: DBManager::instance().SendMoneyLog(MONEY_LOG_DROP, item->GetVnum(), item->GetCount()); } - // - // 승룡곡 천의동굴 2층에서만 수룡방 입장권 - // - if (LC_IsYMIR() || LC_IsKorea()) - { - if (73 == pkKiller->GetMapIndex()) - { - int per = 25; // 0.25% - if (Random::get(1, 10000) <= per) - { - LPITEM item = 0; - if ((item = CreateItem(71122, 1, 0, true))) - vec_item.push_back(item); - } - } - } - - // - // 승룡곡 1층, 2층에서만 7,8 스킬입문서 드롭 - // - if (LC_IsYMIR() || LC_IsKorea()) - { - switch (pkKiller->GetMapIndex()) - { - case 72: // 천의동굴 1층 - case 73: // 천의동굴 2층 - { - int vnum = 0; - - if (2403 == pkChr->GetRaceNum()) // 천의법사 - vnum = 69200; // 7스킬 입문서 - else if (2411 == pkChr->GetRaceNum()) // 진천의병사 - vnum = 69201; // 8스킬 입문서 - else - break; - - int per = 5; // 0.05% - if (Random::get(1, 10000) <= per) - { - LPITEM item = 0; - item = CreateItem(vnum, 1, 0, true); - if (item) - vec_item.push_back(item); - } - } - break; - } - } - return vec_item.size(); } @@ -1175,9 +1103,6 @@ static void __DropEvent_CharStone_DropItem(CHARACTER & killer, CHARACTER & victi int MaxRange = 10000; - if (LC_IsCanada() == true) - MaxRange = 20000; - if (Random::get(1, MaxRange) <= dropPercent) { int victim_level = victim.GetLevel(); @@ -1386,16 +1311,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, // 크리스마스 양말 if (quest::CQuestManager::instance().GetEventFlag("xmas_sock")) { - //const DWORD SOCK_ITEM_VNUM = 50010; - DWORD SOCK_ITEM_VNUM = 0; - if (LC_IsKorea() || LC_IsYMIR()) - { - SOCK_ITEM_VNUM = (Random::get(1,100)<=50) ? 50010 : 71111; - } - else - { - SOCK_ITEM_VNUM = 50010; - } + const DWORD SOCK_ITEM_VNUM = 50010; int iDropPerKill[MOB_RANK_MAX_NUM] = { @@ -1411,12 +1327,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, { int iPercent = 40000 * iDeltaPercent / iDropPerKill[pkChr->GetMobRank()]; - if ( LC_IsHongKong() ) - { - iPercent *= 10; - } - - SPDLOG_DEBUG("SOCK DROP {} {}", iPercent, iRandRange); + SPDLOG_DEBUG("SOCK DROP {} {}", iPercent, iRandRange); if (iPercent >= Random::get(1, iRandRange)) { if ((item = CreateItem(SOCK_ITEM_VNUM, 1, 0, true))) @@ -1452,27 +1363,24 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } } - if (LC_IsEurope()) + if (pkKiller->GetLevel() >= 15 && abs(pkKiller->GetLevel() - pkChr->GetLevel()) <= 5) { - if (pkKiller->GetLevel() >= 15 && abs(pkKiller->GetLevel() - pkChr->GetLevel()) <= 5) + int pct = quest::CQuestManager::instance().GetEventFlag("hc_drop"); + + if (pct > 0) { - int pct = quest::CQuestManager::instance().GetEventFlag("hc_drop"); + const DWORD ITEM_VNUM = 30178; - if (pct > 0) + if (Random::get(1,100) <= pct) { - const DWORD ITEM_VNUM = 30178; - - if (Random::get(1,100) <= pct) - { - if ((item = CreateItem(ITEM_VNUM, 1, 0, true))) - vec_item.push_back(item); - } + if ((item = CreateItem(ITEM_VNUM, 1, 0, true))) + vec_item.push_back(item); } } } //육각보합 - if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2006_drop") >= Random::get(1, iRandRange)) + if (GetDropPerKillPct(100, 2000, iDeltaPercent, "2006_drop") >= Random::get(1, iRandRange)) { SPDLOG_DEBUG("Hexagonal Treasure Chest DROP EVENT "); @@ -1484,7 +1392,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } //육각보합+ - if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2007_drop") >= Random::get(1, iRandRange)) + if (GetDropPerKillPct(100, 2000, iDeltaPercent, "2007_drop") >= Random::get(1, iRandRange)) { SPDLOG_DEBUG("Hexagonal Treasure Chest DROP EVENT "); @@ -1498,7 +1406,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, if (GetDropPerKillPct(/* minimum */ 100, /* default */ 1000, iDeltaPercent, "newyear_fire") >= Random::get(1, iRandRange)) { // 중국은 폭죽, 한국 팽이 - const DWORD ITEM_VNUM_FIRE = g_iUseLocale ? 50107 : 50108; + const DWORD ITEM_VNUM_FIRE = 50107; if ((item = CreateItem(ITEM_VNUM_FIRE, 1, 0, true))) vec_item.push_back(item); @@ -1517,7 +1425,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } // 발렌타인 데이 이벤트. OGE의 요구에 따라 event 최소값을 1로 변경.(다른 이벤트는 일단 그대로 둠.) - if (GetDropPerKillPct(1, g_iUseLocale ? 2000 : 800, iDeltaPercent, "valentine_drop") >= Random::get(1, iRandRange)) + if (GetDropPerKillPct(1, 2000, iDeltaPercent, "valentine_drop") >= Random::get(1, iRandRange)) { SPDLOG_DEBUG("EVENT VALENTINE_DROP"); @@ -1529,7 +1437,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } // 아이스크림 이벤트 - if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "icecream_drop") >= Random::get(1, iRandRange)) + if (GetDropPerKillPct(100, 2000, iDeltaPercent, "icecream_drop") >= Random::get(1, iRandRange)) { const static DWORD icecream = 50123; @@ -1558,7 +1466,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, // vec_item.push_back(item); //} - if ( GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "halloween_drop") >= Random::get(1, iRandRange) ) + if ( GetDropPerKillPct(100, 2000, iDeltaPercent, "halloween_drop") >= Random::get(1, iRandRange) ) { const static DWORD halloween_item = 30321; @@ -1566,7 +1474,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, vec_item.push_back(item); } - if ( GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "ramadan_drop") >= Random::get(1, iRandRange) ) + if ( GetDropPerKillPct(100, 2000, iDeltaPercent, "ramadan_drop") >= Random::get(1, iRandRange) ) { const static DWORD ramadan_item = 30315; @@ -1574,7 +1482,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, vec_item.push_back(item); } - if ( GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "easter_drop") >= Random::get(1, iRandRange) ) + if ( GetDropPerKillPct(100, 2000, iDeltaPercent, "easter_drop") >= Random::get(1, iRandRange) ) { const static DWORD easter_item_base = 50160; @@ -1583,7 +1491,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } // 월드컵 이벤트 - if ( GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "football_drop") >= Random::get(1, iRandRange) ) + if ( GetDropPerKillPct(100, 2000, iDeltaPercent, "football_drop") >= Random::get(1, iRandRange) ) { const static DWORD football_item = 50096; @@ -1592,7 +1500,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, } // 화이트 데이 이벤트 - if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "whiteday_drop") >= Random::get(1, iRandRange)) + if (GetDropPerKillPct(100, 2000, iDeltaPercent, "whiteday_drop") >= Random::get(1, iRandRange)) { SPDLOG_DEBUG("EVENT WHITEDAY_DROP"); const static DWORD whiteday_items[2] = { ITEM_WHITEDAY_ROSE, ITEM_WHITEDAY_CANDY }; diff --git a/src/game/src/item_manager_read_tables.cpp b/src/game/src/item_manager_read_tables.cpp index 97a4dc7..69586be 100644 --- a/src/game/src/item_manager_read_tables.cpp +++ b/src/game/src/item_manager_read_tables.cpp @@ -495,14 +495,7 @@ bool ITEM_MANAGER::ReadMonsterDropItemGroup(const char * c_pszFileName) if (strncmp (stName.c_str(), "kr_", 3) == 0) { - if (LC_IsYMIR()) - { - stName.assign(stName, 3, stName.size() - 3); - } - else - { - continue; - } + continue; } loader.SetChildNode(i); diff --git a/src/game/src/locale.cpp b/src/game/src/locale.cpp index 8477317..3a9a740 100644 --- a/src/game/src/locale.cpp +++ b/src/game/src/locale.cpp @@ -20,7 +20,7 @@ void locale_add(const char **strings) const char * locale_find(const char *string) { - if (0 == g_iUseLocale || LC_IsKorea() || LC_IsWE_Korea()) + if (0 == g_iUseLocale) { return (string); } diff --git a/src/game/src/locale_service.cpp b/src/game/src/locale_service.cpp index fde3eb7..184b4da 100644 --- a/src/game/src/locale_service.cpp +++ b/src/game/src/locale_service.cpp @@ -10,24 +10,15 @@ using namespace std; -extern string g_stQuestDir; -extern set g_setQuestObjectDir; - -string g_stServiceName; -string g_stServiceBasePath = "."; -string g_stServiceMapPath = "data/map"; +string g_stLanguage; string g_stLocale = "euckr"; string g_stLocaleFilename; -BYTE PK_PROTECT_LEVEL = 30; - -string g_stLocal = ""; -eLocalization g_eLocalType = LC_NOSET; +BYTE PK_PROTECT_LEVEL = 15; int (*check_name) (const char * str) = NULL; int (*is_twobyte) (const char * str) = NULL; -bool LC_InitLocalization( const std::string& szLocal ); int is_twobyte_gb2312(const char * str) { @@ -46,34 +37,6 @@ int is_twobyte_gb2312(const char * str) return 1; } -int is_twobyte_big5(const char * str) -{ - if (!str || !*str) - return 0; - - BYTE b1 = str[0]; - BYTE b2 = str[1]; - - BYTE b[2]; - - b[0] = b2; - b[1] = b1; - - WORD b12 = 0; - memcpy(&b12, b, 2); - - if (!(b1 & 0x80)) - return 0; - - if ((b12 < 0xa440 || b12 > 0xc67e) && (b12 < 0xc940 || b12 > 0xf9d5)) - { - SPDLOG_TRACE("twobyte_big5 {} {}", b1, b2); - return 0; - } - - return 1; -} - int check_name_independent(const char * str) { if (CBanwordManager::instance().CheckString(str, strlen(str))) @@ -89,180 +52,6 @@ int check_name_independent(const char * str) return 1; } -int check_name_gb2312(const char * str) -{ - static const BYTE exceptions[5][2] = - { - { 0xd7, 0xfa }, - { 0xd7, 0xfb }, - { 0xd7, 0xfc }, - { 0xd7, 0xfd }, - { 0xd7, 0xfe } - }; - - int i, j; - BYTE b1, b2; - - if (!str || !*str) - return 0; - - i = 0; - - size_t len = 0; - - while (str[i]) - { - if (str[i] & 0x80) - { - if (!str[i + 1]) - return 0; - - b1 = str[i++]; - b2 = str[i++]; - - // 중국 간체는 첫번째 바이트 범위가 b0 -> f7 까지고 - // 두번째 바이트 범위가 a1 -> fe 다. - if (b1 < 0xb0 || b1 > 0xf7 || b2 < 0xa1 || b2 > 0xfe) - return 0; - - // 예외가 있다. - for (j = 0; j < 5; j++) - if (b1 == exceptions[j][0] && b2 == exceptions[j][1]) - return 0; - - len++; - } - else - { - if (!isdigit(str[i]) && !isalpha(str[i])) - return 0; - - i++; - len++; - } - } - - if ( len > 6 ) return 0; - - return check_name_independent(str); -} - -int check_name_big5(const char * str ) -{ - int i; - BYTE b1, b2; - - if (!str || !*str) - return 0; - - i = 0; - - while (str[i]) - { - if (str[i] & 0x80) - { - if (!str[i + 1]) - return 0; - - b1 = str[i++]; - b2 = str[i++]; - - BYTE b[2]; - - b[0] = b2; - b[1] = b1; - - // 중국 번체 ( big5 : 홍콩 ) - // 범위는 다음과 같다. - // big5: 0xA140--0xF9D5 - // extended big5: 0x40--0x7E and 0xA1--0xFE - - // 0xa440-0xC67E - // 0xC940-0xF9D5 - // - /* - Plan Code Range Description - 1 A140H - A3E0H Symbol and Chinese Control Code - 1 A440H - C67EH Commonly Used Characters - 2 C940H - F9D5H Less Commonly Used Characters - UDF FA40H - FEFE User-Defined Characters - - 8E40H - A0FEH User-Defined Characters - - 8140H - 8DFEH User-Defined Characters - - 8181H - 8C82H User-Defined Characters - - F9D6H - F9F1H User-Defined Characters - */ - - WORD b12 = 0; - memcpy(&b12, b, 2); - - if ((b12 < 0xa440 || b12 > 0xc67e) && (b12 < 0xc940 || b12 > 0xf9d5)) - { - SPDLOG_TRACE("check_name_big5[{}][{}] {} {} {}", i - 2, str, b1, b2, b12); - return 0; - } - } - else - { - if (!isdigit(str[i]) && !isalpha(str[i])) - return 0; - - i++; - } - } - - return check_name_independent(str); -} - -int check_name_latin1(const char * str) -{ - int code; - const char* tmp; - - if (!str || !*str) - return 0; - - if (strlen(str) < 2) - return 0; - - for (tmp = str; *tmp; ++tmp) - { - // 한글이 아니고 빈칸이면 잘못된 것 - if (isspace(*tmp)) - return 0; - - // 한글이 아니고 숫자라면 적합하다. - if (isdigit(*tmp)) - continue; - - // 한글이 아니고 영문이라면 적합하다. - if (isalpha(*tmp)) - continue; - - unsigned char uc_tmp = *tmp; - - if (uc_tmp == 145 || uc_tmp == 146 || uc_tmp == 196 - || uc_tmp == 214 || uc_tmp == 220 || uc_tmp == 223 - || uc_tmp == 228 || uc_tmp == 246 || uc_tmp == 252 ) - continue; - code = *tmp; - code += 256; - - if (code < 176 || code > 200) - return 0; - - ++tmp; - - if (!*tmp) - break; - } - - return check_name_independent(str); -} - int check_name_alphabet(const char * str) { const char* tmp; @@ -284,86 +73,7 @@ int check_name_alphabet(const char * str) return check_name_independent(str); } -// DISABLE_SPECIAL_CHAR_NAMING -bool sjis_is_disable_name_char(const char* src) -{ - static const char* sjis_symbols = "?"; - if (strncmp(src, sjis_symbols, 2) == 0) - return true; - - return false; -} -// END_OF_DISABLE_SPECIAL_CHAR_NAMING - - - -//----------------------------------------------- -// CHECK SJIS STRING -//----------------------------------------------- -#define issjishead(c) ((0x81<=(c) && (c)<=0x9f) || \ - ((0xe0<=(c)) && (c)<=0xfc)) -#define issjistail(c) ((0x40<=(c) && (c)<=0x7e) || \ - (0x80<=(c) && (c)<=0xfc)) - -static int is_char_sjis(const char *p, const char *e) -{ - return (issjishead((BYTE) *p) && (e-p)>1 && issjistail((BYTE)p[1]) ? true : false); -} - -int is_twobyte_sjis(const char *str) -{ - if (str && str[0] && str[1]) - return issjishead((BYTE)str[0]) && issjistail((BYTE)str[1]); - else - return 0; -} - -int check_name_sjis(const char *str) -{ - const char *p = str; - const char *e = str + strlen(str); // NULL position - - // 일본은 캐릭터 이름길이 16byte 까지 - if ( strlen(str) < 2 || strlen(str) > 16 ) - return 0; - - while (*p) - { - if (is_char_sjis(p, e)) - { - // DISABLE_SPECIAL_CHAR_NAMING - if (sjis_is_disable_name_char(p)) - return false; - - // END_OF_DISABLE_SPECIAL_CHAR_NAMING - // 이문자는 허용되지 않는다. - if ((BYTE)p[0]==0x81 && (BYTE)p[1]==0x40) return false; - - p += 2; - continue; - } - else - { - // 영문이나 수자는 허용한다. - if (isalpha(*p) || isdigit(*p)) - { - p += 1; - continue; - } - else - { - return 0; - } - } - } - - - return check_name_independent(str); -} -//----------------------------------------------- -// END OF CHECK SJIS STRING -//----------------------------------------------- void LocaleService_LoadLocaleStringFile() { if (g_stLocaleFilename.empty()) @@ -390,756 +100,49 @@ void LocaleService_LoadEmpireTextConvertTables() } } -static void __LocaleService_Init_DEFAULT() +bool LocaleService_Init(const std::string& language) { - g_stLocaleFilename = ""; - - g_stServiceBasePath = "locale/" + g_stServiceName; - g_stServiceMapPath = g_stServiceBasePath + "/map"; - g_stQuestDir = g_stServiceBasePath + "/quest"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert(g_stQuestDir + "/object"); -} - -static void __LocaleService_Init_JAPAN() -{ - g_stLocale = "sjis"; - g_stServiceBasePath = "locale/japan"; - g_stQuestDir = "locale/japan/quest"; - g_stServiceMapPath = "locale/japan/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/japan/quest/object"); - g_stLocaleFilename = "locale/japan/sjis_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_sjis; - is_twobyte = is_twobyte_sjis; - exp_table = exp_table_euckr; -} - -static void __LocaleService_Init_English() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/english"; - g_stQuestDir = "locale/english/quest"; - g_stServiceMapPath = "locale/english/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/english/quest/object"); - g_stLocaleFilename = "locale/english/locale_string.txt"; - - g_iUseLocale = true; - check_name = check_name_alphabet; -} - -static void __LocaleService_Init_HongKong() -{ - g_stLocale = "big5"; - g_stServiceBasePath = "locale/hongkong"; - g_stQuestDir = "locale/hongkong/quest"; - g_stServiceMapPath = "locale/hongkong/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/hongkong/quest/object"); - g_stLocaleFilename = "locale/hongkong/big5_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_big5; - is_twobyte = is_twobyte_big5; -} - -static void __LocaleService_Init_NewCIBN() -{ - g_stLocale = "gb2312"; - g_stServiceBasePath = "locale/newcibn"; - g_stQuestDir = "locale/newcibn/quest"; - g_stServiceMapPath = "locale/newcibn/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/newcibn/quest/object"); - g_stLocaleFilename = "locale/newcibn/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_gb2312; - is_twobyte = is_twobyte_gb2312; - //exp_table = exp_table_newcibn; -} - -static void __LocaleService_Init_Germany() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/germany"; - g_stQuestDir = "locale/germany/quest"; - g_stServiceMapPath = "locale/germany/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/germany/quest/object"); - g_stLocaleFilename = "locale/germany/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Korea() -{ - g_stLocale="euckr"; - g_stServiceBasePath = "locale/korea"; - g_stQuestDir = "locale/korea/quest"; - g_stServiceMapPath = "locale/korea/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/korea/quest/object"); - - g_iUseLocale = true; - exp_table = exp_table_euckr; -} - -static void __LocaleService_Init_France() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/france"; - g_stQuestDir = "locale/france/quest"; - g_stServiceMapPath = "locale/france/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/france/quest/object"); - g_stLocaleFilename = "locale/france/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Italy() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/italy"; - g_stQuestDir = "locale/italy/quest"; - g_stServiceMapPath = "locale/italy/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/italy/quest/object"); - g_stLocaleFilename = "locale/italy/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_spain() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/spain"; - g_stQuestDir = "locale/spain/quest"; - g_stServiceMapPath = "locale/spain/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/spain/quest/object"); - g_stLocaleFilename = "locale/spain/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_greek() -{ - g_stLocale="greek"; - g_stServiceBasePath = "locale/greek"; - g_stQuestDir = "locale/greek/quest"; - g_stServiceMapPath = "locale/greek/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/greek/quest/object"); - g_stLocaleFilename = "locale/greek/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_UK() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/uk"; - g_stQuestDir = "locale/uk/quest"; - g_stServiceMapPath = "locale/uk/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/uk/quest/object"); - g_stLocaleFilename = "locale/uk/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Turkey() -{ - g_stLocale="latin5"; - g_stServiceBasePath = "locale/turkey"; - g_stQuestDir = "locale/turkey/quest"; - g_stServiceMapPath = "locale/turkey/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/turkey/quest/object"); - g_stLocaleFilename = "locale/turkey/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Poland() -{ - g_stLocale="latin2"; - g_stServiceBasePath = "locale/poland"; - g_stQuestDir = "locale/poland/quest"; - g_stServiceMapPath = "locale/poland/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/poland/quest/object"); - g_stLocaleFilename = "locale/poland/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Portugal() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/portugal"; - g_stQuestDir = "locale/portugal/quest"; - g_stServiceMapPath = "locale/portugal/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/portugal/quest/object"); - g_stLocaleFilename = "locale/portugal/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Canada() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/canada"; - g_stQuestDir = "locale/canada/quest"; - g_stServiceMapPath = "locale/canada/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/canada/quest/object"); - g_stLocaleFilename = "locale/canada/locale_string.txt"; - - check_name = check_name_alphabet; - - g_iUseLocale = true; -} - -static void __LocaleService_Init_Brazil() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/brazil"; - g_stQuestDir = "locale/brazil/quest"; - g_stServiceMapPath = "locale/brazil/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/brazil/quest/object"); - g_stLocaleFilename = "locale/brazil/locale_string.txt"; - - check_name = check_name_alphabet; - - g_iUseLocale = true; -} - -static void __LocaleService_Init_YMIR() -{ - g_stLocaleFilename = ""; - - g_stServiceBasePath = "locale/" + g_stServiceName; - g_stServiceMapPath = g_stServiceBasePath + "/map"; - g_stQuestDir = g_stServiceBasePath + "/quest"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert(g_stQuestDir + "/object"); - - PK_PROTECT_LEVEL = 30; - - exp_table = exp_table_euckr; -} - -static void __LocaleService_Init_Russia() -{ - g_stLocale="cp1251"; - g_stServiceBasePath = "locale/russia"; - g_stQuestDir = "locale/russia/quest"; - g_stServiceMapPath = "locale/russia/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/russia/quest/object"); - g_stLocaleFilename = "locale/russia/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Denmark() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/denmark"; - g_stQuestDir = "locale/denmark/quest"; - g_stServiceMapPath = "locale/denmark/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/denmark/quest/object"); - g_stLocaleFilename = "locale/denmark/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Bulgaria() -{ - g_stLocale="cp1251"; - g_stServiceBasePath = "locale/bulgaria"; - g_stQuestDir = "locale/bulgaria/quest"; - g_stServiceMapPath = "locale/bulgaria/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/bulgaria/quest/object"); - g_stLocaleFilename = "locale/bulgaria/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Croatia() -{ - g_stLocale="cp1251"; - g_stServiceBasePath = "locale/croatia"; - g_stQuestDir = "locale/croatia/quest"; - g_stServiceMapPath = "locale/croatia/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/croatia/quest/object"); - g_stLocaleFilename = "locale/croatia/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Mexico() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/mexico"; - g_stQuestDir = "locale/mexico/quest"; - g_stServiceMapPath = "locale/mexico/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/mexico/quest/object"); - g_stLocaleFilename = "locale/mexico/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Arabia() -{ - g_stLocale="cp1256"; - g_stServiceBasePath = "locale/arabia"; - g_stQuestDir = "locale/arabia/quest"; - g_stServiceMapPath = "locale/arabia/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/arabia/quest/object"); - g_stLocaleFilename = "locale/arabia/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Czech() -{ - g_stLocale="latin2"; - g_stServiceBasePath = "locale/czech"; - g_stQuestDir = "locale/czech/quest"; - g_stServiceMapPath = "locale/czech/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/czech/quest/object"); - g_stLocaleFilename = "locale/czech/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Hungary() -{ - g_stLocale="latin2"; - g_stServiceBasePath = "locale/hungary"; - g_stQuestDir = "locale/hungary/quest"; - g_stServiceMapPath = "locale/hungary/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/hungary/quest/object"); - g_stLocaleFilename = "locale/hungary/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Romania() -{ - g_stLocale="latin2"; - g_stServiceBasePath = "locale/romania"; - g_stQuestDir = "locale/romania/quest"; - g_stServiceMapPath = "locale/romania/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/romania/quest/object"); - g_stLocaleFilename = "locale/romania/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Netherlands() -{ - g_stLocale="latin1"; - g_stServiceBasePath = "locale/netherlands"; - g_stQuestDir = "locale/netherlands/quest"; - g_stServiceMapPath = "locale/netherlands/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/netherlands/quest/object"); - g_stLocaleFilename = "locale/netherlands/locale_string.txt"; - - g_iUseLocale = true; - - check_name = check_name_alphabet; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Singapore() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/singapore"; - g_stQuestDir = "locale/singapore/quest"; - g_stServiceMapPath = "locale/singapore/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/singapore/quest/object"); - g_stLocaleFilename = "locale/singapore/locale_string.txt"; - - check_name = check_name_alphabet; - - g_iUseLocale = true; - //exp_table = exp_table_newcibn; 2013 09 11 CYH europe 과 동일하게 간다. -} - -static void __LocaleService_Init_Vietnam() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/vietnam"; - g_stQuestDir = "locale/vietnam/quest"; - g_stServiceMapPath = "locale/vietnam/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/vietnam/quest/object"); - g_stLocaleFilename = "locale/vietnam/locale_string.txt"; - - check_name = check_name_alphabet; - - g_iUseLocale = true; - exp_table = exp_table_newcibn; - -} - -static void __LocaleService_Init_Thailand() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/thailand"; - g_stQuestDir = "locale/thailand/quest"; - g_stServiceMapPath = "locale/thailand/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/thailand/quest/object"); - g_stLocaleFilename = "locale/thailand/locale_string.txt"; - - check_name = check_name_alphabet; - - g_iUseLocale = true; -} - -static void __LocaleService_Init_USA() -{ - g_stLocale = "latin1"; - g_stServiceBasePath = "locale/usa"; - g_stQuestDir = "locale/usa/quest"; - g_stServiceMapPath = "locale/usa/map"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert("locale/usa/quest/object"); - g_stLocaleFilename = "locale/usa/locale_string.txt"; - - g_iUseLocale = true; - check_name = check_name_alphabet; -} - -// World Edition version for korea -static void __LocaleService_Init_WE_Korea() -{ - g_stLocale = "euckr"; - -// g_stLocaleFilename = "locale/we_korea/locale_string.txt"; - - g_stServiceBasePath = "locale/" + g_stServiceName; - g_stServiceMapPath = g_stServiceBasePath + "/map"; - g_stQuestDir = g_stServiceBasePath + "/quest"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert(g_stQuestDir + "/object"); - - g_iUseLocale = true; - - PK_PROTECT_LEVEL = 15; -} - -static void __LocaleService_Init_Taiwan() -{ - g_stLocale = "big5"; - g_stServiceBasePath = "locale/" + g_stServiceName; - g_stServiceMapPath = g_stServiceBasePath + "/map"; - g_stQuestDir = g_stServiceBasePath + "/quest"; - - g_setQuestObjectDir.clear(); - g_setQuestObjectDir.insert(g_stQuestDir + "/object"); - g_stLocaleFilename = "locale/taiwan/locale_string.txt"; - - check_name = check_name_big5; - is_twobyte = is_twobyte_big5; - - g_iUseLocale = true; - - PK_PROTECT_LEVEL = 15; -} - -static void __CheckPlayerSlot(const std::string& service_name) -{ - if (PLAYER_PER_ACCOUNT != 4) + map localeConfiguration = { + {"en", {"latin1", false}}, + {"ae", {"cp1256"}}, + {"cz", {"latin2"}}, + {"de", {"latin1"}}, + {"dk", {"latin1"}}, + {"es", {"latin1"}}, + {"fr", {"latin1"}}, + {"gr", {"greek"}}, + {"hu", {"latin2"}}, + {"it", {"latin1"}}, + {"kr", {"euckr"}}, + {"nl", {"latin1"}}, + {"pl", {"latin2"}}, + {"pt", {"latin1"}}, + {"ro", {"latin2"}}, + {"ru", {"cp1251"}}, + {"tr", {"latin5"}}, + }; + + if (!g_stLanguage.empty()) { - SPDLOG_CRITICAL(" PLAYER_PER_ACCOUNT = {}", (int) PLAYER_PER_ACCOUNT); - exit(EXIT_FAILURE); - } -} - -bool LocaleService_Init(const std::string& c_rstServiceName) -{ - if (!g_stServiceName.empty()) - { - SPDLOG_ERROR("ALREADY exist service"); + SPDLOG_ERROR("Locale was already initialized!"); return false; } - g_stServiceName = c_rstServiceName; - - if ( "japan" == g_stServiceName) + if (localeConfiguration.find(language) == localeConfiguration.end()) { - __LocaleService_Init_JAPAN(); - } - else if ( "english" == g_stServiceName) - { - __LocaleService_Init_English(); - } - else if ( "hongkong" == g_stServiceName) - { - __LocaleService_Init_HongKong(); - } - else if ( "newcibn" == g_stServiceName) - { - __LocaleService_Init_NewCIBN(); - } - else if ( "germany" == g_stServiceName) - { - __LocaleService_Init_Germany(); - } - else if ( "korea" == g_stServiceName) - { - __LocaleService_Init_Korea(); - } - else if ( "france" == g_stServiceName) - { - __LocaleService_Init_France(); - } - else if ( "italy" == g_stServiceName) - { - __LocaleService_Init_Italy(); - } - else if ( "spain" == g_stServiceName) - { - __LocaleService_Init_spain(); - } - else if ( "greek" == g_stServiceName) - { - __LocaleService_Init_greek(); - } - else if ( "uk" == g_stServiceName) - { - __LocaleService_Init_UK(); - } - else if ( "turkey" == g_stServiceName) - { - __LocaleService_Init_Turkey(); - } - else if ( "poland" == g_stServiceName) - { - __LocaleService_Init_Poland(); - } - else if ( "portugal" == g_stServiceName) - { - __LocaleService_Init_Portugal(); - } - else if ( "canada" == g_stServiceName) - { - __LocaleService_Init_Canada(); - } - else if ( "brazil" == g_stServiceName) - { - __LocaleService_Init_Brazil(); - } - else if ( "ymir" == g_stServiceName) - { - __LocaleService_Init_YMIR(); - } - else if ( "russia" == g_stServiceName) - { - __LocaleService_Init_Russia(); - } - else if ( "denmark" == g_stServiceName) - { - __LocaleService_Init_Denmark(); - } - else if ( "bulgaria" == g_stServiceName) - { - __LocaleService_Init_Bulgaria(); - } - else if ( "croatia" == g_stServiceName) - { - __LocaleService_Init_Croatia(); - } - else if ( "mexico" == g_stServiceName) - { - __LocaleService_Init_Mexico(); - } - else if ( "arabia" == g_stServiceName) - { - __LocaleService_Init_Arabia(); - } - else if ( "czech" == g_stServiceName) - { - __LocaleService_Init_Czech(); - } - else if ( "romania" == g_stServiceName) - { - __LocaleService_Init_Romania(); - } - else if ( "hungary" == g_stServiceName) - { - __LocaleService_Init_Hungary(); - } - else if ( "netherlands" == g_stServiceName) - { - __LocaleService_Init_Netherlands(); - } - else if ( "singapore" == g_stServiceName) - { - __LocaleService_Init_Singapore(); - } - else if ( "vietnam" == g_stServiceName) - { - __LocaleService_Init_Vietnam(); - } - else if ( "thailand" == g_stServiceName) - { - __LocaleService_Init_Thailand(); - } - else if ("usa" == g_stServiceName) - { - __LocaleService_Init_USA(); - } - else if ("we_korea" == g_stServiceName) - { - __LocaleService_Init_WE_Korea(); // ver.World Edition for korea - } - else if ("taiwan" == g_stServiceName) - { - __LocaleService_Init_Taiwan(); - } - else - { - __LocaleService_Init_DEFAULT(); - } - - SPDLOG_INFO("Setting Locale \"{}\" (Path: {})", g_stServiceName.c_str(), g_stServiceBasePath.c_str()); - - __CheckPlayerSlot(g_stServiceName); - - if (false == LC_InitLocalization(c_rstServiceName)) + SPDLOG_ERROR("An unsupported language configuration was requested: {}", language); return false; + } + + g_stLanguage = language; + + g_stLocale = localeConfiguration[language].mysqlCharsetName; + g_iUseLocale = localeConfiguration[language].useLocaleString; + + if (g_iUseLocale) + g_stLocaleFilename = g_stBasePath + "/locale_string_" + language + ".txt"; + + SPDLOG_INFO("Setting language \"{}\"", g_stLanguage.c_str()); return true; } @@ -1147,183 +150,26 @@ bool LocaleService_Init(const std::string& c_rstServiceName) void LocaleService_TransferDefaultSetting() { if (!check_name) - check_name = check_name_independent; + check_name = check_name_alphabet; if (!is_twobyte) is_twobyte = is_twobyte_gb2312; - if (!exp_table) - exp_table = exp_table_common; - if (!CTableBySkill::instance().Check()) exit(EXIT_FAILURE); - - if (!aiPercentByDeltaLevForBoss) - aiPercentByDeltaLevForBoss = aiPercentByDeltaLevForBoss_euckr; - - if (!aiPercentByDeltaLev) - aiPercentByDeltaLev = aiPercentByDeltaLev_euckr; - - if (!aiChainLightningCountBySkillLevel) - aiChainLightningCountBySkillLevel = aiChainLightningCountBySkillLevel_euckr; } const std::string& LocaleService_GetBasePath() { - return g_stServiceBasePath; + return g_stBasePath; } const std::string& LocaleService_GetMapPath() { - return g_stServiceMapPath; + return g_stMapPath; } const std::string& LocaleService_GetQuestPath() { return g_stQuestDir; } - -bool LC_InitLocalization( const std::string& szLocal ) -{ - g_stLocal = szLocal; - - if ( !g_stLocal.compare("ymir") ) - g_eLocalType = LC_YMIR; - else if ( !g_stLocal.compare("japan") ) - g_eLocalType = LC_JAPAN; - else if ( !g_stLocal.compare("english") ) - g_eLocalType = LC_ENGLISH; - else if ( !g_stLocal.compare("hongkong") ) - g_eLocalType = LC_HONGKONG; - else if (!g_stLocal.compare("newcibn") ) - g_eLocalType = LC_NEWCIBN; - else if ( !g_stLocal.compare("germany") ) - g_eLocalType = LC_GERMANY; - else if ( !g_stLocal.compare("korea") ) - g_eLocalType = LC_KOREA; - else if ( !g_stLocal.compare("france") ) - g_eLocalType = LC_FRANCE; - else if ( !g_stLocal.compare("italy") ) - g_eLocalType = LC_ITALY; - else if ( !g_stLocal.compare("spain") ) - g_eLocalType = LC_SPAIN; - else if ( !g_stLocal.compare("greek") ) - g_eLocalType = LC_GREEK; - else if ( !g_stLocal.compare("uk") ) - g_eLocalType = LC_UK; - else if ( !g_stLocal.compare("turkey") ) - g_eLocalType = LC_TURKEY; - else if ( !g_stLocal.compare("poland") ) - g_eLocalType = LC_POLAND; - else if ( !g_stLocal.compare("portugal") ) - g_eLocalType = LC_PORTUGAL; - else if ( !g_stLocal.compare("canada") ) - g_eLocalType = LC_CANADA; - else if ( !g_stLocal.compare("brazil") ) - g_eLocalType = LC_BRAZIL; - else if ( !g_stLocal.compare("russia") ) - g_eLocalType = LC_RUSSIA; - else if ( !g_stLocal.compare("denmark") ) - g_eLocalType = LC_DENMARK; - else if ( !g_stLocal.compare("bulgaria") ) - g_eLocalType = LC_BULGARIA; - else if ( !g_stLocal.compare("croatia") ) - g_eLocalType = LC_CROATIA; - else if ( !g_stLocal.compare("mexico") ) - g_eLocalType = LC_MEXICO; - else if ( !g_stLocal.compare("arabia") ) - g_eLocalType = LC_ARABIA; - else if ( !g_stLocal.compare("czech") ) - g_eLocalType = LC_CZECH; - else if ( !g_stLocal.compare("romania") ) - g_eLocalType = LC_ROMANIA; - else if ( !g_stLocal.compare("hungary") ) - g_eLocalType = LC_HUNGARY; - else if ( !g_stLocal.compare("netherlands") ) - g_eLocalType = LC_NETHERLANDS; - else if ( !g_stLocal.compare("singapore") ) - g_eLocalType = LC_SINGAPORE; - else if ( !g_stLocal.compare("vietnam") ) - g_eLocalType = LC_VIETNAM; - else if ( !g_stLocal.compare("thailand") ) - g_eLocalType = LC_THAILAND; - else if ( !g_stLocal.compare("usa") ) - g_eLocalType = LC_USA; - else if ( !g_stLocal.compare("we_korea") ) // ver.WorldEdition for korea - g_eLocalType = LC_WE_KOREA; - else if ( !g_stLocal.compare("taiwan") ) - g_eLocalType = LC_TAIWAN; - else - return false; - - return true; -} - -eLocalization LC_GetLocalType() -{ - return g_eLocalType; -} - -bool LC_IsLocale( const eLocalization t ) -{ - return LC_GetLocalType() == t ? true : false; -} - -bool LC_IsYMIR() { return LC_GetLocalType() == LC_YMIR ? true : false; } -bool LC_IsJapan() { return LC_GetLocalType() == LC_JAPAN ? true : false; } -bool LC_IsEnglish() { return LC_GetLocalType() == LC_ENGLISH ? true : false; } -bool LC_IsHongKong() { return LC_GetLocalType() == LC_HONGKONG ? true : false; } -bool LC_IsNewCIBN() { return LC_GetLocalType() == LC_NEWCIBN ? true : false; } -bool LC_IsGermany() { return LC_GetLocalType() == LC_GERMANY ? true : false; } -bool LC_IsKorea() { return LC_GetLocalType() == LC_KOREA ? true : false; } -bool LC_IsCanada() { return LC_GetLocalType() == LC_CANADA ? false : false; } -bool LC_IsBrazil() { return LC_GetLocalType() == LC_BRAZIL ? true : false; } -bool LC_IsSingapore() { return LC_GetLocalType() == LC_SINGAPORE ? true : false; } -bool LC_IsVietnam() { return LC_GetLocalType() == LC_VIETNAM ? true : false; } -bool LC_IsThailand() { return LC_GetLocalType() == LC_THAILAND ? true : false; } -bool LC_IsWE_Korea() { return LC_GetLocalType() == LC_WE_KOREA ? true : false; } -bool LC_IsTaiwan() { return LC_GetLocalType() == LC_TAIWAN ? true : false; } - -bool LC_IsWorldEdition() -{ - return LC_IsWE_Korea() || LC_IsEurope(); -} - -bool LC_IsEurope() -{ - eLocalization val = LC_GetLocalType(); - - switch ((int) val) - { - case LC_ENGLISH: - case LC_GERMANY: - case LC_FRANCE: - case LC_ITALY: - case LC_TURKEY: - case LC_POLAND: - case LC_UK: - case LC_SPAIN: - case LC_PORTUGAL: - case LC_GREEK: - case LC_RUSSIA: - case LC_DENMARK: - case LC_BULGARIA: - case LC_CROATIA: - case LC_MEXICO: // 남미지만 GF에서 서비스 하므로 여기 넣음 - case LC_ARABIA: // 중동이지만 GF에서 서비스 하므로 여기 넣음 - case LC_CZECH: - case LC_ROMANIA: - case LC_HUNGARY: - case LC_NETHERLANDS: - case LC_USA: - case LC_WE_KOREA: // 한국이지만 UK 버전 기반이므로 여기 넣음 - case LC_TAIWAN: // 대만이지만 WE_KOREA 버전 기반이므로 여기 넣음 - case LC_JAPAN: // 일본이지만 WE(World Edition -_-) 버전이므로 여기 넣음 - case LC_NEWCIBN: - case LC_CANADA: // 캐나다 GF에서 서비스 시작 - return true; - } - - return false; -} - diff --git a/src/game/src/locale_service.h b/src/game/src/locale_service.h index 1e26298..5b49cb0 100644 --- a/src/game/src/locale_service.h +++ b/src/game/src/locale_service.h @@ -1,7 +1,8 @@ -#ifndef __LOCALE_SERVCICE__ -#define __LOCALE_SERVCICE__ +#pragma once -bool LocaleService_Init(const std::string& c_rstServiceName); +extern std::string g_stLanguage; + +bool LocaleService_Init(const std::string& language); void LocaleService_LoadLocaleStringFile(); void LocaleService_LoadEmpireTextConvertTables(); void LocaleService_TransferDefaultSetting(); @@ -9,66 +10,8 @@ const std::string& LocaleService_GetBasePath(); const std::string& LocaleService_GetMapPath(); const std::string& LocaleService_GetQuestPath(); -enum eLocalization +struct LanguageSettings { - LC_NOSET = 0, - - LC_YMIR, - LC_JAPAN, - LC_ENGLISH, - LC_HONGKONG, - LC_NEWCIBN, - LC_GERMANY, - LC_KOREA, - LC_FRANCE, - LC_ITALY, - LC_SPAIN, - LC_UK, - LC_TURKEY, - LC_POLAND, - LC_PORTUGAL, - LC_CANADA, - LC_BRAZIL, - LC_GREEK, - LC_RUSSIA, - LC_DENMARK, - LC_BULGARIA, - LC_CROATIA, - LC_MEXICO, - LC_ARABIA, - LC_CZECH, - LC_ROMANIA, - LC_HUNGARY, - LC_NETHERLANDS, - LC_SINGAPORE, - LC_VIETNAM, - LC_THAILAND, - LC_USA, - LC_WE_KOREA, ///< World Edition version for korea - LC_TAIWAN, - - LC_MAX_VALUE + std::string mysqlCharsetName; + bool useLocaleString = true; }; - -eLocalization LC_GetLocalType(); - -bool LC_IsLocale( const eLocalization t ); -bool LC_IsYMIR(); -bool LC_IsJapan(); -bool LC_IsEnglish(); -bool LC_IsHongKong(); -bool LC_IsNewCIBN(); -bool LC_IsGermany(); -bool LC_IsKorea(); -bool LC_IsEurope(); -bool LC_IsCanada(); -bool LC_IsBrazil(); -bool LC_IsSingapore(); -bool LC_IsVietnam(); -bool LC_IsThailand(); -bool LC_IsWE_Korea(); -bool LC_IsTaiwan(); - -bool LC_IsWorldEdition(); - -#endif diff --git a/src/game/src/log.cpp b/src/game/src/log.cpp index 6aa1671..c1e8241 100644 --- a/src/game/src/log.cpp +++ b/src/game/src/log.cpp @@ -219,7 +219,6 @@ void LogManager::ShoutLog(BYTE bChannel, BYTE bEmpire, const char * pszText) void LogManager::LevelLog(LPCHARACTER pChar, unsigned int level, unsigned int playhour) { - if (true == LC_IsEurope()) { DWORD aid = 0; @@ -231,11 +230,6 @@ void LogManager::LevelLog(LPCHARACTER pChar, unsigned int level, unsigned int pl Query("REPLACE INTO levellog%s (name, level, time, account_id, pid, playtime) VALUES('%s', %u, NOW(), %u, %u, %d)", get_table_postfix(), pChar->GetName(), level, aid, pChar->GetPlayerID(), playhour); } - else - { - Query("REPLACE INTO levellog%s (name, level, time, playtime) VALUES('%s', %u, NOW(), %d)", - get_table_postfix(), pChar->GetName(), level, playhour); - } } void LogManager::BootLog(const char * c_pszHostName, BYTE bChannel) diff --git a/src/game/src/main.cpp b/src/game/src/main.cpp index 4425765..b8785ce 100644 --- a/src/game/src/main.cpp +++ b/src/game/src/main.cpp @@ -674,15 +674,12 @@ int start(int argc, char **argv) } else { - SPDLOG_INFO("MasterAuth {}", (int) LC_GetLocalType()); + SPDLOG_INFO("MasterAuth"); } - } - /* game server to teen server */ + } + /* game server to spam server */ else { - if (teen_addr[0] && teen_port) - g_TeenDesc = DESC_MANAGER::instance().CreateConnectionDesc(ev_base, dns_base, teen_addr, teen_port, PHASE_TEEN, true); - extern unsigned int g_uiSpamBlockDuration; extern unsigned int g_uiSpamBlockScore; extern unsigned int g_uiSpamReloadCycle; diff --git a/src/game/src/p2p.cpp b/src/game/src/p2p.cpp index a596ce4..48759b6 100644 --- a/src/game/src/p2p.cpp +++ b/src/game/src/p2p.cpp @@ -141,10 +141,7 @@ void P2P_MANAGER::Login(LPDESC d, const TPacketGGLogin * p) UpdateP2P = true; pkCCI = M2_NEW CCI; - if (false == LC_IsBrazil()) - strlcpy(pkCCI->szName, p->szName, sizeof(pkCCI->szName)); - else - trim_and_lower(p->szName, pkCCI->szName, sizeof(pkCCI->szName)); + strlcpy(pkCCI->szName, p->szName, sizeof(pkCCI->szName)); pkCCI->dwPID = p->dwPID; pkCCI->bEmpire = p->bEmpire; @@ -231,19 +228,7 @@ CCI * P2P_MANAGER::FindByPID(DWORD pid) CCI * P2P_MANAGER::Find(const char * c_pszName) { - TCCIMap::const_iterator it; - - if( false == LC_IsBrazil() ) - { - it = m_map_pkCCI.find(c_pszName); - } - else - { - char szName[CHARACTER_NAME_MAX_LEN + 1]; - trim_and_lower(c_pszName, szName, sizeof(szName)); - - it = m_map_pkCCI.find(szName); - } + TCCIMap::const_iterator it = m_map_pkCCI.find(c_pszName); if (it == m_map_pkCCI.end()) return NULL; diff --git a/src/game/src/packet.h b/src/game/src/packet.h index be9e28a..e925e01 100644 --- a/src/game/src/packet.h +++ b/src/game/src/packet.h @@ -820,7 +820,6 @@ enum EPhase PHASE_DBCLIENT, PHASE_P2P, PHASE_AUTH, - PHASE_TEEN, }; typedef struct packet_phase diff --git a/src/game/src/party.cpp b/src/game/src/party.cpp index 469b647..430c5a2 100644 --- a/src/game/src/party.cpp +++ b/src/game/src/party.cpp @@ -1356,7 +1356,7 @@ void CParty::Update() bool bLongTimeExpBonusChanged = false; // 파티 결성 후 충분한 시간이 지나면 경험치 보너스를 받는다. - if (!m_iLongTimeExpBonus && (get_dword_time() - m_dwPartyStartTime > PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS * 60 * 1000 / (g_iUseLocale?1:2))) + if (!m_iLongTimeExpBonus && (get_dword_time() - m_dwPartyStartTime > PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS * 60 * 1000)) { bLongTimeExpBonusChanged = true; m_iLongTimeExpBonus = 5; @@ -1681,21 +1681,10 @@ int CParty::ComputePartyBonusExpPercent() if (leader && (leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP) || leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP_MALL) || leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP_GIFT) || leader->IsEquipUniqueGroup(10010))) { - // 중국측 육도 적용을 확인해야한다. - if (g_iUseLocale) - { - iBonusPartyExpFromItem = 30; - } - else - { - iBonusPartyExpFromItem = KOR_aiUniqueItemPartyBonusExpPercentByMemberCount[iMemberCount]; - } + iBonusPartyExpFromItem = 30; } - if (g_iUseLocale) - return iBonusPartyExpFromItem + CHN_aiPartyBonusExpPercentByMemberCount[iMemberCount]; - else - return iBonusPartyExpFromItem + KOR_aiPartyBonusExpPercentByMemberCount[iMemberCount]; + return iBonusPartyExpFromItem + aiPartyBonusExpPercentByMemberCount[iMemberCount]; // END_OF_UPGRADE_PARTY_BONUS } diff --git a/src/game/src/pvp.cpp b/src/game/src/pvp.cpp index e2b83f8..7fb961a 100644 --- a/src/game/src/pvp.cpp +++ b/src/game/src/pvp.cpp @@ -431,14 +431,6 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim) if (pkChr->GetEmpire() != pkVictim->GetEmpire()) { - if ( LC_IsYMIR() == true || LC_IsKorea() == true ) - { - if ( pkChr->GetPKMode() == PK_MODE_PROTECT || pkVictim->GetPKMode() == PK_MODE_PROTECT ) - { - return false; - } - } - return true; } @@ -477,51 +469,19 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim) if (pkChr->GetPKMode() == PK_MODE_REVENGE) { - //if (!g_iUseLocale) - if (1) + if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() >= 0) { - if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() >= 0) - { - pkChr->SetKillerMode(true); - return true; - } - else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() < 0) - return true; - } - else - { - if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0) - break; - else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() >= 0) - break; - - beKillerMode = true; + pkChr->SetKillerMode(true); + return true; } + else if (pkChr->GetAlignment() >= 0 && pkVictim->GetAlignment() < 0) + return true; } break; case PK_MODE_GUILD: // Same implementation from PK_MODE_FREE except for attacking same guild if (!pkChr->GetGuild() || (pkVictim->GetGuild() != pkChr->GetGuild())) - { - if (1) - //if (!g_iUseLocale) - { - if (pkVictim->GetAlignment() >= 0) - pkChr->SetKillerMode(true); - else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0) - pkChr->SetKillerMode(true); - - return true; - } - else - beKillerMode = true; - } - break; - - case PK_MODE_FREE: - //if (!g_iUseLocale) - if (1) { if (pkVictim->GetAlignment() >= 0) pkChr->SetKillerMode(true); @@ -530,9 +490,15 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim) return true; } - else - beKillerMode = true; break; + + case PK_MODE_FREE: + if (pkVictim->GetAlignment() >= 0) + pkChr->SetKillerMode(true); + else if (pkChr->GetAlignment() < 0 && pkVictim->GetAlignment() < 0) + pkChr->SetKillerMode(true); + + return true; } } diff --git a/src/game/src/questlua.cpp b/src/game/src/questlua.cpp index 6e55692..e28177e 100644 --- a/src/game/src/questlua.cpp +++ b/src/game/src/questlua.cpp @@ -510,10 +510,10 @@ namespace quest } } - if (LC_IsEurope()) + { char translateFileName[256]; - snprintf(translateFileName, sizeof(translateFileName), "%s/translate.lua", LocaleService_GetBasePath().c_str()); + snprintf(translateFileName, sizeof(translateFileName), "%s/translate_%s.lua", LocaleService_GetBasePath().c_str(), g_stLanguage.c_str()); int translateLoadingResult = lua_dofile(L, translateFileName); SPDLOG_DEBUG("LoadTranslate({}), returns {}", translateFileName, translateLoadingResult); @@ -526,14 +526,7 @@ namespace quest { char questLocaleFileName[256]; - if (LC_IsEurope()) - { - snprintf(questLocaleFileName, sizeof(questLocaleFileName), "%s/locale.lua", g_stQuestDir.c_str()); - } - else - { - snprintf(questLocaleFileName, sizeof(questLocaleFileName), "%s/locale_%s.lua", g_stQuestDir.c_str(), g_stLocale.c_str()); - } + snprintf(questLocaleFileName, sizeof(questLocaleFileName), "%s/locale.lua", g_stQuestDir.c_str()); int questLocaleLoadingResult = lua_dofile(L, questLocaleFileName); SPDLOG_DEBUG("LoadQuestLocale({}), returns {}", questLocaleFileName, questLocaleLoadingResult); diff --git a/src/game/src/questlua_arena.cpp b/src/game/src/questlua_arena.cpp index 563d78c..5bc2c5c 100644 --- a/src/game/src/questlua_arena.cpp +++ b/src/game/src/questlua_arena.cpp @@ -5,8 +5,6 @@ #include "char_manager.h" #include "arena.h" -extern bool LC_IsCanada(); - namespace quest { int arena_start_duel(lua_State * L) @@ -39,15 +37,6 @@ namespace quest lua_pushnumber(L, 2); return 1; } - if (LC_IsCanada() == true) - { - if ( CArenaManager::instance().StartDuel(ch, ch2, nSetPoint, 10) == false ) - { - lua_pushnumber(L, 3); - return 1; - } - } - else { if ( CArenaManager::instance().StartDuel(ch, ch2, nSetPoint) == false ) { diff --git a/src/game/src/questlua_pc.cpp b/src/game/src/questlua_pc.cpp index 205831f..8d53904 100644 --- a/src/game/src/questlua_pc.cpp +++ b/src/game/src/questlua_pc.cpp @@ -2063,11 +2063,6 @@ teleport_area: // 3: 이미 같은 이름이 사용중 // 4: 성공 // 5: 해당 기능 지원하지 않음 - if ( LC_IsEurope() ) - { - lua_pushnumber(L, 5); - return 1; - } LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); diff --git a/src/game/src/questmanager.cpp b/src/game/src/questmanager.cpp index bc2d1dc..d1065f0 100644 --- a/src/game/src/questmanager.cpp +++ b/src/game/src/questmanager.cpp @@ -133,16 +133,8 @@ namespace quest m_mapNPC[0].Set(0, "notarget"); } - if (g_iUseLocale) - { - SetEventFlag("guild_withdraw_delay", 1); - SetEventFlag("guild_disband_delay", 1); - } - else - { - SetEventFlag("guild_withdraw_delay", 3); - SetEventFlag("guild_disband_delay", 7); - } + SetEventFlag("guild_withdraw_delay", 1); + SetEventFlag("guild_disband_delay", 1); return true; } @@ -1319,7 +1311,7 @@ namespace quest } } } - else if (name == "pre_event_hc" && true == LC_IsEurope()) + else if (name == "pre_event_hc") { const DWORD EventNPC = 20090; diff --git a/src/game/src/sectree_manager.cpp b/src/game/src/sectree_manager.cpp index 498d5af..202c8e1 100644 --- a/src/game/src/sectree_manager.cpp +++ b/src/game/src/sectree_manager.cpp @@ -76,67 +76,6 @@ LPSECTREE SECTREE_MAP::Find(DWORD x, DWORD y) void SECTREE_MAP::Build() { - // 클라이언트에게 반경 150m 캐릭터의 정보를 주기위해 - // 3x3칸 -> 5x5 칸으로 주변sectree 확대(한국) - if (LC_IsYMIR() || LC_IsKorea()) - { -#define NEIGHBOR_LENGTH 5 -#define NUM_OF_NEIGHBORS (NEIGHBOR_LENGTH * NEIGHBOR_LENGTH - 1) - int width = NEIGHBOR_LENGTH / 2; - struct neighbor_coord_s - { - int x; - int y; - } neighbor_coord[NUM_OF_NEIGHBORS]; - - { - int i = 0; - for (int x = -width; x <= width; ++x) - { - for (int y = -width; y <= width; ++y) - { - if (x == 0 && y == 0) - continue; - - neighbor_coord[i].x = x * SECTREE_SIZE; - neighbor_coord[i].y = y * SECTREE_SIZE; - ++i; - } - } - } - - // - // 모든 sectree에 대해 주위 sectree들 리스트를 만든다. - // - MapType::iterator it = map_.begin(); - - while (it != map_.end()) - { - LPSECTREE tree = it->second; - - tree->m_neighbor_list.push_back(tree); // 자신을 넣는다. - - SPDLOG_TRACE("{}x{}", (int) tree->m_id.coord.x, (int) tree->m_id.coord.y); - - int x = tree->m_id.coord.x * SECTREE_SIZE; - int y = tree->m_id.coord.y * SECTREE_SIZE; - - for (DWORD i = 0; i < NUM_OF_NEIGHBORS; ++i) - { - LPSECTREE tree2 = Find(x + neighbor_coord[i].x, y + neighbor_coord[i].y); - - if (tree2) - { - SPDLOG_TRACE(" {} {}x{}", i, (int) tree2->m_id.coord.x, (int) tree2->m_id.coord.y); - tree->m_neighbor_list.push_back(tree2); - } - } - - ++it; - } - } - else - { struct neighbor_coord_s { int x; @@ -181,7 +120,6 @@ void SECTREE_MAP::Build() ++it; } - } } SECTREE_MANAGER::SECTREE_MANAGER() diff --git a/src/game/src/shop.cpp b/src/game/src/shop.cpp index 4b55903..4547462 100644 --- a/src/game/src/shop.cpp +++ b/src/game/src/shop.cpp @@ -294,40 +294,21 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos) DWORD dwTax = 0; int iVal = 0; - if (LC_IsYMIR() || LC_IsKorea()) - { - if (0 < (iVal = quest::CQuestManager::instance().GetEventFlag("trade_tax"))) - { - if (iVal > 100) - iVal = 100; - dwTax = dwPrice * iVal / 100; - dwPrice = dwPrice - dwTax; - } - else - { - iVal = 3; - dwTax = dwPrice * iVal / 100; - dwPrice = dwPrice - dwTax; - } + iVal = quest::CQuestManager::instance().GetEventFlag("personal_shop"); + + if (0 < iVal) + { + if (iVal > 100) + iVal = 100; + + dwTax = dwPrice * iVal / 100; + dwPrice = dwPrice - dwTax; } else { - iVal = quest::CQuestManager::instance().GetEventFlag("personal_shop"); - - if (0 < iVal) - { - if (iVal > 100) - iVal = 100; - - dwTax = dwPrice * iVal / 100; - dwPrice = dwPrice - dwTax; - } - else - { - iVal = 0; - dwTax = 0; - } + iVal = 0; + dwTax = 0; } // 상점에서 살?? 세금 5% diff --git a/src/game/src/shopEx.cpp b/src/game/src/shopEx.cpp index fedcd70..4137daa 100644 --- a/src/game/src/shopEx.cpp +++ b/src/game/src/shopEx.cpp @@ -218,18 +218,8 @@ int CShopEx::Buy(LPCHARACTER ch, BYTE pos) if (item) SPDLOG_DEBUG("ShopEx: BUY: name {} {}(x {}):{} price {}", ch->GetName(), item->GetName(), item->GetCount(), item->GetID(), dwPrice); - if (LC_IsBrazil()) - { - ch->SaveReal(); - db_clientdesc->DBPacketHeader(HEADER_GD_FLUSH_CACHE, 0, sizeof(DWORD)); - DWORD pid = ch->GetPlayerID(); - db_clientdesc->Packet(&pid, sizeof(DWORD)); - } - else - { - ch->Save(); - } + ch->Save(); - return (SHOP_SUBHEADER_GC_OK); + return (SHOP_SUBHEADER_GC_OK); } diff --git a/src/game/src/shop_manager.cpp b/src/game/src/shop_manager.cpp index 0cb59ff..3ffca46 100644 --- a/src/game/src/shop_manager.cpp +++ b/src/game/src/shop_manager.cpp @@ -317,18 +317,10 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount) DWORD dwTax = 0; int iVal = 3; - if (LC_IsYMIR() || LC_IsKorea()) - { - dwTax = dwPrice * iVal / 100; - dwPrice -= dwTax; - } - else - { - dwTax = dwPrice * iVal/100; - dwPrice -= dwTax; - } + dwTax = dwPrice * iVal/100; + dwPrice -= dwTax; - SPDLOG_TRACE("Sell Item price id {} {} itemid {}", ch->GetPlayerID(), ch->GetName(), item->GetID()); + SPDLOG_TRACE("Sell Item price id {} {} itemid {}", ch->GetPlayerID(), ch->GetName(), item->GetID()); const int64_t nTotalMoney = static_cast(ch->GetGold()) + static_cast(dwPrice); @@ -349,11 +341,6 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount) if (bCount == item->GetCount()) { - // 한국에는 아이템을 버리고 복구해달라는 진상유저들이 많아서 - // 상점 판매시 속성로그를 남긴다. - if (LC_IsYMIR()) - item->AttrLog(); - ITEM_MANAGER::instance().RemoveItem(item, "SELL"); } else diff --git a/src/game/src/start_position.h b/src/game/src/start_position.h index 6b90645..5cab096 100644 --- a/src/game/src/start_position.h +++ b/src/game/src/start_position.h @@ -57,9 +57,6 @@ inline DWORD CREATE_START_X(BYTE e) { if (1 <= e && e <= 3) { - if (LC_IsCanada() == true) - return g_create_position_canada[e][0]; - return g_create_position[e][0]; } @@ -70,9 +67,6 @@ inline DWORD CREATE_START_Y(BYTE e) { if (1 <= e && e <= 3) { - if (LC_IsCanada() == true) - return g_create_position_canada[e][1]; - return g_create_position[e][1]; } diff --git a/src/game/src/threeway_war.cpp b/src/game/src/threeway_war.cpp index d622e23..6fed00d 100644 --- a/src/game/src/threeway_war.cpp +++ b/src/game/src/threeway_war.cpp @@ -269,24 +269,9 @@ int GetKillValue(int level) int iMinLevelFor2Point, iMaxLevelFor2Point; int iMinLevelFor3Point, iMaxLevelFor3Point; - if (LC_IsBrazil() == true) - { - iMinLevelFor1Point = 35; iMaxLevelFor1Point = 50; - iMinLevelFor2Point = 51; iMaxLevelFor2Point = 70; - iMinLevelFor3Point = 71; iMaxLevelFor3Point = 99; - } - else if (LC_IsYMIR() == false) - { - iMinLevelFor1Point = 30; iMaxLevelFor1Point = 39; - iMinLevelFor2Point = 40; iMaxLevelFor2Point = 49; - iMinLevelFor3Point = 50; iMaxLevelFor3Point = 99; - } - else - { - iMinLevelFor1Point = 50; iMaxLevelFor1Point = 59; - iMinLevelFor2Point = 60; iMaxLevelFor2Point = 69; - iMinLevelFor3Point = 70; iMaxLevelFor3Point = 99; - } + iMinLevelFor1Point = 50; iMaxLevelFor1Point = 59; + iMinLevelFor2Point = 60; iMaxLevelFor2Point = 69; + iMinLevelFor3Point = 70; iMaxLevelFor3Point = 99; if (iMinLevelFor1Point <= level && level <= iMaxLevelFor1Point) {