summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/ISSUE_TEMPLATE.md54
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md37
-rw-r--r--.gitlab-ci.yml196
-rw-r--r--README.md6
-rw-r--r--conf/map/battle/client.conf5
-rw-r--r--db/pre-re/map_zone_db.conf2
-rw-r--r--db/pre-re/skill_db.conf3
-rw-r--r--db/re/item_db.conf2
-rw-r--r--db/re/map_zone_db.conf2
-rw-r--r--doc/script_commands.txt68
-rw-r--r--npc/airports/airships.txt2
-rw-r--r--npc/events/gdevent_aru.txt2
-rw-r--r--npc/events/gdevent_sch.txt2
-rw-r--r--npc/instances/NydhoggsNest.txt18
-rw-r--r--npc/mapflag/zone.txt12
-rw-r--r--npc/other/Global_Functions.txt10
-rw-r--r--npc/other/auction.txt2
-rw-r--r--npc/quests/kiel_hyre_quest.txt6
-rw-r--r--npc/quests/quests_13_1.txt6
-rw-r--r--npc/quests/quests_hugel.txt4
-rw-r--r--npc/quests/quests_juperos.txt110
-rw-r--r--npc/quests/quests_lighthalzen.txt2
-rw-r--r--npc/quests/quests_louyang.txt2
-rw-r--r--npc/quests/quests_morocc.txt14
-rw-r--r--npc/quests/quests_moscovia.txt131
-rw-r--r--npc/quests/quests_nameless.txt6
-rw-r--r--npc/quests/skills/knight_skills.txt1
-rw-r--r--npc/quests/the_sign_quest.txt10
-rw-r--r--npc/re/jobs/3-2/royal_guard.txt1
-rw-r--r--npc/re/merchants/shadow_refiner.txt2
-rw-r--r--npc/re/quests/eden/eden_quests.txt158
-rw-r--r--npc/woe-se/agit_main_se.txt29
-rw-r--r--sql-files/item_db.sql2
-rw-r--r--sql-files/item_db2.sql2
-rw-r--r--sql-files/item_db_re.sql4
-rw-r--r--sql-files/logs.sql2
-rw-r--r--sql-files/main.sql1
-rw-r--r--sql-files/mob_db.sql2
-rw-r--r--sql-files/mob_db2.sql2
-rw-r--r--sql-files/mob_db_re.sql2
-rw-r--r--sql-files/upgrades/2016-10-26--10-29.sql23
-rw-r--r--sql-files/upgrades/index.txt1
-rw-r--r--src/common/HPMDataCheck.h2
-rw-r--r--src/common/HPMSymbols.inc.h2
-rw-r--r--src/common/core.c2
-rw-r--r--src/common/md5calc.c32
-rw-r--r--src/common/md5calc.h2
-rw-r--r--src/map/battle.c1
-rw-r--r--src/map/battle.h1
-rw-r--r--src/map/clif.c36
-rw-r--r--src/map/clif.h2
-rw-r--r--src/map/map.h1
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/packets_struct.h9
-rw-r--r--src/map/script.c418
-rw-r--r--src/map/unit.c2
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc10
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc14
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.sources.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc14
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.sources.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc2
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc26
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.sources.inc2
69 files changed, 992 insertions, 548 deletions
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..c661cbd47
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,54 @@
+[//]: # (**********************************)
+[//]: # (** Fill in the following fields **)
+[//]: # (**********************************)
+
+[//]: # (Note: Lines beginning with syntax such as this one, are comments and will not be visible in your report!)
+
+### Issue Prelude
+
+[//]: # (Please complete these mandatory steps and check the following boxes by putting an `x` inside the brackets _before_ filing your issue)
+
+- [ ] I have not modified the source prior to reproducing this issue.
+- [ ] I am using the latest version of Hercules.
+- [ ] I am aware that this report will be closed or deleted if it becomes obvious that I am stating the false.
+
+### Description
+
+[//]: # (Description of the problem or issue at length.)
+[//]: # (Please specify any battle configuration related to the components of this issue that have been changed from the default values. This will allow quicker determination of the cause of the problem.)
+
+### Current Behavior
+
+[//]: # (Describe at length what you noticed during your analysis.)
+[//]: # (If this is a crash, post the core/stack-dump or crash-log to https://gist.github.com/)
+[//]: # (If you are referencing from sources such as iROwiki or ratemyserver.net, please quote specific information rather than providing the links alone.)
+
+### Expected Behavior
+
+[//]: # (Tell us what should happen instead.)
+
+### Steps To Reproduce The Issue
+
+1. Step 1
+2. Step 2
+3. Step 3
+
+**Branch(es):**
+- [ ] master
+- [ ] other
+
+**Hercules rev. hash/commit:**
+
+Git revision src:
+
+[//]: # (Copy the first 3 lines of the login-server, char-server or map-server startup.)
+[//]: # ( [Info]: Hercules 64-bit for Mac OS X )
+[//]: # ( [Info]: Git revision src: 'a5918b329ca0826b04dca32ede783586403f58db' )
+[//]: # ( [Info]: Git revision scripts: 'a5918b329ca0826b04dca32ede783586403f58db' )
+
+### Operating System
+
+[//]: # (Mac OS X 10.12.3 16D32 [x86_64])
+[//]: # (Thank you for adhering to this process! It ensures your issue is resolved quickly and that neither your nor our time is needlessly wasted.)
+[//]: # (This template is for problem reports. For other types of report, edit it accordingly.)
+[//]: # (For fixes please create a Pull Request.)
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..c62641f08
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,37 @@
+[//]: # (**********************************)
+[//]: # (** Fill in the following fields **)
+[//]: # (**********************************)
+
+[//]: # (Note: Lines beginning with syntax such as this one, are comments and will not be visible in your report!)
+
+### Pull Request Prelude
+
+[//]: # (Thank you for working on improving Hercules!)
+
+[//]: # (Please complete these steps and check the following boxes by putting an `x` inside the brackets _before_ filing your Pull Request.)
+
+- [ ] I have followed [proper Hercules code styling][code].
+- [ ] I have read and understood the [contribution guidelines][cont] before making this PR.
+- [ ] I am aware that this PR will be closed if the above-mentioned criteria are not fulfilled.
+
+### Changes Proposed
+
+[//]: # (Describe at length, the changes that this pull request makes.)
+
+**Affected Branches:**
+
+[//]: # (Master? Slave?)
+
+**Issues addressed:**
+
+[//]: # (Issue Tracker Number if any.)
+
+### Known Issues and TODO List
+
+[//]: # (Insert checklist here)
+[//]: # (Syntax: - [ ] Checkbox)
+
+[//]: # (**NOTE** Enable the setting "[√] Allow edits from maintainers." when creating your pull request if you have not already enabled it.)
+
+[cont]: https://github.com/HerculesWS/Hercules/blob/master/CONTRIBUTING.md
+[code]: https://github.com/HerculesWS/Hercules/wiki/Coding-Style
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bbdc2caae..8a3eb53c5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,7 +18,7 @@ variables: &base_vars
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mysql
- ./tools/ci/travis.sh getplugins || true
services:
@@ -37,10 +37,10 @@ pre_re:clang-3.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: clang-3.9 mysql-client
+ INSTALL_PACKAGES: clang-3.9 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=clang-3.9 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -49,22 +49,46 @@ re:clang-3.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: clang-3.9 mysql-client
+ INSTALL_PACKAGES: clang-3.9 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=clang-3.9 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+pre_re:clang-4.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: primary
+ image: debian:unstable
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-4.0 mysql-client libmysqlclient-dev
+ script:
+ - ./tools/ci/travis.sh build CC=clang-4.0 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+
+re:clang-4.0:
+ <<: *branch_exceptions
+ <<: *prerequisites
+ stage: primary
+ image: debian:unstable
+ variables:
+ <<: *base_vars
+ INSTALL_PACKAGES: clang-4.0 mysql-client libmysqlclient-dev
+ script:
+ - ./tools/ci/travis.sh build CC=clang-4.0 --enable-debug --enable-Werror --enable-buildbot
+ - ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
+
pre_re:gcc-4.6:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:oldstable
+ image: debian:wheezy
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.6 mysql-client
+ INSTALL_PACKAGES: gcc-4.6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -73,10 +97,10 @@ re:gcc-4.6:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:oldstable
+ image: debian:wheezy
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.6 mysql-client
+ INSTALL_PACKAGES: gcc-4.6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.6 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -85,10 +109,10 @@ pre_re:gcc-4.7:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:oldstable
+ image: debian:wheezy
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.7 mysql-client
+ INSTALL_PACKAGES: gcc-4.7 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.7 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -97,10 +121,10 @@ re:gcc-4.7:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:oldstable
+ image: debian:wheezy
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.7 mysql-client
+ INSTALL_PACKAGES: gcc-4.7 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.7 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -109,10 +133,10 @@ pre_re:gcc-4.8:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.8 mysql-client
+ INSTALL_PACKAGES: gcc-4.8 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.8 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -121,10 +145,10 @@ re:gcc-4.8:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.8 mysql-client
+ INSTALL_PACKAGES: gcc-4.8 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.8 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -133,10 +157,10 @@ pre_re:gcc-4.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.9 mysql-client
+ INSTALL_PACKAGES: gcc-4.9 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.9 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -145,10 +169,10 @@ re:gcc-4.9:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-4.9 mysql-client
+ INSTALL_PACKAGES: gcc-4.9 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-4.9 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -156,11 +180,11 @@ re:gcc-4.9:
pre_re:gcc-5:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:unstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-5 mysql-client
+ INSTALL_PACKAGES: gcc-5 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-5 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -168,11 +192,11 @@ pre_re:gcc-5:
re:gcc-5:
<<: *branch_exceptions
<<: *prerequisites
- stage: primary
+ stage: secondary
image: debian:unstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-5 mysql-client
+ INSTALL_PACKAGES: gcc-5 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-5 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -181,10 +205,10 @@ pre_re:gcc-6:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -193,10 +217,10 @@ re:gcc-6:
<<: *branch_exceptions
<<: *prerequisites
stage: primary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -208,7 +232,7 @@ pre_re:gcc-6_i386:
image: vicamo/debian:sid-i386
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -220,7 +244,7 @@ re:gcc-6_i386:
image: vicamo/debian:sid-i386
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -229,10 +253,10 @@ pre_re:gcc-6_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal --disable-manager --enable-sanitize=full
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -241,10 +265,10 @@ re:gcc-6_sanitize:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -256,7 +280,7 @@ pre_re:gcc-6_i386_sanitize:
image: vicamo/debian:sid-i386
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal --disable-manager --enable-sanitize=full
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -268,7 +292,7 @@ re:gcc-6_i386_sanitize:
image: vicamo/debian:sid-i386
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 mysql-client
+ INSTALL_PACKAGES: gcc-6 mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-manager --enable-sanitize=full
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -277,10 +301,10 @@ pre_re:gcc-6_cov:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 gcovr mysql-client
+ INSTALL_PACKAGES: gcc-6 gcovr mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot --disable-renewal CFLAGS="-coverage" LDFLAGS="-coverage"
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -296,10 +320,10 @@ re:gcc-6_cov:
<<: *branch_exceptions
<<: *prerequisites
stage: secondary
- image: debian:unstable
+ image: debian:stretch
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc-6 gcovr mysql-client
+ INSTALL_PACKAGES: gcc-6 gcovr mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build CC=gcc-6 --enable-debug --enable-Werror --enable-buildbot CFLAGS="-coverage" LDFLAGS="-coverage"
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -317,10 +341,10 @@ pre_re:debian-oldstable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:wheezy
+ image: debian:oldstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -329,10 +353,10 @@ re:debian-oldstable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:wheezy
+ image: debian:oldstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -341,10 +365,10 @@ pre_re:debian-stable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:jessie
+ image: debian:stable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -353,10 +377,10 @@ re:debian-stable:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:jessie
+ image: debian:stable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -365,10 +389,10 @@ pre_re:debian-testing:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:stretch
+ image: debian:testing
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -377,10 +401,10 @@ re:debian-testing:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:stretch
+ image: debian:testing
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mariadb-client libmariadbclient-dev-compat
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -474,7 +498,7 @@ pre_re:ubuntu-xenial:
- mysql:latest
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -488,7 +512,7 @@ re:ubuntu-xenial:
- mysql:latest
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
@@ -499,10 +523,10 @@ pre_re:mysql-5.5:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client-5.5
+ INSTALL_PACKAGES: gcc mysql-client-5.5 libmysqlclient-dev
services:
- mysql:5.5
script:
@@ -513,10 +537,10 @@ re:mysql-5.5:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client-5.5
+ INSTALL_PACKAGES: gcc mysql-client-5.5 libmysqlclient-dev
services:
- mysql:5.5
script:
@@ -527,10 +551,10 @@ pre_re:mysql-5.6:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:unstable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client-5.6
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
services:
- mysql:5.6
script:
@@ -541,10 +565,10 @@ re:mysql-5.6:
<<: *branch_exceptions
<<: *prerequisites
stage: platforms
- image: debian:unstable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client-5.6
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
services:
- mysql:5.6
script:
@@ -558,8 +582,7 @@ pre_re:mysql-5.7:
image: debian:unstable
variables:
<<: *base_vars
- # mysql-client-5.7 is not available
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client-5.7 libmysqlclient-dev
services:
- mysql:5.7
script:
@@ -573,26 +596,25 @@ re:mysql-5.7:
image: debian:unstable
variables:
<<: *base_vars
- # mysql-client-5.7 is not available
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client-5.7 libmysqlclient-dev
services:
- mysql:5.7
script:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mysql
-pre_re:mariadb-10:
+pre_re:mariadb-10.0:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mariadb-client-10.0
+ INSTALL_PACKAGES: gcc mariadb-client-10.0 libmysqlclient-dev
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- ./tools/ci/travis.sh getplugins || true
services:
@@ -601,18 +623,18 @@ pre_re:mariadb-10:
- ./tools/ci/travis.sh build --enable-debug --enable-Werror --enable-buildbot --disable-renewal
- ./tools/ci/travis.sh test ragnarok ragnarok ragnarok mariadb
-re:mariadb-10:
+re:mariadb-10.0:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mariadb-client-10.0
+ INSTALL_PACKAGES: gcc mariadb-client-10.0 libmysqlclient-dev
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- ./tools/ci/travis.sh getplugins || true
services:
@@ -624,15 +646,15 @@ re:mariadb-10:
pre_re:mariadb-latest:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:unstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mariadb-client-10.0
+ INSTALL_PACKAGES: gcc mariadb-client-10.1 libmariadbclient-dev-compat
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- ./tools/ci/travis.sh getplugins || true
services:
@@ -644,15 +666,15 @@ pre_re:mariadb-latest:
re:mariadb-latest:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:unstable
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mariadb-client-10.0
+ INSTALL_PACKAGES: gcc mariadb-client-10.1 libmariadbclient-dev-compat
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok mariadb
- ./tools/ci/travis.sh getplugins || true
services:
@@ -664,15 +686,15 @@ re:mariadb-latest:
pre_re:percona:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok percona
- ./tools/ci/travis.sh getplugins || true
services:
@@ -684,15 +706,15 @@ pre_re:percona:
re:percona:
<<: *branch_exceptions
stage: platforms
- image: debian:stable
+ image: debian:jessie
variables:
<<: *base_vars
- INSTALL_PACKAGES: gcc mysql-client
+ INSTALL_PACKAGES: gcc mysql-client libmysqlclient-dev
before_script:
- echo "Building $CI_BUILD_NAME"
- uname -a
- ./tools/ci/retry.sh apt-get update
- - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES libmysqlclient-dev
+ - ./tools/ci/retry.sh apt-get install -y -qq $INSTALL_PACKAGES $DEBIAN_COMMON_PACKAGES
- ./tools/ci/travis.sh importdb ragnarok ragnarok ragnarok percona
- ./tools/ci/travis.sh getplugins || true
services:
diff --git a/README.md b/README.md
index 8ade896f0..dc7e9e72e 100644
--- a/README.md
+++ b/README.md
@@ -101,8 +101,7 @@ the end of this file).
3. Connect to the MySQL server as root:
- Create a database (hercules): `CREATE DATABASE hercules;`
- Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
- - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON
- \`hercules\`.* TO 'hercules'@'localhost';`
+ - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON hercules.* TO 'hercules'@'localhost';`
4. Connect to the MySQL server as the new user:
- Import the .sql files in /sql-files/ into the new database.
5. Start Visual Studio and load the provided solution:
@@ -123,8 +122,7 @@ the end of this file).
4. Connect to the MySQL server as root:
- Create a database (hercules): `CREATE DATABASE hercules;`
- Create a user (hercules): `CREATE USER 'hercules'@'localhost' IDENTIFIED BY 'password';`.
- - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON
- \`hercules\`.* TO 'hercules'@'localhost';`
+ - Give permissions (GRANT SELECT,INSERT,UPDATE,DELETE) to the user: `GRANT SELECT,INSERT,UPDATE,DELETE ON hercules.* TO 'hercules'@'localhost';`
5. Connect to the MySQL server as the new user:
- Import the .sql files in /sql-files/ into the new database.
6. Enter the Hercules directory and configure/build Hercules
diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf
index 818db3142..15fa71faf 100644
--- a/conf/map/battle/client.conf
+++ b/conf/map/battle/client.conf
@@ -69,6 +69,9 @@ pet_hair_style: 100
// Visible area size (how many squares away from a player can they see)
area_size: 14
+// Chat area size (how many squares away from a player can they chat)
+chat_area_size: 9
+
// Maximum walk path (how many cells a player can walk going to cursor)
// default: 17(official)
max_walk_path: 17
@@ -107,7 +110,7 @@ save_body_style: false
// Do not display cloth colors for the wedding costume?
// Note: Both save_clothcolor and wedding_modifydisplay have to be enabled
-// for this option to take effect. Set this to true if your cloth palettes
+// for this option to take effect. Set this to true if your cloth palettes
// pack doesn't has wedding palettes (or has less than the other jobs)
wedding_ignorepalette: false
diff --git a/db/pre-re/map_zone_db.conf b/db/pre-re/map_zone_db.conf
index cab00bbb9..a3d465c0a 100644
--- a/db/pre-re/map_zone_db.conf
+++ b/db/pre-re/map_zone_db.conf
@@ -66,7 +66,7 @@ zones: (
//heal: 70
}
skill_damage_cap: {
- //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage,
+ //Example Below caps Cold Bolt damage in maps within this zone to a maximum 50 damage,
// (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h)
// when cast vs players and monsters.
//MG_COLDBOLT: (50,"PLAYER | MONSTER")
diff --git a/db/pre-re/skill_db.conf b/db/pre-re/skill_db.conf
index 95683a9e0..a5c27257f 100644
--- a/db/pre-re/skill_db.conf
+++ b/db/pre-re/skill_db.conf
@@ -14881,11 +14881,10 @@ skill_db: (
Range: -9
Hit: "BDT_MULTIHIT"
SkillType: {
- Self: true
+ Enemy: true
}
SkillInfo: {
Spirit: true
- NoCastSelf: true
}
AttackType: "Weapon"
Element: "Ele_Weapon"
diff --git a/db/re/item_db.conf b/db/re/item_db.conf
index cac13166d..67617bec9 100644
--- a/db/re/item_db.conf
+++ b/db/re/item_db.conf
@@ -146789,7 +146789,7 @@ item_db: (
nomail: true
noauction: true
}
- Script: <" unitskilluseid getcharid(CHAR_ID_ACCOUNT), "AL_TELEPORT", 3; ">
+ Script: <" warp "moc_para01", 171, 115; ">
},
{
Id: 22514
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index 282a85abb..1dd4315b6 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -66,7 +66,7 @@ zones: (
//heal: 70
}
skill_damage_cap: {
- //Exemple Below caps firebolt damage in maps within this zone to a maximum 50 damage,
+ //Example Below caps Cold Bolt damage in maps within this zone to a maximum 50 damage,
// (depends on HMAP_ZONE_DAMAGE_CAP_TYPE in src/config/core.h)
// when cast vs players and monsters.
//MG_COLDBOLT: (50,"PLAYER | MONSTER")
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 82471aed8..7015feec1 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -1409,6 +1409,27 @@ getvariableofnpc() should not be used on them.
---------------------------------------
+*getvariableofpc(<variable>, <account id>{, <default value>})
+
+Returns a reference to a PC variable from the target player.
+If <default value> is passed, it will return this value if the player is
+not found.
+
+Examples:
+
+//This will return the value of @var, note that this can't be used, since
+//the value isn't caught.
+ getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player"));
+
+//This will set the .@v variable to the value of the player's @var
+//variable.
+ .@v = getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player"));
+
+//This will set the @var variable of the player to 1.
+ set(getvariableofpc(@var, getcharid(CHAR_ID_ACCOUNT, "player")), 1);
+
+---------------------------------------
+
*goto(<label>)
This command will make the script jump to a label, usually used in
@@ -4507,26 +4528,17 @@ changebase(Class); // Changes player back to default sprite.
---------------------------------------
-*classchange(<view id>, <type>)
+*classchange(<view id>, <type> {, <char id>})
This command is very ancient, it's origins are clouded in mystery.
-It will send a 'display id change' packet to everyone in the immediate
-area of the NPC object, which will supposedly make the NPC look like a
-different sprite, an NPC sprite ID, or a monster ID. This effect is not
-stored anywhere and will not persist (Which is odd, cause it would be
-relatively easy to make it do so) and most importantly, will not work at
-all since this command was broken with the introduction of advanced
-classes. The code is written with the assumption that the lowest sprite
-IDs are the job sprites and the anything beyond them is monster and NPC
-sprites, but since the advanced classes rolled in, they got the ID numbers
-on the other end of the number pool where monster sprites float.
-
-As a result it is currently impossible to call this command with a valid
-view id. It will do nothing whatsoever if the view ID is below 4047.
-Getting it to run will actually just crash the client.
+It will send a 'display id change' packet to player with given char ID
+or to everyone in the immediate area of the NPC object if char ID is 0 or
+not passed, which will make the NPC look like a different sprite, an NPC
+sprite ID, or a monster ID. This effect is not stored anywhere and will
+not persist.
+Note that you can't send a Job sprite ID
-It could be a real gem if it can be gotten to actually do what it's
-supposed to do, but this will only happen in a later Git revision.
+type is not used and should always be 0.
---------------------------------------
@@ -6854,7 +6866,7 @@ The maximum length of a chat room name is 60 letters.
The limit is the maximum number of people allowed to enter the chat room.
The attached NPC is included in this count. If the optional event and
trigger parameters are given, the event label
-("<NPC object name>::<label name>") will be invoked as if with a doevent()
+("<NPC object name>::<label name>") will be invoked as if with a donpcevent()
upon the number of people in the chat room reaching the given triggering
amount.
@@ -8046,6 +8058,26 @@ Example:
---------------------------------------
+*chr(<int>)
+
+Returns a char from its ASCII value.
+
+Example:
+
+ chr(99); //returns "c"
+
+---------------------------------------
+
+*ord(<chr>)
+
+Returns the ASCII value of char <chr>.
+
+Example:
+
+ ord("c"); //returns 99
+
+---------------------------------------
+
*setchar(<string>, <char>, <index>)
Returns the original string with the char at the specified index set to
diff --git a/npc/airports/airships.txt b/npc/airports/airships.txt
index 9653b9394..7bac19e21 100644
--- a/npc/airports/airships.txt
+++ b/npc/airports/airships.txt
@@ -1452,6 +1452,8 @@ function script applegamble {
getitem Apple,.@amount;
end;
}
+ mes("Alright.");
+ mes("Let me cast the dice again.");
}
else {
mesf("^FF0000%s^000000, you got ^FF0000%d^000000 and the total is now ^FF0000%d^000000. "
diff --git a/npc/events/gdevent_aru.txt b/npc/events/gdevent_aru.txt
index 898880d02..d192456aa 100644
--- a/npc/events/gdevent_aru.txt
+++ b/npc/events/gdevent_aru.txt
@@ -1333,7 +1333,7 @@ OnInit:
disablenpc "removepp_aru_gd";
end;
-OnTouch2:
+OnTouch:
.@paper_aru_gd = countitem(Glitering_PaperA);
.@spaper_aru_gd = countitem(Glitering_PaperB);
if ((.@paper_aru_gd > 0) || (.@spaper_aru_gd > 0)) {
diff --git a/npc/events/gdevent_sch.txt b/npc/events/gdevent_sch.txt
index e04a28075..dcb529ebe 100644
--- a/npc/events/gdevent_sch.txt
+++ b/npc/events/gdevent_sch.txt
@@ -1330,7 +1330,7 @@ OnInit:
disablenpc "removepp_sch_gd";
end;
-OnTouch2:
+OnTouch:
.@paper_sch_gd = countitem(Glitering_PaperA);
.@spaper_sch_gd = countitem(Glitering_PaperB);
if ((.@paper_sch_gd > 0) || (.@spaper_sch_gd > 0)) {
diff --git a/npc/instances/NydhoggsNest.txt b/npc/instances/NydhoggsNest.txt
index bad1aacec..16df567e3 100644
--- a/npc/instances/NydhoggsNest.txt
+++ b/npc/instances/NydhoggsNest.txt
@@ -2168,27 +2168,27 @@ OnTouch:
2@nyd,1,1,0 script ins_nyd2_spawn_mobs FAKE_NPC,{
OnInstanceInit:
- .@map$ = instance_mapname("2@nyd");
- areamonster .@map$,200,92,180,80,"Rhyncho",2020,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead";
- areamonster .@map$,200,92,180,80,"Phylla",2021,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead";
- areamonster .@map$,200,92,180,80,"Dark Shadow",2023,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead";
- areamonster .@map$,200,92,180,80,"Dark Pinguicula",2015,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead";
+ .@map$ = instance_mapname("2@nyd"); //temp fix since all mobs spawn on the same (inaccessable) area
+ areamonster .@map$,14,20,382,180,"Rhyncho",2020,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead";
+ areamonster .@map$,14,20,382,180,"Phylla",2021,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead";
+ areamonster .@map$,14,20,382,180,"Dark Shadow",2023,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead";
+ areamonster .@map$,14,20,382,180,"Dark Pinguicula",2015,40,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead";
end;
OnMyRhynDead:
- areamonster instance_mapname("2@nyd"),200,92,180,80,"Rhyncho",2020,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead";
+ areamonster instance_mapname("2@nyd"),14,20,382,180,"Rhyncho",2020,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyRhynDead";
end;
OnMyPhyDead:
- areamonster instance_mapname("2@nyd"),200,92,180,80,"Phylla",2021,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead";
+ areamonster instance_mapname("2@nyd"),14,20,382,180,"Phylla",2021,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPhyDead";
end;
OnMyDarkshaDead:
- areamonster instance_mapname("2@nyd"),200,92,180,80,"Dark Shadow",2023,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead";
+ areamonster instance_mapname("2@nyd"),14,20,382,180,"Dark Shadow",2023,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyDarkshaDead";
end;
OnMyPingDead:
- areamonster instance_mapname("2@nyd"),200,92,180,80,"Dark Pinguicula",2015,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead";
+ areamonster instance_mapname("2@nyd"),14,20,382,180,"Dark Pinguicula",2015,1,instance_npcname("ins_nyd2_spawn_mobs")+"::OnMyPingDead";
end;
}
diff --git a/npc/mapflag/zone.txt b/npc/mapflag/zone.txt
index d3b88c0c7..cb73a32ec 100644
--- a/npc/mapflag/zone.txt
+++ b/npc/mapflag/zone.txt
@@ -137,3 +137,15 @@ umbala mapflag zone Towns
veins mapflag zone Towns
xmas mapflag zone Towns
yuno mapflag zone Towns
+
+// WoE SE
+arug_cas01 mapflag zone GvG2
+arug_cas02 mapflag zone GvG2
+arug_cas03 mapflag zone GvG2
+arug_cas04 mapflag zone GvG2
+arug_cas05 mapflag zone GvG2
+schg_cas01 mapflag zone GvG2
+schg_cas02 mapflag zone GvG2
+schg_cas03 mapflag zone GvG2
+schg_cas04 mapflag zone GvG2
+schg_cas05 mapflag zone GvG2
diff --git a/npc/other/Global_Functions.txt b/npc/other/Global_Functions.txt
index f6068d598..544e3a672 100644
--- a/npc/other/Global_Functions.txt
+++ b/npc/other/Global_Functions.txt
@@ -156,16 +156,6 @@ function script F_Rand {
return getarg(rand(getargcount()));
}
-//== Function F_Sex ========================================
-// Returns 1st argument if female, 2nd argument otherwise
-// Example: mes callfunc("F_Sex","What a beautiful lady!","What a handsome man!");
-function script F_SexMes {
- if (Sex == SEX_MALE)
- return getarg(0);
- else
- return getarg(1);
-}
-
//== Function F_Hi =========================================
// Returns random HELLO message
function script F_Hi {
diff --git a/npc/other/auction.txt b/npc/other/auction.txt
index 21b2972a8..76e1a6042 100644
--- a/npc/other/auction.txt
+++ b/npc/other/auction.txt
@@ -113,7 +113,7 @@ auction_02,43,17,0 warp auction_enterance_lhz 1,1,lighthalzen,209,169
next;
if (select("Yes", "No") == 1) {
mes "[Auction Broker]";
- if ( getbattleflag( "feature.auction" ) ) {
+ if (getbattleflag("features/auction")) {
mes "Very well.";
mes "Please take";
mes "a look, and see";
diff --git a/npc/quests/kiel_hyre_quest.txt b/npc/quests/kiel_hyre_quest.txt
index 9468bbe38..3a21bbfa0 100644
--- a/npc/quests/kiel_hyre_quest.txt
+++ b/npc/quests/kiel_hyre_quest.txt
@@ -302,7 +302,6 @@ yuno_in01,35,179,4 script Pub Master#kh 1_ETC_01,5,5,{
close;
}
-//OnTouch2:
OnTouch:
if (KielHyreQuest < 1) {
mes "[Vandt]";
@@ -1987,7 +1986,6 @@ kh_vila,175,19,0 duplicate(BookKHQ1) Book#kh4 HIDDEN_NPC
//- Store room interior; Letter to Elly on the floor. -
kh_vila,179,11,0 script Letter#kh FAKE_NPC,1,1,{
-//OnTouch2:
OnTouch:
if (KielHyreQuest == 18) {
if (checkweight(Kyll_Hire_Letter,1) == 0) {
@@ -2369,7 +2367,6 @@ kh_vila,39,41,0 script Pool#khp1 HIDDEN_NPC,{
//- Cottage interior, upstairs; Vicious Dog -
kh_vila,181,178,4 script Vicious Dog#khp1 4_DOG01,7,3,{
-//OnTouch2:
OnTouch:
mes "*Grrr~*";
next;
@@ -3456,7 +3453,6 @@ kh_dun01,162,206,0 duplicate(KHKeyardReader) Mechanical Device HIDDEN_NPC
//- Kiel Hyre - OnTouch -
kh_dun01,224,233,0 script Factory B Area Door FAKE_NPC,5,5,{
-//OnTouch2:
OnTouch:
if (KielHyreQuest == 40) {
if (checkweight(Steel_Piece,1) == 0) {
@@ -4612,7 +4608,6 @@ kh_mansion,18,30,4 script Allysia 4_F_KHELLISIA,{
//- Abduction triggering NPC -
lighthalzen,188,200,0 script Abduction_trigger FAKE_NPC,3,1,{
-//OnTouch2:
OnTouch:
if (KielHyreQuest == 50) {
mes "^3355FFAs you walked out of";
@@ -4630,7 +4625,6 @@ OnTouch:
//- Mysterious Woman "Mitchell Layla" -
kh_mansion,25,79,4 script Mysterious Woman#kh 4_F_JOB_HUNTER,3,3,{
-//OnTouch2:
OnTouch:
if (KielHyreQuest == 50) {
mes "^3355FFYou awaken with your";
diff --git a/npc/quests/quests_13_1.txt b/npc/quests/quests_13_1.txt
index 80a458dea..562609d31 100644
--- a/npc/quests/quests_13_1.txt
+++ b/npc/quests/quests_13_1.txt
@@ -7470,7 +7470,6 @@ OnDisable:
disablenpc "Hillsrion#alba01";
end;
-//OnTouch2:
OnTouch:
mes "It is hissing in a low voice.";
mes "Sometimes it purrs, too.";
@@ -7487,7 +7486,6 @@ OnDisable:
disablenpc "Tatacho#alba02";
end;
-//OnTouch2:
OnTouch:
mes "[Taab]";
mes "Oh, please don't disturb";
@@ -7508,7 +7506,6 @@ OnDisable:
disablenpc "Cornus#alba03";
end;
-//OnTouch2:
OnTouch:
mes "[Taab]";
mes "Oh, please don't get";
@@ -11528,7 +11525,6 @@ OnInit:
}
mid_camp,205,312,0 script #moc2_talkevent01 FAKE_NPC,1,1,{
-//OnTouch2:
OnTouch:
if (mao_morocc2 == 11) {
mes "[Mr. Kidd]";
@@ -13394,7 +13390,6 @@ hu_fild04,235,103,0 script Heap of Earth#mao2_01 CLEAR_NPC,4,4,{
close;
}
-//OnTouch2:
OnTouch:
if (mao_morocc2 == 7) {
specialeffect EF_LEVEL99_4;
@@ -13731,7 +13726,6 @@ yuno_fild09,234,133,0 warp #moc2_fild09-que_dan02 1,1,que_dan02,13,10
que_dan02,13,6,0 warp #moc_que_dan02-fild09 1,1,yuno_fild09,234,129
que_dan02,21,37,0 script #moc2_b1_gate FAKE_NPC,1,1,{
-//OnTouch2:
OnTouch:
if (mao_morocc2 == 17) {
mes "- You find a side door that leads to the basement.";
diff --git a/npc/quests/quests_hugel.txt b/npc/quests/quests_hugel.txt
index 039e773a7..1ac300153 100644
--- a/npc/quests/quests_hugel.txt
+++ b/npc/quests/quests_hugel.txt
@@ -5836,7 +5836,7 @@ hugel,76,134,3 script Neha 4W_F_01,{
mes "for your impertinence, girl!";
}
for (.@i = 8064; .@i <= 8067; ++.@i) {
- if (questprogress(.@i) && questprogress(.@i) != 2)
+ if (questprogress(.@i) == 1)
completequest .@i;
}
setquest 8068;
@@ -8706,7 +8706,7 @@ hu_in01,14,11,4 script Laura 1_F_GYPSY,{
select("Yeah, yeah, whatever.", "Sure thing.", "I s-s-s-suppose...!", "Yes, Ma'am!");
hg_odin = 17;
for(.@i = 11002; .@i <= 11005; ++.@i) {
- if (questprogress(.@i) && questprogress(.@i) != 2)
+ if (questprogress(.@i) == 1)
completequest .@i;
}
setquest 11006;
diff --git a/npc/quests/quests_juperos.txt b/npc/quests/quests_juperos.txt
index d43749b3e..558c80860 100644
--- a/npc/quests/quests_juperos.txt
+++ b/npc/quests/quests_juperos.txt
@@ -9,12 +9,13 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2012-2015 Hercules Dev Team
+//= Copyright (C) 2012-2017 Hercules Dev Team
//= Copyright (C) Euphy
//= Copyright (C) Zephyrus
//= Copyright (C) L0ne_W0lf
//= Copyright (C) SinSloth
//= Copyright (C) MasterOfMuppets
+//= Copyright (C) Capuche
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
@@ -33,11 +34,11 @@
//================= Description ===========================================
//= Juperos Ruins related Quests/Events
//================= Current Version =======================================
-//= 1.9
+//= 2.0
//=========================================================================
yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
- switch(yuno_hist) {
+ switch (yuno_book) {
case 0:
mes "[Scholar]";
mes "...Mm? ";
@@ -155,7 +156,8 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
mes "service of his royal majesty,";
mes "the wise and benevolent";
mes "King Tristram III.";
- yuno_hist = 2;
+ yuno_book = 2;
+ setquest(11017);
next;
mes "[Fayruz]";
mes "Well, "+strcharinfo(PC_NAME)+",";
@@ -258,7 +260,8 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
mes "''You will see him, the one";
mes "who was vain and extravagant,";
mes "with your own eyes at the place where the light passes through.";
- yuno_hist = 4;
+ yuno_book = 4;
+ changequest(11018, 11019);
next;
mes "[Fayruz]";
mes "Ah, usually, descriptions";
@@ -387,7 +390,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
next;
switch(select("Take a look at this.", "Oh, I'm sorry...")) {
case 1:
- switch(jupe_hist) {
+ switch (jupe_book) {
case 1: callfunc "Func_JupHist",7353,7354,7355,7352;
case 2: callfunc "Func_JupHist",7352,7354,7355,7353;
case 4: callfunc "Func_JupHist",7352,7353,7355,7354;
@@ -419,7 +422,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
mes "last time is really helping me";
mes "in my research. If you get the";
mes "chance, please bring me more!";
- yuno_hist = 7;
+ yuno_book = 7;
next;
mes "[Fayruz]";
mes "This new data is adding";
@@ -438,7 +441,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
next;
switch(select("Yeah, take a look at this.", "No, I'm sorry...")) {
case 1:
- switch(jupe_hist) {
+ switch (jupe_book) {
case 3: callfunc "Func_JupHist",7354,7355,7352,7353;
case 5: callfunc "Func_JupHist",7353,7355,7352,7354;
case 6: callfunc "Func_JupHist",7352,7355,7353,7354;
@@ -470,7 +473,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
mes "Alright. Okay. Yes.";
mes "Yes! Of course, how";
mes "could I not see it before!";
- yuno_hist = 9;
+ yuno_book = 9;
next;
mes "[Fayruz]";
mes "I'll be with you";
@@ -487,7 +490,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
next;
switch(select("Actually, I did find this...", "I'm sorry, I haven't...")) {
case 1:
- switch(jupe_hist) {
+ switch (jupe_book) {
case 7: callfunc "Func_JupHist",7355,7352,7353,7354;
case 11: callfunc "Func_JupHist",7354,7352,7353,7355;
case 13: callfunc "Func_JupHist",7353,7352,7354,7355;
@@ -564,7 +567,7 @@ yuno_in04,190,125,4 script Scholar 8_F_GIRL,{
}
function script Func_JupHist {
- switch(yuno_hist) {
+ switch (yuno_book) {
case 4:
mes "[Fayruz]";
mes "Thank you so much,";
@@ -588,8 +591,9 @@ function script Func_JupHist {
mes "and you awaken from the trance,";
mes "gently brought back to reality.^000000";
delitem getarg(0),1;
- yuno_hist = 5;
- jupe_hist = getarg(1);
+ yuno_book = 5;
+ jupe_book = getarg(1);
+ changequest(11019, 11020);
getexp RENEWAL_EXP?10000:100000,0;
next;
mes "[Fayruz]";
@@ -652,20 +656,21 @@ function script Func_JupHist {
mes "mankind that can't be ignored.";
if (countitem(getarg(0))) {
delitem getarg(0),1;
- if (getarg(0) == 7352) jupe_hist += 1;
- else jupe_hist += 2;
+ if (getarg(0) == 7352) jupe_book += 1;
+ else jupe_book += 2;
}
else if (countitem(getarg(1))) {
delitem getarg(1),1;
- if (getarg(1) == 7353) jupe_hist += 2;
- else jupe_hist += 4;
+ if (getarg(1) == 7353) jupe_book += 2;
+ else jupe_book += 4;
}
else {
delitem getarg(2),1;
- if (getarg(2) == 7354) jupe_hist += 4;
- else jupe_hist += 8;
+ if (getarg(2) == 7354) jupe_book += 4;
+ else jupe_book += 8;
}
- yuno_hist = 6;
+ yuno_book = 6;
+ changequest(11020, 11021);
getexp RENEWAL_EXP?10000:100000,0;
next;
mes "[Fayruz]";
@@ -779,17 +784,18 @@ function script Func_JupHist {
mes "like the strange and grotesque.";
if (countitem(getarg(0))) {
delitem getarg(0),1;
- if (getarg(0) == 7352) jupe_hist += 1;
- else if (getarg(0) == 7353) jupe_hist += 2;
- else jupe_hist += 4;
+ if (getarg(0) == 7352) jupe_book += 1;
+ else if (getarg(0) == 7353) jupe_book += 2;
+ else jupe_book += 4;
}
else if (countitem(getarg(1))) {
delitem getarg(1),1;
- if (getarg(1) == 7353) jupe_hist += 2;
- else if (getarg(1) == 7354) jupe_hist += 4;
- else jupe_hist += 8;
+ if (getarg(1) == 7353) jupe_book += 2;
+ else if (getarg(1) == 7354) jupe_book += 4;
+ else jupe_book += 8;
}
- yuno_hist = 8;
+ yuno_book = 8;
+ changequest(11021, 11022);
getexp RENEWAL_EXP?10000:100000,0;
next;
mes "[Fayruz]";
@@ -881,12 +887,13 @@ function script Func_JupHist {
mes "feeling of indefatigable";
mes "hope and inspiration...";
mes "You can make it if you try!^000000";
- if (getarg(0) == 7352) jupe_hist += 1;
- else if (getarg(0) == 7353) jupe_hist += 2;
- else if (getarg(0) == 7354) jupe_hist += 4;
- else jupe_hist += 8;
- yuno_hist = 10;
- delitem getarg(0),1;
+ delitem(getarg(0), 1);
+ if (getarg(0) == 7352) jupe_book += 1;
+ else if (getarg(0) == 7353) jupe_book += 2;
+ else if (getarg(0) == 7354) jupe_book += 4;
+ else jupe_book += 8;
+ yuno_book = 10;
+ completequest(11022);
getexp RENEWAL_EXP?10000:100000,0;
next;
mes "[Fayruz]";
@@ -941,7 +948,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
next;
switch(select("Table of Contents.", "Leave it alone.")) {
case 1:
- if (yuno_hist > 4) {
+ if (yuno_book > 4) {
mes "^8B6914 1. Preface";
mes " 2. Juperos Background";
mes " 3. Theory Behind Its Fall^000000";
@@ -954,7 +961,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "ground, but it is now buried";
mes "beneath the El Mes Plateau.";
mes "The reasons for the city's";
- if (yuno_hist < 9) {
+ if (yuno_book < 9) {
mes "ruin are still nebulous...^000000";
next;
mes "^8B6914There is much speculation";
@@ -971,7 +978,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "may be able to learn much";
mes "from that ancient city's ruins.";
mes "..................^000000";
- if (yuno_hist < 7) {
+ if (yuno_book < 7) {
next;
mes "["+strcharinfo(PC_NAME)+"]";
mes "Hmmm...";
@@ -991,7 +998,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "us to make a few conclusions.^000000";
close;
case 2:
- if (yuno_hist < 9) {
+ if (yuno_book < 9) {
mes "^8B6914...";
mes "......";
mes "..........^000000";
@@ -1003,7 +1010,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "yet to be a real thesis...";
close;
}
- else if (yuno_hist == 9) {
+ else if (yuno_book == 9) {
mes "^8B6914Juperos was built over";
mes "a thousand years ago in";
mes "an era of peace just after";
@@ -1041,7 +1048,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "life. Science was reponsible for Juperos's rise and downfall.";
close;
case 3:
- if (yuno_hist < 10) {
+ if (yuno_book < 10) {
mes "^8B6914...";
mes "......";
mes "..........^000000";
@@ -1146,7 +1153,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
mes "may be able to learn much";
mes "from that ancient city's ruins.";
mes "..................^000000";
- if (!yuno_hist) yuno_hist = 1;
+ if (!yuno_book) yuno_book = 1;
next;
mes "["+strcharinfo(PC_NAME)+"]";
mes "This...";
@@ -1165,26 +1172,26 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
close;
}
case 2:
- if (yuno_hist < 5) {
+ if (yuno_book < 5) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "Nah...";
mes "I'm tired of reading.";
mes "Ironically enough.";
close;
}
- else if (yuno_hist < 7) {
+ else if (yuno_book < 7) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "I don't feel like";
mes "reading this. Not";
mes "enough pictures...";
close;
}
- else if (yuno_hist < 9) {
+ else if (yuno_book < 9) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "It looks very sophisticated...";
close;
}
- else if (yuno_hist < 10) {
+ else if (yuno_book < 10) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "I know this book...";
mes "But I don't feel like";
@@ -1203,7 +1210,7 @@ yuno_in04,186,125,4 script Bundle of Files HIDDEN_NPC,{
}
yuno_in04,188,118,4 script Book#juperos HIDDEN_NPC,{
- if (yuno_hist > 7) {
+ if (yuno_book > 7) {
mes "^8B6914*Self-Honesty*";
mes "*'Benefits Fo' Life!'*";
mes "By Stephen Oyoung";
@@ -1262,7 +1269,7 @@ yuno_in04,188,118,4 script Book#juperos HIDDEN_NPC,{
//- Bronze Statue - juperos_01 99 112
juperos_01,99,112,4 script Bronze Statue#1 CLEAR_NPC,{
- if (yuno_hist > 3) {
+ if (yuno_book > 3) {
mes "^3355FF''Do you wish to see";
mes "the end of the madness?";
mes "He is waiting where the three";
@@ -1270,7 +1277,7 @@ juperos_01,99,112,4 script Bronze Statue#1 CLEAR_NPC,{
mes "two hundred illusions wander.''^000000";
close;
}
- else if (yuno_hist == 3) {
+ else if (yuno_book == 3) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "I better go and";
mes "see Fayruz in the";
@@ -1300,14 +1307,15 @@ juperos_01,99,112,4 script Bronze Statue#1 CLEAR_NPC,{
mes "I am. I know what sounds";
mes "all of these letters make...";
next;
- if (yuno_hist == 2) {
+ if (yuno_book == 2) {
mes "["+strcharinfo(PC_NAME)+"]";
mes "Then again, Fayruz did";
mes "say this was enchanted.";
mes "Okay, I guess I'll go back";
mes "to the Juno Library and";
mes "tell her what I found.";
- yuno_hist = 3;
+ yuno_book = 3;
+ changequest(11017, 11018);
close;
}
mes "["+strcharinfo(PC_NAME)+"]";
@@ -1535,7 +1543,7 @@ yuno_in04,118,116,4 script Paper HIDDEN_NPC,{
next;
switch(select("Read it.", "Leave it alone.")) {
case 1:
- if (yuno_hist > 7) {
+ if (yuno_book > 7) {
mes "^8B6914P.S.";
mes "Please...";
mes "Come back to me.";
@@ -1582,7 +1590,7 @@ yuno_in04,118,116,4 script Paper HIDDEN_NPC,{
}
juperos_01,123,92,4 script Stone Statue CLEAR_NPC,{
- if (yuno_hist) {
+ if (yuno_book) {
mes "^3355FFIt's a stone statue";
mes "that looks exactly like";
mes "the one in the Juno Library.";
diff --git a/npc/quests/quests_lighthalzen.txt b/npc/quests/quests_lighthalzen.txt
index 0a80c25ae..66cfb0e73 100644
--- a/npc/quests/quests_lighthalzen.txt
+++ b/npc/quests/quests_lighthalzen.txt
@@ -8503,7 +8503,7 @@ L_Mission:
mes ".........";
mes "............";
for (.@i = 12015; .@i <= 12028; ++.@i) {
- if (questprogress(.@i) && questprogress(.@i) != 2)
+ if (questprogress(.@i) == 1)
completequest .@i;
}
close;
diff --git a/npc/quests/quests_louyang.txt b/npc/quests/quests_louyang.txt
index 40fd7b38e..e05cd3313 100644
--- a/npc/quests/quests_louyang.txt
+++ b/npc/quests/quests_louyang.txt
@@ -2123,7 +2123,7 @@ lou_in02,156,38,0 script Studying Officer#lou 4_M_CHNMAN,{
mes "so I was able to find it again pretty easily. I hope it's useful to you.";
ch_par = 15;
for (.@i = 11051; .@i <= 11054; ++.@i) {
- if (questprogress(.@i) && questprogress(.@i) != 2)
+ if (questprogress(.@i) == 1)
completequest .@i;
}
setquest 11055;
diff --git a/npc/quests/quests_morocc.txt b/npc/quests/quests_morocc.txt
index 1b387be0c..0d509b2d4 100644
--- a/npc/quests/quests_morocc.txt
+++ b/npc/quests/quests_morocc.txt
@@ -1092,7 +1092,6 @@ moc_fild20,354,183,3 script Continental Guard#01::MocConGuard 4_M_MOC_SOLDIER,3,
end;
}
-//OnTouch2:
OnTouch:
mes "[Continental Guard]";
mes "No commoners are allowed in the area beyond this point.";
@@ -2647,7 +2646,6 @@ yuno,333,210,5 script Library Master#garas 1_M_LIBRARYMASTER,{
}
yuno,336,203,0 script #garas_catch HIDDEN_WARP_NPC,3,3,{
-//OnTouch2:
OnTouch:
if (barmunt_crow == 2) {
mes "[Dog]";
@@ -2912,8 +2910,7 @@ yuno_in04,100,5,3 script Hot Bestseller Corner HIDDEN_NPC,{
}
yuno_in04,100,3,0 script #garas_path HIDDEN_WARP_NPC,1,1,{
-//OnTouch2:
-OnTouch2:
+OnTouch:
if (barmunt_crow == 6) {
mes "...................................";
next;
@@ -3572,7 +3569,6 @@ yuno_in04,167,120,3 script Worn-out Book#garas HIDDEN_NPC,{
}
que_ba,247,33,0 script #bpast_1_1 FAKE_NPC,1,1,{
-//OnTouch2:
OnTouch:
if (barmunt_crow < 4) {
warp "ama_dun03",119,110;
@@ -3640,7 +3636,6 @@ que_ba,183,25,0 warp #bpast_2to3_1 1,1,que_ba,72,25
que_ba,183,52,0 warp #bpast_2to3_2 1,1,que_ba,72,51
que_ba,102,56,0 script #3room_barmunt FAKE_NPC,3,3,{
-//OnTouch2:
OnTouch:
if (barmunt_crow < 4) {
warp "yuno_in04",100,3;
@@ -3712,7 +3707,6 @@ que_ba,99,51,7 script Grotesque Man#zid1 4_M_MUT1,{
}
que_ba,53,232,0 script #garas_f_yume HIDDEN_WARP_NPC,1,1,{
-//OnTouch2:
OnTouch:
if (barmunt_crow == 5) {
//GetHEALTHSTATE VAR_HEALTHSTATENORMAL 0
@@ -3757,7 +3751,6 @@ que_ba,48,227,7 script Grotesque Man#zid2 4_M_MUT1,{
}
que_ba,264,186,0 script #barmut_room1 HIDDEN_WARP_NPC,2,2,{
-//OnTouch2:
OnTouch:
if (barmunt_crow == 11) {
mes "^660000You wake up, and look around you. Somehow, you've now ended up in a huge mansion.^000000";
@@ -3797,7 +3790,6 @@ que_ba,270,181,3 script #barmunt_fire 4_M_SAGE_C,{
}
que_ba,270,270,0 script #barmunt_living HIDDEN_WARP_NPC,1,1,{
-//OnTouch2:
OnTouch:
mes "..................";
mes "..................";
@@ -3974,7 +3966,6 @@ cave,82,97,3 script Cave Settler#g1 4_M_CAVE1,3,3,{
close;
}
-//OnTouch2:
OnTouch:
if (barmunt_crow == 8) {
mes "[Cave Settler]";
@@ -6810,7 +6801,6 @@ prt_castle,368,312,4 script Prince#ern 4_M_2NDPRIN1,{
}
prt_castle,163,319,0 script #twonoble FAKE_NPC,3,3,{
-//OnTouch2:
OnTouch:
if (nkprince_eisen == 7) {
donpcevent "Young Noble#valter::OnEnable";
@@ -7723,7 +7713,6 @@ prt_castle,176,170,5 script Guard#princein 8W_SOLDIER,{
}
prt_castle,121,168,0 script #arm HIDDEN_NPC,4,4,{
-//OnTouch2:
OnTouch:
if (nk_prince == 8) {
mes "[" + strcharinfo(PC_NAME) + "]";
@@ -7744,7 +7733,6 @@ OnTouch:
}
prt_castle,316,313,0 script #arm1 HIDDEN_NPC,3,3,{
-//OnTouch2:
OnTouch:
if (nkprince_eisen > 14) {
mes "[" + strcharinfo(PC_NAME) + "]";
diff --git a/npc/quests/quests_moscovia.txt b/npc/quests/quests_moscovia.txt
index 09ad94115..c722f2677 100644
--- a/npc/quests/quests_moscovia.txt
+++ b/npc/quests/quests_moscovia.txt
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2012-2015 Hercules Dev Team
+//= Copyright (C) 2012-2017 Hercules Dev Team
//= Copyright (C) Lemongrass
//= Copyright (C) Euphy
//= Copyright (C) Joseph
@@ -17,6 +17,7 @@
//= Copyright (C) Gepard
//= Copyright (C) brianluau
//= Copyright (C) Kisuka
+//= Copyright (C) Asheraf
//=
//= Hercules is free software: you can redistribute it and/or modify
//= it under the terms of the GNU General Public License as published by
@@ -43,7 +44,7 @@
//= The Moving Island, Help Mikhail, Acorn Exchange, Banish Winter, Shafka
//= Hat, Koshei the Immortal.
//================= Current Version =======================================
-//= 2.3
+//= 2.4
//=========================================================================
//== The Moving Island :: mos_whale_edq ====================
@@ -65,6 +66,7 @@ moscovia,171,71,3 script Berbayeff#npc 4_M_RUSMAN2,{
mes "seen many marvelous things";
mes "from near and far.";
next;
+ setquest(18100);
mes "[Berbayeff]";
mes "I'm sure you'll probably";
mes "be interested in my story.";
@@ -189,6 +191,7 @@ moscovia,171,71,3 script Berbayeff#npc 4_M_RUSMAN2,{
mes "I'll definitely go up to that";
mes "island... and verify it with my own eyes!";
mos_whale_edq = 1;
+ changequest(18100, 18101);
close;
} else if (mos_whale_edq == 1) {
.@speak = rand(1,5);
@@ -235,6 +238,7 @@ moscovia,171,71,3 script Berbayeff#npc 4_M_RUSMAN2,{
mes "If you want to find the island";
mes "by ship, go to Mr. Ibanoff";
mes "and ask for a favor.";
+ changequest(18101, 18102);
close;
} else if (mos_whale_edq > 12 && mos_whale_edq < 42) {
emotion e_omg;
@@ -298,6 +302,8 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "What's up?";
next;
if(select("Tell me an adventure story.", "Lend me your ship.") == 1) {
+ completequest(18101, 18102);
+ setquest(18103);
mes "[Mr. Ibanoff]";
mes "You are an adventurer, right?";
mes "You come from a strange land?";
@@ -399,6 +405,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "If you ever need anything,";
mes "come talk to me whenever, hahaha!";
mos_whale_edq = 2;
+ changequest(18103, 18104);
close;
}
if (mos_whale_edq == 2) {
@@ -452,6 +459,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "materials, bring them to me. I'll";
mes "repair the ship.";
mos_whale_edq = 3;
+ changequest(18104, 18105);
close;
}
emotion e_ag;
@@ -483,6 +491,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
delitem Tube,5;
delitem Jubilee,10;
mos_whale_edq = 4;
+ changequest(18105, 18106);
mes "[Mr. Ibanoff]";
mes "Okay, we are at the ready.";
mes "When would you like to depart?";
@@ -603,6 +612,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "back to the island, I want to go";
mes "together with you! Eh? Hahaha!";
mos_whale_edq = 16;
+ changequest(18111, 18112);
close;
} else if (mos_whale_edq < 18) {
mes "[Mr. Ibanoff]";
@@ -640,6 +650,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "[Mr. Ibanoff]";
mes "Again, let's get the ship ready and sail before the sun sets!";
mos_whale_edq = 19;
+ changequest(18113, 18114);
close;
}
mes "[Mr. Ibanoff]";
@@ -676,6 +687,7 @@ moscovia,135,49,5 script Mr. Ibanoff#npc 4_M_RUSBALD,{
mes "been, it's very good to see you";
mes "again.";
mos_whale_edq = 19;
+ changequest(18113, 18114);
next;
mes "[Mr. Ibanoff]";
mes "I can guess you'd like to go to";
@@ -821,6 +833,7 @@ mosk_ship,98,110,3 script Mr. Ibanoff#npc2 4_M_RUSBALD,{
mes "At first, hold the rudder to go";
mes "forward, to the east.";
mos_whale_edq = 5;
+ changequest(18106, 18107);
close;
} else if (mos_whale_edq == 5) {
mes "[Mr. Ibanoff]";
@@ -874,6 +887,7 @@ mosk_ship,98,110,3 script Mr. Ibanoff#npc2 4_M_RUSBALD,{
mes "Go around the deck to look more";
mes "carefully! Go!";
mos_whale_edq = 12;
+ changequest(18107, 18108);
donpcevent "#findship::OnEnable";
close;
} else if (mos_whale_edq == 12) {
@@ -904,6 +918,7 @@ mosk_ship,98,110,3 script Mr. Ibanoff#npc2 4_M_RUSBALD,{
mes "At first, hold the rudder to go";
mes "forward, to the east.";
mos_whale_edq = 20;
+ changequest(18114, 18115);
close;
} else if (mos_whale_edq == 20) {
mes "[Mr. Ibanoff]";
@@ -921,6 +936,7 @@ mosk_ship,98,110,3 script Mr. Ibanoff#npc2 4_M_RUSBALD,{
mes "There is a moving island!";
mes "We have done well!";
next;
+ changequest(18115, 18116);
mes "[Mr. Ibanoff]";
mes "Oh...my...";
mes "It really is there...";
@@ -1230,6 +1246,7 @@ mosk_fild01,86,104,3 script Aged Stranger#npc 4_M_GUSLIMAN,{
mes "the back of a gigantic whale!";
mes "That's why I call it Whale Island!";
next;
+ changequest(18109, 18110);
mes "["+strcharinfo(PC_NAME)+"]";
mes "How...? How is it possible";
mes "that the water flows in streams";
@@ -1269,6 +1286,7 @@ mosk_fild01,86,104,3 script Aged Stranger#npc 4_M_GUSLIMAN,{
next;
callsub S_AS_3;
mos_whale_edq = 14;
+ changequest(18110, 18111);
close2;
sleep2 20000;
mos_whale_edq = 15;
@@ -1411,6 +1429,7 @@ mosk_fild01,86,104,3 script Aged Stranger#npc 4_M_GUSLIMAN,{
mes "I'll send you back to the";
mes "mainland.";
mos_whale_edq = 31;
+ changequest(18116, 18117);
close;
} else if (mos_whale_edq == 31) {
mes "[Aged Stranger]";
@@ -1449,6 +1468,7 @@ mosk_fild01,86,104,3 script Aged Stranger#npc 4_M_GUSLIMAN,{
delitem Goats_Horn,20;
delitem Sea_Otter_Leather,10;
mos_whale_edq = 34;
+ changequest(18117, 18118);
mes "[Aged Stranger]";
mes "Wait for a moment until I make the";
mes "instrument successfully.";
@@ -1495,6 +1515,7 @@ mosk_fild01,86,104,3 script Aged Stranger#npc 4_M_GUSLIMAN,{
mes "the ancestors of Moscovia.";
getitem GUSLI, 1;
mos_whale_edq = 35;
+ changequest(18118, 18119);
next;
mes "[Aged Stranger]";
mes "I am the last person who has";
@@ -1696,6 +1717,7 @@ S_AS_1:
mes "With your ability to play, surely";
mes "you can win the admiration of all.";
mos_whale_edq = 38;
+ changequest(18119, 18120);
close;
}
mes "[Aged Stranger]";
@@ -1891,6 +1913,7 @@ mosk_in,131,92,3 script Csar Alexsay III#npc 4_M_RUSKING,{
mes "banishing winter with magic,";
mes "announce that to me immediately.";
mos_nowinter = 14;
+ changequest(18076, 18077);
close;
}
}
@@ -1934,6 +1957,7 @@ mosk_in,131,92,3 script Csar Alexsay III#npc 4_M_RUSKING,{
mes "If you do that, I will arrest you immediately!";
mes "So take care of yourself.";
mos_nowinter = 14;
+ changequest(18076, 18077);
close;
}
mes "[Csar Alexsay III]";
@@ -2004,6 +2028,7 @@ mosk_in,131,92,3 script Csar Alexsay III#npc 4_M_RUSKING,{
mes "I give it as an atonement";
mes "to make my people happy.";
mos_nowinter = 21;
+ completequest(18079);
getitem Old_Blue_Box,1;
next;
mes "[Csar Alexsay III]";
@@ -2111,6 +2136,7 @@ mosk_in,131,92,3 script Csar Alexsay III#npc 4_M_RUSKING,{
mes "You have a heavy responsibility.";
mes "Bring evidence of this whale island to me, to provide me with some relief. Now go.";
mos_whale_edq = 18;
+ changequest(18112, 18113);
close;
} else if (mos_whale_edq > 17 && mos_whale_edq < 35) {
mes "[Csar Alexsay III]";
@@ -2307,6 +2333,7 @@ mosk_in,131,92,3 script Csar Alexsay III#npc 4_M_RUSKING,{
getitem Old_Violet_Box,1;
getexp RENEWAL_EXP?100000:1200000,0;
mos_whale_edq = 41;
+ completequest(18120);
close;
}
mes "[Csar Alexsay III]";
@@ -2558,6 +2585,7 @@ OnTouch:
mes "Watch out! "+strcharinfo(PC_NAME)+"!";
mes "Ah... That... That is... What...";
mos_whale_edq = 13;
+ changequest(18108, 18109);
close2;
warp "mosk_fild01",95,93;
end;
@@ -2697,6 +2725,7 @@ function script F_MOS_1 {
mes "Mikhail is such a timid boy. I guess he didn't leave this village.";
mes "Please bring him to me, then~";
mos_swan = 1;
+ setquest(18060);
close;
}
@@ -2751,6 +2780,7 @@ mosk_in,144,279,5 script Gallina#mos 4_F_RUSWOMAN1,{
mes "Well, now I have to get to work!";
mes "I'll make you my hotcakes someday. Please visit me later";
mos_swan = 100;
+ completequest(18069);
getexp RENEWAL_EXP?90000:1000000,0;
close;
}
@@ -2863,7 +2893,10 @@ mosk_in,148,274,1 script Anna#mos 4_F_RUSCHILD,{
next;
mes "["+strcharinfo(PC_NAME)+"]";
mes "It's the only clue, I guess I'll go to ^3131FFInn 'Sticky Herb Tree'^000000?";
- if (mos_swan == 2) mos_swan = 3;
+ if (mos_swan == 2) {
+ mos_swan = 3;
+ changequest(18060, 18061);
+ }
next;
break;
case 4:
@@ -3084,6 +3117,7 @@ mosk_in,205,268,3 script Fire pot#mos HIDDEN_NPC,{
mes "- I need to know what's required for the paste.";
mes "I'll ask that guy ^3131FFMr. Victor^000000 about them. -";
mos_swan = 12;
+ changequest(18064, 18065);
close;
break;
case 2:
@@ -3139,6 +3173,7 @@ mosk_in,205,268,3 script Fire pot#mos HIDDEN_NPC,{
mes "Now I'm gonna give this back to Mom.";
donpcevent "Mikhail#mos::OnInit";
mos_swan = 25;
+ changequest(18068, 18069);
delitem High_Strength_Adhesive,1;
close;
}
@@ -3302,6 +3337,7 @@ mosk_in,135,191,5 script Landlord#mos 4_F_RUSWOMAN3,{
mes "I was unkind to make you stay here but wasn't it easier for you? hoho.";
mes "When it gets dark, promise me to come here again. Hoho";
mos_swan = 7;
+ changequest(18061, 18062);
close;
break;
case 3:
@@ -3380,6 +3416,7 @@ mosk_in,141,212,3 script Pub Owner#mos 4_M_RUSBALD,{
mes "[Pub Owner]";
mes "You're welcome.";
mos_swan = 8;
+ changequest(18062, 18063);
close;
}
mes "[Pub Owner]";
@@ -3596,6 +3633,7 @@ mosk_in,147,202,3 script Victor#mos 4_M_RUSMAN2,{
mes "[Victor]";
mes "He might've just hidden himself somewhere, haha!";
mos_swan = 10;
+ changequest(18062, 18063);
close;
} else if (mos_swan == 10 || mos_swan == 11) {
mes "[Victor]";
@@ -3633,6 +3671,7 @@ mosk_in,147,202,3 script Victor#mos 4_M_RUSMAN2,{
mes "[Victor]";
mes "You should bring ^3131FF'10 sticky herbs'^000000 and ^3131FF 1 medicine bowl^000000 to me.";
mos_swan = 13;
+ changequest(18065, 18066);
close;
} else if (mos_swan > 12 && mos_swan < 23) {
mes "[Victor]";
@@ -3664,6 +3703,7 @@ mosk_in,147,202,3 script Victor#mos 4_M_RUSMAN2,{
delitem Sticky_Herb,10;
delitem Medicine_Bowl,1;
mos_swan = 24;
+ changequest(18067, 18068);
getitem High_Strength_Adhesive,1;
close;
}
@@ -3730,6 +3770,7 @@ mosk_dun03,153,90,3 script Bubbling Swamp#mos1 CLEAR_NPC,{
mes "["+strcharinfo(PC_NAME)+"]";
mes "I don't see any traces of Mikhail. I think I should go back and check his house one more time.";
mos_swan = 11;
+ changequest(18063, 18064);
close;
} else if (mos_swan == 11 && mos_swan == 12) {
mes "- You can see a small muddy swamp -";
@@ -3748,6 +3789,7 @@ mosk_dun03,153,90,3 script Bubbling Swamp#mos1 CLEAR_NPC,{
if (mos_swan == 22) {
getitem Sticky_Herb,1;
mos_swan = 23;
+ changequest(18066, 18067);
close;
}
getitem Sticky_Herb,1;
@@ -4461,6 +4503,7 @@ mosk_in,215,46,5 script Baba Yaga, the Horrible 4_F_BABAYAGA,{
mes "a 1, 2, or 3 carat";
mes "^ff00001 Diamond^000000.";
mos_nowinter = 6;
+ changequest(18070, 18071);
next;
} else {
mes "[Baba Yaga, the Horrible]";
@@ -4481,6 +4524,7 @@ mosk_in,215,46,5 script Baba Yaga, the Horrible 4_F_BABAYAGA,{
mes "a 1, 2, or 3 carat";
mes "^ff0000Diamond^000000.";
mos_nowinter = 7;
+ changequest(18070, 18072);
next;
}
mes "[Baba Yaga, the Horrible]";
@@ -4541,6 +4585,7 @@ mosk_in,215,46,5 script Baba Yaga, the Horrible 4_F_BABAYAGA,{
mes "contain people's speech.";
mes "I must have this.";
next;
+ changequest(18071, 18073);
mes "[Baba Yaga, the Horrible]";
mes "I don't know how strong you are,";
mes "but I would like to recommend that";
@@ -4742,6 +4787,7 @@ mosk_in,215,46,5 script Baba Yaga, the Horrible 4_F_BABAYAGA,{
mes "[Baba Yaga, the Horrible]";
mes "Take care of yourself, cough, cough.";
mos_nowinter = 10;
+ changequest(18074, 18075);
close;
}
mes "[Baba Yaga, the Horrible]";
@@ -4888,8 +4934,9 @@ mosk_in,215,46,5 script Baba Yaga, the Horrible 4_F_BABAYAGA,{
mes "If you do this, what the villagers want";
mes "will be happening,";
mes "forever.";
- getitem Yaga_Secret_Medicine,1;
mos_nowinter = 19;
+ changequest(18077, 18078);
+ getitem(Yaga_Secret_Medicine, 1);
close;
} else if (mos_nowinter == 19) {
mes "[Baba Yaga, the Horrible]";
@@ -4935,6 +4982,7 @@ S_BY_1:
mes "where it is.";
mes "Could you please come back later?";
mos_nowinter = 5;
+ setquest(18070);
close;
}
@@ -5472,6 +5520,7 @@ moscovia,224,190,0 script #nowinterplz CLEAR_NPC,{
delitem Yaga_Secret_Medicine,1;
specialeffect EF_BARRIER;
mos_nowinter = 20;
+ changequest(18078, 18079);
next;
mes "-You feel like your";
mes "body is heating up.";
@@ -6166,7 +6215,10 @@ moscovia,196,71,3 script A Young Man#mos14 4_M_RUSMAN2,{
mes "I hope that winter never comes.";
mes "It is my dream.";
mos_middle = 1;
- if (mos_kid == 1 && mos_elder == 1) mos_nowinter = 11;
+ if (mos_kid == 1 && mos_elder == 1) {
+ mos_nowinter = 11;
+ changequest(18075, 18076);
+ }
close;
}
mes "[Fredek]";
@@ -6217,7 +6269,10 @@ moscovia,234,168,5 script A Man#mos15 4_M_RUSBALD,{
mes "But, design of coldness is";
mes "winter itself, isn't it?";
mos_elder = 1;
- if (mos_kid == 1 && mos_middle == 1) mos_nowinter = 11;
+ if (mos_kid == 1 && mos_middle == 1) {
+ mos_nowinter = 11;
+ changequest(18075, 18076);
+ }
close;
}
mes "[Gavrel]";
@@ -6267,7 +6322,10 @@ moscovia,228,80,3 script A Little Boy#mos16 4_M_RUSCHILD,{
mes "Do you think";
mes "the winter should come again?";
mos_kid = 1;
- if (mos_middle == 1 && mos_elder == 1) mos_nowinter = 11;
+ if (mos_middle == 1 && mos_elder == 1) {
+ mos_nowinter = 11;
+ changequest(18075, 18076);
+ }
close;
}
mes "[Rurik]";
@@ -6329,6 +6387,7 @@ OnTouch:
mes "Here it is.";
mes "That was easy to find.";
mos_nowinter = 9;
+ changequest(18073, 18074);
getitem Magic_Gourd_Bottle,1;
close;
}
@@ -6337,6 +6396,7 @@ OnTouch:
mes "Ah, I got it!";
mes "I better get out of here quickly.";
mos_nowinter = 9;
+ changequest(18073, 18074);
getitem Magic_Gourd_Bottle,1;
close;
}
@@ -6503,6 +6563,7 @@ moscovia,211,93,3 script Irina#edq 4_F_RUSCHILD,{
mes "Shafka still keeps you warm!";
close;
}
+ setquest(18121);
mes "[Irina]";
mes "Do you want to make a Shafka hat?";
mes "Heheh. Good idea!";
@@ -6525,6 +6586,7 @@ moscovia,211,93,3 script Irina#edq 4_F_RUSCHILD,{
delitem Sea_Otter_Leather,20;
delitem Spool,1;
getitem Chullos,1;
+ completequest(18121);
mes "[Irina]";
mes "Good, I made it. So, how about it?";
mes "Do you like it?";
@@ -6770,6 +6832,7 @@ mosk_dun01,167,160,3 script Gray Wolf#rus03 4_RUS_DWOLF,{
mes "I'm warning you again!";
mes "Unless you want to be killed, leave now.";
rhea_rus_main = 3;
+ setquest(8136);
emotion e_omg,1;
specialeffect2 EF_HIT2;
percentheal -50,0;
@@ -6918,6 +6981,7 @@ mosk_dun01,45,259,0 script Wall#rus04 HIDDEN_NPC,{
mes "Please don't forget about me.";
donpcevent "Gray Wolf#rus05::OnDisable";
rhea_rus_main = 6;
+ changequest(8136, 8137);
close;
} else if (rhea_rus_main > 5 && rhea_rus_main < 8) {
mes "[Girl's Voice]";
@@ -7084,6 +7148,7 @@ mosk_dun01,45,259,0 script Wall#rus04 HIDDEN_NPC,{
mes "Stop! Where do you think you're going?!!!";
delitem Gold_Key,1;
rhea_rus_main = 48;
+ changequest(8167, 8168);
monster "mosk_dun01",45,256,"Koshei, the Immortal",1890,1,"Wall#rus04::OnMyMobDead";
donpcevent "Koshei#rus47::OnEnable";
close;
@@ -7124,6 +7189,7 @@ mosk_dun01,45,259,0 script Wall#rus04 HIDDEN_NPC,{
mes "[Gray Wolf]";
mes "I can't keep her alive for much longer. You must find Baba Yaga.";
rhea_rus_main = 49;
+ changequest(8168, 8169);
close2;
donpcevent "Gray Wolf#rus05::OnDisable";
end;
@@ -7258,6 +7324,7 @@ mosk_dun01,45,259,0 script Wall#rus04 HIDDEN_NPC,{
mes "[Maria Morebna]";
mes "It's been a long time since I've felt the sunlight, fresh wind and the scent of grass. I'm so grateful.";
rhea_rus_main = 52;
+ completequest(8171);
.@rus_food = rand(1,6);
switch (rand(1,6)) {
case 1: getitem Dex_Dish08,1; break;
@@ -7350,15 +7417,15 @@ OnDisable:
end;
OnTimer3000:
- announce "Koshei, the Immortal : I will kill all who disturb me!! Cry in terror weak humans!!!",bc_map,0xCE3131;
+ mapannounce "mosk_dun01","Koshei, the Immortal : I will kill all who disturb me!! Cry in terror weak humans!!!",bc_map,0xCE3131;
end;
OnTimer63000:
- announce "Koshei, the Immortal : You worms, you mere monsters... I will curse all who are in my way!!",bc_map,0xCE3131;
+ mapannounce "mosk_dun01","Koshei, the Immortal : You worms, you mere monsters... I will curse all who are in my way!!",bc_map,0xCE3131;
end;
OnTimer150000:
- announce "Koshei, the Immortal : Mankind! Cry in terror!! Hahahahahahahhahahah!!!",bc_map,0xCE3131;
+ mapannounce "mosk_dun01","Koshei, the Immortal : Mankind! Cry in terror!! Hahahahahahahhahahah!!!",bc_map,0xCE3131;
end;
OnTimer300000:
@@ -7475,6 +7542,7 @@ moscovia,178,127,0 script The Blacksmith#rus06 1_M_SMITH,{
mes "Bahahaha~";
mes "I promise you, I'll explain when you bring the ^0000ff25 Steel^000000 to me. Please just get the Steel and come back.";
rhea_rus_main = 7;
+ changequest(8137, 8138);
close;
} else if (rhea_rus_main == 7) {
if (countitem(Steel) > 24) {
@@ -7524,6 +7592,8 @@ moscovia,178,127,0 script The Blacksmith#rus06 1_M_SMITH,{
mes "And don't forget to wear these!";
delitem Steel,25;
rhea_rus_main = 8;
+ // if (BaseClass != Job_Thief)
+ changequest(8138, 8139);
if (BaseClass == Job_Merchant || BaseClass == Job_Swordman || BaseClass == Job_Thief || BaseClass == Job_Archer) getitem Iron_Boots01,1; else getitem Iron_Boots02,1; close;
}
mes "[The Blacksmith]";
@@ -7585,6 +7655,7 @@ moscovia,178,127,0 script The Blacksmith#rus06 1_M_SMITH,{
mes "Ah and you shouldn't be needing those Steel Boots anymore. Good luck!";
if (countitem(Iron_Boots01)) delitem Iron_Boots01,1; else delitem Iron_Boots02,1;
rhea_rus_main = 9;
+ changequest(8139, 8154);
close;
}
mes "[The Blacksmith]";
@@ -7753,6 +7824,7 @@ moscovia,206,81,0 script Vassili Grandpapa#rus07 4_M_05,{
mes "[Vassili Grandpapa]";
mes "She disappeared soon... after Now all I have is Ryubaba. She is also pretty and smart but nothing can relieve the sadnesss in my heart from losing Mashenka...";
rhea_rus_ring = 1;
+ setquest(8140);
close;
} else if (rhea_rus_ring && rhea_rus_ring < 8) {
mes "[Vassili Grandpapa]";
@@ -7879,6 +7951,7 @@ moscovia,206,81,0 script Vassili Grandpapa#rus07 4_M_05,{
mes "...It is my fault that this tragedy between my daughters happened. I will spend the rest of my life trying to make up for it...";
delitem Pointed_Wooden_Flute,1;
rhea_rus_ring = 10;
+ completequest(8144);
getitem Red_Ring,1;
if (RENEWAL_EXP) {
if (BaseLevel < 56) getexp 470,0;
@@ -8073,6 +8146,7 @@ moscovia,213,216,3 script Ryubaba#rus08 4_F_RUSWOMAN2,{
mes "[Ryubaba]";
mes "Right... Let me finish talking. We tried searching for her but we couldn't find her. She must have been wearing the ring when she disappeared around the marsh.";
rhea_rus_ring = 5;
+ changequest(8140, 8141);
close;
} else if (rhea_rus_ring > 4 && rhea_rus_ring < 7) {
mes "[Ryubaba]";
@@ -8184,6 +8258,7 @@ moscovia,213,216,3 script Ryubaba#rus08 4_F_RUSWOMAN2,{
mes "[Ryubaba]";
mes "W, wait!!!";
rhea_rus_ring = 8;
+ changequest(8143, 8144);
close2;
warp "moscovia",203,80;
end;
@@ -8195,6 +8270,7 @@ moscovia,213,216,3 script Ryubaba#rus08 4_F_RUSWOMAN2,{
mes "I have to repent for my sins and atone for them for the rest of my life.";
delitem Pointed_Wooden_Flute,1;
rhea_rus_ring = 9;
+ completequest(8143);
getitem Red_Ring,1;
if (RENEWAL_EXP) {
if (BaseLevel < 56) getexp 470,0;
@@ -8367,6 +8443,7 @@ mosk_fild02,157,233,0 script Shepherdess#rus10 1_F_04,{
mes "[Shepherdess]";
mes "I am an excellent flute player! If you get me enough Pointed Branches, I will make a flute from them and play beautiful music for you. Please~!";
rhea_rus_ring = 6;
+ changequest(8141, 8142);
close;
} else if (rhea_rus_ring == 6) {
if (countitem(Pointed_Branch) > 24) {
@@ -8421,6 +8498,7 @@ mosk_fild02,157,233,0 script Shepherdess#rus10 1_F_04,{
mes "- ^0000ff'Pointed Wooden Flute'!!^000000 -";
delitem Pointed_Branch,25;
rhea_rus_ring = 7;
+ changequest(8142, 8143);
getitem Pointed_Wooden_Flute,1;
close;
}
@@ -8544,6 +8622,7 @@ moscovia,166,145,1 script Worried Mother#rus19 4_F_RUSWOMAN3,{
mes "[Worried Mother]";
mes "Please, please find my daughter.";
rhea_rus_hair = 1;
+ setquest(8145);
close;
} else if (rhea_rus_hair == 1) {
mes "[Worried Mother]";
@@ -8567,6 +8646,7 @@ moscovia,166,145,1 script Worried Mother#rus19 4_F_RUSWOMAN3,{
mes "[Worried Mother]";
mes "I'm not sure where she would be but it has to be somewhere near water. Please, find where my daughter is. I beg of you.";
rhea_rus_hair = 2;
+ changequest(8145, 8146);
close;
} else if (rhea_rus_hair > 1 && rhea_rus_hair < 9) {
mes "[Worried Mother]";
@@ -8781,6 +8861,7 @@ mosk_fild02,124,202,3 script Lusalka#rus23 4_F_RUSGREEN,{
mes "- ^0000ffgolden earrings^000000 -";
mes "- ^0000fffrom Lusalka!^000000 -";
rhea_rus_hair = 3;
+ changequest(8146, 8147);
donpcevent "Lusalka#rus23::OnDisable";
close;
} else if (rhea_rus_hair > 2 && rhea_rus_hair < 7) {
@@ -8861,6 +8942,7 @@ mosk_fild02,124,202,3 script Lusalka#rus23 4_F_RUSGREEN,{
mes "W, who are you!? Ahkkk!!";
sc_start SC_BLIND,10000,0;
rhea_rus_hair = 8;
+ completequest(8150);
donpcevent "Lusalka#rus23::OnDisable";
close;
} else if (rhea_rus_hair > 7) {
@@ -8992,6 +9074,7 @@ prontera,228,279,3 script Wanderer#rus24 4_M_RUSMAN2,{
mes "me that he wanted";
mes "to travel to a desert.";
rhea_rus_hair = 4;
+ changequest(8147, 8148);
close;
} else if (rhea_rus_hair > 3 && rhea_rus_hair < 7) {
mes "[A Wanderer from a strange land]";
@@ -9070,6 +9153,7 @@ morocc,165,82,0 script Morroc Villager#rus25 1_M_02,{
mes "[Morroc Villager]";
mes "Yep that's gotta be who you're looking for. I can see his gloomy face right now... that poor sad man.";
rhea_rus_hair = 5;
+ changequest(8148, 8149);
close;
} else if (rhea_rus_hair > 4 && rhea_rus_hair < 7) {
mes "[Morroc Villager]";
@@ -9208,6 +9292,7 @@ moc_pryd04,126,120,0 script Soldier#rus26 4_M_RUSMAN1,{
mes "[A gloomy looking soldier]";
mes "Before the full moon, I will be back to Moscovia and meet her. I will come back so strong and happy that when I go to see her she will not suffer anymore.";
rhea_rus_hair = 7;
+ changequest(8149, 8150);
close;
} else if (rhea_rus_hair == 7) {
mes "[A gloomy looking soldier]";
@@ -9292,6 +9377,7 @@ OnTouch:
mes "[Voice unidentified]";
mes "Show me what you can do.";
rhea_rus_quiz = 1;
+ setquest(8151);
close;
}
}
@@ -9489,6 +9575,7 @@ mosk_fild02,243,270,0 script Marozka#rus31 4_M_LGTGRAND,{
mes "[Marozka]";
mes "That was a test of your strength. Now you must pass the test of mind and wisdom.";
rhea_rus_quiz = 29;
+ changequest(8152, 8153);
close;
} else if (rhea_rus_quiz == 29) {
if (getequipid(EQI_SHOES) != 2429) {
@@ -9556,6 +9643,7 @@ mosk_fild02,243,270,0 script Marozka#rus31 4_M_LGTGRAND,{
mes "[Marozka]";
mes "I hope you help Maria with your strength and kindness.";
rhea_rus_quiz = 30;
+ completequest(8153);
getitem Golden_Thread,10;
close;
}
@@ -9687,6 +9775,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 11;
+ changequest(8154, 8155);
close;
} else if (BaseClass == Job_Acolyte) {
mes "[Baba Yaga]";
@@ -9695,6 +9784,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 16;
+ changequest(8154, 8157);
close;
} else if (BaseClass == Job_Thief) {
mes "[Baba Yaga]";
@@ -9703,6 +9793,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 21;
+ changequest(8154, 8159);
close;
} else if (BaseClass == Job_Mage) {
mes "[Baba Yaga]";
@@ -9711,6 +9802,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 26;
+ changequest(8154, 8161);
close;
} else if (BaseClass == Job_Swordman) {
mes "[Baba Yaga]";
@@ -9719,6 +9811,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 31;
+ changequest(8154, 8163);
close;
}
mes "[Baba Yaga]";
@@ -9727,6 +9820,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Ok! Move, move! You better be quick or I will find a way to punish you. Ehehehehehe.";
rhea_rus_main = 36;
+ changequest(8154, 8165);
close;
} else if (rhea_rus_main > 10 && rhea_rus_main < 16) {
mes "[Baba Yaga]";
@@ -9855,6 +9949,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
rhea_rus_main = 47;
getitem Gold_Key,1;
+ changequest(8156, 8167);
close;
} else if (rhea_rus_main == 42) {
mes "["+ strcharinfo(PC_NAME) +"]";
@@ -9869,6 +9964,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
rhea_rus_main = 47;
+ changequest(8158, 8167);
getitem Gold_Key,1;
close;
} else if (rhea_rus_main == 43) {
@@ -9886,6 +9982,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
delitem Babayaga_Silver_Spoon,1;
rhea_rus_main = 47;
+ changequest(8160, 8167);
getitem Gold_Key,1;
close;
}
@@ -9911,6 +10008,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
rhea_rus_main = 47;
+ changequest(8162, 8167);
getitem Gold_Key,1;
close;
} else if (rhea_rus_main == 45) {
@@ -9926,6 +10024,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
rhea_rus_main = 47;
+ changequest(8164, 8167);
getitem Gold_Key,1;
close;
} else if (rhea_rus_main == 46) {
@@ -9941,6 +10040,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Here, help Maria with this key and watch out for Koshei. He is very dangerous. Kehehehehehe.";
rhea_rus_main = 47;
+ changequest(8166, 8167);
getitem Gold_Key,1;
close;
} else if (rhea_rus_main > 46 && rhea_rus_main < 49) {
@@ -9979,6 +10079,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
mes "[Baba Yaga]";
mes "Bring them to me quickly! Time is running out!";
rhea_rus_main = 50;
+ changequest(8169, 8170);
close;
} else if (rhea_rus_main == 50) {
if (countitem(Holy_Water) && countitem(Water_Of_Darkness) && countitem(Leaf_Of_Yggdrasil) > 1 && countitem(Leaflet_Of_Hinal) > 9) {
@@ -10031,6 +10132,7 @@ mosk_dun02,48,214,5 script Baba Yaga#rus32 4_F_BABAYAGA,{
delitem Leaf_Of_Yggdrasil,2;
delitem Leaflet_Of_Hinal,10;
rhea_rus_main = 51;
+ changequest(8170, 8171);
close;
}
mes "[Baba Yaga]";
@@ -10383,6 +10485,7 @@ OnTouch:
mes "["+ strcharinfo(PC_NAME) +"]";
mes "Ok, then. Let's get back to Baba Yaga...";
rhea_rus_main = 41;
+ changequest(8155, 8156);
close;
} else if (rhea_rus_main == 41) {
mes "[Cow]";
@@ -10482,6 +10585,7 @@ OnTouch:
mes "["+ strcharinfo(PC_NAME) +"]";
mes "Ok, then. Let's get back to Baba Yaga...";
rhea_rus_main = 41;
+ changequest(8155, 8156);
close;
} else if (rhea_rus_main == 41) {
mes "[Cow]";
@@ -10570,6 +10674,7 @@ OnTouch:
mes "["+ strcharinfo(PC_NAME) +"]";
mes "Ok, then. Let's get back to Baba Yaga...";
rhea_rus_main = 41;
+ changequest(8155, 8156);
close;
} else if (rhea_rus_main == 41) {
mes "[Cow]";
@@ -10764,6 +10869,7 @@ mosk_dun02,65,232,0 script Noisy Coffin#rus36 4_NFCOFFIN,{
mes "Hu, the job has been done.";
mes "Let's get back to Baba Yaga.";
rhea_rus_main = 42;
+ changequest(8157, 8158);
close;
} else if (rhea_rus_main == 20) {
mes "["+ strcharinfo(PC_NAME) +"]";
@@ -10777,6 +10883,7 @@ mosk_dun02,65,232,0 script Noisy Coffin#rus36 4_NFCOFFIN,{
mes "Hu, the job has been done.";
mes "Let's get back to Baba Yaga.";
rhea_rus_main = 42;
+ changequest(8157, 8158);
close;
} else if (rhea_rus_main == 42) {
mes "["+ strcharinfo(PC_NAME) +"]";
@@ -10835,6 +10942,7 @@ treasure01,165,58,0 script Old Treasure Box#rus37 HIDDEN_NPC,{
next;
mes "- ^0000ff You find Baba Yaga's spoon !!^000000 -";
rhea_rus_main = 43;
+ changequest(8159, 8160);
getitem Babayaga_Silver_Spoon,1;
close;
} else if (rhea_rus_main == 43) {
@@ -11111,6 +11219,7 @@ amatsu,233,234,3 script Momotoro Publisher#rus42 4_F_JPN2,{
mes "Thank you for buying our books. If you need more books, contact us please.";
Zeny -= 5000;
rhea_rus_main = 27;
+ changequest(8161, 8162);
getitem Book_Of_Magic,1;
close;
} else if (rhea_rus_main > 26 && rhea_rus_main < 31) {
@@ -11381,6 +11490,7 @@ mosk_dun02,57,220,0 script House Ghost Jar#rus43 HIDDEN_NPC,{
mes "[House Ghost]";
mes "I will never forget your kindness of entertaining me.";
rhea_rus_main = 45;
+ changequest(8163, 8164);
close;
} else if (rhea_rus_main == 45) {
mes "[House Ghost]";
@@ -11756,6 +11866,7 @@ pay_dun04,163,186,0 script Ghost Tree#rus45 HIDDEN_NPC,{
next;
mes "- ^0000ff You receive the best broom from Payon !!^000000 - ";
rhea_rus_main = 46;
+ changequest(8165, 8166);
close;
}
mes "[Ghost Tree]";
diff --git a/npc/quests/quests_nameless.txt b/npc/quests/quests_nameless.txt
index 1371c93bf..0e0422530 100644
--- a/npc/quests/quests_nameless.txt
+++ b/npc/quests/quests_nameless.txt
@@ -2862,7 +2862,6 @@ que_temsky,99,100,6 script Pope#rachel2 4_F_ARUNA_POP,{
}
que_temsky,100,93,0 script #em_sky_s FAKE_NPC,5,2,{
-//OnTouch2:
OnTouch:
if (aru_em == 21) {
mes "^3355FFHigh Priest Zhed and High";
@@ -4252,7 +4251,6 @@ cmd_fild01,55,160,0 script Heap of Earth CLEAR_NPC,{
close;
}
-//OnTouch2:
OnTouch:
if (diamond_edq < 9) {
mes "[Dorian]";
@@ -5162,7 +5160,6 @@ moc_ruins,152,147,5 script Ibrahim 4_M_JOB_HUNTER,3,3,{
mes "kept it well hidden...";
close;
-//OnTouch2:
OnTouch:
if ((diamond_edq == 14) && (BaseLevel > 65)) {
mes "[Ibrahim]";
@@ -6861,7 +6858,6 @@ prt_in,168,18,1 script Valdes 1_M_YOUNGKNIGHT,2,2,{
mes "It's like my life is over...";
close;
-//OnTouch2:
OnTouch:
if (zdan_edq == 2) {
mes "[Valdes]";
@@ -8702,7 +8698,6 @@ OnInit:
$@mosnter = 0;
end;
-//OnTouch2:
OnTouch:
if (zdan_edq == 15) {
mes "^FF0000*Creak Creak*^000000";
@@ -11647,7 +11642,6 @@ OnTimer60000:
gef_fild08,182,182,0 script #CallGhost FAKE_NPC,2,2,{
end;
-//OnTouch2:
OnTouch:
if (jewel_nd == 21) {
if (countitem(Unlucky_Emerald) > 0) {
diff --git a/npc/quests/skills/knight_skills.txt b/npc/quests/skills/knight_skills.txt
index 3e177243a..1230ecab9 100644
--- a/npc/quests/skills/knight_skills.txt
+++ b/npc/quests/skills/knight_skills.txt
@@ -332,7 +332,6 @@ prt_in,85,99,3 script Knight#kabuto 4_M_JOB_KNIGHT2,{
}
prontera,69,351,0 script #tour HIDDEN_NPC,5,5,{
-//OnTouch2:
OnTouch:
if (KNGT_SK > 2)
end;
diff --git a/npc/quests/the_sign_quest.txt b/npc/quests/the_sign_quest.txt
index dd3750543..2102efaf0 100644
--- a/npc/quests/the_sign_quest.txt
+++ b/npc/quests/the_sign_quest.txt
@@ -12249,11 +12249,11 @@ OnInit:
end;
OnTouch:
- geffenia_warp = rand(1,4);
- if (geffenia_warp == 1) warp "gefenia01",58,169;
- else if (geffenia_warp == 2) warp "gefenia02",116,115;
- else if (geffenia_warp == 3) warp "gefenia03",130,206;
- else if (geffenia_warp == 4) warp "gefenia04",133,88;
+ .@geffenia_warp = rand(1,4);
+ if (.@geffenia_warp == 1) warp "gefenia01",58,169;
+ else if (.@geffenia_warp == 2) warp "gefenia02",116,115;
+ else if (.@geffenia_warp == 3) warp "gefenia03",130,206;
+ else if (.@geffenia_warp == 4) warp "gefenia04",133,88;
else warp "geffen",116,115;
end;
diff --git a/npc/re/jobs/3-2/royal_guard.txt b/npc/re/jobs/3-2/royal_guard.txt
index 5cead2250..7fe7a1d2a 100644
--- a/npc/re/jobs/3-2/royal_guard.txt
+++ b/npc/re/jobs/3-2/royal_guard.txt
@@ -147,7 +147,6 @@ prt_castle,48,161,3 script Middle-aged Gentleman#rg 1_M_LIBRARYMASTER,{
}
mes "[Heinrich]";
if (job_royal == 1) {
- mes "[Heinrich]";
mes "You are persistent friend.";
mes "Do you have more things to talk to me about?";
next;
diff --git a/npc/re/merchants/shadow_refiner.txt b/npc/re/merchants/shadow_refiner.txt
index 4e5049e5f..2f8984498 100644
--- a/npc/re/merchants/shadow_refiner.txt
+++ b/npc/re/merchants/shadow_refiner.txt
@@ -158,7 +158,7 @@ itemmall,31,76,3 script Shadow Blacksmith#nomal 4_F_JOB_BLACKSMITH,{
}
delitem .@choose,1;
Zeny -= 20000;
- if (getequippercentrefinery(.@SelectedPart) > rand(100) || getequippercentrefinery(.@SelectedPart) > rand(100)) {
+ if (getequippercentrefinery(.@SelectedPart) > rand(100) || ( .@option == 1 && getequippercentrefinery(.@SelectedPart) > rand(100))) {
successrefitem .@SelectedPart;
mes "[Shadow Blacksmith]";
mes "Refine was successful.";
diff --git a/npc/re/quests/eden/eden_quests.txt b/npc/re/quests/eden/eden_quests.txt
index f58c3ed5a..9e49a415b 100644
--- a/npc/re/quests/eden/eden_quests.txt
+++ b/npc/re/quests/eden/eden_quests.txt
@@ -9,7 +9,7 @@
//= This file is part of Hercules.
//= http://herc.ws - http://github.com/HerculesWS/Hercules
//=
-//= Copyright (C) 2012-2015 Hercules Dev Team
+//= Copyright (C) 2012-2016 Hercules Dev Team
//= Copyright (C) Capuche
//= Copyright (C) Euphy
//= Copyright (C) Masao
@@ -117,7 +117,7 @@ moc_para01,25,35,4 script Instructor Boya#para01 4_M_KNIGHT_GOLD,{
case 2:
mes "You are so rude!";
specialeffect2 EF_HIT1;
- percentheal -50,0;
+ percentheal -50, 0;
next;
mes "-Beats quickly and this shining Rune Knight turns invisible.";
mes "It hurts too much-";
@@ -712,7 +712,7 @@ moc_fild11,180,253,5 script Talking Dog#para03 4_RUS_DWOLF,{
next;
mes "-When the dog barked, your HP and SP recovered.-";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 3) {
@@ -750,7 +750,7 @@ moc_fild11,180,253,5 script Talking Dog#para03 4_RUS_DWOLF,{
next;
mes "-When the dog barked, your HP and SP recovered.-";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 4) {
@@ -806,7 +806,7 @@ moc_fild11,180,253,5 script Talking Dog#para03 4_RUS_DWOLF,{
next;
mes "-When the dog barked, your HP and SP recovered.-";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 5) {
@@ -952,7 +952,7 @@ prt_sewb1,131,262,3 script Timid Cat#para04 4_M_BABYCAT,{
mes "Take care to check your map so you don't get lost.";
mes "It's a service meeow.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 8) {
@@ -990,7 +990,7 @@ prt_sewb1,131,262,3 script Timid Cat#para04 4_M_BABYCAT,{
mes "I will help you a little.";
mes "Here, I have recovered your strengh meow..";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 9) {
@@ -1025,7 +1025,7 @@ prt_sewb1,131,262,3 script Timid Cat#para04 4_M_BABYCAT,{
mes "I will help you a little.";
mes "Here, I have recovered your strengh meow..";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 >= 10) {
@@ -1137,7 +1137,7 @@ pay_arche,41,136,3 script Eden Member Karl#para05 4_M_KHMAN,{
mes "Just in case I will recover all your energy.";
mes "It's the last step so be careful.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 15) {
@@ -1168,7 +1168,7 @@ pay_arche,41,136,3 script Eden Member Karl#para05 4_M_KHMAN,{
mes "Just in case I will recover all your energy.";
mes "It's the last step so be careful.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 >= 16) {
@@ -1290,7 +1290,7 @@ anthell01,29,264,5 script Eden Member Cloud#para06 4_M_HUMAN_02,{
mes "Can you stay longer?";
mes "Ok, I will recover your strengh so, keep going.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 19) {
@@ -1329,7 +1329,7 @@ anthell01,29,264,5 script Eden Member Cloud#para06 4_M_HUMAN_02,{
mes "See, to cheer you up I will heal you until you finish the training.";
mes "Chin up and cheer up.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 20) {
@@ -1357,7 +1357,7 @@ anthell01,29,264,5 script Eden Member Cloud#para06 4_M_HUMAN_02,{
mes "Just Vitata, isn't that an easy opponent?";
mes "If you see Maya just run away.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 >= 21) {
@@ -1472,7 +1472,7 @@ in_orcs01,38,175,3 script Eden Member Hooksha 1_F_SIGNZISK,{
mes "You look tired I will recover your health.";
mes "If you are in trouble just come back here to safety.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 26) {
@@ -1503,7 +1503,7 @@ in_orcs01,38,175,3 script Eden Member Hooksha 1_F_SIGNZISK,{
mes "You look tired, I will recover your health.";
mes "If you are in trouble just come back here to safety.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 27) {
@@ -1529,7 +1529,7 @@ in_orcs01,38,175,3 script Eden Member Hooksha 1_F_SIGNZISK,{
mes "You look tired, I will recover your health.";
mes "If you are in trouble just come back here to safety.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 28) {
@@ -1602,7 +1602,7 @@ in_orcs01,38,175,3 script Eden Member Hooksha 1_F_SIGNZISK,{
mes "You look tired, I will recover your health.";
mes "If you are in trouble just come back here to safety.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 31) {
@@ -1626,7 +1626,7 @@ in_orcs01,38,175,3 script Eden Member Hooksha 1_F_SIGNZISK,{
mes "You look tired I will recover your health.";
mes "If you are in trouble just come back here to safety.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 32) {
@@ -1729,7 +1729,7 @@ iz_dun04,43,46,3 script Eden Member Callandiva 4_F_CRU,{
mes "Mermans are not easy opponents.";
mes "I will help you recover so cheer up.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 == 35) {
@@ -1763,7 +1763,7 @@ iz_dun04,43,46,3 script Eden Member Callandiva 4_F_CRU,{
mes "Strouf are not easy opponents.";
mes "I can help you recover so cheer up.";
npcskill "AL_HEAL",11,99,60;
- percentheal 100,100;
+ percentheal 100, 100;
close;
}
if (para_suv01 >= 36) {
@@ -1855,38 +1855,31 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{
close;
}
mes "[Michael]";
- if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader) {
+ if (BaseClass == Job_Swordman) {
callsub S_Select,"We have one and Two-handed swords",
P_Slayer1,"Eden Slayer I","Two-handed sword","Attack 162","",
P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for.";
- }
- if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Ninja || Class == Job_Novice || Class == Job_Novice_High) {
+ } else if (BaseClass == Job_Thief || BaseClass == Job_Ninja || BaseClass == Job_Novice) {
callsub S_Select,"",
P_Dagger1,"Eden Dagger I","Dagger","MATK+60, attack 124","This is what we strive for.";
- }
- if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) {
+ } else if (BaseClass == Job_Merchant) {
callsub S_Select,"We have a mace and a One-handed sword",
P_Sabre1,"Eden Saber I","One-handed sword","Attack 147","This is what we strive for.",
P_Mace1,"Eden Mace I","Mace","Attack 142","";
- }
- if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) {
+ } else if (BaseClass == Job_Archer) {
callsub S_Select,"",
P_Bow1,"Eden Bow I","Bow","Attack 82","";
- }
- if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) {
+ } else if (BaseClass == Job_Acolyte) {
callsub S_Select,"We have a mace and a staff",
P_Mace1,"Eden Mace I","Mace","Attack 142","",
P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60","";
- }
- if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) {
+ } else if (BaseClass == Job_Mage) {
callsub S_Select,"",
P_Staff1,"Eden Staff I","Staff","INT+2, MATK+125, attack 60","";
- }
- if (Class == Job_Gunslinger) {
+ } else if (BaseClass == Job_Gunslinger) {
callsub S_Select,"",
P_Revolver1,"Eden Revolver I","Revolver","HIT-5, attack 44","";
}
-
mes "Let me see... you will receive..";
mes "the Eden Group Boots II and Uniform II.";
next;
@@ -1933,34 +1926,28 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{
close;
}
mes "[Michael]";
- if (Class == Job_Swordman || Class == Job_Swordman_High || Class == Job_Knight || Class == Job_Crusader) {
+ if (BaseClass == Job_Swordman) {
callsub S_Select,"We have one and Two-handed swords",
P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","",
P_Slayer2,"Eden Slayer II","Two-handed sword","Attack 185","";
- }
- if (Class == Job_Thief || Class == Job_Thief_High || Class == Job_Assassin || Class == Job_Rogue || Class == Job_Novice || Class == Job_Novice_High || Class == Job_SuperNovice || Class == Job_Soul_Linker || Class == Job_Ninja) {
+ } else if (BaseClass == Job_Thief || BaseClass == Job_Novice || BaseJob == Job_Soul_Linker || BaseClass == Job_Ninja) {
callsub S_Select,"",
P_Dagger2,"Eden Dagger II","Dagger","MATK+70, attack 158","";
- }
- if (Class == Job_Acolyte || Class == Job_Acolyte_High || Class == Job_Priest || Class == Job_Monk) {
+ } else if (BaseClass == Job_Acolyte) {
callsub S_Select,"We have a mace and a staff",
P_Mace2,"Eden Mace II","Mace","Attack 163","",
P_Staff2,"Eden Staff II","Staff","INT+3, MATK+150, attack 60","";
- }
- if (Class == Job_Archer || Class == Job_Archer_High || Class == Job_Hunter || Class == Job_Dancer || Class == Job_Bard) {
+ } else if (BaseClass == Job_Archer) {
callsub S_Select,"",
P_Bow2,"Eden Bow II","Bow","Attack 82","";
- }
- if (Class == Job_Mage || Class == Job_Mage_High || Class == Job_Wizard || Class == Job_Sage) {
+ } else if (BaseClass == Job_Mage) {
callsub S_Select,"",
P_Staff2,"Eden Staff II","Staff","INT+3, MATK+155, attack 60","";
- }
- if (Class == Job_Merchant || Class == Job_Merchant_High || Class == Job_Blacksmith || Class == Job_Alchemist) {
+ } else if (BaseClass == Job_Merchant) {
callsub S_Select,"We have a mace and a One-handed sword",
P_Sabre2,"Eden Saber II","One-handed sword","Attack 170","",
P_Mace2,"Eden Mace II","Mace","Attack 163","";
- }
- if (Class == Job_Gunslinger) {
+ } else if (BaseClass == Job_Gunslinger) {
callsub S_Select,"",
P_Revolver2,"Eden Revolver II","Revolver","HIT-5, attack 60","";
}
@@ -2024,12 +2011,12 @@ moc_para01,112,96,5 script Administrator Michael 4_M_RUSMAN1,{
mes "What status bonus do you want to upgrade?";
next;
switch (select("Upgrade STR", "Upgrade AGI", "Upgrade VIT", "Upgrade INT", "Upgrade DEX", "Upgrade LUK", "Nevermind.")) {
- case 1: callsub S_Upgrade,"STR",4701;
- case 2: callsub S_Upgrade,"AGI",4731;
- case 3: callsub S_Upgrade,"VIT",4741;
- case 4: callsub S_Upgrade,"INT",4711;
- case 5: callsub S_Upgrade,"DEX",4721;
- case 6: callsub S_Upgrade,"LUK",4751;
+ case 1: callsub S_Upgrade,"STR",Strength2;
+ case 2: callsub S_Upgrade,"AGI",Agility2;
+ case 3: callsub S_Upgrade,"VIT",Vitality2;
+ case 4: callsub S_Upgrade,"INT",Inteligence2;
+ case 5: callsub S_Upgrade,"DEX",Dexterity2;
+ case 6: callsub S_Upgrade,"LUK",Luck2;
case 7:
mes "[Michael]";
mes "Why? It'll be beter than it is.";
@@ -2252,8 +2239,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered some HP and SP. -";
Zeny = Zeny - 2700;
- percentheal 50,0;
- percentheal 0,50;
+ percentheal 50, 50;
close;
}
mes "[Chef]";
@@ -2269,8 +2255,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered some HP and SP. -";
Zeny = Zeny - 3000;
- percentheal 50,0;
- percentheal 0,50;
+ percentheal 50, 50;
close;
}
mes "[Chef]";
@@ -2291,8 +2276,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered some HP and SP. -";
Zeny = Zeny - 3600;
- percentheal 75,0;
- percentheal 0,75;
+ percentheal 75, 75;
close;
}
mes "[Chef]";
@@ -2308,8 +2292,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered some HP and SP. -";
Zeny = Zeny - 4000;
- percentheal 75,0;
- percentheal 0,75;
+ percentheal 75, 75;
close;
}
mes "[Chef]";
@@ -2327,8 +2310,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered your HP and SP. -";
Zeny = Zeny - 4500;
- percentheal 100,0;
- percentheal 0,100;
+ percentheal 100, 100;
close;
}
mes "[Chef]";
@@ -2346,8 +2328,7 @@ moc_para01,179,44,3 script Chef 4_M_CHNCOOK,{
mes "- After eating the meal, You feel a little bit full.";
mes "You've recovered your HP and SP. -";
Zeny = Zeny - 5000;
- percentheal 100,0;
- percentheal 0,100;
+ percentheal 100, 100;
close;
}
mes "[Chef]";
@@ -2967,7 +2948,7 @@ comodo,173,354,5 script Dispatched Instructor#02 1_M_JOBTESTER,{
mes "[Romeo]";
mes "Let me help you recover if you are tired.";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 3) {
@@ -3027,7 +3008,7 @@ um_fild01,34,280,5 script Instructor Romeo#2nd02 1_M_JOBTESTER,{
mes "[Romeo]";
mes "I'll help you recover if you are tired.";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 4) {
@@ -3057,7 +3038,7 @@ um_fild01,34,280,5 script Instructor Romeo#2nd02 1_M_JOBTESTER,{
mes "[Romeo]";
mes "I'll help you recover if you are tired.";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else {
@@ -3144,7 +3125,7 @@ glast_01,195,131,5 script Dispatched Instructor#03 4_F_SISTER,{
mes "I'll watch your back!.";
mes "... Of.. Course.. I'll fight too!";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 9) {
@@ -3176,7 +3157,7 @@ glast_01,195,131,5 script Dispatched Instructor#03 4_F_SISTER,{
mes "I'll watch your back, like last time.";
mes "... Of... Course... I'll fight them too!";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 10) {
@@ -3280,7 +3261,7 @@ ein_fild08,172,359,3 script Dispatched Instructor#04 4_M_4THPRIN1,{
mes "If you're hurt I'll heal you a bit.";
}
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
else if (para_2nd01 == 14) {
if (questprogress(7226,HUNTING) == 2 && questprogress(7227,HUNTING) == 2) {
@@ -3312,7 +3293,7 @@ ein_fild08,172,359,3 script Dispatched Instructor#04 4_M_4THPRIN1,{
mes "Ugh this is difficult.";
mes "I'll make you feel better though.";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 15) {
@@ -3418,7 +3399,7 @@ ice_dun01,154,13,5 script Dispatched Instructor#05 4_F_JOB_BLACKSMITH,{
setquest 7231; // Hunting and Gathering
getexp 40000,40000;
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
else {
mes "The biggest stumbling block is dealing with the Siromas.";
@@ -3637,7 +3618,7 @@ man_fild01,43,234,3 script Dispatched Instructor#07 4_DST_SOLDIER,{
mes "You seem a bit flushed.";
mes "Fine I'll heal you!";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 25)
@@ -3722,7 +3703,7 @@ spl_fild02,377,149,3 script Dispatched Instructor#08 4_M_DST_MASTER,{
mes "[Mine]";
mes "You're not lying about being a real adventurer are you?";
npcskill "AL_HEAL",10,99,60;
- percentheal 0,100;
+ percentheal 0, 100;
}
}
else if (para_2nd01 == 27) {
@@ -3952,19 +3933,19 @@ moc_para01,111,83,3 script Blacksmith Thorn#2nd10 2_M_OLDBLSMITH,{
P_Bow3,"Eden Group Bow III","Bow, Attack 140",
P_Tail1,"Eden Group Whip I","Whip, Attack 125";
}
- else if (Class == Job_Ninja) {
+ else if (BaseClass == Job_Ninja) {
callsub L_Select,"",
P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165",
P_Huuma_Shuriken1,"Eden Group Huuma Shuriken I","Huuma Suriken, MATK +50, ATK 170";
}
- else if (Class == Job_Star_Gladiator)
+ else if (BaseJob == Job_Star_Gladiator)
getitem P_Dic1,1;
- else if (Class == Job_Soul_Linker) {
+ else if (BaseJob == Job_Soul_Linker) {
callsub L_Select,"",
P_Dagger3,"Eden Group Dagger III","Dagger, MATK +80, ATK 165",
P_Staff3,"Eden Group Staff III","Staff, MATK +170, INT +4, ATK 60";
}
- else if (Class == Job_Gunslinger)
+ else if (BaseClass == Job_Gunslinger)
getitem P_Revolver3,1;
else {
mes "Hmm, you are eligible to receive equipment.";
@@ -4079,21 +4060,10 @@ moc_para01,112,79,3 script Weapons Expert BK#2nd11 4_M_REPAIR,{
P_Revolver3,
P_Knuckle1,
P_Huuma_Shuriken1;
- .@menu$ = "Eden Group Slayer III:" +
- "Eden Group Saber III:" +
- "Eden Group Dagger III:" +
- "Eden Group Katar I:" +
- "Eden Group Axe I:" +
- "Eden Group Spear I:" +
- "Eden Group Staff III:" +
- "Eden Group Mace III:" +
- "Eden Group Bow III:" +
- "Eden Group Dictionary I:" +
- "Eden Group Guitar I:" +
- "Eden Group Whip I:" +
- "Eden Group Revolver III:" +
- "Eden Group Knuckles I:" +
- "Eden Group Huuma Shuriken I";
+ .@wplist_size = getarraysize(.@wplist);
+ for ( .@i = 0; .@i < .@wplist_size; ++.@i ) {
+ .@menu$ += getitemname(.@wplist[.@i]) + ":";
+ }
mes "[BK]";
mes "What's happening?";
mes "No way?!";
diff --git a/npc/woe-se/agit_main_se.txt b/npc/woe-se/agit_main_se.txt
index c9b34f610..5f291e658 100644
--- a/npc/woe-se/agit_main_se.txt
+++ b/npc/woe-se/agit_main_se.txt
@@ -1681,6 +1681,10 @@ OnEnable:
if (.@num == 3) set getd(".MyMobCount_"+.@num+strnpcinfo(NPC_NAME_HIDDEN)),4;
else if (.@num) set getd(".MyMobCount_"+.@num+strnpcinfo(NPC_NAME_HIDDEN)),6;
setwall strnpcinfo(NPC_NAME_HIDDEN),.@wall[0],.@wall[1],.@wall[2],.@wall[3],.@wall[4],substr(strnpcinfo(NPC_NAME_HIDDEN),0,1)+substr(strnpcinfo(NPC_NAME_HIDDEN),8,9)+"_"+strnpcinfo(NPC_NAME_VISIBLE);
+ if (.@num == 0)
+ setcell(strnpcinfo(NPC_NAME_HIDDEN), .@x[0], .@y[0], .@x[getarraysize(.@x)-1], .@y[getarraysize(.@y)-1], cell_basilica, true);
+ if (.@num == 1 && (strnpcinfo(NPC_NAME_HIDDEN) == "schg_cas01" || strnpcinfo(NPC_NAME_HIDDEN) == "schg_cas04" || strnpcinfo(NPC_NAME_HIDDEN) == "schg_cas05"))
+ setcell(strnpcinfo(NPC_NAME_HIDDEN), .@x[0], .@y[0], .@x[5], .@y[5], cell_basilica, true);
.@j = (getd(".MyMobCount_"+.@num+strnpcinfo(NPC_NAME_HIDDEN)))?getd(".MyMobCount_"+.@num+strnpcinfo(NPC_NAME_HIDDEN)):getarraysize(.@x);
for (.@i = 0; .@i<.@j; ++.@i)
guardian strnpcinfo(NPC_NAME_HIDDEN),.@x[.@i],.@y[.@i]," ",1905,strnpcinfo(NPC_NAME)+"::OnBarrierDestroyed";
@@ -1700,6 +1704,31 @@ OnBarrierDestroyed:
end;
OnDisable:
+ if (compare(strnpcinfo(NPC_NAME_HIDDEN),"arug")) {
+ if (strnpcinfo(NPC_NAME_HIDDEN) == "arug_cas01") {
+ setarray(.@x[0], 239, 245);
+ setarray(.@y[0], 73, 73);
+ } else if (strnpcinfo(NPC_NAME_HIDDEN) == "arug_cas02") {
+ setarray(.@x[0], 137, 143);
+ setarray(.@y[0], 137, 137);
+ } else { // Castles 3, 4, 5 are identical.
+ setarray(.@x[0], 139, 145);
+ setarray(.@y[0], 111, 111);
+ }
+ } else {
+ if (strnpcinfo(NPC_NAME_HIDDEN) == "schg_cas02") {
+ setarray(.@x[0], 289, 289);
+ setarray(.@y[0], 98, 104);
+ } else if (strnpcinfo(NPC_NAME_HIDDEN) == "schg_cas03") {
+ setarray(.@x[0], 326, 330);
+ setarray(.@y[0], 300, 300);
+ } else { // Castles 1, 4, 5 are identical.
+ setarray(.@x[0], 115, 125);
+ setarray(.@y[0], 49, 49);
+ setcell(strnpcinfo(NPC_NAME_HIDDEN), 115, 50, 125, 50, cell_basilica, false);
+ }
+ }
+ setcell(strnpcinfo(NPC_NAME_HIDDEN), .@x[0], .@y[0], .@x[1], .@y[1], cell_basilica, false);
delwall substr(strnpcinfo(NPC_NAME_HIDDEN),0,1)+substr(strnpcinfo(NPC_NAME_HIDDEN),8,9)+"_"+strnpcinfo(NPC_NAME_VISIBLE);
killmonster strnpcinfo(NPC_NAME_HIDDEN),strnpcinfo(NPC_NAME)+"::OnBarrierDestroyed";
end;
diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql
index 1aab2f39c..18214eda8 100644
--- a/sql-files/item_db.sql
+++ b/sql-files/item_db.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql
index 5edbc7dbd..2e519c52f 100644
--- a/sql-files/item_db2.sql
+++ b/sql-files/item_db2.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql
index 753b17ad8..93f4a323c 100644
--- a/sql-files/item_db_re.sql
+++ b/sql-files/item_db_re.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
@@ -9768,7 +9768,7 @@ REPLACE INTO `item_db` VALUES ('22077','Red_Eco_Friendly_Shoes','Red Eco-Friendl
REPLACE INTO `item_db` VALUES ('22083','Private_Doram_Shoes','Private Doram Shoes','4','20','10','500','0','0','25','0','1','0','63','2','64','0','100',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP, 100; bonus bMaxSP, 50; bonus bHPrecovRate, getrefine() * 10 / 3; bonus bSPrecovRate, getrefine() * 10 / 3;','','');
REPLACE INTO `item_db` VALUES ('22084','Luxury_Doram_Shoes','Luxury Doram Shoes','4','20','10','600','0','0','30','0','1','0','63','2','64','0','140',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHP, 300; bonus bMaxSP, 100; bonus bHPrecovRate, 20 * getrefine() / 3; bonus bSPrecovRate, 20 * getrefine() / 3;','','');
REPLACE INTO `item_db` VALUES ('22085','Elegant_Doram_Shoes','Elegant Doram Shoes','4','20','10','700','0','0','35','0','1','0','63','2','64','0','175',NULL,'1','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMaxHPrate, 10; bonus bMaxSPrate, 5; bonus bMaxHP, 100 * getrefine() / 2; bonus bMaxSP, 20 * getrefine() / 2; if ((getrefine() / 2) >= 4) bonus2 bSkillUseSP, SU_LOPE, 5;','','');
-REPLACE INTO `item_db` VALUES ('22508','Para_Team_Mark_','Eden Group Mark','11','0','0','0','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','0','0','0','0','1200000','507',NULL,'0',NULL,'0',NULL,'0','unitskilluseid getcharid(CHAR_ID_ACCOUNT), \"AL_TELEPORT\", 3;','','');
+REPLACE INTO `item_db` VALUES ('22508','Para_Team_Mark_','Eden Group Mark','11','0','0','0','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','0','0','0','0','1200000','507',NULL,'0',NULL,'0',NULL,'0','warp \"moc_para01\", 171, 115;','','');
REPLACE INTO `item_db` VALUES ('22514','Candy_Holder','Candy Holder','11','20','10','10','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('22515','Key_Of_Twisted_Time','Twisted Key of Time','3','10','5','300','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','0','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','','','');
REPLACE INTO `item_db` VALUES ('22540','Runstone_Lux','Lux Anima Rune','11','2','1','100','0','0','0','0','0','18446744073709551615','63','2','0','0','0',NULL,'0','0','0','0','0','60000','475',NULL,'0',NULL,'20','1','0','itemskill RK_LUXANIMA,1;','','');
diff --git a/sql-files/logs.sql b/sql-files/logs.sql
index 71c1ce86b..82c1c944c 100644
--- a/sql-files/logs.sql
+++ b/sql-files/logs.sql
@@ -167,7 +167,7 @@ CREATE TABLE IF NOT EXISTS `zenylog` (
`time` DATETIME NULL,
`char_id` INT(11) NOT NULL DEFAULT '0',
`src_id` INT(11) NOT NULL DEFAULT '0',
- `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B') NOT NULL DEFAULT 'S',
+ `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B','K') NOT NULL DEFAULT 'S',
`amount` INT(11) NOT NULL DEFAULT '0',
`map` VARCHAR(11) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
diff --git a/sql-files/main.sql b/sql-files/main.sql
index 5eac523ed..aa9386179 100644
--- a/sql-files/main.sql
+++ b/sql-files/main.sql
@@ -829,6 +829,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1457638175); -- 2016-03-1
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1467934919); -- 2016-07-08--02-42.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1467935469); -- 2016-07-08--02-51.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1475526420); -- 2016-10-03--20-27.sql
+INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1477434595); -- 2016-10-26--10-29.sql
--
-- Table structure for table `storage`
diff --git a/sql-files/mob_db.sql b/sql-files/mob_db.sql
index 03d8fd629..824aa6e55 100644
--- a/sql-files/mob_db.sql
+++ b/sql-files/mob_db.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_db2.sql b/sql-files/mob_db2.sql
index 9a616ae80..55823993e 100644
--- a/sql-files/mob_db2.sql
+++ b/sql-files/mob_db2.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql
index 57cf218d8..f871500be 100644
--- a/sql-files/mob_db_re.sql
+++ b/sql-files/mob_db_re.sql
@@ -1,7 +1,7 @@
-- This file is part of Hercules.
-- http://herc.ws - http://github.com/HerculesWS/Hercules
--
--- Copyright (C) 2013-2016 Hercules Dev Team
+-- Copyright (C) 2013-2017 Hercules Dev Team
--
-- Hercules is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
diff --git a/sql-files/upgrades/2016-10-26--10-29.sql b/sql-files/upgrades/2016-10-26--10-29.sql
new file mode 100644
index 000000000..cabd7db10
--- /dev/null
+++ b/sql-files/upgrades/2016-10-26--10-29.sql
@@ -0,0 +1,23 @@
+#1477434595
+
+-- This file is part of Hercules.
+-- http://herc.ws - http://github.com/HerculesWS/Hercules
+--
+-- Copyright (C) 2015-2016 Hercules Dev Team
+--
+-- Hercules is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+ALTER TABLE `zenylog` CHANGE `type` `type` ENUM('T','V','P','M','S','N','D','C','A','E','I','B','K') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'S';
+
+INSERT INTO `sql_updates` (`timestamp`, `ignored`) VALUES (1477434595 , 'No');
diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt
index 0b1051d76..a382f5999 100644
--- a/sql-files/upgrades/index.txt
+++ b/sql-files/upgrades/index.txt
@@ -33,3 +33,4 @@
2016-07-08--02-42.sql
2016-07-08--02-51.sql
2016-10-03--20-27.sql
+2016-10-26--10-29.sql
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index d0e23811c..0a4af75dd 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2014-2016 Hercules Dev Team
+ * Copyright (C) 2014-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/HPMSymbols.inc.h b/src/common/HPMSymbols.inc.h
index 8dd0f1cd7..d4a103b88 100644
--- a/src/common/HPMSymbols.inc.h
+++ b/src/common/HPMSymbols.inc.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/common/core.c b/src/common/core.c
index 74c63a6d6..9a131d042 100644
--- a/src/common/core.c
+++ b/src/common/core.c
@@ -404,6 +404,8 @@ int cmdline_exec(int argc, char **argv, unsigned int options)
struct CmdlineArgData *data = NULL;
const char *arg = argv[i];
if (arg[0] != '-') { // All arguments must begin with '-'
+ if ((options&(CMDLINE_OPT_SILENT|CMDLINE_OPT_PREINIT)) != 0)
+ continue;
ShowError("Invalid option '%s'.\n", argv[i]);
exit(EXIT_FAILURE);
}
diff --git a/src/common/md5calc.c b/src/common/md5calc.c
index bd6b48f10..d2fc32371 100644
--- a/src/common/md5calc.c
+++ b/src/common/md5calc.c
@@ -168,16 +168,15 @@ static void md5_Round_Calculate(const unsigned char *block,
}
/// @copydoc md5_interface::binary()
-static void md5_string2binary(const char *string, unsigned char *output)
+static void md5_buf2binary(const uint8 *buf, const int buf_size, uint8 *output)
{
//var
/*8bit*/
unsigned char padding_message[64]; //Extended message 512bit 64byte
- const unsigned char *pstring; // The position of string in the present scanning notes is held.
+ const uint8 *pbuf; // The position of string in the present scanning notes is held.
/*32bit*/
- unsigned int string_byte_len, //The byte chief of string is held.
- string_bit_len, //The bit length of string is held.
+ unsigned int buf_bit_len, //The bit length of string is held.
copy_len, //The number of bytes which is used by 1-3 and which remained
msg_digest[4]; //Message digest 128bit 4byte
unsigned int *A = &msg_digest[0], //The message digest in accordance with RFC (reference)
@@ -195,16 +194,15 @@ static void md5_string2binary(const char *string, unsigned char *output)
//Step 1.Append Padding Bits (extension of a mark bit)
//1-1
- string_byte_len = (unsigned int)strlen(string); //The byte chief of a character sequence is acquired.
- pstring = (const unsigned char *)string; // The position of the present character sequence is set.
+ pbuf = buf; // The position of the present character sequence is set.
//1-2 Repeat calculation until length becomes less than 64 bytes.
- for (i=string_byte_len; 64<=i; i-=64,pstring+=64)
- md5_Round_Calculate(pstring, A,B,C,D);
+ for (i=buf_size; 64<=i; i-=64,pbuf+=64)
+ md5_Round_Calculate(pbuf, A,B,C,D);
//1-3
- copy_len = string_byte_len % 64; //The number of bytes which remained is computed.
- strncpy((char *)padding_message, (const char *)pstring, copy_len); // A message is copied to an extended bit sequence.
+ copy_len = buf_size % 64; //The number of bytes which remained is computed.
+ strncpy((char *)padding_message, (const char *)pbuf, copy_len); // A message is copied to an extended bit sequence.
memset(padding_message+copy_len, 0, 64 - copy_len); //It buries by 0 until it becomes extended bit length.
padding_message[copy_len] |= 0x80; //The next of a message is 1.
@@ -216,12 +214,12 @@ static void md5_string2binary(const char *string, unsigned char *output)
}
//Step 2.Append Length (the information on length is added)
- string_bit_len = string_byte_len * 8; //From the byte chief to bit length (32 bytes of low rank)
- memcpy(&padding_message[56], &string_bit_len, 4); //32 bytes of low rank is set.
+ buf_bit_len = buf_size * 8; //From the byte chief to bit length (32 bytes of low rank)
+ memcpy(&padding_message[56], &buf_bit_len, 4); //32 bytes of low rank is set.
//When bit length cannot be expressed in 32 bytes of low rank, it is a beam raising to a higher rank.
- if (UINT_MAX / 8 < string_byte_len) {
- unsigned int high = (string_byte_len - UINT_MAX / 8) * 8;
+ if (UINT_MAX / 8 < (unsigned int)buf_size) {
+ unsigned int high = (buf_size - UINT_MAX / 8) * 8;
memcpy(&padding_message[60], &high, 4);
} else {
memset(&padding_message[60], 0, 4); //In this case, it is good for a higher rank at 0.
@@ -237,12 +235,12 @@ static void md5_string2binary(const char *string, unsigned char *output)
/// @copydoc md5_interface::string()
void md5_string(const char *string, char *output)
{
- unsigned char digest[16];
+ uint8 digest[16];
nullpo_retv(string);
nullpo_retv(output);
- md5->binary(string,digest);
+ md5->binary((const uint8 *)string, (int)strlen(string), digest);
snprintf(output, 33, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
digest[ 0], digest[ 1], digest[ 2], digest[ 3],
digest[ 4], digest[ 5], digest[ 6], digest[ 7],
@@ -267,7 +265,7 @@ void md5_salt(int len, char *output)
void md5_defaults(void)
{
md5 = &md5_s;
- md5->binary = md5_string2binary;
+ md5->binary = md5_buf2binary;
md5->string = md5_string;
md5->salt = md5_salt;
}
diff --git a/src/common/md5calc.h b/src/common/md5calc.h
index b4d4995f9..f55ebe312 100644
--- a/src/common/md5calc.h
+++ b/src/common/md5calc.h
@@ -46,7 +46,7 @@ struct md5_interface {
* @param[in] string The source string.
* @param[out] output Output buffer (at least 16 bytes available).
*/
- void (*binary) (const char *string, unsigned char *output);
+ void (*binary) (const uint8 *buf, const int buf_size, uint8 *output);
/**
* Generates a random salt.
diff --git a/src/map/battle.c b/src/map/battle.c
index bb20b94ff..64fda033f 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -7167,6 +7167,7 @@ static const struct battle_data {
{ "castrate_dex_scale", &battle_config.castrate_dex_scale, 150, 1, INT_MAX, },
{ "vcast_stat_scale", &battle_config.vcast_stat_scale, 530, 1, INT_MAX, },
{ "area_size", &battle_config.area_size, 14, 0, INT_MAX, },
+ { "chat_area_size", &battle_config.chat_area_size, 9, 0, INT_MAX, },
{ "zeny_from_mobs", &battle_config.zeny_from_mobs, 0, 0, 1, },
{ "mobs_level_up", &battle_config.mobs_level_up, 0, 0, 1, },
{ "mobs_level_up_exp_rate", &battle_config.mobs_level_up_exp_rate, 1, 1, INT_MAX, },
diff --git a/src/map/battle.h b/src/map/battle.h
index 7e7048a38..c55d5ef19 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -362,6 +362,7 @@ struct Battle_Config {
int castrate_dex_scale; // added by [MouseJstr]
int area_size; // added by [MouseJstr]
+ int chat_area_size; // added by [gumi]
int max_def, over_def_bonus; //added by [Skotlex]
diff --git a/src/map/clif.c b/src/map/clif.c
index 887fa9d64..6897c357a 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -451,8 +451,8 @@ bool clif_send(const void* buf, int len, struct block_list* bl, enum send_target
break;
case AREA_CHAT_WOC:
nullpo_retr(true, bl);
- map->foreachinarea(clif->send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5),
- bl->x+(AREA_SIZE-5), bl->y+(AREA_SIZE-5), BL_PC, buf, len, bl, AREA_WOC);
+ map->foreachinarea(clif->send_sub, bl->m, bl->x-CHAT_AREA_SIZE, bl->y-CHAT_AREA_SIZE,
+ bl->x+CHAT_AREA_SIZE, bl->y+CHAT_AREA_SIZE, BL_PC, buf, len, bl, AREA_WOC);
break;
case CHAT:
@@ -1077,15 +1077,21 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
#endif
#if PACKETVER >= 20150513
p.body = vd->body_style;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
safestrncpy(p.name, clif->get_bl_name(bl), NAME_LENGTH);
#endif
-
clif->send(&p,sizeof(p),tsd?&tsd->bl:bl,target);
if (clif->isdisguised(bl)) {
#if PACKETVER >= 20091103
p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+#if PACKETVER >= 20131223
+ p.AID = -bl->id;
+#else
p.GID = -bl->id;
+#endif
#else
p.GID = -bl->id;
#endif
@@ -1220,6 +1226,9 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
#endif
#if PACKETVER >= 20150513
p.body = vd->body_style;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
safestrncpy(p.name, clif->get_bl_name(bl), NAME_LENGTH);
#endif
if (clif->isdisguised(bl)) {
@@ -1228,7 +1237,11 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
clif->send(&p,sizeof(p),bl,target);
#if PACKETVER >= 20091103
p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+#if PACKETVER >= 20131223
+ p.AID = -bl->id;
+#else
p.GID = -bl->id;
+#endif
#else
p.GID = -bl->id;
#endif
@@ -1262,7 +1275,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
#endif
#if PACKETVER >= 20131223
p.AID = bl->id;
- p.GID = (tsd) ? tsd->status.char_id : 0; // CCODE
+ p.GID = (sd) ? sd->status.char_id : 0; // CCODE
#else
p.GID = bl->id;
#endif
@@ -1312,6 +1325,9 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
#endif
#if PACKETVER >= 20150513
p.body = vd->body_style;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
safestrncpy(p.name, clif->get_bl_name(bl), NAME_LENGTH);
#endif
@@ -1320,7 +1336,11 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
if (clif->isdisguised(bl)) {
#if PACKETVER >= 20091103
p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+#if PACKETVER >= 20131223
+ p.AID = -bl->id;
+#else
p.GID = -bl->id;
+#endif
#else
p.GID = -bl->id;
#endif
@@ -1332,7 +1352,7 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
/// 01b0 <id>.L <type>.B <value>.L
/// type:
/// unused
-void clif_class_change(struct block_list *bl, int class_, int type)
+void clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd)
{
nullpo_retv(bl);
@@ -1343,7 +1363,11 @@ void clif_class_change(struct block_list *bl, int class_, int type)
WBUFL(buf,2)=bl->id;
WBUFB(buf,6)=type;
WBUFL(buf,7)=class_;
- clif->send(buf,packet_len(0x1b0),bl,AREA);
+
+ if (sd == NULL)
+ clif->send(buf, packet_len(0x1b0), bl, AREA);
+ else
+ clif->send(buf, packet_len(0x1b0), &sd->bl, SELF);
}
}
diff --git a/src/map/clif.h b/src/map/clif.h
index b27adb5be..aefba5974 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -671,7 +671,7 @@ struct clif_interface {
void (*changetraplook) (struct block_list *bl,int val);
void (*refreshlook) (struct block_list *bl,int id,int type,int val,enum send_target target);
void (*sendlook) (struct block_list *bl, int id, int type, int val, int val2, enum send_target target);
- void (*class_change) (struct block_list *bl,int class_,int type);
+ void (*class_change) (struct block_list *bl,int class_,int type, struct map_session_data *sd);
void (*skill_delunit) (struct skill_unit *su);
void (*skillunit_update) (struct block_list* bl);
int (*clearunit_delayed_sub) (int tid, int64 tick, int id, intptr_t data);
diff --git a/src/map/map.h b/src/map/map.h
index b76128762..8c5372093 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -47,6 +47,7 @@ enum E_MAPSERVER_ST {
#define MAX_NPC_PER_MAP 512
#define AREA_SIZE (battle->bc->area_size)
+#define CHAT_AREA_SIZE (battle->bc->chat_area_size)
#define DAMAGELOG_SIZE 30
#define LOOTITEM_SIZE 10
#define MAX_MOBSKILL 50
diff --git a/src/map/mob.c b/src/map/mob.c
index d5932f195..74d25b805 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2832,7 +2832,7 @@ int mob_class_change (struct mob_data *md, int class_) {
mob_stop_walking(md, STOPWALKING_FLAG_NONE);
unit->skillcastcancel(&md->bl, 0);
status->set_viewdata(&md->bl, class_);
- clif->class_change(&md->bl, md->vd->class, 1);
+ clif->class_change(&md->bl, md->vd->class, 1, NULL);
status_calc_mob(md, SCO_FIRST);
md->ud.state.speed_changed = 1; //Speed change update.
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index e461eebe9..4d474ac93 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -589,6 +589,9 @@ struct packet_spawn_unit {
#endif
#if PACKETVER >= 20150513
int16 body;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
char name[NAME_LENGTH];
#endif
} __attribute__((packed));
@@ -657,6 +660,9 @@ struct packet_unit_walking {
#endif
#if PACKETVER >= 20150513
int16 body;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
char name[NAME_LENGTH];
#endif
} __attribute__((packed));
@@ -723,6 +729,9 @@ struct packet_idle_unit {
#endif
#if PACKETVER >= 20150513
int16 body;
+#endif
+/* Might be earlier, this is when the named item bug began */
+#if PACKETVER >= 20131223
char name[NAME_LENGTH];
#endif
} __attribute__((packed));
diff --git a/src/map/script.c b/src/map/script.c
index 38931bd11..faaadb560 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -2825,7 +2825,7 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
char postfix;
struct map_session_data *sd = NULL;
- if( !data_isreference(data) )
+ if (!data_isreference(data))
return data;// not a variable/constant
name = reference_getname(data);
@@ -2840,10 +2840,10 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
}
//##TODO use reference_tovariable(data) when it's confirmed that it works [FlavioJS]
- if( !reference_toconstant(data) && not_server_variable(prefix) ) {
+ if (!reference_toconstant(data) && not_server_variable(prefix) && reference_getref(data) == NULL) {
sd = script->rid2sd(st);
- if( sd == NULL ) {// needs player attached
- if( postfix == '$' ) {// string variable
+ if (sd == NULL) {// needs player attached
+ if (postfix == '$') {// string variable
ShowWarning("script_get_val: cannot access player variable '%s', defaulting to \"\"\n", name);
data->type = C_CONSTSTR;
data->u.str = "";
@@ -2861,32 +2861,44 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
const char *str = NULL;
switch (prefix) {
- case '@':
+ case '@':
+ if (data->ref) {
+ str = script->get_val_ref_str(st, data->ref, data);
+ } else {
str = pc->readregstr(sd, data->u.num);
- break;
- case '$':
- str = mapreg->readregstr(data->u.num);
- break;
- case '#':
- if (name[1] == '#')
- str = pc_readaccountreg2str(sd, data->u.num);// global
- else
- str = pc_readaccountregstr(sd, data->u.num);// local
- break;
- case '.':
- if (data->ref)
- str = script->get_val_ref_str(st, data->ref, data);
- else if (name[1] == '@')
- str = script->get_val_scope_str(st, &st->stack->scope, data);
- else
- str = script->get_val_npc_str(st, &st->script->local, data);
- break;
- case '\'':
- str = script->get_val_instance_str(st, name, data);
- break;
- default:
+ }
+ break;
+ case '$':
+ str = mapreg->readregstr(data->u.num);
+ break;
+ case '#':
+ if (data->ref) {
+ str = script->get_val_ref_str(st, data->ref, data);
+ } else if (name[1] == '#') {
+ str = pc_readaccountreg2str(sd, data->u.num);// global
+ } else {
+ str = pc_readaccountregstr(sd, data->u.num);// local
+ }
+ break;
+ case '.':
+ if (data->ref) {
+ str = script->get_val_ref_str(st, data->ref, data);
+ } else if (name[1] == '@') {
+ str = script->get_val_scope_str(st, &st->stack->scope, data);
+ } else {
+ str = script->get_val_npc_str(st, &st->script->local, data);
+ }
+ break;
+ case '\'':
+ str = script->get_val_instance_str(st, name, data);
+ break;
+ default:
+ if (data->ref) {
+ str = script->get_val_ref_str(st, data->ref, data);
+ } else {
str = pc_readglobalreg_str(sd, data->u.num);
- break;
+ }
+ break;
}
if (str == NULL || str[0] == '\0') {
@@ -2906,36 +2918,48 @@ struct script_data *get_val(struct script_state* st, struct script_data* data) {
data->u.num = reference_getconstant(data);
} else if( reference_toparam(data) ) {
data->u.num = pc->readparam(sd, reference_getparamtype(data));
- } else
- switch( prefix ) {
- case '@':
+ } else {
+ switch (prefix) {
+ case '@':
+ if (data->ref) {
+ data->u.num = script->get_val_ref_num(st, data->ref, data);
+ } else {
data->u.num = pc->readreg(sd, data->u.num);
- break;
- case '$':
- data->u.num = mapreg->readreg(data->u.num);
- break;
- case '#':
- if( name[1] == '#' )
- data->u.num = pc_readaccountreg2(sd, data->u.num);// global
- else
- data->u.num = pc_readaccountreg(sd, data->u.num);// local
- break;
- case '.':
- if (data->ref)
- data->u.num = script->get_val_ref_num(st, data->ref, data);
- else if (name[1] == '@')
- data->u.num = script->get_val_scope_num(st, &st->stack->scope, data);
- else
- data->u.num = script->get_val_npc_num(st, &st->script->local, data);
- break;
- case '\'':
- data->u.num = script->get_val_instance_num(st, name, data);
- break;
- default:
+ }
+ break;
+ case '$':
+ data->u.num = mapreg->readreg(data->u.num);
+ break;
+ case '#':
+ if (data->ref) {
+ data->u.num = script->get_val_ref_num(st, data->ref, data);
+ } else if (name[1] == '#') {
+ data->u.num = pc_readaccountreg2(sd, data->u.num);// global
+ } else {
+ data->u.num = pc_readaccountreg(sd, data->u.num);// local
+ }
+ break;
+ case '.':
+ if (data->ref) {
+ data->u.num = script->get_val_ref_num(st, data->ref, data);
+ } else if (name[1] == '@') {
+ data->u.num = script->get_val_scope_num(st, &st->stack->scope, data);
+ } else {
+ data->u.num = script->get_val_npc_num(st, &st->script->local, data);
+ }
+ break;
+ case '\'':
+ data->u.num = script->get_val_instance_num(st, name, data);
+ break;
+ default:
+ if (data->ref) {
+ data->u.num = script->get_val_ref_num(st, data->ref, data);
+ } else {
data->u.num = pc_readglobalreg(sd, data->u.num);
- break;
+ }
+ break;
}
-
+ }
}
data->ref = NULL;
@@ -3108,38 +3132,43 @@ void script_array_add_member(struct script_array *sa, unsigned int idx) {
**/
struct reg_db *script_array_src(struct script_state *st, struct map_session_data *sd, const char *name, struct reg_db *ref) {
struct reg_db *src = NULL;
-
nullpo_retr(NULL, name);
- switch( name[0] ) {
+
+ switch (name[0]) {
/* from player */
- default: /* char reg */
- case '@':/* temp char reg */
- case '#':/* account reg */
+ default: /* char reg */
+ case '@':/* temp char reg */
+ case '#':/* account reg */
+ if (ref != NULL) {
+ src = ref;
+ } else {
nullpo_retr(NULL, sd);
src = &sd->regs;
- break;
- case '$':/* map reg */
- src = &mapreg->regs;
- break;
- case '.':/* npc/script */
- if (ref != NULL) {
- src = ref;
- } else {
- nullpo_retr(NULL, st);
- src = (name[1] == '@') ? &st->stack->scope : &st->script->local;
- }
- break;
- case '\'':/* instance */
+ }
+ break;
+ case '$':/* map reg */
+ src = &mapreg->regs;
+ break;
+ case '.':/* npc/script */
+ if (ref != NULL) {
+ src = ref;
+ } else {
nullpo_retr(NULL, st);
- if( st->instance_id >= 0 ) {
- src = &instance->list[st->instance_id].regs;
- }
- break;
+ src = (name[1] == '@') ? &st->stack->scope : &st->script->local;
+ }
+ break;
+ case '\'':/* instance */
+ nullpo_retr(NULL, st);
+ if (st->instance_id >= 0) {
+ src = &instance->list[st->instance_id].regs;
+ }
+ break;
}
- if( src ) {
- if( !src->arrays )
+ if (src) {
+ if (!src->arrays) {
src->arrays = idb_alloc(DB_OPT_BASE);
+ }
return src;
}
return NULL;
@@ -3292,48 +3321,65 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
return 0;
}
- if( is_string_variable(name) ) {// string variable
+ if (is_string_variable(name)) {// string variable
const char *str = (const char*)value;
switch (prefix) {
- case '@':
+ case '@':
+ if (ref) {
+ script->set_reg_ref_str(st, ref, num, name, str);
+ } else {
pc->setregstr(sd, num, str);
- return 1;
- case '$':
- return mapreg->setregstr(num, str);
- case '#':
- return (name[1] == '#') ?
- pc_setaccountreg2str(sd, num, str) :
- pc_setaccountregstr(sd, num, str);
- case '.':
- if (ref)
- script->set_reg_ref_str(st, ref, num, name, str);
- else if (name[1] == '@')
- script->set_reg_scope_str(st, &st->stack->scope, num, name, str);
- else
- script->set_reg_npc_str(st, &st->script->local, num, name, str);
- return 1;
- case '\'':
- set_reg_instance_str(st, num, name, str);
- return 1;
- default:
- return pc_setglobalreg_str(sd, num, str);
+ }
+ return 1;
+ case '$':
+ mapreg->setregstr(num, str);
+ return 1;
+ case '#':
+ if (ref) {
+ script->set_reg_ref_str(st, ref, num, name, str);
+ } else if (name[1] == '#') {
+ pc_setaccountreg2str(sd, num, str);
+ } else {
+ pc_setaccountregstr(sd, num, str);
+ }
+ return 1;
+ case '.':
+ if (ref) {
+ script->set_reg_ref_str(st, ref, num, name, str);
+ } else if (name[1] == '@') {
+ script->set_reg_scope_str(st, &st->stack->scope, num, name, str);
+ } else {
+ script->set_reg_npc_str(st, &st->script->local, num, name, str);
+ }
+ return 1;
+ case '\'':
+ set_reg_instance_str(st, num, name, str);
+ return 1;
+ default:
+ if (ref) {
+ script->set_reg_ref_str(st, ref, num, name, str);
+ } else {
+ pc_setglobalreg_str(sd, num, str);
+ }
+ return 1;
}
} else {// integer variable
// FIXME: This isn't safe, in 32bits systems we're converting a 64bit pointer
// to a 32bit int, this will lead to overflows! [Panikon]
int val = (int)h64BPTRSIZE(value);
- if(script->str_data[script_getvarid(num)].type == C_PARAM) {
- if( pc->setparam(sd, script->str_data[script_getvarid(num)].val, val) == 0 ) {
- if( st != NULL ) {
+ if (script->str_data[script_getvarid(num)].type == C_PARAM) {
+ if (pc->setparam(sd, script->str_data[script_getvarid(num)].val, val) == 0) {
+ if (st != NULL) {
ShowError("script:set_reg: failed to set param '%s' to %d.\n", name, val);
script->reportsrc(st);
// Instead of just stop the script execution we let the character close
// the window if it was open.
st->state = (sd->state.dialog) ? CLOSE : END;
- if( st->state == CLOSE )
+ if(st->state == CLOSE) {
clif->scriptclose(sd, st->oid);
+ }
}
return 0;
}
@@ -3341,28 +3387,44 @@ int set_reg(struct script_state *st, struct map_session_data *sd, int64 num, con
}
switch (prefix) {
- case '@':
+ case '@':
+ if (ref) {
+ script->set_reg_ref_num(st, ref, num, name, val);
+ } else {
pc->setreg(sd, num, val);
- return 1;
- case '$':
- return mapreg->setreg(num, val);
- case '#':
- return (name[1] == '#') ?
- pc_setaccountreg2(sd, num, val) :
- pc_setaccountreg(sd, num, val);
- case '.':
- if (ref)
- script->set_reg_ref_num(st, ref, num, name, val);
- else if (name[1] == '@')
- script->set_reg_scope_num(st, &st->stack->scope, num, name, val);
- else
- script->set_reg_npc_num(st, &st->script->local, num, name, val);
- return 1;
- case '\'':
- set_reg_instance_num(st, num, name, val);
- return 1;
- default:
- return pc_setglobalreg(sd, num, val);
+ }
+ return 1;
+ case '$':
+ mapreg->setreg(num, val);
+ return 1;
+ case '#':
+ if (ref) {
+ script->set_reg_ref_num(st, ref, num, name, val);
+ } else if (name[1] == '#') {
+ pc_setaccountreg2(sd, num, val);
+ } else {
+ pc_setaccountreg(sd, num, val);
+ }
+ return 1;
+ case '.':
+ if (ref) {
+ script->set_reg_ref_num(st, ref, num, name, val);
+ } else if (name[1] == '@') {
+ script->set_reg_scope_num(st, &st->stack->scope, num, name, val);
+ } else {
+ script->set_reg_npc_num(st, &st->script->local, num, name, val);
+ }
+ return 1;
+ case '\'':
+ set_reg_instance_num(st, num, name, val);
+ return 1;
+ default:
+ if (ref) {
+ script->set_reg_ref_num(st, ref, num, name, val);
+ } else {
+ pc_setglobalreg(sd, num, val);
+ }
+ return 1;
}
}
}
@@ -5197,7 +5259,7 @@ int script_load_translation(const char *file, uint8 lang_id)
VECTOR_TRUNCATE(msgstr);
continue;
}
-
+
if (strncasecmp(line, "msgid \"", 7) == 0) {
VECTOR_TRUNCATE(msgid);
for (i = 7; i < len - 2; i++) {
@@ -13840,15 +13902,26 @@ BUILDIN(undisguise)
* Transform a bl to another class,
* @type unused
*------------------------------------------*/
-BUILDIN(classchange) {
- int class, type;
- struct block_list *bl=map->id2bl(st->oid);
+BUILDIN(classchange)
+{
+ int class, type, target;
+ struct block_list *bl = map->id2bl(st->oid);
- if(bl==NULL) return true;
+ if (bl == NULL)
+ return true;
- class = script_getnum(st,2);
- type=script_getnum(st,3);
- clif->class_change(bl, class, type);
+ class = script_getnum(st, 2);
+ type = script_getnum(st, 3);
+ target = script_hasdata(st, 4) ? script_getnum(st, 4) : 0;
+
+ if (target > 0) {
+ struct map_session_data *sd = script->charid2sd(st, target);
+ if (sd != NULL) {
+ clif->class_change(bl, class, type, sd);
+ }
+ } else {
+ clif->class_change(bl, class, type, NULL);
+ }
return true;
}
@@ -15455,6 +15528,29 @@ BUILDIN(charat) {
}
//=======================================================
+// chr <int>
+//-------------------------------------------------------
+BUILDIN(chr)
+{
+ char output[2];
+ output[0] = script_getnum(st, 2);
+ output[1] = '\0';
+
+ script_pushstrcopy(st, output);
+ return true;
+}
+
+//=======================================================
+// ord <chr>
+//-------------------------------------------------------
+BUILDIN(ord)
+{
+ const char *chr = script_getstr(st, 2);
+ script_pushint(st, *chr);
+ return true;
+}
+
+//=======================================================
// setchar <string>, <char>, <index>
//-------------------------------------------------------
BUILDIN(setchar)
@@ -17498,6 +17594,55 @@ BUILDIN(getvariableofnpc)
return true;
}
+BUILDIN(getvariableofpc)
+{
+ const char* name;
+ struct script_data* data = script_getdata(st, 2);
+ struct map_session_data *sd = map->id2sd(script_getnum(st, 3));
+
+ if (!data_isreference(data)) {
+ ShowError("script:getvariableofpc: not a variable\n");
+ script->reportdata(data);
+ script_pushnil(st);
+ st->state = END;
+ return false;
+ }
+
+ name = reference_getname(data);
+
+ switch (*name)
+ {
+ case '#':
+ case '$':
+ case '.':
+ case '\'':
+ ShowError("script:getvariableofpc: illegal scope (not pc variable)\n");
+ script->reportdata(data);
+ script_pushnil(st);
+ st->state = END;
+ return false;
+ }
+
+ if (sd == NULL)
+ {
+ // player not found, return default value
+ if (script_hasdata(st, 4)) {
+ script_pushcopy(st, 4);
+ } else if (is_string_variable(name)) {
+ script_pushconststr(st, "");
+ } else {
+ script_pushint(st, 0);
+ }
+ return true;
+ }
+
+ if (!sd->regs.vars)
+ sd->regs.vars = i64db_alloc(DB_OPT_RELEASE_DATA);
+
+ script->push_val(st->stack, C_NAME, reference_getuid(data), &sd->regs);
+ return true;
+}
+
/// Opens a warp portal.
/// Has no "portal opening" effect/sound, it opens the portal immediately.
///
@@ -21009,7 +21154,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getcartinventorylist,""),
BUILDIN_DEF(getskilllist,""),
BUILDIN_DEF(clearitem,""),
- BUILDIN_DEF(classchange,"ii"),
+ BUILDIN_DEF(classchange,"ii?"),
BUILDIN_DEF(misceffect,"i"),
BUILDIN_DEF(playbgm,"s"),
BUILDIN_DEF(playbgmall,"s?????"),
@@ -21075,6 +21220,8 @@ void script_parse_builtin(void) {
BUILDIN_DEF(getstrlen,"s"), //strlen [Valaris]
BUILDIN_DEF(charisalpha,"si"), //isalpha [Valaris]
BUILDIN_DEF(charat,"si"),
+ BUILDIN_DEF(chr,"i"),
+ BUILDIN_DEF(ord,"s"),
BUILDIN_DEF(setchar,"ssi"),
BUILDIN_DEF(insertchar,"ssi"),
BUILDIN_DEF(delchar,"si"),
@@ -21155,6 +21302,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(sleep2,"i"),
BUILDIN_DEF(awake,"s"),
BUILDIN_DEF(getvariableofnpc,"rs"),
+ BUILDIN_DEF(getvariableofpc,"ri?"),
BUILDIN_DEF(warpportal,"iisii"),
BUILDIN_DEF2(homunculus_evolution,"homevolution",""), //[orn]
BUILDIN_DEF2(homunculus_mutate,"hommutate","?"),
diff --git a/src/map/unit.c b/src/map/unit.c
index 739a369a6..feb11f89e 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1461,7 +1461,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
} else if( src->type == BL_MER && skill_id == MA_REMOVETRAP ) {
if( !battle->check_range(battle->get_master(src), target, range + 1) )
return 0; // Aegis calc remove trap based on Master position, ignoring mercenary O.O
- } else if( !battle->check_range(src, target, range + (skill_id == RG_CLOSECONFINE?0:2)) ) {
+ } else if (!battle->check_range(src, target, range)) {
return 0; // Arrow-path check failed.
}
}
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index f721f5a37..82d310832 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -974,8 +974,8 @@ typedef void (*HPMHOOK_pre_clif_refreshlook) (struct block_list **bl, int *id, i
typedef void (*HPMHOOK_post_clif_refreshlook) (struct block_list *bl, int id, int type, int val, enum send_target target);
typedef void (*HPMHOOK_pre_clif_sendlook) (struct block_list **bl, int *id, int *type, int *val, int *val2, enum send_target *target);
typedef void (*HPMHOOK_post_clif_sendlook) (struct block_list *bl, int id, int type, int val, int val2, enum send_target target);
-typedef void (*HPMHOOK_pre_clif_class_change) (struct block_list **bl, int *class_, int *type);
-typedef void (*HPMHOOK_post_clif_class_change) (struct block_list *bl, int class_, int type);
+typedef void (*HPMHOOK_pre_clif_class_change) (struct block_list **bl, int *class_, int *type, struct map_session_data **sd);
+typedef void (*HPMHOOK_post_clif_class_change) (struct block_list *bl, int class_, int type, struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_skill_delunit) (struct skill_unit **su);
typedef void (*HPMHOOK_post_clif_skill_delunit) (struct skill_unit *su);
typedef void (*HPMHOOK_pre_clif_skillunit_update) (struct block_list **bl);
@@ -4462,8 +4462,8 @@ typedef bool (*HPMHOOK_post_mapreg_config_read) (bool retVal___, const char *fil
#ifdef COMMON_MD5CALC_H /* md5 */
typedef void (*HPMHOOK_pre_md5_string) (const char **string, char **output);
typedef void (*HPMHOOK_post_md5_string) (const char *string, char *output);
-typedef void (*HPMHOOK_pre_md5_binary) (const char **string, unsigned char **output);
-typedef void (*HPMHOOK_post_md5_binary) (const char *string, unsigned char *output);
+typedef void (*HPMHOOK_pre_md5_binary) (const uint8 **buf, const int *buf_size, uint8 **output);
+typedef void (*HPMHOOK_post_md5_binary) (const uint8 *buf, const int buf_size, uint8 *output);
typedef void (*HPMHOOK_pre_md5_salt) (int *len, char **output);
typedef void (*HPMHOOK_post_md5_salt) (int len, char *output);
#endif // COMMON_MD5CALC_H
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index 3af236f48..eb5583035 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index 55fc347e5..29720bf40 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index 222f013ee..e2108c8f8 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -15207,14 +15207,14 @@ void HP_md5_string(const char *string, char *output) {
}
return;
}
-void HP_md5_binary(const char *string, unsigned char *output) {
+void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
if( HPMHooks.count.HP_md5_binary_pre ) {
- void (*preHookFunc) (const char **string, unsigned char **output);
+ void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
- preHookFunc(&string, &output);
+ preHookFunc(&buf, &buf_size, &output);
}
if( *HPMforce_return ) {
*HPMforce_return = false;
@@ -15222,13 +15222,13 @@ void HP_md5_binary(const char *string, unsigned char *output) {
}
}
{
- HPMHooks.source.md5.binary(string, output);
+ HPMHooks.source.md5.binary(buf, buf_size, output);
}
if( HPMHooks.count.HP_md5_binary_post ) {
- void (*postHookFunc) (const char *string, unsigned char *output);
+ void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
- postHookFunc(string, output);
+ postHookFunc(buf, buf_size, output);
}
}
return;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.sources.inc b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
index d940e379a..07cd94cb2 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index 1d7ac8267..57c1e0233 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index 96a711af6..125c54a12 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index b5fc0e70b..a7e7afa4e 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -4743,14 +4743,14 @@ void HP_md5_string(const char *string, char *output) {
}
return;
}
-void HP_md5_binary(const char *string, unsigned char *output) {
+void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
if( HPMHooks.count.HP_md5_binary_pre ) {
- void (*preHookFunc) (const char **string, unsigned char **output);
+ void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
- preHookFunc(&string, &output);
+ preHookFunc(&buf, &buf_size, &output);
}
if( *HPMforce_return ) {
*HPMforce_return = false;
@@ -4758,13 +4758,13 @@ void HP_md5_binary(const char *string, unsigned char *output) {
}
}
{
- HPMHooks.source.md5.binary(string, output);
+ HPMHooks.source.md5.binary(buf, buf_size, output);
}
if( HPMHooks.count.HP_md5_binary_post ) {
- void (*postHookFunc) (const char *string, unsigned char *output);
+ void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
- postHookFunc(string, output);
+ postHookFunc(buf, buf_size, output);
}
}
return;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.sources.inc b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
index 4bb7f5396..8239d64ce 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 03ad41edc..bd055cac2 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index c199aa403..53f65bcd3 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 240ef8346..800fb8c76 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -7917,14 +7917,14 @@ void HP_clif_sendlook(struct block_list *bl, int id, int type, int val, int val2
}
return;
}
-void HP_clif_class_change(struct block_list *bl, int class_, int type) {
+void HP_clif_class_change(struct block_list *bl, int class_, int type, struct map_session_data *sd) {
int hIndex = 0;
if( HPMHooks.count.HP_clif_class_change_pre ) {
- void (*preHookFunc) (struct block_list **bl, int *class_, int *type);
+ void (*preHookFunc) (struct block_list **bl, int *class_, int *type, struct map_session_data **sd);
*HPMforce_return = false;
for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_pre; hIndex++ ) {
preHookFunc = HPMHooks.list.HP_clif_class_change_pre[hIndex].func;
- preHookFunc(&bl, &class_, &type);
+ preHookFunc(&bl, &class_, &type, &sd);
}
if( *HPMforce_return ) {
*HPMforce_return = false;
@@ -7932,13 +7932,13 @@ void HP_clif_class_change(struct block_list *bl, int class_, int type) {
}
}
{
- HPMHooks.source.clif.class_change(bl, class_, type);
+ HPMHooks.source.clif.class_change(bl, class_, type, sd);
}
if( HPMHooks.count.HP_clif_class_change_post ) {
- void (*postHookFunc) (struct block_list *bl, int class_, int type);
+ void (*postHookFunc) (struct block_list *bl, int class_, int type, struct map_session_data *sd);
for(hIndex = 0; hIndex < HPMHooks.count.HP_clif_class_change_post; hIndex++ ) {
postHookFunc = HPMHooks.list.HP_clif_class_change_post[hIndex].func;
- postHookFunc(bl, class_, type);
+ postHookFunc(bl, class_, type, sd);
}
}
return;
@@ -43812,14 +43812,14 @@ void HP_md5_string(const char *string, char *output) {
}
return;
}
-void HP_md5_binary(const char *string, unsigned char *output) {
+void HP_md5_binary(const uint8 *buf, const int buf_size, uint8 *output) {
int hIndex = 0;
if( HPMHooks.count.HP_md5_binary_pre ) {
- void (*preHookFunc) (const char **string, unsigned char **output);
+ void (*preHookFunc) (const uint8 **buf, const int *buf_size, uint8 **output);
*HPMforce_return = false;
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_pre; hIndex++ ) {
preHookFunc = HPMHooks.list.HP_md5_binary_pre[hIndex].func;
- preHookFunc(&string, &output);
+ preHookFunc(&buf, &buf_size, &output);
}
if( *HPMforce_return ) {
*HPMforce_return = false;
@@ -43827,13 +43827,13 @@ void HP_md5_binary(const char *string, unsigned char *output) {
}
}
{
- HPMHooks.source.md5.binary(string, output);
+ HPMHooks.source.md5.binary(buf, buf_size, output);
}
if( HPMHooks.count.HP_md5_binary_post ) {
- void (*postHookFunc) (const char *string, unsigned char *output);
+ void (*postHookFunc) (const uint8 *buf, const int buf_size, uint8 *output);
for(hIndex = 0; hIndex < HPMHooks.count.HP_md5_binary_post; hIndex++ ) {
postHookFunc = HPMHooks.list.HP_md5_binary_post[hIndex].func;
- postHookFunc(string, output);
+ postHookFunc(buf, buf_size, output);
}
}
return;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.sources.inc b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
index 0cc52b595..4cd69d005 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.sources.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.sources.inc
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2016 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by