diff --git a/deps/datReader/Exd.cpp b/deps/datReader/Exd.cpp index 79de150b..6c4769b5 100644 --- a/deps/datReader/Exd.cpp +++ b/deps/datReader/Exd.cpp @@ -1,8 +1,6 @@ #include "Exd.h" #include "bparse.h" -#include "stream.h" -#include #include "Exh.h" using xiv::utils::bparse::extract; @@ -53,32 +51,24 @@ template<> namespace xiv::exd { - Exd::Exd( std::shared_ptr< Exh > i_exh, const std::vector< std::shared_ptr< dat::File>>& i_files ) + Exd::Exd( std::shared_ptr< Exh > exh, const std::vector< std::shared_ptr< dat::File > >& files ) { - _exh = i_exh; - _files = i_files; + _exh = exh; // Iterates over all the files - const uint32_t member_count = _exh->get_members().size(); - for( auto& file_ptr : _files ) + for( auto& file : files ) { - // Get a stream - std::vector< char > dataCpy = file_ptr->get_data_sections().front(); - std::istringstream iss( std::string( dataCpy.begin(), dataCpy.end() ) ); + std::vector< char > dataCpy = file->get_data_sections().front(); - // Extract the header and skip to the record indices - auto exd_header = extract< ExdHeader >( iss ); - iss.seekg( 0x20 ); + // Extract the header + auto exdHeader = extract< ExdHeader >( dataCpy, 0 ); - // Preallocate and extract the record_indices - const uint32_t record_count = exd_header.index_size / sizeof( ExdRecordIndex ); - std::vector< ExdRecordIndex > record_indices; - record_indices.reserve( record_count ); - for( uint32_t i = 0; i < record_count; ++i ) + const uint32_t recordCount = exdHeader.index_size / sizeof( ExdRecordIndex ); + for( uint32_t i = 0; i < recordCount; ++i ) { - auto recordIndex = extract< ExdRecordIndex >( iss ); - _idCache[ recordIndex.id ] = ExdCacheEntry{ file_ptr, recordIndex.offset }; + auto recordIndex = extract< ExdRecordIndex >( dataCpy, 32 + ( i * sizeof( ExdRecordIndex ) ) ); + _idCache[ recordIndex.id ] = ExdCacheEntry{ file, recordIndex.offset + 6, extract< uint8_t >( dataCpy, recordIndex.offset + 5 ) }; } } } @@ -91,40 +81,24 @@ namespace xiv::exd { auto cacheEntryIt = _idCache.find( id ); - if( cacheEntryIt == _idCache.end() ) - throw std::runtime_error( "Id not found: " + std::to_string( id ) ); + if( cacheEntryIt == _idCache.end() || subRow >= cacheEntryIt->second.subRows ) + throw std::runtime_error( "Id + SubId combination not found: " + std::to_string( id ) + "." + std::to_string( subRow ) ); - // Iterates over all the files - const uint32_t member_count = _exh->get_members().size(); - auto& file_ptr = cacheEntryIt->second.file; + auto dataCpy = cacheEntryIt->second.file->get_data_sections().front(); - std::vector< char > dataCpy = file_ptr->get_data_sections().front(); - std::istringstream iss( std::string( dataCpy.begin(), dataCpy.end() ) ); + std::vector< Field > fields; + fields.reserve( _exh->get_members().size() ); - // Get the vector fields for the given record and preallocate it - auto fields = _data[ id ]; - fields.reserve( member_count ); - iss.seekg( cacheEntryIt->second.offset + 6 ); + uint32_t baseOffset = cacheEntryIt->second.offset + ( subRow * _exh->get_header().data_offset + 2 * ( subRow + 1 ) ); - uint8_t subRows = *reinterpret_cast< uint8_t* >( &dataCpy[ cacheEntryIt->second.offset + 5 ] ); - - if( subRow >= subRows ) - throw std::runtime_error( "Out of bounds sub-row!" ); - - int offset = cacheEntryIt->second.offset + 6 + ( subRow * _exh->get_header().data_offset + 2 * ( subRow + 1 ) ); - - for( auto& member_entry : _exh->get_exh_members() ) + for( auto& memberEntry : _exh->get_exh_members() ) { - // Seek to the position of the member to extract. - // 6 is because we have uint32_t/uint16_t at the start of each record - iss.seekg( offset + member_entry.offset ); - // Switch depending on the type to extract - switch( member_entry.type ) + switch( memberEntry.type ) { case DataType::string: // Extract the offset to the actual string - // Seek to it then extract the actual string + // Then extract the actual string from that offset { throw std::runtime_error( "String not implemented for variant 2!" ); //auto string_offset = extract( iss, "string_offset", false ); @@ -134,50 +108,46 @@ namespace xiv::exd break; case DataType::boolean: - fields.emplace_back( extract< bool >( iss, "bool" ) ); + fields.emplace_back( extract< bool >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::int8: - fields.emplace_back( extract< int8_t >( iss, "int8_t" ) ); + fields.emplace_back( extract< int8_t >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::uint8: - fields.emplace_back( extract< uint8_t >( iss, "uint8_t" ) ); + fields.emplace_back( extract< uint8_t >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::int16: - fields.emplace_back( extract< int16_t >( iss, "int16_t", false ) ); + fields.emplace_back( extract< int16_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint16: - fields.emplace_back( extract< uint16_t >( iss, "uint16_t", false ) ); + fields.emplace_back( extract< uint16_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::int32: - fields.emplace_back( extract< int32_t >( iss, "int32_t", false ) ); + fields.emplace_back( extract< int32_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint32: - fields.emplace_back( extract< uint32_t >( iss, "uint32_t", false ) ); + fields.emplace_back( extract< uint32_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::float32: - fields.emplace_back( extract< float >( iss, "float", false ) ); + fields.emplace_back( extract< float >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint64: - fields.emplace_back( extract< uint64_t >( iss, "uint64_t", false ) ); + fields.emplace_back( extract< uint64_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; default: - auto type = static_cast< uint16_t >( member_entry.type ); + auto type = static_cast< uint16_t >( memberEntry.type ); if( type < 0x19 || type > 0x20 ) throw std::runtime_error( "Unknown DataType: " + std::to_string( type ) ); - uint64_t val = extract< uint64_t >( iss, "bool" ); - int32_t shift = type - 0x19; - int32_t i = 1 << shift; - val &= i; - fields.emplace_back( ( val & i ) == i ); + fields.emplace_back( ( extract< uint8_t >( dataCpy, baseOffset + memberEntry.offset ) & ( 1 << ( type - 0x19 ) ) ) != 0 ); break; } } @@ -193,84 +163,68 @@ namespace xiv::exd if( cacheEntryIt == _idCache.end() ) throw std::runtime_error( "Id not found: " + std::to_string( id ) ); - // Iterates over all the files - const uint32_t member_count = _exh->get_members().size(); - auto& file_ptr = cacheEntryIt->second.file; + auto dataCpy = cacheEntryIt->second.file->get_data_sections().front(); - std::vector< char > dataCpy = file_ptr->get_data_sections().front(); - std::istringstream iss( std::string( dataCpy.begin(), dataCpy.end() ) ); + std::vector< Field > fields; + fields.reserve( _exh->get_members().size() ); - // Get the vector fields for the given record and preallocate it - auto fields = _data[ id ]; - fields.reserve( member_count ); - iss.seekg( cacheEntryIt->second.offset + 6 ); + auto stringBaseOffset = cacheEntryIt->second.offset + _exh->get_header().data_offset; - uint8_t subRows = *reinterpret_cast< uint8_t* >( &dataCpy[ cacheEntryIt->second.offset + 5 ] ); - - for( auto& member_entry : _exh->get_exh_members() ) + for( auto& memberEntry : _exh->get_exh_members() ) { - // Seek to the position of the member to extract. - // 6 is because we have uint32_t/uint16_t at the start of each record - iss.seekg( cacheEntryIt->second.offset + 6 + member_entry.offset ); - // Switch depending on the type to extract - switch( member_entry.type ) + switch( memberEntry.type ) { case DataType::string: // Extract the offset to the actual string - // Seek to it then extract the actual string + // Then extract the actual string from that offset { - auto string_offset = extract< uint32_t >( iss, "string_offset", false ); - iss.seekg( cacheEntryIt->second.offset + 6 + _exh->get_header().data_offset + string_offset ); - fields.emplace_back( utils::bparse::extract_cstring( iss, "string" ) ); + auto stringOffset = extract< uint32_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ); + fields.emplace_back( utils::bparse::extract_cstring( dataCpy, stringBaseOffset + stringOffset ) ); } break; case DataType::boolean: - fields.emplace_back( extract< bool >( iss, "bool" ) ); + fields.emplace_back( extract< bool >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset ) ); break; case DataType::int8: - fields.emplace_back( extract< int8_t >( iss, "int8_t" ) ); + fields.emplace_back( extract< int8_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset ) ); break; case DataType::uint8: - fields.emplace_back( extract< uint8_t >( iss, "uint8_t" ) ); + fields.emplace_back( extract< uint8_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset ) ); break; case DataType::int16: - fields.emplace_back( extract< int16_t >( iss, "int16_t", false ) ); + fields.emplace_back( extract< int16_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; case DataType::uint16: - fields.emplace_back( extract< uint16_t >( iss, "uint16_t", false ) ); + fields.emplace_back( extract< uint16_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; case DataType::int32: - fields.emplace_back( extract< int32_t >( iss, "int32_t", false ) ); + fields.emplace_back( extract< int32_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; case DataType::uint32: - fields.emplace_back( extract< uint32_t >( iss, "uint32_t", false ) ); + fields.emplace_back( extract< uint32_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; case DataType::float32: - fields.emplace_back( extract< float >( iss, "float", false ) ); + fields.emplace_back( extract< float >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; case DataType::uint64: - fields.emplace_back( extract< uint64_t >( iss, "uint64_t", false ) ); + fields.emplace_back( extract< uint64_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset, false ) ); break; default: - auto type = static_cast< uint16_t >( member_entry.type ); + auto type = static_cast< uint16_t >( memberEntry.type ); if( type < 0x19 || type > 0x20 ) throw std::runtime_error( "Unknown DataType: " + std::to_string( type ) ); - uint64_t val = extract< uint64_t >( iss, "bool" ); - int32_t shift = type - 0x19; - int32_t i = 1 << shift; - val &= i; - fields.emplace_back( ( val & i ) == i ); + fields.emplace_back( ( extract< uint8_t >( dataCpy, cacheEntryIt->second.offset + memberEntry.offset ) & ( 1 << ( type - 0x19 ) ) ) != 0 ); break; } } @@ -279,106 +233,99 @@ namespace xiv::exd } // Get all rows - const std::map< uint32_t, std::vector< Field>>& Exd::get_rows() + const std::map< ExdRow, std::vector< Field >, exdRowSort > Exd::get_rows() { - // Iterates over all the files - const uint32_t member_count = _exh->get_members().size(); - for( auto& file_ptr : _files ) + std::map< ExdRow, std::vector< Field >, exdRowSort > data; + + // Iterates over all the cached ids + const uint32_t memberCount = _exh->get_members().size(); + for( auto& cacheEntry : _idCache ) { - // Get a stream - std::vector< char > dataCpy = file_ptr->get_data_sections().front(); - std::istringstream iss( std::string( dataCpy.begin(), dataCpy.end() ) ); + std::vector< char > dataCpy = cacheEntry.second.file->get_data_sections().front(); - // Extract the header and skip to the record indices - auto exd_header = extract< ExdHeader >( iss ); - iss.seekg( 0x20 ); + auto baseOffset = cacheEntry.second.offset; + auto stringBaseOffset = baseOffset + _exh->get_header().data_offset; - // Preallocate and extract the record_indices - const uint32_t record_count = exd_header.index_size / sizeof( ExdRecordIndex ); - std::vector< ExdRecordIndex > record_indices; - record_indices.reserve( record_count ); - for( uint32_t i = 0; i < record_count; ++i ) - { - record_indices.emplace_back( extract< ExdRecordIndex >( iss ) ); - } - - for( auto& record_index : record_indices ) + for( int32_t i = 0; i < cacheEntry.second.subRows; i++ ) { // Get the vector fields for the given record and preallocate it - auto& fields = _data[ record_index.id ]; - fields.reserve( member_count ); + ExdRow row = { cacheEntry.first, i }; + auto& fields = data[ row ]; + fields.reserve( memberCount ); - for( auto& member_entry : _exh->get_exh_members() ) + if( _exh->get_header().variant == 2 ) + baseOffset = cacheEntry.second.offset + ( i * _exh->get_header().data_offset + 2 * ( i + 1 ) ); + + for( auto& memberEntry : _exh->get_exh_members() ) //for( auto& member_entry : _exh->get_members() ) { - // Seek to the position of the member to extract. - // 6 is because we have uint32_t/uint16_t at the start of each record - iss.seekg( record_index.offset + 6 + member_entry.offset ); - // Switch depending on the type to extract - switch( member_entry.type ) + switch( memberEntry.type ) { case DataType::string: // Extract the offset to the actual string - // Seek to it then extract the actual string + // Then extract the actual string from that offset { - auto string_offset = extract< uint32_t >( iss, "string_offset", false ); - iss.seekg( record_index.offset + 6 + _exh->get_header().data_offset + string_offset ); - fields.emplace_back( utils::bparse::extract_cstring( iss, "string" ) ); + if( _exh->get_header().variant == 1 ) + { + auto stringOffset = extract< uint32_t >( dataCpy, baseOffset + memberEntry.offset, false ); + fields.emplace_back( utils::bparse::extract_cstring( dataCpy, stringBaseOffset + stringOffset ) ); + } + else if( _exh->get_header().variant == 2 ) + { + throw std::runtime_error( "String not implemented for variant 2!" ); + } } break; case DataType::boolean: - fields.emplace_back( extract< bool >( iss, "bool" ) ); + fields.emplace_back( extract< bool >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::int8: - fields.emplace_back( extract< int8_t >( iss, "int8_t" ) ); + fields.emplace_back( extract< int8_t >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::uint8: - fields.emplace_back( extract< uint8_t >( iss, "uint8_t" ) ); + fields.emplace_back( extract< uint8_t >( dataCpy, baseOffset + memberEntry.offset ) ); break; case DataType::int16: - fields.emplace_back( extract< int16_t >( iss, "int16_t", false ) ); + fields.emplace_back( extract< int16_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint16: - fields.emplace_back( extract< uint16_t >( iss, "uint16_t", false ) ); + fields.emplace_back( extract< uint16_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::int32: - fields.emplace_back( extract< int32_t >( iss, "int32_t", false ) ); + fields.emplace_back( extract< int32_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint32: - fields.emplace_back( extract< uint32_t >( iss, "uint32_t", false ) ); + fields.emplace_back( extract< uint32_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::float32: - fields.emplace_back( extract< float >( iss, "float", false ) ); + fields.emplace_back( extract< float >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; case DataType::uint64: - fields.emplace_back( extract< uint64_t >( iss, "uint64_t", false ) ); + fields.emplace_back( extract< uint64_t >( dataCpy, baseOffset + memberEntry.offset, false ) ); break; default: - auto type = static_cast< uint16_t >( member_entry.type ); + auto type = static_cast< uint16_t >( memberEntry.type ); if( type < 0x19 || type > 0x20 ) throw std::runtime_error( "Unknown DataType: " + std::to_string( type ) ); - uint64_t val = extract< uint64_t >( iss, "bool" ); - int32_t shift = type - 0x19; - int32_t i = 1 << shift; - val &= i; - fields.emplace_back( ( val & i ) == i ); + fields.emplace_back( ( extract< uint8_t >( dataCpy, baseOffset + memberEntry.offset ) & ( 1 << ( type - 0x19 ) ) ) != 0 ); break; } } } } - return _data; + return data; + } } diff --git a/deps/datReader/Exd.h b/deps/datReader/Exd.h index a16c135b..30a9e9e0 100644 --- a/deps/datReader/Exd.h +++ b/deps/datReader/Exd.h @@ -3,6 +3,8 @@ #include #include +#include +#include #include @@ -30,19 +32,37 @@ namespace xiv::exd { std::shared_ptr< dat::File > file; uint32_t offset; + uint8_t subRows; + }; + + struct ExdRow + { + uint32_t rowId; + uint8_t subRowId; + }; + + struct exdRowSort + { + constexpr bool operator()( const ExdRow& _Left, const ExdRow& _Right ) const + { + if( _Left.rowId == _Right.rowId ) + return _Left.subRowId < _Right.subRowId; + + return _Left.rowId < _Right.rowId; + } }; // Data for a given language class Exd { public: - // i_exh: the header - // i_files: the multiple exd files + // exh: the header + // files: the multiple exd files Exd() { } - Exd( std::shared_ptr< Exh > i_exh, const std::vector< std::shared_ptr< dat::File>>& i_files ); + Exd( std::shared_ptr< Exh > exh, const std::vector< std::shared_ptr< dat::File > >& files ); ~Exd(); @@ -53,12 +73,9 @@ namespace xiv::exd const std::vector< Field > get_row( uint32_t id, uint32_t subRow ); // Get all rows - const std::map< uint32_t, std::vector< Field>>& get_rows(); + const std::map< ExdRow, std::vector< Field >, exdRowSort > get_rows(); protected: - // Data indexed by the ID of the row, the vector is field with the same order as exh.members - std::map< uint32_t, std::vector< Field>> _data; - std::vector< std::shared_ptr< dat::File>> _files; std::shared_ptr< Exh > _exh; std::map< uint32_t, ExdCacheEntry > _idCache; }; diff --git a/deps/datReader/ExdData.h b/deps/datReader/ExdData.h index 15092d6e..c7c61626 100644 --- a/deps/datReader/ExdData.h +++ b/deps/datReader/ExdData.h @@ -6,6 +6,7 @@ #include #include +#include namespace xiv { diff --git a/deps/datReader/GameData.h b/deps/datReader/GameData.h index 53b7f021..da6b059a 100644 --- a/deps/datReader/GameData.h +++ b/deps/datReader/GameData.h @@ -6,6 +6,7 @@ #include #include +#include namespace xiv::dat { diff --git a/deps/datReader/bparse.cpp b/deps/datReader/bparse.cpp index dc36a7d6..70bdb8b3 100644 --- a/deps/datReader/bparse.cpp +++ b/deps/datReader/bparse.cpp @@ -5,4 +5,9 @@ std::string xiv::utils::bparse::extract_cstring( std::istream& i_stream, const s std::string temp_str; std::getline( i_stream, temp_str, '\0' ); return temp_str; -} \ No newline at end of file +} + +std::string xiv::utils::bparse::extract_cstring( std::vector< char >& data, uint32_t pos ) +{ + return &data[ pos ]; +} diff --git a/deps/datReader/bparse.h b/deps/datReader/bparse.h index e3fd13f6..f45fecdd 100644 --- a/deps/datReader/bparse.h +++ b/deps/datReader/bparse.h @@ -93,9 +93,27 @@ namespace xiv::utils::bparse } } + template< typename StructType > + StructType extract( std::vector< char >& data, uint32_t pos, bool isLe = true ) + { + StructType tempStruct = *reinterpret_cast< StructType* >( &data[ pos ] ); + + if( std::is_class< StructType >::value ) + { + reorder( tempStruct ); + } + else if( !isLe ) + { + tempStruct = byteswap( tempStruct ); + } + return tempStruct; + } + // For cstrings std::string extract_cstring( std::istream& i_stream, const std::string& i_name ); + std::string extract_cstring( std::vector< char >& data, uint32_t pos ); + } #endif // XIV_UTILS_BPARSE_H diff --git a/src/common/Common.h b/src/common/Common.h index d8e7618c..8f9c258b 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -6,6 +6,7 @@ #include "CommonGen.h" #include "Vector3.h" +#include "Network/PacketDef/Ipcs.h" // +--------------------------------------------------------------------------- // The following enumerations are structures to require their type be included. @@ -25,7 +26,7 @@ namespace Sapphire::Common const uint8_t CURRENT_EXPANSION_ID = 3; const uint8_t CLASSJOB_TOTAL = 38; - const uint8_t CLASSJOB_SLOTS = 28; + const uint8_t CLASSJOB_SLOTS = 30; const uint8_t TOWN_COUNT = 6; @@ -51,11 +52,11 @@ namespace Sapphire::Common enum InventoryOperation : uint16_t { - Discard = 0x013C, - Move = 0x013D, - Swap = 0x013E, - Split = 0x013F, - Merge = 0x0141, + Discard = Network::Packets::ClientZoneIpcType::InventoryModifyHandler + 7, + Move = Network::Packets::ClientZoneIpcType::InventoryModifyHandler + 8, + Swap = Network::Packets::ClientZoneIpcType::InventoryModifyHandler + 9, + Split = Network::Packets::ClientZoneIpcType::InventoryModifyHandler + 10, + Merge = Network::Packets::ClientZoneIpcType::InventoryModifyHandler + 12 }; enum ClientLanguage : uint8_t @@ -161,44 +162,27 @@ namespace Sapphire::Common enum class EquipSlotCategory : uint8_t { - // main slots - - CharaMainHand = 0, - CharaOffHand = 1, - CharaHead = 2, - CharaBody = 3, - CharaHands = 4, - CharaWaist = 5, - CharaLegs = 6, - CharaFeet = 7, - CharaEars = 8, - CharaNeck = 9, - CharaWrist = 10, - CharaRing = 11, - CharaSoulCrystal = 12, - - /* following slots not seem to exist any more. - when multi-slot gear is moved into equipment slot, normal slot listed above is used. - client will move any incompatible gears into armory but no InventoryModifiyHandler is sent. - server need to move those silently in order to sync with client. - */ - - /*! Cannot equip gear to offhand slot */ - //MainTwoHandedWeapon = 13, - /*! Can be equipped in either main or offhand slot */ - //MainOrOffHand = 14, // unused - /*! Cannot equip gear to head */ - //BodyDisallowHead = 15, - /*! Cannot equip gear to hands, legs and feet slots */ - //BodyDisallowHandsLegsFeet = 16, - /*! Cannot equip gear to feet slot */ - //LegsDisallowFeet = 18, - /*! Cannot equp gear to head, hands, legs, feet slots */ - //BodyDisallowAll = 19, - /*! Cannot equip gear to hands slot */ - //BodyDisallowHands = 20, - /*! Cannot equip gear to legs & feet slots */ - //BodyDisallowLegsFeet = 21, + MainHand = 1, + OffHand = 2, + Head = 3, + Body = 4, + Hands = 5, + Waist = 6, + Legs = 7, + Feet = 8, + Ears = 9, + Neck = 10, + Wrist = 11, + Ring = 12, + MainTwoHandedWeapon = 13, + //MainOrOffHand = 14, // unused + BodyDisallowHead = 15, + BodyDisallowHandsLegsFeet = 16, + SoulCrystal = 17, + LegsDisallowFeet = 18, + BodyDisallowAll = 19, + BodyDisallowHands = 20, + BodyDisallowLegsFeet = 21, }; enum InventoryType : uint16_t @@ -773,6 +757,7 @@ namespace Sapphire::Common BetweenAreas = 24, BoundByDuty = 28, + Performing = 40, WatchingCutscene = 50, // this is actually just a dummy, this id is different @@ -1263,9 +1248,6 @@ namespace Sapphire::Common GetGil = 9, // p1: gil EmptyCoffer = 11, // seems like no param }; - - using PlayerStateFlagList = std::vector< PlayerStateFlag >; - } #endif diff --git a/src/common/CommonGen.h b/src/common/CommonGen.h index 4833e57a..98ad9d71 100644 --- a/src/common/CommonGen.h +++ b/src/common/CommonGen.h @@ -4,732 +4,801 @@ #include /* This file has been automatically generated. - Changes will be lost upon regeneration. - To change the content edit tools/exd_common_gen */ +Changes will be lost upon regeneration. +To change the content edit tools/exd_common_gen */ namespace Sapphire::Common { -/////////////////////////////////////////////////////////// -//ActionCategory.exd -enum class ActionCategory : uint8_t -{ - None = 0, - Autoattack = 1, - Spell = 2, - Weaponskill = 3, - Ability = 4, - Item = 5, - DoLAbility = 6, - DoHAbility = 7, - Event = 8, - LimitBreak = 9, - System = 10, - Artillery = 11, - Mount = 12, - Glamour = 13, - ItemManipulation = 14, - AdrenalineRush = 15, -}; + /////////////////////////////////////////////////////////// + //ActionCategory.exd + enum class ActionCategory : uint8_t + { + None = 0, + Autoattack = 1, + Spell = 2, + Weaponskill = 3, + Ability = 4, + Item = 5, + DoLAbility = 6, + DoHAbility = 7, + Event = 8, + LimitBreak = 9, + System = 10, + Artillery = 11, + Mount = 12, + Special = 13, + ItemManipulation = 14, + AdrenalineRush = 15, + //1 = 16, + }; -/////////////////////////////////////////////////////////// -//BaseParam.exd -enum class BaseParam : uint8_t -{ - None = 0, - Strength = 1, - Dexterity = 2, - Vitality = 3, - Intelligence = 4, - Mind = 5, - Piety = 6, - HP = 7, - MP = 8, - TP = 9, - GP = 10, - CP = 11, - PhysicalDamage = 12, - MagicDamage = 13, - Delay = 14, - AdditionalEffect = 15, - AttackSpeed = 16, - BlockRate = 17, - BlockStrength = 18, - Tenacity = 19, - AttackPower = 20, - Defense = 21, - DirectHitRate = 22, - Evasion = 23, - MagicDefense = 24, - CriticalHitPower = 25, - CriticalHitResilience = 26, - CriticalHit = 27, - CriticalHitEvasion = 28, - SlashingResistance = 29, - PiercingResistance = 30, - BluntResistance = 31, - ProjectileResistance = 32, - AttackMagicPotency = 33, - HealingMagicPotency = 34, - EnhancementMagicPotency = 35, - ElementalBonus = 36, - FireResistance = 37, - IceResistance = 38, - WindResistance = 39, - EarthResistance = 40, - LightningResistance = 41, - WaterResistance = 42, - MagicResistance = 43, - Determination = 44, - SkillSpeed = 45, - SpellSpeed = 46, - Haste = 47, - Morale = 48, - Enmity = 49, - EnmityReduction = 50, - CarefulDesynthesis = 51, - EXPBonus = 52, - Regen = 53, - Refresh = 54, - MainAttribute = 55, - SecondaryAttribute = 56, - SlowResistance = 57, - PetrificationResistance = 58, - ParalysisResistance = 59, - SilenceResistance = 60, - BlindResistance = 61, - PoisonResistance = 62, - StunResistance = 63, - SleepResistance = 64, - BindResistance = 65, - HeavyResistance = 66, - DoomResistance = 67, - ReducedDurabilityLoss = 68, - IncreasedSpiritbondGain = 69, - Craftsmanship = 70, - Control = 71, - Gathering = 72, - Perception = 73, -}; + /////////////////////////////////////////////////////////// + //BaseParam.exd + enum class BaseParam : uint8_t + { + None = 0, + Strength = 1, + Dexterity = 2, + Vitality = 3, + Intelligence = 4, + Mind = 5, + Piety = 6, + HP = 7, + MP = 8, + TP = 9, + GP = 10, + CP = 11, + PhysicalDamage = 12, + MagicDamage = 13, + Delay = 14, + AdditionalEffect = 15, + AttackSpeed = 16, + BlockRate = 17, + BlockStrength = 18, + Tenacity = 19, + AttackPower = 20, + Defense = 21, + DirectHitRate = 22, + Evasion = 23, + MagicDefense = 24, + CriticalHitPower = 25, + CriticalHitResilience = 26, + CriticalHit = 27, + CriticalHitEvasion = 28, + SlashingResistance = 29, + PiercingResistance = 30, + BluntResistance = 31, + ProjectileResistance = 32, + AttackMagicPotency = 33, + HealingMagicPotency = 34, + EnhancementMagicPotency = 35, + ElementalBonus = 36, + FireResistance = 37, + IceResistance = 38, + WindResistance = 39, + EarthResistance = 40, + LightningResistance = 41, + WaterResistance = 42, + MagicResistance = 43, + Determination = 44, + SkillSpeed = 45, + SpellSpeed = 46, + Haste = 47, + Morale = 48, + Enmity = 49, + EnmityReduction = 50, + DesynthesisSkillGain = 51, + EXPBonus = 52, + Regen = 53, + Refresh = 54, + MainAttribute = 55, + SecondaryAttribute = 56, + SlowResistance = 57, + PetrificationResistance = 58, + ParalysisResistance = 59, + SilenceResistance = 60, + BlindResistance = 61, + PoisonResistance = 62, + StunResistance = 63, + SleepResistance = 64, + BindResistance = 65, + HeavyResistance = 66, + DoomResistance = 67, + ReducedDurabilityLoss = 68, + IncreasedSpiritbondGain = 69, + Craftsmanship = 70, + Control = 71, + Gathering = 72, + Perception = 73, + }; -/////////////////////////////////////////////////////////// -//BeastReputationRank.exd -enum class BeastReputationRank : uint8_t -{ - None = 0, - Neutral = 1, - Recognized = 2, - Friendly = 3, - Trusted = 4, - Respected = 5, - Honored = 6, - Sworn = 7, - Allied = 8, -}; + /////////////////////////////////////////////////////////// + //BeastReputationRank.exd + enum class BeastReputationRank : uint8_t + { + None = 0, + Neutral = 1, + Recognized = 2, + Friendly = 3, + Trusted = 4, + Respected = 5, + Honored = 6, + Sworn = 7, + Allied = 8, + }; -/////////////////////////////////////////////////////////// -//BeastTribe.exd -enum class BeastTribe : uint8_t -{ -}; + /////////////////////////////////////////////////////////// + //BeastTribe.exd + enum class BeastTribe : uint8_t + { + /* = 0, + 1 = 1, + 2 = 2, + 3 = 3, + 4 = 4, + 5 = 5, + 6 = 6, + 7 = 7, + 8 = 8, + 9 = 9, + 10 = 10, + 11 = 11, + 12 = 12, + 13 = 13, + 14 = 14,*/ + }; -/////////////////////////////////////////////////////////// -//ClassJob.exd -enum class ClassJob : uint8_t -{ - Adventurer = 0, - Gladiator = 1, - Pugilist = 2, - Marauder = 3, - Lancer = 4, - Archer = 5, - Conjurer = 6, - Thaumaturge = 7, - Carpenter = 8, - Blacksmith = 9, - Armorer = 10, - Goldsmith = 11, - Leatherworker = 12, - Weaver = 13, - Alchemist = 14, - Culinarian = 15, - Miner = 16, - Botanist = 17, - Fisher = 18, - Paladin = 19, - Monk = 20, - Warrior = 21, - Dragoon = 22, - Bard = 23, - Whitemage = 24, - Blackmage = 25, - Arcanist = 26, - Summoner = 27, - Scholar = 28, - Rogue = 29, - Ninja = 30, - Machinist = 31, - Darkknight = 32, - Astrologian = 33, - Samurai = 34, - Redmage = 35, - Bluemage = 36, - Gunbreaker = 37, - Dancer = 38, -}; + /////////////////////////////////////////////////////////// + //ClassJob.exd + enum class ClassJob : uint8_t + { + Adventurer = 0, + Gladiator = 1, + Pugilist = 2, + Marauder = 3, + Lancer = 4, + Archer = 5, + Conjurer = 6, + Thaumaturge = 7, + Carpenter = 8, + Blacksmith = 9, + Armorer = 10, + Goldsmith = 11, + Leatherworker = 12, + Weaver = 13, + Alchemist = 14, + Culinarian = 15, + Miner = 16, + Botanist = 17, + Fisher = 18, + Paladin = 19, + Monk = 20, + Warrior = 21, + Dragoon = 22, + Bard = 23, + Whitemage = 24, + Blackmage = 25, + Arcanist = 26, + Summoner = 27, + Scholar = 28, + Rogue = 29, + Ninja = 30, + Machinist = 31, + Darkknight = 32, + Astrologian = 33, + Samurai = 34, + Redmage = 35, + Bluemage = 36, + Gunbreaker = 37, + Dancer = 38, + // = 39, + //1 = 40, + }; -/////////////////////////////////////////////////////////// -//ContentType.exd -enum class ContentType : uint8_t -{ - None = 0, - DutyRoulette = 1, - Dungeons = 2, - Guildhests = 3, - Trials = 4, - Raids = 5, - PvP = 6, - QuestBattles = 7, - FATEs = 8, - TreasureHunt = 9, - Levequests = 10, - GrandCompany = 11, - Companions = 12, - BeastTribeQuests = 13, - OverallCompletion = 14, - PlayerCommendation = 15, - DisciplesoftheLand = 16, - DisciplesoftheHand = 17, - RetainerVentures = 18, - GoldSaucer = 19, - DeepDungeons = 21, - WondrousTails = 24, - CustomDeliveries = 25, - Eureka = 26, -}; + /////////////////////////////////////////////////////////// + //ContentType.exd + enum class ContentType : uint8_t + { + None = 0, + DutyRoulette = 1, + Dungeons = 2, + Guildhests = 3, + Trials = 4, + Raids = 5, + PvP = 6, + QuestBattles = 7, + FATEs = 8, + TreasureHunt = 9, + Levequests = 10, + GrandCompany = 11, + Companions = 12, + BeastTribeQuests = 13, + OverallCompletion = 14, + PlayerCommendation = 15, + DisciplesoftheLand = 16, + DisciplesoftheHand = 17, + RetainerVentures = 18, + GoldSaucer = 19, + //1 = 20, + DeepDungeons = 21, + //2 = 22, + //3 = 23, + WondrousTails = 24, + CustomDeliveries = 25, + Eureka = 26, + //4 = 27, + UltimateRaids = 28, + //5 = 29, + }; -/////////////////////////////////////////////////////////// -//EmoteCategory.exd -enum class EmoteCategory : uint8_t -{ - None = 0, - General = 1, - Special = 2, - Expressions = 3, -}; + /////////////////////////////////////////////////////////// + //EmoteCategory.exd + enum class EmoteCategory : uint8_t + { + None = 0, + General = 1, + Special = 2, + Expressions = 3, + //1 = 4, + }; -/////////////////////////////////////////////////////////// -//ExVersion.exd -enum class ExVersion : uint8_t -{ - ARealmReborn = 0, - Heavensward = 1, - Stormblood = 2, - Shadowbringers = 3, -}; + /////////////////////////////////////////////////////////// + //ExVersion.exd + enum class ExVersion : uint8_t + { + ARealmReborn = 0, + Heavensward = 1, + Stormblood = 2, + Shadowbringers = 3, + }; -/////////////////////////////////////////////////////////// -//GrandCompany.exd -enum class GrandCompany : uint8_t -{ - None = 0, - Maelstrom = 1, - OrderoftheTwinAdder = 2, - ImmortalFlames = 3, -}; + /////////////////////////////////////////////////////////// + //GrandCompany.exd + enum class GrandCompany : uint8_t + { + None = 0, + Maelstrom = 1, + OrderoftheTwinAdder = 2, + ImmortalFlames = 3, + }; -/////////////////////////////////////////////////////////// -//GuardianDeity.exd -enum class GuardianDeity : uint8_t -{ - None = 0, - HalonetheFury = 1, - MenphinatheLover = 2, - ThaliaktheScholar = 3, - NymeiatheSpinner = 4, - LlymlaentheNavigator = 5, - OschontheWanderer = 6, - ByregottheBuilder = 7, - RhalgrtheDestroyer = 8, - AzeymatheWarden = 9, - NaldthaltheTraders = 10, - NophicatheMatron = 11, - AlthyktheKeeper = 12, -}; + /////////////////////////////////////////////////////////// + //GuardianDeity.exd + enum class GuardianDeity : uint8_t + { + None = 0, + HalonetheFury = 1, + MenphinatheLover = 2, + ThaliaktheScholar = 3, + NymeiatheSpinner = 4, + LlymlaentheNavigator = 5, + OschontheWanderer = 6, + ByregottheBuilder = 7, + RhalgrtheDestroyer = 8, + AzeymatheWarden = 9, + NaldthaltheTraders = 10, + NophicatheMatron = 11, + AlthyktheKeeper = 12, + }; -/////////////////////////////////////////////////////////// -//ItemUICategory.exd -enum class ItemUICategory : uint8_t -{ - None = 0, - PugilistsArm = 1, - GladiatorsArm = 2, - MaraudersArm = 3, - ArchersArm = 4, - LancersArm = 5, - OnehandedThaumaturgesArm = 6, - TwohandedThaumaturgesArm = 7, - OnehandedConjurersArm = 8, - TwohandedConjurersArm = 9, - ArcanistsGrimoire = 10, - Shield = 11, - CarpentersPrimaryTool = 12, - CarpentersSecondaryTool = 13, - BlacksmithsPrimaryTool = 14, - BlacksmithsSecondaryTool = 15, - ArmorersPrimaryTool = 16, - ArmorersSecondaryTool = 17, - GoldsmithsPrimaryTool = 18, - GoldsmithsSecondaryTool = 19, - LeatherworkersPrimaryTool = 20, - LeatherworkersSecondaryTool = 21, - WeaversPrimaryTool = 22, - WeaversSecondaryTool = 23, - AlchemistsPrimaryTool = 24, - AlchemistsSecondaryTool = 25, - CulinariansPrimaryTool = 26, - CulinariansSecondaryTool = 27, - MinersPrimaryTool = 28, - MinersSecondaryTool = 29, - BotanistsPrimaryTool = 30, - BotanistsSecondaryTool = 31, - FishersPrimaryTool = 32, - FishingTackle = 33, - Head = 34, - Body = 35, - Legs = 36, - Hands = 37, - Feet = 38, - Waist = 39, - Necklace = 40, - Earrings = 41, - Bracelets = 42, - Ring = 43, - Medicine = 44, - Ingredient = 45, - Meal = 46, - Seafood = 47, - Stone = 48, - Metal = 49, - Lumber = 50, - Cloth = 51, - Leather = 52, - Bone = 53, - Reagent = 54, - Dye = 55, - Part = 56, - Furnishing = 57, - Materia = 58, - Crystal = 59, - Catalyst = 60, - Miscellany = 61, - SoulCrystal = 62, - Other = 63, - ConstructionPermit = 64, - Roof = 65, - ExteriorWall = 66, - Window = 67, - Door = 68, - RoofDecoration = 69, - ExteriorWallDecoration = 70, - Placard = 71, - Fence = 72, - InteriorWall = 73, - Flooring = 74, - CeilingLight = 75, - OutdoorFurnishing = 76, - Table = 77, - Tabletop = 78, - Wallmounted = 79, - Rug = 80, - Minion = 81, - Gardening = 82, - Demimateria = 83, - RoguesArm = 84, - SeasonalMiscellany = 85, - TripleTriadCard = 86, - DarkKnightsArm = 87, - MachinistsArm = 88, - AstrologiansArm = 89, - AirshipHull = 90, - AirshipRigging = 91, - AirshipAftcastle = 92, - AirshipForecastle = 93, - OrchestrionRoll = 94, - Painting = 95, - SamuraisArm = 96, - RedMagesArm = 97, - ScholarsArm = 98, - FishersSecondaryTool = 99, - Currency = 100, - SubmersibleHull = 101, - SubmersibleStern = 102, - SubmersibleBow = 103, - SubmersibleBridge = 104, - BlueMagesArm = 105, - GunbreakersArm = 106, - DancersArm = 107, -}; + /////////////////////////////////////////////////////////// + //ItemUICategory.exd + enum class ItemUICategory : uint8_t + { + None = 0, + PugilistsArm = 1, + GladiatorsArm = 2, + MaraudersArm = 3, + ArchersArm = 4, + LancersArm = 5, + OnehandedThaumaturgesArm = 6, + TwohandedThaumaturgesArm = 7, + OnehandedConjurersArm = 8, + TwohandedConjurersArm = 9, + ArcanistsGrimoire = 10, + Shield = 11, + CarpentersPrimaryTool = 12, + CarpentersSecondaryTool = 13, + BlacksmithsPrimaryTool = 14, + BlacksmithsSecondaryTool = 15, + ArmorersPrimaryTool = 16, + ArmorersSecondaryTool = 17, + GoldsmithsPrimaryTool = 18, + GoldsmithsSecondaryTool = 19, + LeatherworkersPrimaryTool = 20, + LeatherworkersSecondaryTool = 21, + WeaversPrimaryTool = 22, + WeaversSecondaryTool = 23, + AlchemistsPrimaryTool = 24, + AlchemistsSecondaryTool = 25, + CulinariansPrimaryTool = 26, + CulinariansSecondaryTool = 27, + MinersPrimaryTool = 28, + MinersSecondaryTool = 29, + BotanistsPrimaryTool = 30, + BotanistsSecondaryTool = 31, + FishersPrimaryTool = 32, + FishingTackle = 33, + Head = 34, + Body = 35, + Legs = 36, + Hands = 37, + Feet = 38, + Waist = 39, + Necklace = 40, + Earrings = 41, + Bracelets = 42, + Ring = 43, + Medicine = 44, + Ingredient = 45, + Meal = 46, + Seafood = 47, + Stone = 48, + Metal = 49, + Lumber = 50, + Cloth = 51, + Leather = 52, + Bone = 53, + Reagent = 54, + Dye = 55, + Part = 56, + Furnishing = 57, + Materia = 58, + Crystal = 59, + Catalyst = 60, + Miscellany = 61, + SoulCrystal = 62, + Other = 63, + ConstructionPermit = 64, + Roof = 65, + ExteriorWall = 66, + Window = 67, + Door = 68, + RoofDecoration = 69, + ExteriorWallDecoration = 70, + Placard = 71, + Fence = 72, + InteriorWall = 73, + Flooring = 74, + CeilingLight = 75, + OutdoorFurnishing = 76, + Table = 77, + Tabletop = 78, + Wallmounted = 79, + Rug = 80, + Minion = 81, + Gardening = 82, + Demimateria = 83, + RoguesArm = 84, + SeasonalMiscellany = 85, + TripleTriadCard = 86, + DarkKnightsArm = 87, + MachinistsArm = 88, + AstrologiansArm = 89, + AirshipHull = 90, + AirshipRigging = 91, + AirshipAftcastle = 92, + AirshipForecastle = 93, + OrchestrionRoll = 94, + Painting = 95, + SamuraisArm = 96, + RedMagesArm = 97, + ScholarsArm = 98, + FishersSecondaryTool = 99, + Currency = 100, + SubmersibleHull = 101, + SubmersibleStern = 102, + SubmersibleBow = 103, + SubmersibleBridge = 104, + BlueMagesArm = 105, + GunbreakersArm = 106, + DancersArm = 107, + }; -/////////////////////////////////////////////////////////// -//ItemSearchCategory.exd -enum class ItemSearchCategory : uint8_t -{ - None = 0, - PrimaryArms = 1, - PrimaryTools = 2, - PrimaryTools1 = 3, - Armor = 4, - Accessories = 5, - Medicines = 6, - Materials = 7, - Other = 8, - PugilistsArms = 9, - GladiatorsArms = 10, - MaraudersArms = 11, - ArchersArms = 12, - LancersArms = 13, - ThaumaturgesArms = 14, - ConjurersArms = 15, - ArcanistsArms = 16, - Shields = 17, - DancersArms = 18, - CarpentersTools = 19, - BlacksmithsTools = 20, - ArmorersTools = 21, - GoldsmithsTools = 22, - LeatherworkersTools = 23, - WeaversTools = 24, - AlchemistsTools = 25, - CulinariansTools = 26, - MinersTools = 27, - BotanistsTools = 28, - FishersTools = 29, - FishingTackle = 30, - Head = 31, - Undershirts = 32, - Body = 33, - Undergarments = 34, - Legs = 35, - Hands = 36, - Feet = 37, - Waist = 38, - Necklaces = 39, - Earrings = 40, - Bracelets = 41, - Rings = 42, - Medicine = 43, - Ingredients = 44, - Meals = 45, - Seafood = 46, - Stone = 47, - Metal = 48, - Lumber = 49, - Cloth = 50, - Leather = 51, - Bone = 52, - Reagents = 53, - Dyes = 54, - WeaponParts = 55, - Furnishings = 56, - Materia = 57, - Crystals = 58, - Catalysts = 59, - Miscellany = 60, - SoulCrystals = 61, - Arrows = 62, - QuestItems = 63, - Other1 = 64, - ExteriorFixtures = 65, - InteriorFixtures = 66, - OutdoorFurnishings = 67, - ChairsandBeds = 68, - Tables = 69, - Tabletop = 70, - Wallmounted = 71, - Rugs = 72, - RoguesArms = 73, - SeasonalMiscellany = 74, - Minions = 75, - DarkKnightsArms = 76, - MachinistsArms = 77, - AstrologiansArms = 78, - AirshipSubmersibleComponents = 79, - OrchestrionComponents = 80, - GardeningItems = 81, - Paintings = 82, - SamuraisArms = 83, - RedMagesArms = 84, - ScholarsArms = 85, - GunbreakersArms = 86, - ThrowingWeapons = 87, -}; + /////////////////////////////////////////////////////////// + //ItemSearchCategory.exd + enum class ItemSearchCategory : uint8_t + { + None = 0, + PrimaryArms = 1, + PrimaryTools = 2, + PrimaryTools1 = 3, + Armor = 4, + Accessories = 5, + Medicines = 6, + Materials = 7, + Other = 8, + PugilistsArms = 9, + GladiatorsArms = 10, + MaraudersArms = 11, + ArchersArms = 12, + LancersArms = 13, + ThaumaturgesArms = 14, + ConjurersArms = 15, + ArcanistsArms = 16, + Shields = 17, + DancersArms = 18, + CarpentersTools = 19, + BlacksmithsTools = 20, + ArmorersTools = 21, + GoldsmithsTools = 22, + LeatherworkersTools = 23, + WeaversTools = 24, + AlchemistsTools = 25, + CulinariansTools = 26, + MinersTools = 27, + BotanistsTools = 28, + FishersTools = 29, + FishingTackle = 30, + Head = 31, + Undershirts = 32, + Body = 33, + Undergarments = 34, + Legs = 35, + Hands = 36, + Feet = 37, + Waist = 38, + Necklaces = 39, + Earrings = 40, + Bracelets = 41, + Rings = 42, + Medicine = 43, + Ingredients = 44, + Meals = 45, + Seafood = 46, + Stone = 47, + Metal = 48, + Lumber = 49, + Cloth = 50, + Leather = 51, + Bone = 52, + Reagents = 53, + Dyes = 54, + WeaponParts = 55, + Furnishings = 56, + Materia = 57, + Crystals = 58, + Catalysts = 59, + Miscellany = 60, + SoulCrystals = 61, + Arrows = 62, + QuestItems = 63, + Other1 = 64, + ExteriorFixtures = 65, + InteriorFixtures = 66, + OutdoorFurnishings = 67, + ChairsandBeds = 68, + Tables = 69, + Tabletop = 70, + Wallmounted = 71, + Rugs = 72, + RoguesArms = 73, + SeasonalMiscellany = 74, + Minions = 75, + DarkKnightsArms = 76, + MachinistsArms = 77, + AstrologiansArms = 78, + AirshipSubmersibleComponents = 79, + OrchestrionComponents = 80, + GardeningItems = 81, + Paintings = 82, + SamuraisArms = 83, + RedMagesArms = 84, + ScholarsArms = 85, + GunbreakersArms = 86, + DancersArms1 = 87, + /*1 = 88, + 2 = 89, + 3 = 90, + 4 = 91, + 5 = 92, + 6 = 93, + 7 = 94, + 8 = 95, + 9 = 96, + 10 = 97, + 11 = 98, + 12 = 99, + 13 = 100,*/ + }; -/////////////////////////////////////////////////////////// -//OnlineStatus.exd -enum class OnlineStatus : uint8_t -{ - Producer = 1, - GameMaster = 2, - GameMaster1 = 3, - GameMaster2 = 4, - Disconnected = 5, - WaitingforFriendListApproval = 6, - WaitingforLinkshellApproval = 7, - WaitingforFreeCompanyApproval = 8, - NotFound = 9, - Offline = 10, - Mentor = 11, - Busy = 12, - PvP = 13, - PlayingTripleTriad = 14, - ViewingCutscene = 15, - UsingaChocoboPorter = 16, - AwayfromKeyboard = 17, - CameraMode = 18, - LookingforRepairs = 19, - LookingtoRepair = 20, - LookingtoMeldMateria = 21, - Roleplaying = 22, - LookingforParty = 23, - SwordforHire = 24, - WaitingforDutyFinder = 25, - RecruitingPartyMembers = 26, - Mentor1 = 27, - PvEMentor = 28, - TradeMentor = 29, - PvPMentor = 30, - Returner = 31, - NewAdventurer = 32, - AllianceLeader = 33, - AlliancePartyLeader = 34, - AlliancePartyMember = 35, - PartyLeader = 36, - PartyMember = 37, - PartyLeaderCrossworld = 38, - PartyMemberCrossworld = 39, - AnotherWorld = 40, - SharingDuty = 41, - SimilarDuty = 42, - InDuty = 43, - TrialAdventurer = 44, - FreeCompany = 45, - GrandCompany = 46, - Online = 47, -}; + /////////////////////////////////////////////////////////// + //OnlineStatus.exd + enum class OnlineStatus : uint8_t + { + Producer = 1, + GameMaster = 2, + GameMaster1 = 3, + GameMaster2 = 4, + Disconnected = 5, + WaitingforFriendListApproval = 6, + WaitingforLinkshellApproval = 7, + WaitingforFreeCompanyApproval = 8, + NotFound = 9, + Offline = 10, + Mentor = 11, + Busy = 12, + PvP = 13, + PlayingTripleTriad = 14, + ViewingCutscene = 15, + UsingaChocoboPorter = 16, + AwayfromKeyboard = 17, + CameraMode = 18, + LookingforRepairs = 19, + LookingtoRepair = 20, + LookingtoMeldMateria = 21, + Roleplaying = 22, + LookingforParty = 23, + SwordforHire = 24, + WaitingforDutyFinder = 25, + RecruitingPartyMembers = 26, + Mentor1 = 27, + PvEMentor = 28, + TradeMentor = 29, + PvPMentor = 30, + Returner = 31, + NewAdventurer = 32, + AllianceLeader = 33, + AlliancePartyLeader = 34, + AlliancePartyMember = 35, + PartyLeader = 36, + PartyMember = 37, + PartyLeaderCrossworld = 38, + PartyMemberCrossworld = 39, + AnotherWorld = 40, + SharingDuty = 41, + SimilarDuty = 42, + InDuty = 43, + TrialAdventurer = 44, + FreeCompany = 45, + GrandCompany = 46, + Online = 47, + }; -/////////////////////////////////////////////////////////// -//Race.exd -enum class Race : uint8_t -{ - None = 0, - Hyur = 1, - Elezen = 2, - Lalafell = 3, - Miqote = 4, - Roegadyn = 5, - AuRa = 6, - Hrothgar = 7, - Viera = 8, -}; + /////////////////////////////////////////////////////////// + //Race.exd + enum class Race : uint8_t + { + None = 0, + Hyur = 1, + Elezen = 2, + Lalafell = 3, + Miqote = 4, + Roegadyn = 5, + AuRa = 6, + Hrothgar = 7, + Viera = 8, + }; -/////////////////////////////////////////////////////////// -//Tribe.exd -enum class Tribe : uint8_t -{ - None = 0, - Midlander = 1, - Highlander = 2, - Wildwood = 3, - Duskwight = 4, - Plainsfolk = 5, - Dunesfolk = 6, - SeekeroftheSun = 7, - KeeperoftheMoon = 8, - SeaWolf = 9, - Hellsguard = 10, - Raen = 11, - Xaela = 12, - Helions = 13, - TheLost = 14, - Rava = 15, - Veena = 16, -}; + /////////////////////////////////////////////////////////// + //Tribe.exd + enum class Tribe : uint8_t + { + None = 0, + Midlander = 1, + Highlander = 2, + Wildwood = 3, + Duskwight = 4, + Plainsfolk = 5, + Dunesfolk = 6, + SeekeroftheSun = 7, + KeeperoftheMoon = 8, + SeaWolf = 9, + Hellsguard = 10, + Raen = 11, + Xaela = 12, + Helions = 13, + TheLost = 14, + Rava = 15, + Veena = 16, + }; -/////////////////////////////////////////////////////////// -//Town.exd -enum class Town : uint8_t -{ - Nowheresville = 0, - LimsaLominsa = 1, - Gridania = 2, - Uldah = 3, - Ishgard = 4, - Kugane = 7, - TheCrystarium = 10, -}; + /////////////////////////////////////////////////////////// + //Town.exd + enum class Town : uint8_t + { + Nowheresville = 0, + LimsaLominsa = 1, + Gridania = 2, + Uldah = 3, + Ishgard = 4, + // = 5, + //1 = 6, + Kugane = 7, + //2 = 8, + //3 = 9, + Crystarium = 10, + //4 = 11, + }; -/////////////////////////////////////////////////////////// -//Weather.exd -enum class Weather : uint8_t -{ - None = 0, - ClearSkies = 1, - FairSkies = 2, - Clouds = 3, - Fog = 4, - Wind = 5, - Gales = 6, - Rain = 7, - Showers = 8, - Thunder = 9, - Thunderstorms = 10, - DustStorms = 11, - Sandstorms = 12, - HotSpells = 13, - HeatWaves = 14, - Snow = 15, - Blizzards = 16, - Gloom = 17, - Auroras = 18, - Darkness = 19, - Tension = 20, - Clouds1 = 21, - StormClouds = 22, - RoughSeas = 23, - RoughSeas1 = 24, - Louring = 25, - HeatWaves1 = 26, - Gloom1 = 27, - Gales1 = 28, - Eruptions = 29, - FairSkies1 = 30, - FairSkies2 = 31, - FairSkies3 = 32, - FairSkies4 = 33, - FairSkies5 = 34, - Irradiance = 35, - CoreRadiation = 36, - CoreRadiation1 = 37, - CoreRadiation2 = 38, - CoreRadiation3 = 39, - ShelfClouds = 40, - ShelfClouds1 = 41, - ShelfClouds2 = 42, - ShelfClouds3 = 43, - Oppression = 44, - Oppression1 = 45, - Oppression2 = 46, - Oppression3 = 47, - Oppression4 = 48, - UmbralWind = 49, - UmbralStatic = 50, - Smoke = 51, - FairSkies6 = 52, - RoyalLevin = 53, - Hyperelectricity = 54, - RoyalLevin1 = 55, - Oppression5 = 56, - Thunder1 = 57, - Thunder2 = 58, - CutScene = 59, - Multiplicity = 60, - Multiplicity1 = 61, - Rain1 = 62, - FairSkies7 = 63, - Rain2 = 64, - FairSkies8 = 65, - Dragonstorms = 66, - Dragonstorms1 = 67, - Subterrain = 68, - Concordance = 69, - Concordance1 = 70, - BeyondTime = 71, - BeyondTime1 = 72, - BeyondTime2 = 73, - DemonicInfinity = 74, - DemonicInfinity1 = 75, - DemonicInfinity2 = 76, - DimensionalDisruption = 77, - DimensionalDisruption1 = 78, - DimensionalDisruption2 = 79, - Revelstorms = 80, - Revelstorms1 = 81, - EternalBliss = 82, - EternalBliss1 = 83, - Wyrmstorms = 84, - Wyrmstorms1 = 85, - Revelstorms2 = 86, - Quicklevin = 87, - Thunder3 = 88, - DimensionalDisruption3 = 89, - FairSkies9 = 90, - ClearSkies1 = 91, - WhiteCyclones = 92, - WhiteCyclones1 = 93, - WhiteCyclones2 = 94, - Ultimania = 95, - WhiteCyclones3 = 96, - Moonlight = 97, - Moonlight1 = 98, - Moonlight2 = 99, - Moonlight3 = 100, - FairSkies10 = 101, - Scarlet = 102, - Scarlet1 = 103, - Scarlet2 = 104, - FairSkies11 = 105, - FairSkies12 = 106, - FairSkies13 = 107, - FairSkies14 = 108, - Flames = 109, - Tsunamis = 110, - Cyclones = 111, - Geostorms = 112, - TrueBlue = 113, - TrueBlue1 = 114, - TrueBlue2 = 115, - UmbralTurbulence = 116, - TrueBlue3 = 117, - EverlastingLight = 118, - Gales2 = 119, - Termination = 120, - Termination1 = 121, - Dreams = 122, - Dreams1 = 123, - Dreams2 = 124, - Brilliance = 125, - Brilliance1 = 126, - Termination2 = 127, - Termination3 = 128, - EverlastingLight1 = 129, - Termination4 = 131, -}; - -/////////////////////////////////////////////////////////// -//HousingAppeal.exd -enum class HousingAppeal : uint8_t -{ - None = 0, - Emporium = 1, - Boutique = 2, - DesignerHome = 3, - MessageBook = 4, - Tavern = 5, - Eatery = 6, - ImmersiveExperience = 7, - Cafe = 8, - Aquarium = 9, - Sanctum = 10, - Venue = 11, - Florist = 12, - Library = 14, - PhotoStudio = 15, - HauntedHouse = 16, - Atelier = 17, - Bathhouse = 18, - Garden = 19, - FarEastern = 20, -}; + /////////////////////////////////////////////////////////// + //Weather.exd + enum class Weather : uint8_t + { + None = 0, + ClearSkies = 1, + FairSkies = 2, + Clouds = 3, + Fog = 4, + Wind = 5, + Gales = 6, + Rain = 7, + Showers = 8, + Thunder = 9, + Thunderstorms = 10, + DustStorms = 11, + Sandstorms = 12, + HotSpells = 13, + HeatWaves = 14, + Snow = 15, + Blizzards = 16, + Gloom = 17, + Auroras = 18, + Darkness = 19, + Tension = 20, + Clouds1 = 21, + StormClouds = 22, + RoughSeas = 23, + RoughSeas1 = 24, + Louring = 25, + HeatWaves1 = 26, + Gloom1 = 27, + Gales1 = 28, + Eruptions = 29, + FairSkies1 = 30, + FairSkies2 = 31, + FairSkies3 = 32, + FairSkies4 = 33, + FairSkies5 = 34, + Irradiance = 35, + CoreRadiation = 36, + CoreRadiation1 = 37, + CoreRadiation2 = 38, + CoreRadiation3 = 39, + ShelfClouds = 40, + ShelfClouds1 = 41, + ShelfClouds2 = 42, + ShelfClouds3 = 43, + Oppression = 44, + Oppression1 = 45, + Oppression2 = 46, + Oppression3 = 47, + Oppression4 = 48, + UmbralWind = 49, + UmbralStatic = 50, + Smoke = 51, + FairSkies6 = 52, + RoyalLevin = 53, + Hyperelectricity = 54, + RoyalLevin1 = 55, + Oppression5 = 56, + Thunder1 = 57, + Thunder2 = 58, + CutScene = 59, + Multiplicity = 60, + Multiplicity1 = 61, + Rain1 = 62, + FairSkies7 = 63, + Rain2 = 64, + FairSkies8 = 65, + Dragonstorms = 66, + Dragonstorms1 = 67, + Subterrain = 68, + Concordance = 69, + Concordance1 = 70, + BeyondTime = 71, + BeyondTime1 = 72, + BeyondTime2 = 73, + DemonicInfinity = 74, + DemonicInfinity1 = 75, + DemonicInfinity2 = 76, + DimensionalDisruption = 77, + DimensionalDisruption1 = 78, + DimensionalDisruption2 = 79, + Revelstorms = 80, + Revelstorms1 = 81, + EternalBliss = 82, + EternalBliss1 = 83, + Wyrmstorms = 84, + Wyrmstorms1 = 85, + Revelstorms2 = 86, + Quicklevin = 87, + Thunder3 = 88, + DimensionalDisruption3 = 89, + FairSkies9 = 90, + ClearSkies1 = 91, + WhiteCyclones = 92, + WhiteCyclones1 = 93, + WhiteCyclones2 = 94, + Ultimania = 95, + WhiteCyclones3 = 96, + Moonlight = 97, + Moonlight1 = 98, + Moonlight2 = 99, + Moonlight3 = 100, + RedMoon = 101, + Scarlet = 102, + Scarlet1 = 103, + Scarlet2 = 104, + FairSkies10 = 105, + FairSkies11 = 106, + FairSkies12 = 107, + FairSkies13 = 108, + Flames = 109, + Tsunamis = 110, + Cyclones = 111, + Geostorms = 112, + TrueBlue = 113, + TrueBlue1 = 114, + TrueBlue2 = 115, + UmbralTurbulence = 116, + TrueBlue3 = 117, + EverlastingLight = 118, + Gales2 = 119, + Termination = 120, + Termination1 = 121, + Dreams = 122, + Dreams1 = 123, + Dreams2 = 124, + Brilliance = 125, + Brilliance1 = 126, + Termination2 = 127, + Termination3 = 128, + EverlastingLight1 = 129, + Eruptions1 = 130, + Termination4 = 131, + FairSkies14 = 132, + UmbralFlare = 133, + UmbralDuststorm = 134, + UmbralLevin = 135, + UmbralTempest = 136, + Starshower = 137, + Delirium = 138, + Clouds2 = 139, + Clouds3 = 140, + Irradiance1 = 141, + Irradiance2 = 142, + StormClouds1 = 143, + Firestorm = 144, + SpectralCurrent = 145, + //1 = 146, + Climactic = 147, + //2 = 148, + //3 = 149, + //4 = 150, + //5 = 151, + //6 = 152, + //7 = 153, + }; + /////////////////////////////////////////////////////////// + //HousingAppeal.exd + enum class HousingAppeal : uint8_t + { + None = 0, + Emporium = 1, + Boutique = 2, + DesignerHome = 3, + MessageBook = 4, + Tavern = 5, + Eatery = 6, + ImmersiveExperience = 7, + Cafe = 8, + Aquarium = 9, + Sanctum = 10, + Venue = 11, + Florist = 12, + // = 13, + Library = 14, + PhotoStudio = 15, + HauntedHouse = 16, + Atelier = 17, + Bathhouse = 18, + Garden = 19, + FarEastern = 20, + VisitorsWelcome = 21, + Bakery = 22, + UnderRenovation = 23, + ConcertHall = 24, + }; } -#endif - +#endif \ No newline at end of file diff --git a/src/common/Database/ZoneDbConnection.cpp b/src/common/Database/ZoneDbConnection.cpp index a6ecb50c..773f8cef 100644 --- a/src/common/Database/ZoneDbConnection.cpp +++ b/src/common/Database/ZoneDbConnection.cpp @@ -257,6 +257,10 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements() "UPDATE house SET BuildTime = ?, Aetheryte = ?, Comment = ?, HouseName = ?, Endorsements = ? WHERE HouseId = ?;", CONNECTION_BOTH ); + prepareStatement( HOUSING_HOUSE_DEL, + "DELETE FROM house WHERE HouseId = ?;", + CONNECTION_BOTH ); + prepareStatement( LAND_INV_SEL_ALL, "SELECT houseiteminventory.*, charaglobalitem.catalogId, charaglobalitem.stain, charaglobalitem.CharacterId, " "landplaceditems.PosX, landplaceditems.PosY, landplaceditems.PosZ, landplaceditems.Rotation " diff --git a/src/common/Exd/ExdDataGenerated.cpp b/src/common/Exd/ExdDataGenerated.cpp index fd44e942..201cc540 100644 --- a/src/common/Exd/ExdDataGenerated.cpp +++ b/src/common/Exd/ExdDataGenerated.cpp @@ -7,22 +7,23 @@ Sapphire::Data::Achievement::Achievement( uint32_t row_id, Sapphire::Data::ExdDa achievementCategory = exdData->getField< uint8_t >( row, 0 ); name = exdData->getField< std::string >( row, 1 ); description = exdData->getField< std::string >( row, 2 ); - points = exdData->getField< uint8_t >( row, 3 ); - title = exdData->getField< uint16_t >( row, 4 ); - item = exdData->getField< uint32_t >( row, 5 ); - icon = exdData->getField< uint16_t >( row, 6 ); - type = exdData->getField< uint8_t >( row, 8 ); - key = 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 ) ); + achievementTarget = exdData->getField< uint8_t >( row, 3 ); + points = exdData->getField< uint8_t >( row, 5 ); + title = exdData->getField< uint16_t >( row, 6 ); + item = exdData->getField< uint32_t >( row, 7 ); + icon = exdData->getField< uint16_t >( row, 11 ); + type = exdData->getField< uint8_t >( row, 13 ); + key = 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 ); - achievementHideCondition = exdData->getField< uint8_t >( row, 20 ); + data.push_back( exdData->getField< int32_t >( row, 18 ) ); + data.push_back( exdData->getField< int32_t >( row, 19 ) ); + data.push_back( exdData->getField< int32_t >( row, 20 ) ); + data.push_back( exdData->getField< int32_t >( row, 21 ) ); + data.push_back( exdData->getField< int32_t >( row, 22 ) ); + order = exdData->getField< uint16_t >( row, 23 ); + achievementHideCondition = exdData->getField< uint8_t >( row, 25 ); } Sapphire::Data::AchievementCategory::AchievementCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -50,6 +51,13 @@ Sapphire::Data::AchievementKind::AchievementKind( uint32_t row_id, Sapphire::Dat order = exdData->getField< uint8_t >( row, 1 ); } +Sapphire::Data::AchievementTarget::AchievementTarget( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_AchievementTargetDat.get_row( row_id ); + type = exdData->getField< uint8_t >( row, 0 ); + value = exdData->getField< uint32_t >( row, 1 ); +} + Sapphire::Data::Action::Action( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ActionDat.get_row( row_id ); @@ -83,6 +91,7 @@ Sapphire::Data::Action::Action( uint32_t row_id, Sapphire::Data::ExdDataGenerate cast100ms = exdData->getField< uint16_t >( row, 37 ); recast100ms = exdData->getField< uint16_t >( row, 38 ); cooldownGroup = exdData->getField< uint8_t >( row, 39 ); + additionalCooldownGroup = exdData->getField< uint8_t >( row, 40 ); maxCharges = exdData->getField< uint8_t >( row, 41 ); attackType = exdData->getField< int8_t >( row, 42 ); aspect = exdData->getField< uint8_t >( row, 43 ); @@ -129,6 +138,8 @@ Sapphire::Data::ActionIndirection::ActionIndirection( uint32_t row_id, Sapphire: { auto row = exdData->m_ActionIndirectionDat.get_row( row_id ); name = exdData->getField< int32_t >( row, 0 ); + classJob = exdData->getField< int8_t >( row, 1 ); + previousComboAction = exdData->getField< int32_t >( row, 2 ); } Sapphire::Data::ActionParam::ActionParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -307,6 +318,7 @@ Sapphire::Data::Aetheryte::Aetheryte( uint32_t row_id, Sapphire::Data::ExdDataGe level.push_back( exdData->getField< uint32_t >( row, 14 ) ); isAetheryte = exdData->getField< bool >( row, 15 ); aethernetGroup = exdData->getField< uint8_t >( row, 17 ); + invisible = exdData->getField< bool >( row, 18 ); requiredQuest = exdData->getField< uint32_t >( row, 19 ); map = exdData->getField< uint16_t >( row, 20 ); aetherstreamX = exdData->getField< int16_t >( row, 21 ); @@ -342,6 +354,7 @@ Sapphire::Data::AirshipExplorationParamType::AirshipExplorationParamType( uint32 Sapphire::Data::AirshipExplorationPart::AirshipExplorationPart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_AirshipExplorationPartDat.get_row( row_id ); + slot = exdData->getField< uint8_t >( row, 0 ); rank = exdData->getField< uint8_t >( row, 1 ); components = exdData->getField< uint8_t >( row, 2 ); surveillance = exdData->getField< int16_t >( row, 3 ); @@ -349,6 +362,7 @@ Sapphire::Data::AirshipExplorationPart::AirshipExplorationPart( uint32_t row_id, speed = exdData->getField< int16_t >( row, 5 ); range = exdData->getField< int16_t >( row, 6 ); favor = exdData->getField< int16_t >( row, 7 ); + _class = exdData->getField< uint16_t >( row, 8 ); repairMaterials = exdData->getField< uint8_t >( row, 9 ); } @@ -472,6 +486,7 @@ Sapphire::Data::AozAction::AozAction( uint32_t row_id, Sapphire::Data::ExdDataGe { auto row = exdData->m_AozActionDat.get_row( row_id ); action = exdData->getField< uint32_t >( row, 0 ); + rank = exdData->getField< uint8_t >( row, 1 ); } Sapphire::Data::AozActionTransient::AozActionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -481,21 +496,36 @@ Sapphire::Data::AozActionTransient::AozActionTransient( uint32_t row_id, Sapphir icon = exdData->getField< uint32_t >( row, 1 ); stats = exdData->getField< std::string >( row, 2 ); description = exdData->getField< std::string >( row, 3 ); + locationKey = exdData->getField< uint8_t >( row, 4 ); location = exdData->getField< uint16_t >( row, 5 ); - startQuest = exdData->getField< uint32_t >( row, 6 ); - nextQuest = exdData->getField< uint32_t >( row, 7 ); + requiredForQuest = exdData->getField< uint32_t >( row, 6 ); + previousQuest = exdData->getField< uint32_t >( row, 7 ); + targetsEnemy = exdData->getField< bool >( row, 8 ); + targetsSelfOrAlly = exdData->getField< bool >( row, 9 ); + causeSlow = exdData->getField< bool >( row, 10 ); + causePetrify = exdData->getField< bool >( row, 11 ); + causeParalysis = exdData->getField< bool >( row, 12 ); + causeInterrupt = exdData->getField< bool >( row, 13 ); + causeBlind = exdData->getField< bool >( row, 14 ); + causeStun = exdData->getField< bool >( row, 15 ); + causeSleep = exdData->getField< bool >( row, 16 ); + causeBind = exdData->getField< bool >( row, 17 ); + causeHeavy = exdData->getField< bool >( row, 18 ); + causeDeath = exdData->getField< bool >( row, 19 ); } Sapphire::Data::AOZArrangement::AOZArrangement( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_AOZArrangementDat.get_row( row_id, subRow ); aOZContentBriefingBNpc = exdData->getField< uint16_t >( row, 0 ); + position = exdData->getField< uint16_t >( row, 1 ); } Sapphire::Data::AOZBoss::AOZBoss( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_AOZBossDat.get_row( row_id ); boss = exdData->getField< uint16_t >( row, 0 ); + position = exdData->getField< uint16_t >( row, 1 ); } Sapphire::Data::AOZContent::AOZContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -525,6 +555,7 @@ Sapphire::Data::AOZContentBriefingBNpc::AOZContentBriefingBNpc( uint32_t row_id, bNpcName = exdData->getField< uint32_t >( row, 0 ); targetSmall = exdData->getField< uint32_t >( row, 1 ); targetLarge = exdData->getField< uint32_t >( row, 2 ); + hideStats = exdData->getField< bool >( row, 3 ); endurance = exdData->getField< uint8_t >( row, 4 ); fire = exdData->getField< uint8_t >( row, 5 ); ice = exdData->getField< uint8_t >( row, 6 ); @@ -536,16 +567,32 @@ Sapphire::Data::AOZContentBriefingBNpc::AOZContentBriefingBNpc( uint32_t row_id, piercing = exdData->getField< uint8_t >( row, 12 ); blunt = exdData->getField< uint8_t >( row, 13 ); magic = exdData->getField< uint8_t >( row, 14 ); - slowResistance = exdData->getField< bool >( row, 15 ); - petrificationResistance = exdData->getField< bool >( row, 16 ); - paralysisResistance = exdData->getField< bool >( row, 17 ); - silenceResistance = exdData->getField< bool >( row, 18 ); - blindResistance = exdData->getField< bool >( row, 19 ); - stunResistance = exdData->getField< bool >( row, 20 ); - sleepResistance = exdData->getField< bool >( row, 21 ); - bindResistance = exdData->getField< bool >( row, 22 ); - heavyResistance = exdData->getField< bool >( row, 23 ); - instaDeathResistance = exdData->getField< bool >( row, 24 ); + slowVuln = exdData->getField< bool >( row, 15 ); + petrificationVuln = exdData->getField< bool >( row, 16 ); + paralysisVuln = exdData->getField< bool >( row, 17 ); + interruptionVuln = exdData->getField< bool >( row, 18 ); + blindVuln = exdData->getField< bool >( row, 19 ); + stunVuln = exdData->getField< bool >( row, 20 ); + sleepVuln = exdData->getField< bool >( row, 21 ); + bindVuln = exdData->getField< bool >( row, 22 ); + heavyVuln = exdData->getField< bool >( row, 23 ); + flatOrDeathVuln = exdData->getField< bool >( row, 24 ); +} + +Sapphire::Data::AOZReport::AOZReport( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_AOZReportDat.get_row( row_id ); + reward = exdData->getField< uint8_t >( row, 1 ); + order = exdData->getField< int8_t >( row, 2 ); +} + +Sapphire::Data::AOZScore::AOZScore( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_AOZScoreDat.get_row( row_id ); + isHidden = exdData->getField< bool >( row, 0 ); + score = exdData->getField< int32_t >( row, 1 ); + name = exdData->getField< std::string >( row, 2 ); + description = exdData->getField< std::string >( row, 3 ); } Sapphire::Data::AquariumFish::AquariumFish( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1076,6 +1123,7 @@ Sapphire::Data::BuddyEquip::BuddyEquip( uint32_t row_id, Sapphire::Data::ExdData iconHead = exdData->getField< uint16_t >( row, 13 ); iconBody = exdData->getField< uint16_t >( row, 14 ); iconLegs = exdData->getField< uint16_t >( row, 15 ); + order = exdData->getField< uint8_t >( row, 16 ); } Sapphire::Data::BuddyItem::BuddyItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1200,7 +1248,6 @@ Sapphire::Data::Channeling::Channeling( uint32_t row_id, Sapphire::Data::ExdData auto row = exdData->m_ChannelingDat.get_row( row_id ); file = exdData->getField< std::string >( row, 0 ); widthScale = exdData->getField< uint8_t >( row, 1 ); - addedIn53 = exdData->getField< bool >( row, 2 ); } Sapphire::Data::CharaMakeClassEquip::CharaMakeClassEquip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1605,6 +1652,7 @@ Sapphire::Data::ClassJob::ClassJob( uint32_t row_id, Sapphire::Data::ExdDataGene expArrayIndex = exdData->getField< int8_t >( row, 4 ); battleClassIndex = exdData->getField< int8_t >( row, 5 ); jobIndex = exdData->getField< uint8_t >( row, 7 ); + dohDolJobIndex = exdData->getField< int8_t >( row, 8 ); modifierHitPoints = exdData->getField< uint16_t >( row, 9 ); modifierManaPoints = exdData->getField< uint16_t >( row, 10 ); modifierStrength = exdData->getField< uint16_t >( row, 11 ); @@ -1613,6 +1661,7 @@ Sapphire::Data::ClassJob::ClassJob( uint32_t row_id, Sapphire::Data::ExdDataGene modifierIntelligence = exdData->getField< uint16_t >( row, 14 ); modifierMind = exdData->getField< uint16_t >( row, 15 ); modifierPiety = exdData->getField< uint16_t >( row, 16 ); + pvPActionSortRow = exdData->getField< uint8_t >( row, 24 ); classJobParent = exdData->getField< uint8_t >( row, 26 ); nameEnglish = exdData->getField< std::string >( row, 27 ); itemStartingWeapon = exdData->getField< int32_t >( row, 28 ); @@ -1684,6 +1733,7 @@ Sapphire::Data::CollectablesShop::CollectablesShop( uint32_t row_id, Sapphire::D auto row = exdData->m_CollectablesShopDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); quest = exdData->getField< uint32_t >( row, 1 ); + rewardType = exdData->getField< uint8_t >( row, 2 ); shopItems.push_back( exdData->getField< uint16_t >( row, 3 ) ); shopItems.push_back( exdData->getField< uint16_t >( row, 4 ) ); shopItems.push_back( exdData->getField< uint16_t >( row, 5 ) ); @@ -1704,6 +1754,8 @@ Sapphire::Data::CollectablesShopItem::CollectablesShopItem( uint32_t row_id, uin collectablesShopItemGroup = exdData->getField< uint8_t >( row, 1 ); levelMin = exdData->getField< uint16_t >( row, 2 ); levelMax = exdData->getField< uint16_t >( row, 3 ); + stars = exdData->getField< uint8_t >( row, 4 ); + key = exdData->getField< uint8_t >( row, 5 ); collectablesShopRefine = exdData->getField< uint16_t >( row, 6 ); collectablesShopRewardScrip = exdData->getField< uint16_t >( row, 7 ); } @@ -1726,6 +1778,9 @@ Sapphire::Data::CollectablesShopRewardItem::CollectablesShopRewardItem( uint32_t { auto row = exdData->m_CollectablesShopRewardItemDat.get_row( row_id ); item = exdData->getField< uint32_t >( row, 0 ); + rewardLow = exdData->getField< uint8_t >( row, 2 ); + rewardMid = exdData->getField< uint8_t >( row, 3 ); + rewardHigh = exdData->getField< uint8_t >( row, 4 ); } Sapphire::Data::CollectablesShopRewardScrip::CollectablesShopRewardScrip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -1996,6 +2051,16 @@ Sapphire::Data::CompleteJournalCategory::CompleteJournalCategory( uint32_t row_i lastQuest = exdData->getField< uint32_t >( row, 1 ); } +Sapphire::Data::Completion::Completion( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CompletionDat.get_row( row_id ); + group = exdData->getField< uint16_t >( row, 0 ); + key = exdData->getField< uint16_t >( row, 1 ); + lookupTable = exdData->getField< std::string >( row, 2 ); + text = exdData->getField< std::string >( row, 3 ); + groupTitle = exdData->getField< std::string >( row, 4 ); +} + Sapphire::Data::Condition::Condition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ConditionDat.get_row( row_id ); @@ -2042,29 +2107,31 @@ Sapphire::Data::ContentFinderCondition::ContentFinderCondition( uint32_t row_id, classJobLevelSync = exdData->getField< uint8_t >( row, 16 ); itemLevelRequired = exdData->getField< uint16_t >( row, 17 ); itemLevelSync = exdData->getField< uint16_t >( row, 18 ); - addedIn53 = exdData->getField< bool >( row, 19 ); allowUndersized = exdData->getField< bool >( row, 20 ); allowReplacement = exdData->getField< bool >( row, 21 ); - highEndDuty = exdData->getField< bool >( row, 27 ); - dutyRecorderAllowed = exdData->getField< bool >( row, 31 ); - name = exdData->getField< std::string >( row, 36 ); - contentType = exdData->getField< uint8_t >( row, 37 ); - transientKey = exdData->getField< uint8_t >( row, 38 ); - transient = exdData->getField< uint32_t >( row, 39 ); - sortKey = exdData->getField< uint16_t >( row, 40 ); - image = exdData->getField< uint32_t >( row, 41 ); - icon = exdData->getField< uint32_t >( row, 42 ); - levelingRoulette = exdData->getField< bool >( row, 44 ); - level5060Roulette = exdData->getField< bool >( row, 45 ); - mSQRoulette = exdData->getField< bool >( row, 46 ); - guildHestRoulette = exdData->getField< bool >( row, 47 ); - expertRoulette = exdData->getField< bool >( row, 48 ); - trialRoulette = exdData->getField< bool >( row, 49 ); - dailyFrontlineChallenge = exdData->getField< bool >( row, 50 ); - level70Roulette = exdData->getField< bool >( row, 51 ); - mentorRoulette = exdData->getField< bool >( row, 52 ); - allianceRoulette = exdData->getField< bool >( row, 58 ); - normalRaidRoulette = exdData->getField< bool >( row, 60 ); + allowExplorerMode = exdData->getField< bool >( row, 23 ); + highEndDuty = exdData->getField< bool >( row, 28 ); + dutyRecorderAllowed = exdData->getField< bool >( row, 32 ); + name = exdData->getField< std::string >( row, 37 ); + nameShort = exdData->getField< std::string >( row, 38 ); + contentType = exdData->getField< uint8_t >( row, 39 ); + transientKey = exdData->getField< uint8_t >( row, 40 ); + transient = exdData->getField< uint32_t >( row, 41 ); + sortKey = exdData->getField< uint16_t >( row, 42 ); + image = exdData->getField< uint32_t >( row, 43 ); + icon = exdData->getField< uint32_t >( row, 44 ); + level506070Roulette = exdData->getField< bool >( row, 46 ); + levelingRoulette = exdData->getField< bool >( row, 47 ); + mSQRoulette = exdData->getField< bool >( row, 48 ); + guildHestRoulette = exdData->getField< bool >( row, 49 ); + expertRoulette = exdData->getField< bool >( row, 50 ); + trialRoulette = exdData->getField< bool >( row, 51 ); + dailyFrontlineChallenge = exdData->getField< bool >( row, 52 ); + level80Roulette = exdData->getField< bool >( row, 53 ); + mentorRoulette = exdData->getField< bool >( row, 54 ); + allianceRoulette = exdData->getField< bool >( row, 60 ); + feastTeamRoulette = exdData->getField< bool >( row, 61 ); + normalRaidRoulette = exdData->getField< bool >( row, 62 ); } Sapphire::Data::ContentFinderConditionTransient::ContentFinderConditionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2092,10 +2159,10 @@ Sapphire::Data::ContentGaugeColor::ContentGaugeColor( uint32_t row_id, Sapphire: Sapphire::Data::ContentMemberType::ContentMemberType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ContentMemberTypeDat.get_row( row_id ); - tanksPerParty = exdData->getField< uint8_t >( row, 9 ); - healersPerParty = exdData->getField< uint8_t >( row, 10 ); - meleesPerParty = exdData->getField< uint8_t >( row, 11 ); - rangedPerParty = exdData->getField< uint8_t >( row, 12 ); + tanksPerParty = exdData->getField< uint8_t >( row, 10 ); + healersPerParty = exdData->getField< uint8_t >( row, 11 ); + meleesPerParty = exdData->getField< uint8_t >( row, 12 ); + rangedPerParty = exdData->getField< uint8_t >( row, 13 ); } Sapphire::Data::ContentNpcTalk::ContentNpcTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2122,22 +2189,23 @@ Sapphire::Data::ContentRoulette::ContentRoulette( uint32_t row_id, Sapphire::Dat { auto row = exdData->m_ContentRouletteDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); - description = exdData->getField< std::string >( row, 2 ); - dutyType = exdData->getField< std::string >( row, 3 ); - isInDutyFinder = exdData->getField< bool >( row, 6 ); - openRule = exdData->getField< bool >( row, 7 ); - requiredLevel = exdData->getField< bool >( row, 9 ); - itemLevelRequired = exdData->getField< uint8_t >( row, 11 ); - icon = exdData->getField< uint16_t >( row, 13 ); - contentRouletteRoleBonus = exdData->getField< uint32_t >( row, 14 ); - rewardTomeA = exdData->getField< uint8_t >( row, 15 ); - rewardTomeB = exdData->getField< uint16_t >( row, 16 ); - rewardTomeC = exdData->getField< uint16_t >( row, 17 ); - sortKey = exdData->getField< uint16_t >( row, 20 ); - contentMemberType = exdData->getField< uint8_t >( row, 22 ); - requireAllDuties = exdData->getField< bool >( row, 32 ); - contentRouletteOpenRule = exdData->getField< bool >( row, 34 ); - instanceContent = exdData->getField< uint8_t >( row, 35 ); + category = exdData->getField< std::string >( row, 1 ); + description = exdData->getField< std::string >( row, 3 ); + dutyType = exdData->getField< std::string >( row, 4 ); + isInDutyFinder = exdData->getField< bool >( row, 8 ); + openRule = exdData->getField< uint8_t >( row, 9 ); + requiredLevel = exdData->getField< uint8_t >( row, 11 ); + itemLevelRequired = exdData->getField< uint16_t >( row, 13 ); + icon = exdData->getField< uint32_t >( row, 15 ); + contentRouletteRoleBonus = exdData->getField< uint8_t >( row, 16 ); + rewardTomeA = exdData->getField< uint16_t >( row, 17 ); + rewardTomeB = exdData->getField< uint16_t >( row, 18 ); + rewardTomeC = exdData->getField< uint16_t >( row, 19 ); + sortKey = exdData->getField< uint8_t >( row, 22 ); + contentMemberType = exdData->getField< uint8_t >( row, 24 ); + requireAllDuties = exdData->getField< bool >( row, 34 ); + contentRouletteOpenRule = exdData->getField< uint8_t >( row, 36 ); + instanceContent = exdData->getField< uint16_t >( row, 37 ); } Sapphire::Data::ContentRouletteOpenRule::ContentRouletteOpenRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2172,6 +2240,28 @@ Sapphire::Data::ContentsNote::ContentsNote( uint32_t row_id, Sapphire::Data::Exd expCap = exdData->getField< int32_t >( row, 13 ); } +Sapphire::Data::ContentsTutorial::ContentsTutorial( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ContentsTutorialDat.get_row( row_id ); + name = exdData->getField< std::string >( row, 0 ); + description = exdData->getField< std::string >( row, 1 ); + page.push_back( exdData->getField< int32_t >( row, 2 ) ); + page.push_back( exdData->getField< int32_t >( row, 3 ) ); + page.push_back( exdData->getField< int32_t >( row, 4 ) ); + page.push_back( exdData->getField< int32_t >( row, 5 ) ); + page.push_back( exdData->getField< int32_t >( row, 6 ) ); + page.push_back( exdData->getField< int32_t >( row, 7 ) ); + page.push_back( exdData->getField< int32_t >( row, 8 ) ); + page.push_back( exdData->getField< int32_t >( row, 9 ) ); +} + +Sapphire::Data::ContentsTutorialPage::ContentsTutorialPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ContentsTutorialPageDat.get_row( row_id ); + image = exdData->getField< int32_t >( row, 0 ); + description = exdData->getField< std::string >( row, 1 ); +} + Sapphire::Data::ContentTalk::ContentTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ContentTalkDat.get_row( row_id ); @@ -2234,6 +2324,17 @@ Sapphire::Data::CraftLevelDifference::CraftLevelDifference( uint32_t row_id, Sap qualityFactor = exdData->getField< int16_t >( row, 2 ); } +Sapphire::Data::CraftLeveTalk::CraftLeveTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CraftLeveTalkDat.get_row( row_id ); + talk.push_back( exdData->getField< std::string >( row, 36 ) ); + talk.push_back( exdData->getField< std::string >( row, 37 ) ); + talk.push_back( exdData->getField< std::string >( row, 38 ) ); + talk.push_back( exdData->getField< std::string >( row, 39 ) ); + talk.push_back( exdData->getField< std::string >( row, 40 ) ); + talk.push_back( exdData->getField< std::string >( row, 41 ) ); +} + Sapphire::Data::CraftType::CraftType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CraftTypeDat.get_row( row_id ); @@ -2260,7 +2361,7 @@ Sapphire::Data::Credit::Credit( uint32_t row_id, uint32_t subRow, Sapphire::Data Sapphire::Data::CreditBackImage::CreditBackImage( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CreditBackImageDat.get_row( row_id, subRow ); - backImage = exdData->getField< uint32_t >( row, 2 ); + backImage = exdData->getField< uint32_t >( row, 5 ); } Sapphire::Data::CreditCast::CreditCast( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2284,13 +2385,6 @@ Sapphire::Data::CreditListText::CreditListText( uint32_t row_id, Sapphire::Data: name = exdData->getField< std::string >( row, 0 ); } -Sapphire::Data::Currency::Currency( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) -{ - auto row = exdData->m_CurrencyDat.get_row( row_id ); - item = exdData->getField< uint32_t >( row, 0 ); - limit = exdData->getField< uint32_t >( row, 3 ); -} - Sapphire::Data::CustomTalk::CustomTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CustomTalkDat.get_row( row_id ); @@ -2357,14 +2451,9 @@ Sapphire::Data::CustomTalk::CustomTalk( uint32_t row_id, Sapphire::Data::ExdData 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 ); -} - -Sapphire::Data::CustomTalkDynamicIcon::CustomTalkDynamicIcon( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) -{ - auto row = exdData->m_CustomTalkDynamicIconDat.get_row( row_id, subRow ); - smallIcon = exdData->getField< uint32_t >( row, 0 ); - largeIcon = exdData->getField< uint32_t >( row, 1 ); + mainOption = exdData->getField< std::string >( row, 64 ); + subOption = exdData->getField< std::string >( row, 65 ); + specialLinks = exdData->getField< uint32_t >( row, 75 ); } Sapphire::Data::CustomTalkNestHandlers::CustomTalkNestHandlers( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2379,6 +2468,12 @@ Sapphire::Data::Cutscene::Cutscene( uint32_t row_id, Sapphire::Data::ExdDataGene path = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::CutSceneIncompQuest::CutSceneIncompQuest( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_CutSceneIncompQuestDat.get_row( row_id, subRow ); + quest = exdData->getField< uint32_t >( row, 0 ); +} + Sapphire::Data::CutsceneMotion::CutsceneMotion( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_CutsceneMotionDat.get_row( row_id ); @@ -2645,25 +2740,7 @@ Sapphire::Data::Description::Description( uint32_t row_id, Sapphire::Data::ExdDa Sapphire::Data::DescriptionPage::DescriptionPage( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_DescriptionPageDat.get_row( row_id, subRow ); - quest = exdData->getField< uint32_t >( row, 0 ); - text1 = exdData->getField< uint16_t >( row, 1 ); - image1 = exdData->getField< uint32_t >( row, 2 ); - text2 = exdData->getField< uint16_t >( row, 3 ); - image2 = exdData->getField< uint32_t >( row, 4 ); - text3 = exdData->getField< uint16_t >( row, 5 ); - image3 = exdData->getField< uint32_t >( row, 6 ); - text4 = exdData->getField< uint16_t >( row, 7 ); - image4 = exdData->getField< uint32_t >( row, 8 ); - text5 = exdData->getField< uint16_t >( row, 9 ); - image5 = exdData->getField< uint32_t >( row, 10 ); - text6 = exdData->getField< uint16_t >( row, 11 ); - image6 = exdData->getField< uint32_t >( row, 12 ); - text7 = exdData->getField< uint16_t >( row, 13 ); - image7 = exdData->getField< uint32_t >( row, 14 ); - text8 = exdData->getField< uint16_t >( row, 15 ); - image8 = exdData->getField< uint32_t >( row, 16 ); - text9 = exdData->getField< uint16_t >( row, 17 ); - image9 = exdData->getField< uint32_t >( row, 18 ); + quest = exdData->getField< uint32_t >( row, 1 ); } Sapphire::Data::DescriptionSection::DescriptionSection( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) @@ -2770,7 +2847,7 @@ Sapphire::Data::DynamicEventEnemyType::DynamicEventEnemyType( uint32_t row_id, S Sapphire::Data::DynamicEventSingleBattle::DynamicEventSingleBattle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_DynamicEventSingleBattleDat.get_row( row_id ); - actionIcon = exdData->getField< int32_t >( row, 0 ); + bNpcName = exdData->getField< int32_t >( row, 0 ); icon = exdData->getField< uint32_t >( row, 1 ); text = exdData->getField< std::string >( row, 2 ); } @@ -2809,6 +2886,7 @@ Sapphire::Data::Emote::Emote( uint32_t row_id, Sapphire::Data::ExdDataGenerated* emoteMode = exdData->getField< uint8_t >( row, 12 ); hasCancelEmote = exdData->getField< bool >( row, 15 ); drawsWeapon = exdData->getField< bool >( row, 16 ); + order = exdData->getField< uint16_t >( row, 17 ); textCommand = exdData->getField< int32_t >( row, 18 ); icon = exdData->getField< uint16_t >( row, 19 ); logMessageTargeted = exdData->getField< uint16_t >( row, 20 ); @@ -2941,11 +3019,8 @@ Sapphire::Data::ENpcDressUp::ENpcDressUp( uint32_t row_id, Sapphire::Data::ExdDa Sapphire::Data::ENpcDressUpDress::ENpcDressUpDress( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ENpcDressUpDressDat.get_row( row_id, subRow ); - addedIn530 = exdData->getField< bool >( row, 5 ); eNpc = exdData->getField< uint32_t >( row, 7 ); - addedIn531 = exdData->getField< uint16_t >( row, 8 ); behavior = exdData->getField< uint16_t >( row, 9 ); - addedIn532 = exdData->getField< uint8_t >( row, 36 ); modelMainHand = exdData->getField< uint64_t >( row, 37 ); dyeMainHand = exdData->getField< uint8_t >( row, 38 ); modelOffHand = exdData->getField< uint64_t >( row, 39 ); @@ -3103,6 +3178,61 @@ Sapphire::Data::EventAction::EventAction( uint32_t row_id, Sapphire::Data::ExdDa animation.push_back( exdData->getField< uint16_t >( row, 5 ) ); } +Sapphire::Data::EventCustomIconType::EventCustomIconType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_EventCustomIconTypeDat.get_row( row_id ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 0 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 1 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 2 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 3 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 4 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 5 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 6 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 7 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 8 ) ); + announceQuest.push_back( exdData->getField< uint32_t >( row, 9 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 10 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 11 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 12 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 13 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 14 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 15 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 16 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 17 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 18 ) ); + announceQuestLocked.push_back( exdData->getField< uint32_t >( row, 19 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 20 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 21 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 22 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 23 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 24 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 25 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 26 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 27 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 28 ) ); + mapAnnounceQuest0.push_back( exdData->getField< uint32_t >( row, 29 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 30 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 31 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 32 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 33 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 34 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 35 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 36 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 37 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 38 ) ); + mapAnnounceQuestLocked.push_back( exdData->getField< uint32_t >( row, 39 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 40 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 41 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 42 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 43 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 44 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 45 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 46 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 47 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 48 ) ); + mapAnnounceQuest1.push_back( exdData->getField< uint32_t >( row, 49 ) ); +} + Sapphire::Data::EventIconPriority::EventIconPriority( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_EventIconPriorityDat.get_row( row_id ); @@ -3182,6 +3312,14 @@ Sapphire::Data::EventSystemDefine::EventSystemDefine( uint32_t row_id, Sapphire: defineValue = exdData->getField< uint32_t >( row, 1 ); } +Sapphire::Data::ExportedGatheringPoint::ExportedGatheringPoint( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ExportedGatheringPointDat.get_row( row_id ); + x = exdData->getField< float >( row, 0 ); + y = exdData->getField< float >( row, 1 ); + radius = exdData->getField< uint8_t >( row, 2 ); +} + Sapphire::Data::ExportedSG::ExportedSG( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_ExportedSGDat.get_row( row_id ); @@ -3199,46 +3337,47 @@ Sapphire::Data::ExVersion::ExVersion( uint32_t row_id, Sapphire::Data::ExdDataGe Sapphire::Data::Fate::Fate( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_FateDat.get_row( row_id ); - eurekaFate = exdData->getField< uint8_t >( row, 0 ); - rule = exdData->getField< uint8_t >( row, 1 ); - fateRuleEx = exdData->getField< uint16_t >( row, 2 ); - location = exdData->getField< uint32_t >( row, 3 ); - classJobLevel = exdData->getField< uint8_t >( row, 4 ); - classJobLevelMax = exdData->getField< uint8_t >( row, 5 ); - eventItem = exdData->getField< uint32_t >( row, 6 ); - typeToDoValue.push_back( exdData->getField< uint8_t >( row, 7 ) ); - typeToDoValue.push_back( exdData->getField< uint8_t >( row, 8 ) ); - typeToDoValue.push_back( exdData->getField< uint8_t >( row, 9 ) ); - iconObjective = exdData->getField< uint32_t >( row, 10 ); - iconMap = exdData->getField< uint32_t >( row, 11 ); - iconInactiveMap = exdData->getField< uint32_t >( row, 12 ); - music = exdData->getField< int32_t >( row, 13 ); - lGBGuardNPCLocation = exdData->getField< uint32_t >( row, 14 ); - screenImageAccept = exdData->getField< uint16_t >( row, 15 ); - screenImageComplete = exdData->getField< uint16_t >( row, 16 ); - screenImageFailed = exdData->getField< uint16_t >( row, 17 ); - specialFate = exdData->getField< bool >( row, 20 ); - givenStatus = exdData->getField< uint16_t >( row, 22 ); - adventEvent = exdData->getField< bool >( row, 24 ); - moonFaireEvent = exdData->getField< bool >( row, 25 ); - fATEChain = exdData->getField< uint32_t >( row, 27 ); - name = exdData->getField< std::string >( row, 30 ); - description = exdData->getField< std::string >( row, 31 ); - objective = exdData->getField< std::string >( row, 32 ); - statusText.push_back( exdData->getField< std::string >( row, 33 ) ); - statusText.push_back( exdData->getField< std::string >( row, 34 ) ); - statusText.push_back( exdData->getField< std::string >( row, 35 ) ); + name = exdData->getField< std::string >( row, 0 ); + description = exdData->getField< std::string >( row, 1 ); + objective = exdData->getField< std::string >( row, 2 ); + statusText.push_back( exdData->getField< std::string >( row, 3 ) ); + statusText.push_back( exdData->getField< std::string >( row, 4 ) ); + statusText.push_back( exdData->getField< std::string >( row, 5 ) ); + eurekaFate = exdData->getField< uint8_t >( row, 6 ); + rule = exdData->getField< uint8_t >( row, 7 ); + fateRuleEx = exdData->getField< uint16_t >( row, 8 ); + location = exdData->getField< uint32_t >( row, 9 ); + classJobLevel = exdData->getField< uint8_t >( row, 10 ); + classJobLevelMax = exdData->getField< uint8_t >( row, 11 ); + eventItem = exdData->getField< uint32_t >( row, 12 ); + typeToDoValue.push_back( exdData->getField< uint8_t >( row, 13 ) ); + typeToDoValue.push_back( exdData->getField< uint8_t >( row, 14 ) ); + typeToDoValue.push_back( exdData->getField< uint8_t >( row, 15 ) ); + iconObjective = exdData->getField< uint32_t >( row, 16 ); + iconMap = exdData->getField< uint32_t >( row, 17 ); + iconInactiveMap = exdData->getField< uint32_t >( row, 18 ); + music = exdData->getField< int32_t >( row, 19 ); + lGBGuardNPCLocation = exdData->getField< uint32_t >( row, 20 ); + screenImageAccept = exdData->getField< uint16_t >( row, 21 ); + screenImageComplete = exdData->getField< uint16_t >( row, 22 ); + screenImageFailed = exdData->getField< uint16_t >( row, 23 ); + requiredQuest = exdData->getField< uint32_t >( row, 25 ); + specialFate = exdData->getField< bool >( row, 26 ); + givenStatus = exdData->getField< uint16_t >( row, 28 ); + adventEvent = exdData->getField< bool >( row, 30 ); + moonFaireEvent = exdData->getField< bool >( row, 31 ); + fATEChain = exdData->getField< uint32_t >( row, 33 ); arrayIndex = exdData->getField< uint32_t >( row, 36 ); reqEventItem = exdData->getField< uint32_t >( row, 38 ); turnInEventItem = exdData->getField< uint32_t >( row, 39 ); - objectiveIcon.push_back( exdData->getField< uint16_t >( row, 40 ) ); - objectiveIcon.push_back( exdData->getField< uint16_t >( row, 41 ) ); - objectiveIcon.push_back( exdData->getField< uint16_t >( row, 42 ) ); objectiveIcon.push_back( exdData->getField< uint16_t >( row, 43 ) ); objectiveIcon.push_back( exdData->getField< uint16_t >( row, 44 ) ); objectiveIcon.push_back( exdData->getField< uint16_t >( row, 45 ) ); objectiveIcon.push_back( exdData->getField< uint16_t >( row, 46 ) ); objectiveIcon.push_back( exdData->getField< uint16_t >( row, 47 ) ); + objectiveIcon.push_back( exdData->getField< uint16_t >( row, 48 ) ); + objectiveIcon.push_back( exdData->getField< uint16_t >( row, 49 ) ); + objectiveIcon.push_back( exdData->getField< uint16_t >( row, 50 ) ); } Sapphire::Data::FateEvent::FateEvent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3437,7 +3576,9 @@ Sapphire::Data::FieldMarker::FieldMarker( uint32_t row_id, Sapphire::Data::ExdDa { auto row = exdData->m_FieldMarkerDat.get_row( row_id ); vFX = exdData->getField< int32_t >( row, 0 ); - icon = exdData->getField< uint16_t >( row, 1 ); + uiIcon = exdData->getField< uint16_t >( row, 1 ); + mapIcon = exdData->getField< uint16_t >( row, 2 ); + name = exdData->getField< std::string >( row, 3 ); } Sapphire::Data::FishingRecordType::FishingRecordType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3522,33 +3663,6 @@ Sapphire::Data::Frontline04::Frontline04( uint32_t row_id, Sapphire::Data::ExdDa level1 = exdData->getField< int32_t >( row, 0 ); level2 = exdData->getField< int32_t >( row, 1 ); level3 = exdData->getField< int32_t >( row, 2 ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 6 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 7 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 8 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 9 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 10 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 11 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 12 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 13 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 14 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 15 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 16 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 17 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 18 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 19 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 20 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 21 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 22 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 23 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 24 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 25 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 26 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 27 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 28 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 29 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 30 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 31 ) ); - unknownLevel.push_back( exdData->getField< int32_t >( row, 32 ) ); } Sapphire::Data::FurnitureCatalogCategory::FurnitureCatalogCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3591,7 +3705,7 @@ Sapphire::Data::GatheringItem::GatheringItem( uint32_t row_id, Sapphire::Data::E auto row = exdData->m_GatheringItemDat.get_row( row_id ); item = exdData->getField< int32_t >( row, 0 ); gatheringItemLevel = exdData->getField< uint16_t >( row, 1 ); - isHidden = exdData->getField< uint32_t >( row, 3 ); + isHidden = exdData->getField< bool >( row, 4 ); } Sapphire::Data::GatheringItemLevelConvertTable::GatheringItemLevelConvertTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3783,7 +3897,6 @@ Sapphire::Data::GatheringPointBonus::GatheringPointBonus( uint32_t row_id, Sapph conditionValue = exdData->getField< uint32_t >( row, 1 ); bonusType = exdData->getField< uint8_t >( row, 3 ); bonusValue = exdData->getField< uint16_t >( row, 4 ); - addedIn53 = exdData->getField< bool >( row, 6 ); } Sapphire::Data::GatheringPointBonusType::GatheringPointBonusType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -3846,6 +3959,18 @@ Sapphire::Data::GcArmyCaptureTactics::GcArmyCaptureTactics( uint32_t row_id, Sap icon = exdData->getField< uint32_t >( row, 5 ); } +Sapphire::Data::GcArmyEquipPreset::GcArmyEquipPreset( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_GcArmyEquipPresetDat.get_row( row_id ); + mainHand = exdData->getField< int32_t >( row, 0 ); + offHand = exdData->getField< int32_t >( row, 1 ); + head = exdData->getField< int32_t >( row, 2 ); + body = exdData->getField< int32_t >( row, 3 ); + gloves = exdData->getField< int32_t >( row, 4 ); + legs = exdData->getField< int32_t >( row, 5 ); + feet = exdData->getField< int32_t >( row, 6 ); +} + Sapphire::Data::GcArmyExpedition::GcArmyExpedition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GcArmyExpeditionDat.get_row( row_id ); @@ -3878,6 +4003,246 @@ Sapphire::Data::GcArmyMemberGrow::GcArmyMemberGrow( uint32_t row_id, Sapphire::D auto row = exdData->m_GcArmyMemberGrowDat.get_row( row_id ); classJob = exdData->getField< uint8_t >( row, 0 ); classBook = exdData->getField< int32_t >( row, 1 ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 2 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 3 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 4 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 5 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 6 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 7 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 8 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 9 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 10 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 11 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 12 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 13 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 14 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 15 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 16 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 17 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 18 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 19 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 20 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 21 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 22 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 23 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 24 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 25 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 26 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 27 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 28 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 29 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 30 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 31 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 32 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 33 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 34 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 35 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 36 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 37 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 38 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 39 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 40 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 41 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 42 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 43 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 44 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 45 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 46 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 47 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 48 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 49 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 50 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 51 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 52 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 53 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 54 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 55 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 56 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 57 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 58 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 59 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 60 ) ); + equipPreset.push_back( exdData->getField< uint16_t >( row, 61 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 63 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 64 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 65 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 66 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 67 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 68 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 69 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 70 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 71 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 72 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 73 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 74 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 75 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 76 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 77 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 78 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 79 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 80 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 81 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 82 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 83 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 84 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 85 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 86 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 87 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 88 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 89 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 90 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 91 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 92 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 93 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 94 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 95 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 96 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 97 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 98 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 99 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 100 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 101 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 102 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 103 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 104 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 105 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 106 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 107 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 108 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 109 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 110 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 111 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 112 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 113 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 114 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 115 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 116 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 117 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 118 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 119 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 120 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 121 ) ); + physical.push_back( exdData->getField< uint8_t >( row, 122 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 124 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 125 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 126 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 127 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 128 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 129 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 130 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 131 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 132 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 133 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 134 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 135 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 136 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 137 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 138 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 139 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 140 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 141 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 142 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 143 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 144 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 145 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 146 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 147 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 148 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 149 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 150 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 151 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 152 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 153 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 154 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 155 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 156 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 157 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 158 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 159 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 160 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 161 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 162 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 163 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 164 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 165 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 166 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 167 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 168 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 169 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 170 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 171 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 172 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 173 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 174 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 175 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 176 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 177 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 178 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 179 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 180 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 181 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 182 ) ); + mental.push_back( exdData->getField< uint8_t >( row, 183 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 185 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 186 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 187 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 188 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 189 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 190 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 191 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 192 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 193 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 194 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 195 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 196 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 197 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 198 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 199 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 200 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 201 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 202 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 203 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 204 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 205 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 206 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 207 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 208 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 209 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 210 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 211 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 212 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 213 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 214 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 215 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 216 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 217 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 218 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 219 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 220 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 221 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 222 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 223 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 224 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 225 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 226 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 227 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 228 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 229 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 230 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 231 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 232 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 233 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 234 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 235 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 236 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 237 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 238 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 239 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 240 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 241 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 242 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 243 ) ); + tactical.push_back( exdData->getField< uint8_t >( row, 244 ) ); } Sapphire::Data::GcArmyTraining::GcArmyTraining( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4084,9 +4449,9 @@ Sapphire::Data::GilShopItem::GilShopItem( uint32_t row_id, uint32_t subRow, Sapp { auto row = exdData->m_GilShopItemDat.get_row( row_id, subRow ); item = exdData->getField< int32_t >( row, 0 ); - rowRequired.push_back( exdData->getField< int32_t >( row, 3 ) ); - rowRequired.push_back( exdData->getField< int32_t >( row, 4 ) ); - rowRequired.push_back( exdData->getField< int32_t >( row, 5 ) ); + questRequired.push_back( exdData->getField< int32_t >( row, 3 ) ); + questRequired.push_back( exdData->getField< int32_t >( row, 4 ) ); + achievementRequired = exdData->getField< int32_t >( row, 5 ); stateRequired = exdData->getField< uint16_t >( row, 7 ); patch = exdData->getField< uint16_t >( row, 8 ); } @@ -4162,7 +4527,7 @@ Sapphire::Data::GroupPoseFrame::GroupPoseFrame( uint32_t row_id, Sapphire::Data: auto row = exdData->m_GroupPoseFrameDat.get_row( row_id ); image = exdData->getField< int32_t >( row, 1 ); gridText = exdData->getField< std::string >( row, 2 ); - text = exdData->getField< std::string >( row, 6 ); + text = exdData->getField< std::string >( row, 7 ); } Sapphire::Data::GroupPoseStamp::GroupPoseStamp( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4170,7 +4535,7 @@ Sapphire::Data::GroupPoseStamp::GroupPoseStamp( uint32_t row_id, Sapphire::Data: auto row = exdData->m_GroupPoseStampDat.get_row( row_id ); stampIcon = exdData->getField< int32_t >( row, 0 ); category = exdData->getField< int32_t >( row, 2 ); - name = exdData->getField< std::string >( row, 6 ); + name = exdData->getField< std::string >( row, 8 ); } Sapphire::Data::GroupPoseStampCategory::GroupPoseStampCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4216,10 +4581,12 @@ Sapphire::Data::GuideTitle::GuideTitle( uint32_t row_id, Sapphire::Data::ExdData Sapphire::Data::GuildleveAssignment::GuildleveAssignment( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GuildleveAssignmentDat.get_row( row_id ); - addedIn53 = exdData->getField< uint8_t >( row, 1 ); + type = exdData->getField< std::string >( row, 0 ); + typeId = exdData->getField< uint8_t >( row, 1 ); assignmentTalk = exdData->getField< uint32_t >( row, 2 ); quest.push_back( exdData->getField< uint32_t >( row, 3 ) ); quest.push_back( exdData->getField< uint32_t >( row, 4 ) ); + grandCompanyRank = exdData->getField< uint8_t >( row, 10 ); } Sapphire::Data::GuildleveAssignmentCategory::GuildleveAssignmentCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4235,6 +4602,19 @@ Sapphire::Data::GuildleveAssignmentCategory::GuildleveAssignmentCategory( uint32 category.push_back( exdData->getField< int32_t >( row, 7 ) ); } +Sapphire::Data::GuildleveAssignmentTalk::GuildleveAssignmentTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_GuildleveAssignmentTalkDat.get_row( row_id ); + talk.push_back( exdData->getField< std::string >( row, 30 ) ); + talk.push_back( exdData->getField< std::string >( row, 31 ) ); + talk.push_back( exdData->getField< std::string >( row, 32 ) ); + talk.push_back( exdData->getField< std::string >( row, 33 ) ); + talk.push_back( exdData->getField< std::string >( row, 34 ) ); + talk.push_back( exdData->getField< std::string >( row, 35 ) ); + talk.push_back( exdData->getField< std::string >( row, 36 ) ); + talk.push_back( exdData->getField< std::string >( row, 37 ) ); +} + Sapphire::Data::GuildOrder::GuildOrder( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_GuildOrderDat.get_row( row_id ); @@ -4589,17 +4969,20 @@ Sapphire::Data::HousingYardObject::HousingYardObject( uint32_t row_id, Sapphire: Sapphire::Data::HowTo::HowTo( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_HowToDat.get_row( row_id ); - images.push_back( exdData->getField< int16_t >( row, 2 ) ); - images.push_back( exdData->getField< int16_t >( row, 3 ) ); - images.push_back( exdData->getField< int16_t >( row, 4 ) ); - images.push_back( exdData->getField< int16_t >( row, 5 ) ); - images.push_back( exdData->getField< int16_t >( row, 6 ) ); - images.push_back( exdData->getField< int16_t >( row, 7 ) ); - images.push_back( exdData->getField< int16_t >( row, 8 ) ); - images.push_back( exdData->getField< int16_t >( row, 9 ) ); - images.push_back( exdData->getField< int16_t >( row, 10 ) ); - images.push_back( exdData->getField< int16_t >( row, 11 ) ); + name = exdData->getField< std::string >( row, 0 ); + announce = exdData->getField< bool >( row, 1 ); + howToPagePC.push_back( exdData->getField< int16_t >( row, 2 ) ); + howToPagePC.push_back( exdData->getField< int16_t >( row, 3 ) ); + howToPagePC.push_back( exdData->getField< int16_t >( row, 4 ) ); + howToPagePC.push_back( exdData->getField< int16_t >( row, 5 ) ); + howToPagePC.push_back( exdData->getField< int16_t >( row, 6 ) ); + howToPageController.push_back( exdData->getField< int16_t >( row, 7 ) ); + howToPageController.push_back( exdData->getField< int16_t >( row, 8 ) ); + howToPageController.push_back( exdData->getField< int16_t >( row, 9 ) ); + howToPageController.push_back( exdData->getField< int16_t >( row, 10 ) ); + howToPageController.push_back( exdData->getField< int16_t >( row, 11 ) ); category = exdData->getField< int8_t >( row, 12 ); + sort = exdData->getField< uint8_t >( row, 13 ); } Sapphire::Data::HowToCategory::HowToCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4611,7 +4994,13 @@ Sapphire::Data::HowToCategory::HowToCategory( uint32_t row_id, Sapphire::Data::E Sapphire::Data::HowToPage::HowToPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_HowToPageDat.get_row( row_id ); + type = exdData->getField< uint8_t >( row, 0 ); + iconType = exdData->getField< uint8_t >( row, 1 ); image = exdData->getField< int32_t >( row, 2 ); + textType = exdData->getField< uint8_t >( row, 3 ); + text.push_back( exdData->getField< std::string >( row, 4 ) ); + text.push_back( exdData->getField< std::string >( row, 5 ) ); + text.push_back( exdData->getField< std::string >( row, 6 ) ); } Sapphire::Data::HugeCraftworksNpc::HugeCraftworksNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4680,12 +5069,12 @@ Sapphire::Data::HWDCrafterSupply::HWDCrafterSupply( uint32_t row_id, Sapphire::D itemTradeIn.push_back( exdData->getField< uint32_t >( row, 14 ) ); itemTradeIn.push_back( exdData->getField< uint32_t >( row, 15 ) ); itemTradeIn.push_back( exdData->getField< uint32_t >( row, 16 ) ); - level.push_back( exdData->getField< uint8_t >( row, 17 ) ); - level.push_back( exdData->getField< uint8_t >( row, 18 ) ); - level.push_back( exdData->getField< uint8_t >( row, 19 ) ); - level.push_back( exdData->getField< uint8_t >( row, 20 ) ); - level.push_back( exdData->getField< uint8_t >( row, 21 ) ); - level.push_back( exdData->getField< uint8_t >( row, 22 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 17 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 18 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 19 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 20 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 21 ) ); + itemTradeIn.push_back( exdData->getField< uint32_t >( row, 22 ) ); level.push_back( exdData->getField< uint8_t >( row, 23 ) ); level.push_back( exdData->getField< uint8_t >( row, 24 ) ); level.push_back( exdData->getField< uint8_t >( row, 25 ) ); @@ -4697,142 +5086,271 @@ Sapphire::Data::HWDCrafterSupply::HWDCrafterSupply( uint32_t row_id, Sapphire::D level.push_back( exdData->getField< uint8_t >( row, 31 ) ); level.push_back( exdData->getField< uint8_t >( row, 32 ) ); level.push_back( exdData->getField< uint8_t >( row, 33 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 34 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 35 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 36 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 37 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 38 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 39 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 40 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 41 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 42 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 43 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 44 ) ); - levelMax.push_back( exdData->getField< uint8_t >( row, 45 ) ); + level.push_back( exdData->getField< uint8_t >( row, 34 ) ); + level.push_back( exdData->getField< uint8_t >( row, 35 ) ); + level.push_back( exdData->getField< uint8_t >( row, 36 ) ); + level.push_back( exdData->getField< uint8_t >( row, 37 ) ); + level.push_back( exdData->getField< uint8_t >( row, 38 ) ); + level.push_back( exdData->getField< uint8_t >( row, 39 ) ); + level.push_back( exdData->getField< uint8_t >( row, 40 ) ); + level.push_back( exdData->getField< uint8_t >( row, 41 ) ); + level.push_back( exdData->getField< uint8_t >( row, 42 ) ); + level.push_back( exdData->getField< uint8_t >( row, 43 ) ); + level.push_back( exdData->getField< uint8_t >( row, 44 ) ); + level.push_back( exdData->getField< uint8_t >( row, 45 ) ); levelMax.push_back( exdData->getField< uint8_t >( row, 46 ) ); levelMax.push_back( exdData->getField< uint8_t >( row, 47 ) ); levelMax.push_back( exdData->getField< uint8_t >( row, 48 ) ); levelMax.push_back( exdData->getField< uint8_t >( row, 49 ) ); levelMax.push_back( exdData->getField< uint8_t >( row, 50 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 68 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 69 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 70 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 71 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 72 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 73 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 74 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 75 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 76 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 77 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 78 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 79 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 80 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 81 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 82 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 83 ) ); - baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 84 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 85 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 86 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 87 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 88 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 89 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 90 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 91 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 92 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 93 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 94 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 95 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 96 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 97 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 98 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 99 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 100 ) ); - midCollectableRating.push_back( exdData->getField< uint16_t >( row, 101 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 102 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 103 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 104 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 105 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 106 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 107 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 108 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 109 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 110 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 111 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 112 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 113 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 114 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 115 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 116 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 117 ) ); - highCollectableRating.push_back( exdData->getField< uint16_t >( row, 118 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 119 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 120 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 121 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 122 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 123 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 124 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 125 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 126 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 127 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 128 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 129 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 130 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 131 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 132 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 133 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 134 ) ); - baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 135 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 136 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 137 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 138 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 139 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 140 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 141 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 142 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 143 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 144 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 145 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 146 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 147 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 148 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 149 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 150 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 151 ) ); - midCollectableReward.push_back( exdData->getField< uint16_t >( row, 152 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 153 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 154 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 155 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 156 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 157 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 158 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 159 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 160 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 161 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 162 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 163 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 164 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 165 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 166 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 167 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 168 ) ); - highCollectableReward.push_back( exdData->getField< uint16_t >( row, 169 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 221 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 222 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 223 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 224 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 225 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 226 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 227 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 228 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 229 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 230 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 231 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 232 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 233 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 234 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 235 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 236 ) ); - termName.push_back( exdData->getField< uint8_t >( row, 237 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 51 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 52 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 53 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 54 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 55 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 56 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 57 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 58 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 59 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 60 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 61 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 62 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 63 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 64 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 65 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 66 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 67 ) ); + levelMax.push_back( exdData->getField< uint8_t >( row, 68 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 92 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 93 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 94 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 95 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 96 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 97 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 98 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 99 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 100 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 101 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 102 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 103 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 104 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 105 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 106 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 107 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 108 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 109 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 110 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 111 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 112 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 113 ) ); + baseCollectableRating.push_back( exdData->getField< uint16_t >( row, 114 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 115 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 116 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 117 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 118 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 119 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 120 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 121 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 122 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 123 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 124 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 125 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 126 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 127 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 128 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 129 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 130 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 131 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 132 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 133 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 134 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 135 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 136 ) ); + midCollectableRating.push_back( exdData->getField< uint16_t >( row, 137 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 138 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 139 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 140 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 141 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 142 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 143 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 144 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 145 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 146 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 147 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 148 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 149 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 150 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 151 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 152 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 153 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 154 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 155 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 156 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 157 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 158 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 159 ) ); + highCollectableRating.push_back( exdData->getField< uint16_t >( row, 160 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 161 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 162 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 163 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 164 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 165 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 166 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 167 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 168 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 169 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 170 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 171 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 172 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 173 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 174 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 175 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 176 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 177 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 178 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 179 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 180 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 181 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 182 ) ); + baseCollectableReward.push_back( exdData->getField< uint16_t >( row, 183 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 184 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 185 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 186 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 187 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 188 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 189 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 190 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 191 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 192 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 193 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 194 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 195 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 196 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 197 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 198 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 199 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 200 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 201 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 202 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 203 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 204 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 205 ) ); + midCollectableReward.push_back( exdData->getField< uint16_t >( row, 206 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 207 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 208 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 209 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 210 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 211 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 212 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 213 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 214 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 215 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 216 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 217 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 218 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 219 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 220 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 221 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 222 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 223 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 224 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 225 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 226 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 227 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 228 ) ); + highCollectableReward.push_back( exdData->getField< uint16_t >( row, 229 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 230 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 231 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 232 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 233 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 234 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 235 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 236 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 237 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 238 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 239 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 240 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 241 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 242 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 243 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 244 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 245 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 246 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 247 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 248 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 249 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 250 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 251 ) ); + baseCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 252 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 253 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 254 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 255 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 256 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 257 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 258 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 259 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 260 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 261 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 262 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 263 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 264 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 265 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 266 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 267 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 268 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 269 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 270 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 271 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 272 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 273 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 274 ) ); + midCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 275 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 276 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 277 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 278 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 279 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 280 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 281 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 282 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 283 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 284 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 285 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 286 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 287 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 288 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 289 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 290 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 291 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 292 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 293 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 294 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 295 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 296 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 297 ) ); + highCollectableRewardPostPhase.push_back( exdData->getField< uint16_t >( row, 298 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 299 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 300 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 301 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 302 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 303 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 304 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 305 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 306 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 307 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 308 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 309 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 310 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 311 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 312 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 313 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 314 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 315 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 316 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 317 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 318 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 319 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 320 ) ); + termName.push_back( exdData->getField< uint8_t >( row, 321 ) ); } Sapphire::Data::HWDCrafterSupplyReward::HWDCrafterSupplyReward( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -4843,6 +5361,12 @@ Sapphire::Data::HWDCrafterSupplyReward::HWDCrafterSupplyReward( uint32_t row_id, Points = exdData->getField< uint16_t >( row, 2 ); } +Sapphire::Data::HWDCrafterSupplyTerm::HWDCrafterSupplyTerm( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_HWDCrafterSupplyTermDat.get_row( row_id ); + name = exdData->getField< std::string >( row, 0 ); +} + Sapphire::Data::HWDDevLayerControl::HWDDevLayerControl( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_HWDDevLayerControlDat.get_row( row_id ); @@ -4927,32 +5451,32 @@ Sapphire::Data::HWDGathererInspection::HWDGathererInspection( uint32_t row_id, S itemRequired.push_back( exdData->getField< uint32_t >( row, 50 ) ); itemRequired.push_back( exdData->getField< uint32_t >( row, 51 ) ); itemRequired.push_back( exdData->getField< uint32_t >( row, 52 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 53 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 54 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 55 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 56 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 57 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 58 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 59 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 60 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 61 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 62 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 63 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 64 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 65 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 66 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 67 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 68 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 69 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 70 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 71 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 72 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 73 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 74 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 75 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 76 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 77 ) ); - fishParameter.push_back( exdData->getField< uint32_t >( row, 78 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 53 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 54 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 55 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 56 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 57 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 58 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 59 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 60 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 61 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 62 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 63 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 64 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 65 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 66 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 67 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 68 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 69 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 70 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 71 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 72 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 73 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 74 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 75 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 76 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 77 ) ); + itemRequired.push_back( exdData->getField< uint32_t >( row, 78 ) ); fishParameter.push_back( exdData->getField< uint32_t >( row, 79 ) ); fishParameter.push_back( exdData->getField< uint32_t >( row, 80 ) ); fishParameter.push_back( exdData->getField< uint32_t >( row, 81 ) ); @@ -4980,271 +5504,453 @@ Sapphire::Data::HWDGathererInspection::HWDGathererInspection( uint32_t row_id, S fishParameter.push_back( exdData->getField< uint32_t >( row, 103 ) ); fishParameter.push_back( exdData->getField< uint32_t >( row, 104 ) ); fishParameter.push_back( exdData->getField< uint32_t >( row, 105 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 106 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 107 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 108 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 109 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 110 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 111 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 112 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 113 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 114 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 115 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 116 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 117 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 118 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 119 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 120 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 121 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 122 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 123 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 124 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 125 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 126 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 127 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 128 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 129 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 130 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 131 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 132 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 133 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 134 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 135 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 136 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 137 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 138 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 139 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 140 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 141 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 142 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 143 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 144 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 145 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 146 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 147 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 148 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 149 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 150 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 151 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 152 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 153 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 154 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 155 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 156 ) ); - amountRequired.push_back( exdData->getField< uint8_t >( row, 157 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 106 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 107 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 108 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 109 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 110 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 111 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 112 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 113 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 114 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 115 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 116 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 117 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 118 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 119 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 120 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 121 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 122 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 123 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 124 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 125 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 126 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 127 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 128 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 129 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 130 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 131 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 132 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 133 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 134 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 135 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 136 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 137 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 138 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 139 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 140 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 141 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 142 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 143 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 144 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 145 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 146 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 147 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 148 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 149 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 150 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 151 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 152 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 153 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 154 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 155 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 156 ) ); + fishParameter.push_back( exdData->getField< uint32_t >( row, 157 ) ); amountRequired.push_back( exdData->getField< uint8_t >( row, 158 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 159 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 160 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 161 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 162 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 163 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 164 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 165 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 166 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 167 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 168 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 169 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 170 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 171 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 172 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 173 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 174 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 175 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 176 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 177 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 178 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 179 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 180 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 181 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 182 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 183 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 184 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 185 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 186 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 187 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 188 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 189 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 190 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 191 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 192 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 193 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 194 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 195 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 196 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 197 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 198 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 199 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 200 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 201 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 202 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 203 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 204 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 205 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 206 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 207 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 208 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 209 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 210 ) ); - itemReceived.push_back( exdData->getField< uint32_t >( row, 211 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 212 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 213 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 214 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 215 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 216 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 217 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 218 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 219 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 220 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 221 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 222 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 223 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 224 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 225 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 226 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 227 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 228 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 229 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 230 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 231 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 232 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 233 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 234 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 235 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 236 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 237 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 238 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 239 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 240 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 241 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 242 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 243 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 244 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 245 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 246 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 247 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 248 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 249 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 250 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 251 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 252 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 253 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 254 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 255 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 256 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 257 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 258 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 259 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 260 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 261 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 262 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 263 ) ); - reward1.push_back( exdData->getField< uint16_t >( row, 264 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 265 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 266 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 267 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 268 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 269 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 270 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 271 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 272 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 273 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 274 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 275 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 276 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 277 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 278 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 279 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 280 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 281 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 282 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 283 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 284 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 285 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 286 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 287 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 288 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 289 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 290 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 291 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 292 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 293 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 294 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 295 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 296 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 297 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 298 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 299 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 300 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 301 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 302 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 303 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 304 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 305 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 306 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 307 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 308 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 309 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 310 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 311 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 312 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 313 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 314 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 315 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 316 ) ); - reward2.push_back( exdData->getField< uint16_t >( row, 317 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 318 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 319 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 320 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 321 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 322 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 323 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 324 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 325 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 326 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 327 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 328 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 329 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 330 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 331 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 332 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 333 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 334 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 335 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 336 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 337 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 338 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 339 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 340 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 341 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 342 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 343 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 344 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 345 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 346 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 347 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 348 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 349 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 350 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 351 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 352 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 353 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 354 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 355 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 356 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 357 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 358 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 359 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 360 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 361 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 362 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 363 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 364 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 365 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 366 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 367 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 368 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 369 ) ); - phase.push_back( exdData->getField< uint8_t >( row, 370 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 159 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 160 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 161 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 162 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 163 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 164 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 165 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 166 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 167 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 168 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 169 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 170 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 171 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 172 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 173 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 174 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 175 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 176 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 177 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 178 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 179 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 180 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 181 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 182 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 183 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 184 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 185 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 186 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 187 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 188 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 189 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 190 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 191 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 192 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 193 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 194 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 195 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 196 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 197 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 198 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 199 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 200 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 201 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 202 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 203 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 204 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 205 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 206 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 207 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 208 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 209 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 210 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 211 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 212 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 213 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 214 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 215 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 216 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 217 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 218 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 219 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 220 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 221 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 222 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 223 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 224 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 225 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 226 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 227 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 228 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 229 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 230 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 231 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 232 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 233 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 234 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 235 ) ); + amountRequired.push_back( exdData->getField< uint8_t >( row, 236 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 237 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 238 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 239 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 240 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 241 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 242 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 243 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 244 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 245 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 246 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 247 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 248 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 249 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 250 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 251 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 252 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 253 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 254 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 255 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 256 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 257 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 258 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 259 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 260 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 261 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 262 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 263 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 264 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 265 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 266 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 267 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 268 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 269 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 270 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 271 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 272 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 273 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 274 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 275 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 276 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 277 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 278 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 279 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 280 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 281 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 282 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 283 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 284 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 285 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 286 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 287 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 288 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 289 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 290 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 291 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 292 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 293 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 294 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 295 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 296 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 297 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 298 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 299 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 300 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 301 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 302 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 303 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 304 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 305 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 306 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 307 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 308 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 309 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 310 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 311 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 312 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 313 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 314 ) ); + itemReceived.push_back( exdData->getField< uint32_t >( row, 315 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 316 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 317 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 318 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 319 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 320 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 321 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 322 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 323 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 324 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 325 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 326 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 327 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 328 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 329 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 330 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 331 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 332 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 333 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 334 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 335 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 336 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 337 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 338 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 339 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 340 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 341 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 342 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 343 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 344 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 345 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 346 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 347 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 348 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 349 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 350 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 351 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 352 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 353 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 354 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 355 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 356 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 357 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 358 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 359 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 360 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 361 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 362 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 363 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 364 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 365 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 366 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 367 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 368 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 369 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 370 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 371 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 372 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 373 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 374 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 375 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 376 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 377 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 378 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 379 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 380 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 381 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 382 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 383 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 384 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 385 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 386 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 387 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 388 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 389 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 390 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 391 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 392 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 393 ) ); + reward1.push_back( exdData->getField< uint16_t >( row, 394 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 395 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 396 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 397 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 398 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 399 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 400 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 401 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 402 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 403 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 404 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 405 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 406 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 407 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 408 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 409 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 410 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 411 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 412 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 413 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 414 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 415 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 416 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 417 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 418 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 419 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 420 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 421 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 422 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 423 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 424 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 425 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 426 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 427 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 428 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 429 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 430 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 431 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 432 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 433 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 434 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 435 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 436 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 437 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 438 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 439 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 440 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 441 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 442 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 443 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 444 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 445 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 446 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 447 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 448 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 449 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 450 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 451 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 452 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 453 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 454 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 455 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 456 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 457 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 458 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 459 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 460 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 461 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 462 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 463 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 464 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 465 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 466 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 467 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 468 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 469 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 470 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 471 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 472 ) ); + reward2.push_back( exdData->getField< uint16_t >( row, 473 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 474 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 475 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 476 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 477 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 478 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 479 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 480 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 481 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 482 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 483 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 484 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 485 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 486 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 487 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 488 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 489 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 490 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 491 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 492 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 493 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 494 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 495 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 496 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 497 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 498 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 499 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 500 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 501 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 502 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 503 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 504 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 505 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 506 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 507 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 508 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 509 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 510 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 511 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 512 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 513 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 514 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 515 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 516 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 517 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 518 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 519 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 520 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 521 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 522 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 523 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 524 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 525 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 526 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 527 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 528 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 529 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 530 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 531 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 532 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 533 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 534 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 535 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 536 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 537 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 538 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 539 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 540 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 541 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 542 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 543 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 544 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 545 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 546 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 547 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 548 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 549 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 550 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 551 ) ); + phase.push_back( exdData->getField< uint8_t >( row, 552 ) ); } Sapphire::Data::HWDGathererInspectionReward::HWDGathererInspectionReward( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -5313,12 +6019,6 @@ Sapphire::Data::IKDFishParam::IKDFishParam( uint32_t row_id, Sapphire::Data::Exd Sapphire::Data::IKDRoute::IKDRoute( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_IKDRouteDat.get_row( row_id ); - spot.push_back( exdData->getField< uint32_t >( row, 0 ) ); - spot.push_back( exdData->getField< uint32_t >( row, 1 ) ); - spot.push_back( exdData->getField< uint32_t >( row, 2 ) ); - spot.push_back( exdData->getField< uint32_t >( row, 3 ) ); - spot.push_back( exdData->getField< uint32_t >( row, 4 ) ); - timeDefine = exdData->getField< uint8_t >( row, 5 ); image = exdData->getField< uint32_t >( row, 6 ); territoryType = exdData->getField< uint32_t >( row, 7 ); name = exdData->getField< std::string >( row, 8 ); @@ -5396,8 +6096,6 @@ Sapphire::Data::IndividualWeather::IndividualWeather( uint32_t row_id, Sapphire: weather.push_back( exdData->getField< uint8_t >( row, 3 ) ); weather.push_back( exdData->getField< uint8_t >( row, 4 ) ); weather.push_back( exdData->getField< uint8_t >( row, 5 ) ); - addedIn530 = exdData->getField< uint8_t >( row, 12 ); - addedIn531 = exdData->getField< uint8_t >( row, 13 ); quest.push_back( exdData->getField< uint32_t >( row, 15 ) ); quest.push_back( exdData->getField< uint32_t >( row, 16 ) ); quest.push_back( exdData->getField< uint32_t >( row, 17 ) ); @@ -5415,6 +6113,7 @@ Sapphire::Data::InstanceContent::InstanceContent( uint32_t row_id, Sapphire::Dat bGM = exdData->getField< uint16_t >( row, 4 ); winBGM = exdData->getField< uint16_t >( row, 5 ); cutscene = exdData->getField< uint32_t >( row, 6 ); + lGBEventRange = exdData->getField< uint32_t >( row, 7 ); order = exdData->getField< uint16_t >( row, 8 ); colosseum = exdData->getField< uint8_t >( row, 9 ); instanceContentTextDataBossStart = exdData->getField< uint32_t >( row, 11 ); @@ -5488,7 +6187,7 @@ Sapphire::Data::Item::Item( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e isUnique = exdData->getField< bool >( row, 21 ); isUntradable = exdData->getField< bool >( row, 22 ); isIndisposable = exdData->getField< bool >( row, 23 ); - isEquippable = exdData->getField< bool >( row, 24 ); + lot = exdData->getField< bool >( row, 24 ); priceMid = exdData->getField< uint32_t >( row, 25 ); priceLow = exdData->getField< uint32_t >( row, 26 ); canBeHq = exdData->getField< bool >( row, 27 ); @@ -5525,8 +6224,8 @@ Sapphire::Data::Item::Item( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e materiaSlotCount = exdData->getField< uint8_t >( row, 86 ); isAdvancedMeldingPermitted = exdData->getField< bool >( row, 87 ); isPvP = exdData->getField< bool >( row, 88 ); + subStatCategory = exdData->getField< uint8_t >( row, 89 ); isGlamourous = exdData->getField< bool >( row, 90 ); - for( int i = 0; i < 6; ++i ) { param[i].baseparam = exdData->getField< uint8_t >( row, 59 + i * 2 ); @@ -5698,6 +6397,12 @@ Sapphire::Data::ItemUICategory::ItemUICategory( uint32_t row_id, Sapphire::Data: orderMajor = exdData->getField< uint8_t >( row, 3 ); } +Sapphire::Data::Jingle::Jingle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_JingleDat.get_row( row_id ); + name = exdData->getField< std::string >( row, 0 ); +} + Sapphire::Data::JobHudManual::JobHudManual( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_JobHudManualDat.get_row( row_id ); @@ -5765,7 +6470,7 @@ Sapphire::Data::Leve::Leve( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e description = exdData->getField< std::string >( row, 1 ); leveClient = exdData->getField< int32_t >( row, 2 ); leveAssignmentType = exdData->getField< uint8_t >( row, 3 ); - town = exdData->getField< int32_t >( row, 4 ); + town = exdData->getField< int32_t >( row, 5 ); classJobLevel = exdData->getField< uint16_t >( row, 6 ); timeLimit = exdData->getField< uint8_t >( row, 7 ); allowanceCost = exdData->getField< uint8_t >( row, 8 ); @@ -5898,25 +6603,58 @@ Sapphire::Data::LotteryExchangeShop::LotteryExchangeShop( uint32_t row_id, Sapph itemAccepted.push_back( exdData->getField< int32_t >( row, 14 ) ); itemAccepted.push_back( exdData->getField< int32_t >( row, 15 ) ); itemAccepted.push_back( exdData->getField< int32_t >( row, 16 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 17 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 18 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 19 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 20 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 21 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 22 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 23 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 24 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 25 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 26 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 27 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 28 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 29 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 30 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 31 ) ); - amountAccepted.push_back( exdData->getField< uint32_t >( row, 32 ) ); - lua = exdData->getField< std::string >( row, 65 ); - logMessage.push_back( exdData->getField< uint32_t >( row, 66 ) ); - logMessage.push_back( exdData->getField< uint32_t >( row, 67 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 17 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 18 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 19 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 20 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 21 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 22 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 23 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 24 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 25 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 26 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 27 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 28 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 29 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 30 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 31 ) ); + itemAccepted.push_back( exdData->getField< int32_t >( row, 32 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 33 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 34 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 35 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 36 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 37 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 38 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 39 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 40 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 41 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 42 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 43 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 44 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 45 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 46 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 47 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 48 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 49 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 50 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 51 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 52 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 53 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 54 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 55 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 56 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 57 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 58 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 59 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 60 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 61 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 62 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 63 ) ); + amountAccepted.push_back( exdData->getField< uint32_t >( row, 64 ) ); + lua = exdData->getField< std::string >( row, 129 ); + logMessage.push_back( exdData->getField< uint32_t >( row, 130 ) ); + logMessage.push_back( exdData->getField< uint32_t >( row, 131 ) ); + logMessage.push_back( exdData->getField< uint32_t >( row, 132 ) ); } Sapphire::Data::MacroIcon::MacroIcon( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -5984,6 +6722,12 @@ Sapphire::Data::Map::Map( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exd isEvent = exdData->getField< bool >( row, 17 ); } +Sapphire::Data::MapCondition::MapCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_MapConditionDat.get_row( row_id ); + quest = exdData->getField< uint16_t >( row, 0 ); +} + Sapphire::Data::MapMarker::MapMarker( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MapMarkerDat.get_row( row_id, subRow ); @@ -6019,23 +6763,6 @@ Sapphire::Data::Marker::Marker( uint32_t row_id, Sapphire::Data::ExdDataGenerate name = exdData->getField< std::string >( row, 1 ); } -Sapphire::Data::MasterpieceSupplyDuty::MasterpieceSupplyDuty( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) -{ - auto row = exdData->m_MasterpieceSupplyDutyDat.get_row( row_id ); - classJob = exdData->getField< uint8_t >( row, 0 ); - classJobLevel = exdData->getField< uint8_t >( row, 1 ); - rewardCurrency = exdData->getField< uint16_t >( row, 2 ); -} - -Sapphire::Data::MasterpieceSupplyMultiplier::MasterpieceSupplyMultiplier( uint32_t row_id, Sapphire::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 ) ); -} - Sapphire::Data::Materia::Materia( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MateriaDat.get_row( row_id ); @@ -6050,16 +6777,16 @@ Sapphire::Data::Materia::Materia( uint32_t row_id, Sapphire::Data::ExdDataGenera 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 ) ); + value.push_back( exdData->getField< int16_t >( row, 11 ) ); + value.push_back( exdData->getField< int16_t >( row, 12 ) ); + value.push_back( exdData->getField< int16_t >( row, 13 ) ); + value.push_back( exdData->getField< int16_t >( row, 14 ) ); + value.push_back( exdData->getField< int16_t >( row, 15 ) ); + value.push_back( exdData->getField< int16_t >( row, 16 ) ); + value.push_back( exdData->getField< int16_t >( row, 17 ) ); + value.push_back( exdData->getField< int16_t >( row, 18 ) ); + value.push_back( exdData->getField< int16_t >( row, 19 ) ); + value.push_back( exdData->getField< int16_t >( row, 20 ) ); } Sapphire::Data::MateriaJoinRate::MateriaJoinRate( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6098,7 +6825,8 @@ Sapphire::Data::MiniGameRA::MiniGameRA( uint32_t row_id, Sapphire::Data::ExdData { auto row = exdData->m_MiniGameRADat.get_row( row_id ); icon = exdData->getField< int32_t >( row, 1 ); - bGM = exdData->getField< int32_t >( row, 2 ); + image = exdData->getField< int32_t >( row, 2 ); + bGM = exdData->getField< int32_t >( row, 3 ); } Sapphire::Data::MinionRace::MinionRace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6365,6 +7093,14 @@ Sapphire::Data::MoveVfx::MoveVfx( uint32_t row_id, Sapphire::Data::ExdDataGenera vFXWalking = exdData->getField< uint16_t >( row, 1 ); } +Sapphire::Data::MovieStaffList::MovieStaffList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_MovieStaffListDat.get_row( row_id ); + image = exdData->getField< uint32_t >( row, 0 ); + startTime = exdData->getField< float >( row, 1 ); + endTime = exdData->getField< float >( row, 2 ); +} + Sapphire::Data::MovieSubtitle::MovieSubtitle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_MovieSubtitleDat.get_row( row_id ); @@ -6407,12 +7143,14 @@ Sapphire::Data::MYCWarResultNotebook::MYCWarResultNotebook( uint32_t row_id, Sap { auto row = exdData->m_MYCWarResultNotebookDat.get_row( row_id ); number = exdData->getField< uint8_t >( row, 0 ); - icon = exdData->getField< int32_t >( row, 1 ); - image = exdData->getField< int32_t >( row, 2 ); - rarity = exdData->getField< uint8_t >( row, 3 ); - nameJP = exdData->getField< std::string >( row, 4 ); - name = exdData->getField< std::string >( row, 5 ); - description = exdData->getField< std::string >( row, 6 ); + link = exdData->getField< uint8_t >( row, 2 ); + quest = exdData->getField< int32_t >( row, 3 ); + icon = exdData->getField< int32_t >( row, 5 ); + image = exdData->getField< int32_t >( row, 6 ); + rarity = exdData->getField< uint8_t >( row, 7 ); + nameJP = exdData->getField< std::string >( row, 8 ); + name = exdData->getField< std::string >( row, 9 ); + description = exdData->getField< std::string >( row, 10 ); } Sapphire::Data::NotebookDivision::NotebookDivision( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6485,7 +7223,7 @@ Sapphire::Data::NpcYell::NpcYell( uint32_t row_id, Sapphire::Data::ExdDataGenera balloonTime = exdData->getField< float >( row, 6 ); isBalloonSlow = exdData->getField< bool >( row, 7 ); battleTalkTime = exdData->getField< bool >( row, 8 ); - text = exdData->getField< float >( row, 9 ); + text = exdData->getField< std::string >( row, 10 ); } Sapphire::Data::Omen::Omen( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6568,7 +7306,8 @@ Sapphire::Data::OrchestrionCategory::OrchestrionCategory( uint32_t row_id, Sapph { auto row = exdData->m_OrchestrionCategoryDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); - hideCategory = exdData->getField< uint8_t >( row, 1 ); + hideOrder = exdData->getField< uint8_t >( row, 1 ); + icon = exdData->getField< uint32_t >( row, 2 ); order = exdData->getField< uint8_t >( row, 3 ); } @@ -6629,6 +7368,33 @@ Sapphire::Data::PartyContent::PartyContent( uint32_t row_id, Sapphire::Data::Exd name = exdData->getField< bool >( row, 2 ); textDataStart = exdData->getField< uint32_t >( row, 3 ); textDataEnd = exdData->getField< uint32_t >( row, 4 ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 5 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 6 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 7 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 8 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 9 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 10 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 11 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 12 ) ); + lGBEventObject0.push_back( exdData->getField< uint32_t >( row, 13 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 14 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 15 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 16 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 17 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 18 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 19 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 20 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 21 ) ); + lGBEventRange.push_back( exdData->getField< uint32_t >( row, 22 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 23 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 24 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 25 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 26 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 27 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 28 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 29 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 30 ) ); + lGBEventObject1.push_back( exdData->getField< uint32_t >( row, 31 ) ); contentFinderCondition = exdData->getField< uint16_t >( row, 33 ); image = exdData->getField< uint32_t >( row, 34 ); } @@ -6667,9 +7433,20 @@ Sapphire::Data::Perform::Perform( uint32_t row_id, Sapphire::Data::ExdDataGenera animationPlay02 = exdData->getField< uint16_t >( row, 7 ); stopAnimation = exdData->getField< int32_t >( row, 8 ); instrument = exdData->getField< std::string >( row, 9 ); + order = exdData->getField< int32_t >( row, 10 ); transient = exdData->getField< uint8_t >( row, 11 ); } +Sapphire::Data::PerformGroup::PerformGroup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_PerformGroupDat.get_row( row_id ); + perform.push_back( exdData->getField< uint8_t >( row, 0 ) ); + perform.push_back( exdData->getField< uint8_t >( row, 1 ) ); + perform.push_back( exdData->getField< uint8_t >( row, 2 ) ); + perform.push_back( exdData->getField< uint8_t >( row, 3 ) ); + perform.push_back( exdData->getField< uint8_t >( row, 4 ) ); +} + Sapphire::Data::PerformTransient::PerformTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_PerformTransientDat.get_row( row_id ); @@ -6694,6 +7471,12 @@ Sapphire::Data::PetAction::PetAction( uint32_t row_id, Sapphire::Data::ExdDataGe disableOrder = exdData->getField< bool >( row, 6 ); } +Sapphire::Data::PetMirage::PetMirage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_PetMirageDat.get_row( row_id ); + name = exdData->getField< std::string >( row, 2 ); +} + Sapphire::Data::PhysicsGroup::PhysicsGroup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_PhysicsGroupDat.get_row( row_id ); @@ -6817,8 +7600,12 @@ Sapphire::Data::PublicContent::PublicContent( uint32_t row_id, Sapphire::Data::E name = exdData->getField< std::string >( row, 3 ); textDataStart = exdData->getField< uint32_t >( row, 4 ); textDataEnd = exdData->getField< uint32_t >( row, 5 ); + startCutscene = exdData->getField< uint32_t >( row, 6 ); + lGBEventRange = exdData->getField< uint32_t >( row, 7 ); + lGBPopRange = exdData->getField< uint32_t >( row, 8 ); contentFinderCondition = exdData->getField< uint16_t >( row, 9 ); additionalData = exdData->getField< uint16_t >( row, 10 ); + endCutscene = exdData->getField< uint32_t >( row, 16 ); } Sapphire::Data::PublicContentCutscene::PublicContentCutscene( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -6834,13 +7621,6 @@ Sapphire::Data::PublicContentTextData::PublicContentTextData( uint32_t row_id, S textData = exdData->getField< std::string >( row, 0 ); } -Sapphire::Data::Purify::Purify( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) -{ - auto row = exdData->m_PurifyDat.get_row( row_id ); - _class = exdData->getField< uint8_t >( row, 0 ); - level = exdData->getField< uint8_t >( row, 1 ); -} - Sapphire::Data::PvPAction::PvPAction( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_PvPActionDat.get_row( row_id ); @@ -6853,7 +7633,7 @@ Sapphire::Data::PvPAction::PvPAction( uint32_t row_id, Sapphire::Data::ExdDataGe Sapphire::Data::PvPActionSort::PvPActionSort( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_PvPActionSortDat.get_row( row_id, subRow ); - name = exdData->getField< uint8_t >( row, 0 ); + actionType = exdData->getField< uint8_t >( row, 0 ); action = exdData->getField< uint16_t >( row, 1 ); } @@ -6891,13 +7671,16 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* classJobCategory1 = exdData->getField< uint8_t >( row, 6 ); classJobLevel1 = exdData->getField< uint16_t >( row, 7 ); previousQuestJoin = exdData->getField< uint8_t >( row, 8 ); - previousQuest0 = exdData->getField< uint32_t >( row, 9 ); - previousQuest1 = exdData->getField< uint32_t >( row, 11 ); - previousQuest2 = exdData->getField< uint32_t >( row, 12 ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 9 ) ); + previousQuest0Sequence = exdData->getField< uint8_t >( row, 10 ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 11 ) ); + previousQuest.push_back( exdData->getField< uint32_t >( row, 12 ) ); questLockJoin = exdData->getField< uint8_t >( row, 13 ); questLock.push_back( exdData->getField< uint32_t >( row, 14 ) ); questLock.push_back( exdData->getField< uint32_t >( row, 15 ) ); header = exdData->getField< uint16_t >( row, 16 ); + startTown = exdData->getField< uint8_t >( row, 17 ); + classJobUnlockFlag = exdData->getField< uint8_t >( row, 18 ); classJobUnlock = exdData->getField< uint8_t >( row, 19 ); grandCompany = exdData->getField< uint8_t >( row, 20 ); grandCompanyRank = exdData->getField< uint8_t >( row, 21 ); @@ -6913,6 +7696,8 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* beastTribe = exdData->getField< uint8_t >( row, 31 ); beastReputationRank = exdData->getField< uint8_t >( row, 32 ); beastReputationValue = exdData->getField< uint16_t >( row, 33 ); + satisfactionNpc = exdData->getField< uint8_t >( row, 34 ); + satisfactionLevel = exdData->getField< uint8_t >( row, 35 ); mountRequired = exdData->getField< int32_t >( row, 36 ); isHouseRequired = exdData->getField< bool >( row, 37 ); deliveryQuest = exdData->getField< uint8_t >( row, 38 ); @@ -8150,7 +8935,7 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* classJobRequired = exdData->getField< uint8_t >( row, 1438 ); expFactor = exdData->getField< uint16_t >( row, 1440 ); gilReward = exdData->getField< uint32_t >( row, 1441 ); - gCSeals = exdData->getField< uint16_t >( row, 1443 ); + gCSeals = exdData->getField< uint32_t >( row, 1443 ); itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1444 ) ); itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1445 ) ); itemCatalyst.push_back( exdData->getField< uint8_t >( row, 1446 ) ); @@ -8219,6 +9004,13 @@ Sapphire::Data::Quest::Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* sortKey = exdData->getField< uint16_t >( row, 1514 ); } +Sapphire::Data::QuestAcceptAdditionCondition::QuestAcceptAdditionCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_QuestAcceptAdditionConditionDat.get_row( row_id ); + requirement0 = exdData->getField< uint32_t >( row, 0 ); + requirement1 = exdData->getField< uint32_t >( row, 1 ); +} + Sapphire::Data::QuestBattle::QuestBattle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_QuestBattleDat.get_row( row_id ); @@ -8663,12 +9455,25 @@ Sapphire::Data::QuestClassJobSupply::QuestClassJobSupply( uint32_t row_id, uint3 classJobCategory = exdData->getField< uint8_t >( row, 0 ); eNpcResident = exdData->getField< uint32_t >( row, 2 ); item = exdData->getField< uint32_t >( row, 3 ); + amountRequired = exdData->getField< uint8_t >( row, 4 ); + itemHQ = exdData->getField< bool >( row, 5 ); } Sapphire::Data::QuestDerivedClass::QuestDerivedClass( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_QuestDerivedClassDat.get_row( row_id ); - quest = exdData->getField< uint32_t >( row, 0 ); + classJob = exdData->getField< uint8_t >( row, 0 ); +} + +Sapphire::Data::QuestEffect::QuestEffect( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_QuestEffectDat.get_row( row_id ); +} + +Sapphire::Data::QuestEffectDefine::QuestEffectDefine( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_QuestEffectDefineDat.get_row( row_id, subRow ); + effect = exdData->getField< uint16_t >( row, 0 ); } Sapphire::Data::QuestRedo::QuestRedo( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -8714,6 +9519,7 @@ Sapphire::Data::QuestRedoChapterUI::QuestRedoChapterUI( uint32_t row_id, Sapphir { auto row = exdData->m_QuestRedoChapterUIDat.get_row( row_id ); quest = exdData->getField< uint32_t >( row, 0 ); + uITab = exdData->getField< uint8_t >( row, 1 ); category = exdData->getField< uint8_t >( row, 2 ); questRedoUISmall = exdData->getField< uint32_t >( row, 4 ); questRedoUILarge = exdData->getField< uint32_t >( row, 5 ); @@ -8784,7 +9590,7 @@ Sapphire::Data::Race::Race( uint32_t row_id, Sapphire::Data::ExdDataGenerated* e rSEFHands = exdData->getField< int32_t >( row, 7 ); rSEFLegs = exdData->getField< int32_t >( row, 8 ); rSEFFeet = exdData->getField< int32_t >( row, 9 ); - exPac = exdData->getField< uint8_t >( row, 10 ); + exPac = exdData->getField< uint8_t >( row, 11 ); } Sapphire::Data::RacingChocoboItem::RacingChocoboItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -8813,6 +9619,9 @@ Sapphire::Data::RacingChocoboNameInfo::RacingChocoboNameInfo( uint32_t row_id, S { auto row = exdData->m_RacingChocoboNameInfoDat.get_row( row_id ); racingChocoboNameCategory = exdData->getField< uint8_t >( row, 0 ); + name.push_back( exdData->getField< uint16_t >( row, 5 ) ); + name.push_back( exdData->getField< uint16_t >( row, 6 ) ); + name.push_back( exdData->getField< uint16_t >( row, 7 ) ); } Sapphire::Data::RacingChocoboParam::RacingChocoboParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -8878,6 +9687,7 @@ Sapphire::Data::RecipeLevelTable::RecipeLevelTable( uint32_t row_id, Sapphire::D difficulty = exdData->getField< uint16_t >( row, 4 ); quality = exdData->getField< uint32_t >( row, 5 ); durability = exdData->getField< uint16_t >( row, 6 ); + conditionsFlag = exdData->getField< uint16_t >( row, 7 ); } Sapphire::Data::RecipeLookup::RecipeLookup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -8896,6 +9706,7 @@ Sapphire::Data::RecipeLookup::RecipeLookup( uint32_t row_id, Sapphire::Data::Exd Sapphire::Data::RecipeNotebookList::RecipeNotebookList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_RecipeNotebookListDat.get_row( row_id ); + count = exdData->getField< uint8_t >( row, 0 ); 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 ) ); @@ -9137,10 +9948,27 @@ Sapphire::Data::Resident::Resident( uint32_t row_id, uint32_t subRow, Sapphire:: auto row = exdData->m_ResidentDat.get_row( row_id, subRow ); model = exdData->getField< uint64_t >( row, 1 ); npcYell = exdData->getField< int32_t >( row, 2 ); - addedIn53 = exdData->getField< uint16_t >( row, 3 ); residentMotionType = exdData->getField< uint8_t >( row, 4 ); } +Sapphire::Data::ResistanceWeaponAdjust::ResistanceWeaponAdjust( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_ResistanceWeaponAdjustDat.get_row( row_id ); + maxTotalStats = exdData->getField< uint16_t >( row, 0 ); + maxEachStat = exdData->getField< uint16_t >( row, 1 ); + baseParam.push_back( exdData->getField< uint8_t >( row, 2 ) ); + baseParam.push_back( exdData->getField< uint8_t >( row, 3 ) ); + baseParam.push_back( exdData->getField< uint8_t >( row, 4 ) ); + baseParam.push_back( exdData->getField< uint8_t >( row, 5 ) ); + image = exdData->getField< uint32_t >( row, 6 ); +} + +Sapphire::Data::RetainerFortuneRewardRange::RetainerFortuneRewardRange( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_RetainerFortuneRewardRangeDat.get_row( row_id ); + percentOfLevel = exdData->getField< uint16_t >( row, 0 ); +} + Sapphire::Data::RetainerTask::RetainerTask( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_RetainerTaskDat.get_row( row_id ); @@ -9225,6 +10053,13 @@ Sapphire::Data::RideShooting::RideShooting( uint32_t row_id, Sapphire::Data::Exd eNpcScale.push_back( exdData->getField< uint8_t >( row, 37 ) ); } +Sapphire::Data::RideShootingTargetType::RideShootingTargetType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_RideShootingTargetTypeDat.get_row( row_id ); + eObj = exdData->getField< uint32_t >( row, 0 ); + score = exdData->getField< int16_t >( row, 1 ); +} + Sapphire::Data::RideShootingTextData::RideShootingTextData( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_RideShootingTextDataDat.get_row( row_id ); @@ -9264,8 +10099,6 @@ Sapphire::Data::SatisfactionNpc::SatisfactionNpc( uint32_t row_id, Sapphire::Dat 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 ); - addedIn530 = exdData->getField< uint8_t >( row, 72 ); - addedIn531 = exdData->getField< uint8_t >( row, 73 ); } Sapphire::Data::SatisfactionSupply::SatisfactionSupply( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ) @@ -9402,6 +10235,7 @@ Sapphire::Data::SpearfishingNotebook::SpearfishingNotebook( uint32_t row_id, Sap { auto row = exdData->m_SpearfishingNotebookDat.get_row( row_id ); gatheringLevel = exdData->getField< uint8_t >( row, 0 ); + isShadowNode = exdData->getField< bool >( row, 1 ); territoryType = exdData->getField< int32_t >( row, 2 ); x = exdData->getField< int16_t >( row, 3 ); y = exdData->getField< int16_t >( row, 4 ); @@ -9481,66 +10315,6 @@ Sapphire::Data::SpecialShop::SpecialShop( uint32_t row_id, Sapphire::Data::ExdDa 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 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1261 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1262 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1263 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1264 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1265 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1266 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1267 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1268 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1269 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1270 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1271 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1272 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1273 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1274 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1275 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1276 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1277 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1278 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1279 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1280 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1281 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1282 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1283 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1284 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1285 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1286 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1287 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1288 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1289 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1290 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1291 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1292 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1293 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1294 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1295 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1296 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1297 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1298 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1299 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1300 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1301 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1302 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1303 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1304 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1305 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1306 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1307 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1308 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1309 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1310 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1311 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1312 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1313 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1314 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1315 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1316 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1317 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1318 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1319 ) ); - unknown.push_back( exdData->getField< int32_t >( row, 1320 ) ); achievementUnlock.push_back( exdData->getField< int32_t >( row, 1321 ) ); achievementUnlock.push_back( exdData->getField< int32_t >( row, 1322 ) ); achievementUnlock.push_back( exdData->getField< int32_t >( row, 1323 ) ); @@ -9661,7 +10435,7 @@ Sapphire::Data::SpecialShop::SpecialShop( uint32_t row_id, Sapphire::Data::ExdDa patchNumber.push_back( exdData->getField< uint16_t >( row, 1498 ) ); patchNumber.push_back( exdData->getField< uint16_t >( row, 1499 ) ); patchNumber.push_back( exdData->getField< uint16_t >( row, 1500 ) ); - useCurrencyType = exdData->getField< bool >( row, 1501 ); + useCurrencyType = exdData->getField< uint8_t >( row, 1501 ); questUnlock = exdData->getField< uint32_t >( row, 1502 ); completeText = exdData->getField< int32_t >( row, 1503 ); notCompleteText = exdData->getField< int32_t >( row, 1504 ); @@ -9678,6 +10452,7 @@ Sapphire::Data::Stain::Stain( uint32_t row_id, Sapphire::Data::ExdDataGenerated* auto row = exdData->m_StainDat.get_row( row_id ); color = exdData->getField< uint32_t >( row, 0 ); shade = exdData->getField< uint8_t >( row, 1 ); + subOrder = exdData->getField< uint8_t >( row, 2 ); name = exdData->getField< std::string >( row, 3 ); } @@ -9688,6 +10463,13 @@ Sapphire::Data::StainTransient::StainTransient( uint32_t row_id, Sapphire::Data: item2 = exdData->getField< uint32_t >( row, 1 ); } +Sapphire::Data::StanceChange::StanceChange( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_StanceChangeDat.get_row( row_id ); + action.push_back( exdData->getField< uint16_t >( row, 1 ) ); + action.push_back( exdData->getField< uint16_t >( row, 2 ) ); +} + Sapphire::Data::Status::Status( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_StatusDat.get_row( row_id ); @@ -9697,7 +10479,7 @@ Sapphire::Data::Status::Status( uint32_t row_id, Sapphire::Data::ExdDataGenerate maxStacks = exdData->getField< uint8_t >( row, 3 ); category = exdData->getField< uint8_t >( row, 5 ); hitEffect = exdData->getField< uint8_t >( row, 6 ); - vFX = exdData->getField< uint8_t >( row, 7 ); + vFX = exdData->getField< uint16_t >( row, 7 ); lockMovement = exdData->getField< bool >( row, 8 ); lockActions = exdData->getField< bool >( row, 10 ); lockControl = exdData->getField< bool >( row, 11 ); @@ -11625,6 +12407,7 @@ Sapphire::Data::SubmarinePart::SubmarinePart( uint32_t row_id, Sapphire::Data::E speed = exdData->getField< int16_t >( row, 5 ); range = exdData->getField< int16_t >( row, 6 ); favor = exdData->getField< int16_t >( row, 7 ); + _class = exdData->getField< uint16_t >( row, 8 ); repairMaterials = exdData->getField< uint8_t >( row, 9 ); } @@ -11666,6 +12449,7 @@ Sapphire::Data::TerritoryType::TerritoryType( uint32_t row_id, Sapphire::Data::E loadingImage = exdData->getField< uint8_t >( row, 7 ); exclusiveType = exdData->getField< uint8_t >( row, 8 ); territoryIntendedUse = exdData->getField< uint8_t >( row, 9 ); + contentFinderCondition = exdData->getField< uint16_t >( row, 10 ); weatherRate = exdData->getField< uint8_t >( row, 12 ); pCSearch = exdData->getField< bool >( row, 15 ); stealth = exdData->getField< bool >( row, 16 ); @@ -11681,7 +12465,6 @@ Sapphire::Data::TerritoryType::TerritoryType( uint32_t row_id, Sapphire::Data::E achievementIndex = exdData->getField< int8_t >( row, 27 ); isPvpZone = exdData->getField< bool >( row, 28 ); exVersion = exdData->getField< uint8_t >( row, 29 ); - addedIn53 = exdData->getField< uint8_t >( row, 32 ); mountSpeed = exdData->getField< uint8_t >( row, 33 ); } @@ -11699,6 +12482,13 @@ Sapphire::Data::TextCommand::TextCommand( uint32_t row_id, Sapphire::Data::ExdDa description = exdData->getField< std::string >( row, 7 ); alias = exdData->getField< std::string >( row, 8 ); shortAlias = exdData->getField< std::string >( row, 9 ); + param = exdData->getField< uint16_t >( row, 10 ); +} + +Sapphire::Data::TextCommandParam::TextCommandParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_TextCommandParamDat.get_row( row_id ); + param = exdData->getField< std::string >( row, 0 ); } Sapphire::Data::Title::Title( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11786,7 +12576,7 @@ Sapphire::Data::Transformation::Transformation( uint32_t row_id, Sapphire::Data: startVFX = exdData->getField< uint16_t >( row, 30 ); endVFX = exdData->getField< uint16_t >( row, 31 ); action6 = exdData->getField< uint32_t >( row, 32 ); - action7 = exdData->getField< uint16_t >( row, 34 ); + action7 = exdData->getField< uint16_t >( row, 35 ); } Sapphire::Data::Treasure::Treasure( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11894,6 +12684,12 @@ Sapphire::Data::TripleTriadCardResident::TripleTriadCardResident( uint32_t row_i tripleTriadCardType = exdData->getField< uint8_t >( row, 6 ); saleValue = exdData->getField< uint16_t >( row, 7 ); sortKey = exdData->getField< uint8_t >( row, 8 ); + order = exdData->getField< uint16_t >( row, 9 ); + uIPriority = exdData->getField< uint8_t >( row, 10 ); + acquisitionType = exdData->getField< uint8_t >( row, 12 ); + acquisition = exdData->getField< uint32_t >( row, 13 ); + location = exdData->getField< uint32_t >( row, 14 ); + quest = exdData->getField< uint32_t >( row, 15 ); } Sapphire::Data::TripleTriadCardType::TripleTriadCardType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11908,10 +12704,17 @@ Sapphire::Data::TripleTriadCompetition::TripleTriadCompetition( uint32_t row_id, name = exdData->getField< std::string >( row, 0 ); } +Sapphire::Data::TripleTriadResident::TripleTriadResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_TripleTriadResidentDat.get_row( row_id ); + order = exdData->getField< uint16_t >( row, 0 ); +} + Sapphire::Data::TripleTriadRule::TripleTriadRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_TripleTriadRuleDat.get_row( row_id ); name = exdData->getField< std::string >( row, 0 ); + description = exdData->getField< std::string >( row, 1 ); } Sapphire::Data::Tutorial::Tutorial( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) @@ -11943,6 +12746,52 @@ Sapphire::Data::TutorialTank::TutorialTank( uint32_t row_id, Sapphire::Data::Exd objective = exdData->getField< uint8_t >( row, 0 ); } +Sapphire::Data::UDS_Event::UDS_Event( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_UDS_EventDat.get_row( row_id ); + text = exdData->getField< std::string >( row, 0 ); + type = exdData->getField< std::string >( row, 1 ); + property.push_back( exdData->getField< int32_t >( row, 2 ) ); + property.push_back( exdData->getField< int32_t >( row, 3 ) ); + property.push_back( exdData->getField< int32_t >( row, 4 ) ); + property.push_back( exdData->getField< int32_t >( row, 5 ) ); + property.push_back( exdData->getField< int32_t >( row, 6 ) ); + property.push_back( exdData->getField< int32_t >( row, 7 ) ); + property.push_back( exdData->getField< int32_t >( row, 8 ) ); + property.push_back( exdData->getField< int32_t >( row, 9 ) ); + property.push_back( exdData->getField< int32_t >( row, 10 ) ); + property.push_back( exdData->getField< int32_t >( row, 11 ) ); + property.push_back( exdData->getField< int32_t >( row, 12 ) ); + property.push_back( exdData->getField< int32_t >( row, 13 ) ); + property.push_back( exdData->getField< int32_t >( row, 14 ) ); + property.push_back( exdData->getField< int32_t >( row, 15 ) ); + property.push_back( exdData->getField< int32_t >( row, 16 ) ); + property.push_back( exdData->getField< int32_t >( row, 17 ) ); + property.push_back( exdData->getField< int32_t >( row, 18 ) ); + property.push_back( exdData->getField< int32_t >( row, 19 ) ); + property.push_back( exdData->getField< int32_t >( row, 20 ) ); + property.push_back( exdData->getField< int32_t >( row, 21 ) ); + property.push_back( exdData->getField< int32_t >( row, 22 ) ); + property.push_back( exdData->getField< int32_t >( row, 23 ) ); + property.push_back( exdData->getField< int32_t >( row, 24 ) ); + property.push_back( exdData->getField< int32_t >( row, 25 ) ); + property.push_back( exdData->getField< int32_t >( row, 26 ) ); + property.push_back( exdData->getField< int32_t >( row, 27 ) ); + property.push_back( exdData->getField< int32_t >( row, 28 ) ); + property.push_back( exdData->getField< int32_t >( row, 29 ) ); + property.push_back( exdData->getField< int32_t >( row, 30 ) ); + property.push_back( exdData->getField< int32_t >( row, 31 ) ); + property.push_back( exdData->getField< int32_t >( row, 32 ) ); + property.push_back( exdData->getField< int32_t >( row, 33 ) ); +} + +Sapphire::Data::UDS_Property::UDS_Property( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_UDS_PropertyDat.get_row( row_id ); + text = exdData->getField< std::string >( row, 0 ); + type = exdData->getField< std::string >( row, 1 ); +} + Sapphire::Data::UIColor::UIColor( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_UIColorDat.get_row( row_id ); @@ -12045,6 +12894,21 @@ Sapphire::Data::WeatherReportReplace::WeatherReportReplace( uint32_t row_id, Sap placeNameParent = exdData->getField< uint16_t >( row, 1 ); } +Sapphire::Data::WebGuidance::WebGuidance( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_WebGuidanceDat.get_row( row_id ); + image = exdData->getField< int32_t >( row, 0 ); + url = exdData->getField< uint8_t >( row, 1 ); + name = exdData->getField< std::string >( row, 2 ); + description = exdData->getField< std::string >( row, 4 ); +} + +Sapphire::Data::WebURL::WebURL( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) +{ + auto row = exdData->m_WebURLDat.get_row( row_id ); + uRL = exdData->getField< std::string >( row, 0 ); +} + Sapphire::Data::WeddingBGM::WeddingBGM( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ) { auto row = exdData->m_WeddingBGMDat.get_row( row_id ); @@ -12186,7 +13050,7 @@ void Sapphire::Data::ExdDataGenerated::loadIdList( xiv::exd::Exd& data, std::set for( auto row : pDataRows ) { - uint32_t id = row.first; + uint32_t id = row.first.rowId; outIdList.insert( id ); } } @@ -12202,6 +13066,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_AchievementCategoryDat = setupDatAccess( "AchievementCategory", xiv::exd::Language::en ); m_AchievementHideConditionDat = setupDatAccess( "AchievementHideCondition", xiv::exd::Language::none ); m_AchievementKindDat = setupDatAccess( "AchievementKind", xiv::exd::Language::en ); + m_AchievementTargetDat = setupDatAccess( "AchievementTarget", xiv::exd::Language::none ); m_ActionDat = setupDatAccess( "Action", xiv::exd::Language::en ); m_ActionCastTimelineDat = setupDatAccess( "ActionCastTimeline", xiv::exd::Language::none ); m_ActionCastVFXDat = setupDatAccess( "ActionCastVFX", xiv::exd::Language::none ); @@ -12248,6 +13113,8 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_AOZBossDat = setupDatAccess( "AOZBoss", xiv::exd::Language::none ); m_AOZContentDat = setupDatAccess( "AOZContent", xiv::exd::Language::none ); m_AOZContentBriefingBNpcDat = setupDatAccess( "AOZContentBriefingBNpc", xiv::exd::Language::none ); + m_AOZReportDat = setupDatAccess( "AOZReport", xiv::exd::Language::none ); + m_AOZScoreDat = setupDatAccess( "AOZScore", xiv::exd::Language::en ); m_AquariumFishDat = setupDatAccess( "AquariumFish", xiv::exd::Language::none ); m_AquariumWaterDat = setupDatAccess( "AquariumWater", xiv::exd::Language::en ); m_ArrayEventHandlerDat = setupDatAccess( "ArrayEventHandler", xiv::exd::Language::none ); @@ -12328,6 +13195,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_CompanyLeveRuleDat = setupDatAccess( "CompanyLeveRule", xiv::exd::Language::none ); m_CompleteJournalDat = setupDatAccess( "CompleteJournal", xiv::exd::Language::en ); m_CompleteJournalCategoryDat = setupDatAccess( "CompleteJournalCategory", xiv::exd::Language::none ); + m_CompletionDat = setupDatAccess( "Completion", xiv::exd::Language::en ); m_ConditionDat = setupDatAccess( "Condition", xiv::exd::Language::none ); m_ConfigKeyDat = setupDatAccess( "ConfigKey", xiv::exd::Language::en ); m_ContentCloseCycleDat = setupDatAccess( "ContentCloseCycle", xiv::exd::Language::none ); @@ -12343,23 +13211,25 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_ContentRouletteOpenRuleDat = setupDatAccess( "ContentRouletteOpenRule", xiv::exd::Language::none ); m_ContentRouletteRoleBonusDat = setupDatAccess( "ContentRouletteRoleBonus", xiv::exd::Language::none ); m_ContentsNoteDat = setupDatAccess( "ContentsNote", xiv::exd::Language::en ); + m_ContentsTutorialDat = setupDatAccess( "ContentsTutorial", xiv::exd::Language::en ); + m_ContentsTutorialPageDat = setupDatAccess( "ContentsTutorialPage", xiv::exd::Language::en ); m_ContentTalkDat = setupDatAccess( "ContentTalk", xiv::exd::Language::en ); m_ContentTalkParamDat = setupDatAccess( "ContentTalkParam", xiv::exd::Language::none ); 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_CraftLevelDifferenceDat = setupDatAccess( "CraftLevelDifference", xiv::exd::Language::none ); + m_CraftLeveTalkDat = setupDatAccess( "CraftLeveTalk", xiv::exd::Language::en ); m_CraftTypeDat = setupDatAccess( "CraftType", xiv::exd::Language::en ); m_CreditDat = setupDatAccess( "Credit", xiv::exd::Language::none ); m_CreditBackImageDat = setupDatAccess( "CreditBackImage", xiv::exd::Language::none ); m_CreditCastDat = setupDatAccess( "CreditCast", xiv::exd::Language::en ); m_CreditListDat = setupDatAccess( "CreditList", xiv::exd::Language::none ); m_CreditListTextDat = setupDatAccess( "CreditListText", xiv::exd::Language::en ); - m_CurrencyDat = setupDatAccess( "Currency", xiv::exd::Language::none ); m_CustomTalkDat = setupDatAccess( "CustomTalk", xiv::exd::Language::en ); - m_CustomTalkDynamicIconDat = setupDatAccess( "CustomTalkDynamicIcon", xiv::exd::Language::none ); m_CustomTalkNestHandlersDat = setupDatAccess( "CustomTalkNestHandlers", xiv::exd::Language::none ); m_CutsceneDat = setupDatAccess( "Cutscene", xiv::exd::Language::none ); + m_CutSceneIncompQuestDat = setupDatAccess( "CutSceneIncompQuest", xiv::exd::Language::none ); m_CutsceneMotionDat = setupDatAccess( "CutsceneMotion", xiv::exd::Language::none ); m_CutsceneWorkIndexDat = setupDatAccess( "CutsceneWorkIndex", xiv::exd::Language::none ); m_CutScreenImageDat = setupDatAccess( "CutScreenImage", xiv::exd::Language::none ); @@ -12420,6 +13290,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_EurekaMagiciteItemTypeDat = setupDatAccess( "EurekaMagiciteItemType", xiv::exd::Language::en ); m_EurekaSphereElementAdjustDat = setupDatAccess( "EurekaSphereElementAdjust", xiv::exd::Language::none ); m_EventActionDat = setupDatAccess( "EventAction", xiv::exd::Language::en ); + m_EventCustomIconTypeDat = setupDatAccess( "EventCustomIconType", xiv::exd::Language::none ); m_EventIconPriorityDat = setupDatAccess( "EventIconPriority", xiv::exd::Language::none ); m_EventIconTypeDat = setupDatAccess( "EventIconType", xiv::exd::Language::none ); m_EventItemDat = setupDatAccess( "EventItem", xiv::exd::Language::en ); @@ -12427,6 +13298,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_EventItemHelpDat = setupDatAccess( "EventItemHelp", xiv::exd::Language::en ); m_EventItemTimelineDat = setupDatAccess( "EventItemTimeline", xiv::exd::Language::none ); m_EventSystemDefineDat = setupDatAccess( "EventSystemDefine", xiv::exd::Language::none ); + m_ExportedGatheringPointDat = setupDatAccess( "ExportedGatheringPoint", xiv::exd::Language::none ); m_ExportedSGDat = setupDatAccess( "ExportedSG", xiv::exd::Language::none ); m_ExVersionDat = setupDatAccess( "ExVersion", xiv::exd::Language::en ); m_FateDat = setupDatAccess( "Fate", xiv::exd::Language::en ); @@ -12476,6 +13348,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_GatheringSubCategoryDat = setupDatAccess( "GatheringSubCategory", xiv::exd::Language::en ); m_GatheringTypeDat = setupDatAccess( "GatheringType", xiv::exd::Language::en ); m_GcArmyCaptureTacticsDat = setupDatAccess( "GcArmyCaptureTactics", xiv::exd::Language::none ); + m_GcArmyEquipPresetDat = setupDatAccess( "GcArmyEquipPreset", xiv::exd::Language::none ); m_GcArmyExpeditionDat = setupDatAccess( "GcArmyExpedition", xiv::exd::Language::en ); m_GcArmyExpeditionMemberBonusDat = setupDatAccess( "GcArmyExpeditionMemberBonus", xiv::exd::Language::none ); m_GcArmyExpeditionTypeDat = setupDatAccess( "GcArmyExpeditionType", xiv::exd::Language::en ); @@ -12518,6 +13391,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_GuideTitleDat = setupDatAccess( "GuideTitle", xiv::exd::Language::en ); m_GuildleveAssignmentDat = setupDatAccess( "GuildleveAssignment", xiv::exd::Language::en ); m_GuildleveAssignmentCategoryDat = setupDatAccess( "GuildleveAssignmentCategory", xiv::exd::Language::none ); + m_GuildleveAssignmentTalkDat = setupDatAccess( "GuildleveAssignmentTalk", xiv::exd::Language::en ); m_GuildOrderDat = setupDatAccess( "GuildOrder", xiv::exd::Language::en ); m_GuildOrderGuideDat = setupDatAccess( "GuildOrderGuide", xiv::exd::Language::none ); m_GuildOrderOfficerDat = setupDatAccess( "GuildOrderOfficer", xiv::exd::Language::none ); @@ -12544,6 +13418,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_HWDAnnounceDat = setupDatAccess( "HWDAnnounce", xiv::exd::Language::en ); m_HWDCrafterSupplyDat = setupDatAccess( "HWDCrafterSupply", xiv::exd::Language::none ); m_HWDCrafterSupplyRewardDat = setupDatAccess( "HWDCrafterSupplyReward", xiv::exd::Language::none ); + m_HWDCrafterSupplyTermDat = setupDatAccess( "HWDCrafterSupplyTerm", xiv::exd::Language::en ); m_HWDDevLayerControlDat = setupDatAccess( "HWDDevLayerControl", xiv::exd::Language::none ); m_HWDDevLevelUIDat = setupDatAccess( "HWDDevLevelUI", xiv::exd::Language::none ); m_HWDDevLivelyDat = setupDatAccess( "HWDDevLively", xiv::exd::Language::none ); @@ -12582,6 +13457,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_ItemSortCategoryDat = setupDatAccess( "ItemSortCategory", xiv::exd::Language::none ); m_ItemSpecialBonusDat = setupDatAccess( "ItemSpecialBonus", xiv::exd::Language::en ); m_ItemUICategoryDat = setupDatAccess( "ItemUICategory", xiv::exd::Language::en ); + m_JingleDat = setupDatAccess( "Jingle", xiv::exd::Language::none ); m_JobHudManualDat = setupDatAccess( "JobHudManual", xiv::exd::Language::none ); m_JobHudManualPriorityDat = setupDatAccess( "JobHudManualPriority", xiv::exd::Language::none ); m_JournalCategoryDat = setupDatAccess( "JournalCategory", xiv::exd::Language::en ); @@ -12608,12 +13484,11 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_MainCommandCategoryDat = setupDatAccess( "MainCommandCategory", xiv::exd::Language::en ); m_ManeuversArmorDat = setupDatAccess( "ManeuversArmor", xiv::exd::Language::en ); m_MapDat = setupDatAccess( "Map", xiv::exd::Language::none ); + m_MapConditionDat = setupDatAccess( "MapCondition", xiv::exd::Language::none ); m_MapMarkerDat = setupDatAccess( "MapMarker", xiv::exd::Language::none ); m_MapMarkerRegionDat = setupDatAccess( "MapMarkerRegion", xiv::exd::Language::none ); m_MapSymbolDat = setupDatAccess( "MapSymbol", xiv::exd::Language::none ); m_MarkerDat = setupDatAccess( "Marker", xiv::exd::Language::en ); - 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_MateriaJoinRateDat = setupDatAccess( "MateriaJoinRate", xiv::exd::Language::none ); m_MateriaJoinRateGatherCraftDat = setupDatAccess( "MateriaJoinRateGatherCraft", xiv::exd::Language::none ); @@ -12642,6 +13517,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_MountTransientDat = setupDatAccess( "MountTransient", xiv::exd::Language::en ); m_MoveTimelineDat = setupDatAccess( "MoveTimeline", xiv::exd::Language::none ); m_MoveVfxDat = setupDatAccess( "MoveVfx", xiv::exd::Language::none ); + m_MovieStaffListDat = setupDatAccess( "MovieStaffList", xiv::exd::Language::none ); m_MovieSubtitleDat = setupDatAccess( "MovieSubtitle", xiv::exd::Language::en ); m_MovieSubtitle500Dat = setupDatAccess( "MovieSubtitle500", xiv::exd::Language::en ); m_MovieSubtitleVoyageDat = setupDatAccess( "MovieSubtitleVoyage", xiv::exd::Language::en ); @@ -12669,9 +13545,11 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_PartyContentTextDataDat = setupDatAccess( "PartyContentTextData", xiv::exd::Language::en ); m_PatchMarkDat = setupDatAccess( "PatchMark", xiv::exd::Language::none ); m_PerformDat = setupDatAccess( "Perform", xiv::exd::Language::en ); + m_PerformGroupDat = setupDatAccess( "PerformGroup", xiv::exd::Language::none ); m_PerformTransientDat = setupDatAccess( "PerformTransient", xiv::exd::Language::en ); m_PetDat = setupDatAccess( "Pet", xiv::exd::Language::en ); m_PetActionDat = setupDatAccess( "PetAction", xiv::exd::Language::en ); + m_PetMirageDat = setupDatAccess( "PetMirage", xiv::exd::Language::en ); m_PhysicsGroupDat = setupDatAccess( "PhysicsGroup", xiv::exd::Language::none ); m_PhysicsWindDat = setupDatAccess( "PhysicsWind", xiv::exd::Language::none ); m_PictureDat = setupDatAccess( "Picture", xiv::exd::Language::none ); @@ -12683,18 +13561,20 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_PublicContentDat = setupDatAccess( "PublicContent", xiv::exd::Language::en ); m_PublicContentCutsceneDat = setupDatAccess( "PublicContentCutscene", xiv::exd::Language::none ); m_PublicContentTextDataDat = setupDatAccess( "PublicContentTextData", xiv::exd::Language::en ); - m_PurifyDat = setupDatAccess( "Purify", xiv::exd::Language::none ); m_PvPActionDat = setupDatAccess( "PvPAction", xiv::exd::Language::none ); m_PvPActionSortDat = setupDatAccess( "PvPActionSort", xiv::exd::Language::none ); m_PvPRankDat = setupDatAccess( "PvPRank", xiv::exd::Language::none ); m_PvPSelectTraitDat = setupDatAccess( "PvPSelectTrait", xiv::exd::Language::en ); m_PvPTraitDat = setupDatAccess( "PvPTrait", xiv::exd::Language::none ); m_QuestDat = setupDatAccess( "Quest", xiv::exd::Language::en ); + m_QuestAcceptAdditionConditionDat = setupDatAccess( "QuestAcceptAdditionCondition", xiv::exd::Language::none ); m_QuestBattleDat = setupDatAccess( "QuestBattle", xiv::exd::Language::none ); m_QuestChapterDat = setupDatAccess( "QuestChapter", xiv::exd::Language::none ); m_QuestClassJobRewardDat = setupDatAccess( "QuestClassJobReward", xiv::exd::Language::none ); m_QuestClassJobSupplyDat = setupDatAccess( "QuestClassJobSupply", xiv::exd::Language::none ); m_QuestDerivedClassDat = setupDatAccess( "QuestDerivedClass", xiv::exd::Language::none ); + m_QuestEffectDat = setupDatAccess( "QuestEffect", xiv::exd::Language::none ); + m_QuestEffectDefineDat = setupDatAccess( "QuestEffectDefine", xiv::exd::Language::none ); m_QuestRedoDat = setupDatAccess( "QuestRedo", xiv::exd::Language::none ); m_QuestRedoChapterUIDat = setupDatAccess( "QuestRedoChapterUI", xiv::exd::Language::en ); m_QuestRedoChapterUICategoryDat = setupDatAccess( "QuestRedoChapterUICategory", xiv::exd::Language::en ); @@ -12722,12 +13602,15 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_RelicNoteDat = setupDatAccess( "RelicNote", xiv::exd::Language::none ); m_RelicNoteCategoryDat = setupDatAccess( "RelicNoteCategory", xiv::exd::Language::en ); m_ResidentDat = setupDatAccess( "Resident", xiv::exd::Language::none ); + m_ResistanceWeaponAdjustDat = setupDatAccess( "ResistanceWeaponAdjust", xiv::exd::Language::none ); + m_RetainerFortuneRewardRangeDat = setupDatAccess( "RetainerFortuneRewardRange", xiv::exd::Language::none ); m_RetainerTaskDat = setupDatAccess( "RetainerTask", xiv::exd::Language::none ); m_RetainerTaskLvRangeDat = setupDatAccess( "RetainerTaskLvRange", 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_RideShootingDat = setupDatAccess( "RideShooting", xiv::exd::Language::none ); + m_RideShootingTargetTypeDat = setupDatAccess( "RideShootingTargetType", xiv::exd::Language::none ); m_RideShootingTextDataDat = setupDatAccess( "RideShootingTextData", xiv::exd::Language::en ); m_RPParameterDat = setupDatAccess( "RPParameter", xiv::exd::Language::none ); m_SatisfactionArbitrationDat = setupDatAccess( "SatisfactionArbitration", xiv::exd::Language::none ); @@ -12753,6 +13636,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_SpecialShopItemCategoryDat = setupDatAccess( "SpecialShopItemCategory", xiv::exd::Language::en ); m_StainDat = setupDatAccess( "Stain", xiv::exd::Language::en ); m_StainTransientDat = setupDatAccess( "StainTransient", xiv::exd::Language::none ); + m_StanceChangeDat = setupDatAccess( "StanceChange", xiv::exd::Language::none ); m_StatusDat = setupDatAccess( "Status", xiv::exd::Language::en ); m_StatusHitEffectDat = setupDatAccess( "StatusHitEffect", xiv::exd::Language::none ); m_StatusLoopVFXDat = setupDatAccess( "StatusLoopVFX", xiv::exd::Language::none ); @@ -12766,6 +13650,7 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_TerritoryTypeDat = setupDatAccess( "TerritoryType", xiv::exd::Language::none ); m_TerritoryTypeTransientDat = setupDatAccess( "TerritoryTypeTransient", xiv::exd::Language::none ); m_TextCommandDat = setupDatAccess( "TextCommand", xiv::exd::Language::en ); + m_TextCommandParamDat = setupDatAccess( "TextCommandParam", 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 ); @@ -12786,11 +13671,14 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) 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_TripleTriadResidentDat = setupDatAccess( "TripleTriadResident", xiv::exd::Language::none ); 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_UDS_EventDat = setupDatAccess( "UDS_Event", xiv::exd::Language::none ); + m_UDS_PropertyDat = setupDatAccess( "UDS_Property", xiv::exd::Language::none ); m_UIColorDat = setupDatAccess( "UIColor", xiv::exd::Language::none ); m_VaseFlowerDat = setupDatAccess( "VaseFlower", xiv::exd::Language::none ); m_VFXDat = setupDatAccess( "VFX", xiv::exd::Language::none ); @@ -12802,6 +13690,8 @@ bool Sapphire::Data::ExdDataGenerated::init( const std::string& path ) m_WeatherGroupDat = setupDatAccess( "WeatherGroup", xiv::exd::Language::none ); m_WeatherRateDat = setupDatAccess( "WeatherRate", xiv::exd::Language::none ); m_WeatherReportReplaceDat = setupDatAccess( "WeatherReportReplace", xiv::exd::Language::none ); + m_WebGuidanceDat = setupDatAccess( "WebGuidance", xiv::exd::Language::en ); + m_WebURLDat = setupDatAccess( "WebURL", xiv::exd::Language::en ); m_WeddingBGMDat = setupDatAccess( "WeddingBGM", xiv::exd::Language::en ); m_WeeklyBingoOrderDataDat = setupDatAccess( "WeeklyBingoOrderData", xiv::exd::Language::none ); m_WeeklyBingoRewardDataDat = setupDatAccess( "WeeklyBingoRewardData", xiv::exd::Language::none ); diff --git a/src/common/Exd/ExdDataGenerated.h b/src/common/Exd/ExdDataGenerated.h index 78eaa037..7f890fdd 100644 --- a/src/common/Exd/ExdDataGenerated.h +++ b/src/common/Exd/ExdDataGenerated.h @@ -26,6 +26,7 @@ struct Achievement; struct AchievementCategory; struct AchievementHideCondition; struct AchievementKind; +struct AchievementTarget; struct Action; struct ActionCastTimeline; struct ActionCastVFX; @@ -72,6 +73,8 @@ struct AOZArrangement; struct AOZBoss; struct AOZContent; struct AOZContentBriefingBNpc; +struct AOZReport; +struct AOZScore; struct AquariumFish; struct AquariumWater; struct ArrayEventHandler; @@ -152,6 +155,7 @@ struct CompanyLeve; struct CompanyLeveRule; struct CompleteJournal; struct CompleteJournalCategory; +struct Completion; struct Condition; struct ConfigKey; struct ContentCloseCycle; @@ -167,23 +171,25 @@ struct ContentRoulette; struct ContentRouletteOpenRule; struct ContentRouletteRoleBonus; struct ContentsNote; +struct ContentsTutorial; +struct ContentsTutorialPage; struct ContentTalk; struct ContentTalkParam; struct ContentType; struct CraftAction; struct CraftLeve; struct CraftLevelDifference; +struct CraftLeveTalk; struct CraftType; struct Credit; struct CreditBackImage; struct CreditCast; struct CreditList; struct CreditListText; -struct Currency; struct CustomTalk; -struct CustomTalkDynamicIcon; struct CustomTalkNestHandlers; struct Cutscene; +struct CutSceneIncompQuest; struct CutsceneMotion; struct CutsceneWorkIndex; struct CutScreenImage; @@ -244,6 +250,7 @@ struct EurekaMagiciteItem; struct EurekaMagiciteItemType; struct EurekaSphereElementAdjust; struct EventAction; +struct EventCustomIconType; struct EventIconPriority; struct EventIconType; struct EventItem; @@ -251,6 +258,7 @@ struct EventItemCastTimeline; struct EventItemHelp; struct EventItemTimeline; struct EventSystemDefine; +struct ExportedGatheringPoint; struct ExportedSG; struct ExVersion; struct Fate; @@ -300,6 +308,7 @@ struct GatheringRarePopTimeTable; struct GatheringSubCategory; struct GatheringType; struct GcArmyCaptureTactics; +struct GcArmyEquipPreset; struct GcArmyExpedition; struct GcArmyExpeditionMemberBonus; struct GcArmyExpeditionType; @@ -342,6 +351,7 @@ struct GuidePageString; struct GuideTitle; struct GuildleveAssignment; struct GuildleveAssignmentCategory; +struct GuildleveAssignmentTalk; struct GuildOrder; struct GuildOrderGuide; struct GuildOrderOfficer; @@ -368,6 +378,7 @@ struct HugeCraftworksRank; struct HWDAnnounce; struct HWDCrafterSupply; struct HWDCrafterSupplyReward; +struct HWDCrafterSupplyTerm; struct HWDDevLayerControl; struct HWDDevLevelUI; struct HWDDevLively; @@ -406,6 +417,7 @@ struct ItemSeries; struct ItemSortCategory; struct ItemSpecialBonus; struct ItemUICategory; +struct Jingle; struct JobHudManual; struct JobHudManualPriority; struct JournalCategory; @@ -432,12 +444,11 @@ struct MainCommand; struct MainCommandCategory; struct ManeuversArmor; struct Map; +struct MapCondition; struct MapMarker; struct MapMarkerRegion; struct MapSymbol; struct Marker; -struct MasterpieceSupplyDuty; -struct MasterpieceSupplyMultiplier; struct Materia; struct MateriaJoinRate; struct MateriaJoinRateGatherCraft; @@ -466,6 +477,7 @@ struct MountSpeed; struct MountTransient; struct MoveTimeline; struct MoveVfx; +struct MovieStaffList; struct MovieSubtitle; struct MovieSubtitle500; struct MovieSubtitleVoyage; @@ -493,9 +505,11 @@ struct PartyContentCutscene; struct PartyContentTextData; struct PatchMark; struct Perform; +struct PerformGroup; struct PerformTransient; struct Pet; struct PetAction; +struct PetMirage; struct PhysicsGroup; struct PhysicsWind; struct Picture; @@ -507,18 +521,20 @@ struct PresetCameraAdjust; struct PublicContent; struct PublicContentCutscene; struct PublicContentTextData; -struct Purify; struct PvPAction; struct PvPActionSort; struct PvPRank; struct PvPSelectTrait; struct PvPTrait; struct Quest; +struct QuestAcceptAdditionCondition; struct QuestBattle; struct QuestChapter; struct QuestClassJobReward; struct QuestClassJobSupply; struct QuestDerivedClass; +struct QuestEffect; +struct QuestEffectDefine; struct QuestRedo; struct QuestRedoChapterUI; struct QuestRedoChapterUICategory; @@ -546,12 +562,15 @@ struct RelicItem; struct RelicNote; struct RelicNoteCategory; struct Resident; +struct ResistanceWeaponAdjust; +struct RetainerFortuneRewardRange; struct RetainerTask; struct RetainerTaskLvRange; struct RetainerTaskNormal; struct RetainerTaskParameter; struct RetainerTaskRandom; struct RideShooting; +struct RideShootingTargetType; struct RideShootingTextData; struct RPParameter; struct SatisfactionArbitration; @@ -577,6 +596,7 @@ struct SpecialShop; struct SpecialShopItemCategory; struct Stain; struct StainTransient; +struct StanceChange; struct Status; struct StatusHitEffect; struct StatusLoopVFX; @@ -590,6 +610,7 @@ struct SwitchTalkVariation; struct TerritoryType; struct TerritoryTypeTransient; struct TextCommand; +struct TextCommandParam; struct Title; struct Tomestones; struct TomestonesItem; @@ -610,11 +631,14 @@ struct TripleTriadCardRarity; struct TripleTriadCardResident; struct TripleTriadCardType; struct TripleTriadCompetition; +struct TripleTriadResident; struct TripleTriadRule; struct Tutorial; struct TutorialDPS; struct TutorialHealer; struct TutorialTank; +struct UDS_Event; +struct UDS_Property; struct UIColor; struct VaseFlower; struct VFX; @@ -626,6 +650,8 @@ struct Weather; struct WeatherGroup; struct WeatherRate; struct WeatherReportReplace; +struct WebGuidance; +struct WebURL; struct WeddingBGM; struct WeeklyBingoOrderData; struct WeeklyBingoRewardData; @@ -644,6 +670,7 @@ struct Achievement uint8_t achievementCategory; std::string name; std::string description; + uint8_t achievementTarget; uint8_t points; uint16_t title; uint32_t item; @@ -685,6 +712,14 @@ struct AchievementKind AchievementKind( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct AchievementTarget +{ + uint8_t type; + uint32_t value; + + AchievementTarget( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct Action { std::string name; @@ -717,6 +752,7 @@ struct Action uint16_t cast100ms; uint16_t recast100ms; uint8_t cooldownGroup; + uint8_t additionalCooldownGroup; uint8_t maxCharges; int8_t attackType; uint8_t aspect; @@ -765,6 +801,8 @@ struct ActionComboRoute struct ActionIndirection { int32_t name; + int8_t classJob; + int32_t previousComboAction; ActionIndirection( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -943,6 +981,7 @@ struct Aetheryte std::vector< uint32_t > level; bool isAetheryte; uint8_t aethernetGroup; + bool invisible; uint32_t requiredQuest; uint16_t map; int16_t aetherstreamX; @@ -983,6 +1022,7 @@ struct AirshipExplorationParamType struct AirshipExplorationPart { + uint8_t slot; uint8_t rank; uint8_t components; int16_t surveillance; @@ -990,6 +1030,7 @@ struct AirshipExplorationPart int16_t speed; int16_t range; int16_t favor; + uint16_t _class; uint8_t repairMaterials; AirshipExplorationPart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -1102,6 +1143,7 @@ struct AnimaWeaponItem struct AozAction { uint32_t action; + uint8_t rank; AozAction( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1112,9 +1154,22 @@ struct AozActionTransient uint32_t icon; std::string stats; std::string description; + uint8_t locationKey; uint16_t location; - uint32_t startQuest; - uint32_t nextQuest; + uint32_t requiredForQuest; + uint32_t previousQuest; + bool targetsEnemy; + bool targetsSelfOrAlly; + bool causeSlow; + bool causePetrify; + bool causeParalysis; + bool causeInterrupt; + bool causeBlind; + bool causeStun; + bool causeSleep; + bool causeBind; + bool causeHeavy; + bool causeDeath; AozActionTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1122,6 +1177,7 @@ struct AozActionTransient struct AOZArrangement { uint16_t aOZContentBriefingBNpc; + uint16_t position; AOZArrangement( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1129,6 +1185,7 @@ struct AOZArrangement struct AOZBoss { uint16_t boss; + uint16_t position; AOZBoss( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1160,6 +1217,7 @@ struct AOZContentBriefingBNpc uint32_t bNpcName; uint32_t targetSmall; uint32_t targetLarge; + bool hideStats; uint8_t endurance; uint8_t fire; uint8_t ice; @@ -1171,20 +1229,38 @@ struct AOZContentBriefingBNpc uint8_t piercing; uint8_t blunt; uint8_t magic; - bool slowResistance; - bool petrificationResistance; - bool paralysisResistance; - bool silenceResistance; - bool blindResistance; - bool stunResistance; - bool sleepResistance; - bool bindResistance; - bool heavyResistance; - bool instaDeathResistance; + bool slowVuln; + bool petrificationVuln; + bool paralysisVuln; + bool interruptionVuln; + bool blindVuln; + bool stunVuln; + bool sleepVuln; + bool bindVuln; + bool heavyVuln; + bool flatOrDeathVuln; AOZContentBriefingBNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct AOZReport +{ + uint8_t reward; + int8_t order; + + AOZReport( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct AOZScore +{ + bool isHidden; + int32_t score; + std::string name; + std::string description; + + AOZScore( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct AquariumFish { uint8_t aquariumWater; @@ -1646,6 +1722,7 @@ struct BuddyEquip uint16_t iconHead; uint16_t iconBody; uint16_t iconLegs; + uint8_t order; BuddyEquip( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1716,7 +1793,6 @@ struct Channeling { std::string file; uint8_t widthScale; - bool addedIn53; Channeling( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -1924,6 +2000,7 @@ struct ClassJob int8_t expArrayIndex; int8_t battleClassIndex; uint8_t jobIndex; + int8_t dohDolJobIndex; uint16_t modifierHitPoints; uint16_t modifierManaPoints; uint16_t modifierStrength; @@ -1932,6 +2009,7 @@ struct ClassJob uint16_t modifierIntelligence; uint16_t modifierMind; uint16_t modifierPiety; + uint8_t pvPActionSortRow; uint8_t classJobParent; std::string nameEnglish; int32_t itemStartingWeapon; @@ -2005,6 +2083,7 @@ struct CollectablesShop { std::string name; uint32_t quest; + uint8_t rewardType; std::vector< uint16_t > shopItems; CollectablesShop( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -2016,6 +2095,8 @@ struct CollectablesShopItem uint8_t collectablesShopItemGroup; uint16_t levelMin; uint16_t levelMax; + uint8_t stars; + uint8_t key; uint16_t collectablesShopRefine; uint16_t collectablesShopRewardScrip; @@ -2041,6 +2122,9 @@ struct CollectablesShopRefine struct CollectablesShopRewardItem { uint32_t item; + uint8_t rewardLow; + uint8_t rewardMid; + uint8_t rewardHigh; CollectablesShopRewardItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -2242,6 +2326,17 @@ struct CompleteJournalCategory CompleteJournalCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct Completion +{ + uint16_t group; + uint16_t key; + std::string lookupTable; + std::string text; + std::string groupTitle; + + Completion( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct Condition { uint32_t logMessage; @@ -2291,28 +2386,30 @@ struct ContentFinderCondition uint8_t classJobLevelSync; uint16_t itemLevelRequired; uint16_t itemLevelSync; - bool addedIn53; bool allowUndersized; bool allowReplacement; + bool allowExplorerMode; bool highEndDuty; bool dutyRecorderAllowed; std::string name; + std::string nameShort; uint8_t contentType; uint8_t transientKey; uint32_t transient; uint16_t sortKey; uint32_t image; uint32_t icon; + bool level506070Roulette; bool levelingRoulette; - bool level5060Roulette; bool mSQRoulette; bool guildHestRoulette; bool expertRoulette; bool trialRoulette; bool dailyFrontlineChallenge; - bool level70Roulette; + bool level80Roulette; bool mentorRoulette; bool allianceRoulette; + bool feastTeamRoulette; bool normalRaidRoulette; ContentFinderCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -2371,22 +2468,23 @@ struct ContentRandomSelect struct ContentRoulette { std::string name; + std::string category; std::string description; std::string dutyType; bool isInDutyFinder; - bool openRule; - bool requiredLevel; - uint8_t itemLevelRequired; - uint16_t icon; - uint32_t contentRouletteRoleBonus; - uint8_t rewardTomeA; + uint8_t openRule; + uint8_t requiredLevel; + uint16_t itemLevelRequired; + uint32_t icon; + uint8_t contentRouletteRoleBonus; + uint16_t rewardTomeA; uint16_t rewardTomeB; uint16_t rewardTomeC; - uint16_t sortKey; + uint8_t sortKey; uint8_t contentMemberType; bool requireAllDuties; - bool contentRouletteOpenRule; - uint8_t instanceContent; + uint8_t contentRouletteOpenRule; + uint16_t instanceContent; ContentRoulette( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -2426,6 +2524,23 @@ struct ContentsNote ContentsNote( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct ContentsTutorial +{ + std::string name; + std::string description; + std::vector< int32_t > page; + + ContentsTutorial( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct ContentsTutorialPage +{ + int32_t image; + std::string description; + + ContentsTutorialPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct ContentTalk { uint8_t contentTalkParam; @@ -2494,6 +2609,13 @@ struct CraftLevelDifference CraftLevelDifference( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct CraftLeveTalk +{ + std::vector< std::string > talk; + + CraftLeveTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct CraftType { uint8_t mainPhysical; @@ -2550,14 +2672,6 @@ struct CreditListText CreditListText( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; -struct Currency -{ - uint32_t item; - uint32_t limit; - - Currency( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); -}; - struct CustomTalk { uint32_t iconActor; @@ -2565,19 +2679,13 @@ struct CustomTalk std::string name; std::vector< std::string > scriptInstruction; std::vector< uint32_t > scriptArg; - bool text; + std::string mainOption; + std::string subOption; + uint32_t specialLinks; CustomTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; -struct CustomTalkDynamicIcon -{ - uint32_t smallIcon; - uint32_t largeIcon; - - CustomTalkDynamicIcon( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); -}; - struct CustomTalkNestHandlers { uint32_t nestHandler; @@ -2592,6 +2700,13 @@ struct Cutscene Cutscene( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct CutSceneIncompQuest +{ + uint32_t quest; + + CutSceneIncompQuest( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct CutsceneMotion { float wALK_LOOP_SPEED; @@ -2848,24 +2963,6 @@ struct Description struct DescriptionPage { uint32_t quest; - uint16_t text1; - uint32_t image1; - uint16_t text2; - uint32_t image2; - uint16_t text3; - uint32_t image3; - uint16_t text4; - uint32_t image4; - uint16_t text5; - uint32_t image5; - uint16_t text6; - uint32_t image6; - uint16_t text7; - uint32_t image7; - uint16_t text8; - uint32_t image8; - uint16_t text9; - uint32_t image9; DescriptionPage( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -2959,7 +3056,7 @@ struct DynamicEventEnemyType struct DynamicEventSingleBattle { - int32_t actionIcon; + int32_t bNpcName; uint32_t icon; std::string text; @@ -2996,6 +3093,7 @@ struct Emote uint8_t emoteMode; bool hasCancelEmote; bool drawsWeapon; + uint16_t order; int32_t textCommand; uint16_t icon; uint16_t logMessageTargeted; @@ -3102,11 +3200,8 @@ struct ENpcDressUp struct ENpcDressUpDress { - bool addedIn530; uint32_t eNpc; - uint16_t addedIn531; uint16_t behavior; - uint8_t addedIn532; uint64_t modelMainHand; uint8_t dyeMainHand; uint64_t modelOffHand; @@ -3278,6 +3373,17 @@ struct EventAction EventAction( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct EventCustomIconType +{ + std::vector< uint32_t > announceQuest; + std::vector< uint32_t > announceQuestLocked; + std::vector< uint32_t > mapAnnounceQuest0; + std::vector< uint32_t > mapAnnounceQuestLocked; + std::vector< uint32_t > mapAnnounceQuest1; + + EventCustomIconType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct EventIconPriority { std::vector< uint32_t > icon; @@ -3346,6 +3452,15 @@ struct EventSystemDefine EventSystemDefine( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct ExportedGatheringPoint +{ + float x; + float y; + uint8_t radius; + + ExportedGatheringPoint( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct ExportedSG { std::string sgbPath; @@ -3364,6 +3479,10 @@ struct ExVersion struct Fate { + std::string name; + std::string description; + std::string objective; + std::vector< std::string > statusText; uint8_t eurekaFate; uint8_t rule; uint16_t fateRuleEx; @@ -3380,15 +3499,12 @@ struct Fate uint16_t screenImageAccept; uint16_t screenImageComplete; uint16_t screenImageFailed; + uint32_t requiredQuest; bool specialFate; uint16_t givenStatus; bool adventEvent; bool moonFaireEvent; uint32_t fATEChain; - std::string name; - std::string description; - std::string objective; - std::vector< std::string > statusText; uint32_t arrayIndex; uint32_t reqEventItem; uint32_t turnInEventItem; @@ -3553,7 +3669,9 @@ struct Festival struct FieldMarker { int32_t vFX; - uint16_t icon; + uint16_t uiIcon; + uint16_t mapIcon; + std::string name; FieldMarker( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -3627,7 +3745,6 @@ struct Frontline04 int32_t level1; int32_t level2; int32_t level3; - std::vector< int32_t > unknownLevel; Frontline04( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -3676,7 +3793,7 @@ struct GatheringItem { int32_t item; uint16_t gatheringItemLevel; - uint32_t isHidden; + bool isHidden; GatheringItem( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -3767,7 +3884,6 @@ struct GatheringPointBonus uint32_t conditionValue; uint8_t bonusType; uint16_t bonusValue; - bool addedIn53; GatheringPointBonus( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -3839,6 +3955,19 @@ struct GcArmyCaptureTactics GcArmyCaptureTactics( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct GcArmyEquipPreset +{ + int32_t mainHand; + int32_t offHand; + int32_t head; + int32_t body; + int32_t gloves; + int32_t legs; + int32_t feet; + + GcArmyEquipPreset( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct GcArmyExpedition { uint8_t requiredFlag; @@ -3873,6 +4002,10 @@ struct GcArmyMemberGrow { uint8_t classJob; int32_t classBook; + std::vector< uint16_t > equipPreset; + std::vector< uint8_t > physical; + std::vector< uint8_t > mental; + std::vector< uint8_t > tactical; GcArmyMemberGrow( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -4085,7 +4218,8 @@ struct GilShop struct GilShopItem { int32_t item; - std::vector< int32_t > rowRequired; + std::vector< int32_t > questRequired; + int32_t achievementRequired; uint16_t stateRequired; uint16_t patch; @@ -4231,9 +4365,11 @@ struct GuideTitle struct GuildleveAssignment { - uint8_t addedIn53; + std::string type; + uint8_t typeId; uint32_t assignmentTalk; std::vector< uint32_t > quest; + uint8_t grandCompanyRank; GuildleveAssignment( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -4245,6 +4381,13 @@ struct GuildleveAssignmentCategory GuildleveAssignmentCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct GuildleveAssignmentTalk +{ + std::vector< std::string > talk; + + GuildleveAssignmentTalk( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct GuildOrder { uint32_t eNpcName; @@ -4431,8 +4574,12 @@ struct HousingYardObject struct HowTo { - std::vector< int16_t > images; + std::string name; + bool announce; + std::vector< int16_t > howToPagePC; + std::vector< int16_t > howToPageController; int8_t category; + uint8_t sort; HowTo( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -4446,7 +4593,11 @@ struct HowToCategory struct HowToPage { + uint8_t type; + uint8_t iconType; int32_t image; + uint8_t textType; + std::vector< std::string > text; HowToPage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -4493,6 +4644,9 @@ struct HWDCrafterSupply std::vector< uint16_t > baseCollectableReward; std::vector< uint16_t > midCollectableReward; std::vector< uint16_t > highCollectableReward; + std::vector< uint16_t > baseCollectableRewardPostPhase; + std::vector< uint16_t > midCollectableRewardPostPhase; + std::vector< uint16_t > highCollectableRewardPostPhase; std::vector< uint8_t > termName; HWDCrafterSupply( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -4507,6 +4661,13 @@ struct HWDCrafterSupplyReward HWDCrafterSupplyReward( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct HWDCrafterSupplyTerm +{ + std::string name; + + HWDCrafterSupplyTerm( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct HWDDevLayerControl { @@ -4627,8 +4788,6 @@ struct IKDFishParam struct IKDRoute { - std::vector< uint32_t > spot; - uint8_t timeDefine; uint32_t image; uint32_t territoryType; std::string name; @@ -4678,8 +4837,6 @@ struct InclusionShopSeries struct IndividualWeather { std::vector< uint8_t > weather; - uint8_t addedIn530; - uint8_t addedIn531; std::vector< uint32_t > quest; IndividualWeather( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -4693,6 +4850,7 @@ struct InstanceContent uint16_t bGM; uint16_t winBGM; uint32_t cutscene; + uint32_t lGBEventRange; uint16_t order; uint8_t colosseum; uint32_t instanceContentTextDataBossStart; @@ -4771,7 +4929,7 @@ struct Item bool isUnique; bool isUntradable; bool isIndisposable; - bool isEquippable; + bool lot; uint32_t priceMid; uint32_t priceLow; bool canBeHq; @@ -4808,6 +4966,7 @@ struct Item uint8_t materiaSlotCount; bool isAdvancedMeldingPermitted; bool isPvP; + uint8_t subStatCategory; bool isGlamourous; struct @@ -4977,6 +5136,13 @@ struct ItemUICategory ItemUICategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct Jingle +{ + std::string name; + + Jingle( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct JobHudManual { uint32_t action; @@ -5251,6 +5417,13 @@ struct Map Map( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct MapCondition +{ + uint16_t quest; + + MapCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct MapMarker { int16_t x; @@ -5290,28 +5463,11 @@ struct Marker Marker( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; -struct MasterpieceSupplyDuty -{ - uint8_t classJob; - uint8_t classJobLevel; - uint16_t rewardCurrency; - - MasterpieceSupplyDuty( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); -}; - -struct MasterpieceSupplyMultiplier -{ - std::vector< uint16_t > xpMultiplier; - std::vector< uint16_t > currencyMultiplier; - - MasterpieceSupplyMultiplier( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); -}; - struct Materia { std::vector< int32_t > item; uint8_t baseParam; - std::vector< uint8_t > value; + std::vector< int16_t > value; Materia( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -5342,6 +5498,7 @@ struct MateriaTomestoneRate struct MiniGameRA { int32_t icon; + int32_t image; int32_t bGM; MiniGameRA( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -5623,6 +5780,15 @@ struct MoveVfx MoveVfx( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct MovieStaffList +{ + uint32_t image; + float startTime; + float endTime; + + MovieStaffList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct MovieSubtitle { float startTime; @@ -5669,6 +5835,8 @@ struct MYCTemporaryItemUICategory struct MYCWarResultNotebook { uint8_t number; + uint8_t link; + int32_t quest; int32_t icon; int32_t image; uint8_t rarity; @@ -5752,7 +5920,7 @@ struct NpcYell float balloonTime; bool isBalloonSlow; bool battleTalkTime; - float text; + std::string text; NpcYell( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -5812,7 +5980,8 @@ struct Orchestrion struct OrchestrionCategory { std::string name; - uint8_t hideCategory; + uint8_t hideOrder; + uint32_t icon; uint8_t order; OrchestrionCategory( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -5878,6 +6047,9 @@ struct PartyContent bool name; uint32_t textDataStart; uint32_t textDataEnd; + std::vector< uint32_t > lGBEventObject0; + std::vector< uint32_t > lGBEventRange; + std::vector< uint32_t > lGBEventObject1; uint16_t contentFinderCondition; uint32_t image; @@ -5920,11 +6092,19 @@ struct Perform uint16_t animationPlay02; int32_t stopAnimation; std::string instrument; + int32_t order; uint8_t transient; Perform( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct PerformGroup +{ + std::vector< uint8_t > perform; + + PerformGroup( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct PerformTransient { std::string text; @@ -5952,6 +6132,13 @@ struct PetAction PetAction( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct PetMirage +{ + std::string name; + + PetMirage( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct PhysicsGroup { std::vector< float > simulationTime; @@ -6062,8 +6249,12 @@ struct PublicContent std::string name; uint32_t textDataStart; uint32_t textDataEnd; + uint32_t startCutscene; + uint32_t lGBEventRange; + uint32_t lGBPopRange; uint16_t contentFinderCondition; uint16_t additionalData; + uint32_t endCutscene; PublicContent( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6083,14 +6274,6 @@ struct PublicContentTextData PublicContentTextData( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; -struct Purify -{ - uint8_t _class; - uint8_t level; - - Purify( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); -}; - struct PvPAction { uint16_t action; @@ -6101,7 +6284,7 @@ struct PvPAction struct PvPActionSort { - uint8_t name; + uint8_t actionType; uint16_t action; PvPActionSort( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); @@ -6143,12 +6326,13 @@ struct Quest uint8_t classJobCategory1; uint16_t classJobLevel1; uint8_t previousQuestJoin; - uint32_t previousQuest0; - uint32_t previousQuest1; - uint32_t previousQuest2; + std::vector< uint32_t > previousQuest; + uint8_t previousQuest0Sequence; uint8_t questLockJoin; std::vector< uint32_t > questLock; uint16_t header; + uint8_t startTown; + uint8_t classJobUnlockFlag; uint8_t classJobUnlock; uint8_t grandCompany; uint8_t grandCompanyRank; @@ -6162,6 +6346,8 @@ struct Quest uint8_t beastTribe; uint8_t beastReputationRank; uint16_t beastReputationValue; + uint8_t satisfactionNpc; + uint8_t satisfactionLevel; int32_t mountRequired; bool isHouseRequired; uint8_t deliveryQuest; @@ -6202,7 +6388,7 @@ struct Quest uint8_t classJobRequired; uint16_t expFactor; uint32_t gilReward; - uint16_t gCSeals; + uint32_t gCSeals; std::vector< uint8_t > itemCatalyst; std::vector< uint8_t > itemCountCatalyst; uint8_t itemRewardType; @@ -6236,6 +6422,14 @@ struct Quest Quest( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct QuestAcceptAdditionCondition +{ + uint32_t requirement0; + uint32_t requirement1; + + QuestAcceptAdditionCondition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct QuestBattle { int32_t quest; @@ -6272,17 +6466,32 @@ struct QuestClassJobSupply uint8_t classJobCategory; uint32_t eNpcResident; uint32_t item; + uint8_t amountRequired; + bool itemHQ; QuestClassJobSupply( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); }; struct QuestDerivedClass { - uint32_t quest; + uint8_t classJob; QuestDerivedClass( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct QuestEffect +{ + + QuestEffect( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct QuestEffectDefine +{ + uint16_t effect; + + QuestEffectDefine( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct QuestRedo { uint32_t finalQuest; @@ -6295,6 +6504,7 @@ struct QuestRedo struct QuestRedoChapterUI { uint32_t quest; + uint8_t uITab; uint8_t category; uint32_t questRedoUISmall; uint32_t questRedoUILarge; @@ -6405,6 +6615,7 @@ struct RacingChocoboNameCategory struct RacingChocoboNameInfo { uint8_t racingChocoboNameCategory; + std::vector< uint16_t > name; RacingChocoboNameInfo( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6474,6 +6685,7 @@ struct RecipeLevelTable uint16_t difficulty; uint32_t quality; uint16_t durability; + uint16_t conditionsFlag; RecipeLevelTable( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6494,6 +6706,7 @@ struct RecipeLookup struct RecipeNotebookList { + uint8_t count; std::vector< int32_t > recipe; RecipeNotebookList( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -6579,12 +6792,28 @@ struct Resident { uint64_t model; int32_t npcYell; - uint16_t addedIn53; uint8_t residentMotionType; Resident( uint32_t row_id, uint32_t subRow, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct ResistanceWeaponAdjust +{ + uint16_t maxTotalStats; + uint16_t maxEachStat; + std::vector< uint8_t > baseParam; + uint32_t image; + + ResistanceWeaponAdjust( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct RetainerFortuneRewardRange +{ + uint16_t percentOfLevel; + + RetainerFortuneRewardRange( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct RetainerTask { bool isRandom; @@ -6651,6 +6880,14 @@ struct RideShooting RideShooting( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct RideShootingTargetType +{ + uint32_t eObj; + int16_t score; + + RideShootingTargetType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct RideShootingTextData { std::string string; @@ -6682,8 +6919,6 @@ struct SatisfactionNpc std::vector< int32_t > supplyIndex; std::vector< uint16_t > satisfactionRequired; int32_t icon; - uint8_t addedIn530; - uint8_t addedIn531; SatisfactionNpc( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -6836,6 +7071,7 @@ struct SpearfishingItem struct SpearfishingNotebook { uint8_t gatheringLevel; + bool isShadowNode; int32_t territoryType; int16_t x; int16_t y; @@ -6858,10 +7094,9 @@ struct SpecialShop { std::string name; std::vector< int32_t > questItem; - std::vector< int32_t > unknown; std::vector< int32_t > achievementUnlock; std::vector< uint16_t > patchNumber; - bool useCurrencyType; + uint8_t useCurrencyType; uint32_t questUnlock; int32_t completeText; int32_t notCompleteText; @@ -6880,6 +7115,7 @@ struct Stain { uint32_t color; uint8_t shade; + uint8_t subOrder; std::string name; Stain( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -6893,6 +7129,13 @@ struct StainTransient StainTransient( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct StanceChange +{ + std::vector< uint16_t > action; + + StanceChange( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct Status { std::string name; @@ -6901,7 +7144,7 @@ struct Status uint8_t maxStacks; uint8_t category; uint8_t hitEffect; - uint8_t vFX; + uint16_t vFX; bool lockMovement; bool lockActions; bool lockControl; @@ -6994,6 +7237,7 @@ struct SubmarinePart int16_t speed; int16_t range; int16_t favor; + uint16_t _class; uint8_t repairMaterials; SubmarinePart( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -7039,6 +7283,7 @@ struct TerritoryType uint8_t loadingImage; uint8_t exclusiveType; uint8_t territoryIntendedUse; + uint16_t contentFinderCondition; uint8_t weatherRate; bool pCSearch; bool stealth; @@ -7054,7 +7299,6 @@ struct TerritoryType int8_t achievementIndex; bool isPvpZone; uint8_t exVersion; - uint8_t addedIn53; uint8_t mountSpeed; TerritoryType( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); @@ -7074,10 +7318,18 @@ struct TextCommand std::string description; std::string alias; std::string shortAlias; + uint16_t param; TextCommand( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct TextCommandParam +{ + std::string param; + + TextCommandParam( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct Title { std::string masculine; @@ -7273,6 +7525,12 @@ struct TripleTriadCardResident uint8_t tripleTriadCardType; uint16_t saleValue; uint8_t sortKey; + uint16_t order; + uint8_t uIPriority; + uint8_t acquisitionType; + uint32_t acquisition; + uint32_t location; + uint32_t quest; TripleTriadCardResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -7291,9 +7549,17 @@ struct TripleTriadCompetition TripleTriadCompetition( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct TripleTriadResident +{ + uint16_t order; + + TripleTriadResident( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct TripleTriadRule { std::string name; + std::string description; TripleTriadRule( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; @@ -7331,6 +7597,23 @@ struct TutorialTank TutorialTank( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct UDS_Event +{ + std::string text; + std::string type; + std::vector< int32_t > property; + + UDS_Event( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct UDS_Property +{ + std::string text; + std::string type; + + UDS_Property( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct UIColor { uint32_t uIForeground; @@ -7435,6 +7718,23 @@ struct WeatherReportReplace WeatherReportReplace( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); }; +struct WebGuidance +{ + int32_t image; + uint8_t url; + std::string name; + std::string description; + + WebGuidance( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + +struct WebURL +{ + std::string uRL; + + WebURL( uint32_t row_id, Sapphire::Data::ExdDataGenerated* exdData ); +}; + struct WeddingBGM { uint16_t song; @@ -7592,6 +7892,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_AchievementCategoryDat; xiv::exd::Exd m_AchievementHideConditionDat; xiv::exd::Exd m_AchievementKindDat; + xiv::exd::Exd m_AchievementTargetDat; xiv::exd::Exd m_ActionDat; xiv::exd::Exd m_ActionCastTimelineDat; xiv::exd::Exd m_ActionCastVFXDat; @@ -7638,6 +7939,8 @@ struct ZoneSharedGroup xiv::exd::Exd m_AOZBossDat; xiv::exd::Exd m_AOZContentDat; xiv::exd::Exd m_AOZContentBriefingBNpcDat; + xiv::exd::Exd m_AOZReportDat; + xiv::exd::Exd m_AOZScoreDat; xiv::exd::Exd m_AquariumFishDat; xiv::exd::Exd m_AquariumWaterDat; xiv::exd::Exd m_ArrayEventHandlerDat; @@ -7718,6 +8021,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_CompanyLeveRuleDat; xiv::exd::Exd m_CompleteJournalDat; xiv::exd::Exd m_CompleteJournalCategoryDat; + xiv::exd::Exd m_CompletionDat; xiv::exd::Exd m_ConditionDat; xiv::exd::Exd m_ConfigKeyDat; xiv::exd::Exd m_ContentCloseCycleDat; @@ -7733,23 +8037,25 @@ struct ZoneSharedGroup xiv::exd::Exd m_ContentRouletteOpenRuleDat; xiv::exd::Exd m_ContentRouletteRoleBonusDat; xiv::exd::Exd m_ContentsNoteDat; + xiv::exd::Exd m_ContentsTutorialDat; + xiv::exd::Exd m_ContentsTutorialPageDat; xiv::exd::Exd m_ContentTalkDat; xiv::exd::Exd m_ContentTalkParamDat; xiv::exd::Exd m_ContentTypeDat; xiv::exd::Exd m_CraftActionDat; xiv::exd::Exd m_CraftLeveDat; xiv::exd::Exd m_CraftLevelDifferenceDat; + xiv::exd::Exd m_CraftLeveTalkDat; xiv::exd::Exd m_CraftTypeDat; xiv::exd::Exd m_CreditDat; xiv::exd::Exd m_CreditBackImageDat; xiv::exd::Exd m_CreditCastDat; xiv::exd::Exd m_CreditListDat; xiv::exd::Exd m_CreditListTextDat; - xiv::exd::Exd m_CurrencyDat; xiv::exd::Exd m_CustomTalkDat; - xiv::exd::Exd m_CustomTalkDynamicIconDat; xiv::exd::Exd m_CustomTalkNestHandlersDat; xiv::exd::Exd m_CutsceneDat; + xiv::exd::Exd m_CutSceneIncompQuestDat; xiv::exd::Exd m_CutsceneMotionDat; xiv::exd::Exd m_CutsceneWorkIndexDat; xiv::exd::Exd m_CutScreenImageDat; @@ -7810,6 +8116,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_EurekaMagiciteItemTypeDat; xiv::exd::Exd m_EurekaSphereElementAdjustDat; xiv::exd::Exd m_EventActionDat; + xiv::exd::Exd m_EventCustomIconTypeDat; xiv::exd::Exd m_EventIconPriorityDat; xiv::exd::Exd m_EventIconTypeDat; xiv::exd::Exd m_EventItemDat; @@ -7817,6 +8124,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_EventItemHelpDat; xiv::exd::Exd m_EventItemTimelineDat; xiv::exd::Exd m_EventSystemDefineDat; + xiv::exd::Exd m_ExportedGatheringPointDat; xiv::exd::Exd m_ExportedSGDat; xiv::exd::Exd m_ExVersionDat; xiv::exd::Exd m_FateDat; @@ -7866,6 +8174,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_GatheringSubCategoryDat; xiv::exd::Exd m_GatheringTypeDat; xiv::exd::Exd m_GcArmyCaptureTacticsDat; + xiv::exd::Exd m_GcArmyEquipPresetDat; xiv::exd::Exd m_GcArmyExpeditionDat; xiv::exd::Exd m_GcArmyExpeditionMemberBonusDat; xiv::exd::Exd m_GcArmyExpeditionTypeDat; @@ -7908,6 +8217,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_GuideTitleDat; xiv::exd::Exd m_GuildleveAssignmentDat; xiv::exd::Exd m_GuildleveAssignmentCategoryDat; + xiv::exd::Exd m_GuildleveAssignmentTalkDat; xiv::exd::Exd m_GuildOrderDat; xiv::exd::Exd m_GuildOrderGuideDat; xiv::exd::Exd m_GuildOrderOfficerDat; @@ -7934,6 +8244,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_HWDAnnounceDat; xiv::exd::Exd m_HWDCrafterSupplyDat; xiv::exd::Exd m_HWDCrafterSupplyRewardDat; + xiv::exd::Exd m_HWDCrafterSupplyTermDat; xiv::exd::Exd m_HWDDevLayerControlDat; xiv::exd::Exd m_HWDDevLevelUIDat; xiv::exd::Exd m_HWDDevLivelyDat; @@ -7972,6 +8283,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_ItemSortCategoryDat; xiv::exd::Exd m_ItemSpecialBonusDat; xiv::exd::Exd m_ItemUICategoryDat; + xiv::exd::Exd m_JingleDat; xiv::exd::Exd m_JobHudManualDat; xiv::exd::Exd m_JobHudManualPriorityDat; xiv::exd::Exd m_JournalCategoryDat; @@ -7998,12 +8310,11 @@ struct ZoneSharedGroup xiv::exd::Exd m_MainCommandCategoryDat; xiv::exd::Exd m_ManeuversArmorDat; xiv::exd::Exd m_MapDat; + xiv::exd::Exd m_MapConditionDat; xiv::exd::Exd m_MapMarkerDat; xiv::exd::Exd m_MapMarkerRegionDat; xiv::exd::Exd m_MapSymbolDat; xiv::exd::Exd m_MarkerDat; - xiv::exd::Exd m_MasterpieceSupplyDutyDat; - xiv::exd::Exd m_MasterpieceSupplyMultiplierDat; xiv::exd::Exd m_MateriaDat; xiv::exd::Exd m_MateriaJoinRateDat; xiv::exd::Exd m_MateriaJoinRateGatherCraftDat; @@ -8032,6 +8343,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_MountTransientDat; xiv::exd::Exd m_MoveTimelineDat; xiv::exd::Exd m_MoveVfxDat; + xiv::exd::Exd m_MovieStaffListDat; xiv::exd::Exd m_MovieSubtitleDat; xiv::exd::Exd m_MovieSubtitle500Dat; xiv::exd::Exd m_MovieSubtitleVoyageDat; @@ -8059,9 +8371,11 @@ struct ZoneSharedGroup xiv::exd::Exd m_PartyContentTextDataDat; xiv::exd::Exd m_PatchMarkDat; xiv::exd::Exd m_PerformDat; + xiv::exd::Exd m_PerformGroupDat; xiv::exd::Exd m_PerformTransientDat; xiv::exd::Exd m_PetDat; xiv::exd::Exd m_PetActionDat; + xiv::exd::Exd m_PetMirageDat; xiv::exd::Exd m_PhysicsGroupDat; xiv::exd::Exd m_PhysicsWindDat; xiv::exd::Exd m_PictureDat; @@ -8073,18 +8387,20 @@ struct ZoneSharedGroup xiv::exd::Exd m_PublicContentDat; xiv::exd::Exd m_PublicContentCutsceneDat; xiv::exd::Exd m_PublicContentTextDataDat; - xiv::exd::Exd m_PurifyDat; xiv::exd::Exd m_PvPActionDat; xiv::exd::Exd m_PvPActionSortDat; xiv::exd::Exd m_PvPRankDat; xiv::exd::Exd m_PvPSelectTraitDat; xiv::exd::Exd m_PvPTraitDat; xiv::exd::Exd m_QuestDat; + xiv::exd::Exd m_QuestAcceptAdditionConditionDat; xiv::exd::Exd m_QuestBattleDat; xiv::exd::Exd m_QuestChapterDat; xiv::exd::Exd m_QuestClassJobRewardDat; xiv::exd::Exd m_QuestClassJobSupplyDat; xiv::exd::Exd m_QuestDerivedClassDat; + xiv::exd::Exd m_QuestEffectDat; + xiv::exd::Exd m_QuestEffectDefineDat; xiv::exd::Exd m_QuestRedoDat; xiv::exd::Exd m_QuestRedoChapterUIDat; xiv::exd::Exd m_QuestRedoChapterUICategoryDat; @@ -8112,12 +8428,15 @@ struct ZoneSharedGroup xiv::exd::Exd m_RelicNoteDat; xiv::exd::Exd m_RelicNoteCategoryDat; xiv::exd::Exd m_ResidentDat; + xiv::exd::Exd m_ResistanceWeaponAdjustDat; + xiv::exd::Exd m_RetainerFortuneRewardRangeDat; xiv::exd::Exd m_RetainerTaskDat; xiv::exd::Exd m_RetainerTaskLvRangeDat; xiv::exd::Exd m_RetainerTaskNormalDat; xiv::exd::Exd m_RetainerTaskParameterDat; xiv::exd::Exd m_RetainerTaskRandomDat; xiv::exd::Exd m_RideShootingDat; + xiv::exd::Exd m_RideShootingTargetTypeDat; xiv::exd::Exd m_RideShootingTextDataDat; xiv::exd::Exd m_RPParameterDat; xiv::exd::Exd m_SatisfactionArbitrationDat; @@ -8143,6 +8462,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_SpecialShopItemCategoryDat; xiv::exd::Exd m_StainDat; xiv::exd::Exd m_StainTransientDat; + xiv::exd::Exd m_StanceChangeDat; xiv::exd::Exd m_StatusDat; xiv::exd::Exd m_StatusHitEffectDat; xiv::exd::Exd m_StatusLoopVFXDat; @@ -8156,6 +8476,7 @@ struct ZoneSharedGroup xiv::exd::Exd m_TerritoryTypeDat; xiv::exd::Exd m_TerritoryTypeTransientDat; xiv::exd::Exd m_TextCommandDat; + xiv::exd::Exd m_TextCommandParamDat; xiv::exd::Exd m_TitleDat; xiv::exd::Exd m_TomestonesDat; xiv::exd::Exd m_TomestonesItemDat; @@ -8176,11 +8497,14 @@ struct ZoneSharedGroup xiv::exd::Exd m_TripleTriadCardResidentDat; xiv::exd::Exd m_TripleTriadCardTypeDat; xiv::exd::Exd m_TripleTriadCompetitionDat; + xiv::exd::Exd m_TripleTriadResidentDat; xiv::exd::Exd m_TripleTriadRuleDat; xiv::exd::Exd m_TutorialDat; xiv::exd::Exd m_TutorialDPSDat; xiv::exd::Exd m_TutorialHealerDat; xiv::exd::Exd m_TutorialTankDat; + xiv::exd::Exd m_UDS_EventDat; + xiv::exd::Exd m_UDS_PropertyDat; xiv::exd::Exd m_UIColorDat; xiv::exd::Exd m_VaseFlowerDat; xiv::exd::Exd m_VFXDat; @@ -8192,6 +8516,8 @@ struct ZoneSharedGroup xiv::exd::Exd m_WeatherGroupDat; xiv::exd::Exd m_WeatherRateDat; xiv::exd::Exd m_WeatherReportReplaceDat; + xiv::exd::Exd m_WebGuidanceDat; + xiv::exd::Exd m_WebURLDat; xiv::exd::Exd m_WeddingBGMDat; xiv::exd::Exd m_WeeklyBingoOrderDataDat; xiv::exd::Exd m_WeeklyBingoRewardDataDat; @@ -8209,6 +8535,7 @@ struct ZoneSharedGroup using AchievementCategoryPtr = std::shared_ptr< AchievementCategory >; using AchievementHideConditionPtr = std::shared_ptr< AchievementHideCondition >; using AchievementKindPtr = std::shared_ptr< AchievementKind >; + using AchievementTargetPtr = std::shared_ptr< AchievementTarget >; using ActionPtr = std::shared_ptr< Action >; using ActionCastTimelinePtr = std::shared_ptr< ActionCastTimeline >; using ActionCastVFXPtr = std::shared_ptr< ActionCastVFX >; @@ -8255,6 +8582,8 @@ struct ZoneSharedGroup using AOZBossPtr = std::shared_ptr< AOZBoss >; using AOZContentPtr = std::shared_ptr< AOZContent >; using AOZContentBriefingBNpcPtr = std::shared_ptr< AOZContentBriefingBNpc >; + using AOZReportPtr = std::shared_ptr< AOZReport >; + using AOZScorePtr = std::shared_ptr< AOZScore >; using AquariumFishPtr = std::shared_ptr< AquariumFish >; using AquariumWaterPtr = std::shared_ptr< AquariumWater >; using ArrayEventHandlerPtr = std::shared_ptr< ArrayEventHandler >; @@ -8335,6 +8664,7 @@ struct ZoneSharedGroup using CompanyLeveRulePtr = std::shared_ptr< CompanyLeveRule >; using CompleteJournalPtr = std::shared_ptr< CompleteJournal >; using CompleteJournalCategoryPtr = std::shared_ptr< CompleteJournalCategory >; + using CompletionPtr = std::shared_ptr< Completion >; using ConditionPtr = std::shared_ptr< Condition >; using ConfigKeyPtr = std::shared_ptr< ConfigKey >; using ContentCloseCyclePtr = std::shared_ptr< ContentCloseCycle >; @@ -8350,23 +8680,25 @@ struct ZoneSharedGroup using ContentRouletteOpenRulePtr = std::shared_ptr< ContentRouletteOpenRule >; using ContentRouletteRoleBonusPtr = std::shared_ptr< ContentRouletteRoleBonus >; using ContentsNotePtr = std::shared_ptr< ContentsNote >; + using ContentsTutorialPtr = std::shared_ptr< ContentsTutorial >; + using ContentsTutorialPagePtr = std::shared_ptr< ContentsTutorialPage >; using ContentTalkPtr = std::shared_ptr< ContentTalk >; using ContentTalkParamPtr = std::shared_ptr< ContentTalkParam >; using ContentTypePtr = std::shared_ptr< ContentType >; using CraftActionPtr = std::shared_ptr< CraftAction >; using CraftLevePtr = std::shared_ptr< CraftLeve >; using CraftLevelDifferencePtr = std::shared_ptr< CraftLevelDifference >; + using CraftLeveTalkPtr = std::shared_ptr< CraftLeveTalk >; using CraftTypePtr = std::shared_ptr< CraftType >; using CreditPtr = std::shared_ptr< Credit >; using CreditBackImagePtr = std::shared_ptr< CreditBackImage >; using CreditCastPtr = std::shared_ptr< CreditCast >; using CreditListPtr = std::shared_ptr< CreditList >; using CreditListTextPtr = std::shared_ptr< CreditListText >; - using CurrencyPtr = std::shared_ptr< Currency >; using CustomTalkPtr = std::shared_ptr< CustomTalk >; - using CustomTalkDynamicIconPtr = std::shared_ptr< CustomTalkDynamicIcon >; using CustomTalkNestHandlersPtr = std::shared_ptr< CustomTalkNestHandlers >; using CutscenePtr = std::shared_ptr< Cutscene >; + using CutSceneIncompQuestPtr = std::shared_ptr< CutSceneIncompQuest >; using CutsceneMotionPtr = std::shared_ptr< CutsceneMotion >; using CutsceneWorkIndexPtr = std::shared_ptr< CutsceneWorkIndex >; using CutScreenImagePtr = std::shared_ptr< CutScreenImage >; @@ -8427,6 +8759,7 @@ struct ZoneSharedGroup using EurekaMagiciteItemTypePtr = std::shared_ptr< EurekaMagiciteItemType >; using EurekaSphereElementAdjustPtr = std::shared_ptr< EurekaSphereElementAdjust >; using EventActionPtr = std::shared_ptr< EventAction >; + using EventCustomIconTypePtr = std::shared_ptr< EventCustomIconType >; using EventIconPriorityPtr = std::shared_ptr< EventIconPriority >; using EventIconTypePtr = std::shared_ptr< EventIconType >; using EventItemPtr = std::shared_ptr< EventItem >; @@ -8434,6 +8767,7 @@ struct ZoneSharedGroup using EventItemHelpPtr = std::shared_ptr< EventItemHelp >; using EventItemTimelinePtr = std::shared_ptr< EventItemTimeline >; using EventSystemDefinePtr = std::shared_ptr< EventSystemDefine >; + using ExportedGatheringPointPtr = std::shared_ptr< ExportedGatheringPoint >; using ExportedSGPtr = std::shared_ptr< ExportedSG >; using ExVersionPtr = std::shared_ptr< ExVersion >; using FatePtr = std::shared_ptr< Fate >; @@ -8483,6 +8817,7 @@ struct ZoneSharedGroup using GatheringSubCategoryPtr = std::shared_ptr< GatheringSubCategory >; using GatheringTypePtr = std::shared_ptr< GatheringType >; using GcArmyCaptureTacticsPtr = std::shared_ptr< GcArmyCaptureTactics >; + using GcArmyEquipPresetPtr = std::shared_ptr< GcArmyEquipPreset >; using GcArmyExpeditionPtr = std::shared_ptr< GcArmyExpedition >; using GcArmyExpeditionMemberBonusPtr = std::shared_ptr< GcArmyExpeditionMemberBonus >; using GcArmyExpeditionTypePtr = std::shared_ptr< GcArmyExpeditionType >; @@ -8525,6 +8860,7 @@ struct ZoneSharedGroup using GuideTitlePtr = std::shared_ptr< GuideTitle >; using GuildleveAssignmentPtr = std::shared_ptr< GuildleveAssignment >; using GuildleveAssignmentCategoryPtr = std::shared_ptr< GuildleveAssignmentCategory >; + using GuildleveAssignmentTalkPtr = std::shared_ptr< GuildleveAssignmentTalk >; using GuildOrderPtr = std::shared_ptr< GuildOrder >; using GuildOrderGuidePtr = std::shared_ptr< GuildOrderGuide >; using GuildOrderOfficerPtr = std::shared_ptr< GuildOrderOfficer >; @@ -8551,6 +8887,7 @@ struct ZoneSharedGroup using HWDAnnouncePtr = std::shared_ptr< HWDAnnounce >; using HWDCrafterSupplyPtr = std::shared_ptr< HWDCrafterSupply >; using HWDCrafterSupplyRewardPtr = std::shared_ptr< HWDCrafterSupplyReward >; + using HWDCrafterSupplyTermPtr = std::shared_ptr< HWDCrafterSupplyTerm >; using HWDDevLayerControlPtr = std::shared_ptr< HWDDevLayerControl >; using HWDDevLevelUIPtr = std::shared_ptr< HWDDevLevelUI >; using HWDDevLivelyPtr = std::shared_ptr< HWDDevLively >; @@ -8589,6 +8926,7 @@ struct ZoneSharedGroup using ItemSortCategoryPtr = std::shared_ptr< ItemSortCategory >; using ItemSpecialBonusPtr = std::shared_ptr< ItemSpecialBonus >; using ItemUICategoryPtr = std::shared_ptr< ItemUICategory >; + using JinglePtr = std::shared_ptr< Jingle >; using JobHudManualPtr = std::shared_ptr< JobHudManual >; using JobHudManualPriorityPtr = std::shared_ptr< JobHudManualPriority >; using JournalCategoryPtr = std::shared_ptr< JournalCategory >; @@ -8615,12 +8953,11 @@ struct ZoneSharedGroup using MainCommandCategoryPtr = std::shared_ptr< MainCommandCategory >; using ManeuversArmorPtr = std::shared_ptr< ManeuversArmor >; using MapPtr = std::shared_ptr< Map >; + using MapConditionPtr = std::shared_ptr< MapCondition >; using MapMarkerPtr = std::shared_ptr< MapMarker >; using MapMarkerRegionPtr = std::shared_ptr< MapMarkerRegion >; using MapSymbolPtr = std::shared_ptr< MapSymbol >; using MarkerPtr = std::shared_ptr< Marker >; - using MasterpieceSupplyDutyPtr = std::shared_ptr< MasterpieceSupplyDuty >; - using MasterpieceSupplyMultiplierPtr = std::shared_ptr< MasterpieceSupplyMultiplier >; using MateriaPtr = std::shared_ptr< Materia >; using MateriaJoinRatePtr = std::shared_ptr< MateriaJoinRate >; using MateriaJoinRateGatherCraftPtr = std::shared_ptr< MateriaJoinRateGatherCraft >; @@ -8649,6 +8986,7 @@ struct ZoneSharedGroup using MountTransientPtr = std::shared_ptr< MountTransient >; using MoveTimelinePtr = std::shared_ptr< MoveTimeline >; using MoveVfxPtr = std::shared_ptr< MoveVfx >; + using MovieStaffListPtr = std::shared_ptr< MovieStaffList >; using MovieSubtitlePtr = std::shared_ptr< MovieSubtitle >; using MovieSubtitle500Ptr = std::shared_ptr< MovieSubtitle500 >; using MovieSubtitleVoyagePtr = std::shared_ptr< MovieSubtitleVoyage >; @@ -8676,9 +9014,11 @@ struct ZoneSharedGroup using PartyContentTextDataPtr = std::shared_ptr< PartyContentTextData >; using PatchMarkPtr = std::shared_ptr< PatchMark >; using PerformPtr = std::shared_ptr< Perform >; + using PerformGroupPtr = std::shared_ptr< PerformGroup >; using PerformTransientPtr = std::shared_ptr< PerformTransient >; using PetPtr = std::shared_ptr< Pet >; using PetActionPtr = std::shared_ptr< PetAction >; + using PetMiragePtr = std::shared_ptr< PetMirage >; using PhysicsGroupPtr = std::shared_ptr< PhysicsGroup >; using PhysicsWindPtr = std::shared_ptr< PhysicsWind >; using PicturePtr = std::shared_ptr< Picture >; @@ -8690,18 +9030,20 @@ struct ZoneSharedGroup using PublicContentPtr = std::shared_ptr< PublicContent >; using PublicContentCutscenePtr = std::shared_ptr< PublicContentCutscene >; using PublicContentTextDataPtr = std::shared_ptr< PublicContentTextData >; - using PurifyPtr = std::shared_ptr< Purify >; using PvPActionPtr = std::shared_ptr< PvPAction >; using PvPActionSortPtr = std::shared_ptr< PvPActionSort >; using PvPRankPtr = std::shared_ptr< PvPRank >; using PvPSelectTraitPtr = std::shared_ptr< PvPSelectTrait >; using PvPTraitPtr = std::shared_ptr< PvPTrait >; using QuestPtr = std::shared_ptr< Quest >; + using QuestAcceptAdditionConditionPtr = std::shared_ptr< QuestAcceptAdditionCondition >; using QuestBattlePtr = std::shared_ptr< QuestBattle >; using QuestChapterPtr = std::shared_ptr< QuestChapter >; using QuestClassJobRewardPtr = std::shared_ptr< QuestClassJobReward >; using QuestClassJobSupplyPtr = std::shared_ptr< QuestClassJobSupply >; using QuestDerivedClassPtr = std::shared_ptr< QuestDerivedClass >; + using QuestEffectPtr = std::shared_ptr< QuestEffect >; + using QuestEffectDefinePtr = std::shared_ptr< QuestEffectDefine >; using QuestRedoPtr = std::shared_ptr< QuestRedo >; using QuestRedoChapterUIPtr = std::shared_ptr< QuestRedoChapterUI >; using QuestRedoChapterUICategoryPtr = std::shared_ptr< QuestRedoChapterUICategory >; @@ -8729,12 +9071,15 @@ struct ZoneSharedGroup using RelicNotePtr = std::shared_ptr< RelicNote >; using RelicNoteCategoryPtr = std::shared_ptr< RelicNoteCategory >; using ResidentPtr = std::shared_ptr< Resident >; + using ResistanceWeaponAdjustPtr = std::shared_ptr< ResistanceWeaponAdjust >; + using RetainerFortuneRewardRangePtr = std::shared_ptr< RetainerFortuneRewardRange >; using RetainerTaskPtr = std::shared_ptr< RetainerTask >; using RetainerTaskLvRangePtr = std::shared_ptr< RetainerTaskLvRange >; using RetainerTaskNormalPtr = std::shared_ptr< RetainerTaskNormal >; using RetainerTaskParameterPtr = std::shared_ptr< RetainerTaskParameter >; using RetainerTaskRandomPtr = std::shared_ptr< RetainerTaskRandom >; using RideShootingPtr = std::shared_ptr< RideShooting >; + using RideShootingTargetTypePtr = std::shared_ptr< RideShootingTargetType >; using RideShootingTextDataPtr = std::shared_ptr< RideShootingTextData >; using RPParameterPtr = std::shared_ptr< RPParameter >; using SatisfactionArbitrationPtr = std::shared_ptr< SatisfactionArbitration >; @@ -8760,6 +9105,7 @@ struct ZoneSharedGroup using SpecialShopItemCategoryPtr = std::shared_ptr< SpecialShopItemCategory >; using StainPtr = std::shared_ptr< Stain >; using StainTransientPtr = std::shared_ptr< StainTransient >; + using StanceChangePtr = std::shared_ptr< StanceChange >; using StatusPtr = std::shared_ptr< Status >; using StatusHitEffectPtr = std::shared_ptr< StatusHitEffect >; using StatusLoopVFXPtr = std::shared_ptr< StatusLoopVFX >; @@ -8773,6 +9119,7 @@ struct ZoneSharedGroup using TerritoryTypePtr = std::shared_ptr< TerritoryType >; using TerritoryTypeTransientPtr = std::shared_ptr< TerritoryTypeTransient >; using TextCommandPtr = std::shared_ptr< TextCommand >; + using TextCommandParamPtr = std::shared_ptr< TextCommandParam >; using TitlePtr = std::shared_ptr< Title >; using TomestonesPtr = std::shared_ptr< Tomestones >; using TomestonesItemPtr = std::shared_ptr< TomestonesItem >; @@ -8793,11 +9140,14 @@ struct ZoneSharedGroup using TripleTriadCardResidentPtr = std::shared_ptr< TripleTriadCardResident >; using TripleTriadCardTypePtr = std::shared_ptr< TripleTriadCardType >; using TripleTriadCompetitionPtr = std::shared_ptr< TripleTriadCompetition >; + using TripleTriadResidentPtr = std::shared_ptr< TripleTriadResident >; using TripleTriadRulePtr = std::shared_ptr< TripleTriadRule >; using TutorialPtr = std::shared_ptr< Tutorial >; using TutorialDPSPtr = std::shared_ptr< TutorialDPS >; using TutorialHealerPtr = std::shared_ptr< TutorialHealer >; using TutorialTankPtr = std::shared_ptr< TutorialTank >; + using UDS_EventPtr = std::shared_ptr< UDS_Event >; + using UDS_PropertyPtr = std::shared_ptr< UDS_Property >; using UIColorPtr = std::shared_ptr< UIColor >; using VaseFlowerPtr = std::shared_ptr< VaseFlower >; using VFXPtr = std::shared_ptr< VFX >; @@ -8809,6 +9159,8 @@ struct ZoneSharedGroup using WeatherGroupPtr = std::shared_ptr< WeatherGroup >; using WeatherRatePtr = std::shared_ptr< WeatherRate >; using WeatherReportReplacePtr = std::shared_ptr< WeatherReportReplace >; + using WebGuidancePtr = std::shared_ptr< WebGuidance >; + using WebURLPtr = std::shared_ptr< WebURL >; using WeddingBGMPtr = std::shared_ptr< WeddingBGM >; using WeeklyBingoOrderDataPtr = std::shared_ptr< WeeklyBingoOrderData >; using WeeklyBingoRewardDataPtr = std::shared_ptr< WeeklyBingoRewardData >; @@ -8826,6 +9178,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_AchievementCategoryIdList; std::set< uint32_t > m_AchievementHideConditionIdList; std::set< uint32_t > m_AchievementKindIdList; + std::set< uint32_t > m_AchievementTargetIdList; std::set< uint32_t > m_ActionIdList; std::set< uint32_t > m_ActionCastTimelineIdList; std::set< uint32_t > m_ActionCastVFXIdList; @@ -8872,6 +9225,8 @@ struct ZoneSharedGroup std::set< uint32_t > m_AOZBossIdList; std::set< uint32_t > m_AOZContentIdList; std::set< uint32_t > m_AOZContentBriefingBNpcIdList; + std::set< uint32_t > m_AOZReportIdList; + std::set< uint32_t > m_AOZScoreIdList; std::set< uint32_t > m_AquariumFishIdList; std::set< uint32_t > m_AquariumWaterIdList; std::set< uint32_t > m_ArrayEventHandlerIdList; @@ -8952,6 +9307,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_CompanyLeveRuleIdList; std::set< uint32_t > m_CompleteJournalIdList; std::set< uint32_t > m_CompleteJournalCategoryIdList; + std::set< uint32_t > m_CompletionIdList; std::set< uint32_t > m_ConditionIdList; std::set< uint32_t > m_ConfigKeyIdList; std::set< uint32_t > m_ContentCloseCycleIdList; @@ -8967,23 +9323,25 @@ struct ZoneSharedGroup std::set< uint32_t > m_ContentRouletteOpenRuleIdList; std::set< uint32_t > m_ContentRouletteRoleBonusIdList; std::set< uint32_t > m_ContentsNoteIdList; + std::set< uint32_t > m_ContentsTutorialIdList; + std::set< uint32_t > m_ContentsTutorialPageIdList; std::set< uint32_t > m_ContentTalkIdList; std::set< uint32_t > m_ContentTalkParamIdList; std::set< uint32_t > m_ContentTypeIdList; std::set< uint32_t > m_CraftActionIdList; std::set< uint32_t > m_CraftLeveIdList; std::set< uint32_t > m_CraftLevelDifferenceIdList; + std::set< uint32_t > m_CraftLeveTalkIdList; std::set< uint32_t > m_CraftTypeIdList; std::set< uint32_t > m_CreditIdList; std::set< uint32_t > m_CreditBackImageIdList; std::set< uint32_t > m_CreditCastIdList; std::set< uint32_t > m_CreditListIdList; std::set< uint32_t > m_CreditListTextIdList; - std::set< uint32_t > m_CurrencyIdList; std::set< uint32_t > m_CustomTalkIdList; - std::set< uint32_t > m_CustomTalkDynamicIconIdList; std::set< uint32_t > m_CustomTalkNestHandlersIdList; std::set< uint32_t > m_CutsceneIdList; + std::set< uint32_t > m_CutSceneIncompQuestIdList; std::set< uint32_t > m_CutsceneMotionIdList; std::set< uint32_t > m_CutsceneWorkIndexIdList; std::set< uint32_t > m_CutScreenImageIdList; @@ -9044,6 +9402,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_EurekaMagiciteItemTypeIdList; std::set< uint32_t > m_EurekaSphereElementAdjustIdList; std::set< uint32_t > m_EventActionIdList; + std::set< uint32_t > m_EventCustomIconTypeIdList; std::set< uint32_t > m_EventIconPriorityIdList; std::set< uint32_t > m_EventIconTypeIdList; std::set< uint32_t > m_EventItemIdList; @@ -9051,6 +9410,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_EventItemHelpIdList; std::set< uint32_t > m_EventItemTimelineIdList; std::set< uint32_t > m_EventSystemDefineIdList; + std::set< uint32_t > m_ExportedGatheringPointIdList; std::set< uint32_t > m_ExportedSGIdList; std::set< uint32_t > m_ExVersionIdList; std::set< uint32_t > m_FateIdList; @@ -9100,6 +9460,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_GatheringSubCategoryIdList; std::set< uint32_t > m_GatheringTypeIdList; std::set< uint32_t > m_GcArmyCaptureTacticsIdList; + std::set< uint32_t > m_GcArmyEquipPresetIdList; std::set< uint32_t > m_GcArmyExpeditionIdList; std::set< uint32_t > m_GcArmyExpeditionMemberBonusIdList; std::set< uint32_t > m_GcArmyExpeditionTypeIdList; @@ -9142,6 +9503,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_GuideTitleIdList; std::set< uint32_t > m_GuildleveAssignmentIdList; std::set< uint32_t > m_GuildleveAssignmentCategoryIdList; + std::set< uint32_t > m_GuildleveAssignmentTalkIdList; std::set< uint32_t > m_GuildOrderIdList; std::set< uint32_t > m_GuildOrderGuideIdList; std::set< uint32_t > m_GuildOrderOfficerIdList; @@ -9168,6 +9530,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_HWDAnnounceIdList; std::set< uint32_t > m_HWDCrafterSupplyIdList; std::set< uint32_t > m_HWDCrafterSupplyRewardIdList; + std::set< uint32_t > m_HWDCrafterSupplyTermIdList; std::set< uint32_t > m_HWDDevLayerControlIdList; std::set< uint32_t > m_HWDDevLevelUIIdList; std::set< uint32_t > m_HWDDevLivelyIdList; @@ -9206,6 +9569,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_ItemSortCategoryIdList; std::set< uint32_t > m_ItemSpecialBonusIdList; std::set< uint32_t > m_ItemUICategoryIdList; + std::set< uint32_t > m_JingleIdList; std::set< uint32_t > m_JobHudManualIdList; std::set< uint32_t > m_JobHudManualPriorityIdList; std::set< uint32_t > m_JournalCategoryIdList; @@ -9232,12 +9596,11 @@ struct ZoneSharedGroup std::set< uint32_t > m_MainCommandCategoryIdList; std::set< uint32_t > m_ManeuversArmorIdList; std::set< uint32_t > m_MapIdList; + std::set< uint32_t > m_MapConditionIdList; std::set< uint32_t > m_MapMarkerIdList; std::set< uint32_t > m_MapMarkerRegionIdList; std::set< uint32_t > m_MapSymbolIdList; std::set< uint32_t > m_MarkerIdList; - std::set< uint32_t > m_MasterpieceSupplyDutyIdList; - std::set< uint32_t > m_MasterpieceSupplyMultiplierIdList; std::set< uint32_t > m_MateriaIdList; std::set< uint32_t > m_MateriaJoinRateIdList; std::set< uint32_t > m_MateriaJoinRateGatherCraftIdList; @@ -9266,6 +9629,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_MountTransientIdList; std::set< uint32_t > m_MoveTimelineIdList; std::set< uint32_t > m_MoveVfxIdList; + std::set< uint32_t > m_MovieStaffListIdList; std::set< uint32_t > m_MovieSubtitleIdList; std::set< uint32_t > m_MovieSubtitle500IdList; std::set< uint32_t > m_MovieSubtitleVoyageIdList; @@ -9293,9 +9657,11 @@ struct ZoneSharedGroup std::set< uint32_t > m_PartyContentTextDataIdList; std::set< uint32_t > m_PatchMarkIdList; std::set< uint32_t > m_PerformIdList; + std::set< uint32_t > m_PerformGroupIdList; std::set< uint32_t > m_PerformTransientIdList; std::set< uint32_t > m_PetIdList; std::set< uint32_t > m_PetActionIdList; + std::set< uint32_t > m_PetMirageIdList; std::set< uint32_t > m_PhysicsGroupIdList; std::set< uint32_t > m_PhysicsWindIdList; std::set< uint32_t > m_PictureIdList; @@ -9307,18 +9673,20 @@ struct ZoneSharedGroup std::set< uint32_t > m_PublicContentIdList; std::set< uint32_t > m_PublicContentCutsceneIdList; std::set< uint32_t > m_PublicContentTextDataIdList; - std::set< uint32_t > m_PurifyIdList; std::set< uint32_t > m_PvPActionIdList; std::set< uint32_t > m_PvPActionSortIdList; std::set< uint32_t > m_PvPRankIdList; std::set< uint32_t > m_PvPSelectTraitIdList; std::set< uint32_t > m_PvPTraitIdList; std::set< uint32_t > m_QuestIdList; + std::set< uint32_t > m_QuestAcceptAdditionConditionIdList; std::set< uint32_t > m_QuestBattleIdList; std::set< uint32_t > m_QuestChapterIdList; std::set< uint32_t > m_QuestClassJobRewardIdList; std::set< uint32_t > m_QuestClassJobSupplyIdList; std::set< uint32_t > m_QuestDerivedClassIdList; + std::set< uint32_t > m_QuestEffectIdList; + std::set< uint32_t > m_QuestEffectDefineIdList; std::set< uint32_t > m_QuestRedoIdList; std::set< uint32_t > m_QuestRedoChapterUIIdList; std::set< uint32_t > m_QuestRedoChapterUICategoryIdList; @@ -9346,12 +9714,15 @@ struct ZoneSharedGroup std::set< uint32_t > m_RelicNoteIdList; std::set< uint32_t > m_RelicNoteCategoryIdList; std::set< uint32_t > m_ResidentIdList; + std::set< uint32_t > m_ResistanceWeaponAdjustIdList; + std::set< uint32_t > m_RetainerFortuneRewardRangeIdList; std::set< uint32_t > m_RetainerTaskIdList; std::set< uint32_t > m_RetainerTaskLvRangeIdList; std::set< uint32_t > m_RetainerTaskNormalIdList; std::set< uint32_t > m_RetainerTaskParameterIdList; std::set< uint32_t > m_RetainerTaskRandomIdList; std::set< uint32_t > m_RideShootingIdList; + std::set< uint32_t > m_RideShootingTargetTypeIdList; std::set< uint32_t > m_RideShootingTextDataIdList; std::set< uint32_t > m_RPParameterIdList; std::set< uint32_t > m_SatisfactionArbitrationIdList; @@ -9377,6 +9748,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_SpecialShopItemCategoryIdList; std::set< uint32_t > m_StainIdList; std::set< uint32_t > m_StainTransientIdList; + std::set< uint32_t > m_StanceChangeIdList; std::set< uint32_t > m_StatusIdList; std::set< uint32_t > m_StatusHitEffectIdList; std::set< uint32_t > m_StatusLoopVFXIdList; @@ -9390,6 +9762,7 @@ struct ZoneSharedGroup std::set< uint32_t > m_TerritoryTypeIdList; std::set< uint32_t > m_TerritoryTypeTransientIdList; std::set< uint32_t > m_TextCommandIdList; + std::set< uint32_t > m_TextCommandParamIdList; std::set< uint32_t > m_TitleIdList; std::set< uint32_t > m_TomestonesIdList; std::set< uint32_t > m_TomestonesItemIdList; @@ -9410,11 +9783,14 @@ struct ZoneSharedGroup std::set< uint32_t > m_TripleTriadCardResidentIdList; std::set< uint32_t > m_TripleTriadCardTypeIdList; std::set< uint32_t > m_TripleTriadCompetitionIdList; + std::set< uint32_t > m_TripleTriadResidentIdList; 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_UDS_EventIdList; + std::set< uint32_t > m_UDS_PropertyIdList; std::set< uint32_t > m_UIColorIdList; std::set< uint32_t > m_VaseFlowerIdList; std::set< uint32_t > m_VFXIdList; @@ -9426,6 +9802,8 @@ struct ZoneSharedGroup std::set< uint32_t > m_WeatherGroupIdList; std::set< uint32_t > m_WeatherRateIdList; std::set< uint32_t > m_WeatherReportReplaceIdList; + std::set< uint32_t > m_WebGuidanceIdList; + std::set< uint32_t > m_WebURLIdList; std::set< uint32_t > m_WeddingBGMIdList; std::set< uint32_t > m_WeeklyBingoOrderDataIdList; std::set< uint32_t > m_WeeklyBingoRewardDataIdList; @@ -9463,6 +9841,12 @@ const std::set< uint32_t >& getAchievementKindIdList() loadIdList( m_AchievementKindDat, m_AchievementKindIdList ); return m_AchievementKindIdList; } +const std::set< uint32_t >& getAchievementTargetIdList() +{ + if( m_AchievementTargetIdList.size() == 0 ) + loadIdList( m_AchievementTargetDat, m_AchievementTargetIdList ); + return m_AchievementTargetIdList; +} const std::set< uint32_t >& getActionIdList() { if( m_ActionIdList.size() == 0 ) @@ -9739,6 +10123,18 @@ const std::set< uint32_t >& getAOZContentBriefingBNpcIdList() loadIdList( m_AOZContentBriefingBNpcDat, m_AOZContentBriefingBNpcIdList ); return m_AOZContentBriefingBNpcIdList; } +const std::set< uint32_t >& getAOZReportIdList() +{ + if( m_AOZReportIdList.size() == 0 ) + loadIdList( m_AOZReportDat, m_AOZReportIdList ); + return m_AOZReportIdList; +} +const std::set< uint32_t >& getAOZScoreIdList() +{ + if( m_AOZScoreIdList.size() == 0 ) + loadIdList( m_AOZScoreDat, m_AOZScoreIdList ); + return m_AOZScoreIdList; +} const std::set< uint32_t >& getAquariumFishIdList() { if( m_AquariumFishIdList.size() == 0 ) @@ -10219,6 +10615,12 @@ const std::set< uint32_t >& getCompleteJournalCategoryIdList() loadIdList( m_CompleteJournalCategoryDat, m_CompleteJournalCategoryIdList ); return m_CompleteJournalCategoryIdList; } +const std::set< uint32_t >& getCompletionIdList() +{ + if( m_CompletionIdList.size() == 0 ) + loadIdList( m_CompletionDat, m_CompletionIdList ); + return m_CompletionIdList; +} const std::set< uint32_t >& getConditionIdList() { if( m_ConditionIdList.size() == 0 ) @@ -10309,6 +10711,18 @@ const std::set< uint32_t >& getContentsNoteIdList() loadIdList( m_ContentsNoteDat, m_ContentsNoteIdList ); return m_ContentsNoteIdList; } +const std::set< uint32_t >& getContentsTutorialIdList() +{ + if( m_ContentsTutorialIdList.size() == 0 ) + loadIdList( m_ContentsTutorialDat, m_ContentsTutorialIdList ); + return m_ContentsTutorialIdList; +} +const std::set< uint32_t >& getContentsTutorialPageIdList() +{ + if( m_ContentsTutorialPageIdList.size() == 0 ) + loadIdList( m_ContentsTutorialPageDat, m_ContentsTutorialPageIdList ); + return m_ContentsTutorialPageIdList; +} const std::set< uint32_t >& getContentTalkIdList() { if( m_ContentTalkIdList.size() == 0 ) @@ -10345,6 +10759,12 @@ const std::set< uint32_t >& getCraftLevelDifferenceIdList() loadIdList( m_CraftLevelDifferenceDat, m_CraftLevelDifferenceIdList ); return m_CraftLevelDifferenceIdList; } +const std::set< uint32_t >& getCraftLeveTalkIdList() +{ + if( m_CraftLeveTalkIdList.size() == 0 ) + loadIdList( m_CraftLeveTalkDat, m_CraftLeveTalkIdList ); + return m_CraftLeveTalkIdList; +} const std::set< uint32_t >& getCraftTypeIdList() { if( m_CraftTypeIdList.size() == 0 ) @@ -10381,24 +10801,12 @@ const std::set< uint32_t >& getCreditListTextIdList() loadIdList( m_CreditListTextDat, m_CreditListTextIdList ); return m_CreditListTextIdList; } -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 >& getCustomTalkDynamicIconIdList() -{ - if( m_CustomTalkDynamicIconIdList.size() == 0 ) - loadIdList( m_CustomTalkDynamicIconDat, m_CustomTalkDynamicIconIdList ); - return m_CustomTalkDynamicIconIdList; -} const std::set< uint32_t >& getCustomTalkNestHandlersIdList() { if( m_CustomTalkNestHandlersIdList.size() == 0 ) @@ -10411,6 +10819,12 @@ const std::set< uint32_t >& getCutsceneIdList() loadIdList( m_CutsceneDat, m_CutsceneIdList ); return m_CutsceneIdList; } +const std::set< uint32_t >& getCutSceneIncompQuestIdList() +{ + if( m_CutSceneIncompQuestIdList.size() == 0 ) + loadIdList( m_CutSceneIncompQuestDat, m_CutSceneIncompQuestIdList ); + return m_CutSceneIncompQuestIdList; +} const std::set< uint32_t >& getCutsceneMotionIdList() { if( m_CutsceneMotionIdList.size() == 0 ) @@ -10771,6 +11185,12 @@ const std::set< uint32_t >& getEventActionIdList() loadIdList( m_EventActionDat, m_EventActionIdList ); return m_EventActionIdList; } +const std::set< uint32_t >& getEventCustomIconTypeIdList() +{ + if( m_EventCustomIconTypeIdList.size() == 0 ) + loadIdList( m_EventCustomIconTypeDat, m_EventCustomIconTypeIdList ); + return m_EventCustomIconTypeIdList; +} const std::set< uint32_t >& getEventIconPriorityIdList() { if( m_EventIconPriorityIdList.size() == 0 ) @@ -10813,6 +11233,12 @@ const std::set< uint32_t >& getEventSystemDefineIdList() loadIdList( m_EventSystemDefineDat, m_EventSystemDefineIdList ); return m_EventSystemDefineIdList; } +const std::set< uint32_t >& getExportedGatheringPointIdList() +{ + if( m_ExportedGatheringPointIdList.size() == 0 ) + loadIdList( m_ExportedGatheringPointDat, m_ExportedGatheringPointIdList ); + return m_ExportedGatheringPointIdList; +} const std::set< uint32_t >& getExportedSGIdList() { if( m_ExportedSGIdList.size() == 0 ) @@ -11107,6 +11533,12 @@ const std::set< uint32_t >& getGcArmyCaptureTacticsIdList() loadIdList( m_GcArmyCaptureTacticsDat, m_GcArmyCaptureTacticsIdList ); return m_GcArmyCaptureTacticsIdList; } +const std::set< uint32_t >& getGcArmyEquipPresetIdList() +{ + if( m_GcArmyEquipPresetIdList.size() == 0 ) + loadIdList( m_GcArmyEquipPresetDat, m_GcArmyEquipPresetIdList ); + return m_GcArmyEquipPresetIdList; +} const std::set< uint32_t >& getGcArmyExpeditionIdList() { if( m_GcArmyExpeditionIdList.size() == 0 ) @@ -11359,6 +11791,12 @@ const std::set< uint32_t >& getGuildleveAssignmentCategoryIdList() loadIdList( m_GuildleveAssignmentCategoryDat, m_GuildleveAssignmentCategoryIdList ); return m_GuildleveAssignmentCategoryIdList; } +const std::set< uint32_t >& getGuildleveAssignmentTalkIdList() +{ + if( m_GuildleveAssignmentTalkIdList.size() == 0 ) + loadIdList( m_GuildleveAssignmentTalkDat, m_GuildleveAssignmentTalkIdList ); + return m_GuildleveAssignmentTalkIdList; +} const std::set< uint32_t >& getGuildOrderIdList() { if( m_GuildOrderIdList.size() == 0 ) @@ -11515,6 +11953,12 @@ const std::set< uint32_t >& getHWDCrafterSupplyRewardIdList() loadIdList( m_HWDCrafterSupplyRewardDat, m_HWDCrafterSupplyRewardIdList ); return m_HWDCrafterSupplyRewardIdList; } +const std::set< uint32_t >& getHWDCrafterSupplyTermIdList() +{ + if( m_HWDCrafterSupplyTermIdList.size() == 0 ) + loadIdList( m_HWDCrafterSupplyTermDat, m_HWDCrafterSupplyTermIdList ); + return m_HWDCrafterSupplyTermIdList; +} const std::set< uint32_t >& getHWDDevLayerControlIdList() { if( m_HWDDevLayerControlIdList.size() == 0 ) @@ -11743,6 +12187,12 @@ const std::set< uint32_t >& getItemUICategoryIdList() loadIdList( m_ItemUICategoryDat, m_ItemUICategoryIdList ); return m_ItemUICategoryIdList; } +const std::set< uint32_t >& getJingleIdList() +{ + if( m_JingleIdList.size() == 0 ) + loadIdList( m_JingleDat, m_JingleIdList ); + return m_JingleIdList; +} const std::set< uint32_t >& getJobHudManualIdList() { if( m_JobHudManualIdList.size() == 0 ) @@ -11899,6 +12349,12 @@ const std::set< uint32_t >& getMapIdList() loadIdList( m_MapDat, m_MapIdList ); return m_MapIdList; } +const std::set< uint32_t >& getMapConditionIdList() +{ + if( m_MapConditionIdList.size() == 0 ) + loadIdList( m_MapConditionDat, m_MapConditionIdList ); + return m_MapConditionIdList; +} const std::set< uint32_t >& getMapMarkerIdList() { if( m_MapMarkerIdList.size() == 0 ) @@ -11923,18 +12379,6 @@ const std::set< uint32_t >& getMarkerIdList() loadIdList( m_MarkerDat, m_MarkerIdList ); return m_MarkerIdList; } -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 ) @@ -12103,6 +12547,12 @@ const std::set< uint32_t >& getMoveVfxIdList() loadIdList( m_MoveVfxDat, m_MoveVfxIdList ); return m_MoveVfxIdList; } +const std::set< uint32_t >& getMovieStaffListIdList() +{ + if( m_MovieStaffListIdList.size() == 0 ) + loadIdList( m_MovieStaffListDat, m_MovieStaffListIdList ); + return m_MovieStaffListIdList; +} const std::set< uint32_t >& getMovieSubtitleIdList() { if( m_MovieSubtitleIdList.size() == 0 ) @@ -12265,6 +12715,12 @@ const std::set< uint32_t >& getPerformIdList() loadIdList( m_PerformDat, m_PerformIdList ); return m_PerformIdList; } +const std::set< uint32_t >& getPerformGroupIdList() +{ + if( m_PerformGroupIdList.size() == 0 ) + loadIdList( m_PerformGroupDat, m_PerformGroupIdList ); + return m_PerformGroupIdList; +} const std::set< uint32_t >& getPerformTransientIdList() { if( m_PerformTransientIdList.size() == 0 ) @@ -12283,6 +12739,12 @@ const std::set< uint32_t >& getPetActionIdList() loadIdList( m_PetActionDat, m_PetActionIdList ); return m_PetActionIdList; } +const std::set< uint32_t >& getPetMirageIdList() +{ + if( m_PetMirageIdList.size() == 0 ) + loadIdList( m_PetMirageDat, m_PetMirageIdList ); + return m_PetMirageIdList; +} const std::set< uint32_t >& getPhysicsGroupIdList() { if( m_PhysicsGroupIdList.size() == 0 ) @@ -12349,12 +12811,6 @@ const std::set< uint32_t >& getPublicContentTextDataIdList() loadIdList( m_PublicContentTextDataDat, m_PublicContentTextDataIdList ); return m_PublicContentTextDataIdList; } -const std::set< uint32_t >& getPurifyIdList() -{ - if( m_PurifyIdList.size() == 0 ) - loadIdList( m_PurifyDat, m_PurifyIdList ); - return m_PurifyIdList; -} const std::set< uint32_t >& getPvPActionIdList() { if( m_PvPActionIdList.size() == 0 ) @@ -12391,6 +12847,12 @@ const std::set< uint32_t >& getQuestIdList() loadIdList( m_QuestDat, m_QuestIdList ); return m_QuestIdList; } +const std::set< uint32_t >& getQuestAcceptAdditionConditionIdList() +{ + if( m_QuestAcceptAdditionConditionIdList.size() == 0 ) + loadIdList( m_QuestAcceptAdditionConditionDat, m_QuestAcceptAdditionConditionIdList ); + return m_QuestAcceptAdditionConditionIdList; +} const std::set< uint32_t >& getQuestBattleIdList() { if( m_QuestBattleIdList.size() == 0 ) @@ -12421,6 +12883,18 @@ const std::set< uint32_t >& getQuestDerivedClassIdList() loadIdList( m_QuestDerivedClassDat, m_QuestDerivedClassIdList ); return m_QuestDerivedClassIdList; } +const std::set< uint32_t >& getQuestEffectIdList() +{ + if( m_QuestEffectIdList.size() == 0 ) + loadIdList( m_QuestEffectDat, m_QuestEffectIdList ); + return m_QuestEffectIdList; +} +const std::set< uint32_t >& getQuestEffectDefineIdList() +{ + if( m_QuestEffectDefineIdList.size() == 0 ) + loadIdList( m_QuestEffectDefineDat, m_QuestEffectDefineIdList ); + return m_QuestEffectDefineIdList; +} const std::set< uint32_t >& getQuestRedoIdList() { if( m_QuestRedoIdList.size() == 0 ) @@ -12583,6 +13057,18 @@ const std::set< uint32_t >& getResidentIdList() loadIdList( m_ResidentDat, m_ResidentIdList ); return m_ResidentIdList; } +const std::set< uint32_t >& getResistanceWeaponAdjustIdList() +{ + if( m_ResistanceWeaponAdjustIdList.size() == 0 ) + loadIdList( m_ResistanceWeaponAdjustDat, m_ResistanceWeaponAdjustIdList ); + return m_ResistanceWeaponAdjustIdList; +} +const std::set< uint32_t >& getRetainerFortuneRewardRangeIdList() +{ + if( m_RetainerFortuneRewardRangeIdList.size() == 0 ) + loadIdList( m_RetainerFortuneRewardRangeDat, m_RetainerFortuneRewardRangeIdList ); + return m_RetainerFortuneRewardRangeIdList; +} const std::set< uint32_t >& getRetainerTaskIdList() { if( m_RetainerTaskIdList.size() == 0 ) @@ -12619,6 +13105,12 @@ const std::set< uint32_t >& getRideShootingIdList() loadIdList( m_RideShootingDat, m_RideShootingIdList ); return m_RideShootingIdList; } +const std::set< uint32_t >& getRideShootingTargetTypeIdList() +{ + if( m_RideShootingTargetTypeIdList.size() == 0 ) + loadIdList( m_RideShootingTargetTypeDat, m_RideShootingTargetTypeIdList ); + return m_RideShootingTargetTypeIdList; +} const std::set< uint32_t >& getRideShootingTextDataIdList() { if( m_RideShootingTextDataIdList.size() == 0 ) @@ -12769,6 +13261,12 @@ const std::set< uint32_t >& getStainTransientIdList() loadIdList( m_StainTransientDat, m_StainTransientIdList ); return m_StainTransientIdList; } +const std::set< uint32_t >& getStanceChangeIdList() +{ + if( m_StanceChangeIdList.size() == 0 ) + loadIdList( m_StanceChangeDat, m_StanceChangeIdList ); + return m_StanceChangeIdList; +} const std::set< uint32_t >& getStatusIdList() { if( m_StatusIdList.size() == 0 ) @@ -12847,6 +13345,12 @@ const std::set< uint32_t >& getTextCommandIdList() loadIdList( m_TextCommandDat, m_TextCommandIdList ); return m_TextCommandIdList; } +const std::set< uint32_t >& getTextCommandParamIdList() +{ + if( m_TextCommandParamIdList.size() == 0 ) + loadIdList( m_TextCommandParamDat, m_TextCommandParamIdList ); + return m_TextCommandParamIdList; +} const std::set< uint32_t >& getTitleIdList() { if( m_TitleIdList.size() == 0 ) @@ -12967,6 +13471,12 @@ const std::set< uint32_t >& getTripleTriadCompetitionIdList() loadIdList( m_TripleTriadCompetitionDat, m_TripleTriadCompetitionIdList ); return m_TripleTriadCompetitionIdList; } +const std::set< uint32_t >& getTripleTriadResidentIdList() +{ + if( m_TripleTriadResidentIdList.size() == 0 ) + loadIdList( m_TripleTriadResidentDat, m_TripleTriadResidentIdList ); + return m_TripleTriadResidentIdList; +} const std::set< uint32_t >& getTripleTriadRuleIdList() { if( m_TripleTriadRuleIdList.size() == 0 ) @@ -12997,6 +13507,18 @@ const std::set< uint32_t >& getTutorialTankIdList() loadIdList( m_TutorialTankDat, m_TutorialTankIdList ); return m_TutorialTankIdList; } +const std::set< uint32_t >& getUDS_EventIdList() +{ + if( m_UDS_EventIdList.size() == 0 ) + loadIdList( m_UDS_EventDat, m_UDS_EventIdList ); + return m_UDS_EventIdList; +} +const std::set< uint32_t >& getUDS_PropertyIdList() +{ + if( m_UDS_PropertyIdList.size() == 0 ) + loadIdList( m_UDS_PropertyDat, m_UDS_PropertyIdList ); + return m_UDS_PropertyIdList; +} const std::set< uint32_t >& getUIColorIdList() { if( m_UIColorIdList.size() == 0 ) @@ -13063,6 +13585,18 @@ const std::set< uint32_t >& getWeatherReportReplaceIdList() loadIdList( m_WeatherReportReplaceDat, m_WeatherReportReplaceIdList ); return m_WeatherReportReplaceIdList; } +const std::set< uint32_t >& getWebGuidanceIdList() +{ + if( m_WebGuidanceIdList.size() == 0 ) + loadIdList( m_WebGuidanceDat, m_WebGuidanceIdList ); + return m_WebGuidanceIdList; +} +const std::set< uint32_t >& getWebURLIdList() +{ + if( m_WebURLIdList.size() == 0 ) + loadIdList( m_WebURLDat, m_WebURLIdList ); + return m_WebURLIdList; +} const std::set< uint32_t >& getWeddingBGMIdList() { if( m_WeddingBGMIdList.size() == 0 ) diff --git a/src/common/Network/CommonActorControl.h b/src/common/Network/CommonActorControl.h index 6ead8897..c713148c 100644 --- a/src/common/Network/CommonActorControl.h +++ b/src/common/Network/CommonActorControl.h @@ -111,6 +111,8 @@ namespace Sapphire::Network::ActorControl ScreenFadeOut = 0xAA, + CeremonyDecoration = 0xB9, + ZoneIn = 0xC8, ZoneInDefaultPos = 0xC9, @@ -213,7 +215,19 @@ namespace Sapphire::Network::ActorControl SetFavorite = 0x1FC, LearnTeleport = 0x1FD, - OpenRecommendationGuide = 0x200, + /*! + * param1 = event type bitmask + * 1 = Quest + * 2 = GuildLeveAssignment + * 4 = GuildOrderGuide + * 8 = TripleTriad + * 16 = CustomTalk + * 32 = PreHandler + */ + BeginMapUpdate = 0x1FF, + FinishMapUpdate = 0x200, + + //OpenRecommendationGuide = 0x200, ArmoryErrorMsg = 0x201, AchievementPopup = 0x203, @@ -364,6 +378,7 @@ namespace Sapphire::Network::ActorControl TitleList = 0x12F, UpdatedSeenHowTos = 0x133, + CutscenePlayed = 0x134, // param1 = cutscene id AllotAttribute = 0x135, ClearFieldMarkers = 0x13A, diff --git a/src/common/Network/PacketDef/Ipcs.h b/src/common/Network/PacketDef/Ipcs.h index 4f38f3ed..0db60930 100644 --- a/src/common/Network/PacketDef/Ipcs.h +++ b/src/common/Network/PacketDef/Ipcs.h @@ -1,8 +1,8 @@ #ifndef _CORE_NETWORK_PACKETS_IPCS_H #define _CORE_NETWORK_PACKETS_IPCS_H - + #include - + namespace Sapphire::Network::Packets { @@ -43,67 +43,67 @@ namespace Sapphire::Network::Packets */ enum ServerZoneIpcType : uint16_t { - Ping = 0x0219, // updated 5.35 hotfix - Init = 0x0185, // updated 5.35 hotfix + Ping = 0x02A8, // updated 5.58 hotfix + Init = 0x013C, // updated 5.58 hotfix - ActorFreeSpawn = 0x0239, // updated 5.35 hotfix - InitZone = 0x03CD, // updated 5.35 hotfix + ActorFreeSpawn = 0x00B5, // updated 5.58 hotfix + InitZone = 0x0320, // updated 5.58 hotfix - EffectResult = 0x01C2, // updated 5.35 hotfix - ActorControl = 0x02A4, // updated 5.35 hotfix - ActorControlSelf = 0x02C8, // updated 5.35 hotfix - ActorControlTarget = 0x0209, // updated 5.35 hotfix + EffectResult = 0x0387, // updated 5.58 hotfix + ActorControl = 0x00B0, // updated 5.58 hotfix + ActorControlSelf = 0x02B6, // updated 5.58 hotfix + ActorControlTarget = 0x03C5, // updated 5.58 hotfix /*! * @brief Used when resting */ - UpdateHpMpTp = 0x0319, // updated 5.35 hotfix + UpdateHpMpTp = 0x01A7, // updated 5.58 hotfix /////////////////////////////////////////////////// ChatBanned = 0xF06B, - Playtime = 0x03A4, // updated 5.35 hotfix - Logout = 0x02AD, // updated 5.35 hotfix - CFNotify = 0x02C4, // updated 5.35 hotfix + Playtime = 0x0179, // updated 5.58 hotfix + Logout = 0x0214, // updated 5.58 hotfix + CFNotify = 0x0327, // updated 5.58 hotfix CFMemberStatus = 0x0079, - CFDutyInfo = 0x0193, // updated 5.35 hotfix + CFDutyInfo = 0x03AA, // updated 5.58 hotfix CFPlayerInNeed = 0xF07F, - CFPreferredRole = 0x0196, // updated 5.35 hotfix - CFCancel = 0x00EC, // updated 5.35 hotfix + CFPreferredRole = 0x024B, // updated 5.58 hotfix + CFCancel = 0x01AC, // updated 5.58 hotfix SocialRequestError = 0xF0AD, - CFRegistered = 0x010C, // updated 5.35 hotfix - SocialRequestResponse = 0x01C7, // updated 5.35 hotfix - SocialMessage = 0x0308, // updated 5.35 hotfix - SocialMessage2 = 0x037C, // updated 5.35 hotfix - CancelAllianceForming = 0x00C6, // updated 4.2 + CFRegistered = 0x029F, // updated 5.58 hotfix + SocialRequestResponse = 0x0082, // updated 5.58 hotfix + SocialMessage = 0x03CB, // updated 5.58 hotfix + SocialMessage2 = 0x01D7, // updated 5.58 hotfix + CancelAllianceForming = 0xF0C6, // updated 4.2 - LogMessage = 0x00D0, + LogMessage = 0x0118, // updated 5.58 hotfix - Chat = 0x0349, // updated 5.35 hotfix + Chat = 0x00FE, // updated 5.58 hotfix PartyChat = 0x0065, WorldVisitList = 0xF0FE, // added 4.5 - SocialList = 0x0216, // updated 5.35 hotfix + SocialList = 0x015F, // updated 5.58 hotfix - ExamineSearchInfo = 0x03C3, // updated 5.35 hotfix - UpdateSearchInfo = 0x0121, // updated 5.35 hotfix - InitSearchInfo = 0x036F, // updated 5.35 hotfix - ExamineSearchComment = 0x0102, // updated 4.1 + ExamineSearchInfo = 0x0133, // updated 5.58 hotfix + UpdateSearchInfo = 0x03E5, // updated 5.58 hotfix + InitSearchInfo = 0x0321, // updated 5.58 hotfix + ExamineSearchComment = 0x03AD, // updated 5.58 hotfix - ServerNoticeShort = 0x017A, // updated 5.35 hotfix - ServerNotice = 0x02F8, // updated 5.35 hotfix - SetOnlineStatus = 0x03D7, // updated 5.35 hotfix + ServerNoticeShort = 0x0333, // updated 5.58 hotfix + ServerNotice = 0x0171, // updated 5.58 hotfix + SetOnlineStatus = 0x037B, // updated 5.58 hotfix - CountdownInitiate = 0x0237, // updated 5.25 - CountdownCancel = 0x00D9, // updated 5.18 + CountdownInitiate = 0x0111, // updated 5.58 hotfix + CountdownCancel = 0x0231, // updated 5.58 hotfix - PlayerAddedToBlacklist = 0x033F, // updated 5.1 - PlayerRemovedFromBlacklist = 0x0385, // updated 5.1 - BlackList = 0x02DB, // updated 5.35 hotfix + PlayerAddedToBlacklist = 0x024E, // updated 5.58 hotfix + PlayerRemovedFromBlacklist = 0x011D, // updated 5.58 hotfix + BlackList = 0x03C0, // updated 5.58 hotfix - LinkshellList = 0x01F0, // updated 5.35 hotfix + LinkshellList = 0x02E2, // updated 5.58 hotfix MailDeleteRequest = 0xF12B, // updated 5.0 @@ -114,166 +114,181 @@ namespace Sapphire::Network::Packets MarketTaxRates = 0x01F8, // updated 5.35 hotfix - MarketBoardSearchResult = 0x032C, // updated 5.35 hotfix - MarketBoardItemListingCount = 0x038F, // updated 5.35 hotfix - MarketBoardItemListingHistory = 0x0186, // updated 5.35 hotfix - MarketBoardItemListing = 0x025F, // updated 5.35 hotfix - + MarketBoardSearchResult = 0x01F1, // updated 5.58 hotfix + MarketBoardItemListingCount = 0x0068, // updated 5.58 hotfix + MarketBoardItemListingHistory = 0x01BA, // updated 5.58 hotfix + MarketBoardItemListing = 0x0076, // updated 5.58 hotfix + CharaFreeCompanyTag = 0x013B, // updated 4.5 - FreeCompanyBoardMsg = 0x013C, // updated 4.5 - FreeCompanyInfo = 0xF13D, // updated 4.5 - ExamineFreeCompanyInfo = 0xF13E, // updated 4.5 + FreeCompanyBoardMsg = 0x03DB, // updated 5.58 hotfix + FreeCompanyInfo = 0x01F7, // updated 5.58 hotfix + ExamineFreeCompanyInfo = 0x0324, // updated 5.58 hotfix FreeCompanyUpdateShortMessage = 0xF157, // added 5.0 - StatusEffectList = 0x0382, // updated 5.35 hotfix + StatusEffectList = 0x0074, // updated 5.58 hotfix EurekaStatusEffectList = 0x0167, // updated 5.18 BossStatusEffectList = 0x0312, // added 5.1 - Effect = 0x0192, // updated 5.35 hotfix - AoeEffect8 = 0x012C, // updated 5.35 hotfix - AoeEffect16 = 0x01B9, // updated 5.35 hotfix - AoeEffect24 = 0x02B4, // updated 5.35 hotfix - AoeEffect32 = 0x00A4, // updated 5.35 hotfix - PersistantEffect = 0x0317, // updated 5.35 hotfix + Effect = 0x03CA, // updated 5.58 hotfix + AoeEffect8 = 0x03C4, // updated 5.58 hotfix + AoeEffect16 = 0x00FA, // updated 5.58 hotfix + AoeEffect24 = 0x0339, // updated 5.58 hotfix + AoeEffect32 = 0x023C, // updated 5.58 hotfix + PersistantEffect = 0x025D, // updated 5.58 hotfix - GCAffiliation = 0x0105, // updated 5.35 hotfix + GCAffiliation = 0x0094, // updated 5.58 hotfix - PlayerSpawn = 0x0179, // updated 5.35 hotfix - NpcSpawn = 0x03A8, // updated 5.35 hotfix + PlayerSpawn = 0x01D8, // updated 5.58 hotfix + NpcSpawn = 0x00D2, // updated 5.58 hotfix NpcSpawn2 = 0x01CB, // ( Bigger statuseffectlist? ) updated 5.3 - ActorMove = 0x01BF, // updated 5.35 hotfix + ActorMove = 0x00F8, // updated 5.58 hotfix - ActorSetPos = 0x03DF, // updated 5.35 hotfix + ActorSetPos = 0x0299, // updated 5.58 hotfix - ActorCast = 0x0302, // updated 5.35 hotfix + ActorCast = 0x015D, // updated 5.58 hotfix SomeCustomiseChangePacketProbably = 0x00CD, // added 5.18 - PartyList = 0x02B2, // updated 5.35 hotfix - PartyMessage = 0x00AE, // updated 5.35 hotfix - HateRank = 0x02CC, // updated 5.35 hotfix - HateList = 0x0198, // updated 5.35 hotfix - ObjectSpawn = 0x02B8, // updated 5.35 hotfix - ObjectDespawn = 0x00C0, // updated 5.35 hotfix - UpdateClassInfo = 0x0235, // updated 5.35 hotfix - SilentSetClassJob = 0x018E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything - PlayerSetup = 0x0290, // updated 5.35 hotfix - PlayerStats = 0x023B, // updated 5.35 hotfix - ActorOwner = 0x00E8, // updated 5.35 hotfix - PlayerStateFlags = 0x00F8, // updated 5.35 hotfix - PlayerClassInfo = 0x02C3, // updated 5.35 hotfix - CharaVisualEffect = 0x02E2, // updated 5.35 hotfix + PartyList = 0x0349, // updated 5.58 hotfix + PartyMessage = 0x00A4, // updated 5.58 hotfix + HateRank = 0x0150, // updated 5.58 hotfix + HateList = 0x0243, // updated 5.58 hotfix + ObjectSpawn = 0x0125, // updated 5.58 hotfix + ObjectDespawn = 0x0148, // updated 5.58 hotfix + UpdateClassInfo = 0x0084, // updated 5.58 hotfix + SilentSetClassJob = 0xF18E, // updated 5.0 - seems to be the case, not sure if it's actually used for anything + PlayerSetup = 0x01D5, // updated 5.58 hotfix + PlayerStats = 0x0295, // updated 5.58 hotfix + ActorOwner = 0x0260, // updated 5.58 hotfix + PlayerStateFlags = 0x03BF, // updated 5.58 hotfix + PlayerClassInfo = 0x0131, // updated 5.58 hotfix + CharaVisualEffect = 0x0292, // updated 5.58 hotfix - ModelEquip = 0x0277, // updated 5.35 hotfix - Examine = 0x00BC, // updated 5.35 hotfix - CharaNameReq = 0x008E, // updated 5.35 hotfix + ModelEquip = 0x03A2, // updated 5.58 hotfix + Examine = 0x0365, // updated 5.58 hotfix + CharaNameReq = 0x01F0, // updated 5.58 hotfix // nb: see #565 on github UpdateRetainerItemSalePrice = 0xF19F, // updated 5.0 - RetainerSaleHistory = 0x020E, // updated 5.21 hotfix - RetainerInformation = 0x01F9, // updated 5.35 hotfix + RetainerSaleHistory = 0x03CE, // updated 5.58 hotfix + RetainerInformation = 0x022F, // updated 5.58 hotfix SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore - ItemInfo = 0x0214, // updated 5.35 hotfix - ContainerInfo = 0x00C5, // updated 5.35 hotfix - InventoryTransactionFinish = 0x02F0, // updated 5.35 hotfix - InventoryTransaction = 0x01FD, // updated 5.35 hotfix - CurrencyCrystalInfo = 0x0379, // updated 5.35 hotfix + ItemInfo = 0x01CC, // updated 5.58 hotfix + ContainerInfo = 0x025C, // updated 5.58 hotfix + InventoryTransactionFinish = 0x0176, // updated 5.58 hotfix + InventoryTransaction = 0x027F, // updated 5.58 hotfix + CurrencyCrystalInfo = 0x0345, // updated 5.58 hotfix - InventoryActionAck = 0x03E4, // updated 5.35 hotfix - UpdateInventorySlot = 0x036A, // updated 5.35 hotfix + InventoryActionAck = 0x03B8, // updated 5.58 hotfix + UpdateInventorySlot = 0x02F7, // updated 5.58 hotfix - HuntingLogEntry = 0x0146, // updated 5.35 hotfix + HuntingLogEntry = 0x01D9, // updated 5.58 hotfix - EventPlay = 0x00F3, // updated 5.35 hotfix - EventPlay4 = 0x00AC, // updated 5.35 hotfix - EventPlay8 = 0x023F, // updated 5.35 hotfix - EventPlay16 = 0x025B, // updated 5.35 hotfix - EventPlay32 = 0x029A, // updated 5.35 hotfix - EventPlay64 = 0x02C1, // updated 5.35 hotfix - EventPlay128 = 0x038A, // updated 5.35 hotfix - EventPlay255 = 0x034B, // updated 5.35 hotfix + EventPlay = 0x016B, // updated 5.58 hotfix + EventPlay4 = 0x010A, // updated 5.58 hotfix + EventPlay8 = 0x0337, // updated 5.58 hotfix + EventPlay16 = 0x0269, // updated 5.58 hotfix + EventPlay32 = 0x023E, // updated 5.58 hotfix + EventPlay64 = 0x00DE, // updated 5.58 hotfix + EventPlay128 = 0x02D0, // updated 5.58 hotfix + EventPlay255 = 0x0362, // updated 5.58 hotfix - EventStart = 0x009A, // updated 5.35 hotfix - EventFinish = 0x007E, // updated 5.35 hotfix + EventContinue = 0x00B6, // updated 5.58 hotfix + + EventStart = 0x02DA, // updated 5.58 hotfix + EventFinish = 0x0235, // updated 5.58 hotfix EventLinkshell = 0x1169, - QuestActiveList = 0x0117, // updated 5.35 hotfix - QuestUpdate = 0x0073, // updated 5.35 hotfix - QuestCompleteList = 0x0240, // updated 5.35 hotfix + QuestActiveList = 0x0097, // updated 5.58 hotfix + QuestUpdate = 0x01B2, // updated 5.58 hotfix + QuestCompleteList = 0x006D, // updated 5.58 hotfix - QuestFinish = 0x00E9, // updated 5.35 hotfix - MSQTrackerComplete = 0xF1D6, // updated 5.0 + QuestFinish = 0x021B, // updated 5.58 hotfix + MSQTrackerComplete = 0x0348, // updated 5.58 hotfix MSQTrackerProgress = 0xF1CD, // updated 4.5 ? this actually looks like the two opcodes have been combined, see #474 - QuestMessage = 0x0381, // updated 5.35 hotfix + QuestMessage = 0x0220, // updated 5.58 hotfix - QuestTracker = 0x018B, // updated 5.35 hotfix + QuestTracker = 0x00D8, // updated 5.58 hotfix - Mount = 0x01B5, // updated 5.35 hotfix + Mount = 0x01E1, // updated 5.58 hotfix - DirectorVars = 0x011D, // updated 5.35 hotfix + DirectorVars = 0x0154, // updated 5.58 hotfix SomeDirectorUnk1 = 0x0084, // updated 5.18 SomeDirectorUnk2 = 0xF0C1, // updated 5.18 - SomeDirectorUnk4 = 0x0202, // updated 5.35 hotfix + SomeDirectorUnk4 = 0x03DD, // updated 5.58 hotfix SomeDirectorUnk8 = 0x028A, // updated 5.18 SomeDirectorUnk16 = 0x028C, // updated 5.18 - DirectorPopUp = 0xF162, // updated 5.18 - display dialogue pop-ups in duties and FATEs, for example, Teraflare's countdown - DirectorPopUp4 = 0x0214, // updated 5.18 - DirectorPopUp8 = 0x00F8, // updated 5.18 + DirectorPopUp = 0x03DF, // updated 5.58 hotfix + DirectorPopUp4 = 0x019B, // updated 5.58 hotfix + DirectorPopUp8 = 0x0271, // updated 5.58 hotfix CFAvailableContents = 0xF1FD, // updated 4.2 - WeatherChange = 0x027B, // updated 5.35 hotfix - PlayerTitleList = 0x0251, // updated 5.35 hotfix - Discovery = 0x031B, // updated 5.35 hotfix + WeatherChange = 0x0323, // updated 5.58 hotfix + PlayerTitleList = 0x014E, // updated 5.58 hotfix + Discovery = 0x01C2, // updated 5.58 hotfix - EorzeaTimeOffset = 0x01D4, // updated 5.35 hotfix + EorzeaTimeOffset = 0x0070, // updated 5.58 hotfix - EquipDisplayFlags = 0x00BE, // updated 5.35 hotfix + EquipDisplayFlags = 0x02C6, // updated 5.58 hotfix MiniCactpotInit = 0x0286, // added 5.31 - ShopMessage = 0x0197, // updated 5.35 hotfix - LootMessage = 0x01B7, // updated 5.35 hotfix + ShopMessage = 0x0287, // updated 5.58 hotfix + LootMessage = 0x0383, // updated 5.58 hotfix + ResultDialog = 0x0273, // updated 5.58 hotfix + DesynthResult = 0x0238, // updated 5.58 hotfix /// Housing ////////////////////////////////////// - LandSetInitialize = 0x0095, // updated 5.35 hotfix - LandUpdate = 0x00BF, // updated 5.35 hotfix - YardObjectSpawn = 0x01CA, // updated 5.35 hotfix - HousingIndoorInitialize = 0x01FF, // updated 5.35 hotfix - LandPriceUpdate = 0x0380, // updated 5.35 hotfix - LandInfoSign = 0x023D, // updated 5.35 hotfix - LandRename = 0x0140, // updated 5.35 hotfix - HousingEstateGreeting = 0x00C7, // updated 5.35 hotfix - HousingUpdateLandFlagsSlot = 0x027E, // updated 5.35 hotfix - HousingLandFlags = 0x022F, // updated 5.35 hotfix - HousingShowEstateGuestAccess = 0x03B5, // updated 5.35 hotfix + LandSetInitialize = 0x0159, // updated 5.58 hotfix + LandUpdate = 0x0228, // updated 5.58 hotfix + YardObjectSpawn = 0x023D, // updated 5.58 hotfix + HousingIndoorInitialize = 0x0210, // updated 5.58 hotfix + LandPriceUpdate = 0x0300, // updated 5.58 hotfix + LandInfoSign = 0x03E7, // updated 5.58 hotfix + LandRename = 0x01BF, // updated 5.58 hotfix + HousingEstateGreeting = 0x0126, // updated 5.58 hotfix + HousingUpdateLandFlagsSlot = 0x0157, // updated 5.58 hotfix + HousingLandFlags = 0x03B1, // updated 5.58 hotfix + HousingShowEstateGuestAccess = 0x00CC, // updated 5.58 hotfix - HousingObjectInitialize = 0x01AA, // updated 5.35 hotfix - HousingInternalObjectSpawn = 0x0234, // updated 5.35 hotfix + HousingObjectInitialize = 0x0112, // updated 5.58 hotfix + HousingInternalObjectSpawn = 0x02C8, // updated 5.58 hotfix - HousingWardInfo = 0x02FD, // updated 5.35 hotfix - HousingObjectMove = 0x022C, // updated 5.35 hotfix + HousingWardInfo = 0x012A, // updated 5.58 hotfix + HousingObjectMove = 0x0265, // updated 5.58 hotfix - SharedEstateSettingsResponse = 0x006A, // updated 5.35 hotfix + SharedEstateSettingsResponse = 0x030E, // updated 5.58 hotfix - LandUpdateHouseName = 0x00B1, // updated 5.35 hotfix + LandUpdateHouseName = 0x017C, // updated 5.58 hotfix - LandSetMap = 0x0149, // updated 5.35 hotfix + LandSetMap = 0x02E5, // updated 5.58 hotfix + + CeremonySetActorAppearance = 0x02ED, // updated 5.58 hotfix ////////////////////////////////////////////////// DuelChallenge = 0x0277, // 4.2; this is responsible for opening the ui - PerformNote = 0x0286, // updated 4.3 + PerformNote = 0x0127, // updated 5.58 hotfix - PrepareZoning = 0x026C, // updated 5.35 hotfix - ActorGauge = 0x0112, // updated 5.35 hotfix + PrepareZoning = 0x02AB, // updated 5.58 hotfix + ActorGauge = 0x01C1, // updated 5.58 hotfix + DutyGauge = 0x02E5, // updated 5.58 hotfix // daily quest info -> without them sent, login will take longer... - DailyQuests = 0x0139, // updated 5.35 hotfix - DailyQuestRepeatFlags = 0x024C, // updated 5.35 hotfix + DailyQuests = 0x02D6, // updated 5.58 hotfix + DailyQuestRepeatFlags = 0x01AB, // updated 5.58 hotfix + + MapUpdate = 0x0394, // updated 5.58 hotfix + MapUpdate4 = 0x036F, // updated 5.58 hotfix + MapUpdate8 = 0x0311, // updated 5.58 hotfix + MapUpdate16 = 0x0108, // updated 5.58 hotfix + MapUpdate32 = 0x007A, // updated 5.58 hotfix + MapUpdate64 = 0x02A0, // updated 5.58 hotfix + MapUpdate128 = 0x0303, // updated 5.58 hotfix /// Doman Mahjong ////////////////////////////////////// MahjongOpenGui = 0x02A4, // only available in mahjong instance @@ -282,10 +297,20 @@ namespace Sapphire::Network::Packets MahjongEndRoundTsumo = 0x02BF, // called tsumo MahjongEndRoundRon = 0x2C0, // called ron or double ron (waiting for action must be flagged from discard packet to call) MahjongTileDiscard = 0x02C1, // giri (discarding a tile.) chi(1)/pon(2)/kan(4)/ron(8) flags etc.. - MahjongPlayersInfo = 0x02C2, // actor id, name, rating and stuff.. + MahjongPlayersInfo = 0xF2C2, // actor id, name, rating and stuff.. // 2C3 and 2C4 are currently unknown MahjongEndRoundDraw = 0x02C5, // self explanatory MahjongEndGame = 0x02C6, // finished oorasu(all-last) round; shows a result screen. + + /// Airship & Submarine ////////////////////////////////////// + AirshipExplorationResult = 0x0203, // updated 5.58 hotfix + AirshipStatus = 0x030C, // updated 5.58 hotfix + AirshipStatusList = 0x02FE, // updated 5.58 hotfix + AirshipTimers = 0x0166, // updated 5.58 hotfix + SubmarineExplorationResult = 0x00AA, // updated 5.58 hotfix + SubmarineProgressionStatus = 0x0357, // updated 5.58 hotfix + SubmarineStatusList = 0x01EF, // updated 5.58 hotfix + SubmarineTimers = 0x0247, // updated 5.58 hotfix }; /** @@ -293,109 +318,111 @@ namespace Sapphire::Network::Packets */ enum ClientZoneIpcType : uint16_t { - PingHandler = 0x0219, // updated 5.35 hotfix - InitHandler = 0x0185, // updated 5.35 hotfix + PingHandler = 0x0288, // updated 5.58 hotfix + InitHandler = 0x02EB, // updated 5.58 hotfix - FinishLoadingHandler = 0x01BE, // updated 5.35 hotfix + FinishLoadingHandler = 0x013C, // updated 5.58 hotfix - CFCommenceHandler = 0x0118, // updated 5.35 hotfix + CFCommenceHandler = 0x0381, // updated 5.58 hotfix - CFCancelHandler = 0x0332, // updated 5.35 hotfix - CFRegisterDuty = 0x0289, // updated 5.35 hotfix - CFRegisterRoulette = 0x0088, // updated 5.35 hotfix - PlayTimeHandler = 0x02A8, // updated 5.35 hotfix - LogoutHandler = 0x00EC, // updated 5.35 hotfix - CancelLogout = 0x03DB, // updated 5.35 hotfix + CFCancelHandler = 0x02B2, // updated 5.58 hotfix + CFRegisterDuty = 0x01BD, // updated 5.58 hotfix + CFRegisterRoulette = 0x037A, // updated 5.58 hotfix + PlayTimeHandler = 0x02B7, // updated 5.58 hotfix + LogoutHandler = 0x00A0, // updated 5.58 hotfix + CancelLogout = 0x01AC, // updated 5.58 hotfix + CFDutyInfoHandler = 0xF078, // updated 4.2 - CFDutyInfoHandler = 0x0078, // updated 4.2 + SocialReqSendHandler = 0x00D7, // updated 5.58 hotfix + SocialResponseHandler = 0x023B, // updated 5.58 hotfix + CreateCrossWorldLS = 0x035D, // updated 5.58 hotfix - SocialReqSendHandler = 0x0387, // updated 5.35 hotfix - SocialResponseHandler = 0x028D, // updated 5.35 hotfix - CreateCrossWorldLS = 0x00AF, // updated 4.3 - - ChatHandler = 0x0131, // updated 5.35 hotfix + ChatHandler = 0x03B0, // updated 5.58 hotfix PartyChatHandler = 0x0065, - PartySetLeaderHandler = 0x0208, // updated 5.35 hotfix - LeavePartyHandler = 0x0337, // updated 5.35 hotfix - KickPartyMemberHandler = 0x014C, // updated 5.35 hotfix - DisbandPartyHandler = 0x0205, // updated 5.35 hotfix + PartySetLeaderHandler = 0x036C, // updated 5.58 hotfix + LeavePartyHandler = 0x019D, // updated 5.58 hotfix + KickPartyMemberHandler = 0x0262, // updated 5.58 hotfix + DisbandPartyHandler = 0x0276, // updated 5.58 hotfix - SocialListHandler = 0x0340, // updated 5.35 hotfix - SetSearchInfoHandler = 0x0314, // updated 5.35 hotfix - ReqSearchInfoHandler = 0x01E9, // updated 5.35 hotfix + SocialListHandler = 0x01CA, // updated 5.58 hotfix + SetSearchInfoHandler = 0x01D4, // updated 5.58 hotfix + ReqSearchInfoHandler = 0x014F, // updated 5.58 hotfix ReqExamineSearchCommentHandler = 0x00E7, // updated 5.0 - ReqRemovePlayerFromBlacklist = 0x00F1, // updated 5.0 - BlackListHandler = 0x0079, // updated 5.35 hotfix - PlayerSearchHandler = 0x00F4, // updated 5.0 + ReqRemovePlayerFromBlacklist = 0x00B4, // updated 5.58 hotfix + BlackListHandler = 0x00F2, // updated 5.58 hotfix + PlayerSearchHandler = 0x037D, // updated 5.58 hotfix - LinkshellListHandler = 0x024B, // updated 5.35 hotfix + LinkshellListHandler = 0x03B6, // updated 5.58 hotfix - MarketBoardRequestItemListingInfo = 0x0102, // updated 4.5 - MarketBoardRequestItemListings = 0x0103, // updated 4.5 - MarketBoardSearch = 0x0107, // updated 4.5 + MarketBoardRequestItemListingInfo = 0x00F4, // updated 5.58 hotfix + MarketBoardRequestItemListings = 0x0122, // updated 5.58 hotfix + MarketBoardSearch = 0x0082, // updated 5.58 hotfix - ReqExamineFcInfo = 0x0113, // updated 4.1 + ReqExamineFcInfo = 0x037B, // updated 5.58 hotfix - FcInfoReqHandler = 0x011A, // updated 4.2 + FcInfoReqHandler = 0x03D4, // updated 5.58 hotfix FreeCompanyUpdateShortMessageHandler = 0x0123, // added 5.0 - ReqMarketWishList = 0x012C, // updated 4.3 + ReqMarketWishList = 0x00C3, // updated 5.58 hotfix ReqJoinNoviceNetwork = 0x0129, // updated 4.2 - ReqCountdownInitiate = 0x025F, // updated 5.35 hotfix - ReqCountdownCancel = 0x0244, // updated 5.25 + ReqCountdownInitiate = 0x02EC, // updated 5.58 hotfix + ReqCountdownCancel = 0x0068, // updated 5.58 hotfix - ZoneLineHandler = 0x0279, // updated 5.35 hotfix - ClientTrigger = 0x03D3, // updated 5.35 hotfix - DiscoveryHandler = 0x00E3, // updated 5.35 hotfix + ZoneLineHandler = 0x008D, // updated 5.58 hotfix + ClientTrigger = 0x03DB, // updated 5.58 hotfix + DiscoveryHandler = 0x038B, // updated 5.58 hotfix - PlaceFieldMarkerPreset = 0x023F, // updated 5.25 - PlaceFieldMarker = 0x01BA, // updated 5.25 - SkillHandler = 0x01CD, // updated 5.35 hotfix - GMCommand1 = 0x02AC, // updated 5.35 hotfix - GMCommand2 = 0x029F, // updated 5.35 hotfix - AoESkillHandler = 0x030C, // updated 5.35 hotfix + PlaceFieldMarkerPreset = 0x026D, // updated 5.58 hotfix + PlaceFieldMarker = 0x0371, // updated 5.58 hotfix + SkillHandler = 0x02DC, // updated 5.58 hotfix + GMCommand1 = 0x0272, // updated 5.58 hotfix + GMCommand2 = 0x00E9, // updated 5.58 hotfix + AoESkillHandler = 0x0152, // updated 5.58 hotfix - UpdatePositionHandler = 0x0236, // updated 5.35 hotfix + UpdatePositionHandler = 0x01AF, // updated 5.58 hotfix - InventoryModifyHandler = 0x0135, // updated 5.35 hotfix - - InventoryEquipRecommendedItems = 0x0116, // updated 5.35 hotfix + InventoryModifyHandler = 0x029E, // updated 5.58 hotfix - ReqPlaceHousingItem = 0x02AE, // updated 5.35 hotfix - BuildPresetHandler = 0x01C2, // updated 5.35 hotfix + InventoryEquipRecommendedItems = 0x01C9, // updated 5.58 hotfix - TalkEventHandler = 0x02A4, // updated 5.35 hotfix - EmoteEventHandler = 0x02C8, // updated 5.35 hotfix - WithinRangeEventHandler = 0x0209, // updated 5.35 hotfix - OutOfRangeEventHandler = 0x0319, // updated 5.35 hotfix - EnterTeriEventHandler = 0x0192, // updated 5.35 hotfix - ShopEventHandler = 0x01F6, // updated 5.35 hotfix + ReqPlaceHousingItem = 0x02D4, // updated 5.58 hotfix + BuildPresetHandler = 0x0223, // updated 5.58 hotfix - ReturnEventHandler = 0x02B4, // updated 5.35 hotfix - TradeReturnEventHandler = 0x00A4, // updated 5.35 hotfix - TradeMultipleReturnEventHander = 0x035C, // updated 5.35 hotfix + TalkEventHandler = 0x0387, // updated 5.58 hotfix + EmoteEventHandler = 0x00B0, // updated 5.58 hotfix + WithinRangeEventHandler = 0x02B6, // updated 5.58 hotfix + OutOfRangeEventHandler = 0x03C5, // updated 5.58 hotfix + EnterTeriEventHandler = 0x01A7, // updated 5.58 hotfix + ShopEventHandler = 0x0384, // updated 5.58 hotfix + ReturnEventHandler = 0x00FA, // updated 5.58 hotfix + TradeReturnEventHandler = 0x0339, // updated 5.58 hotfix + TradeReturnEventHandler2 = 0x023C, // updated 5.58 hotfix + EventYield2Handler = 0x021D, // updated 5.58 hotfix + EventYield16Handler = 0x0207, // updated 5.58 hotfix LinkshellEventHandler = 0x016B, // updated 4.5 LinkshellEventHandler1 = 0x016C, // updated 4.5 - ReqEquipDisplayFlagsChange = 0x02F6, // updated 5.35 hotfix + ReqEquipDisplayFlagsChange = 0x02A5, // updated 5.58 hotfix - LandRenameHandler = 0x0155, // updated 5.35 hotfix - HousingUpdateHouseGreeting = 0x02EA, // updated 5.35 hotfix - HousingUpdateObjectPosition = 0x00D5, // updated 5.35 hotfix + LandRenameHandler = 0x028E, // updated 5.58 hotfix + HousingUpdateHouseGreeting = 0x0343, // updated 5.58 hotfix + HousingUpdateObjectPosition = 0x012C, // updated 5.58 hotfix + HousingEditExterior = 0x027B, // updated 5.58 hotfix + HousingEditInterior = 0x02E3, // updated 5.58 hotfix - SetSharedEstateSettings = 0x017B, // updated 5.0 + SetSharedEstateSettings = 0x00D2, // updated 5.58 hotfix - UpdatePositionInstance = 0x0345, // updated 5.35 hotfix + UpdatePositionInstance = 0x00F8, // updated 5.58 hotfix - PerformNoteHandler = 0x029B, // updated 4.3 + PerformNoteHandler = 0x0243, // updated 5.58 hotfix - WorldInteractionHandler = 0x00A9, // updated 5.35 hotfix - Dive = 0x02CC, // updated 5.35 hotfix + WorldInteractionHandler = 0x0274, // updated 5.58 hotfix + Dive = 0x0320, // updated 5.58 hotfix }; //////////////////////////////////////////////////////////////////////////////// @@ -423,5 +450,5 @@ namespace Sapphire::Network::Packets } - + #endif /*_CORE_NETWORK_PACKETS_IPCS_H*/ diff --git a/src/common/Network/PacketDef/Zone/ClientZoneDef.h b/src/common/Network/PacketDef/Zone/ClientZoneDef.h index 19b4fff5..5efe9771 100644 --- a/src/common/Network/PacketDef/Zone/ClientZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ClientZoneDef.h @@ -426,6 +426,51 @@ struct FFXIVIpcDive : uint32_t padding; }; +struct FFXIVIpcHousingEditExterior : + FFXIVIpcBasePacket< HousingEditExterior > +{ + uint16_t landId; + uint8_t unknown[6]; + uint8_t removeFlag; + uint8_t unknown2; + uint16_t container[9]; + uint16_t slot[9]; + uint16_t padding; +}; + +struct FFXIVIpcHousingEditInterior : + FFXIVIpcBasePacket< HousingEditInterior > +{ + uint64_t unknown; + uint16_t container[10]; + uint16_t slot[10]; +}; + +struct FFXIVIpcEventYieldHandler : + FFXIVIpcBasePacket< EventYield2Handler > +{ + uint32_t eventId; + uint16_t scene; + uint16_t padding; + uint64_t unknown; +}; + +struct FFXIVIpcEventYield16Handler : + FFXIVIpcBasePacket< EventYield16Handler > +{ + uint32_t eventId; + uint16_t scene; + uint16_t padding; + uint32_t params[16]; +}; + +struct FFXIVIpcCFCommenceHandler : + FFXIVIpcBasePacket< CFCommenceHandler > +{ + uint8_t param; + uint8_t dummy[7]; +}; + } #endif //_CORE_NETWORK_PACKETS_ZONE_CLIENT_IPC_H diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index e21d1427..87ab1c3d 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -680,6 +680,7 @@ namespace Sapphire::Network::Packets::Server uint16_t unk; // == 0 uint16_t modelChara; uint16_t rotation; + uint16_t currentMount; uint16_t activeMinion; uint8_t spawnIndex; uint8_t state; @@ -693,24 +694,20 @@ namespace Sapphire::Network::Packets::Server uint8_t classJob; uint8_t u26d; uint16_t u27a; - uint8_t currentMount; uint8_t mountHead; uint8_t mountBody; uint8_t mountFeet; uint8_t mountColor; uint8_t scale; - - //uint32_t elementalLevel; one of these two field changed to 16bit - //uint32_t element; uint8_t elementData[6]; - + uint8_t unknown5_5[3]; Common::StatusEffect effect[30]; Common::FFXIVARR_POSITION3 pos; uint32_t models[10]; char name[32]; uint8_t look[26]; char fcTag[6]; - uint32_t unk30; + uint32_t unk30[2]; }; /** @@ -753,9 +750,10 @@ namespace Sapphire::Network::Packets::Server uint32_t displayFlags; uint16_t fateID; uint16_t mPCurr; - uint16_t unknown1; // 0 - uint16_t unknown2; // 0 or pretty big numbers > 30000 + uint16_t unknown1; + uint16_t unknown2; uint16_t modelChara; + uint16_t currentMount; uint16_t rotation; uint16_t activeMinion; uint8_t spawnIndex; @@ -770,14 +768,13 @@ namespace Sapphire::Network::Packets::Server uint8_t classJob; uint8_t u26d; uint16_t u27a; - uint8_t currentMount; uint8_t mountHead; uint8_t mountBody; uint8_t mountFeet; uint8_t mountColor; uint8_t scale; - uint16_t elementalLevel; // Eureka - uint16_t element; // Eureka + uint8_t elemental[6]; + uint8_t unknown5_5[3]; Common::StatusEffect effect[30]; Common::FFXIVARR_POSITION3 pos; uint32_t models[10]; @@ -789,7 +786,7 @@ namespace Sapphire::Network::Packets::Server uint8_t bNPCPartSlot; uint8_t unk32; uint16_t unk33; - uint32_t unk34; + uint32_t unk34[2]; }; /** @@ -930,13 +927,13 @@ namespace Sapphire::Network::Packets::Server //Current instance can be confirmed at any time using the /instance text command." ( 7B F8 69 ) uint8_t unknown5; + uint32_t unknown7; uint32_t unknown8; - uint16_t festivalId; - uint16_t additionalFestivalId; uint32_t unknown9; uint32_t unknown10; - uint32_t unknown11; - uint32_t unknown12[4]; + uint32_t festivalId; + uint32_t unknown12[3]; + uint32_t additionalFestivalId; uint32_t unknown13[3]; Common::FFXIVARR_POSITION3 pos; uint32_t unknown14[3]; @@ -1041,13 +1038,12 @@ namespace Sapphire::Network::Packets::Server unsigned char mountGuideMask[22]; unsigned char u19_2; */ - unsigned char unknown5_3a[176]; + unsigned char unknown5_55a[178]; unsigned char companionName[21]; unsigned char companionDefRank; unsigned char companionAttRank; unsigned char companionHealRank; - unsigned char mountGuideMask[23]; - unsigned char maybeReservedMountSlots; + unsigned char mountGuideMask[29]; //== char name[32]; unsigned char unknownOword[16]; @@ -1056,10 +1052,10 @@ namespace Sapphire::Network::Packets::Server unsigned char aetheryte[21]; unsigned char discovery[445]; unsigned char howto[34]; - unsigned char minions[51]; + unsigned char minions[55]; unsigned char chocoboTaxiMask[10]; - unsigned char watchedCutscenes[131]; - unsigned char companionBardingMask[10]; + unsigned char watchedCutscenes[137]; + unsigned char companionBardingMask[11]; unsigned char companionEquippedHead; unsigned char companionEquippedBody; unsigned char companionEquippedLegs; @@ -1074,7 +1070,7 @@ namespace Sapphire::Network::Packets::Server unsigned char unknownPvp5AB[11]; unsigned char unknown5B9[5]; */ - unsigned char unknown5_3c[234]; + unsigned char unknown5_45b[236]; //== unsigned char pose; /* @@ -1092,28 +1088,32 @@ namespace Sapphire::Network::Packets::Server unsigned char aetherCurrentMask[22]; unsigned char u10[3]; */ - unsigned char unknown5_3d[292]; + unsigned char unknown5_55b[295]; //== - unsigned char orchestrionMask[40]; + unsigned char orchestrionMask[40]; // this field may already be extended, if it is, the beginning bytes are at the end of unknown5_55b unsigned char hallOfNoviceCompletion[3]; unsigned char animaCompletion[11]; - unsigned char unknown5_3e[33]; + unsigned char unknown5_55c[35]; unsigned char unlockedRaids[28]; unsigned char unlockedDungeons[18]; unsigned char unlockedGuildhests[10]; - unsigned char unlockedTrials[9]; // 5.35 trial:pvp either 9:5 or 8:6 not confirmed - unsigned char unlockedPvp[5]; + /* + at least 8 bytes at most 10 bytes in unlockedTrials not confirmed, adjust unlockedPvp so they share a total of 15 bytes and sync with clearedTrials/clearedPvp. + */ + unsigned char unlockedTrials[9]; + unsigned char unlockedPvp[6]; + //== unsigned char clearedRaids[28]; unsigned char clearedDungeons[18]; unsigned char clearedGuildhests[10]; unsigned char clearedTrials[9]; - unsigned char clearedPvp[5]; + unsigned char clearedPvp[6]; /* unsigned short fishingRecordsFishWeight[26]; unsigned int exploratoryMissionNextTimestamp; unsigned char pvpLevel; */ - unsigned char padding2[8]; + unsigned char unknown5_55d[9]; //== }; @@ -1439,6 +1439,20 @@ namespace Sapphire::Network::Packets::Server uint8_t unknown[8]; }; + struct FFXIVIpcEventPlay16 : FFXIVIpcBasePacket< EventPlay16 > + { + uint64_t actorId; + uint32_t eventId; + uint16_t scene; + uint16_t padding; + uint32_t flags; + uint32_t param3; + uint8_t paramSize; + uint8_t padding1[3]; + uint32_t param[16]; + uint32_t padding2; + }; + template< int ArgCount > struct FFXIVIpcEventPlayN { @@ -1835,7 +1849,7 @@ namespace Sapphire::Network::Packets::Server uint32_t bNPCName; uint32_t textId; uint32_t popupTimeMs; - uint32_t pad3[4]; + uint32_t param[6]; }; @@ -1847,7 +1861,7 @@ namespace Sapphire::Network::Packets::Server struct FFXIVIpcPerformNote : FFXIVIpcBasePacket< PerformNote > { - uint8_t data[32]; + uint8_t data[16]; }; struct FFXIVIpcHousingUpdateLandFlagsSlot : FFXIVIpcBasePacket< HousingUpdateLandFlagsSlot > @@ -2238,6 +2252,97 @@ namespace Sapphire::Network::Packets::Server char memberName[32]; uint8_t padding[3]; }; + + struct FFXIVIpcEventContinue : FFXIVIpcBasePacket< EventContinue > + { + uint32_t eventId; + uint16_t scene; + uint16_t unknown; + uint64_t unknown2; + }; + + struct FFXIVDirectorUnk4 : FFXIVIpcBasePacket< SomeDirectorUnk4 > + { + uint32_t param[4]; + uint64_t unknown; + }; + + struct FFXIVCeremonySetActorAppearance : FFXIVIpcBasePacket< CeremonySetActorAppearance > + { + uint8_t u1; + uint8_t questBL; + uint16_t padding1; + uint32_t u3; + struct + { + uint64_t mainWeaponModel; + uint64_t secWeaponModel; + uint64_t craftToolModel; + uint32_t c_u6; + uint32_t c_u7; + uint32_t charId; + uint16_t u4; + uint16_t guardianDeity; + uint32_t u5; + uint32_t models[10]; + uint8_t look[26]; + uint16_t padding3; + } actors[2]; + }; + + //For quests this is only used for pre-accepted ones. Accepted quests are getting handled by the client. + template< int ArgCount > + struct FFXIVIpcMapUpdateN + { + uint8_t entryCount; + uint8_t padding[ 3 ]; + uint32_t iconIds[ ArgCount ]; + uint32_t levelIds[ ArgCount ]; + uint32_t eventIds[ ArgCount ]; // possible event ids for this: Quest, GuildLeveAssignment, GuildOrderGuide, TripleTriad, CustomTalk, PreHandler + uint8_t additionalData[ ArgCount ]; // use unknown + }; + + struct FFXIVIpcMapUpdate : + FFXIVIpcBasePacket< MapUpdate >, + FFXIVIpcMapUpdateN< 2 > + { + }; + + struct FFXIVIpcMapUpdate4 : + FFXIVIpcBasePacket< MapUpdate4 >, + FFXIVIpcMapUpdateN< 4 > + { + }; + + struct FFXIVIpcMapUpdate8 : + FFXIVIpcBasePacket< MapUpdate8 >, + FFXIVIpcMapUpdateN< 8 > + { + }; + + struct FFXIVIpcMapUpdate16 : + FFXIVIpcBasePacket< MapUpdate16 >, + FFXIVIpcMapUpdateN< 16 > + { + }; + + struct FFXIVIpcMapUpdate32 : + FFXIVIpcBasePacket< MapUpdate32 >, + FFXIVIpcMapUpdateN< 32 > + { + }; + + struct FFXIVIpcMapUpdate64 : + FFXIVIpcBasePacket< MapUpdate64 >, + FFXIVIpcMapUpdateN< 64 > + { + }; + + struct FFXIVIpcMapUpdate128 : + FFXIVIpcBasePacket< MapUpdate128 >, + FFXIVIpcMapUpdateN< 128 > + { + }; } #endif /*_CORE_NETWORK_PACKETS_SERVER_IPC_H*/ diff --git a/src/common/Util/Util.cpp b/src/common/Util/Util.cpp index 2be5d946..5aa64bf6 100644 --- a/src/common/Util/Util.cpp +++ b/src/common/Util/Util.cpp @@ -129,7 +129,7 @@ uint32_t Util::getTimeSeconds() uint64_t Util::getEorzeanTimeStamp() { - return static_cast< uint64_t >( getTimeSeconds() * 20.571428571428573f ); + return static_cast< uint64_t >( getTimeSeconds() * 20.571428571428573 ); } void Util::valueToFlagByteIndexValue( uint32_t inVal, uint8_t& outVal, uint16_t& outIndex ) diff --git a/src/common/Util/UtilMath.cpp b/src/common/Util/UtilMath.cpp index ae61e171..d81a2f62 100644 --- a/src/common/Util/UtilMath.cpp +++ b/src/common/Util/UtilMath.cpp @@ -76,4 +76,9 @@ uint16_t Util::floatToUInt16Rot( float val ) uint8_t Util::floatToUInt8Rot( float val ) { return static_cast< uint8_t >( 0x80 * ( ( val + PI ) ) / PI ); +} + +float Util::floatFromUInt16Rot( uint16_t rot ) +{ + return rot / 32768.0f * PI - PI; } \ No newline at end of file diff --git a/src/common/Util/UtilMath.h b/src/common/Util/UtilMath.h index c35ef6be..1168d71b 100644 --- a/src/common/Util/UtilMath.h +++ b/src/common/Util/UtilMath.h @@ -25,6 +25,8 @@ namespace Sapphire::Common::Util uint16_t floatToUInt16Rot( float val ); + float floatFromUInt16Rot( uint16_t rot ); + uint8_t floatToUInt8Rot( float val ); template < typename T > diff --git a/src/lobby/GameConnection.cpp b/src/lobby/GameConnection.cpp index 6bc2e174..b7156cd4 100644 --- a/src/lobby/GameConnection.cpp +++ b/src/lobby/GameConnection.cpp @@ -452,8 +452,8 @@ void Lobby::GameConnection::generateEncryptionKey( uint32_t key, const std::stri m_baseKey[ 2 ] = 0x34; m_baseKey[ 3 ] = 0x12; memcpy( m_baseKey + 0x04, &key, 4 ); - m_baseKey[ 8 ] = 0x88; - m_baseKey[ 9 ] = 0x13; + m_baseKey[ 8 ] = 0x18; + m_baseKey[ 9 ] = 0x15; memcpy( ( char* ) m_baseKey + 0x0C, keyPhrase.c_str(), keyPhrase.size() ); Common::Util::md5( m_baseKey, m_encKey, 0x2C ); } diff --git a/src/scripts/common/CmnDefCutSceneReplay.cpp b/src/scripts/common/CmnDefCutSceneReplay.cpp index 2ccfab69..11c9b80b 100644 --- a/src/scripts/common/CmnDefCutSceneReplay.cpp +++ b/src/scripts/common/CmnDefCutSceneReplay.cpp @@ -32,7 +32,7 @@ public: // todo: this is fucked }; - player.playScene( getId(), 1, 0xFB2EC8F8, 0, 1, returnScene, callback ); + player.playScene( getId(), 1, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 1, returnScene, callback ); } void onTalk( uint32_t eventId, Entity::Player& player, uint64_t actorId ) override diff --git a/src/scripts/common/eobj/HousingEstateEntrance.cpp b/src/scripts/common/eobj/HousingEstateEntrance.cpp index 2abc371b..bb280288 100644 --- a/src/scripts/common/eobj/HousingEstateEntrance.cpp +++ b/src/scripts/common/eobj/HousingEstateEntrance.cpp @@ -78,7 +78,7 @@ public: return; } - player.setInstance( internalZone, pos ); + player.setInstance( internalZone, pos, player.getRot() ); } ); } }; diff --git a/src/scripts/quest/subquest/gridania/SubFst041.cpp b/src/scripts/quest/subquest/gridania/SubFst041.cpp index 4cede8e6..a96a19bc 100644 --- a/src/scripts/quest/subquest/gridania/SubFst041.cpp +++ b/src/scripts/quest/subquest/gridania/SubFst041.cpp @@ -132,7 +132,7 @@ private: { if( result.param2 == 1 ) { - if( player.giveQuestRewards( getId(), 0 ) ) + if( player.giveQuestRewards( getId(), result.param3 ) ) { player.setQuestUI8BH( getId(), 0 ); player.finishQuest( getId() ); diff --git a/src/tools/discovery_parser/main.cpp b/src/tools/discovery_parser/main.cpp index 34a4b6d8..cfc427d9 100644 --- a/src/tools/discovery_parser/main.cpp +++ b/src/tools/discovery_parser/main.cpp @@ -162,12 +162,12 @@ std::string zoneNameToPath( const std::string& name ) auto teriPath = std::get< std::string >( fields.at( static_cast< size_t >( TerritoryTypeExdIndexes::Path ) ) ); ZoneInfo info; - info.id = row.first; + info.id = row.first.rowId; info.path = teriPath; info.name = teriName; info.mapId = std::get< uint16_t >( fields.at( static_cast< size_t >( TerritoryTypeExdIndexes::Map ) ) ); - zoneInfoMap[ row.first ] = info; + zoneInfoMap[ row.first.rowId ] = info; if( !found && ( Common::Util::toLowerCopy( name ) == Common::Util::toLowerCopy( teriName ) ) ) { @@ -212,7 +212,7 @@ void loadEobjNames() static auto exd = static_cast< xiv::exd::Exd >( cat.get_data_ln( xiv::exd::Language::en ) ); for( auto& row : exd.get_rows() ) { - auto id = row.first; + auto id = row.first.rowId; auto& fields = row.second; auto name = std::get< std::string >( fields.at( 0 ) ); eobjNameMap[ id ] = name; diff --git a/src/tools/exd_common_gen/main.cpp b/src/tools/exd_common_gen/main.cpp index 768b53c4..0f88b8a9 100644 --- a/src/tools/exd_common_gen/main.cpp +++ b/src/tools/exd_common_gen/main.cpp @@ -42,7 +42,7 @@ std::string generateEnum( const std::string& exd, int8_t nameIndex, const std::s for( auto row : rows ) { auto& fields = row.second; - uint32_t id = row.first; + uint32_t id = row.first.rowId; std::string value; try diff --git a/src/tools/exd_struct_gen/ExdData.cpp.tmpl b/src/tools/exd_struct_gen/ExdData.cpp.tmpl index 77d1398f..43ff75e4 100644 --- a/src/tools/exd_struct_gen/ExdData.cpp.tmpl +++ b/src/tools/exd_struct_gen/ExdData.cpp.tmpl @@ -23,7 +23,7 @@ void Sapphire::Data::ExdDataGenerated::loadIdList( xiv::exd::Exd& data, std::set for( auto row : pDataRows ) { - uint32_t id = row.first; + uint32_t id = row.first.rowId; outIdList.insert( id ); } } diff --git a/src/tools/nav_export/main.cpp b/src/tools/nav_export/main.cpp index c42f8c17..5f5a5b32 100644 --- a/src/tools/nav_export/main.cpp +++ b/src/tools/nav_export/main.cpp @@ -89,7 +89,7 @@ std::string getEobjSgbPath( uint32_t eobjId ) for( auto& row : exportedSgExd.get_rows() ) { - auto id = row.first; + auto id = row.first.rowId; auto& fields = row.second; auto path = std::get< std::string >( fields.at( 0 ) ); @@ -100,7 +100,7 @@ std::string getEobjSgbPath( uint32_t eobjId ) for( auto& row : eObjExd.get_rows() ) { - auto id = row.first; + auto id = row.first.rowId; auto& fields = row.second; eobjSgbPaths[id] = std::get< uint16_t >( fields.at( 11 ) ); @@ -127,9 +127,9 @@ std::string zoneNameToPath( const std::string& name ) { path = teriPath; found = true; - zoneId = row.first; + zoneId = row.first.rowId; } - zoneNameMap[ row.first ] = teriName; + zoneNameMap[ row.first.rowId ] = teriName; } if( found ) diff --git a/src/tools/pcb_reader/main.cpp b/src/tools/pcb_reader/main.cpp index e34c33f6..29ce3eb3 100644 --- a/src/tools/pcb_reader/main.cpp +++ b/src/tools/pcb_reader/main.cpp @@ -91,7 +91,7 @@ std::string getEobjSgbPath( uint32_t eobjId ) for( auto& row : exportedSgExd.get_rows() ) { - auto id = row.first; + auto id = row.first.rowId; auto& fields = row.second; auto path = std::get< std::string >( fields.at( 0 ) ); @@ -102,7 +102,7 @@ std::string getEobjSgbPath( uint32_t eobjId ) for( auto& row : eObjExd.get_rows() ) { - auto id = row.first; + auto id = row.first.rowId; auto& fields = row.second; eobjSgbPaths[id] = std::get< uint16_t >( fields.at( 11 ) ); @@ -129,9 +129,9 @@ std::string zoneNameToPath( const std::string& name ) { path = teriPath; found = true; - zoneId = row.first; + zoneId = row.first.rowId; } - zoneNameMap[ row.first ] = teriName; + zoneNameMap[ row.first.rowId ] = teriName; } if( found ) diff --git a/src/world/Actor/Actor.cpp b/src/world/Actor/Actor.cpp index efaf0e51..43ba0900 100644 --- a/src/world/Actor/Actor.cpp +++ b/src/world/Actor/Actor.cpp @@ -351,7 +351,7 @@ Sapphire::InstanceContentPtr Sapphire::Entity::Actor::getCurrentInstance() const return nullptr; } -/*! \return QuestBattlePtr to the current instance, nullptr if not an instance or not set */ +/*! \return QuestBattlePtr to the current instance, nullptr if not a quest battle or not set */ Sapphire::QuestBattlePtr Sapphire::Entity::Actor::getCurrentQuestBattle() const { if( m_pCurrentTerritory ) @@ -360,6 +360,15 @@ Sapphire::QuestBattlePtr Sapphire::Entity::Actor::getCurrentQuestBattle() const return nullptr; } +/*! \return PublicContentPtr to the current instance, nullptr if not a public content or not set */ +Sapphire::PublicContentPtr Sapphire::Entity::Actor::getCurrentPublicContent() const +{ + if( m_pCurrentTerritory ) + return m_pCurrentTerritory->getAsPublicContent(); + + return nullptr; +} + /*! Get the current cell of a region the actor is in diff --git a/src/world/Actor/Actor.h b/src/world/Actor/Actor.h index 80bd066e..cf8f7479 100644 --- a/src/world/Actor/Actor.h +++ b/src/world/Actor/Actor.h @@ -130,6 +130,8 @@ namespace Sapphire::Entity QuestBattlePtr getCurrentQuestBattle() const; + PublicContentPtr getCurrentPublicContent() const; + // get the current cell of a region the actor is in Cell* getCellPtr(); diff --git a/src/world/Actor/EventObject.h b/src/world/Actor/EventObject.h index f2ae6d05..c497bf1f 100644 --- a/src/world/Actor/EventObject.h +++ b/src/world/Actor/EventObject.h @@ -13,7 +13,7 @@ namespace Sapphire::Entity Common::FFXIVARR_POSITION3 pos, float rotation, const std::string& givenName = "none" ); using OnTalkEventHandler = std::function< void( Entity::Player&, Entity::EventObjectPtr, - TerritoryPtr, uint64_t ) >; + TerritoryPtr, uint32_t, uint64_t ) >; uint32_t getGimmickId() const; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index aa882b45..1ef07103 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -19,10 +19,13 @@ #include "Manager/HousingMgr.h" #include "Manager/TerritoryMgr.h" #include "Manager/RNGMgr.h" +#include "Manager/MapMgr.h" #include "Territory/Territory.h" #include "Territory/ZonePosition.h" #include "Territory/InstanceContent.h" +#include "Territory/QuestBattle.h" +#include "Territory/PublicContent.h" #include "Territory/InstanceObjectCache.h" #include "Territory/Land.h" @@ -81,7 +84,8 @@ Sapphire::Entity::Player::Player() : m_directorInitialized( false ), m_onEnterEventDone( false ), m_falling( false ), - m_pQueuedAction( nullptr ) + m_pQueuedAction( nullptr ), + m_cfNotifiedContent( 0 ) { m_id = 0; m_currentStance = Stance::Passive; @@ -239,13 +243,16 @@ uint64_t Sapphire::Entity::Player::getOnlineStatusMask() const return m_onlineStatus; } -void Sapphire::Entity::Player::prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime, uint16_t animation ) +void Sapphire::Entity::Player::prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime, uint16_t animation, uint8_t param4, uint8_t param7, uint8_t unknown ) { auto preparePacket = makeZonePacket< FFXIVIpcPrepareZoning >( getId() ); preparePacket->data().targetZone = targetZone; preparePacket->data().fadeOutTime = fadeOutTime; preparePacket->data().animation = animation; preparePacket->data().fadeOut = static_cast< uint8_t >( fadeOut ? 1 : 0 ); + preparePacket->data().param4 = param4; + preparePacket->data().param7 = param7; + preparePacket->data().unknown = unknown; queuePacket( preparePacket ); } @@ -468,7 +475,7 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance ) return teriMgr.movePlayer( instance, getAsPlayer() ); } -bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIVARR_POSITION3 pos ) +bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIVARR_POSITION3 pos, float rot ) { m_onEnterEventDone = false; if( !instance ) @@ -486,11 +493,17 @@ bool Sapphire::Entity::Player::setInstance( TerritoryPtr instance, Common::FFXIV m_prevTerritoryId = getTerritoryId(); } + m_pos = pos; + m_rot = rot; if( teriMgr.movePlayer( instance, getAsPlayer() ) ) { - m_pos = pos; return true; } + else + { + m_pos = m_prevPos; + m_rot= m_prevRot; + } return false; } @@ -499,8 +512,18 @@ bool Sapphire::Entity::Player::exitInstance() { auto& teriMgr = Common::Service< TerritoryMgr >::ref(); - auto pZone = getCurrentTerritory(); - auto pInstance = pZone->getAsInstanceContent(); + auto d = getCurrentTerritory()->getAsDirector(); + if( d && d->getContentFinderConditionId() > 0 ) + { + auto p = makeZonePacket< FFXIVDirectorUnk4 >( getId() ); + p->data().param[0] = d->getDirectorId(); + p->data().param[1] = 1534; + p->data().param[2] = 1; + p->data().param[3] = d->getContentFinderConditionId(); + queuePacket( p ); + + prepareZoning( 0, 1, 1, 0, 0, 1, 9 ); + } resetHp(); resetMp(); @@ -708,7 +731,7 @@ void Sapphire::Entity::Player::learnSong( uint8_t songId, uint32_t itemId ) queuePacket( makeActorControlSelf( getId(), ToggleOrchestrionUnlock, songId, 1, itemId ) ); } -bool Sapphire::Entity::Player::isActionLearned( uint8_t actionId ) const +bool Sapphire::Entity::Player::isActionLearned( uint32_t actionId ) const { uint16_t index; uint8_t value; @@ -1264,6 +1287,17 @@ const uint8_t* Sapphire::Entity::Player::getMountGuideBitmask() const return m_mountGuide; } +const bool Sapphire::Entity::Player::hasMount( uint32_t mountId ) const +{ + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto mount = exdData.get< Data::Mount >( mountId ); + + if( mount->order == -1 || mount->modelChara == 0 ) + return false; + + return m_mountGuide[ mount->order / 8 ] & ( 1 << ( mount->order % 8 ) ); +} + uint64_t Sapphire::Entity::Player::getContentId() const { return m_contentId; @@ -1591,7 +1625,7 @@ uint16_t Sapphire::Entity::Player::getCurrentCompanion() const return m_companionId; } -uint8_t Sapphire::Entity::Player::getCurrentMount() const +uint16_t Sapphire::Entity::Player::getCurrentMount() const { return m_mount; } @@ -1751,14 +1785,14 @@ void Sapphire::Entity::Player::sendZonePackets() //setStateFlag( PlayerStateFlag::BetweenAreas ); //setStateFlag( PlayerStateFlag::BetweenAreas1 ); - if( isActionLearned( static_cast< uint8_t >( Common::UnlockEntry::HuntingLog ) ) ) - sendHuntingLog(); - sendStats(); // only initialize the UI if the player in fact just logged in. if( isLogin() ) { + if( isActionLearned( static_cast< uint8_t >( Common::UnlockEntry::HuntingLog ) ) ) + sendHuntingLog(); + auto contentFinderList = makeZonePacket< FFXIVIpcCFAvailableContents >( getId() ); for( auto i = 0; i < sizeof( contentFinderList->data().contents ); i++ ) @@ -1808,6 +1842,12 @@ void Sapphire::Entity::Player::sendZonePackets() initZonePacket->data().pos.x = getPos().x; initZonePacket->data().pos.y = getPos().y; initZonePacket->data().pos.z = getPos().z; + if( auto d = getCurrentTerritory()->getAsDirector() ) + { + initZonePacket->data().contentfinderConditionId = d->getContentFinderConditionId(); + initZonePacket->data().bitmask = 0xFF; + initZonePacket->data().bitmask1 = 0x2A; + } queuePacket( initZonePacket ); getCurrentTerritory()->onPlayerZoneIn( *this ); @@ -1862,6 +1902,8 @@ Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = setZoningType( Common::ZoneingType::None ); unsetStateFlag( PlayerStateFlag::BetweenAreas ); + + Common::Service< MapMgr >::ref().updateAll( *this ); } void Sapphire::Entity::Player::finishZoning() diff --git a/src/world/Actor/Player.h b/src/world/Actor/Player.h index 41565b32..d5cfcce6 100644 --- a/src/world/Actor/Player.h +++ b/src/world/Actor/Player.h @@ -111,6 +111,8 @@ namespace Sapphire::Entity void playSceneChain( uint32_t eventId, uint32_t scene, uint32_t flags, Event::EventHandler::SceneChainCallback sceneChainCallback ); + void playScene16( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t param3, std::vector< uint32_t > paramList, Event::EventHandler::SceneReturnCallback eventReturnCallback ); + /*! setup the event and return a ptr to it */ Event::EventHandlerPtr bootstrapSceneEvent( uint32_t eventId, uint32_t flags ); @@ -192,6 +194,8 @@ namespace Sapphire::Entity /*! remove a given quest */ void removeQuest( uint16_t questId ); + bool isQuestCompleted( uint16_t questId ); + /*! add a quest to the completed quests mask */ void updateQuestsCompleted( uint32_t questId ); @@ -490,7 +494,7 @@ namespace Sapphire::Entity bool setInstance( TerritoryPtr instance ); /*! sets the players instance & initiates zoning process */ - bool setInstance( Sapphire::TerritoryPtr instance, Sapphire::Common::FFXIVARR_POSITION3 pos ); + bool setInstance( Sapphire::TerritoryPtr instance, Sapphire::Common::FFXIVARR_POSITION3 pos, float rot ); /*! returns the player to their position before zoning into an instance */ bool exitInstance(); @@ -547,7 +551,7 @@ namespace Sapphire::Entity void dyeItemFromDyeingInfo(); /*! prepares zoning / fades out the screen */ - void prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime = 0, uint16_t animation = 0 ); + void prepareZoning( uint16_t targetZone, bool fadeOut, uint8_t fadeOutTime = 0, uint16_t animation = 0, uint8_t param4 = 0, uint8_t param7 = 0, uint8_t unknown = 0 ); /*! get player's title list (available titles) */ uint8_t* getTitleList(); @@ -584,7 +588,7 @@ namespace Sapphire::Entity uint16_t getCurrentCompanion() const; /*! get the current mount */ - uint8_t getCurrentMount() const; + uint16_t getCurrentMount() const; /*! set current persistent emote */ void setPersistentEmote( uint32_t emoteId ); @@ -642,7 +646,7 @@ namespace Sapphire::Entity void learnSong( uint8_t songId, uint32_t itemId ); /*! check if an action is already unlocked in the bitmask. */ - bool isActionLearned( uint8_t actionId ) const; + bool isActionLearned( uint32_t actionId ) const; /*! return a const pointer to the unlock bitmask array */ const uint8_t* getUnlockBitmask() const; @@ -653,6 +657,8 @@ namespace Sapphire::Entity /*! return a const pointer to the mount guide bitmask array */ const uint8_t* getMountGuideBitmask() const; + const bool hasMount( uint32_t mountId ) const; + bool checkAction() override; bool hasQueuedAction() const; @@ -942,12 +948,13 @@ namespace Sapphire::Entity ItemPtr getItemAt( uint16_t containerId, uint8_t slotId ); - bool updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem ); + bool updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem, bool writeToDb = true ); /*! calculate and return player ilvl based off equipped gear */ uint16_t calculateEquippedGearItemLevel(); ItemPtr getEquippedWeapon(); + ItemPtr getEquippedSecondaryWeapon(); /*! return the current amount of currency of type */ uint32_t getCurrency( Common::CurrencyType type ); @@ -992,6 +999,8 @@ namespace Sapphire::Entity ////////////////////////////////////////////////////////////////////////////////////////////////////// + void setPosAndNotifyClient( float x, float y, float z, float rot ); + Common::HuntingLogEntry& getHuntingLogEntry( uint8_t index ); void sendHuntingLog(); @@ -1005,6 +1014,7 @@ namespace Sapphire::Entity uint64_t m_lastMoveTime; uint8_t m_lastMoveflag; bool m_falling; + uint16_t m_cfNotifiedContent; std::vector< ShopBuyBackEntry >& getBuyBackListForShop( uint32_t shopId ); void addBuyBackItemForShop( uint32_t shopId, const ShopBuyBackEntry& entry ); @@ -1067,8 +1077,8 @@ namespace Sapphire::Entity uint16_t m_activeTitle; uint8_t m_titleList[48]; uint8_t m_howTo[34]; - uint8_t m_minions[40]; - uint8_t m_mountGuide[22]; + uint8_t m_minions[55]; + uint8_t m_mountGuide[29]; uint8_t m_homePoint; uint8_t m_startTown; uint16_t m_townWarpFstFlags; @@ -1076,8 +1086,8 @@ namespace Sapphire::Entity uint8_t m_discovery[445]; uint32_t m_playTime; - uint16_t m_classArray[28]; - uint32_t m_expArray[28]; + uint16_t m_classArray[ Common::CLASSJOB_SLOTS ]; + uint32_t m_expArray[ Common::CLASSJOB_SLOTS ]; uint8_t m_aetheryte[21]; uint8_t m_unlocks[64]; uint8_t m_orchestrion[40]; diff --git a/src/world/Actor/PlayerEvent.cpp b/src/world/Actor/PlayerEvent.cpp index 12f8c626..eb9659e0 100644 --- a/src/world/Actor/PlayerEvent.cpp +++ b/src/world/Actor/PlayerEvent.cpp @@ -323,6 +323,33 @@ void Sapphire::Entity::Player::eventFinish( uint32_t eventId, uint32_t freePlaye unsetStateFlag( PlayerStateFlag::InNpcEvent ); } +void Sapphire::Entity::Player::playScene16( uint32_t eventId, uint32_t scene, uint32_t flags, uint32_t param3, std::vector< uint32_t > paramList, Event::EventHandler::SceneReturnCallback eventReturnCallback ) +{ + auto pEvent = bootstrapSceneEvent( eventId, flags ); + if( !pEvent ) + return; + + pEvent->setPlayedScene( true ); + pEvent->setEventReturnCallback( eventReturnCallback ); + pEvent->setSceneChainCallback( nullptr ); + auto eventPlay16 = makeZonePacket< FFXIVIpcEventPlay16 >( getId() ); + eventPlay16->data().actorId = pEvent->getActorId(); + eventPlay16->data().eventId = pEvent->getId(); + eventPlay16->data().scene = scene; + eventPlay16->data().flags = flags; + eventPlay16->data().param3 = param3; + eventPlay16->data().paramSize = paramList.size(); + int i = 0; + for( auto p : paramList ) + { + assert( i < 16 ); + eventPlay16->data().param[ i ] = paramList.at( i ); + i++; + } + + queuePacket( eventPlay16 ); +} + void Sapphire::Entity::Player::eventActionStart( uint32_t eventId, uint32_t action, World::Action::ActionCallback finishCallback, diff --git a/src/world/Actor/PlayerInventory.cpp b/src/world/Actor/PlayerInventory.cpp index f94d0237..5ead207c 100644 --- a/src/world/Actor/PlayerInventory.cpp +++ b/src/world/Actor/PlayerInventory.cpp @@ -580,9 +580,9 @@ Sapphire::ItemPtr Sapphire::Entity::Player::addItem( ItemPtr itemToAdd, bool sil bool foundFreeSlot = false; std::vector< uint16_t > bags = { Bag0, Bag1, Bag2, Bag3 }; - + sendDebug( "adding item: {}, equipSlotCategory: {}, stackSize: {}", itemToAdd->getId(), itemInfo->equipSlotCategory, itemInfo->stackSize ); // add the related armoury bag to the applicable bags and try and fill a free slot there before falling back to regular inventory - if( itemInfo->isEquippable && getEquipDisplayFlags() & StoreNewItemsInArmouryChest ) + if( itemInfo->equipSlotCategory > 0 && getEquipDisplayFlags() & StoreNewItemsInArmouryChest ) { auto bag = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( static_cast< Common::EquipSlotCategory >( itemInfo->equipSlotCategory ) ); @@ -601,7 +601,7 @@ Sapphire::ItemPtr Sapphire::Entity::Player::addItem( ItemPtr itemToAdd, bool sil auto item = storage->getItem( slot ); // add any items that are stackable - if( canMerge && item && !itemInfo->isEquippable && item->getId() == itemToAdd->getId() ) + if( canMerge && item && item->getMaxStackSize() > 1 && item->getId() == itemToAdd->getId() ) { uint32_t count = item->getStackSize(); uint32_t maxStack = item->getMaxStackSize(); @@ -739,7 +739,7 @@ Sapphire::Entity::Player::moveItem( uint16_t fromInventoryId, uint8_t fromSlotId sendStatusEffectUpdate(); // send if any equip is changed } -bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem ) +bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slotId, ItemPtr pItem, bool writeToDb ) { auto containerType = World::Manager::ItemMgr::getContainerType( storageId ); @@ -752,7 +752,8 @@ bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slot case Bag: case CurrencyCrystal: { - writeInventory( static_cast< InventoryType >( storageId ) ); + if( writeToDb ) + writeInventory( static_cast< InventoryType >( storageId ) ); break; } @@ -767,7 +768,8 @@ bool Sapphire::Entity::Player::updateContainer( uint16_t storageId, uint8_t slot else unequipItem( static_cast< GearSetSlot >( slotId ), pItem, true ); - writeInventory( static_cast< InventoryType >( storageId ) ); + if( writeToDb ) + writeInventory( static_cast< InventoryType >( storageId ) ); break; } default: @@ -804,7 +806,7 @@ void Sapphire::Entity::Player::splitItem( uint16_t fromInventoryId, uint8_t from fromItem->setStackSize( fromItem->getStackSize() - itemCount ); - updateContainer( fromInventoryId, fromSlotId, fromItem ); + updateContainer( fromInventoryId, fromSlotId, fromItem, fromInventoryId != toInventoryId ); updateContainer( toInventoryId, toSlot, newItem ); updateItemDb( fromItem ); @@ -835,7 +837,7 @@ void Sapphire::Entity::Player::mergeItem( uint16_t fromInventoryId, uint8_t from { fromItem->setStackSize( stackOverflow ); updateItemDb( fromItem ); - updateContainer( fromInventoryId, fromSlotId, fromItem ); + updateContainer( fromInventoryId, fromSlotId, fromItem, fromInventoryId != toInventoryId ); } @@ -862,14 +864,16 @@ void Sapphire::Entity::Player::swapItem( uint16_t fromInventoryId, uint8_t fromS && !World::Manager::ItemMgr::isArmory( fromInventoryId ) ) { updateContainer( fromInventoryId, fromSlotId, nullptr ); - fromInventoryId = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( static_cast< Common::EquipSlotCategory >( toSlot ) ); + auto& exdData = Common::Service< Data::ExdDataGenerated >::ref(); + auto itemInfo = exdData.get< Sapphire::Data::Item >( toItem->getId() ); + fromInventoryId = World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( static_cast< Common::EquipSlotCategory >( itemInfo->equipSlotCategory ) ); fromSlotId = static_cast < uint8_t >( m_storageMap[ fromInventoryId ]->getFreeSlot() ); } auto containerTypeFrom = World::Manager::ItemMgr::getContainerType( fromInventoryId ); auto containerTypeTo = World::Manager::ItemMgr::getContainerType( toInventoryId ); - updateContainer( toInventoryId, toSlot, fromItem ); + updateContainer( toInventoryId, toSlot, fromItem, fromInventoryId != toInventoryId ); updateContainer( fromInventoryId, fromSlotId, toItem ); if( static_cast< InventoryType >( toInventoryId ) == GearSet0 || @@ -939,6 +943,11 @@ Sapphire::ItemPtr Sapphire::Entity::Player::getEquippedWeapon() return m_storageMap[ GearSet0 ]->getItem( GearSetSlot::MainHand ); } +Sapphire::ItemPtr Sapphire::Entity::Player::getEquippedSecondaryWeapon() +{ + return m_storageMap[ InventoryType::GearSet0 ]->getItem( GearSetSlot::OffHand ); +} + uint8_t Sapphire::Entity::Player::getFreeSlotsInBags() { uint8_t slots = 0; diff --git a/src/world/Actor/PlayerQuest.cpp b/src/world/Actor/PlayerQuest.cpp index 6eaafc91..7029c64e 100644 --- a/src/world/Actor/PlayerQuest.cpp +++ b/src/world/Actor/PlayerQuest.cpp @@ -7,6 +7,8 @@ #include "Network/GameConnection.h" #include "Network/PacketWrappers/QuestMessagePacket.h" +#include "Manager/MapMgr.h" + #include "Session.h" using namespace Sapphire::Common; @@ -17,8 +19,6 @@ void Sapphire::Entity::Player::finishQuest( uint16_t questId ) { int8_t idx = getQuestIndex( questId ); - removeQuest( questId ); - auto questFinishPacket = makeZonePacket< FFXIVIpcQuestFinish >( getId() ); questFinishPacket->data().questId = questId; questFinishPacket->data().flag1 = 1; @@ -26,6 +26,7 @@ void Sapphire::Entity::Player::finishQuest( uint16_t questId ) queuePacket( questFinishPacket ); updateQuestsCompleted( questId ); + removeQuest( questId ); //sendQuestTracker(); already sent in removeQuest() } @@ -33,7 +34,12 @@ void Sapphire::Entity::Player::finishQuest( uint16_t questId ) void Sapphire::Entity::Player::unfinishQuest( uint16_t questId ) { removeQuestsCompleted( questId ); - sendQuestInfo(); + + auto questFinishPacket = makeZonePacket< FFXIVIpcQuestFinish >( getId() ); + questFinishPacket->data().questId = questId; + questFinishPacket->data().flag1 = 0; + questFinishPacket->data().flag2 = 1; + queuePacket( questFinishPacket ); } void Sapphire::Entity::Player::removeQuest( uint16_t questId ) @@ -42,6 +48,11 @@ void Sapphire::Entity::Player::removeQuest( uint16_t questId ) if( ( idx != -1 ) && ( m_activeQuests[ idx ] != nullptr ) ) { + std::shared_ptr< QuestActive > pQuest = m_activeQuests[ idx ]; + m_activeQuests[ idx ].reset(); + + Common::Service< World::Manager::MapMgr >::ref().updateQuests( *this ); + auto questUpdatePacket = makeZonePacket< FFXIVIpcQuestUpdate >( getId() ); questUpdatePacket->data().slot = static_cast< uint8_t >( idx ); questUpdatePacket->data().questInfo.c.questId = 0; @@ -54,9 +65,6 @@ void Sapphire::Entity::Player::removeQuest( uint16_t questId ) m_questTracking[ ii ] = -1; } - std::shared_ptr< QuestActive > pQuest = m_activeQuests[ idx ]; - m_activeQuests[ idx ].reset(); - m_questIdToQuestIdx.erase( questId ); m_questIdxToQuestId.erase( idx ); @@ -916,6 +924,8 @@ void Sapphire::Entity::Player::updateQuest( uint16_t questId, uint8_t sequence ) m_questIdToQuestIdx[ questId ] = idx; m_questIdxToQuestId[ idx ] = questId; + Common::Service< World::Manager::MapMgr >::ref().updateQuests( *this ); + auto questUpdatePacket = makeZonePacket< FFXIVIpcQuestUpdate >( getId() ); questUpdatePacket->data().slot = idx; questUpdatePacket->data().questInfo = *pNewQuest; @@ -1013,6 +1023,11 @@ Sapphire::Entity::Player::sendQuestMessage( uint32_t questId, int8_t msgId, uint } +bool Sapphire::Entity::Player::isQuestCompleted( uint16_t questId ) +{ + return ( m_questCompleteFlags[ questId / 8 ] & ( 0x80 >> ( questId % 8 ) ) ); +} + void Sapphire::Entity::Player::updateQuestsCompleted( uint32_t questId ) { uint16_t index = questId / 8; @@ -1030,7 +1045,10 @@ void Sapphire::Entity::Player::removeQuestsCompleted( uint32_t questId ) uint8_t value = 0x80 >> bitIndex; - m_questCompleteFlags[ index ] ^= value; + if( m_questCompleteFlags[ index ] & value ) + m_questCompleteFlags[ index ] ^= value; + + Common::Service< World::Manager::MapMgr >::ref().updateQuests( *this ); } diff --git a/src/world/Actor/PlayerSql.cpp b/src/world/Actor/PlayerSql.cpp index 6c145cbb..1ec21bac 100644 --- a/src/world/Actor/PlayerSql.cpp +++ b/src/world/Actor/PlayerSql.cpp @@ -186,6 +186,9 @@ bool Sapphire::Entity::Player::load( uint32_t charId, World::SessionPtr pSession auto titleList = res->getBlobVector( "TitleList" ); memcpy( reinterpret_cast< char* >( m_titleList ), titleList.data(), titleList.size() ); + auto minions = res->getBlobVector( "Minions" ); + memcpy( reinterpret_cast< char* >( m_minions ), minions.data(), minions.size() ); + auto mountGuide = res->getBlobVector( "Mounts" ); memcpy( reinterpret_cast< char* >( m_mountGuide ), mountGuide.data(), mountGuide.size() ); diff --git a/src/world/Event/Director.cpp b/src/world/Event/Director.cpp index 864bf0e3..5bde5992 100644 --- a/src/world/Event/Director.cpp +++ b/src/world/Event/Director.cpp @@ -16,9 +16,10 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::Server; using namespace Sapphire::Network::ActorControl; -Sapphire::Event::Director::Director( Sapphire::Event::Director::DirectorType type, uint16_t contentId ) : +Sapphire::Event::Director::Director( Sapphire::Event::Director::DirectorType type, uint16_t contentId, uint16_t contentFinderConditionId ) : m_contentId( contentId ), m_type( type ), + m_contentFinderConditionId( contentFinderConditionId ), m_directorId( ( static_cast< uint32_t >( type ) << 16 ) | contentId ), m_sequence( 1 ), m_branch( 0 ), @@ -37,6 +38,11 @@ uint16_t Sapphire::Event::Director::getContentId() const return m_contentId; } +uint16_t Sapphire::Event::Director::getContentFinderConditionId() const +{ + return m_contentFinderConditionId; +} + uint8_t Sapphire::Event::Director::getSequence() const { return m_sequence; @@ -52,14 +58,18 @@ void Sapphire::Event::Director::sendDirectorVars( Sapphire::Entity::Player& play auto varPacket = makeZonePacket< FFXIVIpcDirectorVars >( player.getId() ); varPacket->data().m_directorId = getDirectorId(); varPacket->data().m_sequence = getSequence(); - varPacket->data().m_branch = 0; + varPacket->data().m_branch = getBranch(); memcpy( varPacket->data().m_unionData, m_unionData.arrData, sizeof( varPacket->data().m_unionData ) ); player.queuePacket( varPacket ); + player.sendDebug( "DirectorVar#{}: {:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:02X}{:02X} seq{}, b{}", getDirectorId(), + m_unionData.ui8.UI8A, m_unionData.ui8.UI8B, m_unionData.ui8.UI8C, m_unionData.ui8.UI8D, m_unionData.ui8.UI8E, + m_unionData.ui8.UI8F, m_unionData.ui8.UI8G, m_unionData.ui8.UI8H, m_unionData.ui8.UI8I, m_unionData.ui8.UI8J, + getSequence(), getBranch() ); } void Sapphire::Event::Director::sendDirectorInit( Sapphire::Entity::Player& player ) const { - Logger::debug( "DirectorID#{}, QuestBattleID#{}", m_directorId, m_contentId ); + Logger::debug( "DirectorID#{}, ContentId#{}, ContentFinderConditionId#{}", m_directorId, m_contentId, m_contentFinderConditionId ); player.queuePacket( makeActorControlSelf( player.getId(), DirectorInit, m_directorId, m_contentId ) ); } @@ -183,12 +193,12 @@ void Sapphire::Event::Director::setDirectorSequence( uint8_t value ) m_sequence = value; } -void Sapphire::Event::Director::setCustomVar( uint32_t varId, uint32_t value ) +void Sapphire::Event::Director::setCustomVar( uint32_t varId, uint64_t value ) { m_customVarMap[ varId ] = value; } -uint32_t Sapphire::Event::Director::getCustomVar( uint32_t varId ) +uint64_t Sapphire::Event::Director::getCustomVar( uint32_t varId ) { auto it = m_customVarMap.find( varId ); if( it != m_customVarMap.end() ) diff --git a/src/world/Event/Director.h b/src/world/Event/Director.h index 38970984..3bc9efaa 100644 --- a/src/world/Event/Director.h +++ b/src/world/Event/Director.h @@ -42,12 +42,14 @@ namespace Sapphire::Event DutyFailed }; - Director( DirectorType type, uint16_t contentId ); + Director( DirectorType type, uint16_t contentId, uint16_t contentFinderConditionId = 0 ); uint32_t getDirectorId() const; uint16_t getContentId() const; + uint16_t getContentFinderConditionId() const; + DirectorType getType() const; uint8_t getSequence() const; @@ -104,8 +106,8 @@ namespace Sapphire::Event void setDirectorBranch( uint8_t value ); - void setCustomVar( uint32_t varId, uint32_t value ); - uint32_t getCustomVar( uint32_t varId ); + void setCustomVar( uint32_t varId, uint64_t value ); + uint64_t getCustomVar( uint32_t varId ); private: /*! Id of the content of the director */ @@ -114,6 +116,8 @@ namespace Sapphire::Event /*! DirectorType | ContentId */ uint32_t m_directorId; + uint16_t m_contentFinderConditionId; + /*! currect sequence */ uint8_t m_sequence; @@ -183,7 +187,7 @@ namespace Sapphire::Event uint32_t m_elapsedTime; - std::unordered_map< uint32_t, uint32_t > m_customVarMap; + std::unordered_map< uint32_t, uint64_t > m_customVarMap; }; diff --git a/src/world/Event/EventHandler.h b/src/world/Event/EventHandler.h index 9bec90a4..0990ec87 100644 --- a/src/world/Event/EventHandler.h +++ b/src/world/Event/EventHandler.h @@ -78,10 +78,20 @@ namespace Sapphire::Event FcTalk = 0x001F, Adventure = 0x0021, DailyQuestSupply = 0x0022, + TripleTriad = 0x0023, + PreHandler = 0x0036, ICDirector = 0x8003, + PublicContentDirector = 0x8004, QuestBattleDirector = 0x8006, }; + enum class QuestAvailability : uint8_t + { + Invisible, + Available, + Locked + }; + using SceneReturnCallback = std::function< void( Entity::Player&, const SceneResult& ) >; using SceneChainCallback = std::function< void( Entity::Player& ) >; using EventFinishCallback = std::function< void( Entity::Player&, uint64_t ) >; diff --git a/src/world/ForwardsZone.h b/src/world/ForwardsZone.h index 13b6b489..4592c320 100644 --- a/src/world/ForwardsZone.h +++ b/src/world/ForwardsZone.h @@ -24,6 +24,7 @@ TYPE_FORWARD( HousingZone ); TYPE_FORWARD( House ); TYPE_FORWARD( InstanceContent ); TYPE_FORWARD( QuestBattle ); +TYPE_FORWARD( PublicContent ); TYPE_FORWARD( Item ); TYPE_FORWARD( ItemContainer ); TYPE_FORWARD( ZonePosition ); diff --git a/src/world/Inventory/ItemContainer.cpp b/src/world/Inventory/ItemContainer.cpp index 46bedfb5..ddbece5b 100644 --- a/src/world/Inventory/ItemContainer.cpp +++ b/src/world/Inventory/ItemContainer.cpp @@ -85,6 +85,9 @@ Sapphire::ItemPtr Sapphire::ItemContainer::getItem( uint8_t slotId ) Logger::error( "Slot out of range {0}", slotId ); return nullptr; } + + if( m_itemMap.find( slotId ) == m_itemMap.end() ) + return nullptr; return m_itemMap[ slotId ]; } @@ -92,7 +95,10 @@ Sapphire::ItemPtr Sapphire::ItemContainer::getItem( uint8_t slotId ) void Sapphire::ItemContainer::setItem( uint8_t slotId, ItemPtr pItem ) { if( slotId > m_size ) + { + Logger::error( "Slot out of range {0}", slotId ); return; + } m_itemMap[ slotId ] = pItem; } diff --git a/src/world/Manager/DebugCommandMgr.cpp b/src/world/Manager/DebugCommandMgr.cpp index 2fea49fa..5daafd7f 100644 --- a/src/world/Manager/DebugCommandMgr.cpp +++ b/src/world/Manager/DebugCommandMgr.cpp @@ -32,6 +32,7 @@ #include "Territory/HousingZone.h" #include "Territory/InstanceContent.h" #include "Territory/QuestBattle.h" +#include "Territory/PublicContent.h" #include "Manager/TerritoryMgr.h" #include "Event/EventDefs.h" @@ -60,6 +61,8 @@ Sapphire::World::Manager::DebugCommandMgr::DebugCommandMgr() registerCommand( "script", &DebugCommandMgr::script, "Server script utilities.", 1 ); registerCommand( "instance", &DebugCommandMgr::instance, "Instance utilities", 1 ); registerCommand( "questbattle", &DebugCommandMgr::questBattle, "Quest battle utilities", 1 ); + registerCommand( "pc", &DebugCommandMgr::pc, "Public content utilities", 1 ); + registerCommand( "publiccontent", &DebugCommandMgr::pc, "Public content utilities", 1 ); registerCommand( "qb", &DebugCommandMgr::questBattle, "Quest battle utilities", 1 ); registerCommand( "housing", &DebugCommandMgr::housing, "Housing utilities", 1 ); } @@ -226,22 +229,14 @@ void Sapphire::World::Manager::DebugCommandMgr::set( char* data, Entity::Player& if( player.getLevelForClass( static_cast< Common::ClassJob > ( id ) ) == 0 ) { player.setLevelForClass( 1, static_cast< Common::ClassJob > ( id ) ); - player.setClassJob( static_cast< Common::ClassJob > ( id ) ); - player.sendModel(); - player.sendItemLevel(); - player.calculateStats(); - player.sendStats(); - player.sendStatusEffectUpdate(); - player.sendStatusUpdate(); } - else - player.setClassJob( static_cast< Common::ClassJob > ( id ) ); - player.sendModel(); - player.sendItemLevel(); - player.calculateStats(); - player.sendStats(); - player.sendStatusEffectUpdate(); - player.sendStatusUpdate(); + player.setClassJob( static_cast< Common::ClassJob > ( id ) ); + player.sendModel(); + player.sendItemLevel(); + player.calculateStats(); + player.sendStats(); + player.sendStatusEffectUpdate(); + player.sendStatusUpdate(); } else if( subCommand == "cfpenalty" ) { @@ -591,9 +586,23 @@ void Sapphire::World::Manager::DebugCommandMgr::get( char* data, Entity::Player& int16_t map_id = exdData.get< Sapphire::Data::TerritoryType >( player.getCurrentTerritory()->getTerritoryTypeId() )->map; - player.sendNotice( "Pos:\n {0}\n {1}\n {2}\n {3}\n MapId: {4}\n ZoneId:{5}", + player.sendNotice( "Pos: x: {0}, y: {1}, z: {2}, r: {3}\n MapId: {4}, ZoneId:{5}, Weather:{6}, Festival:{7}, {8}", player.getPos().x, player.getPos().y, player.getPos().z, - player.getRot(), map_id, player.getCurrentTerritory()->getTerritoryTypeId() ); + player.getRot(), map_id, player.getCurrentTerritory()->getTerritoryTypeId(), + static_cast< uint8_t >( player.getCurrentTerritory()->getCurrentWeather() ), player.getCurrentTerritory()->getCurrentFestival().first, + player.getCurrentTerritory()->getCurrentFestival().second ); + if( auto instance = player.getCurrentInstance() ) + { + player.sendNotice( "Instance info:\nContentId: {}, DirectorId: {}\nSequence: {}, Branch: {}, BGM: {}", + instance->getInstanceContentId(), instance->getDirectorId(), instance->getSequence(), + instance->getBranch(), instance->getCurrentBGM() ); + } + else if( auto instance = player.getCurrentPublicContent() ) + { + player.sendNotice( "Public content info:\nContentId: {}, DirectorId: {}\nSequence: {}, Branch: {}", + instance->getContentId(), instance->getDirectorId(), instance->getSequence(), + instance->getBranch() ); + } } else { @@ -1290,3 +1299,137 @@ void Sapphire::World::Manager::DebugCommandMgr::housing( char* data, Entity::Pla player.sendDebug( "Unknown sub command." ); } } + +void Sapphire::World::Manager::DebugCommandMgr::pc( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ) +{ + auto& terriMgr = Common::Service< TerritoryMgr >::ref(); + std::string cmd( data ), params, subCommand; + auto cmdPos = cmd.find_first_of( ' ' ); + + if( cmdPos != std::string::npos ) + { + params = cmd.substr( cmdPos + 1 ); + + auto p = params.find_first_of( ' ' ); + + if( p != std::string::npos ) + { + subCommand = params.substr( 0, p ); + params = params.substr( subCommand.length() + 1 ); + } + else + subCommand = params; + } + + if( subCommand == "create" || subCommand == "cr" ) + { + uint32_t contentFinderConditionId; + sscanf( params.c_str(), "%d", &contentFinderConditionId ); + + auto instance = terriMgr.createPublicContent( contentFinderConditionId ); + if( instance ) + player.sendDebug( "Created instance with id#{0} -> {1}", instance->getGuId(), instance->getName() ); + else + player.sendDebug( "Failed to create instance with id#{0}", contentFinderConditionId ); + } + else if ( subCommand == "create2" || subCommand == "cr2" ) + { + uint16_t contentId, terriId; + sscanf( params.c_str(), "%hu %hu", &contentId, &terriId ); + + auto instance = terriMgr.createPublicContent( contentId, terriId ); + if( instance ) + player.sendDebug( "Created instance with id#{0} -> {1}", instance->getGuId(), instance->getName() ); + else + player.sendDebug( "Failed to create instance with id#{0}, territory#{1}. Server console output may contain additional info.", contentId, terriId ); + } + else if( subCommand == "remove" || subCommand == "rm" ) + { + uint32_t terriId; + sscanf( params.c_str(), "%d", &terriId ); + + if( terriMgr.removeTerritoryInstance( terriId ) ) + player.sendDebug( "Removed instance with id#{0}", terriId ); + else + player.sendDebug( "Failed to remove instance with id#{0}", terriId ); + } + else if( subCommand == "return" || subCommand == "ret" ) + { + player.exitInstance(); + } + else if( subCommand == "set" ) + { + uint32_t index; + uint32_t value; + sscanf( params.c_str(), "%d %d", &index, &value ); + + + auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() ); + if( !instance ) + return; + + instance->setVar( static_cast< uint8_t >( index ), static_cast< uint8_t >( value ) ); + } + else if( subCommand == "seq" ) + { + uint8_t seq; + + sscanf( params.c_str(), "%hhu", &seq ); + + auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() ); + if( !instance ) + return; + + instance->setSequence( seq ); + } + else if( subCommand == "branch" ) + { + uint8_t branch; + + sscanf( params.c_str(), "%hhu", &branch ); + + auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() ); + if( !instance ) + return; + + instance->setBranch( branch ); + } + else if( subCommand == "objstate" ) + { + char objName[128]; + uint8_t state; + + sscanf( params.c_str(), "%s %hhu", objName, &state ); + + auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() ); + if( !instance ) + return; + + auto obj = instance->getEObjByName( objName ); + if( !obj ) + return; + + obj->setState( state ); + } + else if( subCommand == "objflag" ) + { + char objName[256]; + uint32_t state1; + uint32_t state2; + + sscanf( params.c_str(), "%s %i %i", objName, &state1, &state2 ); + + auto instance = std::dynamic_pointer_cast< PublicContent >( player.getCurrentTerritory() ); + if( !instance ) + return; + + auto obj = instance->getEObjByName( objName ); + if( !obj ) + { + player.sendDebug( "No eobj found." ); + return; + } + + obj->setAnimationFlag( state1, state2 ); + } +} diff --git a/src/world/Manager/DebugCommandMgr.h b/src/world/Manager/DebugCommandMgr.h index 25921312..2607f6ab 100644 --- a/src/world/Manager/DebugCommandMgr.h +++ b/src/world/Manager/DebugCommandMgr.h @@ -53,6 +53,7 @@ namespace Sapphire::World::Manager void instance( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ); void questBattle( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ); + void pc( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command ); void housing( char* data, Entity::Player& player, std::shared_ptr< DebugCommand > command) ; diff --git a/src/world/Manager/EventMgr.cpp b/src/world/Manager/EventMgr.cpp index 00505a41..bc417c11 100644 --- a/src/world/Manager/EventMgr.cpp +++ b/src/world/Manager/EventMgr.cpp @@ -74,6 +74,13 @@ std::string Sapphire::World::Manager::EventMgr::getEventName( uint32_t eventId ) name[ 0 ] = toupper( name[ 0 ] ); return name; } + case Event::EventHandler::EventHandlerType::PublicContentDirector: + { + auto pcInfo = exdData.get< Sapphire::Data::PublicContent >( eventId & 0x0000FFFF ); + if( !pcInfo ) + return "unknown"; + return pcInfo->name; + } case Event::EventHandler::EventHandlerType::Warp: diff --git a/src/world/Manager/HousingMgr.cpp b/src/world/Manager/HousingMgr.cpp index 9cd612bb..fd668fe2 100644 --- a/src/world/Manager/HousingMgr.cpp +++ b/src/world/Manager/HousingMgr.cpp @@ -662,6 +662,14 @@ void Sapphire::World::Manager::HousingMgr::createHouse( Sapphire::HousePtr house db.execute( stmt ); } +void Sapphire::World::Manager::HousingMgr::deleteHouse( Sapphire::HousePtr house ) const +{ + auto& db = Service< Db::DbWorkerPool< Db::ZoneDbConnection > >::ref(); + auto stmt = db.getPreparedStatement( Db::HOUSING_HOUSE_DEL ); + stmt->setUInt( 1, house->getId() ); + db.execute( stmt ); +} + void Sapphire::World::Manager::HousingMgr::buildPresetEstate( Entity::Player& player, uint8_t plotNum, uint32_t presetCatalogId ) { auto hZone = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() ); @@ -903,6 +911,8 @@ void Sapphire::World::Manager::HousingMgr::updateHouseModels( Sapphire::HousePtr { assert( house ); + house->clearModelCache(); + auto& containers = getEstateInventory( house->getLandIdent() ); auto extContainer = containers.find( static_cast< uint16_t >( InventoryType::HousingExteriorAppearance ) ); @@ -1627,3 +1637,122 @@ Sapphire::Inventory::HousingItemPtr Sapphire::World::Manager::HousingMgr::getHou return Inventory::make_HousingItem( tmpItem->getUId(), tmpItem->getId() ); } + +void Sapphire::World::Manager::HousingMgr::editAppearance( bool isInterior, Sapphire::Entity::Player& player, const Common::LandIdent landIdent, std::vector< uint16_t > containerList, std::vector< uint8_t> slotList, uint8_t removeFlag ) +{ + auto landSetId = toLandSetId( static_cast< uint16_t >( landIdent.territoryTypeId ), static_cast< uint8_t >( landIdent.wardNum ) ); + auto terri = getHousingZoneByLandSetId( landSetId ); + + auto land = terri->getLand( static_cast< uint8_t >( landIdent.landId ) ); + if( !land ) + return; + + if( !hasPermission( player, *land, 0 ) ) + return; + + auto& housingContainer = getEstateInventory( landIdent )[ isInterior ? InventoryType::HousingInteriorAppearance : InventoryType::HousingExteriorAppearance ]; + + auto& invMgr = Service< InventoryMgr >::ref(); + + for( int i = 0; i < ( isInterior ? 10 : 9 ); i++ ) + { + auto container = containerList.at( i ); + auto slot = slotList.at( i ); + if( container == 0x270F || slot == 0xFF ) + { + if( i >= 5 ) + { + auto removed = ( ( removeFlag >> ( i - 5 ) ) & 1 ) > 0; + if( removed ) + { + auto oldItem = housingContainer->getItem( i ); + if( oldItem ) + { + housingContainer->removeItem( i ); + invMgr.removeItemFromHousingContainer( landIdent, housingContainer->getId(), i ); + player.addItem( oldItem, false, false, false ); + } + } + } + continue; + } + auto item = getHousingItemFromPlayer( player, static_cast< Sapphire::Common::InventoryType >( container ), slot ); + if( item ) + { + auto oldItem = housingContainer->getItem( i ); + housingContainer->setItem( i, item ); + if( oldItem ) + { + player.insertInventoryItem( static_cast< Sapphire::Common::InventoryType >( container ), slot, oldItem ); + } + } + } + invMgr.sendInventoryContainer( player, housingContainer ); + invMgr.saveHousingContainer( landIdent, housingContainer ); + updateHouseModels( land->getHouse() ); + if( !isInterior ) + { + terri->sendLandUpdate( landIdent.landId ); + } +} + +void Sapphire::World::Manager::HousingMgr::removeHouse( Entity::Player& player, uint16_t plot ) +{ + auto terri = std::dynamic_pointer_cast< HousingZone >( player.getCurrentTerritory() ); + if( !terri ) + return; + + auto land = terri->getLand( static_cast< uint8_t >( plot ) ); + if( !land || !land->getHouse() ) + return; + + if( !hasPermission( player, *land, 0 ) ) + return; + + auto& interiorContainer = getEstateInventory( land->getLandIdent() )[ InventoryType::HousingInteriorAppearance ]; + auto& invMgr = Service< InventoryMgr >::ref(); + + std::unordered_map< InventoryType, ItemContainerPtr > changedContainerSet = {}; + + for( int i = 0; i < interiorContainer->getMaxSize(); i++ ) + { + auto item = interiorContainer->getItem( i ); + if( !item ) + continue; + + Inventory::InventoryContainerPair freeSlotPair; + auto freeContainer = getFreeEstateInventorySlot( land->getLandIdent(), freeSlotPair, m_internalStoreroomContainers ); + if ( !freeContainer ) + { + // not sure what to do + interiorContainer->removeItem( i, true ); + } + else + { + interiorContainer->removeItem( i, false ); + freeContainer->setItem( freeSlotPair.second , item ); + changedContainerSet[ freeSlotPair.first ] = freeContainer; + } + } + + invMgr.sendInventoryContainer( player, interiorContainer ); + invMgr.saveHousingContainer( land->getLandIdent(), interiorContainer ); + for( auto entry : changedContainerSet ) + { + invMgr.sendInventoryContainer( player, entry.second ); + invMgr.saveHousingContainer( land->getLandIdent(), entry.second ); + } + + deleteHouse( land->getHouse() ); + land->setHouse( nullptr ); + + land->setStatus( HouseStatus::Sold ); + land->updateLandDb(); + terri->sendLandUpdate( plot ); + + player.setLandFlags( LandFlagsSlot::Private, 0, land->getLandIdent() ); + + terri->removeEstateEntranceEObj( plot ); + + // missing reply for ClientTrigger RequestEstateHallRemoval +} \ No newline at end of file diff --git a/src/world/Manager/HousingMgr.h b/src/world/Manager/HousingMgr.h index b810354f..9fd8c215 100644 --- a/src/world/Manager/HousingMgr.h +++ b/src/world/Manager/HousingMgr.h @@ -181,6 +181,10 @@ namespace Sapphire::World::Manager bool hasPermission( Entity::Player& player, Land& land, uint32_t permission ); + void editAppearance( bool isInterior, Sapphire::Entity::Player& player, const Common::LandIdent landIdent, std::vector< uint16_t > containerList, std::vector< uint8_t > slotList, uint8_t removeFlag ); + + void removeHouse( Entity::Player& player, uint16_t plot ); + private: Inventory::HousingItemPtr getHousingItemFromPlayer( Entity::Player& player, Common::InventoryType type, uint8_t slot ); @@ -272,6 +276,8 @@ namespace Sapphire::World::Manager */ void createHouse( HousePtr house ) const; + void deleteHouse( HousePtr house ) const; + /*! * @brief Gets the next available house id * @return The next available house id diff --git a/src/world/Manager/InventoryMgr.cpp b/src/world/Manager/InventoryMgr.cpp index b4c3759e..7a17defa 100644 --- a/src/world/Manager/InventoryMgr.cpp +++ b/src/world/Manager/InventoryMgr.cpp @@ -89,6 +89,9 @@ void Sapphire::World::Manager::InventoryMgr::saveHousingContainer( Common::LandI for( auto& item : container->getItemMap() ) { + if( !item.second ) + continue; + saveHousingContainerItem( u64ident, container->getId(), item.first, item.second->getUId() ); } } @@ -143,15 +146,15 @@ void Sapphire::World::Manager::InventoryMgr::updateHousingItemPosition( Sapphire stmt->setUInt64( 1, item->getUId() ); - stmt->setUInt( 2, pos.x ); - stmt->setUInt( 3, pos.y ); - stmt->setUInt( 4, pos.z ); - stmt->setInt( 5, rot ); + stmt->setDouble( 2, static_cast< double >( pos.x ) ); + stmt->setDouble( 3, static_cast< double >( pos.y ) ); + stmt->setDouble( 4, static_cast< double >( pos.z ) ); + stmt->setDouble( 5, static_cast< double >( rot ) ); - stmt->setUInt( 6, pos.x ); - stmt->setUInt( 7, pos.y ); - stmt->setUInt( 8, pos.z ); - stmt->setInt( 9, rot ); + stmt->setDouble( 6, static_cast< double >( pos.x ) ); + stmt->setDouble( 7, static_cast< double >( pos.y ) ); + stmt->setDouble( 8, static_cast< double >( pos.z ) ); + stmt->setDouble( 9, static_cast< double >( rot ) ); db.execute( stmt ); } diff --git a/src/world/Manager/ItemMgr.cpp b/src/world/Manager/ItemMgr.cpp index 3c08d82d..c8331dac 100644 --- a/src/world/Manager/ItemMgr.cpp +++ b/src/world/Manager/ItemMgr.cpp @@ -32,51 +32,51 @@ uint16_t Sapphire::World::Manager::ItemMgr::getCharaEquipSlotCategoryToArmoryId( switch( slot ) { - case Common::EquipSlotCategory::CharaHead: + case Common::EquipSlotCategory::Head: return Common::ArmoryHead; - case Common::EquipSlotCategory::CharaBody: - //case Common::EquipSlotCategory::BodyDisallowHead: - //case Common::EquipSlotCategory::BodyDisallowHandsLegsFeet: - //case Common::EquipSlotCategory::BodyDisallowAll: - //case Common::EquipSlotCategory::BodyDisallowHands: - //case Common::EquipSlotCategory::BodyDisallowLegsFeet: + case Common::EquipSlotCategory::Body: + case Common::EquipSlotCategory::BodyDisallowHead: + case Common::EquipSlotCategory::BodyDisallowHandsLegsFeet: + case Common::EquipSlotCategory::BodyDisallowAll: + case Common::EquipSlotCategory::BodyDisallowHands: + case Common::EquipSlotCategory::BodyDisallowLegsFeet: return Common::ArmoryBody; - case Common::EquipSlotCategory::CharaEars: + case Common::EquipSlotCategory::Ears: return Common::ArmoryEar; - case Common::EquipSlotCategory::CharaFeet: + case Common::EquipSlotCategory::Feet: return Common::ArmoryFeet; - case Common::EquipSlotCategory::CharaHands: + case Common::EquipSlotCategory::Hands: return Common::ArmoryHand; - case Common::EquipSlotCategory::CharaLegs: - //case Common::EquipSlotCategory::LegsDisallowFeet: + case Common::EquipSlotCategory::Legs: + case Common::EquipSlotCategory::LegsDisallowFeet: return Common::ArmoryLegs; - case Common::EquipSlotCategory::CharaMainHand: - //case Common::EquipSlotCategory::MainTwoHandedWeapon: + case Common::EquipSlotCategory::MainHand: + case Common::EquipSlotCategory::MainTwoHandedWeapon: //case Common::EquipSlotCategory::MainOrOffHand: return Common::ArmoryMain; - case Common::EquipSlotCategory::CharaOffHand: + case Common::EquipSlotCategory::OffHand: return Common::ArmoryOff; - case Common::EquipSlotCategory::CharaRing: + case Common::EquipSlotCategory::Ring: return Common::ArmoryRing; - case Common::EquipSlotCategory::CharaWaist: + case Common::EquipSlotCategory::Waist: return Common::ArmoryWaist; - case Common::EquipSlotCategory::CharaWrist: + case Common::EquipSlotCategory::Wrist: return Common::ArmoryWrist; - case Common::EquipSlotCategory::CharaNeck: + case Common::EquipSlotCategory::Neck: return Common::ArmoryNeck; - case Common::EquipSlotCategory::CharaSoulCrystal: + case Common::EquipSlotCategory::SoulCrystal: return Common::ArmorySoulCrystal; default: diff --git a/src/world/Manager/MapMgr.cpp b/src/world/Manager/MapMgr.cpp new file mode 100644 index 00000000..34c3fd58 --- /dev/null +++ b/src/world/Manager/MapMgr.cpp @@ -0,0 +1,685 @@ +#include +#include + +#include + +#include + +#include +#include +#include + +#include + +#include + +#include