summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml3
-rw-r--r--.travis.yml16
-rw-r--r--CHANGELOG.md28
-rw-r--r--Hercules-16.sln (renamed from Hercules-12.sln)21
-rw-r--r--conf/messages.conf3
-rwxr-xr-xconfigure2
-rw-r--r--db/constants.conf60
-rw-r--r--db/pre-re/item_chain.conf6
-rw-r--r--db/re/item_chain.conf6
-rw-r--r--db/sc_config.conf2811
-rw-r--r--db/sc_config.txt505
-rw-r--r--doc/atcommands.txt6
-rw-r--r--doc/constants.md83
-rw-r--r--doc/sample/getiteminfo.txt23
-rw-r--r--doc/script_commands.txt63
-rw-r--r--src/char/int_guild.c1
-rw-r--r--src/char/int_party.c1
-rw-r--r--src/char/inter.c95
-rw-r--r--src/char/inter.h11
-rw-r--r--src/char/mapif.c198
-rw-r--r--src/char/mapif.h13
-rw-r--r--src/common/HPMDataCheck.h4
-rw-r--r--src/common/packets/packets2019_len_main.h52
-rw-r--r--src/common/packets/packets2019_len_re.h52
-rw-r--r--src/common/packets/packets2019_len_zero.h57
-rw-r--r--src/map/atcommand.c23
-rw-r--r--src/map/battle.h4
-rw-r--r--src/map/clif.c79
-rw-r--r--src/map/clif.h7
-rw-r--r--src/map/guild.c22
-rw-r--r--src/map/guild.h1
-rw-r--r--src/map/homunculus.c28
-rw-r--r--src/map/homunculus.h1
-rw-r--r--src/map/intif.c329
-rw-r--r--src/map/intif.h13
-rw-r--r--src/map/itemdb.c5
-rw-r--r--src/map/itemdb.h2
-rw-r--r--src/map/mapdefines.h10
-rw-r--r--src/map/messages_main.h88
-rw-r--r--src/map/messages_re.h88
-rw-r--r--src/map/messages_zero.h102
-rw-r--r--src/map/npc.h2
-rw-r--r--src/map/packets_keys_main.h7
-rw-r--r--src/map/packets_keys_zero.h7
-rw-r--r--src/map/packets_shuffle_main.h39
-rw-r--r--src/map/packets_shuffle_re.h39
-rw-r--r--src/map/packets_shuffle_zero.h35
-rw-r--r--src/map/packets_struct.h34
-rw-r--r--src/map/party.c25
-rw-r--r--src/map/party.h1
-rw-r--r--src/map/pc.c78
-rw-r--r--src/map/pc.h3
-rw-r--r--src/map/script.c191
-rw-r--r--src/map/script.h25
-rw-r--r--src/map/status.c110
-rw-r--r--src/map/status.h15
-rw-r--r--src/map/trade.c6
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc98
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc68
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc17
-rw-r--r--src/plugins/HPMHooking/HPMHooking_char.Hooks.inc463
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc96
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc24
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc649
-rw-r--r--tools/scconfigconverter.py105
-rw-r--r--vcproj-16/char-server.vcxproj (renamed from vcproj-12/char-server.vcxproj)9
-rw-r--r--vcproj-16/char-server.vcxproj.filters (renamed from vcproj-12/char-server.vcxproj.filters)0
-rw-r--r--vcproj-16/login-server.vcxproj (renamed from vcproj-12/login-server.vcxproj)9
-rw-r--r--vcproj-16/login-server.vcxproj.filters (renamed from vcproj-12/login-server.vcxproj.filters)0
-rw-r--r--vcproj-16/map-server.vcxproj (renamed from vcproj-12/map-server.vcxproj)9
-rw-r--r--vcproj-16/map-server.vcxproj.filters (renamed from vcproj-12/map-server.vcxproj.filters)0
-rw-r--r--vcproj-16/plugin-HPMHooking_char.vcxproj (renamed from vcproj-12/plugin-HPMHooking_char.vcxproj)7
-rw-r--r--vcproj-16/plugin-HPMHooking_login.vcxproj (renamed from vcproj-12/plugin-HPMHooking_login.vcxproj)7
-rw-r--r--vcproj-16/plugin-HPMHooking_map.vcxproj (renamed from vcproj-12/plugin-HPMHooking_map.vcxproj)7
-rw-r--r--vcproj-16/plugin-sample.vcxproj (renamed from vcproj-12/plugin-sample.vcxproj)7
75 files changed, 4602 insertions, 2512 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index dd63715c8..4b3b03e6a 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -11,10 +11,11 @@ image: Visual Studio 2015
clone_depth: 5
environment:
matrix:
- - HerculesProject: Hercules-12.sln
- HerculesProject: Hercules-14.sln
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
HerculesProject: Hercules-15.sln
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+ HerculesProject: Hercules-16.sln
services: mysql56
build_script:
- cmd: MSBuild %HerculesProject% /t:map-server,char-server,login-server
diff --git a/.travis.yml b/.travis.yml
index a02f65eeb..43c8e4997 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -39,7 +39,7 @@ matrix:
- compiler: false
include:
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot" HPM="1"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot" HPM="1"
addons:
apt:
sources:
@@ -52,7 +52,7 @@ matrix:
- libxml-sax-perl
- libxml-parser-perl
- compiler: clang
- env: CONFIGURE_FLAGS="--enable-debug CC=clang-5.0 --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug CC=clang-5.0 --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
@@ -72,7 +72,7 @@ matrix:
- gdb
- clang-5.0
- compiler: clang
- env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug CC=clang-4.0 --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
@@ -106,11 +106,11 @@ matrix:
- compiler: clang
env: CONFIGURE_FLAGS="--enable-debug --disable-renewal --enable-Werror --enable-buildbot"
- compiler: gcc
- env: CONFIGURE_FLAGS="--enable-debug --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: CONFIGURE_FLAGS="--enable-debug --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
- compiler: gcc
env: CONFIGURE_FLAGS="--enable-debug --disable-renewal --enable-Werror --enable-buildbot"
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-5 --disable-manager --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-5 --disable-manager --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
@@ -128,7 +128,7 @@ matrix:
- gdb
- gcc-5
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-6 --disable-manager --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
@@ -146,7 +146,7 @@ matrix:
- gdb
- gcc-6
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-7 --disable-manager --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug CC=gcc-7 --disable-manager --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
@@ -164,7 +164,7 @@ matrix:
- gdb
- gcc-7
- compiler: gcc
- env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-8 --disable-manager --enable-Werror --enable-packetver=20190821 --enable-packetver-re --enable-buildbot"
+ env: LDFLAGS="-fuse-ld=gold" CONFIGURE_FLAGS="--enable-debug --enable-sanitize=full CC=gcc-8 --disable-manager --enable-Werror --enable-packetver=20190918 --enable-packetver-re --enable-buildbot"
addons:
apt:
sources:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3221c8ece..2b52d8dd6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,33 @@ and this project does not adhere to [Semantic Versioning](http://semver.org/spec
If you are reading this in a text editor, simply ignore this section
-->
+### [v2019.08.25] `August 25 2019`
+
+### Added
+
+- Added/updated packets, encryption keys and message tables for clients up to 2019-08-21. (#2517)
+- Added icons for the elemental resistance status changes (`SC_ARMORPROPERTY`). (#2516)
+- Added Visual Studio 2019 solution. (#2520)
+- Added new NPC ID constants. (#2521)
+
+### Changed
+
+- Converted various packets (`ZC_ADD_SKILL`, `ZC_SKILLINFO_LIST`, `ZC_SKILLINFO_UPDATE2`) into structs and added a new version for `ZC_NPC_MARKET_PURCHASE_RESULT`. (part of #2517)
+- Added missing sanity checks into many clif functions. (#2501)
+- Extended the `getequiprefinerycnt()` command to accept multiple equipment slots at the same time, returning the total refine of them. (#2512)
+- Added the path (relative to the Hercules root) to various database reading status messages. (#2513)
+- Extended `setiteminfo()` and `getiteminfo()` with additional options: `ITEMINFO_ELV_MAX`, `ITEMINFO_DELAY`, `ITEMINFO_DROPEFFECT_MODE`, `ITEMINFO_CLASS_*`, `ITEMINFO_FLAG_*`, `ITEMINFO_STACK_*`, `ITEMINFO_ITEM_USAGE_*`, `ITEMINFO_GM_LV_TRADE_OVERRIDE`. (#2518)
+
+### Fixed
+
+- Fixed packets `ZC_BROADCASTING_SPECIAL_ITEM_OBTAIN` and `ZC_MAKINGITEM_LIST`. (part of #2517)
+- Fixed an overflow in the auto bonus processing function, that made it unable to handle costume/shadow gears. (#2514, issues #1355, #1190, #2451)
+
+### Removed
+
+- Removed Visual Studio 2013 solution. (part of #2520)
+- Removed round-trips to the inter-server for packets related to whisper messages, reports to GMs, GM broadcasts, party, guild and main chat, previously needed for, now unsupported, multi-zone setups. (#2522)
+
### [v2019.07.28] `July 28 2019`
### Added
@@ -860,6 +887,7 @@ If you are reading this in a text editor, simply ignore this section
- New versioning scheme and project changelogs/release notes (#1853)
[Unreleased]: https://github.com/HerculesWS/Hercules/compare/stable...master
+[v2019.08.25]: https://github.com/HerculesWS/Hercules/compare/v2019.07.28...v2019.08.25
[v2019.07.28]: https://github.com/HerculesWS/Hercules/compare/v2019.06.30...v2019.07.28
[v2019.06.30]: https://github.com/HerculesWS/Hercules/compare/v2019.06.02...v2019.06.30
[v2019.06.02]: https://github.com/HerculesWS/Hercules/compare/v2019.05.05+4...v2019.06.02
diff --git a/Hercules-12.sln b/Hercules-16.sln
index c1a78b5ef..b4bece6d9 100644
--- a/Hercules-12.sln
+++ b/Hercules-16.sln
@@ -1,21 +1,21 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29123.88
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server", "vcproj-12\char-server.vcxproj", "{D356871D-58E1-450B-967A-E4E9646175AF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "char-server", "vcproj-16\char-server.vcxproj", "{D356871D-58E1-450B-967A-E4E9646175AF}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server", "vcproj-12\login-server.vcxproj", "{D356871D-58E1-450B-967A-E5E9646175AF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "login-server", "vcproj-16\login-server.vcxproj", "{D356871D-58E1-450B-967A-E5E9646175AF}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server", "vcproj-12\map-server.vcxproj", "{D356871D-58E1-450B-967A-E6E9646175AF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map-server", "vcproj-16\map-server.vcxproj", "{D356871D-58E1-450B-967A-E6E9646175AF}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-sample", "vcproj-12\plugin-sample.vcxproj", "{E64C56D3-CDFB-483B-900B-A62D216B6D2F}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-sample", "vcproj-16\plugin-sample.vcxproj", "{E64C56D3-CDFB-483B-900B-A62D216B6D2F}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_map", "vcproj-12\plugin-HPMHooking_map.vcxproj", "{745D4A8C-6A68-4721-A43A-D81BF59860A1}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_map", "vcproj-16\plugin-HPMHooking_map.vcxproj", "{745D4A8C-6A68-4721-A43A-D81BF59860A1}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_char", "vcproj-12\plugin-HPMHooking_char.vcxproj", "{D495824D-24D3-4623-A28C-4CA506084A09}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_char", "vcproj-16\plugin-HPMHooking_char.vcxproj", "{D495824D-24D3-4623-A28C-4CA506084A09}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_login", "vcproj-12\plugin-HPMHooking_login.vcxproj", "{544AD8E8-0309-49DE-9F8D-F9FEA24D92F1}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "plugin-HPMHooking_login", "vcproj-16\plugin-HPMHooking_login.vcxproj", "{544AD8E8-0309-49DE-9F8D-F9FEA24D92F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -55,4 +55,7 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {5DB2664E-B4D7-4FC3-B0E2-F5E7608B9393}
+ EndGlobalSection
EndGlobal
diff --git a/conf/messages.conf b/conf/messages.conf
index bff4829c8..f616335fa 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -442,8 +442,9 @@
432: change the sex of
433: This character has been banned until
434: Char-server has been asked to %s the character '%.*s'.
-//435-449 FREE
+//435-448 FREE
// Homunculus messages
+449: Homunculus Experience Gained Base:%u (%.2f%%)
450: You already have a homunculus
// Return pet to egg message
diff --git a/configure b/configure
index 8ac5f1d4f..65e716b09 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac cdc66ce0e.
+# From configure.ac 20c3ecff9.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
#
diff --git a/db/constants.conf b/db/constants.conf
index 1d6d295c0..3d1f9202d 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -3577,11 +3577,38 @@ constants_db: {
4_M_POPFESTA: 10251
4_BONFIRE: 10252
4_PCCOUNT: 10253
+ 4_LAVAGOLEM: 10254
+ 4_F_IA: 10255
+ 4_LOCKE: 10256
+ 4_LIL_LIF: 10257
+ 4_LIL_LIF2: 10258
+ 4_F_DRAGONHAT: 10259
+ 4_M_DRAGONHAT: 10260
+ JP_NPC02: 10261
+ JP_NPC03: 10262
+ JP_NPC04: 10263
+ JP_NPC05: 10264
+ JP_NPC06: 10265
+ JP_NPC07: 10266
+ JP_NPC08: 10267
+ JP_NPC09: 10268
+ JP_NPC10: 10269
+ 4_FIRERING: 10270
4_SCATLETON: 10271
+ 4_JP_AB_NPC_001: 10272
+ 4_JP_AB_NPC_002: 10273
+ 4_JP_AB_NPC_003: 10274
+ 4_JP_AB_NPC_004: 10275
+ 4_JP_AB_NPC_005: 10276
+ 4_JP_AB_NPC_006: 10277
+ 4_JP_AB_NPC_007: 10278
+ 4_JP_AB_NPC_008: 10279
4_JJAK: 10280
4_M_SNOWMAN_B: 10281
4_M_SNOWMAN_R: 10282
4_M_SNOWMAN_G: 10283
+ WARPEFFECTNPC: 10284
+ 4_HEN: 10285
4_F_DANGDANG: 10286
4_M_DANGDANG: 10287
4_F_DANGDANG1: 10288
@@ -3606,6 +3633,39 @@ constants_db: {
4_ED_OSCAR: 10307
4_ED_ORB: 10308
4_ED_FENCE: 10309
+ 4_M_ANDREA: 10310
+ 4_M_ANDREA_D: 10311
+ 4_F_ANES: 10312
+ 4_F_ANES_D: 10313
+ 4_M_SILVANO: 10314
+ 4_M_SILVANO_D: 10315
+ 4_F_CECILIA: 10316
+ 4_F_CECILIA_D: 10317
+ 4_M_MD_SEYREN: 10318
+ 4_M_MD_EREMES: 10319
+ 4_M_MD_HARWORD: 10320
+ 4_F_MD_MAGALETA: 10321
+ 4_F_MD_SHECIL: 10322
+ 4_F_MD_KATRINN: 10323
+ 4_M_MD_SEYREN_H: 10324
+ 4_M_MD_EREMES_H: 10325
+ 4_M_MD_HARWORD_H: 10326
+ 4_F_MD_MAGALETA_H: 10327
+ 4_F_MD_SHECIL_H: 10328
+ 4_F_MD_KATRINN_H: 10329
+ 4_M_MD_SEYREN_D: 10330
+ 4_M_MD_EREMES_D: 10331
+ 4_M_MD_HARWORD_D: 10332
+ 4_F_MD_MAGALETA_D: 10333
+ 4_F_MD_SHECIL_D: 10334
+ 4_F_MD_KATRINN_D: 10335
+ 4_F_MD_YGNIZEM: 10336
+ 4_F_ERENE: 10337
+ 4_M_EINCPTMINER: 10338
+ 4_F_EINRESERCHER: 10339
+ 4_F_REINDEER: 10340
+ 4_PIGOCTO: 10341
+ 4_JP_16TH: 10343
comment__: "Mercenary IDs"
MER_LIF: 6001
diff --git a/db/pre-re/item_chain.conf b/db/pre-re/item_chain.conf
index a2e4efff4..cdc92d92c 100644
--- a/db/pre-re/item_chain.conf
+++ b/db/pre-re/item_chain.conf
@@ -59,6 +59,12 @@ ITMCHAIN_ORE: {
Emperium: 5
}
+ITMCHAIN_SIEGFRIED: {
+ Token_Of_Siegfried: 1
+ F_Token_Of_Siegfried: 1
+ E_Token_Of_Siegfried: 1
+}
+
ITMCHAIN_GEM: {
Dark_Red_Jewel: 80
Violet_Jewel: 30
diff --git a/db/re/item_chain.conf b/db/re/item_chain.conf
index a2e4efff4..cdc92d92c 100644
--- a/db/re/item_chain.conf
+++ b/db/re/item_chain.conf
@@ -59,6 +59,12 @@ ITMCHAIN_ORE: {
Emperium: 5
}
+ITMCHAIN_SIEGFRIED: {
+ Token_Of_Siegfried: 1
+ F_Token_Of_Siegfried: 1
+ E_Token_Of_Siegfried: 1
+}
+
ITMCHAIN_GEM: {
Dark_Red_Jewel: 80
Violet_Jewel: 30
diff --git a/db/sc_config.conf b/db/sc_config.conf
new file mode 100644
index 000000000..12b0e2293
--- /dev/null
+++ b/db/sc_config.conf
@@ -0,0 +1,2811 @@
+//================= Hercules Database =====================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2019 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/>.
+//================= Description ===========================================
+// Configurations file for status effects
+//=========================================================================
+
+/**************************************************************************
+ ************* Entry structure ********************************************
+ **************************************************************************
+SC_TYPE: {
+ // ================ Optional fields ===============================
+ Visible: (bool) SC can be visible for all players
+ Flags: {
+ NoDeathReset: (bool) SC cannot be removed by death.
+ NoSave: (bool) SC cannot be saved.
+ NoDispelReset: (bool) SC cannot be reset by dispell.
+ NoClearanceReset: (bool) SC cannot be reset by clearance.
+ Buff: (bool) SC considered as buff and be removed by Hermode and etc.
+ Debuff: (bool) SC considered as debuff and be removed by Gospel and etc.
+ NoMadoReset: (bool) SC cannot be reset when MADO Gear is taken off.
+ NoAllReset: (bool) SC cannot be reset by 'sc_end SC_ALL' and status change clear.
+ }
+}
+**************************************************************************/
+SC_PROVOKE: {
+ Flags: {
+ Debuff: true
+ }
+}
+SC_ENDURE: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_HIDING: {
+ Flags: {
+ NoDispelReset: true
+ }
+}
+SC_CLOAKING: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ }
+}
+SC_TWOHANDQUICKEN: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_CONCENTRATION: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_ENCHANTPOISON: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_POISONREACT: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_QUAGMIRE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Debuff: true
+ }
+}
+SC_ANGELUS: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_BLESSING: {
+ Flags: {
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_INC_AGI: {
+ Flags: {
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_DEC_AGI: {
+ Flags: {
+ NoSave: true
+ Debuff: true
+ }
+}
+SC_SLOWPOISON: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_IMPOSITIO: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SUFFRAGIUM: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_ASPERSIO: {
+ Flags: {
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_BENEDICTIO: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_KYRIE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_MAGNIFICAT: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_GLORIA: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_LEXAETERNA: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_ADRENALINE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_WEAPONPERFECT: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_OVERTHRUST: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_MAXIMIZEPOWER: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_TRICKDEAD: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SHOUT: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_ENERGYCOAT: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_ATTHASTE_POTION1: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ATTHASTE_POTION2: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ATTHASTE_POTION3: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_MOVHASTE_POTION: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_BARRIER: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_NOEQUIPWEAPON: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NOEQUIPSHIELD: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NOEQUIPARMOR: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NOEQUIPHELM: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECTWEAPON: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECTSHIELD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECTARMOR: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECTHELM: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_AUTOGUARD: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_REFLECTSHIELD: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_DEVOTION: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_PROVIDENCE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_DEFENDER: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_MAGICROD: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_AUTOSPELL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_SPEARQUICKEN: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_BLADESTOP: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_EXPLOSIONSPIRITS: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STEELBODY: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_PROPERTYFIRE: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYWATER: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYWIND: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYGROUND: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STOP: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYUNDEAD: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_AURABLADE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_PARRYING: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_LKCONCENTRATION: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_TENSIONRELAX: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_BERSERK: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_SACRIFICE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_GOSPEL: {
+ Flags: {
+ NoSave: true
+ Debuff: true
+ }
+}
+SC_SAFETYWALL: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PNEUMA: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ASSUMPTIO: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_BASILICA: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_VOLCANO: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_DELUGE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_VIOLENTGALE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MAGICPOWER: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_EDP: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_TRUESIGHT: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_WINDWALK: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_MELTDOWN: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_CARTBOOST: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_BLOODING: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_JOINTBEAT: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Debuff: true
+ }
+}
+SC_MINDBREAKER: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_MEMORIZE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_FOGWALL: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SPIDERWEB: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Debuff: true
+ }
+}
+SC_SUB_WEAPONPROPERTY: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_RUN: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STRUP: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYDARK: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ADRENALINE2: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_PROPERTYTELEKINESIS: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SOULLINK: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PLUSATTACKPOWER: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_PLUSMAGICPOWER: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_KAITE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_KAAHI: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_KAUPE: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ONEHANDQUICKEN: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PRESERVE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_CHASEWALK: {
+ Flags: {
+ NoDispelReset: true
+ }
+}
+SC_CHASEWALK2: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MOVESLOW_POTION: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_DOUBLECASTING: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_GRAVITATION: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_OVERTHRUSTMAX: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_TAROTCARD: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Debuff: true
+ }
+}
+SC_CR_SHRINK: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_WZ_SIGHTBLASTER: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_RG_CCONFINE_M: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_RG_CCONFINE_S: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NJ_UTSUSEMI: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NJ_BUNSINJYUTSU: {
+ Flags: {
+ NoSave: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NJ_SUITON: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Debuff: true
+ }
+}
+SC_FOOD_STR: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_AGI: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_VIT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_DEX: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_INT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_LUK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_BASICAVOIDANCE: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_BASICHIT: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_CRITICALSUCCESSVALUE: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_CASH_PLUSEXP: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_CASH_DEATHPENALTY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_CASH_RECEIVEITEM: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_CASH_BOSS_ALARM: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_STR_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_AGI_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_VIT_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_DEX_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_INT_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_FOOD_LUK_CASH: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_SAVAGE_STEAK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_COCKTAIL_WARG_BLOOD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_MINOR_BBQ: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_SIROMA_ICE_TEA: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_DROCERA_HERB_STEAMED: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_PUTTI_TAILS_NOODLES: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_MELON_BOMB: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_BANANA_BOMB_SITDOWN_POSTDELAY: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_BANANA_BOMB: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_PROMOTE_HEALTH_RESERCH: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_ENERGY_DRINK_RESERCH: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_EXTRACT_WHITE_POTION_Z: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_VITATA_500: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_EXTRACT_SALAMINE_JUICE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_BOOST500: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_FULL_SWING_K: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MANA_PLUS: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MUSTLE_M: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_LIFE_FORCE_F: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MER_FLEE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MER_ATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MER_HP: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MER_SP: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MER_HIT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SLOWCAST: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_CRITICALWOUND: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_MOVHASTE_HORSE: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECT_DEF: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROTECT_MDEF: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HEALPLUS: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_S_LIFEPOTION: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_L_LIFEPOTION: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_CRITICALPERCENT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_PLUSAVOIDVALUE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_ATKER_ASPD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_TARGET_ASPD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_ATKER_MOVESPEED: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ATKER_BLOOD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_TARGET_BLOOD: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ARMOR_PROPERTY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HELLPOWER: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STEAMPACK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Debuff: true
+ NoMadoReset: true
+ }
+}
+SC_CASH_PLUSONLYJOBEXP: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_PARTYFLEE: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ANGEL_PROTECT: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ENCHANTBLADE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_DEATHBOUND: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_REFRESH: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_GIANTGROWTH: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_STONEHARDSKIN: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_VITALITYACTIVATION: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_FIGHTINGSPIRIT: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_ABUNDANCE: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_EPICLESIS: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ORATIO: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_LAUDAAGNUS: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_LAUDARAMUS: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_CLOAKINGEXCEED: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HALLUCINATIONWALK: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HALLUCINATIONWALK_POSTDELAY: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_RENOVATIO: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_WEAPONBLOCKING: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ROLLINGCUTTER: {
+ Visible: true
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_EXPIATIO: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_POISONINGWEAPON: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_TOXIN: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_PARALYSE: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_VENOMBLEED: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_MAGICMUSHROOM: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_DEATHHURT: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_PYREXIA: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_OBLIVIONCURSE: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_LEECHESEND: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_DUPLELIGHT: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_FEARBREEZE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ELECTRICSHOCKER: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MARSHOFABYSS: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_RECOGNIZEDSPELL: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_WUGDASH: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_WUGBITE: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_CAMOUFLAGE: {
+ Visible: true
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ACCELERATION: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HOVERING: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SUMMON1: {
+ Visible: true
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SUMMON2: {
+ Visible: true
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SUMMON3: {
+ Visible: true
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SUMMON4: {
+ Visible: true
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SUMMON5: {
+ Visible: true
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MVPCARD_TAOGUNKA: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_MVPCARD_MISTRESS: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_MVPCARD_ORCHERO: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_MVPCARD_ORCLORD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_OVERHEAT_LIMITPOINT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_OVERHEAT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SHAPESHIFT: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_INFRAREDSCAN: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MAGNETICFIELD: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NEUTRALBARRIER: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_NEUTRALBARRIER_MASTER: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STEALTHFIELD_MASTER: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MANU_ATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MANU_DEF: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SPL_ATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SPL_DEF: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__REPRODUCE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MANU_MATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SPL_MATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_STR_SCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_INT_SCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC_FORCEOFVANGUARD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_BUCHEDENOEL: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ Debuff: true
+ }
+}
+SC__AUTOSHADOWSPELL: {
+ Flags: {
+ Buff: true
+ }
+}
+SC__SHADOWFORM: {
+ Visible: true
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_RAID: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SHIELDSPELL_DEF: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SHIELDSPELL_MDEF: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SHIELDSPELL_REF: {
+ Flags: {
+ Buff: true
+ }
+}
+SC__BODYPAINT: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_EXEEDBREAK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ADORAMUS: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_PRESTIGE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC__INVISIBILITY: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__DEADLYINFECT: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_BANDING: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_BANDING_DEFENCE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_EARTHDRIVE: {
+ Flags: {
+ NoDispelReset: true
+ Buff: true
+ }
+}
+SC_INSPIRATION: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__ENERVATION: {
+ Flags: {
+ Buff: true
+ }
+}
+SC__GROOMY: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_RAISINGDRAGON: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__IGNORANCE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC__LAZINESS: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_LIGHTNINGWALK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ACARAJE: {
+ Flags: {
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__UNLUCKY: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_CURSEDCIRCLE_ATKER: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_CURSEDCIRCLE_TARGET: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__WEAKNESS: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_CRESCENTELBOW: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__STRIPACCESSARY: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC__MANHOLE: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC__BLOODYLUST: {
+ Flags: {
+ Debuff: true
+ }
+}
+SC_SWING: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SYMPHONY_LOVE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_PROPERTYWALK: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_SPELLFIST: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_NETHERWORLD: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SIREN: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_DEEP_SLEEP: {
+ Visible: true
+ Flags: {
+ NoSave: true
+ Debuff: true
+ }
+}
+SC_SIRCLEOFNATURE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_GLOOMYDAY: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_GLOOMYDAY_SK: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SONG_OF_MANA: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_DANCE_WITH_WUG: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_RUSH_WINDMILL: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ECHOSONG: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_HARMONIZE: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_MOONLIT_SERENADE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_SATURDAY_NIGHT_FEVER: {
+ Flags: {
+ Buff: true
+ }
+}
+SC_SITDOWN_FORCE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_ANALYZE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_LERADS_DEW: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_MELODYOFSINK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_BEYOND_OF_WARCRY: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_UNLIMITED_HUMMING_VOICE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+}
+SC_WARMER: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_VENOMIMPRESS: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ }
+}
+SC_FROSTMISTY: {
+ Visible: true
+ Flags: {
+ Debuff: true
+ }
+}
+SC_STOMACHACHE: {
+ Flags: {
+ Debuff: true
+ }
+}
+SC_MYSTERIOUS_POWDER: {
+ Flags: {
+ Debuff: true
+ }
+}
+SC_WATER_BARRIER: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_ZEPHYR: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_POWER_OF_GAIA: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_FIRE_INSIGNIA: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_WATER_INSIGNIA: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_WIND_INSIGNIA: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_EARTH_INSIGNIA: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_MORA_BUFF: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_NEEDLE_OF_PARALYZE: {
+ Flags: {
+ NoDeathReset: true
+ }
+}
+SC_PAIN_KILLER: {
+ Flags: {
+ NoDeathReset: true
+ }
+}
+SC_G_LIFEPOTION: {
+ Flags: {
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_LIGHT_OF_REGENE: {
+ Flags: {
+ NoDeathReset: true
+ }
+}
+SC_MAGIC_CANDY: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ NoMadoReset: true
+ }
+}
+SC_MONSTER_TRANSFORM: {
+ Visible: true
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MTF_ASPD: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MTF_RANGEATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MTF_MATK: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MTF_MLEATKED: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_MTF_CRIDAMAGE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_FULL_THROTTLE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_REBOUND: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_TELEKINESIS_INTENSE: {
+ Flags: {
+ NoSave: true
+ Buff: true
+ }
+}
+SC_SKELSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_DISTRUCTIONSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_ROYALSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_IMMUNITYSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_MYSTICSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_BATTLESCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_ARMORSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_FREYJASCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_SOULSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_QUEST_BUFF1: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_QUEST_BUFF2: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_QUEST_BUFF3: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_GEFFEN_MAGIC1: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_GEFFEN_MAGIC2: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_GEFFEN_MAGIC3: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_OVERLAPEXPUP: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_M_LIFEPOTION: {
+ Flags: {
+ NoDispelReset: true
+ NoMadoReset: true
+ }
+}
+SC_LEADERSHIP: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_GLORYWOUNDS: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_SOULCOLD: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_HAWKEYES: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_GDSKILL_REGENERATION: {
+ Flags: {
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_ORCISH: {
+ Flags: {
+ NoSave: true
+ }
+}
+SC_WEIGHTOVER50: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_WEIGHTOVER90: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_WEDDING: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_XMAS: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_SUMMER: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_NOCHAT: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_FUSION: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_EARTHSCROLL: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_STORMKICK_READY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_DOWNKICK_READY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_COUNTERKICK_READY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_TURNKICK_READY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_DODGE_READY: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_JAILED: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_AUTOTRADE: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_DANCING: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ }
+}
+SC_WHISTLE: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_ASSNCROS: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_POEMBRAGI: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_APPLEIDUN: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_HUMMING: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_DONTFORGETME: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_FORTUNE: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_SERVICEFORYOU: {
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_INCHIT: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ }
+}
+SC_PUSH_CART: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_COLD: {
+ Visible: true
+ Flags: {
+ }
+}
+SC_BLOOD_SUCKER: {
+ Visible: true
+ Flags: {
+ }
+}
+SC_MOONSTAR: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_SUPER_STAR: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_STRANGELIGHTS: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_DECORATION_OF_MUSIC: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_LJOSALFAR: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_MERMAID_LONGING: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_HAT_EFFECT: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_FLOWERSMOKE: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_FSTONE: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_HAPPINESS_STAR: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_MAPLE_FALLS: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_TIME_ACCESSORY: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_MAGICAL_FEATHER: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_BLOSSOM_FLUTTERING: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_SPRITEMABLE: {
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_BITESCAR: {
+ Flags: {
+ NoDispelReset: true
+ }
+}
+SC_CLAN_INFO: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoSave: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
+SC_ALL_RIDING: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoAllReset: true
+ }
+}
+SC_DAILYSENDMAILCNT: {
+ Visible: true
+ Flags: {
+ NoDeathReset: true
+ NoDispelReset: true
+ NoClearanceReset: true
+ NoMadoReset: true
+ NoAllReset: true
+ }
+}
diff --git a/db/sc_config.txt b/db/sc_config.txt
deleted file mode 100644
index 2648f7bae..000000000
--- a/db/sc_config.txt
+++ /dev/null
@@ -1,505 +0,0 @@
-// Status Change configuration database
-//
-// Structure of Database:
-// SC_NAME, flag
-//
-// flag 1 - SC cannot be removed by death.
-// 2 - SC cannot be saved.
-// 4 - SC cannot be reset by dispell.
-// 8 - SC cannot be reset by clearance.
-// 16 - SC considered as buff and be removed by Hermode and etc.
-// 32 - SC considered as debuff and be removed by Gospel and etc.
-// 64 - SC cannot be reset when MADO Gear is taken off.
-// 128 - SC cannot be reset by 'sc_end SC_ALL' and status change clear.
-// 256 - SC can be visible for all players
-// Example:
-// SC_ENDURE, 21 //SC_ENDURE: cannot be removed by death and dispell and cosidered as buff. (16 + 4 + 1 = 21)
-
-SC_PROVOKE, 32
-SC_ENDURE, 21
-SC_HIDING, 4
-SC_CLOAKING, 6
-SC_TWOHANDQUICKEN, 24
-SC_CONCENTRATION, 16
-SC_ENCHANTPOISON, 16
-SC_POISONREACT, 16
-SC_QUAGMIRE, 42
-SC_ANGELUS, 16
-SC_BLESSING, 80
-SC_INC_AGI, 80
-SC_DEC_AGI, 34
-SC_SLOWPOISON, 24
-SC_IMPOSITIO, 16
-SC_SUFFRAGIUM, 16
-SC_ASPERSIO, 80
-SC_BENEDICTIO, 26
-SC_KYRIE, 16
-SC_MAGNIFICAT, 18
-SC_GLORIA, 16
-SC_LEXAETERNA, 18
-SC_ADRENALINE, 16
-SC_WEAPONPERFECT, 16
-SC_OVERTHRUST, 16
-SC_MAXIMIZEPOWER, 16
-SC_TRICKDEAD, 26
-SC_SHOUT, 16
-SC_ENERGYCOAT, 16
-SC_ATTHASTE_POTION1, 24
-SC_ATTHASTE_POTION2, 24
-SC_ATTHASTE_POTION3, 16
-SC_MOVHASTE_POTION, 26
-//SC_POSTDELAY, 29
-SC_BARRIER, 16
-SC_NOEQUIPWEAPON, 30
-SC_NOEQUIPSHIELD, 30
-SC_NOEQUIPARMOR, 30
-SC_NOEQUIPHELM, 30
-SC_PROTECTWEAPON, 28
-SC_PROTECTSHIELD, 28
-SC_PROTECTARMOR, 28
-SC_PROTECTHELM, 28
-SC_AUTOGUARD, 24
-SC_REFLECTSHIELD, 24
-SC_DEVOTION, 18
-SC_PROVIDENCE, 18
-SC_DEFENDER, 16
-SC_MAGICROD, 26
-//SC_WEAPONPROPERTY, 24
-SC_AUTOSPELL, 21
-//SC_SPECIALZONE, 26
-//SC_MASK, 26
-SC_SPEARQUICKEN, 16
-SC_BLADESTOP, 26
-SC_EXPLOSIONSPIRITS, 26
-SC_STEELBODY, 18
-SC_PROPERTYFIRE, 29
-SC_PROPERTYWATER, 29
-SC_PROPERTYWIND, 29
-SC_PROPERTYGROUND, 29
-SC_STOP, 26
-SC_PROPERTYUNDEAD, 26
-//SC_STATUSONE, 26
-SC_AURABLADE, 18
-SC_PARRYING, 26
-SC_LKCONCENTRATION, 18
-SC_TENSIONRELAX, 26
-SC_BERSERK, 18
-SC_SACRIFICE, 26
-SC_GOSPEL, 34
-SC_SAFETYWALL, 28
-SC_PNEUMA, 28
-SC_ASSUMPTIO, 16
-SC_BASILICA, 26
-//SC_GROUNDMAGIC, 26 // is divided to SC_VOLCANO, 0xSC_DELUGE, 0xSC_VIOLENTGALE
-SC_VOLCANO, 26
-SC_DELUGE, 26
-SC_VIOLENTGALE, 26
-SC_MAGICPOWER, 18
-SC_EDP, 23
-SC_TRUESIGHT, 18
-SC_WINDWALK, 18
-SC_MELTDOWN, 23
-SC_CARTBOOST, 23
-SC_BLOODING, 26
-SC_JOINTBEAT, 42
-SC_MINDBREAKER, 18
-SC_MEMORIZE, 18
-SC_FOGWALL, 26
-SC_SPIDERWEB, 47
-SC_SUB_WEAPONPROPERTY, 23
-SC_RUN, 26
-SC_STRUP, 26
-SC_PROPERTYDARK, 26
-SC_ADRENALINE2, 18
-SC_PROPERTYTELEKINESIS, 26
-SC_SOULLINK, 26
-SC_PLUSATTACKPOWER, 88
-SC_PLUSMAGICPOWER, 88
-SC_KAITE, 26
-SC_KAAHI, 26
-SC_KAUPE, 26
-SC_ONEHANDQUICKEN, 26
-//SC_GDSKILL_POSTDELAY, 29
-SC_PRESERVE, 18
-SC_CHASEWALK, 4
-SC_CHASEWALK2, 26
-SC_MOVESLOW_POTION, 26
-SC_DOUBLECASTING, 26
-SC_GRAVITATION, 26
-SC_OVERTHRUSTMAX, 18
-SC_TAROTCARD, 42
-SC_CR_SHRINK, 23
-SC_WZ_SIGHTBLASTER, 23
-SC_RG_CCONFINE_M, 31
-SC_RG_CCONFINE_S, 31
-SC_NJ_UTSUSEMI, 26
-SC_NJ_BUNSINJYUTSU, 26
-SC_NJ_SUITON, 47
-//SC_MENTAL, 26
-//SC_EXPMEMORY, 26
-//SC_PERFORMANCE, 26
-//SC_GAIN, 26
-//SC_DRIFT, 26
-//SC_WALLSHIFT, 26
-//SC_REINCARNATION, 26
-//SC_DENERGY, 26
-//SC_DAURA, 26
-//SC_DFREEZER, 26
-//SC_DPUNISH, 26
-//SC_DBARRIER, 26
-//SC_DWARNING, 26
-//SC_MOUSEWHEEL, 30
-//SC_DACCEL, 26
-//SC_DBLOCK, 26
-SC_FOOD_STR, 92
-SC_FOOD_AGI, 92
-SC_FOOD_VIT, 92
-SC_FOOD_DEX, 92
-SC_FOOD_INT, 92
-SC_FOOD_LUK, 92
-SC_FOOD_BASICAVOIDANCE, 88
-SC_FOOD_BASICHIT, 88
-SC_FOOD_CRITICALSUCCESSVALUE, 24
-SC_CASH_PLUSEXP, 93
-SC_CASH_DEATHPENALTY, 93
-SC_CASH_RECEIVEITEM, 93
-SC_CASH_BOSS_ALARM, 94
-//SC_DA_ENERGY, 26
-//SC_DA_FIRSTSLOT, 26
-//SC_DA_HEADDEF, 26
-//SC_DA_SPACE, 30
-//SC_DA_ITEMREBUILD, 30
-//SC_DA_ILLUSION, 26
-//SC_DA_EARPLUG, 30
-//SC_DA_CONTRACT, 29
-//SC_DA_BLACK, 30
-//SC_DA_MAGICCART, 26
-//SC_CRYSTAL, 30
-//SC_DA_REBUILD, 29
-//SC_DA_EDARKNESS, 26
-//SC_DA_EGUARDIAN, 26
-//SC_DA_TIMEOUT, 26
-SC_FOOD_STR_CASH, 93
-SC_FOOD_AGI_CASH, 93
-SC_FOOD_VIT_CASH, 93
-SC_FOOD_DEX_CASH, 93
-SC_FOOD_INT_CASH, 93
-SC_FOOD_LUK_CASH, 93
-SC_SAVAGE_STEAK, 76
-SC_COCKTAIL_WARG_BLOOD, 76
-SC_MINOR_BBQ, 76
-SC_SIROMA_ICE_TEA, 76
-SC_DROCERA_HERB_STEAMED, 76
-SC_PUTTI_TAILS_NOODLES, 76
-SC_MELON_BOMB, 12
-SC_BANANA_BOMB_SITDOWN_POSTDELAY, 12
-SC_BANANA_BOMB, 12
-SC_PROMOTE_HEALTH_RESERCH, 12
-SC_ENERGY_DRINK_RESERCH, 12
-SC_EXTRACT_WHITE_POTION_Z, 12
-SC_VITATA_500, 12
-SC_EXTRACT_SALAMINE_JUICE, 12
-SC_BOOST500, 12
-SC_FULL_SWING_K, 12
-SC_MANA_PLUS, 12
-SC_MUSTLE_M, 12
-SC_LIFE_FORCE_F, 12
-SC_MER_FLEE, 28
-SC_MER_ATK, 28
-SC_MER_HP, 28
-SC_MER_SP, 28
-SC_MER_HIT, 28
-SC_SLOWCAST, 31
-SC_CRITICALWOUND, 23
-SC_MOVHASTE_HORSE, 31
-SC_PROTECT_DEF, 28
-SC_PROTECT_MDEF, 28
-SC_HEALPLUS, 92
-SC_S_LIFEPOTION, 92
-SC_L_LIFEPOTION, 92
-SC_CRITICALPERCENT, 92
-SC_PLUSAVOIDVALUE, 92
-SC_ATKER_ASPD, 28
-SC_TARGET_ASPD, 92
-SC_ATKER_MOVESPEED, 28
-SC_ATKER_BLOOD, 28
-SC_TARGET_BLOOD, 30
-SC_ARMOR_PROPERTY, 29
-//SC_REUSE_LIMIT_A, 29
-SC_HELLPOWER, 29
-SC_STEAMPACK, 108
-//SC_REUSE_LIMIT_B, 29
-//SC_REUSE_LIMIT_C, 29
-//SC_REUSE_LIMIT_D, 29
-//SC_REUSE_LIMIT_E, 29
-//SC_REUSE_LIMIT_F, 29
-SC_CASH_PLUSONLYJOBEXP, 93
-SC_PARTYFLEE, 24
-SC_ANGEL_PROTECT, 24
-//SC_ENDURE_MDEF, 21
-SC_ENCHANTBLADE, 16
-SC_DEATHBOUND, 30
-SC_REFRESH, 22
-SC_GIANTGROWTH, 20
-SC_STONEHARDSKIN, 23
-SC_VITALITYACTIVATION, 20
-SC_FIGHTINGSPIRIT, 20
-SC_ABUNDANCE, 20
-//SC_REUSE_MILLENNIUMSHIELD, 29
-//SC_REUSE_CRUSHSTRIKE, 29
-//SC_REUSE_REFRESH, 29
-//SC_REUSE_STORMBLAST, 29
-SC_EPICLESIS, 29
-SC_ORATIO, 276
-SC_LAUDAAGNUS, 20
-SC_LAUDARAMUS, 20
-SC_CLOAKINGEXCEED, 30
-SC_HALLUCINATIONWALK, 284
-SC_HALLUCINATIONWALK_POSTDELAY, 31
-SC_RENOVATIO, 20
-SC_WEAPONBLOCKING, 28
-//SC_WEAPONBLOCKING_POSTDELAY, 31
-SC_ROLLINGCUTTER, 286
-SC_EXPIATIO, 20
-SC_POISONINGWEAPON, 28
-SC_TOXIN, 20
-SC_PARALYSE, 20
-SC_VENOMBLEED, 20
-SC_MAGICMUSHROOM, 20
-SC_DEATHHURT, 20
-SC_PYREXIA, 20
-SC_OBLIVIONCURSE, 20
-SC_LEECHESEND, 20
-SC_DUPLELIGHT, 276
-SC_FEARBREEZE, 28
-SC_ELECTRICSHOCKER, 30
-SC_MARSHOFABYSS, 20
-SC_RECOGNIZEDSPELL, 20
-//SC_WUGRIDER, 29
-SC_WUGDASH, 30
-SC_WUGBITE, 30
-SC_CAMOUFLAGE, 286
-SC_ACCELERATION, 28
-SC_HOVERING, 28
-SC_SUMMON1, 280
-SC_SUMMON2, 280
-SC_SUMMON3, 280
-SC_SUMMON4, 280
-SC_SUMMON5, 280
-SC_MVPCARD_TAOGUNKA, 60
-SC_MVPCARD_MISTRESS, 60
-SC_MVPCARD_ORCHERO, 60
-SC_MVPCARD_ORCLORD, 60
-SC_OVERHEAT_LIMITPOINT, 28
-SC_OVERHEAT, 28
-SC_SHAPESHIFT, 28
-SC_INFRAREDSCAN, 28
-SC_MAGNETICFIELD, 30
-SC_NEUTRALBARRIER, 30
-SC_NEUTRALBARRIER_MASTER, 30
-SC_STEALTHFIELD_MASTER, 30
-SC_MANU_ATK, 28
-SC_MANU_DEF, 28
-SC_SPL_ATK, 28
-SC_SPL_DEF, 28
-SC__REPRODUCE, 28
-SC_MANU_MATK, 28
-SC_SPL_MATK, 28
-SC_STR_SCROLL, 61
-SC_INT_SCROLL, 61
-SC_FORCEOFVANGUARD, 28
-SC_BUCHEDENOEL, 60
-SC__AUTOSHADOWSPELL, 16
-SC__SHADOWFORM, 286
-SC_RAID, 28
-SC_SHIELDSPELL_DEF, 16
-SC_SHIELDSPELL_MDEF, 16
-SC_SHIELDSPELL_REF, 16
-SC__BODYPAINT, 20
-SC_EXEEDBREAK, 28
-SC_ADORAMUS, 16
-SC_PRESTIGE, 16
-SC__INVISIBILITY, 30
-SC__DEADLYINFECT, 20
-SC_BANDING, 284
-SC_BANDING_DEFENCE, 28
-SC_EARTHDRIVE, 20
-SC_INSPIRATION, 28
-SC__ENERVATION, 16
-SC__GROOMY, 16
-SC_RAISINGDRAGON, 30
-SC__IGNORANCE, 16
-SC__LAZINESS, 16
-SC_LIGHTNINGWALK, 28
-SC_ACARAJE, 24
-SC__UNLUCKY, 16
-SC_CURSEDCIRCLE_ATKER, 284
-SC_CURSEDCIRCLE_TARGET, 284
-SC__WEAKNESS, 16
-SC_CRESCENTELBOW, 28
-//SC_NOEQUIPACCESSARY, 30
-SC__STRIPACCESSARY, 28
-SC__MANHOLE, 94
-//SC_POPECOOKIE, 28
-SC__BLOODYLUST, 32
-SC_SWING, 28
-SC_SYMPHONY_LOVE, 28
-SC_PROPERTYWALK, 18
-SC_SPELLFIST, 16
-SC_NETHERWORLD, 16
-SC_SIREN, 16
-SC_DEEP_SLEEP, 290
-SC_SIRCLEOFNATURE, 16
-SC_GLOOMYDAY, 16
-SC_GLOOMYDAY_SK, 16
-SC_SONG_OF_MANA, 16
-SC_DANCE_WITH_WUG, 16
-SC_RUSH_WINDMILL, 28
-SC_ECHOSONG, 28
-SC_HARMONIZE, 16
-SC_MOONLIT_SERENADE, 28
-SC_SATURDAY_NIGHT_FEVER, 16
-SC_SITDOWN_FORCE, 28
-SC_ANALYZE, 28
-SC_LERADS_DEW, 28
-SC_MELODYOFSINK, 28
-SC_BEYOND_OF_WARCRY, 28
-SC_UNLIMITED_HUMMING_VOICE, 28
-SC_WARMER, 2
-SC_VENOMIMPRESS, 260
-SC_FROSTMISTY, 288
-//SC_ASSUMPTIO2, 16
-//SC_GN_TRAINING_SWORD, 31
-//SC_GN_REMODELING_CART, 31
-SC_STOMACHACHE, 32
-SC_MYSTERIOUS_POWDER, 32
-//SC_ELEMENTAL_AGGRESSIVE, 2
-//SC_ELEMENTAL_WAIT, 2
-//SC_ELEMENTAL_PASSIVE, 2
-//SC_ELEMENTAL_DEFENSIVE, 2
-SC_WATER_BARRIER, 2
-SC_ZEPHYR, 2
-SC_POWER_OF_GAIA, 2
-SC_FIRE_INSIGNIA, 2
-SC_WATER_INSIGNIA, 2
-SC_WIND_INSIGNIA, 2
-SC_EARTH_INSIGNIA, 2
-SC_MORA_BUFF, 2
-//SC_REUSE_LIMIT_G, 29
-//SC_REUSE_LIMIT_H, 29
-SC_NEEDLE_OF_PARALYZE, 1
-SC_PAIN_KILLER, 1
-SC_G_LIFEPOTION, 68
-//SC_VITALIZE_POTION, 4
-SC_LIGHT_OF_REGENE, 1
-//SC_SONIC_CLAW_POSTDELAY, 2
-//SC_SILVERVEIN_RUSH_POSTDELAY, 2
-//SC_MIDNIGHT_FRENZY_POSTDELAY, 2
-//SC_TINDER_BREAKER, 2
-//SC_TINDER_BREAKER_POSTDELAY, 2
-//SC_CBC, 2
-//SC_CBC_POSTDELAY, 2
-//SC_EQC, 2
-SC_MAGIC_CANDY, 92
-//SC_ALL_RIDING_REUSE_LIMIT, 1
-//SC_HANDICAPSTATE_DEEP_SLEEP, 80
-SC_MONSTER_TRANSFORM, 268
-SC_MTF_ASPD, 12
-SC_MTF_RANGEATK, 12
-SC_MTF_MATK, 12
-SC_MTF_MLEATKED,12
-SC_MTF_CRIDAMAGE, 12
-SC_FULL_THROTTLE, 18
-SC_REBOUND, 18
-SC_TELEKINESIS_INTENSE, 18
-
-// Geffen Scrolls
-SC_SKELSCROLL, 69
-SC_DISTRUCTIONSCROLL, 69
-SC_ROYALSCROLL, 69
-SC_IMMUNITYSCROLL, 69
-SC_MYSTICSCROLL, 69
-SC_BATTLESCROLL, 69
-SC_ARMORSCROLL, 69
-SC_FREYJASCROLL, 69
-SC_SOULSCROLL, 69
-
-// Eden Crystal Synthesis
-SC_QUEST_BUFF1, 13
-SC_QUEST_BUFF2, 13
-SC_QUEST_BUFF3, 13
-
-// Geffen Magic Tournament
-SC_GEFFEN_MAGIC1, 14
-SC_GEFFEN_MAGIC2, 14
-SC_GEFFEN_MAGIC3, 14
-
-SC_OVERLAPEXPUP, 12
-SC_M_LIFEPOTION, 68
-
-// Guild Auras should not be saved
-SC_LEADERSHIP,78
-SC_GLORYWOUNDS,78
-SC_SOULCOLD,78
-SC_HAWKEYES,78
-SC_GDSKILL_REGENERATION,78
-
-SC_ORCISH, 2
-
-// Unremovable
-SC_WEIGHTOVER50, 207
-SC_WEIGHTOVER90, 207
-SC_WEDDING, 77
-SC_XMAS, 77
-SC_SUMMER, 77
-SC_NOCHAT, 205
-SC_FUSION, 77
-SC_EARTHSCROLL, 77
-SC_STORMKICK_READY, 77
-SC_DOWNKICK_READY, 77
-SC_COUNTERKICK_READY, 77
-SC_TURNKICK_READY, 77
-SC_DODGE_READY, 77
-SC_JAILED, 205
-SC_AUTOTRADE, 77
-SC_DANCING, 12
-SC_WHISTLE, 79
-SC_ASSNCROS, 79
-SC_POEMBRAGI, 79
-SC_APPLEIDUN, 79
-SC_HUMMING, 79
-SC_DONTFORGETME, 79
-SC_FORTUNE, 79
-SC_SERVICEFORYOU, 79
-SC_INCHIT, 77
-SC_PUSH_CART, 461
-SC_COLD, 256
-SC_BLOOD_SUCKER, 256
-
-// Costumes
-SC_MOONSTAR, 463
-SC_SUPER_STAR, 463
-SC_STRANGELIGHTS, 463
-SC_DECORATION_OF_MUSIC, 463
-SC_LJOSALFAR, 463
-SC_MERMAID_LONGING, 463
-SC_HAT_EFFECT, 463
-SC_FLOWERSMOKE, 463
-SC_FSTONE, 463
-SC_HAPPINESS_STAR, 463
-SC_MAPLE_FALLS, 463
-SC_TIME_ACCESSORY, 463
-SC_MAGICAL_FEATHER, 463
-SC_BLOSSOM_FLUTTERING, 463
-
-// Summoner
-SC_SPRITEMABLE, 205
-SC_BITESCAR, 4
-
-// Clan System
-SC_CLAN_INFO, 463
-
-// Cant Clear
-SC_ALL_RIDING, 397
-
-SC_DAILYSENDMAILCNT, 461
diff --git a/doc/atcommands.txt b/doc/atcommands.txt
index 139295973..0b4dce579 100644
--- a/doc/atcommands.txt
+++ b/doc/atcommands.txt
@@ -1059,6 +1059,12 @@ Changes the gender attached to the player's account.
---------------------------------------
+@changecharsex
+
+Changes the gender attached to the player's character.
+
+---------------------------------------
+
@marry <player 1> <player 2>
@divorce <player>
diff --git a/doc/constants.md b/doc/constants.md
index 4c2be542e..4bb663365 100644
--- a/doc/constants.md
+++ b/doc/constants.md
@@ -3488,11 +3488,38 @@
- `4_M_POPFESTA`: 10251
- `4_BONFIRE`: 10252
- `4_PCCOUNT`: 10253
+- `4_LAVAGOLEM`: 10254
+- `4_F_IA`: 10255
+- `4_LOCKE`: 10256
+- `4_LIL_LIF`: 10257
+- `4_LIL_LIF2`: 10258
+- `4_F_DRAGONHAT`: 10259
+- `4_M_DRAGONHAT`: 10260
+- `JP_NPC02`: 10261
+- `JP_NPC03`: 10262
+- `JP_NPC04`: 10263
+- `JP_NPC05`: 10264
+- `JP_NPC06`: 10265
+- `JP_NPC07`: 10266
+- `JP_NPC08`: 10267
+- `JP_NPC09`: 10268
+- `JP_NPC10`: 10269
+- `4_FIRERING`: 10270
- `4_SCATLETON`: 10271
+- `4_JP_AB_NPC_001`: 10272
+- `4_JP_AB_NPC_002`: 10273
+- `4_JP_AB_NPC_003`: 10274
+- `4_JP_AB_NPC_004`: 10275
+- `4_JP_AB_NPC_005`: 10276
+- `4_JP_AB_NPC_006`: 10277
+- `4_JP_AB_NPC_007`: 10278
+- `4_JP_AB_NPC_008`: 10279
- `4_JJAK`: 10280
- `4_M_SNOWMAN_B`: 10281
- `4_M_SNOWMAN_R`: 10282
- `4_M_SNOWMAN_G`: 10283
+- `WARPEFFECTNPC`: 10284
+- `4_HEN`: 10285
- `4_F_DANGDANG`: 10286
- `4_M_DANGDANG`: 10287
- `4_F_DANGDANG1`: 10288
@@ -3517,6 +3544,39 @@
- `4_ED_OSCAR`: 10307
- `4_ED_ORB`: 10308
- `4_ED_FENCE`: 10309
+- `4_M_ANDREA`: 10310
+- `4_M_ANDREA_D`: 10311
+- `4_F_ANES`: 10312
+- `4_F_ANES_D`: 10313
+- `4_M_SILVANO`: 10314
+- `4_M_SILVANO_D`: 10315
+- `4_F_CECILIA`: 10316
+- `4_F_CECILIA_D`: 10317
+- `4_M_MD_SEYREN`: 10318
+- `4_M_MD_EREMES`: 10319
+- `4_M_MD_HARWORD`: 10320
+- `4_F_MD_MAGALETA`: 10321
+- `4_F_MD_SHECIL`: 10322
+- `4_F_MD_KATRINN`: 10323
+- `4_M_MD_SEYREN_H`: 10324
+- `4_M_MD_EREMES_H`: 10325
+- `4_M_MD_HARWORD_H`: 10326
+- `4_F_MD_MAGALETA_H`: 10327
+- `4_F_MD_SHECIL_H`: 10328
+- `4_F_MD_KATRINN_H`: 10329
+- `4_M_MD_SEYREN_D`: 10330
+- `4_M_MD_EREMES_D`: 10331
+- `4_M_MD_HARWORD_D`: 10332
+- `4_F_MD_MAGALETA_D`: 10333
+- `4_F_MD_SHECIL_D`: 10334
+- `4_F_MD_KATRINN_D`: 10335
+- `4_F_MD_YGNIZEM`: 10336
+- `4_F_ERENE`: 10337
+- `4_M_EINCPTMINER`: 10338
+- `4_F_EINRESERCHER`: 10339
+- `4_F_REINDEER`: 10340
+- `4_PIGOCTO`: 10341
+- `4_JP_16TH`: 10343
### Mercenary IDs
@@ -4237,6 +4297,29 @@
- `ITEMINFO_MATK`: 15
- `ITEMINFO_VIEWSPRITE`: 16
- `ITEMINFO_TRADE`: 17
+- `ITEMINFO_ELV_MAX`: 18
+- `ITEMINFO_DROPEFFECT_MODE`: 19
+- `ITEMINFO_DELAY`: 20
+- `ITEMINFO_CLASS_BASE_1`: 21
+- `ITEMINFO_CLASS_BASE_2`: 22
+- `ITEMINFO_CLASS_BASE_3`: 23
+- `ITEMINFO_CLASS_UPPER`: 24
+- `ITEMINFO_FLAG_NO_REFINE`: 25
+- `ITEMINFO_FLAG_DELAY_CONSUME`: 26
+- `ITEMINFO_FLAG_AUTOEQUIP`: 27
+- `ITEMINFO_FLAG_AUTO_FAVORITE`: 28
+- `ITEMINFO_FLAG_BUYINGSTORE`: 29
+- `ITEMINFO_FLAG_BINDONEQUIP`: 30
+- `ITEMINFO_FLAG_KEEPAFTERUSE`: 31
+- `ITEMINFO_FLAG_FORCE_SERIAL`: 32
+- `ITEMINFO_FLAG_NO_OPTIONS`: 33
+- `ITEMINFO_FLAG_DROP_ANNOUNCE`: 34
+- `ITEMINFO_FLAG_SHOWDROPEFFECT`: 35
+- `ITEMINFO_STACK_AMOUNT`: 36
+- `ITEMINFO_STACK_FLAG`: 37
+- `ITEMINFO_ITEM_USAGE_FLAG`: 38
+- `ITEMINFO_ITEM_USAGE_OVERRIDE`: 39
+- `ITEMINFO_GM_LV_TRADE_OVERRIDE`: 40
### getmercinfo options
diff --git a/doc/sample/getiteminfo.txt b/doc/sample/getiteminfo.txt
index 9d5121635..316318cb6 100644
--- a/doc/sample/getiteminfo.txt
+++ b/doc/sample/getiteminfo.txt
@@ -37,5 +37,28 @@ prontera,156,179,6 script test_getiteminfo 4_F_KAFRA1,{
.@trade$ = callfunc("F_GetTradeRestriction", .@value);
mesf("Trade Restriction: %s", .@trade$);
+
+ mesf("Drop delay: %d", getiteminfo(.@value, ITEMINFO_DELAY));
+ mesf("Drop effect mode: %d", getiteminfo(.@value, ITEMINFO_DROPEFFECT_MODE));
+ mesf("Class base 1: %d", getiteminfo(.@value, ITEMINFO_CLASS_BASE_1));
+ mesf("Class base 2: %d", getiteminfo(.@value, ITEMINFO_CLASS_BASE_2));
+ mesf("Class base 3: %d", getiteminfo(.@value, ITEMINFO_CLASS_BASE_3));
+ mesf("Class Upper: %d", getiteminfo(.@value, ITEMINFO_CLASS_UPPER));
+ mesf("No refine flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_NO_REFINE));
+ mesf("Delay consume flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_DELAY_CONSUME));
+ mesf("Auto equip flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_AUTOEQUIP));
+ mesf("Auto favorite flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_AUTO_FAVORITE));
+ mesf("Buying store flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_BUYINGSTORE));
+ mesf("Bind on equip flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_BINDONEQUIP));
+ mesf("Keep after use flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_KEEPAFTERUSE));
+ mesf("Force serial flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_FORCE_SERIAL));
+ mesf("No random item options flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_NO_OPTIONS));
+ mesf("Drop announce flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_DROP_ANNOUNCE));
+ mesf("Shopw drop effect flag: %d", getiteminfo(.@value, ITEMINFO_FLAG_SHOWDROPEFFECT));
+ mesf("Stack amount: %d", getiteminfo(.@value, ITEMINFO_STACK_AMOUNT));
+ mesf("Stack amount flag: %d", getiteminfo(.@value, ITEMINFO_STACK_FLAG));
+ mesf("Item usage flag: %d", getiteminfo(.@value, ITEMINFO_ITEM_USAGE_FLAG));
+ mesf("Item usage override: %d", getiteminfo(.@value, ITEMINFO_ITEM_USAGE_OVERRIDE));
+ mesf("GM Level override: %d", getiteminfo(.@value, ITEMINFO_GM_LV_TRADE_OVERRIDE));
close;
}
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 8c26ff832..d14393a8a 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -3278,26 +3278,49 @@ It will return -1 if there is no such item.
Valid types are:
- ITEMINFO_BUYPRICE - Buy Price
- ITEMINFO_SELLPRICE - Sell Price
- ITEMINFO_TYPE - Item Type
- ITEMINFO_MAXCHANCE - Max drop chance of this item e.g. 1 = 0.01% , etc..
- if = 0, then monsters don't drop it at all (rare or a quest item)
- if = 10000, then this item is sold in NPC shops only
- ITEMINFO_SEX - Sex
- ITEMINFO_LOC - Equip location
- ITEMINFO_WEIGHT - Weight (note: 1/10 of unit)
- ITEMINFO_ATK - Attack
- ITEMINFO_DEF - Defense
- ITEMINFO_RANGE - Range
- ITEMINFO_SLOTS - Slots
- ITEMINFO_SUBTYPE - Item subtype
- ITEMINFO_ELV - Equip min. level
- ITEMINFO_WLV - Weapon level
- ITEMINFO_VIEWID - View ID ("Sprite" field in the Item DB)
- ITEMINFO_MATK - MATK (only relevant if RENEWAL is set)
- ITEMINFO_VIEWSPRITE - View Sprite ("ViewSprite" field in the Item DB)
- ITEMINFO_TRADE - Trade Restriction (see "doc/constant.md": item trade restriction)
+ ITEMINFO_BUYPRICE - Buy Price
+ ITEMINFO_SELLPRICE - Sell Price
+ ITEMINFO_TYPE - Item Type
+ ITEMINFO_MAXCHANCE - Max drop chance of this item e.g. 1 = 0.01% , etc..
+ if = 0, then monsters don't drop it at all (rare or a quest item)
+ if = 10000, then this item is sold in NPC shops only
+ ITEMINFO_SEX - Sex
+ ITEMINFO_LOC - Equip location
+ ITEMINFO_WEIGHT - Weight (note: 1/10 of unit)
+ ITEMINFO_ATK - Attack
+ ITEMINFO_DEF - Defense
+ ITEMINFO_RANGE - Range
+ ITEMINFO_SLOTS - Slots
+ ITEMINFO_SUBTYPE - Item subtype
+ ITEMINFO_ELV - Equip min. level
+ ITEMINFO_ELV_MAX - Equip max. level
+ ITEMINFO_WLV - Weapon level
+ ITEMINFO_VIEWID - View ID ("Sprite" field in the Item DB)
+ ITEMINFO_MATK - MATK (only relevant if RENEWAL is set)
+ ITEMINFO_VIEWSPRITE - View Sprite ("ViewSprite" field in the Item DB)
+ ITEMINFO_TRADE - Trade Restriction (see "doc/constant.md": item trade restriction)
+ ITEMINFO_DELAY - Delay
+ ITEMINFO_DROPEFFECT_MODE - Drop effect mode
+ ITEMINFO_CLASS_BASE_1 - Class base 1
+ ITEMINFO_CLASS_BASE_2 - Class base 2
+ ITEMINFO_CLASS_BASE_3 - Class base 3
+ ITEMINFO_CLASS_UPPER - Class Upper
+ ITEMINFO_FLAG_NO_REFINE - No refine flag
+ ITEMINFO_FLAG_DELAY_CONSUME - Delay consume flag
+ ITEMINFO_FLAG_AUTOEQUIP - Auto equip flag
+ ITEMINFO_FLAG_AUTO_FAVORITE - Auto favorite flag
+ ITEMINFO_FLAG_BUYINGSTORE - Buying store flag
+ ITEMINFO_FLAG_BINDONEQUIP - Bind on equip flag
+ ITEMINFO_FLAG_KEEPAFTERUSE - Keep after use flag
+ ITEMINFO_FLAG_FORCE_SERIAL - Force serial flag
+ ITEMINFO_FLAG_NO_OPTIONS - No random item options flag
+ ITEMINFO_FLAG_DROP_ANNOUNCE - Drop announce flag
+ ITEMINFO_FLAG_SHOWDROPEFFECT - Shopw drop effect flag
+ ITEMINFO_STACK_AMOUNT - Stack amount
+ ITEMINFO_STACK_FLAG - Stack amount flag (1: inventory, 2:cart, 4:storage: 8:guildstorage)
+ ITEMINFO_ITEM_USAGE_FLAG - Item usage flag
+ ITEMINFO_ITEM_USAGE_OVERRIDE - Item usage override
+ ITEMINFO_GM_LV_TRADE_OVERRIDE - Min. GM level override trade restriction
Check sample in doc/sample/getiteminfo.txt
diff --git a/src/char/int_guild.c b/src/char/int_guild.c
index 8e05c76e2..87cb3bee0 100644
--- a/src/char/int_guild.c
+++ b/src/char/int_guild.c
@@ -1612,7 +1612,6 @@ static int inter_guild_parse_frommap(int fd)
case 0x3034: mapif->parse_GuildLeave(fd, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOB(fd,14), RFIFOP(fd,15)); break;
case 0x3035: mapif->parse_GuildChangeMemberInfoShort(fd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOB(fd,14),RFIFOL(fd,15),RFIFOL(fd,19)); break;
case 0x3036: mapif->parse_BreakGuild(fd,RFIFOL(fd,2)); break;
- case 0x3037: mapif->parse_GuildMessage(fd, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12); break;
case 0x3039: mapif->parse_GuildBasicInfoChange(fd, RFIFOL(fd,4), RFIFOW(fd,8), RFIFOP(fd,10), RFIFOW(fd,2)-10); break;
case 0x303A: mapif->parse_GuildMemberInfoChange(fd, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOL(fd,12), RFIFOW(fd,16), RFIFOP(fd,18), RFIFOW(fd,2)-18); break;
case 0x303B: mapif->parse_GuildPosition(fd, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12)); break;
diff --git a/src/char/int_party.c b/src/char/int_party.c
index 8ee03ecc5..c27d708f2 100644
--- a/src/char/int_party.c
+++ b/src/char/int_party.c
@@ -599,7 +599,6 @@ static int inter_party_parse_frommap(int fd)
case 0x3024: mapif->parse_PartyLeave(fd, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); break;
case 0x3025: mapif->parse_PartyChangeMap(fd, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOW(fd,14), RFIFOB(fd,16), RFIFOW(fd,17)); break;
case 0x3026: mapif->parse_BreakParty(fd, RFIFOL(fd,2)); break;
- case 0x3027: mapif->parse_PartyMessage(fd, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12); break;
case 0x3029: mapif->parse_PartyLeaderChange(fd, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); break;
default:
return 0;
diff --git a/src/char/inter.c b/src/char/inter.c
index 64c840c16..264327289 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -53,9 +53,6 @@
#include <stdio.h>
#include <stdlib.h>
-#define WISDATA_TTL (60*1000) // Wis data Time To Live (60 seconds)
-#define WISDELLIST_MAX 256 // Number of elements in the list Delete data Wis
-
static struct inter_interface inter_s;
struct inter_interface *inter;
@@ -70,10 +67,10 @@ int party_share_level = 10;
// recv. packet list
static int inter_recv_packet_length[] = {
- -1,-1, 7,-1, -1,13,36, (2 + 4 + 4 + 4 + NAME_LENGTH), 0, 0, 0, 0, 0, 0, 0, 0, // 3000-
+ 0, 0, 0, 0, -1,13,36, (2 + 4 + 4 + 4 + NAME_LENGTH), 0, 0, 0, 0, 0, 0, 0, 0, // 3000-
6,-1, 6,-1, 0, 0, 0, 0, 10,-1, 0, 0, 0, 0, 0, 0, // 3010- Account Storage, Achievements [Smokexyz]
- -1,10,-1,14, 14,19, 6,-1, 14,14, 0, 0, 0, 0, 0, 0, // 3020- Party
- -1, 6,-1,-1, 55,23, 6,-1, 14,-1,-1,-1, 18,19,186,-1, // 3030-
+ -1,10,-1,14, 14,19, 6, 0, 14,14, 0, 0, 0, 0, 0, 0, // 3020- Party
+ -1, 6,-1,-1, 55,23, 6, 0, 14,-1,-1,-1, 18,19,186,-1, // 3030-
-1, 9, 0, 0, 10,10, 0, 0, 7, 6,10,10, 10,-1, 0, 0, // 3040- Clan System(3044-3045)
-1,-1,10,10, 0,-1,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3050- Auction System [Zephyrus], Item Bound [Mhalicot]
6,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin] [Inkfish]
@@ -82,9 +79,6 @@ static int inter_recv_packet_length[] = {
-1,10,-1, 6, 0, 20,10,20, -1,6 + NAME_LENGTH, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator], RoDEX packets
};
-static struct DBMap *wis_db = NULL; // int wis_id -> struct WisData*
-static int wis_dellist[WISDELLIST_MAX], wis_delnum;
-
#define MAX_JOB_NAMES 150
static char *msg_table[MAX_JOB_NAMES]; // messages 550 ~ 699 are job names
@@ -964,7 +958,6 @@ static int inter_init_sql(const char *file)
Sql_ShowDebug(inter->sql_handle);
}
- wis_db = idb_alloc(DB_OPT_RELEASE_DATA);
inter_guild->sql_init();
inter_storage->sql_init();
inter_party->sql_init();
@@ -985,8 +978,6 @@ static int inter_init_sql(const char *file)
// finalize
static void inter_final(void)
{
- wis_db->destroy(wis_db, NULL);
-
inter_guild->sql_final();
inter_storage->sql_final();
inter_party->sql_final();
@@ -1011,77 +1002,6 @@ static int inter_mapif_init(int fd)
//--------------------------------------------------------
-/**
- * Existence check of WISP data
- * @see DBApply
- */
-static int inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap)
-{
- int64 tick;
- struct WisData *wd = DB->data2ptr(data);
- nullpo_ret(wd);
- tick = va_arg(ap, int64);
-
- if (DIFF_TICK(tick, wd->tick) > WISDATA_TTL && wis_delnum < WISDELLIST_MAX)
- wis_dellist[wis_delnum++] = wd->id;
-
- return 0;
-}
-
-static int inter_check_ttl_wisdata(void)
-{
- int64 tick = timer->gettick();
- int i;
-
- do {
- wis_delnum = 0;
- wis_db->foreach(wis_db, inter->check_ttl_wisdata_sub, tick);
- for(i = 0; i < wis_delnum; i++) {
- struct WisData *wd = (struct WisData*)idb_get(wis_db, wis_dellist[i]);
- ShowWarning("inter: wis data id=%d time out : from %s to %s\n", wd->id, wd->src, wd->dst);
- // removed. not send information after a timeout. Just no answer for the player
- //mapif->wis_end(wd, 1); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- idb_remove(wis_db, wd->id);
- }
- } while(wis_delnum >= WISDELLIST_MAX);
-
- return 0;
-}
-
-static struct WisData *inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len)
-{
- static int wisid = 0;
- struct WisData *wd;
-
- CREATE(wd, struct WisData, 1);
-
- // Whether the failure of previous wisp/page transmission (timeout)
- inter->check_ttl_wisdata();
-
- wd->id = ++wisid;
- wd->fd = fd;
- wd->len = msg_len;
- memcpy(wd->src, src, NAME_LENGTH);
- memcpy(wd->dst, dst, NAME_LENGTH);
- memcpy(wd->msg, msg, wd->len);
- wd->tick = timer->gettick();
- idb_put(wis_db, wd->id, wd);
-
- return wd;
-}
-
-static struct WisData *inter_get_wisdata(int id)
-{
- return idb_get(wis_db, id);
-}
-
-static void inter_remove_wisdata(int id)
-{
- idb_remove(wis_db, id);
-}
-
-//--------------------------------------------------------
-
/// Returns the length of the next complete packet to process,
/// or 0 if no complete packet exists in the queue.
///
@@ -1115,10 +1035,6 @@ static int inter_parse_frommap(int fd)
return 2;
switch(cmd) {
- case 0x3000: mapif->parse_broadcast(fd); break;
- case 0x3001: mapif->parse_WisRequest(fd); break;
- case 0x3002: mapif->parse_WisReply(fd); break;
- case 0x3003: mapif->parse_WisToGM(fd); break;
case 0x3004: mapif->parse_Registry(fd); break;
case 0x3005: mapif->parse_RegistryRequest(fd); break;
case 0x3006: mapif->parse_NameChangeRequest(fd); break;
@@ -1167,8 +1083,6 @@ void inter_defaults(void)
inter->log = inter_log;
inter->init_sql = inter_init_sql;
inter->mapif_init = inter_mapif_init;
- inter->check_ttl_wisdata_sub = inter_check_ttl_wisdata_sub;
- inter->check_ttl_wisdata = inter_check_ttl_wisdata;
inter->check_length = inter_check_length;
inter->parse_frommap = inter_parse_frommap;
inter->final = inter_final;
@@ -1176,7 +1090,4 @@ void inter_defaults(void)
inter->config_read_connection = inter_config_read_connection;
inter->accinfo = inter_accinfo;
inter->accinfo2 = inter_accinfo2;
- inter->add_wisdata = inter_add_wisdata;
- inter->get_wisdata = inter_get_wisdata;
- inter->remove_wisdata = inter_remove_wisdata;
}
diff --git a/src/char/inter.h b/src/char/inter.h
index 94ee3ab60..f97c619c0 100644
--- a/src/char/inter.h
+++ b/src/char/inter.h
@@ -30,12 +30,6 @@
struct Sql; // common/sql.h
struct config_t; // common/conf.h
-struct WisData {
- int id, fd, count, len;
- int64 tick;
- unsigned char src[24], dst[24], msg[512];
-};
-
/**
* inter interface
**/
@@ -54,8 +48,6 @@ struct inter_interface {
int (*log) (char* fmt, ...);
int (*init_sql) (const char *file);
int (*mapif_init) (int fd);
- int (*check_ttl_wisdata_sub) (union DBKey key, struct DBData *data, va_list ap);
- int (*check_ttl_wisdata) (void);
int (*check_length) (int fd, int length);
int (*parse_frommap) (int fd);
void (*final) (void);
@@ -66,9 +58,6 @@ struct inter_interface {
void (*accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass,
const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate,
int group_id, int logincount, int state);
- struct WisData *(*add_wisdata) (int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
- struct WisData *(*get_wisdata) (int id);
- void (*remove_wisdata) (int id);
};
#ifdef HERCULES_CORE
diff --git a/src/char/mapif.c b/src/char/mapif.c
index 8f213ecb5..29be4eaa2 100644
--- a/src/char/mapif.c
+++ b/src/char/mapif.c
@@ -596,22 +596,6 @@ static int mapif_guild_broken(int guild_id, int flag)
return 0;
}
-// Send guild message
-static int mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- if (len > 500)
- len = 500;
- WBUFW(buf, 0) = 0x3837;
- WBUFW(buf, 2) = len + 12;
- WBUFL(buf, 4) = guild_id;
- WBUFL(buf, 8) = account_id;
- memcpy(WBUFP(buf, 12), mes, len);
- mapif->sendallwos(sfd, buf, len + 12);
- return 0;
-}
-
// Send basic info
static int mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len)
{
@@ -810,12 +794,6 @@ static int mapif_parse_BreakGuild(int fd, int guild_id)
return 0;
}
-// Forward Guild message to others map servers
-static int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len)
-{
- return mapif->guild_message(guild_id,account_id,mes,len, fd);
-}
-
/**
* Changes basic guild information
* The types are available in mmo.h::guild_basic_info
@@ -1319,20 +1297,6 @@ static int mapif_party_broken(int party_id, int flag)
return 0;
}
-//Remarks in the party
-static int mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd)
-{
- unsigned char buf[512];
- nullpo_ret(mes);
- WBUFW(buf, 0) = 0x3827;
- WBUFW(buf, 2) = len + 12;
- WBUFL(buf, 4) = party_id;
- WBUFL(buf, 8) = account_id;
- memcpy(WBUFP(buf, 12), mes, len);
- mapif->sendallwos(sfd, buf, len + 12);
- return 0;
-}
-
// Create Party
static int mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader)
{
@@ -1408,12 +1372,6 @@ static int mapif_parse_BreakParty(int fd, int party_id)
return 0;
}
-//Party sending the message
-static int mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len)
-{
- return mapif->party_message(party_id, account_id, mes, len, fd);
-}
-
static int mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id)
{
if (!inter_party->change_leader(party_id, account_id, char_id))
@@ -2034,67 +1992,6 @@ static void mapif_parse_accinfo(int fd)
inter->accinfo(u_fd, aid, castergroup, query, fd);
}
-// broadcast sending
-static int mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd)
-{
- unsigned char *buf = (unsigned char*)aMalloc((len)*sizeof(unsigned char));
-
- nullpo_ret(mes);
- Assert_ret(len >= 16);
- WBUFW(buf, 0) = 0x3800;
- WBUFW(buf, 2) = len;
- WBUFL(buf, 4) = fontColor;
- WBUFW(buf, 8) = fontType;
- WBUFW(buf, 10) = fontSize;
- WBUFW(buf, 12) = fontAlign;
- WBUFW(buf, 14) = fontY;
- memcpy(WBUFP(buf, 16), mes, len - 16);
- mapif->sendallwos(sfd, buf, len);
-
- aFree(buf);
- return 0;
-}
-
-// Wis sending
-static int mapif_wis_message(struct WisData *wd)
-{
- unsigned char buf[2048];
- nullpo_ret(wd);
- //if (wd->len > 2047-56) wd->len = 2047-56; //Force it to fit to avoid crashes. [Skotlex]
- if (wd->len < 0)
- wd->len = 0;
- if (wd->len >= (int)sizeof(wd->msg) - 1)
- wd->len = (int)sizeof(wd->msg) - 1;
-
- WBUFW(buf, 0) = 0x3801;
- WBUFW(buf, 2) = 56 + wd->len;
- WBUFL(buf, 4) = wd->id;
- memcpy(WBUFP(buf, 8), wd->src, NAME_LENGTH);
- memcpy(WBUFP(buf, 32), wd->dst, NAME_LENGTH);
- memcpy(WBUFP(buf, 56), wd->msg, wd->len);
- wd->count = mapif->sendall(buf, WBUFW(buf, 2));
-
- return 0;
-}
-
-static void mapif_wis_response(int fd, const unsigned char *src, int flag)
-{
- unsigned char buf[27];
- nullpo_retv(src);
- WBUFW(buf, 0) = 0x3802;
- memcpy(WBUFP(buf, 2), src, 24);
- WBUFB(buf, 26) = flag;
- mapif->send(fd, buf, 27);
-}
-
-// Wis sending result
-static int mapif_wis_end(struct WisData *wd, int flag)
-{
- nullpo_ret(wd);
- mapif->wis_response(wd->fd, wd->src, flag);
- return 0;
-}
-
#if 0
// Account registry transfer to map-server
static void mapif_account_reg(int fd, unsigned char *src)
@@ -2126,89 +2023,6 @@ static int mapif_disconnectplayer(int fd, int account_id, int char_id, int reaso
return 0;
}
-// broadcast sending
-static int mapif_parse_broadcast(int fd)
-{
- mapif->broadcast(RFIFOP(fd, 16), RFIFOW(fd, 2), RFIFOL(fd, 4), RFIFOW(fd, 8), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), fd);
- return 0;
-}
-
-// Wisp/page request to send
-static int mapif_parse_WisRequest(int fd)
-{
- struct WisData* wd;
- char name[NAME_LENGTH];
- char *data;
- size_t len;
-
- if (fd <= 0) // check if we have a valid fd
- return 0;
-
- if (RFIFOW(fd, 2) - 52 >= sizeof(wd->msg)) {
- ShowWarning("inter: Wis message size too long.\n");
- return 0;
- } else if (RFIFOW(fd, 2) - 52 <= 0) { // normally, impossible, but who knows...
- ShowError("inter: Wis message doesn't exist.\n");
- return 0;
- }
-
- safestrncpy(name, RFIFOP(fd, 28), NAME_LENGTH); //Received name may be too large and not contain \0! [Skotlex]
-
- // search if character exists before to ask all map-servers
- if (!chr->name_exists(name, NULL)) {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- } else {
- // Character exists. So, ask all map-servers
-
- // to be sure of the correct name, rewrite it
- SQL->GetData(inter->sql_handle, 0, &data, &len);
- memset(name, 0, NAME_LENGTH);
- memcpy(name, data, min(len, NAME_LENGTH));
- // if source is destination, don't ask other servers.
- if (strncmp(RFIFOP(fd, 4), name, NAME_LENGTH) == 0) {
- mapif->wis_response(fd, RFIFOP(fd, 4), 1);
- } else {
- wd = inter->add_wisdata(fd, RFIFOP(fd, 4), RFIFOP(fd, 28), RFIFOP(fd, 52), RFIFOW(fd, 2) - 52);
- mapif->wis_message(wd);
- }
- }
-
- SQL->FreeResult(inter->sql_handle);
- return 0;
-}
-
-// Wisp/page transmission result
-static int mapif_parse_WisReply(int fd)
-{
- int id, flag;
- struct WisData *wd;
-
- id = RFIFOL(fd,2);
- flag = RFIFOB(fd,6);
- wd = inter->get_wisdata(id);
- if (wd == NULL)
- return 0; // This wisp was probably suppress before, because it was timeout of because of target was found on another map-server
-
- if ((--wd->count) <= 0 || flag != 1) {
- mapif->wis_end(wd, flag); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- inter->remove_wisdata(id);
- }
-
- return 0;
-}
-
-// Received wisp message from map-server for ALL gm (just copy the message and resends it to ALL map-servers)
-static int mapif_parse_WisToGM(int fd)
-{
- unsigned char buf[2048]; // 0x3003/0x3803 <packet_len>.w <wispname>.24B <min_gm_level>.w <message>.?B
-
- memcpy(WBUFP(buf,0), RFIFOP(fd,0), RFIFOW(fd,2)); // Message contains the NUL terminator (see intif_wis_message_to_gm())
- WBUFW(buf, 0) = 0x3803;
- mapif->sendall(buf, RFIFOW(fd,2));
-
- return 0;
-}
-
// Save account_reg into sql (type=2)
static int mapif_parse_Registry(int fd)
{
@@ -2532,7 +2346,6 @@ void mapif_defaults(void)
mapif->guild_withdraw = mapif_guild_withdraw;
mapif->guild_memberinfoshort = mapif_guild_memberinfoshort;
mapif->guild_broken = mapif_guild_broken;
- mapif->guild_message = mapif_guild_message;
mapif->guild_basicinfochanged = mapif_guild_basicinfochanged;
mapif->guild_memberinfochanged = mapif_guild_memberinfochanged;
mapif->guild_skillupack = mapif_guild_skillupack;
@@ -2548,7 +2361,6 @@ void mapif_defaults(void)
mapif->parse_GuildLeave = mapif_parse_GuildLeave;
mapif->parse_GuildChangeMemberInfoShort = mapif_parse_GuildChangeMemberInfoShort;
mapif->parse_BreakGuild = mapif_parse_BreakGuild;
- mapif->parse_GuildMessage = mapif_parse_GuildMessage;
mapif->parse_GuildBasicInfoChange = mapif_parse_GuildBasicInfoChange;
mapif->parse_GuildMemberInfoChange = mapif_parse_GuildMemberInfoChange;
mapif->parse_GuildPosition = mapif_parse_GuildPosition;
@@ -2596,7 +2408,6 @@ void mapif_defaults(void)
mapif->party_withdraw = mapif_party_withdraw;
mapif->party_membermoved = mapif_party_membermoved;
mapif->party_broken = mapif_party_broken;
- mapif->party_message = mapif_party_message;
mapif->parse_CreateParty = mapif_parse_CreateParty;
mapif->parse_PartyInfo = mapif_parse_PartyInfo;
mapif->parse_PartyAddMember = mapif_parse_PartyAddMember;
@@ -2604,7 +2415,6 @@ void mapif_defaults(void)
mapif->parse_PartyLeave = mapif_parse_PartyLeave;
mapif->parse_PartyChangeMap = mapif_parse_PartyChangeMap;
mapif->parse_BreakParty = mapif_parse_BreakParty;
- mapif->parse_PartyMessage = mapif_parse_PartyMessage;
mapif->parse_PartyLeaderChange = mapif_parse_PartyLeaderChange;
mapif->pet_created = mapif_pet_created;
mapif->pet_info = mapif_pet_info;
@@ -2644,16 +2454,8 @@ void mapif_defaults(void)
mapif->itembound_ack = mapif_itembound_ack;
mapif->parse_ItemBoundRetrieve = mapif_parse_ItemBoundRetrieve;
mapif->parse_accinfo = mapif_parse_accinfo;
- mapif->broadcast = mapif_broadcast;
- mapif->wis_message = mapif_wis_message;
- mapif->wis_response = mapif_wis_response;
- mapif->wis_end = mapif_wis_end;
mapif->account_reg_reply = mapif_account_reg_reply;
mapif->disconnectplayer = mapif_disconnectplayer;
- mapif->parse_broadcast = mapif_parse_broadcast;
- mapif->parse_WisRequest = mapif_parse_WisRequest;
- mapif->parse_WisReply = mapif_parse_WisReply;
- mapif->parse_WisToGM = mapif_parse_WisToGM;
mapif->parse_Registry = mapif_parse_Registry;
mapif->parse_RegistryRequest = mapif_parse_RegistryRequest;
mapif->namechange_ack = mapif_namechange_ack;
diff --git a/src/char/mapif.h b/src/char/mapif.h
index 71a41f94c..f5b54b6b7 100644
--- a/src/char/mapif.h
+++ b/src/char/mapif.h
@@ -23,7 +23,6 @@
#include "common/hercules.h"
#include "common/mmo.h"
-struct WisData;
struct rodex_item;
/**
@@ -71,7 +70,6 @@ struct mapif_interface {
int (*guild_withdraw) (int guild_id, int account_id, int char_id, int flag, const char *name, const char *mes);
int (*guild_memberinfoshort) (struct guild *g, int idx);
int (*guild_broken) (int guild_id, int flag);
- int (*guild_message) (int guild_id, int account_id, const char *mes, int len, int sfd);
int (*guild_basicinfochanged) (int guild_id, int type, const void *data, int len);
int (*guild_memberinfochanged) (int guild_id, int account_id, int char_id, int type, const void *data, int len);
int (*guild_skillupack) (int guild_id, uint16 skill_id, int account_id);
@@ -87,7 +85,6 @@ struct mapif_interface {
int (*parse_GuildLeave) (int fd, int guild_id, int account_id, int char_id, int flag, const char *mes);
int (*parse_GuildChangeMemberInfoShort) (int fd, int guild_id, int account_id, int char_id, int online, int lv, int class);
int (*parse_BreakGuild) (int fd, int guild_id);
- int (*parse_GuildMessage) (int fd, int guild_id, int account_id, const char *mes, int len);
int (*parse_GuildBasicInfoChange) (int fd, int guild_id, int type, const void *data, int len);
int (*parse_GuildMemberInfoChange) (int fd, int guild_id, int account_id, int char_id, int type, const char *data, int len);
int (*parse_GuildPosition) (int fd, int guild_id, int idx, const struct guild_position *p);
@@ -135,7 +132,6 @@ struct mapif_interface {
int (*party_withdraw) (int party_id,int account_id, int char_id);
int (*party_membermoved) (struct party *p, int idx);
int (*party_broken) (int party_id, int flag);
- int (*party_message) (int party_id, int account_id, const char *mes, int len, int sfd);
int (*parse_CreateParty) (int fd, const char *name, int item, int item2, const struct party_member *leader);
void (*parse_PartyInfo) (int fd, int party_id, int char_id);
int (*parse_PartyAddMember) (int fd, int party_id, const struct party_member *member);
@@ -143,7 +139,6 @@ struct mapif_interface {
int (*parse_PartyLeave) (int fd, int party_id, int account_id, int char_id);
int (*parse_PartyChangeMap) (int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
int (*parse_BreakParty) (int fd, int party_id);
- int (*parse_PartyMessage) (int fd, int party_id, int account_id, const char *mes, int len);
int (*parse_PartyLeaderChange) (int fd, int party_id, int account_id, int char_id);
int (*pet_created) (int fd, int account_id, struct s_pet *p);
int (*pet_info) (int fd, int account_id, struct s_pet *p);
@@ -182,16 +177,8 @@ struct mapif_interface {
int (*itembound_ack) (int fd, int aid, int guild_id);
void (*parse_ItemBoundRetrieve) (int fd);
void (*parse_accinfo) (int fd);
- int (*broadcast) (const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
- int (*wis_message) (struct WisData *wd);
- void (*wis_response) (int fd, const unsigned char *src, int flag);
- int (*wis_end) (struct WisData *wd, int flag);
int (*account_reg_reply) (int fd,int account_id,int char_id, int type);
int (*disconnectplayer) (int fd, int account_id, int char_id, int reason);
- int (*parse_broadcast) (int fd);
- int (*parse_WisRequest) (int fd);
- int (*parse_WisReply) (int fd);
- int (*parse_WisToGM) (int fd);
int (*parse_Registry) (int fd);
int (*parse_RegistryRequest) (int fd);
void (*namechange_ack) (int fd, int account_id, int char_id, int type, int flag, const char *name);
diff --git a/src/common/HPMDataCheck.h b/src/common/HPMDataCheck.h
index ec3479f4d..fd34a1d82 100644
--- a/src/common/HPMDataCheck.h
+++ b/src/common/HPMDataCheck.h
@@ -52,7 +52,6 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
#define CHAR_GEOIP_H
#endif // CHAR_GEOIP_H
#ifdef CHAR_INTER_H
- { "WisData", sizeof(struct WisData), SERVER_TYPE_CHAR },
{ "inter_interface", sizeof(struct inter_interface), SERVER_TYPE_CHAR },
#else
#define CHAR_INTER_H
@@ -666,6 +665,8 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_ACK_LEAVE_GUILD1", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD1), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_LEAVE_GUILD2", sizeof(struct PACKET_ZC_ACK_LEAVE_GUILD2), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_OPEN_WRITE_MAIL", sizeof(struct PACKET_ZC_ACK_OPEN_WRITE_MAIL), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_RANKING_name", sizeof(struct PACKET_ZC_ACK_RANKING_name), SERVER_TYPE_MAP },
+ { "PACKET_ZC_ACK_RANKING_points", sizeof(struct PACKET_ZC_ACK_RANKING_points), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_RANKING_sub", sizeof(struct PACKET_ZC_ACK_RANKING_sub), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_REMOVE_ITEM_MAIL", sizeof(struct PACKET_ZC_ACK_REMOVE_ITEM_MAIL), SERVER_TYPE_MAP },
{ "PACKET_ZC_ACK_REQMAKINGITEM", sizeof(struct PACKET_ZC_ACK_REQMAKINGITEM), SERVER_TYPE_MAP },
@@ -742,6 +743,7 @@ HPExport const struct s_HPMDataCheck HPMDataCheck[] = {
{ "PACKET_ZC_SPRITE_CHANGE", sizeof(struct PACKET_ZC_SPRITE_CHANGE), SERVER_TYPE_MAP },
{ "PACKET_ZC_STATUS_CHANGE_ACK", sizeof(struct PACKET_ZC_STATUS_CHANGE_ACK), SERVER_TYPE_MAP },
{ "PACKET_ZC_STYLE_CHANGE_RES", sizeof(struct PACKET_ZC_STYLE_CHANGE_RES), SERVER_TYPE_MAP },
+ { "PACKET_ZC_TALKBOX_CHATCONTENTS", sizeof(struct PACKET_ZC_TALKBOX_CHATCONTENTS), SERVER_TYPE_MAP },
{ "PACKET_ZC_UI_ACTION", sizeof(struct PACKET_ZC_UI_ACTION), SERVER_TYPE_MAP },
{ "PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE", sizeof(struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE), SERVER_TYPE_MAP },
{ "PACKET_ZC_USE_ITEM_ACK", sizeof(struct PACKET_ZC_USE_ITEM_ACK), SERVER_TYPE_MAP },
diff --git a/src/common/packets/packets2019_len_main.h b/src/common/packets/packets2019_len_main.h
index 949aae804..424abe14f 100644
--- a/src/common/packets/packets2019_len_main.h
+++ b/src/common/packets/packets2019_len_main.h
@@ -103,7 +103,11 @@ packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
// Packet: 0x007e
+#if PACKETVER >= 20190904
+packetLen(0x007e, 46) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20190109
packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#endif
// Packet: 0x007f
packetLen(0x007f, 6) // ZC_NOTIFY_TIME
@@ -916,7 +920,11 @@ packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
// Packet: 0x0191
+#if PACKETVER >= 20190904
+packetLen(0x0191, 27) // ZC_TALKBOX_CHATCONTENTS
+#elif PACKETVER >= 20190109
packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+#endif
// Packet: 0x0192
packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
@@ -1966,7 +1974,11 @@ packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
// Packet: 0x0367
+#if PACKETVER >= 20190904
+packetLen(0x0367, 31) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20190109
packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
// Packet: 0x0368
packetLen(0x0368, 6) // CZ_REQNAME2
@@ -4710,5 +4722,45 @@ packetLen(0x0b54, 8)
packetLen(0x0b55, -1)
#endif
+// Packet: 0x0b56
+#if PACKETVER >= 20190904
+packetLen(0x0b56, -1)
+#endif
+
+// Packet: 0x0b57
+#if PACKETVER >= 20190904
+packetLen(0x0b57, -1)
+#endif
+
+// Packet: 0x0b58
+#if PACKETVER >= 20190904
+packetLen(0x0b58, 2)
+#endif
+
+// Packet: 0x0b59
+#if PACKETVER >= 20190918
+packetLen(0x0b59, 2)
+#endif
+
+// Packet: 0x0b5a
+#if PACKETVER >= 20190918
+packetLen(0x0b5a, 4)
+#endif
+
+// Packet: 0x0b5b
+#if PACKETVER >= 20190918
+packetLen(0x0b5b, -1)
+#endif
+
+// Packet: 0x0b5c
+#if PACKETVER >= 20190918
+packetLen(0x0b5c, 10)
+#endif
+
+// Packet: 0x0b5d
+#if PACKETVER >= 20190918
+packetLen(0x0b5d, 2)
+#endif
+
#endif /* COMMON_PACKETS2019_LEN_MAIN_H */
diff --git a/src/common/packets/packets2019_len_re.h b/src/common/packets/packets2019_len_re.h
index c31a10191..32c14775d 100644
--- a/src/common/packets/packets2019_len_re.h
+++ b/src/common/packets/packets2019_len_re.h
@@ -103,7 +103,11 @@ packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
// Packet: 0x007e
+#if PACKETVER >= 20190904
+packetLen(0x007e, 46) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20190109
packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#endif
// Packet: 0x007f
packetLen(0x007f, 6) // ZC_NOTIFY_TIME
@@ -916,7 +920,11 @@ packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
// Packet: 0x0191
+#if PACKETVER >= 20190904
+packetLen(0x0191, 27) // ZC_TALKBOX_CHATCONTENTS
+#elif PACKETVER >= 20190109
packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+#endif
// Packet: 0x0192
packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
@@ -1972,7 +1980,11 @@ packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
// Packet: 0x0367
+#if PACKETVER >= 20190904
+packetLen(0x0367, 31) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20190109
packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
// Packet: 0x0368
packetLen(0x0368, 6) // CZ_REQNAME2
@@ -4722,5 +4734,45 @@ packetLen(0x0b54, 8)
packetLen(0x0b55, -1)
#endif
+// Packet: 0x0b56
+#if PACKETVER >= 20190904
+packetLen(0x0b56, -1)
+#endif
+
+// Packet: 0x0b57
+#if PACKETVER >= 20190904
+packetLen(0x0b57, -1)
+#endif
+
+// Packet: 0x0b58
+#if PACKETVER >= 20190904
+packetLen(0x0b58, 2)
+#endif
+
+// Packet: 0x0b59
+#if PACKETVER >= 20190918
+packetLen(0x0b59, 2)
+#endif
+
+// Packet: 0x0b5a
+#if PACKETVER >= 20190918
+packetLen(0x0b5a, 4)
+#endif
+
+// Packet: 0x0b5b
+#if PACKETVER >= 20190918
+packetLen(0x0b5b, -1)
+#endif
+
+// Packet: 0x0b5c
+#if PACKETVER >= 20190918
+packetLen(0x0b5c, 10)
+#endif
+
+// Packet: 0x0b5d
+#if PACKETVER >= 20190918
+packetLen(0x0b5d, 2)
+#endif
+
#endif /* COMMON_PACKETS2019_LEN_RE_H */
diff --git a/src/common/packets/packets2019_len_zero.h b/src/common/packets/packets2019_len_zero.h
index abe81796c..9cdc9db05 100644
--- a/src/common/packets/packets2019_len_zero.h
+++ b/src/common/packets/packets2019_len_zero.h
@@ -103,7 +103,11 @@ packetLen(0x007c, 44) // ZC_NOTIFY_STANDENTRY_NPC
packetLen(0x007d, 2) // CZ_NOTIFY_ACTORINIT
// Packet: 0x007e
+#if PACKETVER >= 20190828
+packetLen(0x007e, 46) // CZ_REQUEST_TIME
+#elif PACKETVER >= 20190116
packetLen(0x007e, 105) // CZ_REQUEST_TIME
+#endif
// Packet: 0x007f
packetLen(0x007f, 6) // ZC_NOTIFY_TIME
@@ -916,7 +920,11 @@ packetLen(0x018f, 8) // ZC_ACK_REQMAKINGITEM
packetLen(0x0190, 23) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
// Packet: 0x0191
+#if PACKETVER >= 20190828
+packetLen(0x0191, 27) // ZC_TALKBOX_CHATCONTENTS
+#elif PACKETVER >= 20190116
packetLen(0x0191, 86) // ZC_TALKBOX_CHATCONTENTS
+#endif
// Packet: 0x0192
packetLen(0x0192, 24) // ZC_UPDATE_MAPINFO
@@ -1966,7 +1974,11 @@ packetLen(0x0365, 8) // CZ_MOVE_ITEM_FROM_STORE_TO_BODY2
packetLen(0x0366, 10) // CZ_USE_SKILL_TOGROUND2
// Packet: 0x0367
+#if PACKETVER >= 20190828
+packetLen(0x0367, 31) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#elif PACKETVER >= 20190116
packetLen(0x0367, 90) // CZ_USE_SKILL_TOGROUND_WITHTALKBOX2
+#endif
// Packet: 0x0368
packetLen(0x0368, 6) // CZ_REQNAME2
@@ -4697,5 +4709,50 @@ packetLen(0x0b53, 52)
packetLen(0x0b54, 8)
#endif
+// Packet: 0x0b55
+#if PACKETVER >= 20190828
+packetLen(0x0b55, -1)
+#endif
+
+// Packet: 0x0b56
+#if PACKETVER >= 20190828
+packetLen(0x0b56, -1)
+#endif
+
+// Packet: 0x0b57
+#if PACKETVER >= 20190828
+packetLen(0x0b57, -1)
+#endif
+
+// Packet: 0x0b58
+#if PACKETVER >= 20190828
+packetLen(0x0b58, 2)
+#endif
+
+// Packet: 0x0b59
+#if PACKETVER >= 20190918
+packetLen(0x0b59, 2)
+#endif
+
+// Packet: 0x0b5a
+#if PACKETVER >= 20190918
+packetLen(0x0b5a, 4)
+#endif
+
+// Packet: 0x0b5b
+#if PACKETVER >= 20190918
+packetLen(0x0b5b, -1)
+#endif
+
+// Packet: 0x0b5c
+#if PACKETVER >= 20190918
+packetLen(0x0b5c, 10)
+#endif
+
+// Packet: 0x0b5d
+#if PACKETVER >= 20190918
+packetLen(0x0b5d, 2)
+#endif
+
#endif /* COMMON_PACKETS2019_LEN_ZERO_H */
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 2fac5b4a4..b472694c4 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -1107,8 +1107,10 @@ ACMD(kami)
sscanf(message, "%199[^\n]", atcmd_output);
if (stristr(info->command, "l") != NULL)
clif->broadcast(&sd->bl, atcmd_output, (int)strlen(atcmd_output) + 1, BC_DEFAULT, ALL_SAMEMAP);
+ else if (info->command[4] == 'b' || info->command[4] == 'B')
+ clif->broadcast(NULL, atcmd_output, (int)strlen(atcmd_output) + 1, BC_BLUE, ALL_CLIENT);
else
- intif->broadcast(atcmd_output, (int)strlen(atcmd_output) + 1, (*(info->command + 4) == 'b' || *(info->command + 4) == 'B') ? BC_BLUE : BC_YELLOW);
+ clif->broadcast(NULL, atcmd_output, (int)strlen(atcmd_output) + 1, BC_YELLOW, ALL_CLIENT);
} else {
if(!*message || (sscanf(message, "%10u %199[^\n]", &color, atcmd_output) < 2)) {
clif->message(fd, msg_fd(fd,981)); // Please enter color and message (usage: @kamic <color> <message>).
@@ -1119,7 +1121,7 @@ ACMD(kami)
clif->message(fd, msg_fd(fd,982)); // Invalid color.
return false;
}
- intif->broadcast2(atcmd_output, (int)strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0);
+ clif->broadcast2(NULL, atcmd_output, (int)strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0, ALL_CLIENT);
}
return true;
}
@@ -5125,7 +5127,7 @@ ACMD(broadcast)
}
safesnprintf(atcmd_output, sizeof(atcmd_output), "%s: %s", sd->status.name, message);
- intif->broadcast(atcmd_output, (int)strlen(atcmd_output) + 1, BC_DEFAULT);
+ clif->broadcast(NULL, atcmd_output, (int)strlen(atcmd_output) + 1, BC_DEFAULT, ALL_CLIENT);
return true;
}
@@ -6748,6 +6750,18 @@ ACMD(changesex)
return true;
}
+ACMD(changecharsex)
+{
+ int i;
+
+ pc->resetskill(sd, PCRESETSKILL_CHSEX);
+ // to avoid any problem with equipment and invalid sex, equipment is unequipped.
+ for (i=0; i<EQI_MAX; i++)
+ if (sd->equip_index[i] >= 0) pc->unequipitem(sd, sd->equip_index[i], PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE);
+ chrif->changesex(sd, false);
+ return true;
+}
+
/*================================================
* @mute - Mutes a player for a set amount of time
*------------------------------------------------*/
@@ -8263,7 +8277,7 @@ ACMD(request)
}
safesnprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,278), message); // (@request): %s
- intif->wis_message_to_gm(sd->status.name, PC_PERM_RECEIVE_REQUESTS, atcmd_output);
+ pc->wis_message_to_gm(sd->status.name, PC_PERM_RECEIVE_REQUESTS, atcmd_output);
clif_disp_onlyself(sd, atcmd_output);
clif->message(sd->fd,msg_fd(fd,279)); // @request sent.
return true;
@@ -10113,6 +10127,7 @@ static void atcommand_basecommands(void)
ACMD_DEF(clearweather),
ACMD_DEF(uptime),
ACMD_DEF(changesex),
+ ACMD_DEF(changecharsex),
ACMD_DEF(mute),
ACMD_DEF(refresh),
ACMD_DEF(refreshall),
diff --git a/src/map/battle.h b/src/map/battle.h
index 779e360bf..4400d37d1 100644
--- a/src/map/battle.h
+++ b/src/map/battle.h
@@ -103,8 +103,8 @@ enum e_battle_check_target { //New definitions [Skotlex]
enum battle_dmg_type {
BDT_NORMAL = 0, // Normal attack
//BDT_PICKUP = 1, // Pick up item
- //BDT_SITDOWN = 2, // Sit down
- //BDT_STANDUP = 3, // Stand up
+ BDT_SITDOWN = 2, // Sit down
+ BDT_STANDUP = 3, // Stand up
BDT_ENDURE = 4, // Damage (endure)
BDT_SPLASH = 5, // Splash
BDT_SKILL = 6, // Skill
diff --git a/src/map/clif.c b/src/map/clif.c
index 421274b0f..c7f81a471 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -4789,9 +4789,9 @@ static void clif_getareachar_unit(struct map_session_data *sd, struct block_list
//Modifies the type of damage according to status changes [Skotlex]
//Aegis data specifies that: 4 endure against single hit sources, 9 against multi-hit.
-static inline int clif_calc_delay(int type, int div, int damage, int delay)
+static inline enum battle_dmg_type clif_calc_delay(enum battle_dmg_type type, int div, int damage, int delay)
{
- return ( delay == 0 && damage > 0 ) ? ( div > 1 ? 9 : 4 ) : type;
+ return ( delay == 0 && damage > 0 ) ? ( div > 1 ? BDT_MULTIENDURE : BDT_ENDURE ) : type;
}
/*==========================================
@@ -4822,7 +4822,7 @@ static int clif_calc_walkdelay(struct block_list *bl, int delay, int type, int d
/// 08c8 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <IsSPDamage>.B <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2)
/// type: @see enum battle_dmg_type
/// for BDT_NORMAL: [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ]
-static int clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type, int64 in_damage2)
+static int clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type, int64 in_damage2)
{
struct packet_damage p;
struct status_change *sc;
@@ -5268,7 +5268,7 @@ static void clif_playerSkillToPacket(struct map_session_data *sd, struct SKILLDA
skillData->sp = 0;
skillData->range2 = 0;
}
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
if (newSkill)
skillData->level2 = 0;
else
@@ -5419,7 +5419,7 @@ static void clif_skillinfo(struct map_session_data *sd, int skill_id, int inf)
p->sp = 0;
p->range2 = 0;
}
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
p->level2 = skill_lv;
#endif
if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT)
@@ -5573,7 +5573,7 @@ static void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, un
/// Skill attack effect and damage.
/// 0114 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.W <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL)
/// 01de <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <damage>.L <level>.W <div>.W <type>.B (ZC_NOTIFY_SKILL2)
-static int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+static int clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 in_damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type)
{
unsigned char buf[64];
struct status_change *sc;
@@ -5675,7 +5675,7 @@ static int clif_skill_damage(struct block_list *src, struct block_list *dst, int
/// Ground skill attack effect and damage (ZC_NOTIFY_SKILL_POSITION).
/// 0115 <skill id>.W <src id>.L <dst id>.L <tick>.L <src delay>.L <dst delay>.L <x>.W <y>.W <damage>.W <level>.W <div>.W <type>.B
#if 0
-static int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, int type)
+static int clif_skill_damage2(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type)
{
unsigned char buf[64];
struct status_change *sc;
@@ -8689,14 +8689,14 @@ static void clif_emotion(struct block_list *bl, int type)
/// 0191 <id>.L <contents>.80B
static void clif_talkiebox(struct block_list *bl, const char *talkie)
{
- unsigned char buf[MESSAGE_SIZE+6];
nullpo_retv(bl);
nullpo_retv(talkie);
+ struct PACKET_ZC_TALKBOX_CHATCONTENTS p;
- WBUFW(buf,0) = 0x191;
- WBUFL(buf,2) = bl->id;
- safestrncpy(WBUFP(buf,6),talkie,MESSAGE_SIZE);
- clif->send(buf,packet_len(0x191),bl,AREA);
+ p.PacketType = HEADER_ZC_TALKBOX_CHATCONTENTS;
+ p.aid = bl->id;
+ safestrncpy(&p.message[0], talkie, TALKBOX_MESSAGE_SIZE);
+ clif->send(&p, sizeof(struct PACKET_ZC_TALKBOX_CHATCONTENTS), bl, AREA);
}
/// Displays wedding effect centered on an object (ZC_CONGRATULATION).
@@ -9298,9 +9298,6 @@ static void clif_pcname_ack(int fd, struct block_list *bl)
packet.gid = bl->id;
const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl);
- const struct party_data *p = NULL;
- const struct guild *g = NULL;
- int ps = -1;
if (ssd->fakename[0] != '\0' && ssd->disguise != -1) {
packet.packet_id = reqName;
@@ -9326,9 +9323,12 @@ static void clif_pcname_ack(int fd, struct block_list *bl)
#endif
memcpy(packet.name, ssd->status.name, NAME_LENGTH);
+ const struct party_data *p = NULL;
+ int ps = -1;
if (ssd->status.party_id != 0) {
p = party->search(ssd->status.party_id);
}
+ const struct guild *g = NULL;
if (ssd->status.guild_id != 0) {
if ((g = ssd->guild) != NULL) {
int i;
@@ -9351,6 +9351,12 @@ static void clif_pcname_ack(int fd, struct block_list *bl)
memcpy(packet.guild_name, g->name,NAME_LENGTH);
memcpy(packet.position_name, g->position[ps].name, NAME_LENGTH);
}
+ else if (ssd->status.clan_id != 0) {
+ struct clan *c = clan->search(ssd->status.clan_id);
+ if (c != 0) {
+ memcpy(packet.position_name, c->name, NAME_LENGTH);
+ }
+ }
}
clif->send_selforarea(fd, bl, &packet, len);
@@ -11096,13 +11102,13 @@ static void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd)
sc = status->get_sc(bl);
if (sc && sc->option&OPTION_INVISIBLE && !clif->isdisguised(bl) &&
bl->type != BL_NPC && //Skip hidden NPCs which can be seen using Maya Purple
- pc_get_group_level(sd) < battle_config.hack_info_GM_level
+ !pc_has_permission(sd, PC_PERM_RECEIVE_HACK_INFO)
) {
char gm_msg[256];
sprintf(gm_msg, "Hack on NameRequest: character '%s' (account: %d) requested the name of an invisible target (id: %d).\n", sd->status.name, sd->status.account_id, id);
ShowWarning(gm_msg);
// information is sent to all online GMs
- intif->wis_message_to_gm(map->wisp_server_name, battle_config.hack_info_GM_level, gm_msg);
+ pc->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, gm_msg);
return;
}
#endif // 0
@@ -11593,12 +11599,8 @@ static void clif_parse_WisMessage(int fd, struct map_session_data *sd)
dstsd = map->nick2sd(target);
if (dstsd == NULL || strcmp(dstsd->status.name, target) != 0) {
- // player is not on this map-server
- // At this point, don't send wisp/page if it's not exactly the same name, because (example)
- // if there are 'Test' player on an other map-server and 'test' player on this map-server,
- // and if we ask for 'Test', we must not contact 'test' player
- // so, we send information to inter-server, which is the only one which decide (and copy correct name).
- intif->wis_message(sd, target, message, (int)strlen(message));
+ // Character not found (or found through partial match).
+ clif->wis_end(sd->fd, 1);
return;
}
@@ -12691,7 +12693,7 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
return;
}
//You can't use Graffiti/TalkieBox AND have a vending open, so this is safe.
- safestrncpy(sd->message, RFIFOP(fd,skillmoreinfo), MESSAGE_SIZE);
+ safestrncpy(sd->message, RFIFOP(fd, skillmoreinfo), TALKBOX_MESSAGE_SIZE);
}
if( sd->ud.skilltimer != INVALID_TIMER )
@@ -15982,18 +15984,18 @@ static void clif_ranklist_sub(struct PACKET_ZC_ACK_RANKING_sub *ranks, enum fame
if (list[i].id > 0) {
const char* name;
if (strcmp(list[i].name, "-") == 0 && (name = map->charid2nick(list[i].id)) != NULL) {
- strncpy(ranks[i].name, name, NAME_LENGTH);
+ strncpy(ranks->names[i].name, name, NAME_LENGTH);
} else {
- strncpy(ranks[i].name, list[i].name, NAME_LENGTH);
+ strncpy(ranks->names[i].name, list[i].name, NAME_LENGTH);
}
} else {
- strncpy(ranks[i].name, "None", 5);
+ strncpy(ranks->names[i].name, "None", 5);
}
- ranks[i].points = list[i].fame; //points
+ ranks->points[i].points = list[i].fame; //points
}
for (;i < 10; i++) { // In case the MAX is less than 10.
- strncpy(ranks[i].name, "Unavailable", 12);
- ranks[i].points = 0;
+ strncpy(ranks->names[i].name, "Unavailable", 12);
+ ranks->points[i].points = 0;
}
#endif
}
@@ -16042,7 +16044,7 @@ static void clif_ranklist(struct map_session_data *sd, enum fame_list_type type)
#if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190724
clif->ranklist_sub2(p->chars, p->points, type);
#else
- clif->ranklist_sub(p->ranks, type);
+ clif->ranklist_sub(&p->ranks, type);
#endif
if (pc->famelist_type(sd->job) == type) {
@@ -16402,10 +16404,14 @@ static void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
{
if (pc_istrading(sd) || pc_isvending(sd))
return;
+
if (!pc_isdead(sd))
return;
- int item_position = pc->search_inventory(sd, ITEMID_TOKEN_OF_SIEGFRIED);
+ if (sd->sc.data[SC_HELLPOWER]) //Cannot res while under the effect of SC_HELLPOWER.
+ return;
+
+ int item_position = pc->have_item_chain(sd, ECC_SIEGFRIED);
int hpsp = 100;
if (item_position == INDEX_NOT_FOUND) {
@@ -16415,18 +16421,15 @@ static void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
return;
}
- if (sd->sc.data[SC_HELLPOWER]) //Cannot res while under the effect of SC_HELLPOWER.
- return;
-
if (!status->revive(&sd->bl, hpsp, hpsp))
return;
if (item_position == INDEX_NOT_FOUND)
- status_change_end(&sd->bl,SC_LIGHT_OF_REGENE,INVALID_TIMER);
+ status_change_end(&sd->bl, SC_LIGHT_OF_REGENE, INVALID_TIMER);
else
pc->delitem(sd, item_position, 1, 0, DELITEM_SKILLUSE, LOG_TYPE_CONSUME);
- clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION, 4, 1);
+ clif->skill_nodamage(&sd->bl, &sd->bl, ALL_RESURRECTION, 4, 1);
}
/// Information about character's status values (ZC_ACK_STATUS_GM).
@@ -20612,7 +20615,7 @@ static int clif_delay_damage_sub(int tid, int64 tick, int id, intptr_t data)
*
* @return clif->calc_walkdelay used in further processing
**/
-static int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type)
+static int clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type)
{
struct cdelayed_damage *dd;
struct status_change *sc;
diff --git a/src/map/clif.h b/src/map/clif.h
index 07d2ef4a8..f3d7c78eb 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -59,6 +59,7 @@ struct s_refine_requirement;
struct PACKET_ZC_ACK_RANKING_sub;
struct SKILLDATA;
+enum battle_dmg_type;
enum clif_messages;
enum rodex_add_item;
enum rodex_get_zeny;
@@ -861,7 +862,7 @@ struct clif_interface {
void (*scriptclear) (struct map_session_data *sd, int npcid);
/* client-user-interface-related */
void (*viewpoint) (struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color);
- int (*damage) (struct block_list* src, struct block_list* dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
+ int (*damage) (struct block_list* src, struct block_list* dst, int sdelay, int ddelay, int64 damage, short div, enum battle_dmg_type type, int64 damage2);
void (*sitting) (struct block_list* bl);
void (*standing) (struct block_list* bl);
void (*arrow_create_list) (struct map_session_data *sd);
@@ -987,7 +988,7 @@ struct clif_interface {
void (*wedding_effect) (struct block_list *bl);
void (*divorced) (struct map_session_data* sd, const char* name);
void (*callpartner) (struct map_session_data *sd);
- int (*skill_damage) (struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type);
+ int (*skill_damage) (struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type);
int (*skill_nodamage) (struct block_list *src,struct block_list *dst,uint16 skill_id,int heal,int fail);
void (*skill_poseffect) (struct block_list *src, uint16 skill_id, int val, int x, int y, int64 tick);
void (*skill_estimation) (struct map_session_data *sd,struct block_list *dst);
@@ -1282,7 +1283,7 @@ struct clif_interface {
/* */
void (*notify_bounditem) (struct map_session_data *sd, unsigned short index);
/* */
- int (*delay_damage) (int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type);
+ int (*delay_damage) (int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type);
int (*delay_damage_sub) (int tid, int64 tick, int id, intptr_t data);
/* NPC Market */
void (*npc_market_open) (struct map_session_data *sd, struct npc_data *nd);
diff --git a/src/map/guild.c b/src/map/guild.c
index aadb55c78..415a46db5 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1137,13 +1137,14 @@ static int guild_recv_memberinfoshort(int guild_id, int account_id, int char_id,
*---------------------------------------------------*/
static int guild_send_message(struct map_session_data *sd, const char *mes)
{
- int len = (int)strlen(mes);
nullpo_ret(sd);
- if (sd->status.guild_id == 0)
+ if (sd->status.guild_id == 0 || sd->guild == NULL)
return 0;
- intif->guild_message(sd->status.guild_id, sd->status.account_id, mes, len);
- guild->recv_message(sd->status.guild_id, sd->status.account_id, mes, len);
+
+ int len = (int)strlen(mes);
+
+ clif->guild_message(sd->guild, sd->status.account_id, mes, len);
// Chat logging type 'G' / Guild Chat
logs->chat(LOG_CHAT_GUILD, sd->status.guild_id, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, mes);
@@ -1152,18 +1153,6 @@ static int guild_send_message(struct map_session_data *sd, const char *mes)
}
/*====================================================
- * Guild receive a message, will be displayed to whole member
- *---------------------------------------------------*/
-static int guild_recv_message(int guild_id, int account_id, const char *mes, int len)
-{
- struct guild *g;
- if( (g=guild->search(guild_id))==NULL)
- return 0;
- clif->guild_message(g,account_id,mes,len);
- return 0;
-}
-
-/*====================================================
* Member changing position in guild
*---------------------------------------------------*/
static int guild_change_memberposition(int guild_id, int account_id, int char_id, short idx)
@@ -2480,7 +2469,6 @@ void guild_defaults(void)
guild->change_emblem = guild_change_emblem;
guild->emblem_changed = guild_emblem_changed;
guild->send_message = guild_send_message;
- guild->recv_message = guild_recv_message;
guild->send_dot_remove = guild_send_dot_remove;
guild->skillupack = guild_skillupack;
guild->dobreak = guild_break;
diff --git a/src/map/guild.h b/src/map/guild.h
index 40209b988..d0374103f 100644
--- a/src/map/guild.h
+++ b/src/map/guild.h
@@ -136,7 +136,6 @@ struct guild_interface {
int (*change_emblem) (struct map_session_data *sd,int len,const char *data);
int (*emblem_changed) (int len,int guild_id,int emblem_id,const char *data);
int (*send_message) (struct map_session_data *sd, const char *mes);
- int (*recv_message) (int guild_id,int account_id,const char *mes,int len);
int (*send_dot_remove) (struct map_session_data *sd);
int (*skillupack) (int guild_id,uint16 skill_id,int account_id);
int (*dobreak) (struct map_session_data *sd, const char *name);
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 9c0460320..43cb8d84b 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -525,6 +525,21 @@ static bool homunculus_mutate(struct homun_data *hd, int homun_id)
return true;
}
+static int homunculus_gainexp_real(struct homun_data *hd, unsigned int exp)
+{
+ nullpo_ret(hd);
+ nullpo_ret(hd->master);
+
+ hd->homunculus.exp += exp;
+
+ if (hd->master->state.showexp && hd->exp_next > 0) {
+ char output[256];
+ sprintf(output, msg_fd(hd->master->fd, 449), exp, ((float)exp / (float)hd->exp_next * (float)100));
+ clif_disp_onlyself(hd->master, output);
+ }
+ return 1;
+}
+
static int homunculus_gainexp(struct homun_data *hd, unsigned int exp)
{
enum homun_type htype;
@@ -550,16 +565,10 @@ static int homunculus_gainexp(struct homun_data *hd, unsigned int exp)
break;
}
- hd->homunculus.exp += exp;
-
- if (hd->master->state.showexp && hd->exp_next > 0) {
- char output[256];
- sprintf(output, "Homunculus Experience Gained Base:%u (%.2f%%)", exp, ((float)exp / (float)hd->exp_next * (float)100));
- clif_disp_onlyself(hd->master, output);
- }
+ homun->gainexp_real(hd, exp);
- if(hd->homunculus.exp < hd->exp_next) {
- clif->hominfo(hd->master,hd,0);
+ if (hd->homunculus.exp < hd->exp_next) {
+ clif->hominfo(hd->master, hd, 0);
return 0;
}
@@ -1444,6 +1453,7 @@ void homunculus_defaults(void)
homun->evolve = homunculus_evolve;
homun->mutate = homunculus_mutate;
homun->gainexp = homunculus_gainexp;
+ homun->gainexp_real = homunculus_gainexp_real;
homun->add_intimacy = homunculus_add_intimacy;
homun->consume_intimacy = homunculus_consume_intimacy;
homun->healed = homunculus_healed;
diff --git a/src/map/homunculus.h b/src/map/homunculus.h
index 5bb4334cb..2914a26cc 100644
--- a/src/map/homunculus.h
+++ b/src/map/homunculus.h
@@ -178,6 +178,7 @@ struct homunculus_interface {
bool (*evolve) (struct homun_data *hd);
bool (*mutate) (struct homun_data *hd, int homun_id);
int (*gainexp) (struct homun_data *hd, unsigned int exp);
+ int (*gainexp_real) (struct homun_data *hd, unsigned int exp);
unsigned int (*add_intimacy) (struct homun_data * hd, unsigned int value);
unsigned int (*consume_intimacy) (struct homun_data *hd, unsigned int value);
void (*healed) (struct homun_data *hd);
diff --git a/src/map/intif.c b/src/map/intif.c
index e25f56b63..5a62f9644 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -153,158 +153,6 @@ static int intif_rename(struct map_session_data *sd, int type, const char *name)
return 0;
}
-// GM Send a message
-static int intif_broadcast(const char *mes, int len, int type)
-{
- int lp = (type&BC_COLOR_MASK) ? 4 : 0;
-
- nullpo_ret(mes);
- Assert_ret(len < 32000);
- // Send to the local players
- clif->broadcast(NULL, mes, len, type, ALL_CLIENT);
-
- if (intif->CheckForCharServer())
- return 0;
-
- if (chrif->other_mapserver_count < 1)
- return 0; //No need to send.
-
- WFIFOHEAD(inter_fd, 16 + lp + len);
- WFIFOW(inter_fd,0) = 0x3000;
- WFIFOW(inter_fd,2) = 16 + lp + len;
- WFIFOL(inter_fd,4) = 0xFF000000; // 0xFF000000 color signals standard broadcast
- WFIFOW(inter_fd,8) = 0; // fontType not used with standard broadcast
- WFIFOW(inter_fd,10) = 0; // fontSize not used with standard broadcast
- WFIFOW(inter_fd,12) = 0; // fontAlign not used with standard broadcast
- WFIFOW(inter_fd,14) = 0; // fontY not used with standard broadcast
- if (type&BC_BLUE)
- WFIFOL(inter_fd,16) = 0x65756c62; //If there's "blue" at the beginning of the message, game client will display it in blue instead of yellow.
- else if (type&BC_WOE)
- WFIFOL(inter_fd,16) = 0x73737373; //If there's "ssss", game client will recognize message as 'WoE broadcast'.
- memcpy(WFIFOP(inter_fd,16 + lp), mes, len);
- WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
- return 0;
-}
-
-static int intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY)
-{
- nullpo_ret(mes);
- Assert_ret(len < 32000);
- // Send to the local players
- clif->broadcast2(NULL, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, ALL_CLIENT);
-
- if (intif->CheckForCharServer())
- return 0;
-
- if (chrif->other_mapserver_count < 1)
- return 0; //No need to send.
-
- WFIFOHEAD(inter_fd, 16 + len);
- WFIFOW(inter_fd,0) = 0x3000;
- WFIFOW(inter_fd,2) = 16 + len;
- WFIFOL(inter_fd,4) = fontColor;
- WFIFOW(inter_fd,8) = fontType;
- WFIFOW(inter_fd,10) = fontSize;
- WFIFOW(inter_fd,12) = fontAlign;
- WFIFOW(inter_fd,14) = fontY;
- memcpy(WFIFOP(inter_fd,16), mes, len);
- WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
- return 0;
-}
-
-/// send a message using the main chat system
-/// <sd> the source of message
-/// <message> the message that was sent
-static int intif_main_message(struct map_session_data *sd, const char *message)
-{
- char output[256];
-
- nullpo_ret(sd);
- nullpo_ret(message);
-
- // format the message for main broadcasting
- snprintf( output, sizeof(output), msg_txt(386), sd->status.name, message );
-
- // send the message using the inter-server broadcast service
- intif->broadcast2(output, (int)strlen(output) + 1, 0xFE000000, 0, 0, 0, 0);
-
- // log the chat message
- logs->chat( LOG_CHAT_MAINCHAT, 0, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, message );
-
- return 0;
-}
-
-// The transmission of Wisp/Page to inter-server (player not found on this server)
-static int intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len)
-{
- if (intif->CheckForCharServer())
- return 0;
- nullpo_ret(sd);
- nullpo_ret(nick);
- nullpo_ret(mes);
-
- if (chrif->other_mapserver_count < 1) {
- //Character not found.
- clif->wis_end(sd->fd, 1);
- return 0;
- }
-
- WFIFOHEAD(inter_fd,mes_len + 52);
- WFIFOW(inter_fd,0) = 0x3001;
- WFIFOW(inter_fd,2) = mes_len + 52;
- memcpy(WFIFOP(inter_fd,4), sd->status.name, NAME_LENGTH);
- memcpy(WFIFOP(inter_fd,4+NAME_LENGTH), nick, NAME_LENGTH);
- memcpy(WFIFOP(inter_fd,4+2*NAME_LENGTH), mes, mes_len);
- WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
-
- if (battle_config.etc_log)
- ShowInfo("intif_wis_message from %s to %s (message: '%s')\n", sd->status.name, nick, mes);
-
- return 0;
-}
-
-// The reply of Wisp/page
-static int intif_wis_replay(int id, int flag)
-{
- if (intif->CheckForCharServer())
- return 0;
- WFIFOHEAD(inter_fd,7);
- WFIFOW(inter_fd,0) = 0x3002;
- WFIFOL(inter_fd,2) = id;
- WFIFOB(inter_fd,6) = flag; // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- WFIFOSET(inter_fd,7);
-
- if (battle_config.etc_log)
- ShowInfo("intif_wis_replay: id: %d, flag:%d\n", id, flag);
-
- return 0;
-}
-
-// The transmission of GM only Wisp/Page from server to inter-server
-static int intif_wis_message_to_gm(char *wisp_name, int permission, char *mes)
-{
- int mes_len;
- if (intif->CheckForCharServer())
- return 0;
- nullpo_ret(wisp_name);
- nullpo_ret(mes);
- mes_len = (int)strlen(mes) + 1; // + null
- Assert_ret(mes_len > 0 && mes_len <= INT16_MAX - 32);
-
- WFIFOHEAD(inter_fd, mes_len + 32);
- WFIFOW(inter_fd,0) = 0x3003;
- WFIFOW(inter_fd,2) = mes_len + 32;
- memcpy(WFIFOP(inter_fd,4), wisp_name, NAME_LENGTH);
- WFIFOL(inter_fd,4+NAME_LENGTH) = permission;
- memcpy(WFIFOP(inter_fd,8+NAME_LENGTH), mes, mes_len);
- WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
-
- if (battle_config.etc_log)
- ShowNotice("intif_wis_message_to_gm: from: '%s', required permission: %d, message: '%s'.\n", wisp_name, permission, mes);
-
- return 0;
-}
-
//Request for saving registry values.
static int intif_saveregistry(struct map_session_data *sd)
{
@@ -714,27 +562,6 @@ static int intif_break_party(int party_id)
return 0;
}
-// Sending party chat
-static int intif_party_message(int party_id, int account_id, const char *mes, int len)
-{
- if (intif->CheckForCharServer())
- return 0;
-
- if (chrif->other_mapserver_count < 1)
- return 0; //No need to send.
-
- nullpo_ret(mes);
- Assert_ret(len > 0 && len < 32000);
- WFIFOHEAD(inter_fd,len + 12);
- WFIFOW(inter_fd,0)=0x3027;
- WFIFOW(inter_fd,2)=len+12;
- WFIFOL(inter_fd,4)=party_id;
- WFIFOL(inter_fd,8)=account_id;
- memcpy(WFIFOP(inter_fd,12),mes,len);
- WFIFOSET(inter_fd,len+12);
- return 0;
-}
-
// Request a new leader for party
static int intif_party_leaderchange(int party_id, int account_id, int char_id)
{
@@ -931,28 +758,6 @@ static int intif_guild_break(int guild_id)
return 0;
}
-// Send a guild message
-static int intif_guild_message(int guild_id, int account_id, const char *mes, int len)
-{
- if (intif->CheckForCharServer())
- return 0;
-
- if (chrif->other_mapserver_count < 1)
- return 0; //No need to send.
-
- nullpo_ret(mes);
- Assert_ret(len > 0 && len < 32000);
- WFIFOHEAD(inter_fd, len + 12);
- WFIFOW(inter_fd,0)=0x3037;
- WFIFOW(inter_fd,2)=len+12;
- WFIFOL(inter_fd,4)=guild_id;
- WFIFOL(inter_fd,8)=account_id;
- memcpy(WFIFOP(inter_fd,12),mes,len);
- WFIFOSET(inter_fd,len+12);
-
- return 0;
-}
-
/**
* Requests to change a basic guild information, it is parsed via mapif_parse_GuildBasicInfoChange
* To see the information types that can be changed see mmo.h::guild_basic_info
@@ -1166,98 +971,6 @@ static int intif_homunculus_requestdelete(int homun_id)
//-----------------------------------------------------------------
// Packets receive from inter server
-// Wisp/Page reception // rewritten by [Yor]
-static void intif_parse_WisMessage(int fd)
-{
- struct map_session_data* sd;
- const char *wisp_source;
- char name[NAME_LENGTH];
- int id, i;
-
- id=RFIFOL(fd,4);
-
- safestrncpy(name, RFIFOP(fd,32), NAME_LENGTH);
- sd = map->nick2sd(name);
- if(sd == NULL || strcmp(sd->status.name, name) != 0) {
- //Not found
- intif_wis_replay(id,1);
- return;
- }
- if(sd->state.ignoreAll) {
- intif_wis_replay(id, 2);
- return;
- }
- wisp_source = RFIFOP(fd,8); // speed up [Yor]
- for(i=0; i < MAX_IGNORE_LIST &&
- sd->ignore[i].name[0] != '\0' &&
- strcmp(sd->ignore[i].name, wisp_source) != 0
- ; i++);
-
- if (i < MAX_IGNORE_LIST && sd->ignore[i].name[0] != '\0') {
- //Ignored
- intif_wis_replay(id, 2);
- return;
- }
- //Success to send whisper.
- clif->wis_message(sd->fd, wisp_source, RFIFOP(fd,56),RFIFOW(fd,2)-57);
- intif_wis_replay(id,0); // success
-}
-
-// Wisp/page transmission result reception
-static void intif_parse_WisEnd(int fd)
-{
- struct map_session_data* sd;
- const char *playername = RFIFOP(fd, 2);
-
- if (battle_config.etc_log)
- ShowInfo("intif_parse_wisend: player: %s, flag: %d\n", playername, RFIFOB(fd,26)); // flag: 0: success to send whisper, 1: target character is not logged in?, 2: ignored by target
- sd = map->nick2sd(playername);
- if (sd != NULL)
- clif->wis_end(sd->fd, RFIFOB(fd,26));
-
- return;
-}
-
-static int intif_parse_WisToGM_sub(struct map_session_data *sd, va_list va)
-{
- int permission = va_arg(va, int);
- char *wisp_name;
- char *message;
- int len;
-
- nullpo_ret(sd);
- if (!pc_has_permission(sd, permission))
- return 0;
- wisp_name = va_arg(va, char*);
- message = va_arg(va, char*);
- len = va_arg(va, int);
- clif->wis_message(sd->fd, wisp_name, message, len);
- return 1;
-}
-
-// Received wisp message from map-server via char-server for ALL gm
-// 0x3003/0x3803 <packet_len>.w <wispname>.24B <permission>.l <message>.?B
-static void intif_parse_WisToGM(int fd)
-{
- int permission, mes_len;
- char Wisp_name[NAME_LENGTH];
- char mbuf[255] = { 0 };
- char *message;
-
- mes_len = RFIFOW(fd,2) - 33; // Length not including the NUL terminator
- Assert_retv(mes_len > 0 && mes_len < 32000);
- message = (mes_len >= 255 ? aMalloc(mes_len + 1) : mbuf);
-
- permission = RFIFOL(fd,28);
- safestrncpy(Wisp_name, RFIFOP(fd,4), NAME_LENGTH);
- safestrncpy(message, RFIFOP(fd,32), mes_len + 1);
- // information is sent to all online GM
- map->foreachpc(intif->pWisToGM_sub, permission, Wisp_name, message, mes_len);
-
- if (message != mbuf)
- aFree(message);
-}
-
// Request player registre
static void intif_parse_Registers(int fd)
{
@@ -1464,12 +1177,6 @@ static void intif_parse_PartyMove(int fd)
party->recv_movemap(RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),RFIFOW(fd,14),RFIFOB(fd,16),RFIFOW(fd,17));
}
-// ACK party messages
-static void intif_parse_PartyMessage(int fd)
-{
- party->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
-}
-
// ACK guild creation
static void intif_parse_GuildCreated(int fd)
{
@@ -1619,12 +1326,6 @@ static void intif_parse_GuildEmblem(int fd)
guild->emblem_changed(RFIFOW(fd,2)-12, RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12));
}
-// ACK guild message
-static void intif_parse_GuildMessage(int fd)
-{
- guild->recv_message(RFIFOL(fd,4), RFIFOL(fd,8), RFIFOP(fd,12), RFIFOW(fd,2)-12);
-}
-
// Reply guild castle data request
static void intif_parse_GuildCastleDataLoad(int fd)
{
@@ -2915,15 +2616,6 @@ static int intif_parse(int fd)
}
// Processing branch
switch(cmd){
- case 0x3800:
- if (RFIFOL(fd,4) == 0xFF000000) //Normal announce.
- clif->broadcast(NULL, RFIFOP(fd,16), packet_len-16, BC_DEFAULT, ALL_CLIENT);
- else //Color announce.
- clif->broadcast2(NULL, RFIFOP(fd,16), packet_len-16, RFIFOL(fd,4), RFIFOW(fd,8), RFIFOW(fd,10), RFIFOW(fd,12), RFIFOW(fd,14), ALL_CLIENT);
- break;
- case 0x3801: intif->pWisMessage(fd); break;
- case 0x3802: intif->pWisEnd(fd); break;
- case 0x3803: intif->pWisToGM(fd); break;
case 0x3804: intif->pRegisters(fd); break;
case 0x3805: intif->pAccountStorage(fd); break;
case 0x3806: intif->pChangeNameOk(fd); break;
@@ -2939,14 +2631,12 @@ static int intif_parse(int fd)
case 0x3824: intif->pPartyMemberWithdraw(fd); break;
case 0x3825: intif->pPartyMove(fd); break;
case 0x3826: intif->pPartyBroken(fd); break;
- case 0x3827: intif->pPartyMessage(fd); break;
case 0x3830: intif->pGuildCreated(fd); break;
case 0x3831: intif->pGuildInfo(fd); break;
case 0x3832: intif->pGuildMemberAdded(fd); break;
case 0x3834: intif->pGuildMemberWithdraw(fd); break;
case 0x3835: intif->pGuildMemberInfoShort(fd); break;
case 0x3836: intif->pGuildBroken(fd); break;
- case 0x3837: intif->pGuildMessage(fd); break;
case 0x3839: intif->pGuildBasicInfoChanged(fd); break;
case 0x383a: intif->pGuildMemberInfoChanged(fd); break;
case 0x383b: intif->pGuildPosition(fd); break;
@@ -3028,10 +2718,10 @@ static int intif_parse(int fd)
void intif_defaults(void)
{
const int packet_len_table [INTIF_PACKET_LEN_TABLE_SIZE] = {
- -1,-1,27,-1, -1,-1,37,-1, 7, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
+ 0, 0, 0, 0, -1,-1,37,-1, 7, 0, 0, 0, 0, 0, 0, 0, //0x3800-0x380f
-1, 0, 0, 0, 0, 0, 0, 0, -1,11, 0, 0, 0, 0, 0, 0, //0x3810 Achievements [Smokexyz/Hercules]
- 39,-1,15,15, 14,19, 7,-1, 0, 0, 0, 0, 0, 0, 0, 0, //0x3820
- 10,-1,15, 0, 79,25, 7,-1, 0,-1,-1,-1, 14,67,186,-1, //0x3830
+ 39,-1,15,15, 14,19, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3820
+ 10,-1,15, 0, 79,25, 7, 0, 0,-1,-1,-1, 14,67,186,-1, //0x3830
-1, 0, 0,14, 0, 0, 0, 0, -1,74,-1,11, 11,-1, 0, 0, //0x3840
-1,-1, 7, 7, 7,11, 8, 0, 10, 0, 0, 0, 0, 0, 0, 0, //0x3850 Auctions [Zephyrus] itembound[Akinari] Clan System[Murilo BiO]
-1, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, //0x3860 Quests [Kevin] [Inkfish]
@@ -3048,11 +2738,6 @@ void intif_defaults(void)
/* funcs */
intif->parse = intif_parse;
intif->create_pet = intif_create_pet;
- intif->broadcast = intif_broadcast;
- intif->broadcast2 = intif_broadcast2;
- intif->main_message = intif_main_message;
- intif->wis_message = intif_wis_message;
- intif->wis_message_to_gm = intif_wis_message_to_gm;
intif->saveregistry = intif_saveregistry;
intif->request_registry = intif_request_registry;
intif->request_account_storage = intif_request_account_storage;
@@ -3066,7 +2751,6 @@ void intif_defaults(void)
intif->party_leave = intif_party_leave;
intif->party_changemap = intif_party_changemap;
intif->break_party = intif_break_party;
- intif->party_message = intif_party_message;
intif->party_leaderchange = intif_party_leaderchange;
intif->guild_create = intif_guild_create;
intif->guild_request_info = intif_guild_request_info;
@@ -3074,7 +2758,6 @@ void intif_defaults(void)
intif->guild_leave = intif_guild_leave;
intif->guild_memberinfoshort = intif_guild_memberinfoshort;
intif->guild_break = intif_guild_break;
- intif->guild_message = intif_guild_message;
intif->guild_change_gm = intif_guild_change_gm;
intif->guild_change_basicinfo = intif_guild_change_basicinfo;
intif->guild_change_memberinfo = intif_guild_change_memberinfo;
@@ -3138,10 +2821,6 @@ void intif_defaults(void)
intif->achievements_request = intif_achievements_request;
intif->achievements_save = intif_achievements_save;
/* parse functions */
- intif->pWisMessage = intif_parse_WisMessage;
- intif->pWisEnd = intif_parse_WisEnd;
- intif->pWisToGM_sub = intif_parse_WisToGM_sub;
- intif->pWisToGM = intif_parse_WisToGM;
intif->pRegisters = intif_parse_Registers;
intif->pChangeNameOk = intif_parse_ChangeNameOk;
intif->pMessageToFD = intif_parse_MessageToFD;
@@ -3156,14 +2835,12 @@ void intif_defaults(void)
intif->pPartyMemberWithdraw = intif_parse_PartyMemberWithdraw;
intif->pPartyMove = intif_parse_PartyMove;
intif->pPartyBroken = intif_parse_PartyBroken;
- intif->pPartyMessage = intif_parse_PartyMessage;
intif->pGuildCreated = intif_parse_GuildCreated;
intif->pGuildInfo = intif_parse_GuildInfo;
intif->pGuildMemberAdded = intif_parse_GuildMemberAdded;
intif->pGuildMemberWithdraw = intif_parse_GuildMemberWithdraw;
intif->pGuildMemberInfoShort = intif_parse_GuildMemberInfoShort;
intif->pGuildBroken = intif_parse_GuildBroken;
- intif->pGuildMessage = intif_parse_GuildMessage;
intif->pGuildBasicInfoChanged = intif_parse_GuildBasicInfoChanged;
intif->pGuildMemberInfoChanged = intif_parse_GuildMemberInfoChanged;
intif->pGuildPosition = intif_parse_GuildPosition;
diff --git a/src/map/intif.h b/src/map/intif.h
index 8df669217..ffac4a1c9 100644
--- a/src/map/intif.h
+++ b/src/map/intif.h
@@ -60,11 +60,6 @@ struct intif_interface {
int (*parse) (int fd);
int (*create_pet)(int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id,
int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
- int (*broadcast) (const char *mes, int len, int type);
- int (*broadcast2) (const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
- int (*main_message) (struct map_session_data* sd, const char* message);
- int (*wis_message) (struct map_session_data *sd, const char *nick, const char *mes, int mes_len);
- int (*wis_message_to_gm) (char *Wisp_name, int permission, char *mes);
int (*saveregistry) (struct map_session_data *sd);
int (*request_registry) (struct map_session_data *sd, int flag);
void (*request_account_storage) (const struct map_session_data *sd);
@@ -78,7 +73,6 @@ struct intif_interface {
int (*party_leave) (int party_id,int account_id, int char_id);
int (*party_changemap) (struct map_session_data *sd, int online);
int (*break_party) (int party_id);
- int (*party_message) (int party_id, int account_id, const char *mes,int len);
int (*party_leaderchange) (int party_id,int account_id,int char_id);
int (*guild_create) (const char *name, const struct guild_member *master);
int (*guild_request_info) (int guild_id);
@@ -86,7 +80,6 @@ struct intif_interface {
int (*guild_leave) (int guild_id, int account_id, int char_id, int flag, const char *mes);
int (*guild_memberinfoshort) (int guild_id, int account_id, int char_id, int online, int lv, int class);
int (*guild_break) (int guild_id);
- int (*guild_message) (int guild_id, int account_id, const char *mes, int len);
int (*guild_change_gm) (int guild_id, const char *name, int len);
int (*guild_change_basicinfo) (int guild_id, int type, const void *data, int len);
int (*guild_change_memberinfo) (int guild_id, int account_id, int char_id, int type, const void *data, int len);
@@ -151,10 +144,6 @@ struct intif_interface {
void(*achievements_request) (struct map_session_data *sd);
void(*achievements_save) (struct map_session_data *sd);
/* */
- void (*pWisMessage) (int fd);
- void (*pWisEnd) (int fd);
- int (*pWisToGM_sub) (struct map_session_data* sd,va_list va);
- void (*pWisToGM) (int fd);
void (*pRegisters) (int fd);
void (*pAccountStorage) (int fd);
void (*pChangeNameOk) (int fd);
@@ -169,14 +158,12 @@ struct intif_interface {
void (*pPartyMemberWithdraw) (int fd);
void (*pPartyMove) (int fd);
void (*pPartyBroken) (int fd);
- void (*pPartyMessage) (int fd);
void (*pGuildCreated) (int fd);
void (*pGuildInfo) (int fd);
void (*pGuildMemberAdded) (int fd);
void (*pGuildMemberWithdraw) (int fd);
void (*pGuildMemberInfoShort) (int fd);
void (*pGuildBroken) (int fd);
- void (*pGuildMessage) (int fd);
void (*pGuildBasicInfoChanged) (int fd);
void (*pGuildMemberInfoChanged) (int fd);
void (*pGuildPosition) (int fd);
diff --git a/src/map/itemdb.c b/src/map/itemdb.c
index 5c56794d8..bb2732b17 100644
--- a/src/map/itemdb.c
+++ b/src/map/itemdb.c
@@ -1523,6 +1523,11 @@ static void itemdb_read_chains(void)
else
itemdb->chain_cache[ECC_ORE] = i;
+ if (!script->get_constant("ITMCHAIN_SIEGFRIED", &i))
+ ShowWarning("itemdb_read_chains: failed to find 'ITMCHAIN_SIEGFRIED' chain to link to cache!\n");
+ else
+ itemdb->chain_cache[ECC_SIEGFRIED] = i;
+
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, config_filename);
}
diff --git a/src/map/itemdb.h b/src/map/itemdb.h
index f66abe066..7da7609f1 100644
--- a/src/map/itemdb.h
+++ b/src/map/itemdb.h
@@ -139,7 +139,6 @@ enum item_itemid {
ITEMID_COATING_BOTTLE = 7139,
ITEMID_FRAGMENT_OF_CRYSTAL = 7321,
ITEMID_SKULL_ = 7420,
- ITEMID_TOKEN_OF_SIEGFRIED = 7621,
ITEMID_SPECIAL_ALLOY_TRAP = 7940,
ITEMID_CATNIP_FRUIT = 11602,
ITEMID_RED_POUCH_OF_SURPRISE = 12024,
@@ -359,6 +358,7 @@ enum geneticist_item_list {
//
enum e_chain_cache {
ECC_ORE,
+ ECC_SIEGFRIED,
/* */
ECC_MAX,
};
diff --git a/src/map/mapdefines.h b/src/map/mapdefines.h
index df9e9bccb..348ca98fd 100644
--- a/src/map/mapdefines.h
+++ b/src/map/mapdefines.h
@@ -21,6 +21,8 @@
#ifndef MAP_MAPDEFINES_H
#define MAP_MAPDEFINES_H
+#include "common/mmo.h" // packet versions
+
#define MAX_NPC_PER_MAP 512
#define AREA_SIZE (battle->bc->area_size)
#define CHAT_AREA_SIZE (battle->bc->chat_area_size)
@@ -57,8 +59,14 @@
#define MAPID_UPPERMASK 0x0fff
#define MAPID_THIRDMASK (JOBL_THIRD|MAPID_UPPERMASK)
-// Max size for inputs to Graffiti, Talkie Box and Vending text prompts
+// Max size for inputs to Vending text prompts
#define MESSAGE_SIZE (79 + 1)
+// Max size for inputs to Graffiti, Talkie Box text prompts
+#if PACKETVER_MAIN_NUM >= 20190904 || PACKETVER_RE_NUM >= 20190904 || PACKETVER_ZERO_NUM >= 20190828
+#define TALKBOX_MESSAGE_SIZE 21
+#else
+#define TALKBOX_MESSAGE_SIZE (79 + 1)
+#endif
// String length you can write in the 'talking box'
#define CHATBOX_SIZE (70 + 1)
// Chatroom-related string sizes
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index bc5bcf55d..1ef24d6ab 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20190821
+Latest version: 20190918
*/
enum clif_messages {
@@ -21875,6 +21875,92 @@ Sold Out
*/
MSG_ID_E50 = 0xe50,
#endif
+#if PACKETVER >= 20190828
+/*20190828 to latest
+장착 중인 아이템은 교환할 수 없습니다. 장착을 해제한 뒤 시도해 주시길 바랍니다.
+*/
+ MSG_ID_E51 = 0xe51,
+#endif
+#if PACKETVER >= 20190904
+/*20190904 to latest
+길드 창고 이용 중엔 캐릭터 선택창으로 이동 할 수 없습니다.
+*/
+ MSG_ID_E52 = 0xe52,
+/*20190904 to latest
+아이템 태그가 포함되어 있어 사용할 수 없습니다.
+*/
+ MSG_ID_E53 = 0xe53,
+/*20190904 to latest
+Monster
+*/
+ MSG_ID_E54 = 0xe54,
+/*20190904 to latest
+Unknown
+*/
+ MSG_ID_E55 = 0xe55,
+/*20190904 to latest
+Undead
+*/
+ MSG_ID_E56 = 0xe56,
+/*20190904 to latest
+Animal
+*/
+ MSG_ID_E57 = 0xe57,
+/*20190904 to latest
+Plant
+*/
+ MSG_ID_E58 = 0xe58,
+/*20190904 to latest
+Insect
+*/
+ MSG_ID_E59 = 0xe59,
+/*20190904 to latest
+Marine
+*/
+ MSG_ID_E5A = 0xe5a,
+/*20190904 to latest
+Devil
+*/
+ MSG_ID_E5B = 0xe5b,
+/*20190904 to latest
+Human
+*/
+ MSG_ID_E5C = 0xe5c,
+/*20190904 to latest
+Angel
+*/
+ MSG_ID_E5D = 0xe5d,
+/*20190904 to latest
+Dragon
+*/
+ MSG_ID_E5E = 0xe5e,
+#endif
+#if PACKETVER >= 20190918
+/*20190918 to latest
+Balance: %s %c
+*/
+ MSG_ID_E5F = 0xe5f,
+/*20190918 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E60 = 0xe60,
+/*20190918 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %s캐시, 무료 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E61 = 0xe61,
+/*20190918 to latest
+[%s]의 호출이 거부되었습니다.
+*/
+ MSG_ID_E62 = 0xe62,
+/*20190918 to latest
+구매 한도액은 소지액을 초과할 수 없습니다.
+*/
+ MSG_ID_E63 = 0xe63,
+/*20190918 to latest
+노점을 여는데 실패하였습니다. 구매노점 개설을 닫아주시기 바랍니다.
+*/
+ MSG_ID_E64 = 0xe64,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index efebecdb2..4ae3dee1d 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20190821
+Latest version: 20190918
*/
enum clif_messages {
@@ -21354,6 +21354,92 @@ Sold Out
*/
MSG_ID_E50 = 0xe50,
#endif
+#if PACKETVER >= 20190828
+/*20190828 to latest
+장착 중인 아이템은 교환할 수 없습니다. 장착을 해제한 뒤 시도해 주시길 바랍니다.
+*/
+ MSG_ID_E51 = 0xe51,
+#endif
+#if PACKETVER >= 20190904
+/*20190904 to latest
+길드 창고 이용 중엔 캐릭터 선택창으로 이동 할 수 없습니다.
+*/
+ MSG_ID_E52 = 0xe52,
+/*20190904 to latest
+아이템 태그가 포함되어 있어 사용할 수 없습니다.
+*/
+ MSG_ID_E53 = 0xe53,
+/*20190904 to latest
+Monster
+*/
+ MSG_ID_E54 = 0xe54,
+/*20190904 to latest
+Unknown
+*/
+ MSG_ID_E55 = 0xe55,
+/*20190904 to latest
+Undead
+*/
+ MSG_ID_E56 = 0xe56,
+/*20190904 to latest
+Animal
+*/
+ MSG_ID_E57 = 0xe57,
+/*20190904 to latest
+Plant
+*/
+ MSG_ID_E58 = 0xe58,
+/*20190904 to latest
+Insect
+*/
+ MSG_ID_E59 = 0xe59,
+/*20190904 to latest
+Marine
+*/
+ MSG_ID_E5A = 0xe5a,
+/*20190904 to latest
+Devil
+*/
+ MSG_ID_E5B = 0xe5b,
+/*20190904 to latest
+Human
+*/
+ MSG_ID_E5C = 0xe5c,
+/*20190904 to latest
+Angel
+*/
+ MSG_ID_E5D = 0xe5d,
+/*20190904 to latest
+Dragon
+*/
+ MSG_ID_E5E = 0xe5e,
+#endif
+#if PACKETVER >= 20190918
+/*20190918 to latest
+Balance: %s %c
+*/
+ MSG_ID_E5F = 0xe5f,
+/*20190918 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E60 = 0xe60,
+/*20190918 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %s캐시, 무료 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E61 = 0xe61,
+/*20190918 to latest
+호출이 거부되었습니다.
+*/
+ MSG_ID_E62 = 0xe62,
+/*20190918 to latest
+구매 한도액은 소지액을 초과할 수 없습니다.
+*/
+ MSG_ID_E63 = 0xe63,
+/*20190918 to latest
+노점을 여는데 실패하였습니다. 구매노점 개설을 닫아주시기 바랍니다.
+*/
+ MSG_ID_E64 = 0xe64,
+#endif
};
#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
index 344dbb29e..039d215ac 100644
--- a/src/map/messages_zero.h
+++ b/src/map/messages_zero.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20190814
+Latest version: 20190918
*/
enum clif_messages {
@@ -17922,8 +17922,10 @@ Sale Start Time
계정 한정
*/
MSG_ID_E48 = 0xe48,
-/*20190814 to latest
+/*20190814 to 20190814
판매기간 : %d월 %d일 ~ %d월 %d일
+20190828 to latest
+판매기간 : %d월 %d일 %d시 %d분
*/
MSG_ID_E49 = 0xe49,
/*20190814 to latest
@@ -17947,6 +17949,102 @@ Sold Out
*/
MSG_ID_E4E = 0xe4e,
#endif
+#if PACKETVER >= 20190828
+/*20190828 to latest
+~ %d월 %d일 %d시 %d분
+*/
+ MSG_ID_E4F = 0xe4f,
+/*20190828 to latest
+상품을 더이상 추가할 수 없습니다
+*/
+ MSG_ID_E50 = 0xe50,
+/*20190828 to latest
+장착 중인 아이템은 교환할 수 없습니다. 장착을 해제한 뒤 시도해 주시길 바랍니다.
+*/
+ MSG_ID_E51 = 0xe51,
+#endif
+#if PACKETVER >= 20190911
+/*20190911 to latest
+길드 창고 이용 중엔 캐릭터 선택창으로 이동 할 수 없습니다.
+*/
+ MSG_ID_E52 = 0xe52,
+/*20190911 to latest
+아이템 태그가 포함되어 있어 사용할 수 없습니다.
+*/
+ MSG_ID_E53 = 0xe53,
+/*20190911 to latest
+Monster
+*/
+ MSG_ID_E54 = 0xe54,
+/*20190911 to latest
+Unknown
+*/
+ MSG_ID_E55 = 0xe55,
+/*20190911 to latest
+Undead
+*/
+ MSG_ID_E56 = 0xe56,
+/*20190911 to latest
+Animal
+*/
+ MSG_ID_E57 = 0xe57,
+/*20190911 to latest
+Plant
+*/
+ MSG_ID_E58 = 0xe58,
+/*20190911 to latest
+Insect
+*/
+ MSG_ID_E59 = 0xe59,
+/*20190911 to latest
+Marine
+*/
+ MSG_ID_E5A = 0xe5a,
+/*20190911 to latest
+Devil
+*/
+ MSG_ID_E5B = 0xe5b,
+/*20190911 to latest
+Human
+*/
+ MSG_ID_E5C = 0xe5c,
+/*20190911 to latest
+Angel
+*/
+ MSG_ID_E5D = 0xe5d,
+/*20190911 to latest
+Dragon
+*/
+ MSG_ID_E5E = 0xe5e,
+/*20190911 to latest
+Balance: %s %c
+*/
+ MSG_ID_E5F = 0xe5f,
+/*20190911 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E60 = 0xe60,
+/*20190911 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %s캐시, 무료 %s캐시가 차감됩니다.
+*/
+ MSG_ID_E61 = 0xe61,
+/*20190911 to 20190911
+호출이 거부되었습니다.
+20190918 to latest
+[%s]의 호출이 거부되었습니다.
+*/
+ MSG_ID_E62 = 0xe62,
+#endif
+#if PACKETVER >= 20190918
+/*20190918 to latest
+구매 한도액은 소지액을 초과할 수 없습니다.
+*/
+ MSG_ID_E63 = 0xe63,
+/*20190918 to latest
+노점을 여는데 실패하였습니다. 구매노점 개설을 닫아주시기 바랍니다.
+*/
+ MSG_ID_E64 = 0xe64,
+#endif
};
#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/npc.h b/src/map/npc.h
index 507635a84..5ff63532d 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -151,7 +151,7 @@ enum actor_classes {
#define MAX_NPC_CLASS 1000
// New NPC range
#define MAX_NPC_CLASS2_START 10001
-#define MAX_NPC_CLASS2_END 10310
+#define MAX_NPC_CLASS2_END 10344
//Script NPC events.
enum npce_event {
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index 565835cd7..b7f25a83d 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -37,7 +37,7 @@
packetKeys(0x49357d72,0x22c370a1,0x5f836591);
#endif
-// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE
+// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE
#if PACKETVER == 20101123 || \
PACKETVER == 20101124 || \
PACKETVER == 20101125 || \
@@ -162,7 +162,10 @@
PACKETVER == 20190731 || \
PACKETVER == 20190802 || \
PACKETVER == 20190807 || \
- PACKETVER >= 20190821
+ PACKETVER == 20190821 || \
+ PACKETVER == 20190828 || \
+ PACKETVER == 20190904 || \
+ PACKETVER >= 20190918
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index 0e70ef641..2708d11e1 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -30,7 +30,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -91,7 +91,10 @@
PACKETVER == 20190710 || \
PACKETVER == 20190717 || \
PACKETVER == 20190724 || \
- PACKETVER >= 20190814
+ PACKETVER == 20190814 || \
+ PACKETVER == 20190828 || \
+ PACKETVER == 20190911 || \
+ PACKETVER >= 20190918
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index 082c940c9..e3e798dd1 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -9727,7 +9727,7 @@
packet(0x0967,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
#endif
-// 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe
+// 2018-11-21bRagexe, 2018-11-28aRagexe, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-12aRagexe, 2018-12-12bRagexe, 2018-12-19bRagexe, 2018-12-26aRagexe, 2019-01-09aRagexe, 2019-01-16bRagexe, 2019-01-16cRagexe, 2019-01-23dRagexe, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-27aRagexe, 2019-02-28aRagexe, 2019-03-06bRagexe, 2019-03-06cRagexe, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-22aRagexe, 2019-03-27bRagexe, 2019-04-03aRagexe, 2019-04-17aRagexe, 2019-04-18aRagexe, 2019-05-08cRagexe, 2019-05-22bRagexe, 2019-05-22cRagexe, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29cRagexe, 2019-05-30aRagexe, 2019-06-05fRagexe, 2019-06-05KRagexe, 2019-06-19bRagexe, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-07-03aRagexe, 2019-07-17aRagexe, 2019-07-17dRagexe, 2019-07-24aRagexe, 2019-07-31bRagexe, 2019-08-02aRagexe, 2019-08-07aRagexe, 2019-08-21aRagexe, 2019-08-28aRagexe
#if PACKETVER == 20181121 || \
PACKETVER == 20181128 || \
PACKETVER == 20181205 || \
@@ -9761,7 +9761,8 @@
PACKETVER == 20190731 || \
PACKETVER == 20190802 || \
PACKETVER == 20190807 || \
- PACKETVER >= 20190821
+ PACKETVER == 20190821 || \
+ PACKETVER >= 20190828
packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
@@ -9793,5 +9794,39 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
+// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe
+#if PACKETVER == 20190904 || \
+ PACKETVER == 20190918
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
#endif /* MAP_PACKETS_SHUFFLE_MAIN_H */
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index 044788301..f2a1b96ad 100644
--- a/src/map/packets_shuffle_re.h
+++ b/src/map/packets_shuffle_re.h
@@ -9663,7 +9663,7 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 12
#endif
-// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE
+// 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexeRE, 2018-08-01cRagexeRE, 2018-08-08bRagexeRE, 2018-08-22cRagexeRE, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-09-12dRagexeRE, 2018-09-19aRagexeRE, 2018-10-02aRagexeRE, 2018-10-02bRagexeRE, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexeRE, 2018-10-17bRagexeRE, 2018-10-31cRagexeRE, 2018-11-07aRagexeRE, 2018-11-14cRagexeRE, 2018-11-14dRagexeRE, 2018-11-21cRagexeRE, 2018-11-28aRagexeRE, 2018-12-05bRagexeRE, 2018-12-12aRagexeRE, 2018-12-12bRagexeRE, 2018-12-19bRagexeRE, 2018-12-26aRagexeRE, 2019-01-09bRagexeRE, 2019-01-16bRagexeRE, 2019-01-16cRagexeRE, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-20aRagexeRE, 2019-02-27bRagexeRE, 2019-02-28aRagexeRE, 2019-03-06bRagexeRE, 2019-03-06cRagexeRE, 2019-03-20aRagexeRE, 2019-03-22aRagexeRE, 2019-03-27bRagexeRE, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17cRagexeRE, 2019-04-18aRagexeRE, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexeRE, 2019-05-22cRagexeRE, 2019-05-29bRagexeRE, 2019-05-29cRagexeRE, 2019-05-30aRagexeRE, 2019-06-05hRagexeRE, 2019-06-05JRagexeRE, 2019-06-05LRagexeRE, 2019-06-19cRagexeRE, 2019-06-26bRagexeRE, 2019-07-03bRagexeRE, 2019-07-17cRagexeRE, 2019-07-17dRagexeRE, 2019-07-24bRagexeRE, 2019-07-31bRagexeRE, 2019-08-02aRagexeRE, 2019-08-07dRagexeRE, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexeRE
#if PACKETVER == 20180704 || \
PACKETVER == 20180711 || \
PACKETVER == 20180718 || \
@@ -9711,7 +9711,8 @@
PACKETVER == 20190731 || \
PACKETVER == 20190802 || \
PACKETVER == 20190807 || \
- PACKETVER >= 20190821
+ PACKETVER == 20190821 || \
+ PACKETVER >= 20190828
packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
@@ -9743,5 +9744,39 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
+// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE
+#if PACKETVER == 20190904 || \
+ PACKETVER == 20190918
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
#endif /* MAP_PACKETS_SHUFFLE_RE_H */
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index 109dadaba..4d6da7a8a 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -803,5 +803,40 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
+// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero
+#if PACKETVER == 20190828 || \
+ PACKETVER == 20190911 || \
+ PACKETVER == 20190918
+ packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
+ packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
+ packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
+ packet(0x0281,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK // 4
+ packet(0x02c4,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ // 26
+ packet(0x035f,clif->pWalkToXY,2); // CZ_REQUEST_MOVE // 5
+ packet(0x0360,clif->pTickSend,2); // CZ_REQUEST_TIME // 6
+ packet(0x0361,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION // 5
+ packet(0x0362,clif->pTakeItem,2); // CZ_ITEM_PICKUP // 6
+ packet(0x0363,clif->pDropItem,2,4); // CZ_ITEM_THROW // 6
+ packet(0x0364,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE // 8
+ packet(0x0365,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY // 8
+ packet(0x0366,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND // 10
+ packet(0x0367,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX // 31
+ packet(0x0368,clif->pGetCharNameRequest,2); // CZ_REQNAME // 6
+ packet(0x0369,clif->pSolveCharName,2); // CZ_REQNAME_BYGID // 6
+ packet(0x0436,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER // 19
+ packet(0x0437,clif->pActionRequest,2,6); // CZ_REQUEST_ACT // 7
+ packet(0x0438,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL // 10
+ packet(0x07e4,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES // -1
+ packet(0x07ec,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD // 8
+ packet(0x0802,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER // 18
+ packet(0x0811,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE // -1
+ packet(0x0815,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE // 2
+ packet(0x0817,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE // 6
+ packet(0x0819,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE // -1
+ packet(0x0835,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO // -1
+ packet(0x0838,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE // 2
+ packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
+#endif
+
#endif /* MAP_PACKETS_SHUFFLE_ZERO_H */
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index d12dc14d4..93b4abcca 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -3460,6 +3460,14 @@ struct PACKET_ZC_REFINE_STATUS {
DEFINE_PACKET_HEADER(ZC_REFINE_STATUS, 0x0ada);
#endif
+struct PACKET_ZC_ACK_RANKING_name {
+ char name[NAME_LENGTH];
+} __attribute__((packed));
+
+struct PACKET_ZC_ACK_RANKING_points {
+ uint32 points;
+} __attribute__((packed));
+
#if PACKETVER_MAIN_NUM >= 20190731 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190724
struct PACKET_ZC_ACK_RANKING_sub {
char name[NAME_LENGTH];
@@ -3476,21 +3484,22 @@ struct PACKET_ZC_ACK_RANKING {
DEFINE_PACKET_HEADER(ZC_ACK_RANKING, 0x0af6);
#elif PACKETVER_MAIN_NUM >= 20130605 || PACKETVER_RE_NUM >= 20130529 || defined(PACKETVER_ZERO)
struct PACKET_ZC_ACK_RANKING_sub {
- char name[NAME_LENGTH];
- uint32 points;
+ struct PACKET_ZC_ACK_RANKING_name names[10];
+ struct PACKET_ZC_ACK_RANKING_points points[10];
} __attribute__((packed));
struct PACKET_ZC_ACK_RANKING {
int16 packetType;
int16 rankType;
- struct PACKET_ZC_ACK_RANKING_sub ranks[10];
+ struct PACKET_ZC_ACK_RANKING_sub ranks;
uint32 myPoints;
} __attribute__((packed));
+
DEFINE_PACKET_HEADER(ZC_ACK_RANKING, 0x097d);
#else
struct PACKET_ZC_ACK_RANKING_sub {
- char name[NAME_LENGTH];
- uint32 points;
+ struct PACKET_ZC_ACK_RANKING_name names[10];
+ struct PACKET_ZC_ACK_RANKING_points points[10];
} __attribute__((packed));
#endif
@@ -3514,7 +3523,7 @@ DEFINE_PACKET_HEADER(ZC_HAT_EFFECT, 0x0a3b);
#endif
// [4144] this struct updated not in all packets in client
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
struct SKILLDATA {
uint16 id;
int inf;
@@ -3540,7 +3549,7 @@ struct PACKET_ZC_ADD_SKILL {
int16 packetType;
struct SKILLDATA skill;
} __attribute__((packed));
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
DEFINE_PACKET_HEADER(ZC_ADD_SKILL, 0x0b31);
#else
DEFINE_PACKET_HEADER(ZC_ADD_SKILL, 0x0111);
@@ -3551,13 +3560,13 @@ struct PACKET_ZC_SKILLINFO_LIST {
int16 packetLength;
struct SKILLDATA skills[];
} __attribute__((packed));
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
DEFINE_PACKET_HEADER(ZC_SKILLINFO_LIST, 0x0b32);
#else
DEFINE_PACKET_HEADER(ZC_SKILLINFO_LIST, 0x010f);
#endif
-#if PACKETVER_RE_NUM >= 20190807 || PACKETVER_ZERO_NUM >= 20190814
+#if PACKETVER_RE_NUM >= 20190807
struct PACKET_ZC_SKILLINFO_UPDATE2 {
int16 packetType;
uint16 id;
@@ -3610,6 +3619,13 @@ struct PACKET_ZC_NPC_MARKET_PURCHASE_RESULT {
DEFINE_PACKET_HEADER(ZC_NPC_MARKET_PURCHASE_RESULT, 0x09d7);
#endif
+struct PACKET_ZC_TALKBOX_CHATCONTENTS {
+ int16 PacketType;
+ uint32 aid;
+ char message[TALKBOX_MESSAGE_SIZE];
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_TALKBOX_CHATCONTENTS, 0x0191);
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/party.c b/src/map/party.c
index dc330d92d..9fbe915f3 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -886,17 +886,20 @@ static int party_send_logout(struct map_session_data *sd)
static int party_send_message(struct map_session_data *sd, const char *mes)
{
- int len;
-
nullpo_ret(sd);
nullpo_ret(mes);
- len = (int)strlen(mes);
-
if (sd->status.party_id == 0)
return 0;
- intif->party_message(sd->status.party_id, sd->status.account_id, mes, len);
- party->recv_message(sd->status.party_id, sd->status.account_id, mes, len);
+
+ struct party_data *p = party->search(sd->status.party_id);
+
+ if (p == NULL)
+ return 0;
+
+ int len = (int)strlen(mes);
+
+ clif->party_message(p, sd->status.account_id, mes, len);
// Chat logging type 'P' / Party Chat
logs->chat(LOG_CHAT_PARTY, sd->status.party_id, sd->status.char_id, sd->status.account_id, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y, NULL, mes);
@@ -904,15 +907,6 @@ static int party_send_message(struct map_session_data *sd, const char *mes)
return 0;
}
-static int party_recv_message(int party_id, int account_id, const char *mes, int len)
-{
- struct party_data *p;
- if( (p=party->search(party_id))==NULL)
- return 0;
- clif->party_message(p,account_id,mes,len);
- return 0;
-}
-
static int party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv)
{
struct party_data *p;
@@ -1532,7 +1526,6 @@ void party_defaults(void)
party->send_levelup = party_send_levelup;
party->send_logout = party_send_logout;
party->send_message = party_send_message;
- party->recv_message = party_recv_message;
party->skill_check = party_skill_check;
party->send_xy_clear = party_send_xy_clear;
party->exp_share = party_exp_share;
diff --git a/src/map/party.h b/src/map/party.h
index 28e16dff7..1831da414 100644
--- a/src/map/party.h
+++ b/src/map/party.h
@@ -118,7 +118,6 @@ struct party_interface {
void (*send_levelup) (struct map_session_data *sd);
int (*send_logout) (struct map_session_data *sd);
int (*send_message) (struct map_session_data *sd, const char *mes);
- int (*recv_message) (int party_id,int account_id,const char *mes,int len);
int (*skill_check) (struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv);
int (*send_xy_clear) (struct party_data *p);
int (*exp_share) (struct party_data *p,struct block_list *src,unsigned int base_exp,unsigned int job_exp,int zeny);
diff --git a/src/map/pc.c b/src/map/pc.c
index 9ca35acce..8ac820d79 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -10989,7 +10989,7 @@ static int map_day_timer(int tid, int64 tick, int id, intptr_t data)
map->night_flag = 0; // 0=day, 1=night [Yor]
map->foreachpc(pc->daynight_timer_sub);
safestrncpy(tmp_soutput, (data == 0) ? msg_txt(502) : msg_txt(60), sizeof(tmp_soutput)); // The day has arrived!
- intif->broadcast(tmp_soutput, (int)strlen(tmp_soutput) + 1, BC_DEFAULT);
+ clif->broadcast(NULL, tmp_soutput, (int)strlen(tmp_soutput) + 1, BC_DEFAULT, ALL_CLIENT);
return 0;
}
@@ -11010,7 +11010,7 @@ static int map_night_timer(int tid, int64 tick, int id, intptr_t data)
map->night_flag = 1; // 0=day, 1=night [Yor]
map->foreachpc(pc->daynight_timer_sub);
safestrncpy(tmp_soutput, (data == 0) ? msg_txt(503) : msg_txt(59), sizeof(tmp_soutput)); // The night has fallen...
- intif->broadcast(tmp_soutput, (int)strlen(tmp_soutput) + 1, BC_DEFAULT);
+ clif->broadcast(NULL, tmp_soutput, (int)strlen(tmp_soutput) + 1, BC_DEFAULT, ALL_CLIENT);
return 0;
}
@@ -12214,6 +12214,29 @@ static int pc_have_magnifier(struct map_session_data *sd)
}
/**
+ * checks if player have any item that listed in item chain
+ * @param sd map_session_data of Player
+ * @param chain_id unsigned short of item chain id
+ * @return index of inventory, INDEX_NOT_FOUND if it is not found
+ */
+static int pc_have_item_chain(struct map_session_data *sd, unsigned short chain_id)
+{
+ if (chain_id >= itemdb->chain_count) {
+ ShowError("itemdb_chain_item: unknown chain id %d\n", chain_id);
+ return INDEX_NOT_FOUND;
+ }
+
+ for (int n = 0; n < itemdb->chains[chain_id].qty; n++) {
+ struct item_chain_entry *entry = &itemdb->chains[chain_id].items[n];
+ int index = pc->search_inventory(sd, entry->id);
+ if (index != INDEX_NOT_FOUND)
+ return index;
+ }
+
+ return INDEX_NOT_FOUND;
+}
+
+/**
* Checks if player have basic skills learned.
* @param sd Player Data
* @param level Required Level of Novice Skill
@@ -12310,6 +12333,54 @@ static void pc_check_supernovice_call(struct map_session_data *sd, const char *m
}
}
+/**
+ * Sends a message t all online GMs having the specified permission.
+ *
+ * @param sender_name Sender character name.
+ * @param permission The required permission to receive this message.
+ * @param message The message body.
+ *
+ * @return The amount of characters the message was delivered to.
+ */
+// The transmission of GM only Wisp/Page from server to inter-server
+static int pc_wis_message_to_gm(const char *sender_name, int permission, const char *message)
+{
+ nullpo_ret(sender_name);
+ nullpo_ret(message);
+ int mes_len = (int)strlen(message) + 1; // + null
+ int count = 0;
+
+ // information is sent to all online GM
+ map->foreachpc(pc->wis_message_to_gm_sub, permission, sender_name, message, mes_len, &count);
+
+ return count;
+}
+
+/**
+ * Helper function for pc_wis_message_to_gm().
+ */
+static int pc_wis_message_to_gm_sub(struct map_session_data *sd, va_list va)
+{
+ nullpo_ret(sd);
+
+ int permission = va_arg(va, int);
+ if (!pc_has_permission(sd, permission))
+ return 0;
+
+ const char *sender_name = va_arg(va, const char *);
+ const char *message = va_arg(va, const char *);
+ int len = va_arg(va, int);
+ int *count = va_arg(va, int *);
+
+ nullpo_ret(sender_name);
+ nullpo_ret(message);
+ nullpo_ret(count);
+
+ clif->wis_message(sd->fd, sender_name, message, len);
+ ++*count;
+ return 1;
+}
+
static void pc_update_job_and_level(struct map_session_data *sd)
{
nullpo_retv(sd);
@@ -12757,6 +12828,8 @@ void pc_defaults(void)
pc->check_supernovice_call = pc_check_supernovice_call;
pc->process_chat_message = pc_process_chat_message;
+ pc->wis_message_to_gm = pc_wis_message_to_gm;
+ pc->wis_message_to_gm_sub = pc_wis_message_to_gm_sub;
/**
* Autotrade persistency [Ind/Hercules <3]
@@ -12772,6 +12845,7 @@ void pc_defaults(void)
pc->update_idle_time = pc_update_idle_time;
pc->have_magnifier = pc_have_magnifier;
+ pc->have_item_chain = pc_have_item_chain;
pc->check_basicskill = pc_check_basicskill;
diff --git a/src/map/pc.h b/src/map/pc.h
index 0770e13cb..49edea61b 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -1184,8 +1184,11 @@ END_ZEROED_BLOCK; /* End */
void (*update_idle_time) (struct map_session_data* sd, enum e_battle_config_idletime type);
int (*have_magnifier) (struct map_session_data *sd);
+ int (*have_item_chain) (struct map_session_data *sd, unsigned short chain_id);
bool (*process_chat_message) (struct map_session_data *sd, const char *message);
+ int (*wis_message_to_gm) (const char *sender_name, int permission, const char *message);
+ int (*wis_message_to_gm_sub) (struct map_session_data *sd, va_list va);
void (*check_supernovice_call) (struct map_session_data *sd, const char *message);
bool (*check_basicskill) (struct map_session_data *sd, int level);
bool (*isDeathPenaltyJob) (uint16 job);
diff --git a/src/map/script.c b/src/map/script.c
index 04c985ea4..4bd8f2c85 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -11914,12 +11914,12 @@ static BUILDIN(announce)
int fontAlign = script_hasdata(st,7) ? script_getnum(st,7) : 0; // default fontAlign
int fontY = script_hasdata(st,8) ? script_getnum(st,8) : 0; // default fontY
size_t len = strlen(mes);
+ send_target target = ALL_CLIENT;
+ struct block_list *bl = NULL;
Assert_retr(false, len < INT_MAX);
if( flag&(BC_TARGET_MASK|BC_SOURCE_MASK) ) {
// Broadcast source or broadcast region defined
- send_target target;
- struct block_list *bl = NULL;
if (flag&BC_NPC) {
// If bc_npc flag is set, use NPC as broadcast source
bl = map->id2bl(st->oid);
@@ -11937,17 +11937,13 @@ static BUILDIN(announce)
case BC_SELF: target = SELF; break;
default: target = ALL_CLIENT; break; // BC_ALL
}
-
- if (fontColor)
- clif->broadcast2(bl, mes, (int)len+1, (unsigned int)strtoul(fontColor, (char **)NULL, 0), fontType, fontSize, fontAlign, fontY, target);
- else
- clif->broadcast(bl, mes, (int)len+1, flag&BC_COLOR_MASK, target);
- } else {
- if (fontColor)
- intif->broadcast2(mes, (int)len+1, (unsigned int)strtoul(fontColor, (char **)NULL, 0), fontType, fontSize, fontAlign, fontY);
- else
- intif->broadcast(mes, (int)len+1, flag&BC_COLOR_MASK);
}
+
+ if (fontColor)
+ clif->broadcast2(bl, mes, (int)len+1, (unsigned int)strtoul(fontColor, (char **)NULL, 0), fontType, fontSize, fontAlign, fontY, target);
+ else
+ clif->broadcast(bl, mes, (int)len+1, flag&BC_COLOR_MASK, target);
+
return true;
}
/*==========================================
@@ -14588,6 +14584,82 @@ static BUILDIN(getiteminfo)
case ITEMINFO_TRADE:
script_pushint(st, it->flag.trade_restriction);
break;
+ case ITEMINFO_ELV_MAX:
+ script_pushint(st, it->elvmax);
+ break;
+ case ITEMINFO_DROPEFFECT_MODE:
+ script_pushint(st, it->dropeffectmode);
+ break;
+ case ITEMINFO_DELAY:
+ script_pushint(st, it->delay);
+ break;
+ case ITEMINFO_CLASS_BASE_1:
+ script_pushint(st, it->class_base[0]);
+ break;
+ case ITEMINFO_CLASS_BASE_2:
+ script_pushint(st, it->class_base[1]);
+ break;
+ case ITEMINFO_CLASS_BASE_3:
+ script_pushint(st, it->class_base[2]);
+ break;
+ case ITEMINFO_CLASS_UPPER:
+ script_pushint(st, it->class_upper);
+ break;
+ case ITEMINFO_FLAG_NO_REFINE:
+ script_pushint(st, it->flag.no_refine);
+ break;
+ case ITEMINFO_FLAG_DELAY_CONSUME:
+ script_pushint(st, it->flag.delay_consume);
+ break;
+ case ITEMINFO_FLAG_AUTOEQUIP:
+ script_pushint(st, it->flag.autoequip);
+ break;
+ case ITEMINFO_FLAG_AUTO_FAVORITE:
+ script_pushint(st, it->flag.auto_favorite);
+ break;
+ case ITEMINFO_FLAG_BUYINGSTORE:
+ script_pushint(st, it->flag.buyingstore);
+ break;
+ case ITEMINFO_FLAG_BINDONEQUIP:
+ script_pushint(st, it->flag.bindonequip);
+ break;
+ case ITEMINFO_FLAG_KEEPAFTERUSE:
+ script_pushint(st, it->flag.keepafteruse);
+ break;
+ case ITEMINFO_FLAG_FORCE_SERIAL:
+ script_pushint(st, it->flag.force_serial);
+ break;
+ case ITEMINFO_FLAG_NO_OPTIONS:
+ script_pushint(st, it->flag.no_options);
+ break;
+ case ITEMINFO_FLAG_DROP_ANNOUNCE:
+ script_pushint(st, it->flag.drop_announce);
+ break;
+ case ITEMINFO_FLAG_SHOWDROPEFFECT:
+ script_pushint(st, it->flag.showdropeffect);
+ break;
+ case ITEMINFO_STACK_AMOUNT:
+ script_pushint(st, it->stack.amount);
+ break;
+ case ITEMINFO_STACK_FLAG:
+ {
+ int stack_flag = 0;
+ if (it->stack.inventory != 0) stack_flag |= 1;
+ if (it->stack.cart != 0) stack_flag |= 2;
+ if (it->stack.storage != 0) stack_flag |= 4;
+ if (it->stack.guildstorage != 0) stack_flag |= 8;
+ script_pushint(st, stack_flag);
+ }
+ break;
+ case ITEMINFO_ITEM_USAGE_FLAG:
+ script_pushint(st, it->item_usage.flag);
+ break;
+ case ITEMINFO_ITEM_USAGE_OVERRIDE:
+ script_pushint(st, it->item_usage.override);
+ break;
+ case ITEMINFO_GM_LV_TRADE_OVERRIDE:
+ script_pushint(st, it->gm_lv_trade_override);
+ break;
default:
ShowError("buildin_getiteminfo: Invalid item type %d.\n", n);
script_pushint(st,-1);
@@ -14857,6 +14929,78 @@ static BUILDIN(setiteminfo)
case ITEMINFO_TRADE:
it->flag.trade_restriction = value;
break;
+ case ITEMINFO_ELV_MAX:
+ it->elvmax = cap_value(value, 0, MAX_LEVEL);
+ break;
+ case ITEMINFO_DROPEFFECT_MODE:
+ it->dropeffectmode = value;
+ break;
+ case ITEMINFO_DELAY:
+ it->delay = value;
+ break;
+ case ITEMINFO_CLASS_BASE_1:
+ it->class_base[0] = value;
+ break;
+ case ITEMINFO_CLASS_BASE_2:
+ it->class_base[1] = value;
+ break;
+ case ITEMINFO_CLASS_BASE_3:
+ it->class_base[2] = value;
+ break;
+ case ITEMINFO_CLASS_UPPER:
+ it->class_upper = value;
+ break;
+ case ITEMINFO_FLAG_NO_REFINE:
+ it->flag.no_refine = cap_value(value, 0, MAX_REFINE);
+ break;
+ case ITEMINFO_FLAG_DELAY_CONSUME:
+ it->flag.delay_consume = value;
+ break;
+ case ITEMINFO_FLAG_AUTOEQUIP:
+ it->flag.autoequip = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_AUTO_FAVORITE:
+ it->flag.auto_favorite = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_BUYINGSTORE:
+ it->flag.buyingstore = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_BINDONEQUIP:
+ it->flag.bindonequip = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_KEEPAFTERUSE:
+ it->flag.keepafteruse = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_FORCE_SERIAL:
+ it->flag.force_serial = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_NO_OPTIONS:
+ it->flag.no_options = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_DROP_ANNOUNCE:
+ it->flag.drop_announce = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_FLAG_SHOWDROPEFFECT:
+ it->flag.showdropeffect = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_STACK_AMOUNT:
+ it->stack.amount = cap_value(value, 0, USHRT_MAX);
+ break;
+ case ITEMINFO_STACK_FLAG:
+ it->stack.inventory = ((value & 1) != 0);
+ it->stack.cart = ((value & 2) != 0);
+ it->stack.storage = ((value & 4) != 0);
+ it->stack.guildstorage = ((value & 8) != 0);
+ break;
+ case ITEMINFO_ITEM_USAGE_FLAG:
+ it->item_usage.flag = cap_value(value, 0, 1);
+ break;
+ case ITEMINFO_ITEM_USAGE_OVERRIDE:
+ it->item_usage.override = value;
+ break;
+ case ITEMINFO_GM_LV_TRADE_OVERRIDE:
+ it->gm_lv_trade_override = value;
+ break;
default:
ShowError("buildin_setiteminfo: invalid type %d.\n", n);
script_pushint(st,-1);
@@ -26694,6 +26838,29 @@ static void script_hardcoded_constants(void)
script->set_constant("ITEMINFO_MATK", ITEMINFO_MATK, false, false);
script->set_constant("ITEMINFO_VIEWSPRITE", ITEMINFO_VIEWSPRITE, false, false);
script->set_constant("ITEMINFO_TRADE", ITEMINFO_TRADE, false, false);
+ script->set_constant("ITEMINFO_ELV_MAX", ITEMINFO_ELV_MAX, false, false);
+ script->set_constant("ITEMINFO_DROPEFFECT_MODE", ITEMINFO_DROPEFFECT_MODE, false, false);
+ script->set_constant("ITEMINFO_DELAY", ITEMINFO_DELAY, false, false);
+ script->set_constant("ITEMINFO_CLASS_BASE_1", ITEMINFO_CLASS_BASE_1, false, false);
+ script->set_constant("ITEMINFO_CLASS_BASE_2", ITEMINFO_CLASS_BASE_2, false, false);
+ script->set_constant("ITEMINFO_CLASS_BASE_3", ITEMINFO_CLASS_BASE_3, false, false);
+ script->set_constant("ITEMINFO_CLASS_UPPER", ITEMINFO_CLASS_UPPER, false, false);
+ script->set_constant("ITEMINFO_FLAG_NO_REFINE", ITEMINFO_FLAG_NO_REFINE, false, false);
+ script->set_constant("ITEMINFO_FLAG_DELAY_CONSUME", ITEMINFO_FLAG_DELAY_CONSUME, false, false);
+ script->set_constant("ITEMINFO_FLAG_AUTOEQUIP", ITEMINFO_FLAG_AUTOEQUIP, false, false);
+ script->set_constant("ITEMINFO_FLAG_AUTO_FAVORITE", ITEMINFO_FLAG_AUTO_FAVORITE, false, false);
+ script->set_constant("ITEMINFO_FLAG_BUYINGSTORE", ITEMINFO_FLAG_BUYINGSTORE, false, false);
+ script->set_constant("ITEMINFO_FLAG_BINDONEQUIP", ITEMINFO_FLAG_BINDONEQUIP, false, false);
+ script->set_constant("ITEMINFO_FLAG_KEEPAFTERUSE", ITEMINFO_FLAG_KEEPAFTERUSE, false, false);
+ script->set_constant("ITEMINFO_FLAG_FORCE_SERIAL", ITEMINFO_FLAG_FORCE_SERIAL, false, false);
+ script->set_constant("ITEMINFO_FLAG_NO_OPTIONS", ITEMINFO_FLAG_NO_OPTIONS, false, false);
+ script->set_constant("ITEMINFO_FLAG_DROP_ANNOUNCE", ITEMINFO_FLAG_DROP_ANNOUNCE, false, false);
+ script->set_constant("ITEMINFO_FLAG_SHOWDROPEFFECT", ITEMINFO_FLAG_SHOWDROPEFFECT, false, false);
+ script->set_constant("ITEMINFO_STACK_AMOUNT", ITEMINFO_STACK_AMOUNT, false, false);
+ script->set_constant("ITEMINFO_STACK_FLAG", ITEMINFO_STACK_FLAG, false, false);
+ script->set_constant("ITEMINFO_ITEM_USAGE_FLAG", ITEMINFO_ITEM_USAGE_FLAG, false, false);
+ script->set_constant("ITEMINFO_ITEM_USAGE_OVERRIDE", ITEMINFO_ITEM_USAGE_OVERRIDE, false, false);
+ script->set_constant("ITEMINFO_GM_LV_TRADE_OVERRIDE", ITEMINFO_GM_LV_TRADE_OVERRIDE, false, false);
script->constdb_comment("getmercinfo options");
script->set_constant("MERCINFO_ID,", MERCINFO_ID, false, false);
diff --git a/src/map/script.h b/src/map/script.h
index 84a8e3b6e..5dc480a15 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -460,7 +460,30 @@ enum script_iteminfo_types {
ITEMINFO_MATK,
ITEMINFO_VIEWSPRITE,
ITEMINFO_TRADE,
-
+ ITEMINFO_ELV_MAX,
+ ITEMINFO_DROPEFFECT_MODE,
+ ITEMINFO_DELAY,
+ ITEMINFO_CLASS_BASE_1,
+ ITEMINFO_CLASS_BASE_2,
+ ITEMINFO_CLASS_BASE_3,
+ ITEMINFO_CLASS_UPPER,
+ // ITEMINFO_FLAG_AVAILABLE,
+ ITEMINFO_FLAG_NO_REFINE,
+ ITEMINFO_FLAG_DELAY_CONSUME,
+ ITEMINFO_FLAG_AUTOEQUIP,
+ ITEMINFO_FLAG_AUTO_FAVORITE,
+ ITEMINFO_FLAG_BUYINGSTORE,
+ ITEMINFO_FLAG_BINDONEQUIP,
+ ITEMINFO_FLAG_KEEPAFTERUSE,
+ ITEMINFO_FLAG_FORCE_SERIAL,
+ ITEMINFO_FLAG_NO_OPTIONS,
+ ITEMINFO_FLAG_DROP_ANNOUNCE,
+ ITEMINFO_FLAG_SHOWDROPEFFECT,
+ ITEMINFO_STACK_AMOUNT,
+ ITEMINFO_STACK_FLAG,
+ ITEMINFO_ITEM_USAGE_FLAG,
+ ITEMINFO_ITEM_USAGE_OVERRIDE,
+ ITEMINFO_GM_LV_TRADE_OVERRIDE,
ITEMINFO_MAX
};
diff --git a/src/map/status.c b/src/map/status.c
index e9636e214..ba32b267e 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -8847,7 +8847,9 @@ static int status_change_start(struct block_list *src, struct block_list *bl, en
case SC_KAIZEL:
val2 = 10*val1; //% of life to be revived with
break;
- // case SC_ARMORPROPERTY:
+ case SC_ARMORPROPERTY:
+ clif->status_change(bl, (val1 > 0 ? SI_RESIST_PROPERTY_WATER : (val2 > 0 ? SI_RESIST_PROPERTY_GROUND : (val3 > 0 ? SI_RESIST_PROPERTY_FIRE : (val4 > 0 ? SI_RESIST_PROPERTY_WIND : SI_BLANK)))), 1, tick, 0, 0, 0);
+ break;
// case SC_ARMOR_RESIST:
// Mod your resistance against elements:
// val1 = water | val2 = earth | val3 = fire | val4 = wind
@@ -13395,25 +13397,104 @@ static bool status_readdb_sizefix(char *fields[], int columns, int current)
return true;
}
-static bool status_readdb_scconfig(char *fields[], int columns, int current)
+static bool status_read_scdb_libconfig(void)
{
- int val = 0;
- char* type = fields[0];
+ struct config_t status_conf;
+ char filepath[256];
+ safesnprintf(filepath, sizeof(filepath), "%s/%s", map->db_path, "sc_config.conf");
- nullpo_retr(false, fields);
- if( !script->get_constant(type, &val) ){
- ShowWarning("status_readdb_sc_conf: Invalid status type %s specified.\n", type);
+ if (libconfig->load_file(&status_conf, filepath) == CONFIG_FALSE) {
+ ShowError("status_read_scdb_libconfig: can't read %s\n", filepath);
return false;
}
- status->dbs->sc_conf[val] = (int)strtol(fields[1], NULL, 0);
- if (status->dbs->sc_conf[val] & SC_VISIBLE)
- {
- status->dbs->DisplayType[val] = true;
+ int i = 0;
+ int count = 0;
+ struct config_setting_t *it = NULL;
+
+ while ((it = libconfig->setting_get_elem(status_conf.root, i++)) != NULL) {
+ if (status->read_scdb_libconfig_sub(it, i - 1, filepath))
+ ++count;
}
+ libconfig->destroy(&status_conf);
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
+ return true;
+}
+
+static bool status_read_scdb_libconfig_sub(struct config_setting_t *it, int idx, const char *source)
+{
+ nullpo_retr(false, it);
+ nullpo_retr(false, source);
+
+ int i32;
+ const char *name = config_setting_name(it);
+
+ if (!script->get_constant(name, &i32) || i32 <= SC_NONE || i32 >= SC_MAX) {
+ ShowWarning("status_read_scdb_libconfig_sub: Invalid status type (%s) in \"%s\" entry #%d, skipping.\n", name, source, idx);
+ return false;
+ }
+
+ libconfig->setting_lookup_bool_real(it, "Visible", &status->dbs->DisplayType[i32]);
+
+ struct config_setting_t *fg = libconfig->setting_get_member(it, "Flags");
+ if (fg != NULL)
+ status->read_scdb_libconfig_sub_flag(fg, i32, source);
+
return true;
}
+
+static bool status_read_scdb_libconfig_sub_flag(struct config_setting_t *it, int type, const char *source)
+{
+ nullpo_retr(false, it);
+ nullpo_retr(false, source);
+ Assert_retr(false, type > SC_NONE && type < SC_MAX);
+
+ int i = 0;
+ struct config_setting_t *t = NULL;
+ while ((t = libconfig->setting_get_elem(it, i++)) != NULL) {
+ const char *flag = config_setting_name(t);
+ bool on = libconfig->setting_get_bool_real(t);
+ int j;
+
+ struct {
+ const char *name;
+ enum sc_conf_type value;
+ } flags[] = {
+ { "NoDeathReset", SC_NO_REM_DEATH },
+ { "NoSave", SC_NO_SAVE },
+ { "NoDispelReset", SC_NO_DISPELL },
+ { "NoClearanceReset", SC_NO_CLEARANCE },
+ { "Buff", SC_BUFF },
+ { "Debuff", SC_DEBUFF },
+ { "NoMadoReset", SC_MADO_NO_RESET },
+ { "NoAllReset", SC_NO_CLEAR }
+ };
+
+ ARR_FIND(0, ARRAYLENGTH(flags), j, strcmpi(flag, flags[j].name) == 0);
+ if (j != ARRAYLENGTH(flags)) {
+ if (strcmp(flag, flags[j].name) != 0) {
+ ShowWarning("status_read_scdb_libconfig_sub_flag: flag (%s) for status effect (%d) is casesensitive, correct it to (%s).", flag, type, flags[i].name);
+ }
+ if (on) {
+ status->dbs->sc_conf[type] |= flags[j].value;
+ } else {
+ status->dbs->sc_conf[type] &= ~flags[j].value;
+ }
+ } else {
+ if (!status->read_scdb_libconfig_sub_flag_additional(it, type, source))
+ ShowWarning("status_read_scdb_libconfig_sub_flag: invalid flag (%s) for status effect (%d).", flag, type);
+ }
+ }
+ return true;
+}
+
+static bool status_read_scdb_libconfig_sub_flag_additional(struct config_setting_t *it, int type, const char *source)
+{
+ // to be used by plugins
+ return false;
+}
+
/**
* Read status db
* job1.txt
@@ -13452,7 +13533,7 @@ static int status_readdb(void)
//
sv->readdb(map->db_path, "job_db2.txt", ',', 1, 1+MAX_LEVEL, -1, status->readdb_job2);
sv->readdb(map->db_path, DBPATH"size_fix.txt", ',', MAX_SINGLE_WEAPON_TYPE, MAX_SINGLE_WEAPON_TYPE, ARRAYLENGTH(status->dbs->atkmods), status->readdb_sizefix);
- sv->readdb(map->db_path, "sc_config.txt", ',', 2, 2, SC_MAX, status->readdb_scconfig);
+ status->read_scdb_libconfig();
status->read_job_db();
pc->validate_levels();
@@ -13642,7 +13723,10 @@ void status_defaults(void)
status->natural_heal_timer = status_natural_heal_timer;
status->readdb_job2 = status_readdb_job2;
status->readdb_sizefix = status_readdb_sizefix;
- status->readdb_scconfig = status_readdb_scconfig;
+ status->read_scdb_libconfig = status_read_scdb_libconfig;
+ status->read_scdb_libconfig_sub = status_read_scdb_libconfig_sub;
+ status->read_scdb_libconfig_sub_flag = status_read_scdb_libconfig_sub_flag;
+ status->read_scdb_libconfig_sub_flag_additional = status_read_scdb_libconfig_sub_flag_additional;
status->read_job_db = status_read_job_db;
status->read_job_db_sub = status_read_job_db_sub;
status->set_sc = status_set_sc;
diff --git a/src/map/status.h b/src/map/status.h
index 853a7a1a6..536003d04 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -50,7 +50,7 @@ struct pet_data;
/**
* SC configuration type
- * @see db/sc_config.txt for more information
+ * @see db/sc_config.conf for more information
**/
typedef enum sc_conf_type {
SC_NO_REM_DEATH = 0x001,
@@ -1772,10 +1772,10 @@ enum si_type {
//SI_ATTACK_PROPERTY_TELEKINESIS = 905,
//SI_ATTACK_PROPERTY_UNDEAD = 906,
//SI_RESIST_PROPERTY_NOTHING = 907,
- //SI_RESIST_PROPERTY_WATER = 908,
- //SI_RESIST_PROPERTY_GROUND = 909,
- //SI_RESIST_PROPERTY_FIRE = 910,
- //SI_RESIST_PROPERTY_WIND = 911,
+ SI_RESIST_PROPERTY_WATER = 908,
+ SI_RESIST_PROPERTY_GROUND = 909,
+ SI_RESIST_PROPERTY_FIRE = 910,
+ SI_RESIST_PROPERTY_WIND = 911,
//SI_RESIST_PROPERTY_POISON = 912,
//SI_RESIST_PROPERTY_SAINT = 913,
//SI_RESIST_PROPERTY_DARKNESS = 914,
@@ -2387,7 +2387,10 @@ struct status_interface {
int (*natural_heal_timer) (int tid, int64 tick, int id, intptr_t data);
bool (*readdb_job2) (char *fields[], int columns, int current);
bool (*readdb_sizefix) (char *fields[], int columns, int current);
- bool (*readdb_scconfig) (char *fields[], int columns, int current);
+ bool (*read_scdb_libconfig) (void);
+ bool (*read_scdb_libconfig_sub) (struct config_setting_t *it, int idx, const char *source);
+ bool (*read_scdb_libconfig_sub_flag) (struct config_setting_t *it, int type, const char *source);
+ bool (*read_scdb_libconfig_sub_flag_additional) (struct config_setting_t *it, int type, const char *source);
void (*read_job_db) (void);
void (*read_job_db_sub) (int idx, const char *name, struct config_setting_t *jdb);
void (*set_sc) (uint16 skill_id, sc_type sc, int icon, unsigned int flag);
diff --git a/src/map/trade.c b/src/map/trade.c
index 7096d12e4..ff5c04fc3 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -226,9 +226,9 @@ static int impossible_trade_check(struct map_session_data *sd)
if (inventory[index].amount < sd->deal.item[i].amount) {
// if more than the player have -> hack
snprintf(message_to_gm, sizeof(message_to_gm), msg_txt(538), sd->status.name, sd->status.account_id); // Hack on trade: character '%s' (account: %d) try to trade more items that he has.
- intif->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
+ pc->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
snprintf(message_to_gm, sizeof(message_to_gm), msg_txt(539), inventory[index].amount, inventory[index].nameid, sd->deal.item[i].amount); // This player has %d of a kind of item (id: %d), and try to trade %d of them.
- intif->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
+ pc->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
// if we block people
if (battle_config.ban_hack_trade < 0) {
chrif->char_ask_name(-1, sd->status.name, CHAR_ASK_NAME_BLOCK, 0, 0, 0, 0, 0, 0);
@@ -245,7 +245,7 @@ static int impossible_trade_check(struct map_session_data *sd)
// message about the ban
safestrncpy(message_to_gm, msg_txt(508), sizeof(message_to_gm)); // This player hasn't been banned (Ban option is disabled).
- intif->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
+ pc->wis_message_to_gm(map->wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm);
return 1;
}
inventory[index].amount -= sd->deal.item[i].amount; // remove item from inventory
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index dd4dfbe5d..8560d2eff 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -1276,8 +1276,8 @@ typedef void (*HPMHOOK_pre_clif_scriptclear) (struct map_session_data **sd, int
typedef void (*HPMHOOK_post_clif_scriptclear) (struct map_session_data *sd, int npcid);
typedef void (*HPMHOOK_pre_clif_viewpoint) (struct map_session_data **sd, int *npc_id, int *type, int *x, int *y, int *id, int *color);
typedef void (*HPMHOOK_post_clif_viewpoint) (struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color);
-typedef int (*HPMHOOK_pre_clif_damage) (struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *damage, short *div, unsigned char *type, int64 *damage2);
-typedef int (*HPMHOOK_post_clif_damage) (int retVal___, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
+typedef int (*HPMHOOK_pre_clif_damage) (struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *damage, short *div, enum battle_dmg_type *type, int64 *damage2);
+typedef int (*HPMHOOK_post_clif_damage) (int retVal___, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, enum battle_dmg_type type, int64 damage2);
typedef void (*HPMHOOK_pre_clif_sitting) (struct block_list **bl);
typedef void (*HPMHOOK_post_clif_sitting) (struct block_list *bl);
typedef void (*HPMHOOK_pre_clif_standing) (struct block_list **bl);
@@ -1524,8 +1524,8 @@ typedef void (*HPMHOOK_pre_clif_divorced) (struct map_session_data **sd, const c
typedef void (*HPMHOOK_post_clif_divorced) (struct map_session_data *sd, const char *name);
typedef void (*HPMHOOK_pre_clif_callpartner) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_callpartner) (struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_clif_skill_damage) (struct block_list **src, struct block_list **dst, int64 *tick, int *sdelay, int *ddelay, int64 *damage, int *div, uint16 *skill_id, uint16 *skill_lv, int *type);
-typedef int (*HPMHOOK_post_clif_skill_damage) (int retVal___, struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type);
+typedef int (*HPMHOOK_pre_clif_skill_damage) (struct block_list **src, struct block_list **dst, int64 *tick, int *sdelay, int *ddelay, int64 *damage, int *div, uint16 *skill_id, uint16 *skill_lv, enum battle_dmg_type *type);
+typedef int (*HPMHOOK_post_clif_skill_damage) (int retVal___, struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type);
typedef int (*HPMHOOK_pre_clif_skill_nodamage) (struct block_list **src, struct block_list **dst, uint16 *skill_id, int *heal, int *fail);
typedef int (*HPMHOOK_post_clif_skill_nodamage) (int retVal___, struct block_list *src, struct block_list *dst, uint16 skill_id, int heal, int fail);
typedef void (*HPMHOOK_pre_clif_skill_poseffect) (struct block_list **src, uint16 *skill_id, int *val, int *x, int *y, int64 *tick);
@@ -2046,8 +2046,8 @@ typedef void (*HPMHOOK_pre_clif_show_modifiers) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_clif_show_modifiers) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_clif_notify_bounditem) (struct map_session_data **sd, unsigned short *index);
typedef void (*HPMHOOK_post_clif_notify_bounditem) (struct map_session_data *sd, unsigned short index);
-typedef int (*HPMHOOK_pre_clif_delay_damage) (int64 *tick, struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *in_damage, short *div, unsigned char *type);
-typedef int (*HPMHOOK_post_clif_delay_damage) (int retVal___, int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type);
+typedef int (*HPMHOOK_pre_clif_delay_damage) (int64 *tick, struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *in_damage, short *div, enum battle_dmg_type *type);
+typedef int (*HPMHOOK_post_clif_delay_damage) (int retVal___, int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type);
typedef int (*HPMHOOK_pre_clif_delay_damage_sub) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_clif_delay_damage_sub) (int retVal___, int tid, int64 tick, int id, intptr_t data);
typedef void (*HPMHOOK_pre_clif_npc_market_open) (struct map_session_data **sd, struct npc_data **nd);
@@ -3010,8 +3010,6 @@ typedef int (*HPMHOOK_pre_guild_emblem_changed) (int *len, int *guild_id, int *e
typedef int (*HPMHOOK_post_guild_emblem_changed) (int retVal___, int len, int guild_id, int emblem_id, const char *data);
typedef int (*HPMHOOK_pre_guild_send_message) (struct map_session_data **sd, const char **mes);
typedef int (*HPMHOOK_post_guild_send_message) (int retVal___, struct map_session_data *sd, const char *mes);
-typedef int (*HPMHOOK_pre_guild_recv_message) (int *guild_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_guild_recv_message) (int retVal___, int guild_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_guild_send_dot_remove) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_guild_send_dot_remove) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_guild_skillupack) (int *guild_id, uint16 *skill_id, int *account_id);
@@ -3160,6 +3158,8 @@ typedef bool (*HPMHOOK_pre_homun_mutate) (struct homun_data **hd, int *homun_id)
typedef bool (*HPMHOOK_post_homun_mutate) (bool retVal___, struct homun_data *hd, int homun_id);
typedef int (*HPMHOOK_pre_homun_gainexp) (struct homun_data **hd, unsigned int *exp);
typedef int (*HPMHOOK_post_homun_gainexp) (int retVal___, struct homun_data *hd, unsigned int exp);
+typedef int (*HPMHOOK_pre_homun_gainexp_real) (struct homun_data **hd, unsigned int *exp);
+typedef int (*HPMHOOK_post_homun_gainexp_real) (int retVal___, struct homun_data *hd, unsigned int exp);
typedef unsigned int (*HPMHOOK_pre_homun_add_intimacy) (struct homun_data **hd, unsigned int *value);
typedef unsigned int (*HPMHOOK_post_homun_add_intimacy) (unsigned int retVal___, struct homun_data *hd, unsigned int value);
typedef unsigned int (*HPMHOOK_pre_homun_consume_intimacy) (struct homun_data **hd, unsigned int *value);
@@ -3430,10 +3430,6 @@ typedef int (*HPMHOOK_pre_inter_init_sql) (const char **file);
typedef int (*HPMHOOK_post_inter_init_sql) (int retVal___, const char *file);
typedef int (*HPMHOOK_pre_inter_mapif_init) (int *fd);
typedef int (*HPMHOOK_post_inter_mapif_init) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_inter_check_ttl_wisdata_sub) (union DBKey *key, struct DBData **data, va_list ap);
-typedef int (*HPMHOOK_post_inter_check_ttl_wisdata_sub) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
-typedef int (*HPMHOOK_pre_inter_check_ttl_wisdata) (void);
-typedef int (*HPMHOOK_post_inter_check_ttl_wisdata) (int retVal___);
typedef int (*HPMHOOK_pre_inter_check_length) (int *fd, int *length);
typedef int (*HPMHOOK_post_inter_check_length) (int retVal___, int fd, int length);
typedef int (*HPMHOOK_pre_inter_parse_frommap) (int *fd);
@@ -3450,12 +3446,6 @@ typedef void (*HPMHOOK_pre_inter_accinfo) (int *u_fd, int *aid, int *castergroup
typedef void (*HPMHOOK_post_inter_accinfo) (int u_fd, int aid, int castergroup, const char *query, int map_fd);
typedef void (*HPMHOOK_pre_inter_accinfo2) (bool *success, int *map_fd, int *u_fd, int *u_aid, int *account_id, const char **userid, const char **user_pass, const char **email, const char **last_ip, const char **lastlogin, const char **pin_code, const char **birthdate, int *group_id, int *logincount, int *state);
typedef void (*HPMHOOK_post_inter_accinfo2) (bool success, int map_fd, int u_fd, int u_aid, int account_id, const char *userid, const char *user_pass, const char *email, const char *last_ip, const char *lastlogin, const char *pin_code, const char *birthdate, int group_id, int logincount, int state);
-typedef struct WisData* (*HPMHOOK_pre_inter_add_wisdata) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
-typedef struct WisData* (*HPMHOOK_post_inter_add_wisdata) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
-typedef struct WisData* (*HPMHOOK_pre_inter_get_wisdata) (int *id);
-typedef struct WisData* (*HPMHOOK_post_inter_get_wisdata) (struct WisData* retVal___, int id);
-typedef void (*HPMHOOK_pre_inter_remove_wisdata) (int *id);
-typedef void (*HPMHOOK_post_inter_remove_wisdata) (int id);
#endif // CHAR_INTER_H
#ifdef CHAR_INT_MAIL_H /* inter_mail */
typedef int (*HPMHOOK_pre_inter_mail_sql_init) (void);
@@ -3628,16 +3618,6 @@ typedef int (*HPMHOOK_pre_intif_parse) (int *fd);
typedef int (*HPMHOOK_post_intif_parse) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_intif_create_pet) (int *account_id, int *char_id, int *pet_type, int *pet_lv, int *pet_egg_id, int *pet_equip, short *intimate, short *hungry, char *rename_flag, char *incubate, char **pet_name);
typedef int (*HPMHOOK_post_intif_create_pet) (int retVal___, int account_id, int char_id, int pet_type, int pet_lv, int pet_egg_id, int pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name);
-typedef int (*HPMHOOK_pre_intif_broadcast) (const char **mes, int *len, int *type);
-typedef int (*HPMHOOK_post_intif_broadcast) (int retVal___, const char *mes, int len, int type);
-typedef int (*HPMHOOK_pre_intif_broadcast2) (const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY);
-typedef int (*HPMHOOK_post_intif_broadcast2) (int retVal___, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
-typedef int (*HPMHOOK_pre_intif_main_message) (struct map_session_data **sd, const char **message);
-typedef int (*HPMHOOK_post_intif_main_message) (int retVal___, struct map_session_data *sd, const char *message);
-typedef int (*HPMHOOK_pre_intif_wis_message) (struct map_session_data **sd, const char **nick, const char **mes, int *mes_len);
-typedef int (*HPMHOOK_post_intif_wis_message) (int retVal___, struct map_session_data *sd, const char *nick, const char *mes, int mes_len);
-typedef int (*HPMHOOK_pre_intif_wis_message_to_gm) (char **Wisp_name, int *permission, char **mes);
-typedef int (*HPMHOOK_post_intif_wis_message_to_gm) (int retVal___, char *Wisp_name, int permission, char *mes);
typedef int (*HPMHOOK_pre_intif_saveregistry) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_intif_saveregistry) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_intif_request_registry) (struct map_session_data **sd, int *flag);
@@ -3664,8 +3644,6 @@ typedef int (*HPMHOOK_pre_intif_party_changemap) (struct map_session_data **sd,
typedef int (*HPMHOOK_post_intif_party_changemap) (int retVal___, struct map_session_data *sd, int online);
typedef int (*HPMHOOK_pre_intif_break_party) (int *party_id);
typedef int (*HPMHOOK_post_intif_break_party) (int retVal___, int party_id);
-typedef int (*HPMHOOK_pre_intif_party_message) (int *party_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_intif_party_message) (int retVal___, int party_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_intif_party_leaderchange) (int *party_id, int *account_id, int *char_id);
typedef int (*HPMHOOK_post_intif_party_leaderchange) (int retVal___, int party_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_intif_guild_create) (const char **name, const struct guild_member **master);
@@ -3680,8 +3658,6 @@ typedef int (*HPMHOOK_pre_intif_guild_memberinfoshort) (int *guild_id, int *acco
typedef int (*HPMHOOK_post_intif_guild_memberinfoshort) (int retVal___, int guild_id, int account_id, int char_id, int online, int lv, int class);
typedef int (*HPMHOOK_pre_intif_guild_break) (int *guild_id);
typedef int (*HPMHOOK_post_intif_guild_break) (int retVal___, int guild_id);
-typedef int (*HPMHOOK_pre_intif_guild_message) (int *guild_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_intif_guild_message) (int retVal___, int guild_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_intif_guild_change_gm) (int *guild_id, const char **name, int *len);
typedef int (*HPMHOOK_post_intif_guild_change_gm) (int retVal___, int guild_id, const char *name, int len);
typedef int (*HPMHOOK_pre_intif_guild_change_basicinfo) (int *guild_id, int *type, const void **data, int *len);
@@ -3788,14 +3764,6 @@ typedef void (*HPMHOOK_pre_intif_achievements_request) (struct map_session_data
typedef void (*HPMHOOK_post_intif_achievements_request) (struct map_session_data *sd);
typedef void (*HPMHOOK_pre_intif_achievements_save) (struct map_session_data **sd);
typedef void (*HPMHOOK_post_intif_achievements_save) (struct map_session_data *sd);
-typedef void (*HPMHOOK_pre_intif_pWisMessage) (int *fd);
-typedef void (*HPMHOOK_post_intif_pWisMessage) (int fd);
-typedef void (*HPMHOOK_pre_intif_pWisEnd) (int *fd);
-typedef void (*HPMHOOK_post_intif_pWisEnd) (int fd);
-typedef int (*HPMHOOK_pre_intif_pWisToGM_sub) (struct map_session_data **sd, va_list va);
-typedef int (*HPMHOOK_post_intif_pWisToGM_sub) (int retVal___, struct map_session_data *sd, va_list va);
-typedef void (*HPMHOOK_pre_intif_pWisToGM) (int *fd);
-typedef void (*HPMHOOK_post_intif_pWisToGM) (int fd);
typedef void (*HPMHOOK_pre_intif_pRegisters) (int *fd);
typedef void (*HPMHOOK_post_intif_pRegisters) (int fd);
typedef void (*HPMHOOK_pre_intif_pAccountStorage) (int *fd);
@@ -3824,8 +3792,6 @@ typedef void (*HPMHOOK_pre_intif_pPartyMove) (int *fd);
typedef void (*HPMHOOK_post_intif_pPartyMove) (int fd);
typedef void (*HPMHOOK_pre_intif_pPartyBroken) (int *fd);
typedef void (*HPMHOOK_post_intif_pPartyBroken) (int fd);
-typedef void (*HPMHOOK_pre_intif_pPartyMessage) (int *fd);
-typedef void (*HPMHOOK_post_intif_pPartyMessage) (int fd);
typedef void (*HPMHOOK_pre_intif_pGuildCreated) (int *fd);
typedef void (*HPMHOOK_post_intif_pGuildCreated) (int fd);
typedef void (*HPMHOOK_pre_intif_pGuildInfo) (int *fd);
@@ -3838,8 +3804,6 @@ typedef void (*HPMHOOK_pre_intif_pGuildMemberInfoShort) (int *fd);
typedef void (*HPMHOOK_post_intif_pGuildMemberInfoShort) (int fd);
typedef void (*HPMHOOK_pre_intif_pGuildBroken) (int *fd);
typedef void (*HPMHOOK_post_intif_pGuildBroken) (int fd);
-typedef void (*HPMHOOK_pre_intif_pGuildMessage) (int *fd);
-typedef void (*HPMHOOK_post_intif_pGuildMessage) (int fd);
typedef void (*HPMHOOK_pre_intif_pGuildBasicInfoChanged) (int *fd);
typedef void (*HPMHOOK_post_intif_pGuildBasicInfoChanged) (int fd);
typedef void (*HPMHOOK_pre_intif_pGuildMemberInfoChanged) (int *fd);
@@ -4922,8 +4886,6 @@ typedef int (*HPMHOOK_pre_mapif_guild_memberinfoshort) (struct guild **g, int *i
typedef int (*HPMHOOK_post_mapif_guild_memberinfoshort) (int retVal___, struct guild *g, int idx);
typedef int (*HPMHOOK_pre_mapif_guild_broken) (int *guild_id, int *flag);
typedef int (*HPMHOOK_post_mapif_guild_broken) (int retVal___, int guild_id, int flag);
-typedef int (*HPMHOOK_pre_mapif_guild_message) (int *guild_id, int *account_id, const char **mes, int *len, int *sfd);
-typedef int (*HPMHOOK_post_mapif_guild_message) (int retVal___, int guild_id, int account_id, const char *mes, int len, int sfd);
typedef int (*HPMHOOK_pre_mapif_guild_basicinfochanged) (int *guild_id, int *type, const void **data, int *len);
typedef int (*HPMHOOK_post_mapif_guild_basicinfochanged) (int retVal___, int guild_id, int type, const void *data, int len);
typedef int (*HPMHOOK_pre_mapif_guild_memberinfochanged) (int *guild_id, int *account_id, int *char_id, int *type, const void **data, int *len);
@@ -4954,8 +4916,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_GuildChangeMemberInfoShort) (int *fd, int
typedef int (*HPMHOOK_post_mapif_parse_GuildChangeMemberInfoShort) (int retVal___, int fd, int guild_id, int account_id, int char_id, int online, int lv, int class);
typedef int (*HPMHOOK_pre_mapif_parse_BreakGuild) (int *fd, int *guild_id);
typedef int (*HPMHOOK_post_mapif_parse_BreakGuild) (int retVal___, int fd, int guild_id);
-typedef int (*HPMHOOK_pre_mapif_parse_GuildMessage) (int *fd, int *guild_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_mapif_parse_GuildMessage) (int retVal___, int fd, int guild_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_mapif_parse_GuildBasicInfoChange) (int *fd, int *guild_id, int *type, const void **data, int *len);
typedef int (*HPMHOOK_post_mapif_parse_GuildBasicInfoChange) (int retVal___, int fd, int guild_id, int type, const void *data, int len);
typedef int (*HPMHOOK_pre_mapif_parse_GuildMemberInfoChange) (int *fd, int *guild_id, int *account_id, int *char_id, int *type, const char **data, int *len);
@@ -5050,8 +5010,6 @@ typedef int (*HPMHOOK_pre_mapif_party_membermoved) (struct party **p, int *idx);
typedef int (*HPMHOOK_post_mapif_party_membermoved) (int retVal___, struct party *p, int idx);
typedef int (*HPMHOOK_pre_mapif_party_broken) (int *party_id, int *flag);
typedef int (*HPMHOOK_post_mapif_party_broken) (int retVal___, int party_id, int flag);
-typedef int (*HPMHOOK_pre_mapif_party_message) (int *party_id, int *account_id, const char **mes, int *len, int *sfd);
-typedef int (*HPMHOOK_post_mapif_party_message) (int retVal___, int party_id, int account_id, const char *mes, int len, int sfd);
typedef int (*HPMHOOK_pre_mapif_parse_CreateParty) (int *fd, const char **name, int *item, int *item2, const struct party_member **leader);
typedef int (*HPMHOOK_post_mapif_parse_CreateParty) (int retVal___, int fd, const char *name, int item, int item2, const struct party_member *leader);
typedef void (*HPMHOOK_pre_mapif_parse_PartyInfo) (int *fd, int *party_id, int *char_id);
@@ -5066,8 +5024,6 @@ typedef int (*HPMHOOK_pre_mapif_parse_PartyChangeMap) (int *fd, int *party_id, i
typedef int (*HPMHOOK_post_mapif_parse_PartyChangeMap) (int retVal___, int fd, int party_id, int account_id, int char_id, unsigned short map, int online, unsigned int lv);
typedef int (*HPMHOOK_pre_mapif_parse_BreakParty) (int *fd, int *party_id);
typedef int (*HPMHOOK_post_mapif_parse_BreakParty) (int retVal___, int fd, int party_id);
-typedef int (*HPMHOOK_pre_mapif_parse_PartyMessage) (int *fd, int *party_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_mapif_parse_PartyMessage) (int retVal___, int fd, int party_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_mapif_parse_PartyLeaderChange) (int *fd, int *party_id, int *account_id, int *char_id);
typedef int (*HPMHOOK_post_mapif_parse_PartyLeaderChange) (int retVal___, int fd, int party_id, int account_id, int char_id);
typedef int (*HPMHOOK_pre_mapif_pet_created) (int *fd, int *account_id, struct s_pet **p);
@@ -5144,26 +5100,10 @@ typedef void (*HPMHOOK_pre_mapif_parse_ItemBoundRetrieve) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_ItemBoundRetrieve) (int fd);
typedef void (*HPMHOOK_pre_mapif_parse_accinfo) (int *fd);
typedef void (*HPMHOOK_post_mapif_parse_accinfo) (int fd);
-typedef int (*HPMHOOK_pre_mapif_broadcast) (const unsigned char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, int *sfd);
-typedef int (*HPMHOOK_post_mapif_broadcast) (int retVal___, const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
-typedef int (*HPMHOOK_pre_mapif_wis_message) (struct WisData **wd);
-typedef int (*HPMHOOK_post_mapif_wis_message) (int retVal___, struct WisData *wd);
-typedef void (*HPMHOOK_pre_mapif_wis_response) (int *fd, const unsigned char **src, int *flag);
-typedef void (*HPMHOOK_post_mapif_wis_response) (int fd, const unsigned char *src, int flag);
-typedef int (*HPMHOOK_pre_mapif_wis_end) (struct WisData **wd, int *flag);
-typedef int (*HPMHOOK_post_mapif_wis_end) (int retVal___, struct WisData *wd, int flag);
typedef int (*HPMHOOK_pre_mapif_account_reg_reply) (int *fd, int *account_id, int *char_id, int *type);
typedef int (*HPMHOOK_post_mapif_account_reg_reply) (int retVal___, int fd, int account_id, int char_id, int type);
typedef int (*HPMHOOK_pre_mapif_disconnectplayer) (int *fd, int *account_id, int *char_id, int *reason);
typedef int (*HPMHOOK_post_mapif_disconnectplayer) (int retVal___, int fd, int account_id, int char_id, int reason);
-typedef int (*HPMHOOK_pre_mapif_parse_broadcast) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_broadcast) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_mapif_parse_WisRequest) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_WisRequest) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_mapif_parse_WisReply) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_WisReply) (int retVal___, int fd);
-typedef int (*HPMHOOK_pre_mapif_parse_WisToGM) (int *fd);
-typedef int (*HPMHOOK_post_mapif_parse_WisToGM) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_mapif_parse_Registry) (int *fd);
typedef int (*HPMHOOK_post_mapif_parse_Registry) (int retVal___, int fd);
typedef int (*HPMHOOK_pre_mapif_parse_RegistryRequest) (int *fd);
@@ -5884,8 +5824,6 @@ typedef int (*HPMHOOK_pre_party_send_logout) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_party_send_logout) (int retVal___, struct map_session_data *sd);
typedef int (*HPMHOOK_pre_party_send_message) (struct map_session_data **sd, const char **mes);
typedef int (*HPMHOOK_post_party_send_message) (int retVal___, struct map_session_data *sd, const char *mes);
-typedef int (*HPMHOOK_pre_party_recv_message) (int *party_id, int *account_id, const char **mes, int *len);
-typedef int (*HPMHOOK_post_party_recv_message) (int retVal___, int party_id, int account_id, const char *mes, int len);
typedef int (*HPMHOOK_pre_party_skill_check) (struct map_session_data **sd, int *party_id, uint16 *skill_id, uint16 *skill_lv);
typedef int (*HPMHOOK_post_party_skill_check) (int retVal___, struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv);
typedef int (*HPMHOOK_pre_party_send_xy_clear) (struct party_data **p);
@@ -6076,8 +6014,8 @@ typedef bool (*HPMHOOK_pre_pc_adoption) (struct map_session_data **p1_sd, struct
typedef bool (*HPMHOOK_post_pc_adoption) (bool retVal___, struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd);
typedef int (*HPMHOOK_pre_pc_updateweightstatus) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_updateweightstatus) (int retVal___, struct map_session_data *sd);
-typedef int (*HPMHOOK_pre_pc_addautobonus) (struct s_autobonus **bonus, char *max, const char **bonus_script, short *rate, unsigned int *dur, short *atk_type, const char **o_script, unsigned short *pos, bool *onskill);
-typedef int (*HPMHOOK_post_pc_addautobonus) (int retVal___, struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned short pos, bool onskill);
+typedef int (*HPMHOOK_pre_pc_addautobonus) (struct s_autobonus **bonus, char *max, const char **bonus_script, short *rate, unsigned int *dur, short *atk_type, const char **o_script, unsigned int *pos, bool *onskill);
+typedef int (*HPMHOOK_post_pc_addautobonus) (int retVal___, struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned int pos, bool onskill);
typedef int (*HPMHOOK_pre_pc_exeautobonus) (struct map_session_data **sd, struct s_autobonus **bonus);
typedef int (*HPMHOOK_post_pc_exeautobonus) (int retVal___, struct map_session_data *sd, struct s_autobonus *bonus);
typedef int (*HPMHOOK_pre_pc_endautobonus) (int *tid, int64 *tick, int *id, intptr_t *data);
@@ -6436,8 +6374,14 @@ typedef void (*HPMHOOK_pre_pc_update_idle_time) (struct map_session_data **sd, e
typedef void (*HPMHOOK_post_pc_update_idle_time) (struct map_session_data *sd, enum e_battle_config_idletime type);
typedef int (*HPMHOOK_pre_pc_have_magnifier) (struct map_session_data **sd);
typedef int (*HPMHOOK_post_pc_have_magnifier) (int retVal___, struct map_session_data *sd);
+typedef int (*HPMHOOK_pre_pc_have_item_chain) (struct map_session_data **sd, unsigned short *chain_id);
+typedef int (*HPMHOOK_post_pc_have_item_chain) (int retVal___, struct map_session_data *sd, unsigned short chain_id);
typedef bool (*HPMHOOK_pre_pc_process_chat_message) (struct map_session_data **sd, const char **message);
typedef bool (*HPMHOOK_post_pc_process_chat_message) (bool retVal___, struct map_session_data *sd, const char *message);
+typedef int (*HPMHOOK_pre_pc_wis_message_to_gm) (const char **sender_name, int *permission, const char **message);
+typedef int (*HPMHOOK_post_pc_wis_message_to_gm) (int retVal___, const char *sender_name, int permission, const char *message);
+typedef int (*HPMHOOK_pre_pc_wis_message_to_gm_sub) (struct map_session_data **sd, va_list va);
+typedef int (*HPMHOOK_post_pc_wis_message_to_gm_sub) (int retVal___, struct map_session_data *sd, va_list va);
typedef void (*HPMHOOK_pre_pc_check_supernovice_call) (struct map_session_data **sd, const char **message);
typedef void (*HPMHOOK_post_pc_check_supernovice_call) (struct map_session_data *sd, const char *message);
typedef bool (*HPMHOOK_pre_pc_check_basicskill) (struct map_session_data **sd, int *level);
@@ -7994,8 +7938,14 @@ typedef bool (*HPMHOOK_pre_status_readdb_job2) (char **fields[], int *columns, i
typedef bool (*HPMHOOK_post_status_readdb_job2) (bool retVal___, char *fields[], int columns, int current);
typedef bool (*HPMHOOK_pre_status_readdb_sizefix) (char **fields[], int *columns, int *current);
typedef bool (*HPMHOOK_post_status_readdb_sizefix) (bool retVal___, char *fields[], int columns, int current);
-typedef bool (*HPMHOOK_pre_status_readdb_scconfig) (char **fields[], int *columns, int *current);
-typedef bool (*HPMHOOK_post_status_readdb_scconfig) (bool retVal___, char *fields[], int columns, int current);
+typedef bool (*HPMHOOK_pre_status_read_scdb_libconfig) (void);
+typedef bool (*HPMHOOK_post_status_read_scdb_libconfig) (bool retVal___);
+typedef bool (*HPMHOOK_pre_status_read_scdb_libconfig_sub) (struct config_setting_t **it, int *idx, const char **source);
+typedef bool (*HPMHOOK_post_status_read_scdb_libconfig_sub) (bool retVal___, struct config_setting_t *it, int idx, const char *source);
+typedef bool (*HPMHOOK_pre_status_read_scdb_libconfig_sub_flag) (struct config_setting_t **it, int *type, const char **source);
+typedef bool (*HPMHOOK_post_status_read_scdb_libconfig_sub_flag) (bool retVal___, struct config_setting_t *it, int type, const char *source);
+typedef bool (*HPMHOOK_pre_status_read_scdb_libconfig_sub_flag_additional) (struct config_setting_t **it, int *type, const char **source);
+typedef bool (*HPMHOOK_post_status_read_scdb_libconfig_sub_flag_additional) (bool retVal___, struct config_setting_t *it, int type, const char *source);
typedef void (*HPMHOOK_pre_status_read_job_db) (void);
typedef void (*HPMHOOK_post_status_read_job_db) (void);
typedef void (*HPMHOOK_pre_status_read_job_db_sub) (int *idx, const char **name, struct config_setting_t **jdb);
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
index 9302a8d19..a5f65654e 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HPMHooksCore.inc
@@ -610,10 +610,6 @@ struct {
struct HPMHookPoint *HP_inter_init_sql_post;
struct HPMHookPoint *HP_inter_mapif_init_pre;
struct HPMHookPoint *HP_inter_mapif_init_post;
- struct HPMHookPoint *HP_inter_check_ttl_wisdata_sub_pre;
- struct HPMHookPoint *HP_inter_check_ttl_wisdata_sub_post;
- struct HPMHookPoint *HP_inter_check_ttl_wisdata_pre;
- struct HPMHookPoint *HP_inter_check_ttl_wisdata_post;
struct HPMHookPoint *HP_inter_check_length_pre;
struct HPMHookPoint *HP_inter_check_length_post;
struct HPMHookPoint *HP_inter_parse_frommap_pre;
@@ -630,12 +626,6 @@ struct {
struct HPMHookPoint *HP_inter_accinfo_post;
struct HPMHookPoint *HP_inter_accinfo2_pre;
struct HPMHookPoint *HP_inter_accinfo2_post;
- struct HPMHookPoint *HP_inter_add_wisdata_pre;
- struct HPMHookPoint *HP_inter_add_wisdata_post;
- struct HPMHookPoint *HP_inter_get_wisdata_pre;
- struct HPMHookPoint *HP_inter_get_wisdata_post;
- struct HPMHookPoint *HP_inter_remove_wisdata_pre;
- struct HPMHookPoint *HP_inter_remove_wisdata_post;
struct HPMHookPoint *HP_inter_mail_sql_init_pre;
struct HPMHookPoint *HP_inter_mail_sql_init_post;
struct HPMHookPoint *HP_inter_mail_sql_final_pre;
@@ -1032,8 +1022,6 @@ struct {
struct HPMHookPoint *HP_mapif_guild_memberinfoshort_post;
struct HPMHookPoint *HP_mapif_guild_broken_pre;
struct HPMHookPoint *HP_mapif_guild_broken_post;
- struct HPMHookPoint *HP_mapif_guild_message_pre;
- struct HPMHookPoint *HP_mapif_guild_message_post;
struct HPMHookPoint *HP_mapif_guild_basicinfochanged_pre;
struct HPMHookPoint *HP_mapif_guild_basicinfochanged_post;
struct HPMHookPoint *HP_mapif_guild_memberinfochanged_pre;
@@ -1064,8 +1052,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_GuildChangeMemberInfoShort_post;
struct HPMHookPoint *HP_mapif_parse_BreakGuild_pre;
struct HPMHookPoint *HP_mapif_parse_BreakGuild_post;
- struct HPMHookPoint *HP_mapif_parse_GuildMessage_pre;
- struct HPMHookPoint *HP_mapif_parse_GuildMessage_post;
struct HPMHookPoint *HP_mapif_parse_GuildBasicInfoChange_pre;
struct HPMHookPoint *HP_mapif_parse_GuildBasicInfoChange_post;
struct HPMHookPoint *HP_mapif_parse_GuildMemberInfoChange_pre;
@@ -1160,8 +1146,6 @@ struct {
struct HPMHookPoint *HP_mapif_party_membermoved_post;
struct HPMHookPoint *HP_mapif_party_broken_pre;
struct HPMHookPoint *HP_mapif_party_broken_post;
- struct HPMHookPoint *HP_mapif_party_message_pre;
- struct HPMHookPoint *HP_mapif_party_message_post;
struct HPMHookPoint *HP_mapif_parse_CreateParty_pre;
struct HPMHookPoint *HP_mapif_parse_CreateParty_post;
struct HPMHookPoint *HP_mapif_parse_PartyInfo_pre;
@@ -1176,8 +1160,6 @@ struct {
struct HPMHookPoint *HP_mapif_parse_PartyChangeMap_post;
struct HPMHookPoint *HP_mapif_parse_BreakParty_pre;
struct HPMHookPoint *HP_mapif_parse_BreakParty_post;
- struct HPMHookPoint *HP_mapif_parse_PartyMessage_pre;
- struct HPMHookPoint *HP_mapif_parse_PartyMessage_post;
struct HPMHookPoint *HP_mapif_parse_PartyLeaderChange_pre;
struct HPMHookPoint *HP_mapif_parse_PartyLeaderChange_post;
struct HPMHookPoint *HP_mapif_pet_created_pre;
@@ -1254,26 +1236,10 @@ struct {
struct HPMHookPoint *HP_mapif_parse_ItemBoundRetrieve_post;
struct HPMHookPoint *HP_mapif_parse_accinfo_pre;
struct HPMHookPoint *HP_mapif_parse_accinfo_post;
- struct HPMHookPoint *HP_mapif_broadcast_pre;
- struct HPMHookPoint *HP_mapif_broadcast_post;
- struct HPMHookPoint *HP_mapif_wis_message_pre;
- struct HPMHookPoint *HP_mapif_wis_message_post;
- struct HPMHookPoint *HP_mapif_wis_response_pre;
- struct HPMHookPoint *HP_mapif_wis_response_post;
- struct HPMHookPoint *HP_mapif_wis_end_pre;
- struct HPMHookPoint *HP_mapif_wis_end_post;
struct HPMHookPoint *HP_mapif_account_reg_reply_pre;
struct HPMHookPoint *HP_mapif_account_reg_reply_post;
struct HPMHookPoint *HP_mapif_disconnectplayer_pre;
struct HPMHookPoint *HP_mapif_disconnectplayer_post;
- struct HPMHookPoint *HP_mapif_parse_broadcast_pre;
- struct HPMHookPoint *HP_mapif_parse_broadcast_post;
- struct HPMHookPoint *HP_mapif_parse_WisRequest_pre;
- struct HPMHookPoint *HP_mapif_parse_WisRequest_post;
- struct HPMHookPoint *HP_mapif_parse_WisReply_pre;
- struct HPMHookPoint *HP_mapif_parse_WisReply_post;
- struct HPMHookPoint *HP_mapif_parse_WisToGM_pre;
- struct HPMHookPoint *HP_mapif_parse_WisToGM_post;
struct HPMHookPoint *HP_mapif_parse_Registry_pre;
struct HPMHookPoint *HP_mapif_parse_Registry_post;
struct HPMHookPoint *HP_mapif_parse_RegistryRequest_pre;
@@ -2257,10 +2223,6 @@ struct {
int HP_inter_init_sql_post;
int HP_inter_mapif_init_pre;
int HP_inter_mapif_init_post;
- int HP_inter_check_ttl_wisdata_sub_pre;
- int HP_inter_check_ttl_wisdata_sub_post;
- int HP_inter_check_ttl_wisdata_pre;
- int HP_inter_check_ttl_wisdata_post;
int HP_inter_check_length_pre;
int HP_inter_check_length_post;
int HP_inter_parse_frommap_pre;
@@ -2277,12 +2239,6 @@ struct {
int HP_inter_accinfo_post;
int HP_inter_accinfo2_pre;
int HP_inter_accinfo2_post;
- int HP_inter_add_wisdata_pre;
- int HP_inter_add_wisdata_post;
- int HP_inter_get_wisdata_pre;
- int HP_inter_get_wisdata_post;
- int HP_inter_remove_wisdata_pre;
- int HP_inter_remove_wisdata_post;
int HP_inter_mail_sql_init_pre;
int HP_inter_mail_sql_init_post;
int HP_inter_mail_sql_final_pre;
@@ -2679,8 +2635,6 @@ struct {
int HP_mapif_guild_memberinfoshort_post;
int HP_mapif_guild_broken_pre;
int HP_mapif_guild_broken_post;
- int HP_mapif_guild_message_pre;
- int HP_mapif_guild_message_post;
int HP_mapif_guild_basicinfochanged_pre;
int HP_mapif_guild_basicinfochanged_post;
int HP_mapif_guild_memberinfochanged_pre;
@@ -2711,8 +2665,6 @@ struct {
int HP_mapif_parse_GuildChangeMemberInfoShort_post;
int HP_mapif_parse_BreakGuild_pre;
int HP_mapif_parse_BreakGuild_post;
- int HP_mapif_parse_GuildMessage_pre;
- int HP_mapif_parse_GuildMessage_post;
int HP_mapif_parse_GuildBasicInfoChange_pre;
int HP_mapif_parse_GuildBasicInfoChange_post;
int HP_mapif_parse_GuildMemberInfoChange_pre;
@@ -2807,8 +2759,6 @@ struct {
int HP_mapif_party_membermoved_post;
int HP_mapif_party_broken_pre;
int HP_mapif_party_broken_post;
- int HP_mapif_party_message_pre;
- int HP_mapif_party_message_post;
int HP_mapif_parse_CreateParty_pre;
int HP_mapif_parse_CreateParty_post;
int HP_mapif_parse_PartyInfo_pre;
@@ -2823,8 +2773,6 @@ struct {
int HP_mapif_parse_PartyChangeMap_post;
int HP_mapif_parse_BreakParty_pre;
int HP_mapif_parse_BreakParty_post;
- int HP_mapif_parse_PartyMessage_pre;
- int HP_mapif_parse_PartyMessage_post;
int HP_mapif_parse_PartyLeaderChange_pre;
int HP_mapif_parse_PartyLeaderChange_post;
int HP_mapif_pet_created_pre;
@@ -2901,26 +2849,10 @@ struct {
int HP_mapif_parse_ItemBoundRetrieve_post;
int HP_mapif_parse_accinfo_pre;
int HP_mapif_parse_accinfo_post;
- int HP_mapif_broadcast_pre;
- int HP_mapif_broadcast_post;
- int HP_mapif_wis_message_pre;
- int HP_mapif_wis_message_post;
- int HP_mapif_wis_response_pre;
- int HP_mapif_wis_response_post;
- int HP_mapif_wis_end_pre;
- int HP_mapif_wis_end_post;
int HP_mapif_account_reg_reply_pre;
int HP_mapif_account_reg_reply_post;
int HP_mapif_disconnectplayer_pre;
int HP_mapif_disconnectplayer_post;
- int HP_mapif_parse_broadcast_pre;
- int HP_mapif_parse_broadcast_post;
- int HP_mapif_parse_WisRequest_pre;
- int HP_mapif_parse_WisRequest_post;
- int HP_mapif_parse_WisReply_pre;
- int HP_mapif_parse_WisReply_post;
- int HP_mapif_parse_WisToGM_pre;
- int HP_mapif_parse_WisToGM_post;
int HP_mapif_parse_Registry_pre;
int HP_mapif_parse_Registry_post;
int HP_mapif_parse_RegistryRequest_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
index 60162c1a8..efd72b670 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.HookingPoints.inc
@@ -333,8 +333,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter->vlog, HP_inter_vlog) },
{ HP_POP(inter->init_sql, HP_inter_init_sql) },
{ HP_POP(inter->mapif_init, HP_inter_mapif_init) },
- { HP_POP(inter->check_ttl_wisdata_sub, HP_inter_check_ttl_wisdata_sub) },
- { HP_POP(inter->check_ttl_wisdata, HP_inter_check_ttl_wisdata) },
{ HP_POP(inter->check_length, HP_inter_check_length) },
{ HP_POP(inter->parse_frommap, HP_inter_parse_frommap) },
{ HP_POP(inter->final, HP_inter_final) },
@@ -343,9 +341,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(inter->config_read_connection, HP_inter_config_read_connection) },
{ HP_POP(inter->accinfo, HP_inter_accinfo) },
{ HP_POP(inter->accinfo2, HP_inter_accinfo2) },
- { HP_POP(inter->add_wisdata, HP_inter_add_wisdata) },
- { HP_POP(inter->get_wisdata, HP_inter_get_wisdata) },
- { HP_POP(inter->remove_wisdata, HP_inter_remove_wisdata) },
/* inter_mail_interface */
{ HP_POP(inter_mail->sql_init, HP_inter_mail_sql_init) },
{ HP_POP(inter_mail->sql_final, HP_inter_mail_sql_final) },
@@ -554,7 +549,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->guild_withdraw, HP_mapif_guild_withdraw) },
{ HP_POP(mapif->guild_memberinfoshort, HP_mapif_guild_memberinfoshort) },
{ HP_POP(mapif->guild_broken, HP_mapif_guild_broken) },
- { HP_POP(mapif->guild_message, HP_mapif_guild_message) },
{ HP_POP(mapif->guild_basicinfochanged, HP_mapif_guild_basicinfochanged) },
{ HP_POP(mapif->guild_memberinfochanged, HP_mapif_guild_memberinfochanged) },
{ HP_POP(mapif->guild_skillupack, HP_mapif_guild_skillupack) },
@@ -570,7 +564,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_GuildLeave, HP_mapif_parse_GuildLeave) },
{ HP_POP(mapif->parse_GuildChangeMemberInfoShort, HP_mapif_parse_GuildChangeMemberInfoShort) },
{ HP_POP(mapif->parse_BreakGuild, HP_mapif_parse_BreakGuild) },
- { HP_POP(mapif->parse_GuildMessage, HP_mapif_parse_GuildMessage) },
{ HP_POP(mapif->parse_GuildBasicInfoChange, HP_mapif_parse_GuildBasicInfoChange) },
{ HP_POP(mapif->parse_GuildMemberInfoChange, HP_mapif_parse_GuildMemberInfoChange) },
{ HP_POP(mapif->parse_GuildPosition, HP_mapif_parse_GuildPosition) },
@@ -618,7 +611,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->party_withdraw, HP_mapif_party_withdraw) },
{ HP_POP(mapif->party_membermoved, HP_mapif_party_membermoved) },
{ HP_POP(mapif->party_broken, HP_mapif_party_broken) },
- { HP_POP(mapif->party_message, HP_mapif_party_message) },
{ HP_POP(mapif->parse_CreateParty, HP_mapif_parse_CreateParty) },
{ HP_POP(mapif->parse_PartyInfo, HP_mapif_parse_PartyInfo) },
{ HP_POP(mapif->parse_PartyAddMember, HP_mapif_parse_PartyAddMember) },
@@ -626,7 +618,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->parse_PartyLeave, HP_mapif_parse_PartyLeave) },
{ HP_POP(mapif->parse_PartyChangeMap, HP_mapif_parse_PartyChangeMap) },
{ HP_POP(mapif->parse_BreakParty, HP_mapif_parse_BreakParty) },
- { HP_POP(mapif->parse_PartyMessage, HP_mapif_parse_PartyMessage) },
{ HP_POP(mapif->parse_PartyLeaderChange, HP_mapif_parse_PartyLeaderChange) },
{ HP_POP(mapif->pet_created, HP_mapif_pet_created) },
{ HP_POP(mapif->pet_info, HP_mapif_pet_info) },
@@ -665,16 +656,8 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(mapif->itembound_ack, HP_mapif_itembound_ack) },
{ HP_POP(mapif->parse_ItemBoundRetrieve, HP_mapif_parse_ItemBoundRetrieve) },
{ HP_POP(mapif->parse_accinfo, HP_mapif_parse_accinfo) },
- { HP_POP(mapif->broadcast, HP_mapif_broadcast) },
- { HP_POP(mapif->wis_message, HP_mapif_wis_message) },
- { HP_POP(mapif->wis_response, HP_mapif_wis_response) },
- { HP_POP(mapif->wis_end, HP_mapif_wis_end) },
{ HP_POP(mapif->account_reg_reply, HP_mapif_account_reg_reply) },
{ HP_POP(mapif->disconnectplayer, HP_mapif_disconnectplayer) },
- { HP_POP(mapif->parse_broadcast, HP_mapif_parse_broadcast) },
- { HP_POP(mapif->parse_WisRequest, HP_mapif_parse_WisRequest) },
- { HP_POP(mapif->parse_WisReply, HP_mapif_parse_WisReply) },
- { HP_POP(mapif->parse_WisToGM, HP_mapif_parse_WisToGM) },
{ HP_POP(mapif->parse_Registry, HP_mapif_parse_Registry) },
{ HP_POP(mapif->parse_RegistryRequest, HP_mapif_parse_RegistryRequest) },
{ HP_POP(mapif->namechange_ack, HP_mapif_namechange_ack) },
diff --git a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
index 2b7e25e5d..7ce54d288 100644
--- a/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_char.Hooks.inc
@@ -7851,66 +7851,6 @@ int HP_inter_mapif_init(int fd) {
}
return retVal___;
}
-int HP_inter_check_ttl_wisdata_sub(union DBKey key, struct DBData *data, va_list ap) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre > 0) {
- int (*preHookFunc) (union DBKey *key, struct DBData **data, va_list ap);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_pre; hIndex++) {
- va_list ap___copy; va_copy(ap___copy, ap);
- preHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_sub_pre[hIndex].func;
- retVal___ = preHookFunc(&key, &data, ap___copy);
- va_end(ap___copy);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- va_list ap___copy; va_copy(ap___copy, ap);
- retVal___ = HPMHooks.source.inter.check_ttl_wisdata_sub(key, data, ap___copy);
- va_end(ap___copy);
- }
- if (HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post > 0) {
- int (*postHookFunc) (int retVal___, union DBKey key, struct DBData *data, va_list ap);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_sub_post; hIndex++) {
- va_list ap___copy; va_copy(ap___copy, ap);
- postHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_sub_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, key, data, ap___copy);
- va_end(ap___copy);
- }
- }
- return retVal___;
-}
-int HP_inter_check_ttl_wisdata(void) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_inter_check_ttl_wisdata_pre > 0) {
- int (*preHookFunc) (void);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_pre[hIndex].func;
- retVal___ = preHookFunc();
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.inter.check_ttl_wisdata();
- }
- if (HPMHooks.count.HP_inter_check_ttl_wisdata_post > 0) {
- int (*postHookFunc) (int retVal___);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_check_ttl_wisdata_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_inter_check_ttl_wisdata_post[hIndex].func;
- retVal___ = postHookFunc(retVal___);
- }
- }
- return retVal___;
-}
int HP_inter_check_length(int fd, int length) {
int hIndex = 0;
int retVal___ = 0;
@@ -8124,86 +8064,6 @@ void HP_inter_accinfo2(bool success, int map_fd, int u_fd, int u_aid, int accoun
}
return;
}
-struct WisData* HP_inter_add_wisdata(int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len) {
- int hIndex = 0;
- struct WisData* retVal___ = NULL;
- if (HPMHooks.count.HP_inter_add_wisdata_pre > 0) {
- struct WisData* (*preHookFunc) (int *fd, const unsigned char **src, const unsigned char **dst, const unsigned char **msg, int *msg_len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_inter_add_wisdata_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &src, &dst, &msg, &msg_len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.inter.add_wisdata(fd, src, dst, msg, msg_len);
- }
- if (HPMHooks.count.HP_inter_add_wisdata_post > 0) {
- struct WisData* (*postHookFunc) (struct WisData* retVal___, int fd, const unsigned char *src, const unsigned char *dst, const unsigned char *msg, int msg_len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_add_wisdata_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_inter_add_wisdata_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, src, dst, msg, msg_len);
- }
- }
- return retVal___;
-}
-struct WisData* HP_inter_get_wisdata(int id) {
- int hIndex = 0;
- struct WisData* retVal___ = NULL;
- if (HPMHooks.count.HP_inter_get_wisdata_pre > 0) {
- struct WisData* (*preHookFunc) (int *id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_inter_get_wisdata_pre[hIndex].func;
- retVal___ = preHookFunc(&id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.inter.get_wisdata(id);
- }
- if (HPMHooks.count.HP_inter_get_wisdata_post > 0) {
- struct WisData* (*postHookFunc) (struct WisData* retVal___, int id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_get_wisdata_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_inter_get_wisdata_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, id);
- }
- }
- return retVal___;
-}
-void HP_inter_remove_wisdata(int id) {
- int hIndex = 0;
- if (HPMHooks.count.HP_inter_remove_wisdata_pre > 0) {
- void (*preHookFunc) (int *id);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_inter_remove_wisdata_pre[hIndex].func;
- preHookFunc(&id);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.inter.remove_wisdata(id);
- }
- if (HPMHooks.count.HP_inter_remove_wisdata_post > 0) {
- void (*postHookFunc) (int id);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_inter_remove_wisdata_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_inter_remove_wisdata_post[hIndex].func;
- postHookFunc(id);
- }
- }
- return;
-}
/* inter_mail_interface */
int HP_inter_mail_sql_init(void) {
int hIndex = 0;
@@ -13498,33 +13358,6 @@ int HP_mapif_guild_broken(int guild_id, int flag) {
}
return retVal___;
}
-int HP_mapif_guild_message(int guild_id, int account_id, const char *mes, int len, int sfd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_guild_message_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len, int *sfd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_guild_message_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len, &sfd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.guild_message(guild_id, account_id, mes, len, sfd);
- }
- if (HPMHooks.count.HP_mapif_guild_message_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len, int sfd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_guild_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_guild_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len, sfd);
- }
- }
- return retVal___;
-}
int HP_mapif_guild_basicinfochanged(int guild_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
@@ -13930,33 +13763,6 @@ int HP_mapif_parse_BreakGuild(int fd, int guild_id) {
}
return retVal___;
}
-int HP_mapif_parse_GuildMessage(int fd, int guild_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_GuildMessage_pre > 0) {
- int (*preHookFunc) (int *fd, int *guild_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_GuildMessage_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &guild_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_GuildMessage(fd, guild_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_mapif_parse_GuildMessage_post > 0) {
- int (*postHookFunc) (int retVal___, int fd, int guild_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_GuildMessage_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_GuildMessage_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, guild_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_GuildBasicInfoChange(int fd, int guild_id, int type, const void *data, int len) {
int hIndex = 0;
int retVal___ = 0;
@@ -15195,33 +15001,6 @@ int HP_mapif_party_broken(int party_id, int flag) {
}
return retVal___;
}
-int HP_mapif_party_message(int party_id, int account_id, const char *mes, int len, int sfd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_party_message_pre > 0) {
- int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len, int *sfd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_party_message_pre[hIndex].func;
- retVal___ = preHookFunc(&party_id, &account_id, &mes, &len, &sfd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.party_message(party_id, account_id, mes, len, sfd);
- }
- if (HPMHooks.count.HP_mapif_party_message_post > 0) {
- int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len, int sfd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_party_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_party_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len, sfd);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_CreateParty(int fd, const char *name, int item, int item2, const struct party_member *leader) {
int hIndex = 0;
int retVal___ = 0;
@@ -15410,33 +15189,6 @@ int HP_mapif_parse_BreakParty(int fd, int party_id) {
}
return retVal___;
}
-int HP_mapif_parse_PartyMessage(int fd, int party_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_PartyMessage_pre > 0) {
- int (*preHookFunc) (int *fd, int *party_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_PartyMessage_pre[hIndex].func;
- retVal___ = preHookFunc(&fd, &party_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_PartyMessage(fd, party_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_mapif_parse_PartyMessage_post > 0) {
- int (*postHookFunc) (int retVal___, int fd, int party_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_PartyMessage_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_PartyMessage_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd, party_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_PartyLeaderChange(int fd, int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
@@ -16447,113 +16199,6 @@ void HP_mapif_parse_accinfo(int fd) {
}
return;
}
-int HP_mapif_broadcast(const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_broadcast_pre > 0) {
- int (*preHookFunc) (const unsigned char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY, int *sfd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_broadcast_pre[hIndex].func;
- retVal___ = preHookFunc(&mes, &len, &fontColor, &fontType, &fontSize, &fontAlign, &fontY, &sfd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.broadcast(mes, len, fontColor, fontType, fontSize, fontAlign, fontY, sfd);
- }
- if (HPMHooks.count.HP_mapif_broadcast_post > 0) {
- int (*postHookFunc) (int retVal___, const unsigned char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY, int sfd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_broadcast_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_broadcast_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, sfd);
- }
- }
- return retVal___;
-}
-int HP_mapif_wis_message(struct WisData *wd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_wis_message_pre > 0) {
- int (*preHookFunc) (struct WisData **wd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_wis_message_pre[hIndex].func;
- retVal___ = preHookFunc(&wd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.wis_message(wd);
- }
- if (HPMHooks.count.HP_mapif_wis_message_post > 0) {
- int (*postHookFunc) (int retVal___, struct WisData *wd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_wis_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, wd);
- }
- }
- return retVal___;
-}
-void HP_mapif_wis_response(int fd, const unsigned char *src, int flag) {
- int hIndex = 0;
- if (HPMHooks.count.HP_mapif_wis_response_pre > 0) {
- void (*preHookFunc) (int *fd, const unsigned char **src, int *flag);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_wis_response_pre[hIndex].func;
- preHookFunc(&fd, &src, &flag);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.mapif.wis_response(fd, src, flag);
- }
- if (HPMHooks.count.HP_mapif_wis_response_post > 0) {
- void (*postHookFunc) (int fd, const unsigned char *src, int flag);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_response_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_wis_response_post[hIndex].func;
- postHookFunc(fd, src, flag);
- }
- }
- return;
-}
-int HP_mapif_wis_end(struct WisData *wd, int flag) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_wis_end_pre > 0) {
- int (*preHookFunc) (struct WisData **wd, int *flag);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_wis_end_pre[hIndex].func;
- retVal___ = preHookFunc(&wd, &flag);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.wis_end(wd, flag);
- }
- if (HPMHooks.count.HP_mapif_wis_end_post > 0) {
- int (*postHookFunc) (int retVal___, struct WisData *wd, int flag);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_wis_end_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_wis_end_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, wd, flag);
- }
- }
- return retVal___;
-}
int HP_mapif_account_reg_reply(int fd, int account_id, int char_id, int type) {
int hIndex = 0;
int retVal___ = 0;
@@ -16608,114 +16253,6 @@ int HP_mapif_disconnectplayer(int fd, int account_id, int char_id, int reason) {
}
return retVal___;
}
-int HP_mapif_parse_broadcast(int fd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_broadcast_pre > 0) {
- int (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_broadcast_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_broadcast(fd);
- }
- if (HPMHooks.count.HP_mapif_parse_broadcast_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_broadcast_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_broadcast_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
- }
- }
- return retVal___;
-}
-int HP_mapif_parse_WisRequest(int fd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_WisRequest_pre > 0) {
- int (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_WisRequest_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_WisRequest(fd);
- }
- if (HPMHooks.count.HP_mapif_parse_WisRequest_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisRequest_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_WisRequest_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
- }
- }
- return retVal___;
-}
-int HP_mapif_parse_WisReply(int fd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_WisReply_pre > 0) {
- int (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_WisReply_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_WisReply(fd);
- }
- if (HPMHooks.count.HP_mapif_parse_WisReply_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisReply_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_WisReply_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
- }
- }
- return retVal___;
-}
-int HP_mapif_parse_WisToGM(int fd) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_mapif_parse_WisToGM_pre > 0) {
- int (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_mapif_parse_WisToGM_pre[hIndex].func;
- retVal___ = preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.mapif.parse_WisToGM(fd);
- }
- if (HPMHooks.count.HP_mapif_parse_WisToGM_post > 0) {
- int (*postHookFunc) (int retVal___, int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_mapif_parse_WisToGM_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_mapif_parse_WisToGM_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fd);
- }
- }
- return retVal___;
-}
int HP_mapif_parse_Registry(int fd) {
int hIndex = 0;
int retVal___ = 0;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index c87729dee..1bf974d28 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -2574,8 +2574,6 @@ struct {
struct HPMHookPoint *HP_guild_emblem_changed_post;
struct HPMHookPoint *HP_guild_send_message_pre;
struct HPMHookPoint *HP_guild_send_message_post;
- struct HPMHookPoint *HP_guild_recv_message_pre;
- struct HPMHookPoint *HP_guild_recv_message_post;
struct HPMHookPoint *HP_guild_send_dot_remove_pre;
struct HPMHookPoint *HP_guild_send_dot_remove_post;
struct HPMHookPoint *HP_guild_skillupack_pre;
@@ -2720,6 +2718,8 @@ struct {
struct HPMHookPoint *HP_homun_mutate_post;
struct HPMHookPoint *HP_homun_gainexp_pre;
struct HPMHookPoint *HP_homun_gainexp_post;
+ struct HPMHookPoint *HP_homun_gainexp_real_pre;
+ struct HPMHookPoint *HP_homun_gainexp_real_post;
struct HPMHookPoint *HP_homun_add_intimacy_pre;
struct HPMHookPoint *HP_homun_add_intimacy_post;
struct HPMHookPoint *HP_homun_consume_intimacy_pre;
@@ -2818,16 +2818,6 @@ struct {
struct HPMHookPoint *HP_intif_parse_post;
struct HPMHookPoint *HP_intif_create_pet_pre;
struct HPMHookPoint *HP_intif_create_pet_post;
- struct HPMHookPoint *HP_intif_broadcast_pre;
- struct HPMHookPoint *HP_intif_broadcast_post;
- struct HPMHookPoint *HP_intif_broadcast2_pre;
- struct HPMHookPoint *HP_intif_broadcast2_post;
- struct HPMHookPoint *HP_intif_main_message_pre;
- struct HPMHookPoint *HP_intif_main_message_post;
- struct HPMHookPoint *HP_intif_wis_message_pre;
- struct HPMHookPoint *HP_intif_wis_message_post;
- struct HPMHookPoint *HP_intif_wis_message_to_gm_pre;
- struct HPMHookPoint *HP_intif_wis_message_to_gm_post;
struct HPMHookPoint *HP_intif_saveregistry_pre;
struct HPMHookPoint *HP_intif_saveregistry_post;
struct HPMHookPoint *HP_intif_request_registry_pre;
@@ -2854,8 +2844,6 @@ struct {
struct HPMHookPoint *HP_intif_party_changemap_post;
struct HPMHookPoint *HP_intif_break_party_pre;
struct HPMHookPoint *HP_intif_break_party_post;
- struct HPMHookPoint *HP_intif_party_message_pre;
- struct HPMHookPoint *HP_intif_party_message_post;
struct HPMHookPoint *HP_intif_party_leaderchange_pre;
struct HPMHookPoint *HP_intif_party_leaderchange_post;
struct HPMHookPoint *HP_intif_guild_create_pre;
@@ -2870,8 +2858,6 @@ struct {
struct HPMHookPoint *HP_intif_guild_memberinfoshort_post;
struct HPMHookPoint *HP_intif_guild_break_pre;
struct HPMHookPoint *HP_intif_guild_break_post;
- struct HPMHookPoint *HP_intif_guild_message_pre;
- struct HPMHookPoint *HP_intif_guild_message_post;
struct HPMHookPoint *HP_intif_guild_change_gm_pre;
struct HPMHookPoint *HP_intif_guild_change_gm_post;
struct HPMHookPoint *HP_intif_guild_change_basicinfo_pre;
@@ -2978,14 +2964,6 @@ struct {
struct HPMHookPoint *HP_intif_achievements_request_post;
struct HPMHookPoint *HP_intif_achievements_save_pre;
struct HPMHookPoint *HP_intif_achievements_save_post;
- struct HPMHookPoint *HP_intif_pWisMessage_pre;
- struct HPMHookPoint *HP_intif_pWisMessage_post;
- struct HPMHookPoint *HP_intif_pWisEnd_pre;
- struct HPMHookPoint *HP_intif_pWisEnd_post;
- struct HPMHookPoint *HP_intif_pWisToGM_sub_pre;
- struct HPMHookPoint *HP_intif_pWisToGM_sub_post;
- struct HPMHookPoint *HP_intif_pWisToGM_pre;
- struct HPMHookPoint *HP_intif_pWisToGM_post;
struct HPMHookPoint *HP_intif_pRegisters_pre;
struct HPMHookPoint *HP_intif_pRegisters_post;
struct HPMHookPoint *HP_intif_pAccountStorage_pre;
@@ -3014,8 +2992,6 @@ struct {
struct HPMHookPoint *HP_intif_pPartyMove_post;
struct HPMHookPoint *HP_intif_pPartyBroken_pre;
struct HPMHookPoint *HP_intif_pPartyBroken_post;
- struct HPMHookPoint *HP_intif_pPartyMessage_pre;
- struct HPMHookPoint *HP_intif_pPartyMessage_post;
struct HPMHookPoint *HP_intif_pGuildCreated_pre;
struct HPMHookPoint *HP_intif_pGuildCreated_post;
struct HPMHookPoint *HP_intif_pGuildInfo_pre;
@@ -3028,8 +3004,6 @@ struct {
struct HPMHookPoint *HP_intif_pGuildMemberInfoShort_post;
struct HPMHookPoint *HP_intif_pGuildBroken_pre;
struct HPMHookPoint *HP_intif_pGuildBroken_post;
- struct HPMHookPoint *HP_intif_pGuildMessage_pre;
- struct HPMHookPoint *HP_intif_pGuildMessage_post;
struct HPMHookPoint *HP_intif_pGuildBasicInfoChanged_pre;
struct HPMHookPoint *HP_intif_pGuildBasicInfoChanged_post;
struct HPMHookPoint *HP_intif_pGuildMemberInfoChanged_pre;
@@ -4440,8 +4414,6 @@ struct {
struct HPMHookPoint *HP_party_send_logout_post;
struct HPMHookPoint *HP_party_send_message_pre;
struct HPMHookPoint *HP_party_send_message_post;
- struct HPMHookPoint *HP_party_recv_message_pre;
- struct HPMHookPoint *HP_party_recv_message_post;
struct HPMHookPoint *HP_party_skill_check_pre;
struct HPMHookPoint *HP_party_skill_check_post;
struct HPMHookPoint *HP_party_send_xy_clear_pre;
@@ -4986,8 +4958,14 @@ struct {
struct HPMHookPoint *HP_pc_update_idle_time_post;
struct HPMHookPoint *HP_pc_have_magnifier_pre;
struct HPMHookPoint *HP_pc_have_magnifier_post;
+ struct HPMHookPoint *HP_pc_have_item_chain_pre;
+ struct HPMHookPoint *HP_pc_have_item_chain_post;
struct HPMHookPoint *HP_pc_process_chat_message_pre;
struct HPMHookPoint *HP_pc_process_chat_message_post;
+ struct HPMHookPoint *HP_pc_wis_message_to_gm_pre;
+ struct HPMHookPoint *HP_pc_wis_message_to_gm_post;
+ struct HPMHookPoint *HP_pc_wis_message_to_gm_sub_pre;
+ struct HPMHookPoint *HP_pc_wis_message_to_gm_sub_post;
struct HPMHookPoint *HP_pc_check_supernovice_call_pre;
struct HPMHookPoint *HP_pc_check_supernovice_call_post;
struct HPMHookPoint *HP_pc_check_basicskill_pre;
@@ -6482,8 +6460,14 @@ struct {
struct HPMHookPoint *HP_status_readdb_job2_post;
struct HPMHookPoint *HP_status_readdb_sizefix_pre;
struct HPMHookPoint *HP_status_readdb_sizefix_post;
- struct HPMHookPoint *HP_status_readdb_scconfig_pre;
- struct HPMHookPoint *HP_status_readdb_scconfig_post;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_pre;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_post;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_pre;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_post;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_flag_pre;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_flag_post;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_flag_additional_pre;
+ struct HPMHookPoint *HP_status_read_scdb_libconfig_sub_flag_additional_post;
struct HPMHookPoint *HP_status_read_job_db_pre;
struct HPMHookPoint *HP_status_read_job_db_post;
struct HPMHookPoint *HP_status_read_job_db_sub_pre;
@@ -9371,8 +9355,6 @@ struct {
int HP_guild_emblem_changed_post;
int HP_guild_send_message_pre;
int HP_guild_send_message_post;
- int HP_guild_recv_message_pre;
- int HP_guild_recv_message_post;
int HP_guild_send_dot_remove_pre;
int HP_guild_send_dot_remove_post;
int HP_guild_skillupack_pre;
@@ -9517,6 +9499,8 @@ struct {
int HP_homun_mutate_post;
int HP_homun_gainexp_pre;
int HP_homun_gainexp_post;
+ int HP_homun_gainexp_real_pre;
+ int HP_homun_gainexp_real_post;
int HP_homun_add_intimacy_pre;
int HP_homun_add_intimacy_post;
int HP_homun_consume_intimacy_pre;
@@ -9615,16 +9599,6 @@ struct {
int HP_intif_parse_post;
int HP_intif_create_pet_pre;
int HP_intif_create_pet_post;
- int HP_intif_broadcast_pre;
- int HP_intif_broadcast_post;
- int HP_intif_broadcast2_pre;
- int HP_intif_broadcast2_post;
- int HP_intif_main_message_pre;
- int HP_intif_main_message_post;
- int HP_intif_wis_message_pre;
- int HP_intif_wis_message_post;
- int HP_intif_wis_message_to_gm_pre;
- int HP_intif_wis_message_to_gm_post;
int HP_intif_saveregistry_pre;
int HP_intif_saveregistry_post;
int HP_intif_request_registry_pre;
@@ -9651,8 +9625,6 @@ struct {
int HP_intif_party_changemap_post;
int HP_intif_break_party_pre;
int HP_intif_break_party_post;
- int HP_intif_party_message_pre;
- int HP_intif_party_message_post;
int HP_intif_party_leaderchange_pre;
int HP_intif_party_leaderchange_post;
int HP_intif_guild_create_pre;
@@ -9667,8 +9639,6 @@ struct {
int HP_intif_guild_memberinfoshort_post;
int HP_intif_guild_break_pre;
int HP_intif_guild_break_post;
- int HP_intif_guild_message_pre;
- int HP_intif_guild_message_post;
int HP_intif_guild_change_gm_pre;
int HP_intif_guild_change_gm_post;
int HP_intif_guild_change_basicinfo_pre;
@@ -9775,14 +9745,6 @@ struct {
int HP_intif_achievements_request_post;
int HP_intif_achievements_save_pre;
int HP_intif_achievements_save_post;
- int HP_intif_pWisMessage_pre;
- int HP_intif_pWisMessage_post;
- int HP_intif_pWisEnd_pre;
- int HP_intif_pWisEnd_post;
- int HP_intif_pWisToGM_sub_pre;
- int HP_intif_pWisToGM_sub_post;
- int HP_intif_pWisToGM_pre;
- int HP_intif_pWisToGM_post;
int HP_intif_pRegisters_pre;
int HP_intif_pRegisters_post;
int HP_intif_pAccountStorage_pre;
@@ -9811,8 +9773,6 @@ struct {
int HP_intif_pPartyMove_post;
int HP_intif_pPartyBroken_pre;
int HP_intif_pPartyBroken_post;
- int HP_intif_pPartyMessage_pre;
- int HP_intif_pPartyMessage_post;
int HP_intif_pGuildCreated_pre;
int HP_intif_pGuildCreated_post;
int HP_intif_pGuildInfo_pre;
@@ -9825,8 +9785,6 @@ struct {
int HP_intif_pGuildMemberInfoShort_post;
int HP_intif_pGuildBroken_pre;
int HP_intif_pGuildBroken_post;
- int HP_intif_pGuildMessage_pre;
- int HP_intif_pGuildMessage_post;
int HP_intif_pGuildBasicInfoChanged_pre;
int HP_intif_pGuildBasicInfoChanged_post;
int HP_intif_pGuildMemberInfoChanged_pre;
@@ -11237,8 +11195,6 @@ struct {
int HP_party_send_logout_post;
int HP_party_send_message_pre;
int HP_party_send_message_post;
- int HP_party_recv_message_pre;
- int HP_party_recv_message_post;
int HP_party_skill_check_pre;
int HP_party_skill_check_post;
int HP_party_send_xy_clear_pre;
@@ -11783,8 +11739,14 @@ struct {
int HP_pc_update_idle_time_post;
int HP_pc_have_magnifier_pre;
int HP_pc_have_magnifier_post;
+ int HP_pc_have_item_chain_pre;
+ int HP_pc_have_item_chain_post;
int HP_pc_process_chat_message_pre;
int HP_pc_process_chat_message_post;
+ int HP_pc_wis_message_to_gm_pre;
+ int HP_pc_wis_message_to_gm_post;
+ int HP_pc_wis_message_to_gm_sub_pre;
+ int HP_pc_wis_message_to_gm_sub_post;
int HP_pc_check_supernovice_call_pre;
int HP_pc_check_supernovice_call_post;
int HP_pc_check_basicskill_pre;
@@ -13279,8 +13241,14 @@ struct {
int HP_status_readdb_job2_post;
int HP_status_readdb_sizefix_pre;
int HP_status_readdb_sizefix_post;
- int HP_status_readdb_scconfig_pre;
- int HP_status_readdb_scconfig_post;
+ int HP_status_read_scdb_libconfig_pre;
+ int HP_status_read_scdb_libconfig_post;
+ int HP_status_read_scdb_libconfig_sub_pre;
+ int HP_status_read_scdb_libconfig_sub_post;
+ int HP_status_read_scdb_libconfig_sub_flag_pre;
+ int HP_status_read_scdb_libconfig_sub_flag_post;
+ int HP_status_read_scdb_libconfig_sub_flag_additional_pre;
+ int HP_status_read_scdb_libconfig_sub_flag_additional_post;
int HP_status_read_job_db_pre;
int HP_status_read_job_db_post;
int HP_status_read_job_db_sub_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 656cc7737..290c27961 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -1320,7 +1320,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(guild->change_emblem, HP_guild_change_emblem) },
{ HP_POP(guild->emblem_changed, HP_guild_emblem_changed) },
{ HP_POP(guild->send_message, HP_guild_send_message) },
- { HP_POP(guild->recv_message, HP_guild_recv_message) },
{ HP_POP(guild->send_dot_remove, HP_guild_send_dot_remove) },
{ HP_POP(guild->skillupack, HP_guild_skillupack) },
{ HP_POP(guild->dobreak, HP_guild_dobreak) },
@@ -1395,6 +1394,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(homun->evolve, HP_homun_evolve) },
{ HP_POP(homun->mutate, HP_homun_mutate) },
{ HP_POP(homun->gainexp, HP_homun_gainexp) },
+ { HP_POP(homun->gainexp_real, HP_homun_gainexp_real) },
{ HP_POP(homun->add_intimacy, HP_homun_add_intimacy) },
{ HP_POP(homun->consume_intimacy, HP_homun_consume_intimacy) },
{ HP_POP(homun->healed, HP_homun_healed) },
@@ -1446,11 +1446,6 @@ struct HookingPointData HookingPoints[] = {
/* intif_interface */
{ HP_POP(intif->parse, HP_intif_parse) },
{ HP_POP(intif->create_pet, HP_intif_create_pet) },
- { HP_POP(intif->broadcast, HP_intif_broadcast) },
- { HP_POP(intif->broadcast2, HP_intif_broadcast2) },
- { HP_POP(intif->main_message, HP_intif_main_message) },
- { HP_POP(intif->wis_message, HP_intif_wis_message) },
- { HP_POP(intif->wis_message_to_gm, HP_intif_wis_message_to_gm) },
{ HP_POP(intif->saveregistry, HP_intif_saveregistry) },
{ HP_POP(intif->request_registry, HP_intif_request_registry) },
{ HP_POP(intif->request_account_storage, HP_intif_request_account_storage) },
@@ -1464,7 +1459,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->party_leave, HP_intif_party_leave) },
{ HP_POP(intif->party_changemap, HP_intif_party_changemap) },
{ HP_POP(intif->break_party, HP_intif_break_party) },
- { HP_POP(intif->party_message, HP_intif_party_message) },
{ HP_POP(intif->party_leaderchange, HP_intif_party_leaderchange) },
{ HP_POP(intif->guild_create, HP_intif_guild_create) },
{ HP_POP(intif->guild_request_info, HP_intif_guild_request_info) },
@@ -1472,7 +1466,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->guild_leave, HP_intif_guild_leave) },
{ HP_POP(intif->guild_memberinfoshort, HP_intif_guild_memberinfoshort) },
{ HP_POP(intif->guild_break, HP_intif_guild_break) },
- { HP_POP(intif->guild_message, HP_intif_guild_message) },
{ HP_POP(intif->guild_change_gm, HP_intif_guild_change_gm) },
{ HP_POP(intif->guild_change_basicinfo, HP_intif_guild_change_basicinfo) },
{ HP_POP(intif->guild_change_memberinfo, HP_intif_guild_change_memberinfo) },
@@ -1526,10 +1519,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->CheckForCharServer, HP_intif_CheckForCharServer) },
{ HP_POP(intif->achievements_request, HP_intif_achievements_request) },
{ HP_POP(intif->achievements_save, HP_intif_achievements_save) },
- { HP_POP(intif->pWisMessage, HP_intif_pWisMessage) },
- { HP_POP(intif->pWisEnd, HP_intif_pWisEnd) },
- { HP_POP(intif->pWisToGM_sub, HP_intif_pWisToGM_sub) },
- { HP_POP(intif->pWisToGM, HP_intif_pWisToGM) },
{ HP_POP(intif->pRegisters, HP_intif_pRegisters) },
{ HP_POP(intif->pAccountStorage, HP_intif_pAccountStorage) },
{ HP_POP(intif->pChangeNameOk, HP_intif_pChangeNameOk) },
@@ -1544,14 +1533,12 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(intif->pPartyMemberWithdraw, HP_intif_pPartyMemberWithdraw) },
{ HP_POP(intif->pPartyMove, HP_intif_pPartyMove) },
{ HP_POP(intif->pPartyBroken, HP_intif_pPartyBroken) },
- { HP_POP(intif->pPartyMessage, HP_intif_pPartyMessage) },
{ HP_POP(intif->pGuildCreated, HP_intif_pGuildCreated) },
{ HP_POP(intif->pGuildInfo, HP_intif_pGuildInfo) },
{ HP_POP(intif->pGuildMemberAdded, HP_intif_pGuildMemberAdded) },
{ HP_POP(intif->pGuildMemberWithdraw, HP_intif_pGuildMemberWithdraw) },
{ HP_POP(intif->pGuildMemberInfoShort, HP_intif_pGuildMemberInfoShort) },
{ HP_POP(intif->pGuildBroken, HP_intif_pGuildBroken) },
- { HP_POP(intif->pGuildMessage, HP_intif_pGuildMessage) },
{ HP_POP(intif->pGuildBasicInfoChanged, HP_intif_pGuildBasicInfoChanged) },
{ HP_POP(intif->pGuildMemberInfoChanged, HP_intif_pGuildMemberInfoChanged) },
{ HP_POP(intif->pGuildPosition, HP_intif_pGuildPosition) },
@@ -2275,7 +2262,6 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(party->send_levelup, HP_party_send_levelup) },
{ HP_POP(party->send_logout, HP_party_send_logout) },
{ HP_POP(party->send_message, HP_party_send_message) },
- { HP_POP(party->recv_message, HP_party_recv_message) },
{ HP_POP(party->skill_check, HP_party_skill_check) },
{ HP_POP(party->send_xy_clear, HP_party_send_xy_clear) },
{ HP_POP(party->exp_share, HP_party_exp_share) },
@@ -2551,7 +2537,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(pc->check_job_name, HP_pc_check_job_name) },
{ HP_POP(pc->update_idle_time, HP_pc_update_idle_time) },
{ HP_POP(pc->have_magnifier, HP_pc_have_magnifier) },
+ { HP_POP(pc->have_item_chain, HP_pc_have_item_chain) },
{ HP_POP(pc->process_chat_message, HP_pc_process_chat_message) },
+ { HP_POP(pc->wis_message_to_gm, HP_pc_wis_message_to_gm) },
+ { HP_POP(pc->wis_message_to_gm_sub, HP_pc_wis_message_to_gm_sub) },
{ HP_POP(pc->check_supernovice_call, HP_pc_check_supernovice_call) },
{ HP_POP(pc->check_basicskill, HP_pc_check_basicskill) },
{ HP_POP(pc->isDeathPenaltyJob, HP_pc_isDeathPenaltyJob) },
@@ -3313,7 +3302,10 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(status->natural_heal_timer, HP_status_natural_heal_timer) },
{ HP_POP(status->readdb_job2, HP_status_readdb_job2) },
{ HP_POP(status->readdb_sizefix, HP_status_readdb_sizefix) },
- { HP_POP(status->readdb_scconfig, HP_status_readdb_scconfig) },
+ { HP_POP(status->read_scdb_libconfig, HP_status_read_scdb_libconfig) },
+ { HP_POP(status->read_scdb_libconfig_sub, HP_status_read_scdb_libconfig_sub) },
+ { HP_POP(status->read_scdb_libconfig_sub_flag, HP_status_read_scdb_libconfig_sub_flag) },
+ { HP_POP(status->read_scdb_libconfig_sub_flag_additional, HP_status_read_scdb_libconfig_sub_flag_additional) },
{ HP_POP(status->read_job_db, HP_status_read_job_db) },
{ HP_POP(status->read_job_db_sub, HP_status_read_job_db_sub) },
{ HP_POP(status->set_sc, HP_status_set_sc) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index 1ccb60e85..325d7407d 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -11278,11 +11278,11 @@ void HP_clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x,
}
return;
}
-int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2) {
+int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, enum battle_dmg_type type, int64 damage2) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_clif_damage_pre > 0) {
- int (*preHookFunc) (struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *damage, short *div, unsigned char *type, int64 *damage2);
+ int (*preHookFunc) (struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *damage, short *div, enum battle_dmg_type *type, int64 *damage2);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_damage_pre[hIndex].func;
@@ -11297,7 +11297,7 @@ int HP_clif_damage(struct block_list *src, struct block_list *dst, int sdelay, i
retVal___ = HPMHooks.source.clif.damage(src, dst, sdelay, ddelay, damage, div, type, damage2);
}
if (HPMHooks.count.HP_clif_damage_post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, unsigned char type, int64 damage2);
+ int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 damage, short div, enum battle_dmg_type type, int64 damage2);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, dst, sdelay, ddelay, damage, div, type, damage2);
@@ -14532,11 +14532,11 @@ void HP_clif_callpartner(struct map_session_data *sd) {
}
return;
}
-int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type) {
+int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_clif_skill_damage_pre > 0) {
- int (*preHookFunc) (struct block_list **src, struct block_list **dst, int64 *tick, int *sdelay, int *ddelay, int64 *damage, int *div, uint16 *skill_id, uint16 *skill_lv, int *type);
+ int (*preHookFunc) (struct block_list **src, struct block_list **dst, int64 *tick, int *sdelay, int *ddelay, int64 *damage, int *div, uint16 *skill_id, uint16 *skill_lv, enum battle_dmg_type *type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_skill_damage_pre[hIndex].func;
@@ -14551,7 +14551,7 @@ int HP_clif_skill_damage(struct block_list *src, struct block_list *dst, int64 t
retVal___ = HPMHooks.source.clif.skill_damage(src, dst, tick, sdelay, ddelay, damage, div, skill_id, skill_lv, type);
}
if (HPMHooks.count.HP_clif_skill_damage_post > 0) {
- int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, int type);
+ int (*postHookFunc) (int retVal___, struct block_list *src, struct block_list *dst, int64 tick, int sdelay, int ddelay, int64 damage, int div, uint16 skill_id, uint16 skill_lv, enum battle_dmg_type type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_skill_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_skill_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, src, dst, tick, sdelay, ddelay, damage, div, skill_id, skill_lv, type);
@@ -21332,11 +21332,11 @@ void HP_clif_notify_bounditem(struct map_session_data *sd, unsigned short index)
}
return;
}
-int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type) {
+int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_clif_delay_damage_pre > 0) {
- int (*preHookFunc) (int64 *tick, struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *in_damage, short *div, unsigned char *type);
+ int (*preHookFunc) (int64 *tick, struct block_list **src, struct block_list **dst, int *sdelay, int *ddelay, int64 *in_damage, short *div, enum battle_dmg_type *type);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_clif_delay_damage_pre[hIndex].func;
@@ -21351,7 +21351,7 @@ int HP_clif_delay_damage(int64 tick, struct block_list *src, struct block_list *
retVal___ = HPMHooks.source.clif.delay_damage(tick, src, dst, sdelay, ddelay, in_damage, div, type);
}
if (HPMHooks.count.HP_clif_delay_damage_post > 0) {
- int (*postHookFunc) (int retVal___, int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, unsigned char type);
+ int (*postHookFunc) (int retVal___, int64 tick, struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type);
for (hIndex = 0; hIndex < HPMHooks.count.HP_clif_delay_damage_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_clif_delay_damage_post[hIndex].func;
retVal___ = postHookFunc(retVal___, tick, src, dst, sdelay, ddelay, in_damage, div, type);
@@ -33667,33 +33667,6 @@ int HP_guild_send_message(struct map_session_data *sd, const char *mes) {
}
return retVal___;
}
-int HP_guild_recv_message(int guild_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_guild_recv_message_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_guild_recv_message_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.guild.recv_message(guild_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_guild_recv_message_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_guild_recv_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_guild_recv_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_guild_send_dot_remove(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
@@ -35679,6 +35652,33 @@ int HP_homun_gainexp(struct homun_data *hd, unsigned int exp) {
}
return retVal___;
}
+int HP_homun_gainexp_real(struct homun_data *hd, unsigned int exp) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_homun_gainexp_real_pre > 0) {
+ int (*preHookFunc) (struct homun_data **hd, unsigned int *exp);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_real_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_homun_gainexp_real_pre[hIndex].func;
+ retVal___ = preHookFunc(&hd, &exp);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.homun.gainexp_real(hd, exp);
+ }
+ if (HPMHooks.count.HP_homun_gainexp_real_post > 0) {
+ int (*postHookFunc) (int retVal___, struct homun_data *hd, unsigned int exp);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_homun_gainexp_real_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_homun_gainexp_real_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, hd, exp);
+ }
+ }
+ return retVal___;
+}
unsigned int HP_homun_add_intimacy(struct homun_data *hd, unsigned int value) {
int hIndex = 0;
unsigned int retVal___ = 0;
@@ -36995,141 +36995,6 @@ int HP_intif_create_pet(int account_id, int char_id, int pet_type, int pet_lv, i
}
return retVal___;
}
-int HP_intif_broadcast(const char *mes, int len, int type) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_broadcast_pre > 0) {
- int (*preHookFunc) (const char **mes, int *len, int *type);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_broadcast_pre[hIndex].func;
- retVal___ = preHookFunc(&mes, &len, &type);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.broadcast(mes, len, type);
- }
- if (HPMHooks.count.HP_intif_broadcast_post > 0) {
- int (*postHookFunc) (int retVal___, const char *mes, int len, int type);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_broadcast_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, mes, len, type);
- }
- }
- return retVal___;
-}
-int HP_intif_broadcast2(const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_broadcast2_pre > 0) {
- int (*preHookFunc) (const char **mes, int *len, unsigned int *fontColor, short *fontType, short *fontSize, short *fontAlign, short *fontY);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_broadcast2_pre[hIndex].func;
- retVal___ = preHookFunc(&mes, &len, &fontColor, &fontType, &fontSize, &fontAlign, &fontY);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.broadcast2(mes, len, fontColor, fontType, fontSize, fontAlign, fontY);
- }
- if (HPMHooks.count.HP_intif_broadcast2_post > 0) {
- int (*postHookFunc) (int retVal___, const char *mes, int len, unsigned int fontColor, short fontType, short fontSize, short fontAlign, short fontY);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_broadcast2_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_broadcast2_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, mes, len, fontColor, fontType, fontSize, fontAlign, fontY);
- }
- }
- return retVal___;
-}
-int HP_intif_main_message(struct map_session_data *sd, const char *message) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_main_message_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, const char **message);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_main_message_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &message);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.main_message(sd, message);
- }
- if (HPMHooks.count.HP_intif_main_message_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *message);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_main_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_main_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, message);
- }
- }
- return retVal___;
-}
-int HP_intif_wis_message(struct map_session_data *sd, const char *nick, const char *mes, int mes_len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_wis_message_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, const char **nick, const char **mes, int *mes_len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_wis_message_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, &nick, &mes, &mes_len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.wis_message(sd, nick, mes, mes_len);
- }
- if (HPMHooks.count.HP_intif_wis_message_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, const char *nick, const char *mes, int mes_len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_wis_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, nick, mes, mes_len);
- }
- }
- return retVal___;
-}
-int HP_intif_wis_message_to_gm(char *Wisp_name, int permission, char *mes) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_wis_message_to_gm_pre > 0) {
- int (*preHookFunc) (char **Wisp_name, int *permission, char **mes);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_wis_message_to_gm_pre[hIndex].func;
- retVal___ = preHookFunc(&Wisp_name, &permission, &mes);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.wis_message_to_gm(Wisp_name, permission, mes);
- }
- if (HPMHooks.count.HP_intif_wis_message_to_gm_post > 0) {
- int (*postHookFunc) (int retVal___, char *Wisp_name, int permission, char *mes);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_wis_message_to_gm_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_wis_message_to_gm_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, Wisp_name, permission, mes);
- }
- }
- return retVal___;
-}
int HP_intif_saveregistry(struct map_session_data *sd) {
int hIndex = 0;
int retVal___ = 0;
@@ -37479,33 +37344,6 @@ int HP_intif_break_party(int party_id) {
}
return retVal___;
}
-int HP_intif_party_message(int party_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_party_message_pre > 0) {
- int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_party_message_pre[hIndex].func;
- retVal___ = preHookFunc(&party_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.party_message(party_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_intif_party_message_post > 0) {
- int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_party_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_party_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_intif_party_leaderchange(int party_id, int account_id, int char_id) {
int hIndex = 0;
int retVal___ = 0;
@@ -37695,33 +37533,6 @@ int HP_intif_guild_break(int guild_id) {
}
return retVal___;
}
-int HP_intif_guild_message(int guild_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_guild_message_pre > 0) {
- int (*preHookFunc) (int *guild_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_guild_message_pre[hIndex].func;
- retVal___ = preHookFunc(&guild_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.intif.guild_message(guild_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_intif_guild_message_post > 0) {
- int (*postHookFunc) (int retVal___, int guild_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_guild_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_guild_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, guild_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_intif_guild_change_gm(int guild_id, const char *name, int len) {
int hIndex = 0;
int retVal___ = 0;
@@ -39146,117 +38957,6 @@ void HP_intif_achievements_save(struct map_session_data *sd) {
}
return;
}
-void HP_intif_pWisMessage(int fd) {
- int hIndex = 0;
- if (HPMHooks.count.HP_intif_pWisMessage_pre > 0) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_pWisMessage_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.intif.pWisMessage(fd);
- }
- if (HPMHooks.count.HP_intif_pWisMessage_post > 0) {
- void (*postHookFunc) (int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisMessage_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_pWisMessage_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
-void HP_intif_pWisEnd(int fd) {
- int hIndex = 0;
- if (HPMHooks.count.HP_intif_pWisEnd_pre > 0) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_pWisEnd_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.intif.pWisEnd(fd);
- }
- if (HPMHooks.count.HP_intif_pWisEnd_post > 0) {
- void (*postHookFunc) (int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisEnd_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_pWisEnd_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
-int HP_intif_pWisToGM_sub(struct map_session_data *sd, va_list va) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_intif_pWisToGM_sub_pre > 0) {
- int (*preHookFunc) (struct map_session_data **sd, va_list va);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_pre; hIndex++) {
- va_list va___copy; va_copy(va___copy, va);
- preHookFunc = HPMHooks.list.HP_intif_pWisToGM_sub_pre[hIndex].func;
- retVal___ = preHookFunc(&sd, va___copy);
- va_end(va___copy);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- va_list va___copy; va_copy(va___copy, va);
- retVal___ = HPMHooks.source.intif.pWisToGM_sub(sd, va___copy);
- va_end(va___copy);
- }
- if (HPMHooks.count.HP_intif_pWisToGM_sub_post > 0) {
- int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list va);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_sub_post; hIndex++) {
- va_list va___copy; va_copy(va___copy, va);
- postHookFunc = HPMHooks.list.HP_intif_pWisToGM_sub_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, sd, va___copy);
- va_end(va___copy);
- }
- }
- return retVal___;
-}
-void HP_intif_pWisToGM(int fd) {
- int hIndex = 0;
- if (HPMHooks.count.HP_intif_pWisToGM_pre > 0) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_pWisToGM_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.intif.pWisToGM(fd);
- }
- if (HPMHooks.count.HP_intif_pWisToGM_post > 0) {
- void (*postHookFunc) (int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pWisToGM_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_pWisToGM_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
void HP_intif_pRegisters(int fd) {
int hIndex = 0;
if (HPMHooks.count.HP_intif_pRegisters_pre > 0) {
@@ -39621,32 +39321,6 @@ void HP_intif_pPartyBroken(int fd) {
}
return;
}
-void HP_intif_pPartyMessage(int fd) {
- int hIndex = 0;
- if (HPMHooks.count.HP_intif_pPartyMessage_pre > 0) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_pPartyMessage_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.intif.pPartyMessage(fd);
- }
- if (HPMHooks.count.HP_intif_pPartyMessage_post > 0) {
- void (*postHookFunc) (int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pPartyMessage_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_pPartyMessage_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
void HP_intif_pGuildCreated(int fd) {
int hIndex = 0;
if (HPMHooks.count.HP_intif_pGuildCreated_pre > 0) {
@@ -39803,32 +39477,6 @@ void HP_intif_pGuildBroken(int fd) {
}
return;
}
-void HP_intif_pGuildMessage(int fd) {
- int hIndex = 0;
- if (HPMHooks.count.HP_intif_pGuildMessage_pre > 0) {
- void (*preHookFunc) (int *fd);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_intif_pGuildMessage_pre[hIndex].func;
- preHookFunc(&fd);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return;
- }
- }
- {
- HPMHooks.source.intif.pGuildMessage(fd);
- }
- if (HPMHooks.count.HP_intif_pGuildMessage_post > 0) {
- void (*postHookFunc) (int fd);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_intif_pGuildMessage_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_intif_pGuildMessage_post[hIndex].func;
- postHookFunc(fd);
- }
- }
- return;
-}
void HP_intif_pGuildBasicInfoChanged(int fd) {
int hIndex = 0;
if (HPMHooks.count.HP_intif_pGuildBasicInfoChanged_pre > 0) {
@@ -58998,33 +58646,6 @@ int HP_party_send_message(struct map_session_data *sd, const char *mes) {
}
return retVal___;
}
-int HP_party_recv_message(int party_id, int account_id, const char *mes, int len) {
- int hIndex = 0;
- int retVal___ = 0;
- if (HPMHooks.count.HP_party_recv_message_pre > 0) {
- int (*preHookFunc) (int *party_id, int *account_id, const char **mes, int *len);
- *HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_party_recv_message_pre[hIndex].func;
- retVal___ = preHookFunc(&party_id, &account_id, &mes, &len);
- }
- if (*HPMforce_return) {
- *HPMforce_return = false;
- return retVal___;
- }
- }
- {
- retVal___ = HPMHooks.source.party.recv_message(party_id, account_id, mes, len);
- }
- if (HPMHooks.count.HP_party_recv_message_post > 0) {
- int (*postHookFunc) (int retVal___, int party_id, int account_id, const char *mes, int len);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_party_recv_message_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_party_recv_message_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, party_id, account_id, mes, len);
- }
- }
- return retVal___;
-}
int HP_party_skill_check(struct map_session_data *sd, int party_id, uint16 skill_id, uint16 skill_lv) {
int hIndex = 0;
int retVal___ = 0;
@@ -61519,11 +61140,11 @@ int HP_pc_updateweightstatus(struct map_session_data *sd) {
}
return retVal___;
}
-int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned short pos, bool onskill) {
+int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned int pos, bool onskill) {
int hIndex = 0;
int retVal___ = 0;
if (HPMHooks.count.HP_pc_addautobonus_pre > 0) {
- int (*preHookFunc) (struct s_autobonus **bonus, char *max, const char **bonus_script, short *rate, unsigned int *dur, short *atk_type, const char **o_script, unsigned short *pos, bool *onskill);
+ int (*preHookFunc) (struct s_autobonus **bonus, char *max, const char **bonus_script, short *rate, unsigned int *dur, short *atk_type, const char **o_script, unsigned int *pos, bool *onskill);
*HPMforce_return = false;
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_pre; hIndex++) {
preHookFunc = HPMHooks.list.HP_pc_addautobonus_pre[hIndex].func;
@@ -61538,7 +61159,7 @@ int HP_pc_addautobonus(struct s_autobonus *bonus, char max, const char *bonus_sc
retVal___ = HPMHooks.source.pc.addautobonus(bonus, max, bonus_script, rate, dur, atk_type, o_script, pos, onskill);
}
if (HPMHooks.count.HP_pc_addautobonus_post > 0) {
- int (*postHookFunc) (int retVal___, struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned short pos, bool onskill);
+ int (*postHookFunc) (int retVal___, struct s_autobonus *bonus, char max, const char *bonus_script, short rate, unsigned int dur, short atk_type, const char *o_script, unsigned int pos, bool onskill);
for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_addautobonus_post; hIndex++) {
postHookFunc = HPMHooks.list.HP_pc_addautobonus_post[hIndex].func;
retVal___ = postHookFunc(retVal___, bonus, max, bonus_script, rate, dur, atk_type, o_script, pos, onskill);
@@ -66363,6 +65984,33 @@ int HP_pc_have_magnifier(struct map_session_data *sd) {
}
return retVal___;
}
+int HP_pc_have_item_chain(struct map_session_data *sd, unsigned short chain_id) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_have_item_chain_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, unsigned short *chain_id);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_item_chain_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_have_item_chain_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, &chain_id);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.have_item_chain(sd, chain_id);
+ }
+ if (HPMHooks.count.HP_pc_have_item_chain_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, unsigned short chain_id);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_have_item_chain_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_have_item_chain_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, chain_id);
+ }
+ }
+ return retVal___;
+}
bool HP_pc_process_chat_message(struct map_session_data *sd, const char *message) {
int hIndex = 0;
bool retVal___ = false;
@@ -66390,6 +66038,66 @@ bool HP_pc_process_chat_message(struct map_session_data *sd, const char *message
}
return retVal___;
}
+int HP_pc_wis_message_to_gm(const char *sender_name, int permission, const char *message) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_wis_message_to_gm_pre > 0) {
+ int (*preHookFunc) (const char **sender_name, int *permission, const char **message);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_wis_message_to_gm_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_pc_wis_message_to_gm_pre[hIndex].func;
+ retVal___ = preHookFunc(&sender_name, &permission, &message);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.pc.wis_message_to_gm(sender_name, permission, message);
+ }
+ if (HPMHooks.count.HP_pc_wis_message_to_gm_post > 0) {
+ int (*postHookFunc) (int retVal___, const char *sender_name, int permission, const char *message);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_wis_message_to_gm_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_pc_wis_message_to_gm_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sender_name, permission, message);
+ }
+ }
+ return retVal___;
+}
+int HP_pc_wis_message_to_gm_sub(struct map_session_data *sd, va_list va) {
+ int hIndex = 0;
+ int retVal___ = 0;
+ if (HPMHooks.count.HP_pc_wis_message_to_gm_sub_pre > 0) {
+ int (*preHookFunc) (struct map_session_data **sd, va_list va);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_wis_message_to_gm_sub_pre; hIndex++) {
+ va_list va___copy; va_copy(va___copy, va);
+ preHookFunc = HPMHooks.list.HP_pc_wis_message_to_gm_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&sd, va___copy);
+ va_end(va___copy);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ va_list va___copy; va_copy(va___copy, va);
+ retVal___ = HPMHooks.source.pc.wis_message_to_gm_sub(sd, va___copy);
+ va_end(va___copy);
+ }
+ if (HPMHooks.count.HP_pc_wis_message_to_gm_sub_post > 0) {
+ int (*postHookFunc) (int retVal___, struct map_session_data *sd, va_list va);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_pc_wis_message_to_gm_sub_post; hIndex++) {
+ va_list va___copy; va_copy(va___copy, va);
+ postHookFunc = HPMHooks.list.HP_pc_wis_message_to_gm_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, sd, va___copy);
+ va_end(va___copy);
+ }
+ }
+ return retVal___;
+}
void HP_pc_check_supernovice_call(struct map_session_data *sd, const char *message) {
int hIndex = 0;
if (HPMHooks.count.HP_pc_check_supernovice_call_pre > 0) {
@@ -86732,15 +86440,15 @@ bool HP_status_readdb_sizefix(char *fields[], int columns, int current) {
}
return retVal___;
}
-bool HP_status_readdb_scconfig(char *fields[], int columns, int current) {
+bool HP_status_read_scdb_libconfig(void) {
int hIndex = 0;
bool retVal___ = false;
- if (HPMHooks.count.HP_status_readdb_scconfig_pre > 0) {
- bool (*preHookFunc) (char **fields[], int *columns, int *current);
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_pre > 0) {
+ bool (*preHookFunc) (void);
*HPMforce_return = false;
- for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_pre; hIndex++) {
- preHookFunc = HPMHooks.list.HP_status_readdb_scconfig_pre[hIndex].func;
- retVal___ = preHookFunc(&fields, &columns, &current);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_pre[hIndex].func;
+ retVal___ = preHookFunc();
}
if (*HPMforce_return) {
*HPMforce_return = false;
@@ -86748,13 +86456,94 @@ bool HP_status_readdb_scconfig(char *fields[], int columns, int current) {
}
}
{
- retVal___ = HPMHooks.source.status.readdb_scconfig(fields, columns, current);
+ retVal___ = HPMHooks.source.status.read_scdb_libconfig();
}
- if (HPMHooks.count.HP_status_readdb_scconfig_post > 0) {
- bool (*postHookFunc) (bool retVal___, char *fields[], int columns, int current);
- for (hIndex = 0; hIndex < HPMHooks.count.HP_status_readdb_scconfig_post; hIndex++) {
- postHookFunc = HPMHooks.list.HP_status_readdb_scconfig_post[hIndex].func;
- retVal___ = postHookFunc(retVal___, fields, columns, current);
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_post > 0) {
+ bool (*postHookFunc) (bool retVal___);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___);
+ }
+ }
+ return retVal___;
+}
+bool HP_status_read_scdb_libconfig_sub(struct config_setting_t *it, int idx, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *idx, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &idx, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.read_scdb_libconfig_sub(it, idx, source);
+ }
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int idx, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, idx, source);
+ }
+ }
+ return retVal___;
+}
+bool HP_status_read_scdb_libconfig_sub_flag(struct config_setting_t *it, int type, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *type, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_flag_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &type, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.read_scdb_libconfig_sub_flag(it, type, source);
+ }
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int type, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_flag_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, type, source);
+ }
+ }
+ return retVal___;
+}
+bool HP_status_read_scdb_libconfig_sub_flag_additional(struct config_setting_t *it, int type, const char *source) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_additional_pre > 0) {
+ bool (*preHookFunc) (struct config_setting_t **it, int *type, const char **source);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_additional_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_flag_additional_pre[hIndex].func;
+ retVal___ = preHookFunc(&it, &type, &source);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.status.read_scdb_libconfig_sub_flag_additional(it, type, source);
+ }
+ if (HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_additional_post > 0) {
+ bool (*postHookFunc) (bool retVal___, struct config_setting_t *it, int type, const char *source);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_status_read_scdb_libconfig_sub_flag_additional_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_status_read_scdb_libconfig_sub_flag_additional_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, it, type, source);
}
}
return retVal___;
diff --git a/tools/scconfigconverter.py b/tools/scconfigconverter.py
new file mode 100644
index 000000000..9216fa3b5
--- /dev/null
+++ b/tools/scconfigconverter.py
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+# -*- coding: utf8 -*-
+#
+# This file is part of Hercules.
+# http://herc.ws - http://github.com/HerculesWS/Hercules
+#
+# Copyright (C) 2019 Hercules Dev Team
+# Copyright (C) 2019 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
+# 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/>.
+#
+
+import csv
+
+with open('../db/sc_config.txt') as dbfile:
+ sc_config = csv.reader(dbfile, delimiter=',')
+
+ print(r'''//================= Hercules Database =====================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2019 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/>.
+//================= Description ===========================================
+// Configurations file for status effects
+//=========================================================================
+''')
+ print('''/**************************************************************************
+ ************* Entry structure ********************************************
+ **************************************************************************
+SC_TYPE: {
+ // ================ Optional fields ===============================
+ Visible: (bool) SC can be visible for all players
+ Flags: {
+ NoDeathReset: (bool) SC cannot be removed by death.
+ NoSave: (bool) SC cannot be saved.
+ NoDispelReset: (bool) SC cannot be reset by dispell.
+ NoClearanceReset: (bool) SC cannot be reset by clearance.
+ Buff: (bool) SC considered as buff and be removed by Hermode and etc.
+ Debuff: (bool) SC considered as debuff and be removed by Gospel and etc.
+ NoMadoReset: (bool) SC cannot be reset when MADO Gear is taken off.
+ NoAllReset: (bool) SC cannot be reset by 'sc_end SC_ALL' and status change clear.
+ }
+}
+**************************************************************************/''')
+ flags = [
+ ('NoDeathReset', 1),
+ ('NoSave', 2),
+ ('NoDispelReset', 4),
+ ('NoClearanceReset', 8),
+ ('Buff', 16),
+ ('Debuff', 32),
+ ('NoMadoReset', 64),
+ ('NoAllReset', 128)
+ ]
+
+ for sc in sc_config:
+ if len(sc) != 2 or sc[0].startswith('//'):
+ continue
+ value = int(sc[1])
+ print('{}: {{'.format(sc[0]))
+ if value & 256:
+ print('\tVisible: true')
+ value &= ~256;
+
+ print('\tFlags: {')
+ for flag in flags:
+ if value & flag[1]:
+ print('\t\t{}: true'.format(flag[0]))
+ value &= ~flag[1];
+ if value != 0:
+ print('Error: invalid value ({}) for status ({}), aborting.'.format(int(sc[1]), sc[0]))
+ exit()
+ print('\t}')
+ print('}')
diff --git a/vcproj-12/char-server.vcxproj b/vcproj-16/char-server.vcxproj
index 284f38239..fd53a34ad 100644
--- a/vcproj-12/char-server.vcxproj
+++ b/vcproj-16/char-server.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -14,18 +14,19 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E4E9646175AF}</ProjectGuid>
<RootNamespace>char-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -76,7 +77,6 @@
<AdditionalDependencies>libcmtd.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -115,7 +115,6 @@
<AdditionalDependencies>libcmt.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
diff --git a/vcproj-12/char-server.vcxproj.filters b/vcproj-16/char-server.vcxproj.filters
index ab023a77f..ab023a77f 100644
--- a/vcproj-12/char-server.vcxproj.filters
+++ b/vcproj-16/char-server.vcxproj.filters
diff --git a/vcproj-12/login-server.vcxproj b/vcproj-16/login-server.vcxproj
index 325fe53c8..b5137bf29 100644
--- a/vcproj-12/login-server.vcxproj
+++ b/vcproj-16/login-server.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -14,18 +14,19 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E5E9646175AF}</ProjectGuid>
<RootNamespace>login-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -76,7 +77,6 @@
<AdditionalDependencies>libcmtd.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -119,7 +119,6 @@
<AdditionalDependencies>libcmt.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
diff --git a/vcproj-12/login-server.vcxproj.filters b/vcproj-16/login-server.vcxproj.filters
index 301950f0d..301950f0d 100644
--- a/vcproj-12/login-server.vcxproj.filters
+++ b/vcproj-16/login-server.vcxproj.filters
diff --git a/vcproj-12/map-server.vcxproj b/vcproj-16/map-server.vcxproj
index 34f55be49..8d84af347 100644
--- a/vcproj-12/map-server.vcxproj
+++ b/vcproj-16/map-server.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -14,18 +14,19 @@
<ProjectGuid>{D356871D-58E1-450B-967A-E6E9646175AF}</ProjectGuid>
<RootNamespace>map-server</RootNamespace>
<Keyword>Win32Proj</Keyword>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@@ -75,7 +76,6 @@
<AdditionalDependencies>libcmtd.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
@@ -114,7 +114,6 @@
<AdditionalDependencies>libcmt.lib;oldnames.lib;ws2_32.lib;libmysql.lib;zdll.lib;pcre.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>..\3rdparty\mysql\lib;..\3rdparty\zlib\lib;..\3rdparty\pcre\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
- <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
<GenerateDebugInformation>true</GenerateDebugInformation>
<ProgramDatabaseFile>$(OutDir)$(ProjectName).pdb</ProgramDatabaseFile>
diff --git a/vcproj-12/map-server.vcxproj.filters b/vcproj-16/map-server.vcxproj.filters
index aae670525..aae670525 100644
--- a/vcproj-12/map-server.vcxproj.filters
+++ b/vcproj-16/map-server.vcxproj.filters
diff --git a/vcproj-12/plugin-HPMHooking_char.vcxproj b/vcproj-16/plugin-HPMHooking_char.vcxproj
index 016d85c6f..22cd0ea42 100644
--- a/vcproj-12/plugin-HPMHooking_char.vcxproj
+++ b/vcproj-16/plugin-HPMHooking_char.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -15,17 +15,18 @@
<RootNamespace>plugin-HPMHooking_char</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_char</ProjectName>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/vcproj-12/plugin-HPMHooking_login.vcxproj b/vcproj-16/plugin-HPMHooking_login.vcxproj
index 2b8f56cbf..9e3c872c6 100644
--- a/vcproj-12/plugin-HPMHooking_login.vcxproj
+++ b/vcproj-16/plugin-HPMHooking_login.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -15,17 +15,18 @@
<RootNamespace>plugin-HPMHooking_login</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_login</ProjectName>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/vcproj-12/plugin-HPMHooking_map.vcxproj b/vcproj-16/plugin-HPMHooking_map.vcxproj
index 0fca64016..a4616b15e 100644
--- a/vcproj-12/plugin-HPMHooking_map.vcxproj
+++ b/vcproj-16/plugin-HPMHooking_map.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -15,17 +15,18 @@
<RootNamespace>plugin-HPMHooking_map</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-HPMHooking_map</ProjectName>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
diff --git a/vcproj-12/plugin-sample.vcxproj b/vcproj-16/plugin-sample.vcxproj
index ea269b1e7..c78972666 100644
--- a/vcproj-12/plugin-sample.vcxproj
+++ b/vcproj-16/plugin-sample.vcxproj
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
@@ -15,17 +15,18 @@
<RootNamespace>plugin-sample</RootNamespace>
<Keyword>Win32Proj</Keyword>
<ProjectName>plugin-sample</ProjectName>
+ <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
- <PlatformToolset>v120</PlatformToolset>
+ <PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">