diff options
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 @@ -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, ¤t); + 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"> |