diff --git a/.gitignore b/.gitignore index 97aa43f5..0747ffb3 100644 --- a/.gitignore +++ b/.gitignore @@ -106,4 +106,7 @@ src/libraries/external/boost_* src/servers/Server_Common/Version\.cpp # edit and continue files -/enc_temp_folder \ No newline at end of file +/enc_temp_folder + +# travis-ci build mtime cache +.mtime_cache diff --git a/.travis.yml b/.travis.yml index 6c5c62cd..21eb7833 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,44 @@ +--- language: c++ -sudo: enabled -before_install: - - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y - - sudo add-apt-repository universe - - sudo apt-get update - - sudo apt-get install -y software-properties-common - - sudo apt-get update - - sudo apt-get install gcc-7 g++-7 gcc-7-multilib g++-7-multilib cmake3 -y - - sudo apt-get install libboost-dev libboost-all-dev libmysqlclient-dev -y - - sudo apt-get install libmysqlcppconn-dev -y -compiler: - - g++ - - +sudo: enabled + +git: + depth: 5 + +matrix: + include: + - os: linux + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + - g++-7 + env: + - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7" + +# Setup cache +cache: + directories: + - build + - .mtime_cache + +# Setup build matrix and dependencies +before_install: + - eval "${MATRIX_EVAL}" + - gem install --no-ri --no-rdoc mtime_cache + - sudo apt-get update + - sudo apt-get install -y libboost-dev libboost-all-dev + - sudo apt-get install -y libmysqlclient-dev libmysqlcppconn-dev + # Build steps script: - - g++ --version - - mkdir build + - $CXX --version + - mtime_cache src/**/*.{%{cpp}} -c .mtime_cache/cache.json + - mkdir -p build - cd build - - cmake .. -DSAPPHIRE_BOOST_VER="1.54.0" -DCMAKE_CXX_COMPILER=g++-7 && make -j 3 + - cmake .. -DSAPPHIRE_BOOST_VER="1.54.0" && make -j 3 - cd .. - bash sql_import.sh diff --git a/CMakeSettings.json b/CMakeSettings.json index 33a965bf..90e895cd 100644 --- a/CMakeSettings.json +++ b/CMakeSettings.json @@ -56,6 +56,62 @@ "value": "-vc140" } ] + }, + { + "name": "x86-Debug", + "generator": "Visual Studio 15 2017", + "configurationType": "Debug", + "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", + "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", + "buildCommandArgs": "-m -v:minimal", + "variables": [ + { + "name": "Boost_COMPILER", + "value": "-vc141" + } + ] + }, + { + "name": "x86-Release", + "generator": "Visual Studio 15 2017", + "configurationType": "Release", + "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-m -v:minimal", + "variables": [ + { + "name": "Boost_COMPILER", + "value": "-vc141" + } + ] + }, + { + "name": "x64-Debug", + "generator": "Visual Studio 15 2017 Win64", + "configurationType": "Debug", + "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", + "cmakeCommandArgs": "-DCMAKE_BUILD_TYPE=\"Debug\"", + "buildCommandArgs": "-m -v:minimal", + "variables": [ + { + "name": "Boost_COMPILER", + "value": "-vc141" + } + ] + }, + { + "name": "x64-Release", + "generator": "Visual Studio 15 2017 Win64", + "configurationType": "Release", + "buildRoot": "${env.USERPROFILE}\\CMakeBuild\\${workspaceHash}\\build\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-m -v:minimal", + "variables": [ + { + "name": "Boost_COMPILER", + "value": "-vc141" + } + ] } ] } diff --git a/bin/config/settings_zone.xml b/bin/config/settings_zone.xml index b1ab6081..18d33bf6 100644 --- a/bin/config/settings_zone.xml +++ b/bin/config/settings_zone.xml @@ -7,6 +7,8 @@ 127.0.0.1 C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv + + ../scripts/chai 127.0.0.1 diff --git a/sql/charaglobalitem.sql b/sql/charaglobalitem.sql index bca3438b..86025c3e 100644 --- a/sql/charaglobalitem.sql +++ b/sql/charaglobalitem.sql @@ -48,7 +48,7 @@ CREATE TABLE `charaglobalitem` ( `buffer_4` int(3) DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`itemId`), KEY `CharacterId` (`CharacterId`), KEY `storageId` (`storageId`), diff --git a/sql/charainfo.sql b/sql/charainfo.sql index 5a1bbfa6..4a03dd4a 100644 --- a/sql/charainfo.sql +++ b/sql/charainfo.sql @@ -15,7 +15,7 @@ CREATE TABLE `charainfo` ( `AccountId` int(11) NOT NULL, `CharacterId` decimal(20,0) NOT NULL, `ContentId` bigint(20) DEFAULT NULL, - `Name` varchar(32) COLLATE latin1_general_ci DEFAULT NULL, + `Name` varchar(32) CHARACTER SET latin1 COLLATE latin1_general_ci DEFAULT NULL, `Hp` bigint(20) DEFAULT '200', `Mp` bigint(20) DEFAULT '200', `Tp` bigint(20) DEFAULT '0', @@ -75,7 +75,8 @@ CREATE TABLE `charainfo` ( `GMRank` int(3) DEFAULT '0', `Unlocks` binary(64) DEFAULT NULL, `CFPenaltyUntil` int(11) DEFAULT NULL, - `UPDATE_DATE` datetime DEFAULT NULL + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`CharacterId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- Dumping data for table sapphire.charainfo: 0 rows diff --git a/sql/charainfoblacklist.sql b/sql/charainfoblacklist.sql index c263c5fe..332c1851 100644 --- a/sql/charainfoblacklist.sql +++ b/sql/charainfoblacklist.sql @@ -27,7 +27,7 @@ CREATE TABLE `charainfoblacklist` ( `CharacterIdList` blob, `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/charainfofriendlist.sql b/sql/charainfofriendlist.sql index f65c174f..04943f3d 100644 --- a/sql/charainfofriendlist.sql +++ b/sql/charainfofriendlist.sql @@ -28,7 +28,7 @@ CREATE TABLE `charainfofriendlist` ( `InviteDataList` blob, `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/charainfolinkshell.sql b/sql/charainfolinkshell.sql index 1a608f23..cb583e2c 100644 --- a/sql/charainfolinkshell.sql +++ b/sql/charainfolinkshell.sql @@ -27,7 +27,7 @@ CREATE TABLE `charainfolinkshell` ( `LinkshellIdList` binary(64) DEFAULT NULL, `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/charainfosearch.sql b/sql/charainfosearch.sql index 8d88bd54..50651c4b 100644 --- a/sql/charainfosearch.sql +++ b/sql/charainfosearch.sql @@ -29,7 +29,7 @@ CREATE TABLE `charainfosearch` ( `SearchComment` binary(193) DEFAULT "", `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/charaitemcrystal.sql b/sql/charaitemcrystal.sql index e7fa731c..1f9c2d57 100644 --- a/sql/charaitemcrystal.sql +++ b/sql/charaitemcrystal.sql @@ -47,7 +47,7 @@ CREATE TABLE `charaitemcrystal` ( `container_17` int(20) DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`idx`), KEY `CharacterId` (`CharacterId`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; diff --git a/sql/charaitemcurrency.sql b/sql/charaitemcurrency.sql index e3d2c4cb..681dc036 100644 --- a/sql/charaitemcurrency.sql +++ b/sql/charaitemcurrency.sql @@ -41,7 +41,7 @@ CREATE TABLE `charaitemcurrency` ( `container_11` int(20) NOT NULL DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`idx`), UNIQUE KEY `CharacterId` (`CharacterId`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; diff --git a/sql/charaitemgearset.sql b/sql/charaitemgearset.sql index b318d00d..8bd9e314 100644 --- a/sql/charaitemgearset.sql +++ b/sql/charaitemgearset.sql @@ -43,7 +43,7 @@ CREATE TABLE `charaitemgearset` ( `container_13` int(20) DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`,`storageId`), UNIQUE KEY `idx` (`idx`) ) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; diff --git a/sql/charaiteminventory.sql b/sql/charaiteminventory.sql index e3bcd1b3..34a4d281 100644 --- a/sql/charaiteminventory.sql +++ b/sql/charaiteminventory.sql @@ -54,7 +54,7 @@ CREATE TABLE IF NOT EXISTS `charaiteminventory` ( `container_34` int(20) DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`CharacterId`,`storageId`), UNIQUE KEY `idx` (`idx`) ) ENGINE=MyISAM AUTO_INCREMENT=161 DEFAULT CHARSET=utf8; diff --git a/sql/charaquest.sql b/sql/charaquest.sql deleted file mode 100644 index 3faacc74..00000000 --- a/sql/charaquest.sql +++ /dev/null @@ -1,309 +0,0 @@ -SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; -SET time_zone = "+00:00"; - -CREATE TABLE charaquest ( - `QuestId_0` int(5) DEFAULT '0', - `Sequence_0` int(3) DEFAULT '0', - `Flags_0` int(3) DEFAULT '0', - `Variables_0_0` int(3) DEFAULT '0', - `Variables_0_1` int(3) DEFAULT '0', - `Variables_0_2` int(3) DEFAULT '0', - `Variables_0_3` int(3) DEFAULT '0', - `Variables_0_4` int(3) DEFAULT '0', - `Variables_0_5` int(3) DEFAULT '0', - `Variables_0_6` int(3) DEFAULT '0', - `QuestId_1` int(5) DEFAULT '0', - `Sequence_1` int(3) DEFAULT '0', - `Flags_1` int(3) DEFAULT '0', - `Variables_1_0` int(3) DEFAULT '0', - `Variables_1_1` int(3) DEFAULT '0', - `Variables_1_2` int(3) DEFAULT '0', - `Variables_1_3` int(3) DEFAULT '0', - `Variables_1_4` int(3) DEFAULT '0', - `Variables_1_5` int(3) DEFAULT '0', - `Variables_1_6` int(3) DEFAULT '0', - `QuestId_2` int(5) DEFAULT '0', - `Sequence_2` int(3) DEFAULT '0', - `Flags_2` int(3) DEFAULT '0', - `Variables_2_0` int(3) DEFAULT '0', - `Variables_2_1` int(3) DEFAULT '0', - `Variables_2_2` int(3) DEFAULT '0', - `Variables_2_3` int(3) DEFAULT '0', - `Variables_2_4` int(3) DEFAULT '0', - `Variables_2_5` int(3) DEFAULT '0', - `Variables_2_6` int(3) DEFAULT '0', - `QuestId_3` int(5) DEFAULT '0', - `Sequence_3` int(3) DEFAULT '0', - `Flags_3` int(3) DEFAULT '0', - `Variables_3_0` int(3) DEFAULT '0', - `Variables_3_1` int(3) DEFAULT '0', - `Variables_3_2` int(3) DEFAULT '0', - `Variables_3_3` int(3) DEFAULT '0', - `Variables_3_4` int(3) DEFAULT '0', - `Variables_3_5` int(3) DEFAULT '0', - `Variables_3_6` int(3) DEFAULT '0', - `QuestId_4` int(5) DEFAULT '0', - `Sequence_4` int(3) DEFAULT '0', - `Flags_4` int(3) DEFAULT '0', - `Variables_4_0` int(3) DEFAULT '0', - `Variables_4_1` int(3) DEFAULT '0', - `Variables_4_2` int(3) DEFAULT '0', - `Variables_4_3` int(3) DEFAULT '0', - `Variables_4_4` int(3) DEFAULT '0', - `Variables_4_5` int(3) DEFAULT '0', - `Variables_4_6` int(3) DEFAULT '0', - `QuestId_5` int(5) DEFAULT '0', - `Sequence_5` int(3) DEFAULT '0', - `Flags_5` int(3) DEFAULT '0', - `Variables_5_0` int(3) DEFAULT '0', - `Variables_5_1` int(3) DEFAULT '0', - `Variables_5_2` int(3) DEFAULT '0', - `Variables_5_3` int(3) DEFAULT '0', - `Variables_5_4` int(3) DEFAULT '0', - `Variables_5_5` int(3) DEFAULT '0', - `Variables_5_6` int(3) DEFAULT '0', - `QuestId_6` int(5) DEFAULT '0', - `Sequence_6` int(3) DEFAULT '0', - `Flags_6` int(3) DEFAULT '0', - `Variables_6_0` int(3) DEFAULT '0', - `Variables_6_1` int(3) DEFAULT '0', - `Variables_6_2` int(3) DEFAULT '0', - `Variables_6_3` int(3) DEFAULT '0', - `Variables_6_4` int(3) DEFAULT '0', - `Variables_6_5` int(3) DEFAULT '0', - `Variables_6_6` int(3) DEFAULT '0', - `QuestId_7` int(5) DEFAULT '0', - `Sequence_7` int(3) DEFAULT '0', - `Flags_7` int(3) DEFAULT '0', - `Variables_7_0` int(3) DEFAULT '0', - `Variables_7_1` int(3) DEFAULT '0', - `Variables_7_2` int(3) DEFAULT '0', - `Variables_7_3` int(3) DEFAULT '0', - `Variables_7_4` int(3) DEFAULT '0', - `Variables_7_5` int(3) DEFAULT '0', - `Variables_7_6` int(3) DEFAULT '0', - `QuestId_8` int(5) DEFAULT '0', - `Sequence_8` int(3) DEFAULT '0', - `Flags_8` int(3) DEFAULT '0', - `Variables_8_0` int(3) DEFAULT '0', - `Variables_8_1` int(3) DEFAULT '0', - `Variables_8_2` int(3) DEFAULT '0', - `Variables_8_3` int(3) DEFAULT '0', - `Variables_8_4` int(3) DEFAULT '0', - `Variables_8_5` int(3) DEFAULT '0', - `Variables_8_6` int(3) DEFAULT '0', - `QuestId_9` int(5) DEFAULT '0', - `Sequence_9` int(3) DEFAULT '0', - `Flags_9` int(3) DEFAULT '0', - `Variables_9_0` int(3) DEFAULT '0', - `Variables_9_1` int(3) DEFAULT '0', - `Variables_9_2` int(3) DEFAULT '0', - `Variables_9_3` int(3) DEFAULT '0', - `Variables_9_4` int(3) DEFAULT '0', - `Variables_9_5` int(3) DEFAULT '0', - `Variables_9_6` int(3) DEFAULT '0', - `QuestId_10` int(5) DEFAULT '0', - `Sequence_10` int(3) DEFAULT '0', - `Flags_10` int(3) DEFAULT '0', - `Variables_10_0` int(3) DEFAULT '0', - `Variables_10_1` int(3) DEFAULT '0', - `Variables_10_2` int(3) DEFAULT '0', - `Variables_10_3` int(3) DEFAULT '0', - `Variables_10_4` int(3) DEFAULT '0', - `Variables_10_5` int(3) DEFAULT '0', - `Variables_10_6` int(3) DEFAULT '0', - `QuestId_11` int(5) DEFAULT '0', - `Sequence_11` int(3) DEFAULT '0', - `Flags_11` int(3) DEFAULT '0', - `Variables_11_0` int(3) DEFAULT '0', - `Variables_11_1` int(3) DEFAULT '0', - `Variables_11_2` int(3) DEFAULT '0', - `Variables_11_3` int(3) DEFAULT '0', - `Variables_11_4` int(3) DEFAULT '0', - `Variables_11_5` int(3) DEFAULT '0', - `Variables_11_6` int(3) DEFAULT '0', - `QuestId_12` int(5) DEFAULT '0', - `Sequence_12` int(3) DEFAULT '0', - `Flags_12` int(3) DEFAULT '0', - `Variables_12_0` int(3) DEFAULT '0', - `Variables_12_1` int(3) DEFAULT '0', - `Variables_12_2` int(3) DEFAULT '0', - `Variables_12_3` int(3) DEFAULT '0', - `Variables_12_4` int(3) DEFAULT '0', - `Variables_12_5` int(3) DEFAULT '0', - `Variables_12_6` int(3) DEFAULT '0', - `QuestId_13` int(5) DEFAULT '0', - `Sequence_13` int(3) DEFAULT '0', - `Flags_13` int(3) DEFAULT '0', - `Variables_13_0` int(3) DEFAULT '0', - `Variables_13_1` int(3) DEFAULT '0', - `Variables_13_2` int(3) DEFAULT '0', - `Variables_13_3` int(3) DEFAULT '0', - `Variables_13_4` int(3) DEFAULT '0', - `Variables_13_5` int(3) DEFAULT '0', - `Variables_13_6` int(3) DEFAULT '0', - `QuestId_14` int(5) DEFAULT '0', - `Sequence_14` int(3) DEFAULT '0', - `Flags_14` int(3) DEFAULT '0', - `Variables_14_0` int(3) DEFAULT '0', - `Variables_14_1` int(3) DEFAULT '0', - `Variables_14_2` int(3) DEFAULT '0', - `Variables_14_3` int(3) DEFAULT '0', - `Variables_14_4` int(3) DEFAULT '0', - `Variables_14_5` int(3) DEFAULT '0', - `Variables_14_6` int(3) DEFAULT '0', - `QuestId_15` int(5) DEFAULT '0', - `Sequence_15` int(3) DEFAULT '0', - `Flags_15` int(3) DEFAULT '0', - `Variables_15_0` int(3) DEFAULT '0', - `Variables_15_1` int(3) DEFAULT '0', - `Variables_15_2` int(3) DEFAULT '0', - `Variables_15_3` int(3) DEFAULT '0', - `Variables_15_4` int(3) DEFAULT '0', - `Variables_15_5` int(3) DEFAULT '0', - `Variables_15_6` int(3) DEFAULT '0', - `QuestId_16` int(5) DEFAULT '0', - `Sequence_16` int(3) DEFAULT '0', - `Flags_16` int(3) DEFAULT '0', - `Variables_16_0` int(3) DEFAULT '0', - `Variables_16_1` int(3) DEFAULT '0', - `Variables_16_2` int(3) DEFAULT '0', - `Variables_16_3` int(3) DEFAULT '0', - `Variables_16_4` int(3) DEFAULT '0', - `Variables_16_5` int(3) DEFAULT '0', - `Variables_16_6` int(3) DEFAULT '0', - `QuestId_17` int(5) DEFAULT '0', - `Sequence_17` int(3) DEFAULT '0', - `Flags_17` int(3) DEFAULT '0', - `Variables_17_0` int(3) DEFAULT '0', - `Variables_17_1` int(3) DEFAULT '0', - `Variables_17_2` int(3) DEFAULT '0', - `Variables_17_3` int(3) DEFAULT '0', - `Variables_17_4` int(3) DEFAULT '0', - `Variables_17_5` int(3) DEFAULT '0', - `Variables_17_6` int(3) DEFAULT '0', - `QuestId_18` int(5) DEFAULT '0', - `Sequence_18` int(3) DEFAULT '0', - `Flags_18` int(3) DEFAULT '0', - `Variables_18_0` int(3) DEFAULT '0', - `Variables_18_1` int(3) DEFAULT '0', - `Variables_18_2` int(3) DEFAULT '0', - `Variables_18_3` int(3) DEFAULT '0', - `Variables_18_4` int(3) DEFAULT '0', - `Variables_18_5` int(3) DEFAULT '0', - `Variables_18_6` int(3) DEFAULT '0', - `QuestId_19` int(5) DEFAULT '0', - `Sequence_19` int(3) DEFAULT '0', - `Flags_19` int(3) DEFAULT '0', - `Variables_19_0` int(3) DEFAULT '0', - `Variables_19_1` int(3) DEFAULT '0', - `Variables_19_2` int(3) DEFAULT '0', - `Variables_19_3` int(3) DEFAULT '0', - `Variables_19_4` int(3) DEFAULT '0', - `Variables_19_5` int(3) DEFAULT '0', - `Variables_19_6` int(3) DEFAULT '0', - `QuestId_20` int(5) DEFAULT '0', - `Sequence_20` int(3) DEFAULT '0', - `Flags_20` int(3) DEFAULT '0', - `Variables_20_0` int(3) DEFAULT '0', - `Variables_20_1` int(3) DEFAULT '0', - `Variables_20_2` int(3) DEFAULT '0', - `Variables_20_3` int(3) DEFAULT '0', - `Variables_20_4` int(3) DEFAULT '0', - `Variables_20_5` int(3) DEFAULT '0', - `Variables_20_6` int(3) DEFAULT '0', - `QuestId_21` int(5) DEFAULT '0', - `Sequence_21` int(3) DEFAULT '0', - `Flags_21` int(3) DEFAULT '0', - `Variables_21_0` int(3) DEFAULT '0', - `Variables_21_1` int(3) DEFAULT '0', - `Variables_21_2` int(3) DEFAULT '0', - `Variables_21_3` int(3) DEFAULT '0', - `Variables_21_4` int(3) DEFAULT '0', - `Variables_21_5` int(3) DEFAULT '0', - `Variables_21_6` int(3) DEFAULT '0', - `QuestId_22` int(5) DEFAULT '0', - `Sequence_22` int(3) DEFAULT '0', - `Flags_22` int(3) DEFAULT '0', - `Variables_22_0` int(3) DEFAULT '0', - `Variables_22_1` int(3) DEFAULT '0', - `Variables_22_2` int(3) DEFAULT '0', - `Variables_22_3` int(3) DEFAULT '0', - `Variables_22_4` int(3) DEFAULT '0', - `Variables_22_5` int(3) DEFAULT '0', - `Variables_22_6` int(3) DEFAULT '0', - `QuestId_23` int(5) DEFAULT '0', - `Sequence_23` int(3) DEFAULT '0', - `Flags_23` int(3) DEFAULT '0', - `Variables_23_0` int(3) DEFAULT '0', - `Variables_23_1` int(3) DEFAULT '0', - `Variables_23_2` int(3) DEFAULT '0', - `Variables_23_3` int(3) DEFAULT '0', - `Variables_23_4` int(3) DEFAULT '0', - `Variables_23_5` int(3) DEFAULT '0', - `Variables_23_6` int(3) DEFAULT '0', - `QuestId_24` int(5) DEFAULT '0', - `Sequence_24` int(3) DEFAULT '0', - `Flags_24` int(3) DEFAULT '0', - `Variables_24_0` int(3) DEFAULT '0', - `Variables_24_1` int(3) DEFAULT '0', - `Variables_24_2` int(3) DEFAULT '0', - `Variables_24_3` int(3) DEFAULT '0', - `Variables_24_4` int(3) DEFAULT '0', - `Variables_24_5` int(3) DEFAULT '0', - `Variables_24_6` int(3) DEFAULT '0', - `QuestId_25` int(5) DEFAULT '0', - `Sequence_25` int(3) DEFAULT '0', - `Flags_25` int(3) DEFAULT '0', - `Variables_25_0` int(3) DEFAULT '0', - `Variables_25_1` int(3) DEFAULT '0', - `Variables_25_2` int(3) DEFAULT '0', - `Variables_25_3` int(3) DEFAULT '0', - `Variables_25_4` int(3) DEFAULT '0', - `Variables_25_5` int(3) DEFAULT '0', - `Variables_25_6` int(3) DEFAULT '0', - `QuestId_26` int(5) DEFAULT '0', - `Sequence_26` int(3) DEFAULT '0', - `Flags_26` int(3) DEFAULT '0', - `Variables_26_0` int(3) DEFAULT '0', - `Variables_26_1` int(3) DEFAULT '0', - `Variables_26_2` int(3) DEFAULT '0', - `Variables_26_3` int(3) DEFAULT '0', - `Variables_26_4` int(3) DEFAULT '0', - `Variables_26_5` int(3) DEFAULT '0', - `Variables_26_6` int(3) DEFAULT '0', - `QuestId_27` int(5) DEFAULT '0', - `Sequence_27` int(3) DEFAULT '0', - `Flags_27` int(3) DEFAULT '0', - `Variables_27_0` int(3) DEFAULT '0', - `Variables_27_1` int(3) DEFAULT '0', - `Variables_27_2` int(3) DEFAULT '0', - `Variables_27_3` int(3) DEFAULT '0', - `Variables_27_4` int(3) DEFAULT '0', - `Variables_27_5` int(3) DEFAULT '0', - `Variables_27_6` int(3) DEFAULT '0', - `QuestId_28` int(5) DEFAULT '0', - `Sequence_28` int(3) DEFAULT '0', - `Flags_28` int(3) DEFAULT '0', - `Variables_28_0` int(3) DEFAULT '0', - `Variables_28_1` int(3) DEFAULT '0', - `Variables_28_2` int(3) DEFAULT '0', - `Variables_28_3` int(3) DEFAULT '0', - `Variables_28_4` int(3) DEFAULT '0', - `Variables_28_5` int(3) DEFAULT '0', - `Variables_28_6` int(3) DEFAULT '0', - `QuestId_29` int(5) DEFAULT '0', - `Sequence_29` int(3) DEFAULT '0', - `Flags_29` int(3) DEFAULT '0', - `Variables_29_0` int(3) DEFAULT '0', - `Variables_29_1` int(3) DEFAULT '0', - `Variables_29_2` int(3) DEFAULT '0', - `Variables_29_3` int(3) DEFAULT '0', - `Variables_29_4` int(3) DEFAULT '0', - `Variables_29_5` int(3) DEFAULT '0', - `Variables_29_6` int(3) DEFAULT '0', - `CharacterId` int(20) DEFAULT '0', - `IS_DELETE` int(3) DEFAULT '0', - `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL -) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/sql/charaquestnew.sql b/sql/charaquestnew.sql index ec1b0f16..98279a0d 100644 --- a/sql/charaquestnew.sql +++ b/sql/charaquestnew.sql @@ -16,5 +16,5 @@ CREATE TABLE charaquestnew ( `Variables_6` int(3) DEFAULT '0', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=MyISAM DEFAULT CHARSET=utf8; \ No newline at end of file diff --git a/sql/charastatus.sql b/sql/charastatus.sql index 231b9319..a601aab5 100644 --- a/sql/charastatus.sql +++ b/sql/charastatus.sql @@ -101,7 +101,7 @@ CREATE TABLE `charastatus` ( `CharacterId` int(20) DEFAULT NULL, `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/import.bat b/sql/import.bat new file mode 100644 index 00000000..73359eae --- /dev/null +++ b/sql/import.bat @@ -0,0 +1,48 @@ +@ECHO OFF +SETLOCAL +REM ============= +REM IMPORT CONFIG +REM ============= +REM NOTE: No spaces before or after the '='!!! + +REM ============= +SET PATH_MYSQL="Path\to\mysql.exe" +SET PATH_MYSQLADMIN="Path\to\mysqladmin.exe" +SET PATH_SQL="Path\to\Sapphire\sql" + +SET USER=root +SET PASSWORD= +SET DBADDRESS=localhost +SET DBPORT=3306 +SET DBNAME=sapphire +REM ============= + +IF DEFINED PASSWORD (SET PASSWORD=-p%PASSWORD%) + +ECHO Deleteing old database +%PATH_MYSQLADMIN% -h %DBADDRESS% -u %USER% %PASSWORD% DROP %DBNAME% + +ECHO Creating new database +%PATH_MYSQLADMIN% -h %DBADDRESS% -u %USER% %PASSWORD% CREATE %DBNAME% + +ECHO Loading tables into the database +cd %PATH_SQL% +FOR %%X IN (*.sql) DO ( + IF "%%X"=="update.sql" ( + REM handle update.sql last + ) ELSE ( + ECHO Importing %%X + %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% < %%X + ) +) + +IF EXIST "update.sql" ( + ECHO Importing update.sql + %PATH_MYSQL% %DBNAME% -h %DBADDRESS% -u %USER% < update.sql +) + +ECHO Finished! + +ENDLOCAL +PAUSE +@ECHO ON diff --git a/sql/infolinkshell.sql b/sql/infolinkshell.sql index a9e54d6c..b8c84b19 100644 --- a/sql/infolinkshell.sql +++ b/sql/infolinkshell.sql @@ -31,7 +31,7 @@ CREATE TABLE `infolinkshell` ( `InviteIdList` blob, `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` date DEFAULT NULL, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`LinkshellId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/uniqueiddata.sql b/sql/uniqueiddata.sql index e397fbec..0ca048ad 100644 --- a/sql/uniqueiddata.sql +++ b/sql/uniqueiddata.sql @@ -27,7 +27,7 @@ CREATE TABLE `uniqueiddata` ( `IdName` varchar(16) DEFAULT 'NOT SET', `IS_DELETE` int(3) DEFAULT '0', `IS_NOT_ACTIVE_FLG` int(3) DEFAULT '0', - `UPDATE_DATE` datetime DEFAULT CURRENT_TIMESTAMP, + `UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`NextId`) ) ENGINE=MyISAM AUTO_INCREMENT=1000447 DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/update.sql b/sql/update.sql index e69de29b..a2a9c38e 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -0,0 +1,44 @@ +ALTER TABLE charainfo +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charastatus +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfoblacklist +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaglobalitem +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfofriendlist +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfolinkshell +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfosearch +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaitemcrystal +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaitemcurrency +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaitemgearset +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaiteminventory +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charaquestnew +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE infolinkshell +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE uniqueiddata +MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; + +ALTER TABLE charainfo +ADD `Orchestrion` binary(38) DEFAULT NULL AFTER `Mounts`; diff --git a/src/servers/Server_Common/Common.h b/src/servers/Server_Common/Common.h index faf95222..8a93eb84 100644 --- a/src/servers/Server_Common/Common.h +++ b/src/servers/Server_Common/Common.h @@ -13,828 +13,840 @@ // They are also defined within the Core::Common namespace to avoid collisions. // +--------------------------------------------------------------------------- namespace Core { -namespace Common { + namespace Common { - // 99 is the last spawn id that seems to spawn any actor - const uint8_t MAX_DISPLAYED_ACTORS = 99; + // 99 is the last spawn id that seems to spawn any actor + const uint8_t MAX_DISPLAYED_ACTORS = 99; - const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000; + const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000; - struct FFXIVARR_POSITION3 - { - float x; - float y; - float z; - }; - - enum EquipSlot : uint8_t - { - MainHand = 0, - OffHand = 1, - Head = 2, - Body = 3, - Hands = 4, - Waist = 5, - Legs = 6, - Feet = 7, - Neck = 8, - Ear = 9, - Wrist = 10, - Ring1 = 11, - Ring2 = 12, - SoulCrystal = 13, - }; - - enum InventoryType : uint16_t - { - Bag0 = 0, - Bag1 = 1, - Bag2 = 2, - Bag3 = 3, - - GearSet0 = 1000, - GearSet1 = 1001, - - Currency = 2000, - Crystal = 2001, - //UNKNOWN_0 = 2003, - KeyItem = 2004, - DamagedGear = 2007, - //UNKNOWN_1 = 2008, - - ArmoryOff = 3200, - ArmoryHead = 3201, - ArmoryBody = 3202, - ArmoryHand = 3203, - ArmoryWaist = 3204, - ArmoryLegs = 3205, - ArmoryFeet = 3206, - ArmotyNeck = 3207, - ArmoryEar = 3208, - ArmoryWrist = 3209, - ArmoryRing = 3300, - - ArmorySoulCrystal = 3400, - ArmoryMain = 3500, - - RetainerBag0 = 10000, - RetainerBag1 = 10001, - RetainerBag2 = 10002, - RetainerBag3 = 10003, - RetainerBag4 = 10004, - RetainerBag5 = 10005, - RetainerBag6 = 10006, - RetainerEquippedGear = 11000, - RetainerGil = 12000, - RetainerCrystal = 12001, - RetainerMarket = 12002, - - FreeCompanyBag0 = 20000, - FreeCompanyBag1 = 20001, - FreeCompanyBag2 = 20002, - FreeCompanyGil = 22000, - FreeCompanyCrystal = 22001 - }; - - - enum struct ZoneingType : uint8_t - { - None = 1, - Teleport = 2, - Return = 3, - ReturnDead = 4, - FadeIn = 5, - }; - - enum struct ResurrectType : uint8_t - { - None = 0, - RaiseSpell = 5, - Return = 8 - }; - - enum Gender : uint8_t - { - Male = 0, - Female = 1, - }; - - - - enum struct GCRank : uint8_t - { - None = 0, - PrivateThirdClass = 1, - PrivateSecondClass = 2, - PrivateFirstClass = 3, - Corporal = 4, - SergeantThirdClass = 5, - SergeantSecondClass = 6, - SergeantFirstClass = 7, - ChiefSergeant = 8, - SecondLieutenant = 9, - FirstLieutenant = 10, - Captain = 11, - SecondCommander = 12, - FirstCommander = 13, - HighCommander = 14, - RearMarshal = 15, - ViceMarshal = 16, - Marshal = 17, - GrandMarshal = 18, - Champion = 19, - }; - - /** - * Structural representation of the packet sent by the server - * Send the entire StatusEffect list - */ - struct StatusEffect - { - uint16_t effect_id; - uint16_t unknown1; - float duration; - uint32_t sourceActorId; - }; - - enum RegionType : uint8_t - { - normal, - instance, - }; - - enum TerritoryIntendedUseType : uint8_t //ToDo: Add The Rest of The Territory Types and Have Better Names For Them - { - Town = 0, - OpenWorld = 1, - Inn = 2, - Dungeon = 3, - JailArea = 5, - OpeningArea = 6, - BeforeTrialDung = 7, - AllianceRaid = 8, - OpenWorldInstanceBattle = 9, - Trial = 10, - HousingArea = 13, - HousingPrivateArea = 14, - MSQPrivateArea = 15, - Raids = 16, - RaidFights = 17, - ChocoboTutorial = 21, - Wedding = 22, - BeginnerTutorial = 27, - PalaceOfTheDead = 31, - }; - - enum CharaLook : uint8_t - { - Race = 0x00, - Gender = 0x01, - Tribe = 0x04, - Height = 0x03, - ModelType = 0x02, // Au Ra: changes horns/tails, everything else: seems to drastically change appearance (flip between two sets, odd/even numbers). sometimes retains hairstyle and other features - FaceType = 0x05, - HairStyle = 0x06, - HasHighlights = 0x07, // negative to enable, positive to disable - SkinColor = 0x08, - EyeColor = 0x09, // color of character's right eye - HairColor = 0x0A, // main color - HairColor2 = 0x0B, // highlights color - FaceFeatures = 0x0C, // seems to be a toggle, (-odd and +even for large face covering), opposite for small - FaceFeaturesColor = 0x0D, - Eyebrows = 0x0E, - EyeColor2 = 0x0F, // color of character's left eye - EyeShape = 0x10, - NoseShape = 0x11, - JawShape = 0x12, - LipStyle = 0x13, // lip colour depth and shape (negative values around -120 darker/more noticeable, positive no colour) - LipColor = 0x14, - RaceFeatureSize = 0x15, - RaceFeatureType = 0x16, // negative or out of range tail shapes for race result in no tail (e.g. Au Ra has max of 4 tail shapes), incorrect value can crash client - BustSize = 0x17, // char creator allows up to max of 100, i set to 127 cause who wouldnt but no visible difference - Facepaint = 0x18, - FacepaintColor = 0x19, - - }; - - enum MoveType : uint16_t - { - Run = 0x00, - Walk = 0x02, - Strafe = 0x04, - Jump = 0x100, - Fall = 0x400, - Land = 0x200, - }; - - struct QuestActive - { - QuestActive() + struct FFXIVARR_POSITION3 { - c.questId = 0; - c.sequence = 0; - c.flags = 0; - c.UI8A = 0; - c.UI8B = 0; - c.UI8C = 0; - c.UI8D = 0; - c.UI8E = 0; - c.UI8F = 0; - c.padding = 0; - } + float x; + float y; + float z; + }; - - union + enum EquipSlot : uint8_t { - struct - { - uint16_t questId; - uint8_t sequence; - uint8_t flags; - uint8_t padding; - uint8_t BitFlag48; - uint8_t BitFlag40; - uint8_t BitFlag32; - uint8_t BitFlag24; - uint8_t BitFlag16; - uint8_t BitFlag8; - uint8_t padding1; - } a; + MainHand = 0, + OffHand = 1, + Head = 2, + Body = 3, + Hands = 4, + Waist = 5, + Legs = 6, + Feet = 7, + Neck = 8, + Ear = 9, + Wrist = 10, + Ring1 = 11, + Ring2 = 12, + SoulCrystal = 13, + }; - struct - { - uint16_t questId; - uint8_t sequence; - uint8_t flags; - uint8_t padding; - uint8_t UI8AL : 4; - uint8_t UI8AH : 4; - uint8_t UI8BL : 4; - uint8_t UI8BH : 4; - uint8_t UI8CL : 4; - uint8_t UI8CH : 4; - uint8_t UI8DL : 4; - uint8_t UI8DH : 4; - uint8_t UI8EL : 4; - uint8_t UI8EH : 4; - uint8_t UI8FL : 4; - uint8_t UI8FH : 4; - uint8_t padding1; - } b; + enum InventoryType : uint16_t + { + Bag0 = 0, + Bag1 = 1, + Bag2 = 2, + Bag3 = 3, - struct - { - uint16_t questId; - uint8_t sequence; - uint8_t flags; - uint8_t padding; - uint8_t UI8A; - uint8_t UI8B; - uint8_t UI8C; - uint8_t UI8D; - uint8_t UI8E; - uint8_t UI8F; - uint8_t padding1; - } c; + GearSet0 = 1000, + GearSet1 = 1001, - //struct - //{ - // uint16_t questId; - // uint8_t sequence; - // uint8_t flags; - // uint8_t padding; - // uint16_t UI16A; - // uint16_t UI16B; - // uint16_t UI16C; - // uint8_t padding1; - //} d; + Currency = 2000, + Crystal = 2001, + //UNKNOWN_0 = 2003, + KeyItem = 2004, + DamagedGear = 2007, + //UNKNOWN_1 = 2008, - //struct - //{ - // uint8_t padding; - // uint32_t UI32A; - // uint16_t padding2; - //} e; + ArmoryOff = 3200, + ArmoryHead = 3201, + ArmoryBody = 3202, + ArmoryHand = 3203, + ArmoryWaist = 3204, + ArmoryLegs = 3205, + ArmoryFeet = 3206, + ArmotyNeck = 3207, + ArmoryEar = 3208, + ArmoryWrist = 3209, + ArmoryRing = 3300, + + ArmorySoulCrystal = 3400, + ArmoryMain = 3500, + + RetainerBag0 = 10000, + RetainerBag1 = 10001, + RetainerBag2 = 10002, + RetainerBag3 = 10003, + RetainerBag4 = 10004, + RetainerBag5 = 10005, + RetainerBag6 = 10006, + RetainerEquippedGear = 11000, + RetainerGil = 12000, + RetainerCrystal = 12001, + RetainerMarket = 12002, + + FreeCompanyBag0 = 20000, + FreeCompanyBag1 = 20001, + FreeCompanyBag2 = 20002, + FreeCompanyGil = 22000, + FreeCompanyCrystal = 22001 }; - }; - - enum EventType : uint16_t - { - Quest = 0x0001, - ChocoRent = 0x0002, - Shop = 0x0004, - Aetheryte = 0x0005, - GuildLeveAssign = 0x0006, - DefaultTalk = 0x0009, - CustomTalk = 0x000B, - CraftLeve = 0x000E, - ChocoPort = 0x0012, - Opening = 0x0013, - GCShop = 0x0016, - GuildOrderGuide = 0x0017, - GuildOrderOfficer = 0x0018, - Stories = 0x001A, - FcTalk = 0x001F, - }; - - enum struct ActionAspect : uint8_t - { - None = 0, // Doesn't imply unaspected - Fire = 1, - Ice = 2, - Wind = 3, - Stone = 4, - Lightning = 5, - Water = 6, - Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical - }; - - enum class ActionType : int8_t - { - WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)? - Unknown_0 = 0, - Slashing = 1, - Piercing = 2, - Blunt = 3, - Unknown_4 = 4, - Magical = 5, - Darkness = 6, - Unknown_7 = 7, - LimitBreak = 8, - }; - - enum ActionEffectType : uint8_t - { - Nothing = 0, - Miss = 1, - FullResist = 2, - Damage = 3, - Heal = 4, - BlockedDamage = 5, - ParriedDamage = 6, - Invulnerable = 7, - NoEffectText = 8, - Unknown_0 = 9, - MpLoss = 10, - MpGain = 11, - TpLoss = 12, - TpGain = 13, - GpGain = 14, - Mount = 38 - }; - - enum class ActionHitSeverityType : uint8_t - { - NormalDamage = 0, - CritHeal = 0, - CritDamage = 1, - NormalHeal = 1, - DirectHitDamage = 2, - CritDirectHitDamage = 3 - }; - - enum class ActionCollisionType : uint8_t - { - None, - SingleTarget, - Circle, - Cone, - Box, - Unknown, - Unknown2, - PersistentArea, // for when you set aoe like asylum - Unknown3 - }; - - enum HandleActionType : uint8_t - { - Event, - Spell, - Teleport - }; - - enum HandleSkillType : uint8_t - { - StdDamage, - StdHeal, - StdDot, - }; - - enum InvincibilityType : uint8_t - { - InvincibilityNone, - InvincibilityRefill, - InvincibilityStayAlive, - }; - - enum struct PlayerStateFlag : uint8_t - { - SomeFlag, - NoCombat, - Combat, - Casting, - StatusAffliction, - StatusAffliction1, - Occupied, - Occupied1, - Occupied2, - Occupied3, - - BoundByDuty, - Occupied4, - DuelingArea, - TradeOpen, - Occupied5, - HandlingItems, - Crafting, - PreparingToCraft, - Gathering, - Fishing, - - BeingRaised, - BetweenAreas, - Stealthed, - InnRoom, - Jumping, - AutoRun, - Occupied6, - BetweenAreas1, - SystemError, - LoggingOut, - - InvalidLocation, - WaitingForDuty, - BoundByDuty1, - Mounting, - WatchingCutscene, - WaitingForDutyFinder, - CreatingCharacter, - Jumping1, - PvpDisplay, - StatusAfflication2, - - Mounting1, - CarryingItem, - UsingPartyFinder, - HousingFunctions, - Transformed, - FreeTrail, - BeingMoved, - Mounting2, - StatusAffliction3, - StatusAffliction4, - - RegisteringRaceOrMatch, - WaitingForRaceOrMatch, - WaitingForTripleTriadMatch, - InFlight, - WatchingCutscene1, - DeepDungeon, - Swimming, - Diving, - RegisteringTripleTriad, - WaitingTripleTriad, - InCrossWorldParty - - }; - - enum struct FateStatus : uint8_t - { - Active = 2, - Inactive = 4, - Preparing = 7, - Completed = 8, - }; - - enum ActorControlType : uint16_t - { - ToggleWeapon = 0x01, - SetStatus = 0x02, - CastStart = 0x03, - ToggleAggro = 0x04, - ClassJobChange = 0x05, - DefeatMsg = 0x06, - GainExpMsg = 0x07, - - LevelUpEffect = 0x0A, - - ExpChainMsg = 0x0C, - HpSetStat = 0x0D, - DeathAnimation = 0x0E, - CastInterrupt = 0x0F, - - ActionStart = 0x11, - - StatusEffectGain = 0x14, - StatusEffectLose = 0x15, - - HPFloatingText = 0x17, - UpdateRestedExp = 0x018, - Unk2 = 0x19, - - Flee = 0x1B, - - Unk3 = 0x20, // Animation related? - - CombatIndicationShow = 0x22, - - SpawnEffect = 0x25, - ToggleInvisible = 0x26, - - ToggleActionUnlock = 0x29, - - UpdateUiExp = 0x2B, - DmgTakenMsg = 0x2D, + enum struct ZoneingType : uint8_t + { + None = 1, + Teleport = 2, + Return = 3, + ReturnDead = 4, + FadeIn = 5, + }; + + enum struct ResurrectType : uint8_t + { + None = 0, + RaiseSpell = 5, + Return = 8 + }; + + enum Gender : uint8_t + { + Male = 0, + Female = 1, + }; + + + + enum struct GCRank : uint8_t + { + None = 0, + PrivateThirdClass = 1, + PrivateSecondClass = 2, + PrivateFirstClass = 3, + Corporal = 4, + SergeantThirdClass = 5, + SergeantSecondClass = 6, + SergeantFirstClass = 7, + ChiefSergeant = 8, + SecondLieutenant = 9, + FirstLieutenant = 10, + Captain = 11, + SecondCommander = 12, + FirstCommander = 13, + HighCommander = 14, + RearMarshal = 15, + ViceMarshal = 16, + Marshal = 17, + GrandMarshal = 18, + Champion = 19, + }; + + /** + * Structural representation of the packet sent by the server + * Send the entire StatusEffect list + */ + struct StatusEffect + { + uint16_t effect_id; + uint16_t unknown1; + float duration; + uint32_t sourceActorId; + }; + + enum RegionType : uint8_t + { + normal, + instance, + }; + + enum TerritoryIntendedUseType : uint8_t //ToDo: Add The Rest of The Territory Types and Have Better Names For Them + { + Town = 0, + OpenWorld = 1, + Inn = 2, + Dungeon = 3, + JailArea = 5, + OpeningArea = 6, + BeforeTrialDung = 7, + AllianceRaid = 8, + OpenWorldInstanceBattle = 9, + Trial = 10, + HousingArea = 13, + HousingPrivateArea = 14, + MSQPrivateArea = 15, + Raids = 16, + RaidFights = 17, + ChocoboTutorial = 21, + Wedding = 22, + BeginnerTutorial = 27, + PalaceOfTheDead = 31, + }; + + enum CharaLook : uint8_t + { + Race = 0x00, + Gender = 0x01, + Tribe = 0x04, + Height = 0x03, + ModelType = 0x02, // Au Ra: changes horns/tails, everything else: seems to drastically change appearance (flip between two sets, odd/even numbers). sometimes retains hairstyle and other features + FaceType = 0x05, + HairStyle = 0x06, + HasHighlights = 0x07, // negative to enable, positive to disable + SkinColor = 0x08, + EyeColor = 0x09, // color of character's right eye + HairColor = 0x0A, // main color + HairColor2 = 0x0B, // highlights color + FaceFeatures = 0x0C, // seems to be a toggle, (-odd and +even for large face covering), opposite for small + FaceFeaturesColor = 0x0D, + Eyebrows = 0x0E, + EyeColor2 = 0x0F, // color of character's left eye + EyeShape = 0x10, + NoseShape = 0x11, + JawShape = 0x12, + LipStyle = 0x13, // lip colour depth and shape (negative values around -120 darker/more noticeable, positive no colour) + LipColor = 0x14, + RaceFeatureSize = 0x15, + RaceFeatureType = 0x16, // negative or out of range tail shapes for race result in no tail (e.g. Au Ra has max of 4 tail shapes), incorrect value can crash client + BustSize = 0x17, // char creator allows up to max of 100, i set to 127 cause who wouldnt but no visible difference + Facepaint = 0x18, + FacepaintColor = 0x19, + + }; + + enum MoveType : uint16_t + { + Run = 0x00, + Walk = 0x02, + Strafe = 0x04, + Jump = 0x100, + Fall = 0x400, + Land = 0x200, + }; + + struct QuestActive + { + QuestActive() + { + c.questId = 0; + c.sequence = 0; + c.flags = 0; + c.UI8A = 0; + c.UI8B = 0; + c.UI8C = 0; + c.UI8D = 0; + c.UI8E = 0; + c.UI8F = 0; + c.padding = 0; + } + + + union + { + struct + { + uint16_t questId; + uint8_t sequence; + uint8_t flags; + uint8_t padding; + uint8_t BitFlag48; + uint8_t BitFlag40; + uint8_t BitFlag32; + uint8_t BitFlag24; + uint8_t BitFlag16; + uint8_t BitFlag8; + uint8_t padding1; + } a; + + struct + { + uint16_t questId; + uint8_t sequence; + uint8_t flags; + uint8_t padding; + uint8_t UI8AL : 4; + uint8_t UI8AH : 4; + uint8_t UI8BL : 4; + uint8_t UI8BH : 4; + uint8_t UI8CL : 4; + uint8_t UI8CH : 4; + uint8_t UI8DL : 4; + uint8_t UI8DH : 4; + uint8_t UI8EL : 4; + uint8_t UI8EH : 4; + uint8_t UI8FL : 4; + uint8_t UI8FH : 4; + uint8_t padding1; + } b; + + struct + { + uint16_t questId; + uint8_t sequence; + uint8_t flags; + uint8_t padding; + uint8_t UI8A; + uint8_t UI8B; + uint8_t UI8C; + uint8_t UI8D; + uint8_t UI8E; + uint8_t UI8F; + uint8_t padding1; + } c; + + //struct + //{ + // uint16_t questId; + // uint8_t sequence; + // uint8_t flags; + // uint8_t padding; + // uint16_t UI16A; + // uint16_t UI16B; + // uint16_t UI16C; + // uint8_t padding1; + //} d; + + //struct + //{ + // uint8_t padding; + // uint32_t UI32A; + // uint16_t padding2; + //} e; + }; + + + }; + + enum EventType : uint16_t + { + Quest = 0x0001, + ChocoRent = 0x0002, + Shop = 0x0004, + Aetheryte = 0x0005, + GuildLeveAssign = 0x0006, + DefaultTalk = 0x0009, + CustomTalk = 0x000B, + CraftLeve = 0x000E, + ChocoPort = 0x0012, + Opening = 0x0013, + GCShop = 0x0016, + GuildOrderGuide = 0x0017, + GuildOrderOfficer = 0x0018, + Stories = 0x001A, + FcTalk = 0x001F, + }; + + enum struct ActionAspect : uint8_t + { + None = 0, // Doesn't imply unaspected + Fire = 1, + Ice = 2, + Wind = 3, + Stone = 4, + Lightning = 5, + Water = 6, + Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical + }; + + enum class ActionType : int8_t + { + WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)? + Unknown_0 = 0, + Slashing = 1, + Piercing = 2, + Blunt = 3, + Unknown_4 = 4, + Magical = 5, + Darkness = 6, + Unknown_7 = 7, + LimitBreak = 8, + }; + + enum ActionEffectType : uint8_t + { + Nothing = 0, + Miss = 1, + FullResist = 2, + Damage = 3, + Heal = 4, + BlockedDamage = 5, + ParriedDamage = 6, + Invulnerable = 7, + NoEffectText = 8, + Unknown_0 = 9, + MpLoss = 10, + MpGain = 11, + TpLoss = 12, + TpGain = 13, + GpGain = 14, + Mount = 38 + }; + + enum class ActionHitSeverityType : uint8_t + { + NormalDamage = 0, + CritHeal = 0, + CritDamage = 1, + NormalHeal = 1, + DirectHitDamage = 2, + CritDirectHitDamage = 3 + }; + + enum class ActionCollisionType : uint8_t + { + None, + SingleTarget, + Circle, + Cone, + Box, + Unknown, + Unknown2, + PersistentArea, // for when you set aoe like asylum + Unknown3 + }; + + enum HandleActionType : uint8_t + { + Event, + Spell, + Teleport + }; + + enum HandleSkillType : uint8_t + { + StdDamage, + StdHeal, + StdDot, + }; + + enum InvincibilityType : uint8_t + { + InvincibilityNone, + InvincibilityRefill, + InvincibilityStayAlive, + }; + + enum struct PlayerStateFlag : uint8_t + { + SomeFlag, + NoCombat, + Combat, + Casting, + StatusAffliction, + StatusAffliction1, + Occupied, + Occupied1, + Occupied2, + Occupied3, + + BoundByDuty, + Occupied4, + DuelingArea, + TradeOpen, + Occupied5, + HandlingItems, + Crafting, + PreparingToCraft, + Gathering, + Fishing, + + BeingRaised, + BetweenAreas, + Stealthed, + InnRoom, + Jumping, + AutoRun, + Occupied6, + BetweenAreas1, + SystemError, + LoggingOut, + + InvalidLocation, + WaitingForDuty, + BoundByDuty1, + Mounting, + WatchingCutscene, + WaitingForDutyFinder, + CreatingCharacter, + Jumping1, + PvpDisplay, + StatusAfflication2, + + Mounting1, + CarryingItem, + UsingPartyFinder, + HousingFunctions, + Transformed, + FreeTrail, + BeingMoved, + Mounting2, + StatusAffliction3, + StatusAffliction4, + + RegisteringRaceOrMatch, + WaitingForRaceOrMatch, + WaitingForTripleTriadMatch, + InFlight, + WatchingCutscene1, + DeepDungeon, + Swimming, + Diving, + RegisteringTripleTriad, + WaitingTripleTriad, + InCrossWorldParty + + }; + + enum struct FateStatus : uint8_t + { + Active = 2, + Inactive = 4, + Preparing = 7, + Completed = 8, + }; + + enum ActorControlType : uint16_t + { + ToggleWeapon = 0x01, + SetStatus = 0x02, + CastStart = 0x03, + ToggleAggro = 0x04, + ClassJobChange = 0x05, + DefeatMsg = 0x06, + GainExpMsg = 0x07, + + LevelUpEffect = 0x0A, + + ExpChainMsg = 0x0C, + HpSetStat = 0x0D, + DeathAnimation = 0x0E, + CastInterrupt = 0x0F, + + ActionStart = 0x11, + + StatusEffectGain = 0x14, + StatusEffectLose = 0x15, + + HPFloatingText = 0x17, + UpdateRestedExp = 0x018, + Unk2 = 0x19, + + Flee = 0x1B, + + Unk3 = 0x20, // Animation related? + + CombatIndicationShow = 0x22, + + SpawnEffect = 0x25, + ToggleInvisible = 0x26, + + ToggleActionUnlock = 0x29, + + UpdateUiExp = 0x2B, + DmgTakenMsg = 0x2D, - SetTarget = 0x32, - ToggleNameHidden = 0x36, + SetTarget = 0x32, + ToggleNameHidden = 0x36, - LimitbreakStart = 0x47, - LimitbreakPartyStart = 0x48, - BubbleText = 0x49, + LimitbreakStart = 0x47, + LimitbreakPartyStart = 0x48, + BubbleText = 0x49, - DamageEffect = 0x50, - RaiseAnimation = 0x51, - TreasureScreenMsg = 0x57, - SetOwnerId = 0x59, - ItemRepairMsg = 0x5C, + DamageEffect = 0x50, + RaiseAnimation = 0x51, + TreasureScreenMsg = 0x57, + SetOwnerId = 0x59, + ItemRepairMsg = 0x5C, - LeveStartAnim = 0x66, - LeveStartError = 0x67, - PlayerNameGrayout = 0x6A, + LeveStartAnim = 0x66, + LeveStartError = 0x67, + PlayerNameGrayout = 0x6A, - ItemObtainMsg = 0x75, - DutyQuestScreenMsg = 0x7B, + ItemObtainMsg = 0x75, + DutyQuestScreenMsg = 0x7B, - ItemObtainIcon = 0x84, - FateItemFailMsg = 0x85, - ItemFailMsg = 0x86, - ActionLearnMsg1 = 0x87, + ItemObtainIcon = 0x84, + FateItemFailMsg = 0x85, + ItemFailMsg = 0x86, + ActionLearnMsg1 = 0x87, - FreeEventPos = 0x8A, + FreeEventPos = 0x8A, - UnlockAetherCurrentMsg = 0xA4, + UnlockAetherCurrentMsg = 0xA4, - RemoveName = 0xA8, + RemoveName = 0xA8, - ScreenFadeOut = 0xAA, + ScreenFadeOut = 0xAA, - ZoneIn = 0xC8, - ZoneInDefaultPos = 0xC9, + ZoneIn = 0xC8, + ZoneInDefaultPos = 0xC9, - TeleportStart = 0xCB, + TeleportStart = 0xCB, - TeleportDone = 0xCD, - TeleportDoneFadeOut = 0xCE, - DespawnZoneScreenMsg = 0xCF, + TeleportDone = 0xCD, + TeleportDoneFadeOut = 0xCE, + DespawnZoneScreenMsg = 0xCF, - InstanceSelectDlg = 0xD2, - ActorDespawnEffect = 0xD4, + InstanceSelectDlg = 0xD2, + ActorDespawnEffect = 0xD4, - CompanionUnlock = 0xFD, - ObtainBarding = 0xFE, - EquipBarding = 0xFF, + CompanionUnlock = 0xFD, + ObtainBarding = 0xFE, + EquipBarding = 0xFF, - CompanionMsg1 = 0x102, - CompanionMsg2 = 0x103, - ShowPetHotbar = 0x104, + CompanionMsg1 = 0x102, + CompanionMsg2 = 0x103, + ShowPetHotbar = 0x104, - ActionLearnMsg = 0x109, - ActorFadeOut = 0x10A, - ActorFadeIn = 0x10B, - WithdrawMsg = 0x10C, - OrderMinion = 0x10D, - ToggleMinion = 0x10E, - LearnMinion = 0x10F, - ActorFateOut1 = 0x110, + ActionLearnMsg = 0x109, + ActorFadeOut = 0x10A, + ActorFadeIn = 0x10B, + WithdrawMsg = 0x10C, + OrderMinion = 0x10D, + ToggleMinion = 0x10E, + LearnMinion = 0x10F, + ActorFateOut1 = 0x110, - Emote = 0x122, + Emote = 0x122, - SetPose = 0x127, + SetPose = 0x127, - CraftingUnk = 0x12C, + CraftingUnk = 0x12C, - GatheringSenseMsg = 0x130, - PartyMsg = 0x131, - GatheringSenseMsg1 = 0x132, + GatheringSenseMsg = 0x130, + PartyMsg = 0x131, + GatheringSenseMsg1 = 0x132, - GatheringSenseMsg2 = 0x138, + GatheringSenseMsg2 = 0x138, - FishingMsg = 0x140, + FishingMsg = 0x140, - FishingBaitMsg = 0x145, + FishingBaitMsg = 0x145, - FishingReachMsg = 0x147, - FishingFailMsg = 0x148, + FishingReachMsg = 0x147, + FishingFailMsg = 0x148, - MateriaConvertMsg = 0x15E, - MeldSuccessMsg = 0x15F, - MeldFailMsg = 0x160, - MeldModeToggle = 0x161, + MateriaConvertMsg = 0x15E, + MeldSuccessMsg = 0x15F, + MeldFailMsg = 0x160, + MeldModeToggle = 0x161, - AetherRestoreMsg = 0x163, + AetherRestoreMsg = 0x163, - DyeMsg = 0x168, + DyeMsg = 0x168, - ToggleCrestMsg = 0x16A, - ToggleBulkCrestMsg = 0x16B, - MateriaRemoveMsg = 0x16C, - GlamourCastMsg = 0x16D, - GlamourRemoveMsg = 0x16E, - - RelicInfuseMsg = 0x179, - - AetherReductionDlg = 0x17D, - - Unk6 = 0x19C, - - SetTitle = 0x1F4, - - SetStatusIcon = 0x1F8, - - SetHomepoint = 0x1FB, - SetFavorite = 0x1FC, - LearnTeleport = 0x1FD, - - ArmoryErrorMsg = 0x201, - - AchievementPopup = 0x203, - - Unk7 = 0x205, // LogMessage? - AchievementMsg = 0x206, - - SetItemLevel = 0x209, - - ChallengeEntryCompleteMsg = 0x20B, - ChallengeEntryUnlockMsg = 0x20C, - - GilTrailMsg = 0x211, - - SetMaxGearSets = 0x230, - - SetCharaGearParamUI = 0x260, - - GearSetEquipMsg = 0x321, - - ToggleOrchestrionUnlock = 0x396, - Dismount = 0x3a0 - }; - - enum struct ChatType : uint16_t - { - LogKindError, - ServerDebug, - ServerUrgent, - ServerNotice, - Unused4, - Unused5, - Unused6, - Unused7, - Unused8, - Unused9, - Say, - Shout, - Tell, - TellReceive, - Party, - Alliance, - LS1, - LS2, - LS3, - LS4, - LS5, - LS6, - LS7, - LS8, - FreeCompany, - Unused25, - Unused26, - NoviceNetwork, - CustomEmote, - StandardEmote, - Yell, - Unknown31, - PartyUnk2, - Unused33, - Unused34, - Unused35, - Unused36, - Unused37, - Unused38, - Unused39, - Unused40, - BattleDamage, - BattleFailed, - BattleActions, - BattleItems, - BattleHealing, - BattleBeneficial, - BattleDetrimental, - BattleUnk48, - BattleUnk49, - Unused50, - Unused51, - Unused52, - Unused53, - Unused54, - Unused55, - Echo, - SystemMessage, - SystemErrorMessage, - BattleSystem, - GatheringSystem, - NPCMessage, - LootMessage, - Unused63, - CharProgress, - Loot, - Crafting, - Gathering, - NPCAnnouncement, - FCAnnouncement, - FCLogin, - RetainerSale, - PartySearch, - PCSign, - DiceRoll, - NoviceNetworkNotice, - Unknown76, - Unused77, - Unused78, - Unused79, - GMTell, - GMSay, - GMShout, - GMYell, - GMParty, - GMFreeCompany, - GMLS1, - GMLS2, - GMLS3, - GMLS4, - GMLS5, - GMLS6, - GMLS7, - GMLS8, - GMNoviceNetwork, - Unused95, - Unused96, - Unused97, - Unused98, - Unused99, - Unused100 - }; - - enum EquipDisplayFlags : uint8_t - { - HideNothing = 0x0, - HideHead = 0x1, - HideWeapon = 0x2, - - Visor = 0x40, - }; - - enum SkillType : uint8_t - { - Normal = 0x1, - MountSkill = 0xD, - }; - - enum SocialCategory : uint8_t - { - Party = 1, - Friends = 2, - FreeCompanyPetition = 4, - FreeCompany = 5, - }; - - // todo: rename SocialRequestAction and SocialRequestResponse cause they seem ambiguous - enum class SocialRequestAction : uint8_t - { - Invite = 1, - Cancel = 2, - Accept = 3, - Decline = 4, - }; - - enum class SocialRequestResponse : uint8_t - { - Decline, - Accept, - Cancel, - }; - - struct ServerEntry - { - uint32_t serverId; - uint32_t flags; - }; - - typedef std::vector< PlayerStateFlag > PlayerStateFlagList; - -} /* Common */ + ToggleCrestMsg = 0x16A, + ToggleBulkCrestMsg = 0x16B, + MateriaRemoveMsg = 0x16C, + GlamourCastMsg = 0x16D, + GlamourRemoveMsg = 0x16E, + + RelicInfuseMsg = 0x179, + + AetherReductionDlg = 0x17D, + + Unk6 = 0x19C, + + SetTitle = 0x1F4, + + SetStatusIcon = 0x1F8, + + SetHomepoint = 0x1FB, + SetFavorite = 0x1FC, + LearnTeleport = 0x1FD, + + ArmoryErrorMsg = 0x201, + + AchievementPopup = 0x203, + + Unk7 = 0x205, // LogMessage? + AchievementMsg = 0x206, + + SetItemLevel = 0x209, + + ChallengeEntryCompleteMsg = 0x20B, + ChallengeEntryUnlockMsg = 0x20C, + + GilTrailMsg = 0x211, + + SetMaxGearSets = 0x230, + + SetCharaGearParamUI = 0x260, + + GearSetEquipMsg = 0x321, + + ToggleOrchestrionUnlock = 0x396, + Dismount = 0x3a0 + }; + + enum struct ChatType : uint16_t + { + LogKindError, + ServerDebug, + ServerUrgent, + ServerNotice, + Unused4, + Unused5, + Unused6, + Unused7, + Unused8, + Unused9, + Say, + Shout, + Tell, + TellReceive, + Party, + Alliance, + LS1, + LS2, + LS3, + LS4, + LS5, + LS6, + LS7, + LS8, + FreeCompany, + Unused25, + Unused26, + NoviceNetwork, + CustomEmote, + StandardEmote, + Yell, + Unknown31, + PartyUnk2, + Unused33, + Unused34, + Unused35, + Unused36, + Unused37, + Unused38, + Unused39, + Unused40, + BattleDamage, + BattleFailed, + BattleActions, + BattleItems, + BattleHealing, + BattleBeneficial, + BattleDetrimental, + BattleUnk48, + BattleUnk49, + Unused50, + Unused51, + Unused52, + Unused53, + Unused54, + Unused55, + Echo, + SystemMessage, + SystemErrorMessage, + BattleSystem, + GatheringSystem, + NPCMessage, + LootMessage, + Unused63, + CharProgress, + Loot, + Crafting, + Gathering, + NPCAnnouncement, + FCAnnouncement, + FCLogin, + RetainerSale, + PartySearch, + PCSign, + DiceRoll, + NoviceNetworkNotice, + Unknown76, + Unused77, + Unused78, + Unused79, + GMTell, + GMSay, + GMShout, + GMYell, + GMParty, + GMFreeCompany, + GMLS1, + GMLS2, + GMLS3, + GMLS4, + GMLS5, + GMLS6, + GMLS7, + GMLS8, + GMNoviceNetwork, + Unused95, + Unused96, + Unused97, + Unused98, + Unused99, + Unused100 + }; + + enum EquipDisplayFlags : uint8_t + { + HideNothing = 0x0, + HideHead = 0x1, + HideWeapon = 0x2, + LegacyMark = 0x4, + + Visor = 0x40, + }; + + enum SkillType : uint8_t + { + Normal = 0x1, + MountSkill = 0xD, + }; + + /*! ModelType as found in eventsystemdefine.exd */ + + enum SocialCategory : uint8_t + { + Party = 1, + Friends = 2, + FreeCompanyPetition = 4, + FreeCompany = 5, + }; + + // todo: rename SocialRequestAction and SocialRequestResponse cause they seem ambiguous + enum class SocialRequestAction : uint8_t + { + Invite = 1, + Cancel = 2, + Accept = 3, + Decline = 4, + }; + + enum class SocialRequestResponse : uint8_t + { + Decline, + Accept, + Cancel, + }; + + struct ServerEntry + { + uint32_t serverId; + uint32_t flags; + }; + + enum ModelType : uint8_t + { + Human = 1, + DemiHuman = 2, + Monster = 3, + SharedGroup = 4, + Parts = 5 + }; + + typedef std::vector< PlayerStateFlag > PlayerStateFlagList; + + } /* Common */ } /* Core */ #endif diff --git a/src/servers/Server_Common/Database/CharaDbConnection.cpp b/src/servers/Server_Common/Database/CharaDbConnection.cpp index 7ed7aada..ce5a1a7e 100644 --- a/src/servers/Server_Common/Database/CharaDbConnection.cpp +++ b/src/servers/Server_Common/Database/CharaDbConnection.cpp @@ -27,7 +27,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements() "OTerritoryType, OTerritoryId, OPosX, OPosY, OPosZ, OPosR, GuardianDeity, " "BirthDay, BirthMonth, Class, Status, TotalPlayTime, FirstClass, HomePoint, " "FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, " - "Aetheryte, HowTo, Minions, Mounts, EquippedMannequin, ConfigFlags, " + "Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, " "QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, " "GrandCompanyRank, Discovery, GMRank, Unlocks, CFPenaltyUntil " "FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC ); @@ -41,7 +41,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements() "TerritoryType = ?, TerritoryId = ?, PosX = ?, PosY = ?, PosZ = ?, PosR = ?, " "OTerritoryType = ?, OTerritoryId = ?, OPosX = ?, OPosY = ?, OPosZ = ?, OPosR = ?, " "Class = ?, Status = ?, TotalPlayTime = ?, HomePoint = ?, FavoritePoint = ?, RestPoint = ?, " - "ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, " + "ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, " "EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, " "QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, Unlocks = ?, " "CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC ); @@ -55,8 +55,8 @@ void Core::Db::CharaDbConnection::doPrepareStatements() "Customize, Voice, IsNewGame, TerritoryId, PosX, PosY, PosZ, PosR, ModelEquip, " "IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, " "HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, " - "Aetheryte, GMRank, UPDATE_DATE ) " - "VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );", + "Aetheryte, GMRank, Mounts, Orchestrion, UPDATE_DATE ) " + "VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );", CONNECTION_SYNC ); prepareStatement( CHARA_UP_NAME, "UPDATE charainfo SET Name = ? WHERE CharacterId = ?;", CONNECTION_ASYNC ); diff --git a/src/servers/Server_Common/Network/PacketDef/Ipcs.h b/src/servers/Server_Common/Network/PacketDef/Ipcs.h index 2a0cadc5..82ec4da7 100644 --- a/src/servers/Server_Common/Network/PacketDef/Ipcs.h +++ b/src/servers/Server_Common/Network/PacketDef/Ipcs.h @@ -136,7 +136,9 @@ namespace Packets { IPCTYPE_UNK_320 = 0x0207, // updated 4.1 IPCTYPE_UNK_322 = 0x0209, // updated 4.1 - ActorGauge = 0x249 + ActorGauge = 0x0249, + + PerformNote = 0x0252, }; // TODO: Include structures for the individual packet segment types @@ -199,6 +201,7 @@ namespace Packets { ReqEquipDisplayFlagsChange = 0x014C, // updated 4.1 ?? + PerformNoteHandler = 0x0160, }; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h index 1808a5ae..77991860 100644 --- a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h @@ -1337,6 +1337,12 @@ struct FFXIVIpcActorGauge : FFXIVIpcBasePacket uint8_t data[15]; // depends on classJobId }; +struct FFXIVIpcPerformNote : FFXIVIpcBasePacket +{ + uint8_t data[32]; +}; + + } /* Server */ } /* Packets */ } /* Network */ diff --git a/src/servers/Server_REST/PlayerMinimal.cpp b/src/servers/Server_REST/PlayerMinimal.cpp index 5ca8410a..724475b8 100644 --- a/src/servers/Server_REST/PlayerMinimal.cpp +++ b/src/servers/Server_REST/PlayerMinimal.cpp @@ -153,6 +153,8 @@ namespace Core { std::vector< uint8_t > discovery( 411 ); std::vector< uint8_t > questComplete( 200 ); std::vector< uint8_t > unlocks( 64 ); + std::vector< uint8_t > mountGuide( 13 ); + std::vector< uint8_t > orchestrion( 38 ); std::vector< uint8_t > modelEquip( 40 ); std::vector< uint8_t > questTracking8( 10 ); std::vector< int16_t > questTracking = { -1, -1, -1, -1, -1 }; @@ -255,6 +257,8 @@ namespace Core { stmt->setBinary( 29, questTracking8 ); stmt->setBinary( 30, aetherytes ); stmt->setInt( 31, m_gmRank ); + stmt->setBinary( 32, mountGuide ); + stmt->setBinary( 33, orchestrion ); g_charaDb.directExecute( stmt ); auto stmtSearchInfo = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_SEARCHINFO_INS ); diff --git a/src/servers/Server_REST/Session.cpp b/src/servers/Server_REST/Session.cpp index 6cd54ff3..e9b876dd 100644 --- a/src/servers/Server_REST/Session.cpp +++ b/src/servers/Server_REST/Session.cpp @@ -1,11 +1,11 @@ #include "Session.h" namespace Core { - Session::Session( void ) + Session::Session() { } - Session::~Session( void ) + Session::~Session() { } diff --git a/src/servers/Server_REST/Session.h b/src/servers/Server_REST/Session.h index a2b98116..46a39289 100644 --- a/src/servers/Server_REST/Session.h +++ b/src/servers/Server_REST/Session.h @@ -20,8 +20,8 @@ namespace Core { std::string newCharName; - Session( void ); - ~Session( void ); + Session(); + ~Session(); uint32_t getIp() const; diff --git a/src/servers/Server_Zone/Action/Action.cpp b/src/servers/Server_Zone/Action/Action.cpp index e5d60e2c..21e09e0a 100644 --- a/src/servers/Server_Zone/Action/Action.cpp +++ b/src/servers/Server_Zone/Action/Action.cpp @@ -12,7 +12,7 @@ Core::Action::Action::~Action() } -uint32_t Core::Action::Action::getId() const +uint16_t Core::Action::Action::getId() const { return m_id; } diff --git a/src/servers/Server_Zone/Action/Action.h b/src/servers/Server_Zone/Action/Action.h index c9bcff77..9e0e79b6 100644 --- a/src/servers/Server_Zone/Action/Action.h +++ b/src/servers/Server_Zone/Action/Action.h @@ -13,7 +13,7 @@ namespace Core { namespace Action { Action(); virtual ~Action(); - uint32_t getId() const; + uint16_t getId() const; Common::HandleActionType getHandleActionType() const; @@ -41,7 +41,7 @@ namespace Core { namespace Action { virtual bool update(); protected: - uint32_t m_id; + uint16_t m_id; Common::HandleActionType m_handleActionType; uint64_t m_startTime; diff --git a/src/servers/Server_Zone/Action/ActionCast.cpp b/src/servers/Server_Zone/Action/ActionCast.cpp index 00fac4bc..b9fcbcd2 100644 --- a/src/servers/Server_Zone/Action/ActionCast.cpp +++ b/src/servers/Server_Zone/Action/ActionCast.cpp @@ -26,7 +26,7 @@ Core::Action::ActionCast::ActionCast() m_handleActionType = Common::HandleActionType::Event; } -Core::Action::ActionCast::ActionCast( Entity::ActorPtr pActor, Entity::ActorPtr pTarget, uint32_t actionId ) +Core::Action::ActionCast::ActionCast( Entity::ActorPtr pActor, Entity::ActorPtr pTarget, uint16_t actionId ) { m_startTime = 0; m_id = actionId; @@ -37,10 +37,7 @@ Core::Action::ActionCast::ActionCast( Entity::ActorPtr pActor, Entity::ActorPtr m_bInterrupt = false; } -Core::Action::ActionCast::~ActionCast() -{ - -} +Core::Action::ActionCast::~ActionCast() = default; void Core::Action::ActionCast::onStart() { diff --git a/src/servers/Server_Zone/Action/ActionCast.h b/src/servers/Server_Zone/Action/ActionCast.h index 9cff002c..897ad7c1 100644 --- a/src/servers/Server_Zone/Action/ActionCast.h +++ b/src/servers/Server_Zone/Action/ActionCast.h @@ -14,7 +14,7 @@ namespace Core { namespace Action { ActionCast(); ~ActionCast(); - ActionCast( Entity::ActorPtr pActor, Entity::ActorPtr pTarget, uint32_t actionId ); + ActionCast( Entity::ActorPtr pActor, Entity::ActorPtr pTarget, uint16_t actionId ); void onStart() override; void onFinish() override; diff --git a/src/servers/Server_Zone/Action/ActionCollision.cpp b/src/servers/Server_Zone/Action/ActionCollision.cpp index a0ab372e..bfae7a60 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.cpp +++ b/src/servers/Server_Zone/Action/ActionCollision.cpp @@ -50,7 +50,10 @@ bool ActionCollision::isActorApplicable( ActorPtr actorPtr, TargetFilter targetF return ( actorApplicable && actorPtr->isAlive() ); } -std::set< Core::Entity::ActorPtr > ActionCollision::getActorsHitFromAction( FFXIVARR_POSITION3 aoePosition, std::set< ActorPtr > actorsInRange, boost::shared_ptr< Core::Data::ActionInfo > actionInfo, TargetFilter targetFilter ) +std::set< Core::Entity::ActorPtr > ActionCollision::getActorsHitFromAction( FFXIVARR_POSITION3 aoePosition, + std::set< ActorPtr > actorsInRange, + boost::shared_ptr< Core::Data::ActionInfo > actionInfo, + TargetFilter targetFilter ) { std::set< ActorPtr > actorsCollided; diff --git a/src/servers/Server_Zone/Action/ActionCollision.h b/src/servers/Server_Zone/Action/ActionCollision.h index cff25934..05ec923e 100644 --- a/src/servers/Server_Zone/Action/ActionCollision.h +++ b/src/servers/Server_Zone/Action/ActionCollision.h @@ -23,11 +23,17 @@ namespace Core { public: static bool isActorApplicable( ActorPtr actorPtr, TargetFilter targetFilter ); - static std::set< ActorPtr > getActorsHitFromAction( Common::FFXIVARR_POSITION3 aoePosition, std::set< ActorPtr > actorsInRange, boost::shared_ptr< Data::ActionInfo > actionInfo, TargetFilter targetFilter ); + static std::set< ActorPtr > getActorsHitFromAction( Common::FFXIVARR_POSITION3 aoePosition, + std::set< ActorPtr > actorsInRange, + boost::shared_ptr< Data::ActionInfo > actionInfo, + TargetFilter targetFilter ); private: - static bool radiusCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, uint16_t radius ); - static bool boxCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, uint16_t width, uint16_t height ); + static bool radiusCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, + uint16_t radius ); + + static bool boxCollision( Common::FFXIVARR_POSITION3 actorPosition, Common::FFXIVARR_POSITION3 aoePosition, + uint16_t width, uint16_t height ); }; diff --git a/src/servers/Server_Zone/Action/ActionMount.cpp b/src/servers/Server_Zone/Action/ActionMount.cpp index cf60fbe1..26c7cddd 100644 --- a/src/servers/Server_Zone/Action/ActionMount.cpp +++ b/src/servers/Server_Zone/Action/ActionMount.cpp @@ -26,7 +26,7 @@ Core::Action::ActionMount::ActionMount() m_handleActionType = Common::HandleActionType::Event; } -Core::Action::ActionMount::ActionMount( Entity::ActorPtr pActor, uint32_t mountId ) +Core::Action::ActionMount::ActionMount( Entity::ActorPtr pActor, uint16_t mountId ) { m_startTime = 0; m_id = mountId; @@ -54,7 +54,8 @@ void Core::Action::ActionMount::onStart() castPacket.data().action_id = m_id; castPacket.data().skillType = Common::SkillType::MountSkill; castPacket.data().unknown_1 = m_id; - castPacket.data().cast_time = static_cast< float >( m_castTime / 1000 ); // This is used for the cast bar above the target bar of the caster. + // This is used for the cast bar above the target bar of the caster. + castPacket.data().cast_time = static_cast< float >( m_castTime / 1000 ); castPacket.data().target_id = m_pSource->getAsPlayer()->getId(); m_pSource->sendToInRangeSet( castPacket, true ); @@ -101,7 +102,7 @@ void Core::Action::ActionMount::onInterrupt() m_pSource->getAsPlayer()->sendStateFlags(); auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 1, m_id, 0 ); + 0x219, 1, m_id, 0 ); // Note: When cast interrupt from taking too much damage, set the last value to 1. This enables the cast interrupt effect. Example: // auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); diff --git a/src/servers/Server_Zone/Action/ActionMount.h b/src/servers/Server_Zone/Action/ActionMount.h index cdd68e3d..6c970869 100644 --- a/src/servers/Server_Zone/Action/ActionMount.h +++ b/src/servers/Server_Zone/Action/ActionMount.h @@ -14,7 +14,7 @@ namespace Core { namespace Action { ActionMount(); ~ActionMount(); - ActionMount( Entity::ActorPtr pActor, uint32_t mountId ); + ActionMount( Entity::ActorPtr pActor, uint16_t mountId ); void onStart() override; void onFinish() override; diff --git a/src/servers/Server_Zone/Action/ActionTeleport.cpp b/src/servers/Server_Zone/Action/ActionTeleport.cpp index 282065e0..37ebbfbd 100644 --- a/src/servers/Server_Zone/Action/ActionTeleport.cpp +++ b/src/servers/Server_Zone/Action/ActionTeleport.cpp @@ -90,7 +90,7 @@ void Core::Action::ActionTeleport::onFinish() effectPacket.data().actionTextId = 5; effectPacket.data().unknown_5 = 1; effectPacket.data().numEffects = 1; - effectPacket.data().rotation = static_cast< uint16_t >( 0x8000 * ((pPlayer->getRotation() + 3.1415926)) / 3.1415926 ); + effectPacket.data().rotation = static_cast< uint16_t >( 0x8000 * ( (pPlayer->getRotation() + 3.1415926) ) / 3.1415926 ); effectPacket.data().effectTarget = pPlayer->getId(); pPlayer->sendToInRangeSet( effectPacket, true ); @@ -108,7 +108,7 @@ void Core::Action::ActionTeleport::onInterrupt() m_pSource->getAsPlayer()->sendStateFlags(); auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 0x04, m_id, 0 ); + 0x219, 0x04, m_id, 0 ); m_pSource->sendToInRangeSet( control, true ); } diff --git a/src/servers/Server_Zone/Action/EventItemAction.cpp b/src/servers/Server_Zone/Action/EventItemAction.cpp index f309ee20..567f689c 100644 --- a/src/servers/Server_Zone/Action/EventItemAction.cpp +++ b/src/servers/Server_Zone/Action/EventItemAction.cpp @@ -22,7 +22,7 @@ Core::Action::EventItemAction::EventItemAction() m_handleActionType = Common::HandleActionType::Event; } -Core::Action::EventItemAction::EventItemAction( Entity::ActorPtr pActor, uint32_t eventId, uint32_t action, +Core::Action::EventItemAction::EventItemAction( Entity::ActorPtr pActor, uint32_t eventId, uint16_t action, ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional ) { m_additional = additional; @@ -37,10 +37,7 @@ Core::Action::EventItemAction::EventItemAction( Entity::ActorPtr pActor, uint32_ m_bInterrupt = false; } -Core::Action::EventItemAction::~EventItemAction() -{ - -} +Core::Action::EventItemAction::~EventItemAction() = default; void Core::Action::EventItemAction::onStart() { diff --git a/src/servers/Server_Zone/Action/EventItemAction.h b/src/servers/Server_Zone/Action/EventItemAction.h index c3c92b50..71bc5e89 100644 --- a/src/servers/Server_Zone/Action/EventItemAction.h +++ b/src/servers/Server_Zone/Action/EventItemAction.h @@ -13,7 +13,7 @@ namespace Core { namespace Action { EventItemAction(); ~EventItemAction(); - EventItemAction( Entity::ActorPtr pActor, uint32_t eventId, uint32_t action, + EventItemAction( Entity::ActorPtr pActor, uint32_t eventId, uint16_t action, ActionCallback finishRef, ActionCallback interruptRef, uint64_t additional ); void onStart() override; diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp index dcf572d0..02d9543d 100644 --- a/src/servers/Server_Zone/Actor/Actor.cpp +++ b/src/servers/Server_Zone/Actor/Actor.cpp @@ -59,13 +59,13 @@ std::string Core::Entity::Actor::getName() const /*! \return true if the actor is of type player */ bool Core::Entity::Actor::isPlayer() const { - return m_type == ActorType::Player; + return m_objKind == ObjKind::Player; } /*! \return true if the actor is of type mob */ bool Core::Entity::Actor::isMob() const { - return m_type == ActorType::BattleNpc; + return m_objKind == ObjKind::BattleNpc; } /*! \return list of actors currently in range */ @@ -210,7 +210,6 @@ void Core::Entity::Actor::setInvincibilityType( Common::InvincibilityType type ) m_invincibilityType = type; } - /*! \return current status of the actor */ Core::Entity::Actor::ActorStatus Core::Entity::Actor::getStatus() const { @@ -450,7 +449,7 @@ Core::Entity::ActorPtr Core::Entity::Actor::getClosestActor() // arbitrary high number float minDistance = 10000; - for( auto pCurAct : m_inRangeActors ) + for( const auto& pCurAct : m_inRangeActors ) { float distance = Math::Util::distance( getPos().x, getPos().y, @@ -492,11 +491,11 @@ void Core::Entity::Actor::sendToInRangeSet( Network::Packets::GamePacketPtr pPac if( m_inRangePlayers.empty() ) return; - for( auto pCurAct : m_inRangePlayers ) + for( const auto &pCurAct : m_inRangePlayers ) { assert( pCurAct ); - pPacket->setValAt( 0x04, m_id ); - pPacket->setValAt( 0x08, pCurAct->m_id ); + pPacket->setValAt< uint32_t >( 0x04, m_id ); + pPacket->setValAt< uint32_t >( 0x08, pCurAct->m_id ); // it might be that the player DC'd in which case the session would be invalid pCurAct->queuePacket( pPacket ); } @@ -625,8 +624,8 @@ void Core::Entity::Actor::autoAttack( ActorPtr pTarget ) m_lastAttack = tick; srand( static_cast< uint32_t >( tick ) ); - uint32_t damage = 10 + rand() % 12; - uint32_t variation = 0 + rand() % 4; + uint16_t damage = static_cast< uint16_t >( 10 + rand() % 12 ); + uint32_t variation = static_cast< uint32_t >( 0 + rand() % 4 ); ZoneChannelPacket< FFXIVIpcEffect > effectPacket( getId() ); effectPacket.data().targetId = pTarget->getId(); @@ -657,7 +656,8 @@ ChaiScript Skill Handler. \param GamePacketPtr to send \param bool should be send to self? */ -void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint32_t actionId, uint64_t param1, uint64_t param2, Entity::Actor& pTarget ) +void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint16_t actionId, uint64_t param1, + uint64_t param2, Entity::Actor& pTarget ) { if ( isPlayer() ) @@ -709,14 +709,16 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint32_t actionId, u else { - std::set< ActorPtr > actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), actionInfoPtr, TargetFilter::Enemies ); + auto actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), + actionInfoPtr, TargetFilter::Enemies ); - for ( auto pHitActor : actorsCollided ) + for ( const auto& pHitActor : actorsCollided ) { effectPacket.data().targetId = pHitActor->getId(); effectPacket.data().effectTarget = pHitActor->getId(); - sendToInRangeSet( effectPacket, true ); // todo: send to range of what? ourselves? when mob script hits this is going to be lacking + // todo: send to range of what? ourselves? when mob script hits this is going to be lacking + sendToInRangeSet( effectPacket, true ); pHitActor->takeDamage( static_cast< uint32_t >( param1 ) ); @@ -756,9 +758,11 @@ void Core::Entity::Actor::handleScriptSkill( uint32_t type, uint32_t actionId, u } else { - // todo: get proper packets: the following was just kind of thrown together from what we know. atm buggy (packets look "delayed" from client) + // todo: get proper packets: the following was just kind of thrown together from what we know. + // atm buggy (packets look "delayed" from client) - std::set< ActorPtr > actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), actionInfoPtr, TargetFilter::Allies ); + auto actorsCollided = ActionCollision::getActorsHitFromAction( pTarget.getPos(), getInRangeActors( true ), + actionInfoPtr, TargetFilter::Allies ); for ( auto pHitActor : actorsCollided ) { @@ -823,4 +827,14 @@ void Core::Entity::Actor::removeSingleStatusEffectFromId( uint32_t id ) Core::StatusEffect::StatusEffectContainerPtr Core::Entity::Actor::getStatusEffectContainer() const { return m_pStatusEffectContainer; -} \ No newline at end of file +} + +float Core::Entity::Actor::getRotation() const +{ + return m_rot; +} + +void Core::Entity::Actor::setRotation( float rot ) +{ + m_rot = rot; +} diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h index 5a784f28..6e14f8c0 100644 --- a/src/servers/Server_Zone/Actor/Actor.h +++ b/src/servers/Server_Zone/Actor/Actor.h @@ -20,21 +20,23 @@ namespace Entity { class Actor : public boost::enable_shared_from_this< Actor > { public: - enum ActorType : uint8_t + enum ObjKind : uint8_t { None = 0x00, Player = 0x01, BattleNpc = 0x02, EventNpc = 0x03, - unk1 = 0x04, - AetheryteNpc = 0x05, - ResourceNode = 0x06, + Treasure = 0x04, + Aetheryte = 0x05, + GatheringPoint = 0x06, EventObj = 0x07, Mount = 0x08, - Minion = 0x09, + Companion = 0x09, Retainer = 0x0A, - unk2 = 0x0B, - Furniture = 0x0C, + Area = 0x0B, + Housing = 0x0C, + Cutscene = 0x0D, + CardStand = 0x0E, }; enum Stance : uint8_t @@ -125,7 +127,7 @@ protected: /*! Id of the actor */ uint32_t m_id; /*! Type of the actor */ - ActorType m_type; + ObjKind m_objKind; /*! Ptr to the ZoneObj the actor belongs to */ ZonePtr m_pCurrentZone; /*! Last tick time for the actor ( in ms ) */ @@ -175,15 +177,9 @@ public: void setPosition( const Common::FFXIVARR_POSITION3& pos ); void setPosition( float x, float y, float z ); - void setRotation( float rot ) - { - m_rot = rot; - } + void setRotation( float rot ); - float getRotation() const - { - return m_rot; - } + float getRotation() const; Common::FFXIVARR_POSITION3& getPos(); @@ -247,7 +243,7 @@ public: void setStatus( ActorStatus status ); - void handleScriptSkill( uint32_t type, uint32_t actionId, uint64_t param1, uint64_t param2, Entity::Actor& target ); + void handleScriptSkill( uint32_t type, uint16_t actionId, uint64_t param1, uint64_t param2, Entity::Actor& target ); virtual void autoAttack( ActorPtr pTarget ); diff --git a/src/servers/Server_Zone/Actor/BattleNpc.cpp b/src/servers/Server_Zone/Actor/BattleNpc.cpp index d990369d..0bd002f7 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.cpp +++ b/src/servers/Server_Zone/Actor/BattleNpc.cpp @@ -29,7 +29,7 @@ uint32_t Core::Entity::BattleNpc::m_nextID = 1149241694; Core::Entity::BattleNpc::BattleNpc() { m_id = 0; - m_type = ActorType::BattleNpc; + m_objKind = ObjKind::BattleNpc; m_status = ActorStatus::Idle; } @@ -38,8 +38,8 @@ Core::Entity::BattleNpc::~BattleNpc() } -Core::Entity::BattleNpc::BattleNpc( uint32_t modelId, uint32_t nameid, const Common::FFXIVARR_POSITION3& spawnPos, - uint32_t sizeId, uint32_t type, uint32_t level, uint32_t behaviour, +Core::Entity::BattleNpc::BattleNpc( uint16_t modelId, uint16_t nameid, const Common::FFXIVARR_POSITION3& spawnPos, + uint16_t bnpcBaseId, uint32_t type, uint8_t level, uint8_t behaviour, uint32_t mobType ) { BattleNpc::m_nextID++; @@ -49,10 +49,10 @@ Core::Entity::BattleNpc::BattleNpc( uint32_t modelId, uint32_t nameid, const Com m_pos = spawnPos; m_posOrigin = spawnPos; - m_type = ActorType::BattleNpc; + m_objKind = ObjKind::BattleNpc; m_mode = MODE_IDLE; - m_targetId = INVALID_GAME_OBJECT_ID; + m_targetId = static_cast< uint64_t >( INVALID_GAME_OBJECT_ID ); m_maxHp = 150; m_maxMp = 100; @@ -66,14 +66,14 @@ Core::Entity::BattleNpc::BattleNpc( uint32_t modelId, uint32_t nameid, const Com m_currentStance = Stance::Passive; m_class = ClassJob::Gladiator; - m_level = level > 0 ? level : 70; + m_level = level > uint8_t{0} ? level : uint8_t{70}; m_modelId = modelId; m_nameId = nameid; m_behavior = behaviour; - m_bnpcBaseId = sizeId; + m_bnpcBaseId = bnpcBaseId; m_status = ActorStatus::Idle; @@ -83,7 +83,7 @@ Core::Entity::BattleNpc::BattleNpc( uint32_t modelId, uint32_t nameid, const Com m_invincibilityType = InvincibilityType::InvincibilityNone; - //m_type = static_cast< Common::ActorType >( type ); + //m_type = static_cast< Common::ObjKind >( type ); } @@ -147,7 +147,7 @@ void Core::Entity::BattleNpc::spawn( Core::Entity::PlayerPtr pTarget ) spawnPacket.data().rotation = Math::Util::floatToUInt16Rot( getRotation() ); - spawnPacket.data().type = static_cast< uint8_t >( m_type ); + spawnPacket.data().type = static_cast< uint8_t >( m_objKind ); spawnPacket.data().state = static_cast< uint8_t >( m_status ); @@ -189,7 +189,7 @@ uint8_t Core::Entity::BattleNpc::getbehavior() const void Core::Entity::BattleNpc::hateListAdd( Core::Entity::ActorPtr pActor, int32_t hateAmount ) { - HateListEntry* hateEntry = new HateListEntry(); + auto hateEntry = new HateListEntry(); hateEntry->m_hateAmount = hateAmount; hateEntry->m_pActor = pActor; @@ -253,7 +253,7 @@ bool Core::Entity::BattleNpc::moveTo( Common::FFXIVARR_POSITION3& pos ) return true; float rot = Math::Util::calcAngFrom( getPos().x, getPos().z, pos.x, pos.z ); - float newRot = PI - rot + (PI / 2); + float newRot = PI - rot + ( PI / 2 ); face( pos ); float angle = Math::Util::calcAngFrom( getPos().x, getPos().z, pos.x, pos.z ) + PI; @@ -262,7 +262,7 @@ bool Core::Entity::BattleNpc::moveTo( Common::FFXIVARR_POSITION3& pos ) float y = ( getPos().y + pos.y ) * 0.5f; // fake value while there is no collision float z = static_cast< float >( sinf( angle ) * 1.1f ); - Common::FFXIVARR_POSITION3 newPos; + Common::FFXIVARR_POSITION3 newPos{}; newPos.x = getPos().x + x; newPos.y = y; @@ -270,13 +270,11 @@ bool Core::Entity::BattleNpc::moveTo( Common::FFXIVARR_POSITION3& pos ) setPosition( newPos ); - Common::FFXIVARR_POSITION3 tmpPos; + Common::FFXIVARR_POSITION3 tmpPos{}; tmpPos.x = getPos().x + x; tmpPos.y = y; tmpPos.z = getPos().z + z; - - angle = angle * 2; setPosition( tmpPos ); setRotation(newRot); @@ -384,7 +382,7 @@ void Core::Entity::BattleNpc::hateListUpdate( Core::Entity::ActorPtr pActor, int } } - HateListEntry* hateEntry = new HateListEntry(); + auto hateEntry = new HateListEntry(); hateEntry->m_hateAmount = hateAmount; hateEntry->m_pActor = pActor; m_hateList.insert( hateEntry ); @@ -427,7 +425,7 @@ void Core::Entity::BattleNpc::onDeath() if( pHateEntry->m_pActor->isPlayer() ) // && pHateEntry->m_hateAmount >= plsBeHatedThisMuchAtLeast ) { uint8_t level = pHateEntry->m_pActor->getLevel(); - auto levelDiff = (int)this->m_level - (int)level; + auto levelDiff = static_cast< int32_t >( this->m_level ) - level; auto cappedLevelDiff = Math::Util::clamp( levelDiff, 1, 6 ); auto expNeeded = g_exdData.m_paramGrowthInfoMap[m_level + cappedLevelDiff - 1].needed_exp; @@ -449,7 +447,7 @@ void Core::Entity::BattleNpc::onDeath() // todo: this is actually retarded, we need real rand() - srand( static_cast< unsigned int> ( time( NULL ) ) ); + srand( static_cast< uint32_t > ( time( nullptr ) ) ); auto pPlayer = pHateEntry->m_pActor->getAsPlayer(); pPlayer->gainExp( exp ); @@ -517,7 +515,7 @@ void Core::Entity::BattleNpc::update( int64_t currTime ) { ActorPtr pClosestActor = getClosestActor(); - if( ( pClosestActor != nullptr ) && pClosestActor->isAlive() ) + if( pClosestActor && pClosestActor->isAlive() ) { distance = Math::Util::distance( getPos().x, getPos().y, getPos().z, pClosestActor->getPos().x, @@ -543,9 +541,9 @@ void Core::Entity::BattleNpc::update( int64_t currTime ) if( pClosestActor != nullptr ) { distance = Math::Util::distance( getPos().x, getPos().y, getPos().z, - pClosestActor->getPos().x, - pClosestActor->getPos().y, - pClosestActor->getPos().z ); + pClosestActor->getPos().x, + pClosestActor->getPos().y, + pClosestActor->getPos().z ); if( distance > 4 ) moveTo( pClosestActor->getPos() ); diff --git a/src/servers/Server_Zone/Actor/BattleNpc.h b/src/servers/Server_Zone/Actor/BattleNpc.h index f74f9536..d6e92e85 100644 --- a/src/servers/Server_Zone/Actor/BattleNpc.h +++ b/src/servers/Server_Zone/Actor/BattleNpc.h @@ -27,7 +27,8 @@ public: BattleNpc(); ~BattleNpc(); - BattleNpc( uint32_t modelId, uint32_t nameid, const Common::FFXIVARR_POSITION3& spawnPos, uint32_t sizeId = 0, uint32_t type = 2, uint32_t level = 0, uint32_t behaviour = 1, uint32_t mobType = 0 ); + BattleNpc( uint16_t modelId, uint16_t nameid, const Common::FFXIVARR_POSITION3& spawnPos, uint16_t bnpcBaseId = 0, + uint32_t type = 2, uint8_t level = 0, uint8_t behaviour = 1, uint32_t mobType = 0 ); //BattleNpc( uint32_t modelId, // uint32_t nameId, diff --git a/src/servers/Server_Zone/Actor/Player.cpp b/src/servers/Server_Zone/Actor/Player.cpp index 6474ef01..2caab4b3 100644 --- a/src/servers/Server_Zone/Actor/Player.cpp +++ b/src/servers/Server_Zone/Actor/Player.cpp @@ -76,7 +76,7 @@ Core::Entity::Player::Player() : m_mount( 0 ) { m_id = 0; - m_type = ActorType::Player; + m_objKind = ObjKind::Player; m_currentStance = Stance::Passive; m_onlineStatus = 0; m_queuedZoneing = nullptr; @@ -895,9 +895,7 @@ Core::Entity::ActorPtr Core::Entity::Player::lookupTargetById( uint64_t targetId for( auto actor : inRange ) { if( actor->getId() == targetId ) - { targetActor = actor; - } } return targetActor; } @@ -1185,6 +1183,11 @@ const uint8_t * Core::Entity::Player::getOrchestrionBitmask() const return m_orchestrion; } +const uint8_t * Core::Entity::Player::getMountGuideBitmask() const +{ + return m_mountGuide; +} + uint64_t Core::Entity::Player::getContentId() const { return m_contentId; @@ -1209,26 +1212,27 @@ void Core::Entity::Player::queuePacket( Core::Network::Packets::GamePacketPtr pP { auto pSession = g_serverZone.getSession( m_id ); - if( pSession ) - { - auto pZoneCon = pSession->getZoneConnection(); + if( !pSession ) + return; + + auto pZoneCon = pSession->getZoneConnection(); + + if( pZoneCon ) + pZoneCon->queueOutPacket( pPacket ); - if( pZoneCon ) - pZoneCon->queueOutPacket( pPacket ); - } } void Core::Entity::Player::queueChatPacket( Core::Network::Packets::GamePacketPtr pPacket ) { auto pSession = g_serverZone.getSession( m_id ); - if( pSession ) - { - auto pChatCon = pSession->getChatConnection(); + if( !pSession ) + return; - if( pChatCon ) - pChatCon->queueOutPacket( pPacket ); - } + auto pChatCon = pSession->getChatConnection(); + + if( pChatCon ) + pChatCon->queueOutPacket( pPacket ); } bool Core::Entity::Player::isLoadingComplete() const @@ -1460,7 +1464,8 @@ void Core::Entity::Player::mount( uint32_t id ) void Core::Entity::Player::dismount() { - sendToInRangeSet( ActorControlPacket142( getId(), ActorControlType::SetStatus, static_cast< uint8_t >( Entity::Actor::ActorStatus::Idle )), true ); + sendToInRangeSet( ActorControlPacket142( getId(), ActorControlType::SetStatus, + static_cast< uint8_t >( Entity::Actor::ActorStatus::Idle )), true ); sendToInRangeSet( ActorControlPacket143( getId(), ActorControlType::Dismount, 1 ), true ); m_mount = 0; } @@ -1473,7 +1478,8 @@ uint8_t Core::Entity::Player::getCurrentMount() const void Core::Entity::Player::autoAttack( ActorPtr pTarget ) { - auto mainWeap = m_pInventory->getItemAt(Inventory::GearSet0, Inventory::EquipSlot::MainHand); + auto mainWeap = m_pInventory->getItemAt( Inventory::GearSet0, + Inventory::EquipSlot::MainHand ); pTarget->onActionHostile( shared_from_this() ); //uint64_t tick = Util::getTimeMs(); @@ -1482,9 +1488,9 @@ void Core::Entity::Player::autoAttack( ActorPtr pTarget ) uint32_t damage = static_cast< uint32_t >( mainWeap->getAutoAttackDmg() ); uint32_t variation = 0 + rand() % 3; - if ( getClass() == ClassJob::Machinist|| - getClass() == ClassJob::Bard || - getClass() == ClassJob::Archer ) + if( getClass() == ClassJob::Machinist || + getClass() == ClassJob::Bard || + getClass() == ClassJob::Archer ) { ZoneChannelPacket< FFXIVIpcEffect > effectPacket(getId()); effectPacket.data().targetId = pTarget->getId(); @@ -1510,7 +1516,7 @@ void Core::Entity::Player::autoAttack( ActorPtr pTarget ) ZoneChannelPacket< FFXIVIpcEffect > effectPacket(getId()); effectPacket.data().targetId = pTarget->getId(); effectPacket.data().actionAnimationId = 7; - // effectPacket.data().unknown_2 = variation; + // effectPacket.data().unknown_2 = variation; effectPacket.data().numEffects = 1; effectPacket.data().unknown_61 = 1; effectPacket.data().unknown_62 = 1; @@ -1549,7 +1555,7 @@ uint32_t Core::Entity::Player::getCFPenaltyMinutes() const auto endTimestamp = getCFPenaltyTimestamp(); // check if penalty timestamp already passed current time - if (currentTimestamp > endTimestamp) + if( currentTimestamp > endTimestamp ) return 0; auto deltaTime = endTimestamp - currentTimestamp; @@ -1559,7 +1565,7 @@ uint32_t Core::Entity::Player::getCFPenaltyMinutes() const void Core::Entity::Player::setCFPenaltyMinutes( uint32_t minutes ) { auto currentTimestamp = Core::Util::getTimeSeconds(); - setCFPenaltyTimestamp(static_cast< uint32_t >( currentTimestamp + minutes * 60 )); + setCFPenaltyTimestamp( static_cast< uint32_t >( currentTimestamp + minutes * 60 ) ); } uint8_t Core::Entity::Player::getOpeningSequence() const diff --git a/src/servers/Server_Zone/Actor/Player.h b/src/servers/Server_Zone/Actor/Player.h index 19ed8d71..4688e5a5 100644 --- a/src/servers/Server_Zone/Actor/Player.h +++ b/src/servers/Server_Zone/Actor/Player.h @@ -215,7 +215,7 @@ public: /*! get the current system hand model */ uint64_t getModelSystemWeapon() const; /*! return a const pointer to the model array */ - const uint32_t * getModelArray() const; + const uint32_t* getModelArray() const; /*! return the equipment model in a specified equipment slot */ uint32_t getModelForSlot( Inventory::EquipSlot slot ); /*! set the equipment model in a specified equipment slot */ @@ -254,13 +254,13 @@ public: /*! change class or job to given class / job */ void setClassJob( Core::Common::ClassJob classJob ); /*! returns a pointer to the class array */ - uint16_t * getClassArray(); + uint16_t* getClassArray(); /*! returns a const pointer to the class array */ - const uint16_t * getClassArray() const; + const uint16_t* getClassArray() const; /*! returns a pointer to the exp array */ - uint32_t * getExpArray(); + uint32_t* getExpArray(); /*! returns a const pointer to the exp array */ - const uint32_t * getExpArray() const; + const uint32_t* getExpArray() const; // Base Look / Stats / Params ////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -283,7 +283,7 @@ public: /*! return the grand company */ uint8_t getGc() const; /*! return the grand company rank */ - const uint8_t * getGcRankArray() const; + const uint8_t* getGcRankArray() const; /*! set look at index */ void setLookAt( uint8_t index, uint8_t value ); /*! set the voice Id */ @@ -293,7 +293,7 @@ public: /*! set the grand company rank */ void setGcRankAt( uint8_t index, uint8_t rank ); /*! return a const pointer to the look array */ - const uint8_t * getLookArray() const; + const uint8_t* getLookArray() const; /*! returns true if the player is currently in combat */ bool isInCombat() const; /*! sets players combat state */ @@ -329,7 +329,7 @@ public: /*! prepares zoning / fades out the screen */ void prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadoutTime = 0, uint16_t animation = 0 ); /*! get player's title list (available titles) */ - uint8_t * getTitleList(); + uint8_t* getTitleList(); /*! get player's active title */ uint16_t getTitle() const; /*! add title to player title list */ @@ -360,7 +360,7 @@ public: /*! return a const pointer to the aetheryte unlock bitmask array */ int8_t getAetheryteMaskAt( uint8_t index ) const; /*! return a pointer to the aetheryte unlock bitmask array */ - uint8_t * getAetheryteArray(); + uint8_t* getAetheryteArray(); /*! set homepoint */ void setHomepoint( uint8_t aetheryteId ); /*! get homepoint */ @@ -368,13 +368,13 @@ public: /*! discover subarea subid fo map map_id, also send udpate packet */ void discover( int16_t map_id, int16_t sub_id ); /*! return a pointer to the discovery bitmask array */ - uint8_t * getDiscoveryBitmask(); + uint8_t* getDiscoveryBitmask(); /*! helper/debug function to reset all discovered areas */ void resetDiscovery(); /*! get a pointer to the howto bitmask array */ - uint8_t * getHowToArray(); + uint8_t* getHowToArray(); /*! get a const pointer to the howto bitmask array */ - const uint8_t * getHowToArray() const; + const uint8_t* getHowToArray() const; /*! update bitmask for how-to's seen */ void updateHowtosSeen( uint32_t howToId ); /*! learn an action / update the unlock bitmask. */ @@ -384,9 +384,11 @@ public: /*! check if an action is already unlocked in the bitmask. */ bool isActionLearned( uint8_t actionId ) const; /*! return a const pointer to the unlock bitmask array */ - const uint8_t * getUnlockBitmask() const; + const uint8_t* getUnlockBitmask() const; /*! return a const pointer to the orchestrion bitmask array */ - const uint8_t * getOrchestrionBitmask() const; + const uint8_t* getOrchestrionBitmask() const; + /*! return a const pointer to the mount guide bitmask array */ + const uint8_t* getMountGuideBitmask() const; // Spawn handling @@ -522,7 +524,6 @@ public: void setEorzeaTimeOffset( uint64_t timestamp ); - // Database void updateDbAllQuests() const; void deleteQuest( uint16_t questId ) const; @@ -575,7 +576,7 @@ private: uint8_t m_titleList[48]; uint8_t m_howTo[33]; uint8_t m_minions[33]; - uint8_t m_mounts[13]; + uint8_t m_mountGuide[13]; uint8_t m_homePoint; uint8_t m_startTown; uint16_t m_townWarpFstFlags; diff --git a/src/servers/Server_Zone/Actor/PlayerEvent.cpp b/src/servers/Server_Zone/Actor/PlayerEvent.cpp index ee6451c6..9c0a1b02 100644 --- a/src/servers/Server_Zone/Actor/PlayerEvent.cpp +++ b/src/servers/Server_Zone/Actor/PlayerEvent.cpp @@ -69,9 +69,9 @@ void Core::Entity::Player::removeEvent( uint32_t eventId ) void Core::Entity::Player::checkEvent( uint32_t eventId ) { auto pEvent = getEvent( eventId ); - if( pEvent ) - if( !pEvent->hasPlayedScene() ) - eventFinish( eventId, 1 ); + + if( pEvent && !pEvent->hasPlayedScene() ) + eventFinish( eventId, 1 ); } @@ -282,7 +282,8 @@ void Core::Entity::Player::eventItemActionStart( uint32_t eventId, void Core::Entity::Player::onLogin() { - for( auto& child : g_serverZone.getConfig()->getChild( "Settings.Parameters.MotDArray" ) ) { + for( auto& child : g_serverZone.getConfig()->getChild( "Settings.Parameters.MotDArray" ) ) + { sendNotice( child.second.data() ); } } diff --git a/src/servers/Server_Zone/Actor/PlayerInventory.cpp b/src/servers/Server_Zone/Actor/PlayerInventory.cpp index 2ed3b165..8eaf65c9 100644 --- a/src/servers/Server_Zone/Actor/PlayerInventory.cpp +++ b/src/servers/Server_Zone/Actor/PlayerInventory.cpp @@ -195,9 +195,7 @@ bool Core::Entity::Player::tryAddItem( uint16_t catalogId, uint32_t quantity ) for( uint16_t i = 0; i < 4; i++ ) { if( m_pInventory->addItem( i, -1, catalogId, quantity ) != -1 ) - { return true; - } } return false; } diff --git a/src/servers/Server_Zone/Actor/PlayerQuest.cpp b/src/servers/Server_Zone/Actor/PlayerQuest.cpp index 06c728b2..3940954f 100644 --- a/src/servers/Server_Zone/Actor/PlayerQuest.cpp +++ b/src/servers/Server_Zone/Actor/PlayerQuest.cpp @@ -45,7 +45,7 @@ void Core::Entity::Player::removeQuest( uint16_t questId ) { ZoneChannelPacket< FFXIVIpcQuestUpdate > questUpdatePacket( getId() ); - questUpdatePacket.data().slot = idx; + questUpdatePacket.data().slot = static_cast< uint8_t >( idx ); questUpdatePacket.data().questInfo.c.questId = 0; questUpdatePacket.data().questInfo.c.sequence = 0xFF; queuePacket( questUpdatePacket ); @@ -62,7 +62,7 @@ void Core::Entity::Player::removeQuest( uint16_t questId ) m_questTracking[ii] = -1; } - boost::shared_ptr pQuest = m_activeQuests[idx]; + boost::shared_ptr< QuestActive > pQuest = m_activeQuests[idx]; m_activeQuests[idx].reset(); m_questIdToQuestIdx.erase( questId ); @@ -1023,6 +1023,7 @@ bool Core::Entity::Player::giveQuestRewards( uint32_t questId, uint32_t optional auto paramGrowth = g_exdData.m_paramGrowthInfoMap[questInfo->quest_level]; + // TODO: use the correct formula, this one is wrong uint32_t exp = ( questInfo->reward_exp_factor * paramGrowth.quest_exp_mod * ( 45 + 5 * questInfo->quest_level) ) / 100; exp = exp + ( questInfo->reward_exp_factor / 100 ) * 10000; diff --git a/src/servers/Server_Zone/Actor/PlayerSql.cpp b/src/servers/Server_Zone/Actor/PlayerSql.cpp index 737c9754..46fdd8d8 100644 --- a/src/servers/Server_Zone/Actor/PlayerSql.cpp +++ b/src/servers/Server_Zone/Actor/PlayerSql.cpp @@ -152,6 +152,12 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession ) auto titleList = res->getBlobVector( "TitleList" ); memcpy( reinterpret_cast< char* >( m_titleList ), titleList.data(), titleList.size() ); + + auto mountGuide = res->getBlobVector( "Mounts" ); + memcpy( reinterpret_cast< char* >( m_mountGuide ), mountGuide.data(), mountGuide.size() ); + + auto orchestrion = res->getBlobVector( "Orchestrion" ); + memcpy( reinterpret_cast< char* >( m_orchestrion ), orchestrion.data(), orchestrion.size() ); auto gcRank = res->getBlobVector( "GrandCompanyRank" ); memcpy( reinterpret_cast< char* >( m_gcRank ), gcRank.data(), gcRank.size() ); @@ -296,10 +302,10 @@ void Core::Entity::Player::updateSql() "TerritoryType 18, TerritoryId 19, PosX 20, PosY 21, PosZ 22, PosR 23, " "OTerritoryType 24, OTerritoryId 25, OPosX 26, OPosY 27, OPosZ 28, OPosR 29, " "Class 30, Status 31, TotalPlayTime 32, HomePoint 33, FavoritePoint 34, RestPoint 35, " - "ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, " - "EquippedMannequin 43, ConfigFlags 44, QuestCompleteFlags 45, OpeningSequence 46, " - "QuestTracking 47, GrandCompany 48, GrandCompanyRank 49, Discovery 50, GMRank 51, Unlocks 52, " - "CFPenaltyUntil 53"*/ + "ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, Orchestrion 43, " + "EquippedMannequin 44, ConfigFlags 45, QuestCompleteFlags 46, OpeningSequence 47, " + "QuestTracking 48, GrandCompany 49, GrandCompanyRank 50, Discovery 51, GMRank 52, Unlocks 53, " + "CFPenaltyUntil 54"*/ auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_UP ); stmt->setInt( 1, getHp() ); @@ -370,40 +376,44 @@ void Core::Entity::Player::updateSql() memcpy( minionsVec.data(), m_minions, sizeof( m_minions ) ); stmt->setBinary( 41, minionsVec ); - std::vector< uint8_t > mountsVec( sizeof( m_mounts ) ); - memcpy( mountsVec.data(), m_mounts, sizeof( m_mounts ) ); + std::vector< uint8_t > mountsVec( sizeof( m_mountGuide ) ); + memcpy( mountsVec.data(), m_mountGuide, sizeof( m_mountGuide ) ); stmt->setBinary( 42, mountsVec ); - stmt->setInt( 43, 0 ); // EquippedMannequin + std::vector< uint8_t > orchestrionVec( sizeof( m_orchestrion ) ); + memcpy( orchestrionVec.data(), m_orchestrion, sizeof( m_orchestrion ) ); + stmt->setBinary( 42, mountsVec ); - stmt->setInt( 44, 0 ); // DisplayFlags + stmt->setInt( 44, 0 ); // EquippedMannequin + + stmt->setInt( 45, 0 ); // DisplayFlags std::vector< uint8_t > questCompleteVec( sizeof( m_questCompleteFlags ) ); memcpy( questCompleteVec.data(), m_questCompleteFlags, sizeof( m_questCompleteFlags ) ); - stmt->setBinary( 45, questCompleteVec ); + stmt->setBinary( 46, questCompleteVec ); - stmt->setInt( 46, m_openingSequence ); + stmt->setInt( 47, m_openingSequence ); std::vector< uint8_t > questTrackerVec( sizeof( m_questTracking ) ); memcpy( questTrackerVec.data(), m_questTracking, sizeof( m_questTracking ) ); - stmt->setBinary( 47, questTrackerVec ); + stmt->setBinary( 48, questTrackerVec ); - stmt->setInt( 48, m_gc ); // DisplayFlags + stmt->setInt( 49, m_gc ); // DisplayFlags - stmt->setBinary( 49, { m_gcRank[0], m_gcRank[1], m_gcRank[2] } ); + stmt->setBinary( 50, { m_gcRank[0], m_gcRank[1], m_gcRank[2] } ); std::vector< uint8_t > discoveryVec( sizeof( m_discovery ) ); memcpy( discoveryVec.data(), m_discovery, sizeof( m_discovery ) ); - stmt->setBinary( 50, discoveryVec ); + stmt->setBinary( 51, discoveryVec ); - stmt->setInt( 51, m_gmRank ); + stmt->setInt( 52, m_gmRank ); std::vector< uint8_t > unlockVec( sizeof( m_unlocks ) ); memcpy( unlockVec.data(), m_unlocks, sizeof( m_unlocks ) ); - stmt->setBinary( 52, unlockVec ); + stmt->setBinary( 53, unlockVec ); - stmt->setInt( 53, m_cfPenaltyUntil ); + stmt->setInt( 54, m_cfPenaltyUntil ); - stmt->setInt( 54, m_id ); + stmt->setInt( 55, m_id ); g_charaDb.execute( stmt ); @@ -416,8 +426,6 @@ void Core::Entity::Player::updateSql() ////// Class updateDbClass(); - memset( m_orchestrion, 0, sizeof( m_orchestrion ) ); - } void Core::Entity::Player::updateDbClass() const diff --git a/src/servers/Server_Zone/Event/EventHelper.cpp b/src/servers/Server_Zone/Event/EventHelper.cpp index 18308399..e59b322b 100644 --- a/src/servers/Server_Zone/Event/EventHelper.cpp +++ b/src/servers/Server_Zone/Event/EventHelper.cpp @@ -12,47 +12,45 @@ std::string Core::Event::getEventName( uint32_t eventId ) { uint16_t eventType = eventId >> 16; + auto unknown = std::string{ "unknown" }; + switch( eventType ) { case EventType::Quest: { auto questInfo = g_exdData.getQuestInfo( eventId ); - if( questInfo ) - { - std::string name = questInfo->name_intern; - std::size_t pos = name.find_first_of( "_" ); + if( !questInfo ) + return unknown + "Quest"; - return questInfo->name_intern.substr( 0, pos ); - } + std::string name = questInfo->name_intern; + std::size_t pos = name.find_first_of( "_" ); + + return questInfo->name_intern.substr( 0, pos ); } - break; case EventType::CustomTalk: { auto customTalkInfo = g_exdData.getCustomTalkInfo( eventId ); - if( customTalkInfo ) - { - std::string name = customTalkInfo->name_intern; - std::size_t pos = name.find_first_of( "_" ); + if( !customTalkInfo ) + return unknown + "CustomTalk"; - return customTalkInfo->name_intern.substr( 0, pos ); - } + std::string name = customTalkInfo->name_intern; + std::size_t pos = name.find_first_of( "_" ); + return customTalkInfo->name_intern.substr( 0, pos ); } - break; case EventType::Opening: { auto openingInfo = g_exdData.getOpeningInfo( eventId ); if( openingInfo ) return openingInfo->name; + return unknown + "Opening"; } - break; case EventType::Aetheryte: { auto aetherInfo = g_exdData.getAetheryteInfo( eventId & 0xFFFF ); if( aetherInfo->isAetheryte ) return "Aetheryte"; return "Aethernet"; - } case EventType::ChocoPort: { @@ -60,11 +58,9 @@ std::string Core::Event::getEventName( uint32_t eventId ) } default: { - return ""; - + return unknown; } } - return ""; } uint32_t Core::Event::mapEventActorToRealActor( uint32_t eventActorId ) diff --git a/src/servers/Server_Zone/Network/GameConnection.cpp b/src/servers/Server_Zone/Network/GameConnection.cpp index 4e4c5a90..07d5e8a3 100644 --- a/src/servers/Server_Zone/Network/GameConnection.cpp +++ b/src/servers/Server_Zone/Network/GameConnection.cpp @@ -93,16 +93,15 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive, setZoneHandler( ClientZoneIpcType::CFRegisterRoulette, "CFRegisterRoulette", &GameConnection::cfRegisterRoulette ); setZoneHandler( ClientZoneIpcType::CFCommenceHandler, "CFDutyAccepted", &GameConnection::cfDutyAccepted); - setZoneHandler( ClientZoneIpcType::ReqEquipDisplayFlagsChange, "ReqEquipDisplayFlagsChange",&GameConnection::reqEquipDisplayFlagsHandler); + setZoneHandler( ClientZoneIpcType::ReqEquipDisplayFlagsChange, "ReqEquipDisplayFlagsChange", &GameConnection::reqEquipDisplayFlagsHandler ); + + setZoneHandler( ClientZoneIpcType::PerformNoteHandler, "PerformNoteHandler", &GameConnection::performNoteHandler ); setChatHandler( ClientChatIpcType::TellReq, "TellReq", &GameConnection::tellHandler); } -Core::Network::GameConnection::~GameConnection() -{ - -} +Core::Network::GameConnection::~GameConnection() = default; // overwrite the parents onConnect for our game socket needs @@ -125,39 +124,40 @@ void Core::Network::GameConnection::OnRecv( std::vector< uint8_t > & buffer ) { // This is assumed packet always start with valid FFXIVARR_PACKET_HEADER for now. - Packets::FFXIVARR_PACKET_HEADER packetHeader; - const auto headerResult = Packets::getHeader(buffer, 0, packetHeader); + Packets::FFXIVARR_PACKET_HEADER packetHeader{}; + const auto headerResult = Packets::getHeader( buffer, 0, packetHeader ); - if (headerResult == Incomplete) + if( headerResult == Incomplete ) { - g_log.info("Dropping connection due to incomplete packet header."); - g_log.info("FIXME: Packet message bounary is not implemented."); + g_log.info( "Dropping connection due to incomplete packet header." ); + g_log.info( "FIXME: Packet message bounary is not implemented." ); Disconnect(); return; } - if (headerResult == Malformed) + if( headerResult == Malformed ) { - g_log.info("Dropping connection due to malformed packet header."); + g_log.info( "Dropping connection due to malformed packet header." ); Disconnect(); return; } // Dissect packet list std::vector< Packets::FFXIVARR_PACKET_RAW > packetList; - const auto packetResult = Packets::getPackets(buffer, sizeof(struct FFXIVARR_PACKET_HEADER), packetHeader, packetList); + const auto packetResult = Packets::getPackets( buffer, sizeof( struct FFXIVARR_PACKET_HEADER ), + packetHeader, packetList ); - if (packetResult == Incomplete) + if( packetResult == Incomplete ) { - g_log.info("Dropping connection due to incomplete packets."); - g_log.info("FIXME: Packet message bounary is not implemented."); + g_log.info( "Dropping connection due to incomplete packets." ); + g_log.info( "FIXME: Packet message bounary is not implemented." ); Disconnect(); return; } if (packetResult == Malformed) { - g_log.info("Dropping connection due to malformed packets."); + g_log.info( "Dropping connection due to malformed packets." ); Disconnect(); return; } @@ -256,7 +256,7 @@ void Core::Network::GameConnection::handlePacket( Core::Network::Packets::GamePa } -void Core::Network::GameConnection::sendPackets( Packets::PacketContainer * pPacket ) +void Core::Network::GameConnection::sendPackets( Packets::PacketContainer* pPacket ) { //g_log.Log(LoggingSeverity::info, pPacket->toString()); std::vector< uint8_t > sendBuffer; @@ -270,7 +270,7 @@ void Core::Network::GameConnection::processInQueue() // handle the incoming game packets while( auto pPacket = m_inQueue.pop() ) { - handlePacket(pPacket); + handlePacket( pPacket ); } } @@ -303,7 +303,7 @@ void Core::Network::GameConnection::processOutQueue() } -void Core::Network::GameConnection::sendSinglePacket( Packets::GamePacket * pPacket ) +void Core::Network::GameConnection::sendSinglePacket( Packets::GamePacket* pPacket ) { PacketContainer pRP = PacketContainer(); pRP.addPacket( *pPacket ); @@ -337,7 +337,7 @@ void Core::Network::GameConnection::injectPacket( const std::string& packetpath, fclose( fp ); // cycle through the packet entries and queue each one - for( int32_t k = 0x18; k < size;) + for( int32_t k = 0x18; k < size; ) { uint32_t tmpId = pPlayer->getId(); // replace ids in the entryheader if needed @@ -360,7 +360,7 @@ void Core::Network::GameConnection::injectPacket( const std::string& packetpath, } void Core::Network::GameConnection::handlePackets( const Core::Network::Packets::FFXIVARR_PACKET_HEADER& ipcHeader, - const std::vector& packetData ) + const std::vector< Core::Network::Packets::FFXIVARR_PACKET_RAW >& packetData ) { // if a session is set, update the last time it recieved a game packet if( m_pSession ) @@ -368,8 +368,6 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets: for( auto inPacket : packetData ) { - - switch( inPacket.segHdr.type ) { case 1: @@ -392,7 +390,8 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets: } session = g_serverZone.getSession( playerId ); } - else if( !session->isValid() || ( session->getPlayer() && session->getPlayer()->getLastPing() != 0 ) ) //TODO: Catch more things in lobby and send real errors + //TODO: Catch more things in lobby and send real errors + else if( !session->isValid() || ( session->getPlayer() && session->getPlayer()->getLastPing() != 0 ) ) { g_log.error( "[" + std::string(id) + "] Session INVALID, disconnecting" ); Disconnect(); @@ -458,58 +457,5 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets: } } - - //// try to retrieve the session for this id - //auto session = g_serverZone.getSession( inPacket.segHdr.source_actor ); - //auto pCon = boost::static_pointer_cast< GameConnection, Connection >( shared_from_this() ); - - //// check if this is a zoning notification - //if( *reinterpret_cast< uint16_t* >( &inPacket.data[2] ) == 0x9999 ) - //{ - - // // if we already have a session in this connection, reload the player - // if( session ) - // g_serverZone.updateSession( inPacket.segHdr.source_actor ); - // else - // { - // // if not, create a new session - // g_serverZone.createSession( inPacket.segHdr.source_actor ); - // session = g_serverZone.getSession( inPacket.segHdr.source_actor ); - // } - - // // set the zoneingType for the player so the correct animation can be played - // auto pPlayer = session->getPlayer(); - // ZoneingType zoneType = static_cast< ZoneingType >( *reinterpret_cast< uint16_t* >( &inPacket.data[18] ) ); - // switch( zoneType ) - // { - // case ZoneingType::Teleport: - // pPlayer->setTeleporting( true ); - // break; - // case ZoneingType::Return: - // pPlayer->setReturning( true ); - // break; - // default: - // break; - // } - // // place this connection in the session - // session->setZoneConnection( pCon ); - // // actually perform the zoning - // session->getPlayer()->setZone( *reinterpret_cast< uint16_t* >( &inPacket.data[16] ) ); - //} - //else - //{ - // if( !session ) - // { - // g_serverZone.createSession( inPacket.segHdr.source_actor ); - // session = g_serverZone.getSession( inPacket.segHdr.source_actor ); - // session->setZoneConnection( pCon ); - // } - - // queueInPacket( GamePacketPtr( new GamePacket( inPacket ) ) ); - //} - - //// if not set, set the session for this connection - //if( !m_pSession && session ) - // m_pSession = session; } } diff --git a/src/servers/Server_Zone/Network/GameConnection.h b/src/servers/Server_Zone/Network/GameConnection.h index cea1dec9..97332266 100644 --- a/src/servers/Server_Zone/Network/GameConnection.h +++ b/src/servers/Server_Zone/Network/GameConnection.h @@ -66,7 +66,7 @@ public: void OnError( const boost::system::error_code & error ) override; void handlePackets( const Packets::FFXIVARR_PACKET_HEADER& ipcHeader, - const std::vector& packetData ); + const std::vector< Packets::FFXIVARR_PACKET_RAW >& packetData ); void queueInPacket( Packets::GamePacketPtr inPacket ); void queueOutPacket( Packets::GamePacketPtr outPacket ); @@ -119,6 +119,8 @@ public: DECLARE_HANDLER( reqEquipDisplayFlagsHandler ); + DECLARE_HANDLER( performNoteHandler ); + DECLARE_HANDLER( tellHandler ); }; diff --git a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp index 0374f957..94aa4e71 100644 --- a/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/ActionHandler.cpp @@ -52,7 +52,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in uint64_t param1 = inPacket.getValAt< uint64_t >( 0x24 ); uint32_t param11 = inPacket.getValAt< uint32_t >( 0x24 ); uint32_t param12 = inPacket.getValAt< uint32_t >( 0x28 ); - uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2c ); + uint32_t param2 = inPacket.getValAt< uint32_t >( 0x2C ); uint64_t param3 = inPacket.getValAt< uint64_t >( 0x38 ); g_log.debug( "[" + std::to_string( m_pSession->getId() ) + "] Incoming action: " + @@ -115,7 +115,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in } case 0x69: // Cancel cast { - if( pPlayer->getCurrentAction() != nullptr ) + if( pPlayer->getCurrentAction() ) pPlayer->getCurrentAction()->setInterrupted(); break; } @@ -190,8 +190,6 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in break; case ZoneingType::FadeIn: break; - default: - break; } pPlayer->setZoningType( Common::ZoneingType::None ); @@ -216,7 +214,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in pow( fromAetheryte->map_coord_y - targetAetheryte->map_coord_y, 2 ) ) / 2 ) + 100 ); // cap at 999 gil - cost = cost > 999 ? 999 : cost; + cost = cost > uint16_t{999} ? uint16_t{999} : cost; bool insufficientGil = pPlayer->getCurrency( Inventory::CurrencyType::Gil ) < cost; // todo: figure out what param1 really does diff --git a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp index 37804aac..7decaea0 100644 --- a/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp +++ b/src/servers/Server_Zone/Network/Handlers/InventoryHandler.cpp @@ -39,59 +39,59 @@ using namespace Core::Network::Packets::Server; void Core::Network::GameConnection::inventoryModifyHandler( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) { - uint32_t seq = inPacket.getValAt< uint32_t >( 0x20 ); - uint8_t action = inPacket.getValAt< uint8_t >( 0x24 ); - uint8_t fromSlot = inPacket.getValAt< uint8_t >( 0x30 ); - uint8_t toSlot = inPacket.getValAt< uint8_t >( 0x44 ); - uint16_t fromContainer = inPacket.getValAt< uint16_t >( 0x2C ); - uint16_t toContainer = inPacket.getValAt< uint16_t >( 0x40 ); + uint32_t seq = inPacket.getValAt< uint32_t >( 0x20 ); + uint8_t action = inPacket.getValAt< uint8_t >( 0x24 ); + uint8_t fromSlot = inPacket.getValAt< uint8_t >( 0x30 ); + uint8_t toSlot = inPacket.getValAt< uint8_t >( 0x44 ); + uint16_t fromContainer = inPacket.getValAt< uint16_t >( 0x2C ); + uint16_t toContainer = inPacket.getValAt< uint16_t >( 0x40 ); - ZoneChannelPacket< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); - ackPacket.data().sequence = seq; - ackPacket.data().type = 7; - pPlayer->queuePacket( ackPacket ); + ZoneChannelPacket< FFXIVIpcInventoryActionAck > ackPacket( pPlayer->getId() ); + ackPacket.data().sequence = seq; + ackPacket.data().type = 7; + pPlayer->queuePacket( ackPacket ); - g_log.debug( inPacket.toString() ); - g_log.debug( "InventoryAction: " + std::to_string( action ) ); + g_log.debug( inPacket.toString() ); + g_log.debug( "InventoryAction: " + std::to_string( action ) ); - // TODO: other inventory operations need to be implemented - switch( action ) - { + // TODO: other inventory operations need to be implemented + switch( action ) + { - case 0x07: // discard item action - { - pPlayer->getInventory()->discardItem( fromContainer, fromSlot ); - } - break; + case 0x07: // discard item action + { + pPlayer->getInventory()->discardItem( fromContainer, fromSlot ); + } + break; - case 0x08: // move item action - { - pPlayer->getInventory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); - } - break; + case 0x08: // move item action + { + pPlayer->getInventory()->moveItem( fromContainer, fromSlot, toContainer, toSlot ); + } + break; - case 0x09: // swap item action - { - pPlayer->getInventory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); - } - break; + case 0x09: // swap item action + { + pPlayer->getInventory()->swapItem( fromContainer, fromSlot, toContainer, toSlot ); + } + break; - case 0x0C: // merge stack action - { + case 0x0C: // merge stack action + { - } - break; + } + break; - case 0x0A: // split stack action - { + case 0x0A: // split stack action + { - } - break; + } + break; - default: + default: + break; - break; - } + } } diff --git a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp index 99239694..96f4a58c 100644 --- a/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/Server_Zone/Network/Handlers/PacketHandlers.cpp @@ -286,6 +286,7 @@ void Core::Network::GameConnection::updatePositionHandler( const Packets::GamePa void Core::Network::GameConnection::reqEquipDisplayFlagsHandler( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) { + g_log.info( "[" + std::to_string( pPlayer->getId() ) + "] Setting EquipDisplayFlags to " + std::to_string( inPacket.getValAt< uint8_t >( 0x20 ) ) ); pPlayer->setEquipDisplayFlags( inPacket.getValAt< uint8_t >( 0x20 ) ); } @@ -300,7 +301,7 @@ void Core::Network::GameConnection::zoneLineHandler( const Packets::GamePacket& auto pLine = g_zoneMgr.getZonePosition( zoneLineId ); - Common::FFXIVARR_POSITION3 targetPos; + Common::FFXIVARR_POSITION3 targetPos{}; uint32_t targetZone; float rotation = 0.0f; @@ -482,6 +483,12 @@ void Core::Network::GameConnection::socialListHandler( const Packets::GamePacket } +void Core::Network::GameConnection::socialReqSendHandler(const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer) +{ + g_log.debug("send"); +} + void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPacket, Entity::PlayerPtr pPlayer ) { @@ -554,7 +561,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa if( !pSession ) { - GamePacketNew< FFXIVIpcTellErrNotFound, ServerChatIpcType > tellErrPacket( pPlayer->getId() ); + ChatChannelPacket< FFXIVIpcTellErrNotFound > tellErrPacket( pPlayer->getId() ); strcpy( tellErrPacket.data().receipientName, targetPcName.c_str() ); sendSinglePacket( tellErrPacket ); @@ -587,7 +594,7 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa return; } - GamePacketNew< FFXIVIpcTell, ServerChatIpcType > tellPacket( pPlayer->getId() ); + ChatChannelPacket< FFXIVIpcTell > tellPacket( pPlayer->getId() ); strcpy( tellPacket.data().msg, msg.c_str() ); strcpy( tellPacket.data().receipientName, pPlayer->getName().c_str() ); // TODO: do these have a meaning? @@ -597,3 +604,14 @@ void Core::Network::GameConnection::tellHandler( const Packets::GamePacket& inPa pTargetPlayer->queueChatPacket( tellPacket ); } + +void Core::Network::GameConnection::performNoteHandler( const Packets::GamePacket& inPacket, + Entity::PlayerPtr pPlayer ) +{ + GamePacketNew< FFXIVIpcPerformNote, ServerZoneIpcType > performPacket( pPlayer->getId() ); + + uint8_t inVal = inPacket.getValAt< uint8_t >( 0x20 ); + memcpy( &performPacket.data().data[0], &inVal, 32 ); + + pPlayer->sendToInRangeSet( performPacket ); +} diff --git a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h index aa3ad80b..13d48cc7 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h @@ -64,8 +64,7 @@ private: memcpy( m_data.orchestrionMask, player->getOrchestrionBitmask(), sizeof( m_data.orchestrionMask ) ); - memset( m_data.mountGuideMask, 0xFF, sizeof( m_data.mountGuideMask) ); - memset( m_data.fishingGuideMask, 0xFF, sizeof( m_data.fishingGuideMask ) ); + memcpy( m_data.mountGuideMask, player->getMountGuideBitmask(), sizeof( m_data.mountGuideMask) ); memcpy( m_data.unlockBitmask, player->getUnlockBitmask(), sizeof( m_data.unlockBitmask ) ); diff --git a/src/servers/Server_Zone/Script/ScriptManager.cpp b/src/servers/Server_Zone/Script/ScriptManager.cpp index bc42558c..acb30e3b 100644 --- a/src/servers/Server_Zone/Script/ScriptManager.cpp +++ b/src/servers/Server_Zone/Script/ScriptManager.cpp @@ -23,7 +23,6 @@ extern Core::Logger g_log; extern Core::Data::ExdData g_exdData; extern Core::ServerZone g_serverZone; -extern Core::Scripting::ScriptManager g_scriptManager; Core::Scripting::ScriptManager::ScriptManager() { @@ -38,6 +37,8 @@ Core::Scripting::ScriptManager::~ScriptManager() void Core::Scripting::ScriptManager::loadDir( std::string dirname, std::set& chaiFiles ) { + g_log.info( "ScriptEngine: loading scripts from " + dirname ); + boost::filesystem::path targetDir( dirname ); boost::filesystem::recursive_directory_iterator iter( targetDir ), eod; @@ -67,7 +68,8 @@ void Core::Scripting::ScriptManager::onPlayerFirstEnterWorld( Core::Entity::Play } } -bool Core::Scripting::ScriptManager::registerBnpcTemplate( std::string templateName, uint32_t bnpcBaseId, uint32_t bnpcNameId, uint32_t modelId, std::string aiName ) +bool Core::Scripting::ScriptManager::registerBnpcTemplate( std::string templateName, uint32_t bnpcBaseId, + uint32_t bnpcNameId, uint32_t modelId, std::string aiName ) { return g_serverZone.registerBnpcTemplate( templateName, bnpcBaseId, bnpcNameId, modelId, aiName ); } @@ -79,7 +81,7 @@ void Core::Scripting::ScriptManager::reload() init(); } -const boost::shared_ptr& Core::Scripting::ScriptManager::getHandler() const +const boost::shared_ptr< chaiscript::ChaiScript >& Core::Scripting::ScriptManager::getHandler() const { return m_pChaiHandler; } @@ -90,12 +92,13 @@ bool Core::Scripting::ScriptManager::onTalk( Core::Entity::PlayerPtr pPlayer, ui std::string eventName = "onTalk"; std::string objName = Event::getEventName( eventId ); - pPlayer->sendDebug("Actor: " + - std::to_string( actorId ) + " -> " + std::to_string( Core::Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + - " \neventId: " + - std::to_string( eventId ) + - " (0x" + boost::str( boost::format( "%|08X|" ) - % static_cast< uint64_t >( eventId & 0xFFFFFFF ) ) + ")" ); + pPlayer->sendDebug( "Actor: " + + std::to_string( actorId ) + " -> " + + std::to_string( Core::Event::mapEventActorToRealActor( static_cast< uint32_t >( actorId ) ) ) + + " \neventId: " + + std::to_string( eventId ) + + " (0x" + boost::str( boost::format( "%|08X|" ) + % static_cast< uint64_t >( eventId & 0xFFFFFFF ) ) + ")" ); uint16_t eventType = eventId >> 16; @@ -107,7 +110,8 @@ bool Core::Scripting::ScriptManager::onTalk( Core::Entity::PlayerPtr pPlayer, ui pPlayer->eventStart( actorId, eventId, Event::Event::Talk, 0, 0 ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint64_t ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, + uint32_t, Entity::Player&, uint64_t ) > >( eventName ); fn( obj, eventId, *pPlayer, actorId ); pPlayer->checkEvent( eventId ); @@ -146,7 +150,8 @@ bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::PlayerPtr p pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::EnterTerritory, 0, pPlayer->getZoneId() ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint16_t, uint16_t ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, + Entity::Player&, uint16_t, uint16_t ) > >( eventName ); fn( obj, eventId, *pPlayer, param1, param2 ); pPlayer->checkEvent( eventId ); @@ -159,7 +164,8 @@ bool Core::Scripting::ScriptManager::onEnterTerritory( Core::Entity::PlayerPtr p return true; } -bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, float x, float y, float z ) +bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, + float x, float y, float z ) { std::string eventName = "onWithinRange"; std::string objName = Event::getEventName( eventId ); @@ -173,7 +179,8 @@ bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, u pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::WithinRange, 1, param1 ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, float, float, float ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, + float, float, float ) > >( eventName ); fn( obj, eventId, *pPlayer, param1, x, y, z ); pPlayer->checkEvent( eventId ); @@ -186,7 +193,8 @@ bool Core::Scripting::ScriptManager::onWithinRange( Entity::PlayerPtr pPlayer, u return true; } -bool Core::Scripting::ScriptManager::onOutsideRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, float x, float y, float z ) +bool Core::Scripting::ScriptManager::onOutsideRange( Entity::PlayerPtr pPlayer, uint32_t eventId, uint32_t param1, + float x, float y, float z ) { std::string eventName = "onOutsideRange"; std::string objName = Event::getEventName( eventId ); @@ -200,7 +208,8 @@ bool Core::Scripting::ScriptManager::onOutsideRange( Entity::PlayerPtr pPlayer, pPlayer->eventStart( pPlayer->getId(), eventId, Event::Event::OutsideRange, 1, param1 ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, float, float, float ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, + float, float, float ) > >( eventName ); fn( obj, eventId, *pPlayer, param1, x, y, z ); pPlayer->checkEvent( eventId ); @@ -227,7 +236,8 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, u pPlayer->eventStart( actorId, eventId, Event::Event::Emote, 0, emoteId ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint64_t, uint8_t ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, + uint64_t, uint8_t ) > >( eventName ); fn( obj, eventId, *pPlayer, actorId, emoteId ); pPlayer->checkEvent( eventId ); @@ -250,17 +260,18 @@ bool Core::Scripting::ScriptManager::onEmote( Core::Entity::PlayerPtr pPlayer, u return true; } -bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::PlayerPtr pPlayer, uint32_t eventId, uint16_t subEvent, - uint16_t param1, uint16_t param2, uint16_t param3 ) +bool Core::Scripting::ScriptManager::onEventHandlerReturn( Core::Entity::PlayerPtr pPlayer, uint32_t eventId, + uint16_t subEvent, uint16_t param1, uint16_t param2, + uint16_t param3 ) { - pPlayer->sendDebug("eventId: " + - std::to_string( eventId ) + - " ( 0x" + boost::str( boost::format( "%|08X|" ) % ( uint64_t ) ( eventId & 0xFFFFFFF ) ) + " ) " + - " scene: " + std::to_string( subEvent ) + - " p1: " + std::to_string( param1 ) + - " p2: " + std::to_string( param2 ) + - " p3: " + std::to_string( param3 ) ); + pPlayer->sendDebug( "eventId: " + + std::to_string( eventId ) + + " ( 0x" + boost::str( boost::format( "%|08X|" ) % ( uint64_t ) ( eventId & 0xFFFFFFF ) ) + " ) " + + " scene: " + std::to_string( subEvent ) + + " p1: " + std::to_string( param1 ) + + " p2: " + std::to_string( param2 ) + + " p3: " + std::to_string( param3 ) ); try { @@ -300,7 +311,8 @@ bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Pl try { - auto fn = m_pChaiHandler->eval< std::function< void( Entity::Player&, uint32_t, uint16_t, uint16_t, uint32_t ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( Entity::Player&, uint32_t, + uint16_t, uint16_t, uint32_t ) > >( eventName ); fn( *pPlayer, eventId, subEvent, param, catalogId ); } catch( ... ) @@ -312,7 +324,7 @@ bool Core::Scripting::ScriptManager::onEventHandlerTradeReturn( Core::Entity::Pl } bool Core::Scripting::ScriptManager::onEventItem( Entity::PlayerPtr pPlayer, uint32_t eventItemId, - uint32_t eventId, uint32_t castTime, uint64_t targetId ) + uint32_t eventId, uint32_t castTime, uint64_t targetId ) { std::string eventName = "onEventItem"; std::string objName = Event::getEventName( eventId ); @@ -325,7 +337,8 @@ bool Core::Scripting::ScriptManager::onEventItem( Entity::PlayerPtr pPlayer, uin pPlayer->eventStart( targetId, eventId, Event::Event::Item, 0, 0 ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, uint32_t, uint32_t, uint64_t ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, uint32_t, Entity::Player&, + uint32_t, uint32_t, uint64_t ) > >( eventName ); fn( obj, eventId, *pPlayer, eventItemId, castTime, targetId ); } catch( std::exception& e ) @@ -384,7 +397,8 @@ bool Core::Scripting::ScriptManager::onCastFinish( Entity::PlayerPtr pPlayer, En std::string objName = "skillDef_" + std::to_string( actionId ); pPlayer->sendDebug( "Calling: " + objName + "." + eventName ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Player&, Entity::Actor& ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Player&, + Entity::Actor& ) > >( eventName ); fn( obj, *pPlayer, *pTarget ); } catch( std::exception& e ) @@ -431,7 +445,8 @@ bool Core::Scripting::ScriptManager::onStatusTick( Entity::ActorPtr pActor, Core if( pActor->isPlayer() ) pActor->getAsPlayer()->sendDebug( "Calling: " + objName + "." + eventName ); - auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Actor&, Core::StatusEffect::StatusEffect& ) > >( eventName ); + auto fn = m_pChaiHandler->eval< std::function< void( chaiscript::Boxed_Value &, Entity::Actor&, + Core::StatusEffect::StatusEffect& ) > >( eventName ); fn( obj, *pActor, effect ); } catch( std::exception& e ) diff --git a/src/servers/Server_Zone/Script/ScriptManagerInit.cpp b/src/servers/Server_Zone/Script/ScriptManagerInit.cpp index 06d290cb..71b891cc 100644 --- a/src/servers/Server_Zone/Script/ScriptManagerInit.cpp +++ b/src/servers/Server_Zone/Script/ScriptManagerInit.cpp @@ -1,8 +1,11 @@ #include +#include #include #include +#include "src/servers/Server_Zone/ServerZone.h" + #include "src/servers/Server_Zone/Script/ScriptManager.h" #include "src/servers/Server_Zone/Zone/Zone.h" @@ -17,6 +20,7 @@ #include extern Core::Logger g_log; +extern Core::ServerZone g_serverZone; int Core::Scripting::ScriptManager::init() { @@ -169,8 +173,7 @@ int Core::Scripting::ScriptManager::init() std::set< std::string > chaiFiles; - g_log.info( "ScriptEngine: Loading Scripts..." ); - loadDir( "../scripts/chai", chaiFiles ); + loadDir( g_serverZone.getConfig()->getValue< std::string >( "Settings.General.ScriptPath", "../scripts/chai" ), chaiFiles ); uint16_t scriptCount = 0; uint16_t errorCount = 0; diff --git a/src/servers/Server_Zone/ServerZone.cpp b/src/servers/Server_Zone/ServerZone.cpp index d87b711b..67a47dd9 100644 --- a/src/servers/Server_Zone/ServerZone.cpp +++ b/src/servers/Server_Zone/ServerZone.cpp @@ -129,6 +129,10 @@ bool Core::ServerZone::loadSettings( int32_t argc, char* argv[] ) { m_pConfig->setValue< std::string >( "Settings.General.DataPath", val ); } + else if( arg == "s" || arg == "scriptpath" ) + { + m_pConfig->setValue< std::string >( "Settings.General.ScriptPath", val ); + } else if( arg == "h" || arg == "dbhost" ) { m_pConfig->setValue< std::string >( "Settings.General.Mysql.Host", val ); @@ -288,7 +292,7 @@ void Core::ServerZone::mainLoop() auto pPlayer = it->second->getPlayer(); // remove session of players marked for removel ( logoff / kick ) - if( pPlayer->isMarkedForRemoval() && diff > 1 ) + if( pPlayer->isMarkedForRemoval() && diff > 5 ) { it->second->close(); // if( it->second.unique() ) diff --git a/src/servers/Server_Zone/Zone/Zone.cpp b/src/servers/Server_Zone/Zone/Zone.cpp index 7f905e15..c6de4ad5 100644 --- a/src/servers/Server_Zone/Zone/Zone.cpp +++ b/src/servers/Server_Zone/Zone/Zone.cpp @@ -46,7 +46,7 @@ Zone::Zone() , m_layoutId( 0 ) , m_bPrivate( false ) , m_type( Common::RegionType::normal ) - , m_currentWeather( static_cast( Common::Weather::FairSkies ) ) + , m_currentWeather( static_cast< uint8_t >( Common::Weather::FairSkies ) ) , m_weatherOverride( 0 ) , m_lastMobUpdate( 0 ) { @@ -54,7 +54,7 @@ Zone::Zone() Zone::Zone( uint16_t zoneId, uint32_t layoutId, std::string name, std::string interName, bool bPrivate = false ) : m_type( Common::RegionType::normal ) - , m_currentWeather( static_cast( Common::Weather::FairSkies ) ) + , m_currentWeather( static_cast< uint8_t >( Common::Weather::FairSkies ) ) { m_layoutId = layoutId; @@ -197,8 +197,8 @@ void Zone::loadCellCache() for( auto entry : cache ) { // get cell position - uint32_t cellX = CellHandler::getPosX( entry->getPos().x ); - uint32_t cellY = CellHandler::getPosY( entry->getPos().z ); + uint32_t cellX = CellHandler< ZoneMgr >::getPosX( entry->getPos().x ); + uint32_t cellY = CellHandler< ZoneMgr >::getPosY( entry->getPos().z ); // find the right cell, create it if not existing yet if( m_pCellCache[cellX] == nullptr ) @@ -314,7 +314,6 @@ void Zone::pushActor( Entity::ActorPtr pActor ) void Zone::removeActor( Entity::ActorPtr pActor ) { - if( pActor->m_pCell ) { pActor->m_pCell->removeActor( pActor ); diff --git a/src/servers/Server_Zone/Zone/ZoneMgr.cpp b/src/servers/Server_Zone/Zone/ZoneMgr.cpp index 4c4e0894..541955f3 100644 --- a/src/servers/Server_Zone/Zone/ZoneMgr.cpp +++ b/src/servers/Server_Zone/Zone/ZoneMgr.cpp @@ -14,13 +14,9 @@ extern Core::Data::ExdData g_exdData; namespace Core { - ZoneMgr::ZoneMgr() - { - } + ZoneMgr::ZoneMgr() = default; - ZoneMgr::~ZoneMgr() - { - } + ZoneMgr::~ZoneMgr() = default; void ZoneMgr::loadZonePositionMap() { diff --git a/src/tools/exd_struct_gen/ExdData.cpp.tmpl b/src/tools/exd_struct_gen/ExdData.cpp.tmpl index 30496879..f63e8ce0 100644 --- a/src/tools/exd_struct_gen/ExdData.cpp.tmpl +++ b/src/tools/exd_struct_gen/ExdData.cpp.tmpl @@ -20,6 +20,18 @@ xiv::exd::Exd Core::Data::ExdDataGenerated::setupDatAccess( const std::string& n return static_cast< xiv::exd::Exd >( cat.get_data_ln( lang ) ); }; + +void Core::Data::ExdDataGenerated::loadIdList( xiv::exd::Exd& data, std::set< uint32_t >& outIdList ) +{ + auto pDataRows = data.get_rows(); + + for( auto row : pDataRows ) + { + uint32_t id = row.first; + outIdList.insert( id ); + } +} + bool Core::Data::ExdDataGenerated::init( const std::string& path ) { try diff --git a/src/tools/exd_struct_gen/ExdData.h.tmpl b/src/tools/exd_struct_gen/ExdData.h.tmpl index c1758c2e..486d04a6 100644 --- a/src/tools/exd_struct_gen/ExdData.h.tmpl +++ b/src/tools/exd_struct_gen/ExdData.h.tmpl @@ -10,6 +10,7 @@ #include #include #include +#include namespace Core { namespace Data { @@ -36,6 +37,8 @@ STRUCTS return *boost::get< T >( &fields.at( index ) ); } + void loadIdList( xiv::exd::Exd& data, std::set< uint32_t >& outIdList ); + boost::shared_ptr< xiv::dat::GameData > m_data; boost::shared_ptr< xiv::exd::ExdData > m_exd_data; @@ -43,6 +46,10 @@ DATACCESS DIRECTGETTERS +IDLISTS + +IDLISTGETTERS + }; } diff --git a/src/tools/exd_struct_gen/ex.json b/src/tools/exd_struct_gen/ex.json index 51670dd1..e8707623 100644 --- a/src/tools/exd_struct_gen/ex.json +++ b/src/tools/exd_struct_gen/ex.json @@ -1,5 +1,5 @@ { - "version": "2017.10.05.0000.0000", + "version": "2017.11.15.0000.0000", "sheets": [ { "sheet": "Achievement", @@ -189,7 +189,7 @@ "index": 30, "name": "Cost{Type}" }, - { + { "index": 31, "name": "Cost" }, @@ -2868,7 +2868,7 @@ }, { "sheet": "DeepDungeonItem", - "defaultcolumn": "Name", + "defaultColumn": "Name", "definitions": [ { "name": "Icon", @@ -2877,7 +2877,7 @@ } }, { - "index": 2, + "index": 1, "name": "Singular" }, { @@ -3476,6 +3476,42 @@ } ] }, + { + "sheet": "EquipRaceCategory", + "definitions": [ + { + "name": "Hyur" + }, + { + "index": 1, + "name": "Elezen" + }, + { + "index": 2, + "name": "Lalafell" + }, + { + "index": 3, + "name": "Miqo'te" + }, + { + "index": 4, + "name": "Roegadyn" + }, + { + "index": 5, + "name": "Au Ra" + }, + { + "index": 6, + "name": "Male" + }, + { + "index": 7, + "name": "Female" + } + ] + }, { "sheet": "EquipSlotCategory", "definitions": [ @@ -4500,6 +4536,26 @@ } ] }, + { + "sheet": "GCScripShopCategory", + "definitions": [ + { + "name": "GrandCompany", + "converter": { + "type": "link", + "target": "GrandCompany" + } + }, + { + "index": 1, + "name": "Tier" + }, + { + "index": 2, + "name": "SubCategory" + } + ] + }, { "sheet": "GCScripShopItem", "defaultColumn": "Item", @@ -4513,11 +4569,19 @@ }, { "index": 1, - "name": "Required{Rank}" + "name": "Required{GrandCompanyRank}", + "converter": { + "type": "link", + "target": "GrandCompanyRank" + } }, { "index": 2, "name": "Cost{GCSeals}" + }, + { + "index": 3, + "name": "SortKey" } ] }, @@ -6211,6 +6275,26 @@ } ] }, + { + "sheet": "MasterpieceSupplyMultiplier", + "definitions": [ + { + "type": "repeat", + "count": 2, + "definition": { + "name": "XpMultiplier" + } + }, + { + "index": 4, + "type": "repeat", + "count": 2, + "definition": { + "name": "CurrencyMultiplier" + } + } + ] + }, { "sheet": "Materia", "defaultColumn": "Item[0]", @@ -7935,7 +8019,7 @@ ] }, { - "sheet": "Salvage", + "sheet": "Salvage", "defaultColumn": "OptimalSkill", "definitions": [ { diff --git a/src/tools/exd_struct_gen/main.cpp b/src/tools/exd_struct_gen/main.cpp index 507c7329..a1e51ccd 100644 --- a/src/tools/exd_struct_gen/main.cpp +++ b/src/tools/exd_struct_gen/main.cpp @@ -31,8 +31,8 @@ Core::Logger g_log; Core::Data::ExdData g_exdData; bool skipUnmapped = true; -const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); -//const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv" ); +//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); +const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv" ); std::map< uint8_t, std::string > g_typeMap; @@ -41,9 +41,25 @@ std::string generateDatAccessDecl( const std::string &exd ) return " xiv::exd::Exd m_" + exd + "Dat;\n"; } +std::string generateIdListDecl( const std::string &exd ) +{ + return " std::set< uint32_t > m_" + exd + "IdList;\n"; +} + std::string generateDirectGetters( const std::string& exd ) { - return " boost::shared_ptr< " + exd + " > get" + exd + "( uint32_t " + exd + "Id );"; + return " boost::shared_ptr< " + exd + " > get" + exd + "( uint32_t " + exd + "Id );\n"; +} + +std::string generateIdListGetter( const std::string &exd ) +{ + std::string IdListGetter = "const std::set< uint32_t >& get" + exd + "IdList()\n" + "{\n" + " if( m_" + exd + "IdList.size() == 0 )\n" + " loadIdList( m_" + exd + "Dat, m_" + exd + "IdList );\n" + " return m_" + exd + "IdList;\n" + "}\n"; + return IdListGetter; } std::string generateSetDatAccessCall( const std::string &exd ) @@ -288,14 +304,18 @@ int main() g_log.fatal( "Error setting up EXD data " ); return 0; } + g_log.info( "Generating structs, this may take several minutes..." ); + g_log.info( "Go grab a coffee..." ); std::string structDefs; + std::string idListsDecl; std::string dataDecl; std::string getterDecl; std::string datAccCall; std::string getterDef; std::string constructorDecl; std::string forwards; + std::string idListGetters; //BOOST_FOREACH( boost::property_tree::ptree::value_type &sheet, m_propTree.get_child( "sheets" ) ) //{ @@ -310,10 +330,12 @@ int main() forwards += "struct " + name +";\n"; structDefs += generateStruct( name ); dataDecl += generateDatAccessDecl( name ); + idListsDecl += generateIdListDecl( name ); getterDecl += generateDirectGetters( name ); datAccCall += generateSetDatAccessCall( name ); getterDef += generateDirectGetterDef( name ); constructorDecl += generateConstructorsDecl( name ); + idListGetters += generateIdListGetter( name ); } // for all sheets in the json i guess.... @@ -322,7 +344,10 @@ int main() result = std::regex_replace( exdH, std::regex( "\\FORWARDS" ), forwards ); result = std::regex_replace( result, std::regex( "\\STRUCTS" ), structDefs ); result = std::regex_replace( result, std::regex( "\\DATACCESS" ), dataDecl ); + result = std::regex_replace( result, std::regex( "\\IDLISTS" ), idListsDecl ); result = std::regex_replace( result, std::regex( "\\DIRECTGETTERS" ), getterDecl ); + result = std::regex_replace( result, std::regex( "\\IDLISTGETTERS" ), idListGetters ); + // g_log.info( result ); diff --git a/src/tools/exd_struct_test/ExdDataGenerated.cpp b/src/tools/exd_struct_test/ExdDataGenerated.cpp index 0cdfe81f..f8d711b8 100644 --- a/src/tools/exd_struct_test/ExdDataGenerated.cpp +++ b/src/tools/exd_struct_test/ExdDataGenerated.cpp @@ -16,6 +16,15 @@ item = exdData->getField< uint32_t >( row, 5 ); icon = exdData->getField< uint16_t >( row, 6 ); type = exdData->getField< uint8_t >( row, 8 ); + data.push_back( exdData->getField< int32_t >( row, 9 ) ); + data.push_back( exdData->getField< int32_t >( row, 10 ) ); + data.push_back( exdData->getField< int32_t >( row, 11 ) ); + data.push_back( exdData->getField< int32_t >( row, 12 ) ); + data.push_back( exdData->getField< int32_t >( row, 13 ) ); + data.push_back( exdData->getField< int32_t >( row, 14 ) ); + data.push_back( exdData->getField< int32_t >( row, 15 ) ); + data.push_back( exdData->getField< int32_t >( row, 16 ) ); + data.push_back( exdData->getField< int32_t >( row, 17 ) ); order = exdData->getField< uint16_t >( row, 18 ); } @@ -81,6 +90,10 @@ { auto row = exdData->m_ActionComboRouteDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); + action.push_back( exdData->getField< uint16_t >( row, 2 ) ); + action.push_back( exdData->getField< uint16_t >( row, 3 ) ); + action.push_back( exdData->getField< uint16_t >( row, 4 ) ); + action.push_back( exdData->getField< uint16_t >( row, 5 ) ); } Core::Data::ActionIndirection::ActionIndirection( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -214,6 +227,11 @@ auto row = exdData->m_AnimaWeapon5Dat.get_row( row_id ); item = exdData->getField< int32_t >( row, 0 ); secondaryStatTotal = exdData->getField< uint8_t >( row, 2 ); + parameter.push_back( exdData->getField< uint8_t >( row, 3 ) ); + parameter.push_back( exdData->getField< uint8_t >( row, 4 ) ); + parameter.push_back( exdData->getField< uint8_t >( row, 5 ) ); + parameter.push_back( exdData->getField< uint8_t >( row, 6 ) ); + parameter.push_back( exdData->getField< uint8_t >( row, 7 ) ); } Core::Data::AnimaWeapon5Param::AnimaWeapon5Param( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -276,6 +294,20 @@ Core::Data::AnimaWeaponItem::AnimaWeaponItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_AnimaWeaponItemDat.get_row( row_id ); + item.push_back( exdData->getField< uint32_t >( row, 0 ) ); + item.push_back( exdData->getField< uint32_t >( row, 1 ) ); + item.push_back( exdData->getField< uint32_t >( row, 2 ) ); + item.push_back( exdData->getField< uint32_t >( row, 3 ) ); + item.push_back( exdData->getField< uint32_t >( row, 4 ) ); + item.push_back( exdData->getField< uint32_t >( row, 5 ) ); + item.push_back( exdData->getField< uint32_t >( row, 6 ) ); + item.push_back( exdData->getField< uint32_t >( row, 7 ) ); + item.push_back( exdData->getField< uint32_t >( row, 8 ) ); + item.push_back( exdData->getField< uint32_t >( row, 9 ) ); + item.push_back( exdData->getField< uint32_t >( row, 10 ) ); + item.push_back( exdData->getField< uint32_t >( row, 11 ) ); + item.push_back( exdData->getField< uint32_t >( row, 12 ) ); + item.push_back( exdData->getField< uint32_t >( row, 13 ) ); } Core::Data::AquariumFish::AquariumFish( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -314,12 +346,60 @@ Core::Data::BattleLeve::BattleLeve( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_BattleLeveDat.get_row( row_id ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 16 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 17 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 18 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 19 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 20 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 21 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 22 ) ); + enemyLevel.push_back( exdData->getField< uint16_t >( row, 23 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 24 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 25 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 26 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 27 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 28 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 29 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 30 ) ); + bNpcName.push_back( exdData->getField< uint32_t >( row, 31 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 32 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 33 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 34 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 35 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 36 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 37 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 38 ) ); + itemsInvolved.push_back( exdData->getField< int32_t >( row, 39 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 40 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 41 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 42 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 43 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 44 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 45 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 46 ) ); + itemsInvolvedQty.push_back( exdData->getField< uint8_t >( row, 47 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 48 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 49 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 50 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 51 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 52 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 53 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 54 ) ); + itemDropRate.push_back( exdData->getField< uint8_t >( row, 55 ) ); } Core::Data::BeastRankBonus::BeastRankBonus( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_BeastRankBonusDat.get_row( row_id ); item = exdData->getField< uint32_t >( row, 8 ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 9 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 10 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 11 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 12 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 13 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 14 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 15 ) ); + itemQuantity.push_back( exdData->getField< uint8_t >( row, 16 ) ); } Core::Data::BeastReputationRank::BeastReputationRank( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -466,6 +546,70 @@ Core::Data::Calendar::Calendar( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CalendarDat.get_row( row_id ); + month.push_back( exdData->getField< uint8_t >( row, 0 ) ); + month.push_back( exdData->getField< uint8_t >( row, 1 ) ); + month.push_back( exdData->getField< uint8_t >( row, 2 ) ); + month.push_back( exdData->getField< uint8_t >( row, 3 ) ); + month.push_back( exdData->getField< uint8_t >( row, 4 ) ); + month.push_back( exdData->getField< uint8_t >( row, 5 ) ); + month.push_back( exdData->getField< uint8_t >( row, 6 ) ); + month.push_back( exdData->getField< uint8_t >( row, 7 ) ); + month.push_back( exdData->getField< uint8_t >( row, 8 ) ); + month.push_back( exdData->getField< uint8_t >( row, 9 ) ); + month.push_back( exdData->getField< uint8_t >( row, 10 ) ); + month.push_back( exdData->getField< uint8_t >( row, 11 ) ); + month.push_back( exdData->getField< uint8_t >( row, 12 ) ); + month.push_back( exdData->getField< uint8_t >( row, 13 ) ); + month.push_back( exdData->getField< uint8_t >( row, 14 ) ); + month.push_back( exdData->getField< uint8_t >( row, 15 ) ); + month.push_back( exdData->getField< uint8_t >( row, 16 ) ); + month.push_back( exdData->getField< uint8_t >( row, 17 ) ); + month.push_back( exdData->getField< uint8_t >( row, 18 ) ); + month.push_back( exdData->getField< uint8_t >( row, 19 ) ); + month.push_back( exdData->getField< uint8_t >( row, 20 ) ); + month.push_back( exdData->getField< uint8_t >( row, 21 ) ); + month.push_back( exdData->getField< uint8_t >( row, 22 ) ); + month.push_back( exdData->getField< uint8_t >( row, 23 ) ); + month.push_back( exdData->getField< uint8_t >( row, 24 ) ); + month.push_back( exdData->getField< uint8_t >( row, 25 ) ); + month.push_back( exdData->getField< uint8_t >( row, 26 ) ); + month.push_back( exdData->getField< uint8_t >( row, 27 ) ); + month.push_back( exdData->getField< uint8_t >( row, 28 ) ); + month.push_back( exdData->getField< uint8_t >( row, 29 ) ); + month.push_back( exdData->getField< uint8_t >( row, 30 ) ); + month.push_back( exdData->getField< uint8_t >( row, 31 ) ); + day.push_back( exdData->getField< uint8_t >( row, 32 ) ); + day.push_back( exdData->getField< uint8_t >( row, 33 ) ); + day.push_back( exdData->getField< uint8_t >( row, 34 ) ); + day.push_back( exdData->getField< uint8_t >( row, 35 ) ); + day.push_back( exdData->getField< uint8_t >( row, 36 ) ); + day.push_back( exdData->getField< uint8_t >( row, 37 ) ); + day.push_back( exdData->getField< uint8_t >( row, 38 ) ); + day.push_back( exdData->getField< uint8_t >( row, 39 ) ); + day.push_back( exdData->getField< uint8_t >( row, 40 ) ); + day.push_back( exdData->getField< uint8_t >( row, 41 ) ); + day.push_back( exdData->getField< uint8_t >( row, 42 ) ); + day.push_back( exdData->getField< uint8_t >( row, 43 ) ); + day.push_back( exdData->getField< uint8_t >( row, 44 ) ); + day.push_back( exdData->getField< uint8_t >( row, 45 ) ); + day.push_back( exdData->getField< uint8_t >( row, 46 ) ); + day.push_back( exdData->getField< uint8_t >( row, 47 ) ); + day.push_back( exdData->getField< uint8_t >( row, 48 ) ); + day.push_back( exdData->getField< uint8_t >( row, 49 ) ); + day.push_back( exdData->getField< uint8_t >( row, 50 ) ); + day.push_back( exdData->getField< uint8_t >( row, 51 ) ); + day.push_back( exdData->getField< uint8_t >( row, 52 ) ); + day.push_back( exdData->getField< uint8_t >( row, 53 ) ); + day.push_back( exdData->getField< uint8_t >( row, 54 ) ); + day.push_back( exdData->getField< uint8_t >( row, 55 ) ); + day.push_back( exdData->getField< uint8_t >( row, 56 ) ); + day.push_back( exdData->getField< uint8_t >( row, 57 ) ); + day.push_back( exdData->getField< uint8_t >( row, 58 ) ); + day.push_back( exdData->getField< uint8_t >( row, 59 ) ); + day.push_back( exdData->getField< uint8_t >( row, 60 ) ); + day.push_back( exdData->getField< uint8_t >( row, 61 ) ); + day.push_back( exdData->getField< uint8_t >( row, 62 ) ); + day.push_back( exdData->getField< uint8_t >( row, 63 ) ); } Core::Data::ChainBonus::ChainBonus( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -488,6 +632,48 @@ race = exdData->getField< int32_t >( row, 0 ); tribe = exdData->getField< int32_t >( row, 1 ); gender = exdData->getField< int8_t >( row, 2 ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2283 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2284 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2285 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2286 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2287 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2288 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2289 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2290 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2291 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2292 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2293 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2294 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2295 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2296 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2297 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2298 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2299 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2300 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2301 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2302 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2303 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2304 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2305 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2306 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2307 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2308 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2309 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2310 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2311 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2312 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2313 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2314 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2315 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2316 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2317 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2318 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2319 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2320 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2321 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2322 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2323 ) ); + facialFeatureIcon.push_back( exdData->getField< int32_t >( row, 2324 ) ); } Core::Data::ChocoboRace::ChocoboRace( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -688,6 +874,9 @@ { auto row = exdData->m_CompanyCraftPartDat.get_row( row_id ); companyCraftType = exdData->getField< uint8_t >( row, 1 ); + companyCraftProcess.push_back( exdData->getField< uint16_t >( row, 2 ) ); + companyCraftProcess.push_back( exdData->getField< uint16_t >( row, 3 ) ); + companyCraftProcess.push_back( exdData->getField< uint16_t >( row, 4 ) ); } Core::Data::CompanyCraftProcess::CompanyCraftProcess( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -702,6 +891,14 @@ companyCraftDraftCategory = exdData->getField< int32_t >( row, 2 ); companyCraftType = exdData->getField< int32_t >( row, 3 ); companyCraftDraft = exdData->getField< int32_t >( row, 4 ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 5 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 6 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 7 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 8 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 9 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 10 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 11 ) ); + companyCraftPart.push_back( exdData->getField< uint16_t >( row, 12 ) ); } Core::Data::CompanyCraftSupplyItem::CompanyCraftSupplyItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -720,6 +917,30 @@ { auto row = exdData->m_CompleteJournalDat.get_row( row_id ); name = exdData->getField< std::string >( row, 5 ); + cutscene.push_back( exdData->getField< int32_t >( row, 6 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 7 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 8 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 9 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 10 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 11 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 12 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 13 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 14 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 15 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 16 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 17 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 18 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 19 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 20 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 21 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 22 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 23 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 24 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 25 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 26 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 27 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 28 ) ); + cutscene.push_back( exdData->getField< int32_t >( row, 29 ) ); } Core::Data::CompleteJournalCategory::CompleteJournalCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -835,6 +1056,66 @@ iconActor = exdData->getField< uint32_t >( row, 0 ); iconMap = exdData->getField< uint32_t >( row, 1 ); name = exdData->getField< std::string >( row, 2 ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 3 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 4 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 5 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 6 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 7 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 8 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 9 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 10 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 11 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 12 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 13 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 14 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 15 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 16 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 17 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 18 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 19 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 20 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 21 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 22 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 23 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 24 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 25 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 26 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 27 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 28 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 29 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 30 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 31 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 32 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 33 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 34 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 35 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 36 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 37 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 38 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 39 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 40 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 41 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 42 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 43 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 44 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 45 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 46 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 47 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 48 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 49 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 50 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 51 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 52 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 53 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 54 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 55 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 56 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 57 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 58 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 59 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 60 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 61 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 62 ) ); text = exdData->getField< bool >( row, 66 ); } @@ -893,7 +1174,7 @@ { auto row = exdData->m_DeepDungeonItemDat.get_row( row_id ); icon = exdData->getField< uint32_t >( row, 0 ); - singular = exdData->getField< int8_t >( row, 2 ); + singular = exdData->getField< std::string >( row, 1 ); plural = exdData->getField< std::string >( row, 3 ); name = exdData->getField< std::string >( row, 9 ); tooltip = exdData->getField< std::string >( row, 10 ); @@ -911,6 +1192,12 @@ Core::Data::DefaultTalk::DefaultTalk( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_DefaultTalkDat.get_row( row_id ); + actionTimelinePose.push_back( exdData->getField< uint16_t >( row, 5 ) ); + actionTimelinePose.push_back( exdData->getField< uint16_t >( row, 6 ) ); + actionTimelinePose.push_back( exdData->getField< uint16_t >( row, 7 ) ); + text.push_back( exdData->getField< std::string >( row, 20 ) ); + text.push_back( exdData->getField< std::string >( row, 21 ) ); + text.push_back( exdData->getField< std::string >( row, 22 ) ); } Core::Data::DeliveryQuest::DeliveryQuest( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -954,6 +1241,31 @@ { auto row = exdData->m_DpsChallengeOfficerDat.get_row( row_id ); unlockQuest = exdData->getField< uint32_t >( row, 0 ); + challengeName.push_back( exdData->getField< uint16_t >( row, 1 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 2 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 3 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 4 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 5 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 6 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 7 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 8 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 9 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 10 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 11 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 12 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 13 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 14 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 15 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 16 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 17 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 18 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 19 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 20 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 21 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 22 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 23 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 24 ) ); + challengeName.push_back( exdData->getField< uint16_t >( row, 25 ) ); } Core::Data::DpsChallengeTransient::DpsChallengeTransient( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -982,6 +1294,38 @@ Core::Data::ENpcBase::ENpcBase( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ENpcBaseDat.get_row( row_id ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 2 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 3 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 4 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 5 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 6 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 7 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 8 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 9 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 10 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 11 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 12 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 13 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 14 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 15 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 16 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 17 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 18 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 19 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 20 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 21 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 22 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 23 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 24 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 25 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 26 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 27 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 28 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 29 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 30 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 31 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 32 ) ); + eNpcData.push_back( exdData->getField< uint32_t >( row, 33 ) ); race = exdData->getField< uint8_t >( row, 36 ); gender = exdData->getField< uint8_t >( row, 37 ); bodyType = exdData->getField< uint8_t >( row, 38 ); @@ -1053,6 +1397,19 @@ data = exdData->getField< uint32_t >( row, 9 ); } + Core::Data::EquipRaceCategory::EquipRaceCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) + { + auto row = exdData->m_EquipRaceCategoryDat.get_row( row_id ); + hyur = exdData->getField< bool >( row, 0 ); + elezen = exdData->getField< bool >( row, 1 ); + lalafell = exdData->getField< bool >( row, 2 ); + miqote = exdData->getField< bool >( row, 3 ); + roegadyn = exdData->getField< bool >( row, 4 ); + auRa = exdData->getField< bool >( row, 5 ); + male = exdData->getField< bool >( row, 6 ); + female = exdData->getField< bool >( row, 7 ); + } + Core::Data::EquipSlotCategory::EquipSlotCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_EquipSlotCategoryDat.get_row( row_id ); @@ -1082,6 +1439,22 @@ Core::Data::EventIconPriority::EventIconPriority( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_EventIconPriorityDat.get_row( row_id ); + icon.push_back( exdData->getField< uint32_t >( row, 0 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 1 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 2 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 3 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 4 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 5 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 6 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 7 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 8 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 9 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 10 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 11 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 12 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 13 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 14 ) ); + icon.push_back( exdData->getField< uint32_t >( row, 15 ) ); } Core::Data::EventIconType::EventIconType( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1129,6 +1502,9 @@ name = exdData->getField< std::string >( row, 26 ); description = exdData->getField< std::string >( row, 27 ); objective = exdData->getField< std::string >( row, 28 ); + statusText.push_back( exdData->getField< std::string >( row, 29 ) ); + statusText.push_back( exdData->getField< std::string >( row, 30 ) ); + statusText.push_back( exdData->getField< std::string >( row, 31 ) ); } Core::Data::FCActivity::FCActivity( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1196,6 +1572,16 @@ x = exdData->getField< int16_t >( row, 6 ); z = exdData->getField< int16_t >( row, 7 ); radius = exdData->getField< uint16_t >( row, 8 ); + item.push_back( exdData->getField< int32_t >( row, 10 ) ); + item.push_back( exdData->getField< int32_t >( row, 11 ) ); + item.push_back( exdData->getField< int32_t >( row, 12 ) ); + item.push_back( exdData->getField< int32_t >( row, 13 ) ); + item.push_back( exdData->getField< int32_t >( row, 14 ) ); + item.push_back( exdData->getField< int32_t >( row, 15 ) ); + item.push_back( exdData->getField< int32_t >( row, 16 ) ); + item.push_back( exdData->getField< int32_t >( row, 17 ) ); + item.push_back( exdData->getField< int32_t >( row, 18 ) ); + item.push_back( exdData->getField< int32_t >( row, 19 ) ); placeName = exdData->getField< uint16_t >( row, 20 ); } @@ -1253,12 +1639,114 @@ Core::Data::GatheringNotebookList::GatheringNotebookList( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GatheringNotebookListDat.get_row( row_id ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 1 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 2 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 3 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 4 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 5 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 6 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 7 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 8 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 9 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 10 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 11 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 12 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 13 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 14 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 15 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 16 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 17 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 18 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 19 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 20 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 21 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 22 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 23 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 24 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 25 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 26 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 27 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 28 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 29 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 30 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 31 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 32 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 33 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 34 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 35 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 36 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 37 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 38 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 39 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 40 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 41 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 42 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 43 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 44 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 45 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 46 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 47 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 48 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 49 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 50 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 51 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 52 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 53 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 54 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 55 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 56 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 57 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 58 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 59 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 60 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 61 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 62 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 63 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 64 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 65 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 66 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 67 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 68 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 69 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 70 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 71 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 72 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 73 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 74 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 75 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 76 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 77 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 78 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 79 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 80 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 81 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 82 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 83 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 84 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 85 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 86 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 87 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 88 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 89 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 90 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 91 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 92 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 93 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 94 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 95 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 96 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 97 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 98 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 99 ) ); + gatheringItem.push_back( exdData->getField< int32_t >( row, 100 ) ); } Core::Data::GatheringPoint::GatheringPoint( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GatheringPointDat.get_row( row_id ); gatheringPointBase = exdData->getField< int32_t >( row, 1 ); + gatheringPointBonus.push_back( exdData->getField< uint16_t >( row, 3 ) ); + gatheringPointBonus.push_back( exdData->getField< uint16_t >( row, 4 ) ); territoryType = exdData->getField< uint16_t >( row, 5 ); placeName = exdData->getField< uint16_t >( row, 6 ); gatheringSubCategory = exdData->getField< uint16_t >( row, 7 ); @@ -1269,6 +1757,14 @@ auto row = exdData->m_GatheringPointBaseDat.get_row( row_id ); gatheringType = exdData->getField< int32_t >( row, 0 ); gatheringLevel = exdData->getField< uint8_t >( row, 1 ); + item.push_back( exdData->getField< int32_t >( row, 2 ) ); + item.push_back( exdData->getField< int32_t >( row, 3 ) ); + item.push_back( exdData->getField< int32_t >( row, 4 ) ); + item.push_back( exdData->getField< int32_t >( row, 5 ) ); + item.push_back( exdData->getField< int32_t >( row, 6 ) ); + item.push_back( exdData->getField< int32_t >( row, 7 ) ); + item.push_back( exdData->getField< int32_t >( row, 8 ) ); + item.push_back( exdData->getField< int32_t >( row, 9 ) ); isLimited = exdData->getField< bool >( row, 10 ); } @@ -1354,12 +1850,21 @@ description = exdData->getField< std::string >( row, 5 ); } + Core::Data::GCScripShopCategory::GCScripShopCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) + { + auto row = exdData->m_GCScripShopCategoryDat.get_row( row_id ); + grandCompany = exdData->getField< int8_t >( row, 0 ); + tier = exdData->getField< int8_t >( row, 1 ); + subCategory = exdData->getField< int8_t >( row, 2 ); + } + Core::Data::GCScripShopItem::GCScripShopItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GCScripShopItemDat.get_row( row_id ); item = exdData->getField< int32_t >( row, 0 ); - requiredRank = exdData->getField< int32_t >( row, 1 ); + requiredGrandCompanyRank = exdData->getField< int32_t >( row, 1 ); costGCSeals = exdData->getField< uint32_t >( row, 2 ); + sortKey = exdData->getField< uint8_t >( row, 3 ); } Core::Data::GCShop::GCShop( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1447,6 +1952,8 @@ Core::Data::GuildleveAssignment::GuildleveAssignment( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GuildleveAssignmentDat.get_row( row_id ); + quest.push_back( exdData->getField< uint32_t >( row, 2 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 3 ) ); } Core::Data::GuildOrderGuide::GuildOrderGuide( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1599,6 +2106,24 @@ { auto row = exdData->m_ItemActionDat.get_row( row_id ); type = exdData->getField< uint16_t >( row, 4 ); + data.push_back( exdData->getField< uint16_t >( row, 5 ) ); + data.push_back( exdData->getField< uint16_t >( row, 6 ) ); + data.push_back( exdData->getField< uint16_t >( row, 7 ) ); + data.push_back( exdData->getField< uint16_t >( row, 8 ) ); + data.push_back( exdData->getField< uint16_t >( row, 9 ) ); + data.push_back( exdData->getField< uint16_t >( row, 10 ) ); + data.push_back( exdData->getField< uint16_t >( row, 11 ) ); + data.push_back( exdData->getField< uint16_t >( row, 12 ) ); + data.push_back( exdData->getField< uint16_t >( row, 13 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 14 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 15 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 16 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 17 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 18 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 19 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 20 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 21 ) ); + dataHQ.push_back( exdData->getField< uint16_t >( row, 22 ) ); } Core::Data::ItemFood::ItemFood( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1831,10 +2356,39 @@ rewardCurrency = exdData->getField< uint16_t >( row, 2 ); } + Core::Data::MasterpieceSupplyMultiplier::MasterpieceSupplyMultiplier( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) + { + auto row = exdData->m_MasterpieceSupplyMultiplierDat.get_row( row_id ); + xpMultiplier.push_back( exdData->getField< uint16_t >( row, 0 ) ); + xpMultiplier.push_back( exdData->getField< uint16_t >( row, 1 ) ); + currencyMultiplier.push_back( exdData->getField< uint16_t >( row, 4 ) ); + currencyMultiplier.push_back( exdData->getField< uint16_t >( row, 5 ) ); + } + Core::Data::Materia::Materia( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MateriaDat.get_row( row_id ); + item.push_back( exdData->getField< int32_t >( row, 0 ) ); + item.push_back( exdData->getField< int32_t >( row, 1 ) ); + item.push_back( exdData->getField< int32_t >( row, 2 ) ); + item.push_back( exdData->getField< int32_t >( row, 3 ) ); + item.push_back( exdData->getField< int32_t >( row, 4 ) ); + item.push_back( exdData->getField< int32_t >( row, 5 ) ); + item.push_back( exdData->getField< int32_t >( row, 6 ) ); + item.push_back( exdData->getField< int32_t >( row, 7 ) ); + item.push_back( exdData->getField< int32_t >( row, 8 ) ); + item.push_back( exdData->getField< int32_t >( row, 9 ) ); baseParam = exdData->getField< uint8_t >( row, 10 ); + value.push_back( exdData->getField< uint8_t >( row, 11 ) ); + value.push_back( exdData->getField< uint8_t >( row, 12 ) ); + value.push_back( exdData->getField< uint8_t >( row, 13 ) ); + value.push_back( exdData->getField< uint8_t >( row, 14 ) ); + value.push_back( exdData->getField< uint8_t >( row, 15 ) ); + value.push_back( exdData->getField< uint8_t >( row, 16 ) ); + value.push_back( exdData->getField< uint8_t >( row, 17 ) ); + value.push_back( exdData->getField< uint8_t >( row, 18 ) ); + value.push_back( exdData->getField< uint8_t >( row, 19 ) ); + value.push_back( exdData->getField< uint8_t >( row, 20 ) ); } Core::Data::MinionRace::MinionRace( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -1878,6 +2432,14 @@ Core::Data::MonsterNote::MonsterNote( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MonsterNoteDat.get_row( row_id ); + monsterNoteTarget.push_back( exdData->getField< uint16_t >( row, 0 ) ); + monsterNoteTarget.push_back( exdData->getField< uint16_t >( row, 1 ) ); + monsterNoteTarget.push_back( exdData->getField< uint16_t >( row, 2 ) ); + monsterNoteTarget.push_back( exdData->getField< uint16_t >( row, 3 ) ); + count.push_back( exdData->getField< uint8_t >( row, 4 ) ); + count.push_back( exdData->getField< uint8_t >( row, 5 ) ); + count.push_back( exdData->getField< uint8_t >( row, 6 ) ); + count.push_back( exdData->getField< uint8_t >( row, 7 ) ); reward = exdData->getField< uint32_t >( row, 8 ); name = exdData->getField< std::string >( row, 9 ); } @@ -1903,6 +2465,12 @@ Core::Data::MountAction::MountAction( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MountActionDat.get_row( row_id ); + action.push_back( exdData->getField< uint16_t >( row, 0 ) ); + action.push_back( exdData->getField< uint16_t >( row, 1 ) ); + action.push_back( exdData->getField< uint16_t >( row, 2 ) ); + action.push_back( exdData->getField< uint16_t >( row, 3 ) ); + action.push_back( exdData->getField< uint16_t >( row, 4 ) ); + action.push_back( exdData->getField< uint16_t >( row, 5 ) ); } Core::Data::NpcEquip::NpcEquip( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2020,10 +2588,15 @@ previousQuest1 = exdData->getField< uint32_t >( row, 12 ); previousQuest2 = exdData->getField< uint32_t >( row, 13 ); questLockJoin = exdData->getField< uint8_t >( row, 14 ); + questLock.push_back( exdData->getField< uint32_t >( row, 15 ) ); + questLock.push_back( exdData->getField< uint32_t >( row, 16 ) ); classJobUnlock = exdData->getField< uint8_t >( row, 20 ); grandCompany = exdData->getField< uint8_t >( row, 21 ); grandCompanyRank = exdData->getField< uint8_t >( row, 22 ); instanceContentJoin = exdData->getField< uint8_t >( row, 23 ); + instanceContent.push_back( exdData->getField< uint32_t >( row, 24 ) ); + instanceContent.push_back( exdData->getField< uint32_t >( row, 25 ) ); + instanceContent.push_back( exdData->getField< uint32_t >( row, 26 ) ); bellStart = exdData->getField< uint16_t >( row, 30 ); bellEnd = exdData->getField< uint16_t >( row, 31 ); beastTribe = exdData->getField< uint8_t >( row, 32 ); @@ -2034,13 +2607,330 @@ eNpcResidentEnd = exdData->getField< uint32_t >( row, 42 ); isRepeatable = exdData->getField< bool >( row, 43 ); repeatIntervalType = exdData->getField< uint8_t >( row, 44 ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 49 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 50 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 51 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 52 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 53 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 54 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 55 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 56 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 57 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 58 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 59 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 60 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 61 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 62 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 63 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 64 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 65 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 66 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 67 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 68 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 69 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 70 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 71 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 72 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 73 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 74 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 75 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 76 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 77 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 78 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 79 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 80 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 81 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 82 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 83 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 84 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 85 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 86 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 87 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 88 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 89 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 90 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 91 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 92 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 93 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 94 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 95 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 96 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 97 ) ); + scriptInstruction.push_back( exdData->getField< std::string >( row, 98 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 99 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 100 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 101 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 102 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 103 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 104 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 105 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 106 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 107 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 108 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 109 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 110 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 111 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 112 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 113 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 114 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 115 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 116 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 117 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 118 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 119 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 120 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 121 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 122 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 123 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 124 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 125 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 126 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 127 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 128 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 129 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 130 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 131 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 132 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 133 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 134 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 135 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 136 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 137 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 138 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 139 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 140 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 141 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 142 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 143 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 144 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 145 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 146 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 147 ) ); + scriptArg.push_back( exdData->getField< uint32_t >( row, 148 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1221 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1222 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1223 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1224 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1225 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1226 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1227 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1228 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1229 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1230 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1231 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1232 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1233 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1234 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1235 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1236 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1237 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1238 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1239 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1240 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1241 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1242 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1243 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1244 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1245 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1246 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1247 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1248 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1249 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1250 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1251 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1252 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1253 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1254 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1255 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1256 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1257 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1258 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1259 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1260 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1261 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1262 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1263 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1264 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1265 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1266 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1267 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1268 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1269 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1270 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1271 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1272 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1273 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1274 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1275 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1276 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1277 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1278 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1279 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1280 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1281 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1282 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1283 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1284 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1285 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1286 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1287 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1288 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1289 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1290 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1291 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1292 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1293 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1294 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1295 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1296 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1297 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1298 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1299 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1300 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1301 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1302 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1303 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1304 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1305 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1306 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1307 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1308 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1309 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1310 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1311 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1312 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1313 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1314 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1315 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1316 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1317 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1318 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1319 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1320 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1321 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1322 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1323 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1324 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1325 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1326 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1327 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1328 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1329 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1330 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1331 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1332 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1333 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1334 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1335 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1336 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1337 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1338 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1339 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1340 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1341 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1342 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1343 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1344 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1345 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1346 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1347 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1348 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1349 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1350 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1351 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1352 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1353 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1354 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1355 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1356 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1357 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1358 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1359 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1360 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1361 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1362 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1363 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1364 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1365 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1366 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1367 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1368 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1369 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1370 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1371 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1372 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1373 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1374 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1375 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1376 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1377 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1378 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1379 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1380 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1381 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1382 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1383 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1384 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1385 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1386 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1387 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1388 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1389 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1390 ) ); + level.push_back( exdData->getField< uint32_t >( row, 1391 ) ); classJobRequired = exdData->getField< uint8_t >( row, 1437 ); expFactor = exdData->getField< uint16_t >( row, 1439 ); gilReward = exdData->getField< uint32_t >( row, 1440 ); gCSeals = exdData->getField< uint16_t >( row, 1442 ); + itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1443 ) ); + itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1444 ) ); + itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1445 ) ); + itemCountCatalyst.push_back( exdData->getField< uint8_t >( row, 1446 ) ); + itemCountCatalyst.push_back( exdData->getField< uint8_t >( row, 1447 ) ); + itemCountCatalyst.push_back( exdData->getField< uint8_t >( row, 1448 ) ); itemRewardType = exdData->getField< uint8_t >( row, 1449 ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1450 ) ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1451 ) ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1452 ) ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1453 ) ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1454 ) ); + itemReward0.push_back( exdData->getField< uint32_t >( row, 1455 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1457 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1458 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1459 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1460 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1461 ) ); + itemCountReward0.push_back( exdData->getField< uint8_t >( row, 1462 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1464 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1465 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1466 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1467 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1468 ) ); + stainReward0.push_back( exdData->getField< uint8_t >( row, 1469 ) ); + itemReward1.push_back( exdData->getField< uint32_t >( row, 1471 ) ); + itemReward1.push_back( exdData->getField< uint32_t >( row, 1472 ) ); + itemReward1.push_back( exdData->getField< uint32_t >( row, 1473 ) ); + itemReward1.push_back( exdData->getField< uint32_t >( row, 1474 ) ); + itemReward1.push_back( exdData->getField< uint32_t >( row, 1475 ) ); + itemCountReward1.push_back( exdData->getField< uint8_t >( row, 1476 ) ); + itemCountReward1.push_back( exdData->getField< uint8_t >( row, 1477 ) ); + itemCountReward1.push_back( exdData->getField< uint8_t >( row, 1478 ) ); + itemCountReward1.push_back( exdData->getField< uint8_t >( row, 1479 ) ); + itemCountReward1.push_back( exdData->getField< uint8_t >( row, 1480 ) ); + isHQReward1.push_back( exdData->getField< bool >( row, 1481 ) ); + isHQReward1.push_back( exdData->getField< bool >( row, 1482 ) ); + isHQReward1.push_back( exdData->getField< bool >( row, 1483 ) ); + isHQReward1.push_back( exdData->getField< bool >( row, 1484 ) ); + isHQReward1.push_back( exdData->getField< bool >( row, 1485 ) ); + stainReward1.push_back( exdData->getField< uint8_t >( row, 1486 ) ); + stainReward1.push_back( exdData->getField< uint8_t >( row, 1487 ) ); + stainReward1.push_back( exdData->getField< uint8_t >( row, 1488 ) ); + stainReward1.push_back( exdData->getField< uint8_t >( row, 1489 ) ); + stainReward1.push_back( exdData->getField< uint8_t >( row, 1490 ) ); emoteReward = exdData->getField< uint8_t >( row, 1491 ); actionReward = exdData->getField< uint16_t >( row, 1492 ); + generalActionReward.push_back( exdData->getField< uint8_t >( row, 1493 ) ); + generalActionReward.push_back( exdData->getField< uint8_t >( row, 1494 ) ); otherReward = exdData->getField< uint8_t >( row, 1496 ); instanceContentUnlock = exdData->getField< uint32_t >( row, 1499 ); tomestoneReward = exdData->getField< uint8_t >( row, 1501 ); @@ -2080,6 +2970,8 @@ auto row = exdData->m_RacingChocoboItemDat.get_row( row_id ); item = exdData->getField< int32_t >( row, 0 ); category = exdData->getField< uint8_t >( row, 1 ); + param.push_back( exdData->getField< uint8_t >( row, 2 ) ); + param.push_back( exdData->getField< uint8_t >( row, 3 ) ); } Core::Data::RacingChocoboName::RacingChocoboName( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2150,6 +3042,166 @@ Core::Data::RecipeNotebookList::RecipeNotebookList( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_RecipeNotebookListDat.get_row( row_id ); + recipe.push_back( exdData->getField< int32_t >( row, 1 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 2 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 3 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 4 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 5 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 6 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 7 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 8 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 9 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 10 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 11 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 12 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 13 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 14 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 15 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 16 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 17 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 18 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 19 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 20 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 21 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 22 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 23 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 24 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 25 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 26 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 27 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 28 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 29 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 30 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 31 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 32 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 33 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 34 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 35 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 36 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 37 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 38 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 39 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 40 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 41 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 42 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 43 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 44 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 45 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 46 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 47 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 48 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 49 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 50 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 51 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 52 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 53 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 54 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 55 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 56 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 57 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 58 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 59 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 60 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 61 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 62 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 63 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 64 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 65 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 66 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 67 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 68 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 69 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 70 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 71 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 72 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 73 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 74 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 75 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 76 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 77 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 78 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 79 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 80 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 81 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 82 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 83 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 84 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 85 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 86 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 87 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 88 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 89 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 90 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 91 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 92 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 93 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 94 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 95 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 96 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 97 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 98 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 99 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 100 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 101 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 102 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 103 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 104 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 105 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 106 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 107 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 108 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 109 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 110 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 111 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 112 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 113 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 114 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 115 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 116 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 117 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 118 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 119 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 120 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 121 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 122 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 123 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 124 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 125 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 126 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 127 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 128 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 129 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 130 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 131 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 132 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 133 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 134 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 135 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 136 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 137 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 138 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 139 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 140 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 141 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 142 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 143 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 144 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 145 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 146 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 147 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 148 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 149 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 150 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 151 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 152 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 153 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 154 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 155 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 156 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 157 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 158 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 159 ) ); + recipe.push_back( exdData->getField< int32_t >( row, 160 ) ); } Core::Data::Relic::Relic( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2190,6 +3242,12 @@ { auto row = exdData->m_RelicNoteDat.get_row( row_id ); eventItem = exdData->getField< uint32_t >( row, 0 ); + monsterNoteTargetNM.push_back( exdData->getField< uint16_t >( row, 21 ) ); + monsterNoteTargetNM.push_back( exdData->getField< uint16_t >( row, 22 ) ); + monsterNoteTargetNM.push_back( exdData->getField< uint16_t >( row, 23 ) ); + leve.push_back( exdData->getField< uint16_t >( row, 31 ) ); + leve.push_back( exdData->getField< uint16_t >( row, 32 ) ); + leve.push_back( exdData->getField< uint16_t >( row, 33 ) ); } Core::Data::RelicNoteCategory::RelicNoteCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2225,6 +3283,12 @@ Core::Data::RetainerTaskParameter::RetainerTaskParameter( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_RetainerTaskParameterDat.get_row( row_id ); + itemLevelDoW.push_back( exdData->getField< int16_t >( row, 0 ) ); + itemLevelDoW.push_back( exdData->getField< int16_t >( row, 1 ) ); + gatheringDoL.push_back( exdData->getField< int16_t >( row, 2 ) ); + gatheringDoL.push_back( exdData->getField< int16_t >( row, 3 ) ); + gatheringFSH.push_back( exdData->getField< int16_t >( row, 4 ) ); + gatheringFSH.push_back( exdData->getField< int16_t >( row, 5 ) ); } Core::Data::RetainerTaskRandom::RetainerTaskRandom( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2246,6 +3310,18 @@ npc = exdData->getField< int32_t >( row, 0 ); questRequired = exdData->getField< int32_t >( row, 1 ); deliveriesPerWeek = exdData->getField< uint8_t >( row, 3 ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 4 ) ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 5 ) ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 6 ) ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 7 ) ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 8 ) ); + supplyIndex.push_back( exdData->getField< int32_t >( row, 9 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 10 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 11 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 12 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 13 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 14 ) ); + satisfactionRequired.push_back( exdData->getField< uint16_t >( row, 15 ) ); icon = exdData->getField< int32_t >( row, 70 ); } @@ -2311,6 +3387,66 @@ { auto row = exdData->m_SpecialShopDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); + questItem.push_back( exdData->getField< int32_t >( row, 1201 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1202 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1203 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1204 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1205 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1206 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1207 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1208 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1209 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1210 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1211 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1212 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1213 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1214 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1215 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1216 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1217 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1218 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1219 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1220 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1221 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1222 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1223 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1224 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1225 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1226 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1227 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1228 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1229 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1230 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1231 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1232 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1233 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1234 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1235 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1236 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1237 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1238 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1239 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1240 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1241 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1242 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1243 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1244 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1245 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1246 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1247 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1248 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1249 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1250 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1251 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1252 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1253 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1254 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1255 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1256 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1257 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1258 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1259 ) ); + questItem.push_back( exdData->getField< int32_t >( row, 1260 ) ); questShop = exdData->getField< int32_t >( row, 1863 ); } @@ -2354,6 +3490,37 @@ Core::Data::SwitchTalk::SwitchTalk( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_SwitchTalkDat.get_row( row_id ); + quest.push_back( exdData->getField< uint32_t >( row, 2 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 3 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 4 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 5 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 6 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 7 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 8 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 9 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 10 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 11 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 12 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 13 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 14 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 15 ) ); + quest.push_back( exdData->getField< uint32_t >( row, 16 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 17 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 18 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 19 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 20 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 21 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 22 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 23 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 24 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 25 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 26 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 27 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 28 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 29 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 30 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 31 ) ); + defaultTalk.push_back( exdData->getField< uint32_t >( row, 32 ) ); } Core::Data::TerritoryType::TerritoryType( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) @@ -2454,9 +3621,24 @@ Core::Data::TripleTriad::TripleTriad( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_TripleTriadDat.get_row( row_id ); + tripleTriadCardFixed.push_back( exdData->getField< uint16_t >( row, 0 ) ); + tripleTriadCardFixed.push_back( exdData->getField< uint16_t >( row, 1 ) ); + tripleTriadCardFixed.push_back( exdData->getField< uint16_t >( row, 2 ) ); + tripleTriadCardFixed.push_back( exdData->getField< uint16_t >( row, 3 ) ); + tripleTriadCardFixed.push_back( exdData->getField< uint16_t >( row, 4 ) ); + tripleTriadCardVariable.push_back( exdData->getField< uint16_t >( row, 5 ) ); + tripleTriadCardVariable.push_back( exdData->getField< uint16_t >( row, 6 ) ); + tripleTriadCardVariable.push_back( exdData->getField< uint16_t >( row, 7 ) ); + tripleTriadCardVariable.push_back( exdData->getField< uint16_t >( row, 8 ) ); + tripleTriadCardVariable.push_back( exdData->getField< uint16_t >( row, 9 ) ); + tripleTriadRule.push_back( exdData->getField< uint8_t >( row, 10 ) ); + tripleTriadRule.push_back( exdData->getField< uint8_t >( row, 11 ) ); usesRegionalRules = exdData->getField< bool >( row, 12 ); fee = exdData->getField< uint16_t >( row, 13 ); previousQuestJoin = exdData->getField< uint8_t >( row, 14 ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 15 ) ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 16 ) ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 17 ) ); startTime = exdData->getField< uint16_t >( row, 18 ); endTime = exdData->getField< uint16_t >( row, 19 ); defaultTalkChallenge = exdData->getField< uint32_t >( row, 20 ); @@ -2614,6 +3796,18 @@ xiv::exd::Exd Core::Data::ExdDataGenerated::setupDatAccess( const std::string& n return static_cast< xiv::exd::Exd >( cat.get_data_ln( lang ) ); }; + +void Core::Data::ExdDataGenerated::loadIdList( xiv::exd::Exd& data, std::set< uint32_t >& outIdList ) +{ + auto pDataRows = data.get_rows(); + + for( auto row : pDataRows ) + { + uint32_t id = row.first; + outIdList.insert( id ); + } +} + bool Core::Data::ExdDataGenerated::init( const std::string& path ) { try @@ -2621,7 +3815,297 @@ bool Core::Data::ExdDataGenerated::init( const std::string& path ) m_data = boost::make_shared< xiv::dat::GameData >( path ); m_exd_data = boost::make_shared< xiv::exd::ExdData >( *m_data ); - m_AchievementDat = setupDatAccess( "Achievement", xiv::exd::Language::en ); m_AchievementCategoryDat = setupDatAccess( "AchievementCategory", xiv::exd::Language::en ); m_AchievementKindDat = setupDatAccess( "AchievementKind", xiv::exd::Language::en ); m_ActionDat = setupDatAccess( "Action", xiv::exd::Language::en ); m_ActionCategoryDat = setupDatAccess( "ActionCategory", xiv::exd::Language::en ); m_ActionComboRouteDat = setupDatAccess( "ActionComboRoute", xiv::exd::Language::en ); m_ActionIndirectionDat = setupDatAccess( "ActionIndirection", xiv::exd::Language::none ); m_ActionProcStatusDat = setupDatAccess( "ActionProcStatus", xiv::exd::Language::none ); m_ActionTimelineDat = setupDatAccess( "ActionTimeline", xiv::exd::Language::none ); m_ActionTransientDat = setupDatAccess( "ActionTransient", xiv::exd::Language::en ); m_AddonDat = setupDatAccess( "Addon", xiv::exd::Language::en ); m_AdventureDat = setupDatAccess( "Adventure", xiv::exd::Language::en ); m_AdventureExPhaseDat = setupDatAccess( "AdventureExPhase", xiv::exd::Language::none ); m_AetherCurrentDat = setupDatAccess( "AetherCurrent", xiv::exd::Language::none ); m_AetherialWheelDat = setupDatAccess( "AetherialWheel", xiv::exd::Language::none ); m_AetheryteDat = setupDatAccess( "Aetheryte", xiv::exd::Language::en ); m_AirshipExplorationLevelDat = setupDatAccess( "AirshipExplorationLevel", xiv::exd::Language::none ); m_AirshipExplorationLogDat = setupDatAccess( "AirshipExplorationLog", xiv::exd::Language::en ); m_AirshipExplorationParamTypeDat = setupDatAccess( "AirshipExplorationParamType", xiv::exd::Language::en ); m_AirshipExplorationPartDat = setupDatAccess( "AirshipExplorationPart", xiv::exd::Language::none ); m_AirshipExplorationPointDat = setupDatAccess( "AirshipExplorationPoint", xiv::exd::Language::en ); m_AnimaWeapon5Dat = setupDatAccess( "AnimaWeapon5", xiv::exd::Language::none ); m_AnimaWeapon5ParamDat = setupDatAccess( "AnimaWeapon5Param", xiv::exd::Language::en ); m_AnimaWeapon5PatternGroupDat = setupDatAccess( "AnimaWeapon5PatternGroup", xiv::exd::Language::en ); m_AnimaWeapon5SpiritTalkDat = setupDatAccess( "AnimaWeapon5SpiritTalk", xiv::exd::Language::none ); m_AnimaWeapon5SpiritTalkParamDat = setupDatAccess( "AnimaWeapon5SpiritTalkParam", xiv::exd::Language::en ); m_AnimaWeapon5TradeItemDat = setupDatAccess( "AnimaWeapon5TradeItem", xiv::exd::Language::none ); m_AnimaWeaponFUITalkDat = setupDatAccess( "AnimaWeaponFUITalk", xiv::exd::Language::none ); m_AnimaWeaponFUITalkParamDat = setupDatAccess( "AnimaWeaponFUITalkParam", xiv::exd::Language::en ); m_AnimaWeaponIconDat = setupDatAccess( "AnimaWeaponIcon", xiv::exd::Language::none ); m_AnimaWeaponItemDat = setupDatAccess( "AnimaWeaponItem", xiv::exd::Language::none ); m_AquariumFishDat = setupDatAccess( "AquariumFish", xiv::exd::Language::none ); m_AquariumWaterDat = setupDatAccess( "AquariumWater", xiv::exd::Language::en ); m_AttackTypeDat = setupDatAccess( "AttackType", xiv::exd::Language::en ); m_BalloonDat = setupDatAccess( "Balloon", xiv::exd::Language::en ); m_BaseParamDat = setupDatAccess( "BaseParam", xiv::exd::Language::en ); m_BattleLeveDat = setupDatAccess( "BattleLeve", xiv::exd::Language::none ); m_BeastRankBonusDat = setupDatAccess( "BeastRankBonus", xiv::exd::Language::none ); m_BeastReputationRankDat = setupDatAccess( "BeastReputationRank", xiv::exd::Language::en ); m_BeastTribeDat = setupDatAccess( "BeastTribe", xiv::exd::Language::en ); m_BehaviorDat = setupDatAccess( "Behavior", xiv::exd::Language::none ); m_BGMDat = setupDatAccess( "BGM", xiv::exd::Language::none ); m_BNpcAnnounceIconDat = setupDatAccess( "BNpcAnnounceIcon", xiv::exd::Language::none ); m_BNpcBaseDat = setupDatAccess( "BNpcBase", xiv::exd::Language::none ); m_BNpcCustomizeDat = setupDatAccess( "BNpcCustomize", xiv::exd::Language::none ); m_BNpcNameDat = setupDatAccess( "BNpcName", xiv::exd::Language::en ); m_BuddyActionDat = setupDatAccess( "BuddyAction", xiv::exd::Language::en ); m_BuddyEquipDat = setupDatAccess( "BuddyEquip", xiv::exd::Language::en ); m_BuddyItemDat = setupDatAccess( "BuddyItem", xiv::exd::Language::none ); m_BuddyRankDat = setupDatAccess( "BuddyRank", xiv::exd::Language::none ); m_BuddySkillDat = setupDatAccess( "BuddySkill", xiv::exd::Language::none ); m_CabinetDat = setupDatAccess( "Cabinet", xiv::exd::Language::none ); m_CabinetCategoryDat = setupDatAccess( "CabinetCategory", xiv::exd::Language::none ); m_CalendarDat = setupDatAccess( "Calendar", xiv::exd::Language::none ); m_ChainBonusDat = setupDatAccess( "ChainBonus", xiv::exd::Language::none ); m_CharaMakeCustomizeDat = setupDatAccess( "CharaMakeCustomize", xiv::exd::Language::none ); m_CharaMakeTypeDat = setupDatAccess( "CharaMakeType", xiv::exd::Language::en ); m_ChocoboRaceDat = setupDatAccess( "ChocoboRace", xiv::exd::Language::none ); m_ChocoboRaceAbilityDat = setupDatAccess( "ChocoboRaceAbility", xiv::exd::Language::en ); m_ChocoboRaceAbilityTypeDat = setupDatAccess( "ChocoboRaceAbilityType", xiv::exd::Language::none ); m_ChocoboRaceItemDat = setupDatAccess( "ChocoboRaceItem", xiv::exd::Language::en ); m_ChocoboRaceRankDat = setupDatAccess( "ChocoboRaceRank", xiv::exd::Language::none ); m_ChocoboRaceStatusDat = setupDatAccess( "ChocoboRaceStatus", xiv::exd::Language::none ); m_ChocoboRaceTerritoryDat = setupDatAccess( "ChocoboRaceTerritory", xiv::exd::Language::none ); m_ChocoboTaxiStandDat = setupDatAccess( "ChocoboTaxiStand", xiv::exd::Language::en ); m_ClassJobDat = setupDatAccess( "ClassJob", xiv::exd::Language::en ); m_ClassJobCategoryDat = setupDatAccess( "ClassJobCategory", xiv::exd::Language::en ); m_CompanionDat = setupDatAccess( "Companion", xiv::exd::Language::en ); m_CompanionMoveDat = setupDatAccess( "CompanionMove", xiv::exd::Language::en ); m_CompanionTransientDat = setupDatAccess( "CompanionTransient", xiv::exd::Language::en ); m_CompanyActionDat = setupDatAccess( "CompanyAction", xiv::exd::Language::en ); m_CompanyCraftDraftDat = setupDatAccess( "CompanyCraftDraft", xiv::exd::Language::en ); m_CompanyCraftDraftCategoryDat = setupDatAccess( "CompanyCraftDraftCategory", xiv::exd::Language::en ); m_CompanyCraftManufactoryStateDat = setupDatAccess( "CompanyCraftManufactoryState", xiv::exd::Language::en ); m_CompanyCraftPartDat = setupDatAccess( "CompanyCraftPart", xiv::exd::Language::none ); m_CompanyCraftProcessDat = setupDatAccess( "CompanyCraftProcess", xiv::exd::Language::none ); m_CompanyCraftSequenceDat = setupDatAccess( "CompanyCraftSequence", xiv::exd::Language::none ); m_CompanyCraftSupplyItemDat = setupDatAccess( "CompanyCraftSupplyItem", xiv::exd::Language::none ); m_CompanyCraftTypeDat = setupDatAccess( "CompanyCraftType", xiv::exd::Language::en ); m_CompleteJournalDat = setupDatAccess( "CompleteJournal", xiv::exd::Language::en ); m_CompleteJournalCategoryDat = setupDatAccess( "CompleteJournalCategory", xiv::exd::Language::none ); m_ContentExActionDat = setupDatAccess( "ContentExAction", xiv::exd::Language::none ); m_ContentFinderConditionDat = setupDatAccess( "ContentFinderCondition", xiv::exd::Language::en ); m_ContentFinderConditionTransientDat = setupDatAccess( "ContentFinderConditionTransient", xiv::exd::Language::en ); m_ContentMemberTypeDat = setupDatAccess( "ContentMemberType", xiv::exd::Language::none ); m_ContentRouletteDat = setupDatAccess( "ContentRoulette", xiv::exd::Language::en ); m_ContentTypeDat = setupDatAccess( "ContentType", xiv::exd::Language::en ); m_CraftActionDat = setupDatAccess( "CraftAction", xiv::exd::Language::en ); m_CraftLeveDat = setupDatAccess( "CraftLeve", xiv::exd::Language::none ); m_CraftTypeDat = setupDatAccess( "CraftType", xiv::exd::Language::en ); m_CurrencyDat = setupDatAccess( "Currency", xiv::exd::Language::none ); m_CustomTalkDat = setupDatAccess( "CustomTalk", xiv::exd::Language::en ); m_CutsceneDat = setupDatAccess( "Cutscene", xiv::exd::Language::none ); m_CutScreenImageDat = setupDatAccess( "CutScreenImage", xiv::exd::Language::none ); m_DailySupplyItemDat = setupDatAccess( "DailySupplyItem", xiv::exd::Language::none ); m_DeepDungeonBanDat = setupDatAccess( "DeepDungeonBan", xiv::exd::Language::none ); m_DeepDungeonDangerDat = setupDatAccess( "DeepDungeonDanger", xiv::exd::Language::none ); m_DeepDungeonEquipmentDat = setupDatAccess( "DeepDungeonEquipment", xiv::exd::Language::en ); m_DeepDungeonFloorEffectUIDat = setupDatAccess( "DeepDungeonFloorEffectUI", xiv::exd::Language::en ); m_DeepDungeonItemDat = setupDatAccess( "DeepDungeonItem", xiv::exd::Language::en ); m_DeepDungeonStatusDat = setupDatAccess( "DeepDungeonStatus", xiv::exd::Language::none ); m_DefaultTalkDat = setupDatAccess( "DefaultTalk", xiv::exd::Language::en ); m_DeliveryQuestDat = setupDatAccess( "DeliveryQuest", xiv::exd::Language::none ); m_DisposalShopDat = setupDatAccess( "DisposalShop", xiv::exd::Language::en ); m_DisposalShopFilterTypeDat = setupDatAccess( "DisposalShopFilterType", xiv::exd::Language::en ); m_DisposalShopItemDat = setupDatAccess( "DisposalShopItem", xiv::exd::Language::none ); m_DpsChallengeDat = setupDatAccess( "DpsChallenge", xiv::exd::Language::en ); m_DpsChallengeOfficerDat = setupDatAccess( "DpsChallengeOfficer", xiv::exd::Language::none ); m_DpsChallengeTransientDat = setupDatAccess( "DpsChallengeTransient", xiv::exd::Language::none ); m_EmoteDat = setupDatAccess( "Emote", xiv::exd::Language::en ); m_EmoteCategoryDat = setupDatAccess( "EmoteCategory", xiv::exd::Language::en ); m_ENpcBaseDat = setupDatAccess( "ENpcBase", xiv::exd::Language::none ); m_ENpcResidentDat = setupDatAccess( "ENpcResident", xiv::exd::Language::en ); m_EObjDat = setupDatAccess( "EObj", xiv::exd::Language::none ); m_EquipSlotCategoryDat = setupDatAccess( "EquipSlotCategory", xiv::exd::Language::none ); m_EventActionDat = setupDatAccess( "EventAction", xiv::exd::Language::en ); m_EventIconPriorityDat = setupDatAccess( "EventIconPriority", xiv::exd::Language::none ); m_EventIconTypeDat = setupDatAccess( "EventIconType", xiv::exd::Language::none ); m_EventItemDat = setupDatAccess( "EventItem", xiv::exd::Language::en ); m_EventItemHelpDat = setupDatAccess( "EventItemHelp", xiv::exd::Language::en ); m_ExVersionDat = setupDatAccess( "ExVersion", xiv::exd::Language::en ); m_FateDat = setupDatAccess( "Fate", xiv::exd::Language::en ); m_FCActivityDat = setupDatAccess( "FCActivity", xiv::exd::Language::en ); m_FCAuthorityDat = setupDatAccess( "FCAuthority", xiv::exd::Language::en ); m_FCAuthorityCategoryDat = setupDatAccess( "FCAuthorityCategory", xiv::exd::Language::en ); m_FCChestNameDat = setupDatAccess( "FCChestName", xiv::exd::Language::en ); m_FccShopDat = setupDatAccess( "FccShop", xiv::exd::Language::en ); m_FCHierarchyDat = setupDatAccess( "FCHierarchy", xiv::exd::Language::en ); m_FCReputationDat = setupDatAccess( "FCReputation", xiv::exd::Language::en ); m_FCRightsDat = setupDatAccess( "FCRights", xiv::exd::Language::en ); m_FishingSpotDat = setupDatAccess( "FishingSpot", xiv::exd::Language::en ); m_FishParameterDat = setupDatAccess( "FishParameter", xiv::exd::Language::en ); m_GardeningSeedDat = setupDatAccess( "GardeningSeed", xiv::exd::Language::none ); m_GatheringConditionDat = setupDatAccess( "GatheringCondition", xiv::exd::Language::en ); m_GatheringExpDat = setupDatAccess( "GatheringExp", xiv::exd::Language::none ); m_GatheringItemDat = setupDatAccess( "GatheringItem", xiv::exd::Language::none ); m_GatheringItemLevelConvertTableDat = setupDatAccess( "GatheringItemLevelConvertTable", xiv::exd::Language::none ); m_GatheringItemPointDat = setupDatAccess( "GatheringItemPoint", xiv::exd::Language::none ); m_GatheringNotebookListDat = setupDatAccess( "GatheringNotebookList", xiv::exd::Language::none ); m_GatheringPointDat = setupDatAccess( "GatheringPoint", xiv::exd::Language::none ); m_GatheringPointBaseDat = setupDatAccess( "GatheringPointBase", xiv::exd::Language::none ); m_GatheringPointBonusDat = setupDatAccess( "GatheringPointBonus", xiv::exd::Language::none ); m_GatheringPointBonusTypeDat = setupDatAccess( "GatheringPointBonusType", xiv::exd::Language::en ); m_GatheringPointNameDat = setupDatAccess( "GatheringPointName", xiv::exd::Language::en ); m_GatheringSubCategoryDat = setupDatAccess( "GatheringSubCategory", xiv::exd::Language::en ); m_GatheringTypeDat = setupDatAccess( "GatheringType", xiv::exd::Language::en ); m_GcArmyExpeditionDat = setupDatAccess( "GcArmyExpedition", xiv::exd::Language::en ); m_GcArmyExpeditionMemberBonusDat = setupDatAccess( "GcArmyExpeditionMemberBonus", xiv::exd::Language::none ); m_GcArmyExpeditionTypeDat = setupDatAccess( "GcArmyExpeditionType", xiv::exd::Language::en ); m_GcArmyMemberGrowDat = setupDatAccess( "GcArmyMemberGrow", xiv::exd::Language::none ); m_GcArmyTrainingDat = setupDatAccess( "GcArmyTraining", xiv::exd::Language::en ); m_GCScripShopItemDat = setupDatAccess( "GCScripShopItem", xiv::exd::Language::none ); m_GCShopDat = setupDatAccess( "GCShop", xiv::exd::Language::none ); m_GCShopItemCategoryDat = setupDatAccess( "GCShopItemCategory", xiv::exd::Language::en ); m_GCSupplyDutyDat = setupDatAccess( "GCSupplyDuty", xiv::exd::Language::none ); m_GCSupplyDutyRewardDat = setupDatAccess( "GCSupplyDutyReward", xiv::exd::Language::none ); m_GeneralActionDat = setupDatAccess( "GeneralAction", xiv::exd::Language::en ); m_GilShopDat = setupDatAccess( "GilShop", xiv::exd::Language::en ); m_GilShopItemDat = setupDatAccess( "GilShopItem", xiv::exd::Language::none ); m_GoldSaucerTextDataDat = setupDatAccess( "GoldSaucerTextData", xiv::exd::Language::en ); m_GrandCompanyDat = setupDatAccess( "GrandCompany", xiv::exd::Language::en ); m_GrandCompanyRankDat = setupDatAccess( "GrandCompanyRank", xiv::exd::Language::none ); m_GuardianDeityDat = setupDatAccess( "GuardianDeity", xiv::exd::Language::en ); m_GuildleveAssignmentDat = setupDatAccess( "GuildleveAssignment", xiv::exd::Language::none ); m_GuildOrderGuideDat = setupDatAccess( "GuildOrderGuide", xiv::exd::Language::none ); m_GuildOrderOfficerDat = setupDatAccess( "GuildOrderOfficer", xiv::exd::Language::none ); m_HouseRetainerPoseDat = setupDatAccess( "HouseRetainerPose", xiv::exd::Language::none ); m_HousingFurnitureDat = setupDatAccess( "HousingFurniture", xiv::exd::Language::none ); m_HousingYardObjectDat = setupDatAccess( "HousingYardObject", xiv::exd::Language::none ); m_InstanceContentDat = setupDatAccess( "InstanceContent", xiv::exd::Language::en ); m_InstanceContentBuffDat = setupDatAccess( "InstanceContentBuff", xiv::exd::Language::none ); m_InstanceContentTextDataDat = setupDatAccess( "InstanceContentTextData", xiv::exd::Language::en ); m_InstanceContentTypeDat = setupDatAccess( "InstanceContentType", xiv::exd::Language::none ); m_ItemDat = setupDatAccess( "Item", xiv::exd::Language::en ); m_ItemActionDat = setupDatAccess( "ItemAction", xiv::exd::Language::none ); m_ItemFoodDat = setupDatAccess( "ItemFood", xiv::exd::Language::none ); m_ItemSearchCategoryDat = setupDatAccess( "ItemSearchCategory", xiv::exd::Language::en ); m_ItemSeriesDat = setupDatAccess( "ItemSeries", xiv::exd::Language::en ); m_ItemSpecialBonusDat = setupDatAccess( "ItemSpecialBonus", xiv::exd::Language::en ); m_ItemUICategoryDat = setupDatAccess( "ItemUICategory", xiv::exd::Language::en ); m_JournalCategoryDat = setupDatAccess( "JournalCategory", xiv::exd::Language::en ); m_JournalGenreDat = setupDatAccess( "JournalGenre", xiv::exd::Language::en ); m_JournalSectionDat = setupDatAccess( "JournalSection", xiv::exd::Language::en ); m_LeveDat = setupDatAccess( "Leve", xiv::exd::Language::en ); m_LeveAssignmentTypeDat = setupDatAccess( "LeveAssignmentType", xiv::exd::Language::en ); m_LeveClientDat = setupDatAccess( "LeveClient", xiv::exd::Language::en ); m_LevelDat = setupDatAccess( "Level", xiv::exd::Language::none ); m_LeveRewardItemDat = setupDatAccess( "LeveRewardItem", xiv::exd::Language::none ); m_LeveRewardItemGroupDat = setupDatAccess( "LeveRewardItemGroup", xiv::exd::Language::none ); m_LeveVfxDat = setupDatAccess( "LeveVfx", xiv::exd::Language::none ); m_LogFilterDat = setupDatAccess( "LogFilter", xiv::exd::Language::en ); m_LogKindDat = setupDatAccess( "LogKind", xiv::exd::Language::en ); m_LogKindCategoryTextDat = setupDatAccess( "LogKindCategoryText", xiv::exd::Language::en ); m_LogMessageDat = setupDatAccess( "LogMessage", xiv::exd::Language::en ); m_MacroIconDat = setupDatAccess( "MacroIcon", xiv::exd::Language::none ); m_MacroIconRedirectOldDat = setupDatAccess( "MacroIconRedirectOld", xiv::exd::Language::none ); m_MainCommandDat = setupDatAccess( "MainCommand", xiv::exd::Language::en ); m_MainCommandCategoryDat = setupDatAccess( "MainCommandCategory", xiv::exd::Language::en ); m_MapDat = setupDatAccess( "Map", xiv::exd::Language::none ); m_MapMarkerDat = setupDatAccess( "MapMarker", xiv::exd::Language::none ); m_MapSymbolDat = setupDatAccess( "MapSymbol", xiv::exd::Language::none ); m_MasterpieceSupplyDutyDat = setupDatAccess( "MasterpieceSupplyDuty", xiv::exd::Language::none ); m_MateriaDat = setupDatAccess( "Materia", xiv::exd::Language::none ); m_MinionRaceDat = setupDatAccess( "MinionRace", xiv::exd::Language::en ); m_MinionRulesDat = setupDatAccess( "MinionRules", xiv::exd::Language::en ); m_MinionSkillTypeDat = setupDatAccess( "MinionSkillType", xiv::exd::Language::en ); m_MobHuntTargetDat = setupDatAccess( "MobHuntTarget", xiv::exd::Language::none ); m_ModelCharaDat = setupDatAccess( "ModelChara", xiv::exd::Language::none ); m_MonsterNoteDat = setupDatAccess( "MonsterNote", xiv::exd::Language::en ); m_MonsterNoteTargetDat = setupDatAccess( "MonsterNoteTarget", xiv::exd::Language::none ); m_MountDat = setupDatAccess( "Mount", xiv::exd::Language::en ); m_MountActionDat = setupDatAccess( "MountAction", xiv::exd::Language::none ); m_NpcEquipDat = setupDatAccess( "NpcEquip", xiv::exd::Language::none ); m_OmenDat = setupDatAccess( "Omen", xiv::exd::Language::none ); m_OnlineStatusDat = setupDatAccess( "OnlineStatus", xiv::exd::Language::en ); m_OrchestrionDat = setupDatAccess( "Orchestrion", xiv::exd::Language::en ); m_OrchestrionPathDat = setupDatAccess( "OrchestrionPath", xiv::exd::Language::none ); m_ParamGrowDat = setupDatAccess( "ParamGrow", xiv::exd::Language::none ); m_PetDat = setupDatAccess( "Pet", xiv::exd::Language::en ); m_PetActionDat = setupDatAccess( "PetAction", xiv::exd::Language::en ); m_PictureDat = setupDatAccess( "Picture", xiv::exd::Language::none ); m_PlaceNameDat = setupDatAccess( "PlaceName", xiv::exd::Language::en ); m_QuestDat = setupDatAccess( "Quest", xiv::exd::Language::en ); m_QuestRewardOtherDat = setupDatAccess( "QuestRewardOther", xiv::exd::Language::en ); m_RaceDat = setupDatAccess( "Race", xiv::exd::Language::en ); m_RacingChocoboItemDat = setupDatAccess( "RacingChocoboItem", xiv::exd::Language::none ); m_RacingChocoboNameDat = setupDatAccess( "RacingChocoboName", xiv::exd::Language::en ); m_RacingChocoboNameCategoryDat = setupDatAccess( "RacingChocoboNameCategory", xiv::exd::Language::en ); m_RacingChocoboNameInfoDat = setupDatAccess( "RacingChocoboNameInfo", xiv::exd::Language::none ); m_RacingChocoboParamDat = setupDatAccess( "RacingChocoboParam", xiv::exd::Language::en ); m_RecipeDat = setupDatAccess( "Recipe", xiv::exd::Language::none ); m_RecipeElementDat = setupDatAccess( "RecipeElement", xiv::exd::Language::en ); m_RecipeLevelTableDat = setupDatAccess( "RecipeLevelTable", xiv::exd::Language::none ); m_RecipeNotebookListDat = setupDatAccess( "RecipeNotebookList", xiv::exd::Language::none ); m_RelicDat = setupDatAccess( "Relic", xiv::exd::Language::none ); m_Relic3Dat = setupDatAccess( "Relic3", xiv::exd::Language::none ); m_RelicItemDat = setupDatAccess( "RelicItem", xiv::exd::Language::none ); m_RelicNoteDat = setupDatAccess( "RelicNote", xiv::exd::Language::none ); m_RelicNoteCategoryDat = setupDatAccess( "RelicNoteCategory", xiv::exd::Language::en ); m_RetainerTaskDat = setupDatAccess( "RetainerTask", xiv::exd::Language::none ); m_RetainerTaskNormalDat = setupDatAccess( "RetainerTaskNormal", xiv::exd::Language::none ); m_RetainerTaskParameterDat = setupDatAccess( "RetainerTaskParameter", xiv::exd::Language::none ); m_RetainerTaskRandomDat = setupDatAccess( "RetainerTaskRandom", xiv::exd::Language::en ); m_SalvageDat = setupDatAccess( "Salvage", xiv::exd::Language::none ); m_SatisfactionNpcDat = setupDatAccess( "SatisfactionNpc", xiv::exd::Language::none ); m_SatisfactionSupplyDat = setupDatAccess( "SatisfactionSupply", xiv::exd::Language::none ); m_SatisfactionSupplyRewardDat = setupDatAccess( "SatisfactionSupplyReward", xiv::exd::Language::none ); m_ScreenImageDat = setupDatAccess( "ScreenImage", xiv::exd::Language::none ); m_SecretRecipeBookDat = setupDatAccess( "SecretRecipeBook", xiv::exd::Language::en ); m_SpearfishingItemDat = setupDatAccess( "SpearfishingItem", xiv::exd::Language::en ); m_SpearfishingNotebookDat = setupDatAccess( "SpearfishingNotebook", xiv::exd::Language::none ); m_SpecialShopDat = setupDatAccess( "SpecialShop", xiv::exd::Language::en ); m_SpecialShopItemCategoryDat = setupDatAccess( "SpecialShopItemCategory", xiv::exd::Language::en ); m_StainDat = setupDatAccess( "Stain", xiv::exd::Language::en ); m_StatusDat = setupDatAccess( "Status", xiv::exd::Language::en ); m_StoryDat = setupDatAccess( "Story", xiv::exd::Language::none ); m_SwitchTalkDat = setupDatAccess( "SwitchTalk", xiv::exd::Language::none ); m_TerritoryTypeDat = setupDatAccess( "TerritoryType", xiv::exd::Language::none ); m_TextCommandDat = setupDatAccess( "TextCommand", xiv::exd::Language::en ); m_TitleDat = setupDatAccess( "Title", xiv::exd::Language::en ); m_TomestonesDat = setupDatAccess( "Tomestones", xiv::exd::Language::none ); m_TomestonesItemDat = setupDatAccess( "TomestonesItem", xiv::exd::Language::none ); m_TopicSelectDat = setupDatAccess( "TopicSelect", xiv::exd::Language::en ); m_TownDat = setupDatAccess( "Town", xiv::exd::Language::en ); m_TraitDat = setupDatAccess( "Trait", xiv::exd::Language::en ); m_TraitRecastDat = setupDatAccess( "TraitRecast", xiv::exd::Language::none ); m_TraitTransientDat = setupDatAccess( "TraitTransient", xiv::exd::Language::en ); m_TribeDat = setupDatAccess( "Tribe", xiv::exd::Language::en ); m_TripleTriadDat = setupDatAccess( "TripleTriad", xiv::exd::Language::none ); m_TripleTriadCardDat = setupDatAccess( "TripleTriadCard", xiv::exd::Language::en ); m_TripleTriadCardRarityDat = setupDatAccess( "TripleTriadCardRarity", xiv::exd::Language::none ); m_TripleTriadCardResidentDat = setupDatAccess( "TripleTriadCardResident", xiv::exd::Language::none ); m_TripleTriadCardTypeDat = setupDatAccess( "TripleTriadCardType", xiv::exd::Language::en ); m_TripleTriadCompetitionDat = setupDatAccess( "TripleTriadCompetition", xiv::exd::Language::en ); m_TripleTriadRuleDat = setupDatAccess( "TripleTriadRule", xiv::exd::Language::en ); m_TutorialDat = setupDatAccess( "Tutorial", xiv::exd::Language::none ); m_TutorialDPSDat = setupDatAccess( "TutorialDPS", xiv::exd::Language::none ); m_TutorialHealerDat = setupDatAccess( "TutorialHealer", xiv::exd::Language::none ); m_TutorialTankDat = setupDatAccess( "TutorialTank", xiv::exd::Language::none ); m_WarpDat = setupDatAccess( "Warp", xiv::exd::Language::en ); m_WeatherDat = setupDatAccess( "Weather", xiv::exd::Language::en ); m_WeatherGroupDat = setupDatAccess( "WeatherGroup", xiv::exd::Language::none ); m_WeatherRateDat = setupDatAccess( "WeatherRate", xiv::exd::Language::none ); m_WeeklyBingoOrderDataDat = setupDatAccess( "WeeklyBingoOrderData", xiv::exd::Language::none ); m_WeeklyBingoRewardDataDat = setupDatAccess( "WeeklyBingoRewardData", xiv::exd::Language::none ); m_WeeklyBingoTextDat = setupDatAccess( "WeeklyBingoText", xiv::exd::Language::en ); m_WorldDCGroupTypeDat = setupDatAccess( "WorldDCGroupType", xiv::exd::Language::none ); + m_AchievementDat = setupDatAccess( "Achievement", xiv::exd::Language::en ); + m_AchievementCategoryDat = setupDatAccess( "AchievementCategory", xiv::exd::Language::en ); + m_AchievementKindDat = setupDatAccess( "AchievementKind", xiv::exd::Language::en ); + m_ActionDat = setupDatAccess( "Action", xiv::exd::Language::en ); + m_ActionCategoryDat = setupDatAccess( "ActionCategory", xiv::exd::Language::en ); + m_ActionComboRouteDat = setupDatAccess( "ActionComboRoute", xiv::exd::Language::en ); + m_ActionIndirectionDat = setupDatAccess( "ActionIndirection", xiv::exd::Language::none ); + m_ActionProcStatusDat = setupDatAccess( "ActionProcStatus", xiv::exd::Language::none ); + m_ActionTimelineDat = setupDatAccess( "ActionTimeline", xiv::exd::Language::none ); + m_ActionTransientDat = setupDatAccess( "ActionTransient", xiv::exd::Language::en ); + m_AddonDat = setupDatAccess( "Addon", xiv::exd::Language::en ); + m_AdventureDat = setupDatAccess( "Adventure", xiv::exd::Language::en ); + m_AdventureExPhaseDat = setupDatAccess( "AdventureExPhase", xiv::exd::Language::none ); + m_AetherCurrentDat = setupDatAccess( "AetherCurrent", xiv::exd::Language::none ); + m_AetherialWheelDat = setupDatAccess( "AetherialWheel", xiv::exd::Language::none ); + m_AetheryteDat = setupDatAccess( "Aetheryte", xiv::exd::Language::en ); + m_AirshipExplorationLevelDat = setupDatAccess( "AirshipExplorationLevel", xiv::exd::Language::none ); + m_AirshipExplorationLogDat = setupDatAccess( "AirshipExplorationLog", xiv::exd::Language::en ); + m_AirshipExplorationParamTypeDat = setupDatAccess( "AirshipExplorationParamType", xiv::exd::Language::en ); + m_AirshipExplorationPartDat = setupDatAccess( "AirshipExplorationPart", xiv::exd::Language::none ); + m_AirshipExplorationPointDat = setupDatAccess( "AirshipExplorationPoint", xiv::exd::Language::en ); + m_AnimaWeapon5Dat = setupDatAccess( "AnimaWeapon5", xiv::exd::Language::none ); + m_AnimaWeapon5ParamDat = setupDatAccess( "AnimaWeapon5Param", xiv::exd::Language::en ); + m_AnimaWeapon5PatternGroupDat = setupDatAccess( "AnimaWeapon5PatternGroup", xiv::exd::Language::en ); + m_AnimaWeapon5SpiritTalkDat = setupDatAccess( "AnimaWeapon5SpiritTalk", xiv::exd::Language::none ); + m_AnimaWeapon5SpiritTalkParamDat = setupDatAccess( "AnimaWeapon5SpiritTalkParam", xiv::exd::Language::en ); + m_AnimaWeapon5TradeItemDat = setupDatAccess( "AnimaWeapon5TradeItem", xiv::exd::Language::none ); + m_AnimaWeaponFUITalkDat = setupDatAccess( "AnimaWeaponFUITalk", xiv::exd::Language::none ); + m_AnimaWeaponFUITalkParamDat = setupDatAccess( "AnimaWeaponFUITalkParam", xiv::exd::Language::en ); + m_AnimaWeaponIconDat = setupDatAccess( "AnimaWeaponIcon", xiv::exd::Language::none ); + m_AnimaWeaponItemDat = setupDatAccess( "AnimaWeaponItem", xiv::exd::Language::none ); + m_AquariumFishDat = setupDatAccess( "AquariumFish", xiv::exd::Language::none ); + m_AquariumWaterDat = setupDatAccess( "AquariumWater", xiv::exd::Language::en ); + m_AttackTypeDat = setupDatAccess( "AttackType", xiv::exd::Language::en ); + m_BalloonDat = setupDatAccess( "Balloon", xiv::exd::Language::en ); + m_BaseParamDat = setupDatAccess( "BaseParam", xiv::exd::Language::en ); + m_BattleLeveDat = setupDatAccess( "BattleLeve", xiv::exd::Language::none ); + m_BeastRankBonusDat = setupDatAccess( "BeastRankBonus", xiv::exd::Language::none ); + m_BeastReputationRankDat = setupDatAccess( "BeastReputationRank", xiv::exd::Language::en ); + m_BeastTribeDat = setupDatAccess( "BeastTribe", xiv::exd::Language::en ); + m_BehaviorDat = setupDatAccess( "Behavior", xiv::exd::Language::none ); + m_BGMDat = setupDatAccess( "BGM", xiv::exd::Language::none ); + m_BNpcAnnounceIconDat = setupDatAccess( "BNpcAnnounceIcon", xiv::exd::Language::none ); + m_BNpcBaseDat = setupDatAccess( "BNpcBase", xiv::exd::Language::none ); + m_BNpcCustomizeDat = setupDatAccess( "BNpcCustomize", xiv::exd::Language::none ); + m_BNpcNameDat = setupDatAccess( "BNpcName", xiv::exd::Language::en ); + m_BuddyActionDat = setupDatAccess( "BuddyAction", xiv::exd::Language::en ); + m_BuddyEquipDat = setupDatAccess( "BuddyEquip", xiv::exd::Language::en ); + m_BuddyItemDat = setupDatAccess( "BuddyItem", xiv::exd::Language::none ); + m_BuddyRankDat = setupDatAccess( "BuddyRank", xiv::exd::Language::none ); + m_BuddySkillDat = setupDatAccess( "BuddySkill", xiv::exd::Language::none ); + m_CabinetDat = setupDatAccess( "Cabinet", xiv::exd::Language::none ); + m_CabinetCategoryDat = setupDatAccess( "CabinetCategory", xiv::exd::Language::none ); + m_CalendarDat = setupDatAccess( "Calendar", xiv::exd::Language::none ); + m_ChainBonusDat = setupDatAccess( "ChainBonus", xiv::exd::Language::none ); + m_CharaMakeCustomizeDat = setupDatAccess( "CharaMakeCustomize", xiv::exd::Language::none ); + m_CharaMakeTypeDat = setupDatAccess( "CharaMakeType", xiv::exd::Language::en ); + m_ChocoboRaceDat = setupDatAccess( "ChocoboRace", xiv::exd::Language::none ); + m_ChocoboRaceAbilityDat = setupDatAccess( "ChocoboRaceAbility", xiv::exd::Language::en ); + m_ChocoboRaceAbilityTypeDat = setupDatAccess( "ChocoboRaceAbilityType", xiv::exd::Language::none ); + m_ChocoboRaceItemDat = setupDatAccess( "ChocoboRaceItem", xiv::exd::Language::en ); + m_ChocoboRaceRankDat = setupDatAccess( "ChocoboRaceRank", xiv::exd::Language::none ); + m_ChocoboRaceStatusDat = setupDatAccess( "ChocoboRaceStatus", xiv::exd::Language::none ); + m_ChocoboRaceTerritoryDat = setupDatAccess( "ChocoboRaceTerritory", xiv::exd::Language::none ); + m_ChocoboTaxiStandDat = setupDatAccess( "ChocoboTaxiStand", xiv::exd::Language::en ); + m_ClassJobDat = setupDatAccess( "ClassJob", xiv::exd::Language::en ); + m_ClassJobCategoryDat = setupDatAccess( "ClassJobCategory", xiv::exd::Language::en ); + m_CompanionDat = setupDatAccess( "Companion", xiv::exd::Language::en ); + m_CompanionMoveDat = setupDatAccess( "CompanionMove", xiv::exd::Language::en ); + m_CompanionTransientDat = setupDatAccess( "CompanionTransient", xiv::exd::Language::en ); + m_CompanyActionDat = setupDatAccess( "CompanyAction", xiv::exd::Language::en ); + m_CompanyCraftDraftDat = setupDatAccess( "CompanyCraftDraft", xiv::exd::Language::en ); + m_CompanyCraftDraftCategoryDat = setupDatAccess( "CompanyCraftDraftCategory", xiv::exd::Language::en ); + m_CompanyCraftManufactoryStateDat = setupDatAccess( "CompanyCraftManufactoryState", xiv::exd::Language::en ); + m_CompanyCraftPartDat = setupDatAccess( "CompanyCraftPart", xiv::exd::Language::none ); + m_CompanyCraftProcessDat = setupDatAccess( "CompanyCraftProcess", xiv::exd::Language::none ); + m_CompanyCraftSequenceDat = setupDatAccess( "CompanyCraftSequence", xiv::exd::Language::none ); + m_CompanyCraftSupplyItemDat = setupDatAccess( "CompanyCraftSupplyItem", xiv::exd::Language::none ); + m_CompanyCraftTypeDat = setupDatAccess( "CompanyCraftType", xiv::exd::Language::en ); + m_CompleteJournalDat = setupDatAccess( "CompleteJournal", xiv::exd::Language::en ); + m_CompleteJournalCategoryDat = setupDatAccess( "CompleteJournalCategory", xiv::exd::Language::none ); + m_ContentExActionDat = setupDatAccess( "ContentExAction", xiv::exd::Language::none ); + m_ContentFinderConditionDat = setupDatAccess( "ContentFinderCondition", xiv::exd::Language::en ); + m_ContentFinderConditionTransientDat = setupDatAccess( "ContentFinderConditionTransient", xiv::exd::Language::en ); + m_ContentMemberTypeDat = setupDatAccess( "ContentMemberType", xiv::exd::Language::none ); + m_ContentRouletteDat = setupDatAccess( "ContentRoulette", xiv::exd::Language::en ); + m_ContentTypeDat = setupDatAccess( "ContentType", xiv::exd::Language::en ); + m_CraftActionDat = setupDatAccess( "CraftAction", xiv::exd::Language::en ); + m_CraftLeveDat = setupDatAccess( "CraftLeve", xiv::exd::Language::none ); + m_CraftTypeDat = setupDatAccess( "CraftType", xiv::exd::Language::en ); + m_CurrencyDat = setupDatAccess( "Currency", xiv::exd::Language::none ); + m_CustomTalkDat = setupDatAccess( "CustomTalk", xiv::exd::Language::en ); + m_CutsceneDat = setupDatAccess( "Cutscene", xiv::exd::Language::none ); + m_CutScreenImageDat = setupDatAccess( "CutScreenImage", xiv::exd::Language::none ); + m_DailySupplyItemDat = setupDatAccess( "DailySupplyItem", xiv::exd::Language::none ); + m_DeepDungeonBanDat = setupDatAccess( "DeepDungeonBan", xiv::exd::Language::none ); + m_DeepDungeonDangerDat = setupDatAccess( "DeepDungeonDanger", xiv::exd::Language::none ); + m_DeepDungeonEquipmentDat = setupDatAccess( "DeepDungeonEquipment", xiv::exd::Language::en ); + m_DeepDungeonFloorEffectUIDat = setupDatAccess( "DeepDungeonFloorEffectUI", xiv::exd::Language::en ); + m_DeepDungeonItemDat = setupDatAccess( "DeepDungeonItem", xiv::exd::Language::en ); + m_DeepDungeonStatusDat = setupDatAccess( "DeepDungeonStatus", xiv::exd::Language::none ); + m_DefaultTalkDat = setupDatAccess( "DefaultTalk", xiv::exd::Language::en ); + m_DeliveryQuestDat = setupDatAccess( "DeliveryQuest", xiv::exd::Language::none ); + m_DisposalShopDat = setupDatAccess( "DisposalShop", xiv::exd::Language::en ); + m_DisposalShopFilterTypeDat = setupDatAccess( "DisposalShopFilterType", xiv::exd::Language::en ); + m_DisposalShopItemDat = setupDatAccess( "DisposalShopItem", xiv::exd::Language::none ); + m_DpsChallengeDat = setupDatAccess( "DpsChallenge", xiv::exd::Language::en ); + m_DpsChallengeOfficerDat = setupDatAccess( "DpsChallengeOfficer", xiv::exd::Language::none ); + m_DpsChallengeTransientDat = setupDatAccess( "DpsChallengeTransient", xiv::exd::Language::none ); + m_EmoteDat = setupDatAccess( "Emote", xiv::exd::Language::en ); + m_EmoteCategoryDat = setupDatAccess( "EmoteCategory", xiv::exd::Language::en ); + m_ENpcBaseDat = setupDatAccess( "ENpcBase", xiv::exd::Language::none ); + m_ENpcResidentDat = setupDatAccess( "ENpcResident", xiv::exd::Language::en ); + m_EObjDat = setupDatAccess( "EObj", xiv::exd::Language::none ); + m_EquipRaceCategoryDat = setupDatAccess( "EquipRaceCategory", xiv::exd::Language::none ); + m_EquipSlotCategoryDat = setupDatAccess( "EquipSlotCategory", xiv::exd::Language::none ); + m_EventActionDat = setupDatAccess( "EventAction", xiv::exd::Language::en ); + m_EventIconPriorityDat = setupDatAccess( "EventIconPriority", xiv::exd::Language::none ); + m_EventIconTypeDat = setupDatAccess( "EventIconType", xiv::exd::Language::none ); + m_EventItemDat = setupDatAccess( "EventItem", xiv::exd::Language::en ); + m_EventItemHelpDat = setupDatAccess( "EventItemHelp", xiv::exd::Language::en ); + m_ExVersionDat = setupDatAccess( "ExVersion", xiv::exd::Language::en ); + m_FateDat = setupDatAccess( "Fate", xiv::exd::Language::en ); + m_FCActivityDat = setupDatAccess( "FCActivity", xiv::exd::Language::en ); + m_FCAuthorityDat = setupDatAccess( "FCAuthority", xiv::exd::Language::en ); + m_FCAuthorityCategoryDat = setupDatAccess( "FCAuthorityCategory", xiv::exd::Language::en ); + m_FCChestNameDat = setupDatAccess( "FCChestName", xiv::exd::Language::en ); + m_FccShopDat = setupDatAccess( "FccShop", xiv::exd::Language::en ); + m_FCHierarchyDat = setupDatAccess( "FCHierarchy", xiv::exd::Language::en ); + m_FCReputationDat = setupDatAccess( "FCReputation", xiv::exd::Language::en ); + m_FCRightsDat = setupDatAccess( "FCRights", xiv::exd::Language::en ); + m_FishingSpotDat = setupDatAccess( "FishingSpot", xiv::exd::Language::en ); + m_FishParameterDat = setupDatAccess( "FishParameter", xiv::exd::Language::en ); + m_GardeningSeedDat = setupDatAccess( "GardeningSeed", xiv::exd::Language::none ); + m_GatheringConditionDat = setupDatAccess( "GatheringCondition", xiv::exd::Language::en ); + m_GatheringExpDat = setupDatAccess( "GatheringExp", xiv::exd::Language::none ); + m_GatheringItemDat = setupDatAccess( "GatheringItem", xiv::exd::Language::none ); + m_GatheringItemLevelConvertTableDat = setupDatAccess( "GatheringItemLevelConvertTable", xiv::exd::Language::none ); + m_GatheringItemPointDat = setupDatAccess( "GatheringItemPoint", xiv::exd::Language::none ); + m_GatheringNotebookListDat = setupDatAccess( "GatheringNotebookList", xiv::exd::Language::none ); + m_GatheringPointDat = setupDatAccess( "GatheringPoint", xiv::exd::Language::none ); + m_GatheringPointBaseDat = setupDatAccess( "GatheringPointBase", xiv::exd::Language::none ); + m_GatheringPointBonusDat = setupDatAccess( "GatheringPointBonus", xiv::exd::Language::none ); + m_GatheringPointBonusTypeDat = setupDatAccess( "GatheringPointBonusType", xiv::exd::Language::en ); + m_GatheringPointNameDat = setupDatAccess( "GatheringPointName", xiv::exd::Language::en ); + m_GatheringSubCategoryDat = setupDatAccess( "GatheringSubCategory", xiv::exd::Language::en ); + m_GatheringTypeDat = setupDatAccess( "GatheringType", xiv::exd::Language::en ); + m_GcArmyExpeditionDat = setupDatAccess( "GcArmyExpedition", xiv::exd::Language::en ); + m_GcArmyExpeditionMemberBonusDat = setupDatAccess( "GcArmyExpeditionMemberBonus", xiv::exd::Language::none ); + m_GcArmyExpeditionTypeDat = setupDatAccess( "GcArmyExpeditionType", xiv::exd::Language::en ); + m_GcArmyMemberGrowDat = setupDatAccess( "GcArmyMemberGrow", xiv::exd::Language::none ); + m_GcArmyTrainingDat = setupDatAccess( "GcArmyTraining", xiv::exd::Language::en ); + m_GCScripShopCategoryDat = setupDatAccess( "GCScripShopCategory", xiv::exd::Language::none ); + m_GCScripShopItemDat = setupDatAccess( "GCScripShopItem", xiv::exd::Language::none ); + m_GCShopDat = setupDatAccess( "GCShop", xiv::exd::Language::none ); + m_GCShopItemCategoryDat = setupDatAccess( "GCShopItemCategory", xiv::exd::Language::en ); + m_GCSupplyDutyDat = setupDatAccess( "GCSupplyDuty", xiv::exd::Language::none ); + m_GCSupplyDutyRewardDat = setupDatAccess( "GCSupplyDutyReward", xiv::exd::Language::none ); + m_GeneralActionDat = setupDatAccess( "GeneralAction", xiv::exd::Language::en ); + m_GilShopDat = setupDatAccess( "GilShop", xiv::exd::Language::en ); + m_GilShopItemDat = setupDatAccess( "GilShopItem", xiv::exd::Language::none ); + m_GoldSaucerTextDataDat = setupDatAccess( "GoldSaucerTextData", xiv::exd::Language::en ); + m_GrandCompanyDat = setupDatAccess( "GrandCompany", xiv::exd::Language::en ); + m_GrandCompanyRankDat = setupDatAccess( "GrandCompanyRank", xiv::exd::Language::none ); + m_GuardianDeityDat = setupDatAccess( "GuardianDeity", xiv::exd::Language::en ); + m_GuildleveAssignmentDat = setupDatAccess( "GuildleveAssignment", xiv::exd::Language::none ); + m_GuildOrderGuideDat = setupDatAccess( "GuildOrderGuide", xiv::exd::Language::none ); + m_GuildOrderOfficerDat = setupDatAccess( "GuildOrderOfficer", xiv::exd::Language::none ); + m_HouseRetainerPoseDat = setupDatAccess( "HouseRetainerPose", xiv::exd::Language::none ); + m_HousingFurnitureDat = setupDatAccess( "HousingFurniture", xiv::exd::Language::none ); + m_HousingYardObjectDat = setupDatAccess( "HousingYardObject", xiv::exd::Language::none ); + m_InstanceContentDat = setupDatAccess( "InstanceContent", xiv::exd::Language::en ); + m_InstanceContentBuffDat = setupDatAccess( "InstanceContentBuff", xiv::exd::Language::none ); + m_InstanceContentTextDataDat = setupDatAccess( "InstanceContentTextData", xiv::exd::Language::en ); + m_InstanceContentTypeDat = setupDatAccess( "InstanceContentType", xiv::exd::Language::none ); + m_ItemDat = setupDatAccess( "Item", xiv::exd::Language::en ); + m_ItemActionDat = setupDatAccess( "ItemAction", xiv::exd::Language::none ); + m_ItemFoodDat = setupDatAccess( "ItemFood", xiv::exd::Language::none ); + m_ItemSearchCategoryDat = setupDatAccess( "ItemSearchCategory", xiv::exd::Language::en ); + m_ItemSeriesDat = setupDatAccess( "ItemSeries", xiv::exd::Language::en ); + m_ItemSpecialBonusDat = setupDatAccess( "ItemSpecialBonus", xiv::exd::Language::en ); + m_ItemUICategoryDat = setupDatAccess( "ItemUICategory", xiv::exd::Language::en ); + m_JournalCategoryDat = setupDatAccess( "JournalCategory", xiv::exd::Language::en ); + m_JournalGenreDat = setupDatAccess( "JournalGenre", xiv::exd::Language::en ); + m_JournalSectionDat = setupDatAccess( "JournalSection", xiv::exd::Language::en ); + m_LeveDat = setupDatAccess( "Leve", xiv::exd::Language::en ); + m_LeveAssignmentTypeDat = setupDatAccess( "LeveAssignmentType", xiv::exd::Language::en ); + m_LeveClientDat = setupDatAccess( "LeveClient", xiv::exd::Language::en ); + m_LevelDat = setupDatAccess( "Level", xiv::exd::Language::none ); + m_LeveRewardItemDat = setupDatAccess( "LeveRewardItem", xiv::exd::Language::none ); + m_LeveRewardItemGroupDat = setupDatAccess( "LeveRewardItemGroup", xiv::exd::Language::none ); + m_LeveVfxDat = setupDatAccess( "LeveVfx", xiv::exd::Language::none ); + m_LogFilterDat = setupDatAccess( "LogFilter", xiv::exd::Language::en ); + m_LogKindDat = setupDatAccess( "LogKind", xiv::exd::Language::en ); + m_LogKindCategoryTextDat = setupDatAccess( "LogKindCategoryText", xiv::exd::Language::en ); + m_LogMessageDat = setupDatAccess( "LogMessage", xiv::exd::Language::en ); + m_MacroIconDat = setupDatAccess( "MacroIcon", xiv::exd::Language::none ); + m_MacroIconRedirectOldDat = setupDatAccess( "MacroIconRedirectOld", xiv::exd::Language::none ); + m_MainCommandDat = setupDatAccess( "MainCommand", xiv::exd::Language::en ); + m_MainCommandCategoryDat = setupDatAccess( "MainCommandCategory", xiv::exd::Language::en ); + m_MapDat = setupDatAccess( "Map", xiv::exd::Language::none ); + m_MapMarkerDat = setupDatAccess( "MapMarker", xiv::exd::Language::none ); + m_MapSymbolDat = setupDatAccess( "MapSymbol", xiv::exd::Language::none ); + m_MasterpieceSupplyDutyDat = setupDatAccess( "MasterpieceSupplyDuty", xiv::exd::Language::none ); + m_MasterpieceSupplyMultiplierDat = setupDatAccess( "MasterpieceSupplyMultiplier", xiv::exd::Language::none ); + m_MateriaDat = setupDatAccess( "Materia", xiv::exd::Language::none ); + m_MinionRaceDat = setupDatAccess( "MinionRace", xiv::exd::Language::en ); + m_MinionRulesDat = setupDatAccess( "MinionRules", xiv::exd::Language::en ); + m_MinionSkillTypeDat = setupDatAccess( "MinionSkillType", xiv::exd::Language::en ); + m_MobHuntTargetDat = setupDatAccess( "MobHuntTarget", xiv::exd::Language::none ); + m_ModelCharaDat = setupDatAccess( "ModelChara", xiv::exd::Language::none ); + m_MonsterNoteDat = setupDatAccess( "MonsterNote", xiv::exd::Language::en ); + m_MonsterNoteTargetDat = setupDatAccess( "MonsterNoteTarget", xiv::exd::Language::none ); + m_MountDat = setupDatAccess( "Mount", xiv::exd::Language::en ); + m_MountActionDat = setupDatAccess( "MountAction", xiv::exd::Language::none ); + m_NpcEquipDat = setupDatAccess( "NpcEquip", xiv::exd::Language::none ); + m_OmenDat = setupDatAccess( "Omen", xiv::exd::Language::none ); + m_OnlineStatusDat = setupDatAccess( "OnlineStatus", xiv::exd::Language::en ); + m_OrchestrionDat = setupDatAccess( "Orchestrion", xiv::exd::Language::en ); + m_OrchestrionPathDat = setupDatAccess( "OrchestrionPath", xiv::exd::Language::none ); + m_ParamGrowDat = setupDatAccess( "ParamGrow", xiv::exd::Language::none ); + m_PetDat = setupDatAccess( "Pet", xiv::exd::Language::en ); + m_PetActionDat = setupDatAccess( "PetAction", xiv::exd::Language::en ); + m_PictureDat = setupDatAccess( "Picture", xiv::exd::Language::none ); + m_PlaceNameDat = setupDatAccess( "PlaceName", xiv::exd::Language::en ); + m_QuestDat = setupDatAccess( "Quest", xiv::exd::Language::en ); + m_QuestRewardOtherDat = setupDatAccess( "QuestRewardOther", xiv::exd::Language::en ); + m_RaceDat = setupDatAccess( "Race", xiv::exd::Language::en ); + m_RacingChocoboItemDat = setupDatAccess( "RacingChocoboItem", xiv::exd::Language::none ); + m_RacingChocoboNameDat = setupDatAccess( "RacingChocoboName", xiv::exd::Language::en ); + m_RacingChocoboNameCategoryDat = setupDatAccess( "RacingChocoboNameCategory", xiv::exd::Language::en ); + m_RacingChocoboNameInfoDat = setupDatAccess( "RacingChocoboNameInfo", xiv::exd::Language::none ); + m_RacingChocoboParamDat = setupDatAccess( "RacingChocoboParam", xiv::exd::Language::en ); + m_RecipeDat = setupDatAccess( "Recipe", xiv::exd::Language::none ); + m_RecipeElementDat = setupDatAccess( "RecipeElement", xiv::exd::Language::en ); + m_RecipeLevelTableDat = setupDatAccess( "RecipeLevelTable", xiv::exd::Language::none ); + m_RecipeNotebookListDat = setupDatAccess( "RecipeNotebookList", xiv::exd::Language::none ); + m_RelicDat = setupDatAccess( "Relic", xiv::exd::Language::none ); + m_Relic3Dat = setupDatAccess( "Relic3", xiv::exd::Language::none ); + m_RelicItemDat = setupDatAccess( "RelicItem", xiv::exd::Language::none ); + m_RelicNoteDat = setupDatAccess( "RelicNote", xiv::exd::Language::none ); + m_RelicNoteCategoryDat = setupDatAccess( "RelicNoteCategory", xiv::exd::Language::en ); + m_RetainerTaskDat = setupDatAccess( "RetainerTask", xiv::exd::Language::none ); + m_RetainerTaskNormalDat = setupDatAccess( "RetainerTaskNormal", xiv::exd::Language::none ); + m_RetainerTaskParameterDat = setupDatAccess( "RetainerTaskParameter", xiv::exd::Language::none ); + m_RetainerTaskRandomDat = setupDatAccess( "RetainerTaskRandom", xiv::exd::Language::en ); + m_SalvageDat = setupDatAccess( "Salvage", xiv::exd::Language::none ); + m_SatisfactionNpcDat = setupDatAccess( "SatisfactionNpc", xiv::exd::Language::none ); + m_SatisfactionSupplyDat = setupDatAccess( "SatisfactionSupply", xiv::exd::Language::none ); + m_SatisfactionSupplyRewardDat = setupDatAccess( "SatisfactionSupplyReward", xiv::exd::Language::none ); + m_ScreenImageDat = setupDatAccess( "ScreenImage", xiv::exd::Language::none ); + m_SecretRecipeBookDat = setupDatAccess( "SecretRecipeBook", xiv::exd::Language::en ); + m_SpearfishingItemDat = setupDatAccess( "SpearfishingItem", xiv::exd::Language::en ); + m_SpearfishingNotebookDat = setupDatAccess( "SpearfishingNotebook", xiv::exd::Language::none ); + m_SpecialShopDat = setupDatAccess( "SpecialShop", xiv::exd::Language::en ); + m_SpecialShopItemCategoryDat = setupDatAccess( "SpecialShopItemCategory", xiv::exd::Language::en ); + m_StainDat = setupDatAccess( "Stain", xiv::exd::Language::en ); + m_StatusDat = setupDatAccess( "Status", xiv::exd::Language::en ); + m_StoryDat = setupDatAccess( "Story", xiv::exd::Language::none ); + m_SwitchTalkDat = setupDatAccess( "SwitchTalk", xiv::exd::Language::none ); + m_TerritoryTypeDat = setupDatAccess( "TerritoryType", xiv::exd::Language::none ); + m_TextCommandDat = setupDatAccess( "TextCommand", xiv::exd::Language::en ); + m_TitleDat = setupDatAccess( "Title", xiv::exd::Language::en ); + m_TomestonesDat = setupDatAccess( "Tomestones", xiv::exd::Language::none ); + m_TomestonesItemDat = setupDatAccess( "TomestonesItem", xiv::exd::Language::none ); + m_TopicSelectDat = setupDatAccess( "TopicSelect", xiv::exd::Language::en ); + m_TownDat = setupDatAccess( "Town", xiv::exd::Language::en ); + m_TraitDat = setupDatAccess( "Trait", xiv::exd::Language::en ); + m_TraitRecastDat = setupDatAccess( "TraitRecast", xiv::exd::Language::none ); + m_TraitTransientDat = setupDatAccess( "TraitTransient", xiv::exd::Language::en ); + m_TribeDat = setupDatAccess( "Tribe", xiv::exd::Language::en ); + m_TripleTriadDat = setupDatAccess( "TripleTriad", xiv::exd::Language::none ); + m_TripleTriadCardDat = setupDatAccess( "TripleTriadCard", xiv::exd::Language::en ); + m_TripleTriadCardRarityDat = setupDatAccess( "TripleTriadCardRarity", xiv::exd::Language::none ); + m_TripleTriadCardResidentDat = setupDatAccess( "TripleTriadCardResident", xiv::exd::Language::none ); + m_TripleTriadCardTypeDat = setupDatAccess( "TripleTriadCardType", xiv::exd::Language::en ); + m_TripleTriadCompetitionDat = setupDatAccess( "TripleTriadCompetition", xiv::exd::Language::en ); + m_TripleTriadRuleDat = setupDatAccess( "TripleTriadRule", xiv::exd::Language::en ); + m_TutorialDat = setupDatAccess( "Tutorial", xiv::exd::Language::none ); + m_TutorialDPSDat = setupDatAccess( "TutorialDPS", xiv::exd::Language::none ); + m_TutorialHealerDat = setupDatAccess( "TutorialHealer", xiv::exd::Language::none ); + m_TutorialTankDat = setupDatAccess( "TutorialTank", xiv::exd::Language::none ); + m_WarpDat = setupDatAccess( "Warp", xiv::exd::Language::en ); + m_WeatherDat = setupDatAccess( "Weather", xiv::exd::Language::en ); + m_WeatherGroupDat = setupDatAccess( "WeatherGroup", xiv::exd::Language::none ); + m_WeatherRateDat = setupDatAccess( "WeatherRate", xiv::exd::Language::none ); + m_WeeklyBingoOrderDataDat = setupDatAccess( "WeeklyBingoOrderData", xiv::exd::Language::none ); + m_WeeklyBingoRewardDataDat = setupDatAccess( "WeeklyBingoRewardData", xiv::exd::Language::none ); + m_WeeklyBingoTextDat = setupDatAccess( "WeeklyBingoText", xiv::exd::Language::en ); + m_WorldDCGroupTypeDat = setupDatAccess( "WorldDCGroupType", xiv::exd::Language::none ); + } catch( std::runtime_error ) { @@ -4343,6 +5827,21 @@ boost::shared_ptr< Core::Data::EObj > } return nullptr; } +boost::shared_ptr< Core::Data::EquipRaceCategory > + Core::Data::ExdDataGenerated::getEquipRaceCategory( uint32_t EquipRaceCategoryId ) +{ + try + { + auto row = m_EquipRaceCategoryDat.get_row( EquipRaceCategoryId ); + auto info = boost::make_shared< EquipRaceCategory >( EquipRaceCategoryId, this ); + return info; + } + catch( ... ) + { + return nullptr; + } + return nullptr; +} boost::shared_ptr< Core::Data::EquipSlotCategory > Core::Data::ExdDataGenerated::getEquipSlotCategory( uint32_t EquipSlotCategoryId ) { @@ -4898,6 +6397,21 @@ boost::shared_ptr< Core::Data::GcArmyTraining > } return nullptr; } +boost::shared_ptr< Core::Data::GCScripShopCategory > + Core::Data::ExdDataGenerated::getGCScripShopCategory( uint32_t GCScripShopCategoryId ) +{ + try + { + auto row = m_GCScripShopCategoryDat.get_row( GCScripShopCategoryId ); + auto info = boost::make_shared< GCScripShopCategory >( GCScripShopCategoryId, this ); + return info; + } + catch( ... ) + { + return nullptr; + } + return nullptr; +} boost::shared_ptr< Core::Data::GCScripShopItem > Core::Data::ExdDataGenerated::getGCScripShopItem( uint32_t GCScripShopItemId ) { @@ -5663,6 +7177,21 @@ boost::shared_ptr< Core::Data::MasterpieceSupplyDuty > } return nullptr; } +boost::shared_ptr< Core::Data::MasterpieceSupplyMultiplier > + Core::Data::ExdDataGenerated::getMasterpieceSupplyMultiplier( uint32_t MasterpieceSupplyMultiplierId ) +{ + try + { + auto row = m_MasterpieceSupplyMultiplierDat.get_row( MasterpieceSupplyMultiplierId ); + auto info = boost::make_shared< MasterpieceSupplyMultiplier >( MasterpieceSupplyMultiplierId, this ); + return info; + } + catch( ... ) + { + return nullptr; + } + return nullptr; +} boost::shared_ptr< Core::Data::Materia > Core::Data::ExdDataGenerated::getMateria( uint32_t MateriaId ) { diff --git a/src/tools/exd_struct_test/ExdDataGenerated.h b/src/tools/exd_struct_test/ExdDataGenerated.h index d4a3ff7d..24b1149d 100644 --- a/src/tools/exd_struct_test/ExdDataGenerated.h +++ b/src/tools/exd_struct_test/ExdDataGenerated.h @@ -10,12 +10,305 @@ #include #include #include +#include namespace Core { namespace Data { class ExdDataGenerated; +struct Achievement; +struct AchievementCategory; +struct AchievementKind; +struct Action; +struct ActionCategory; +struct ActionComboRoute; +struct ActionIndirection; +struct ActionProcStatus; +struct ActionTimeline; +struct ActionTransient; +struct Addon; +struct Adventure; +struct AdventureExPhase; +struct AetherCurrent; +struct AetherialWheel; +struct Aetheryte; +struct AirshipExplorationLevel; +struct AirshipExplorationLog; +struct AirshipExplorationParamType; +struct AirshipExplorationPart; +struct AirshipExplorationPoint; +struct AnimaWeapon5; +struct AnimaWeapon5Param; +struct AnimaWeapon5PatternGroup; +struct AnimaWeapon5SpiritTalk; +struct AnimaWeapon5SpiritTalkParam; +struct AnimaWeapon5TradeItem; +struct AnimaWeaponFUITalk; +struct AnimaWeaponFUITalkParam; +struct AnimaWeaponIcon; +struct AnimaWeaponItem; +struct AquariumFish; +struct AquariumWater; +struct AttackType; +struct Balloon; +struct BaseParam; +struct BattleLeve; +struct BeastRankBonus; +struct BeastReputationRank; +struct BeastTribe; +struct Behavior; +struct BGM; +struct BNpcAnnounceIcon; +struct BNpcBase; +struct BNpcCustomize; +struct BNpcName; +struct BuddyAction; +struct BuddyEquip; +struct BuddyItem; +struct BuddyRank; +struct BuddySkill; +struct Cabinet; +struct CabinetCategory; +struct Calendar; +struct ChainBonus; +struct CharaMakeCustomize; +struct CharaMakeType; +struct ChocoboRace; +struct ChocoboRaceAbility; +struct ChocoboRaceAbilityType; +struct ChocoboRaceItem; +struct ChocoboRaceRank; +struct ChocoboRaceStatus; +struct ChocoboRaceTerritory; +struct ChocoboTaxiStand; +struct ClassJob; +struct ClassJobCategory; +struct Companion; +struct CompanionMove; +struct CompanionTransient; +struct CompanyAction; +struct CompanyCraftDraft; +struct CompanyCraftDraftCategory; +struct CompanyCraftManufactoryState; +struct CompanyCraftPart; +struct CompanyCraftProcess; +struct CompanyCraftSequence; +struct CompanyCraftSupplyItem; +struct CompanyCraftType; +struct CompleteJournal; +struct CompleteJournalCategory; +struct ContentExAction; +struct ContentFinderCondition; +struct ContentFinderConditionTransient; +struct ContentMemberType; +struct ContentRoulette; +struct ContentType; +struct CraftAction; +struct CraftLeve; +struct CraftType; +struct Currency; +struct CustomTalk; +struct Cutscene; +struct CutScreenImage; +struct DailySupplyItem; +struct DeepDungeonBan; +struct DeepDungeonDanger; +struct DeepDungeonEquipment; +struct DeepDungeonFloorEffectUI; +struct DeepDungeonItem; +struct DeepDungeonStatus; +struct DefaultTalk; +struct DeliveryQuest; +struct DisposalShop; +struct DisposalShopFilterType; +struct DisposalShopItem; +struct DpsChallenge; +struct DpsChallengeOfficer; +struct DpsChallengeTransient; +struct Emote; +struct EmoteCategory; +struct ENpcBase; +struct ENpcResident; +struct EObj; +struct EquipRaceCategory; +struct EquipSlotCategory; +struct EventAction; +struct EventIconPriority; +struct EventIconType; +struct EventItem; +struct EventItemHelp; +struct ExVersion; +struct Fate; +struct FCActivity; +struct FCAuthority; +struct FCAuthorityCategory; +struct FCChestName; +struct FccShop; +struct FCHierarchy; +struct FCReputation; +struct FCRights; +struct FishingSpot; +struct FishParameter; +struct GardeningSeed; +struct GatheringCondition; +struct GatheringExp; +struct GatheringItem; +struct GatheringItemLevelConvertTable; +struct GatheringItemPoint; +struct GatheringNotebookList; +struct GatheringPoint; +struct GatheringPointBase; +struct GatheringPointBonus; +struct GatheringPointBonusType; +struct GatheringPointName; +struct GatheringSubCategory; +struct GatheringType; +struct GcArmyExpedition; +struct GcArmyExpeditionMemberBonus; +struct GcArmyExpeditionType; +struct GcArmyMemberGrow; +struct GcArmyTraining; +struct GCScripShopCategory; +struct GCScripShopItem; +struct GCShop; +struct GCShopItemCategory; +struct GCSupplyDuty; +struct GCSupplyDutyReward; +struct GeneralAction; +struct GilShop; +struct GilShopItem; +struct GoldSaucerTextData; +struct GrandCompany; +struct GrandCompanyRank; +struct GuardianDeity; +struct GuildleveAssignment; +struct GuildOrderGuide; +struct GuildOrderOfficer; +struct HouseRetainerPose; +struct HousingFurniture; +struct HousingYardObject; +struct InstanceContent; +struct InstanceContentBuff; +struct InstanceContentTextData; +struct InstanceContentType; +struct Item; +struct ItemAction; +struct ItemFood; +struct ItemSearchCategory; +struct ItemSeries; +struct ItemSpecialBonus; +struct ItemUICategory; +struct JournalCategory; +struct JournalGenre; +struct JournalSection; +struct Leve; +struct LeveAssignmentType; +struct LeveClient; +struct Level; +struct LeveRewardItem; +struct LeveRewardItemGroup; +struct LeveVfx; +struct LogFilter; +struct LogKind; +struct LogKindCategoryText; +struct LogMessage; +struct MacroIcon; +struct MacroIconRedirectOld; +struct MainCommand; +struct MainCommandCategory; +struct Map; +struct MapMarker; +struct MapSymbol; +struct MasterpieceSupplyDuty; +struct MasterpieceSupplyMultiplier; +struct Materia; +struct MinionRace; +struct MinionRules; +struct MinionSkillType; +struct MobHuntTarget; +struct ModelChara; +struct MonsterNote; +struct MonsterNoteTarget; +struct Mount; +struct MountAction; +struct NpcEquip; +struct Omen; +struct OnlineStatus; +struct Orchestrion; +struct OrchestrionPath; +struct ParamGrow; +struct Pet; +struct PetAction; +struct Picture; +struct PlaceName; +struct Quest; +struct QuestRewardOther; +struct Race; +struct RacingChocoboItem; +struct RacingChocoboName; +struct RacingChocoboNameCategory; +struct RacingChocoboNameInfo; +struct RacingChocoboParam; +struct Recipe; +struct RecipeElement; +struct RecipeLevelTable; +struct RecipeNotebookList; +struct Relic; +struct Relic3; +struct RelicItem; +struct RelicNote; +struct RelicNoteCategory; +struct RetainerTask; +struct RetainerTaskNormal; +struct RetainerTaskParameter; +struct RetainerTaskRandom; +struct Salvage; +struct SatisfactionNpc; +struct SatisfactionSupply; +struct SatisfactionSupplyReward; +struct ScreenImage; +struct SecretRecipeBook; +struct SpearfishingItem; +struct SpearfishingNotebook; +struct SpecialShop; +struct SpecialShopItemCategory; +struct Stain; +struct Status; +struct Story; +struct SwitchTalk; +struct TerritoryType; +struct TextCommand; +struct Title; +struct Tomestones; +struct TomestonesItem; +struct TopicSelect; +struct Town; +struct Trait; +struct TraitRecast; +struct TraitTransient; +struct Tribe; +struct TripleTriad; +struct TripleTriadCard; +struct TripleTriadCardRarity; +struct TripleTriadCardResident; +struct TripleTriadCardType; +struct TripleTriadCompetition; +struct TripleTriadRule; +struct Tutorial; +struct TutorialDPS; +struct TutorialHealer; +struct TutorialTank; +struct Warp; +struct Weather; +struct WeatherGroup; +struct WeatherRate; +struct WeeklyBingoOrderData; +struct WeeklyBingoRewardData; +struct WeeklyBingoText; +struct WorldDCGroupType; + + struct Achievement { uint8_t achievementCategory; @@ -26,6 +319,7 @@ struct Achievement uint32_t item; uint16_t icon; uint8_t type; + std::vector< int32_t > data; uint16_t order; Achievement( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -96,6 +390,7 @@ struct ActionCategory struct ActionComboRoute { std::string name; + std::vector< uint16_t > action; ActionComboRoute( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -245,6 +540,7 @@ struct AnimaWeapon5 { int32_t item; uint8_t secondaryStatTotal; + std::vector< uint8_t > parameter; AnimaWeapon5( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -316,6 +612,7 @@ struct AnimaWeaponIcon struct AnimaWeaponItem { + std::vector< uint32_t > item; AnimaWeaponItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -360,6 +657,11 @@ struct BaseParam struct BattleLeve { + std::vector< uint16_t > enemyLevel; + std::vector< uint32_t > bNpcName; + std::vector< int32_t > itemsInvolved; + std::vector< uint8_t > itemsInvolvedQty; + std::vector< uint8_t > itemDropRate; BattleLeve( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -367,6 +669,7 @@ struct BattleLeve struct BeastRankBonus { uint32_t item; + std::vector< uint8_t > itemQuantity; BeastRankBonus( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -529,6 +832,8 @@ struct CabinetCategory struct Calendar { + std::vector< uint8_t > month; + std::vector< uint8_t > day; Calendar( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -554,6 +859,7 @@ struct CharaMakeType int32_t race; int32_t tribe; int8_t gender; + std::vector< int32_t > facialFeatureIcon; CharaMakeType( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -772,6 +1078,7 @@ struct CompanyCraftManufactoryState struct CompanyCraftPart { uint8_t companyCraftType; + std::vector< uint16_t > companyCraftProcess; CompanyCraftPart( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -788,6 +1095,7 @@ struct CompanyCraftSequence int32_t companyCraftDraftCategory; int32_t companyCraftType; int32_t companyCraftDraft; + std::vector< uint16_t > companyCraftPart; CompanyCraftSequence( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -809,6 +1117,7 @@ struct CompanyCraftType struct CompleteJournal { std::string name; + std::vector< int32_t > cutscene; CompleteJournal( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -936,6 +1245,8 @@ struct CustomTalk uint32_t iconActor; uint32_t iconMap; std::string name; + std::vector< std::string > scriptInstruction; + std::vector< uint32_t > scriptArg; bool text; CustomTalk( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -1002,7 +1313,7 @@ struct DeepDungeonFloorEffectUI struct DeepDungeonItem { uint32_t icon; - int8_t singular; + std::string singular; std::string plural; std::string name; std::string tooltip; @@ -1022,6 +1333,8 @@ struct DeepDungeonStatus struct DefaultTalk { + std::vector< uint16_t > actionTimelinePose; + std::vector< std::string > text; DefaultTalk( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1071,6 +1384,7 @@ struct DpsChallenge struct DpsChallengeOfficer { uint32_t unlockQuest; + std::vector< uint16_t > challengeName; DpsChallengeOfficer( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1103,6 +1417,7 @@ struct EmoteCategory struct ENpcBase { + std::vector< uint32_t > eNpcData; uint8_t race; uint8_t gender; uint8_t bodyType; @@ -1178,6 +1493,20 @@ struct EObj EObj( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; +struct EquipRaceCategory +{ + bool hyur; + bool elezen; + bool lalafell; + bool miqote; + bool roegadyn; + bool auRa; + bool male; + bool female; + + EquipRaceCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); +}; + struct EquipSlotCategory { int8_t mainHand; @@ -1208,6 +1537,7 @@ struct EventAction struct EventIconPriority { + std::vector< uint32_t > icon; EventIconPriority( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1260,6 +1590,7 @@ struct Fate std::string name; std::string description; std::string objective; + std::vector< std::string > statusText; Fate( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1336,6 +1667,7 @@ struct FishingSpot int16_t x; int16_t z; uint16_t radius; + std::vector< int32_t > item; uint16_t placeName; FishingSpot( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -1401,6 +1733,7 @@ struct GatheringItemPoint struct GatheringNotebookList { + std::vector< int32_t > gatheringItem; GatheringNotebookList( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1408,6 +1741,7 @@ struct GatheringNotebookList struct GatheringPoint { int32_t gatheringPointBase; + std::vector< uint16_t > gatheringPointBonus; uint16_t territoryType; uint16_t placeName; uint16_t gatheringSubCategory; @@ -1419,6 +1753,7 @@ struct GatheringPointBase { int32_t gatheringType; uint8_t gatheringLevel; + std::vector< int32_t > item; bool isLimited; GatheringPointBase( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -1516,11 +1851,21 @@ struct GcArmyTraining GcArmyTraining( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; +struct GCScripShopCategory +{ + int8_t grandCompany; + int8_t tier; + int8_t subCategory; + + GCScripShopCategory( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); +}; + struct GCScripShopItem { int32_t item; - int32_t requiredRank; + int32_t requiredGrandCompanyRank; uint32_t costGCSeals; + uint8_t sortKey; GCScripShopItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1620,6 +1965,7 @@ struct GuardianDeity struct GuildleveAssignment { + std::vector< uint32_t > quest; GuildleveAssignment( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -1783,6 +2129,8 @@ struct Item struct ItemAction { uint16_t type; + std::vector< uint16_t > data; + std::vector< uint16_t > dataHQ; ItemAction( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2044,9 +2392,19 @@ struct MasterpieceSupplyDuty MasterpieceSupplyDuty( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; +struct MasterpieceSupplyMultiplier +{ + std::vector< uint16_t > xpMultiplier; + std::vector< uint16_t > currencyMultiplier; + + MasterpieceSupplyMultiplier( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); +}; + struct Materia { + std::vector< int32_t > item; uint8_t baseParam; + std::vector< uint8_t > value; Materia( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2096,6 +2454,8 @@ struct ModelChara struct MonsterNote { + std::vector< uint16_t > monsterNoteTarget; + std::vector< uint8_t > count; uint32_t reward; std::string name; @@ -2124,6 +2484,7 @@ struct Mount struct MountAction { + std::vector< uint16_t > action; MountAction( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2252,10 +2613,12 @@ struct Quest uint32_t previousQuest1; uint32_t previousQuest2; uint8_t questLockJoin; + std::vector< uint32_t > questLock; uint8_t classJobUnlock; uint8_t grandCompany; uint8_t grandCompanyRank; uint8_t instanceContentJoin; + std::vector< uint32_t > instanceContent; uint16_t bellStart; uint16_t bellEnd; uint8_t beastTribe; @@ -2266,13 +2629,26 @@ struct Quest uint32_t eNpcResidentEnd; bool isRepeatable; uint8_t repeatIntervalType; + std::vector< std::string > scriptInstruction; + std::vector< uint32_t > scriptArg; + std::vector< uint32_t > level; uint8_t classJobRequired; uint16_t expFactor; uint32_t gilReward; uint16_t gCSeals; + std::vector< uint8_t > itemCatalyst; + std::vector< uint8_t > itemCountCatalyst; uint8_t itemRewardType; + std::vector< uint32_t > itemReward0; + std::vector< uint8_t > itemCountReward0; + std::vector< uint8_t > stainReward0; + std::vector< uint32_t > itemReward1; + std::vector< uint8_t > itemCountReward1; + std::vector< bool > isHQReward1; + std::vector< uint8_t > stainReward1; uint8_t emoteReward; uint16_t actionReward; + std::vector< uint8_t > generalActionReward; uint8_t otherReward; uint32_t instanceContentUnlock; uint8_t tomestoneReward; @@ -2315,6 +2691,7 @@ struct RacingChocoboItem { int32_t item; uint8_t category; + std::vector< uint8_t > param; RacingChocoboItem( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2393,6 +2770,7 @@ struct RecipeLevelTable struct RecipeNotebookList { + std::vector< int32_t > recipe; RecipeNotebookList( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2437,6 +2815,8 @@ struct RelicItem struct RelicNote { uint32_t eventItem; + std::vector< uint16_t > monsterNoteTargetNM; + std::vector< uint16_t > leve; RelicNote( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2476,6 +2856,9 @@ struct RetainerTaskNormal struct RetainerTaskParameter { + std::vector< int16_t > itemLevelDoW; + std::vector< int16_t > gatheringDoL; + std::vector< int16_t > gatheringFSH; RetainerTaskParameter( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2500,6 +2883,8 @@ struct SatisfactionNpc int32_t npc; int32_t questRequired; uint8_t deliveriesPerWeek; + std::vector< int32_t > supplyIndex; + std::vector< uint16_t > satisfactionRequired; int32_t icon; SatisfactionNpc( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -2572,6 +2957,7 @@ struct SpearfishingNotebook struct SpecialShop { std::string name; + std::vector< int32_t > questItem; int32_t questShop; SpecialShop( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); @@ -2620,6 +3006,8 @@ struct Story struct SwitchTalk { + std::vector< uint32_t > quest; + std::vector< uint32_t > defaultTalk; SwitchTalk( uint32_t row_id, Core::Data::ExdDataGenerated* exdData ); }; @@ -2732,9 +3120,13 @@ struct Tribe struct TripleTriad { + std::vector< uint16_t > tripleTriadCardFixed; + std::vector< uint16_t > tripleTriadCardVariable; + std::vector< uint8_t > tripleTriadRule; bool usesRegionalRules; uint16_t fee; uint8_t previousQuestJoin; + std::vector< uint32_t > previousQuest; uint16_t startTime; uint16_t endTime; uint32_t defaultTalkChallenge; @@ -2915,6 +3307,8 @@ struct WorldDCGroupType return *boost::get< T >( &fields.at( index ) ); } + void loadIdList( xiv::exd::Exd& data, std::set< uint32_t >& outIdList ); + boost::shared_ptr< xiv::dat::GameData > m_data; boost::shared_ptr< xiv::exd::ExdData > m_exd_data; @@ -3032,6 +3426,7 @@ struct WorldDCGroupType xiv::exd::Exd m_ENpcBaseDat; xiv::exd::Exd m_ENpcResidentDat; xiv::exd::Exd m_EObjDat; + xiv::exd::Exd m_EquipRaceCategoryDat; xiv::exd::Exd m_EquipSlotCategoryDat; xiv::exd::Exd m_EventActionDat; xiv::exd::Exd m_EventIconPriorityDat; @@ -3069,6 +3464,7 @@ struct WorldDCGroupType xiv::exd::Exd m_GcArmyExpeditionTypeDat; xiv::exd::Exd m_GcArmyMemberGrowDat; xiv::exd::Exd m_GcArmyTrainingDat; + xiv::exd::Exd m_GCScripShopCategoryDat; xiv::exd::Exd m_GCScripShopItemDat; xiv::exd::Exd m_GCShopDat; xiv::exd::Exd m_GCShopItemCategoryDat; @@ -3120,6 +3516,7 @@ struct WorldDCGroupType xiv::exd::Exd m_MapMarkerDat; xiv::exd::Exd m_MapSymbolDat; xiv::exd::Exd m_MasterpieceSupplyDutyDat; + xiv::exd::Exd m_MasterpieceSupplyMultiplierDat; xiv::exd::Exd m_MateriaDat; xiv::exd::Exd m_MinionRaceDat; xiv::exd::Exd m_MinionRulesDat; @@ -3207,7 +3604,2331 @@ struct WorldDCGroupType xiv::exd::Exd m_WorldDCGroupTypeDat; - boost::shared_ptr< Achievement > getAchievement( uint32_t AchievementId ); boost::shared_ptr< AchievementCategory > getAchievementCategory( uint32_t AchievementCategoryId ); boost::shared_ptr< AchievementKind > getAchievementKind( uint32_t AchievementKindId ); boost::shared_ptr< Action > getAction( uint32_t ActionId ); boost::shared_ptr< ActionCategory > getActionCategory( uint32_t ActionCategoryId ); boost::shared_ptr< ActionComboRoute > getActionComboRoute( uint32_t ActionComboRouteId ); boost::shared_ptr< ActionIndirection > getActionIndirection( uint32_t ActionIndirectionId ); boost::shared_ptr< ActionProcStatus > getActionProcStatus( uint32_t ActionProcStatusId ); boost::shared_ptr< ActionTimeline > getActionTimeline( uint32_t ActionTimelineId ); boost::shared_ptr< ActionTransient > getActionTransient( uint32_t ActionTransientId ); boost::shared_ptr< Addon > getAddon( uint32_t AddonId ); boost::shared_ptr< Adventure > getAdventure( uint32_t AdventureId ); boost::shared_ptr< AdventureExPhase > getAdventureExPhase( uint32_t AdventureExPhaseId ); boost::shared_ptr< AetherCurrent > getAetherCurrent( uint32_t AetherCurrentId ); boost::shared_ptr< AetherialWheel > getAetherialWheel( uint32_t AetherialWheelId ); boost::shared_ptr< Aetheryte > getAetheryte( uint32_t AetheryteId ); boost::shared_ptr< AirshipExplorationLevel > getAirshipExplorationLevel( uint32_t AirshipExplorationLevelId ); boost::shared_ptr< AirshipExplorationLog > getAirshipExplorationLog( uint32_t AirshipExplorationLogId ); boost::shared_ptr< AirshipExplorationParamType > getAirshipExplorationParamType( uint32_t AirshipExplorationParamTypeId ); boost::shared_ptr< AirshipExplorationPart > getAirshipExplorationPart( uint32_t AirshipExplorationPartId ); boost::shared_ptr< AirshipExplorationPoint > getAirshipExplorationPoint( uint32_t AirshipExplorationPointId ); boost::shared_ptr< AnimaWeapon5 > getAnimaWeapon5( uint32_t AnimaWeapon5Id ); boost::shared_ptr< AnimaWeapon5Param > getAnimaWeapon5Param( uint32_t AnimaWeapon5ParamId ); boost::shared_ptr< AnimaWeapon5PatternGroup > getAnimaWeapon5PatternGroup( uint32_t AnimaWeapon5PatternGroupId ); boost::shared_ptr< AnimaWeapon5SpiritTalk > getAnimaWeapon5SpiritTalk( uint32_t AnimaWeapon5SpiritTalkId ); boost::shared_ptr< AnimaWeapon5SpiritTalkParam > getAnimaWeapon5SpiritTalkParam( uint32_t AnimaWeapon5SpiritTalkParamId ); boost::shared_ptr< AnimaWeapon5TradeItem > getAnimaWeapon5TradeItem( uint32_t AnimaWeapon5TradeItemId ); boost::shared_ptr< AnimaWeaponFUITalk > getAnimaWeaponFUITalk( uint32_t AnimaWeaponFUITalkId ); boost::shared_ptr< AnimaWeaponFUITalkParam > getAnimaWeaponFUITalkParam( uint32_t AnimaWeaponFUITalkParamId ); boost::shared_ptr< AnimaWeaponIcon > getAnimaWeaponIcon( uint32_t AnimaWeaponIconId ); boost::shared_ptr< AnimaWeaponItem > getAnimaWeaponItem( uint32_t AnimaWeaponItemId ); boost::shared_ptr< AquariumFish > getAquariumFish( uint32_t AquariumFishId ); boost::shared_ptr< AquariumWater > getAquariumWater( uint32_t AquariumWaterId ); boost::shared_ptr< AttackType > getAttackType( uint32_t AttackTypeId ); boost::shared_ptr< Balloon > getBalloon( uint32_t BalloonId ); boost::shared_ptr< BaseParam > getBaseParam( uint32_t BaseParamId ); boost::shared_ptr< BattleLeve > getBattleLeve( uint32_t BattleLeveId ); boost::shared_ptr< BeastRankBonus > getBeastRankBonus( uint32_t BeastRankBonusId ); boost::shared_ptr< BeastReputationRank > getBeastReputationRank( uint32_t BeastReputationRankId ); boost::shared_ptr< BeastTribe > getBeastTribe( uint32_t BeastTribeId ); boost::shared_ptr< Behavior > getBehavior( uint32_t BehaviorId ); boost::shared_ptr< BGM > getBGM( uint32_t BGMId ); boost::shared_ptr< BNpcAnnounceIcon > getBNpcAnnounceIcon( uint32_t BNpcAnnounceIconId ); boost::shared_ptr< BNpcBase > getBNpcBase( uint32_t BNpcBaseId ); boost::shared_ptr< BNpcCustomize > getBNpcCustomize( uint32_t BNpcCustomizeId ); boost::shared_ptr< BNpcName > getBNpcName( uint32_t BNpcNameId ); boost::shared_ptr< BuddyAction > getBuddyAction( uint32_t BuddyActionId ); boost::shared_ptr< BuddyEquip > getBuddyEquip( uint32_t BuddyEquipId ); boost::shared_ptr< BuddyItem > getBuddyItem( uint32_t BuddyItemId ); boost::shared_ptr< BuddyRank > getBuddyRank( uint32_t BuddyRankId ); boost::shared_ptr< BuddySkill > getBuddySkill( uint32_t BuddySkillId ); boost::shared_ptr< Cabinet > getCabinet( uint32_t CabinetId ); boost::shared_ptr< CabinetCategory > getCabinetCategory( uint32_t CabinetCategoryId ); boost::shared_ptr< Calendar > getCalendar( uint32_t CalendarId ); boost::shared_ptr< ChainBonus > getChainBonus( uint32_t ChainBonusId ); boost::shared_ptr< CharaMakeCustomize > getCharaMakeCustomize( uint32_t CharaMakeCustomizeId ); boost::shared_ptr< CharaMakeType > getCharaMakeType( uint32_t CharaMakeTypeId ); boost::shared_ptr< ChocoboRace > getChocoboRace( uint32_t ChocoboRaceId ); boost::shared_ptr< ChocoboRaceAbility > getChocoboRaceAbility( uint32_t ChocoboRaceAbilityId ); boost::shared_ptr< ChocoboRaceAbilityType > getChocoboRaceAbilityType( uint32_t ChocoboRaceAbilityTypeId ); boost::shared_ptr< ChocoboRaceItem > getChocoboRaceItem( uint32_t ChocoboRaceItemId ); boost::shared_ptr< ChocoboRaceRank > getChocoboRaceRank( uint32_t ChocoboRaceRankId ); boost::shared_ptr< ChocoboRaceStatus > getChocoboRaceStatus( uint32_t ChocoboRaceStatusId ); boost::shared_ptr< ChocoboRaceTerritory > getChocoboRaceTerritory( uint32_t ChocoboRaceTerritoryId ); boost::shared_ptr< ChocoboTaxiStand > getChocoboTaxiStand( uint32_t ChocoboTaxiStandId ); boost::shared_ptr< ClassJob > getClassJob( uint32_t ClassJobId ); boost::shared_ptr< ClassJobCategory > getClassJobCategory( uint32_t ClassJobCategoryId ); boost::shared_ptr< Companion > getCompanion( uint32_t CompanionId ); boost::shared_ptr< CompanionMove > getCompanionMove( uint32_t CompanionMoveId ); boost::shared_ptr< CompanionTransient > getCompanionTransient( uint32_t CompanionTransientId ); boost::shared_ptr< CompanyAction > getCompanyAction( uint32_t CompanyActionId ); boost::shared_ptr< CompanyCraftDraft > getCompanyCraftDraft( uint32_t CompanyCraftDraftId ); boost::shared_ptr< CompanyCraftDraftCategory > getCompanyCraftDraftCategory( uint32_t CompanyCraftDraftCategoryId ); boost::shared_ptr< CompanyCraftManufactoryState > getCompanyCraftManufactoryState( uint32_t CompanyCraftManufactoryStateId ); boost::shared_ptr< CompanyCraftPart > getCompanyCraftPart( uint32_t CompanyCraftPartId ); boost::shared_ptr< CompanyCraftProcess > getCompanyCraftProcess( uint32_t CompanyCraftProcessId ); boost::shared_ptr< CompanyCraftSequence > getCompanyCraftSequence( uint32_t CompanyCraftSequenceId ); boost::shared_ptr< CompanyCraftSupplyItem > getCompanyCraftSupplyItem( uint32_t CompanyCraftSupplyItemId ); boost::shared_ptr< CompanyCraftType > getCompanyCraftType( uint32_t CompanyCraftTypeId ); boost::shared_ptr< CompleteJournal > getCompleteJournal( uint32_t CompleteJournalId ); boost::shared_ptr< CompleteJournalCategory > getCompleteJournalCategory( uint32_t CompleteJournalCategoryId ); boost::shared_ptr< ContentExAction > getContentExAction( uint32_t ContentExActionId ); boost::shared_ptr< ContentFinderCondition > getContentFinderCondition( uint32_t ContentFinderConditionId ); boost::shared_ptr< ContentFinderConditionTransient > getContentFinderConditionTransient( uint32_t ContentFinderConditionTransientId ); boost::shared_ptr< ContentMemberType > getContentMemberType( uint32_t ContentMemberTypeId ); boost::shared_ptr< ContentRoulette > getContentRoulette( uint32_t ContentRouletteId ); boost::shared_ptr< ContentType > getContentType( uint32_t ContentTypeId ); boost::shared_ptr< CraftAction > getCraftAction( uint32_t CraftActionId ); boost::shared_ptr< CraftLeve > getCraftLeve( uint32_t CraftLeveId ); boost::shared_ptr< CraftType > getCraftType( uint32_t CraftTypeId ); boost::shared_ptr< Currency > getCurrency( uint32_t CurrencyId ); boost::shared_ptr< CustomTalk > getCustomTalk( uint32_t CustomTalkId ); boost::shared_ptr< Cutscene > getCutscene( uint32_t CutsceneId ); boost::shared_ptr< CutScreenImage > getCutScreenImage( uint32_t CutScreenImageId ); boost::shared_ptr< DailySupplyItem > getDailySupplyItem( uint32_t DailySupplyItemId ); boost::shared_ptr< DeepDungeonBan > getDeepDungeonBan( uint32_t DeepDungeonBanId ); boost::shared_ptr< DeepDungeonDanger > getDeepDungeonDanger( uint32_t DeepDungeonDangerId ); boost::shared_ptr< DeepDungeonEquipment > getDeepDungeonEquipment( uint32_t DeepDungeonEquipmentId ); boost::shared_ptr< DeepDungeonFloorEffectUI > getDeepDungeonFloorEffectUI( uint32_t DeepDungeonFloorEffectUIId ); boost::shared_ptr< DeepDungeonItem > getDeepDungeonItem( uint32_t DeepDungeonItemId ); boost::shared_ptr< DeepDungeonStatus > getDeepDungeonStatus( uint32_t DeepDungeonStatusId ); boost::shared_ptr< DefaultTalk > getDefaultTalk( uint32_t DefaultTalkId ); boost::shared_ptr< DeliveryQuest > getDeliveryQuest( uint32_t DeliveryQuestId ); boost::shared_ptr< DisposalShop > getDisposalShop( uint32_t DisposalShopId ); boost::shared_ptr< DisposalShopFilterType > getDisposalShopFilterType( uint32_t DisposalShopFilterTypeId ); boost::shared_ptr< DisposalShopItem > getDisposalShopItem( uint32_t DisposalShopItemId ); boost::shared_ptr< DpsChallenge > getDpsChallenge( uint32_t DpsChallengeId ); boost::shared_ptr< DpsChallengeOfficer > getDpsChallengeOfficer( uint32_t DpsChallengeOfficerId ); boost::shared_ptr< DpsChallengeTransient > getDpsChallengeTransient( uint32_t DpsChallengeTransientId ); boost::shared_ptr< Emote > getEmote( uint32_t EmoteId ); boost::shared_ptr< EmoteCategory > getEmoteCategory( uint32_t EmoteCategoryId ); boost::shared_ptr< ENpcBase > getENpcBase( uint32_t ENpcBaseId ); boost::shared_ptr< ENpcResident > getENpcResident( uint32_t ENpcResidentId ); boost::shared_ptr< EObj > getEObj( uint32_t EObjId ); boost::shared_ptr< EquipSlotCategory > getEquipSlotCategory( uint32_t EquipSlotCategoryId ); boost::shared_ptr< EventAction > getEventAction( uint32_t EventActionId ); boost::shared_ptr< EventIconPriority > getEventIconPriority( uint32_t EventIconPriorityId ); boost::shared_ptr< EventIconType > getEventIconType( uint32_t EventIconTypeId ); boost::shared_ptr< EventItem > getEventItem( uint32_t EventItemId ); boost::shared_ptr< EventItemHelp > getEventItemHelp( uint32_t EventItemHelpId ); boost::shared_ptr< ExVersion > getExVersion( uint32_t ExVersionId ); boost::shared_ptr< Fate > getFate( uint32_t FateId ); boost::shared_ptr< FCActivity > getFCActivity( uint32_t FCActivityId ); boost::shared_ptr< FCAuthority > getFCAuthority( uint32_t FCAuthorityId ); boost::shared_ptr< FCAuthorityCategory > getFCAuthorityCategory( uint32_t FCAuthorityCategoryId ); boost::shared_ptr< FCChestName > getFCChestName( uint32_t FCChestNameId ); boost::shared_ptr< FccShop > getFccShop( uint32_t FccShopId ); boost::shared_ptr< FCHierarchy > getFCHierarchy( uint32_t FCHierarchyId ); boost::shared_ptr< FCReputation > getFCReputation( uint32_t FCReputationId ); boost::shared_ptr< FCRights > getFCRights( uint32_t FCRightsId ); boost::shared_ptr< FishingSpot > getFishingSpot( uint32_t FishingSpotId ); boost::shared_ptr< FishParameter > getFishParameter( uint32_t FishParameterId ); boost::shared_ptr< GardeningSeed > getGardeningSeed( uint32_t GardeningSeedId ); boost::shared_ptr< GatheringCondition > getGatheringCondition( uint32_t GatheringConditionId ); boost::shared_ptr< GatheringExp > getGatheringExp( uint32_t GatheringExpId ); boost::shared_ptr< GatheringItem > getGatheringItem( uint32_t GatheringItemId ); boost::shared_ptr< GatheringItemLevelConvertTable > getGatheringItemLevelConvertTable( uint32_t GatheringItemLevelConvertTableId ); boost::shared_ptr< GatheringItemPoint > getGatheringItemPoint( uint32_t GatheringItemPointId ); boost::shared_ptr< GatheringNotebookList > getGatheringNotebookList( uint32_t GatheringNotebookListId ); boost::shared_ptr< GatheringPoint > getGatheringPoint( uint32_t GatheringPointId ); boost::shared_ptr< GatheringPointBase > getGatheringPointBase( uint32_t GatheringPointBaseId ); boost::shared_ptr< GatheringPointBonus > getGatheringPointBonus( uint32_t GatheringPointBonusId ); boost::shared_ptr< GatheringPointBonusType > getGatheringPointBonusType( uint32_t GatheringPointBonusTypeId ); boost::shared_ptr< GatheringPointName > getGatheringPointName( uint32_t GatheringPointNameId ); boost::shared_ptr< GatheringSubCategory > getGatheringSubCategory( uint32_t GatheringSubCategoryId ); boost::shared_ptr< GatheringType > getGatheringType( uint32_t GatheringTypeId ); boost::shared_ptr< GcArmyExpedition > getGcArmyExpedition( uint32_t GcArmyExpeditionId ); boost::shared_ptr< GcArmyExpeditionMemberBonus > getGcArmyExpeditionMemberBonus( uint32_t GcArmyExpeditionMemberBonusId ); boost::shared_ptr< GcArmyExpeditionType > getGcArmyExpeditionType( uint32_t GcArmyExpeditionTypeId ); boost::shared_ptr< GcArmyMemberGrow > getGcArmyMemberGrow( uint32_t GcArmyMemberGrowId ); boost::shared_ptr< GcArmyTraining > getGcArmyTraining( uint32_t GcArmyTrainingId ); boost::shared_ptr< GCScripShopItem > getGCScripShopItem( uint32_t GCScripShopItemId ); boost::shared_ptr< GCShop > getGCShop( uint32_t GCShopId ); boost::shared_ptr< GCShopItemCategory > getGCShopItemCategory( uint32_t GCShopItemCategoryId ); boost::shared_ptr< GCSupplyDuty > getGCSupplyDuty( uint32_t GCSupplyDutyId ); boost::shared_ptr< GCSupplyDutyReward > getGCSupplyDutyReward( uint32_t GCSupplyDutyRewardId ); boost::shared_ptr< GeneralAction > getGeneralAction( uint32_t GeneralActionId ); boost::shared_ptr< GilShop > getGilShop( uint32_t GilShopId ); boost::shared_ptr< GilShopItem > getGilShopItem( uint32_t GilShopItemId ); boost::shared_ptr< GoldSaucerTextData > getGoldSaucerTextData( uint32_t GoldSaucerTextDataId ); boost::shared_ptr< GrandCompany > getGrandCompany( uint32_t GrandCompanyId ); boost::shared_ptr< GrandCompanyRank > getGrandCompanyRank( uint32_t GrandCompanyRankId ); boost::shared_ptr< GuardianDeity > getGuardianDeity( uint32_t GuardianDeityId ); boost::shared_ptr< GuildleveAssignment > getGuildleveAssignment( uint32_t GuildleveAssignmentId ); boost::shared_ptr< GuildOrderGuide > getGuildOrderGuide( uint32_t GuildOrderGuideId ); boost::shared_ptr< GuildOrderOfficer > getGuildOrderOfficer( uint32_t GuildOrderOfficerId ); boost::shared_ptr< HouseRetainerPose > getHouseRetainerPose( uint32_t HouseRetainerPoseId ); boost::shared_ptr< HousingFurniture > getHousingFurniture( uint32_t HousingFurnitureId ); boost::shared_ptr< HousingYardObject > getHousingYardObject( uint32_t HousingYardObjectId ); boost::shared_ptr< InstanceContent > getInstanceContent( uint32_t InstanceContentId ); boost::shared_ptr< InstanceContentBuff > getInstanceContentBuff( uint32_t InstanceContentBuffId ); boost::shared_ptr< InstanceContentTextData > getInstanceContentTextData( uint32_t InstanceContentTextDataId ); boost::shared_ptr< InstanceContentType > getInstanceContentType( uint32_t InstanceContentTypeId ); boost::shared_ptr< Item > getItem( uint32_t ItemId ); boost::shared_ptr< ItemAction > getItemAction( uint32_t ItemActionId ); boost::shared_ptr< ItemFood > getItemFood( uint32_t ItemFoodId ); boost::shared_ptr< ItemSearchCategory > getItemSearchCategory( uint32_t ItemSearchCategoryId ); boost::shared_ptr< ItemSeries > getItemSeries( uint32_t ItemSeriesId ); boost::shared_ptr< ItemSpecialBonus > getItemSpecialBonus( uint32_t ItemSpecialBonusId ); boost::shared_ptr< ItemUICategory > getItemUICategory( uint32_t ItemUICategoryId ); boost::shared_ptr< JournalCategory > getJournalCategory( uint32_t JournalCategoryId ); boost::shared_ptr< JournalGenre > getJournalGenre( uint32_t JournalGenreId ); boost::shared_ptr< JournalSection > getJournalSection( uint32_t JournalSectionId ); boost::shared_ptr< Leve > getLeve( uint32_t LeveId ); boost::shared_ptr< LeveAssignmentType > getLeveAssignmentType( uint32_t LeveAssignmentTypeId ); boost::shared_ptr< LeveClient > getLeveClient( uint32_t LeveClientId ); boost::shared_ptr< Level > getLevel( uint32_t LevelId ); boost::shared_ptr< LeveRewardItem > getLeveRewardItem( uint32_t LeveRewardItemId ); boost::shared_ptr< LeveRewardItemGroup > getLeveRewardItemGroup( uint32_t LeveRewardItemGroupId ); boost::shared_ptr< LeveVfx > getLeveVfx( uint32_t LeveVfxId ); boost::shared_ptr< LogFilter > getLogFilter( uint32_t LogFilterId ); boost::shared_ptr< LogKind > getLogKind( uint32_t LogKindId ); boost::shared_ptr< LogKindCategoryText > getLogKindCategoryText( uint32_t LogKindCategoryTextId ); boost::shared_ptr< LogMessage > getLogMessage( uint32_t LogMessageId ); boost::shared_ptr< MacroIcon > getMacroIcon( uint32_t MacroIconId ); boost::shared_ptr< MacroIconRedirectOld > getMacroIconRedirectOld( uint32_t MacroIconRedirectOldId ); boost::shared_ptr< MainCommand > getMainCommand( uint32_t MainCommandId ); boost::shared_ptr< MainCommandCategory > getMainCommandCategory( uint32_t MainCommandCategoryId ); boost::shared_ptr< Map > getMap( uint32_t MapId ); boost::shared_ptr< MapMarker > getMapMarker( uint32_t MapMarkerId ); boost::shared_ptr< MapSymbol > getMapSymbol( uint32_t MapSymbolId ); boost::shared_ptr< MasterpieceSupplyDuty > getMasterpieceSupplyDuty( uint32_t MasterpieceSupplyDutyId ); boost::shared_ptr< Materia > getMateria( uint32_t MateriaId ); boost::shared_ptr< MinionRace > getMinionRace( uint32_t MinionRaceId ); boost::shared_ptr< MinionRules > getMinionRules( uint32_t MinionRulesId ); boost::shared_ptr< MinionSkillType > getMinionSkillType( uint32_t MinionSkillTypeId ); boost::shared_ptr< MobHuntTarget > getMobHuntTarget( uint32_t MobHuntTargetId ); boost::shared_ptr< ModelChara > getModelChara( uint32_t ModelCharaId ); boost::shared_ptr< MonsterNote > getMonsterNote( uint32_t MonsterNoteId ); boost::shared_ptr< MonsterNoteTarget > getMonsterNoteTarget( uint32_t MonsterNoteTargetId ); boost::shared_ptr< Mount > getMount( uint32_t MountId ); boost::shared_ptr< MountAction > getMountAction( uint32_t MountActionId ); boost::shared_ptr< NpcEquip > getNpcEquip( uint32_t NpcEquipId ); boost::shared_ptr< Omen > getOmen( uint32_t OmenId ); boost::shared_ptr< OnlineStatus > getOnlineStatus( uint32_t OnlineStatusId ); boost::shared_ptr< Orchestrion > getOrchestrion( uint32_t OrchestrionId ); boost::shared_ptr< OrchestrionPath > getOrchestrionPath( uint32_t OrchestrionPathId ); boost::shared_ptr< ParamGrow > getParamGrow( uint32_t ParamGrowId ); boost::shared_ptr< Pet > getPet( uint32_t PetId ); boost::shared_ptr< PetAction > getPetAction( uint32_t PetActionId ); boost::shared_ptr< Picture > getPicture( uint32_t PictureId ); boost::shared_ptr< PlaceName > getPlaceName( uint32_t PlaceNameId ); boost::shared_ptr< Quest > getQuest( uint32_t QuestId ); boost::shared_ptr< QuestRewardOther > getQuestRewardOther( uint32_t QuestRewardOtherId ); boost::shared_ptr< Race > getRace( uint32_t RaceId ); boost::shared_ptr< RacingChocoboItem > getRacingChocoboItem( uint32_t RacingChocoboItemId ); boost::shared_ptr< RacingChocoboName > getRacingChocoboName( uint32_t RacingChocoboNameId ); boost::shared_ptr< RacingChocoboNameCategory > getRacingChocoboNameCategory( uint32_t RacingChocoboNameCategoryId ); boost::shared_ptr< RacingChocoboNameInfo > getRacingChocoboNameInfo( uint32_t RacingChocoboNameInfoId ); boost::shared_ptr< RacingChocoboParam > getRacingChocoboParam( uint32_t RacingChocoboParamId ); boost::shared_ptr< Recipe > getRecipe( uint32_t RecipeId ); boost::shared_ptr< RecipeElement > getRecipeElement( uint32_t RecipeElementId ); boost::shared_ptr< RecipeLevelTable > getRecipeLevelTable( uint32_t RecipeLevelTableId ); boost::shared_ptr< RecipeNotebookList > getRecipeNotebookList( uint32_t RecipeNotebookListId ); boost::shared_ptr< Relic > getRelic( uint32_t RelicId ); boost::shared_ptr< Relic3 > getRelic3( uint32_t Relic3Id ); boost::shared_ptr< RelicItem > getRelicItem( uint32_t RelicItemId ); boost::shared_ptr< RelicNote > getRelicNote( uint32_t RelicNoteId ); boost::shared_ptr< RelicNoteCategory > getRelicNoteCategory( uint32_t RelicNoteCategoryId ); boost::shared_ptr< RetainerTask > getRetainerTask( uint32_t RetainerTaskId ); boost::shared_ptr< RetainerTaskNormal > getRetainerTaskNormal( uint32_t RetainerTaskNormalId ); boost::shared_ptr< RetainerTaskParameter > getRetainerTaskParameter( uint32_t RetainerTaskParameterId ); boost::shared_ptr< RetainerTaskRandom > getRetainerTaskRandom( uint32_t RetainerTaskRandomId ); boost::shared_ptr< Salvage > getSalvage( uint32_t SalvageId ); boost::shared_ptr< SatisfactionNpc > getSatisfactionNpc( uint32_t SatisfactionNpcId ); boost::shared_ptr< SatisfactionSupply > getSatisfactionSupply( uint32_t SatisfactionSupplyId ); boost::shared_ptr< SatisfactionSupplyReward > getSatisfactionSupplyReward( uint32_t SatisfactionSupplyRewardId ); boost::shared_ptr< ScreenImage > getScreenImage( uint32_t ScreenImageId ); boost::shared_ptr< SecretRecipeBook > getSecretRecipeBook( uint32_t SecretRecipeBookId ); boost::shared_ptr< SpearfishingItem > getSpearfishingItem( uint32_t SpearfishingItemId ); boost::shared_ptr< SpearfishingNotebook > getSpearfishingNotebook( uint32_t SpearfishingNotebookId ); boost::shared_ptr< SpecialShop > getSpecialShop( uint32_t SpecialShopId ); boost::shared_ptr< SpecialShopItemCategory > getSpecialShopItemCategory( uint32_t SpecialShopItemCategoryId ); boost::shared_ptr< Stain > getStain( uint32_t StainId ); boost::shared_ptr< Status > getStatus( uint32_t StatusId ); boost::shared_ptr< Story > getStory( uint32_t StoryId ); boost::shared_ptr< SwitchTalk > getSwitchTalk( uint32_t SwitchTalkId ); boost::shared_ptr< TerritoryType > getTerritoryType( uint32_t TerritoryTypeId ); boost::shared_ptr< TextCommand > getTextCommand( uint32_t TextCommandId ); boost::shared_ptr< Title > getTitle( uint32_t TitleId ); boost::shared_ptr< Tomestones > getTomestones( uint32_t TomestonesId ); boost::shared_ptr< TomestonesItem > getTomestonesItem( uint32_t TomestonesItemId ); boost::shared_ptr< TopicSelect > getTopicSelect( uint32_t TopicSelectId ); boost::shared_ptr< Town > getTown( uint32_t TownId ); boost::shared_ptr< Trait > getTrait( uint32_t TraitId ); boost::shared_ptr< TraitRecast > getTraitRecast( uint32_t TraitRecastId ); boost::shared_ptr< TraitTransient > getTraitTransient( uint32_t TraitTransientId ); boost::shared_ptr< Tribe > getTribe( uint32_t TribeId ); boost::shared_ptr< TripleTriad > getTripleTriad( uint32_t TripleTriadId ); boost::shared_ptr< TripleTriadCard > getTripleTriadCard( uint32_t TripleTriadCardId ); boost::shared_ptr< TripleTriadCardRarity > getTripleTriadCardRarity( uint32_t TripleTriadCardRarityId ); boost::shared_ptr< TripleTriadCardResident > getTripleTriadCardResident( uint32_t TripleTriadCardResidentId ); boost::shared_ptr< TripleTriadCardType > getTripleTriadCardType( uint32_t TripleTriadCardTypeId ); boost::shared_ptr< TripleTriadCompetition > getTripleTriadCompetition( uint32_t TripleTriadCompetitionId ); boost::shared_ptr< TripleTriadRule > getTripleTriadRule( uint32_t TripleTriadRuleId ); boost::shared_ptr< Tutorial > getTutorial( uint32_t TutorialId ); boost::shared_ptr< TutorialDPS > getTutorialDPS( uint32_t TutorialDPSId ); boost::shared_ptr< TutorialHealer > getTutorialHealer( uint32_t TutorialHealerId ); boost::shared_ptr< TutorialTank > getTutorialTank( uint32_t TutorialTankId ); boost::shared_ptr< Warp > getWarp( uint32_t WarpId ); boost::shared_ptr< Weather > getWeather( uint32_t WeatherId ); boost::shared_ptr< WeatherGroup > getWeatherGroup( uint32_t WeatherGroupId ); boost::shared_ptr< WeatherRate > getWeatherRate( uint32_t WeatherRateId ); boost::shared_ptr< WeeklyBingoOrderData > getWeeklyBingoOrderData( uint32_t WeeklyBingoOrderDataId ); boost::shared_ptr< WeeklyBingoRewardData > getWeeklyBingoRewardData( uint32_t WeeklyBingoRewardDataId ); boost::shared_ptr< WeeklyBingoText > getWeeklyBingoText( uint32_t WeeklyBingoTextId ); boost::shared_ptr< WorldDCGroupType > getWorldDCGroupType( uint32_t WorldDCGroupTypeId ); + boost::shared_ptr< Achievement > getAchievement( uint32_t AchievementId ); + boost::shared_ptr< AchievementCategory > getAchievementCategory( uint32_t AchievementCategoryId ); + boost::shared_ptr< AchievementKind > getAchievementKind( uint32_t AchievementKindId ); + boost::shared_ptr< Action > getAction( uint32_t ActionId ); + boost::shared_ptr< ActionCategory > getActionCategory( uint32_t ActionCategoryId ); + boost::shared_ptr< ActionComboRoute > getActionComboRoute( uint32_t ActionComboRouteId ); + boost::shared_ptr< ActionIndirection > getActionIndirection( uint32_t ActionIndirectionId ); + boost::shared_ptr< ActionProcStatus > getActionProcStatus( uint32_t ActionProcStatusId ); + boost::shared_ptr< ActionTimeline > getActionTimeline( uint32_t ActionTimelineId ); + boost::shared_ptr< ActionTransient > getActionTransient( uint32_t ActionTransientId ); + boost::shared_ptr< Addon > getAddon( uint32_t AddonId ); + boost::shared_ptr< Adventure > getAdventure( uint32_t AdventureId ); + boost::shared_ptr< AdventureExPhase > getAdventureExPhase( uint32_t AdventureExPhaseId ); + boost::shared_ptr< AetherCurrent > getAetherCurrent( uint32_t AetherCurrentId ); + boost::shared_ptr< AetherialWheel > getAetherialWheel( uint32_t AetherialWheelId ); + boost::shared_ptr< Aetheryte > getAetheryte( uint32_t AetheryteId ); + boost::shared_ptr< AirshipExplorationLevel > getAirshipExplorationLevel( uint32_t AirshipExplorationLevelId ); + boost::shared_ptr< AirshipExplorationLog > getAirshipExplorationLog( uint32_t AirshipExplorationLogId ); + boost::shared_ptr< AirshipExplorationParamType > getAirshipExplorationParamType( uint32_t AirshipExplorationParamTypeId ); + boost::shared_ptr< AirshipExplorationPart > getAirshipExplorationPart( uint32_t AirshipExplorationPartId ); + boost::shared_ptr< AirshipExplorationPoint > getAirshipExplorationPoint( uint32_t AirshipExplorationPointId ); + boost::shared_ptr< AnimaWeapon5 > getAnimaWeapon5( uint32_t AnimaWeapon5Id ); + boost::shared_ptr< AnimaWeapon5Param > getAnimaWeapon5Param( uint32_t AnimaWeapon5ParamId ); + boost::shared_ptr< AnimaWeapon5PatternGroup > getAnimaWeapon5PatternGroup( uint32_t AnimaWeapon5PatternGroupId ); + boost::shared_ptr< AnimaWeapon5SpiritTalk > getAnimaWeapon5SpiritTalk( uint32_t AnimaWeapon5SpiritTalkId ); + boost::shared_ptr< AnimaWeapon5SpiritTalkParam > getAnimaWeapon5SpiritTalkParam( uint32_t AnimaWeapon5SpiritTalkParamId ); + boost::shared_ptr< AnimaWeapon5TradeItem > getAnimaWeapon5TradeItem( uint32_t AnimaWeapon5TradeItemId ); + boost::shared_ptr< AnimaWeaponFUITalk > getAnimaWeaponFUITalk( uint32_t AnimaWeaponFUITalkId ); + boost::shared_ptr< AnimaWeaponFUITalkParam > getAnimaWeaponFUITalkParam( uint32_t AnimaWeaponFUITalkParamId ); + boost::shared_ptr< AnimaWeaponIcon > getAnimaWeaponIcon( uint32_t AnimaWeaponIconId ); + boost::shared_ptr< AnimaWeaponItem > getAnimaWeaponItem( uint32_t AnimaWeaponItemId ); + boost::shared_ptr< AquariumFish > getAquariumFish( uint32_t AquariumFishId ); + boost::shared_ptr< AquariumWater > getAquariumWater( uint32_t AquariumWaterId ); + boost::shared_ptr< AttackType > getAttackType( uint32_t AttackTypeId ); + boost::shared_ptr< Balloon > getBalloon( uint32_t BalloonId ); + boost::shared_ptr< BaseParam > getBaseParam( uint32_t BaseParamId ); + boost::shared_ptr< BattleLeve > getBattleLeve( uint32_t BattleLeveId ); + boost::shared_ptr< BeastRankBonus > getBeastRankBonus( uint32_t BeastRankBonusId ); + boost::shared_ptr< BeastReputationRank > getBeastReputationRank( uint32_t BeastReputationRankId ); + boost::shared_ptr< BeastTribe > getBeastTribe( uint32_t BeastTribeId ); + boost::shared_ptr< Behavior > getBehavior( uint32_t BehaviorId ); + boost::shared_ptr< BGM > getBGM( uint32_t BGMId ); + boost::shared_ptr< BNpcAnnounceIcon > getBNpcAnnounceIcon( uint32_t BNpcAnnounceIconId ); + boost::shared_ptr< BNpcBase > getBNpcBase( uint32_t BNpcBaseId ); + boost::shared_ptr< BNpcCustomize > getBNpcCustomize( uint32_t BNpcCustomizeId ); + boost::shared_ptr< BNpcName > getBNpcName( uint32_t BNpcNameId ); + boost::shared_ptr< BuddyAction > getBuddyAction( uint32_t BuddyActionId ); + boost::shared_ptr< BuddyEquip > getBuddyEquip( uint32_t BuddyEquipId ); + boost::shared_ptr< BuddyItem > getBuddyItem( uint32_t BuddyItemId ); + boost::shared_ptr< BuddyRank > getBuddyRank( uint32_t BuddyRankId ); + boost::shared_ptr< BuddySkill > getBuddySkill( uint32_t BuddySkillId ); + boost::shared_ptr< Cabinet > getCabinet( uint32_t CabinetId ); + boost::shared_ptr< CabinetCategory > getCabinetCategory( uint32_t CabinetCategoryId ); + boost::shared_ptr< Calendar > getCalendar( uint32_t CalendarId ); + boost::shared_ptr< ChainBonus > getChainBonus( uint32_t ChainBonusId ); + boost::shared_ptr< CharaMakeCustomize > getCharaMakeCustomize( uint32_t CharaMakeCustomizeId ); + boost::shared_ptr< CharaMakeType > getCharaMakeType( uint32_t CharaMakeTypeId ); + boost::shared_ptr< ChocoboRace > getChocoboRace( uint32_t ChocoboRaceId ); + boost::shared_ptr< ChocoboRaceAbility > getChocoboRaceAbility( uint32_t ChocoboRaceAbilityId ); + boost::shared_ptr< ChocoboRaceAbilityType > getChocoboRaceAbilityType( uint32_t ChocoboRaceAbilityTypeId ); + boost::shared_ptr< ChocoboRaceItem > getChocoboRaceItem( uint32_t ChocoboRaceItemId ); + boost::shared_ptr< ChocoboRaceRank > getChocoboRaceRank( uint32_t ChocoboRaceRankId ); + boost::shared_ptr< ChocoboRaceStatus > getChocoboRaceStatus( uint32_t ChocoboRaceStatusId ); + boost::shared_ptr< ChocoboRaceTerritory > getChocoboRaceTerritory( uint32_t ChocoboRaceTerritoryId ); + boost::shared_ptr< ChocoboTaxiStand > getChocoboTaxiStand( uint32_t ChocoboTaxiStandId ); + boost::shared_ptr< ClassJob > getClassJob( uint32_t ClassJobId ); + boost::shared_ptr< ClassJobCategory > getClassJobCategory( uint32_t ClassJobCategoryId ); + boost::shared_ptr< Companion > getCompanion( uint32_t CompanionId ); + boost::shared_ptr< CompanionMove > getCompanionMove( uint32_t CompanionMoveId ); + boost::shared_ptr< CompanionTransient > getCompanionTransient( uint32_t CompanionTransientId ); + boost::shared_ptr< CompanyAction > getCompanyAction( uint32_t CompanyActionId ); + boost::shared_ptr< CompanyCraftDraft > getCompanyCraftDraft( uint32_t CompanyCraftDraftId ); + boost::shared_ptr< CompanyCraftDraftCategory > getCompanyCraftDraftCategory( uint32_t CompanyCraftDraftCategoryId ); + boost::shared_ptr< CompanyCraftManufactoryState > getCompanyCraftManufactoryState( uint32_t CompanyCraftManufactoryStateId ); + boost::shared_ptr< CompanyCraftPart > getCompanyCraftPart( uint32_t CompanyCraftPartId ); + boost::shared_ptr< CompanyCraftProcess > getCompanyCraftProcess( uint32_t CompanyCraftProcessId ); + boost::shared_ptr< CompanyCraftSequence > getCompanyCraftSequence( uint32_t CompanyCraftSequenceId ); + boost::shared_ptr< CompanyCraftSupplyItem > getCompanyCraftSupplyItem( uint32_t CompanyCraftSupplyItemId ); + boost::shared_ptr< CompanyCraftType > getCompanyCraftType( uint32_t CompanyCraftTypeId ); + boost::shared_ptr< CompleteJournal > getCompleteJournal( uint32_t CompleteJournalId ); + boost::shared_ptr< CompleteJournalCategory > getCompleteJournalCategory( uint32_t CompleteJournalCategoryId ); + boost::shared_ptr< ContentExAction > getContentExAction( uint32_t ContentExActionId ); + boost::shared_ptr< ContentFinderCondition > getContentFinderCondition( uint32_t ContentFinderConditionId ); + boost::shared_ptr< ContentFinderConditionTransient > getContentFinderConditionTransient( uint32_t ContentFinderConditionTransientId ); + boost::shared_ptr< ContentMemberType > getContentMemberType( uint32_t ContentMemberTypeId ); + boost::shared_ptr< ContentRoulette > getContentRoulette( uint32_t ContentRouletteId ); + boost::shared_ptr< ContentType > getContentType( uint32_t ContentTypeId ); + boost::shared_ptr< CraftAction > getCraftAction( uint32_t CraftActionId ); + boost::shared_ptr< CraftLeve > getCraftLeve( uint32_t CraftLeveId ); + boost::shared_ptr< CraftType > getCraftType( uint32_t CraftTypeId ); + boost::shared_ptr< Currency > getCurrency( uint32_t CurrencyId ); + boost::shared_ptr< CustomTalk > getCustomTalk( uint32_t CustomTalkId ); + boost::shared_ptr< Cutscene > getCutscene( uint32_t CutsceneId ); + boost::shared_ptr< CutScreenImage > getCutScreenImage( uint32_t CutScreenImageId ); + boost::shared_ptr< DailySupplyItem > getDailySupplyItem( uint32_t DailySupplyItemId ); + boost::shared_ptr< DeepDungeonBan > getDeepDungeonBan( uint32_t DeepDungeonBanId ); + boost::shared_ptr< DeepDungeonDanger > getDeepDungeonDanger( uint32_t DeepDungeonDangerId ); + boost::shared_ptr< DeepDungeonEquipment > getDeepDungeonEquipment( uint32_t DeepDungeonEquipmentId ); + boost::shared_ptr< DeepDungeonFloorEffectUI > getDeepDungeonFloorEffectUI( uint32_t DeepDungeonFloorEffectUIId ); + boost::shared_ptr< DeepDungeonItem > getDeepDungeonItem( uint32_t DeepDungeonItemId ); + boost::shared_ptr< DeepDungeonStatus > getDeepDungeonStatus( uint32_t DeepDungeonStatusId ); + boost::shared_ptr< DefaultTalk > getDefaultTalk( uint32_t DefaultTalkId ); + boost::shared_ptr< DeliveryQuest > getDeliveryQuest( uint32_t DeliveryQuestId ); + boost::shared_ptr< DisposalShop > getDisposalShop( uint32_t DisposalShopId ); + boost::shared_ptr< DisposalShopFilterType > getDisposalShopFilterType( uint32_t DisposalShopFilterTypeId ); + boost::shared_ptr< DisposalShopItem > getDisposalShopItem( uint32_t DisposalShopItemId ); + boost::shared_ptr< DpsChallenge > getDpsChallenge( uint32_t DpsChallengeId ); + boost::shared_ptr< DpsChallengeOfficer > getDpsChallengeOfficer( uint32_t DpsChallengeOfficerId ); + boost::shared_ptr< DpsChallengeTransient > getDpsChallengeTransient( uint32_t DpsChallengeTransientId ); + boost::shared_ptr< Emote > getEmote( uint32_t EmoteId ); + boost::shared_ptr< EmoteCategory > getEmoteCategory( uint32_t EmoteCategoryId ); + boost::shared_ptr< ENpcBase > getENpcBase( uint32_t ENpcBaseId ); + boost::shared_ptr< ENpcResident > getENpcResident( uint32_t ENpcResidentId ); + boost::shared_ptr< EObj > getEObj( uint32_t EObjId ); + boost::shared_ptr< EquipRaceCategory > getEquipRaceCategory( uint32_t EquipRaceCategoryId ); + boost::shared_ptr< EquipSlotCategory > getEquipSlotCategory( uint32_t EquipSlotCategoryId ); + boost::shared_ptr< EventAction > getEventAction( uint32_t EventActionId ); + boost::shared_ptr< EventIconPriority > getEventIconPriority( uint32_t EventIconPriorityId ); + boost::shared_ptr< EventIconType > getEventIconType( uint32_t EventIconTypeId ); + boost::shared_ptr< EventItem > getEventItem( uint32_t EventItemId ); + boost::shared_ptr< EventItemHelp > getEventItemHelp( uint32_t EventItemHelpId ); + boost::shared_ptr< ExVersion > getExVersion( uint32_t ExVersionId ); + boost::shared_ptr< Fate > getFate( uint32_t FateId ); + boost::shared_ptr< FCActivity > getFCActivity( uint32_t FCActivityId ); + boost::shared_ptr< FCAuthority > getFCAuthority( uint32_t FCAuthorityId ); + boost::shared_ptr< FCAuthorityCategory > getFCAuthorityCategory( uint32_t FCAuthorityCategoryId ); + boost::shared_ptr< FCChestName > getFCChestName( uint32_t FCChestNameId ); + boost::shared_ptr< FccShop > getFccShop( uint32_t FccShopId ); + boost::shared_ptr< FCHierarchy > getFCHierarchy( uint32_t FCHierarchyId ); + boost::shared_ptr< FCReputation > getFCReputation( uint32_t FCReputationId ); + boost::shared_ptr< FCRights > getFCRights( uint32_t FCRightsId ); + boost::shared_ptr< FishingSpot > getFishingSpot( uint32_t FishingSpotId ); + boost::shared_ptr< FishParameter > getFishParameter( uint32_t FishParameterId ); + boost::shared_ptr< GardeningSeed > getGardeningSeed( uint32_t GardeningSeedId ); + boost::shared_ptr< GatheringCondition > getGatheringCondition( uint32_t GatheringConditionId ); + boost::shared_ptr< GatheringExp > getGatheringExp( uint32_t GatheringExpId ); + boost::shared_ptr< GatheringItem > getGatheringItem( uint32_t GatheringItemId ); + boost::shared_ptr< GatheringItemLevelConvertTable > getGatheringItemLevelConvertTable( uint32_t GatheringItemLevelConvertTableId ); + boost::shared_ptr< GatheringItemPoint > getGatheringItemPoint( uint32_t GatheringItemPointId ); + boost::shared_ptr< GatheringNotebookList > getGatheringNotebookList( uint32_t GatheringNotebookListId ); + boost::shared_ptr< GatheringPoint > getGatheringPoint( uint32_t GatheringPointId ); + boost::shared_ptr< GatheringPointBase > getGatheringPointBase( uint32_t GatheringPointBaseId ); + boost::shared_ptr< GatheringPointBonus > getGatheringPointBonus( uint32_t GatheringPointBonusId ); + boost::shared_ptr< GatheringPointBonusType > getGatheringPointBonusType( uint32_t GatheringPointBonusTypeId ); + boost::shared_ptr< GatheringPointName > getGatheringPointName( uint32_t GatheringPointNameId ); + boost::shared_ptr< GatheringSubCategory > getGatheringSubCategory( uint32_t GatheringSubCategoryId ); + boost::shared_ptr< GatheringType > getGatheringType( uint32_t GatheringTypeId ); + boost::shared_ptr< GcArmyExpedition > getGcArmyExpedition( uint32_t GcArmyExpeditionId ); + boost::shared_ptr< GcArmyExpeditionMemberBonus > getGcArmyExpeditionMemberBonus( uint32_t GcArmyExpeditionMemberBonusId ); + boost::shared_ptr< GcArmyExpeditionType > getGcArmyExpeditionType( uint32_t GcArmyExpeditionTypeId ); + boost::shared_ptr< GcArmyMemberGrow > getGcArmyMemberGrow( uint32_t GcArmyMemberGrowId ); + boost::shared_ptr< GcArmyTraining > getGcArmyTraining( uint32_t GcArmyTrainingId ); + boost::shared_ptr< GCScripShopCategory > getGCScripShopCategory( uint32_t GCScripShopCategoryId ); + boost::shared_ptr< GCScripShopItem > getGCScripShopItem( uint32_t GCScripShopItemId ); + boost::shared_ptr< GCShop > getGCShop( uint32_t GCShopId ); + boost::shared_ptr< GCShopItemCategory > getGCShopItemCategory( uint32_t GCShopItemCategoryId ); + boost::shared_ptr< GCSupplyDuty > getGCSupplyDuty( uint32_t GCSupplyDutyId ); + boost::shared_ptr< GCSupplyDutyReward > getGCSupplyDutyReward( uint32_t GCSupplyDutyRewardId ); + boost::shared_ptr< GeneralAction > getGeneralAction( uint32_t GeneralActionId ); + boost::shared_ptr< GilShop > getGilShop( uint32_t GilShopId ); + boost::shared_ptr< GilShopItem > getGilShopItem( uint32_t GilShopItemId ); + boost::shared_ptr< GoldSaucerTextData > getGoldSaucerTextData( uint32_t GoldSaucerTextDataId ); + boost::shared_ptr< GrandCompany > getGrandCompany( uint32_t GrandCompanyId ); + boost::shared_ptr< GrandCompanyRank > getGrandCompanyRank( uint32_t GrandCompanyRankId ); + boost::shared_ptr< GuardianDeity > getGuardianDeity( uint32_t GuardianDeityId ); + boost::shared_ptr< GuildleveAssignment > getGuildleveAssignment( uint32_t GuildleveAssignmentId ); + boost::shared_ptr< GuildOrderGuide > getGuildOrderGuide( uint32_t GuildOrderGuideId ); + boost::shared_ptr< GuildOrderOfficer > getGuildOrderOfficer( uint32_t GuildOrderOfficerId ); + boost::shared_ptr< HouseRetainerPose > getHouseRetainerPose( uint32_t HouseRetainerPoseId ); + boost::shared_ptr< HousingFurniture > getHousingFurniture( uint32_t HousingFurnitureId ); + boost::shared_ptr< HousingYardObject > getHousingYardObject( uint32_t HousingYardObjectId ); + boost::shared_ptr< InstanceContent > getInstanceContent( uint32_t InstanceContentId ); + boost::shared_ptr< InstanceContentBuff > getInstanceContentBuff( uint32_t InstanceContentBuffId ); + boost::shared_ptr< InstanceContentTextData > getInstanceContentTextData( uint32_t InstanceContentTextDataId ); + boost::shared_ptr< InstanceContentType > getInstanceContentType( uint32_t InstanceContentTypeId ); + boost::shared_ptr< Item > getItem( uint32_t ItemId ); + boost::shared_ptr< ItemAction > getItemAction( uint32_t ItemActionId ); + boost::shared_ptr< ItemFood > getItemFood( uint32_t ItemFoodId ); + boost::shared_ptr< ItemSearchCategory > getItemSearchCategory( uint32_t ItemSearchCategoryId ); + boost::shared_ptr< ItemSeries > getItemSeries( uint32_t ItemSeriesId ); + boost::shared_ptr< ItemSpecialBonus > getItemSpecialBonus( uint32_t ItemSpecialBonusId ); + boost::shared_ptr< ItemUICategory > getItemUICategory( uint32_t ItemUICategoryId ); + boost::shared_ptr< JournalCategory > getJournalCategory( uint32_t JournalCategoryId ); + boost::shared_ptr< JournalGenre > getJournalGenre( uint32_t JournalGenreId ); + boost::shared_ptr< JournalSection > getJournalSection( uint32_t JournalSectionId ); + boost::shared_ptr< Leve > getLeve( uint32_t LeveId ); + boost::shared_ptr< LeveAssignmentType > getLeveAssignmentType( uint32_t LeveAssignmentTypeId ); + boost::shared_ptr< LeveClient > getLeveClient( uint32_t LeveClientId ); + boost::shared_ptr< Level > getLevel( uint32_t LevelId ); + boost::shared_ptr< LeveRewardItem > getLeveRewardItem( uint32_t LeveRewardItemId ); + boost::shared_ptr< LeveRewardItemGroup > getLeveRewardItemGroup( uint32_t LeveRewardItemGroupId ); + boost::shared_ptr< LeveVfx > getLeveVfx( uint32_t LeveVfxId ); + boost::shared_ptr< LogFilter > getLogFilter( uint32_t LogFilterId ); + boost::shared_ptr< LogKind > getLogKind( uint32_t LogKindId ); + boost::shared_ptr< LogKindCategoryText > getLogKindCategoryText( uint32_t LogKindCategoryTextId ); + boost::shared_ptr< LogMessage > getLogMessage( uint32_t LogMessageId ); + boost::shared_ptr< MacroIcon > getMacroIcon( uint32_t MacroIconId ); + boost::shared_ptr< MacroIconRedirectOld > getMacroIconRedirectOld( uint32_t MacroIconRedirectOldId ); + boost::shared_ptr< MainCommand > getMainCommand( uint32_t MainCommandId ); + boost::shared_ptr< MainCommandCategory > getMainCommandCategory( uint32_t MainCommandCategoryId ); + boost::shared_ptr< Map > getMap( uint32_t MapId ); + boost::shared_ptr< MapMarker > getMapMarker( uint32_t MapMarkerId ); + boost::shared_ptr< MapSymbol > getMapSymbol( uint32_t MapSymbolId ); + boost::shared_ptr< MasterpieceSupplyDuty > getMasterpieceSupplyDuty( uint32_t MasterpieceSupplyDutyId ); + boost::shared_ptr< MasterpieceSupplyMultiplier > getMasterpieceSupplyMultiplier( uint32_t MasterpieceSupplyMultiplierId ); + boost::shared_ptr< Materia > getMateria( uint32_t MateriaId ); + boost::shared_ptr< MinionRace > getMinionRace( uint32_t MinionRaceId ); + boost::shared_ptr< MinionRules > getMinionRules( uint32_t MinionRulesId ); + boost::shared_ptr< MinionSkillType > getMinionSkillType( uint32_t MinionSkillTypeId ); + boost::shared_ptr< MobHuntTarget > getMobHuntTarget( uint32_t MobHuntTargetId ); + boost::shared_ptr< ModelChara > getModelChara( uint32_t ModelCharaId ); + boost::shared_ptr< MonsterNote > getMonsterNote( uint32_t MonsterNoteId ); + boost::shared_ptr< MonsterNoteTarget > getMonsterNoteTarget( uint32_t MonsterNoteTargetId ); + boost::shared_ptr< Mount > getMount( uint32_t MountId ); + boost::shared_ptr< MountAction > getMountAction( uint32_t MountActionId ); + boost::shared_ptr< NpcEquip > getNpcEquip( uint32_t NpcEquipId ); + boost::shared_ptr< Omen > getOmen( uint32_t OmenId ); + boost::shared_ptr< OnlineStatus > getOnlineStatus( uint32_t OnlineStatusId ); + boost::shared_ptr< Orchestrion > getOrchestrion( uint32_t OrchestrionId ); + boost::shared_ptr< OrchestrionPath > getOrchestrionPath( uint32_t OrchestrionPathId ); + boost::shared_ptr< ParamGrow > getParamGrow( uint32_t ParamGrowId ); + boost::shared_ptr< Pet > getPet( uint32_t PetId ); + boost::shared_ptr< PetAction > getPetAction( uint32_t PetActionId ); + boost::shared_ptr< Picture > getPicture( uint32_t PictureId ); + boost::shared_ptr< PlaceName > getPlaceName( uint32_t PlaceNameId ); + boost::shared_ptr< Quest > getQuest( uint32_t QuestId ); + boost::shared_ptr< QuestRewardOther > getQuestRewardOther( uint32_t QuestRewardOtherId ); + boost::shared_ptr< Race > getRace( uint32_t RaceId ); + boost::shared_ptr< RacingChocoboItem > getRacingChocoboItem( uint32_t RacingChocoboItemId ); + boost::shared_ptr< RacingChocoboName > getRacingChocoboName( uint32_t RacingChocoboNameId ); + boost::shared_ptr< RacingChocoboNameCategory > getRacingChocoboNameCategory( uint32_t RacingChocoboNameCategoryId ); + boost::shared_ptr< RacingChocoboNameInfo > getRacingChocoboNameInfo( uint32_t RacingChocoboNameInfoId ); + boost::shared_ptr< RacingChocoboParam > getRacingChocoboParam( uint32_t RacingChocoboParamId ); + boost::shared_ptr< Recipe > getRecipe( uint32_t RecipeId ); + boost::shared_ptr< RecipeElement > getRecipeElement( uint32_t RecipeElementId ); + boost::shared_ptr< RecipeLevelTable > getRecipeLevelTable( uint32_t RecipeLevelTableId ); + boost::shared_ptr< RecipeNotebookList > getRecipeNotebookList( uint32_t RecipeNotebookListId ); + boost::shared_ptr< Relic > getRelic( uint32_t RelicId ); + boost::shared_ptr< Relic3 > getRelic3( uint32_t Relic3Id ); + boost::shared_ptr< RelicItem > getRelicItem( uint32_t RelicItemId ); + boost::shared_ptr< RelicNote > getRelicNote( uint32_t RelicNoteId ); + boost::shared_ptr< RelicNoteCategory > getRelicNoteCategory( uint32_t RelicNoteCategoryId ); + boost::shared_ptr< RetainerTask > getRetainerTask( uint32_t RetainerTaskId ); + boost::shared_ptr< RetainerTaskNormal > getRetainerTaskNormal( uint32_t RetainerTaskNormalId ); + boost::shared_ptr< RetainerTaskParameter > getRetainerTaskParameter( uint32_t RetainerTaskParameterId ); + boost::shared_ptr< RetainerTaskRandom > getRetainerTaskRandom( uint32_t RetainerTaskRandomId ); + boost::shared_ptr< Salvage > getSalvage( uint32_t SalvageId ); + boost::shared_ptr< SatisfactionNpc > getSatisfactionNpc( uint32_t SatisfactionNpcId ); + boost::shared_ptr< SatisfactionSupply > getSatisfactionSupply( uint32_t SatisfactionSupplyId ); + boost::shared_ptr< SatisfactionSupplyReward > getSatisfactionSupplyReward( uint32_t SatisfactionSupplyRewardId ); + boost::shared_ptr< ScreenImage > getScreenImage( uint32_t ScreenImageId ); + boost::shared_ptr< SecretRecipeBook > getSecretRecipeBook( uint32_t SecretRecipeBookId ); + boost::shared_ptr< SpearfishingItem > getSpearfishingItem( uint32_t SpearfishingItemId ); + boost::shared_ptr< SpearfishingNotebook > getSpearfishingNotebook( uint32_t SpearfishingNotebookId ); + boost::shared_ptr< SpecialShop > getSpecialShop( uint32_t SpecialShopId ); + boost::shared_ptr< SpecialShopItemCategory > getSpecialShopItemCategory( uint32_t SpecialShopItemCategoryId ); + boost::shared_ptr< Stain > getStain( uint32_t StainId ); + boost::shared_ptr< Status > getStatus( uint32_t StatusId ); + boost::shared_ptr< Story > getStory( uint32_t StoryId ); + boost::shared_ptr< SwitchTalk > getSwitchTalk( uint32_t SwitchTalkId ); + boost::shared_ptr< TerritoryType > getTerritoryType( uint32_t TerritoryTypeId ); + boost::shared_ptr< TextCommand > getTextCommand( uint32_t TextCommandId ); + boost::shared_ptr< Title > getTitle( uint32_t TitleId ); + boost::shared_ptr< Tomestones > getTomestones( uint32_t TomestonesId ); + boost::shared_ptr< TomestonesItem > getTomestonesItem( uint32_t TomestonesItemId ); + boost::shared_ptr< TopicSelect > getTopicSelect( uint32_t TopicSelectId ); + boost::shared_ptr< Town > getTown( uint32_t TownId ); + boost::shared_ptr< Trait > getTrait( uint32_t TraitId ); + boost::shared_ptr< TraitRecast > getTraitRecast( uint32_t TraitRecastId ); + boost::shared_ptr< TraitTransient > getTraitTransient( uint32_t TraitTransientId ); + boost::shared_ptr< Tribe > getTribe( uint32_t TribeId ); + boost::shared_ptr< TripleTriad > getTripleTriad( uint32_t TripleTriadId ); + boost::shared_ptr< TripleTriadCard > getTripleTriadCard( uint32_t TripleTriadCardId ); + boost::shared_ptr< TripleTriadCardRarity > getTripleTriadCardRarity( uint32_t TripleTriadCardRarityId ); + boost::shared_ptr< TripleTriadCardResident > getTripleTriadCardResident( uint32_t TripleTriadCardResidentId ); + boost::shared_ptr< TripleTriadCardType > getTripleTriadCardType( uint32_t TripleTriadCardTypeId ); + boost::shared_ptr< TripleTriadCompetition > getTripleTriadCompetition( uint32_t TripleTriadCompetitionId ); + boost::shared_ptr< TripleTriadRule > getTripleTriadRule( uint32_t TripleTriadRuleId ); + boost::shared_ptr< Tutorial > getTutorial( uint32_t TutorialId ); + boost::shared_ptr< TutorialDPS > getTutorialDPS( uint32_t TutorialDPSId ); + boost::shared_ptr< TutorialHealer > getTutorialHealer( uint32_t TutorialHealerId ); + boost::shared_ptr< TutorialTank > getTutorialTank( uint32_t TutorialTankId ); + boost::shared_ptr< Warp > getWarp( uint32_t WarpId ); + boost::shared_ptr< Weather > getWeather( uint32_t WeatherId ); + boost::shared_ptr< WeatherGroup > getWeatherGroup( uint32_t WeatherGroupId ); + boost::shared_ptr< WeatherRate > getWeatherRate( uint32_t WeatherRateId ); + boost::shared_ptr< WeeklyBingoOrderData > getWeeklyBingoOrderData( uint32_t WeeklyBingoOrderDataId ); + boost::shared_ptr< WeeklyBingoRewardData > getWeeklyBingoRewardData( uint32_t WeeklyBingoRewardDataId ); + boost::shared_ptr< WeeklyBingoText > getWeeklyBingoText( uint32_t WeeklyBingoTextId ); + boost::shared_ptr< WorldDCGroupType > getWorldDCGroupType( uint32_t WorldDCGroupTypeId ); + + + std::set< uint32_t > m_AchievementIdList; + std::set< uint32_t > m_AchievementCategoryIdList; + std::set< uint32_t > m_AchievementKindIdList; + std::set< uint32_t > m_ActionIdList; + std::set< uint32_t > m_ActionCategoryIdList; + std::set< uint32_t > m_ActionComboRouteIdList; + std::set< uint32_t > m_ActionIndirectionIdList; + std::set< uint32_t > m_ActionProcStatusIdList; + std::set< uint32_t > m_ActionTimelineIdList; + std::set< uint32_t > m_ActionTransientIdList; + std::set< uint32_t > m_AddonIdList; + std::set< uint32_t > m_AdventureIdList; + std::set< uint32_t > m_AdventureExPhaseIdList; + std::set< uint32_t > m_AetherCurrentIdList; + std::set< uint32_t > m_AetherialWheelIdList; + std::set< uint32_t > m_AetheryteIdList; + std::set< uint32_t > m_AirshipExplorationLevelIdList; + std::set< uint32_t > m_AirshipExplorationLogIdList; + std::set< uint32_t > m_AirshipExplorationParamTypeIdList; + std::set< uint32_t > m_AirshipExplorationPartIdList; + std::set< uint32_t > m_AirshipExplorationPointIdList; + std::set< uint32_t > m_AnimaWeapon5IdList; + std::set< uint32_t > m_AnimaWeapon5ParamIdList; + std::set< uint32_t > m_AnimaWeapon5PatternGroupIdList; + std::set< uint32_t > m_AnimaWeapon5SpiritTalkIdList; + std::set< uint32_t > m_AnimaWeapon5SpiritTalkParamIdList; + std::set< uint32_t > m_AnimaWeapon5TradeItemIdList; + std::set< uint32_t > m_AnimaWeaponFUITalkIdList; + std::set< uint32_t > m_AnimaWeaponFUITalkParamIdList; + std::set< uint32_t > m_AnimaWeaponIconIdList; + std::set< uint32_t > m_AnimaWeaponItemIdList; + std::set< uint32_t > m_AquariumFishIdList; + std::set< uint32_t > m_AquariumWaterIdList; + std::set< uint32_t > m_AttackTypeIdList; + std::set< uint32_t > m_BalloonIdList; + std::set< uint32_t > m_BaseParamIdList; + std::set< uint32_t > m_BattleLeveIdList; + std::set< uint32_t > m_BeastRankBonusIdList; + std::set< uint32_t > m_BeastReputationRankIdList; + std::set< uint32_t > m_BeastTribeIdList; + std::set< uint32_t > m_BehaviorIdList; + std::set< uint32_t > m_BGMIdList; + std::set< uint32_t > m_BNpcAnnounceIconIdList; + std::set< uint32_t > m_BNpcBaseIdList; + std::set< uint32_t > m_BNpcCustomizeIdList; + std::set< uint32_t > m_BNpcNameIdList; + std::set< uint32_t > m_BuddyActionIdList; + std::set< uint32_t > m_BuddyEquipIdList; + std::set< uint32_t > m_BuddyItemIdList; + std::set< uint32_t > m_BuddyRankIdList; + std::set< uint32_t > m_BuddySkillIdList; + std::set< uint32_t > m_CabinetIdList; + std::set< uint32_t > m_CabinetCategoryIdList; + std::set< uint32_t > m_CalendarIdList; + std::set< uint32_t > m_ChainBonusIdList; + std::set< uint32_t > m_CharaMakeCustomizeIdList; + std::set< uint32_t > m_CharaMakeTypeIdList; + std::set< uint32_t > m_ChocoboRaceIdList; + std::set< uint32_t > m_ChocoboRaceAbilityIdList; + std::set< uint32_t > m_ChocoboRaceAbilityTypeIdList; + std::set< uint32_t > m_ChocoboRaceItemIdList; + std::set< uint32_t > m_ChocoboRaceRankIdList; + std::set< uint32_t > m_ChocoboRaceStatusIdList; + std::set< uint32_t > m_ChocoboRaceTerritoryIdList; + std::set< uint32_t > m_ChocoboTaxiStandIdList; + std::set< uint32_t > m_ClassJobIdList; + std::set< uint32_t > m_ClassJobCategoryIdList; + std::set< uint32_t > m_CompanionIdList; + std::set< uint32_t > m_CompanionMoveIdList; + std::set< uint32_t > m_CompanionTransientIdList; + std::set< uint32_t > m_CompanyActionIdList; + std::set< uint32_t > m_CompanyCraftDraftIdList; + std::set< uint32_t > m_CompanyCraftDraftCategoryIdList; + std::set< uint32_t > m_CompanyCraftManufactoryStateIdList; + std::set< uint32_t > m_CompanyCraftPartIdList; + std::set< uint32_t > m_CompanyCraftProcessIdList; + std::set< uint32_t > m_CompanyCraftSequenceIdList; + std::set< uint32_t > m_CompanyCraftSupplyItemIdList; + std::set< uint32_t > m_CompanyCraftTypeIdList; + std::set< uint32_t > m_CompleteJournalIdList; + std::set< uint32_t > m_CompleteJournalCategoryIdList; + std::set< uint32_t > m_ContentExActionIdList; + std::set< uint32_t > m_ContentFinderConditionIdList; + std::set< uint32_t > m_ContentFinderConditionTransientIdList; + std::set< uint32_t > m_ContentMemberTypeIdList; + std::set< uint32_t > m_ContentRouletteIdList; + std::set< uint32_t > m_ContentTypeIdList; + std::set< uint32_t > m_CraftActionIdList; + std::set< uint32_t > m_CraftLeveIdList; + std::set< uint32_t > m_CraftTypeIdList; + std::set< uint32_t > m_CurrencyIdList; + std::set< uint32_t > m_CustomTalkIdList; + std::set< uint32_t > m_CutsceneIdList; + std::set< uint32_t > m_CutScreenImageIdList; + std::set< uint32_t > m_DailySupplyItemIdList; + std::set< uint32_t > m_DeepDungeonBanIdList; + std::set< uint32_t > m_DeepDungeonDangerIdList; + std::set< uint32_t > m_DeepDungeonEquipmentIdList; + std::set< uint32_t > m_DeepDungeonFloorEffectUIIdList; + std::set< uint32_t > m_DeepDungeonItemIdList; + std::set< uint32_t > m_DeepDungeonStatusIdList; + std::set< uint32_t > m_DefaultTalkIdList; + std::set< uint32_t > m_DeliveryQuestIdList; + std::set< uint32_t > m_DisposalShopIdList; + std::set< uint32_t > m_DisposalShopFilterTypeIdList; + std::set< uint32_t > m_DisposalShopItemIdList; + std::set< uint32_t > m_DpsChallengeIdList; + std::set< uint32_t > m_DpsChallengeOfficerIdList; + std::set< uint32_t > m_DpsChallengeTransientIdList; + std::set< uint32_t > m_EmoteIdList; + std::set< uint32_t > m_EmoteCategoryIdList; + std::set< uint32_t > m_ENpcBaseIdList; + std::set< uint32_t > m_ENpcResidentIdList; + std::set< uint32_t > m_EObjIdList; + std::set< uint32_t > m_EquipRaceCategoryIdList; + std::set< uint32_t > m_EquipSlotCategoryIdList; + std::set< uint32_t > m_EventActionIdList; + std::set< uint32_t > m_EventIconPriorityIdList; + std::set< uint32_t > m_EventIconTypeIdList; + std::set< uint32_t > m_EventItemIdList; + std::set< uint32_t > m_EventItemHelpIdList; + std::set< uint32_t > m_ExVersionIdList; + std::set< uint32_t > m_FateIdList; + std::set< uint32_t > m_FCActivityIdList; + std::set< uint32_t > m_FCAuthorityIdList; + std::set< uint32_t > m_FCAuthorityCategoryIdList; + std::set< uint32_t > m_FCChestNameIdList; + std::set< uint32_t > m_FccShopIdList; + std::set< uint32_t > m_FCHierarchyIdList; + std::set< uint32_t > m_FCReputationIdList; + std::set< uint32_t > m_FCRightsIdList; + std::set< uint32_t > m_FishingSpotIdList; + std::set< uint32_t > m_FishParameterIdList; + std::set< uint32_t > m_GardeningSeedIdList; + std::set< uint32_t > m_GatheringConditionIdList; + std::set< uint32_t > m_GatheringExpIdList; + std::set< uint32_t > m_GatheringItemIdList; + std::set< uint32_t > m_GatheringItemLevelConvertTableIdList; + std::set< uint32_t > m_GatheringItemPointIdList; + std::set< uint32_t > m_GatheringNotebookListIdList; + std::set< uint32_t > m_GatheringPointIdList; + std::set< uint32_t > m_GatheringPointBaseIdList; + std::set< uint32_t > m_GatheringPointBonusIdList; + std::set< uint32_t > m_GatheringPointBonusTypeIdList; + std::set< uint32_t > m_GatheringPointNameIdList; + std::set< uint32_t > m_GatheringSubCategoryIdList; + std::set< uint32_t > m_GatheringTypeIdList; + std::set< uint32_t > m_GcArmyExpeditionIdList; + std::set< uint32_t > m_GcArmyExpeditionMemberBonusIdList; + std::set< uint32_t > m_GcArmyExpeditionTypeIdList; + std::set< uint32_t > m_GcArmyMemberGrowIdList; + std::set< uint32_t > m_GcArmyTrainingIdList; + std::set< uint32_t > m_GCScripShopCategoryIdList; + std::set< uint32_t > m_GCScripShopItemIdList; + std::set< uint32_t > m_GCShopIdList; + std::set< uint32_t > m_GCShopItemCategoryIdList; + std::set< uint32_t > m_GCSupplyDutyIdList; + std::set< uint32_t > m_GCSupplyDutyRewardIdList; + std::set< uint32_t > m_GeneralActionIdList; + std::set< uint32_t > m_GilShopIdList; + std::set< uint32_t > m_GilShopItemIdList; + std::set< uint32_t > m_GoldSaucerTextDataIdList; + std::set< uint32_t > m_GrandCompanyIdList; + std::set< uint32_t > m_GrandCompanyRankIdList; + std::set< uint32_t > m_GuardianDeityIdList; + std::set< uint32_t > m_GuildleveAssignmentIdList; + std::set< uint32_t > m_GuildOrderGuideIdList; + std::set< uint32_t > m_GuildOrderOfficerIdList; + std::set< uint32_t > m_HouseRetainerPoseIdList; + std::set< uint32_t > m_HousingFurnitureIdList; + std::set< uint32_t > m_HousingYardObjectIdList; + std::set< uint32_t > m_InstanceContentIdList; + std::set< uint32_t > m_InstanceContentBuffIdList; + std::set< uint32_t > m_InstanceContentTextDataIdList; + std::set< uint32_t > m_InstanceContentTypeIdList; + std::set< uint32_t > m_ItemIdList; + std::set< uint32_t > m_ItemActionIdList; + std::set< uint32_t > m_ItemFoodIdList; + std::set< uint32_t > m_ItemSearchCategoryIdList; + std::set< uint32_t > m_ItemSeriesIdList; + std::set< uint32_t > m_ItemSpecialBonusIdList; + std::set< uint32_t > m_ItemUICategoryIdList; + std::set< uint32_t > m_JournalCategoryIdList; + std::set< uint32_t > m_JournalGenreIdList; + std::set< uint32_t > m_JournalSectionIdList; + std::set< uint32_t > m_LeveIdList; + std::set< uint32_t > m_LeveAssignmentTypeIdList; + std::set< uint32_t > m_LeveClientIdList; + std::set< uint32_t > m_LevelIdList; + std::set< uint32_t > m_LeveRewardItemIdList; + std::set< uint32_t > m_LeveRewardItemGroupIdList; + std::set< uint32_t > m_LeveVfxIdList; + std::set< uint32_t > m_LogFilterIdList; + std::set< uint32_t > m_LogKindIdList; + std::set< uint32_t > m_LogKindCategoryTextIdList; + std::set< uint32_t > m_LogMessageIdList; + std::set< uint32_t > m_MacroIconIdList; + std::set< uint32_t > m_MacroIconRedirectOldIdList; + std::set< uint32_t > m_MainCommandIdList; + std::set< uint32_t > m_MainCommandCategoryIdList; + std::set< uint32_t > m_MapIdList; + std::set< uint32_t > m_MapMarkerIdList; + std::set< uint32_t > m_MapSymbolIdList; + std::set< uint32_t > m_MasterpieceSupplyDutyIdList; + std::set< uint32_t > m_MasterpieceSupplyMultiplierIdList; + std::set< uint32_t > m_MateriaIdList; + std::set< uint32_t > m_MinionRaceIdList; + std::set< uint32_t > m_MinionRulesIdList; + std::set< uint32_t > m_MinionSkillTypeIdList; + std::set< uint32_t > m_MobHuntTargetIdList; + std::set< uint32_t > m_ModelCharaIdList; + std::set< uint32_t > m_MonsterNoteIdList; + std::set< uint32_t > m_MonsterNoteTargetIdList; + std::set< uint32_t > m_MountIdList; + std::set< uint32_t > m_MountActionIdList; + std::set< uint32_t > m_NpcEquipIdList; + std::set< uint32_t > m_OmenIdList; + std::set< uint32_t > m_OnlineStatusIdList; + std::set< uint32_t > m_OrchestrionIdList; + std::set< uint32_t > m_OrchestrionPathIdList; + std::set< uint32_t > m_ParamGrowIdList; + std::set< uint32_t > m_PetIdList; + std::set< uint32_t > m_PetActionIdList; + std::set< uint32_t > m_PictureIdList; + std::set< uint32_t > m_PlaceNameIdList; + std::set< uint32_t > m_QuestIdList; + std::set< uint32_t > m_QuestRewardOtherIdList; + std::set< uint32_t > m_RaceIdList; + std::set< uint32_t > m_RacingChocoboItemIdList; + std::set< uint32_t > m_RacingChocoboNameIdList; + std::set< uint32_t > m_RacingChocoboNameCategoryIdList; + std::set< uint32_t > m_RacingChocoboNameInfoIdList; + std::set< uint32_t > m_RacingChocoboParamIdList; + std::set< uint32_t > m_RecipeIdList; + std::set< uint32_t > m_RecipeElementIdList; + std::set< uint32_t > m_RecipeLevelTableIdList; + std::set< uint32_t > m_RecipeNotebookListIdList; + std::set< uint32_t > m_RelicIdList; + std::set< uint32_t > m_Relic3IdList; + std::set< uint32_t > m_RelicItemIdList; + std::set< uint32_t > m_RelicNoteIdList; + std::set< uint32_t > m_RelicNoteCategoryIdList; + std::set< uint32_t > m_RetainerTaskIdList; + std::set< uint32_t > m_RetainerTaskNormalIdList; + std::set< uint32_t > m_RetainerTaskParameterIdList; + std::set< uint32_t > m_RetainerTaskRandomIdList; + std::set< uint32_t > m_SalvageIdList; + std::set< uint32_t > m_SatisfactionNpcIdList; + std::set< uint32_t > m_SatisfactionSupplyIdList; + std::set< uint32_t > m_SatisfactionSupplyRewardIdList; + std::set< uint32_t > m_ScreenImageIdList; + std::set< uint32_t > m_SecretRecipeBookIdList; + std::set< uint32_t > m_SpearfishingItemIdList; + std::set< uint32_t > m_SpearfishingNotebookIdList; + std::set< uint32_t > m_SpecialShopIdList; + std::set< uint32_t > m_SpecialShopItemCategoryIdList; + std::set< uint32_t > m_StainIdList; + std::set< uint32_t > m_StatusIdList; + std::set< uint32_t > m_StoryIdList; + std::set< uint32_t > m_SwitchTalkIdList; + std::set< uint32_t > m_TerritoryTypeIdList; + std::set< uint32_t > m_TextCommandIdList; + std::set< uint32_t > m_TitleIdList; + std::set< uint32_t > m_TomestonesIdList; + std::set< uint32_t > m_TomestonesItemIdList; + std::set< uint32_t > m_TopicSelectIdList; + std::set< uint32_t > m_TownIdList; + std::set< uint32_t > m_TraitIdList; + std::set< uint32_t > m_TraitRecastIdList; + std::set< uint32_t > m_TraitTransientIdList; + std::set< uint32_t > m_TribeIdList; + std::set< uint32_t > m_TripleTriadIdList; + std::set< uint32_t > m_TripleTriadCardIdList; + std::set< uint32_t > m_TripleTriadCardRarityIdList; + std::set< uint32_t > m_TripleTriadCardResidentIdList; + std::set< uint32_t > m_TripleTriadCardTypeIdList; + std::set< uint32_t > m_TripleTriadCompetitionIdList; + std::set< uint32_t > m_TripleTriadRuleIdList; + std::set< uint32_t > m_TutorialIdList; + std::set< uint32_t > m_TutorialDPSIdList; + std::set< uint32_t > m_TutorialHealerIdList; + std::set< uint32_t > m_TutorialTankIdList; + std::set< uint32_t > m_WarpIdList; + std::set< uint32_t > m_WeatherIdList; + std::set< uint32_t > m_WeatherGroupIdList; + std::set< uint32_t > m_WeatherRateIdList; + std::set< uint32_t > m_WeeklyBingoOrderDataIdList; + std::set< uint32_t > m_WeeklyBingoRewardDataIdList; + std::set< uint32_t > m_WeeklyBingoTextIdList; + std::set< uint32_t > m_WorldDCGroupTypeIdList; + + +const std::set< uint32_t >& getAchievementIdList() +{ + if( m_AchievementIdList.size() == 0 ) + loadIdList( m_AchievementDat, m_AchievementIdList ); + return m_AchievementIdList; +} +const std::set< uint32_t >& getAchievementCategoryIdList() +{ + if( m_AchievementCategoryIdList.size() == 0 ) + loadIdList( m_AchievementCategoryDat, m_AchievementCategoryIdList ); + return m_AchievementCategoryIdList; +} +const std::set< uint32_t >& getAchievementKindIdList() +{ + if( m_AchievementKindIdList.size() == 0 ) + loadIdList( m_AchievementKindDat, m_AchievementKindIdList ); + return m_AchievementKindIdList; +} +const std::set< uint32_t >& getActionIdList() +{ + if( m_ActionIdList.size() == 0 ) + loadIdList( m_ActionDat, m_ActionIdList ); + return m_ActionIdList; +} +const std::set< uint32_t >& getActionCategoryIdList() +{ + if( m_ActionCategoryIdList.size() == 0 ) + loadIdList( m_ActionCategoryDat, m_ActionCategoryIdList ); + return m_ActionCategoryIdList; +} +const std::set< uint32_t >& getActionComboRouteIdList() +{ + if( m_ActionComboRouteIdList.size() == 0 ) + loadIdList( m_ActionComboRouteDat, m_ActionComboRouteIdList ); + return m_ActionComboRouteIdList; +} +const std::set< uint32_t >& getActionIndirectionIdList() +{ + if( m_ActionIndirectionIdList.size() == 0 ) + loadIdList( m_ActionIndirectionDat, m_ActionIndirectionIdList ); + return m_ActionIndirectionIdList; +} +const std::set< uint32_t >& getActionProcStatusIdList() +{ + if( m_ActionProcStatusIdList.size() == 0 ) + loadIdList( m_ActionProcStatusDat, m_ActionProcStatusIdList ); + return m_ActionProcStatusIdList; +} +const std::set< uint32_t >& getActionTimelineIdList() +{ + if( m_ActionTimelineIdList.size() == 0 ) + loadIdList( m_ActionTimelineDat, m_ActionTimelineIdList ); + return m_ActionTimelineIdList; +} +const std::set< uint32_t >& getActionTransientIdList() +{ + if( m_ActionTransientIdList.size() == 0 ) + loadIdList( m_ActionTransientDat, m_ActionTransientIdList ); + return m_ActionTransientIdList; +} +const std::set< uint32_t >& getAddonIdList() +{ + if( m_AddonIdList.size() == 0 ) + loadIdList( m_AddonDat, m_AddonIdList ); + return m_AddonIdList; +} +const std::set< uint32_t >& getAdventureIdList() +{ + if( m_AdventureIdList.size() == 0 ) + loadIdList( m_AdventureDat, m_AdventureIdList ); + return m_AdventureIdList; +} +const std::set< uint32_t >& getAdventureExPhaseIdList() +{ + if( m_AdventureExPhaseIdList.size() == 0 ) + loadIdList( m_AdventureExPhaseDat, m_AdventureExPhaseIdList ); + return m_AdventureExPhaseIdList; +} +const std::set< uint32_t >& getAetherCurrentIdList() +{ + if( m_AetherCurrentIdList.size() == 0 ) + loadIdList( m_AetherCurrentDat, m_AetherCurrentIdList ); + return m_AetherCurrentIdList; +} +const std::set< uint32_t >& getAetherialWheelIdList() +{ + if( m_AetherialWheelIdList.size() == 0 ) + loadIdList( m_AetherialWheelDat, m_AetherialWheelIdList ); + return m_AetherialWheelIdList; +} +const std::set< uint32_t >& getAetheryteIdList() +{ + if( m_AetheryteIdList.size() == 0 ) + loadIdList( m_AetheryteDat, m_AetheryteIdList ); + return m_AetheryteIdList; +} +const std::set< uint32_t >& getAirshipExplorationLevelIdList() +{ + if( m_AirshipExplorationLevelIdList.size() == 0 ) + loadIdList( m_AirshipExplorationLevelDat, m_AirshipExplorationLevelIdList ); + return m_AirshipExplorationLevelIdList; +} +const std::set< uint32_t >& getAirshipExplorationLogIdList() +{ + if( m_AirshipExplorationLogIdList.size() == 0 ) + loadIdList( m_AirshipExplorationLogDat, m_AirshipExplorationLogIdList ); + return m_AirshipExplorationLogIdList; +} +const std::set< uint32_t >& getAirshipExplorationParamTypeIdList() +{ + if( m_AirshipExplorationParamTypeIdList.size() == 0 ) + loadIdList( m_AirshipExplorationParamTypeDat, m_AirshipExplorationParamTypeIdList ); + return m_AirshipExplorationParamTypeIdList; +} +const std::set< uint32_t >& getAirshipExplorationPartIdList() +{ + if( m_AirshipExplorationPartIdList.size() == 0 ) + loadIdList( m_AirshipExplorationPartDat, m_AirshipExplorationPartIdList ); + return m_AirshipExplorationPartIdList; +} +const std::set< uint32_t >& getAirshipExplorationPointIdList() +{ + if( m_AirshipExplorationPointIdList.size() == 0 ) + loadIdList( m_AirshipExplorationPointDat, m_AirshipExplorationPointIdList ); + return m_AirshipExplorationPointIdList; +} +const std::set< uint32_t >& getAnimaWeapon5IdList() +{ + if( m_AnimaWeapon5IdList.size() == 0 ) + loadIdList( m_AnimaWeapon5Dat, m_AnimaWeapon5IdList ); + return m_AnimaWeapon5IdList; +} +const std::set< uint32_t >& getAnimaWeapon5ParamIdList() +{ + if( m_AnimaWeapon5ParamIdList.size() == 0 ) + loadIdList( m_AnimaWeapon5ParamDat, m_AnimaWeapon5ParamIdList ); + return m_AnimaWeapon5ParamIdList; +} +const std::set< uint32_t >& getAnimaWeapon5PatternGroupIdList() +{ + if( m_AnimaWeapon5PatternGroupIdList.size() == 0 ) + loadIdList( m_AnimaWeapon5PatternGroupDat, m_AnimaWeapon5PatternGroupIdList ); + return m_AnimaWeapon5PatternGroupIdList; +} +const std::set< uint32_t >& getAnimaWeapon5SpiritTalkIdList() +{ + if( m_AnimaWeapon5SpiritTalkIdList.size() == 0 ) + loadIdList( m_AnimaWeapon5SpiritTalkDat, m_AnimaWeapon5SpiritTalkIdList ); + return m_AnimaWeapon5SpiritTalkIdList; +} +const std::set< uint32_t >& getAnimaWeapon5SpiritTalkParamIdList() +{ + if( m_AnimaWeapon5SpiritTalkParamIdList.size() == 0 ) + loadIdList( m_AnimaWeapon5SpiritTalkParamDat, m_AnimaWeapon5SpiritTalkParamIdList ); + return m_AnimaWeapon5SpiritTalkParamIdList; +} +const std::set< uint32_t >& getAnimaWeapon5TradeItemIdList() +{ + if( m_AnimaWeapon5TradeItemIdList.size() == 0 ) + loadIdList( m_AnimaWeapon5TradeItemDat, m_AnimaWeapon5TradeItemIdList ); + return m_AnimaWeapon5TradeItemIdList; +} +const std::set< uint32_t >& getAnimaWeaponFUITalkIdList() +{ + if( m_AnimaWeaponFUITalkIdList.size() == 0 ) + loadIdList( m_AnimaWeaponFUITalkDat, m_AnimaWeaponFUITalkIdList ); + return m_AnimaWeaponFUITalkIdList; +} +const std::set< uint32_t >& getAnimaWeaponFUITalkParamIdList() +{ + if( m_AnimaWeaponFUITalkParamIdList.size() == 0 ) + loadIdList( m_AnimaWeaponFUITalkParamDat, m_AnimaWeaponFUITalkParamIdList ); + return m_AnimaWeaponFUITalkParamIdList; +} +const std::set< uint32_t >& getAnimaWeaponIconIdList() +{ + if( m_AnimaWeaponIconIdList.size() == 0 ) + loadIdList( m_AnimaWeaponIconDat, m_AnimaWeaponIconIdList ); + return m_AnimaWeaponIconIdList; +} +const std::set< uint32_t >& getAnimaWeaponItemIdList() +{ + if( m_AnimaWeaponItemIdList.size() == 0 ) + loadIdList( m_AnimaWeaponItemDat, m_AnimaWeaponItemIdList ); + return m_AnimaWeaponItemIdList; +} +const std::set< uint32_t >& getAquariumFishIdList() +{ + if( m_AquariumFishIdList.size() == 0 ) + loadIdList( m_AquariumFishDat, m_AquariumFishIdList ); + return m_AquariumFishIdList; +} +const std::set< uint32_t >& getAquariumWaterIdList() +{ + if( m_AquariumWaterIdList.size() == 0 ) + loadIdList( m_AquariumWaterDat, m_AquariumWaterIdList ); + return m_AquariumWaterIdList; +} +const std::set< uint32_t >& getAttackTypeIdList() +{ + if( m_AttackTypeIdList.size() == 0 ) + loadIdList( m_AttackTypeDat, m_AttackTypeIdList ); + return m_AttackTypeIdList; +} +const std::set< uint32_t >& getBalloonIdList() +{ + if( m_BalloonIdList.size() == 0 ) + loadIdList( m_BalloonDat, m_BalloonIdList ); + return m_BalloonIdList; +} +const std::set< uint32_t >& getBaseParamIdList() +{ + if( m_BaseParamIdList.size() == 0 ) + loadIdList( m_BaseParamDat, m_BaseParamIdList ); + return m_BaseParamIdList; +} +const std::set< uint32_t >& getBattleLeveIdList() +{ + if( m_BattleLeveIdList.size() == 0 ) + loadIdList( m_BattleLeveDat, m_BattleLeveIdList ); + return m_BattleLeveIdList; +} +const std::set< uint32_t >& getBeastRankBonusIdList() +{ + if( m_BeastRankBonusIdList.size() == 0 ) + loadIdList( m_BeastRankBonusDat, m_BeastRankBonusIdList ); + return m_BeastRankBonusIdList; +} +const std::set< uint32_t >& getBeastReputationRankIdList() +{ + if( m_BeastReputationRankIdList.size() == 0 ) + loadIdList( m_BeastReputationRankDat, m_BeastReputationRankIdList ); + return m_BeastReputationRankIdList; +} +const std::set< uint32_t >& getBeastTribeIdList() +{ + if( m_BeastTribeIdList.size() == 0 ) + loadIdList( m_BeastTribeDat, m_BeastTribeIdList ); + return m_BeastTribeIdList; +} +const std::set< uint32_t >& getBehaviorIdList() +{ + if( m_BehaviorIdList.size() == 0 ) + loadIdList( m_BehaviorDat, m_BehaviorIdList ); + return m_BehaviorIdList; +} +const std::set< uint32_t >& getBGMIdList() +{ + if( m_BGMIdList.size() == 0 ) + loadIdList( m_BGMDat, m_BGMIdList ); + return m_BGMIdList; +} +const std::set< uint32_t >& getBNpcAnnounceIconIdList() +{ + if( m_BNpcAnnounceIconIdList.size() == 0 ) + loadIdList( m_BNpcAnnounceIconDat, m_BNpcAnnounceIconIdList ); + return m_BNpcAnnounceIconIdList; +} +const std::set< uint32_t >& getBNpcBaseIdList() +{ + if( m_BNpcBaseIdList.size() == 0 ) + loadIdList( m_BNpcBaseDat, m_BNpcBaseIdList ); + return m_BNpcBaseIdList; +} +const std::set< uint32_t >& getBNpcCustomizeIdList() +{ + if( m_BNpcCustomizeIdList.size() == 0 ) + loadIdList( m_BNpcCustomizeDat, m_BNpcCustomizeIdList ); + return m_BNpcCustomizeIdList; +} +const std::set< uint32_t >& getBNpcNameIdList() +{ + if( m_BNpcNameIdList.size() == 0 ) + loadIdList( m_BNpcNameDat, m_BNpcNameIdList ); + return m_BNpcNameIdList; +} +const std::set< uint32_t >& getBuddyActionIdList() +{ + if( m_BuddyActionIdList.size() == 0 ) + loadIdList( m_BuddyActionDat, m_BuddyActionIdList ); + return m_BuddyActionIdList; +} +const std::set< uint32_t >& getBuddyEquipIdList() +{ + if( m_BuddyEquipIdList.size() == 0 ) + loadIdList( m_BuddyEquipDat, m_BuddyEquipIdList ); + return m_BuddyEquipIdList; +} +const std::set< uint32_t >& getBuddyItemIdList() +{ + if( m_BuddyItemIdList.size() == 0 ) + loadIdList( m_BuddyItemDat, m_BuddyItemIdList ); + return m_BuddyItemIdList; +} +const std::set< uint32_t >& getBuddyRankIdList() +{ + if( m_BuddyRankIdList.size() == 0 ) + loadIdList( m_BuddyRankDat, m_BuddyRankIdList ); + return m_BuddyRankIdList; +} +const std::set< uint32_t >& getBuddySkillIdList() +{ + if( m_BuddySkillIdList.size() == 0 ) + loadIdList( m_BuddySkillDat, m_BuddySkillIdList ); + return m_BuddySkillIdList; +} +const std::set< uint32_t >& getCabinetIdList() +{ + if( m_CabinetIdList.size() == 0 ) + loadIdList( m_CabinetDat, m_CabinetIdList ); + return m_CabinetIdList; +} +const std::set< uint32_t >& getCabinetCategoryIdList() +{ + if( m_CabinetCategoryIdList.size() == 0 ) + loadIdList( m_CabinetCategoryDat, m_CabinetCategoryIdList ); + return m_CabinetCategoryIdList; +} +const std::set< uint32_t >& getCalendarIdList() +{ + if( m_CalendarIdList.size() == 0 ) + loadIdList( m_CalendarDat, m_CalendarIdList ); + return m_CalendarIdList; +} +const std::set< uint32_t >& getChainBonusIdList() +{ + if( m_ChainBonusIdList.size() == 0 ) + loadIdList( m_ChainBonusDat, m_ChainBonusIdList ); + return m_ChainBonusIdList; +} +const std::set< uint32_t >& getCharaMakeCustomizeIdList() +{ + if( m_CharaMakeCustomizeIdList.size() == 0 ) + loadIdList( m_CharaMakeCustomizeDat, m_CharaMakeCustomizeIdList ); + return m_CharaMakeCustomizeIdList; +} +const std::set< uint32_t >& getCharaMakeTypeIdList() +{ + if( m_CharaMakeTypeIdList.size() == 0 ) + loadIdList( m_CharaMakeTypeDat, m_CharaMakeTypeIdList ); + return m_CharaMakeTypeIdList; +} +const std::set< uint32_t >& getChocoboRaceIdList() +{ + if( m_ChocoboRaceIdList.size() == 0 ) + loadIdList( m_ChocoboRaceDat, m_ChocoboRaceIdList ); + return m_ChocoboRaceIdList; +} +const std::set< uint32_t >& getChocoboRaceAbilityIdList() +{ + if( m_ChocoboRaceAbilityIdList.size() == 0 ) + loadIdList( m_ChocoboRaceAbilityDat, m_ChocoboRaceAbilityIdList ); + return m_ChocoboRaceAbilityIdList; +} +const std::set< uint32_t >& getChocoboRaceAbilityTypeIdList() +{ + if( m_ChocoboRaceAbilityTypeIdList.size() == 0 ) + loadIdList( m_ChocoboRaceAbilityTypeDat, m_ChocoboRaceAbilityTypeIdList ); + return m_ChocoboRaceAbilityTypeIdList; +} +const std::set< uint32_t >& getChocoboRaceItemIdList() +{ + if( m_ChocoboRaceItemIdList.size() == 0 ) + loadIdList( m_ChocoboRaceItemDat, m_ChocoboRaceItemIdList ); + return m_ChocoboRaceItemIdList; +} +const std::set< uint32_t >& getChocoboRaceRankIdList() +{ + if( m_ChocoboRaceRankIdList.size() == 0 ) + loadIdList( m_ChocoboRaceRankDat, m_ChocoboRaceRankIdList ); + return m_ChocoboRaceRankIdList; +} +const std::set< uint32_t >& getChocoboRaceStatusIdList() +{ + if( m_ChocoboRaceStatusIdList.size() == 0 ) + loadIdList( m_ChocoboRaceStatusDat, m_ChocoboRaceStatusIdList ); + return m_ChocoboRaceStatusIdList; +} +const std::set< uint32_t >& getChocoboRaceTerritoryIdList() +{ + if( m_ChocoboRaceTerritoryIdList.size() == 0 ) + loadIdList( m_ChocoboRaceTerritoryDat, m_ChocoboRaceTerritoryIdList ); + return m_ChocoboRaceTerritoryIdList; +} +const std::set< uint32_t >& getChocoboTaxiStandIdList() +{ + if( m_ChocoboTaxiStandIdList.size() == 0 ) + loadIdList( m_ChocoboTaxiStandDat, m_ChocoboTaxiStandIdList ); + return m_ChocoboTaxiStandIdList; +} +const std::set< uint32_t >& getClassJobIdList() +{ + if( m_ClassJobIdList.size() == 0 ) + loadIdList( m_ClassJobDat, m_ClassJobIdList ); + return m_ClassJobIdList; +} +const std::set< uint32_t >& getClassJobCategoryIdList() +{ + if( m_ClassJobCategoryIdList.size() == 0 ) + loadIdList( m_ClassJobCategoryDat, m_ClassJobCategoryIdList ); + return m_ClassJobCategoryIdList; +} +const std::set< uint32_t >& getCompanionIdList() +{ + if( m_CompanionIdList.size() == 0 ) + loadIdList( m_CompanionDat, m_CompanionIdList ); + return m_CompanionIdList; +} +const std::set< uint32_t >& getCompanionMoveIdList() +{ + if( m_CompanionMoveIdList.size() == 0 ) + loadIdList( m_CompanionMoveDat, m_CompanionMoveIdList ); + return m_CompanionMoveIdList; +} +const std::set< uint32_t >& getCompanionTransientIdList() +{ + if( m_CompanionTransientIdList.size() == 0 ) + loadIdList( m_CompanionTransientDat, m_CompanionTransientIdList ); + return m_CompanionTransientIdList; +} +const std::set< uint32_t >& getCompanyActionIdList() +{ + if( m_CompanyActionIdList.size() == 0 ) + loadIdList( m_CompanyActionDat, m_CompanyActionIdList ); + return m_CompanyActionIdList; +} +const std::set< uint32_t >& getCompanyCraftDraftIdList() +{ + if( m_CompanyCraftDraftIdList.size() == 0 ) + loadIdList( m_CompanyCraftDraftDat, m_CompanyCraftDraftIdList ); + return m_CompanyCraftDraftIdList; +} +const std::set< uint32_t >& getCompanyCraftDraftCategoryIdList() +{ + if( m_CompanyCraftDraftCategoryIdList.size() == 0 ) + loadIdList( m_CompanyCraftDraftCategoryDat, m_CompanyCraftDraftCategoryIdList ); + return m_CompanyCraftDraftCategoryIdList; +} +const std::set< uint32_t >& getCompanyCraftManufactoryStateIdList() +{ + if( m_CompanyCraftManufactoryStateIdList.size() == 0 ) + loadIdList( m_CompanyCraftManufactoryStateDat, m_CompanyCraftManufactoryStateIdList ); + return m_CompanyCraftManufactoryStateIdList; +} +const std::set< uint32_t >& getCompanyCraftPartIdList() +{ + if( m_CompanyCraftPartIdList.size() == 0 ) + loadIdList( m_CompanyCraftPartDat, m_CompanyCraftPartIdList ); + return m_CompanyCraftPartIdList; +} +const std::set< uint32_t >& getCompanyCraftProcessIdList() +{ + if( m_CompanyCraftProcessIdList.size() == 0 ) + loadIdList( m_CompanyCraftProcessDat, m_CompanyCraftProcessIdList ); + return m_CompanyCraftProcessIdList; +} +const std::set< uint32_t >& getCompanyCraftSequenceIdList() +{ + if( m_CompanyCraftSequenceIdList.size() == 0 ) + loadIdList( m_CompanyCraftSequenceDat, m_CompanyCraftSequenceIdList ); + return m_CompanyCraftSequenceIdList; +} +const std::set< uint32_t >& getCompanyCraftSupplyItemIdList() +{ + if( m_CompanyCraftSupplyItemIdList.size() == 0 ) + loadIdList( m_CompanyCraftSupplyItemDat, m_CompanyCraftSupplyItemIdList ); + return m_CompanyCraftSupplyItemIdList; +} +const std::set< uint32_t >& getCompanyCraftTypeIdList() +{ + if( m_CompanyCraftTypeIdList.size() == 0 ) + loadIdList( m_CompanyCraftTypeDat, m_CompanyCraftTypeIdList ); + return m_CompanyCraftTypeIdList; +} +const std::set< uint32_t >& getCompleteJournalIdList() +{ + if( m_CompleteJournalIdList.size() == 0 ) + loadIdList( m_CompleteJournalDat, m_CompleteJournalIdList ); + return m_CompleteJournalIdList; +} +const std::set< uint32_t >& getCompleteJournalCategoryIdList() +{ + if( m_CompleteJournalCategoryIdList.size() == 0 ) + loadIdList( m_CompleteJournalCategoryDat, m_CompleteJournalCategoryIdList ); + return m_CompleteJournalCategoryIdList; +} +const std::set< uint32_t >& getContentExActionIdList() +{ + if( m_ContentExActionIdList.size() == 0 ) + loadIdList( m_ContentExActionDat, m_ContentExActionIdList ); + return m_ContentExActionIdList; +} +const std::set< uint32_t >& getContentFinderConditionIdList() +{ + if( m_ContentFinderConditionIdList.size() == 0 ) + loadIdList( m_ContentFinderConditionDat, m_ContentFinderConditionIdList ); + return m_ContentFinderConditionIdList; +} +const std::set< uint32_t >& getContentFinderConditionTransientIdList() +{ + if( m_ContentFinderConditionTransientIdList.size() == 0 ) + loadIdList( m_ContentFinderConditionTransientDat, m_ContentFinderConditionTransientIdList ); + return m_ContentFinderConditionTransientIdList; +} +const std::set< uint32_t >& getContentMemberTypeIdList() +{ + if( m_ContentMemberTypeIdList.size() == 0 ) + loadIdList( m_ContentMemberTypeDat, m_ContentMemberTypeIdList ); + return m_ContentMemberTypeIdList; +} +const std::set< uint32_t >& getContentRouletteIdList() +{ + if( m_ContentRouletteIdList.size() == 0 ) + loadIdList( m_ContentRouletteDat, m_ContentRouletteIdList ); + return m_ContentRouletteIdList; +} +const std::set< uint32_t >& getContentTypeIdList() +{ + if( m_ContentTypeIdList.size() == 0 ) + loadIdList( m_ContentTypeDat, m_ContentTypeIdList ); + return m_ContentTypeIdList; +} +const std::set< uint32_t >& getCraftActionIdList() +{ + if( m_CraftActionIdList.size() == 0 ) + loadIdList( m_CraftActionDat, m_CraftActionIdList ); + return m_CraftActionIdList; +} +const std::set< uint32_t >& getCraftLeveIdList() +{ + if( m_CraftLeveIdList.size() == 0 ) + loadIdList( m_CraftLeveDat, m_CraftLeveIdList ); + return m_CraftLeveIdList; +} +const std::set< uint32_t >& getCraftTypeIdList() +{ + if( m_CraftTypeIdList.size() == 0 ) + loadIdList( m_CraftTypeDat, m_CraftTypeIdList ); + return m_CraftTypeIdList; +} +const std::set< uint32_t >& getCurrencyIdList() +{ + if( m_CurrencyIdList.size() == 0 ) + loadIdList( m_CurrencyDat, m_CurrencyIdList ); + return m_CurrencyIdList; +} +const std::set< uint32_t >& getCustomTalkIdList() +{ + if( m_CustomTalkIdList.size() == 0 ) + loadIdList( m_CustomTalkDat, m_CustomTalkIdList ); + return m_CustomTalkIdList; +} +const std::set< uint32_t >& getCutsceneIdList() +{ + if( m_CutsceneIdList.size() == 0 ) + loadIdList( m_CutsceneDat, m_CutsceneIdList ); + return m_CutsceneIdList; +} +const std::set< uint32_t >& getCutScreenImageIdList() +{ + if( m_CutScreenImageIdList.size() == 0 ) + loadIdList( m_CutScreenImageDat, m_CutScreenImageIdList ); + return m_CutScreenImageIdList; +} +const std::set< uint32_t >& getDailySupplyItemIdList() +{ + if( m_DailySupplyItemIdList.size() == 0 ) + loadIdList( m_DailySupplyItemDat, m_DailySupplyItemIdList ); + return m_DailySupplyItemIdList; +} +const std::set< uint32_t >& getDeepDungeonBanIdList() +{ + if( m_DeepDungeonBanIdList.size() == 0 ) + loadIdList( m_DeepDungeonBanDat, m_DeepDungeonBanIdList ); + return m_DeepDungeonBanIdList; +} +const std::set< uint32_t >& getDeepDungeonDangerIdList() +{ + if( m_DeepDungeonDangerIdList.size() == 0 ) + loadIdList( m_DeepDungeonDangerDat, m_DeepDungeonDangerIdList ); + return m_DeepDungeonDangerIdList; +} +const std::set< uint32_t >& getDeepDungeonEquipmentIdList() +{ + if( m_DeepDungeonEquipmentIdList.size() == 0 ) + loadIdList( m_DeepDungeonEquipmentDat, m_DeepDungeonEquipmentIdList ); + return m_DeepDungeonEquipmentIdList; +} +const std::set< uint32_t >& getDeepDungeonFloorEffectUIIdList() +{ + if( m_DeepDungeonFloorEffectUIIdList.size() == 0 ) + loadIdList( m_DeepDungeonFloorEffectUIDat, m_DeepDungeonFloorEffectUIIdList ); + return m_DeepDungeonFloorEffectUIIdList; +} +const std::set< uint32_t >& getDeepDungeonItemIdList() +{ + if( m_DeepDungeonItemIdList.size() == 0 ) + loadIdList( m_DeepDungeonItemDat, m_DeepDungeonItemIdList ); + return m_DeepDungeonItemIdList; +} +const std::set< uint32_t >& getDeepDungeonStatusIdList() +{ + if( m_DeepDungeonStatusIdList.size() == 0 ) + loadIdList( m_DeepDungeonStatusDat, m_DeepDungeonStatusIdList ); + return m_DeepDungeonStatusIdList; +} +const std::set< uint32_t >& getDefaultTalkIdList() +{ + if( m_DefaultTalkIdList.size() == 0 ) + loadIdList( m_DefaultTalkDat, m_DefaultTalkIdList ); + return m_DefaultTalkIdList; +} +const std::set< uint32_t >& getDeliveryQuestIdList() +{ + if( m_DeliveryQuestIdList.size() == 0 ) + loadIdList( m_DeliveryQuestDat, m_DeliveryQuestIdList ); + return m_DeliveryQuestIdList; +} +const std::set< uint32_t >& getDisposalShopIdList() +{ + if( m_DisposalShopIdList.size() == 0 ) + loadIdList( m_DisposalShopDat, m_DisposalShopIdList ); + return m_DisposalShopIdList; +} +const std::set< uint32_t >& getDisposalShopFilterTypeIdList() +{ + if( m_DisposalShopFilterTypeIdList.size() == 0 ) + loadIdList( m_DisposalShopFilterTypeDat, m_DisposalShopFilterTypeIdList ); + return m_DisposalShopFilterTypeIdList; +} +const std::set< uint32_t >& getDisposalShopItemIdList() +{ + if( m_DisposalShopItemIdList.size() == 0 ) + loadIdList( m_DisposalShopItemDat, m_DisposalShopItemIdList ); + return m_DisposalShopItemIdList; +} +const std::set< uint32_t >& getDpsChallengeIdList() +{ + if( m_DpsChallengeIdList.size() == 0 ) + loadIdList( m_DpsChallengeDat, m_DpsChallengeIdList ); + return m_DpsChallengeIdList; +} +const std::set< uint32_t >& getDpsChallengeOfficerIdList() +{ + if( m_DpsChallengeOfficerIdList.size() == 0 ) + loadIdList( m_DpsChallengeOfficerDat, m_DpsChallengeOfficerIdList ); + return m_DpsChallengeOfficerIdList; +} +const std::set< uint32_t >& getDpsChallengeTransientIdList() +{ + if( m_DpsChallengeTransientIdList.size() == 0 ) + loadIdList( m_DpsChallengeTransientDat, m_DpsChallengeTransientIdList ); + return m_DpsChallengeTransientIdList; +} +const std::set< uint32_t >& getEmoteIdList() +{ + if( m_EmoteIdList.size() == 0 ) + loadIdList( m_EmoteDat, m_EmoteIdList ); + return m_EmoteIdList; +} +const std::set< uint32_t >& getEmoteCategoryIdList() +{ + if( m_EmoteCategoryIdList.size() == 0 ) + loadIdList( m_EmoteCategoryDat, m_EmoteCategoryIdList ); + return m_EmoteCategoryIdList; +} +const std::set< uint32_t >& getENpcBaseIdList() +{ + if( m_ENpcBaseIdList.size() == 0 ) + loadIdList( m_ENpcBaseDat, m_ENpcBaseIdList ); + return m_ENpcBaseIdList; +} +const std::set< uint32_t >& getENpcResidentIdList() +{ + if( m_ENpcResidentIdList.size() == 0 ) + loadIdList( m_ENpcResidentDat, m_ENpcResidentIdList ); + return m_ENpcResidentIdList; +} +const std::set< uint32_t >& getEObjIdList() +{ + if( m_EObjIdList.size() == 0 ) + loadIdList( m_EObjDat, m_EObjIdList ); + return m_EObjIdList; +} +const std::set< uint32_t >& getEquipRaceCategoryIdList() +{ + if( m_EquipRaceCategoryIdList.size() == 0 ) + loadIdList( m_EquipRaceCategoryDat, m_EquipRaceCategoryIdList ); + return m_EquipRaceCategoryIdList; +} +const std::set< uint32_t >& getEquipSlotCategoryIdList() +{ + if( m_EquipSlotCategoryIdList.size() == 0 ) + loadIdList( m_EquipSlotCategoryDat, m_EquipSlotCategoryIdList ); + return m_EquipSlotCategoryIdList; +} +const std::set< uint32_t >& getEventActionIdList() +{ + if( m_EventActionIdList.size() == 0 ) + loadIdList( m_EventActionDat, m_EventActionIdList ); + return m_EventActionIdList; +} +const std::set< uint32_t >& getEventIconPriorityIdList() +{ + if( m_EventIconPriorityIdList.size() == 0 ) + loadIdList( m_EventIconPriorityDat, m_EventIconPriorityIdList ); + return m_EventIconPriorityIdList; +} +const std::set< uint32_t >& getEventIconTypeIdList() +{ + if( m_EventIconTypeIdList.size() == 0 ) + loadIdList( m_EventIconTypeDat, m_EventIconTypeIdList ); + return m_EventIconTypeIdList; +} +const std::set< uint32_t >& getEventItemIdList() +{ + if( m_EventItemIdList.size() == 0 ) + loadIdList( m_EventItemDat, m_EventItemIdList ); + return m_EventItemIdList; +} +const std::set< uint32_t >& getEventItemHelpIdList() +{ + if( m_EventItemHelpIdList.size() == 0 ) + loadIdList( m_EventItemHelpDat, m_EventItemHelpIdList ); + return m_EventItemHelpIdList; +} +const std::set< uint32_t >& getExVersionIdList() +{ + if( m_ExVersionIdList.size() == 0 ) + loadIdList( m_ExVersionDat, m_ExVersionIdList ); + return m_ExVersionIdList; +} +const std::set< uint32_t >& getFateIdList() +{ + if( m_FateIdList.size() == 0 ) + loadIdList( m_FateDat, m_FateIdList ); + return m_FateIdList; +} +const std::set< uint32_t >& getFCActivityIdList() +{ + if( m_FCActivityIdList.size() == 0 ) + loadIdList( m_FCActivityDat, m_FCActivityIdList ); + return m_FCActivityIdList; +} +const std::set< uint32_t >& getFCAuthorityIdList() +{ + if( m_FCAuthorityIdList.size() == 0 ) + loadIdList( m_FCAuthorityDat, m_FCAuthorityIdList ); + return m_FCAuthorityIdList; +} +const std::set< uint32_t >& getFCAuthorityCategoryIdList() +{ + if( m_FCAuthorityCategoryIdList.size() == 0 ) + loadIdList( m_FCAuthorityCategoryDat, m_FCAuthorityCategoryIdList ); + return m_FCAuthorityCategoryIdList; +} +const std::set< uint32_t >& getFCChestNameIdList() +{ + if( m_FCChestNameIdList.size() == 0 ) + loadIdList( m_FCChestNameDat, m_FCChestNameIdList ); + return m_FCChestNameIdList; +} +const std::set< uint32_t >& getFccShopIdList() +{ + if( m_FccShopIdList.size() == 0 ) + loadIdList( m_FccShopDat, m_FccShopIdList ); + return m_FccShopIdList; +} +const std::set< uint32_t >& getFCHierarchyIdList() +{ + if( m_FCHierarchyIdList.size() == 0 ) + loadIdList( m_FCHierarchyDat, m_FCHierarchyIdList ); + return m_FCHierarchyIdList; +} +const std::set< uint32_t >& getFCReputationIdList() +{ + if( m_FCReputationIdList.size() == 0 ) + loadIdList( m_FCReputationDat, m_FCReputationIdList ); + return m_FCReputationIdList; +} +const std::set< uint32_t >& getFCRightsIdList() +{ + if( m_FCRightsIdList.size() == 0 ) + loadIdList( m_FCRightsDat, m_FCRightsIdList ); + return m_FCRightsIdList; +} +const std::set< uint32_t >& getFishingSpotIdList() +{ + if( m_FishingSpotIdList.size() == 0 ) + loadIdList( m_FishingSpotDat, m_FishingSpotIdList ); + return m_FishingSpotIdList; +} +const std::set< uint32_t >& getFishParameterIdList() +{ + if( m_FishParameterIdList.size() == 0 ) + loadIdList( m_FishParameterDat, m_FishParameterIdList ); + return m_FishParameterIdList; +} +const std::set< uint32_t >& getGardeningSeedIdList() +{ + if( m_GardeningSeedIdList.size() == 0 ) + loadIdList( m_GardeningSeedDat, m_GardeningSeedIdList ); + return m_GardeningSeedIdList; +} +const std::set< uint32_t >& getGatheringConditionIdList() +{ + if( m_GatheringConditionIdList.size() == 0 ) + loadIdList( m_GatheringConditionDat, m_GatheringConditionIdList ); + return m_GatheringConditionIdList; +} +const std::set< uint32_t >& getGatheringExpIdList() +{ + if( m_GatheringExpIdList.size() == 0 ) + loadIdList( m_GatheringExpDat, m_GatheringExpIdList ); + return m_GatheringExpIdList; +} +const std::set< uint32_t >& getGatheringItemIdList() +{ + if( m_GatheringItemIdList.size() == 0 ) + loadIdList( m_GatheringItemDat, m_GatheringItemIdList ); + return m_GatheringItemIdList; +} +const std::set< uint32_t >& getGatheringItemLevelConvertTableIdList() +{ + if( m_GatheringItemLevelConvertTableIdList.size() == 0 ) + loadIdList( m_GatheringItemLevelConvertTableDat, m_GatheringItemLevelConvertTableIdList ); + return m_GatheringItemLevelConvertTableIdList; +} +const std::set< uint32_t >& getGatheringItemPointIdList() +{ + if( m_GatheringItemPointIdList.size() == 0 ) + loadIdList( m_GatheringItemPointDat, m_GatheringItemPointIdList ); + return m_GatheringItemPointIdList; +} +const std::set< uint32_t >& getGatheringNotebookListIdList() +{ + if( m_GatheringNotebookListIdList.size() == 0 ) + loadIdList( m_GatheringNotebookListDat, m_GatheringNotebookListIdList ); + return m_GatheringNotebookListIdList; +} +const std::set< uint32_t >& getGatheringPointIdList() +{ + if( m_GatheringPointIdList.size() == 0 ) + loadIdList( m_GatheringPointDat, m_GatheringPointIdList ); + return m_GatheringPointIdList; +} +const std::set< uint32_t >& getGatheringPointBaseIdList() +{ + if( m_GatheringPointBaseIdList.size() == 0 ) + loadIdList( m_GatheringPointBaseDat, m_GatheringPointBaseIdList ); + return m_GatheringPointBaseIdList; +} +const std::set< uint32_t >& getGatheringPointBonusIdList() +{ + if( m_GatheringPointBonusIdList.size() == 0 ) + loadIdList( m_GatheringPointBonusDat, m_GatheringPointBonusIdList ); + return m_GatheringPointBonusIdList; +} +const std::set< uint32_t >& getGatheringPointBonusTypeIdList() +{ + if( m_GatheringPointBonusTypeIdList.size() == 0 ) + loadIdList( m_GatheringPointBonusTypeDat, m_GatheringPointBonusTypeIdList ); + return m_GatheringPointBonusTypeIdList; +} +const std::set< uint32_t >& getGatheringPointNameIdList() +{ + if( m_GatheringPointNameIdList.size() == 0 ) + loadIdList( m_GatheringPointNameDat, m_GatheringPointNameIdList ); + return m_GatheringPointNameIdList; +} +const std::set< uint32_t >& getGatheringSubCategoryIdList() +{ + if( m_GatheringSubCategoryIdList.size() == 0 ) + loadIdList( m_GatheringSubCategoryDat, m_GatheringSubCategoryIdList ); + return m_GatheringSubCategoryIdList; +} +const std::set< uint32_t >& getGatheringTypeIdList() +{ + if( m_GatheringTypeIdList.size() == 0 ) + loadIdList( m_GatheringTypeDat, m_GatheringTypeIdList ); + return m_GatheringTypeIdList; +} +const std::set< uint32_t >& getGcArmyExpeditionIdList() +{ + if( m_GcArmyExpeditionIdList.size() == 0 ) + loadIdList( m_GcArmyExpeditionDat, m_GcArmyExpeditionIdList ); + return m_GcArmyExpeditionIdList; +} +const std::set< uint32_t >& getGcArmyExpeditionMemberBonusIdList() +{ + if( m_GcArmyExpeditionMemberBonusIdList.size() == 0 ) + loadIdList( m_GcArmyExpeditionMemberBonusDat, m_GcArmyExpeditionMemberBonusIdList ); + return m_GcArmyExpeditionMemberBonusIdList; +} +const std::set< uint32_t >& getGcArmyExpeditionTypeIdList() +{ + if( m_GcArmyExpeditionTypeIdList.size() == 0 ) + loadIdList( m_GcArmyExpeditionTypeDat, m_GcArmyExpeditionTypeIdList ); + return m_GcArmyExpeditionTypeIdList; +} +const std::set< uint32_t >& getGcArmyMemberGrowIdList() +{ + if( m_GcArmyMemberGrowIdList.size() == 0 ) + loadIdList( m_GcArmyMemberGrowDat, m_GcArmyMemberGrowIdList ); + return m_GcArmyMemberGrowIdList; +} +const std::set< uint32_t >& getGcArmyTrainingIdList() +{ + if( m_GcArmyTrainingIdList.size() == 0 ) + loadIdList( m_GcArmyTrainingDat, m_GcArmyTrainingIdList ); + return m_GcArmyTrainingIdList; +} +const std::set< uint32_t >& getGCScripShopCategoryIdList() +{ + if( m_GCScripShopCategoryIdList.size() == 0 ) + loadIdList( m_GCScripShopCategoryDat, m_GCScripShopCategoryIdList ); + return m_GCScripShopCategoryIdList; +} +const std::set< uint32_t >& getGCScripShopItemIdList() +{ + if( m_GCScripShopItemIdList.size() == 0 ) + loadIdList( m_GCScripShopItemDat, m_GCScripShopItemIdList ); + return m_GCScripShopItemIdList; +} +const std::set< uint32_t >& getGCShopIdList() +{ + if( m_GCShopIdList.size() == 0 ) + loadIdList( m_GCShopDat, m_GCShopIdList ); + return m_GCShopIdList; +} +const std::set< uint32_t >& getGCShopItemCategoryIdList() +{ + if( m_GCShopItemCategoryIdList.size() == 0 ) + loadIdList( m_GCShopItemCategoryDat, m_GCShopItemCategoryIdList ); + return m_GCShopItemCategoryIdList; +} +const std::set< uint32_t >& getGCSupplyDutyIdList() +{ + if( m_GCSupplyDutyIdList.size() == 0 ) + loadIdList( m_GCSupplyDutyDat, m_GCSupplyDutyIdList ); + return m_GCSupplyDutyIdList; +} +const std::set< uint32_t >& getGCSupplyDutyRewardIdList() +{ + if( m_GCSupplyDutyRewardIdList.size() == 0 ) + loadIdList( m_GCSupplyDutyRewardDat, m_GCSupplyDutyRewardIdList ); + return m_GCSupplyDutyRewardIdList; +} +const std::set< uint32_t >& getGeneralActionIdList() +{ + if( m_GeneralActionIdList.size() == 0 ) + loadIdList( m_GeneralActionDat, m_GeneralActionIdList ); + return m_GeneralActionIdList; +} +const std::set< uint32_t >& getGilShopIdList() +{ + if( m_GilShopIdList.size() == 0 ) + loadIdList( m_GilShopDat, m_GilShopIdList ); + return m_GilShopIdList; +} +const std::set< uint32_t >& getGilShopItemIdList() +{ + if( m_GilShopItemIdList.size() == 0 ) + loadIdList( m_GilShopItemDat, m_GilShopItemIdList ); + return m_GilShopItemIdList; +} +const std::set< uint32_t >& getGoldSaucerTextDataIdList() +{ + if( m_GoldSaucerTextDataIdList.size() == 0 ) + loadIdList( m_GoldSaucerTextDataDat, m_GoldSaucerTextDataIdList ); + return m_GoldSaucerTextDataIdList; +} +const std::set< uint32_t >& getGrandCompanyIdList() +{ + if( m_GrandCompanyIdList.size() == 0 ) + loadIdList( m_GrandCompanyDat, m_GrandCompanyIdList ); + return m_GrandCompanyIdList; +} +const std::set< uint32_t >& getGrandCompanyRankIdList() +{ + if( m_GrandCompanyRankIdList.size() == 0 ) + loadIdList( m_GrandCompanyRankDat, m_GrandCompanyRankIdList ); + return m_GrandCompanyRankIdList; +} +const std::set< uint32_t >& getGuardianDeityIdList() +{ + if( m_GuardianDeityIdList.size() == 0 ) + loadIdList( m_GuardianDeityDat, m_GuardianDeityIdList ); + return m_GuardianDeityIdList; +} +const std::set< uint32_t >& getGuildleveAssignmentIdList() +{ + if( m_GuildleveAssignmentIdList.size() == 0 ) + loadIdList( m_GuildleveAssignmentDat, m_GuildleveAssignmentIdList ); + return m_GuildleveAssignmentIdList; +} +const std::set< uint32_t >& getGuildOrderGuideIdList() +{ + if( m_GuildOrderGuideIdList.size() == 0 ) + loadIdList( m_GuildOrderGuideDat, m_GuildOrderGuideIdList ); + return m_GuildOrderGuideIdList; +} +const std::set< uint32_t >& getGuildOrderOfficerIdList() +{ + if( m_GuildOrderOfficerIdList.size() == 0 ) + loadIdList( m_GuildOrderOfficerDat, m_GuildOrderOfficerIdList ); + return m_GuildOrderOfficerIdList; +} +const std::set< uint32_t >& getHouseRetainerPoseIdList() +{ + if( m_HouseRetainerPoseIdList.size() == 0 ) + loadIdList( m_HouseRetainerPoseDat, m_HouseRetainerPoseIdList ); + return m_HouseRetainerPoseIdList; +} +const std::set< uint32_t >& getHousingFurnitureIdList() +{ + if( m_HousingFurnitureIdList.size() == 0 ) + loadIdList( m_HousingFurnitureDat, m_HousingFurnitureIdList ); + return m_HousingFurnitureIdList; +} +const std::set< uint32_t >& getHousingYardObjectIdList() +{ + if( m_HousingYardObjectIdList.size() == 0 ) + loadIdList( m_HousingYardObjectDat, m_HousingYardObjectIdList ); + return m_HousingYardObjectIdList; +} +const std::set< uint32_t >& getInstanceContentIdList() +{ + if( m_InstanceContentIdList.size() == 0 ) + loadIdList( m_InstanceContentDat, m_InstanceContentIdList ); + return m_InstanceContentIdList; +} +const std::set< uint32_t >& getInstanceContentBuffIdList() +{ + if( m_InstanceContentBuffIdList.size() == 0 ) + loadIdList( m_InstanceContentBuffDat, m_InstanceContentBuffIdList ); + return m_InstanceContentBuffIdList; +} +const std::set< uint32_t >& getInstanceContentTextDataIdList() +{ + if( m_InstanceContentTextDataIdList.size() == 0 ) + loadIdList( m_InstanceContentTextDataDat, m_InstanceContentTextDataIdList ); + return m_InstanceContentTextDataIdList; +} +const std::set< uint32_t >& getInstanceContentTypeIdList() +{ + if( m_InstanceContentTypeIdList.size() == 0 ) + loadIdList( m_InstanceContentTypeDat, m_InstanceContentTypeIdList ); + return m_InstanceContentTypeIdList; +} +const std::set< uint32_t >& getItemIdList() +{ + if( m_ItemIdList.size() == 0 ) + loadIdList( m_ItemDat, m_ItemIdList ); + return m_ItemIdList; +} +const std::set< uint32_t >& getItemActionIdList() +{ + if( m_ItemActionIdList.size() == 0 ) + loadIdList( m_ItemActionDat, m_ItemActionIdList ); + return m_ItemActionIdList; +} +const std::set< uint32_t >& getItemFoodIdList() +{ + if( m_ItemFoodIdList.size() == 0 ) + loadIdList( m_ItemFoodDat, m_ItemFoodIdList ); + return m_ItemFoodIdList; +} +const std::set< uint32_t >& getItemSearchCategoryIdList() +{ + if( m_ItemSearchCategoryIdList.size() == 0 ) + loadIdList( m_ItemSearchCategoryDat, m_ItemSearchCategoryIdList ); + return m_ItemSearchCategoryIdList; +} +const std::set< uint32_t >& getItemSeriesIdList() +{ + if( m_ItemSeriesIdList.size() == 0 ) + loadIdList( m_ItemSeriesDat, m_ItemSeriesIdList ); + return m_ItemSeriesIdList; +} +const std::set< uint32_t >& getItemSpecialBonusIdList() +{ + if( m_ItemSpecialBonusIdList.size() == 0 ) + loadIdList( m_ItemSpecialBonusDat, m_ItemSpecialBonusIdList ); + return m_ItemSpecialBonusIdList; +} +const std::set< uint32_t >& getItemUICategoryIdList() +{ + if( m_ItemUICategoryIdList.size() == 0 ) + loadIdList( m_ItemUICategoryDat, m_ItemUICategoryIdList ); + return m_ItemUICategoryIdList; +} +const std::set< uint32_t >& getJournalCategoryIdList() +{ + if( m_JournalCategoryIdList.size() == 0 ) + loadIdList( m_JournalCategoryDat, m_JournalCategoryIdList ); + return m_JournalCategoryIdList; +} +const std::set< uint32_t >& getJournalGenreIdList() +{ + if( m_JournalGenreIdList.size() == 0 ) + loadIdList( m_JournalGenreDat, m_JournalGenreIdList ); + return m_JournalGenreIdList; +} +const std::set< uint32_t >& getJournalSectionIdList() +{ + if( m_JournalSectionIdList.size() == 0 ) + loadIdList( m_JournalSectionDat, m_JournalSectionIdList ); + return m_JournalSectionIdList; +} +const std::set< uint32_t >& getLeveIdList() +{ + if( m_LeveIdList.size() == 0 ) + loadIdList( m_LeveDat, m_LeveIdList ); + return m_LeveIdList; +} +const std::set< uint32_t >& getLeveAssignmentTypeIdList() +{ + if( m_LeveAssignmentTypeIdList.size() == 0 ) + loadIdList( m_LeveAssignmentTypeDat, m_LeveAssignmentTypeIdList ); + return m_LeveAssignmentTypeIdList; +} +const std::set< uint32_t >& getLeveClientIdList() +{ + if( m_LeveClientIdList.size() == 0 ) + loadIdList( m_LeveClientDat, m_LeveClientIdList ); + return m_LeveClientIdList; +} +const std::set< uint32_t >& getLevelIdList() +{ + if( m_LevelIdList.size() == 0 ) + loadIdList( m_LevelDat, m_LevelIdList ); + return m_LevelIdList; +} +const std::set< uint32_t >& getLeveRewardItemIdList() +{ + if( m_LeveRewardItemIdList.size() == 0 ) + loadIdList( m_LeveRewardItemDat, m_LeveRewardItemIdList ); + return m_LeveRewardItemIdList; +} +const std::set< uint32_t >& getLeveRewardItemGroupIdList() +{ + if( m_LeveRewardItemGroupIdList.size() == 0 ) + loadIdList( m_LeveRewardItemGroupDat, m_LeveRewardItemGroupIdList ); + return m_LeveRewardItemGroupIdList; +} +const std::set< uint32_t >& getLeveVfxIdList() +{ + if( m_LeveVfxIdList.size() == 0 ) + loadIdList( m_LeveVfxDat, m_LeveVfxIdList ); + return m_LeveVfxIdList; +} +const std::set< uint32_t >& getLogFilterIdList() +{ + if( m_LogFilterIdList.size() == 0 ) + loadIdList( m_LogFilterDat, m_LogFilterIdList ); + return m_LogFilterIdList; +} +const std::set< uint32_t >& getLogKindIdList() +{ + if( m_LogKindIdList.size() == 0 ) + loadIdList( m_LogKindDat, m_LogKindIdList ); + return m_LogKindIdList; +} +const std::set< uint32_t >& getLogKindCategoryTextIdList() +{ + if( m_LogKindCategoryTextIdList.size() == 0 ) + loadIdList( m_LogKindCategoryTextDat, m_LogKindCategoryTextIdList ); + return m_LogKindCategoryTextIdList; +} +const std::set< uint32_t >& getLogMessageIdList() +{ + if( m_LogMessageIdList.size() == 0 ) + loadIdList( m_LogMessageDat, m_LogMessageIdList ); + return m_LogMessageIdList; +} +const std::set< uint32_t >& getMacroIconIdList() +{ + if( m_MacroIconIdList.size() == 0 ) + loadIdList( m_MacroIconDat, m_MacroIconIdList ); + return m_MacroIconIdList; +} +const std::set< uint32_t >& getMacroIconRedirectOldIdList() +{ + if( m_MacroIconRedirectOldIdList.size() == 0 ) + loadIdList( m_MacroIconRedirectOldDat, m_MacroIconRedirectOldIdList ); + return m_MacroIconRedirectOldIdList; +} +const std::set< uint32_t >& getMainCommandIdList() +{ + if( m_MainCommandIdList.size() == 0 ) + loadIdList( m_MainCommandDat, m_MainCommandIdList ); + return m_MainCommandIdList; +} +const std::set< uint32_t >& getMainCommandCategoryIdList() +{ + if( m_MainCommandCategoryIdList.size() == 0 ) + loadIdList( m_MainCommandCategoryDat, m_MainCommandCategoryIdList ); + return m_MainCommandCategoryIdList; +} +const std::set< uint32_t >& getMapIdList() +{ + if( m_MapIdList.size() == 0 ) + loadIdList( m_MapDat, m_MapIdList ); + return m_MapIdList; +} +const std::set< uint32_t >& getMapMarkerIdList() +{ + if( m_MapMarkerIdList.size() == 0 ) + loadIdList( m_MapMarkerDat, m_MapMarkerIdList ); + return m_MapMarkerIdList; +} +const std::set< uint32_t >& getMapSymbolIdList() +{ + if( m_MapSymbolIdList.size() == 0 ) + loadIdList( m_MapSymbolDat, m_MapSymbolIdList ); + return m_MapSymbolIdList; +} +const std::set< uint32_t >& getMasterpieceSupplyDutyIdList() +{ + if( m_MasterpieceSupplyDutyIdList.size() == 0 ) + loadIdList( m_MasterpieceSupplyDutyDat, m_MasterpieceSupplyDutyIdList ); + return m_MasterpieceSupplyDutyIdList; +} +const std::set< uint32_t >& getMasterpieceSupplyMultiplierIdList() +{ + if( m_MasterpieceSupplyMultiplierIdList.size() == 0 ) + loadIdList( m_MasterpieceSupplyMultiplierDat, m_MasterpieceSupplyMultiplierIdList ); + return m_MasterpieceSupplyMultiplierIdList; +} +const std::set< uint32_t >& getMateriaIdList() +{ + if( m_MateriaIdList.size() == 0 ) + loadIdList( m_MateriaDat, m_MateriaIdList ); + return m_MateriaIdList; +} +const std::set< uint32_t >& getMinionRaceIdList() +{ + if( m_MinionRaceIdList.size() == 0 ) + loadIdList( m_MinionRaceDat, m_MinionRaceIdList ); + return m_MinionRaceIdList; +} +const std::set< uint32_t >& getMinionRulesIdList() +{ + if( m_MinionRulesIdList.size() == 0 ) + loadIdList( m_MinionRulesDat, m_MinionRulesIdList ); + return m_MinionRulesIdList; +} +const std::set< uint32_t >& getMinionSkillTypeIdList() +{ + if( m_MinionSkillTypeIdList.size() == 0 ) + loadIdList( m_MinionSkillTypeDat, m_MinionSkillTypeIdList ); + return m_MinionSkillTypeIdList; +} +const std::set< uint32_t >& getMobHuntTargetIdList() +{ + if( m_MobHuntTargetIdList.size() == 0 ) + loadIdList( m_MobHuntTargetDat, m_MobHuntTargetIdList ); + return m_MobHuntTargetIdList; +} +const std::set< uint32_t >& getModelCharaIdList() +{ + if( m_ModelCharaIdList.size() == 0 ) + loadIdList( m_ModelCharaDat, m_ModelCharaIdList ); + return m_ModelCharaIdList; +} +const std::set< uint32_t >& getMonsterNoteIdList() +{ + if( m_MonsterNoteIdList.size() == 0 ) + loadIdList( m_MonsterNoteDat, m_MonsterNoteIdList ); + return m_MonsterNoteIdList; +} +const std::set< uint32_t >& getMonsterNoteTargetIdList() +{ + if( m_MonsterNoteTargetIdList.size() == 0 ) + loadIdList( m_MonsterNoteTargetDat, m_MonsterNoteTargetIdList ); + return m_MonsterNoteTargetIdList; +} +const std::set< uint32_t >& getMountIdList() +{ + if( m_MountIdList.size() == 0 ) + loadIdList( m_MountDat, m_MountIdList ); + return m_MountIdList; +} +const std::set< uint32_t >& getMountActionIdList() +{ + if( m_MountActionIdList.size() == 0 ) + loadIdList( m_MountActionDat, m_MountActionIdList ); + return m_MountActionIdList; +} +const std::set< uint32_t >& getNpcEquipIdList() +{ + if( m_NpcEquipIdList.size() == 0 ) + loadIdList( m_NpcEquipDat, m_NpcEquipIdList ); + return m_NpcEquipIdList; +} +const std::set< uint32_t >& getOmenIdList() +{ + if( m_OmenIdList.size() == 0 ) + loadIdList( m_OmenDat, m_OmenIdList ); + return m_OmenIdList; +} +const std::set< uint32_t >& getOnlineStatusIdList() +{ + if( m_OnlineStatusIdList.size() == 0 ) + loadIdList( m_OnlineStatusDat, m_OnlineStatusIdList ); + return m_OnlineStatusIdList; +} +const std::set< uint32_t >& getOrchestrionIdList() +{ + if( m_OrchestrionIdList.size() == 0 ) + loadIdList( m_OrchestrionDat, m_OrchestrionIdList ); + return m_OrchestrionIdList; +} +const std::set< uint32_t >& getOrchestrionPathIdList() +{ + if( m_OrchestrionPathIdList.size() == 0 ) + loadIdList( m_OrchestrionPathDat, m_OrchestrionPathIdList ); + return m_OrchestrionPathIdList; +} +const std::set< uint32_t >& getParamGrowIdList() +{ + if( m_ParamGrowIdList.size() == 0 ) + loadIdList( m_ParamGrowDat, m_ParamGrowIdList ); + return m_ParamGrowIdList; +} +const std::set< uint32_t >& getPetIdList() +{ + if( m_PetIdList.size() == 0 ) + loadIdList( m_PetDat, m_PetIdList ); + return m_PetIdList; +} +const std::set< uint32_t >& getPetActionIdList() +{ + if( m_PetActionIdList.size() == 0 ) + loadIdList( m_PetActionDat, m_PetActionIdList ); + return m_PetActionIdList; +} +const std::set< uint32_t >& getPictureIdList() +{ + if( m_PictureIdList.size() == 0 ) + loadIdList( m_PictureDat, m_PictureIdList ); + return m_PictureIdList; +} +const std::set< uint32_t >& getPlaceNameIdList() +{ + if( m_PlaceNameIdList.size() == 0 ) + loadIdList( m_PlaceNameDat, m_PlaceNameIdList ); + return m_PlaceNameIdList; +} +const std::set< uint32_t >& getQuestIdList() +{ + if( m_QuestIdList.size() == 0 ) + loadIdList( m_QuestDat, m_QuestIdList ); + return m_QuestIdList; +} +const std::set< uint32_t >& getQuestRewardOtherIdList() +{ + if( m_QuestRewardOtherIdList.size() == 0 ) + loadIdList( m_QuestRewardOtherDat, m_QuestRewardOtherIdList ); + return m_QuestRewardOtherIdList; +} +const std::set< uint32_t >& getRaceIdList() +{ + if( m_RaceIdList.size() == 0 ) + loadIdList( m_RaceDat, m_RaceIdList ); + return m_RaceIdList; +} +const std::set< uint32_t >& getRacingChocoboItemIdList() +{ + if( m_RacingChocoboItemIdList.size() == 0 ) + loadIdList( m_RacingChocoboItemDat, m_RacingChocoboItemIdList ); + return m_RacingChocoboItemIdList; +} +const std::set< uint32_t >& getRacingChocoboNameIdList() +{ + if( m_RacingChocoboNameIdList.size() == 0 ) + loadIdList( m_RacingChocoboNameDat, m_RacingChocoboNameIdList ); + return m_RacingChocoboNameIdList; +} +const std::set< uint32_t >& getRacingChocoboNameCategoryIdList() +{ + if( m_RacingChocoboNameCategoryIdList.size() == 0 ) + loadIdList( m_RacingChocoboNameCategoryDat, m_RacingChocoboNameCategoryIdList ); + return m_RacingChocoboNameCategoryIdList; +} +const std::set< uint32_t >& getRacingChocoboNameInfoIdList() +{ + if( m_RacingChocoboNameInfoIdList.size() == 0 ) + loadIdList( m_RacingChocoboNameInfoDat, m_RacingChocoboNameInfoIdList ); + return m_RacingChocoboNameInfoIdList; +} +const std::set< uint32_t >& getRacingChocoboParamIdList() +{ + if( m_RacingChocoboParamIdList.size() == 0 ) + loadIdList( m_RacingChocoboParamDat, m_RacingChocoboParamIdList ); + return m_RacingChocoboParamIdList; +} +const std::set< uint32_t >& getRecipeIdList() +{ + if( m_RecipeIdList.size() == 0 ) + loadIdList( m_RecipeDat, m_RecipeIdList ); + return m_RecipeIdList; +} +const std::set< uint32_t >& getRecipeElementIdList() +{ + if( m_RecipeElementIdList.size() == 0 ) + loadIdList( m_RecipeElementDat, m_RecipeElementIdList ); + return m_RecipeElementIdList; +} +const std::set< uint32_t >& getRecipeLevelTableIdList() +{ + if( m_RecipeLevelTableIdList.size() == 0 ) + loadIdList( m_RecipeLevelTableDat, m_RecipeLevelTableIdList ); + return m_RecipeLevelTableIdList; +} +const std::set< uint32_t >& getRecipeNotebookListIdList() +{ + if( m_RecipeNotebookListIdList.size() == 0 ) + loadIdList( m_RecipeNotebookListDat, m_RecipeNotebookListIdList ); + return m_RecipeNotebookListIdList; +} +const std::set< uint32_t >& getRelicIdList() +{ + if( m_RelicIdList.size() == 0 ) + loadIdList( m_RelicDat, m_RelicIdList ); + return m_RelicIdList; +} +const std::set< uint32_t >& getRelic3IdList() +{ + if( m_Relic3IdList.size() == 0 ) + loadIdList( m_Relic3Dat, m_Relic3IdList ); + return m_Relic3IdList; +} +const std::set< uint32_t >& getRelicItemIdList() +{ + if( m_RelicItemIdList.size() == 0 ) + loadIdList( m_RelicItemDat, m_RelicItemIdList ); + return m_RelicItemIdList; +} +const std::set< uint32_t >& getRelicNoteIdList() +{ + if( m_RelicNoteIdList.size() == 0 ) + loadIdList( m_RelicNoteDat, m_RelicNoteIdList ); + return m_RelicNoteIdList; +} +const std::set< uint32_t >& getRelicNoteCategoryIdList() +{ + if( m_RelicNoteCategoryIdList.size() == 0 ) + loadIdList( m_RelicNoteCategoryDat, m_RelicNoteCategoryIdList ); + return m_RelicNoteCategoryIdList; +} +const std::set< uint32_t >& getRetainerTaskIdList() +{ + if( m_RetainerTaskIdList.size() == 0 ) + loadIdList( m_RetainerTaskDat, m_RetainerTaskIdList ); + return m_RetainerTaskIdList; +} +const std::set< uint32_t >& getRetainerTaskNormalIdList() +{ + if( m_RetainerTaskNormalIdList.size() == 0 ) + loadIdList( m_RetainerTaskNormalDat, m_RetainerTaskNormalIdList ); + return m_RetainerTaskNormalIdList; +} +const std::set< uint32_t >& getRetainerTaskParameterIdList() +{ + if( m_RetainerTaskParameterIdList.size() == 0 ) + loadIdList( m_RetainerTaskParameterDat, m_RetainerTaskParameterIdList ); + return m_RetainerTaskParameterIdList; +} +const std::set< uint32_t >& getRetainerTaskRandomIdList() +{ + if( m_RetainerTaskRandomIdList.size() == 0 ) + loadIdList( m_RetainerTaskRandomDat, m_RetainerTaskRandomIdList ); + return m_RetainerTaskRandomIdList; +} +const std::set< uint32_t >& getSalvageIdList() +{ + if( m_SalvageIdList.size() == 0 ) + loadIdList( m_SalvageDat, m_SalvageIdList ); + return m_SalvageIdList; +} +const std::set< uint32_t >& getSatisfactionNpcIdList() +{ + if( m_SatisfactionNpcIdList.size() == 0 ) + loadIdList( m_SatisfactionNpcDat, m_SatisfactionNpcIdList ); + return m_SatisfactionNpcIdList; +} +const std::set< uint32_t >& getSatisfactionSupplyIdList() +{ + if( m_SatisfactionSupplyIdList.size() == 0 ) + loadIdList( m_SatisfactionSupplyDat, m_SatisfactionSupplyIdList ); + return m_SatisfactionSupplyIdList; +} +const std::set< uint32_t >& getSatisfactionSupplyRewardIdList() +{ + if( m_SatisfactionSupplyRewardIdList.size() == 0 ) + loadIdList( m_SatisfactionSupplyRewardDat, m_SatisfactionSupplyRewardIdList ); + return m_SatisfactionSupplyRewardIdList; +} +const std::set< uint32_t >& getScreenImageIdList() +{ + if( m_ScreenImageIdList.size() == 0 ) + loadIdList( m_ScreenImageDat, m_ScreenImageIdList ); + return m_ScreenImageIdList; +} +const std::set< uint32_t >& getSecretRecipeBookIdList() +{ + if( m_SecretRecipeBookIdList.size() == 0 ) + loadIdList( m_SecretRecipeBookDat, m_SecretRecipeBookIdList ); + return m_SecretRecipeBookIdList; +} +const std::set< uint32_t >& getSpearfishingItemIdList() +{ + if( m_SpearfishingItemIdList.size() == 0 ) + loadIdList( m_SpearfishingItemDat, m_SpearfishingItemIdList ); + return m_SpearfishingItemIdList; +} +const std::set< uint32_t >& getSpearfishingNotebookIdList() +{ + if( m_SpearfishingNotebookIdList.size() == 0 ) + loadIdList( m_SpearfishingNotebookDat, m_SpearfishingNotebookIdList ); + return m_SpearfishingNotebookIdList; +} +const std::set< uint32_t >& getSpecialShopIdList() +{ + if( m_SpecialShopIdList.size() == 0 ) + loadIdList( m_SpecialShopDat, m_SpecialShopIdList ); + return m_SpecialShopIdList; +} +const std::set< uint32_t >& getSpecialShopItemCategoryIdList() +{ + if( m_SpecialShopItemCategoryIdList.size() == 0 ) + loadIdList( m_SpecialShopItemCategoryDat, m_SpecialShopItemCategoryIdList ); + return m_SpecialShopItemCategoryIdList; +} +const std::set< uint32_t >& getStainIdList() +{ + if( m_StainIdList.size() == 0 ) + loadIdList( m_StainDat, m_StainIdList ); + return m_StainIdList; +} +const std::set< uint32_t >& getStatusIdList() +{ + if( m_StatusIdList.size() == 0 ) + loadIdList( m_StatusDat, m_StatusIdList ); + return m_StatusIdList; +} +const std::set< uint32_t >& getStoryIdList() +{ + if( m_StoryIdList.size() == 0 ) + loadIdList( m_StoryDat, m_StoryIdList ); + return m_StoryIdList; +} +const std::set< uint32_t >& getSwitchTalkIdList() +{ + if( m_SwitchTalkIdList.size() == 0 ) + loadIdList( m_SwitchTalkDat, m_SwitchTalkIdList ); + return m_SwitchTalkIdList; +} +const std::set< uint32_t >& getTerritoryTypeIdList() +{ + if( m_TerritoryTypeIdList.size() == 0 ) + loadIdList( m_TerritoryTypeDat, m_TerritoryTypeIdList ); + return m_TerritoryTypeIdList; +} +const std::set< uint32_t >& getTextCommandIdList() +{ + if( m_TextCommandIdList.size() == 0 ) + loadIdList( m_TextCommandDat, m_TextCommandIdList ); + return m_TextCommandIdList; +} +const std::set< uint32_t >& getTitleIdList() +{ + if( m_TitleIdList.size() == 0 ) + loadIdList( m_TitleDat, m_TitleIdList ); + return m_TitleIdList; +} +const std::set< uint32_t >& getTomestonesIdList() +{ + if( m_TomestonesIdList.size() == 0 ) + loadIdList( m_TomestonesDat, m_TomestonesIdList ); + return m_TomestonesIdList; +} +const std::set< uint32_t >& getTomestonesItemIdList() +{ + if( m_TomestonesItemIdList.size() == 0 ) + loadIdList( m_TomestonesItemDat, m_TomestonesItemIdList ); + return m_TomestonesItemIdList; +} +const std::set< uint32_t >& getTopicSelectIdList() +{ + if( m_TopicSelectIdList.size() == 0 ) + loadIdList( m_TopicSelectDat, m_TopicSelectIdList ); + return m_TopicSelectIdList; +} +const std::set< uint32_t >& getTownIdList() +{ + if( m_TownIdList.size() == 0 ) + loadIdList( m_TownDat, m_TownIdList ); + return m_TownIdList; +} +const std::set< uint32_t >& getTraitIdList() +{ + if( m_TraitIdList.size() == 0 ) + loadIdList( m_TraitDat, m_TraitIdList ); + return m_TraitIdList; +} +const std::set< uint32_t >& getTraitRecastIdList() +{ + if( m_TraitRecastIdList.size() == 0 ) + loadIdList( m_TraitRecastDat, m_TraitRecastIdList ); + return m_TraitRecastIdList; +} +const std::set< uint32_t >& getTraitTransientIdList() +{ + if( m_TraitTransientIdList.size() == 0 ) + loadIdList( m_TraitTransientDat, m_TraitTransientIdList ); + return m_TraitTransientIdList; +} +const std::set< uint32_t >& getTribeIdList() +{ + if( m_TribeIdList.size() == 0 ) + loadIdList( m_TribeDat, m_TribeIdList ); + return m_TribeIdList; +} +const std::set< uint32_t >& getTripleTriadIdList() +{ + if( m_TripleTriadIdList.size() == 0 ) + loadIdList( m_TripleTriadDat, m_TripleTriadIdList ); + return m_TripleTriadIdList; +} +const std::set< uint32_t >& getTripleTriadCardIdList() +{ + if( m_TripleTriadCardIdList.size() == 0 ) + loadIdList( m_TripleTriadCardDat, m_TripleTriadCardIdList ); + return m_TripleTriadCardIdList; +} +const std::set< uint32_t >& getTripleTriadCardRarityIdList() +{ + if( m_TripleTriadCardRarityIdList.size() == 0 ) + loadIdList( m_TripleTriadCardRarityDat, m_TripleTriadCardRarityIdList ); + return m_TripleTriadCardRarityIdList; +} +const std::set< uint32_t >& getTripleTriadCardResidentIdList() +{ + if( m_TripleTriadCardResidentIdList.size() == 0 ) + loadIdList( m_TripleTriadCardResidentDat, m_TripleTriadCardResidentIdList ); + return m_TripleTriadCardResidentIdList; +} +const std::set< uint32_t >& getTripleTriadCardTypeIdList() +{ + if( m_TripleTriadCardTypeIdList.size() == 0 ) + loadIdList( m_TripleTriadCardTypeDat, m_TripleTriadCardTypeIdList ); + return m_TripleTriadCardTypeIdList; +} +const std::set< uint32_t >& getTripleTriadCompetitionIdList() +{ + if( m_TripleTriadCompetitionIdList.size() == 0 ) + loadIdList( m_TripleTriadCompetitionDat, m_TripleTriadCompetitionIdList ); + return m_TripleTriadCompetitionIdList; +} +const std::set< uint32_t >& getTripleTriadRuleIdList() +{ + if( m_TripleTriadRuleIdList.size() == 0 ) + loadIdList( m_TripleTriadRuleDat, m_TripleTriadRuleIdList ); + return m_TripleTriadRuleIdList; +} +const std::set< uint32_t >& getTutorialIdList() +{ + if( m_TutorialIdList.size() == 0 ) + loadIdList( m_TutorialDat, m_TutorialIdList ); + return m_TutorialIdList; +} +const std::set< uint32_t >& getTutorialDPSIdList() +{ + if( m_TutorialDPSIdList.size() == 0 ) + loadIdList( m_TutorialDPSDat, m_TutorialDPSIdList ); + return m_TutorialDPSIdList; +} +const std::set< uint32_t >& getTutorialHealerIdList() +{ + if( m_TutorialHealerIdList.size() == 0 ) + loadIdList( m_TutorialHealerDat, m_TutorialHealerIdList ); + return m_TutorialHealerIdList; +} +const std::set< uint32_t >& getTutorialTankIdList() +{ + if( m_TutorialTankIdList.size() == 0 ) + loadIdList( m_TutorialTankDat, m_TutorialTankIdList ); + return m_TutorialTankIdList; +} +const std::set< uint32_t >& getWarpIdList() +{ + if( m_WarpIdList.size() == 0 ) + loadIdList( m_WarpDat, m_WarpIdList ); + return m_WarpIdList; +} +const std::set< uint32_t >& getWeatherIdList() +{ + if( m_WeatherIdList.size() == 0 ) + loadIdList( m_WeatherDat, m_WeatherIdList ); + return m_WeatherIdList; +} +const std::set< uint32_t >& getWeatherGroupIdList() +{ + if( m_WeatherGroupIdList.size() == 0 ) + loadIdList( m_WeatherGroupDat, m_WeatherGroupIdList ); + return m_WeatherGroupIdList; +} +const std::set< uint32_t >& getWeatherRateIdList() +{ + if( m_WeatherRateIdList.size() == 0 ) + loadIdList( m_WeatherRateDat, m_WeatherRateIdList ); + return m_WeatherRateIdList; +} +const std::set< uint32_t >& getWeeklyBingoOrderDataIdList() +{ + if( m_WeeklyBingoOrderDataIdList.size() == 0 ) + loadIdList( m_WeeklyBingoOrderDataDat, m_WeeklyBingoOrderDataIdList ); + return m_WeeklyBingoOrderDataIdList; +} +const std::set< uint32_t >& getWeeklyBingoRewardDataIdList() +{ + if( m_WeeklyBingoRewardDataIdList.size() == 0 ) + loadIdList( m_WeeklyBingoRewardDataDat, m_WeeklyBingoRewardDataIdList ); + return m_WeeklyBingoRewardDataIdList; +} +const std::set< uint32_t >& getWeeklyBingoTextIdList() +{ + if( m_WeeklyBingoTextIdList.size() == 0 ) + loadIdList( m_WeeklyBingoTextDat, m_WeeklyBingoTextIdList ); + return m_WeeklyBingoTextIdList; +} +const std::set< uint32_t >& getWorldDCGroupTypeIdList() +{ + if( m_WorldDCGroupTypeIdList.size() == 0 ) + loadIdList( m_WorldDCGroupTypeDat, m_WorldDCGroupTypeIdList ); + return m_WorldDCGroupTypeIdList; +} + }; diff --git a/src/tools/exd_struct_test/main.cpp b/src/tools/exd_struct_test/main.cpp index ca49ffe6..0ba59997 100644 --- a/src/tools/exd_struct_test/main.cpp +++ b/src/tools/exd_struct_test/main.cpp @@ -25,8 +25,8 @@ Core::Logger g_log; Core::Data::ExdDataGenerated g_exdData; -const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); -//const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv" ); +//const std::string datLocation( "/opt/sapphire_3_15_0/bin/sqpack" ); +const std::string datLocation( "C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv" ); int main() @@ -41,10 +41,15 @@ int main() return 0; } - auto teri = g_exdData.getTerritoryType( 132 ); - - g_log.info( teri->name ); - g_log.info( teri->bg ); + auto idList = g_exdData.getTerritoryTypeIdList(); + + for( auto id : idList ) + { + auto teri1 = g_exdData.getTerritoryType( id ); + + g_log.info( teri1->name ); + g_log.info( teri1->bg ); + } return 0; }